YSC2229: Introductory Data Structures and Algorithms
1. Software Prerequisites
2. OCaml Style Guide
3. Policies
4. Midterm Project: Memory Allocation and Reclamation
5. Final Project: Vroomba Programming
1. Chapter 01: Introduction
2. Chapter 02: Working with Arrays
3. Chapter 03: Complexity of Algorithms and Order Notation
4. Chapter 04: Divide-and-Conquer Algorithms
5. Chapter 05: Binary Heaps and Priority Queues
6. Chapter 06: Abstract Data Types
7. Chapter 07: Hashing-Based Data Structures
8. Chapter 08: Searching in Strings
9. Chapter 09: Backtracking and Dynamic Programming
10. Chapter 10: Data Encoding and Compression
11. Chapter 11: Binary Search Trees
12. Chapter 12: Graph Algorithms
12.1. Representing Graphs
12.2. Graphs as Linked Data Structures
12.3. Reachability and Graph Traversals
12.4. Single-Source Shortest Paths
12.5. Minimal Spanning Trees
12.6. Exercises
13. Chapter 13: Elements of Computational Geometry
YSC2229: Introductory Data Structures and Algorithms
»
12.
Chapter 12: Graph Algorithms
12.
Chapter 12: Graph Algorithms
12.1. Representing Graphs
12.1.1. Graphs as Adjacency Lists
12.1.2. Reading and Printing Graphs
12.1.3. Rendering Graphs via GraphViz
12.1.4. Shortcomings of Adjacency-List graph representation
12.2. Graphs as Linked Data Structures
12.2.1. Switching between graph representations
12.2.2. Testing graph operations
12.3. Reachability and Graph Traversals
12.3.1. Checking Reachability in a Graph
12.3.2. Testing Reachability
12.3.3. Rendering Paths in a Graph
12.3.4. Depth-First Traversal
12.3.5. DFS and Reachability
12.3.6. DFS and Cycle Detection
12.3.7. Topological Sort
12.3.8. Testing Topological Sort
12.4. Single-Source Shortest Paths
12.4.1. Weighted Graphs
12.4.2. Some Properties of Paths
12.4.3. Representing Shortest Paths
12.4.4. Representing Distance
12.4.5. Initialisation and Relaxation
12.4.6. Bellman-Ford Algorithm
12.4.7. Rendering Minimal Paths
12.4.8. Dijkstra’s Algorithm
12.4.9. Testing Shortest-Path Algorithms
12.5. Minimal Spanning Trees
12.5.1. Representing Undirected Graphs
12.5.2. Trees in Undirected Connected Graphs
12.5.3. Minimal Spanning Trees
12.5.4. Kruskal’s Algorithm
12.5.5. Testing MST Construction
12.5.6. Other MST Algorithms
12.6. Exercises
12.6.1. Exercise 1
12.6.2. Exercise 2