Lý thuyết đồ thị - Bài 6: Chu số và Sắc số
Chia sẻ bởi Trần Thanh |
Ngày 10/05/2019 |
72
Chia sẻ tài liệu: Lý thuyết đồ thị - Bài 6: Chu số và Sắc số thuộc Tin học 11
Nội dung tài liệu:
CHƯƠNG 4
CHU SỐ VÀ SẮC SỐ
NỘI DUNG
Chu số
Ý nghĩa của chu số
Sắc số
Đồ thị hai sắc
Thuật toán tô màu đồ thị
Sắc số và hàm Grundy
4.1. CHU SỐ CỦA ĐỒ THỊ
Cho đồ thị G = (V, E) có n đỉnh, m cạnh và p mảng liên thông.
Định nghĩa 4.1: Đại lượng: c = m - n + p được gọi là chu số của đồ thị G.
4.1. CHU SỐ CỦA ĐỒ THỊ (tiếp)
Xét đồ thị sau đây:
Hình 4.1. Đồ thị định hướng không liên thông
Đồ thị trên có n = 7, m = 8 và p = 2.
Vậy chu số c = 8 - 7 + 2 = 3.
4.1. CHU SỐ CỦA ĐỒ THỊ (tiếp)
Định lý 4.1: Nếu thêm một cạnh mới vào đồ thị G thì chu số tăng thêm 1 hoặc không thay đổi.
Chứng minh: Giả sử thêm cạnh mới (a, b) vào đồ thị G. Khi đó m tăng thêm 1
- Nếu hai đỉnh a, b thuộc cùng một mảng liên thông trong G thì n, p không đổi, do vậy chu số tăng thêm 1.
- Nếu hai đỉnh a, b nằm ở hai mảng liên thông khác nhau trong G thì p giảm 1, do vậy chu số không đổi.
4.1. CHU SỐ CỦA ĐỒ THỊ (tiếp)
Hệ quả 4.2: Chu số của đồ thị là số nguyên không âm.
Chứng minh: Thật vậy, đồ thị G được xây dựng từ đồ thị G0 gồm n đỉnh và không có cạnh nào cả. Sau đó, lần lượt thêm các cạnh vào đồ thị G0 để được đồ thị G. Chu số của G0 là c = 0 - n + n = 0. Quá trình thêm cạnh không làm giảm chu số. Vậy chu số của G chu số của G0 = 0.
4.2. Ý NGHĨA CỦA CHU SỐ
Đánh số các cạnh của đồ thị G theo một thứ tự nào đó:
1, 2, ... , m.
Với mỗi chu trình vô hướng trong đồ thị G, ta chọn một chiều thuận và biểu diễn nó bằng một vectơ m chiều (q1, q2, ... , qm) , với qi = số lần xuất hiện của cạnh i trong chu trình theo chiều thuận - số lần xuất hiện của cạnh đó trong chu trình theo chiều ngược.
Có thể đồng nhất mỗi chu trình vô hướng với một vectơ biểu diễn nó.
HỆ CHU TRÌNH ĐỘC LẬP TUYẾN TÍNH
Các chu trình vô hướng t1, t2, ... , tk được gọi là độc lập tuyến tính nếu các vectơ tương ứng với chúng lập thành một hệ độc lập tuyến tính.
Hệ chu trình đơn vô hướng T = { t1, t2, ... , tk } được gọi là độc lập tuyến tính cực đại nếu T là độc lập tuyến tính và mỗi chu trình vô hướng của đồ thị đều có thể biểu diễn tuyến tính qua các chu trình của T.
HỆ CHU TRÌNH ĐỘC LẬP
TUYẾN TÍNH (tiếp)
Ví dụ 4.1: Đồ thị có 7 cạnh, được đánh số như hình vẽ. Với chu trình vô hướng [e1, e2, e7] ta chọn chiều thuận là e1 e2 e7 khi đó vectơ tương ứng là: (-1, 1, 0, 0, 0, 0, 1).
Hình 4.2. Đánh số các cạnh của đồ thị
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Định lý 4.3: Chu số của đồ thị bằng số các 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.
- m = 0 thì chu số bằng 0, đồ thị không có chu trình đơn nào.
- (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’ được xây dựng từ đồ thị G gồm m cạnh và bổ sung thêm một cạnh mới e = (a, b).
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Đánh số cạnh e là cạnh thứ m+1 của đồ thị G’.
Theo giả thiết quy nạp, chu số của đồ thị G là c(G) = m -n +p = số chu trình đơn vô hướng độc lập cực đại trong G.
Ký hiệu các chu trình đó là: T = t1, t2, ..., tc. Hiển nhiên, mỗi chu trình trong G’ không chứa e đều có thể biểu diễn tuyến tính qua hệ các chu trình T.
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Trường hợp 1: Hai đỉnh a, b của cạnh e nằm trong hai mảng liên thông khác nhau của G. Vì số cạnh tăng 1 nhưng số mảng liên thông bị giảm 1 nên chu số của G’ vẫn bằng chu số của G.
Hình 4.3. Hai mảng liên thông
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Mặt khác, mỗi chu trình trong G’ chứa e có tính chất sau đây: số lần e xuất hiện trong chu trình theo chiều thuận bằng số lần e xuất hiện trong chu trình theo chiều ngược, vì cạnh e là cầu nối duy nhất giữa hai mảng liên thông này của G.
Do đó, thành phần thứ m+1 của vectơ biểu diễn chu trình này bằng 0, và chu trình này vẫn có thể biểu diễn qua hệ T. Suy ra hệ T cũng chính là hệ chu trình đơn vô hướng độc lập cực đại của G’.
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Trường hợp 2: Hai đỉnh a, b của cạnh e thuộc cùng
một mảng liên thông của G.
Khi đó chu số c(G’) = c(G) + 1. Chọn một đường đi
đơn vô hướng trong G nối a với b rồi ghép thêm
cạnh e ta được một chu trình đơn vô hướng trong G’.
Ký hiệu là t0. Xét hệ T’ = t0 , (T) = t0 , t1 , t2 , ... , tc
gồm c(G) +1 chu trình đơn vô hướng trong G’.
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Hệ T’ là độc lập tuyến tính vì hệ T độc lập tuyến tính và t0 không thể biểu diễn được qua T, vì toạ độ thứ m+1 của vectơ biểu diễn t0 bằng 1, còn của các vectơ biểu diễn các chu trình trong T bằng 0.
Hình 4.4. Hai chu trình chung một cạnh
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Giả sử t là một chu trình nào đó của G’ chứa e. Chọn chiều của t sao cho chu trình tổng t + t0 không chứa e. Vậy thì chu trình tổng t + t0 có thể biểu diễn tuyến tính qua hệ T.
Do đó, chu trình t cũng có thể biểu diễn tuyến tính qua hệ T.
Vậy T’ là hệ chu trình đơn vô hướng độc lập cực đại của G’.
4.3. ĐỒ THỊ PHI CHU TRÌNH
Đồ thị có chu số bằng 0 được gọi là đồ thị phi chu trình.
Lớp đồ thị phi chu trình là lớp đồ thị đặc biệt và hay gặp trong thực tế ứng dụng.
4.3. ĐỒ THỊ PHI CHU TRÌNH (tiếp)
Định lý 4.4: Đồ thị định hướng G = (V, E) là phi chu trình luôn có thể đánh số các đỉnh sao cho mỗi cạnh (i, j) của đồ thị đều thoả mãn i < j.
Chứng minh:
a) Nếu có thể đánh số các đỉnh như trên thì 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 đây để đánh số các đỉnh của đồ thị định hướng phi chu trình.
4.3. ĐỒ THỊ PHI CHU TRÌNH (tiếp)
Thuật toán dựa trên tính chất: Trong một đồ thị định hướng không rỗng phi chu trình luôn tồn tại đỉnh mà không có một cạnh nào đi vào đỉnh đó.
Thuật toán đánh số đỉnh:
1) Trước hết, thuật toán tính bậc vào cho các đỉnh của đồ thị.
4.3. ĐỒ THỊ PHI CHU TRÌNH (tiếp)
Những đỉnh có bậc vào bằng 0 sẽ được đưa vào
stack. Đánh số cho đỉnh đang ở đỉnh stack, loại bỏ
đỉnh này khỏi stack và giảm bậc vào cho các đỉnh kề
với đỉnh này. Nếu có đỉnh mà bậc vào đã giảm hết
thì nạp nó lên đỉnh của stack.
3) Tiếp tục quá trình đánh số tăng dần, loại đỉnh,
giảm bậc vào ... cho đến khi stack trở thành rỗng.
Và ta đã đánh số xong tất cả các đỉnh của đồ thị.
THUẬT TOÁN ĐÁNH SỐ ĐỈNH
Thuật toán 4.5
Dữ liệu: Biểu diễn mảng DK các danh sách kề của
đồ thị phi chu trình G.
Kết quả: Mảng SO các số nguyên với SO[v] là số
đánh trên đỉnh v.
THUẬT TOÁN ĐÁNH SỐ ĐỈNH (tiếp)
1 Begin
for v V do BAC_V[v] := 0 ; { BAC_V[v]
chứa bậc vào của đỉnh v }
3 for u V do
4 for v DK[u] do inc ( BAC_V[v] ) ;
5 S := ;
6 for v V do
7 if BAC_V[v] = 0 then push v onto S ;
8 k := 0 ;
THUẬT TOÁN ĐÁNH SỐ ĐỈNH (tiếp)
9 while S do
10 begin u := top(S) ; pop(S) ;
11 inc (k) ; SO[u] := k ;
12 for v DK[u] do
13 begin dec (BAC_V[v]) ;
14 if BAC_V[v] = 0 then push v onto S
15 end
16 end
End.
Độ phức tạp của thuật toán là O(m+n).
THUẬT TOÁN ĐÁNH SỐ ĐỈNH (tiếp)
Ví dụ 4.2: Áp dụng thuật toán, đánh số các đỉnh cho đồ thị phi chu trình sau:
Hình 4.5. Các đỉnh của đồ thị phi chu trình đã được đánh số
THUẬT TOÁN ĐÁNH SỐ ĐỈNH (tiếp)
Việc đánh số các đỉnh trên đồ thị định hướng phi chu trình có nhiều ứng dụng trong sơ đồ PERT, phương pháp đường tới hạn CPM . . .
CHU SỐ VÀ SẮC SỐ
NỘI DUNG
Chu số
Ý nghĩa của chu số
Sắc số
Đồ thị hai sắc
Thuật toán tô màu đồ thị
Sắc số và hàm Grundy
4.1. CHU SỐ CỦA ĐỒ THỊ
Cho đồ thị G = (V, E) có n đỉnh, m cạnh và p mảng liên thông.
Định nghĩa 4.1: Đại lượng: c = m - n + p được gọi là chu số của đồ thị G.
4.1. CHU SỐ CỦA ĐỒ THỊ (tiếp)
Xét đồ thị sau đây:
Hình 4.1. Đồ thị định hướng không liên thông
Đồ thị trên có n = 7, m = 8 và p = 2.
Vậy chu số c = 8 - 7 + 2 = 3.
4.1. CHU SỐ CỦA ĐỒ THỊ (tiếp)
Định lý 4.1: Nếu thêm một cạnh mới vào đồ thị G thì chu số tăng thêm 1 hoặc không thay đổi.
Chứng minh: Giả sử thêm cạnh mới (a, b) vào đồ thị G. Khi đó m tăng thêm 1
- Nếu hai đỉnh a, b thuộc cùng một mảng liên thông trong G thì n, p không đổi, do vậy chu số tăng thêm 1.
- Nếu hai đỉnh a, b nằm ở hai mảng liên thông khác nhau trong G thì p giảm 1, do vậy chu số không đổi.
4.1. CHU SỐ CỦA ĐỒ THỊ (tiếp)
Hệ quả 4.2: Chu số của đồ thị là số nguyên không âm.
Chứng minh: Thật vậy, đồ thị G được xây dựng từ đồ thị G0 gồm n đỉnh và không có cạnh nào cả. Sau đó, lần lượt thêm các cạnh vào đồ thị G0 để được đồ thị G. Chu số của G0 là c = 0 - n + n = 0. Quá trình thêm cạnh không làm giảm chu số. Vậy chu số của G chu số của G0 = 0.
4.2. Ý NGHĨA CỦA CHU SỐ
Đánh số các cạnh của đồ thị G theo một thứ tự nào đó:
1, 2, ... , m.
Với mỗi chu trình vô hướng trong đồ thị G, ta chọn một chiều thuận và biểu diễn nó bằng một vectơ m chiều (q1, q2, ... , qm) , với qi = số lần xuất hiện của cạnh i trong chu trình theo chiều thuận - số lần xuất hiện của cạnh đó trong chu trình theo chiều ngược.
Có thể đồng nhất mỗi chu trình vô hướng với một vectơ biểu diễn nó.
HỆ CHU TRÌNH ĐỘC LẬP TUYẾN TÍNH
Các chu trình vô hướng t1, t2, ... , tk được gọi là độc lập tuyến tính nếu các vectơ tương ứng với chúng lập thành một hệ độc lập tuyến tính.
Hệ chu trình đơn vô hướng T = { t1, t2, ... , tk } được gọi là độc lập tuyến tính cực đại nếu T là độc lập tuyến tính và mỗi chu trình vô hướng của đồ thị đều có thể biểu diễn tuyến tính qua các chu trình của T.
HỆ CHU TRÌNH ĐỘC LẬP
TUYẾN TÍNH (tiếp)
Ví dụ 4.1: Đồ thị có 7 cạnh, được đánh số như hình vẽ. Với chu trình vô hướng [e1, e2, e7] ta chọn chiều thuận là e1 e2 e7 khi đó vectơ tương ứng là: (-1, 1, 0, 0, 0, 0, 1).
Hình 4.2. Đánh số các cạnh của đồ thị
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Định lý 4.3: Chu số của đồ thị bằng số các 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.
- m = 0 thì chu số bằng 0, đồ thị không có chu trình đơn nào.
- (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’ được xây dựng từ đồ thị G gồm m cạnh và bổ sung thêm một cạnh mới e = (a, b).
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Đánh số cạnh e là cạnh thứ m+1 của đồ thị G’.
Theo giả thiết quy nạp, chu số của đồ thị G là c(G) = m -n +p = số chu trình đơn vô hướng độc lập cực đại trong G.
Ký hiệu các chu trình đó là: T = t1, t2, ..., tc. Hiển nhiên, mỗi chu trình trong G’ không chứa e đều có thể biểu diễn tuyến tính qua hệ các chu trình T.
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Trường hợp 1: Hai đỉnh a, b của cạnh e nằm trong hai mảng liên thông khác nhau của G. Vì số cạnh tăng 1 nhưng số mảng liên thông bị giảm 1 nên chu số của G’ vẫn bằng chu số của G.
Hình 4.3. Hai mảng liên thông
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Mặt khác, mỗi chu trình trong G’ chứa e có tính chất sau đây: số lần e xuất hiện trong chu trình theo chiều thuận bằng số lần e xuất hiện trong chu trình theo chiều ngược, vì cạnh e là cầu nối duy nhất giữa hai mảng liên thông này của G.
Do đó, thành phần thứ m+1 của vectơ biểu diễn chu trình này bằng 0, và chu trình này vẫn có thể biểu diễn qua hệ T. Suy ra hệ T cũng chính là hệ chu trình đơn vô hướng độc lập cực đại của G’.
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Trường hợp 2: Hai đỉnh a, b của cạnh e thuộc cùng
một mảng liên thông của G.
Khi đó chu số c(G’) = c(G) + 1. Chọn một đường đi
đơn vô hướng trong G nối a với b rồi ghép thêm
cạnh e ta được một chu trình đơn vô hướng trong G’.
Ký hiệu là t0. Xét hệ T’ = t0 , (T) = t0 , t1 , t2 , ... , tc
gồm c(G) +1 chu trình đơn vô hướng trong G’.
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Hệ T’ là độc lập tuyến tính vì hệ T độc lập tuyến tính và t0 không thể biểu diễn được qua T, vì toạ độ thứ m+1 của vectơ biểu diễn t0 bằng 1, còn của các vectơ biểu diễn các chu trình trong T bằng 0.
Hình 4.4. Hai chu trình chung một cạnh
4.2. Ý NGHĨA CỦA CHU SỐ (tiếp)
Giả sử t là một chu trình nào đó của G’ chứa e. Chọn chiều của t sao cho chu trình tổng t + t0 không chứa e. Vậy thì chu trình tổng t + t0 có thể biểu diễn tuyến tính qua hệ T.
Do đó, chu trình t cũng có thể biểu diễn tuyến tính qua hệ T.
Vậy T’ là hệ chu trình đơn vô hướng độc lập cực đại của G’.
4.3. ĐỒ THỊ PHI CHU TRÌNH
Đồ thị có chu số bằng 0 được gọi là đồ thị phi chu trình.
Lớp đồ thị phi chu trình là lớp đồ thị đặc biệt và hay gặp trong thực tế ứng dụng.
4.3. ĐỒ THỊ PHI CHU TRÌNH (tiếp)
Định lý 4.4: Đồ thị định hướng G = (V, E) là phi chu trình luôn có thể đánh số các đỉnh sao cho mỗi cạnh (i, j) của đồ thị đều thoả mãn i < j.
Chứng minh:
a) Nếu có thể đánh số các đỉnh như trên thì 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 đây để đánh số các đỉnh của đồ thị định hướng phi chu trình.
4.3. ĐỒ THỊ PHI CHU TRÌNH (tiếp)
Thuật toán dựa trên tính chất: Trong một đồ thị định hướng không rỗng phi chu trình luôn tồn tại đỉnh mà không có một cạnh nào đi vào đỉnh đó.
Thuật toán đánh số đỉnh:
1) Trước hết, thuật toán tính bậc vào cho các đỉnh của đồ thị.
4.3. ĐỒ THỊ PHI CHU TRÌNH (tiếp)
Những đỉnh có bậc vào bằng 0 sẽ được đưa vào
stack. Đánh số cho đỉnh đang ở đỉnh stack, loại bỏ
đỉnh này khỏi stack và giảm bậc vào cho các đỉnh kề
với đỉnh này. Nếu có đỉnh mà bậc vào đã giảm hết
thì nạp nó lên đỉnh của stack.
3) Tiếp tục quá trình đánh số tăng dần, loại đỉnh,
giảm bậc vào ... cho đến khi stack trở thành rỗng.
Và ta đã đánh số xong tất cả các đỉnh của đồ thị.
THUẬT TOÁN ĐÁNH SỐ ĐỈNH
Thuật toán 4.5
Dữ liệu: Biểu diễn mảng DK các danh sách kề của
đồ thị phi chu trình G.
Kết quả: Mảng SO các số nguyên với SO[v] là số
đánh trên đỉnh v.
THUẬT TOÁN ĐÁNH SỐ ĐỈNH (tiếp)
1 Begin
for v V do BAC_V[v] := 0 ; { BAC_V[v]
chứa bậc vào của đỉnh v }
3 for u V do
4 for v DK[u] do inc ( BAC_V[v] ) ;
5 S := ;
6 for v V do
7 if BAC_V[v] = 0 then push v onto S ;
8 k := 0 ;
THUẬT TOÁN ĐÁNH SỐ ĐỈNH (tiếp)
9 while S do
10 begin u := top(S) ; pop(S) ;
11 inc (k) ; SO[u] := k ;
12 for v DK[u] do
13 begin dec (BAC_V[v]) ;
14 if BAC_V[v] = 0 then push v onto S
15 end
16 end
End.
Độ phức tạp của thuật toán là O(m+n).
THUẬT TOÁN ĐÁNH SỐ ĐỈNH (tiếp)
Ví dụ 4.2: Áp dụng thuật toán, đánh số các đỉnh cho đồ thị phi chu trình sau:
Hình 4.5. Các đỉnh của đồ thị phi chu trình đã được đánh số
THUẬT TOÁN ĐÁNH SỐ ĐỈNH (tiếp)
Việc đánh số các đỉnh trên đồ thị định hướng phi chu trình có nhiều ứng dụng trong sơ đồ PERT, phương pháp đường tới hạn CPM . . .
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Trần Thanh
Dung lượng: |
Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)