# Chapter 26 All-Pairs Shortest Paths - PowerPoint PPT Presentation

Loading...

PPT – Chapter 26 All-Pairs Shortest Paths PowerPoint presentation | free to download - id: 6fe145-OWRhN

The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation
Title:

## Chapter 26 All-Pairs Shortest Paths

Description:

### Chapter 26 All-Pairs Shortest Paths Problem definition Shortest paths and matrix multiplication The Floyd-Warshall algorithm Problem definition: Real problem:When to ... – PowerPoint PPT presentation

Number of Views:72
Avg rating:3.0/5.0
Slides: 30
Provided by: xuying
Category:
Tags:
User Comments (0)
Transcript and Presenter's Notes

Title: Chapter 26 All-Pairs Shortest Paths

1
Chapter 26 All-Pairs Shortest Paths
• Problem definition
• Shortest paths and matrix multiplication
• The Floyd-Warshall algorithm

2
Problem definition
• Real problemWhen to make a table of distances
between all pairs of cities for a road atlas,how
can we compute the distances?
• Model the problem
• Given a weighted,directed graph G(V,E) with a
weight function wE R that maps edges to
real-valued weights.
• For every pair of vertices u,v V, find a
shortest(least weight) path from u to v, where
the weight of a path is the sum of the weights of
its constituent edges.

3
Solve the problem by Single-Source shortest paths
algorithm
• If all edge weights are nonnegative, we can use
Dijkstras algorithm.
• If negative-weight edges are allowed, then we use
Bellman-Ford algorithm instead.
• Can you analysis the complexity of the two
solutions ? Is it possible for us to find a more
efficient algorithm?

4
Preliminary knowledge
• In this chapter, we use an adjacency-matrix
representation
• wij
if ij
• the weight of directed edge (i,j) if
i j and (i,j) E

• if i j and (i,j) E
• The output of the algorithm presented in this
chapter is an nn matrix D(dij),where entry dij
contains the weight of a shortest path from
vertex i to vertex j. That is , if we let denotes
the shortest-path weight from vertex i to vertex
j, then dij at termination.

5
Continue
• To solve the all-pairs shortest-paths problem on
an input adjacency matrix, we need to compute not
only the shortest path weights but also a
predecessor matrix ( ij), where ij is
NIL if either ij or there is no path from i to
j, and otherwise ij is some predecessor of j
on a shortest path from i.
• The subgraph induced by the ith row of the
matrix should be a shortest-paths tree with root
i. For each vertex i V,we define the predecessor
subgraph of G for i as G ,i (V ,i,E ,i)
• V ,ij V i,j NIL i
• E ,i( ij , j) j V ,i and ij NIL

6
Shortest paths and matrix multiplication
• This section presents a dynamic-programming
algorithm for the all-pairs shortest-paths
problem on a directed graph G(V,E). Each major
loop of the dynamic program will invoke an
operation that is very similar to matrix
multiplication, so that the algorithm will look
like repeated matrix multiplication. We shall
start by developing a (V4)-time algorithm for
the all-pairs shortest-paths problem and the
improve its running time to (V3lgV).

7
Review the steps to develop a dynamic-programming
algorithm
• Characterize the structure of an optimal
solution.
• Recursively define the value of an optimal
solution.
• Computing the value of an optimal solution in a
bottom-up fashion.
• Constructing an optimal solution from computed
information.

8
The structure of a shortest path
• Consider a shortest path p from vertex i to
vertex j, and suppose that p contains at most m
edges.Assuming that there are no negative-weight
cycles,m is finite.If ij,then p has weight 0 and
no edges.If vertices i and j are distinct, then
we decompose path p into i k
j,where path p now contains at most m-1
edges.Moreover, p is a shortest path from i to
k. Thus, we have wkj.

9
A recursive solution to the all-pairs
shortest-paths problem
• Now,let dij(m) be the minimum weight of any path
from vertex i to vertex j that contains at most m
edges.When m0,there is a shortest path from i to
j with no edges if and only if ij.For mgt1,we
compute dij(m) as the minimum of dij(m-1) (the
weight of the shortest path from i to j
consisting of at most m-1 edges) and the minimum
weight of any path from i to j consisting of at
most m edges,obtained by looking at all possible
predecessors k of j.Thus,we recursively define
• dij(m)min ( dij(m-1), dik(m-1)wkj)
dik(m-1)wkj.

10
Continue
• If the graph contains no negative-weight
cycles,then all shortest paths are simple and
thus contain at most n-1 edges.A path from vertex
i to vertex j with more than n-1 edges cannot
have less than a shortest path from i to j.The
actual shortest-path weights are therefore given
by
• dij(n-1)dij(n)dij(n1)...

