0% found this document useful (0 votes)
124 views

Warshalls Floyds Algorithm

Warshall's algorithm computes the transitive closure of a relation by determining if a path exists between any two vertices using intermediate vertices from the set {1, 2, ..., k} in each stage k. It works by building the transitive closure matrix Rk from Rk-1 by considering paths that use only vertices from 1 to k at each stage k.

Uploaded by

Pratiksha Murade
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
124 views

Warshalls Floyds Algorithm

Warshall's algorithm computes the transitive closure of a relation by determining if a path exists between any two vertices using intermediate vertices from the set {1, 2, ..., k} in each stage k. It works by building the transitive closure matrix Rk from Rk-1 by considering paths that use only vertices from 1 to k at each stage k.

Uploaded by

Pratiksha Murade
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 12

Warshall’s Algorithm

Dr. Ying Lu
[email protected]

1
Warshall’s algorithm: transitive closure
• Computes the transitive closure of a relation
• (Alternatively: all paths in a directed graph)

• Example of transitive closure:

3 3
1 1

4 4 0 0 1 0
2 0 0 1 0 2
1 0 0 1 1 1 1 1
0 0 0 0 0 0 0 0
0 1 0 0 1 1 1 1

2
Warshall’s algorithm
• Main idea: a path exists between two vertices i, j, iff
•there is an edge from i to j; or

•there is a path from i to j going through intermediate


vertices which are drawn from set {vertex 1}; or

•there is a path from i to j going through intermediate


vertices which are drawn from set {vertex 1, 2}; or

•…

3
Warshall’s algorithm
• Main idea: a path exists between two vertices i, j, iff
•there is a path from i to j going through intermediate
vertices which are drawn from set {vertex 1, 2, … k-1}; or

•there is a path from i to j going through intermediate


vertices which are drawn from set {vertex 1, 2, … k}; or

•...

•there is a path from i to j going through any of the other


vertices

4
Warshall’s algorithm

 Idea: dynamic programming


• Let V={1, …, n} and for k≤n, Vk={1, …, k}
• For any pair of vertices i, jV, identify all paths from i to j
whose intermediate vertices are all drawn from Vk: Pijk={p1, p2,
…}, if Pijk then Rk[i, j]=1 V
k

P1
i j
p2
• For any pair of vertices i, j: Rn[i, j], that is Rn
• Starting with R0=A, the adjacency matrix, how to get R1  …
 Rk-1  Rk  …  Rn
5
Warshall’s algorithm

 Idea: dynamic programming


• pPijk: p is a path from i to j with all intermediate vertices
in Vk
• If k is not on p, then p is also a path from i to j with all
intermediate vertices in Vk-1: pPijk-1

k Vk
Vk-1
p
i j

6
Warshall’s algorithm

 Idea: dynamic programming


• pPijk: p is a path from i to j with all intermediate vertices
in Vk
• If k is on p, then we break down p into p1 and p2
– What are P1 and P2?

p
k Vk
p1
Vk-1 p2

i j

7
Warshall’s algorithm

 Idea: dynamic programming


• pPijk: p is a path from i to j with all intermediate vertices
in Vk
• If k is on p, then we break down p into p1 and p2 where
– p1 is a path from i to k with all intermediate vertices in Vk-1
– p2 is a path from k to j with all intermediate vertices in Vk-1
p
k Vk
p1
Vk-1 p2

i j

8
Warshall’s algorithm

• In the kth stage determine if a path exists between two vertices


i, j using just vertices among 1, …, k

{
R(k)[i,j] =
R(k-1)[i,j]
or
(path using just 1, …, k-1)

(R(k-1)[i,k] and R(k-1)[k,j]) (path from i to k


and from k to j
k using just 1, …, k-1)
i
kth stage

j
9
Warshall’s algorithm
3
3 1
1

2 4
2 4 3 R2
R1 1 0 0 1 0
R0
0 0 1 0 0 0 1 0 1 0 1 1
1 0 0 1 1 0 1 1 0 0 0 0
2 4 1 1 1 1
0 0 0 0 0 0 0 0
0 1 0 0 0 1 0 0

3 R4
3 R3 1
1 0 0 1 0 0 0 1 0
1 0 1 1 1 1 1 1
0 0 0 0 4 0 0 0 0
2 1 1 1 1
2 4 1 1 1 1

10
Warshall’s algorithm

R0 = A R1 R2
0 0 1 0 0 0 1 0 0 0 1 0
1 0 0 1 1 0 1 1 1 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 1 0 0 1 1 1 1

R3 R4
0 0 1 0 0 0 1 0
1 0 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1

11
In-class exercises
Apply Warshall’s algorithm to find the transitive closure of
the digraph defined by the following adjacency matrix

0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0

12

You might also like