Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 42 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
42
Dung lượng
326,5 KB
Nội dung
Giaỷi thuaọt tỡm kieỏm trong ủo thũ 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 2 Biểu diễn các đồ thò ª Hai cách biểu diễn một đồ thò G = (V, E): – Biểu diễn danh sách kề (adjacency list) ° mảng Adj gồm |V| danh sách, 1 danh sách cho mỗi đỉnh trong V. ° ∀u ∈ V, Adj[u] chứa tất cả các đỉnh v (hoặc các con trỏ đến chúng) sao cho (u, v) ∈ E. – Nhận xét ° Biểu diễn danh sách kề cần Θ(V + E) memory. (Để đơn giản, ký hiệu V và E thay vì |V| và |E|.) 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 3 Biểu diễn các đồ thò (tiếp) – Biểu diễn ma trận kề (adjacency matrix) ° Đánh số đỉnh 1, 2, , |V| ° A = (a ij ), ma trận |V| × |V| a ij = 1 nếu (i, j) ∈ E 0 trong các trường hợp còn lại. – Nhận xét ° Biểu diễn ma trận kề cần Θ(V 2 ) memory. ° Đồ thò thưa (sparse), |E | << |V| 2 : nên dùng danh sách kề . ° đồ thò đặc (dense), |E | ≈ |V| 2 : nên dùng ma trận kề . 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 4 Biểu diễn một đồ thò vô hướng Biểu diễn bằng một danh sách kề Biểu diễn bằng một ma trận kề Một đồ thò vô hướng 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 5 Biểu diễn một đồ thò có hướng Biểu diễn bằng một danh sách kề Biểu diễn bằng một ma trận kề Một đồ thò có hướng 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 6 Tìm kiếm theo chiều rộng Tìm kiếm theo chiều rộng (breadth-first-search, BFS) ª Một đồ thò G = (V, E) – một đỉnh nguồn s – biểu diễn bằng danh sách kề ª Mỗi đỉnh u ∈ V – color[u]: WHITE, GREY, BLACK – π[u]: con trỏ chỉ đến đỉnh cha mẹ (predecessor hay parent) của u nếu có. – d[u]: khoảng cách từ s đến u mà giải thuật tính được. ª first-in first-out queue Q – head[Q] – thao tác ENQUEUE(Q, v) – thao tác DEQUEUE(Q). 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 7 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 π[u] ← NIL 5 color[s] ← GRAY 6 d[s] ← 0 7 π[s] ← NIL 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 8 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 π[v] ← u 16 ENQUEUE(Q, v) 17 DEQUEUE(Q) 18 color[u] ← BLACK 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 9 Thao tác của BFS lên một đồ thò vô hướng Ví dụ ∞ 0 ∞ ∞ ∞ ∞ ∞ s ∞ 1 0 1 ∞ ∞ ∞ ∞ w ∞ 1 0 1 2 ∞ 2 ∞ ∞ (a) (b) (c) r r t x r s t u r s t u r s t u v w x y v w x y v w x y 1 1 1 2 2 0 Q Q Q 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 10 Thao tác của BFS lên một đồ thò vô hướng Ví dụ (tiếp) 1 0 1 2 ∞ 2 ∞ t 2 x (d) (e) (fø) v u v u y r s t u v w x y 2 2 3 2 3 3 2 2 2 1 0 1 2 3 2 ∞ 2 r s t u v w x y 1 0 1 2 3 2 3 2 r s t u v w x y Q x v Q Q [...]... f 8 (d) 9 e 14 2 8 10 9 4 a 10 11 14 11 8 8 b 2 7 h Ch 9: Cay khung nho i 1 7 c 4 6 g d 9 e 14 2 f 10 15 Thực thi giải thuật của Kruskal (tiếp) (e) 4 a 11 8 (g) 4 a h g 8 i 1 g 13.11.2004 9 f d (h) 9 10 4 a h i g 8 h Ch 9: Cay khung nho i 1 g 9 e 10 f 7 4 6 d 14 2 c 2 7 4 6 1 b 7 c 2 7 11 8 8 b 11 8 e f 4 a 10 14 2 (f) e 7 4 6 d 14 2 c 2 7 4 6 1 b h i 7 c 2 7 11 8 8 b d 9 e 14 2 10 f 16 Thực thi giải. .. giải thuật của Kruskal (tiếp) (i) 4 a 11 8 (k) 4 a h g 8 i 1 g 13.11.2004 9 f d (l) 9 10 4 a h i g 8 h Ch 9: Cay khung nho i 1 g 9 e 10 f 7 4 6 d 14 2 c 2 7 4 6 1 b 7 c 2 7 11 8 8 b 11 8 e f 4 a 10 14 2 (j) e 7 4 6 d 14 2 c 2 7 4 6 1 b h i 7 c 2 7 11 8 8 b d 9 e 14 2 10 f 17 Thực thi giải thuật của Kruskal (tiếp) 1 2 (m) b 4 a 11 8 h 2 4 4 8 7 1 7 7 c 2 i 6 4 6 g 13.11.2004 7 d f 8 9 (n) 9 e 14 2 8 10... 6 8 b 11 i 1 8 Sau lần lặp 4: c 2 7 7 f 10 4 25 Thực thi giải thuật của Prim (tiếp) Sau lần lặp 5: (e) 4 a 11 8 8 b 7 h 7 c 2 i Sau lần lặp 6: 4 6 g 1 d (f) 9 e 14 f 2 4 a 10 11 8 Sau lần lặp 7: (g) 4 a 11 8 8 b h 7 i 1 2 7 h i 7 c 4 6 g 1 d 9 e 14 f 2 10 Sau lần lặp 8: 7 c 2 8 b 4 6 g 13.11.2004 d 9 4 e 14 2 (h) f 10 a 11 8 8 b 2 7 h Ch 9: Cay khung nho i 1 7 c 4 6 g d 9 e 14 2 f 10 26 Thực thi giải. .. thuật của Prim (tiếp) Các đỉnh còn trong Q màu trắng, các đỉnh đã được đưa ra khỏi Q màu đen Sau lần lặp 1: 4 (a) 4 a b 11 8 ∞ 7 h (b) 4 a 8 h 8 13.11.2004 i ∞ g 7 8 1 4 g ∞ 9 f Ch 9: Cay khung nho 10 ∞ ∞ d 9 ∞ e 14 2 ∞ e 14 7 c 6 d 2 ∞ 2 i 4 6 8 b 11 2 ∞ 7 c 1 8 Sau lần lặp 2: ∞ 8 f 10 ∞ 24 Thực thi giải thuật của Prim (tiếp) Sau lần lặp 3: (c) 4 a b 11 8 8 2 7 h (d) 4 a 8 h 7 13.11.2004 g 7 1 4 g 6 Ch... đỉnh của một cây trong rừng hiện thời 13.11.2004 Ch 9: Cay khung nho 13 Thực thi giải thuật của Kruskal Các cạnh được xếp theo thứ tự trọng số không giảm: 1 (a) 4 a 2 h 4 8 b 11 8 2 7 1 6 4 6 g 13.11.2004 7 7 c 2 i 4 d 8 f 8 (b) 9 e 14 2 7 10 9 4 a 8 b 11 8 10 11 14 2 7 h Ch 9: Cay khung nho i 1 7 c 4 6 g d 9 e 14 2 f 10 14 Thực thi giải thuật của Kruskal (tiếp) 1 (c) 4 a 2 h 4 8 b 11 8 2 7 1 6 4 6 g... tích giải thuật của Kruskal (tiếp) ª • Thời gian chạy của MST-KRUSKAL gồm – Khởi động: O(V) – Sắp xếp ở dòng 4: O(E lg E) – Dòng 5 -8: O(E α(E, V)) (xem nhận xét), = O(E lg E) vì α(E, V) = O(lg E) Vậy thời gian chạy của MST-KRUSKAL là O(E lg E) 13.11.2004 Ch 9: Cay khung nho 20 Giải thuật của Prim ª Giải thuật của Prim – dựa trên giải thuật GENERIC-MST, ở đây A là một cây duy nhất ° trong khi thực thi giải. .. 7 d f 8 9 (n) 9 e 14 2 8 10 4 a 10 11 14 11 8 8 b 2 7 h Ch 9: Cay khung nho i 1 7 c 4 6 g d 9 e 14 2 10 f 18 Phân tích giải thuật của Kruskal ª ª Dùng cấu trúc dữ liệu các tập rời nhau (disjoint sets), chương 22, với các heuristics – Hợp theo thứ hạng (union-by-rank) – Nén đường dẫn (path-compression) Nhận xét (cần đến khi đánh giá thời gian chạy) – Giải thuật gọi V lần MAKE-SET và gọi tổng cộng... khung nho 12 Giải thuật của Kruskal ª Giải thuật của Kruskal – dựa trên giải thuật GENERIC-MST, mà A ban đầu là một rừng mà mỗi cây chỉ chứa một đỉnh của G MST-KRUSKAL(G, w) 1 A←∅ 2 for mỗi đỉnh v ∈ V[G] 3 do MAKE-SET(v) 4 xếp các cạnh ∈ E theo thứ tự trọng số w không giảm 5 for mỗi cạnh (u, v) ∈ E, theo thứ tự trọng số không giảm 6 do if FIND-SET(u) ≠ FIND-SET(v) 7 then A ← A ∪ {(u, v)} 8 UNION(u, v)... EXTRACT-MIN(Q) 8 for mỗi đỉnh v ∈ Adj[u] 9 do if v ∈ Q và w(u, v) < key[v] 10 then π[v] ← u 11 key[v] ← w(u, v) ª Tập V − Q chứa các đỉnh của cây đang được nuôi lớn 13.11.2004 Ch 9: Cay khung nho 22 Thực thi giải thuật của Prim Sau khi khởi động: (các số bên mỗi đỉnh là trò của key của đỉnh) ∞ 0 4 a b 11 8 h ∞ 13.11.2004 ∞ 8 ∞ 7 c 2 i 1 4 6 g ∞ ∞ 7 d ∞ e 14 2 9 f 10 ∞ Ch 9: Cay khung nho 23 Thực thi giải thuật. .. Cay khung nho i 1 7 c 4 6 g d 9 e 14 2 f 10 26 Thực thi giải thuật của Prim (tiếp) Sau lần lặp 9: (i) 4 a 11 8 13.11.2004 8 b h 2 7 i 1 7 c 4 6 g d e 14 2 9 f Ch 9: Cay khung nho 10 27 Phân tích giải thuật của Prim ª Thời gian chạy của MST-PRIM tùy thuộc vào cách hiện thực priority queue Q – Trường hợp hiện thực Q là binary heap ° Khởi tạo trong dòng 1-4 dùng B UILD-HEAP tốn O(V) thời gian ° Vòng while . diễn một đồ thò có hướng Biểu diễn bằng một danh sách kề Biểu diễn bằng một ma trận kề Một đồ thò có hướng 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 6 Tìm kiếm theo chiều rộng Tìm kiếm theo. . 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 4 Biểu diễn một đồ thò vô hướng Biểu diễn bằng một danh sách kề Biểu diễn bằng một ma trận kề Một đồ thò vô hướng 7.11.2004 Ch. 8: Elementary Gr aph. Giaỷi thuaọt tỡm kieỏm trong ủo thũ 7.11.2004 Ch. 8: Elementary Gr aph Algorithms 2 Biểu diễn các đồ thò ª Hai cách biểu diễn một đồ thò G = (V, E): – Biểu diễn danh sách kề