YSC2229: Introductory Data Structures and Algorithms
1. Course Syllabus
2. Software Prerequisites
3. OCaml Style Guide
1. Week 01: Introduction
2. Week 02: Working with Arrays
3. Week 03: Complexity of Algorithms and Order Notation
4. Week 04: Divide-and-Conquer Algorithms
5. Week 05: Binary Heaps and Priority Queues
6. Week 06: Abstract Data Types
7. Midterm Project: Memory Allocation and Reclamation
8. Week 07: Hashing-Based Data Structures
9. Week 08: Searching in Strings
10. Week 09: Backtracking and Dynamic Programming
11. Week 10: Data Encoding and Compression
12. Week 11: Binary Search Trees
13. Week 12: Graph Algorithms
13.1. Representing Graphs
13.2. Graphs as Linked Data Structures
13.3. Reachability and Graph Traversals
13.4. Single-Source Shortest Paths
13.5. Minimal Spanning Trees
13.6. Exercises
14. Week 13: Elements of Computational Geometry
15. Final Project: Vroomba Programming
YSC2229: Introductory Data Structures and Algorithms
Docs
»
13. Week 12: Graph Algorithms
13. Week 12: Graph Algorithms
¶
13.1. Representing Graphs
13.1.1. Graphs as Adjacency Lists
13.1.2. Reading and Printing Graphs
13.1.3. Rendering Graphs via GraphViz
13.1.4. Shortcomings of Adjacency-List graph representation
13.2. Graphs as Linked Data Structures
13.2.1. Switching between graph representations
13.2.2. Testing graph operations
13.3. Reachability and Graph Traversals
13.3.1. Checking Reachability in a Graph
13.3.2. Testing Reachability
13.3.3. Rendering Paths in a Graph
13.3.4. Depth-First Traversal
13.3.5. DFS and Reachability
13.3.6. DFS and Cycle Detection
13.3.7. Topological Sort
13.3.8. Testing Topological Sort
13.4. Single-Source Shortest Paths
13.4.1. Weighted Graphs
13.4.2. Some Properties of Paths
13.4.3. Representing Shortest Paths
13.4.4. Representing Distance
13.4.5. Initialisation and Relaxation
13.4.6. Bellman-Ford Algorithm
13.4.7. Rendering Minimal Paths
13.4.8. Dijkstra’s Algorithm
13.4.9. Testing Shortest-Path Algorithms
13.5. Minimal Spanning Trees
13.5.1. Representing Undirected Graphs
13.5.2. Trees in Undirected Connected Graphs
13.5.3. Minimal Spanning Trees
13.5.4. Kruskal’s Algorithm
13.5.5. Testing MST Construction
13.5.6. Other MST Algorithms
13.6. Exercises
13.6.1. Exercise 1
13.6.2. Exercise 2