Tải bản đầy đủ (.pdf) (24 trang)

Các bài toán về đường đi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (477.11 KB, 24 trang )


Chu
.
o
.
ng 3
C´ac b`ai to´an vˆe
`
d¯u
.
`o
.
ng d¯i
Trong c´ac ´u
.
ng du
.
ng thu
.
.
c tˆe
´
, ta cˆa
`
n t`ım d¯u
.
`o
.
ng d¯i (nˆe
´
u c´o) gi˜u


.
a hai d¯ı
˙’
nh cu
˙’
a d¯ˆo
`
thi
.
. D
-
ˇa
.
c
biˆe
.
t, b`ai to´an t`ım d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t gi˜u
.
a hai d¯ı
˙’
nh cu
˙’

a mˆo
.
t d¯ˆo
`
thi
.
c´o ´y ngh˜ıa to l´o
.
n. C´o
thˆe
˙’
dˆa
˜
n vˆe
`
b`ai to´an nhu
.
vˆa
.
y t`u
.
nhiˆe
`
u b`ai to´an thu
.
.
c tˆe
´
. V´ı du
.

, b`ai to´an t`ım h`anh tr`ınh
tiˆe
´
t kiˆe
.
m nhˆa
´
t (theo tiˆeu chuˆa
˙’
n khoa
˙’
ng c´ach, th`o
.
i gian hoˇa
.
c chi ph´ı) trˆen mˆo
.
t ba
˙’
n d¯ˆo
`
giao
thˆong; b`ai to´an cho
.
n phu
.
o
.
ng ph´ap tiˆe
´

t kiˆe
.
m nhˆa
´
t d¯ˆe
˙’
d¯u
.
a mˆo
.
t hˆe
.
d¯ˆo
.
ng lu
.
.
c t`u
.
tra
.
ng th´ai
n`ay sang tra
.
ng th´ai kh´ac v.v... Hiˆe
.
n nay c´o rˆa
´
t nhiˆe
`

u phu
.
o
.
ng ph´ap du
.
.
a trˆen l´y thuyˆe
´
t d¯ˆo
`
thi
.
to
˙’
ra l`a c´ac phu
.
o
.
ng ph´ap c´o hiˆe
.
u qua
˙’
nhˆa
´
t.
Chu
.
o
.

ng n`ay tr`ınh b`ay c´ac thuˆa
.
t to´an t`ım d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t trˆen d¯ˆo
`
thi
.
c´o tro
.
ng sˆo
´
.
3.1 D
-
u
.
`o
.
ng d¯i gi˜u
.
a hai d¯ı
˙’
nh

3.1.1 D
-
u
.
`o
.
ng d¯i gi˜u
.
a hai d¯ı
˙’
nh
Trong nhiˆe
`
u tru
.
`o
.
ng ho
.
.
p, ch´ung ta cˆa
`
n tra
˙’
l`o
.
i cˆau ho
˙’
i: Tˆo
`

n ta
.
i d¯u
.
`o
.
ng d¯i µ t`u
.
d¯ı
˙’
nh s d¯ˆe
´
n
d¯ı
˙’
nh t cu
˙’
a d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng G := (V, E)? Nˆe
´
u c´o, h˜ay chı
˙’
ra c´ach d¯i cu

˙’
a d¯u
.
`o
.
ng d¯i µ.
L`o
.
i gia
˙’
i cu
˙’
a b`ai to´an n`ay kh´a d¯o
.
n gia
˙’
n: ch´ung ta chı
˙’
cˆa
`
n ´ap du
.
ng thuˆa
.
t to´an t`ım kiˆe
´
m
theo chiˆe
`
u rˆo

.
ng (hoˇa
.
c chiˆe
`
u sˆau) trˆen d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng G nhu
.
sau. G´an mˆo
˜
i d¯ı
˙’
nh cu
˙’
a G mˆo
.
t
chı
˙’
sˆo
´
. Bˇa
`

ng phu
.
o
.
ng ph´ap lˇa
.
p, dˆa
`
n dˆa
`
n ta s˜e cho mˆo
˜
i d¯ı
˙’
nh v mˆo
.
t chı
˙’
sˆo
´
n`ao d¯´o bˇa
`
ng d¯ˆo
.
d`ai d¯u
.
`o
.
ng d¯i ngˇa
´

n nhˆa
´
t (sˆo
´
cung ´ıt nhˆa
´
t) t`u
.
s t´o
.
i v. D
-
´anh dˆa
´
u d¯ı
˙’
nh s bˇa
`
ng chı
˙’
sˆo
´
0. Nˆe
´
u
c´ac d¯ı
˙’
nh d¯u
.
o

.
.
c d¯´anh dˆa
´
u bˇa
`
ng chı
˙’
sˆo
´
m lˆa
.
p th`anh mˆo
.
t tˆa
.
p ho
.
.
p P (m) d¯˜a biˆe
´
t, th`ı ta d¯´anh
dˆa
´
u chı
˙’
sˆo
´
(m + 1) cho mo
.

i d¯ı
˙’
nh cu
˙’
a tˆa
.
p ho
.
.
p:
P (m + 1) := {v
j
chu
.
a d¯u
.
o
.
.
c d¯´anh dˆa
´
u | tˆo
`
n ta
.
i v
i
∈ P (m) v´o
.
i (v

i
, v
j
) ∈ E}.
75

Thuˆa
.
t to´an d`u
.
ng khi khˆong thˆe
˙’
d¯´anh dˆa
´
u d¯u
.
o
.
.
c n˜u
.
a. C´o hai tru
.
`o
.
ng ho
.
.
p xa
˙’

