1. Trang chủ
  2. » Công Nghệ Thông Tin

chương 8 giải thuật tìm kiếm trong đồ thị

42 371 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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ề

Ngày đăng: 19/10/2014, 00:42

TỪ KHÓA LIÊN QUAN

w