Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
534,78 KB
Nội dung
Chương Cây CHƯƠNG CÂY I CÂY VÀ TÍNH CHẤT Cây khái niệm toán học dùng mô hình hoá cho nhiều toán thực tế Một hình ảnh đơn giản mô hình dòng họ biểu diễn qua phả hệ Trong thường có đỉnh nút đỉnh nút có nhiều nhánh nhánh xem Định nghĩa : Cây đồ thị vô hướng, liên thông chu trình Ví dụ 1: Cây phả hệ biểu diễn quan hệ cha con, ông cháu dòng họ Cây thư mục biểu diễn quan hệ thư muc file đĩa Cây biểu diễn phân tử chất hữu Cây tổ chức quan, xí nghiệp biểu diễn mối quan hệ phụ thuộc Ban giám đốc, phòng ban, phân xưởng Ví dụ 2: Chú ý : Từ định nghĩa ta thấy đồ thị đơn (không có cung bội) khuyên Tính chất Định lý 1: : Cho G = (V, E) đồ thị với |V| = n Khi tính chất sau tương đương : G (đồ thị liên thông chu trình) G đồ thị có n - cạnh chu trình G đồ thị có n - cạnh liên thông G đồ thị chu trình nối đỉnh không kề tạo thành chu trình G G đồ thị liên thông xoá cạnh G không liên thông Mỗi cặp đỉnh G nối với đường Định lý 2: Số đỉnh treo (đỉnh có bậc 1) luôn Chương Cây II CÂY CÓ GỐC (CÂY PHÂN CẤP) Định nghĩa Một với đỉnh đặc biệt làm gốc đỉnh phân cấp cha Tất đỉnh kề đỉnh gốc gọi đỉnh đỉnh gốc đỉnh gốc đỉnh cha Quan hệ cha định nghĩa lặp lại cho đỉnh khác Khi ta gọi phân cấp có gốc ngắn gọn Một số đặc trưng có gốc Mức đỉnh định nghĩa đệ qui sau : Đỉnh gốc có mức Nếu đỉnh có mức k tất đỉnh có mức k+1 Bậc đỉnh : số đỉnh đỉnh Tầng : Tập hợp đỉnh mức k tạo thành tầng thứ k Độ cao (sâu) : Số tầng cây, tức độ dài đường từ gốc xuống đến đỉnh có tầng lớn (sâu) Đỉnh trong, : Đỉnh có đỉnh gọi đỉnh trong, ngược lại gọi gọi đỉnh Chú ý thông số phụ thuộc việc chọn đỉnh để làm gốc Cây m-phân a Định nghĩa Cây gọi m-phân đỉnh có không m có đỉnh có m (nếu đỉnh đạt đủ m con, gọi mphân suy biến) Cây m-phân đầy đủ tất đỉnh có m Cây m-phân cân mức chênh không Cây m-phân cân hoàn toàn mức Trường hợp với m = gọi nhị phân Cây nhị phân đầy đủ có đỉnh có gọi trái phải Sẽ xét riêng mục sau Ví dụ 3: Cây tam phân Cây tam phân đầy đủ Cây tam phân cân Cây tam phân cân hoàn toàn Chương Cây Cây tam phân đầy đủ, cân Cây tam phân đầy đủ, cân hoàn toàn b Tính chất m-phân đầy đủ Ký hiệu số đỉnh m-phân đầy đủ n với I đỉnh L (n = I + L) Định lý 3: Cây m-phân đầy đủ với n đỉnh có i n = mI + 1, L = (m-1)I + (Cho I, tìm n L) ii I = (n-1)/m ; L = [(m-1)n + 1]/m (Cho n, tìm I L) iii n = (mL -1)/(m-1) ; I = (L-1)/(m-1) (Cho :L, tìm n I) Chứng minh: Do đỉnh (trừ đỉnh gốc) đỉnh đó, mặt khác có i đỉnh nên có mi đỉnh + đỉnh gốc Từ ta có n = mi + Các đẳng thức lại suy từ việc giải hệ phương trình: n = I + L n = mi + Ví dụ : Trò chơi gửi thư dây chuyền Giả sử người viết thư gửi cho người Mỗi người nhận thư lặp lại tương tự Hỏi có người nhận thư (giả sử người nhận nhất) trò chơi chấm dứt có 100 người nhận thư mà chưa gửi cho Dễ thấy biểu diễn trò chơi thành tứ phân đầy đủ với 100 Tức L = 100 Khi số người nhận thư tất đỉnh (trừ gốc) Số đỉnh i = (l-1)/(m-1) = 99/3 = 33 Vậy số người nhận thư 33 - = 32 (số đỉnh n = l + i = 133) Định lý 4: Một m-phân với độ cao h có không mh Chứng minh: Qui nạp theo chiều cao Hệ : h logml (đẳng thức xảy m-phân đầy đủ) c Các phương pháp duyệt : Lấy gốc làm chuẩn Ưu tiên theo chiều rộng : duyệt từ gốc đến đỉnh tầng từ trái sang phải, tiếp tục đến tầng hết Ưu tiên theo chiều sâu : duyệt từ gốc đến bên trái lặp lại trình duyệt theo bên trái Quay lui lên đỉnh cha chuyển sang phải, lại lặp trình xuống theo bên trái Quá trình lặp lại đệ qui duyệt hết đỉnh (luôn lấy tiêu chí xuống theo bên trái quy lui xuống Chương Cây theo bên phải) Theo thứ tự trước : duyệt gốc trước đến bên trái, đến bên phải (quá trình đệ qui) Theo thứ tự : Duyệt bên trái, duyệt đến gốc (giữa), đến bên phải (quá trình đệ qui) Theo thứ tự sau : Duyệt bên trái, duyệt bên phải duyệt gốc sau (quá trình đệ qui) Ví dụ 4: Cho theo hình, liệt kê đỉnh theo phương pháp duyệt A B E G F K J I D C Ưu tiên theo chiều ngang : Ưu tiên theo chiều sâu : Theo thứ tự trước : Theo thứ tự : Theo thứ tự sau : H M L N O ABCDEFGHIJKLMNO ABEIFJKCDGLHMNO ABEIFJKCDGLHMNO IEBJFKACLGDMHNO IEJKFBCLGMNOHCA Chú ý: Nếu có xem bên trái Các phép duyệt theo chiều sâu thứ tự trước cho kết III MỘT SỐ ỨNG DỤNG Cây biểu thức : Dùng để biểu diễn biểu thức dạng infix Đây nhị phân, đỉnh phép toán, hạng thức Khi duyệt biểu thức cho lại công thức viết dạng infix + - * + 12 - x * y x / y Biểu thức : (12 + x)(5 – y) + xy – 3/4 4 Chương Cây Cây định Biểu diễn kết định trình Mỗi đỉnh biểu diễn phương án, cung biểu diễn kết phương án biểu diễn định cuối Ví dụ 5: Cho đồng tiền giống có đồng tiền giả biết nhẹ so với đồng lại Có thể dùng cân bàn để phát đồng tiền giả Hãy vẽ định Dựa vào phương án cân thể qua định, cho biết số lần cân tối đa để phát đồng tiền giả ? Lời giải : Chia đồng tiền thành nhóm 3-3-2, cân nhóm với nhau, dựa vào kết để chia tiếp thành nhóm định kết cuối Dưới ví dụ biểu diễn phương pháp giải định Trong đỉnh biểu diễn cách cân, cung kết lần cân Cuối cùng, thể định đồng tiền giả (giả thiết đồng tiền kí hiệu từ đến 8) 123/456 > 7/8 4/5 > < = = < > 1/2 < > = < Do độ cao nên cần lần cân phát đồng tiền giả Chú ý : Có thể mở rộng với đồng Phương pháp tương tự Cây tìm kiếm nhị phân a Định nghĩa Là nhị phân có giá trị trái < giá trị gốc < giá trị phải Mục đích : biểu diễn danh sách thành nhị phân để rút ngắn thời gian tìm kiếm b Tạo tìm kiếm nhị phân (bổ sung phần tử x vào T): Procedure insertion(T: Cây tìm kiếm nhị phân, x: phần tử) { v := gốc T while v # null and label(v) # x begin if x < label(v) then if bên trái v # null then v := bên trái v else thêm đỉnh bên trái v đặt v := null else if bên phải v # null then v := bên phải v else thêm đỉnh bên phải v đặt v := null Chương Cây end; if gốc T = null then thêm đỉnh r vào gán nhãn x else if label(v) # x then gán nhãn cho đỉnh x Ví dụ 6: Cho danh sách 32, 45, 20, 16, 11, 38, 18, 40, 52, 26 Xây dựng tìm kiếm nhị phân ? 32 20 45 16 11 26 38 18 52 40 Chú ý: Thay đổi thứ tự liệu cho kết khác c Tìm kiếm Để tìm phần tử x, so sánh x với gốc, x < gốc ta tìm xuống bên trái, x = gốc trả lời có dừng, x > gốc ta ttìm xuống bên phải Nếu tìm đến mà chưa gặp x trả lời dừng Số bước tìm kiếm trường hợp xấu (x danh sách) chiều cao (nếu cân chiều cao h = log2n) d Duyệt Gồm cách duyệt trình bày có gốc nói chung Ví dụ 7: Lấy đồ thị tạo trên, kết duyệt gồm: Ưu tiên theo chiều ngang : 32 20 45 16 26 38 52 11 18 40 Ưu tiên theo chiều sâu : 32 20 16 11 18 26 45 38 40 52 Theo thứ tự trước : 32 20 16 11 18 26 45 38 40 52 Theo thứ tự : 11 16 18 20 26 32 38 40 45 52 Theo thứ tự sau : 11 18 16 26 20 40 38 52 45 32 Các phép duyệt theo chiều sâu thứ tự trước cho kết Phép duyệt cho kết dãy liệu tăng dần Đây ý tưởng để xây dựng thuật toán xếp IV CÂY KHUNG (CÂY BAO TRÙM) CỦA MỘT ĐỒ THỊ Cây khung Cho G = (V, E) đơn đồ thị Một khung đồ thị đồ thị G tập đỉnh V Từ định nghĩa thấy khung Định lý 5: Một đơn đồ thị có khung liên thông Chương Cây Chứng minh: Giả sử G có khung T Do T G T liên thông, mặt khác V(T) = V(G) nên G liên thông Ngươck lại giả thiết G liên thông Nếu G chứa chu trình đơn Xoá cạnh chu trình (tập đỉnh nguyên, tính liên thông không mất) Lặp lại đến hết chu trình đfcm Cây khung nhỏ Cho G = (V, E, ) đơn đồ thị với hàm trọng số cung Cây khung nhỏ khung có tổng trọng số nhỏ Thuật toán dựng khung a Chiều rộng Chọn gốc ghép tất cạnh liên thuộc gốc (tạo tầng cây) Tiếp tục tạo tầng (không chọn đỉnh tạo để khỏi tạo chu trình), lặp hết số đỉnh b Chiều sâu (quay lui) Xuất phát từ đỉnh gốc bất kỳ, ghép thêm cạnh thành đường đỉnh cuối Nếu tập đỉnh chưa V quay lại bước để rẽ nhánh Nếu không quay lui rẽ nhánh tiếp Lặp lại tập đỉnh V Thuật toán tìm khung nhỏ a Thuật toán Prim (1957) Xuất phát từ cạnh có trọng số nhỏ Lần lượt ghép vào tất cạnh liên thuộc với đỉnh không tạo chu trình Kết thúc ghép n -1 cạnh Begin T := ; Chọn e cạnh có trọng số bé ; T := T {e}; For i:=1 to n-2 Begin Chọn e có trọng số bé nhất, không tạo chu trình với T, liên thuộc với T T = T {e}; End; End b Thuật toán Kruskal Procedure Kruskal(G) Begin T := ; For i:=1 to n-1 Begin Chọn e có trọng số bé nhất, không tạo chu trình với T; T = T {e}; End; End Chương Cây Ví dụ 8: Cho đồ thị hình, tìm khung ngắn a b 3 f c 4 g d e 5 h i j Kết quả: Thuật toán Prim a STT Cung Trọng số STT Cung Trọng số (a,b) 1 (a,b) (b,f) (e,j) (f,g) 3 (d,e) (b,c) 4 (b,g) (b,h) (g,f) (h,i) (h,b) (h,e) (c,i) (e,j) (h,i) (e,d) (h,e) Tổng 27 Tổng 27 b 3 f Thuật toán Kruskal c d e h a b j i Cây khung ngắn (theo Prim) c g f g d h i Cây khung ngắn (theo Kruskal) I CÂY Chứng minh tương đương cặp tính chất định lý Ghi chú: để tính số cạnh : e 4 BÀI TẬP j Chương Cây Sử dụng công thức: c = e – v + p, c số chu trình độc lập (2 chu trình độc lập không chứa nhau), e số cung, v số đỉnh, p số thành phần liên thông đồ thị Hoặc biểu diễn thành có gốc từ đếm số cạnh có gốc Với m, n Km,n ? Có n đỉnh không đẳng cấu với đôi với n = 3, n = 4, n = ? Chứng minh tô màu II CÂY M-PHÂN Các đề mục chương sách đánh số thành mức: I, II, III, …; 1, 2, 3, …; a, b, c, … Hãy vẽ cấu trúc đề mục chương thành m-phân m ? Chứng minh từ (không gốc) việc chọn đỉnh làm gốc cho có gốc Có có gốc n đỉnh không đẳng cấu với đôi với n = 3, n = 4, n = ? (Cây có gốc xem đồ thị có hướng với hướng từ gốc đỉnh lá) Giả sử có 15 xử lý hoạt động song song Cần bước để cộng 16 số Vẽ thể bước tính toán Cây tứ phân đầy đủ với 100 đỉnh có ? 10 Cây tam phân đầy đủ với 100 đỉnh có đỉnh ? 11 Cây nhị phân đầy đủ với 100 có cạnh ? 12 Có tồn m-phân đầy đủ với 76 chiều cao ? 13 Có tồn m-phân đầy đủ với 84 chiều cao ? 14 Cho m phân cân đầy đủ với 81 chiều cao Tìm m ? 15 Cây m-phân đầy đủ, cân hoàn toàn với chiều cao h có đỉnh ? 16 Liệt kê danh sách đỉnh theo phương pháp duyệt học A B D I E J C F K G H L M 17 Cần dùng lần cân (bằng cân bàn đĩa) để phát đồng xu giả (trọng lượng khác với đồng xu thật) 12 đồng xu Mô tả thuật toán định 18 Hãy tạo tìm kiếm nhị phân lưu danh sách tên sinh viên sau: Minh, Thanh, Phương, Hồng, Tú, Linh, Hạnh, An, Khánh 19 Cho dãy số 32 51 24 48 16 04 19 25 37 50 40 49 Hãy xếp dãy số thông qua tìm Chương Cây kiếm nhị phân 20 Hãy mô tả thuật toán xếp nhờ vào tìm kiếm nhị phân Cho biết độ phức tạp xấu thuật toán III CÂY KHUNG 21 Cần xóa cạnh đồ thị liên thông với n đỉnh m cạnh để nhận khung đồ thi ? 22 Vẽ tất khung đồ thị sau a b K4 K2,3 C5 23 Có khung khác Kn, Kn,m; Qn, Cn, Wn 24 Kn có khung không đẳng cấu đôi với n = 3, 4, 25 Trong trường hợp nào, đồ thị có khung nhỏ ? 26 Tìm khung nhỏ đồ thị : b d a f c e 10 27 Cho mạng máy tính chi phí nối mạng máy cho theo bảng a a b c d e f g h i 10 b 3 c d 2 2 1 2 e 1 4 f h i 2 1 g 2 2 Chương Cây Hãy thiết kế lại mạng với tổng phí tổn nhất, cho máy liên lạc với Cho biết phí tổn 28 Cho mạng giao thông nối huyện chi phí làm đường huyện cho theo bảng Hãy thiết kế lại mạng với tổng phí tổn nhất, cho huyện lại với Cho biết phí tổn a a b c d e f g h i 11 b 10 10 c d 20 40 40 20 30 10 20 10 e 30 10 20 50 50 20 f h i 20 20 30 20 20 10 10 10 20 30 20 g 40 40 20 20 20 [...].. .Chương 5 Cây Hãy thiết kế lại mạng với tổng phí tổn ít nhất, sao cho giữa 2 máy bất kỳ vẫn liên lạc được với nhau Cho biết phí tổn đó 28 Cho mạng giao thông nối các huyện và chi phí làm đường giữa các huyện