The design of algorithms for graph problems. In particular, the design of efficient algorithms for optimization problems on graphs, such as minimum spanning tree, shortest paths, maximum matiching and maxmum flow problems. Design of heuristic (approximation) algorithms. Search trees, heaps, and their self-adjusting variants. Methods of estimating algorithm performance: worst-case analysis, average-case analysis, amortization.
CS 580 or consent of instructor.