11
Computing the shortest-path weights bottom up
• We compute the shortest-path weights by extending
shortest paths edge by edge.Letting AB denote
the matrix product returned by
EXTEND-SHORTEST-PATH(A,B) .We compute the
sequence of n-1 matrices
• D(1)D(0)WW,
• D(2)D(1)WW2,
• D(n-1)D(n-2)WWn-1.
• As we argued above, the matrix D(n-1)Wn-1
contains the shortest-path weights.So we get the
algorithm.

12
Continue
• SLOW-ALL-PAIRS-SHORTEST-PATH(W)
• n rowsW
• D(1) W
• for m 2 to n-1
• do D(m) EXTEND-SHORTEST-PATHS(D
(m-1),W)
• return D(n-1)

13
Continue
• EXTEND-SHORTEST-PATH(D,W)
• n rowsD
• let D(dij) be a nn matrix
• for i 1 to n
• do for j 1 to n
• do dij
• for k 1 to n
• do dij
min(dij,dikwkj)
• return D

14
Example
• Figure 1

2
4
3
1
3
8
1
-5
-4
2
7
5
4
6
15
(No Transcript)
16
Improving the running time
• Our goal,however, is not to compute all the D(m)
matrices we are interested in matrix
D(n-1).Recall that in the absence of
negative-weight cycles, D(m)D(n-1),for all
integers mgtn-1.So, we can compute D(n-1) with
only matrix products by
computing the sequence
• D(1)W,
• D(2)W2WW
• D(4) W2 W2
• D(2 )W2 W2
-1 W2 -1

17
Continue
• FASTER-ALL-PAIRS-SHORTEST-PATHS(W)
• n rowsW
• D(1) W
• while n-1gtm
• do D(2m) EXTEND-SHORTEST-PATHS(D(m
),D(m))
• m 2m
• return D(m)

18
Floyd-Warshall algorithm
• In this section, we shall use a different
dynamic-programming formulation to solve the
all-pairs shortest-paths problem on a directed
graph G(V,E).The resulting algorithm, known as
the Floyd-Warshall algorithm, runs in (V3)
time. As before, negative-weight edges may be
present, but we shall assume that there are no
negative-weight cycles.

19
The structure of a shortest path
• In the Floyd-Warshall algorithm, we use a
different characterization of the structure of a
shortest path than we used in the
matrix-multiplication-based all-pairs
algorithms.The algorithm considers the
intermediate vertices of a shortest path, where
an intermediate vertex of a simple path
pltv1,v2,,vlgt is any vertex of p other than v1
or vl, that is, any vertex in the set
v2,v3,,vl-1

20
Continue
• Let the vertices of G be V1,2,,n, and
consider a subset 1,2,,k of vertices for some
k.For any pair of vertices i,j V,consider
all paths from i to j whose intermediate vertices
are all drawn from 1,2,,k,and let p be a
minimum-weight path from among them.The
Floyd-Warshall algorithm exploits a relationship
between path p and shortest paths from i to j
with all intermediate vertices in the set
1,2,,k-1.

21
Continue
• The relationship depends on whether or not k is
an intermediate vertex of path p.
• If k is not an intermediate vertex of path p,
then all intermediate vertices of path p are in
the set 1,2,,k-1. Thus, a shortest path from
vertex i to vertex j with all intermediate
vertices in the set 1,2,,k-1 also a shortest
path from i to j with all intermediate vertices
in the set 1,2,,k.
• If k is an intermediate vertex of path p,then we
break p down into i k
j as shown Figure 2.p1 is a shortest path from i
to k with all intermediate vertices in the set
1,2,,k-1, so as p2.

22
All intermediate vertices in 1,2,,k-1
p2
k
p1
j
i
Pall intermediate vertices in 1,2,,k
Figure2 Path p is a shortest path from vertex i
to vertex j,and k is the highest-numbered
intermediate vertex of p. Path p1, the portion
of path p from vertex i to vertex k,has all
intermediate vertices in the set 1,2,,k-1.The
same holds for path p2 from vertex k to vertex j.
23
A recursive solution to the all-pairs shortest
paths problem
• Let dij(k) be the weight of a shortest path from
vertex i to vertex j with all intermediate
vertices in the set 1,2,,k. A recursive
definition is given by
• dij(k) wij
if k0,
• min(dij(k-1),dik(k-1)dkj(k-1))
if k 1.
• The matrix D(n)(dij(n)) gives the final
answer-dij(n) for all i,j
V-because all intermediate vertices are in the
set 1,2,,n.

24
Computing the shortest-path weights bottom up
• FLOYD-WARSHALL(W)
• n rowsW
• D(0) W
• for k 1 to n
• do for i 1 to n
• do for j 1 to n
• dij(k)
min(dij(k-1),dik(k-1)dkj(k-1))
• return D(n)

25
Example
• Figure 3

2
4
3
1
3
8
1
-5
-4
2
7
5
4
6
26
(No Transcript)
27
D(2)
(2)
(3)
D(3)
28
D(4)
(4)
(5)
D(5)
29
The End
About PowerShow.com