Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Hệ điều hành Giải thuật ch08_graphalgos [compatibility mode]...

Tài liệu Giải thuật ch08_graphalgos [compatibility mode]

.PDF
42
267
133

Mô tả:

Giaûi thuaät tìm kieám trong ñoà thò Bieåu dieãn caùc ñoà thò ª Hai caùch bieåu dieãn moät ñoà thò G = (V, E): – Bieåu dieãn danh saùch keà (adjacency list) ° maûng Adj goàm |V| danh saùch, 1 danh saùch cho moãi ñænh trong V. ° u  V, Adj[u] chöùa taát caû caùc ñænh v (hoaëc caùc con troû ñeán chuùng) sao cho (u, v)  E. – Nhaän xeùt ° Bieåu dieãn danh saùch keà caàn (V + E) memory. (Ñeå ñôn giaûn, kyù hieäu V vaø E thay vì |V| vaø |E|.) 7.11.2004 Ch. 8: Elementary Graph Algorithms 2 Bieåu dieãn caùc ñoà thò (tieáp) – Bieåu dieãn ma traän keà (adjacency matrix) ° Ñaùnh soá ñænh 1, 2,..., |V| ° A = (aij ), ma traän |V|  |V| aij = 1 neáu (i, j)  E 0 trong caùc tröôøng hôïp coøn laïi. – Nhaän xeùt 2 ° Bieåu dieãn ma traän keà caàn (V ) memory. 2 ° Ñoà thò thöa (sparse), |E | << |V| : neân duøng danh saùch keà . 2 ° ñoà thò ñaëc (dense), |E |  |V| : neân duøng ma traän keà . 7.11.2004 Ch. 8: Elementary Graph Algorithms 3 Bieåu dieãn moät ñoà thò voâ höôùng Moät ñoà thò voâ höôùng 7.11.2004 Bieåu dieãn baèng moät danh saùch keà Bieåu dieãn baèng moät ma traän keà Ch. 8: Elementary Graph Algorithms 4 Bieåu dieãn moät ñoà thò coù höôùng Moät ñoà thò coù höôùng 7.11.2004 Bieåu dieãn baèng moät danh saùch keà Ch. 8: Elementary Graph Algorithms Bieåu dieãn baèng moät ma traän keà 5 Tìm kieám theo chieàu roäng ª ª ª Tìm kieám theo chieàu roäng (breadth-first-search, BFS) Moät ñoà thò G = (V, E) – moät ñænh nguoàn s – bieåu dieãn baèng danh saùch keà Moãi ñænh u  V – color[u]: WHITE, GREY, BLACK – p[u]: con troû chæ ñeán ñænh cha meï (predecessor hay parent) cuûa u neáu coù. – d[u]: khoaûng caùch töø s ñeán u maø giaûi thuaät tính ñöôïc. first-in first-out queue Q – head[Q] – thao taùc ENQUEUE(Q, v) – thao taùc DEQUEUE(Q). 7.11.2004 Ch. 8: Elementary Graph Algorithms 6 Tìm kieám theo chieàu roäng (tieáp) BFS(G, s) 1 for each vertex u  V[G]  {s} 2 do color[u]  WHITE 3 d[u]   4 p[u]  NIL 5 color[s]  GRAY 6 d[s]  0 7 p[s]  NIL 7.11.2004 Ch. 8: Elementary Graph Algorithms 7 Tìm kieám theo chieàu roäng (tieáp) 8 Q  {s} 9 while Q   10 do u  head[Q] 11 for each v  Adj[u] 12 do if color[v] = WHITE 13 then color[v]  GRAY 14 d[v]  d[u] + 1 15 p[v]  u 16 ENQUEUE(Q, v) 17 DEQUEUE(Q) 18 color[u]  BLACK 7.11.2004 Ch. 8: Elementary Graph Algorithms 8 Thao taùc cuûa BFS leân moät ñoà thò voâ höôùng -- Ví duï r s t u  0   Q  v  w  x s t u 1 0   (b)  v 1 w  x s t u 1 0 2 1 1  y r  Q (c)  v 7.11.2004 w r  y r s 0 Q (a) 1 w 2 x  y Ch. 8: Elementary Graph Algorithms r t x 1 2 2 9 Thao taùc cuûa BFS leân moät ñoà thò voâ höôùng -- Ví duï (tieáp) r s t u 1 0 2  Q 2 v 1 w 2 x s t u 1 0 2 3 (e) 2 v 1 w 2 x  y r s t u 1 0 2 3 2 2 3 Q (fø) 2 v 7.11.2004 x v u  y r t x v 2 2 2 Q (d) 1 w 2 x 3 y Ch. 8: Elementary Graph Algorithms v u y 2 3 3 10 Thao taùc cuûa BFS leân moät ñoà thò voâ höôùng -- Ví duï (tieáp) r s t u 1 0 2 3 2 v 1 w 2 x s t 0 2 3 (h) 2 v 1 w 2 x s t u 1 0 2 3 3 y r 3 (i) Q 2 v 7.11.2004 y u 1 u y 3 3 3 y r Q Q (g) 1 w 2 x  3 y Ch. 8: Elementary Graph Algorithms 11 Phaân tích BFS ª Thôøi gian chaïy cuûa BFS laø O(V + E ) vì – moãi ñænh cuûa ñoà thò ñöôïc sôn traéng ñuùng moät laàn, do ñoù ° moãi ñænh ñöôïc enqueued nhieàu laém laø moät laàn (maøu ñænh  xaùm) vaø dequeued nhieàu laém laø moät laàn (maøu ñænh  ñen). Moãi thao taùc enqueue hay dequeue toán O(1) thôøi gian neân caùc thao taùc leân queue toán O(V) thôøi gian. ° Danh saùch keà cuûa moãi ñænh ñöôïc duyeät chæ khi ñænh ñöôïc dequeued neân noù ñöôïc duyeät nhieàu laém laø moät laàn. Vì chieàu daøi toång coäng cuûa caùc danh saùch keà laø (E) neân thôøi gian ñeå duyeät caùc danh saùch keà laø O(E). 7.11.2004 Ch. 8: Elementary Graph Algorithms 12 Ñöôøng ñi ngaén nhaát ª ª Ñònh nghóa Khoaûng caùch ñöôøng ñi ngaén nhaát (s, v) (shortest path distance) töø s ñeán v – laø soá caïnh toái thieåu laáy trong moïi ñöôøng ñi töø s ñeán v, neáu coù ñöôøng ñi töø s ñeán v. – laø  neáu khoâng coù ñöôøng ñi töø s ñeán v. Moät ñöôøng ñi ngaén nhaát (shortest path) töø s ñeán v laø moät ñöôøng ñi töø s ñeán v coù chieàu daøi laø (s, v). 7.11.2004 Ch. 8: Elementary Graph Algorithms 13 Ñöôøng ñi ngaén nhaát Lemma 23.1 ° G = (V, E) laø moät ñoà thò höõu höôùng hay voâ höôùng, ° moät ñænh s  V baát kyø  ñoái vôùi moät caïnh baát kyø (u, v)  E, ta coù (s, v)  (s, u) + 1. Chöùng minh u khi u ñeán ñöôïc töø s s v – Neáu u ñeán ñöôïc töø s thì v cuõng ñeán ñöôïc töø s. Ñöôøng ñi töø s ñeán v goàm moät ñöôøng ñi ngaén nhaát töø s ñeán u vaø caïnh (u,v) coù chieàu daøi laø (s, u) + 1. Dó nhieân laø (s, v)  (s, u) + 1. – Neáu u khoâng ñeán ñöôïc töø s thì (s, u) = , vaäy baát ñaúng thöùc cuõng ñuùng trong tröôøng hôïp naøy. 7.11.2004 Ch. 8: Elementary Graph Algorithms 14 Ñöôøng ñi ngaén nhaát Lemma 23.2 ° G = (V, E) laø moät ñoà thò höõu höôùng hay voâ höôùng. ° Chaïy BFS leân G töø moät ñænh nguoàn s.  khi BFS xong, coù d[v]  (s, v) taïi moïi ñænh v. Chöùng minh  “Inductive hypothesis”: vôùi moïi v  V, sau moãi laàn moät ñænh naøo ñoù ñöôïc ñöa vaøo queue thì d[v]  (s, v). – “Basis”: sau khi s ñöôïc ñöa vaøo Q. Kieåm tra  laø ñuùng. – “Inductive step”: xeùt moät ñænh traéng v ñöôïc tìm thaáy khi thaêm doø töø moät ñænh u. Töø  coù d[u]  (s, u). • d[v] = d[u] + 1, doøng 14 •  (s, u) + 1 •  (s, v), Lemma 23.1 • Sau ñoù v ñöôïc ñöa vaøo Q vaø d[v] khoâng thay ñoåi nöõa. Vaäy  ñöôïc duy trì. 7.11.2004 Ch. 8: Elementary Graph Algorithms 15 Ñöôøng ñi ngaén nhaát Lemma 23.3 ° chaïy BFS leân moät ñoà thò G = (V, E) ° trong khi thöïc thi BFS, queue Q chöùa caùc ñænh  v1 , v2 ,…, vr , vôùi v1 laø ñaàu vaø vr laø ñuoâi cuûa Q.  ° d[vr ]  d[v1] + 1, ° d[vi ]  d[vi +1 ], vôùi i = 1, 2,…, r  1. ª Ví duï 1 0 2 v1 ... vr 3 Q 2 v 7.11.2004 1 w 2 x  y x v u 2 2 3 Ch. 8: Elementary Graph Algorithms 16 Ñöôøng ñi ngaén nhaát Chöùng minh ° “Induction leân soá caùc thao taùc leân queue”  “Inductive hypothesis”: (xem Lemma) sau moãi thao taùc leân queue. – “Basis”: queue chæ chöùa s. Kieåm tra Lemma laø ñuùng. 7.11.2004 Ch. 8: Elementary Graph Algorithms 17 Ñöôøng ñi ngaén nhaát Chöùng minh (tieáp theo) – “Inductive step” ° Sau khi dequeue moät ñænh baát kyø. Kieåm tra Lemma laø ñuùng duøng inductive hypothesis: – dequeue v1 , ñaàu môùi cuûa queue laø v2 – d[vr]  d[v1] + 1  d[v2] + 1 – caùc baát ñaúng thöùc coøn laïi khoâng bò aûnh höôûng tôùi. ° Sau khi enqueue moät ñænh baát kyø. Kieåm tra Lemma laø ñuùng duøng inductive hypothesis – enqueue v, noù thaønh vr + 1 trong queue – xem code thaáy: caïnh (u, v) ñang ñöôïc thaêm doø vôùi u = v1, v1 laø ñaàu cuûa queue, töø ñoù • d[vr + 1] = d[v] = d[u] + 1 = d[v1] + 1, • d[vr ]  d[v1] + 1 = d[u] + 1 = d[v] = d[vr + 1] • caùc baát ñaúng thöùc coøn laïi khoâng bò aûnh höôûng tôùi. 7.11.2004 Ch. 8: Elementary Graph Algorithms 18 Ñöôøng ñi ngaén nhaát Ñònh lyù 23.4 Tính ñuùng ñaén (correctness) cuûa BFS ° G = (V, E) laø moät ñoà thò höõu höôùng hay voâ höôùng ° chaïy BFS leân G töø moät ñænh nguoàn s  trong khi BFS chaïy ° BFS tìm ra moïi ñænh cuûa G tôùi ñöôïc töø s ° khi BFS xong, d[v] = (s, v) cho moïi v  V ° ñoái vôùi moïi ñænh v  s tôùi ñöôïc töø s, moät trong caùc ñöôøng ñi ngaén nhaát töø s ñeán v laø ñöôøng ñi ngaén nhaát töø s ñeán p[v] theo sau laø caïnh (p[v], v). Chöùng minh ° Tröôøng hôïp ñænh v khoâng ñeán ñöôïc töø s: (a) d[v]  (s, v) =  (Lemma 23.2) (b) Doøng 14 chæ ñöôïc thöïc thi khi v coù d[v] < , do ñoù neáu khoâng ñeán ñöôïc v töø s thì d[v] =  vaø v seõ khoâng ñöôïc tìm thaáy. 7.11.2004 Ch. 8: Elementary Graph Algorithms 19 Ñöôøng ñi ngaén nhaát ª ª Chöùng minh (tieáp) Tröôøng hôïp ñænh v ñeán ñöôïc töø s: ñònh nghóa Vk = {v  V : (s, v) = k} – “Induction on k”. ° “Inductive hypothesis”: vôùi moïi v  Vk , trong khi thöïc thi BFS thì coù ñuùng moät thôøi ñieåm maø – v ñöôïc sôn xaùm – d[v] ñöôïc gaùn trò k – Neáu v  s thì p[v] ñöôïc gaùn trò u vôùi u  Vk 1 – v ñöôïc ñöa vaøo queue Q. ° “Basis”: k = 0, kieåm tra laø ñuùng ° “Inductive step” – Xeùt v  Vk baát kyø, k  1. – Coù u  Vk  1 sao cho: u laø head cuûa queue vaø (u, v) ñöôïc thaêm doø. Phaàn coøn laïi: ... 7.11.2004 Ch. 8: Elementary Graph Algorithms 20
- Xem thêm -

Tài liệu liên quan