CSCI-665 section 5

Spring 2017

bldg. 70B, room 3657,

(585) 475-5193, spr@cs.rit.edu

http://www.cs.rit.edu/~spr

Office hours:
Tue/Thu 8-9pm, Wed 2-3pm

(if nobody comes by 8:15pm I may leave), or send email

college syllabus, general schedule.

This page gives the current offering's contents and schedule.

- 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).

- 25% Homeworks
- 15% first Midterm Exam, Tuesday, February 28, in class
- 15% second Midterm Exam, Thursday, April 6, in class
- 20% Experimental Project
- 25% Final Exam, Tuesday, May 16, 6:30pm - 8:30pm, LBR 6-2233

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
- Johnson's algorithm

- Linear space Hirschberg's algorithm for the LCS
- Network Flow
- Flow networks, flows, Ford-Fulkerson method, cuts
- Max-flow Min-Cut, Edmonds-Karp heuristics

- 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.

- 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

- A* algorithm
- Search problems, estimates, under-estimates and the A* algorithm