y ra:
1. D
-
ı
˙’
nh t d¯u
.
o
.
.
c d¯´anh dˆa
´
u, chˇa
˙’
ng ha
.
n t ∈ P (m) v´o
.
i m n`ao d¯´o, th`ı ta x´et c´ac d¯ı
˙’
nh v
1
, v
2
, ...,
sao cho
v
1
∈ P (m − 1), v
2

∈ P (m − 2), . . . , v
m
∈ P (0).
Khi d¯´o µ := {s = v
m
, v
m−1
, ..., v
1
, t} l`a d¯u
.
`o
.
ng d¯i pha
˙’
i t`ım.
2. D
-
ı
˙’
nh t khˆong d¯u
.
o
.
.
c d¯´anh dˆa
´
u. Trong tru
.
`o

.
ng ho
.
.
p n`ay, ta kˆe
´
t luˆa
.
n khˆong tˆo
`
n ta
.
i d¯u
.
`o
.
ng
d¯i t`u
.
s d¯ˆe
´
n t.
Theo c´ach xˆay du
.
.
ng cu
˙’
a thuˆa
.
t to´an, dˆe

˜
d`ang ch´u
.
ng minh rˇa
`
ng
Mˆe
.
nh d¯ˆe
`
3.1.1 Nˆe
´
u d¯ˆo
`
thi
.
d¯u
.
o
.
.
c x´ac d¯i
.
nh bo
.
˙’
i d˜ay liˆen tiˆe
´
p c´ac d¯ı
˙’

nh, th`ı thuˆa
.
t to´an c´o
th`o
.
i gian O(m).
3.1.2 D
-
ˆo
`
thi
.
liˆen thˆong ma
.
nh
Nhˇa
´
c la
.
i l`a d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng G go
.
i l`a liˆen thˆong ma

.
nh nˆe
´
u hai d¯ı
˙’
nh s v`a t t`uy ´y cu
˙’
a G luˆon
luˆon tˆo
`
n ta
.
i mˆo
.
t d¯u
.
`o
.
ng d¯i t`u
.
s d¯ˆe
´
n t. Hiˆe
˙’
n nhiˆen rˇa
`
ng
D
-
i

.
nh l´y 3.1.2 Cho G = (V, E) l`a d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng, v`a v ∈ V. Khi d¯´o G liˆen thˆong ma
.
nh
nˆe
´
u v`a chı
˙’
nˆe
´
u mo
.
i cˇa
.
p d¯ı
˙’
nh a, b ∈ V, tˆo
`
n ta
.
i mˆo
.

t d¯u
.
`o
.
ng d¯i t`u
.
a d¯ˆe
´
n v v`a mˆo
.
t d¯u
.
`o
.
ng d¯i t`u
.
v d¯ˆe
´
n b.
Du
.
.
a trˆen thuˆa
.
t to´an t`ım kiˆe
´
m theo chiˆe
`
u sˆau, ta c´o thˆe
˙’

mˆo ta
˙’
c´ach x´ac d¯i
.
nh mˆo
.
t d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng c´o liˆen thˆong ma
.
nh hay khˆong thˆong qua d¯i
.
nh l´y sau:
D
-
i
.
nh l´y 3.1.3 Cho G = (V, E) l`a d¯ˆo
`
thi
.
c´o hu
.
´o

.
ng, v`a v ∈ V. K´y hiˆe
.
u G

:= (V, E

) l`a d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng nhˆa
.
n d¯u
.
o
.
.
c t`u
.
G bˇa
`
ng c´ach d¯a
˙’
o hu
.

´o
.
ng mˆo
˜
i cung trong E. Khi d¯´o G l`a liˆen
thˆong ma
.
nh nˆe
´
u v`a chı
˙’
nˆe
´
u thuˆa
.
t to´an t`ım kiˆe
´
m theo chiˆe
`
u sˆau trˆen d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng G,
kho
.

˙’
i d¯ˆa
`
u t`u
.
v, d¯a
.
t d¯u
.
o
.
.
c mo
.
i d¯ı
˙’
nh cu
˙’
a G v`a thuˆa
.
t to´an t`ım kiˆe
´
m theo chiˆe
`
u sˆau trˆen d¯ˆo
`
thi
.
c´o hu
.

´o
.
ng G

, kho
.
˙’
i d¯ˆa
`
u t`u
.
v, d¯a
.
t d¯u
.
o
.
.
c mo
.
i d¯ı
˙’
nh cu
˙’
a G

.
D
-
i

.
nh ngh˜ıa 3.1.4 D
-
ˆo
`
thi
.
vˆo hu
.
´o
.
ng G go
.
i l`a d¯u
.
o
.
.
c d¯i
.
nh hu
.
´o
.
ng ma
.
nh nˆe
´
u c´o thˆe
˙’

d¯i
.
nh hu
.
´o
.
ng
trˆen c´ac ca
.
nh cu
˙’
a G sao cho d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng tu
.
o
.
ng ´u
.
ng nhˆa
.
n d¯u
.
o

.
.
c l`a liˆen thˆong ma
.
nh.
76

D
-
i
.
nh l´y sau cho ch´ung ta mˆo
.
t d¯ˇa
.
c tru
.
ng cu
˙’
a d¯ˆo
`
thi
.
vˆo hu
.
´o
.
ng d¯u
.
o

.
.
c d¯i
.
nh hu
.
´o
.
ng ma
.
nh.
Ta n´oi cˆa
`
u trong d¯ˆo
`
thi
.
vˆo hu
.
´o
.
ng liˆen thˆong l`a mˆo
.
t ca
.
nh m`a bo
˙’
d¯i th`ı d¯ˆo
`
thi

