CS600: Advanced Algorithms
-
Course Info.
-
Basic Data Structures.
-
Array, vector, and linked list [slides] [video (English)] [video (Chinese)].
-
Binary search [slides] [video (English)] [video (Chinese)].
-
Skip list [slides] [video (English)] [video (Chinese)].
-
-
Sorting.
-
Divide and Conquer.
- Master theorem [slides].
-
Matrix Data Structure and Algorithms.
-
Addition and multiplication [slides] [video (English)] [video (Chinese)].
-
Dense matrix data structures [slides] [video (English)] [video (Chinese)].
-
Sparse matrix data structures [slides]
-
Fast matrix multiplication and Strassen algorithm [slides].
-
-
Binary Trees.
-
Tree basics [slides] [video (English)].
-
Binary search tree: search and insertion [slides].
-
Binary search tree: traversal [slides].
-
Binary search tree: deletion [slides].
-
-
Balanced Trees.
-
Priority Queues.
-
Disjoint Sets.
- Disjoint sets [slides].
-
Graph Basics.
-
Graph data structures [slides] [video (Chinese)].
-
Topological sort [slides].
-
-
Shortest Paths.
-
Shortest path problem [slides] [video (Chinese)].
-
Single-source shortest path in unweighted graphs [slides] [video (Chinese)].
-
Single-source shortest path in weighted graphs [slides] [video (Chinese)].
-
-
Minimum Spanning Trees.
-
Spanning trees [slides] [video (Chinese)].
-
Prim's algorithm [slides] [video (Chinese)].
-
Kruskal's algorithm [slides] [video (Chinese)].
-
-
Network Flow Problems.
-
Maximum flow problem [slides] [video (Chinese)].
-
Ford-Fulkerson algorithm [slides] [video (Chinese)].
-
EdmondsโKarp algorithm [slides] [video (Chinese)].
-
Dinic's algorithm [slides] [video (Chinese)].
-
Max-flow and min-cut [slides] [video (Chinese)].
-
-
Bipartite Graphs.
-
Testing bipartiteness [slides] [video (Chinese)].
-
Maximum cardinality bipartite matching [slides] [video (Chinese)].
-
Maximum weight bipartite matching [slides] [video (Chinese)].
-
Hungarian algorithm [slides] [video (Chinese)].
-
Stable marriage problem [slides] [video (Chinese)].
-
Gale-Shapley algorithm [slides] [video (Chinese)].
-
-
Dynamic Programming.
-
Strings.
-
Randomized Algorithms.
-
Monte Carlo algorithms [slides] [video (English)] [video (Chinese)].
-
Concentration inequalities [slides].
-
Pseudo random number generators.
-
Random shuffling [slides] [video (English)] [video (Chinese)].
-
Fingerprinting.
-
-
Hashing.
-
Cryptographic Algorithms.
-
Crypto Currency.
-
Backtracking.