Khi thêm cạnh (a, b) vào đồ thị vẫn không làm xuất hiện chu trình. Mâu thuẫn với điều 4). Khi bớt đi một cạnh bất kỳ, đồ thị vẫn không có chu trình. Giả sử cặp đỉnh a, b được nối bằng[r]
(1)BÀI 18
Chương 11
Cây số ứng dụng
Trong chương ta xét dạng đặc biệt có nhiều ứng dụng đồ thị vơ hướng Đó khái niệm
11.1 Cây
Khái niệm Cayley đưa vào năm 1857
Định nghĩa 11.1: Giả sử T = (V, E) đồ thị vơ hướng Ta nói đồ thị T
một liên thơng khơng có chu trình Ví dụ 11.2: Đồ thị
Hình 11.1 Cây đỉnh
Kết cho số tính chất lý thú dùng làm định nghĩa cho
Định lý 11.1 Với đồ thị vơ hướng T có số đỉnh khơng 2, tính chất sau
đây tương đương: T
T chu trình có n-1 cạnh T liên thơng có n-1 cạnh
T khơng có chu trình, thêm cạnh nối hai đỉnh khơng kề xuất chu trình
T liên thơng, bớt cạnh tính liên thơng Mỗi cặp đỉnh nối với đường đơn
Chứng minh:
Chú ý đồ thị T khơng có chu trình chu số 0, nghĩa là: m = n - p
1) ⇒ 2) : Vì p = m = n - p suy ra: m = n -
(2)2) ⇒ 3) : m = n - p, m = n - p =
3) ⇒ 4) : p = 1, m = n - suy ra: m = n - p Vậy chu số đồ thị T = 0, đồ thị T khơng có chu trình Thêm cạnh vào m tăng thêm cịn n, p khơng đổi Khi chu số c = m - n + p = Đồ thị có chu trình
4) ⇒ 5) : c = nên m = n - p
Giả sử ngược lại, đồ thị T không liên thông Thế có hai đỉnh a, b khơng liên thông Khi thêm cạnh (a, b) vào đồ thị khơng làm xuất 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ị khơng có chu trình Do m - = n - p' Thế p' = đồ thị tính liên thơng
5) ⇒ 6) : Vì đồ thị T liên thơng nên cặp đỉnh có đường đơn nối chúng 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)
6) ⇒ 1) : Suy đồ thị T liên thơng
Giả sử 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 đồ thị
Giả sử G đồ thị vô hướng 11.2.1 Cây bao trùm
Định nghĩa 11.3: Cây T gọi bao trùm đồ thị G T
đồ thị riêng G
Ví dụ 11.4: Đồ thị G cho hình vẽ
(3)và số bao trùm G là:
Hình 11.3 Hai bao trùm đồ thị
Cây bao trùm có nhiều ứng dụng tốn điều khiển giao thơng, nối mạng điện …
Đị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) độ dài đường ngắn nối đỉnh a với đỉnh x Lần lượt xây dựng tập hợp
D0 = {a}
Di = {x⏐d(x) = i} với i ≥
Hình 11.4 Cách xây dựng bao trùm
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
Ta 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
(4)đỉnh nối với đỉnh a Theo tính chất 3) T Do vậy, T bao trùm đồ thị G
Định lý 11.3 (Cayley): Số bao trùm đồ thị vô hướng đầy đủ n đỉnh nn-2
Kết cho ta thấy số lượng bao trùm đồ thị nói chung lớn
Các thuật toán duyệt đồ thị theo chiều rộng chiều sâu công cụ tốt để tìm bao trùm đồ thị liên thơng
Thuật tốn 11.4 (Tìm bao trùm đồ thị liên thông 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
1 procedure CBT_S (v) ; begin
3 Duyet [v] := true ; for u ∈ DK[v] if ! Duyet [u] then
6 begin T := T ∪ {(v,u)} ; CBT_S (u) end ; end ;
8 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
Tính đắn thuật tốn suy từ tính chất sau đây:
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 tố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 khơng có 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
(5)Hiển nhiên, độ phức tạp thật toán là: O(n+m)
Ví dụ 11.5: áp dụng thuật tố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 sâu
Một cách tương tự, ta áp dụng phép duyệt đồ thị theo chiều rộng để tìm bao trùm đồ thị liên thơng nhận thuật tốn sau
Thuật tốn 11.5 (Tìm bao trùm đồ thị liên thông 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
1 BEGIN for u ∈ V Duyet [u] := false ; T := ∅ ;
4 Q := ∅ ;
5 enqueue z into Q ; { z đỉnh tuỳ ý đồ thị gốc } 6 Duyet [z] := true ;
7 while Q ≠ ∅
8 begin deqưeue v from Q ; 9 for u ∈ DK[v] 10 if ! Duyet [u] then 11 begin enqueue u into Q ;
12 Duyet [u] := true ; 13 T := T ∪ {(v,u)} 14 end
15 END
(6)Ví dụ 11.6: áp dụng thuật toán cho đồ thị (nét mảnh) ta nhận bao trùm (nét đậm) sau