##
ECS 122A - Fall 2010 Algorithm Design and Analysis - Gusfield

CS 122A is the undergraduate course on algorithm design and analysis taught at UC Davis in the Department of
Computer Science. The graduate
version of this course is ECS 222A. Videos for lectures in CS 222A can be found at
CS 222A videos
### Lecture Videos

Lecture 1
Lecture 1. Introduction to the course, Complexity rules of the road (see
handout on the class website).

Supplemental video
Another lecture on the same topic: Complexity rules of the game.

Lecture 2
2. Sept. 27: big-oh, omega and theta notation. Description of Mergesort and Merge
and the start of their time analysis. Algorithm Merge is proved correct by induction
on the sum of the sizes of the two lists. The worst-case number of comparisons in
algorithm Merge on two lists of total size n is n-1 (why?).

Lecture 3
3. Sept. 29: Worst case analysis of MergeSort by setting up a recurrence relation
and solving it by unwrapping.

Lecture 4
4. Oct. 1: Solving a more complex recurrence relation by unwrapping. Introduction
to the problem of counting the number of inversions in a permutation.

Supplemental video
Solving a divide and conquer recurrence by unwrapping the recurrence to set up and solve a summation.
Introduction to the inversion counting problem.

Lecture 5
5. Oct. 4. Counting the number of inversions in a permutation. Introduction to
fast integer multiplication by divide and conquer.

Lecture 6
6. Oct. 6. Finished the discussion of integer multiplication by divide and conquer.
Started the discussion of randomized Selection and median finding, which will lead to randomized quicksort.

Lecture 7
7. Oct. 8. More on randomized selection, setting up the analysis problem, random variables,
expected value (mean), partial derivation of the mean of a geometric distribution.

Lecture 8
8. Oct. 11 Complete analysis of the expected number of comparisons in the randomized version
of Select(S,k) as a function of |S| = n. The expected number is at most 8|S| = O(n).

Lecture 9
9. Oct. 13 Start of discussion of greedy algorithms - The problem of picking
the largest number of non-overlapping intervals given on a line.

Lecture 10
10. Oct. 15 Dijkstra's algorithm for shortest paths in a graph with non-negative edge weights.

Lecture 11
11. Oct. 18 Start of discussion of the minimum spanning tree problem. Prim's algorithm and
proof of correctness and running time. Kruskal's algorithm.

Lecture 12
12. Oct. 20 proof of correctness of Kruskal's algorithm. Return to scheduling problems -
classroom scheduling problem, algorithm and correctness.

Lecture 13
13. Oct. 22 Introduction to recursive programming and memoization through the problem of
computing the maximum weight set of pairwise non-overlapping intervals.

14. Oct. 25 midterm

Lecture 14
15. Oct. 27 review of memoization, introduction to dynamic programming in the weighted interval
problem. traceback in DP.

Lecture 15
16. Oct. 29 introduction to the RNA folding problem and recurrences for it.

Lecture 16
17. Nov. 1 dynamic programming for RNA folding.

Lecture 17
18. Nov. 3 dynamic programming for the shortest path problem in a weighted directed graph.

Lecture 18
19. Nov. 5 Floyd-Warshal algorithm for computing the shortest path in a weighted graph, between each
pair of nodes in the graph.

Lecture 19
20. Nov. 8. The Unique-Decypherability problem. Definitions and start of graph-based solution.

Lecture 20
21. Nov. 10 Unique-Decypherability - graph algorithm, proof of correctness.

Lecture 21
22. Nov. 12 Linear-time pattern matching. Z-values and Z-algorithm.

Lecture 22
23. Nov. 15 Linear-time pattern matching. Z-values and Z-algorithm.

Lecture 23
24. Nov. 17 Approximation Algorithms - definition, example of a factor of two approximation algorithm - center cover problem.

Lecture 24
25. Nov. 19 Approximation Algorithms - factor of two approximation to the vertex cover problem.

Lecture 25
26. Nov. 22 Introduction to P and NP and poly-time reductions

Lecture 26
27. Nov. 24 An intuitive view of NP - not the correct formal definition

28. Nov. 26 thanksgiving holiday

Lecture 27
29. Nov. 29 Correct, formal definitions of P and NP, ending with a brief definition of NP-complete problems (languages)

Lecture 28
30. Dec. 1 The major theorems of NP-completeness, P = NP question, the mechanics of how to prove a new problem is NP-complete.

Lecture 29
31. Dec. 3 Dealing with NP-complete problems - approximation algorithms, fast algorithms for subsets of the whole set of problem
instances, reducing the growth rate of exponential-time solutions. A DP algorithm for the Traveling Salesman problem for n cities that
runs in O(n^2 x 2^n) time, instead of the more naive method that would take theta(n!) time.