Bài giảng Lý thuyết đồ thị - Bài 5: Cây khung của đồ thị
lượt xem 5
download
Bài giảng "Lý thuyết đồ thị - Bài 5: Cây khung của đồ thị" cung cấp cho người học các kiến thức: Cây khung của đồ thị, đồ thị có trọng số, bài toán cây khung nhỏ nhất, thuật toán Prim, thuật toán Kruskal,... Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lý thuyết đồ thị - Bài 5: Cây khung của đồ thị
- Bài 5 Cây khung của đồ thị
- Bài toán mở đầu Hệ thống đường giao thông ở Maine như hình bên. Tuyết đang phủ toàn bộ các con đường. Cần khôi phục lại hệ thống bằng cách cào tuyết một số con đường. Không nhất thiết phải cào tuyết hết mọi con đường. 2
- Cây khung Định nghĩa: Cho G là đơn đồ thị. Một cây T được gọi là cây khung của G nếu và chỉ nếu: T là đồ thị con của G T chứa tất cả các đỉnh của G VD: Đồ thị và các cây khung của nó 3
- Cây khung (tt) Định lý: Một đơn đồ thị liên thông nếu và chỉ nếu nó có cây khung. Chứng minh: Nếu G có chứa cây khung thì do tính chất của cây khung là liên thông và cây khung chứa tất cả các đỉnh của G. Suy ra các đỉnh của G luôn được nối với nhau hay G liên thông. Xét G liên thông. Giả sử trong G còn tồn tại chu trình, xóa bớt một cạnh trong chu trình này, khi đó đồ thị vẫn còn liên thông. Nếu vẫn còn chu trình thì lặp lại bước trên. Cứ thế cho đến khi không còn chu trình nữa. Khi đó ta sẽ được cây khung 4
- Đồ thị có trọng số Đồ thị có trọng số: là đồ thị mà mỗi cạnh của nó được gán với một con số thực chỉ chi phí phải tốn khi đi qua cạnh đó. Ký hiệu: c(u,v) là trọng số của cạnh (u,v) Trọng số có thể âm, có thể dương tùy theo ứng dụng. VD: 1 5 2 7 3 -3 6 2 8 4 1 5 6 5
- Đồ thị có trọng số (tt) Đồ thị có trọng số có thể được biểu diễn bằng ma trận kề trọng số. Cụ thể, Cho đồ thị G = , với V = {v 1, v2, …, vn}. Ma trận kề trọng số biểu diễn G là một ma trận vuông A, kích thước nxn, được xác định như sau: c(vi , v j ), (vi , v j ) E Aij = , (vi , v j ) E 6
- Đồ thị có trọng số (tt) VD: 5 2 5 7 −3 8 6 1 5 2 7 3 -3 6 7 2 8 A= 2 −3 1 4 1 5 6 8 1 6 7
- Bài toán cây khung nhỏ nhất Tìm các con đường để cào tuyết sao cho chi phí là nhỏ nhất 20 10 15 15 3 9 10 5 8 20 20 10 10 15 15 15 9 10 5 59 70 8
- Bài toán cây khung nhỏ nhất (tt) Định nghĩa. Cho đồ thị có trọng số G. Cây khung nhỏ nhất của G (nếu tồn tại) là cây khung có tổng trọng số nhỏ nhất trong số các cây khung của G. Các thuật toán tìm cây khung nhỏ nhất: Thuật toán Prim Thuật toán Kruskal 9
- Thuật toán Prim Ý tưởng: Xuất phát từ 1 đỉnh bất kỳ. Đưa đỉnh này vào cây khung T. Tại mỗi bước, luôn chọn cạnh có trọng số nhỏ nhất trong số các cạnh liên thuộc với một đỉnh trong T (đỉnh còn lại nằm ngoài T) Đưa cạnh mới chọn và đỉnh đầu của nó vào cây T Lặp lại quá trình trên cho đến khi đưa đủ n-1 cạnh vào T 10
- Thuật toán Prim (tt) E 20 O 10 15 15 3 9 R H 10 B 5 8 A E O 10 3 9 R H 8 B 5 A 11
- Thuật toán Prim (tt) Để biểu diễn lời giải, ta sẽ sử dụng 2 mảng: Mảng d: d[v] dùng để lưu độ dài cạnh ngắn nhất nối với v trong số các cạnh chưa xét. Mảng near: near[v] dùng để lưu đỉnh còn lại của cạnh ngắn nhất nói ở trên. v d[v] near[v] E O E 0 0 10 3 B 3 E 9 R H A 8 B 5 8 B H 5 A R 9 B A O 10 R 12
- Thuật toán Prim (tt) (* Khởi tạo *) (* Bước lặp *) Chọn s là một đỉnh nào đó của đồ thị Stop := False; VH := {s}; (* Tập những đỉnh đã đưa vào cây *) While (not Stop) do Begin T := ; (* Tập cạnh của cây *) Tìm u V\VH thỏa mãn d[u] = min{d[v]: d[s] = 0; near[s] = s; v V\VH}; For v V\VH do VH := VH {u}; Begin T := T { (u, near[u]) }; d[v] := a[s,v]; If |VH| = n then near[v] := s; Begin H := (VH, T) là cây khung của đồ thị. End; Stop := True; End; Else For v V\VH do If d[v] > a[u,v] then Begin d[v] := c[u,v]; near[v] := u; End; End; 13
- Thuật toán Prim (tt) 2 4 2 4 20 33 8 8 1 18 16 9 1 18 9 6 6 17 14 17 4 4 3 5 3 5 Bước lặp Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh 5 Đỉnh 6 VH T Khởi tạo [0,1] [33,1] [17,1]* [ ,1] [ ,1] [ ,1] 1 1 [18,3] [16,3] [4,3]* [ ,1] 1,3 (3,1) 2 [18,3] [9.5]* [14,5] 1,3,5 (3,1),(5,3) 3 [18,3] [8,4]* 1,3,5,4 (3,1),(5,3),(4.5) (3,1),(5,3),(4.5) 4 [18,3]* 1,2,3,4,6 (6,4) (3,1),(5,3),(4.5) 5 1,2,3,4,6,2 (6,4),(2,3) 14
- Thuật toán Kruskal Ý tưởng: Lần lượt xét các cạnh theo thứ tự trọng số tăng dần Ứng với mỗi cạnh đang xét, ta thử đưa nó vào cây khung T: Nếu không tạo thành chu trình với các cạnh đã chọn thì chấp nhận cạnh mới này và đưa vào cây. Nếu tạo thành chu trình với các cạnh đã chọn thì bỏ qua và xét cạnh kế tiếp. Cứ tiếp tục như vậy cho đến khi tìm đủ n-1 cạnh để đưa vào cây T 15
- Thuật toán Kruskal (tt) E 20 O 10 15 15 R 3 9 H 10 B 5 8 A E O 10 3 9 R H 8 B 5 A 16
- Thuật toán Kruskal (tt) 2 4 2 4 20 33 8 8 1 18 16 9 1 18 9 6 6 17 14 17 4 4 3 5 3 5 Trọng số Cạnh 4 (3,5) Chọn 8 (4,6) Chọn 9 (4,5) Chọn 14 (5,6) Không chọn vì tạo chu trình: 4 5 6 4 16 (3,4) Không chọn vì tạo chu trình: 3 4 5 3 17 (1,3) Chọn 18 (2,3) Chọn. Dừng vì đã đủ cạnh. 20 (2,4) 33 (1,2) 17
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lý thuyết đồ thị: Chương 4 - Đồ thị phẳng – Bài toán tô màu đồ thị
21 p | 215 | 28
-
Bài giảng Lý thuyết đồ thị: Chương 1 - ThS. Nguyễn Khắc Quốc
56 p | 142 | 18
-
Bài giảng Lý thuyết đồ thị: Chương 3 - Đồ thị Euler và đồ thị Hamilton
19 p | 148 | 16
-
Bài giảng Lý thuyết đồ thị: Chương 2 - Biểu diễn đồ thị trên máy tính
32 p | 119 | 16
-
Bài giảng Lý thuyết đồ thị: Chương 4 - ThS. Nguyễn Khắc Quốc
36 p | 123 | 14
-
Bài giảng Lý thuyết đồ thị: Chương 3 - ThS. Nguyễn Khắc Quốc
67 p | 115 | 13
-
Bài giảng Lý thuyết đồ thị: Chương 5 - Cây và cây khung của đồ thị
37 p | 177 | 12
-
Bài giảng Lý thuyết đồ thị: Chương 2 - ThS. Nguyễn Khắc Quốc
37 p | 115 | 12
-
Bài giảng Lý thuyết đồ thị: Chương 5 - ThS. Nguyễn Khắc Quốc
55 p | 109 | 8
-
Bài giảng Lý thuyết đồ thị: Chương 0 - Giới thiệu môn học
12 p | 104 | 7
-
Bài giảng Lý thuyết đồ thị: Chương 1 - Nguyễn Trần Phi Phượng
26 p | 188 | 7
-
Bài giảng Lý thuyết đồ thị: Bài toán ghép cặp
43 p | 141 | 6
-
Bài giảng Lý thuyết đồ thị - ĐH Hàng Hải
35 p | 96 | 6
-
Bài giảng Lý thuyết đồ thị - Bài 1: Đại cương về đồ thị
39 p | 39 | 5
-
Bài giảng Lý thuyết đồ thị - Bài 3: Đường đi, chu trình Hamilton
34 p | 75 | 5
-
Bài giảng Lý thuyết đồ thị: Chương 0 - Nguyễn Trần Phi Phượng
6 p | 93 | 4
-
Bài giảng Lý thuyết đồ thị: Chương 4 - Nguyễn Trần Phi Phượng
13 p | 120 | 4
-
Bài giảng Lý thuyết đồ thị: Chương 0 - Tôn Quang Toại
6 p | 7 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn