Algorithms, VCSG 800
Spring 2013
Instructor
bldg. 70B, room 3657,
(585) 475-5193, spr@cs.rit.edu
http://www.cs.rit.edu/~spr
Office hours: TR 4-5pm, M 8-9pm (if nobody comes by 8:15pm I may go home), or send email
Lectures
Tuesday/Thursday, 2-4pm, room 70-1455
Books
- T. Cormen, C. Leiserson, R. Rivest and C. Stein,
Introduction to Algorithms,
the MIT Press, 2009, third edition, required textbook.
- J. Kleinberg and E. Tardos,
Algorithm Design,
Addison-Wesley, 2006 (past textbook, optional).
- S. Dasgupta, C. Papadimitriou and U. Vazirani,
Algorithms,
McGraw-Hill, 2007 (past textbook, optional).
- D. Knuth,
The Art of Computer Programming,
vols. 1, 2, 3, Addison-Wesley, 1981 (The Book, optional).
- A. Aho, J. Hopcroft and J. Ullman,
The Design and Analysis of Computer Algorithms ,
Addison-Wesley, 1976 (old good times, optional).
- D. Kreher and D. Stinson,
Combinatorial Algorithms, Generation, Enumeration and Search,
CRC Press, 1999 (complementary reading).
- D. Harel,
Algorithmics, The Spirit of Computing ,
Addison Wesley, 1992 (optional).
- G. Brassard and P. Bratley,
Fundamentals of Algorithmics,
Prentice Hall, 1996 (optional).
Prerequisites
Algorithms and Data Structures
4003-705 or 1016-265
programming, preferred C/C++ and UNIX environment
Evaluation
- 30% Homeworks
- 20% Midterm Exam, Thursday, April 11, in class
- 20% Experimental Project
on the LCS problem
- 30% Final Exam, Monday, May 13, 12:30-2:30pm, 70-1455
Topics
Many
slides
from the MIT Open Courseware.
Some slides prepared by Gordon Royle, University of Western Australia.
- Introduction and complexity
(MIT lectures 1,
2 and
3)
- Computational problems, algorithms, input size
- Asymptotic notation
complexity.
- Recurrences, master theorem
- Divide and conquer
- Dynamic programming
(MIT lecture 15)
- Longest common subsequence
- Matrix-chain multiplication
- Greedy algorithms
(MIT lecture 16)
- Definition of graph, basic graph terminology
- Minimum spanning trees - Prim
- Minimum spanning trees - Kruskal
- Priority queues, heaps, find-union algorithms
- Path algorithms
(MIT lectures 17,
18 and
19)
- Breadth-first search, applications of breadth-first search.
- Depth-first search, topological sort
- Dijkstra's algorithm
- Relaxation, Bellman-Ford
- Matrix multiplication method
- Floyd-Warshall algorithm
- Network Flow
- Flow networks, flows, Ford-Fulkerson method, cuts
- Max-flow Min-Cut, Edmonds-Karp heuristics
- P and NP
- Complexity classes P and NP, P!=NP conjecture
- Reducibility, NP-completeness
- Attemps to solve traveling salesman and other NP-hard problems
- Approximation Algorithms, Nearest Neighbour methods
- Iterative improvement, Hill-climbing, Simulated annealing, Genetic Algorithms
(not done last quarter)
- String processing
- Pattern-matching, Rabin-Karp algorithm, Knuth-Morris-Pratt algorithm and
the Boyer-Moore algorithm.
- Great
website with implementations and comments on various string algorithms.
- A* algorithm
- Search problems, estimates, under-estimates and the A* algorithm