Algorithms Guidelines and Practical List
Course Objective: This course is designed to introduce the students to design and analyse algorithms in terms of efficiency and correctness. The course focuses on highlighting difference between various problem solving techniques for efficient algorithm design.
Algorithm Design Techniques: Iterative technique: Applications to Sorting and Searching (review), their correctness and analysis. Divide and Conquer: Application to Sorting and Searching (review of binary search), merge sort, quick sort, their correctness and analysis.
Dynamic Programming: Application to various problems (for reference; Weighted Interval Scheduling, Sequence Alignment, Knapsack), their correctness and analysis. Greedy Algorithms: Application to various problems, their correctness and analysis.
More on Sorting and Searching: Heapsort, Lower Bounds using decision trees, sorting in Linear Time – Bucket Sort, Radix Sort and Count Sort, Medians & Order Statistics, complexity analysis and their correctness.
Advanced Analysis Technique: Amortized analysis
Graph Algorithms: Breadth First Search, Depth First Search and its Applications.
Algorithms Reference Books:
Kleinberg, J., & Tardos, E. (2013). Algorithm Design. 1st edition. Pearson Education India.
Algorithms Practicals List
- a) Implement Insertion Sort (The program should report the number of comparisons)
b) Implement Merge Sort (The program should report the number of comparisons)
- Implement Heap Sort (The program should report the number of comparisons)
- Implement Randomized Quick sort (The program should report the number of comparisons)
- Implement Radix Sort
- Create a Red-Black Tree and perform following operations on it: i. Insert a node ii. Delete a node iii. Search for a number & also report the color of the node containing this number.
- Write a program to determine the LCS of two given sequences
- Implement Breadth-First Search in a graph
- Implement Depth-First Search in a graph
- Write a program to determine the minimum spanning tree of a graph
For the algorithms at S.No 1 to 3 test run the algorithm on 100 different inputs of sizes varying from 30 to 1000. Count the number of comparisons and draw the graph. Compare it with a graph of nlogn.