Introduction – Notion of algorithm – Fundamentals of algorithm problem solving – Important Problem types - Fundamentals of Analysis of algorithm efficiency: Analysis Framework – Asymptotic notations – Mathematical Analysis of non-recursive algorithms – Analysis of recursive algorithms: Substitution method, Recursion tree method and Master theorem
Brute force: Selection sort, Bubble sort, Sequential search, Closest pair and Convex Hull problems – Divide and conquer: Analysis of binary search, quick sort and merge sort – Multiplication of largest integers - Strassen’s matrix multiplication
Dynamic Programming: Computing a Binomial coefficient – Optimal Binary Search Tree (OBST) – 0/1 knapsack problem and memory function – Warshall’s and Floyd’s algorithm – Greedy Technique: Minimum spanning tree – Analysis of Prim’s and Kruskal algorithm – Shortest path: Analysis of Dijkstra’s algorithm – Huffman Trees
Flow Networks – Ford Fulkerson method – Maximum Matching in Bipartite Graphs – String matching: Naïve String matching algorithm – Knuth Morris Pratt algorithm – Rabin karp algorithm
Limitations of algorithm power: Lower-Bound Arguments – Decision Trees – P, NP and NP complete problems – Backtracking: n-queens problem – Hamiltonian circuit problem – Branch and bound: Assignment problem – Knapsack problem – Travelling salesman problem – Approximation Algorithms for NP–hard problems (knapsack problem)
Reference Book:
Ellis Horowitz, Sartaj Sahni and Sanguthevar Rajasekaran, “Fundamentals of Computer Algorithms”, 2nd Edition, Orient Black Swan Pvt. Ltd., Hyderabad, 2018. S. Sridhar, “Design and Analysis of Algorithms”, Oxford university press, 2014. Narasimha Karumanchi, “Algorithm Design Techniques”, Career Monk Publications, 2018
Text Book:
Anany Levitin, “Introduction to the Design and Analysis of Algorithms”, 3rd Edition, Pearson Education, New Delhi, 2015. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein, "Introduction to Algorithms", 3rd Edition, Prentice Hall of India, 2009