Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 60 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
60
Dung lượng
1,57 MB
Nội dung
Chương Bài toán khung nhỏ The Minimum Spanning Tree Problem Nội dung 4.1 Cây tính chất 4.2 Cây khung đồ thị 4.3 Xây dựng tập chu trình đồ thị 4.4 Bài toán khung nhỏ Cõy v rng (Tree and Forest) Định nghĩa Ta gọi đồ thị vô h ớng liên thông chu trình Đồ thị chu trình đợc gọi rừng Nh vậy, rừng đồ thị mà thành phần liên thông T1 T2 Rng F gm T1, T2,, T3 T3 VÍ DỤ G1, G2 G3, G4 khơng Các tính chất Định lý Giả sử T=(V,E) đồ thị vô hướng n đỉnh Khi mệnh đề sau tương đương: (1) T liên thơng khơng chứa chu trình; (2) T khơng chứa chu trình có n-1 cạnh; (3) T liên thơng có n-1 cạnh; (4) T liên thơng cạnh cầu; (5) Hai đỉnh T nối với đường đơn; (6) T không chứa chu trình thêm vào cạnh ta thu chu trình Nội dung 4.1 Cây tính chất 4.2 Cây khung đồ thị 4.3 Xây dựng tập chu trình đồ thị 4.4 Bài toán khung nhỏ Cây khung đồ thị Định nghĩa Giả sử G=(V,E) đồ thị vô hướng liên thông Cây T=(V,F) với F E gọi khung đồ thị G b c a b d e G c a b d c a e T1 d e T2 Đồ thị G khung T1 T2 Số lượng khung đồ thị Arthur Cayley (1821 – 1895) Định lý sau cho biết số lượng khung đồ thị đầy đủ Kn: Định lý (Cayley) Số khung đồ thị Kn nn-2 b a c K3 a b c b c a c a b Ba khung K3 Bài toán hoá học hữu Biểu diễn cấu trúc phân tử: Mỗi đỉnh tương ứng với nguyên tử Cạnh – thể liên kết nguyên tử Bài toán: Đếm số đồng phân cacbua hydro no chứa số nguyên tử cácbon cho trước H methane H propane C H C H H C H H C H H H H C H H C H H H H H ethane H C H H C H H C H H C H H butane H saturated hydrocarbons CnH2n+2 10 Mơ tả thuật tốn Prim procedure Prim(G, c) begin Chọn đỉnh tuỳ ý r V; Khởi tạo T=(V(T), E(T)) với V(T)={ r }và E(T)=; while T có < n đỉnh begin Gọi (u, v) cạnh nhẹ với u V(T) vV(G) – V(T) E(T) E(T) { (u, v) }; V(T) V(T) { v } end end; Tính đắn suy từ hệ chứng minh: Giả sử A tập E tập tập cạnh CKNN G, C thành phần liên thông rừng F = (V, A) Nếu (u, v) cạnh nhẹ nối C với tplt khác F, (u, v) an tồn A 46 Cài đặt thuật tốn Prim i vi th dy Giả sử đồ thÞ cho bëi ma trËn träng sè C={c[i,j], i, j = 1, 2, , n} bớc để nhanh chóng chọn đỉnh cạnh cần bổ sung vào khung, đỉnh đồ thị đợc gán cho nhÃn NhÃn đỉnh v V-S có dạng [d[v], near[v]] : d[v] dùng để ghi nhận khoảng cách từ đỉnh v đến tập đỉnh S: d[v] := min{ c[v, w] : w S } ( = c[v, z]), near[v] := z ghi nhận đỉnh khung gần v 47 Thut tốn Prim procedure Prim; begin (* Bíc khëi t¹o *) S := { r }; T := ; d[r] := 0; near[r] := r for v V \ S begin d[v] := c[r,v]; near[v] := r; end; (* Bíc lỈp *) for k:=2 to n begin Tìm u V\ S thoả mÃn: d[u] = { d[v] : v V\ S }; S := S { u }; T := T { ( u, near[u] ) } ; for v V\ S if d[v] > c[u,v] then begin d[v] := c[u,v] ; near[v] := u; end; end; H = ( S , T ) khung nhỏ đồ thÞ ; end; Thời gian tính: O(|V|2) 48 Thuật tốn Prim – Ví dụ Ví dụ: Tìm CKNN cho đồ thị cho ma trận trọng số C = 33 17 33 18 20 17 18 16 20 16 14 14 49 Thuật tốn Prim: Ví dụ Bước Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh S Khởi tạo 50 Thuật tốn Prim: Ví dụ Đỉnh Khởi tạo [0, 1] Đỉnh [33, 1] Đỉnh [17, 1]* Đỉnh [, 1] Đỉnh [, 1] Đỉnh [, 1] S 1 51 Thuật tốn Prim: Ví dụ Đỉnh Khởi tạo Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh S [0, 1] [33, 1] [17, 1]* [, 1] [, 1] [, 1] - [18, 3] - [16, 3] [4, 3]* [, 1] 1, 3 for v V\ S if d[v] > c[u,v] then d[v] := c[u,v] ; near[v] := u; 52 Thuật tốn Prim: Ví dụ Đỉnh Khởi tạo Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh S [0, 1] [33, 1] [17, 1]* [, 1] [, 1] [, 1] 1 - [18, 3] - [16, 3] [4, 3]* [, 1] 1, - [18, 3] - [9,5]* - [14, 5] 1, 3, 5 for v V\ S if d[v] > c[u,v] then d[v] := c[u,v] ; near[v] := u; 53 Thuật tốn Prim: Ví dụ Đỉnh Khởi tạo Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh S [0, 1] [33, 1] [17, 1]* [, 1] [, 1] [, 1] 1 - [18, 3] - [16, 3] [4, 3]* [, 1] 1, - [18, 3] - [9,5]* - [14, 5] 1, 3, - [18,3] - - - [8,4]* 1,3,5,4 for v V\ S if d[v] > c[u,v] then d[v] := c[u,v] ; near[v] := u; 54 Thuật toán Prim: Ví dụ Đỉnh Khởi tạo Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh S [0, 1] [33, 1] [17, 1]* [, 1] [, 1] [, 1] 1 - [18, 3] - [16, 3] [4, 3]* [, 1] 1, - [18, 3] - [9,5]* - [14, 5] 1, 3, - [18,3] - - - [8,4]* 1,3,5,4 - [18,3]* - - - - 1,3,5,4,6 for v V\ S if d[v] > c[u,v] then d[v] := c[u,v] ; near[v] := u; 55 Thuật tốn Prim: Ví dụ Đỉnh Khởi tạo Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh S [0, 1] [33, 1] [17, 1]* [, 1] [, 1] [, 1] 1 - [18, 3] - [16, 3] [4, 3]* [, 1] 1, - [18, 3] - [9,5]* - [14, 5] 1, 3, - [18,3] - - - [8,4]* 1,3,5,4 - [18,3]* - - - - 1,3,5,4,6 - - - - - - 1,3,5,4,6,2 Độ dài CKNN : 18 + 17 + + + = 56 Tập cạnh CKNN: {(2,3), (3,1), (4,5), (5,3), (6,4)} 56 Người đề xuất toán MST Otakar Borůvka Nhà khoa học Séc (Czech) Người đề xuất toán Đề xuất thuật toán thời gian O(m log n) Bài báo xuất Séc từ năm 1926 Ứng dụng vào việc phát triển hệ thống mạng điện Bohemia 57 Tăng tốc O(m log n) O(m log log n) Yao (1975), Cheriton-Tarjan (1976) O(m (m, n)) O(m log (m, n)) Gabow-Galil-Spencer-Tarjan (1986) O(m (m, n)) Optimal Borůvka, Prim, Dijkstra, Kruskal,… Fredman-Tarjan (1987) Chazelle (JACM 2000) Pettie-Ramachandran (JACM 2002) 58 Questions? 59 60 ... 4.1 Cây tính chất 4.2 Cây khung đồ thị 4.3 Xây dựng tập chu trình đồ thị 4.4 Bài toán khung nhỏ Cây khung đồ thị Định nghĩa Giả sử G=(V,E) đồ thị vô hướng liên thông Cây T=(V,F) với F E gọi khung. .. dung 4.1 Cây tính chất 4.2 Cây khung đồ thị 4.3 Xây dựng tập chu trình đồ thị 4.4 Bài tốn khung nhỏ 17 BÀI TỐN CÂY KHUNG NHỎ NHẤT Minimum Spanning Tree (MST) 18 Bài tốn CKNN Bài tốn: Cho đồ thị vơ... 4.1 Cây tính chất 4.2 Cây khung đồ thị 4.3 Xây dựng tập chu trình đồ thị 4.4 Bài toán khung nhỏ 11 Tập chu trình Gi¶ sư G = (V, E) đơn đồ thị vô hớng liên thông, H=(V,T) khung Các cạnh đồ thị