List of topics to be covered in class (as time allows)


Framework for analysis of algorithms, rate of growth of functions
("big oh" notation, etc), review of proofs by induction, summations,
recurrences and how to solve them.

Divide and conquer (mergesorting as an example).

An important general recurrence (of which the
recurrence for mergesort is a special case).

Linear time selection (randomized, then deterministic).

Weighted version of the selection problem.

Using selection to solve linear programming in linear time (lines in the plane)
	Reference: http://www-ma2.upc.es/~geoc/m-lalparp-83.pdf

Dynamic programming solution to matrix chain multiplication 
problem 

String editing ; longest common subsequence as special case
Linear space solution 

Maximal elements in 2 dimensions as an example of plane-sweep
Output-sensitive algo for 2-dim maxima 

Longest Increasing Subsequence (LIS) 
        Reference for LIS: http://en.wikipedia.org/wiki/Longest_increasing_subsequence
        (explains + gives references to other sources for this problem)

Algorithms for closest pair (both divide and conquer solution and plane-sweep solution)

Maximal elements in 3 dimensions as an example of dimension-reduction

Intersection detection using plane sweep + data struct 
Enumeration of all intersections

Convex hull algo

Greedy algorithms: activity selection, scheduling

Lower bounds: Information-theoretic, adversary-based. For searching,
sorting, min, min-and-max, element uniqueness, 
proofs by reduction (convex hull, closest pair).  

KMP pattern matching algorithm ; applications of pattern matching

Review of balanced tree data structures: 2-3 trees (search, insert, 
delete operations, concatenate, split).  

Range queries for d > 1.  Multisearch structures.

FFT algorithm. Inverse FFT.  Proof of convolution theorem. 
Applications of convolution (pattern matching with mismatches, 
polynomial multiplication).  

Review of depth-first search, breadth-first search, connected components

Strongly connected components (+ review of preorder/postorder numberings
of a tree)

Topological sorting

Bridges, biconnected components

Review of Dijkstra's algo for single-source shortest paths

All-pairs path problems 
Efficient (sub-quadratic) storage of shortest paths information
for special classes of graphs (trees as an example)

Review of Kruskal's algo for min spanning tree (MST)  [ Given as part of hwk 6 ]
Union-Find structure.  

Use of MST for shortest paths under Max metric  [ Given as part of hwk 6 ]
Application of MST to approximate Euclidean TSP

Matching, network flow and its applications

P, NP, NP-completeness, NP-hardness, polynomial-time reductions

Parallelism