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

Warshall Algorithm

The document discusses three types of relational closures - reflexive, symmetric, and transitive closures. It defines each type of closure and provides examples of how to compute them. The transitive closure is the most complex and adds edges to make a relation transitive - if there is a path from node A to B, the transitive closure will add an edge from A to B. Algorithms for computing the transitive closure repeatedly join the relation matrix with itself until no new edges are added.

Uploaded by

mithun karthik
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)
172 views

Warshall Algorithm

The document discusses three types of relational closures - reflexive, symmetric, and transitive closures. It defines each type of closure and provides examples of how to compute them. The transitive closure is the most complex and adds edges to make a relation transitive - if there is a path from node A to B, the transitive closure will add an edge from A to B. Algorithms for computing the transitive closure repeatedly join the relation matrix with itself until no new edges are added.

Uploaded by

mithun karthik
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/ 27

Closures of Relations

1
Relational closures
• Three types we will study

– Reflexive
• Easy

– Symmetric
• Easy

– Transitive
• Hard
2
Reflexive closure
• Consider a relation R:
(Note that it is not reflexive)

• We want to add edges to


make the relation reflexive

• By adding those edges,


we have made a non-
reflexive relation R into
a reflexive relation

• This new relation is called the reflexive closure of R


3
Reflexive closure
• In order to find the reflexive closure of a
relation R, we add a loop at each node
that does not have one

• The reflexive closure of R is R U


– Where  = { (a,a) | a  R }
• Called the “diagonal relation”
– With matrices, we set the diagonal to all 1’s

4
Example:
• Let R be a relation on the set { 0, 1, 2, 3 } containing the
ordered pairs (0,1), (1,1), (1,2), (2,0), (2,2), and (3,0)
• What is the reflexive closure of R?
• We add all pairs of edges (a,a) that do not already exist

0 1
We add edges:
(0,0), (3,3)

3 2

5
Symmetric closure
• Consider a relation R:
(Note that it is not symmetric)

• We want to add edges to


make the relation symmetric

• By adding those edges,


we have made a non-
symmetric relation R into
a symmetric relation

• This new relation is called the symmetric closure of R


6
Symmetric closure
• In order to find the symmetric closure of a
relation R, we add an edge from a to b,
where there is already an edge from b to a

• The symmetric closure of R is R U R-1


– If R = { (a,b) | … }
– Then R-1 = { (b,a) | (a,b) in R }

7
Example:
• Let R be a relation on the set { 0, 1, 2, 3 } containing the
ordered pairs (0,1), (1,1), (1,2), (2,0), (2,2), and (3,0)
• What is the symmetric closure of R?
• We add all pairs of edges (a,b) where (b,a) exists
– We make all “single” edges into anti-parallel pairs
0 1

We add edges:
(0,2), (0,3)
(1,0), (2,1)
3 2

8
Paths in directed graphs
• A path is a sequences of connected edges from vertex a
to vertex b

• No path exists from Start (a)


the noted start location

End (b)
• A path that starts and
ends at the same
vertex is called a Start (a)
circuit or cycle End (b)
– Must have length ≥1

9
Start (a)
More on paths…
• The length of a path is the number of
edges in the path, not the number of
nodes

10
Shortest paths
• What is really needed in most applications
is finding the shortest path between two
vertices

11
Transitive closure
The transitive closure would
contain edges between all nodes
reachable by a path of any length

12
Transitive closure
• Informal definition: If there is a path from a to b, then
there should be an edge from a to b in the transitive
closure
• First take of a definition:
– In order to find the transitive closure of a relation R, we add an
edge from a to c, when there are edges from a to b and b to c
• But there is a path from 1 to 4 with no edge!
(1,2) & (2,3) (1,3)
R = { (1,2), (2,3), (3,4) } 4 (2,3) & (3,4) (2,4)
4

1 1
2 3 2 3
13
Transitive closure
• Informal definition: If there is a path from a to b, then
there should be an edge from a to b in the transitive
closure

• Second take of a definition:


– In order to find the transitive closure of a relation R, we add an
edge from a to c, when there are edges from a to b and b to c
– Repeat this step until no new edges are added to the relation
• We will study different algorithms for determining the
transitive closure
4
• red means added on
the first repeat 1
• teal means added on 2 3
the second repeat 14
Connectivity relation
• R contains edges between all the nodes reachable via 1 edge
• R◦R = R2 contains edges between nodes that are reachable via 2
edges in R
• R2◦R = R3 contains edges between nodes that are reachable via 3
edges in R
• Rn = contains edges between nodes that are reachable via n edges
in R

