design and analysis of algoritham
design and analysis of algoritham
• Introduction to algorithms
• Thomas H. Cormen
• Charles E. Leiserson
• Ronald L. Rivest Cliff
1
Introduction to Algorithm
2
Methods &
Design Techniques
3
What is algorithm?
4
Data Flow
Algorithm +
Problem Program Computer
Data Structure
5
Criteria for Algorithm
Effectiveness Input
Finiteness Output
Definiteness 6
Algorithm vs
Pseudocode vs
Program
• Algorithm
• Systematic logical approach to any
problem. (natural language)
• Pseudocode
• Simple version of programming
code. Does not require any strict
programming syntax
• Program
• Exact code in any programming
language
7
Analyzing the Algorithm • Correctness
• Efficiency
8
• Worst Case
• Maximum no: of steps taken on any instance
of size ‘n’
• Best Case
Types of Analysis • Minimum no: of steps taken on any instance
of size ‘n’
• Average Case
• Average no: of steps taken on any instance of
size ‘n’
9
Example of Analysis
Recursive Non-recursive
• Int fact (int n) • Int fact (int n)
• {if (n<=1) return 1; • { int i-1, facto=1;
• Else return • For(i=1, i<=n, i++)
• n*fact(n-1);} • Less lines of code • {facto=facto*i;}
• Less space
• Return facto;}
• Easier to understand
main
Fact (5)
Fact (4)
Fact (3)
Fact (2)
Fact (1)
11
Example of Analysis
Recursive Non-recursive
• Int fact (int n) • Int fact (int n) 1
• n*fact(n-1);} • {facto=facto*i;}
1
• Return facto;}
n n+1
n
1 n
12
Fibonacci
Fibonacci 0 1 1 2 3 5 8 13 21
n 0 1 2 3 4 5 6 7 8
13
Fibonacci Programs
Recursive
• Int fibo (int n) Non-Recursive
• { if (n==0) return 0; • Int fibo (int n)
• If (n==1) return 1; • { int prev=0, current=1, next, i; 1
• Else return • For (i=2, i<=n; i++)
• Fibo(n-1)+fibo(n-2)} • {next=prev+current;
• Prev=current; n-1
1
• Current=next;}
• Return next;} n-2
1
n-2 14
n-2 n-2
Recursive Non-recursive
n=0 1 10
n=1 2 11
n=2 5 12
Statements n=3 10 13
n=4 17 14
to be n=5 26 15
executed n=6 37 16
n=7 50 17
15
Graph for statement execution
16
Recursive statement
Fibo(5)
Fibo(4) Fibo(3)
Fibo(0) 17
Rate of Growth of Function
•
n F(n) G(n)
0 1000 0
1 1003 1
2 1006 4
3 1009 9
4 1012 16
5 1015 25
6 1018 36
7 1021 49
100 1300 10000
200 1600 40000
18
Rate of Growth of Function
19
Asymptotic
Notation
20
•
Asymptotic
Notation
21
Asymptotic Notation
n F(n) c.G(n) for c=1 c.G(n) for c=100 c.G(n) for c=0.5
1 200 2 200 1
2 300 4 400 2
3 400 8 800 4
4 500 16 1600 8
5 600 32 3200 16
10 1100 1024 102400 512
20 2100 1048576 104857600 524288
100 10100 1.2676506e+30 1.2676506e+32 6.338253e+29
22
Examples for
Asymptotic
Notations
23
Examples for
Asymptotic
Notations
24
Rate of Growth of Function
25
Divide & Conquer
Algorithm
26
Finding Minimum Value using D&C
3,6,1,90,45,75,62,5
3,6,1,90 45,75,62,5
3 1 45 5
27
Divide & Conquer
Algorithm
28
Divide & Conquer Algorithm
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
29
Applications for D&C
• Binary Search
• Finding Maximum & Minimum
• Merge Sort
• Quick Sort
• Strassem’s Matrix Multiplication
30
Time Complexity of D & C
•
31
Example
• Void alpha (int n)
alpha (4)
• {if (n>0)
• {printf(“%d”,n);
4 alpha (3)
• alpha (n-1);
• }} 3 alpha (2)
2 alpha (1)
1 alpha (0)
32
Example
T(n) Void alpha (int n)
1 {if (n>0)
1 {printf(“%d”,n);
T(n-1) alpha (n-1);
}}
33
Example
•
34
Example
•
35
Example Continue
•
36
Example
24, 17, 3, 4, 9, 1, 89, 54,0
24, 17 3 4 9 1 89 54 0
24 17
37
Recursive Tree
• Mergesort (A, lower bound,upper
bound)
• {if (lower bound<upper bound) mergesort(0,8)
bound) merge(0,0,1)
• Merge(A,lower bound,mid
value,upper bound)}
38
Recursive Tree
mergesort(0,8)
merge(0,0,1) 39
Merge Sort
• Combining of two sorted list into a single sorted list
28 15 12 7 1 18 13 11 9 0
P q q+1 r
40
Merge Sort
28 15 12 7 1 18 13 11 9 0
P q q+1 r
18 13 11 9 0 28 15 12 7 1
i j
0 1 7 9 11 12 13 15 18 28
K
41
Pseudocode for the Merge Sort
• •
42
Binary Tree
• Array representation of Binary Tree
B C
D E F G
A B C D E F G
1 2 3 4 5 6 7
43
Binary Tree
• Array representation of Binary Tree
B C
D E
A B C D E
1 2 3 4 5 6 7
44
Binary Tree
• Array representation of Binary Tree
B C
D E
A B C D E
A B C - - D E
1 2 3 4 5 6 7
45
Binary Tree
•
0
1
2 5 1
3 4 6 7 2
46
Full Binary Tree
0 1
1
1 2 3
2 3
2 4 5 6 7 4 5 6 7
8 9 10 11 12 13 14 15
3 9 10 11 12
47
Complete Binary Tree
48
Complete Binary Tree
2 3
4 5 6 7
8 9 10 11 12 13 14 15
49
Heap
50
Types of Heap
100 2
90 80 7 10
75 60 79 5 15 20 11 35
51
Insertion in Heap
100 101
90 80
75 60 79 5
100 90 80 75 60 79 5
1 2 3 4 5 6 7 52
Insertion in Heap
101
100 101
90 80 100
75 60 79 5 80
5
100 90 80 75 60 79 5
1 2 3 4 5 6 7 53
Insertion in Heap
100 101
90 80
75 60 79 5
101
100 90 80 75 60 79 5 101
1 2 3 4 5 6 7 8 54
Insertion in Heap
100 101
90 80
75 60 79 5
101
100 90 80 75 60 79 5 101
1 2 3 4 5 6 7 8 55
Insertion in Heap
Root
101 101
100 80
90 60 79 5
Leaf 75
101 100 80 90 60 79 5 75
1 2 3 4 5 6 7 8 56
Deletion in Heap
• Only root element can be deleted from heap
90 100
75 90 80
75 60 79 5
90
100 75
90 80 75 60 79 5
1 2 3 4 5 6 7 57
Deletion in Heap
• Only root element can be deleted from heap
5
100
90 80
75 60 79 5
5
100 90 80 75 60 79 5
1 2 3 4 5 6 7 58
Deletion in Heap
• Only root element can be deleted from heap
5
100
90 80
75 60 79 5
5
100 90 80 75 60 79 5
100
1 2 3 4 5 6 7 59
Deletion in Heap
• Only root element can be deleted from heap
90
5
90
5
75 80
75
5 60 79 5
90
5 75
90
5 80 75
5 60 79 100
1 2 3 4 5 6 7 60
Deletion in Heap
90
100
90 80 75 80
75 60 79 5
5 60 79
90 75 80 5 60 79 100
61
Deletion in Heap
90 80
75 80 75 79
5 60 79
5 60
80 75 79 5 60 90 100
62
Deletion in Heap
80 79
75 79 75 60
5 60 5
79 75 60 5 80 90 100
63
Deletion in Heap
79
75
75 60
5 60
5
75 5 60 79 80 90 100
64
Deletion in Heap
75 60
5 60 5
60 5 75 79 80 90 100
65
66
Heap Sort
•
Priority Queue
• Smaller Number • Larger Number
• Higher Priority • Higher Priority
7 9 2 3 10 1 12
1 12
2 3 10 9
7 9 10 12 7 3 2 1
67
Quick Sort
68
Quick Sort
69
Linear Search
3 4 7 2 20 8 5 19 49 0
0 1 2 3 4 5 6 7 8 9
• Key Element
• Stopping Condition
0 1 2 3 4 5 6 7 8 9 10 11 12 13
30 29 49 70 15 5 90 6 55 100 22 7 0 78
0 5 6 7 15 22 29 30 49 55 70 78 90 100
LP MV LP MV UP MV UP
LP UP
0 13 6
7 13
10
7 9 71
8
Binary Search
0 6
1 2 10
2 0 4 8 12
3 1 3 5 7 9 11 13
73
Breadth First Search
• Graph Traversal Method 4
• Level Order Search 8 2
• Visiting a Vertex
• Exploration of the same Vertex 3 5
1
6
7
BFS: 1 8 2 4 3 5 7 6
BFS: 3 5 4 7 6 2 1 8
74
Breadth First Search
1
8 2
4
8 2
4
1 6
DFS: 1 2 4 5 3 6 7 8
DFS: 5 4 2 7 8 1 6 3
76
Depth First Search
1 4
7
2
2 8 3 5
4 6 7 8
1 6
3 5
DFS: 1 2 4 5 3 6 7 8
DFS: 5 4 2 7 8 1 6 3
77
Examples Of BFS & DFS
8
10 1
1 2 4
1
7 2
9
9 6 8 5
7 4 3
10
3 1
1 6 12
1
12
5
BFS: 8 10 11 1 2 9 7 6 4 3 5 12
78
Examples Of BFS & DFS
8
10
9 4
7
1
7 2
1
9
1 8
2 3 5
6 10
1
4 1 6 12
1
5
3
DFS: 8 10 9 7 2 4 5 12 3 6 1 11
12 79
Dijkstra
• 3 B
6
4
A D
1
C 8
A B C D
0
3 1 4
80
Dijkstra 7 F
1
4 B G 2 11
A 6 10 E
5 8 2
3
C D 4
H
A B C D E F G H
A 0
C
B
G
E
H
F
D
81
Dijkstra 7 F
1
4 B G 2 11
A 6 10 E F G BA
5 8 2
3
C D 4
H
A B C D E F G H
A 0
C
B
G
E
H
F
D
82