1. Trang chủ
  2. » Giáo án - Bài giảng

CÂY và một số ỨNG DỤNG

26 268 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 109,5 KB

Nội dung

CHƯƠNG 11 CÂY VÀ MỘT SỐ ỨNG DỤNG NỘI DUNG  Khái niệm  Cây bao trùm  Cây bao trùm nhỏ  Cây bao trùm lớn  Cây phân cấp  Cây nhị phân  Cây biểu thức  Cây mã tối ưu 11.1 KHÁI NIỆM CÂY Khái niệm Cayley đưa vào năm 1857 Định nghĩa: Giả sử T = (V, E) đồ thị vô hướng T thỏa mãn hai tính chất sau: - liên thông, - chu trình VÍ DỤ 11.1 Đồ thị b a e d f c g Hình 11.1 Cây đỉnh 11.1 KHÁI NIỆM CÂY (tiếp) Định lý 11.1: Cho T đồ thị vô hướng có số đỉnh không Khi khẳng định sau tương đương: T T chu trình có n - cạnh T liên thông có n - cạnh T chu trình thêm cạnh nối hai đỉnh không kề có chu trình T liên thông bớt cạnh tính liên thông Chỉ có đường nối hai đỉnh 11.1 KHÁI NIỆM CÂY (tiếp) Chứng minh: Chú ý đồ thị T chu trình chu số 0, nghĩa là: m = n - p 1) ⇒ 2) : Vì p = m = n - p suy ra: m = n - 2) ⇒ 3) : m = n - p, m = n - p = 3) ⇒ 4) : p = 1, m = n - suy ra: m = n - p Vậy c(T) = 0, đồ thị T chu trình Thêm cạnh vào m tăng thêm n, p không đổi Khi chu số c(T) = m - n + p = Đồ thị có chu trình 11.1 KHÁI NIỆM CÂY (tiếp) Chứng minh: 4) ⇒ 5) : c(T) = nên m = n - p Phản chứng: đồ thị T không liên thông, có hai đỉnh a, b không liên thông Thêm cạnh (a, b) vào đồ thị chu trình Mâu thuẫn với điều 4) Vậy đồ thị phải liên thông, nghiã p = Suy ra: m = n - Khi bớt cạnh bất kỳ, đồ thị chu trình Do m - = n - p' Suy p' = đồ thị tính liên thông 11.1 KHÁI NIỆM CÂY (tiếp) Chứng minh: 5) ⇒ 6) : Đồ thị T liên thông nên có đường đơn nối cặp đỉnh Giả sử cặp đỉnh a, b nối hai đường đơn khác Khi có cạnh e thuộc đường không thuộc đường Ta bỏ cạnh e đi, đồ thị liên thông Trái với điều 5) 11.1 KHÁI NIỆM CÂY (tiếp) Chứng minh: 6) ⇒ 1) : Suy đồ thị T liên thông Phản chứng: T có chu trình Vậy hai đỉnh chu trình nối hai đường đơn khác Mâu thuẫn với điều 6) 11.2 CÂY BAO TRÙM  Định nghĩa 11.2 Giả sử G đồ thị vô hướng Cây T gọi bao trùm đồ thị G T đồ thị riêng G 10 11.2 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, bao trùm liên thông suy G liên thông ⇐: Chọn a đỉnh đồ thị G Ký hiệu: d(x) khoảng cách a đỉnh x Xây dựng tập đỉnh: D0 = {a}, Di = { x  d(x) = i } với i ≥ 12 11.2 CÂY BAO TRÙM (tiếp) a D0 D1 D2 Hình 11.4 Cách xây dựng bao trùm 13 11.2 CÂY BAO TRÙM (tiếp) Chú ý: Mỗi đỉnh x thuộc Di (i ≥ 1) có đỉnh y thuộc Di-1 cho (x, y) cạnh, < a, , y, x > đường ngắn nối a với x < a, , y > đường ngắn nối a với y y ∈ Di-1 14 11.2 CÂY BAO TRÙM (tiếp) Chứng minh: Lập tập cạnh T sau: Với đỉnh x đồ thị G, x ∈ Di với i ≥ 1, ta lấy cạnh nối x với đỉnh Di-1 Tập cạnh tạo nên đồ thị riêng G với n đỉnh n - cạnh Đồ thị riêng liên thông đỉnh nối với đỉnh a Theo tính chất 3) T Do vậy, T bao trùm đồ thị G 15 11.2 CÂY BAO TRÙM (tiếp) Định lý 11.3 (Borchardt): Số bao trùm đồ thị vô hướng đầy đủ n đỉnh nn –  Một số thuật toán tìm bao trùm: - Thuật toán sử dụng phương pháp duyệt theo chiều sâu - Thuật toán sử dụng phương pháp duyệt theo chiều rộng 16 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM  Thuật toán 11.1 (Tìm bao trùm phương pháp duyệt theo chiều sâu) Dữ liệu: Biểu diễn mảng DK danh sách kề đồ thị vô hướng G Kết quả: Cây bao trùm (V, T) đồ thị G 17 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp) Thuật toán procedure CBT_S (v) ; begin Duyet [v] := true ; for u ∈ DK[v] if ! Duyet [u] then begin T := T ∪ {(v, u)} ; CBT_S (u) end end ; 18 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp) BEGIN { Chương trình } for u ∈ V Duyet [u] := false ; 10 T := ∅ ; 11 CBT_S (z) ; { z đỉnh tuỳ ý đồ thị, trở thành gốc } 12 END 19 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp)  Tính đắn thuật toán: : Khi ta thêm cạnh (v, u) vào tập cạnh T đồ thị (V, T) có đường từ z tới v Vậy thuật toán xây dựng lên đồ thị liên thông Mỗi cạnh (v, u) thêm vào tập T có đỉnh v duyệt đỉnh u duyệt Vậy đồ thị xây dựng chu trình Theo tính chất phép duyệt theo chiều sâu, thủ tục CBT_S thăm tất đỉnh đồ thị liên thông G 20 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp)  Do vậy, đồ thị thuật toán xây dựng bao trùm đồ thị cho  Độ phức tạp thật toán là: O(n+m) 21 VÍ DỤ 11.3 Á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.5 Cây bao trùm đồ thị tìm theo phương pháp duyệt theo chiều sâu 22 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp)  Thuật toán 11.2 (Tìm bao trùm phương pháp duyệt theo chiều rộng) Dữ liệu: Biểu diễn mảng DK danh sách kề đồ thị vô hướng G Kết quả: Cây bao trùm (V, T) đồ thị G 23 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp) Thuật toán BEGIN for u ∈ V Duyet [u] := false ; T := ∅ ; Q := ∅ ; enqueue z into Q ; { z đỉnh tuỳ ý đồ thị gốc } Duyet [z] := true ; 24 11.3.THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp) 10 11 12 13 14 15 while Q ≠ ∅ begin deqưeue v from Q ; for u ∈ DK[v] if ! Duyet [u] then begin enqueue u into Q ; Duyet [u] := true ; T := T ∪ {(v, u)} end end END 25 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp)  Độ phức tạp thuật toá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 26 [...]... nối x với một đỉnh trong Di-1 Tập cạnh này sẽ tạo nên một đồ thị riêng của G với n đỉnh và n - 1 cạnh Đồ thị riêng này liên thông vì mỗi đỉnh đều được nối với đỉnh a Theo tính chất 3) của cây thì T là một cây Do vậy, T là cây bao trùm của đồ thị G 15 11.2 CÂY BAO TRÙM (tiếp) Định lý 11.3 (Borchardt): Số cây bao trùm của một đồ thị vô hướng đầy đủ n đỉnh là nn – 2  Một số thuật toán tìm cây bao trùm:... b c d e Hình 11.2 Đồ thị có cây bao trùm Một số cây bao trùm của G: a b a b c d e c d e Hình 11.3 Hai cây bao trùm của đồ thị G 11 11.2 CÂY BAO TRÙM (tiếp)  Định lý 11.2: Đồ thị vô hướng G có cây bao trùm ⇔ G liên thông Chứng minh: ⇒: Hiển nhiên, vì cây bao trùm liên thông suy ra G liên thông ⇐: Chọn a là một đỉnh bất kỳ trong đồ thị G Ký hiệu: d(x) là khoảng cách giữa a và đỉnh x Xây dựng các tập... { x  d(x) = i } với i ≥ 1 12 11.2 CÂY BAO TRÙM (tiếp) a D0 D1 D2 Hình 11.4 Cách xây dựng cây bao trùm 13 11.2 CÂY BAO TRÙM (tiếp) Chú ý: Mỗi đỉnh x thuộc Di (i ≥ 1) đều có đỉnh y thuộc Di-1 sao cho (x, y) là một cạnh, vì nếu < a, , y, x > là đường đi ngắn nhất nối a với x thì < a, , y > là đường đi ngắn nhất nối a với y và y ∈ Di-1 14 11.2 CÂY BAO TRÙM (tiếp) Chứng minh: Lập tập cạnh T như sau:... tìm cây bao trùm: - Thuật toán sử dụng phương pháp duyệt theo chiều sâu - Thuật toán sử dụng phương pháp duyệt theo chiều rộng 16 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM  Thuật toán 11.1 (Tìm cây bao trùm bằng phương pháp duyệt theo chiều sâu) Dữ liệu: Biểu diễn mảng DK các danh sách kề của đồ thị vô hướng G Kết quả: Cây bao trùm (V, T) của đồ thị G 17 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp) Thuật toán 1... được thêm vào tập T có đỉnh v đã được duyệt và đỉnh u đang duyệt Vậy đồ thị đang được xây dựng không có chu trình 3 Theo tính chất của phép duyệt theo chiều sâu, thủ tục CBT_S thăm tất cả các đỉnh của đồ thị liên thông G 20 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp)  Do vậy, đồ thị do thuật toán xây dựng là một cây bao trùm của đồ thị đã cho  Độ phức tạp của thật toán là: O(n+m) 21 VÍ DỤ 11.3 Áp dụng thuật... ta nhận được cây bao trùm (nét đậm) như sau: 2 1 5 6 3 4 8 9 7 Hình 11.5 Cây bao trùm của đồ thị tìm theo phương pháp duyệt theo chiều sâu 22 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp)  Thuật toán 11.2 (Tìm cây bao trùm bằng phương pháp duyệt theo chiều rộng) Dữ liệu: Biểu diễn mảng DK các danh sách kề của đồ thị vô hướng G Kết quả: Cây bao trùm (V, T) của đồ thị G 23 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM... là đỉnh tuỳ ý của đồ thị và là gốc của cây } 6 Duyet [z] := true ; 24 11.3.THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp) 7 8 9 10 11 12 13 14 15 while Q ≠ ∅ do begin deqưeue v from Q ; for u ∈ DK[v] do if ! Duyet [u] then begin enqueue u into Q ; Duyet [u] := true ; T := T ∪ {(v, u)} end end END 25 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp)  Độ phức tạp của thuật toán: O(m+n) Ví dụ: Áp dụng thuật toán trên cho... T ∪ {(v, u)} ; CBT_S (u) end 7 end ; 18 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp) 8 BEGIN 9 { Chương trình chính } for u ∈ V do Duyet [u] := false ; 10 T := ∅ ; 11 CBT_S (z) ; { z là đỉnh tuỳ ý của đồ thị, sẽ trở thành gốc của cây } 12 END 19 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp)  Tính đúng đắn của thuật toán: : 1 Khi ta thêm cạnh (v, u) vào tập cạnh T thì trong đồ thị (V, T) đã có đường đi từ z tới... T ∪ {(v, u)} end end END 25 11.3 THUẬT TOÁN TÌM CÂY BAO TRÙM (tiếp)  Độ phức tạp của thuật toán: O(m+n) Ví dụ: Áp dụng thuật toán trên cho đồ thị (nét mảnh) ta nhận được cây bao trùm (nét đậm) như sau: 2 1 5 6 3 4 9 7 Hình 11.6 Cây bao trùm của đồ thị tìm theo phương pháp duyệt theo chiều rộng 26 ... DUNG  Khái niệm  Cây bao trùm  Cây bao trùm nhỏ  Cây bao trùm lớn  Cây phân cấp  Cây nhị phân  Cây biểu thức  Cây mã tối ưu 11.1 KHÁI NIỆM CÂY Khái niệm Cayley đưa vào năm 1857 Định nghĩa:... chu trình Thêm cạnh vào m tăng thêm n, p không đổi Khi chu số c(T) = m - n + p = Đồ thị có chu trình 11.1 KHÁI NIỆM CÂY (tiếp) Chứng minh: 4) ⇒ 5) : c(T) = nên m = n - p Phản chứng: đồ thị T không... bao trùm đồ thị G 15 11.2 CÂY BAO TRÙM (tiếp) Định lý 11.3 (Borchardt): Số bao trùm đồ thị vô hướng đầy đủ n đỉnh nn –  Một số thuật toán tìm bao trùm: - Thuật toán sử dụng phương pháp duyệt theo

Ngày đăng: 29/12/2015, 21:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN