Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
636,98 KB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÀI GIẢNG MƠN TỐN RỜI RẠC Giảng viên: TH.S Phan ThỊ Hà Điện thoại/E-mail: hathiphan@yahoo.com Bộ môn: Công nghệ phần mềm Học kỳ/Năm biên soạn:I/2009-2010 CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC CHƯƠNG 6.CÂY VÀ CÂY KHUNG CỦA ĐỒ THỊ Mở đầu Các ứng dụng Các phương pháp duyệt Cây khung đồ thị Cây khung nhỏ www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC MỞ ĐẦU Định nghĩa Cây đồ thị vô hướng, liên thơng khơng có chu trình đơn Vì khơng thể có chu trình đơn, nên khơng thể có cạnh bội khun Vậy đồ thị đơn Định nghĩa Một đồ thị khơng có chu trình đơn khơng liên thơng gọi rừng www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC MỞ ĐẦU Cây thường định nghĩa đồ thị vô hướng, cặp đỉnh ln tồn đường đơn Định lý sau cho thấy đồ thị vơ hướng tính liên thơng khơng có chu trình đơn tương đương với tính tồn đường đơn cặp đỉnh www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CƠNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC MỞ ĐẦU Định lý Một đồ thị vô hướng cặp đỉnh ln tồn đường đơn Định nghĩa Cây có gốc gọi m-phân tất đỉnh khơng có m Cây gọi mphân (strict) đỉnh có m Cây m-phân với m = gọi nhị phân Cây có gốc (hay có thứ tự) có gốc đỉnh xếp theo thứ tự định Cây có gốc vẽ cho đỉnh thứ tự từ trái qua phải Trong nhị phân có thứ tự, đỉnh có hai con, thứ gọi bên trái thứ hai bên phải Cây có gốc bên trái đỉnh gọi bên trái, tương tự ta có định nghĩa bên phải www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MÔN TỐN RỜI RẠC MỞ ĐẦU Những tính chất Định lý Cây với n đỉnh có n-1 cạnh Định lý Cây m-phân với i đỉnh có tất n = m*i + đỉnh Định lý Cây m-phân với a) Nếu có n đỉnh số đỉnh i = (n-1)/m số l = ((m-1)n+1 )/m b) Nếu có i đỉnh số đỉnh n = m.i + số l=(m-1)i+1 c) Nếu có l số đỉnh : www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CƠNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC MỞ ĐẦU Định nghĩa Mức đỉnh v có gốc độ dài đường từ gốc tới Mức gốc định nghĩa không Độ cao mức cao tất đỉnh Nói cách khác độ cao có gốc chiều dài đường dài từ gốc tới đỉnh Cây m-phân có gốc độ cao h gọi cân đối tất mức h h-1 www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC Cây AVL nhị phân cho đỉnh chiều cao trái phải khác không Vậy AVL trường hợp đặc biệt nhị phân cân đối: AVL nhị phân cân đối, ngược lại nói chung khơng Cây m-phân hồn tồn(complete) mphân mức www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC MỞ ĐẦU Định lý Có nhiều mh mphân, độ cao h Hệ Nếu m-phân có chiều cao h có l lá, h≥ ⎡logml⎤ Nếu m-phân cân đối, h = ⎡logm l⎤ (Nhớ lại ⎡x⎤ số nguyên nhỏ không bé x) www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CƠNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC CÁC ỨNG DỤNG CỦA CÂY Chúng ta nghiên cứu ba tốn mơ hình Các phần tử danh sách lưu trữ để dễ dàng định vị chúng? Hãy xác định dãy định để tìm đối tượng có tính chất tập hợp đối tượng thuộc loại Cần phải mã hóa tập chữ dãy nhị phân để có hiệu nhất? www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MÔN 11.3 THUẬT TỐN TÌM CÂY TRÙM TỐN RỜIBAO RẠC (tiếp) Thuật toán BEGIN for u ∈ V Duyet [u] := false ; T := ∅ ; Q := ∅ ; pus_queue z into Q ; { z đỉnh tuỳ ý đồ thị gốc } Duyet [z] := true ; while Q ≠ ∅ begin pop_qưeue v from Q ; for u ∈ DK[v] if ! Duyet [u] then begin in-queue u into Q ; Duyet [u] := true ; T := T ∪ {(v, u)} end end END 10 11 12 13 14 15 www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MÔN TỐN RỜI RẠC 11.3.THUẬT TỐN TÌM CÂY BAO TRÙM (tiếp) www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CƠNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC THUẬT TỐN TÌM CÂY BAO TRÙM (tiếp) Độ phức tạp thuật tốn: O(m+n) Ví dụ: Áp dụng thuật toán cho đồ thị (nét mảnh) ta nhận bao trùm (nét đậm) sau: Hình 11.6 Cây bao trùm đồ thị tìm theo phương pháp duyệt theo chiều rộng www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MÔN CÂY BAO TRÙM NHỎ NHẤT TOÁN RỜI RẠC KN bao trùm Thuật tốn tìm bao trùm nhỏ www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CƠNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC CÂY BAO TRÙM NHỎ NHẤT Bài toán: Cho đồ thị vô hướng G liên thông với tập cạnh E hàm trọng số c : E → N Tìm bao trùm T G cho tổng trọng số cạnh T đạt giá trị nhỏ Một số thuật tốn tìm bao trùm nhỏ nhất: - Thuật toán Kruskal - Thuật toán Prim www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MƠN: CƠNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC THUẬT TỐN KRUSKAL Thuật tốn: Chọn cạnh có trọng số bé nhất, ký hiệu e1 đặt W := {e1} Giả sử chọn W = {e1, e2, , ei} Chọn ei+1 cạnh có trọng số bé số cạnh lại E \ W cho {e1, e2, , ei, ei+1} khơng chứa chu trình Bổ sung: W := W ∪ {ei+1} Lặp lại bước – chừng cịn www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC THUẬT TOÁN KRUSKAL (tiếp) Định lý 11.4 : Tập cạnh W tìm theo thuật tốn Kruskal tạo nên bao trùm nhỏ đồ thị G Thuật toán Kruskal chi tiết procedure Kruskal ; begin W := ∅ ; Z := E ; www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MƠN: CƠNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC THUẬT TỐN KRUSKAL (tiếp) Thuật tốn Kruskal chi tiết procedure Kruskal ; begin W := ∅ ; Z := E ; while (|W| < n -1) and (Z ≠ ∅) begin chọn cạnh e có trọng số bé Z ; Z := Z \ {e} ; if W ∪ {e} khơng chứa chu trình then W := W ∪ {e} end ; 10 if |W| < n -1 then writeln(″Đồ thị không liên thông″) 11 end ; www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC VÍ DỤ Đồ thị có trọng số bao trùm nhỏ nhất: 1 1 6 2 Hình 11.10 Đồ thị trọng số bao trùm nhỏ www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC THUẬT TỐN PRIM Thuật toán Prim Prim cải tiến thuật toán Kruskal sau: vòng lặp ta chọn cạnh có trọng số bé số cạnh kề với cạnh chọn mà không tạo nên chu trình www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MƠN: CƠNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC THUẬT TỐN PRIM (tiếp) Thuật tốn Prim gọi phương pháp lân cận gần nhất: đỉnh a đồ thị G ta nối với đỉnh “gần” nhất, chẳng hạn b Nghĩa là, cạnh (a, b) chọn có trọng số bé Tiếp theo, số cạnh kề với đỉnh a đỉnh b ta chọn cạnh có trọng số bé mà khơng tạo nên chu trình với cạnh (a, b) Cạnh dẫn đến đỉnh thứ ba c Tiếp tục trình nhận gồm n đỉnh n-1 cạnh Đó bao trùm nhỏ www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC THUẬT TỐN PRIM (tiếp) procedure Prim ; begin W := {cạnh có trọng số bé }; for i := to n - begin e := cạnh có trọng số bé kề với cạnh W ghép vào W khơng tạo nên chu trình ; W := W ∪ {e} end end ; www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC CÂY BAO TRÙM NHỎ NHẤT (tiếp) Định lý 11.5 Trong đồ thị vơ hướng có trọng số đơi khác nhau, bao trùm nhỏ tồn Chứng minh: Vì vịng lặp có cạnh chọn www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC CÂY BAO TRÙM LỚN NHẤT Trong thuật toán Kruskal Prim ta khơng ràng buộc dấu trọng số, nên áp dụng cho đồ thị vô hướng với trọng số cạnh có dấu tuỳ ý www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC CÂY BAO TRÙM LỚN NHẤT (tiếp) Để tìm bao trùm lớn ta có hai cách: Đổi thành dấu - cho trọng số cạnh áp dụng hai thuật tốn trình bày để tìm bao trùm nhỏ Sau đổi dấu + trở lại, ta bao trùm lớn Sửa đổi thuật tốn: bước “chọn cạnh có trọng số bé “ thay “chọn cạnh có trọng số lớn “ cịn bước khác giữ ngun Khi thuật toán kết thúc, ta nhận bao trùm lớn www.ptit.edu.vn CuuDuongThanCong.com GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt ... GIẢNG MƠN TỐN RỜI RẠC 1 2 www.ptit.edu.vn CuuDuongThanCong.com 4 GIẢNG VIÊN: TH.S.PHAN THỊ HÀ BỘ MÔN: CÔNG NGHỆ PHẦN MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC PHƯƠNG PHÁP... MỀM https://fb.com/tailieudientucntt BÀI GIẢNG MƠN TỐN RỜI RẠC CÂY BAO TRÙM (tiếp) Định lý 11 .2: Đồ thị vơ hướng G có bao trùm ⇔ G liên thông Chứng minh: ⇒ : Hiển nhiên ⇐ : Chọn a đỉnh đồ thị... (tiếp) TOÁN RỜI RẠC Định lý 11.3 (Borchardt): Số bao trùm đồ thị vô hướng đầy đủ n đỉnh nn – Một số thuật tốn tìm bao trùm: - Thuật tốn sử dụng phương pháp duyệt theo chiều sâu - Thuật toán sử