CS 660: Combinatorial Algorithms
Masters Exam Syllabus
[To Lecture Notes Index]
San Diego State University -- This page last updated December 3, 1995
Implicit in a topic is the standard analysis of the relevant algorithms. We
have omitted the traditional storage management material.
Syllabus
1. General concepts. Abstract data structure as an organization of data
with specified properties and operations. Time and space analysis of
algorithms. Big oh and theta notations. Average, best and worst case analysis.
Simple recurrence relations and use in algorithm analysis.
2. Linear data structures. Arrays, lists, stacks, queues. Array and
linked structure implementations of lists, stacks, queues. Array of nodes and
dynamic pointer implementations of linked structures.
3. Trees. General and binary trees. Representations and traversals.
General trees as binary trees. Binary search trees. Applications. The concept
of balancing and its advantages. Some balanced tree mechanism, eg. AVL trees,
2-3 trees, red-black trees, self-adjusting trees, ....
4. Algorithm design techniques. Greedy methods, priority queue search,
exhaustive search, divide and conquer, dynamic programming. Recursion. The
influence of data structure on algorithm performance.
5. Hashing. Hash functions, collision resolution, expected behavior.
6. Graphs and digraphs. Representions. Breadth and depth first searches.
Connectivity algorithms. Shortest path. Minimal spanning tree. The union find
problem. Hamiltonian path and travelling salesperson problems. Network flow.
Matchings.
7. Sorting. Elementary sorts: selection, insertion, bubblesort.
Quicksort, mergesort, heapsort. Bucket sorting. External sorting. Worst case
and average behavior. Lower bound for sorting using comparisons. Order
statistics.
8. NP vs. P. The spaces P and NP. Polynomial reduction. NP complete
problems. Boolean satisfiability and Cook's theorem. Binpacking, knapsack,
Hamiltonian path, TSP, independent set, max clique, integer linear programming,
graph coloring. Approximation algorithms.
References
A. Aho, J. Hopcroft, & J. Ullman, The Design and Analysis of Computer
Algorithms, Addison Wesley, 1974.
Sara Baase, Computer Algorithms: Introduction to Design and Analysis,
2nd ed., Addison Wesley, 1988.
Gilles Brassard & Paul Bratley, Algorithmics, Prentice Hall, 1988.
T. Cormen, C. Leiserson, & R. Rivest, Algorithms, MIT Press, 1990.
Donald Knuth, The Art of Computer Programming (3 vols., various
editions, 1973-81), Addison Wesley.
Robert Kruse, Data Structures and Program Design, Prentice Hall, 1984.
Udi Manber, Introduction to Algorithms, Addison Wesley, 1989.
B. Moret & H. Shapiro, Algorithms from P to NP vol. 1: Design and
Efficiency, Benjamin/Cummings, 1991.
E. Reingold & W. Hansen, Data Structures in Pascal
Robert Sedgewick, Algorithms, 2nd ed., Addison Wesley, 1988.
Harry Smith, Data Structures: Form and Function
Jeffrey Smith, Design and Analysis of Algorithms, PWS-Kent, 1989.