Unit-III OBST and All Pair Shortest Path
Unit-III OBST and All Pair Shortest Path
10 1 1 10 1 20 30 1 1 30
20 2 2 30 10 30 10 2 20 2
2 2
Average No. of
30 3 20 3 3 20 10 3
Comparisons =
(1+2+2)/3 = 5/3 =
1.6
Average No. of Average No. of Average No. of Average No. of
Comparisons = Comparisons = Comparisons = Comparisons =
(1+2+3)/3 = 6/3 = 2 (1+2+3)/3 = 6/3 = 2 (1+2+3)/3 = 6/3 = 2 (1+2+3)/3 = 6/3 = 2
Optimal Binary Search Trees (OBST)
• Let us consider the three key elements 10, 20 and 30.
• Let the frequencies associated with the key elements are 3, 2 and 5 respectively.
• The binary search trees for the above keys have been shown below.
10 1*3 1*3 10 1 20 30 1 1 30
20 2*2 2*5 30 10 30 10 2 20 2
2 2
30 3*5 20 3*2 3 20 10 3
BST3
• For i = 3, j = 3, w3,3 = q3 = 1 3
4
• For i = 4, j = 4, w4,4 = q4 = 1
wi, i = qi
wi, i+1 = qi + qi+1 + pi+1
wi, j = wi, j-1 + pj + qj
Optimal Binary Search Trees (OBST)
W Table
• For length of the tree 1 i→
•l=j–i=1 0 1 2 3 4
• For i = 2, j = 3, w2,3 = q2 + q3 + p3 = 3
3 4
•l=j–i=0 l=j-i
0 c0,0 = 0 c1,1 = 0 c2,2 = 0 c3,3 = 0 c4,4 = 0
r0,0 = 0 r1,1 = 0 r2,2 = 0 r3,3 = 0 r4,4 = 0
• For i = 0, j=0, c0,0 = 0, r0,0 = 0 ↓
1
• For i = 1, j=1, c1,1 = 0, r1,1 = 0 2
ri. i = 0
ci, i = 0
Optimal Binary Search Trees (OBST)
C and r Table
• For length of the tree 1 i→
•l=j–i=1 0 1 2 3 4
ri. j = k
Optimal Binary Search Trees (OBST)
C and r Table
• For length of the tree 2 i→
•l=j–i=2 0 1 2 3 4
• r0,3 = k = 2
Optimal Binary Search Trees (OBST)
C and r Table
• For length of the tree 3 i→
•l=j–i=3 0 1 2 3 4
• r1,4 = k = 2
Optimal Binary Search Trees (OBST)
C and r Table
• For length of the tree 4 i→
•l=j–i=4 0 1 2 3 4
0 0
Optimal Binary Search Trees (OBST)
C and r Table
Substituting the corresponding the key elements we
i→
obtain the following Optimal Binary search Tree.
0 1 2 3 4
0 c0,0 = 0 c1,1 = 0 c2,2 = 0 c3,3 = 0 c4,4 = 0
r0,0 = 0 r1,1 = 0 r2,2 = 0 r3,3 = 0 r4,4 = 0
if l=j-i 1 c0,1 = 8 c1,2 = 7 c2,3 = 3 c3,4 = 3
↓ r0,1 = 1 r1,2 = 2 r2,3 = 3 r3,4 = 4
2 c0,2 = 19 c1,3 = 12 c2,4 = 8
do int r0,2= 1 r1,3 = 2 r2,4 = 3
3 c0,3 = 25 C1,4 = 19
r0,3= 2 r1,4 = 2
while 4 c0,4 = 32
r0,4= 2
2
0 4 11 3
cost = 6 0 2 c
3 0
All Pair Shortest Path
4
• Copy the cost matrix to A0 a b
6
• for i = 1 to 3 11
• for j = 1 to 3 3 2
0 4 11
0
= 6 0 2
A
3 0
4
All Pair Shortest Path a b
6
• for k := 1 to 3 11
• for i := 1 to 3 3 2
• for j := 1 to 3 c
• k= 1, i = 1, j = 1
• A 1 [1, 1] = min {(A0 [1, 1] + A0 [1, 1]), A0 [1, 1]} = min {0 0 4 11
+ 0, 0} = 0 0
= 6 0 2
• k= 1, i = 1, j = 2
A
3 0
• A 1 [1, 2] = min {(A0 [1, 1] + A0 [1, 2]), A0 [1, 2]} = min
{(0 + 4), 4} = 4
0 4 11
• k= 1, i = 1, j = 3
=
1
• A 1 [1, 3] = min {(A0 [1, 1] + A0 [1, 3]), A0 [1, 3]} = min A
{(0 + 11), 11} = 11
4
All Pair Shortest Path a b
6
• k= 1, i = 2, j = 1 11
• A 1 [2, 1] = min {(A0 [2, 1] + A0 [1, 1]), A0 [2, 1]} = min {(6 + 0), 6} = 6 2
3
• k= 1, i = 2, j = 2
• A 1 [2, 2] = min {(A0 [2, 1] + A0 [1, 2]), A0 [2, 2]} = min {(6 + 4), 0)} = 0 c
• k= 1, i = 2, j = 3
• A 1 [2, 3] = min {(A0 [2, 1] + A0 [1, 3]), A0 [2, 3]} = min {(6 + 11), 2} = 2
• k= 1, i = 3, j = 1 0 4 11
• A 1 [3, 1] = min {(A0 [3, 1] + A0 [1, 1]), A0 [3, 1]} = min {(3 + 0), 3} = 3 0
= 6 0 2
• k= 1, i = 3, j = 2
A
• A 1 [3, 2] = min {(A0 [3, 1] + A0 [1, 2]), A0 [3, 2]} = min {(3 + 4), ∞} = 7
3 0
• k= 1, i = 3, j = 3
• A 1 [3, 3] = min {(A0 [3, 1] + A0 [1, 3]), A0 [3, 3]} = min {(3 + 11), 0} = 0
0 4 11
1
= 6 0 2
A
3 7 0
4
All Pair Shortest Path a b
6
• for k := 1 to 3 11
• for i := 1 to 3 3 2
• for j := 1 to 3 c
• k= 2, i = 1, j = 1
0 4 11
• A 2 [1, 1] = min {(A1 [1, 2] + A1 [2, 1]), A1 [1, 1]} = min {4 6 0 2
=
1
+ 6, 0} = 0 A
• k= 2, i = 1, j = 2 3 7 0
• A 2 [1, 2] = min {(A1 [1, 2] + A1 [2, 2]), A1 [1, 2]} = min
{(4 + 0), 4} = 4 0 4 6
• k= 2, i = 1, j = 3 2
=
A
• A 2 [1, 3] = min {(A1 [1, 2] + A1 [2, 3]), A1 [1, 3]} = min
{(4 + 2), 11} = 6
4
All Pair Shortest Path a b
6
• k= 2, i = 2, j = 1 11
• A 2 [2, 1] = min {(A1 [2, 2] + A1[2, 1]), A1 [2, 1]} = min {(0 + 6), 6} = 6 2
3
• k= 2, i = 2, j = 2
• A 2 [2, 2] = min {(A1 [2, 2] + A1 [2, 2]), A1 [2, 2]} = min {(0 + 0), 0)} = 0 c
• k= 2, i = 2, j = 3
• A 2 [2, 3] = min {(A1 [2, 2] + A1 [2, 3]), A1 [2, 3]} = min {(0 + 2), 2} = 2 0 4 11
• k= 2, i = 3, j = 1 1
= 6 0 2
• A 2 [3, 1] = min {(A1 [3, 2] + A1 [2, 1]), A1 [3, 1]} = min {(7 + 6), 3} = 3 A
• k= 2, i = 3, j = 2 3 7 0
• A 2 [3, 2] = min {(A1 [3, 2] + A1 [2, 2]), A1 [3, 2]} = min {(7 + 0), 7} = 7
• k= 2, i = 3, j = 3 0 4 6
• A 2 [3, 3] = min {(A1 [3, 2] + A1 [2, 3]), A1 [3, 3]} = min {(7 + 2), 0} = 0 2
= 6 0 2
A
3 7 0
4
All Pair Shortest Path a b
6
• for k := 1 to 3 11
• for i := 1 to 3 3 2
• for j := 1 to 3 c
• k= 3, i = 1, j = 1
• A 3 [1, 1] = min {(A2 [1, 3] + A2 [3, 1]), A2 [1, 1]} = min {6 0 4 6
2
= 6 0 2
+ 3, 0} = 0 A
• k= 3, i = 1, j = 2 3 7 0
• A 3 [1, 2] = min {(A2 [1, 3] + A2 [3, 2]), A2 [1, 2]} = min
{(6 + 7), 4} = 4 0 4 6
• k= 3, i = 1, j = 3 3
=
A
• A 3 [1, 3] = min {(A2 [1, 3] + A2 [3, 3]), A2 [1, 3]} = min
{(6+ 0), 6} = 6
4
All Pair Shortest Path a b
6
• k= 3, i = 2, j = 1 11
• A 3 [2, 1] = min {(A2 [2, 3] + A2[3, 1]), A2 [2, 1]} = min {(2 + 3), 6} = 5 2
3
• k= 3, i = 2, j = 2
• A 3 [2, 2] = min {(A2 [2, 3] + A2 [3, 2]), A2 [2, 2]} = min {(2 + 7), 0)} = 0 c
• k= 3, i = 2, j = 3
• A 3 [2, 3] = min {(A2 [2, 3] + A2 [3, 3]), A2 [2, 3]} = min {(2 + 0), 2} = 2 0 4 6
• k= 3, i = 3, j = 1 2
= 6 0 2
• A 3 [3, 1] = min {(A2 [3, 3] + A2 [3, 1]), A2 [3, 1]} = min {(0 + 3), 3} = 3 A
• k= 3, i = 3, j = 2 3 7 0
• A 3 [3, 2] = min {(A2 [3, 3] + A2 [3, 2]), A2 [3, 2]} = min {(0 + 7), 7} = 7
• k= 3, i = 3, j = 3 0 4 6
• A 3 [3, 3] = min {(A2 [3, 3] + A2 [3, 3]), A2 [3, 3]} = min {(0 + 0), 0} = 0 3
= 5 0 2
A
3 7 0
4
All Pair Shortest Path a b
6
• k = 4 False 11
2
• The Algorithm will return A3 3
c
• The shortest path for each pair of vertices are
0 4 6
5 0 2
Vertex Pair Path cost /
=
3
a→b
length
A
4
3 7 0
a→c 6
b→a 5
b→c 2
0 4 11
c→a 3 cost = 6 0 2
c→b 7 3 0