Bài giảng lý thuyết đồ thị - Chương 5
lượt xem 23
download
CÂY VÀ CÂY KHUNG CỦA ĐỒ THị 5.1 Cây và các tính chất cơ bản của cây Định nghĩa 1 Cây là đồ thị vô hướng, liên thông và không có chu trình đơn. Đồ thị không liên thông được gọi là rừng (các thành phần liên thông của đồ thị là các cây của rừng).
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ị - Chương 5
- Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ Chương 5 CÂY VÀ CÂY KHUNG CỦA ĐỒ THN 5.1 Cây và các tính chất cơ bản của cây Định nghĩa 1 Cây là đồ thị vô hướng, liên thông và không có chu trình đơn. Đồ thị không liên thông được gọi là rừng (các thành phần liên thông của đồ thị là các cây của rừng). Ví dụ 1 Trong hình 5.1 dưới đây là một rừng gồm ba cây T1, T2 và T3 T1 T2 T3 Định lý 1 (Các tính chất của cây) Giả sử T = (V,E) là đồ thị vô hướng liên thông n đỉnh. Khi đó các mệnh đề sau đây là tương đương. 1) T là cây 2) T không chứa chu trình và có n-1 cạnh 3) T liên thông và có n-1 cạnh 4) T liên thông và nếu bỏ đi một cạnh tuỳ ý thì đồ thị nhận được sẽ không liên thông 5) Hai đỉnh bất kỳ của T được nối với nhau bởi đúng một đường đi đơn 6) T không chứa chu trình nhưng nếu thêm vào một cạnh nối hai đỉnh không kề nhau thì xuất hiện duy nhất một chu trình. Chứng minh Ta sẽ chứng minh định lý theo sơ đồ vòng tròn như sau: 1) ⇒ 2) ⇒ 3) ⇒ 4) ⇒ 5) ⇒ 6) ⇒ 1) 1) ⇒ 2): Theo định nghĩa, vì T là cây nên nó không chứa chu trình. Ta đi chứng minh bằng quy nạp nếu T có n đỉnh thì nó có n-1 cạnh. Thật vậy, với n=1 là hoàn toàn đúng. Giả sử điều khẳng định dúng với n=k, tức là cây T có k đỉnh thì có k-1 cạnh, ta đi chứng minh khẳng định đúng với n=k+1. Trước hết ta thấy rằng mọi cây T có k+1 đỉnh ta luôn tìm được ít nhất một đỉnh là đỉnh cheo (đỉnh có bậc bằng 1). Gọi v1, v2, ..vj là đường đi dài nhất theo số cạnh trong T, khi đó rõ ràng v1 và vj là các đỉnh treo, vì từ v1 (và vk) không có cạnh nối tới bất kì đỉnh nào khác do T không chứa chu trình và đường đang xét là đường dài nhất. Loại dỉnh v1 và cạnh (v1, v2) khỏi T ta thu được cây T1 với k đỉnh, theo giả thiết thì T1 có k-1 cạnh do đó T phải có k cạnh. Vậy khẳng định là đúng với mọi n. 53 NguyÔn Minh §øc - §HQG Hµ Néi
- Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ 2) ⇒ 3): Ta chứng minh bằng phản chứng: Giả sử T không liên thông, khi đó T có k>1 thành phần liên thông T1, T2, ..,Tk. Do T không chứa chu trình nên Ti cũng không chúa chu trình, vì thế mỗi Ti là một cây. Nếu ta gọi v(Ti) và e(Ti) lần lượt là số đỉnh và cạnh của cây Ti ta sẽ có: e(Ti) = v(Ti)-1 Suy ra n-1 = e(T) = e(T1)+e(T2)+...+e(Tk) = v(T1)+v(T2)+..+v(Tk)-k=n-k Suy ra k=1, nghĩa là T phải liên thông. 3) ⇒ 4): Việc loại bỏ bất kì một cạnh nào của T đều cho ta một đồ thị n đỉnh n-2 cạnh, rõ ràng là đồ thị khi đó sẽ không liên thông. 4) ⇒ 5): Ta chứng minh bằng phản chứng: Giả sử tồn tại hai đỉnh trong T được nối với nhau bởi hai đường đi đươn khác nhau, khi đó ta hoàn toàn có thể bỏ đi một cạnh ở một trong hai đường đi đó mà đồ thị nhận được vẫn liên thông, điều này là trái với giả thiết. 5) ⇒ 6): Rõ ràng T không chứa chu trình, vì nếu có thì ta sẽ tìm được một cặp đỉnh được nối với nhau bởi hai đường đi đơn, trái với giả thiết. Bây giờ nếu ta thêm vào T một cạnh e nối hai đỉnh u và v của T. Khi đó cạnh này cùng với đường đi đơn nối u và v sẽ tạo thành một chu trình. Chu trình thu được này là duy nhất vì nếu không thì trước đó phải có chu trình, điều này lại trái với giả thiết. 6) ⇒ 1): Giả sử T không liên thông, khi đó T có ít nhất là hai thành phần liên thông, khi đo nếu thêm một cạnh nối hai đỉnh ở hai thành phần liên thông khác nhau ta không thu được thêm một chu trình nào cả, điều này trái với giả thiết. Định lý được chứng minh. Định lý 2 Trong một cây số đỉnh treo là lơn hơn hoặc bằng 2. Chứng minh Ta chứng minh bằng phản chứng: Giả sử số đỉnh treo trong cây là nhỏ hơn 2, khi đó có hai trường hợp xãy ra: a) Số đỉnh treo băng 0 Nếu không có đỉnh treo thì xuất phát từ một đỉnh ta luôn tìm đường quay về đỉnh đó, nghĩa là luôn tìm được một chu trình, mâu thuẫn với giả thiết b) Số đỉnh treo là 1, Ta xuất phát từ đỉnh treo này, vì mỗi đỉnh khác đỉnh treo đường đi se đi vào từ một cạnh rồi đi ra bằng một cạnh khác quá trình này sẽ vô hạnh vì nếu hữu hạn sẽ xuất hiện đỉnh treo. điều này mâu thuNn với tính hữu hạn của đồ thị. (Định lý được chứng minh) 5.2 Cây khung của đồ thị (Cây bao trùm) Định nghĩa 2 Giả sử G = (V,E) là đồ thị vô hướng liên thông. Cây T = (V,F) với F ⊂ E được gọi là cây khung của đồ thị G. Ví dụ2 Cho đồ thị vô hướng G = (V,E) như hình vẽ sau (Hình 5.2) Định lý 3 Đồ thị G = (V,E) có cây khung (cây bao trùm) khi và chỉ khi G là đồ thị liên thông Chứng minh Điều kiện cần: Đồ thị G có cây bao trùm thì G là đồ thị liên thông. 54 NguyÔn Minh §øc - §HQG Hµ Néi
- Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ Giả sử G có cây bao trùm là G’, ta chi ra G là liên thông. Thật vậy, nếu G không liên thông thì tồn tại cặp đỉnh u, v mà giữa chúng không có đường nối nào, mà u, v cũng là đỉnh của G’, chứng tỏ G’ không liên thông. điều này trái với giả thiết G’ là cây. Điều kiện đủ: Đồ thị G là liên thông thì G có cây bao trùm. Giả sử G là liên thông a) N ếu trong G không có chu trình thì G là một cây, do đó cây bao trùm G’ của G chính là G. b) N ếu trong G có chu trình thì ta bỏ đi một cạnh trong chu trình đó thì ta được G’ liên thông và không có chu trình, G’ là cây của G. (Đpcm). Để tìm khung của đồ thị ta có thể áp dụng một trong hai thuật toán tìm kiếm theo chiều sâu và thuật toán tìm kiếm theo chiều rộng trên đồ thị. Trong cả hai trường hợp mỗi khi ta đến được đỉnh u (tức là biến Chuaxet[u]=true) từ đỉnh v thì cạnh (u,v) sẽ được nạp vào cây khung. Hai thuật toán được áp dụng như sau: Tìm kiếm theo chiều sâu: Procedure DFS_TREE(r) (* Tìm cây khung T của đồ thị vô hướng liên thông G cho bởi danh sách kề *) Begin Chuaxet[r]:=false; For v ∈ Ke(r) do If Chuaxet[v] Then Begin T:=T ∪ (r,v); DFS_TREE(v); End; End; Tìm kiếm theo chiều rộng Procedure BFS_TREE(r) Begin Q:= Φ ; Q ⇐ r; Chuaxet[r]:=False; While Q ≠ Φ do Begin v ⇐ Q; For u ∈ Ke(v) do If Chuaxet[u] Then Begin Q ⇐ u; Chuaxet[u]:=False; T:= T ∪ (v,u); End; End; End; Chương trình chính 55 NguyÔn Minh §øc - §HQG Hµ Néi
- Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ BEGIN For v ∈ V do Chuaxet[v]:=True; T:= Φ ; DFS_TREE(root); (* Hoặc BFS_TREE(root); *) END. Ví dụ 3 5.3 Bài toán tìm cây khung nhỏ nhất (lớn nhất của đồ thị) Bài toán: Cho G=(V,E) là đồ thị vô hướng liên thông với |V|=n và |E|=m. Mỗi cạnh e của đồ thị được gán một số c(e) gọi là độ dài của cạnh. Giả sử H = (V,T) là cây khung của đồ thị G. Ta goi độ c(H) của cây khung H là tổng độ dài các cạnh của cây: c(H)= ∑ c(e) e∈T Bài toán đặt ra là trong số tất cả các cây khung H của đồ thị G hãy tìm cây khung có c(H) nhỏ nhất. Cây khung như vậy được gọi là cây khung nhỏ nhất của đồ thị. Để giải quyêt bài toán này ta hoàn toàn có thể liệt kê tất cả các cay khung của đồ thị sau đó chọn lấy cây khung có độ dài nhỏ nhất, xong cách này không được tốt trong trường hợp đồ thị có nhiều cây khung. Do vậy ta phải có một các nào đó để xây dựng được một cây khung của đồ thị sao cho độ dài của cây là nhỏ nhất. Dưới đây ta sẽ nghiên cứu hai thuật toán đáp ứng được yêu cầu trên. 5.3.1 Thuật toán Kruskal Thuật toán Kruskal sẽ xây dựng tập cạnh T của cây khung T=(V,K) theo từng bước như sau: Trước hết sắp xếp các cạnh của đồ thị G theo thứ tự không giảm của độ dài cạnh. Ban đầu tâp K:= Φ , ở mỗi bước ta sẽ lần lượt duyệt trong danh sách các cạnh đã sắp xếp để tìm ra một cạnh có độ dài nhỏ nhất sao cho việc bổ xung cạnh đó vào tập K mà không tạo thành chu trình. Thuật toán sẽ kết thúc khi ta thu được tập K có n-1 cạnh, thủ tục trình bày thuật toán như sau: Procedure Kruskal; Begin K:= Φ ; While |K|
- Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ 1 17 2 2 6 4 9 5 15 7 8 6 7 3 1 5 3 12 21 18 9 8 23 16 4 Thứ tự từ trái qua phải, từ trên xuống dưới của các hình dưới đây minh hoạ việc tìm cây khung nhỏ nhất theo thuật toán Kruskal, trong đó các cạnh có nét đậm là cạnh được chọn vào cây khung, các cạnh có nét đứt là các cạnh bị bỏ qua trong quá trình tìm cây khung của thuật toán. 57 NguyÔn Minh §øc - §HQG Hµ Néi
- Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ 5.3.2 Thuật toán Prim Thuật toán Prim sẽ xây dựng cây khung T=(V,P) theo cách sau: Bắt đầu từ từ một đỉnh s tuỳ ý của đồ thị, đầu tiên ta nối s với đỉnh lân cậnh gần nhất của nó, chẳng hạn là đỉnh u (đỉnh u là lân cận gần nhất của s nếu như (u,s) là cạnh kề có độ dài nhỏ nhất của đỉnh s). Tiếp theo, trong số các trong số các cạnh kề với hai đỉnh s, u ta tìm cạnh có độ dài nhỏ nhất, cạnh này dẫn đến đỉnh thư ba, chẳng hạn là đỉnh v, và ta thu được cây bộ phận gồm 3 đỉnh 2 cạnh. Quá trình này sẽ tiếp tục cho đến khi thu được cây gồm n đỉnh và n-1 cạnh, cây này sẽ là cây khung nhỏ nhất cần tìm. Giả sử đồ thị cho bởi ma trận trọng số C={c[i,j];i,j=1,2,...,n}. Trong quá trình thực hiện thuật toán, ở mỗi bước để nhanh chóng chọn được các đỉnh và cạnh cần bổ xung vào cây khung, mỗ đỉnh v của đồ thị sẽ được gán một nhãn có dạng [min(v), near(v)], trong đó min(v) là độ dài của cạnh có độ dài nhỏ nhất trong số các cạnh nối đỉnh v với các đỉnh của cây khung đang xây dựng, còn near(v) là đỉnh của cây khung gần v nhất. Thuật toán Prim được mô tả bằng thủ tục sau Procedure Prim; Begin (* Bước khởi tạo *) Chọn s là một đỉnh nào đó của đồ thị; VT:= {s}; P:= φ ; (* VT là tập đỉnh, P là tập cạnh của cây khung *) min(s):=0; near(s):=s; For v ∈ V\VT do Begin min(v):=c[s,v]; near(v):=s; End; (* Bước lặp *) Stop:=false; While not Stop do Begin Tìm u ∈ V\VT có min(u) nhỏ nhất; VT:=VT ∪ {u}; P:=P ∪ { (u,near(u))}; If |VT| = n then Begin T = (VT,P) là cây khung nhỏ nhất; Stop:=true; End Else For v ∈ V\VT do If min(v)>c[u,v] then Begin min(v):=c[u,v]; near(v):=u; End; End; End; Ví dụ 5: Xét đồ thị cho ở ví dụ 4 Ma trận trọng số của đồ thị có dạng 58 NguyÔn Minh §øc - §HQG Hµ Néi
- Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ 1 2 3 4 5 6 7 8 9 ∞ ∞ ∞ ∞ ∞ 0 17 2 4 1 ∞ ∞ ∞ ∞ ∞ 17 0 15 9 2 ∞ ∞ ∞ ∞ 15 0 18 7 21 3 ∞ ∞ ∞ 18 0 12 1 23 4 ∞ ∞ ∞ ∞ 12 0 8 6 3 5 ∞ ∞ ∞ ∞ ∞ 2 8 0 5 6 ∞ ∞ 4 9 7 1 6 5 0 7 ∞ ∞ ∞ ∞ ∞ ∞ 23 3 0 8 ∞ ∞ ∞ ∞ ∞ ∞ 21 16 0 9 Bảng dưới đây cho ta hình ảnh về các bước lặp của thuật toán Prim, đỉnh có dấu * là đỉnh được chọn để bổ xung vào cây khung và khi đó nhãn của nó không còn bị biến đổi ở các bước tiếp theo nên ta dùng dấu x để ghi nhận điều đó. Đỉnh 1 2 3 4 5 6 7 8 9 VT P B.lặp φ [ ∞ ,1] [ ∞ ,1] [ ∞ ,1] [ ∞ ,1] [ ∞ ,1] [2,1]* K.tạo [0,1] [17,1] [4,1] 1 [ ∞ ,1] [ ∞ ,1] [ ∞ ,1] [ ∞ ,1] * 1 x [17,1] [8,6] x [4,1] 1,6 (6,1) [ ∞ ,1] [ ∞ ,1] * 2 x [9,7] [7,7] [1,7] [6,7] x x 1,6,7 (6,1)(7,1) * 3 x [9,7] [7,7] x [6,7] x x [23,4] [16,4] 1,6,7,4 (6,1)(7,1)(4,7) [3,5]* 4 x [9,7] [7,7] x x x x [16,4] 1,6,7,4,5 (6,1)(7,1)(4,7)(5,7) 5 x [9,7] [7,7] x x x x x [16,4] 1,6,7,4,5,8 (6,1)(7,1)(4,7)(5,7)(8,5) * 6 x [9,7] x x x x x x [16,4] 1,6,7,4,5,8,3 (6,1)(7,1)(4,7)(5,7)(8,5)(3,7) * 7 x x x x x x x x [16,4] 1,6,7,4,5,8,3,2 (6,1)(7,1)(4,7)(5,7)(8,5)(3,7)(2,7) 8 x x x x x x x x X 1,6,7,4,5,8,3,1,9 (6,1)(7,1)(4,7)(5,7)(8,5)(3,7)(2,7)(9,4) 59 NguyÔn Minh §øc - §HQG Hµ Néi
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 | 219 | 28
-
Bài giảng Lý thuyết đồ thị: Chương 1 - ThS. Nguyễn Khắc Quốc
56 p | 143 | 18
-
Bài giảng Lý thuyết đồ thị: Chương 2 - Biểu diễn đồ thị trên máy tính
32 p | 121 | 16
-
Bài giảng Lý thuyết đồ thị: Chương 3 - Đồ thị Euler và đồ thị Hamilton
19 p | 151 | 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 | 116 | 13
-
Bài giảng Lý thuyết đồ thị: Chương 1 - Đại cương về đồ thị
39 p | 114 | 13
-
Bài giảng Lý thuyết đồ thị: Chương 5 - Cây và cây khung của đồ thị
37 p | 188 | 12
-
Bài giảng Lý thuyết đồ thị: Chương 2 - ThS. Nguyễn Khắc Quốc
37 p | 117 | 12
-
Bài giảng Lý thuyết đồ thị: Chương 5 - ThS. Nguyễn Khắc Quốc
55 p | 112 | 8
-
Bài giảng Lý thuyết đồ thị: Chương 0 - Giới thiệu môn học
12 p | 105 | 7
-
Bài giảng Lý thuyết đồ thị: Chương 1 - Nguyễn Trần Phi Phượng
26 p | 193 | 7
-
Bài giảng Lý thuyết đồ thị - Học viện Kỹ thuật Quân sự
107 p | 92 | 7
-
Bài giảng Lý thuyết đồ thị: Bài toán ghép cặp
43 p | 155 | 6
-
Bài giảng Lý thuyết đồ thị: Chương 6 - Nguyễn Trần Phi Phượng
38 p | 85 | 5
-
Bài giảng Lý thuyết đồ thị: Chương 0 - Nguyễn Trần Phi Phượng
6 p | 94 | 4
-
Bài giảng Lý thuyết đồ thị: Chương 4 - Nguyễn Trần Phi Phượng
13 p | 122 | 4
-
Bài giảng Lý thuyết đồ thị: Chương 0 - Tôn Quang Toại
6 p | 19 | 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