
Rõ ràng mọi đồ thị Euler luôn là nửa Euler, nhưng điều ngược lại không luôn đúng.

Hình 1. Đồ thị G1, G2, G3

Hình 2. Đồ thị H1, H2, H3
Điều kiện cần và đủ để một đồ thị là một đồ thị Euler được Euler tìm ra vào năm 1736 khi ông giải quyết bài toán hóc búa nổi tiếng thế giới thời đó về bảy cái cầu ở thành phố
Konigsberg và đây là định lý đầu tiên của lý thuyết đồ thị.
Để chứng minh định lý trước hết ta chứng minh bổ để:

Chứng minh.
Nếu G có cạnh lặp thì khẳng định của bồ đề là hiển nhiên. Vì vậy giả sử G là đơn đồ thị. Gọi v là một đỉnh nào đó của G. Ta sẽ xây dựng theo qui nạp đường đi
v à v1 à v2 à . . .
trong đó v1 là đỉnh kề với v, còn với i≥1 chọn vi+1 # vi-l (có thể chọn vi+1 như vậy là vì deg(vi) ≥2). Do tập đỉnh của G là hữu hạn , nên sau một số hữu hạn bước ta phải quay lại một đỉnh đã xuất hiện trước đó. Gọi đỉnh đầu tiên như thế là vk. Khi đó, đoạn của đường đi xây dựng nằm giữa hai đỉnh vk là 1 chu trình cần tìm.
Chứng minh định lý:


Hình 3. Minh hoạ cho chứng minh định lý 1.

