intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Đồ thị và các thuật toán – Chương 3: Các bài toán về đường đi

Chia sẻ: Lão Lão | Ngày: | Loại File: PDF | Số trang:24

18
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Đồ thị và các thuật toán – Chương 3: Các bài toán về đường đi. Nội dung chính trong chương này gồm có: Đường đi giữa hai đỉnh, đường đi ngắn nhất giữa hai đỉnh, đường đi ngắn nhất giữa tất cả các cặp đỉnh, phát hiện mạch có độ dài âm. Mời các bạn cùng tham khảo để biết thêm nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Đồ thị và các thuật toán – Chương 3: Các bài toán về đường đi

  1. Chu.o.ng 3 C´ ac b` ai to´ an vˆ ¯u.` `e d o.ng d ¯i Trong c´ac u ´.ng du.ng thu..c tˆe´, ta cˆ`an 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ˆan vˆ . `e b`ai to´an nhu vˆa.y t` . u nhiˆ . `eu 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ˆ `eu 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 - u.` D o.ng d u.a hai d ¯i gi˜ ¯ı˙’nh 3.1.1 - u.` D o.ng d u.a hai d ¯i gi˜ ¯ı˙’nh Trong nhiˆ `eu tru.`o.ng ho..p, ch´ ung ta cˆ`an tra˙’ l`o.i cˆau ho˙’i: Tˆ `on 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´ `an ´ap du.ng thuˆa.t to´an t`ım kiˆe´m ung ta chı˙’ cˆ theo chiˆ `eu rˆo.ng (hoˇa.c chiˆ `eu 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ˆ `an dˆ`an 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ˇan 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¯a´nh . . dˆa´u chı˙’ sˆo´ (m + 1) cho mo.i d¯ı˙’nh cu˙’a tˆa.p ho..p: P (m + 1) := {vj chu.a d¯u.o..c d¯a´nh dˆa´u | tˆ `on ta.i vi ∈ P (m) v´o.i (vi , vj ) ∈ E}. 75 http://www.ebook.edu.vn
  2. u.ng khi khˆong thˆe˙’ d¯´anh dˆa´u d¯u.o..c n˜ Thuˆa.t to´an d` u.a. C´o hai tru.`o.ng ho..p xa˙’y ra: - ı˙’nh t d¯u.o..c d¯a´nh 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 v1 , v2 , ..., 1. D sao cho v1 ∈ P (m − 1), v2 ∈ P (m − 2), . . . , vm ∈ P (0). Khi d¯o´ µ := {s = v , v m m−1 , ..., v , t} l`a d¯u.`o.ng d¯i pha˙’i t`ım. 1 2. D- ı˙’nh t khˆong d¯u.o..c d¯a´nh dˆa´u. Trong tru.`o.ng ho..p n`ay, ta kˆe´t luˆa.n khˆong tˆ `on 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¯.inh 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` ´ cu˙’a G luˆon uy y . . `on ta.i mˆo.t d¯u `o ng d¯i t` luˆon tˆ . u s d¯ˆe´n t. Hiˆe˙’n nhiˆen rˇ`a ng - i.nh l´ D 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 `on ta.i mˆo.t d¯u.`o.ng d¯i t` nˆe´u v`a chı˙’ nˆe´u mo.i cˇa.p d¯ı˙’nh a, b ∈ V, 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ˆ `eu 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: - i.nh l´ D 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 G0 := (V, E 0 ) 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ˆ `eu sˆau trˆen d¯`ˆo thi. c´o hu.´o.ng G, kho˙’.i d¯`ˆ 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ˆ au t` `eu sˆau trˆen d¯`ˆo thi. c´o hu ´. . . o ng G , kho˙’ i d¯`ˆau t` 0 . . . 0 u v, d¯a.t d¯u o. c mo.i d¯ı˙’nh cu˙’ a G . - i.nh ngh˜ıa 3.1.4 D D - `ˆo thi. vˆo hu.´o.ng G go.i l`a d¯u.o..c d¯.inh hu.´o.ng ma.nh nˆe´u c´o thˆe˙’ d¯.inh 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 http://www.ebook.edu.vn
  3. - i.nh l´ D 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ˆ `au 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. - i.nh l´ D y 3.1.5 D - `ˆo thi. vˆo hu.´o.ng G d¯u.o..c d¯.inh hu.´o.ng ma.nh nˆe´u v`a chı˙’ nˆe´u n´o liˆen thˆong `au. v`a khˆong c´o cˆ u.ng minh. B`ai tˆa.p. Ch´ / Du..a trˆen thuˆa.t to´an t`ım kiˆe´m theo chiˆ `eu sˆau, ta c´o thˆe˙’ d¯.inh 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¯`ˆau v`a thu. c hiˆe.n thuˆa.t to´an t`ım kiˆe´m theo chiˆ `eu 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` um1 T = (Vn , En ), trong d¯o´ Vn = {v1 , v2 , . . . , vn } l`a c´ac d¯ı˙’nh cu˙’a G. Nˆe´u e = (vi , vj ) l`a mˆo.t ca.nh trong cˆay bao tr` um T, ta d¯.inh 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¯.inh hu.´o.ng ca.nh e t` u. vi d¯ˆe´n vj , v`a nˆe´u j < i th`ı d¯i.nh hu.´o.ng ca.nh e t` u. vj d¯ˆe´n vi . . . Nˆe´u ca.nh e = (vi , vj ) 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¯.inh hu ´o ng ca.nh e t` u. vi d¯ˆe´n vj , v`a nˆe´u j > i th`ı d¯.inh hu.´o.ng ca.nh e t` u. vj d¯ˆe´n vi . H`ınh 3.1 minh ho.a d¯`ˆo thi. vˆo hu.´o.ng v`a c´ach d¯.inh hu.´o.ng n´o. a a •....... ....... ...... ....... .... ......... •....... ....... ...... ....... .... ......... ....... ....... ... . ........ . .. ..... ... ..... ............. .. ..... ... ..... .. ....... . ....... ... ..... .............. ... ..... . .. . . ........ ... ..... ..... . .... . . ..... ..... . . ........ . . . ..... ........... . ....... .......... .. . ..... . . ..... ........ .. . ..... ...... . .......... ... . ....... . . . c . . . . . . . ..... ..... ..... ..... ......... . ...... .. . ........... c . . . . . . . ..... ..... ..... ..... b• • •d b• • •d . . . .. . . ...................................................................................................................................................................................... . . .. . .................................................................................................................................................................................... .. .. ... . ... ... ......... . .. . .... .. . .... . .. ......... . ... ..... ... . ..... . ......... ..... . ... ... ....... ..... ... ... ....... ....... ..... .... ....... ....... .. ..... .... ... ....... ....... ..... .... ....... ....... ..... ... ....... ....... .. ..... .. ....... ....... .. ..... ....... ............. ... ..... .. ....... ....... .............. ... ....... ... ... . ............ . .. . . .. ....... ..... .......... . . .. .......... . ...... ............ . . . ..... ............ . . .. ... ....... .... ..... ...... ....... ........ ..... ....... ....... ... ..... ... ....... ....... ... ..... ... ....... ....... ....... ..... .............. ........ ........... ..... ... ....... ....... .. ..... ... ........ . ........ .... ......... ... ............. ....... .... ......... .... ............. ....... .. .... • • ....................................................................................................................... • ......................................................................................................................... • e f e f (a) (b) - `ˆo thi. vˆo hu.´o.ng G. (b) D H`ınh 3.1: (a) D - `ˆo thi. G d¯u.o..c d¯.inh hu.´o.ng. 1 Kh´ai niˆe.m n`ay s˜e d¯u.o..c tr`ınh b`ay trong ??. 77 http://www.ebook.edu.vn
  4. 3.2 - u.` D o.ng d ´n nhˆ ¯i ngˇ a u.a hai d a´t gi˜ ¯ı˙’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 = (wij = (w(vi , vj )). 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 µ : X w(ek ) ek ∈µ l`a nho˙’ nhˆa´t. C´ac phˆ `an tu˙’. wij , 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ˆ `eu 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ˆ `oi 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`ı `an rˆ . 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ˆ . . `on 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 ( 1 nˆe´u (vi , vj ) ∈ E, wij := 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¯.inh bˇ`a ng thuˆa.t to´an t`ım kiˆe´m theo chiˆ `eu rˆo.ng . nhu d¯˜a tr`ınh b`ay trong phˆ . . `an 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ˆ . . `an 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 . . . . . y hiˆe.u L(vi ), l`a mˆo.t cˆa.n trˆen cu˙’a d¯ˆo. d`ai d¯u.`o.ng d¯i t` d¯ı˙’nh: Nh˜an cu˙’a d¯ı˙’nh vi , k´ u. s d¯ˆe´n vi . 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¯u´ng mˆo.t nh˜an ta.m th`o.i tro˙’. th`anh nh˜an cˆo´ d¯.inh. Khi d¯ı˙’nh vi d¯u.o..c g´an nh˜an cˆo´ d¯.inh th`ı khˆong thˆe˙’ gia˙’m L(vi ); 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 vi . 78 http://www.ebook.edu.vn
  5. Thuˆ a.t to´ an Dijkstra (wij ≥ 0) 1. [Kho˙’.i ta.o] D - ˇa.t ( 0 nˆe´u vi = s, L(vi ) := +∞ nˆe´u ngu.o..c la.i. v´o.i mo.i vi ∈ V. D - ´anh dˆa´u d¯ı˙’nh s c´o nh˜an cˆo´ d¯.inh, c´ac d¯ı˙’nh kh´ac c´o nh˜an ta.m th`o.i. - ˇa.t c = s. D 2. [Cˆa.p nhˆa.t] V´o.i mo.i vi ∈ Γ(c) sao cho vi c´o nh˜an ta.m th`o.i d¯aˇ. t L(vi ) := min{L(vi ), L(c) + w(c, vi )}; 3. T`ım d¯ı˙’nh vi∗ c´o nh˜an ta.m th`o.i sao cho L(vi∗ ) := min{L(vi ) < +∞ | vi c´o nh˜an ta.m th`o.i}. 4. D- ´anh dˆa´u d¯ı˙’nh vi∗ c´o nh˜an cˆo´ d¯.inh v`a d¯ˇa.t c := vi∗ . 5. (a) (Nˆe´u t`ım d¯u.`o.ng d¯i t` u. s d¯ˆe´n t) Nˆe´u vi = 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¯.inh . . cho d¯ı˙’nh vi∗ trong Bu ´o c 4 th`ı thuˆa.t to´an d` . u ng; gi´a tri. L(vi ) cu˙’a d¯ı˙’nh vi c´o nh˜an cˆo´ . . d¯.inh cho ta d¯ˆo. d`ai d¯u `o ng d¯i ngˇa´n nhˆa´t t` u s d¯ˆe´n vi . Ngu.o..c la.i chuyˆe˙’n sang Bu.´o.c 2. . 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` - i.nh l´ D u. s d¯ˆe´n t (nˆe´u c´o). Ch´ u.ng minh. Tru.´o.c hˆe´t ch´ uy´ rˇ`a ng c´ac d¯ı˙’nh khˆong d¯u.o..c g´an nh˜an cˆo´ d¯.inh s˜e khˆong tˆ `on . . . u s d¯ˆe´n n´o (nh˜ ta.i d¯u `o ng d¯i t` . u ng d¯ı˙’nh n`ay c´o nh˜an L bˇa` ng ∞). Gia˙’ su˙’. L(vi ) cu˙’a c´ac d¯ı˙’nh c´o nh˜an cˆo´ d¯.inh 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 vi . K´ y hiˆe.u S1 l`a tˆa.p tˆa´t ca˙’ c´ac d¯ı˙’nh n`ay v`a S2 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ˆ `an lˇa.p, nh˜an ta.m th`o.i L(vi ) l`a d¯oˆ. d`ai d¯u.`o.ng d¯i ngˇa´n nhˆa´t µi u. s d¯ˆe´n vi qua c´ac d¯ı˙’nh trong tˆa.p S1 . (V`ı trong mˆo˜i lˆ t` `an lˇa.p chı˙’ c´o mˆo.t d¯ı˙’nh d¯u.o..c d¯u.a v`ao . S1 nˆen cˆa.p nhˆa.t la.i L(vi ) 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 vi∗ khˆong ho`an to`an d¯i qua c´ac d¯ı˙’nh cu˙’a S1 m`a ch´u a ´ıt nhˆa´t mˆo.t d¯ı˙’nh thuˆo.c S2 v`a gia˙’ su˙’. vj ∈ S2 l`a d¯ı˙’nh d¯`aˆu tiˆen nhu. vˆa.y trˆen d¯u.`o.ng d¯i . n`ay. Do wij khˆong ˆam, d¯oa.n d¯u.`o.ng d¯i t` u. vj d¯ˆe´n vi∗ pha˙’i c´o d¯oˆ. d`ai ∆ khˆong ˆam sao cho L(vj ) < L(vi∗ ) − ∆ < L(vi∗ ). Tuy nhiˆen d¯iˆ `eu n`ay mˆau thuˆa˜n v´o.i khˇa˙’ng d¯.inh rˇ`a ng L(vi∗ ) 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 vi∗ thuˆo.c S1 v`a . do d¯o´ L(vi∗ ) l`a d¯ˆo. d`ai cu˙’a d¯u.`o.ng d¯i n`ay. 79 http://www.ebook.edu.vn
  6. V`ı S1 kho˙’.i ta.o l`a {s} v`a trong mˆo˜i bu.´o.c lˇa.p, d¯ı˙’nh vi∗ d¯u.o..c thˆem v`ao S1 , nˆen bˇ`a ng qui na.p, L(vi ) l`a d¯ˆo. d`ai d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` u. s d¯ˆe´n vi v´o.i mo.i d¯ı˙’nh vi ∈ S1 . 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(n2 ). Nˆe´u d¯`ˆo thi. thu.a v`a d¯u.o..c x´ac ¯ˆ d¯.inh 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ˆ `an 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ˆ `an 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ˆ . . `an x´ac . . . d¯.inh c´ac d¯ınh d¯u o. c g´an nh˜an ta.m th`o i nˆen cˆan 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ˆ `an 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¯.inh. / 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¯.inh bˇa` ng d¯ˆe. qui theo Phu.o.ng tr`ınh (3.1) du.´o.i d¯aˆy. Do d¯´o nˆe´u vi0 l`a d¯ı˙’nh tru.´o.c d¯ı˙’nh vi trong d¯u.`o.ng d¯i u. s d¯ˆe´n vi th`ı v´o.i mo.i d¯ı˙’nh vi cho tru.´o.c, d¯ı˙’nh vi0 c´o thˆe˙’ lˆa´y l`a d¯ı˙’nh m`a ngˇa´n nhˆa´t t` L(vi ) = L(vi0 ) + w(vi0 , vi ). (3.1) `on ta.i duy nhˆa´t d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` Nˆe´u tˆ u. s d¯ˆe´n vi th`ı c´ac cung (vi0 , vi ) 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ˆ `eu . . . ´ ho n mˆo.t d¯u `o ng d¯i ngˇan nhˆa´t t` . y mˆo.t d¯ı˙’nh kh´ac, th`ı Phu o ng tr`ınh 3.1 s˜e d¯u o..c u s d¯ˆe´n bˆa´t k` . . . . . 0 . thoa˙’ m˜an bo˙’ i ho n mˆo.t d¯ı˙’nh kh´ac vi v´o i vi 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 M ark[] d¯u.o..c su˙’. du.ng d¯ˆe˙’ d¯a´nh dˆa´u c´ac d¯ı˙’nh c´o nh˜an ta.m th`o.i hay cˆo´ d¯.inh: M ark[i] = FALSE nˆe´u d¯ı˙’nh vi 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( vi ) v`a P red[i], sau khi kˆe´t th´ `en tru.´o.c d¯ı˙’nh vi trong d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` uc thuˆa.t to´an, l`a d¯ı˙’nh liˆ u. s d¯ˆe´n . . `on ta.i d¯u `o ng d¯i ngˇa´n nhˆa´t t` vi . Nˆe´u 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 http://www.ebook.edu.vn
  7. for(i = 1; i 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
  8. 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` yy´ 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ˆ `eu 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¯aˆy 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ˆ˜en 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ˆ `an 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 y hiˆe.u Lk (vi ) l`a nh˜an cu˙’a d¯ı˙’nh vi o˙’. cuˆo´i lˆ K´ u. (k + 1). `an lˇa.p th´ 1. [Kho˙’.i ta.o] D - ˇa.t S = Γ(s), k = 1; v`a   0  nˆe´u vi = s, 1 L (vi ) := w(s, vi ) nˆe´u vi = 6 s, vi ∈ Γ(s),   +∞ nˆeu ngu o..c la.i. ´ . 2. [Cˆa.p nhˆa.t nh˜an] V´o.i mˆo˜i vi ∈ Γ(S), vi 6= s, thay d¯oˆ˙’i nh˜an cu˙’a n´o theo quy tˇa´c: Lk+1 (vi ) := min[Lk (vi ), min {Lk (vj ) + w(vj , vi )}], (3.2) vj ∈Ti 82 http://www.ebook.edu.vn
  9. trong d¯o´ Ti := Γ−1 (vi ) ∩ S. Tˆa.p S ch´ u.a tˆa´t ca˙’ c´ac d¯ı˙’nh vi 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 vi c´o sˆo´ cung l`a k. Tˆa.p Ti ch´ u.a tˆa´t ca˙’ c´ac d¯ı˙’nh vj sao cho d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` u. s d¯ˆe´n vi c´o sˆo´ cung l`a k (t´ u.c l`a vj ∈ S) v`a kˆe´t th´ uc bˇa` ng cung (vj , vi ). Ch´ uy ´ rˇ`a ng, nˆe´u vi 6∈ Γ(S) th`ı d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` u. s d¯ˆe´n vi 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: Lk+1 (vi ) := Lk (vi ), v´o.i mo.i vi 6∈ Γ(S). uc] (a) Nˆe´u k ≤ n − 1 v`a Lk+1 (vi ) = Lk (vi ), v´o.i mo.i vi ∈ V, th`ı thuˆa.t 3. [Kiˆe˙’m tra kˆe´t th´ to´an d` u ng; nh˜an cu˙’a d¯ı˙’nh vi cho ta d¯ˆo. d`ai d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` . u. s d¯ˆe´n vi . (b) Nˆe´u k < n − 1 v`a Lk+1 (v ) 6= Lk (v ), v´o.i v n`ao d¯o´, th`ı chuyˆe˙’n sang Bu.´o.c 4. i i i (c) Nˆe´u k = n − 1 v`a L (vi ) 6= L (vi ), v´o.i vi n`ao d¯o´, th`ı d¯`oˆ thi. G c´o ma.ch v´o.i d¯oˆ. k+1 k d`ai ˆam. Thuˆa.t to´an kˆe´t th´ uc. - ˇa.t 4. [Cˆa.p nhˆa.t S] D S := {vi | Lk+1 (vi ) 6= Lk (vi )}. (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ˆ ´ `on ta.i) ngˇan 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 (vi ) o˙’ Phu.o.ng tr`ınh . . . k . 3.2, ta thˆem mˆo.t nh˜an P k (vi ) 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 (vi ) l`a d¯ı˙’nh kˆ `e tru.´o.c d¯ı˙’nh vi trˆen d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` u. s d¯ˆe´n vi o˙’. bu.´o.c lˇa.p th´ . . u k. Ta c´o thˆe˙’ kho˙’ i ta.o ( s nˆe´u vi ∈ Γ(s), P 1 (vi ) := 0 nˆe´u ngu.o..c la.i. Nh˜an P k (vi ) 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 (vi ) = P k (vi ) nˆe´u gi´a tri. nho˙’ nhˆa´t d¯a.t d¯u.o..c o˙’. phˆ`an tu˙’. d¯`ˆau tiˆen trong dˆa´u ngoˇa.c cu˙’a Phu.o.ng tr`ınh 3.2; hoˇa.c P k+1 (vi ) = vj nˆe´u ngu.o..c la.i. Nˆe´u k´ y hiˆe.u P(vi ) 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 vi nhˆa.n d¯u o. c theo th´ u. tu.. ngu.o..c: s, . . . , P 3 (vi ), P 2 (vi ), P (vi ), vi , trong d¯o´ P 2 (vi ) c´o ngh˜ıa l`a P (P (vi )), . . . . - oa.n chu.o.ng tr`ınh sau minh ho.a thuˆa.t to´an d¯˜a tr`ınh b`ay. D 83 http://www.ebook.edu.vn
  10. void Ford_Moore_Bellman(byte Start) { byte i, k, Terminal; AdjPointer Tempt1, Tempt2; Path OldPred, NewPred; int OldLabel[MAXVERTICES], NewLabel[MAXVERTICES], Min; Boolean Done, Mark[MAXVERTICES]; for (i = 1; i Next; while (Tempt1 != NULL) { Mark[Tempt1->Vertex] = TRUE; if (Tempt1->Vertex != Start) { OldPred[Tempt1->Vertex] = Start; OldLabel[Tempt1->Vertex] = Tempt1->Length; } Tempt1 = Tempt1->Next; } for (i = 1; i
  11. while (Tempt1 != NULL) { NewPred[Tempt1->Vertex] = Tempt1->Vertex; Min = OldLabel[Tempt1->Vertex]; Tempt2 = V_in[Tempt1->Vertex]->Next; while (Tempt2 != NULL) { if (Mark[Tempt2->Vertex] == TRUE) { if ((OldLabel[Tempt2->Vertex] + Tempt2->Length) < Min) { NewPred[Tempt1->Vertex] = Tempt2->Vertex; Min = OldLabel[Tempt2->Vertex] + Tempt2->Length; } } Tempt2 = Tempt2->Next; } NewLabel[Tempt1->Vertex] = Min; Tempt1 = Tempt1->Next; } } } Done = TRUE; for (i = 1; i
  12. printf("\n Duong di qua cac dinh:"); printf(" % d " , Start); PathTwoVertex(OldPred, Start, Terminal); i = Terminal; printf(" Do dai la: %d ", OldLabel[Terminal]); printf("\n "); getch(); } else { printf("\n "); printf("Khong ton tai duong di tu %d", Start); printf(" den %d", Terminal); } return; } for (i = 1; i
  13. Nh˜an cu˙’a mo.i d¯ı˙’nh vi ∈ V l`a cˇa.p (P (vi ), L(vi )). Kˆe´t th´ uc thuˆa.t to´an, L(t) l`a d¯oˆ. d`ai cu˙’a d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` u. s d¯ˆe´n t v`a vector P cho ta thˆong tin cu˙’a d¯u.`o.ng d¯i n`ay. 1. [Kho˙’.i ta.o] D - ˇa.t ( +∞ nˆe´u vi 6= s, L(vi ) := 0 nˆe´u vi = s, v`a ( −1 nˆe´u vi 6= s, P (vi ) := 0 nˆe´u vi = s, Kho˙’.i ta.o Stack chı˙’ c´o mˆo.t phˆ `an tu˙’. l`a s. 2. [Bu.´o.c lˇa.p] Trong khi Stack kh´ac NULL { lˆa´y ra phˆ `an tu˙’. vi o˙’. d¯`ˆau Stack; v´o.i mo.i d¯ı˙’nh vj ∈ V sao cho vj ∈ Γ(vi ), { nˆe´u [L(vi ) + w(vi , vj ) < L(vj )] th`ı g´an { L(vj ) = L(vi ) + w(vi , vj ); P (vj ) = vi ; nˆe´u d¯ı˙’nh vj chu.a bao gi`o. o˙’. trong Stack th`ı ch`en vj v`ao cuˆo´i Stack; ngu.o..c la.i, nˆe´u vj d¯a˜ t`u.ng o˙’. trong Stack, nhu.ng hiˆe.n ta.i khˆong c´o trong d¯o´ th`ı ch`en vj v`ao d¯`aˆu cu˙’a Stack. } } } 3.3 - u.` D o.ng d ´n nhˆ ¯i ngˇ a u.a tˆ a´t gi˜ a´t ca˙’ c´ ac cˇ ¯ı˙’nh a.p d Gia˙’ su˙’. cˆ `an pha˙’i t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t gi˜ u.a hai d¯ı˙’nh t` uy y ´. R˜o r`ang ta c´o thˆe˙’ gia˙’i b`ai . to´an n`ay bˇa` ng c´ach su˙’ du.ng n lˆ . `an thuˆa.t to´an mˆo ta˙’ o˙’ phˆ `an tru.´o.c, m`a trong mˆo˜i lˆ `an thu..c hiˆe.n, ta s˜e cho.n s lˆ `an lu.o..t l`a c´ac d¯ı˙’nh cu˙’a d¯`oˆ thi.. Trong tru.`o.ng ho..p d¯`ˆo thi. d¯`aˆy d¯u˙’ c´o ma . . trˆa.n tro.ng lu o. ng khˆong ˆam, sˆo´ ph´ep t´ınh cˆ `an thiˆe´t tı˙’ lˆe. v´o.i n3 ; tr´ai la.i v´o.i ma trˆa.n tro.ng lu.o..ng tˆo˙’ng qu´at, sˆo´ ph´ep t´ınh tı˙’ lˆe. v´o.i n4 . 87 http://www.ebook.edu.vn
  14. Trong phˆ `an n`ay ch´ ung ta s˜e tr`ınh b`ay hai c´ach ho`an to`an kh´ac d¯ˆe˙’ gia˙’i b`ai to´an t`ım . . d¯u `o ng d¯i ngˇa´n nhˆa´t gi˜. u.ng phu.o.ng ph´ap n`ay c´o thˆe˙’ ´ap du.ng cho u a tˆa´t ca˙’ c´ac cˇa.p d¯ı˙’nh. Nh˜ c´ac ma trˆa.n tro.ng lu.o..ng tˆo˙’ng qu´at v`a chı˙’ d¯o`i ho˙’i sˆo´ ph´ep t´ınh tı˙’ lˆe. v´o.i n3 . V´o.i tru.`o.ng ho..p ma trˆa.n tro.ng lu.o..ng khˆong ˆam, n´oi chung, c´ac phu.o.ng ph´ap n`ay s˜e nhanh ho.n 50% c´ach ´ap du.ng thuˆa.t to´an Dijkstra n lˆ `an. 3.3.1 Thuˆ an Hedetniemi (tru.` a.t to´ o.ng ho..p ma trˆ a.n tro.ng lu.o..ng khˆ ong ˆ am) Mˆo.t trong nh˜ u.ng mu.c d¯´ıch cu˙’a c´ac thuˆa.t to´an t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t l`a x´ac d¯i.nh tˆa´t ca˙’ c´ac d¯oˆ. d`ai cu˙’a c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t c´o thˆe˙’ c´o trong mˆo.t d¯`oˆ thi. c´o tro.ng lu.o..ng ta.i c` ung . ˙’ mˆo.t th`o i d¯iˆem. Trong phˆ `an n`ay, ch´ung ta tha˙’o luˆa.n c´ach tiˆe´p cˆa.n kh´ac gia˙’i quyˆe´t b`ai to´an n`ay (xem [2]). Thuˆa.t to´an d¯u.o..c xˆay du..ng trˆen co. so˙’. mˆo.t c´ach t´ınh m´o.i l˜ u.a cu˙’a c´ac ma trˆa.n, uy th` ung ta s˜e go.i l`a tˆo˙’ng ma trˆa.n Hedetniemi. Tˆo˙’ng n`ay d¯u.o..c Hedetniemi tr`ınh b`ay v´o.i m`a ch´ Nystuen ta.i tru.`o.ng d¯a.i ho.c Michigan. X´et d¯`ˆo thi. liˆen thˆong c´o tro.ng lu.o..ng G = (V, Γ) v´o.i tˆa.p c´ac d¯ı˙’nh V = {v1 , v2 , . . . , vn } v`a ma trˆa.n tro.ng lu.o..ng khˆong ˆam W := [wij ] cˆa´p n × n. Chˇa˙’ng ha.n, d¯`ˆo thi. trong H`ınh 3.2 c´o ma trˆa.n tro.ng lu.o..ng   0 30 ∞ 30 ∞ ∞ ∞ ∞ 40  30 0 25 40 ∞ ∞ ∞ ∞ ∞     ∞ 25 0 50 ∞ ∞ ∞ ∞ ∞    30 40 50 0 30 20 ∞ ∞ ∞     W =  ∞ ∞ ∞ 30 0 ∞ 25 ∞ ∞  . ∞ ∞ ∞ 20 ∞ 0 20 ∞ 20    ∞ ∞ ∞ ∞ 25 20 0 25 ∞     ∞ ∞ ∞ ∞ ∞ ∞ 25 0 20  40 ∞ ∞ ∞ ∞ 20 ∞ 20 0 ung ta gi´o.i thiˆe.u mˆo.t ph´ep to´an m´o.i trˆen c´ac ma trˆa.n go.i l`a tˆo˙’ng ma trˆa.n Hedet- Ch´ niemi. - i.nh ngh˜ıa 3.3.1 Gia˙’ su˙’. A l`a ma trˆa.n cˆa´p m × n v`a B l`a ma trˆa.n cˆa´p n × p. Tˆo˙’ng ma D trˆa.n Hedetniemi cu˙’a hai ma trˆa.n A v`a B l`a ma trˆa.n C cˆa´p m × p, k´ y hiˆe.u A ⊕ B, x´ac d¯.inh ˙ ’ . bo i: cij := min{ai1 + b1j , ai2 + b2j , . . . , ain + bnj }. 88 http://www.ebook.edu.vn
  15. v5 • ....... ....... .................... ....... ....... ........... ....... 25 ... . ...... . .......... . ....... .... ....... ....... ....... 30 ....... ....... ..... . . ....... ..... ....... .......................... . . ....... ....... ....... ....... v4 50 v7 • ............. ... ........... .... .. ....... ............ ....... .... ......... • ........................................................................................................... .... • v3 ... ....... . . ........ ... ........ ... ... ... ... 20. . . ....... ........... ........... ....... 20 .. . .............. . ... ........ . . . . . . . . . . ..... ..... ..... ... ... ... ....... . ..... .... . . .. ..... ... ... ....... . . . . . . . .. ..... ... ....... ...... . ... .... ... ....... ....... v6 ....... ....... .......... . . . . .. . ...... .. .. . . . . . . . . .. ..... .. ..... .. ..... ... ... ... .................. 25 ... ... • .... 30 .. . .... .. ..... ..... 25 ... ... ... ... ... ... .... .. ... ... ... 40 ..... ..... ..... ..... ..... ... ... ... ... ... ... ... ... ... 20 ... ... ... ... ..... ..... ..... ..... ... ... ... ... ... ..... ..... .... . ... ... ... ..... .. ... .... .... ........ • • • .................................................................................................................................................................................................................................................................................................................................. • v8 20 v9 40 v1 30 v2 H`ınh 3.2:     0 1 2 0 3 4 V´ı du. 3.3.2 T`ım tˆo ng ma trˆa.n A ⊕ B nˆeu A =  2 0 3  v`a B =  5 0 4  ˙ ’ ´    . 5 6 0 3 1 0 Ta c´o       0 1 2 0 3 4 0 1 2       A ⊕ B = 2 0 3 + 5 0 4 = 2 0 3. 5 6 0 3 1 0 3 1 0 `an tu˙’. c23 x´ac d¯.inh bo˙’.i Chˇa˙’ng ha.n, phˆ c23 = min{2 + 4, 0 + 4, 3 + 0} = 3.     0 1 ∞ 1 0 ∞ V´ı du. 3.3.3 T`ım tˆo˙’ng ma trˆa.n A ⊕ B nˆe´u A =   1 0 4   v` a B =    1 0 4 . ∞ 4 0 ∞ 4 0 Ta c´o       0 1 ∞ 1 0 ∞ 1 0 5       A ⊕ B =  1 0 4  +  1 0 4  = 1 0 4. ∞ 4 0 ∞ 4 0 5 4 0 `an tu˙’. c13 x´ac d¯.inh bo˙’.i Chˇa˙’ng ha.n, phˆ c23 = min{0 + ∞, 1 + 4, ∞ + 0} = 5. Bˆay gi`o. ´ap du.ng tˆo˙’ng ma trˆa.n Hedetniemi v`ao viˆe.c t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t. X´et v´ı 89 http://www.ebook.edu.vn
  16. y hiˆe.u W 2 := W ⊕ W, W k := W k−1 ⊕ W, k ≥ 2. Khi d¯o´ du. trong H`ınh 3.2. K´   0 30 55 30 60 50 ∞ 60 40  30 0 25 40 70 60 ∞ ∞ 70       55 25 0 50 80 70 ∞ ∞ ∞    30 40 50 0 30 20 40 ∞ 40    W = 2  60 70 80 30 0 ∞ 25 ∞ ∞ .   ∞ ∞ ∞ 20 ∞ 0 20 ∞ 20    ∞ ∞ ∞ ∞ 25 20 0 25 ∞     ∞ ∞ ∞ ∞ ∞ ∞ 25 0 20  40 ∞ ∞ ∞ ∞ 20 ∞ 20 0 Ch´ `an tu˙’. cu˙’a ma trˆa.n W 2 = [a(2) ung ta h˜ay x´et c´ach x´ac d¯i.nh mˆo.t phˆ ij ] : (2) a13 = min{0 + ∞, 30 + 25, ∞ + 0, 30 + 50, ∞ + ∞, ∞ + ∞, ∞ + ∞, ∞ + ∞, 40 + ∞} = 55. Ch´ uy´ rˇ`a ng gi´a tri. 55 l`a tˆo˙’ng cu˙’a 30, d¯oˆ. d`ai cu˙’a d¯u.`o.ng d¯i ngˇa´n nhˆa´t v´o.i sˆo´ cung mˆo.t t` u. (2) d¯ı˙’nh v1 d¯ˆe´n d¯ı˙’nh v2 , v`a cu˙’a 25, d¯oˆ. d`ai cu˙’a cung nˆo´i d¯ı˙’nh v2 v`a d¯ı˙’nh v3 . Do d¯o´ a13 l`a d¯oˆ. d`ai cu˙’a d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` u. v1 d¯ˆe´n v2 v´o.i sˆo´ cung nhiˆ `eu nhˆa´t hai. Suy ra W 2 cho ta thˆong tin cu˙’a tˆa´t ca˙’ c´ac d¯oˆ. d`ai d¯u.`o.ng d¯i ngˇa´n nhˆa´t gi˜ u.a hai d¯ı˙’nh c´o sˆo´ cung nhiˆ`eu nhˆa´t hai. Tu.o.ng tu.., W 3 cho ta thˆong tin cu˙’a tˆa´t ca˙’ c´ac d¯oˆ. d`ai d¯u.`o.ng d¯i ngˇa´n nhˆa´t gi˜u.a hai d¯ı˙’nh c´o sˆo´ cung nhiˆ `eu nhˆa´t ba, v`a vˆan vˆan. Do d¯`ˆo thi. c´o n d¯ı˙’nh nˆen c´o nhiˆ `eu nhˆa´t (n − 1) . . ´ cung trˆen d¯u `o ng d¯i ngˇan nhˆa´t gi˜ . u a hai d¯ı˙’nh. Vˆa.y - i.nh l´ D y 3.3.4 Trong d¯`ˆo thi. c´o tro.ng sˆo´ khˆong ˆam n d¯ı˙’nh, phˆ `an tu˙’. h`ang i cˆo.t j cu˙’ a ma trˆa.n Hedetniemi W n−1 l`a d¯ˆo. d`ai cu˙’ a d¯u.`o.ng d¯i ngˇa´n nhˆa´t gi˜ u.a d¯ı˙’nh vi v`a vj . V´o.i d¯`ˆo thi. trong H`ınh 3.2 c´o ch´ın d¯ı˙’nh, ta c´o   0 30 55 30 60 50 70 60 40  30 0 25 40 70 60 80 90 70       55 25 0 50 80 70 90 110 90     30 40 50 0 30 20 40 60 40    8   W =  60 70 80 30 0 45 25 50 65  .  50 60 70 20 45 0 20 40 20     70 80 90 40 25 20 0 25 40     60 90 110 60 50 40 25 0 20  40 70 90 40 65 20 40 20 0 Do d¯o´, d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` u. v1 d¯ˆe´n v7 c´o d¯oˆ. d`ai 70. 90 http://www.ebook.edu.vn
  17. D- iˆ `eu l´ u.c suy tru..c tiˆe´p t` u nhˆa´t trong v´ı du. n`ay l`a W 4 = W 8 . Thˆa.t vˆa.y, d¯aˇ˙’ ng th´ y th´ u. . . d¯`oˆ thi. trong H`ınh 3.2: mo.i d¯u `o ng d¯i ngˇa´n nhˆa´t d¯i qua nhiˆ . `eu nhˆa´t bˆo´n cung. Bo˙’ i vˆa.y d¯oˆ. d`ai . . . . . cu˙’a d¯u `o ng d¯i ngˇa´n nhˆa´t d¯u o. c x´ac d¯i.nh bo˙’ i ma trˆa.n W thay v`ı pha˙’i t´ınh d¯ˆe´n W 8 . Tˆo˙’ng 4 qu´at ta c´o - i.nh l´ D y 3.3.5 Trong d¯`ˆo thi. c´o tro.ng sˆo´ khˆong ˆam n d¯ı˙’nh, nˆe´u ma trˆa.n Hedetniemi W k 6= W k−1 , c`on W k = W k+1 , th`ı W k biˆe˙’u thi. tˆa.p c´ac d¯ˆo. d`ai cu˙’ a c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t, v`a sˆo´ cung trˆen mˆo˜i d¯u.`o.ng d¯i ngˇa´n nhˆa´t khˆong vu.o..t qu´a k. u.ng o˙’. bu.´o.c lˇa.p th´ Do d¯´o, thuˆa.t to´an n`ay c´o thˆe˙’ d` u. k < (n − 1). Du.´o.i d¯aˆy l`a d¯oa.n chu.o.ng tr`ınh minh ho.a t´ınh ma trˆa.n lu˜ y th` u.a cu˙’a ma trˆa.n tro.ng lu.o..ng W. void Hetdetniemi() { int i, j, k, t; int Old[MAXVERTICES][MAXVERTICES], New[MAXVERTICES][MAXVERTICES]; Boolean Flag; for (i = 1; i
  18. if (Flag == TRUE) break; } } X´ ac d ¯u.` ¯i.nh d o.ng d ´n nhˆ ¯i ngˇ a a´t Bˆay gi`o. ta t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` u. v1 d¯ˆe´n v7 (d¯oˆ. d`ai 70). Ta c´o (4) (3) w14 = w1k ⊕ wk7 v´o.i k n`ao d¯o´. Nhu.ng c´ac phˆ `an tu˙’. w1k (3) ta.o th`anh vector h`ang (0, 30, 55, 30, 60, 50, 70, 60, 40) `an tu˙’. wk7 ta.o th`anh vector cˆo.t v`a c´ac phˆ (∞, ∞, ∞, ∞, 25, 20, 0, 25, ∞). V`ı gi´a tri. nho˙’ nhˆa´t d¯a.t d¯u.o..c ta.i k = 6 u ´.ng v´o.i 70 = 50 + 20 (v`a k = 7) nˆen d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` . u v1 d¯ˆe´n v7 s˜e d¯i qua nhiˆ `eu nhˆa´t ba cung t` u. v1 d¯ˆe´n v6 v`a kˆe´t th´ uc v´o.i cung d¯oˆ. d`ai 20 t`u. v6 d¯ˆe´n v7 . (Thˆa.t ra, do gi´a tri. nho˙’ nhˆa´t c˜ ung d¯a.t d¯u.o..c ta.i k = 7 (´ u.ng v´o.i 70 + 0) nˆen `on ta.i d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` tˆ u. v1 d¯ˆe´n v7 v´o.i tˆo˙’ng sˆo´ cung d¯i qua khˆong vu.o..t qu´a ba). Tiˆe´p d¯ˆe´n ta t`ım cung tru.´o.c khi d¯ˆe´n d¯ı˙’nh v6 . Ch´ (4) uy´ rˇ`a ng w16 = 70 − 20 = 50. C´ac `an tu˙’. wk6 ta.o th`anh vector cˆo.t phˆ (∞, ∞, ∞, 20, ∞, 0, 20, ∞, 20). Lˆ`an n`ay gi´a tri. nho˙’ nhˆa´t d¯a.t ta.i k = 4 (´u.ng v´o.i 50 = 30 + 20) nˆen d¯u.`o.ng d¯i ngˇa´n nhˆa´t d¯ˆo. d`ai 50 t` . u v1 d¯ˆe´n v6 kˆe´t th´ . uc v´o i cung (v4 , v6 ) d¯ˆo. d`ai 20. Cuˆo´i c` ung, c´ac phˆ `an tu˙’. wk4 ta.o th`anh vector cˆo.t (30, 40, 50, 0, 30, 20, ∞, ∞, ∞), v`a gi´a tri. nho˙’ nhˆa´t d¯a.t ta.i k = 1 hoˇa.c k = 4 (´ u.ng v´o.i 30 + 0 hoˇa.c 0 + 30) nˆen tˆ `on ta.i cung . . . u v1 d¯ˆe´n v4 . Vˆa.y d¯u `o ng d¯i ngˇa´n nhˆa´t t` d¯oˆ. d`ai 30 t` . u v1 d¯ˆe´n v7 l`a v1 , v4 , v6 , v7 (c´ac cung c´o d¯oˆ. d`ai 30, 20, 20). Do d¯´o thuˆa.t to´an Hedetniemi cho mˆo.t minh ho.a h`ınh ho.c trong mˆo˜i bu.´o.c lˇa.p, v`a su˙’. du.ng c´ac ma trˆa.n c´o thˆe˙’ phu.c hˆ `oi d¯u.o..c d¯u.`o.ng d¯i ngˇa´n nhˆa´t. Nhu. vˆa.y, ch´ `an thˆem ung ta cˆ . mˆo.t ma trˆa.n P lu u tr˜ u thˆong tin cu˙’a c´ac d¯u `o ng d¯i ngˇa´n nhˆa´t. Ma trˆa.n n`ay s˜e d¯u.o..c cˆa.p . . . nhˆa.t trong mˆo˜i bu.´o.c lˇa.p khi t´ınh W k t` u. W k−1 . 92 http://www.ebook.edu.vn
  19. 3.3.2 Thuˆ an Floyd (tru.` a.t to´ o.ng ho..p ma trˆ a.n tro.ng lu.o..ng tu` yy´) Thuˆa.t to´an du.´o.i d¯aˆy d¯u.o..c d¯u.a ra lˆ `an d¯`ˆau tiˆen bo˙’.i Floyd [25] v`a d¯u.o..c l`am mi.n ho.n bo˙’.i Murchland [46]. Thuˆ a.t to´ an Floyd 1. [Kho˙’.i ta.o] D - ˇa.t k := 0. 2. k := k + 1. 3. [Bu.´o.c lˇa.p] V´o.i mo.i i 6= k sao cho wik 6= ∞ v`a v´o.i mo.i j 6= k sao cho wkj 6= ∞, thu..c hiˆe.n ph´ep g´an wij := min{wij , (wik + wkj )}. (3.3) - iˆ 4. [D `eu kiˆe.n kˆe´t th´ uc] (a) Nˆe´u tˆ `on ta.i ma.ch v´o.i d¯ˆo. `on ta.i chı˙’ sˆo´ i sao cho wii < 0 th`ı tˆ d`ai ˆam ch´ u.a d¯ı˙’nh vi . B`ai to´an vˆo nghiˆe.m; thuˆa.t to´an d` u.ng. (b) Nˆe´u wii ≥ 0 v´o.i mo.i i = 1, 2, . . . , n, v`a k = n, b`ai to´an c´o l`o.i gia˙’i: ma trˆa.n wij cho d¯ˆo. d`ai d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u. vi d¯ˆe´n vj . Thuˆa.t to´an d` u.ng. (c) Nˆe´u wii ≥ 0 v´o.i mo.i i = 1, 2, . . . , n, nhu.ng k < n, chuyˆe˙’n sang Bu.´o.c 2. Ch´u.ng minh t´ınh d¯u´ng d¯ˇa´n cu˙’a thuˆa.t to´an Floyd l`a ho`an to`an d¯o.n gia˙’n [35], [25] v`a d`anh cho ngu `o i d¯o.c. Ph´ep to´an co. ba˙’n cu˙’a Phu.o.ng tr`ınh 3.3 trong thuˆa.t to´an n`ay go.i l`a . . ´.ng du.ng trong nh˜ `eu u ph´ep to´an bˆo. ba v`a c´o nhiˆ u.ng b`ai to´an tu.o.ng tu.. b`ai to´an t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t (xem [14], [30]). C´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t c´o thˆe˙’ nhˆa.n d¯u.o..c d¯`ˆong th`o.i c` ung v´o.i c´ac d¯oˆ. d`ai d¯u.`o.ng d¯i ngˇa´n nhˆa´t bˇ`a ng c´ach su˙’. du.ng quan hˆe. d¯ˆe. qui tu.o.ng tu.. Phu.o.ng tr`ınh 3.2. Bˇa` ng c´ach ´ap du.ng co. chˆe´ cu˙’a Hu [35] d¯ˆe˙’ lu.u gi˜ u. thˆong tin c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t c` ung v´o.i d¯oˆ. d`ai cu˙’a n´o. Cu. thˆe˙’ l`a d¯u a v`ao ma trˆa.n vuˆong cˆa´p n : P := [θij ]; v`a biˆe´n d¯ˆo˙’i n´o d¯`oˆng th`o.i v´o.i viˆe.c . biˆe´n d¯ˆo˙’i ma trˆa.n W. Phˆ `an tu˙’. θij cu˙’a ma trˆa.n P s˜e chı˙’ ra d¯ı˙’nh d¯i tru.´o.c vj trong d¯u.`o.ng d¯i ngˇa´n nhˆa´t t` u vi d¯ˆe´n vj ; o˙’. bu.´o.c d¯`ˆau tiˆen ta g´an cho ma trˆa.n P c´ac gi´a tri. d¯`aˆu l`a θij := vi . v´o.i mo.i d¯ı˙’nh vi v`a vj . C`ung v´o.i viˆe.c biˆe´n d¯oˆ˙’i ma trˆa.n W theo Phu.o.ng tr`ınh 3.3 trong Bu.´o.c 3, ta biˆe´n d¯oˆ˙’i P theo quy tˇa´c ( θkj nˆe´u (wik + wkj ) < wij , θij := θij nˆe´u ngu.o..c la.i. uc thuˆa.t to´an, ma trˆa.n P thu d¯u.o..c s˜e gi´ Kˆe´t th´ up cho ta viˆe.c t`ım c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t. Chˇa˙’ng ha.n d¯u.`o.ng d¯i ngˇa´n nhˆa´t gi˜ u.a hai d¯ı˙’nh vi v`a vj l`a vi , v ν , . . . , v γ , v β , v α , v j 93 http://www.ebook.edu.vn
  20. trong d¯o´ vα = θij , vβ = θiα , vγ = θiβ , ..., cho d¯ˆe´n khi vi = θiν . Cˆ`an ch´uy ´ o˙’. d¯ˆay l`a nˆe´u tˆa´t ca˙’ c´ac gi´a tri. wii d¯u.o..c kho˙’.i ta.o bˇ`a ng ∞ (thay cho bˇa` ng 0) l´uc xuˆa´t ph´at thuˆa.t to´an, th`ı c´ac gi´a tri. cuˆo´i c` ung cu˙’a wii l`a d¯ˆo. d`ai cu˙’a ma.ch ngˇa´n nhˆa´t ´ xuˆa t ph´at t` . ˙ ’ u d¯ınh vi . Ngo`ai ra c˜ ˙ ’ ˜ ung c´o thˆe dˆe d`ang x´ac d¯i.nh ma.ch c´o d¯oˆ. d`ai ˆam khi wii < 0 du..a v`ao ma trˆa.n d¯u.`o.ng d¯i P. Thu˙’ tu.c Floyd() sau minh ho.a thuˆa.t to´an d¯a˜ tr`ınh b`ay. void Floyd() { byte i, j, k; AdjPointer Tempt; byte Pred[MAXVERTICES][MAXVERTICES]; int Weight[MAXVERTICES][MAXVERTICES], NewLabel; byte Start, Terminal; for (i = 1; i Length; Tempt = Tempt->Next; } } for (k = 1; k
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2