Some algorithms that you are
responsible for are listed below. Check this page frequently, as this list may
change throughout the term. Please see the Syllabus page for a complete
list of course topics.
For the
sorting algorithms, be sure to look at the applet listed on the Syllabus page
- Linear Congruential Random number generation: Java Applet from Carleton University
- Hashing: separate chaining, linear probing, double hashing
- Naive string matching algorithm - Sedgewick's code in text
- Rabin-Karp string matching - Sedgewick's code in text
- Boyer-Moore: Sedgewick's code in text
- Huffman Compression: Sedgewick's code in text
- Lempil-Ziv Code and Java Applet (as much as we covered)
- BFS, DFS, finding articulation points (see Syllabus page
for code)
- Priority Queues implemented using a heap (see Syllabus page
for code)
- Prim's MST algorithm using PFS for adjacency lists (see
Syllabus page for code)
- Djikstra's shortest path algorithm using PFS for adjacency
lists (same PFS code as above)
- Idea of adjacency matrix versions of above two algorithms
- Idea of Kruskal's MST algorithm
- Network Flow and Ford and Fulkerson's augmenting path
approach
- Edmonds and Karp's PFS-based and BFS-based maximum flow
algorithms (see Syllabus page for code)
- 2-Opt local search algorithm for TSP: code
- Exhaustive search TSP code and Branch-and-Bound improvement
(see Syllabus page for code)
- Recursive and dynamic programming versions of Fibonacci
sequence
- Branch and Bound and dynamic programming versions of Subset
Sum (see Syllabus page for code)