Thuật toán dựa trên một tính chất rất đơn giản: Trong một đồ thị định hướng không rỗng phi chu trình tuỳ ý, luôn tồn tại đỉnh mà không có một cạnh nào đi vào đỉnh đó.. Trước hết, thuật[r]
(1)BÀI 06
Chương
Chu số sắc số đồ thị 4.1 Chu số đồ thị
Cho đồ thị G = (V, E) có n đỉnh, m cạnh, p thành phần liên thông
Định nghĩa 4.1: Đại lượng: c = m - n + p gọi chu số đồ thị G
Trước hết, ta xét tính chất đại lượng Ví dụ 4.2: Xét đồ thị sau đây:
Hình 4.1 Đồ thị định hướng khơng liên thơng
Đồ thị có n = 7, m = p = Vậy chu số c = - + =
Định lý 4.1: Nếu thêm cạnh vào đồ thị G chu số tăng thêm
khơng thay đổi
Chứng minh: Giả sử thêm cạnh (a, b) vào đồ thị G Khi m tăng thêm i) Nếu hai đỉnh a, b thuộc mảng liên thơng G n, p không
đổi, chu số tăng thêm
ii) Nếu hai đỉnh a, b nằm hai mảng liên thơng khác G p giảm 1, chu số không đổi
Hệ 4.2: Chu số đồ thị số nguyên không âm
Chứng minh:
Thật vậy, đồ thị G xây dựng từ đồ thị G0 gồm n đỉnh khơng có
cạnh Sau đó, thêm cạnh vào đồ thị G0 để đồ thị G
Chu số G0 c = - n + n = Q trình thêm cạnh khơng làm giảm chu số
Vậy chu số G ≥ chu số G0 =
Bây giờ, ta tìm ý nghĩa chu số
(2)Ta đánh số cạnh đồ thị G theo thứ tự đó: 1, 2, , m Với chu trình vô hướng đồ thị G ta chọn chiều thuận biểu diễn một vectơ m chiều (q1, q2, , qm) mà qi số lần xuất cạnh thứ i
chu trình theo chiều thuận trừ số lần xuất cạnh chu trình theo chiều ngược
Ví dụ 4.3: Xét đồ thị định hướng sau
Hình 4.2 Đánh số cạnh đồ thị
Đồ thị có cạnh, đánh số hình vẽ Với chu trình vơ hướng [e1, e2, e7] ta
chọn chiều thuận chiều e1 e2 e7 khi vectơ tương ứng (-1, 1, 0, 0, 0, 0, 1)
Do vây, ta đồng chu trình vơ hướng với vectơ biểu diễn Các chu trình vơ hướng t1, t2, , tk gọi độc lập tuyến tính
vectơ tương ứng với chúng lập thành hệ độc lập tuyến tính
Hệ chu trình đơn vơ hướng t1, t2, , tk gọi độc lập tuyến tính cực đại
nếu độc lập tuyến tính chu trình vơ hướng đồ thị biểu diễn tuyến tính qua chu trình hệ
Định lý 4.3: Chu số đồ thị số chu trình đơn vơ hướng độc lập cực đại
trong đồ thị Chứng minh:
Quy nạp theo số cạnh m đồ thị
- Nếu m = chu số 0, đồ thị khơng có chu trình đơn
- (m) ⇒ (m+1) : Giả sử đồ thị G’ có n đỉnh, m+1 cạnh, p mảng liên thơng Có thể xem G’ xây dựng từ đồ thị G gồm m cạnh bổ sung thêm cạnh
e = (a, b) Đánh số cạnh e cạnh thứ m+1 đồ thị G’
Theo giả thiết quy nạp, chu số đồ thị G c(G) = m -n +p = số chu trình đơn vơ hướng độc lập cực đại G Ký hiệu chu trình là: (T) = t1, t2, , tc
(3)Ta xét hai trường hợp:
1) Hai đỉnh a, b cạnh e nằm hai mảng liên thơng khác G Vì số cạnh tăng số mảng liên thông bị giảm nên chu số G’ chu số G
Hình 4.3 Hai mảng liên thơng
Mặt khác, chu trình G’ chứa e có tính chất sau đây: số lần e xuất trong chu trình theo chiều thuận số lần e xuất chu trình theo chiều ngược cạnh e cầu nối hai mảng liên thơng G Do đó, thành phần thứ m+1 vectơ biểu diễn chu trình 0, chu trình biểu diễn qua hệ (T) Suy hệ (T) hệ chu trình đơn vơ hướng độc lập cực đại G’
2) Hai đỉnh a, b cạnh e thuộc mảng liên thơng G
Khi chu số c(G’) = c(G) + Chọn đường đơn vô hướng G nối a với b ghép thêm cạnh e ta chu trình đơn vơ hướng G’ Ký hiệu chu trình t0
Xét hệ (T’) = t0 , (T) = t0 , t1 , t2 , , tc gồm c(G) + chu trình đơn vơ
hướng G’
Hệ (T’) độc lập tuyến tính (T) độc lập tuyến tính t0 khơng thể biểu
diễn qua (T), toạ độ thứ m+1 vectơ biểu diễn t0 1, cịn
vectơ biểu diễn chu trình (T)
Hình 4.4 Hai chu trình chung cạnh
(4)tuyến tính qua hệ (T) Do đó, chu trình t biểu diễn tuyến tính qua hệ (T) Vậy (T’) hệ chu trình đơn vơ hướng độc lập cực đại G’
Đồ thị có chu số gọi đồ thị phi chu trình Lớp đồ thị phi chu trình lớp đặc biệt hay gặp thực tế ứng dụng Trước hết ta đặc trưng lớp đồ thị sau
Định lý 4.4: Đồ thị định hướng G = (V, E) phi chu trình đỉnh
của ln đánh số để cho cạnh (i,j) đồ thị thoả mãn i < j Chứng minh:
a) Nếu đánh số đỉnh hiển nhiên đồ thị khơng có chu trình b) Để chứng minh điều ngược lại, ta xây dựng thuật toán sau để đánh số đỉnh đồ thị định hướng phi chu trình
Thuật tốn dựa tính chất đơn giản: Trong đồ thị định hướng khơng rỗng phi chu trình tuỳ ý, ln tồn đỉnh mà khơng có cạnh vào đỉnh Trước hết, thuật tốn tính bậc vào cho đỉnh đồ thị
Những đỉnh có bậc vào đưa vào stack (ngăn xếp – LIFO) Đánh số cho đỉnh đỉnh stack, loại bỏ đỉnh khỏi stack giảm bậc vào cho đỉnh kề với đỉnh Nếu có đỉnh mà bậc vào giảm hết nạp lên đỉnh stack
Tiếp tục trình đánh số tăng dần, loại đỉnh, giảm bậc vào stack trở thành rỗng Và ta đánh số xong tất đỉnh đồ thị
Dựa vào chứng minh định lý trên, ta xây dựng thuật toán đánh số đỉnh cho đồ thị định hướng phi chu trình sau
Thuật toán 4.5 (Đánh số đỉnh đồ thị phi chu trình):
Dữ liệu: Biểu diễn mảng DK danh sách kề đồ thị phi chu trình G Kết quả: Mảng SO số nguyên với SO[v] số đánh đỉnh v
1 Begin
2 for v ∈ V BAC_V[v] := ; { BAC_V[v] chứa bậc vào đỉnh v } 3 for u ∈ V
4 for v ∈ DK[u] BAC_V[v] := BAC_V[v] + ; S := ∅ ;
6 for v ∈ V
(5)9 while S ≠ ∅
10 begin u := top(S) ; pop(S) ; 11 k := k + ; SO[u] := k ; 12 for v ∈ DK[u]
13 begin BAC_V[v] := BAC_V[v] - ; 14 if BAC_V[v] = then push v onto S 15 end
16 end 17 End
Độ phức tạp thuật toán O(m+n)
Ví dụ 4.4: Áp dụng thuật tốn để đánh số đỉnh cho đồ thị phi chu trình sau
Hình 4.5 Các đỉnh đồ thị phi chu trình đánh số