Skip to article frontmatterSkip to article content

CS4820 Intro to Analysis of Algorithms

Cornell University

CS 4820 develops techniques used in the design and analysis of algorithms, with an emphasis on problems arising in computing applications. Example applications are drawn from systems and networks, artificial intelligence, computer vision, data mining, and computational biology. This course covers four major algorithm design techniques (greedy algorithms, divide and conquer, dynamic programming, and network flow), computability theory focusing on undecidability, computational complexity focusing on NP-completeness, and algorithmic techniques for intractable problems, including identification of structured special cases, approximation algorithms, and randomization.

Greedy Algorithm

Greedy Stays Ahead

Greedy is at least as good as the optimal solution in each step

Exchange Argument

Divide and Conquer

Master theorem says that for an algorithm with running time T(n)=aT(nb)+f(n)T(n) = aT(\frac{n}{b}) + f(n). f(n)f(n) is some polynomial of nn, so we have T(n)=aT(nb)+O(nc)T(n) = aT(\frac{n}{b}) + O(n^c).

Network Flow

NP

Proving Reduction

Proving NP, NP-Hard, NP-Completeness

Important NP-Complete Problem

Tips

Turing Machine

Decidability

Give a total Turing Machine (one that always halts) to accept any “yes” instance and reject any “no” instance

Undecidability

To prove some problem is undecidable within a certain time bound, use clocked diagonalization.

Crucial Facts

Minimum Spanning Tree

Proof Techniques