.
s˜e mˆa
´
t t´ınh
liˆen thˆong.
D
-
i
.
nh l´y 3.1.5 D
-
ˆo
`
thi
.
vˆo hu
.
´o
.
ng G d¯u
.
o
.
.
c d¯i
.
nh hu
.
´o
.

ng ma
.
nh nˆe
´
u v`a chı
˙’
nˆe
´
u n´o liˆen thˆong
v`a khˆong c´o cˆa
`
u.
Ch´u
.
ng minh. B`ai tˆa
.
p. 
Du
.
.
a trˆen thuˆa
.
t to´an t`ım kiˆe
´
m theo chiˆe
`
u sˆau, ta c´o thˆe
˙’
d¯i
.

nh hu
.
´o
.
ng c´ac ca
.
nh cu
˙’
a d¯ˆo
`
thi
.
vˆo hu
.
´o
.
ng d¯u
.
o
.
.
c d¯i
.
nh hu
.
´o
.
ng ma
.
nh nhu

.
sau. Lˆa
´
y mˆo
.
t d¯ı
˙’
nh bˆa
´
t k`y trong d¯ˆo
`
thi
.
vˆo hu
.
´o
.
ng
G l`am d¯ı
˙’
nh kho
.
˙’
i d¯ˆa
`
u v`a thu
.
.
c hiˆe
.

n thuˆa
.
t to´an t`ım kiˆe
´
m theo chiˆe
`
u sˆau. V`ı d¯ˆo
`
thi
.
vˆo hu
.
´o
.
ng
l`a liˆen thˆong, kˆe
´
t qua
˙’
cu
˙’
a viˆe
.
c t`ım kiˆe
´
m n`ay cho ta mˆo
.
t cˆay bao tr`um
1
T = (V

n
, E
n
), trong
d¯´o V
n
= {v
1
, v
2
, . . . , v
n
} l`a c´ac d¯ı
˙’
nh cu
˙’
a G. Nˆe
´
u e = (v
i
, v
j
) l`a mˆo
.
t ca
.
nh trong cˆay bao tr`um
T, ta d¯i
.
nh hu

.
´o
.
ng n´o t`u
.
d¯ı
˙’
nh c´o chı
˙’
sˆo
´
nho
˙’
ho
.
n d¯ˆe
´
n d¯ı
˙’
nh c´o chı
˙’
sˆo
´
l´o
.
n ho
.
n. T´u
.
c l`a nˆe

´
u
i < j, d¯i
.
nh hu
.
´o
.
ng ca
.
nh e t`u
.
v
i
d¯ˆe
´
n v
j
, v`a nˆe
´
u j < i th`ı d¯i
.
nh hu
.
´o
.
ng ca
.
nh e t`u
.

v
j
d¯ˆe
´
n v
i
.
Nˆe
´
u ca
.
nh e = (v
i
, v
j
) cu
˙’
a G khˆong thuˆo
.
c cˆay T, th`ı ta d¯i
.
nh hu
.
´o
.
ng ca
.
nh n`ay t`u
.
d¯ı

˙’
nh c´o chı
˙’
sˆo
´
l´o
.
n ho
.
n d¯ˆe
´
n d¯ı
˙’
nh c´o chı
˙’
sˆo
´
nho
˙’
ho
.
n. T´u
.
c l`a nˆe
´
u i > j, d¯i
.
nh hu
.
´o

.
ng ca
.
nh e t`u
.
v
i
d¯ˆe
´
n v
j
,
v`a nˆe
´
u j > i th`ı d¯i
.
nh hu
.
´o
.
ng ca
.
nh e t`u
.
v
j
d¯ˆe
´
n v
i

.
H`ınh 3.1 minh ho
.
a d¯ˆo
`
thi
.
vˆo hu
.
´o
.
ng v`a c´ach d¯i
.
nh hu
.
´o
.
ng n´o.
.......................................................................................................................................................................................................................
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
........................................................................................................................................................................................................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.............................................................................................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
a
b
c
d
e
f

• • •
• •
(a)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.............................................................................................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
..................................................................................................................................................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.......................................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.............................................................................................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
............................................................................................................
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
...
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a

b
c
d
e
f

• • •
• •
(b)
H`ınh 3.1: (a) D
-
ˆo
`
thi
.
vˆo hu
.
´o
.
ng G. (b) D
-
ˆo
`
thi
.
G d¯u
.
o
.
.

c d¯i
.
nh hu
.
´o
.
ng.
1
Kh´ai niˆe
.
m n`ay s˜e d¯u
.
o
.
.
c tr`ınh b`ay trong ??.
77

3.2 D
-
u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t gi˜u
.

a hai d¯ı
˙’
nh
Cho d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng G = (V, E) m`a c´ac cung cu
˙’
a n´o d¯u
.
o
.
.
c g´an c´ac tro
.
ng lu
.
o
.
.
ng cho bo
.
˙’
i ma
trˆa

