Algorithm Analysis – Methodologies for Analyzing Algorithms, Asymptotic growth rates, Amortized Analysis. Array based structures, lists and. Number Theory: Preliminaries, FLT, Euclid’s algorithm (extended), Totient function, Sieve for primes, Modular exponentiation.
Applications of Divide-and-Conquer, Greedy and Dynamic programming, Randomized techniques – Knapsack, Median finding, Scheduling algorithms, Party planning, bitonic TSP. String matching algorithms: Z Algorithm, KMP algorithm, Rabin-Karp, Universal hashing, consistent hashing, load balancing, power of two choices. Applications of graph algorithms: Topological sort, Strongly connected Components, Bi-connected Components, Bridges, Articulation points, All Pairs Shortest Paths, Single Source Shortest Paths.
Flow Networks: Ford-Fulkerson algorithm, Edmonds Karp algorithm, Applications of maximum flows – Maximum bipartite matching, minimum cost matching. Data Structures: Balanced binary trees, Suffix trees, Segment trees, Hash tables. Computational Geometry: Convex Hull, Closest pair of points. NP-Completeness: Important NP-Complete Problems, Polynomial time reductions, Approximation algorithms.