Chứng minh. Thực vậy , nếu G có không quá 2 đỉnh bậc lẻ thì số đỉnh bậc lẻ của nó chỉ có thể là 0 hoặc 2. Nếu G không có đỉnh bậc lẻ thì theo định lý 1, nó làđồ thị Euler. Giả sử G có 2 đỉnh bậc lẻ là u và v. Gọi H là đồ thị thu được từ G bằng cách thêm vào G một đỉnh mới w và hai cạnh (w,u) và(w,v). Khi đó tất cả các đỉnh của H điều có bậc chẵn, vì thế theo định lý 1, nó có chu trình Euler C. Xoá bỏ khỏi chu trình này đỉnh w và hai cạnh kề nó ta thu được đường đi Euler trong đồ thị G.
Giả sử G là đồ thị Euler, từ chứng minh định lý ta có thủ tục sau để tìm chu trình Euler trong G.
Void Euler_Cycle)
{
STACK=Æ ; CE=Æ ;
Chon u la mot dinh nao do cua do thi;
STACKÜ u;
While STACK<>Æ
{
X=top(STACK); (* x la phan tu dau STACK)
If Ke(x)<>Æ
{
Y=dinh dau tien trong danh sach Ke(x);
STACKÜ y;
(* loai bo canh (x,y) khoi do thi *)
Ke(x)=Ke(x)\{ y} ;
Ke(y)=Ke(y)\{ x} ;
}
Else
{
xÜ STACK; CEÜ x;
}
|
Giả sử G là đồ thị Euler, thuật toán đơn giản sau đây cho phép xác định chu trình Euler khi làm bằng tay.
Thuật toán Flor
Xuất phát từ một đỉnh u nào đó của G ta đi theo các cạnh của nó một cách tuỳ ý chỉ cần tuân thủ 2 qui tắc sau:
(1) Xoá bỏ cạnh đã đi qua đồng thời xoá bỏ cả những đỉnh cô lập tạo thành.
(2) Ở mỗi bước ta chỉ đi qua cầu khi không còn cách lựa chon nào khác.
* Một cạnh của đồ thị G được gọi là cầu, nếu khi xóa cạnh đó khỏi đồ thị thì làm tăng số thành phần liên thông của G.
Chứng minh tính đúng đắn của thuật toán.
Trước tiên ta chỉ ra rằng thủ tục trên có thể thực hiện ở mỗi bước. Giả sử ta đi đến một đỉnh v nào đó, khi đó nếu v#u thì đồ thị con còn lại H là liên thông và chứa đúng hai đỉnh bậc lẻ là v và u. Theo hệ quả trong H có đường đi Euler P từ v tới u. Do việc xoá bỏ cạnh đầu tiên của đường đi P không làm mất tính liên thông của H, từ đó suy ra thủ tục có thể thực hiện ở mỗi bước. Nếu v=u thì lập luận ở trên sẽ vẫn đúng chừng nào vẫn còn cạnh kề với u.
Như vậy chỉ còn phải chỉ ra thủ tục trên dẫn đến đường đi Euler. Thực vậy trong G không thể còn cạnh chưa đi qua khi mà ta sử dụng cạnh cuối cùng kề với u (trong trường hợp ngược lại, việc loại bỏ một cạnh nào đó kề với một trong số những cạnh còn lại chưa đi qua sẽ dẫn đến một đồ thị không liên thông, và điềuđó là mâu thuẫn với giả thiết ii).
Chứng minh tương tự như trong định lý 1 ta thu được kết quả sau đây cho đồ thị có hướng.

Deg+(v)=deg- (v), " v Î V.
2. ĐỒ THỊ HAMILTON
Trong mục này chúng ta xét bài toán tương tự như trong mục trước chỉ khác là ta quan tâm đến đường đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần. Sự thay đổi tưởng chừng như là không đáng kể này trên thực tế đã dẫn đến sự phức tạp hoá vấn đề cần giải quyết.

Rõ ràng đồ thị Hamilton là nửa Hamilton, nhưng điều ngược lại không còn đúng.

Hình 4. Đồ thị Hamilton G3, nửa Hamilton G2 , và G1.
Cho đến nay việc tìm một tiêu chuẩn nhận biết đồ thị Hamilton vẫn còn là mở, mặc dù đây là một vấn đề trung tâm của lý thuyết đồ thị. Hơn thế nứa, cho đến nay cũng chưa có thuật toán hiệu quả để kiểm tra một đồ thị có là Hamilton hay không. Các kết quả thu được phần lớn là điều kiện đủ để một đồ thị là đồ thị Hamilton. Phần lớn chúng điều có dạng "nếu G có số cạnh đủ lớn thì G là Hamilton". Một kết quả như vậy được phát biểu trong định lý sau đây.

Chứng minh:
Thêm vào đồ thị G k đỉnh mới và nối chúng với tất cả các đỉnh của G. giả sử k là số nhỏ nhất các đỉnh cần thêm vào để cho đồ thị thu được G’ là đồ thị Hamilton. Ta sẽ chỉ ra rằng k=0. Thực vậy, giả sử ngược lại là k >0. Ký hiệu
v, p, w, . . ., v
là chu trình Hamilton trong G’, trong đó v, w là đỉnh của G còn p là một trong số các đỉnh mới. Khi đó w không kề với v vì nếu ngược lại, ta không cần sử dụng p và điều đó là mâu thuẫn với giả thiết k nhỏ nhất. Hơn thế nữa đỉnh (w’ chẳng hạn) kề với w không thể đi liền sau đỉnh v’ (kề với v) vì rằng khi đó có thể thay
và pà w à . . . à v’à w’ à . . . à v
bởi và v’à . . . à wà w’ à . . . à v
bằng cách đảo ngược đoạn của chu trình nằm giữa w và v’. Từ đó suy ra là số đỉnh của đồ thị G’ không kề với w là không nhỏ hơn số đỉnh kề với v (tức là ít nhất cũng là bằng n/2+k), đồng thời số đỉnh của G’ kề với w ít ra là phải bằng n/2+k. Do không có đỉnh nào của G’ vừa không kề, lại vừa kề với w, cho nên tổng số đỉnh của đồ thị G’ (G’ có n+k đỉnh) không ít hơn n+2k. Mâu thuẫn thu được đã chứng minh định lý.
Định lý sau là tổng quát hoá của định lý Dirak cho đồ thị có hướng:

Giả sử G là đồ có hướng liên thông với n đỉnh. Nếu
deg+ (v)≥n/2, deg – (v) ≥ n/2, " v
thì G là Hamilton.
Có một số dạng đồ thị mà ta có thể biết khi nào là đồ thị Hamilton. Một ví dụ như vậy là đồ thị đấu loại. Đồ thị đấu loại là đồ thị có hướng mà trong đó hai đỉnh bất kỳ của nó được nối với nhau bởi đúng một cung. Tên đấu loại xuất hiện như vậy vì đồ thị như vậy có thể dùng để biểu diễn kết quả thi đấu bóng chuyền, bóng bàn hay bất cứ một trò chơi nào mà không cho phép hoà. Ta có định lý sau:

i) Mọi đồ thị đấu loại là nửa Hamilton.
ii) Mọi đồ thị đấu loại liên thông mạnh là Hamilton.

Hình 5. Đồ thị đấu loại D5, đấu loại liên thông mạnh D6
Thuật toán liệt kê tất cả các chu trình Hamilton của đồ thị
Thuật toán sau đây được xây dựng dựa trên cơ sở thuật toán quay lui cho phép liệt kê tất cả các chu trình Hamilton của đồ thị.
Void Hamilton(int k)
(* liet ke cac chu trinh Hamilton thu duoc bang viec phat trien day dinh (X[1],. . . , X[k-1]) cua do thi G=(V,E) cho boi danh sach ke: Ke(v), vÎ V *)
{
For y Î Ke(X[k-1])
if (k =N+1)&& (y=v0) Ghinhan(X[1],. . . , X[n], v0)
else
if Chuaxet[y] then
{
X[k]=y;
Chuaxet[y]=false;
Hamilton(k+1);
Chuaxet[y]=true;
}
}
(* Main program*)
Void main()
{
for v Î V Chuaxet[v]=true;
X[1]=0; (* v0 la mot dinh nao do cua do thi *)
Chuaxet[v0]=false;
Hamilton(2);
}
|

Hình 6. Đồ thị và cây liệt kê chu trình Hamilton của nó theo thuật toán quay lui
Trong trường hợp đồ thị có không quá nhiều cạnh thuật toán trên có thể sử dụng để kiểm tra đồ thị có phải là Hamilton hay không.
0 nhận xét:
Đăng nhận xét