• R* contains edges between nodes that are reachable via any


number of edges (i.e. via any path) in R
– Rephrased: R* contains all the edges between nodes a and b when is a
path of length at least 1 between a and b in R

• R* is the transitive closure of R


– The definition of a transitive closure is that there are edges between any
nodes (a,b) that contain a path between them
15
How long are the paths in a
transitive closure?
• Let R be a relation on set A, and let A be a set with n
elements. Consider a graph G with n nodes and some number of
edges
• Theorem: If there is a path (of length at least 1)
from a to b in R, then there is a path between a
and b of length not exceeding n
• Proof preparation:
– Suppose there is a path from a to b in R
– Let the length of that path be m
– Let the path be edges (x0, x1), (x1, x2), …, (xm-1, xm)
– That’s nodes x0, x1, x2, …, xm-1, xm
– If a node exists twice in our path, then it’s not a shortest path
• As we made no progress in our path between the two occurrences
of the repeated node
– Thus, each node may exist at most once in the path
16
How long are the paths in a
transitive closure?
• Proof by contradiction:
– Assume there are more than n nodes in the path
• Thus, m > n
• Let m = n+1
– By the pigeonhole principle, there are n+1 nodes in the path
(pigeons) and they have to fit into the n nodes in the graph
(pigeonholes)
– Thus, there must be at least one pigeonhole that has at least two
pigeons
– Rephrased: there must be at least one node in the graph that
has two occurrences in the nodes of the path
• Not possible, as the path would not be the shortest path
– Thus, it cannot be the case that m > n

• If there exists a path from a to b, then there is a path


from a to b of at most length n
17
Finding the transitive closure
• Let MR be the zero-one matrix of the relation R
on a set with n elements. Then the zero-one
matrix of the transitive closure R* is:

M R*  M R  M [R2]  M [R3]    M [Rn ]

Nodes reachable Nodes reachable Nodes reachable


with one application with two applications with n applications
of the relation of the relation of the relation

18
Example:
• Find the zero-one matrix of the transitive
closure of the relation R given by:
1 0 1 1 2 1 2
M R  0 1 0
1 1 0 M [R2 ] 

3 3
M R*  M R  M [ 2]
R M [ 3]
R

1 0 1 1 0 1  1 1 1 
M [R2]  M R  M R  0 1 0  0 1 0   0 1 0 
   
1 1 0 1 1 0 1 1 1
19
1 1 1  1 0 1 1 1 1
M [R3]  M [R2 ]  M R  0 1 0   0 1 0   0 1 0 
   
1 1 1 1 1 0 1 1 1
1 2

1 0 1 1 1 1 1 1 1 1 1 1
M R*  0 1 0  0 1 0  0 1 0  0 1 0
1 1 0 1 1 1 1 1 1 1 1 1 20
Transitive closure algorithm
• What we did (or rather, could have done):
– Compute the next matrix M[iR], where 1 ≤ i ≤ n
– Do a Boolean join with the previously
computed matrix
• For example:
– Compute M[R2]  M R  M R
– Join that with M R to yield M R  M[R2 ]
– Compute M R  M R  M R
[ 3] [ 2]

– Join that with M R  M[R2 ] from above


21
Transitive closure algorithm
procedure transitive_closure (MR: zero-one nn matrix)
A := MR
B := A
for i := 2 to n
begin
A := A  MR
B := B  A
end { B is the zero-one matrix for R* }

What is the time complexity? O(n4)


22
Warshall Algorithm
Procedure Warshall (MR : rank-n 0-1 matrix)
W := MR
for k := 1 to n
for i := 1 to n
for j := 1 to n
wij := wij  (wik  wkj)
return W {this represents R*}
wij = 1 means there is a path from i to j going only through nodes ≤k.
Indices i and j may have index higher than k.

Time Complexity: O(n3)


23
Lemma:

24
Example: R={(1, 2), (1, 3), (2, 3), (3, 4) }.

Using Warshall’s algorithm find the transitive closure.

25
26
Example:

27

You might also like