.
n vuˆong cˆa
´
p n : W = (w
ij
= (w(v
i
, v
j
)). B`ai to´an d¯ˇa
.
t ra l`a t`ım d¯u
.
`o
.
ng d¯i µ t`u
.
mˆo
.
t d¯ı
˙’
nh
xuˆa
´
t ph´at s ∈ V d¯ˆe
´
n mˆo
.
t d¯ı
˙’

nh cuˆo
´
i l`a t ∈ V sao cho tˆo
˙’
ng c´ac tro
.
ng lu
.
o
.
.
ng trˆen d¯u
.
`o
.
ng d¯i µ :

e
k
∈µ
w(e
k
)
l`a nho
˙’
nhˆa
´
t.
C´ac phˆa
`

n tu
.
˙’
w
ij
, i, j = 1, ..., n, cu
˙’
a ma trˆa
.
n tro
.
ng lu
.
o
.
.
ng c´o thˆe
˙’
du
.
o
.
ng, ˆam hoˇa
.
c bˇa
`
ng
khˆong. Mˆo
.
t d¯iˆe

`
u kiˆe
.
n duy nhˆa
´
t d¯ˇa
.
t ra l`a d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng G khˆong ch´u
.
a c´ac ma
.
ch µ v´o
.
i
tˆo
˙’
ng tro
.
ng lu
.
o
.

.
ng trˆen ma
.
ch µ ˆam. V`ı rˇa
`
ng, nˆe
´
u c´o mˆo
.
t ma
.
ch µ nhu
.
vˆa
.
y v`a v l`a mˆo
.
t d¯ı
˙’
nh
n`ao d¯´o cu
˙’
a n´o, th`ı xuˆa
´
t ph´at t`u
.
n´ut s ta d¯i d¯ˆe
´
n d¯ı
˙’

nh v, v`a sau d¯´o d¯i v`ong quanh ma
.
ch µ
mˆo
.
t sˆo
´
d¯u
˙’
l´o
.
n lˆa
`
n rˆo
`
i m´o
.
i d¯ˆe
´
n t ta s˜e thu d¯u
.
o
.
.
c mˆo
.
t d¯u
.
`o
.

ng d¯i c´o tro
.
ng lu
.
o
.
.
ng d¯u
˙’
nho
˙’
. V`ı
vˆa
.
y, trong tru
.
`o
.
ng ho
.
.
p n`ay, d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t l`a khˆong tˆo

`
n ta
.
i.
Nhˆa
.
n x´et rˇa
`
ng, nˆe
´
u ma trˆa
.
n tro
.
ng lu
.
o
.
.
ng W thoa
˙’
m˜an
w
ij
:=

1 nˆe
´
u (v
i

, v
j
) ∈ E,
0 nˆe
´
u ngu
.
o
.
.
c la
.
i,
th`ı d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n t d¯u
.
o
.
.

c x´ac d¯i
.
nh bˇa
`
ng thuˆa
.
t to´an t`ım kiˆe
´
m theo chiˆe
`
u rˆo
.
ng
nhu
.
d¯˜a tr`ınh b`ay trong phˆa
`
n tru
.
´o
.
c.
Tru
.
´o
.
c tiˆen ch´ung ta x´et thuˆa
.
t to´an Dijkstra, d¯o
.

n gia
˙’
n v`a rˆa
´
t hiˆe
.
u qua
˙’
, d¯ˆe
˙’
gia
˙’
i b`ai to´an
d¯ˇa
.
t ra trong tru
.
`o
.
ng ho
.
.
p ma trˆa
.
n tro
.
ng lu
.
o
.

.
ng W c´o c´ac phˆa
`
n tu
.
˙’
khˆong ˆam. Sau d¯´o ph´at
triˆe
˙’
n n´o d¯ˆe
˙’
gia
˙’
i quyˆe
´
t b`ai to´an trong tru
.
`o
.
ng ho
.
.
p tˆo
˙’
ng qu´at.
3.2.1 Tru
.
`o
.
ng ho

.
.
p ma trˆa
.
n tro
.
ng lu
.
o
.
.
ng khˆong ˆam
Thuˆa
.
t to´an Dijkstra [20] t`ım d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
d¯ı
˙’
nh s d¯ˆe
´
n d¯ı
˙’

nh t trong d¯ˆo
`
thi
.
c´o hu
.
´o
.
ng
c´o tro
.
ng lu
.
o
.
.
ng khˆong ˆam. Phu
.
o
.
ng ph´ap n`ay du
.
.
a trˆen viˆe
.
c g´an c´ac nh˜an ta
.
m th`o
.
i cho c´ac

d¯ı
˙’
nh: Nh˜an cu
˙’
a d¯ı
˙’
nh v
i
, k´y hiˆe
.
u L(v
i
), l`a mˆo
.
t cˆa
.
n trˆen cu
˙’
a d¯ˆo
.
d`ai d¯u
.
`o
.
ng d¯i t`u
.
s d¯ˆe
´
n v
i

.
C´ac nh˜an n`ay sau d¯´o tiˆe
´
p tu
.
c d¯u
.
o
.
.
c gia
˙’
m b´o
.
t bo
.
˙’
i mˆo
.
t thu
˙’
tu
.
c lˇa
.
p v`a ta
.
i mˆo
˜
i bu

.
´o
.
c lˇa
.
p c´o
d¯´ung mˆo
.
t nh˜an ta
.
m th`o
.
i tro
.
˙’
th`anh nh˜an cˆo
´
d¯i
.
nh. Khi d¯ı
˙’
nh v
i
d¯u
.
o
.
.
c g´an nh˜an cˆo
´

d¯i
.
nh th`ı
khˆong thˆe
˙’
gia
˙’
m L(v
i
); sˆo
´
n`ay ch´ınh l`a d¯ˆo
.
d`ai d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
.
78


Thuˆa
.
t to´an Dijkstra (w
ij
≥ 0)
1. [Kho
.
˙’
i ta
.
o] D
-
ˇa
.
t
L(v
i
) :=

0 nˆe
´
u v
i
= s,
+∞ nˆe
´
u ngu
.
o
.

.
c la
.
i.
v´o
.
i mo
.
i v
i
∈ V. D
-
´anh dˆa
´
u d¯ı
˙’
nh s c´o nh˜an cˆo
´
d¯i
.
nh, c´ac d¯ı
˙’
nh kh´ac c´o nh˜an ta
.
m th`o
.
i.
D
-
ˇa

.
t c = s.
2. [Cˆa
.
p nhˆa
.
t] V´o
.
i mo
.
i v
i
∈ Γ(c) sao cho v
i
c´o nh˜an ta
.
m th`o
.
i d¯ˇa
.
t
L(v
i
) := min{L(v
i
), L(c) + w(c, v
i
)};
3. T`ım d¯ı
˙’

nh v
i

c´o nh˜an ta
.
m th`o
.
i sao cho
L(v
i

) := min{L(v
i
) < +∞ | v
i
c´o nh˜an ta
.
m th`o
.
i}.
4. D
-
´anh dˆa
´
u d¯ı
˙’
nh v
i

c´o nh˜an cˆo

´
d¯i
.
nh v`a d¯ˇa
.
t c := v
i

.
5. (a) (Nˆe
´
u t`ım d¯u
.
`o
.
ng d¯i t`u
.
s d¯ˆe
´
n t) Nˆe
´
u v
i
= t th`ı thuˆa
.
t to´an d`u
.
ng, L(t) l`a d¯u
.
`o

.
ng d¯i
ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n t; ngu
.
o
.
.
c la
.
i, chuyˆe
˙’
n sang Bu
.
´o
.
c 2.
(b) (Nˆe
´
u t`ım tˆa
´
t ca
˙’

c´ac d¯u
.
`o
.
ng d¯i xuˆa
´
t ph´at t`u
.
s) Nˆe
´
u khˆong thˆe
˙’
g´an nh˜an cˆo
´
d¯i
.
nh
cho d¯ı
˙’
nh v
i

trong Bu
.
´o
.
c 4 th`ı thuˆa
.
t to´an d`u
.

ng; gi´a tri
.
L(v
i
) cu
˙’
a d¯ı
˙’
nh v
i
c´o nh˜an cˆo
´
d¯i
.
nh cho ta d¯ˆo
.
d`ai d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i

. Ngu
.
o
.
.
c la
.
i chuyˆe
˙’
n sang Bu
.
´o
.
c 2.
D
-
i
.
nh l´y 3.2.1 Thuˆa
.
t to´an Dijkstra cho ta d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.

s d¯ˆe
´
n t (nˆe
´
u c´o).
Ch´u
.
ng minh. Tru
.
´o
.
c hˆe
´
t ch´u ´y rˇa
`
ng c´ac d¯ı
˙’
nh khˆong d¯u
.
o
.
.
c g´an nh˜an cˆo
´
d¯i
.
nh s˜e khˆong tˆo
`
n
ta

.
i d¯u
.
`o
.
ng d¯i t`u
.
s d¯ˆe
´
n n´o (nh˜u
.
ng d¯ı
˙’
nh n`ay c´o nh˜an L bˇa
`
ng ∞).
Gia
˙’
su
.
˙’
L(v
i
) cu
˙’
a c´ac d¯ı
˙’
nh c´o nh˜an cˆo
´
d¯i

.
nh o
.
˙’
bu
.
´o
.
c n`ao d¯´o l`a d¯ˆo
.
d`ai d¯u
.
`o
.
ng d¯i ngˇa
´
n
nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
. K´y hiˆe
.
u S
1
l`a tˆa

.
p tˆa
´
t ca
˙’
c´ac d¯ı
˙’
nh n`ay v`a S
2
l`a tˆa
.
p c´ac d¯ı
˙’
nh c´o nh˜an ta
.
m
th`o
.
i. Cuˆo
´
i Bu
.
´o
.
c 2 cu
˙’
a mˆo
˜
i lˆa
`

n lˇa
.
p, nh˜an ta
.
m th`o
.
i L(v
i
) l`a d¯ˆo
.
d`ai d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t µ
i
t`u
.
s d¯ˆe
´
n v
i
qua c´ac d¯ı
˙’
nh trong tˆa
.

p S
1
. (V`ı trong mˆo
˜
i lˆa
`
n lˇa
.
p chı
˙’
c´o mˆo
.
t d¯ı
˙’
nh d¯u
.
o
.
.
c d¯u
.
a v`ao
S
1
nˆen cˆa
.
p nhˆa
.
t la
.

i L(v
i
) chı
˙’
xa
˙’
y ra trong Bu
.
´o
.
c 2).
X´et d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i

khˆong ho`an to`an d¯i qua c´ac d¯ı
˙’
nh cu
˙’

a S
1
m`a
ch´u
.
a ´ıt nhˆa
´
t mˆo
.
t d¯ı
˙’
nh thuˆo
.
c S
2
v`a gia
˙’
su
.
˙’
v
j
∈ S
2
l`a d¯ı
˙’
nh d¯ˆa
`
u tiˆen nhu
.

vˆa
.
y trˆen d¯u
.
`o
.
ng d¯i
n`ay. Do w
ij
khˆong ˆam, d¯oa
.
n d¯u
.
`o
.
ng d¯i t`u
.
v
j
d¯ˆe
´
n v
i

pha
˙’
i c´o d¯ˆo
.
d`ai ∆ khˆong ˆam sao cho
L(v

j
) < L(v
i

) − ∆ < L(v
i

). Tuy nhiˆen d¯iˆe
`
u n`ay mˆau thuˆa
˜
n v´o
.
i khˇa
˙’
ng d¯i
.
nh rˇa
`
ng L(v
i

) c´o
nh˜an ta
.
m th`o
.
i nho
˙’
nhˆa

´
t, v`a do d¯´o c´ac d¯ı
˙’
nh trˆen d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t d¯ˆe
´
n v
i

thuˆo
.
c S
1
v`a
do d¯´o L(v
i

) l`a d¯ˆo
.
d`ai cu
˙’
a d¯u
.

`o
.
ng d¯i n`ay.
79

V`ı S
1
kho
.
˙’
i ta
.
o l`a {s} v`a trong mˆo
˜
i bu
.
´o
.
c lˇa
.
p, d¯ı
˙’
nh v
i

d¯u
.
o
.
.

c thˆem v`ao S
1
, nˆen bˇa
`
ng
qui na
.
p, L(v
i
) l`a d¯ˆo
.
d`ai d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
v´o
.
i mo
.
i d¯ı

˙’
nh v
i
∈ S
1
. Do d¯´o thuˆa
.
t
to´an cho l`o
.
i gia
˙’
i tˆo
´
i u
.
u. 
Mˆe
.
nh d¯ˆe
`
3.2.2 Thuˆa
.
t to´an Dijkstra d¯`oi ho
˙’
i th`o
.
i gian O(n
2
). Nˆe

´
u d¯ˆo
`
thi
.
thu
.
a v`a d¯u
.
o
.
.
c x´ac
d¯i
.
nh bo
.
˙’
i d˜ay liˆen tiˆe
´
p c´ac d¯ı
˙’
nh, th`ı th`o
.
i gian cu
.
.
c d¯a
.
i cu

˙’
a thuˆa
.
t to´an l`a O(m log n).
Ch´u
.
ng minh. Trong tru
.
`o
.
ng ho
.
.
p d¯ˆo
`
thi
.
liˆen thˆong ma
.
nh d¯ˆa
`
y d¯u
˙’
n d¯ı
˙’
nh v`a cˆa
`
n t`ım d¯u
.
`o

.
ng d¯i
ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n mo
.
i d¯ı
˙’
nh kh´ac, thuˆa
.
t to´an cˆa
`
n n(n − 1)/2 ph´ep cˆo
.
ng v`a so s´anh trong
Bu
.
´o
.
c 2 v`a n(n − 1)/2 ph´ep so s´anh kh´ac trong Bu
.
´o
.
c 3. Ngo`ai ra, c´ac Bu

.
´o
.
c 2 v`a 3 cˆa
`
n x´ac
d¯i
.
nh c´ac d¯ı
˙’
nh d¯u
.
o
.
.
c g´an nh˜an ta
.
m th`o
.
i nˆen cˆa
`
n thˆem n(n − 1)/2 ph´ep so s´anh. C´ac sˆo
´
n`ay
c˜ung l`a cˆa
.
n trˆen cho sˆo
´
c´ac ph´ep to´an cˆa
`

n thiˆe
´
t d¯ˆe
˙’
t`ım d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n t, v`a
thˆa
.
t vˆa
.
y, c´ac gi´a tri
.
n`ay d¯a
.
t d¯u
.
o
.
.

c khi t l`a d¯ı
˙’
nh cuˆo
´
i c`ung d¯u
.
o
.
.
c g´an nh˜an cˆo
´
d¯i
.
nh. 
Khi Thuˆa
.
t to´an Dijkstra kˆe
´
t th´uc, c´ac d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t d¯u
.
o
.

.
c x´ac d¯i
.
nh bˇa
`
ng d¯ˆe
.
qui theo Phu
.
o
.
ng tr`ınh (3.1) du
.
´o
.
i d¯ˆay. Do d¯´o nˆe
´
u v

i
l`a d¯ı
˙’
nh tru
.
´o
.
c d¯ı
˙’
nh v
i

trong d¯u
.
`o
.
ng d¯i
ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
th`ı v´o
.
i mo
.
i d¯ı
˙’
nh v
i
cho tru
.
´o
.
c, d¯ı
˙’
nh v


i
c´o thˆe
˙’
lˆa
´
y l`a d¯ı
˙’
nh m`a
L(v
i
) = L(v

i
) + w(v

i
, v
i
). (3.1)
Nˆe
´
u tˆo
`
n ta
.
i duy nhˆa
´
t d¯u
.

`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
th`ı c´ac cung (v

i
, v
i
) trˆen d¯u
.
`o
.
ng
d¯i ngˇa
´
n nhˆa
´
t ta
.
o th`anh mˆo
.

t cˆay c´o hu
.
´o
.
ng (xem Chu
.
o
.
ng 4) v´o
.
i gˆo
´
c l`a d¯ı
˙’
nh s. Nˆe
´
u c´o nhiˆe
`
u
ho
.
n mˆo
.
t d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa

´
t t`u
.
s d¯ˆe
´
n bˆa
´
t k`y mˆo
.
t d¯ı
˙’
nh kh´ac, th`ı Phu
.
o
.
ng tr`ınh 3.1 s˜e d¯u
.
o
.
.
c
thoa
˙’
m˜an bo
.
˙’
i ho
.
n mˆo
.

t d¯ı
˙’
nh kh´ac v

i
v´o
.
i v
i
n`ao d¯´o.
Thu
˙’
tu
.
c sau minh ho
.
a thuˆa
.
t to´an Dijkstra. Trong thu
˙’
tu
.
c n`ay, ma
˙’
ng Mark[] d¯u
.
o
.
.
c su

.
˙’
du
.
ng d¯ˆe
˙’
d¯´anh dˆa
´
u c´ac d¯ı
˙’
nh c´o nh˜an ta
.
m th`o
.
i hay cˆo
´
d¯i
.
nh: Mark[i] = FALSE nˆe
´
u d¯ı
˙’
nh v
i
c´o nh˜an ta
.
m th`o
.
i; ngu
.

o
.
.
c la
.
i bˇa
`
ng TRUE. Gi´a tri
.
Label[i] tu
.
o
.
ng ´u
.
ng nh˜an L
(
v
i
) v`a P red[i],
sau khi kˆe
´
t th´uc thuˆa
.
t to´an, l`a d¯ı
˙’
nh liˆe
`
n tru
.

´o
.
c d¯ı
˙’
nh v
i
trong d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n
v
i
. Nˆe
´
u tˆo
`
n ta
.
i d¯u
.
`o

.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n t, th`ı thu
˙’
tu
.
c PathTwoVertex() s˜e in ra thˆong
tin cu
˙’
a d¯u
.
`o
.
ng d¯i n`ay.
void Dijkstra(byte Start, byte Terminal)
{
byte i, Current;
AdjPointer Tempt;
Path Pred;
int Label[MAXVERTICES], NewLabel, Min;
Boolean Mark[MAXVERTICES];
80


for(i = 1; i <= NumVertices; i++)
{
Mark[i] = FALSE;
Pred[i] = 0;
Label[i] = +Infty;
}
Mark[Start] = TRUE;
Pred[Start] = 0;
Label[Start] = 0;
Current = Start;
while (Mark[Terminal] == FALSE)
{
Tempt = V_out[Current]->Next;
while (Tempt != NULL)
{
if (Mark[Tempt->Vertex] == FALSE)
{
NewLabel = Label[Current] + Tempt->Length;
if (NewLabel < Label[Tempt->Vertex])
{
Label[Tempt->Vertex] = NewLabel;
Pred[Tempt->Vertex] = Current;
}
}
Tempt = Tempt->Next;
}
Min = +Infty;
for (i = 1; i <= NumVertices; i++)
if ((Mark[i] == FALSE) && (Label[i] < Min))
{

Min = Label[i];
Current = i;
}
if (Min == +Infty)
{
printf("Khong ton tai duong di tu %d", Start);
printf(" den %d", Terminal);
81

return;
}
Mark[Current] = TRUE;
}
printf("Ton tai duong di tu %d", Start);
printf(" den %d", Terminal);
printf("\nDuong di qua cac dinh:");
printf("\n % d " , Start);
PathTwoVertex(Pred, Start, Terminal);
printf("\nDo dai la: %d ", Label[Terminal]);
}
3.2.2 Tru
.
`o
.
ng ho
.
.
p ma trˆa
.
n tro

.
ng lu
.
o
.
.
ng tu`y ´y
Thuˆa
.
t to´an Dijkstra chı
˙’
´ap du
.
ng trong tru
.
`o
.
ng ho
.
.
p ma trˆa
.
n tro
.
ng lu
.
o
.
.
ng W khˆong ˆam. Tuy

nhiˆen, nhiˆe
`
u b`ai to´an thu
.
.
c tˆe
´
, W l`a ma trˆa
.
n chi ph´ı, cho nˆen nh˜u
.
ng cung mang la
.
i lo
.
.
i nhuˆa
.
n
pha
˙’
i c´o chi ph´ı ˆam. Trong tru
.
`o
.
ng ho
.
.
p n`ay, phu
.

o
.
ng ph´ap cho du
.
´o
.
i d¯ˆay t`ım d¯u
.
`o
.
ng d¯i ngˇa
´
n
nhˆa
´
t t`u
.
s d¯ˆe
´
n tˆa
´
t ca
˙’
c´ac d¯ı
˙’
nh kh´ac. D
-
ˆay c˜ung l`a phu
.
o

.
ng ph´ap lˇa
.
p v`a du
.
.
a trˆen c´ach d¯´anh
nh˜an, trong d¯´o cuˆo
´
i bu
.
´o
.
c lˇa
.
p th´u
.
k c´ac nh˜an biˆe
˙’
u diˆe
˜
n gi´a tri
.
d¯ˆo
.
d`ai cu
˙’
a c´ac d¯u
.
`o

.
ng d¯i ngˇa
´
n
nhˆa
´
t (t`u
.
s d¯ˆe
´
n tˆa
´
t ca
˙’
c´ac d¯ı
˙’
nh kh´ac) c´o sˆo
´
cung khˆong vu
.
o
.
.
t qu´a (k + 1). Thuˆa
.
t to´an n`ay
d¯u
.
a ra lˆa
`

n d¯ˆa
`
u tiˆen bo
.
˙’
i Ford [26] v`ao gi˜u
.
a nˇam 1950. Sau d¯´o d¯u
.
o
.
.
c Moore [45] v`a Bellman
[3] ca
˙’
i tiˆe
´
n nhu
.
sau.
Thuˆa
.
t to´an Ford, Moore, Bellman
K´y hiˆe
.
u L
k
(v
i
) l`a nh˜an cu

˙’
a d¯ı
˙’
nh v
i
o
.
˙’
cuˆo
´
i lˆa
`
n lˇa
.
p th´u
.
(k + 1).
1. [Kho
.
˙’
i ta
.
o] D
-
ˇa
.
t S = Γ(s), k = 1; v`a
L
1
(v

i
) :=





0 nˆe
´
u v
i
= s,
w(s, v
i
) nˆe
´
u v
i
= s, v
i
∈ Γ(s),
+∞ nˆe
´
u ngu
.
o
.
.
c la
.

i.
2. [Cˆa
.
p nhˆa
.
t nh˜an] V´o
.
i mˆo
˜
i v
i
∈ Γ(S), v
i
= s, thay d¯ˆo
˙’
i nh˜an cu
˙’
a n´o theo quy tˇa
´
c:
L
k+1
(v
i
) := min[L
k
(v
i
), min
v

j
∈T
i
{L
k
(v
j
) + w(v
j
, v
i
)}], (3.2)
82

trong d¯´o T
i
:= Γ
−1
(v
i
) ∩ S. Tˆa
.
p S ch´u
.
a tˆa
´
t ca
˙’
c´ac d¯ı
˙’

nh v
i
sao cho d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t
(hiˆe
.
n h`anh) t`u
.
s d¯ˆe
´
n v
i
c´o sˆo
´
cung l`a k.
Tˆa
.
p T
i
ch´u
.
a tˆa
´

t ca
˙’
c´ac d¯ı
˙’
nh v
j
sao cho d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
c´o sˆo
´
cung l`a
k (t´u
.
c l`a v
j
∈ S) v`a kˆe
´
t th´uc bˇa

`
ng cung (v
j
, v
i
). Ch´u ´y rˇa
`
ng, nˆe
´
u v
i
∈ Γ(S) th`ı d¯u
.
`o
.
ng
d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
khˆong thˆe
˙’
c´o sˆo
´

cung l`a (k + 1) v`a ta khˆong thay d¯ˆo
˙’
i nh˜an
cu
˙’
a d¯ı
˙’
nh n`ay:
L
k+1
(v
i
) := L
k
(v
i
), v´o
.
i mo
.
i v
i
∈ Γ(S).
3. [Kiˆe
˙’
m tra kˆe
´
t th´uc] (a) Nˆe
´
u k ≤ n − 1 v`a L

k+1
(v
i
) = L
k
(v
i
), v´o
.
i mo
.
i v
i
∈ V, th`ı thuˆa
.
t
to´an d`u
.
ng; nh˜an cu
˙’
a d¯ı
˙’
nh v
i
cho ta d¯ˆo
.
d`ai d¯u
.
`o
.

ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
.
(b) Nˆe
´
u k < n − 1 v`a L
k+1
(v
i
) = L
k
(v
i
), v´o
.
i v
i
n`ao d¯´o, th`ı chuyˆe
˙’
n sang Bu
.
´o

