Chương 2: CHU TRÌNH, ĐƯỜNG ĐI
2.1. Chu trình Euler và chu trình Hamilton
2.1.1. Chu trình Euler a) Bài toán 7 cái cầu
Thành phố Konigsberg thuộc Phổ (nay là Kaliningrad thuộc Cộng hòa Nga), được chia làm 4 vùng bằng các nhánh sông Pregel. Các vùng này gồm 2 vùng bên bờ sông (B, C), đảo Kneiphof (A) và một miền nằm giữa hai nhánh sông Pregel (D). Vào thế kỉ XVIII, người ta đã xây 7 chiếc cầu nối những vùng này với nhau. Người dân ở đây tự hỏi: Liệu có cách nào xuất phát tại một địa điểm trong thành phố, đi qua 7 chiếc cầu, mỗi chiếc đúng một lần rồi quay trở về nơi xuất phát không?
Nhà toán học Thụy Sĩ Leonhard Euler đã giải bài toán này và có thể coi đây là ứng dụng đầu tiên của Lý thuyết đồ thị, ông đã mô hình hóa sơ đồ 7 cái cầu bằng một đa đồ thị, 4 vùng được biểu diễn bằng 4 đỉnh, các cầu là các cạnh. Bài toán tìm đường qua 7 cầu, mỗi cầu đúng một lần có thể tổng quát hóa bằng bài toán: Có tồn tại chu trình đơn trong đa đồ thị chứa tất cả các cạnh?
Hình 2.1: Mô hình đồ thị của bài toán 7 cái cầu b) Định nghĩa
Chu trình đơn chứa tất cả các cạnh của đồ thị được gọi là chu trình Euler.
Đường đi đơn chứa tất cả các cạnh của đồ thị được gọi là đường đi Euler.
Một đồ thị có chu tình Euler được gọi là đồ thị Euler.
B A
C
D
16
Một đồ thị có đường đi Euler được gọi là đồ thị nửa Euler.
c) Định lý
Một đồ thị vô hướng liên thông G = (V, E) có chu trình Euler khi và chỉ khi mọi đỉnh của nó đều có bậc chẵn: deg(v) 0 (mod 2) (v V).
Một đồ thị vô hướng liên thông có đường đi Euler nhưng không có chu trình Euler khi và chỉ khi nó có đúng hai đỉnh bậc lẻ.
Một đồ thị có hướng liên thông yếu G = (V, E) có chu trình Euler thì mọi đỉnh của nó có bán bậc vào: deg+(v) = deg-(v) ( v V); ngược lại, nếu G liên thông yếu và mọi đỉnh của nó có bán bậc ra bằng bán bậc vào thì G có chu trình Euler, hay G sẽ là liên thông mạnh.
Một đồ thị có hướng liên thông yếu G = (V, E) có đường đi Euler nhưng không có chu trình Euler nếu tồn tại đúng hai đỉnh u, v V sao cho deg+(u) – deg-(u) = deg-(v) – deg+(v) = 1, còn tất cả những đỉnh khác u và v đều có bán bậc ra bằng bán bậc vào.
d) Chu trình Euler vô hướng (mọi đỉnh đều có bậc chẵn)
Xuất phát từ một đỉnh, chọn một cạnh liên thuộc với nó để đi tiếp theo hai nguyên tắc sau:
Xóa bỏ cạnh đã đi qua
Chỉ đi qua cầu khi không còn cạnh nào khác để chọn
Và cứ chọn cạnh đi một cách thoải mái như vậy cho tới khi không đi tiếp được nữa, đường đi tìm được là chu trình Euler.
Ví dụ: Với đồ thị ở hình 2.2:
Hình 2.2: Chu trình Euler vô hướng
2 1
8 6
7 5
4 3
17
Nếu xuất phát từ đỉnh 1, có hai cách đi tiếp: hoặc sang 2 hoặc sang 3, giả sử ta sẽ sang 2 và xóa cạnh (1, 2) vừa đi qua. Từ 2 chỉ có duy nhất là sang 4, nên cho dù (2, 4) là cầu ta cũng phải đi sau đó xóa luôn cạnh (2, 4). Đến đây, các cạnh còn lại của đồ thị có thể vẽ như hình 2.3 bằng nét liền, các cạnh đã bị xóa được vẽ bằng nét đứt.
Hình 2.3: Chu trình Euler vô hướng sau khi đi từ 1 đến 4
Bây giờ đang đứng ở đỉnh 4 thì có 3 cách đi tiếp: sang 3, sang 5 hoặc sang 6. Vì (4, 3) là cầu nên sẽ không đi theo cạnh (4, 3) mà sẽ đi (4, 5) hoặc (4, 6). Nếu đi theo (4, 5) và cứ tiếp tục đi như vậy, sẽ được chu trình Euler là
<1, 2, 4, 5, 7, 8, 6, 4, 3, 1>. Còn đi theo (4, 6) sẽ tìm được chu trình Euler là:
<1, 2, 4, 6, 8, 7, 5, 4, 3, 1>.
e) Chu trình Euler có hướng (mọi đỉnh đều có số cạnh đi vào bằng số cạnh đi ra)
Bằng cách “lạm dụng thuật ngữ”, có thể mô tả được thuật toán tìm chu trình Euler cho cả đồ thị có hướng cũng như vô hướng:
Thứ nhất, nếu nói cạnh (u, v) thì hiểu là cạnh nối đỉnh u và đỉnh v trên đồ thị vô hướng, hiểu là cung nối từ đỉnh u tới đỉnhv trên đồ thị có hướng.
Thứ hai, gọi cạnh (u, v) là “một đi không trở lại” nếu như từ u đi tới v theo cạnh đó, sau đó xóa cạnh đó đi thì không có cách nào từ v quay lại u.
Vậy thì thuật toán Fleury tìm chu trình Euler có thể mô tả như sau:
Xuất phát từ một đỉnh, đi một cách tùy ý theo các cạnh tuântheo hai nguyên tắc: Xóa bỏ cạnh vừa đi qua và chỉ chọn cạnh “một đi không trở lại”
nếu như không còn cạnh nào khác để chọn.
2 1
8 6
7 5
4 3
18 2.1.2. Chu trình Hamilton
a) Định nghĩa
Đường đi Hamilton là đường đi qua mỗi đỉnh của đồ thị đúng một lần.
Chu trình Hamilton là chu trình đi qua mỗi đỉnh của đồ thị đúng một lần.
Đồ thị có chu trình Hamilton được gọi là đồ thị Hamilton.
Đồ thị có đường đi Hamilton được gọi là nửa Hamilton.
Có thể phát biểu một cách hình thức: Chu trình Hamilton là chu trình xuất phát từ một đỉnh, đi thăm tất cả những đỉnh còn lại mỗi đỉnh đúng một lần, cuối cùng quay trở lại đỉnh xuất phát. Đường đi Hamilton là đường đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần. Khác với khái niệm chu trình Euler và đường đi Euler, một chu trình Hamilton không phải là đường đi Hamilton bởi có đỉnh xuất phát được thăm tới hai lần.
Ví dụ: Xét 3 đơn đồ thị G1, G2, G3 như trong hình 2.4
G1 G2 G3
Hình 2.4: Ví dụ chu trình Hamilton
Ở hình 2.4 đồ thị G1 có chu trình Hamilton (A, B, C, D, E, A). G2 không có chu trình Hamilton vì deg(a) =1 nhưng có đường đi Hamilton (A, B, C, D). G3 không có cả chu trình Hamilton lẫn đường đi Hamilton.
b) Định lý
Định lý Dirac (1952): Đồ thị vô hướng G có n đỉnh (n 3). Khi đó nếu mọi đỉnh v của G đều có deg(v) n/2 thì G có chu trình Hamilton. Đây là một điều kiện đủ để một đồ thị có chu trình Hamilton.
A
D
B
C B
E
C
D A
D C
E
F
A B
G
19
Đồ thị có hướng G liên thông mạnh và có n đỉnh. Nếu deg+(v) n/2 và deg-(v) n/2 với mọi đỉnh v thì G có chu trình Hamilton.