Final Exam Topics
Required Questions
Loop Correctness Proofs
Divide-and-Conquer Algorithms
- Design principles - recursion
- Analysis of running times - recursion trees, substitution, Master Theorem
- Examples
Dyanmic & Greedy Algorithms
- Design principles - recursion, memoization, top-down / bottom-up, greedy choice
- Proofs - optimal substructure, overlapping subproblems, greedy choice property
- Examples - rod cutting, LCS, acitvity scheduling, Dijkstra
Select two problems from the following:
Additional Question on Dymanic & Greedy Algorithms
Sorting
- Partition and Quicksort
- Merge Sort, Selection Sort, Insertion Sort
- Linear-time Sorting
Multithreaded Algorithms
- Design principles - nested parallelism and parallel loops
- Analysis - work, span, parallelism, parallel slackness, Tp
- Race conditions
Computability and Complexity
- Turing machines - fundamentals (state diagrams and configurations), high-level descriptions
- Diagonalization, the non-decidability of A_{TM}
- Relationship among single-tape, multitape, and nondeterministic TMs for (i) computability and (ii) time complexity
- Definitions of P and NP; show that a language is in P or NP by providing a high-level description of an appropriate Turing machine
- The importance of P vs. NP and the role of NP-complete languages