.
c 4.
(c) Nˆe
´
u k = n − 1 v`a L
k+1
(v
i
) = L
k
(v
i
), v´o
.
i v
i
n`ao d¯´o, th`ı d¯ˆo
`
thi
.
G c´o ma
.
ch v´o
.
i d¯ˆo
.
d`ai ˆam. Thuˆa
.
t to´an kˆe
´

t th´uc.
4. [Cˆa
.
p nhˆa
.
t S] D
-
ˇa
.
t
S := {v
i
| L
k+1
(v
i
) = L
k
(v
i
)}.
(Tˆa
.
p S bˆay gi`o
.
ch´u
.
a tˆa
´
t ca

˙’
c´ac d¯ı
˙’
nh m`a d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n n´o c´o sˆo
´
cung
l`a (k + 1)).
5. Thay k bo
.
˙’
i (k + 1) v`a lˇa
.
p la
.
i Bu
.
´o
.

c 2.
Khi thuˆa
.
t to´an kˆe
´
t th´uc v`a d¯ˆo
`
thi
.
khˆong c´o ma
.
ch d¯ˆo
.
d`ai ˆam, ch´ung ta c´o thˆe
˙’
t`ım tˆa
´
t
ca
˙’
c´ac d¯u
.
`o
.
ng d¯i (nˆe
´
u tˆo
`
n ta
.

i) ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n tˆa
´
t ca
˙’
c´ac d¯ı
˙’
nh kh´ac. Ho
.
n n˜u
.
a c´ac d¯u
.
`o
.
ng
d¯i c´o thˆe
˙’
nhˆa
.
n d¯u
.
o

.
.
c tru
.
.
c tiˆe
´
p nˆe
´
u, trong ph´ep cˆo
.
ng v`ao c´ac nh˜an L
k
(v
i
) o
.
˙’
Phu
.
o
.
ng tr`ınh
3.2, ta thˆem mˆo
.
t nh˜an P
k
(v
i
) lu

.
u tr˜u
.
thˆong tin mˆo
˜
i d¯ı
˙’
nh trong suˆo
´
t qu´a tr`ınh t´ınh to´an,
trong d¯´o P
k
(v
i
) l`a d¯ı
˙’
nh kˆe
`
tru
.
´o
.
c d¯ı
˙’
nh v
i
trˆen d¯u
.
`o
.

ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
o
.
˙’
bu
.
´o
.
c lˇa
.
p
th´u
.
k. Ta c´o thˆe
˙’
kho
.
˙’
i ta
.
o

P
1
(v
i
) :=

s nˆe
´
u v
i
∈ Γ(s),
0 nˆe
´
u ngu
.
o
.
.
c la
.
i.
Nh˜an P
k
(v
i
) d¯u
.
o
.
.

c cˆa
.
p nhˆa
.
t theo Phu
.
o
.
ng tr`ınh 3.2 trong Bu
.
´o
.
c 2 sao cho P
k+1
(v
i
) = P
k
(v
i
)
nˆe
´
u gi´a tri
.
nho
˙’
nhˆa
´
t d¯a

.
t d¯u
.
o
.
.
c o
.
˙’
phˆa
`
n tu
.
˙’
d¯ˆa
`
u tiˆen trong dˆa
´
u ngoˇa
.
c cu
˙’
a Phu
.
o
.
ng tr`ınh 3.2;
hoˇa
.
c P

k+1
(v
i
) = v
j
nˆe
´
u ngu
.
o
.
.
c la
.
i. Nˆe
´
u k´y hiˆe
.
u P(v
i
) l`a vector d¯u
.
o
.
.
c xˆay du
.
.
ng t`u
.

c´ac nh˜an
P khi kˆe
´
t th´uc thuˆa
.
t to´an, th`ı d¯u
.
`o
.
ng d¯i ngˇa
´
n nhˆa
´
t t`u
.
s d¯ˆe
´
n v
i
nhˆa
.
n d¯u
.
o
.
.
c theo th´u
.
tu
.

.
ngu
.
o
.
.
c:
s, . . . , P
3
(v
i
), P
2
(v
i
), P (v
i
), v
i
,
trong d¯´o P
2
(v
i
) c´o ngh˜ıa l`a P (P (v
i
)), . . . .
D
-
oa

.
n chu
.
o
.
ng tr`ınh sau minh ho
.
a thuˆa
.
t to´an d¯˜a tr`ınh b`ay.
83

×