The following is a section-by-section outline of the textbook. For each section, a symbol is given which indicates the nature of coverage in the course. The meaning of these symbols is provided in the table below.
✔ | Material will be covered in the course. |
✘ | Material will not be covered in the course. |
✙ | Review material, prior knowledge is expected. |
✥ | Material will be covered partially or selectively. |
✻ | Tentative material, may be covered, time permitting. |
Entries have not been provided for sections entitled ”References and Readings” or ”Additional Exercises.” In addition, no section-by-section breakdown is given for chapters which are to be omitted entirely.
Introduction
What is an algorithm? ✔
Algorithm specification ✔
Performance analysis ✔
Randomized algorithms ✘
Elementary Data Structures
Stacks and queues ✙
Trees ✙
Dictionaries ✙
Priority queues ✔(with Kruskal’s algorithm: 4.5.2)
Sets and disjoint union ✔(with job sequencing with deadlines: 4.4)
Graphs ✙
Divide and Conquer
General method ✔
Binary search ✔
Finding the maximum and minimum ✘
Merge sort ✔
Quicksort ✔
Selection ✔
Strassen’s matrix multiplication ✘
Convex hull ✔
The Greedy Method
The general method ✔
Knapsack problem ✔
Tree vertex splitting ✘
Job sequencing with deadlines ✔
Minimum-cost spanning trees ✔
Optimal storage on tapes ✘
Optimal merge patterns ✘
Single-source shortest paths ✔
Dynamic Programming
The general method ✔
Multistage graphs ✔
All pairs shortest paths ✔
Single-source shortest paths: general weights ✔
Optimal binary search trees ✘
String editing ✘
0/1 knapsack ✔
Reliability design ✘
The travelling salesperson problem ✔
Flow shop scheduling ✘
Basic Search and Traversal Techniques
Techniques for binary trees ✔
Techniques for graphs ✔
Connected components and spanning trees ✘
Biconnected components and DFS ✘
Backtracking
The general method ✔
The 8-queens problem ✔
Sum of subsets ✘
Graph coloring ✘
Hamiltonian cycles ✘
Knapsack problem ✔
Branch-and-Bound
The method ✔
0/1 knapsack problem ✔
Travelling salesperson ✔
Efficiency considerations ✔
Algebraic Problems
The general method ✔
Evaluation and interpolation ✔
The fast Fourier transform ✔
Modular arithmetic ✘
Even faster evaluation and interpolation ✘
Lower Bound Theory
Comparison trees ✔
Oracles and adversary arguments ✔
Lower bounds through reductions ✔
Techniques for algebraic problems ✘
NP-Hard and NP-Complete Problems
Basic concepts ✔
Cook’s theorem ✥
NP-hard graph problems ✥
NP-hard scheduling problems ✥
NP-hard code-generation problems ✥
Some simplified NP-hard problems ✥
Approximation Algorithms
Introduction ✔
Absolute approximations ✔
ε–approximations ✔
Polynomial-time approximation schemes ✔
Fully polynomial-time approximation schemes ✔
Probabilistically good algorithms ✘
PRAM Algorithms ✘
Mesh Algorithms ✘
Hypercube Algorithms ✘
Several topics which are not covered in the textbook, or are covered insufficiently, will be included in the course. For these topics, supplementary materials (which may be part of the lecture notes) will be made available. The major topics, together with the associated topic number from Section 4 of this syllabus, are as follows.