Design and Analysis of Algorithms: Autumn 2023


Time: Mon and Wed, 0955 hrs to 1210 hrs
Location: Auditorium, ISI Bangalore
Instructor: Jaikumar Radhakrishnan
Homepage: https://www.tifr.res.in/~jaikumar/Courses/ISIBangalore/2023-DAA/


Course structure



Course grades

The course grade will be based on quizzes, homework assignments, a mid-semester exam and a semester exam.

Problem sets


Resources


The image on the left


Mathematical writing


Lectures

7 Aug 1. Introduction: computational tasks, algorithms, correctness, efficiency
Computation with numbers: binary representation, arithmetic, Euclid's gcd algorithm
Read: [JE] Chapter 0, [DPV] Chapters 0, 1
Notes:
Other material:
9 Aug 2. Extended Euclid's algorithm, Gaussian elimination; Randomization: verification of matrix products
Read: [DPV] Pages 38--45
Notes:
Other material:
14 Aug 3. Verification of matrix products, primality testing
Read: [DPV] Pages 38--45
Notes: Primality Testing Notes
Other material:
16 Aug 4. Hashing
Read: [DPV] Pages 38--45
Notes:
Other material: Randomized Algorithms by Mitzenmacher and Upfal (see Section 15.3, starting at page 399)
21 Aug 5. Divide and conquer: Karatsuba's algorithm for multiplying numbers, recurrences, mergesort
Read: [DPV] Chapter 2, pages 51--56
Notes:
Other material:
23 Aug 6. Randomized Selection, randomized Quicksort, Strassen's fast matrix multiplication
Read: [DPV] Chapter 2, pages 60--63
Notes: See Notes for randomized quicksort
Other material: See Kevin Wayne's slides listed under [KT]
28 Aug 7. Fast Fourier transform
Read: [DPV] Section 2.6 (pages 64--78)
Notes:
Other material: Watch this video on FFT.
Integer multiplication using FFT: Notes
30 Aug 8. Basic graph algorithms, graph representation, depth-first search
Read: [DPV] (pages 87--92)
Notes:
Other material: Watch this video on graph representations and this video on DFS.
Evasiveness: see the Wiki page
04 Sep 9. Connectivity in undirected graphs, articulation points
Read: [DPV] (pages 92--95)
Notes: This python program identifies the cut vertices and also partitions the set of edges into biconnected components.
06 Sep 10. Biconnected components, DFS in directed graphs
Read: [DPV] (pages 95--97)
Notes: DFS and biconnected components from Sara Baase's book Computer Algorithms (Second Edition); note that the algorithm presented here computes low numbers (it uses back instead of low number) using the DFS number of the node, not the DFS level; both approaches are valid.
11 Sep 11. Strongly connected components, Breadth-first search
Read: [DPV] (pages 97--100, 109--112)
Notes: Correctness of Kosaraju's algorithm
The Python program we wrote in class
13 Sep 12. Dijkstra's algorithm
Read: [DPV] (pages 112--118 )
Notes:
20 Sep 13. Midt-semester Examination
Details: The exam will held between 10:00 am and 12:30 pm. All the topics above are part of the syllabus for the midterm exam.
Notes: Sample exam, Spring 2023 paper
Question paper:
25 Sep 14. Balanced heaps, the A* algorithm
Read: [DPV] (pages 119--123)
Notes: Python program (Dijkstra+Balanced Heap)
See loop invariant in the comment at bottom of the file.
27 Sep 15. The Bellman-Ford algorithm, Correctness proof of the Bellman-Ford algorithm,
Video: On A*
04 Oct 16. Greedy algorithms: Kruskal's algorithm for MST, the union-find data structure, Huffman Coding
Notes: Jeremy Kun's blog post
Notes from the class
Kevin Wayne's slides on path compression
09 Oct 17. The union-find data structure, the greedy algorithm for matroids, Kraft's inequality, Shannon's source coding theorem, Huffman coding
Greedy algorithm for intervals: See Kevin Wayne's slides on interval scheduling based on Chapter 4 of the Kleinberg-Tardos book (see [KT] above).
11 Oct 18.Entropy and prefix-free codes, Kraft's inequality, Huffman coding
Dynamic programming: Longest s-t path in graphs, Longest increasing subsequence in time O(n^2).
Notes: Read Chapter 6 of [DPV] (there are many examples there that we did not cover in class) and Chapter 3 of Jeff Erickson's beautiful book: Algorithms book.
16 Oct 19. Longest increasing sequence in O(n log n) time, the Erdos-Szekeres theorem. Edit distance. Floyd-Warshall all pairs shortest paths, Johnson's algoritm for all pairs shortest-paths in sparse graphs. Code: The python code we discussed in class: NewLIS.py
18 Oct 20. Dynamic programming: the Knuth-Morris-Pratt matching algorithm, Chemical words
Code: python code for Knuth-Morris-Pratt algorithm (we did not discuss this in detail: KMP.py, python code for chemicals words: Chem.py.
25 Oct 21. Matching in bipartite graphs, maximal matching, vertex cover, the Konig-Egervary theorem, augmenting paths, Berge's theorem on maximum mathching and existence of alternating paths, bipartite maximum matching by repeated augmentation. Weighted bipartite matching.
Notes: Read about the unweighted matching algorithm here.
See Chapters 19, 20 of Dexter Kozen's book.
30 Oct 22. The Hungarian tree, fractional matching and fractional vertex cover, Birkhoff-Von Neumann theorem, Dulmage-Mendelsohn theorem, flows in networks, residual graph, augmenting paths, the Ford-Fulkerson algorithm. Source: see Chapters 16, 17 of Dexter Kozen's book.
1 Nov 23. Network flows: Examples requiring many augmentations, decomposing flows using path flows, augmenting by maximum bottleneck paths and efficient algorithms for networks with integer weights, the Edmons-Karp shortest augmenting path heuristic, the max-flow min-cut theorem. Applications of the integrality theorem, Konig-Egervary theorem from max-flow min-cut, simultaneous rounding of tables,
Source: See Slides by Kevin Wayne
6 Nov 24. Computation and verification: the classes P and NP, reductions The class of NP-complete problems, Primes is in NP, IndependentSet in NP-complete, search reduces to decision
8 Nov 25. Cook-Levin theorem (SAT is NP-complete), NP-completeness of Clique, Vertex cover, Dominating set, 3-Coloring
Review
17 Nov End-semseter exam
Details: Syllabus
From 10:00 am to 12:30 pm