Homework solutions of "Algorithms: Design and Analysis" course delivered by Stanford.
Weeks 1 and 2: The greedy algorithm design paradigm. Applications to optimal caching and scheduling. Minimum spanning trees and applications to clustering. The union-find data structure. Optimal data compression.
Weeks 3 and 4: The dynamic programming design paradigm. Applications to the knapsack problem, sequence alignment, shortest-path routing, and optimal search trees.
Weeks 5 and 6: Intractable problems and what to do about them. NP-completeness and the P vs. NP question. Solvable special cases. Heuristics with provable performance guarantees. Local search. Exponential-time algorithms that beat brute-force search.