Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 8
lượt xem 1
download
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 8 có nội dung trình bày về giải thuật tìm kiếm trong đồ thị, biểu diễn các đồ thị, biểu diễn một đồ thị vô hướng, biểu diễn một đồ thị có hướng, tìm kiếm theo chiều rộng,... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 8
- 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 ° Bieåu dieãn ma traän keà caàn (V ) memory. 2 ° Ñoà thò thöa (sparse), |E |
- Bieåu dieãn moät ñoà thò voâ höôùng Moät ñoà thò voâ höôùng Bieåu dieãn Bieåu dieãn baèng moät danh saùch keà baèng moät ma traän keà 7.11.2004 Ch. 8: Elementary Graph Algorithms 4
- Bieåu dieãn moät ñoà thò coù höôùng Bieåu dieãn baèng Bieåu dieãn baèng moät Moät ñoà thò coù höôùng moät danh saùch keà ma traän keà 7.11.2004 Ch. 8: Elementary Graph Algorithms 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 (a) Q s 0 v w x y r s t u 1 0 (b) Q w r 1 1 1 v w x y r s t u 1 0 2 (c) Q r t x 1 2 1 2 2 v w x y 7.11.2004 Ch. 8: Elementary Graph Algorithms 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 (d) Q t x v 2 1 2 2 2 2 v w x y r s t u 1 0 2 3 (e) Q x v u 2 1 2 2 2 3 v w x y r s t u 1 0 2 3 (fø) Q v u y 2 1 2 3 2 3 3 v w x y 7.11.2004 Ch. 8: Elementary Graph Algorithms 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 (g) Q u y 2 1 2 3 3 3 v w x y r s t u 1 0 2 3 (h) Q y 2 1 2 3 3 v w x y r s t u 1 0 2 3 (i) Q 2 1 2 3 v w x y 7.11.2004 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 x v u 2 1 2 2 2 3 v w x y 7.11.2004 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 174 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 78 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 57 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 157 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 105 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây - Bùi Tiến Lên
68 p | 40 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 46 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn