T 蔚 NG QUAN H烏 H 渦 NG HÔNG IN QUANG
3.4.2. Phân lo衣i 8鵜nh tuy院n
Có nhi隠u cách phân lo衣i 8鵜nh tuy院n, có th吋 8逢a ra m瓜t s嘘 lo衣i 8鵜nh tuy院n nh逢 sau: § D詠a vào ch泳c n<ng thích nghi v噂i tr衣ng thái hi羽n th運i c栄a m衣ng 8吋 phân lo衣i thành: 8鵜nh tuy院n t nh và 8鵜nh tuy院n 8瓜ng
A鵜nh tuy院n t nh: v噂i 8鵜nh tuy院n t nh, 8逢運ng d磯n 8逢嬰c ch丑n tr逢噂c cho m厩i c員p ngu欝n –"8ích c栄a các node trong m衣ng. Các gi違i thu壱t 8鵜nh tuy院n chi phí t嘘i thi吋u có th吋"8逢嬰c s穎 d映ng. K院 ho衣ch 8鵜nh tuy院n t nh 8逢嬰c s穎 d映ng h亥u h院t các m衣ng truy隠n th嘘ng, trong k院 ho衣ch 8鵜nh tuy院n này ch栄 y院u v噂i m映c 8ích làm gi違m các h羽 th嘘ng chuy吋n m衣ch ph違i 8i qua v噂i yêu c亥u k院t n嘘i 8逢運ng dài. K thu壱t 8鵜nh tuy院n t nh b瓜c l瓜 m瓜t s嘘 nh逢嬰c 8k吋m nh逢: quy院t 8鵜nh 8鵜nh tuy院n t nh không d詠a trên s詠"8ánh giá l逢u n逢嬰ng và topo m衣ng hi羽n th運i. Các b瓜" 8鵜nh tuy院n không phát hi羽n ra các b瓜" 8鵜nh tuy院n m噂i, chúng ch雨 có th吋 chuy吋n thông tin 8院n t噂i các các b瓜"8鵜nh tuy院n 8逢嬰c ch雨 8鵜nh tr逢噂c c栄a nhà qu違n lí m衣ng.
A鵜nh tuy院n 8瓜ng: 8鵜nh tuy院n 8瓜ng l詠a ch丑n tuy院n d詠a trên thông tin tr衣ng thái hi羽n th運i c栄a m衣ng. Thông tin tr衣ng thái có th吋"8o ho員c d詠"8oán và tuy院n 8逢運ng có th吋 thay 8鰻i khi topo m衣ng thay 8鰻i ho員c l逢u l逢嬰ng m衣ng thay 8鰻i. A鵜nh tuy院n 8瓜ng th吋 hi羽n tính linh ho衣t và d宇 dàng m荏 r瓜ng m衣ng.
§ D詠a vào ph衣m vi 8鵜nh tuy院n, ta phân lo衣i thành: 8鵜nh tuy院n trong và 8鵜nh tuy院n ngoài.
A鵜nh tuy院n trong: 8鵜nh tuy院n x違y ra bên trong m瓜t h羽 th嘘ng 8瓜c l壱p (AS – Autonomous System), các giao th泳c th逢運ng dùng là RIP (Router Information
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
Protocol), IGRP (Interior Gateway Routing Protocol), OSPF (Open Shortest Path First), EIGRP (Enhanced IGRP),…
A鵜nh tuy院n ngoài: 8鵜nh tuy院n x違y ra gi英a các h羽 th嘘ng 8瓜c l壱p (AS), liên quan t噂i d鵜ch v映 c栄a nhà cung c医p m衣ng s穎 d映ng giao th泳c 8鵜nh tuy院n ngoài r瓜ng và ph泳c t衣p. Giao th泳c th逢運ng dùng là BGP (Border Gateway Protocol).
3.4.3. Lí thuy院t 8欝 th鵜
Trong toán h丑c và tin h丑c, 8欝 th鵜 là 8嘘i t逢嬰ng nghiên c泳u c挨 b違n c栄a lí thuy院t 8欝 th鵜. M瓜t cách không chính th泳c, 8欝 th鵜 là m瓜t t壱p các 8嘘i t逢嬰ng g丑i là 8雨nh n嘘i v噂i nhau b荏i các c衣nh. Thông th逢運ng 8欝 th鵜 th逢運ng 8逢嬰c v胤 d逢噂i d衣ng t壱p các 8k吋m *8雨nh, nút) n嘘i v噂i nhau b荏i các 8q衣n th鰯ng (c衣nh). Tu theo 泳ng d映ng mà m瓜t s嘘 c衣nh có th吋 có h逢噂ng.
Hình 3.3: Lí thuy院t 8欝 th鵜
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
Có 3 lo衣i 8欝 th鵜: 8欝 th鵜 có h逢噂ng, 8欝 th鵜 vô h逢噂ng và 8欝 th鵜 h厩n h嬰p.
3.4.3.1. A欝 th鵜 vô h逢噂ng.
A欝 th鵜 vô h逢噂ng ho員c 8欝 th鵜 G là m瓜t c員p có th泳 t詠 (order pair) G=(V,E), trong 8ó:
§ V là t壱p các 8雨nh ho員c nút.
§ E là t壱p các c員p không th泳 t詠 ch泳a các 8雨nh phân bi羽t, 8逢嬰c g丑i là c衣nh. Hai 8雨nh thu瓜c m瓜t c衣nh 8逢嬰c g丑i là các 8雨nh 8亥u cu嘘i c栄a c衣nh 8ó.
3.4.3.2.A欝 th鵜 có h逢噂ng.
A欝 th鵜 có h逢噂ng G là m瓜t c員p có th泳 t詠 G=(V,A), trong 8ó: § V là t壱p các nút ho員c 8雨nh.
§ A là t壱p các c衣nh có th泳 t詠 ch泳a các 8雨nh, 8逢嬰c g丑i là các c衣nh có h逢噂ng ho員c cung.
Hình 3.5: A欝 th鵜 có h逢噂ng Hình 3.4:A欝 th鵜 vô h逢噂ng
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
M瓜t c衣nh e=(x,y) 8逢嬰c coi là có h逢噂ng t瑛 x 8院n y, x 8逢嬰c g丑i là 8i吋m 8亥u/g嘘c và y 8逢嬰c coi là 8i吋m cu嘘i/ng丑n c栄a c衣nh.
T瑛"8ó ta phân lo衣i ra: 8欝 th鵜"8挨n và 8a 8欝 th鵜.
v A欝 th鵜"8挨n: là 8欝 th鵜 mà gi英a hai 8雨nh ch雨 có t嘘i 8a m瓜t c衣nh. v Aa 8欝 th鵜: là 8欝 th鵜 mà gi英a hai 8雨nh có th吋 có nhi隠u h挨n m瓜t c衣nh.
Aa 8欝 th鵜 có h逢噂ng là m瓜t 8欝 th鵜 có h逢噂ng mà trong 8ó n院u x và y là hai 8雨nh thì 8欝 th鵜"8逢嬰c phép có c違 hai cung (x,y) và (y,x). A欝 th鵜"8挨n có h逢噂ng là m瓜t 8欝 th鵜 có j逢噂ng, trong 8ó, n院u x và y là hai 8雨nh thì8欝 th鵜 ch雨"8逢嬰c phép có t嘘i 8a m瓜t trong hai cung (x,y) và (y,x).
3.4.3.3. A欝 th鵜 h厩n h嬰p
A欝 th鵜 h厩n h嬰p G là b瓜 ba có th泳 t詠 G=(V,E,A) v噂i V,E,A 8逢嬰c 8鵜nh ngh a nh逢 trên.
3.4.3.4. Ví d映
V噂i hình trên, ta có các giá tr鵜 sau: - V={1,2,3,4,5,6}
- E={{1,2},{1,5},{2,3},{2,5},{3,4},{4,5},{4,6}}
Aôi khi thông tin n嘘i t瑛"8雨nh 1 8院n 8雨nh 2 8逢嬰c kí hi羽u là 1~2.
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
Bài toán 8鵜nh tuy院n gán b逢噂c sóng có liên h羽 ch員t ch胤 v噂i bài toán tô màu cho các nút trong 8欝 th鵜. Bài toán c栄a chúng ta là tô màu cho các nút thu瓜c G sao cho hai node k院 c壱n nhau ph違i mang màu khác nhau th吋 hi羽n m厩i tr衣ng thái c栄a node.
3.4.4. Các thu壱t toán c挨 b違n trong 8鵜nh tuy院n
Các m衣ng chuy吋n m衣ch gói và internet d詠a trên quy院t 8鵜nh 8鵜nh tuy院n c栄a nó t瑛 các tiêu chí t嘘i thi吋u. 雲"8ây ta xét 8院n chi phí tuy院n 8逢嬰c s穎 d映ng nh逢 tham s嘘 ngõ vào c栄a thu壱t toán 8鵜nh tuy院n chi phí t嘘i thi吋u mà có th吋 phát bi吋u 8挨n gi違n nh逢 sau:
Cho m瓜t m衣ng g欝m các node 8逢嬰c n嘘i b荏i các tuy院n song công, trong 8ó, m厩i tuy院n có m瓜t chi phí 8逢嬰c gán cho m厩i h逢噂ng, 8鵜nh ngh a chi phí c栄a 8逢運ng d磯n gi英a hai node là t鰻ng chi phí c栄a các tuy院n h嬰p thành 8逢運ng d磯n. V噂i m厩i c員p node, tìm 8逢運ng d磯n v噂i chi phí t嘘i thi吋u.
H亥u h院t các thu壱t toán chi phí t嘘i thi吋u 8ang s穎 d映ng trong các m衣ng chuy吋n m衣ch gói và internet là Dijkstra ho員c Bellman-Ford. Ta s胤 xét hai thu壱t toán này d逢噂i 8ây.
3.4.4.1. Thu壱t toán tr衣ng thái liên k院t LSA
Trong thu壱t toán tr衣ng thái liên k院t, các node m衣ng qu違ng bá giá tr鵜 liên k院t c栄a nó v噂i các node xung quanh t噂i các node khác. Sau khi qu違ng bá, t医t c違 các node 8隠u bi院t rõ topo m衣ng và thu壱t toán s穎 d映ng 8吋 tính toán con 8逢運ng ng逸n nh医t t噂i node 8ích là thu壱t toán Dijkstra.
Thu壱t toán Dijkstra, mang tên c栄a nhà khoa h丑c máy tính ng逢運i Hà Lan Edsger Dijkstra, là m瓜t thu壱t toán gi違i quy院t bài toán tìm8逢運ng 8i ng逸n nh医t trong m瓜t 8欝 th鵜 có h逢噂ng không có c衣nh mang tr丑ng s嘘 âm.
3.4.4.1.1. Bài toán
Cho m瓜t 8欝 th鵜 có h逢噂ng G=(V,E), m瓜t hàm tr丑ng s嘘 w: Es [0, ı) và m瓜t 8雨nh ngu欝n s. C亥n tính toán 8逢嬰c 8逢運ng 8i ng逸n nh医t t瑛"8雨nh ngu欝n s 8院n m厩i 8雨nh c栄a 8欝 th鵜. Ví d映: chúng ta dùng các 8雨nh c栄a 8欝 th鵜"8吋 mô hình các thành ph嘘 và các c衣nh 8吋 mô hình các 8逢運ng n嘘i gi英a chúng. Khi 8ó tr丑ng s嘘 các c衣nh có th吋 xem nh逢"8瓜 dài c栄a các con 8逢運ng hay có th吋 là chi phí (và do 8ó là không âm). Chúng ta c亥n v壱n chuy吋n t瑛 thành ph嘘 s 8院n thành ph嘘 t. Thu壱t toán Dijkstra s胤 giúp ch雨 ra 8逢運ng 8i ng逸n nh医t chúng ta có th吋"8i.
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
Tr丑ng s嘘 không âm c栄a các c衣nh c栄a 8欝 th鵜 mang tính t鰻ng quát h挨n kho違ng cách hình h丑c gi英a hai 8雨nh 8亥u mút c栄a chúng. Ví d映, v噂i 3 8雨nh A, B, C 8逢運ng 8i A-B-C có th吋 ng逸n h挨n so v噂i 8逢運ng 8i tr詠c ti院p A-C.
3.4.4.1.2. Thu壱t toán
Thu壱t toán Dijkstra có th吋 mô t違 nh逢 sau: Ta qu違n lý m瓜t t壱p h嬰p 8瓜ngS. Ban 8亥uS={s}.
V噂i m厩i 8雨nh v, chúng ta qu違n lý m瓜t nhãnd[v] là 8瓜 dài bé nh医t trong các 8逢運ng 8i t瑛 ngu欝n s 8院n m瓜t 8雨nh u nào 8ó thu瓜cS, r欝i 8i theo c衣nh n嘘i u-v.
Trong các 8雨nh ngoàiS, chúng ta ch丑n 8雨nh u có nhãn d[u] bé nh医t, b鰻 sung vào t壱p S. T壱p S 8逢嬰c m荏 r瓜ng thêm m瓜t 8雨nh, khi 8ó chúng ta c亥n c壱p nh壱t l衣i các nhãn
d cho phù h嬰p v噂i 8鵜nh ngh a.
Thu壱t toán k院t thúc khi toàn b瓜 các 8雨nh 8ã n茨m trong t壱p S, ho員c n院u ch雨 c亥n tìm 8逢運ng"8i ng逸n nh医t 8院n m瓜t 8雨nh 8ích t, thì chúng ta d瑛ng l衣i khi 8雨nh t 8逢嬰c b鰻 sung vào t壱p S.
Tính ch医t không âm c栄a tr丑ng s嘘 các c衣nh liên quan ch員t ch胤"8院n tính 8úng 8逸n c栄a thu壱t toán. Khi ch泳ng minh tính 8úng 8逸n c栄a thu壱t toán, chúng ta ph違i dùng 8院n tính ch医t này.
3.4.4.1.3. Ch泳ng minh
Ý t逢荏ng 8逢嬰c ch泳ng minh nh逢 sau:
Chúng ta s胤 ch雨 ra, khi m瓜t 8雨nh v 8逢嬰c b鰻 sung vào t壱p S, thì d[v] là giá tr鵜 c栄a 8逢運ng 8i ng逸n nh医t t瑛 ngu欝n s 8院n v.
Theo 8鵜nh ngh a nhãn d,d[v] là giá tr鵜 c栄a 8逢運ng 8i ng逸n nh医t trong các 8逢運ng 8i t瑛 ngu欝n s, qua các 8雨nh trong S, r欝i theo m瓜t c衣nh n嘘i tr詠c ti院p u-v 8院n v.
Gi違 s穎 t欝n t衣i m瓜t 8逢運ng 8i t瑛 s 8院n v có giá tr鵜 bé h挨nd[v]. Nh逢 v壱y trong 8逢運ng 8i, t欝n t衣i 8雨nh gi英a s và v không thu瓜c S. Ch丑n w là 8雨nh 8亥u tiên nh逢 v壱y.
A逢運ng 8i c栄a ta có d衣ng s - ... - w - ... - v. Nh逢ng do tr丑ng s嘘 các c衣nh không âm nên 8o衣n s - ... - w có 8瓜 dài không l噂n h挨n h挨n toàn b瓜"8逢運ng 8i, và do 8ó có giá tr鵜 bé h挨nd[v]. M員t khác, do cách ch丑n w c栄a ta, nên 8瓜 dài c栄a 8q衣n s - ... - w chính là
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
d[w]. Nh逢 v壱yd[w] < d[v], trái v噂i cách ch丑n 8雨nh v. Aây là 8i隠u mâu thu磯n. V壱y 8i隠u gi違 s穎 c栄a ta là sai. Ta có 8i隠u ph違i ch泳ng minh.
3.4.4.1.4. Các b逢噂c th詠c hi羽n
Thu壱t toán Dijkstra dùng trong giao th泳c 8鵜nh tuy院n 0SPF 8i qua các b逢噂c sau: 1. B瓜"8鵜nh tuy院n xây d詠ng 8欝 th鵜 c栄a m衣ng và xác 8鵜nh các node ngu欝n –"8ích, ví d映 nh逢 V1và V2. Sau 8ó nó xây d詠ng m瓜t ma tr壱n, 8逢嬰c g丑i là ma tr壱n li隠n k隠. Ma tr壱n này th吋 hi羽n tr丑ng s嘘 c栄a các c衣nh, ví d映 nh逢 [i,j] là tr丑ng s嘘 c栄a c衣nh n嘘i Vi v噂i Vj. N院u không có k院t n嘘i tr詠c ti院p gi英a Vi và Vj, tr丑ng s嘘 này 8逢嬰c xác 8鵜nh là vô cùng. 2. B瓜"8鵜nh tuy院n xây d詠ng b違ng tr衣ng thái cho t医t c違 các node trong m衣ng. B違ng này g欝m các ph亥n:
v Chi隠u dài: th吋 hi羽n 8瓜 l噂n c栄a tr丑ng s嘘 t瑛 ngu欝n 8院n node 8ó.
v Nhãn c栄a node: th吋 hi羽n tr衣ng thái c栄a node, m厩i m瓜t node có th吋 có m瓜t trong hai tr衣ng thái là c嘘"8鵜nh hay t衣m th運i.
3. B瓜"8鵜nh tuy院n gán thông s嘘 ban 8亥u c栄a b違ng tr衣ng thái cho t医t c違 các node và thi院t l壱p chi隠u dài c栄a chúng là vô cùng và nhãn c栄a chúng là t衣m th運i.
4. B瓜"8鵜nh tuy院n thi院t l壱p m瓜t T-node. Ví d映 nh逢 V1 là node ngu欝n T-node, b瓜"8鵜nh tuy院n s胤 chuy吋n nhãn c栄a V1 sang c嘘"8鵜nh. Khi m瓜t nhãn chuy吋n sang c嘘"8鵜nh, nó s胤 không thay 8鰻i n英a.
5. B瓜"8鵜nh tuy院n s胤 c壱p nh壱t b違ng thái tr衣ng thái c栄a t医t c違 các node t衣m th運i mà các node này liên k院t v噂i node ngu欝n T-node.
6. B瓜"8鵜nh tuy院n nhìn vào các node t衣m th運i và ch丑n m瓜t node duy nh医t mà node này có tr丑ng s嘘"8院n V1là nh臼 nh医t. Node này sau 8ó tr荏 thàn8 node 8ích T-node.
7. N院u node này không ph違i là V2 thì b瓜"8鵜nh tuy院n tr荏 l衣i b逢噂c 5.
8. N院u node này là V2 thì b瓜"8鵜nh tuy院n tách node tr逢噂c 8ó c栄a nó kh臼i b違ng tr衣ng thái và c泳 th詠c hi羽n 8k隠u này cho 8院n khi 8院n node V1. M瓜t l逢嬰t các node ch雨 ra tuy院n t嘘i逢u nh医t t瑛 V1"8院n V2.
3.4.4.1.5. Ví d映 v隠 thu壱t toán Dijkstra
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
D逢噂c 1: Theo hình sau, node A làm node ngu欝n T-node, nhãn c栄a nó chuy吋n sang c嘘"8鵜nh và 8逢嬰c 8ánh d医u b茨ng
D逢噂c 2: Trong b逢噂c này, ta s胤 th医y 8逢嬰c b違ng tr衣ng thái c栄a các node n嘘i tr詠c ti院p v噂i node A là c員p node (B,C). A逢運ng t瑛 A 8院n B là ng逸n nh医t (có tr丑ng s嘘 nh臼 nh医t), do 8ó nó 8逢嬰c ch丑n làm T-node và sau 8ó nhãn c栄a nó chuy吋n sang c嘘"8鵜nh.
D逢噂c 3: gi嘘ng nh逢 b逢噂c 2, d詠a trên b違ng tr衣ng thái c栄a các node k院t n嘘i tr詠c ti院p v噂i node B là c員p node (D,E).T逢挨ng t詠 nh逢 th院, node D k院t n嘘i v噂i node B là 8逢運ng ng逸n nh医t (mang tr丑ng s嘘 2 nên nh臼 h挨n tr丑ng s嘘 c栄a c衣nh BE), do 8ó node D 8逢嬰c làm T-node, và sau 8ó nhãn c栄a nó chuy吋n sang c嘘"8鵜nh.
D逢噂c 4: trong b逢噂c này chúng ta không có node t衣m th運i nào, vì th院 ta ch雨 có th吋 ch丑n T-node ti院p theo. Node E 8逢嬰c ch丑n vào 8欝 th鵜, c衣nh DE có tr丑ng s嘘 nh臼 nh医t.
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
D逢噂c 5: Node E là node 8ích nên chúng ta k院t thúc quá trình8鵜nh tuy院n này.
3.4.4.2. Thu壱t toán 8鵜nh tuy院n vect挨 kho違ng cách DVA
Là m瓜t thu壱t toán 8鵜nh tuy院n t逢挨ng thích nh茨m tính toán con 8逢運ng ng逸n nh医t gi英a các c員p node trong m衣ng, 8逢嬰c bi院t 8院n nh逢 là thu壱t toán Bellman-Ford. Các node m衣ng th詠c hi羽n quá trình trao8鰻i thông tin trên c挨 s荏 c栄a 8鵜a ch雨"8ích, node k院 ti院p, và con 8u運ng ng逸n nh医t t噂i 8ích. M厩i node trong m衣ng có b違ng 8鵜nh tuy院n cho th医y 8逢運ng t嘘t nh医t 8院n m丑i 8ích và m厩i node ch雨 g荏i b違ng 8鵜nh tuy院n c栄a nó 8院n các node láng gi隠ng.
V医n 8隠 t欝n t衣i c栄a thu壱t toán DV là nó th詠c hi羽n 8院m 8院n vô cùng khi có m瓜t k院t n嘘i b鵜 h臼ng. V医n 8隠 này có th吋 th医y rõ荏 ví d映 sau:
V噂i hình 3.8 cho th医y có duy nh医t m瓜t tuy院n gi英a node A 8院n nh英ng node khác. Gi違 s穎 tr丑ng s嘘 trên m厩i c衣nh 8隠u b茨ng 1, m厩i node (Router) 8隠u ch泳a b違ng 8鵜nh tuy院n. Bây gi運, n院u ta c逸t k院t n嘘i gi英a A và B thì node B s胤 hi羽u ch雨nh l衣i b違ng 8鵜nh tuy院n c栄a nó. Sau kho違ng th運i gian, các node trao 8鰻i thông tin b違ng 8鵜nh tuy院n và B nh壱n b違ng 8鵜nh tuy院n c栄a C. Khi C không bi院t gì x違y ra v噂i k院t n嘘i gi英a k院t n嘘i gi英a A và B, nó s胤 cho r茨ng có m瓜t tuy院n k院t n嘘i v噂i tr丑ng s嘘 là 2 (1 cho k院t n嘘i C-B và 1 cho k院t n嘘i B-A), nó không bi院t r茨ng k院t n嘘i A-B 8ã b鵜 c逸t. B nh壱n b違ng 8鵜nh tuy院n này và ngh r茨ng có m瓜t tuy院n khác gi英a C và A, vì th院 nó s穎a l衣i b違ng 8鵜nh tuy院n và thay 8鰻i giá tr鵜 tr丑ng s嘘 c栄a k院t n嘘i B-A v隠 3 (1 cho k院t n嘘i B-C, 2 cho k院t C-A). M瓜t
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
l亥n n英a các node thay 8鰻i b違ng 8鵜nh tuy院n c栄a nó. Khi C nh壱n b違ng 8鵜nh tuy院n c栄a B, nó th医y r茨ng b違ng B thay 8鰻i tr丑ng s嘘 c栄a tuy院n B-A t瑛 1 thành 3, vì th院 nó c壱p nh壱t b違ng 8鵜nh tuy院n và thay 8鰻i tr丑ng s嘘 c栄a tuy院n C-A thành 4 (1 cho k院t n嘘i C-B và 3 cho k院t n嘘i B-A). Quá trình này c泳 x違y ra mi院t cho 8院n khi t医t c違 các node tìm ra tr丑ng s嘘 c栄a tuy院n 8院n A là vô cùng.
Thu壱t toán Bellman-Ford là m瓜t thu壱t toán tính các 8逢運ng 8i ng逸n nh医t trong m瓜t 8欝 th鵜 có h逢噂ng có tr丑ng s嘘 (trong 8ó m瓜t s嘘 cung có th吋 có tr丑ng s嘘 âm).Thu壱t toán Dijksta 8òi h臼i tr丑ng s嘘 c栄a các cung ph違i có giá tr鵜 không âm. Do 8ó thu壱t toán Bellman-Ford th逢運ng dùng khi có các cung v噂i tr丑ng s嘘 âm.
3.4.4.2.1. Thu壱t toán
Gi違i thu壱t Bellman-Ford có th吋 phát bi吋u: Tìm các 8逢運ng d磯n ng逸n nh医t t瑛 node ngu欝n cho tr逢噂c v噂i ràng bu瓜c ch雨 ch泳a m瓜t tuy院n, sau 8ó tìm 8逢運ng d磯n ng逸n nh医t v噂i ràng bu瓜c ch雨 ch泳a t嘘i 8a hai tuy院n và c泳 th院 ti院p t映c. N院u 8逢運ng d磯n tr逢噂c 8ó là ng逸n nh医t thì8吋 l衣i còn không thì c壱p nh壱t 8逢運ng d磯n m噂i. Thu壱t toán"8逢嬰c ti院n hành qua các t亥ng 8逢嬰c bi吋u di宇n nh逢 sau:
function BellmanFord (danh_sách _8雨nh, danh_sách_cung, ngu欝n)
// hàm yêu c亥u 8欝 th鵜"8逢a vào d逢噂i d衣ng m瓜t danh sách 8雨nh, m瓜t danh cung // hàm tính các giá tr鵜 kho違ng_cách và 8雨nh_li隠n_tr逢噂c c栄a các 8雨nh, sao cho các //giá tr鵜"8雨nh_li隠n_ tr逢噂c s胤 l逢u l衣i các 8逢運ng 8i ng逸n nh医t.
// b逢噂c 1: kh荏i t衣o 8欝 th鵜
for each vin danh_sách_8雨nh:
if vis ngu欝nthenkho違ng_cách (v) := 0
elsekho違ng_cách (v) :=infinity
8雨nh_li隠n_tr逢噂c (v) :=null
// b逢噂c 2: k院t n衣p c衣nh
for ifrom 1to size (danh_sách_8雨nh) :
Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng
if kho違ng_cách (v) > kho違ng_cách (u) + tr丑ng_s嘘 (u, v) : kho違ng_cách (v) := kho違ng_cách (u) + tr丑ng_s嘘 (u, v)
8雨nh_li隠n_tr逢噂c (v) := u
// b逢噂c 3: ki吋m tra chu trình âm
for each (u, v) in danh_sách_cung :
if kho違ng_cách (v) > kho違ng_cách (u) + tr丑ng_s嘘 (u, v) :
errorÐA欝 th鵜 ch泳a chu trình có tr丑ng s嘘 âm”
3.4.4.2.2.Ch泳ng minh
Tính 8úng"8逸n c栄a thu壱t toán có th吋 ch泳ng minh b茨ng qui n衣p. Thu壱t toán có th吋