Floyd - PowerPoint PPT Presentation

About This Presentation
Title:

Floyd

Description:

The problem: find the shortest path between every pair of vertices of a graph ... Note: we have shown principle of optimality applies to shortest path problems ... – PowerPoint PPT presentation

Number of Views:45
Avg rating:3.0/5.0
Slides: 24
Provided by: michal85
Category:
Tags: floyd | shortest

less

Transcript and Presenter's Notes

Title: Floyd


1
Floyds Algorithm
  • All pairs shortest path

2
All pairs shortest path
  • The problem find the shortest path between every
    pair of vertices of a graph
  • The graph may contain negative edges but no
    negative cycles
  • A representation a weight matrix where
    W(i,j)0 if ij. W(i,j) if there is no edge
    between i and j. W(i,j)weight of edge
  • Note we have shown principle of optimality
    applies to shortest path problems

3
The weight matrix and the graph
1
v1
v2
3
9
5
3
1
2
v5
3
2
v3
v4
4
4
The subproblems
  • How can we define the shortest distance di,j in
    terms of smaller problems?
  • One way is to restrict the paths to only include
    vertices from a restricted subset.
  • Initially, the subset is empty.
  • Then, it is incrementally increased until it
    includes all the vertices.

5
The subproblems
  • Let D(k)i,jweight of a shortest path from vi
    to vj using only vertices from v1,v2,,vk as
    intermediate vertices in the path
  • D(0)W
  • D(n)D which is the goal matrix
  • How do we compute D(k) from D(k-1) ?

6
The Recursive Definition
  • Case 1 A shortest path from vi to vj restricted
    to using only vertices from v1,v2,,vk as
    intermediate vertices does not use vk.
    Then D(k)i,j D(k-1)i,j.
  • Case 2 A shortest path from vi to vj restricted
    to using only vertices from v1,v2,,vk as
    intermediate vertices does use vk. Then
    D(k)i,j D(k-1)i,k D(k-1)k,j.

Shortest path using intermediate verticesV1, .
. . Vk
Vk
Vj
Vi
Shortest Path using intermediate vertices V1, .
. . Vk -1
7
The recursive definition
  • Since D(k)i,j D(k-1)i,j or D(k)i,j
    D(k-1)i,k D(k-1)k,j.We conclude
    D(k)i,j min D(k-1)i,j, D(k-1)i,k
    D(k-1)k,j .

Shortest path using intermediate verticesV1, .
. . Vk
Vk
Vj
Vi
Shortest Path using intermediate vertices V1, .
. . Vk -1
8
The pointer array P
  • Used to enable finding a shortest path
  • Initially the array contains 0
  • Each time that a shorter path from i to j is
    found the k that provided the minimum is saved
    (highest index node on the path from i to j)
  • To print the intermediate nodes on the shortest
    path a recursive procedure that print the
    shortest paths from i and k, and from k to j can
    be used

9
Floyd's Algorithm Using n1 D matrices
  • Floyd//Computes shortest distance between all
    pairs of //nodes, and saves P to enable
    finding shortest paths1. D0 ? W // initialize
    D array to W 2. P ? 0 // initialize P
    array to 03. for k ? 1 to n4. do for i
    ? 1 to n5. do for j ? 1 to n6.
    if (Dk-1 i, j gt Dk-1 i, k
    Dk-1 k, j ) 7. then Dk i, j ?
    Dk-1 i, k Dk-1 k, j 8.
    P i, j ? k9. else Dk i, j
    ? Dk-1 i, j

10
Example
W D0
1
5
4
3
2
-3
2
P
11
k 1Vertex 1 can be intermediate node
D0
  • D12,3 min( D02,3, D02,1D01,3 )
  • min (?, 7)
  • 7
  • D13,2 min( D03,2, D03,1D01,2 )
  • min (-3,?)
  • -3

D1
P
12
k 2Vertices 1, 2 can be intermediate
D1
  • D21,3 min( D11,3, D11,2D12,3 )
  • min (5, 47)
  • 5
  • D23,1 min( D13,1, D13,2D12,1 )
  • min (?, -32)
  • -1

D2
P
13
k 3Vertices 1, 2, 3 can be intermediate
D2
  • D31,2 min(D21,2, D21,3D23,2 )
  • min (4, 5(-3))
  • 2
  • D32,1 min(D22,1, D22,3D23,1 )
  • min (2, 7 (-1))
  • 2

D3
P
14
Floyd's Algorithm Using 2 D matrices
  • Floyd1. D ? W // initialize D array to W
    2. P ? 0 // initialize P array to 03.
    for k ? 1 to n // Computing D from D4.
    do for i ? 1 to n5. do for j ? 1 to
    n6. if (D i, j gt D i, k
    D k, j ) 7. then D i, j ? D
    i, k D k, j 8. P i,
    j ? k 9. else D i, j ? D i, j
    10. Move D to D.

15
Can we use only one D matrix?
  • Di,j depends only on elements in the kth column
    and row of the distance matrix.
  • We will show that the kth row and the kth column
    of the distance matrix are unchanged when Dk is
    computed
  • This means D can be calculated in-place

16
The main diagonal values
  • Before we show that kth row and column of D
    remain unchanged we show that the main diagonal
    remains 0
  • D(k) j,j min D(k-1) j,j , D(k-1) j,k
    D(k-1) k,j min 0, D(k-1)
    j,k D(k-1) k,j 0
  • Based on which assumption?

17
The kth column
  • kth column of Dk is equal to the kth column of
    Dk-1
  • Intuitively true - a path from i to k will not
    become shorter by adding k to the allowed subset
    of intermediate vertices
  • For all i, D(k)i,k min D(k-1)i,k,
    D(k-1)i,k D(k-1)k,k min D(k-1)i,k,
    D(k-1)i,k0 D(k-1)i,k

18
The kth row
  • kth row of Dk is equal to the kth row of Dk-1
  • For all j, D(k)k,j min D(k-1)k,j,
    D(k-1)k,k D(k-1)k,j min D(k-1) k,j
    , 0D(k-1)k,j D(k-1) k,j

19
Floyd's Algorithm using a single D
  • Floyd1. D ? W // initialize D array to W
    2. P ? 0 // initialize P array to 03.
    for k ? 1 to n4. do for i ? 1 to n5.
    do for j ? 1 to n6. if
    (D i, j gt D i, k D k, j ) 7.
    then D i, j ? D i, k D k, j 8.
    P i, j ? k

20
Printing intermediate nodes on shortest path from
q to r
  • path(index q, r)
  • if (P q, r !0)
  • path(q, Pq, r)
  • println( v Pq, r)
  • path(Pq, r, r)
  • return
  • //no intermediate nodes
  • else return
  • Before calling path check Dq, r lt ?, and print
    node q, after the call to
  • path print node r

P
21
Example
22
The final distance matrix and P
The values in parenthesis are the non zero P
values.
23
The call tree for Path(1, 4)
Path(1, 4)
Path(6, 4)
Path(1, 6)
Print v6
P(1, 6)0
Path(6, 3)
Print v3
Path(3, 4)
P(3, 4)0
P(6, 3)0
The intermediate nodes on the shortest path from
1 to 4 are v6, v3. The shortest path is v1, v6,
v3, v4.
Write a Comment
User Comments (0)
About PowerShow.com