bài giảng toán rời rạc Graph02 MST

59 411 2
bài giảng toán rời rạc  Graph02 MST

Đ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

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 rừng (Tree and Forest) ◆ ◆ Định nghĩa Ta gọi đồ thị vô hướng liên thông chu trình Đồ thị chu trình gọi rừng Như vậy, rừng đồ thị mà thành phần liên thông T1 T2 Rừng F gồm 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 Độ dài CKNN: 14 a d f b g c e 45 Mô tả thuật toá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) v∈V(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 toàn A 46 Cài đặt thuật toán Prim đồ thị dày ◆ ◆ ◆ ◆ Giả sử đồ thị cho 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ị 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 Thuật toá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 toá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 toán Prim: Ví dụ Bước Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh S Khởi tạo 50 Thuật toá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 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] - [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 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, 5 for v∈ V\ S if d[v] > c[u,v] then d[v] := c[u,v] ; near[v] := u; 53 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 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 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 - - - - - - 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) Borůvka, Prim, Dijkstra, Kruskal,…  O(m log log n) Yao (1975), Cheriton-Tarjan (1976)  O(m β (m, n)) Fredman-Tarjan (1987)  O(m log β (m, n)) Gabow-Galil-Spencer-Tarjan (1986)  O(m α (m, n)) Chazelle (JACM 2000)  Optimal Pettie-Ramachandran (JACM 2002) 58 Questions? 59 [...]... tp: O(|V|+|E|) 16 Ni dung 4.1 Cõy v cỏc tớnh cht c bn ca cõy 4.2 Cõy khung ca th 4.3 Xõy dng tp cỏc chu trỡnh c bn ca th 4.4 Bi toỏn cõy khung nh nht 17 BI TON CY KHUNG NH NHT Minimum Spanning Tree (MST) 18 Bi toỏn CKNN Bi toỏn: Cho th vụ hng liờn thụng G=(V,E) vi trng s c(e), e E di ca cõy khung l tng trng s trờn cỏc cnh ca nú Cn tỡm cõy khung cú di nh nht a 7 2 d 2 5 f 4 c 4 b 1 1 3 4 5 g 7... cnh chớnh l chi phớ xõy dng ng ray ni hai thnh ph tng ng Chỳ ý: Trong bi toỏn ny ta gi thit l khụng c xõy dng tuyn ng st cú cỏc nh ga phõn tuyn nm ngoi cỏc thnh ph 22 S chung ca cỏc gii thut Generic -MST( G, c) A={} //Bt bin: A l tp con cỏc cnh ca CKNN no ú while A cha l cõy khung do tỡm cnh (u, v) l an ton i vi A A = A {(u, v)} // A vn l tp con cỏc cnh ca CKNN no ú return A Tỡm cnh an ton bng cỏch... an ton c b sung vo A cú trng s nh nht trong s cỏc cnh ni cỏc cp thnh phn liờn thụng ca nú Thut toỏn Prim A l cõy Cnh an ton l cnh nh ni nh trong A vi mt nh khụng trong A 31 Thut toỏn Kruskal Generic -MST( G, c) A={} //Bt bin: A l tp con cỏc cnh ca CKNN no ú while A cha l cõy khung do tỡm cnh (u, v) l an ton i vi A A = A {(u, v)} // A vn l tp con cỏc cnh ca CKNN no ú return A Thut toỏn Kruskal A l rng

Ngày đăng: 15/01/2016, 17:39

Mục lục

    Chương 4 Bài toán cây khung nhỏ nhất

    Cây và rừng (Tree and Forest)

    Các tính chất cơ bản của cây

    Cây khung của đồ thị

    Số lượng cây khung của đồ thị

    Bài toán trong hoá học hữu cơ

    Tập các chu trình cơ bản

    Ý nghĩa ứng dụng

    Thuật toán xây dựng tập chu trình cơ bản

    Bài toán cây khung nhỏ nhất

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

Tài liệu liên quan