Introduction to Algorithms, Third Edition


Constructing a shortest path



Download 4,84 Mb.
Pdf ko'rish
bet457/618
Sana07.04.2022
Hajmi4,84 Mb.
#534272
1   ...   453   454   455   456   457   458   459   460   ...   618
Bog'liq
Introduction-to-algorithms-3rd-edition

Constructing a shortest path
There are a variety of different methods for constructing shortest paths in the Floyd-
Warshall algorithm. One way is to compute the matrix
D
of shortest-path weights
and then construct the predecessor matrix

from the
D
matrix. Exercise 25.1-6
asks you to implement this method so that it runs in
O.n
3
/
time. Given the pre-
decessor matrix

, the P
RINT
-A
LL
-P
AIRS
-S
HORTEST
-P
ATH
procedure will print
the vertices on a given shortest path.
Alternatively, we can compute the predecessor matrix

while the algorithm
computes the matrices
D
.k/
. Specifically, we compute a sequence of matrices

.0/
; …
.1/
; : : : ; …
.n/
, where

D

.n/
and we define
.k/
ij
as the predecessor of
vertex
j
on a shortest path from vertex
i
with all intermediate vertices in the set
f
1; 2; : : : ; k
g
.
We can give a recursive formulation of
.k/
ij
. When
k
D
0
, a shortest path from
i
to
j
has no intermediate vertices at all. Thus,
.0/
ij
D
(
NIL
if
i
D
j
or
w
ij
D 1
;
i
if
i
¤
j
and
w
ij
<
1
:
(25.6)
For
k
1
, if we take the path
i
;
k
;
j
, where
k
¤
j
, then the predecessor
of
j
we choose is the same as the predecessor of
j
we chose on a shortest path
from
k
with all intermediate vertices in the set
f
1; 2; : : : ; k
1
g
. Otherwise, we


696
Chapter 25
All-Pairs Shortest Paths
D
.0/
D
0
3
8
1
4
1
0
1
1
7
1
4
0
1
1
2
1
5
0
1
1
1
1
6
0
˘

.0/
D
NIL
1
1
NIL
1
NIL
NIL
NIL
2
2
NIL
3
NIL
NIL
NIL
4
NIL
4
NIL
NIL
NIL
NIL
NIL
5
NIL
˘
D
.1/
D
0
3
8
1
4
1
0
1
1
7
1
4
0
1
1
2
5
5
0
2
1
1
1
6
0
˘

.1/
D
NIL
1
1
NIL
1
NIL
NIL
NIL
2
2
NIL
3
NIL
NIL
NIL
4
1
4
NIL
1
NIL
NIL
NIL
5
NIL
˘
D
.2/
D
0
3
8
4
4
1
0
1
1
7
1
4
0
5
11
2
5
5
0
2
1
1
1
6
0
˘

.2/
D
NIL
1
1
2
1
NIL
NIL
NIL
2
2
NIL
3
NIL
2
2
4
1
4
NIL
1
NIL
NIL
NIL
5
NIL
˘
D
.3/
D
0
3
8
4
4
1
0
1
1
7
1
4
0
5
11
2
1
5
0
2
1
1
1
6
0
˘

.3/
D
NIL
1
1
2
1
NIL
NIL
NIL
2
2
NIL
3
NIL
2
2
4
3
4
NIL
1
NIL
NIL
NIL
5
NIL
˘
D
.4/
D
0
3
1
4
4
3
0
4
1
1
7
4
0
5
3
2
1
5
0
2
8
5
1
6
0
˘

.4/
D
NIL
1
4
2
1
4
NIL
4
2
1
4
3
NIL
2
1
4
3
4
NIL
1
4
3
4
5
NIL
˘
D
.5/
D
0
1
3
2
4
3
0
4
1
1
7
4
0
5
3
2
1
5
0
2
8
5
1
6
0
˘

.5/
D
NIL
3
4
5
1
4
NIL
4
2
1
4
3
NIL
2
1
4
3
4
NIL
1
4
3
4
5
NIL
˘
Figure 25.4
The sequence of matrices
D
.k/
and

.k/
computed by the Floyd-Warshall algorithm
for the graph in Figure 25.1.


25.2
The Floyd-Warshall algorithm
697
choose the same predecessor of
j
that we chose on a shortest path from
i
with all
intermediate vertices in the set
f
1; 2; : : : ; k
1
g
. Formally, for
k
1
,
.k/
ij
D
(
.k
1/
ij
if
d
.k
1/
ij
d
.k
1/
i k
C
d
.k
1/
kj
;
.k
1/
kj
if
d
.k
1/
ij
> d
.k
1/
i k
C
d
.k
1/
kj
:
(25.7)
We leave the incorporation of the

.k/
matrix computations into the F
LOYD
-
W
ARSHALL
procedure as Exercise 25.2-3. Figure 25.4 shows the sequence of

.k/
matrices that the resulting algorithm computes for the graph of Figure 25.1. The
exercise also asks for the more difficult task of proving that the predecessor sub-
graph
G
;i
is a shortest-paths tree with root
i
. Exercise 25.2-7 asks for yet another
way to reconstruct shortest paths.
Transitive closure of a directed graph
Given a directed graph
G
D
.V; E/
with vertex set
V
D f
1; 2; : : : ; n
g
, we might
wish to determine whether
G
contains a path from
i
to
j
for all vertex pairs
i; j
2
V
. We define the
transitive closure
of
G
as the graph
G
D
.V; E
/
, where
E
D f
.i; j /
W
there is a path from vertex
i
to vertex
j
in
G
g
:
One way to compute the transitive closure of a graph in
‚.n
3
/
time is to assign
a weight of
1
to each edge of
E
and run the Floyd-Warshall algorithm. If there is a
path from vertex
i
to vertex
j
, we get
d
ij
< n
. Otherwise, we get
d
ij
D 1
.
There is another, similar way to compute the transitive closure of
G
in
‚.n
3
/
time that can save time and space in practice. This method substitutes the logical
operations
_
(logical OR) and
^
(logical AND) for the arithmetic operations min
and
C
in the Floyd-Warshall algorithm. For
i; j; k
D
1; 2; : : : ; n
, we define
t
.k/
ij
to
be
1
if there exists a path in graph
G
from vertex
i
to vertex
j
with all intermediate
vertices in the set
f
1; 2; : : : ; k
g
, and
0
otherwise. We construct the transitive closure
G
D
.V; E
/
by putting edge
.i; j /
into
E
if and only if
t
.n/
ij
D
1
. A recursive
definition of
t
.k/
ij
, analogous to recurrence (25.5), is
t
.0/
ij
D
(
0
if
i
¤
j
and
.i; j /
62
E ;
1
if
i
D
j
or
.i; j /
2
E ;
and for
k
1
,
t
.k/
ij
D
t
.k
1/
ij
_
t
.k
1/
i k
^
t
.k
1/
kj
:
(25.8)
As in the Floyd-Warshall algorithm, we compute the matrices
T
.k/
D
t
.k/
ij
in
order of increasing
k
.


698
Chapter 25
All-Pairs Shortest Paths
1
2
4
3
T
.0/
D
1
0
0
0
0
1
1
1
0
1
1
0
1
0
1
1
T
.1/
D
1
0
0
0
0
1
1
1
0
1
1
0
1
0
1
1
T
.2/
D
1
0
0
0
0
1
1
1
0
1
1
1
1
0
1
1
T
.3/
D
1
0
0
0
0
1
1
1
0
1
1
1
1
1
1
1
T
.4/
D
1
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
Figure 25.5
A directed graph and the matrices
T
.k/
computed by the transitive-closure algorithm.
T
RANSITIVE
-C
LOSURE
.G/
1
n
D j
G:
V
j
2
let
T
.0/
D
t
.0/
ij
be a new
n
n
matrix
3
for
i
D
1
to
n
4
for
j
D
1
to
n
5
if
i
==
j
or
.i; j /
2
G:
E
6
t
.0/
ij
D
1
7
else
t
.0/
ij
D
0
8
for
k
D
1
to
n
9
let
T
.k/
D
t
.k/
ij
be a new
n
n
matrix
10
for
i
D
1
to
n
11
for
j
D
1
to
n
12
t
.k/
ij
D
t
.k
1/
ij
_
t
.k
1/
i k
^
t
.k
1/
kj
13
return
T
.n/
Figure 25.5 shows the matrices
T
.k/
computed by the T
RANSITIVE
-C
LOSURE
procedure on a sample graph. The T
RANSITIVE
-C
LOSURE
procedure, like the
Floyd-Warshall algorithm, runs in
‚.n
3
/
time. On some computers, though, log-
ical operations on single-bit values execute faster than arithmetic operations on
integer words of data. Moreover, because the direct transitive-closure algorithm
uses only boolean values rather than integer values, its space requirement is less


25.2
The Floyd-Warshall algorithm
699
than the Floyd-Warshall algorithm’s by a factor corresponding to the size of a word
of computer storage.
Exercises
25.2-1
Run the Floyd-Warshall algorithm on the weighted, directed graph of Figure 25.2.
Show the matrix
D
.k/
that results for each iteration of the outer loop.
25.2-2
Show how to compute the transitive closure using the technique of Section 25.1.
25.2-3
Modify the F
LOYD
-W
ARSHALL
procedure to compute the

.k/
matrices according
to equations (25.6) and (25.7). Prove rigorously that for all
i
2
V
, the predecessor
subgraph
G
;i
is a shortest-paths tree with root
i
. (
Hint:
To show that
G
;i
is
acyclic, first show that
.k/
ij
D
l
implies
d
.k/
ij
d
.k/
i l
C
w
lj
, according to the
definition of
.k/
ij
. Then, adapt the proof of Lemma 24.16.)
25.2-4
As it appears above, the Floyd-Warshall algorithm requires
‚.n
3
/
space, since we
compute
d
.k/
ij
for
i; j; k
D
1; 2; : : : ; n
. Show that the following procedure, which
simply drops all the superscripts, is correct, and thus only
‚.n
2
/
space is required.
F
LOYD
-W
ARSHALL
0
.W /
1
n
D
W:
rows
2
D
D
W
3

Download 4,84 Mb.

Do'stlaringiz bilan baham:
1   ...   453   454   455   456   457   458   459   460   ...   618




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish