Design and Analysis of Algorithms: Course Objectives
Design and Analysis of Algorithms: Course Objectives
Course Objectives: This course focuses on understanding of various algorithm design techniques like
Divide and Conquer, Greedy Method, Dynamic Programming, Backtracking and Branch and Bound
with several examples rather than individual algorithms. Students will be emphasized on asymptotic
analysis in measuring algorithms running time. Also enlighten the students to a good program structure
and its correctness.
UNIT: 2 Basic Traversal, Search Techniques and Divide and Conquer 09 hrs
Techniques for binary trees, techniques for graphs: breadth first search and traversal, depth first search
and traversal, connected components and spanning trees, biconnected components and DFS.
General method of divide and conquer, Binary search, Finding the maximum and minimum, Merge
sort, Quick sort Strassen’s matrix multiplication. Advantages and Disadvantages of divide and
conquer.
General method, Knapsack Problem, Job sequencing with deadlines, minimum cost spanning trees:
Prim's Algorithm, Kruskal's Algorithm. single source shortest paths.
General method, Multistage Graphs, Single source shortest paths: Dijkstra's Algorithm, All Pairs
Shortest Paths: Floyd's Algorithm, Optimal Binary Search Trees, Knapsack problem, Bellman-Ford
Algorithm, Travelling Salesperson problem.
General method of backtracking, N-Queens problem, Sum of subsets problem, Graph coloring,
Hamiltonian cycles, Knapsack problem.
General method of Branch and Bound, 0/1 Knapsack problem: LC Branch and Bound solution, FIFO
Branch and Bound solution, Travelling Salesperson problem, NP-Hard and NP-Complete problems:
Basic concepts.
Text Books:
1. Fundamentals of computer Algorithms, Ellis Horowitz, Satraj Sahni and Rajasekaran, 2nd
Edition, 2007, Silicon Press
2. Introduction to the Design and Analysis of Algorithms, Anany Levitin: 2nd Edition, 2009,
Pearson Education.
Reference Books:
Course Outcomes:
CO1: Understand the process of designing and analyzing an algorithm through basic problem types
and asymptotic notations.
CO2: Identify the key characteristics of a given problem, suitable design approach and its impact on
performance.
CO3: Design an algorithm through appropriate design strategy to solve the real time problems.
CO4: Evaluate the correctness of the algorithm through valid and invalid inputs.
CO5: Analyze the space and time efficiency of the algorithm.
CO6: Implement the algorithm using appropriate design strategies for problem solving.