Cây khung nhỏ nhất (GIẢI THUẬT SLIDE) (chữ biến dạng do slide dùng font VNI times, tải về xem bình thường)

29 20 0
Cây khung nhỏ nhất (GIẢI THUẬT SLIDE) (chữ biến dạng do slide dùng font VNI times, tải về xem bình thường)

Đ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

Cây Khung Nhỏ Nhất Cây khung nhỏ ª ª Cho – đồ thị liên thông, vô hướng G = (V, E ) – hàm trọng số w : E →R Tìm tập không chứa chu trình T ⊆ E nối tất đỉnh cho toồng caực troùng soỏ w(T) = ã ê (u, v) ∈ T w(u, v) nhỏ – Tập T làø cây, gọi khung nhỏ Bài toán tìm khung nhỏ nhất: toán tìm T Ch 9: Cay khung nho nhat Cây khung nhỏ (tiếp) ª Giải toán tìm khung nhỏ – Giải thuật Kruskal – Giải thuật Prim Ch 9: Cay khung nho nhat Cây khung nhỏ nhất: ví dụ a 11 8 b h i c g d e 14 f 10 Tập cạnh xám khung nhỏ ° Trọng số tổng cộng 37 ° Cây không nhất: thay cạnh (b, c) ca khung khác có trọng số 37 ° Ch 9: Cay khung nho nhat Cạnh an toàn ª ª ª Cho đồ thị liên thông, vô hướng G = (V, E ) hàm trọng số w : E → R Tìm khung nhỏ cho G! Giải toán chiến lược greedy: nuôi khung lớn dần cách thêm vào cạnh Định nghóa cạnh an toàn Nếu A tập khung nhỏ đó, (u, v) cạnh G cho tập A ∪ {(u, v)} tập khung nhỏ đó, (u, v) cạnh an toàn cho A Ch 9: Cay khung nho nhat Một giải thuật tổng quát (generic) ª Một giải thuật tổng quát (generic) để tìm khung nhỏ – Input: đồ thị liên thông, vô hướng G hàm trọng số w cạnh G – Output: Một khung nhỏ cho G GENERIC-MST(G, w) A ←∅ while A không khung nhỏ tìm cạnh (u, v) an toàn cho A A ← A ∪ {(u, v)} return A Ch 9: Cay khung nho nhat Phép cắt ª ª Các khái niệm quan trọng Một phép cắt (S, V − S) cuûa G = (V, E ) phân chia (partition) V Ví dụ: S = {a, b, d, e} đồ thị sau Một cạnh (u, v) ∈ E xuyên qua (cross) phép cắt (S, V − S) đỉnh nằm S đỉnh nằm V − S Ví dụ: cạnh (b, c).8 S↑ V −S ↓ a b 11 h c i d 14 e 10 g f Ch 9: Cay khung nho nhat Caïnh nhẹ (light edge) ª ª Các khái niệm quan trọng (tiếp) Một phép cắt bảo toàn tập cạnh A (respects A) cạnh A xuyên qua phép cắt Một cạnh cạnh nhẹ vượt qua phép cắt trọng số nhỏ trọng số cạnh xuyên qua phép cắt Ví dụ: cạnh (c, d) S↑ V −S ↓ a 11 8 b h i c g d 14 e 10 f Ch 9: Cay khung nho nhat Nhận cạnh an toàn Định lý 24.1 Cho ° G = (V, E) đồ thị liên thông, vô hướng ° w hàm trọng số E ° A tập khung nhỏ cho G ° (S, V − S) phép cắt G bảo toàn A ° (u, v) cạnh nhẹ vượt qua (S, V − S) ⇒ cạnh (u, v) an toàn cho A Chứng minh Ch 9: Cay khung nho nhat Nhận cạnh an toàn (tiếp) ° S: tập đỉnh đen, V − S: tập đỉnh trắng ° Các cạnh khung nhỏ T vẽ hình, cạnh G không ° A: tập cạnh xám ° Cạnh (u, v) cạnh nhẹ xuyên qua phép cắt (S, V − S) ° p đường từ u đến v T x u p y v Ch 9: Cay khung nho nhat 10 Thực thi giải thuật Kruskal (tiếp) (c) a h b 11 7 c i 4 g 7 d f (d) e 14 10 10 11 14 a 11 8 b h Ch 9: Cay khung nho nhat i c g d e 14 f 10 15 Thực thi giải thuật Kruskal (tiếp) (e) a 11 (g) a g i g d f d f a 10 10 a Ch 9: Cay khung nho nhat g i g d e 14 c b h i c h 11 8 b 11 (h) e 14 (f) e 14 c b h i c h 11 8 b f 10 d e 14 10 f 16 Thực thi giải thuật Kruskal (tiếp) (i) a 11 (k) a g i g d f d f a 10 10 a Ch 9: Cay khung nho nhat g i g d e 14 c b h i c h 11 8 b 11 (l) e 14 (j) e 14 c b h i c h 11 8 b f 10 d e 14 10 f 17 Thực thi giải thuật Kruskal (tiếp) (m) b a 11 h 4 7 c i 6 g 7 d f 10 11 14 (n) e 14 10 a 11 8 b h Ch 9: Cay khung nho nhat i c g d e 14 10 f 18 Phân tích giải thuật Kruskal ª ª Dùng cấu trúc liệu tập rời (disjoint sets), chương 22, với heuristics – Hợp theo thứ hạng (union-by-rank) – Nén đường dẫn (path-compression) Nhận xét (cần đến đánh giá thời gian chạy) – Giải thuật gọi V lần MAKE-SET gọi tổng cộng O(E) lần thao tác MAKE-SET, UNION, FINDSET – Vì G liên thông nên | E| ≥ | V| − Ch 9: Cay khung nho nhat 19 Phân tích giaỷi thuaọt cuỷa Kruskal (tieỏp) ê ã Thụứi gian chaùy MST-KRUSKAL gồm – Khởi động: O(V) – Sắp xếp ôû doøng 4: O(E lg E) – Doøng 5-8: O(E α(E, V)) (xem nhận xét), = O(E lg E) α(E, V) = O(lg E) Vậy thời gian chạy MST-KRUSKAL laø O(E lg E) Ch 9: Cay khung nho nhat 20 Giải thuật Prim ª Giải thuật Prim – dựa giải thuật GENERIC-MST, A ° thực thi giải thuật A = {(v, π[v]) : v ∈ V − {r} − Q} ° giải thuật xong, Q = ∅, neân A = {(v, π[v]) : v ∈ V − {r}} Ch 9: Cay khung nho nhat 21 Giải thuật Prim (tiếp) MST-PRIM(G, w, r) r : gốc Q ← V[G] khung nhỏ for đỉnh u ∈ Q trả key[u] ← ∞ Q : priority queue maø khóa key[r] ← trường key π[r] ← NIL π[v] : đỉnh cha mẹ while Q ≠ ∅ u ← EXTRACT-MIN(Q) cuûa v for đỉnh v ∈ Adj[u] if v ∈ Q vaø w(u, v) < key[v] 10 then π[v] ← u 11 key[v] ← w(u, v) ª Tập V − Q chứa đỉnh nuôi lớn Ch 9: Cay khung nho nhat 22 Thực thi giải thuật Prim Sau khởi động: (các số bên đỉnh trị key đỉnh) ∞ a b 11 h ∞ ∞ ∞ c i g ∞ ∞ d Ch 9: Cay khung nho nhat ∞ e 14 f 10 ∞ 23 Thực thi giải thuật Prim (tiếp) Các đỉnh Q màu trắng, đỉnh đưa kh Sau lần lặp 1: (a) a b 11 ∞ h a h ∞ g 7 c g ∞ Ch 9: Cay khung nho nhat ∞ d f 10 ∞ ∞ d ∞ e 14 ∞ e 14 ∞ i b 11 i c Sau lần lặp 2: (b) ∞ f 10 ∞ 24 Thực thi giải thuật Prim (tiếp) Sau lần lặp 3: (c) a b 11 8 h (d) a h g 7 c g Ch 9: Cay khung nho nhat d f 10 d ∞ e 14 ∞ e 14 ∞ i b 11 i Sau lần lặp 4: c 2 f 10 25 Thực thi giải thuật Prim (tiếp) Sau lần lặp 5: (e) a 11 8 b h i c g Sau lần lặp 6: d (f) e 14 f a 10 11 Sau lần lặp 7: (g) a 11 8 b h i g h i c g d e 14 f 10 Sau laàn laëp 8: c b d e 14 (h) f 10 a 11 8 b h Ch 9: Cay khung nho nhat i c g d e 14 f 10 26 Thực thi giải thuật Prim (tiếp) Sau lần lặp (i) 9: a 11 8 b h i c g d e 14 Ch 9: Cay khung nho nhat f 10 27 Phân tích giải thuật Prim ª Thời gian chạy MST-PRIM tùy thuộc vào cách thực priority queue Q – Trường hợp thực Q binary heap ° Khởi tạo dòng 1-4 dùng BUILD-HEAP tốn O(V) thời gian ° Vòng while lặp V lần, EXTRACT-MIN tốn O(lg V) thời gian Như lần gọi EXTRACT-MIN tốn tất O(V lg V) thời gian — Vòng for lặp O(E) lần, vòng lặp dòng 11 (dùng HEAPIFY) tốn O(lg V) thời gian ° Vậy thời gian chạy tổng cộng MST-P RIM O(V lg V + E lg V) = O(E lg V) Ch 9: Cay khung nho nhat 28 Phân tích giải thuật Prim (tiếp) – Trường hợp thực Q Fibonacci heap ° Khởi tạo dòng 1- dùng MAKE-FIB-HEAP FIB-HEAP-INSERT tốn O(V) amortized time ° Mỗi FIB-HEAP-EXTRACT-MIN tốn O(lg V) amortized time ° Mỗi thao tác FIB-HEAP-DECREASE-KEY cần để thực dòng 11 tốn O(1) amortized time ° Vậy thời gian chạy tổng cộng MST-P RIM O(E + V lg V) Ch 9: Cay khung nho nhat 29 ... T làø cây, gọi khung nhỏ Bài toán tìm khung nhỏ nhất: toán tìm T Ch 9: Cay khung nho nhat Cây khung nhỏ (tiếp) ª Giải toán tìm khung nhỏ – Giải thuật Kruskal – Giải thuật Prim Ch 9: Cay khung. .. nhat Caây khung nhỏ nhất: ví dụ a 11 8 b h i c g d e 14 f 10 Tập cạnh xám khung nhỏ ° Trọng số tổng cộng 37 ° Cây không nhất: thay cạnh (b, c) ca khung khác có trọng số 37 ° Ch 9: Cay khung nho... → R Tìm khung nhỏ cho G! Giải toán chiến lược greedy: nuôi khung lớn dần cách thêm vào cạnh Định nghóa cạnh an toàn Nếu A tập khung nhỏ đó, (u, v) cạnh G cho tập A ∪ {(u, v)} tập khung nhỏ đó,

Ngày đăng: 29/03/2021, 08:23

Mục lục

  • Cây Khung Nhỏ Nhất

  • Cây khung nhỏ nhất

  • Cây khung nhỏ nhất (tiếp)

  • Cây khung nhỏ nhất: ví dụ

  • Một giải thuật tổng quát (generic)

  • Cạnh nhẹ (light edge)

  • Nhận ra một cạnh an toàn

  • Nhận ra một cạnh an toàn (tiếp)

  • Giải thuật của Kruskal

  • Thực thi giải thuật của Kruskal

  • Thực thi giải thuật của Kruskal (tiếp)

  • Phân tích giải thuật của Kruskal

  • Phân tích giải thuật của Kruskal (tiếp)

  • Giải thuật của Prim

  • Giải thuật của Prim (tiếp)

  • Thực thi giải thuật của Prim

  • Thực thi giải thuật của Prim (tiếp)

  • Phân tích giải thuật của Prim

  • Phân tích giải thuật của Prim (tiếp)

Tài liệu cùng người dùng

Tài liệu liên quan