Toán học - Bài 8: Cây và cây tối đại

Cây

8.2. Cây tối đại

8.3. Cây tối đại ngắn nhất

8.4. Xác định cây tối đại ngắn nhất

8.5. Cây có gốc

pdf40 trang | Chia sẻ: Mr Hưng | Lượt xem: 644 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Toán học - Bài 8: Cây và cây tối đại, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÀI 8 CÂY & CÂY TỐI ĐẠI Nguyễn Văn Hiệu, 2012, Discrete Mathematics 1 Giáo viên: TS. Nguyễn Văn Hiệu Email: nvhieuqt@dut.udn.vn Nội dung 8.1. Cây 8.2. Cây tối đại 8.3. Cây tối đại ngắn nhất 8.4. Xác định cây tối đại ngắn nhất 8.5. Cây có gốc Nguyễn Văn Hiệu, 2012, Discrete Mathematics 2 8.1. Cây Định nghĩa Cây là một đơn đồ thị vô hướng, liên thông và không chứa chu trình. Ví dụ Nguyễn Văn Hiệu, 2012, Discrete Mathematics 3 8.1. Cây Nguyễn Văn Hiệu, 2012, Discrete Mathematics 4 Đồ thị nào sau đây là cây? 8.1. Cây Định nghĩa Rừng là một đồ thị gồm p thành phần liên thông, trong đó mỗi thành phần liên thông là một cây. Lưu ý: cây không chứa khuyên và cạnh song song Ví dụ 5 8.1. Cây Tính chất Một cây T gồm N đỉnh với N  2 chứa ít nhất hai đỉnh treo Ví dụ 6 8.1. Cây Tính chất Cho T là một đồ thị vô hướng có n đỉnh. Có các mệnh đề tương đương sau: 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. Tính chất 3. T liên thông và mỗi cạnh của T đều là cạnh cắt (cầu). 4. Hai đỉnh bất kỳ của T được nối với nhau bằng đúng 1 đường đi đơn. 5. T không chứa chu trình nhưng nếu thêm 1 cạnh bất kỳ vào T thì ta sẽ được thêm đúng 1 chu trình. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 7 8.2. Cây tối đại Định nghĩa Cho G=(X, E) là một đồ thị liên thông và T=(X, F) là một đồ thị bộ phận của G. Nếu T là cây thì T được gọi là một cây tối đại của G.  Các tên gọi khác:  cây khung,  cây bao trùm,  cây phủ Nguyễn Văn Hiệu, 2012, Discrete Mathematics 8 e b c d a e b c d a e b c d a 8.2. Cây tối đại Tính chất  Mọi đồ thị liên thông đều có chứa ít nhất một cây tối đại Ví dụ Nguyễn Văn Hiệu, 2012, Discrete Mathematics 9 C A B D E F 8.2. Cây tối đại Xác định cây tối đại Thuật toán tựa PRIM Input: Đồ thị liên thông G=(X, E), X gồm N đỉnh Output: Cây tối đại T=(V, U) của G Thuật toán 1. Chọn tùy ý v  X và khởi tạo V := { v }; U := ; 2. Chọn w X \ V sao cho e  E, e nối w với một đỉnh trong V 3. V := V  {w}; U := U  {e} 4. Nếu U đủ N-1 cạnh thì dừng, ngược lại lặp từ bước 2. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 10 8.2. Cây tối đại Xác định cây tối đại Xác định cây tối đại  V = {F, A, B, E, C, D}  U = {FA, AB, BE, FC, ED} Nguyễn Văn Hiệu, 2012, Discrete Mathematics 11 C A B D E F 8.2. Cây tối đại Cài đặt Graph Graph::SpanningTree() { //Tìm cây khung của đồ thị } Nguyễn Văn Hiệu, 2012, Discrete Mathematics 12 8.3. Cây tối đại ngắn nhất Định nghĩa Cho G=(X, E)  G được gọi là ĐỒ THỊ CÓ TRỌNG nếu mỗi cạnh của G được tương ứng với một số thực, nghĩa là có một ánh xạ như sau: L: E  |R e | L(e) Định nghĩa  TRỌNG LƯỢNG của một cây T của G bằng với tổng trọng lượng các cạnh trong cây: L(T) = (eT)L(e)  CÂY TỐI ĐẠI NGẮN NHẤT là cây tối đại có trọng lượng nhỏ nhất của G.  Các tên gọi khác: cây khung bé nhất, cây bao trùm nhỏ nhất, cây phủ bé nhất Nguyễn Văn Hiệu, 2012, Discrete Mathematics 13 8.3. Cây tối đại ngắn nhất Ứng dụng  Bài toán xây dựng hệ thống đường sắt Cần xây dựng hệ thống đường sắt nối n thành phố sao cho khách hàng có thể đi bất cứ một thành phố nào đến bất kỳ một trong số các thành phố còn lại. Mặt khác, đòi hỏi chi phí để xây dựng hệ thống đường sắt là nhỏ nhất. Ứng dụng  Bài toán nối mạng máy tính Cần nối mạng một hệ thống gồm n máy vi tính. Biết chi phí nối máy i với máy j là c[i,j] (chi phí phụ thuộc vào độ dài cáp). Hãy tìm cách nối mạng sao cho tổng chi phí nối mạng là bé nhất. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 14 8.3. Cây tối đại ngắn nhất Chú ý • Trong các thuật toán tìm cây tối đại ngắn nhất chúng ta có thể bỏ đi  các khuyên;  hướng các cạnh;  đối với các cạnh song song thì có thể bỏ đi và chỉ để lại một cạnh trọng lượng nhỏ nhất trong chúng. Nhắc lại  MA TRẬN TRỌNG SỐ: LNxN : – Lij = trọng lượng cạnh nhỏ nhất nối i đến j (nếu có) – Lij =  nếu không có cạnh nối i đến j Nguyễn Văn Hiệu, 2012, Discrete Mathematics 15 8.3. Cây tối đại ngắn nhất Ví dụ Ma trận trọng số Nguyễn Văn Hiệu, 2012, Discrete Mathematics 16 C A B D E 12 7 15 6 5 5 10 16                      5106 5165 10157 6161512 5712 8.4. Xác định cây tối đại ngắn nhất Tiếp cạnh truyền thống  Liệt kê tất cả các cây khung của G  TÍNH TRỌNG LƯỢNG của mỗi cây tối đại của G  Chọn cây tối đại có trọng lượng bé nhất Tiếp cạnh truyền thống  Số cây khung của đồ thị đầy đủ Kn là n n-2 Nguyễn Văn Hiệu, 2012, Discrete Mathematics 17 thời gian cỡ nn-2 8.4. Xác định cây tối đại ngắn nhất KRUSKAL Input: đồ thị G=(X, E) liên thông, X gồm N đỉnh Output: cây tối đại ngắn nhất T=(V, U) của G KRUSKAL 1. Sắp xếp các cạnh trong G tăng dần theo trọng lượng; khởi tạo T := . 2. Lần lượt lấy từng cạnh e thuộc danh sách đã sắp xếp. Nếu T+{e} không chứa chu trình thì kết nạp e vào T: T := T+{e}. 3. Nếu T đủ N-1 cạnh thì dừng; ngược lại, lặp bước 2. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 18 8.4. Xác định cây tối đại ngắn nhất KRUSKAL Input: đồ thị G=(X, E) liên thông, X gồm N đỉnh Output: cây tối đại ngắn nhất T=(V, U) của G Mã giả KRUSKAL(...){ T = ʘ; while(|T| < n-1 && E!= ʘ) { E = E \{e} if(T hợp {e} không chu trình) T = T hợp {e}; } if((|T| < n-1 ) <Đồ thị không liên thông> } Nguyễn Văn Hiệu, 2012, Discrete Mathematics 19 8.4. Xác định cây tối đại ngắn nhất 20 20 4 9 8 14 16 18 33 17 1 2 3 4 5 6 Trọng số Cạnh 4 (3,5) 8 (4,6) 9 (4,5) 14 (5,6) 16 (3,4) 17 (1,3) 18 (2,3) 20 (2,4) 33 (1,2) Chọn Chọn Chọn Chọn Chọn. Dừng vì đã đủ cạnh. Không Không 8.4. Xác định cây tối đại ngắn nhất 21 9 8 18 17 1 2 4 5 6 3 20 4 9 8 14 16 18 33 17 1 2 3 4 5 6 8.4. Xác định cây tối đại ngắn nhất  E = {AD, DE, EB, AC, CC, FC, AF, CE, AB, BC, DB}  Trọng lượng: 32 Nguyễn Văn Hiệu, 2012, Discrete Mathematics 22 C A B D E F 10 12 9 7 15 6 5 5 10 8 16 8.4. Xác định cây tối đại ngắn nhất  E = ?  Trọng lượng = ? Nguyễn Văn Hiệu, 2012, Discrete Mathematics 23 16 26 5 10 3 2 12 14 30 4 18 8 8.4. Xác định cây tối đại ngắn nhất Cài đặt Graph Graph::MST_Kruskal() { //Tìm cây tối đại ngắn nhất của đồ thị có trọng } Nguyễn Văn Hiệu, 2012, Discrete Mathematics 24 8.4. Xác định cây tối đại ngắn nhất Nhược điểm thuật toán  Thuật toán Kruskal làm việc kém hiệu quả đối với những đồ thị dày.  Đồ thị có số cạnh m  n(n1)/2. Hướng tiếp cạnh  Sử dụng thuật toán Prim Nguyễn Văn Hiệu, 2012, Discrete Mathematics 25 8.4. Xác định cây tối đại ngắn nhất Prim Input: Đồ thị liên thông G=(X, E), X gồm N đỉnh Output: Cây tối đại ngắn nhất T=(V, U) của G Prim 1. Chọn tùy ý v  X và khởi tạo V := { v }; U := ; 2. Chọn cạnh e có trọng lượng nhỏ nhất trong các cạnh (w, v) mà w  X\V và v  V 3. V := V  {w}; U := U  {e} 4. Nếu U đủ N-1 cạnh thì dừng, ngược lại lặp từ bước 2. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 26 8.4. Xác định cây tối đại ngắn nhất • Thuật toán Kruskal làm việc kém hiệu quả đối với những đồ thị dày. • Đồ thị có số cạnh m  n(n1)/2. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 27 8.4. Xác định cây tối đại ngắn nhất Nguyễn Văn Hiệu, 2012, Discrete Mathematics 15 5 10 3 8 20 15 10 9 b a f e d c 15 5 10 3 8 20 15 10 9 b a f e d c 8.4. Xác định cây tối đại ngắn nhất E = ? Trọng lượng = ? Nguyễn Văn Hiệu, 2012, Discrete Mathematics 29 16 26 5 10 3 2 12 14 30 4 18 8 8.4. Xác định cây tối đại ngắn nhất Cài đặt Graph Graph::MST_Prim() { //Tìm cây tối đại ngắn nhất của đồ thị có trọng } Nguyễn Văn Hiệu, 2012, Discrete Mathematics 30 Bài tập 1. Chứng minh các định lý tương đương 2. Xác định số lượng cây tối đại của đồ thị dạng CÂY, CHU TRÌNH SƠ CẤP, ĐỦ, 3. Chứng minh tính đúng đắn của các giải thuật PRIM, KRUSKAL Nguyễn Văn Hiệu, 2012, Discrete Mathematics 31 Bài tập - Kruskal Bài tập - Prim 8.5. Cây có gốc Định nghĩa  CÂY CÓ HƯỚNG là đồ thị có hướng mà đồ thị nền của nó là một cây.  CÂY CÓ GỐC là một cây có hướng, trong đó có một đỉnh đặc biệt, gọi là gốc, từ gốc có đường đi đến mọi đỉnh khác của cây.  Chú ý: Trong cây có gốc thì gốc có bậc vào bằng 0, còn tất cả các đỉnh khác đều có bậc vào bằng 1. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 34 G1 G2 8.5. Cây có gốc Trong một cây có gốc thì v là đỉnh mức k khi và chỉ khi đường đi từ gốc đến v có độ dài bằng k. Mức lớn nhất của một đỉnh bất kỳ trong cây gọi là chiều cao của cây. Cây có gốc thường được vẽ như trong hình dưới đây để làm rõ mức của các đỉnh. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 35 8.5.Cây có gốc Định nghĩa  Cây T có gốc v0. Giả sử v0, v1, ..., vn là một đường đi trong T. Ta gọi:  vi+1 là con của vi và vi là cha  v0, v1, ..., vn-1 là các tổ tiên của vn  Đỉnh treo vn là đỉnh không có con; đỉnh treo cũng gọi là lá hay đỉnh ngoài;  Đỉnh không là lá gọi đỉnh trong. Định nghĩa  Một cây có gốc T gọi là CÂY m- PHÂN nếu mỗi đỉnh của T có nhiều nhất là m con.  Cây có gốc T gọi là CÂY m- PHÂN ĐẦY ĐỦ nếu mỗi đỉnh trong của T đều có m con. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 36 8.5. Cây có gốc Mệnh đề 1  Một cây m-phân đầy đủ có t đỉnh trong thì có m*t+1 đỉnh và có (m1)*t +1 lá. Ví dụ  Minh họa bài toán chuyển thư  Gọi T là một cây nhị phân đủ với N nút trong và có chiều cao h. Chứng minh rằng: h ≥ log2(N + 1) • Hướng dẫn: ai (0 ≤ i ≤ h) là số nút trong ở mức i. Ta có: a0 ≤ 2 0; ai ≤ 2ai-1 Nguyễn Văn Hiệu, 2012, Discrete Mathematics 37 8.5. Cây có gốc Mệnh đề 1  Một cây m-phân đầy đủ có t đỉnh trong thì có m*t+1 đỉnh và có (m1)*t +1 lá.  Minh họa bài toán chuyển thư Mệnh đề 2  Một cây m-phân có chiều cao h thì có nhiều nhất là mh lá.  Một cây m-phân có l lá thì có chiều cao h  [logml]. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 38 Tóm lại Các khái niệm và tính chất về cây và cây tối đại Thuật toán Kruskal Thuật toán Prim Khái niệm và tính chât về cây có gốc Nguyễn Văn Hiệu, 2012, Discrete Mathematics 39 THAT’S ALL; THANK YOU What NEXT? BÀI TOÁN TỐI ƯU TRÊN ĐỒ THỊ

Các file đính kèm theo tài liệu này:

  • pdf8_cay_va_cay_khung_3875.pdf
Tài liệu liên quan