Tải bản đầy đủ (.doc) (7 trang)

Ứng dụng đồ thị trong tin học (1)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (86.85 KB, 7 trang )

Luận văn tốt nghiệp Phan Thanh Long
Chơng 3
Chu trình, đờng đi Euler và
Hamilton trong đồ thị
Lý thuyết về chu trình, đờng đi Euler và Hamilton đã có từ lâu và đợc nghiên
cứu nhiều. Ta có thể bắt gặp nhiều bài toán trong thực tiễn mà có thể sử dụng các
lý thuyết về chu trình, đờng đi Euler và Hamilton để giải quyết, ví dụ sử dụng lý
thuyết đờng đi, chu trình Euler để tìm hành trình đờng đi cho ngời phát th, cho xe
rửa đờng... sao cho hành trình là tối u nhất. Hoặc là trong một hệ thống mạng, một
máy đơn cần gửi 1 thông điệp đến tất cả các máy còn lại vậy thì đờng truyền tin sẽ
đi nh thế nào để cho hiệu quả nhất, bài toán này có thể đợc giải quyết bằng cách
vận dụng các lý thuyết chu trình và đờng đi Hamilton.
I. Chu trình và đờng đi Euler
1. Chu trình Euler
1.1 Định nghĩa
Cho đồ thị vô hớng G = <X,U>. Một chu trình trong đồ thị G đợc gọi là chu
trình Euler nếu nó đi qua tất cả các cạnh của G và đi qua mỗi cạnh đúng một lần.
Định lý 1: Đồ thị vô hớng G = <X,U> có chu trình Euler khi và chỉ khi G là liên
thông và bậc của tất cả các đỉnh trong đồ thị G là số chẵn.
Chứng minh
- Điều kiện cần: Giả sử đồ thị G = <X, U> có chu trình Euler. Ta cần chứng minh
G là đồ thị liên thông và với mỗi x X có m(x) = 2k với k là một số nguyên d-
ơng nào đó.
Thật vậy, giả sử G = <X, U> không liên thông hay G có ít nhất hai thành phần
liên thông G
1
= <X
1
, U
1
> và G


2
= <X
2
, U
2
>. Trong đó X
1
X
2
= X , U
1
U
2
= U,
giữa các đỉnh trong X
1
và trong X
2
không có cạnh hoặc đờng nối với nhau. Giả sử
là 1 chu trình Euler trong G. Theo định nghĩa của chu trình Euler thì là chu
trình đi qua tất cả các cạnh trong G, mỗi cạnh đúng 1 lần. Nếu có đỉnh chung
với G
1
= <X
1
, U
1
> thì là chu trình nằm gọn trong đồ thị G
1
. Điều này mâu thuẫn

với định nghĩa của . Chứng tỏ đồ thị G = <X, U> là liên thông.
Bây giờ ta chứng minh mỗi đỉnh x X trong G đều có bậc chẵn, tức là cần chỉ ra
m(x) = 2k, với k {1,2,...}. Trớc hết thấy rằng k 0 bởi vì nếu k = 0 thì x là điểm
cô lập trong G, tức là G không liên thông, trái với điều đã chỉ ra. Giả sử ngợc lại
35
Luận văn tốt nghiệp Phan Thanh Long
tồn tại một đỉnh x
i
X mà m(x
i
) là một số lẻ, chẳng hạn m(x
i
) = 3. Đối với x
i
có 3
cạnh đi vào nó, giả sử đó là các cạnh (x
i
, x
k
), (x
i
, x
j
) và (x
i
, x
1
) U. Chu trình
Euler sẽ đi qua 3 cạnh đó. Khi đó một trong 3 cạnh trên có ít nhất một cạnh mà
chu trình Euler đi qua 2 lần. Điều đó mâu thuẫn với định nghĩa của chu trình .

Vậy m(x) là một số chẵn với mọi x X.
- Điều kiện đủ: Giả sử G = <X, U> là đồ thị liên thông và mỗi đỉnh x X đều có
bậc chẵn: m(x) = 2k, k {1, 2,...} ta chứng minh trong đồ thị G tồn tại một chu
trình Euler.
Với giả thiết trên, trớc hết ta chứng minh rằng tại mỗi đỉnh của G có tồn tại chu
trình đơn (tức là chu trình đi qua các cạnh, mỗi cạnh đúng một lần). Đề chứng
minh điều đó, ta lu ý rằng không thể có một đỉnh x mà m(x) = 2. Điều đó đúng
bởi vì khi đó tại đỉnh x có khuyên và do đó x cũng là một đỉnh cô lập, trái với giả
thiết đồ thị G là liên thông.
Giả sử x X là một đỉnh nào đó. Ta chỉ ra có chu trình đơn P qua x. Do m(x) >
2 suy ra tồn tại các đỉnh x
1
sao cho x
1
x và x kề với x
1
. Do m(x
1
) > 2 suy ra tồn
tại các đỉnh x
i
sao cho x
i
x
i-1
và x
i
kề với x
i-1
. Khi tới bớc thứ i thì ta đã có một đ-

ờng đi t x đến x
i
, qua các cạnh, mỗi cạnh đúng một lần. Quá trình trên không thể
kéo dài vô hạn do tính hữu hạn của đồ thị G. Giả sử số bớc hữu hạn đó là i. Điều
này chứng tỏ x và x
i
kề nhau, tức là có cạnh nối x và x
i
. Điều đó là đúng vì bớc i là
bớc cuối cùng. Nh vậy tại đỉnh x có chu trình đơn P đi qua.
Bây giờ ta chứng minh rằng trong đồ thị G = <X, U> có chu trình Euler. Theo
chứng minh trên với đỉnh x X có chu trình đơn đi qua là P
1
và P
1
là chu trình
trong đồ thị G. Hãy "đánh dấu xoá" các cạnh trong P
1
. Nếu sau khi "đánh dấu
xoá" các cạnh trên đờng P
1
tạo ra một số đỉnh cô lập mới thì hãy "đánh dấu loại
bỏ" các đỉnh cô lập mới đó. Kết quả thu đợc sẽ là một đồ thị mới G
1
= <X
1
, U
1
> là
đồ thị con của đồ thị G = <X, U> đã cho. Ta chỉ ra đồ thị G

1
thoả mãn một số tính
chất sau:
- Chu trình P
1
trong đồ thị G và G
1
có đỉnh chung, bởi vì G là đồ thị liên thông.
- Đồ thị G
1
gồm các đỉnh x X
1
có bậc chẵn.
Thật vậy, nếu x X
1
mà x không thuộc các đỉnh trong P
1
thì m(x
1
) hiển nhiên là
một số chẵn.
Còn nếu x
1
X
1
mà x
1
là đỉnh thuộc P
1
thì sau khi "đánh dấu bỏ " hai cạnh của

P
1
chứa đỉnh đó thì bậc của đỉnh x
1
sẽ giảm đi 2 đơn vị, do đó m(x
1
) cũng là chẵn.
Tóm lại với mọi x X
1
thì m(x) là một số chẵn.
Ta có thể minh hoạ đồ thị với chu trình đơn P
1
và đồ thị con G
1
nh hình vẽ dới
đây:
36
G
1
= <X
1
, U
1
>
x x
1
Luận văn tốt nghiệp Phan Thanh Long
x
1
là đỉnh chung giữa P

1
và G
1
. Đối với G
1
= <X
1
, U
1
> tại đỉnh x
1
X
1
có tồn tại
chu trình đơn P
2
mà cách xây dựng P
2
cũng đối với P
1
.
Trong P
2
bỏ tất cả các cạnh, giữ lại các đỉnh có cạnh hoặc đờng nối với các đỉnh
khác trong G
1
ta đợc đồ thị con G
2
= <X
2

, U
2
> của G
1
. Đồ thị cũng có tính chất
nh G
1
, là liên thông, mọi x X
2
đều có bậc chẵn và G
2
và P
2
có điểm chung
chẳng hạn x
2
Do tính hữu hạn của đồ thịi G, quá trình xây dựng các chu trình đơn sẽ dừng lại
ở bớc thứ k nào đó. Nh vậy, trớc khi sang bớc thứ k ta đã có k - 1 chu trình đơn P
1
,
P
2
, ..., P
k-1
và đồ thị G
k-1
= <X
k-1
, U
k-1

> là đồ thị con của đồ thị G
k-2
= <X
k-2
, U
k-2
>.
Đồ thị G
k-1
là liên thông và mọi đỉnh x X
k-1
có bậc chẵn, đồng thời G
k-1
và P
k-1

điểm chung là x
k
. Vì quá trình trên dừng lại sau k bớc nên đồ thị G
k-1
là một chu
trình đơn qua x
k
và bao gồm hết các cạnh trong đồ thị G
k-1
. Vì nếu không sẽ dẫn
tới mâu thuẫn do k là bớc cuối cùng.
Ghép các chu trình đơn P
1
, P

2
,...,P
k
tại các đỉnh chung ta đợc tập các chu trình
Euler trong đồ thị G = <X, U>. Định lý đợc chứng minh.
Định lý 2: Cho đồ thị có hớng G = <X, U> G có chu trình Euler khi và chỉ khi G
là liên thông và mỗi đỉnh đều có bậc vào bằng bậc ra.
1.2 Thuật toán tìm chu trình Euler
Cho đồ thị G = <X, U> xây dựng thuật toán tìm chu trình Euler
Bớc 1: Kiểm tra xem G có là đồ thị liên thông hay không. Nếu G là liên thông thì
chuyển sang bớc 2. Ngợc lại thì thuật toán dừng và kết luận rằng đồ thị không có
chu trình Euler
Bớc 2: Kiểm tra xem tất cả các đỉnh trong G đều có bậc chẵn hay không.
Nếu tất cả các đỉnh đều có bậc là chẵn thì chuyển sang bớc tiếp theo. Nếu không
dừng lại và kết luận đồ thị đã cho không có chu trình Euler.
37
G
2
= <X
2
, U
2
>
x
x
1
x
2
x x
1

x
2
x
k-1
P
1
P
2
P
k-1
G
k-1
= P
k
x
k
Luận văn tốt nghiệp Phan Thanh Long
Bớc 3: Xây dựng các chu trình đơn trong G sao cho tất cả các cạnh của đồ thị đều
có các chu trình đơn đi qua và mỗi cạnh chỉ đi qua một lần. Ghép các chu trình
đơn nh trên tại các đỉnh chung nhau ta đợc tập các chu trình Euler cần tìm.
2. Đờng đi Euler
2.1 Định nghĩa
Đờng Euler trong đồ thị G = <X, U> là đờng đi qua tất cả các cạnh của đồ thị,
mỗi cạnh đi qua đúng một lần.
Đinh lý 3: Cho G = <X, U> là đồ thị vô hớng liên thông. Điều kiện cần và đủ để
đồ thị có đờng Euler là số đỉnh bậc lẻ trong đồ thị là 0 hoặc 2.
Chứng minh: Trờng hợp số đỉnh bậc lẻ bằng 0 thì G là đồ thị liên thông và mọi
đỉnh đều có bậc chẵn. Theo định lý về chu trình Euler thì trong G có chu trình
Euler, tức cũng là đờng Euler.
Nếu số đỉnh bậc lẻ là 2, chẳng hạn đó là các đinh x

1
và x
2
. Hãy thêm vào một
đỉnh mới x và hai cạnh (x, x
1
) và (x, x
2
) vào đồ thị G = <X, U>. Ta có đồ thị mới
G' = <X', U'>, ở đây X' = X {x}, U' = U {(x, x
1
), (x, x
2
)}. Rõ ràng là G' liên
thông và mọi đỉnh đều có bậc chẵn. Theo định lý về chu trình Euler đã nêu ở trên
thì trong G' có tồn tại chu trình Euler, cũng là đờng Euler.
Định lý 4: Cho đồ thị có hớng G = <X, U>, điều kiện cần và đủ để có đờng đi
Euler từ x đến y (x, y X) là G liên thông và đỉnh x có bậc ra lớn hơn bậc vào 1
đơn vị, đỉnh y có bậc vào lớn hơn bậc ra 1 đơn vị, còn tất cả các đỉnh khác đều có
bậc vào bằng bậc ra.
2.2 Thuật toán tìm đờng Euler
Bớc 1: Kiểm tra xem đồ thị G có liên thông hay không. Nếu có thì chuyển sang
bớc 2. Ngợc lại, thì dừng thuật toán và khẳng định rằng không có đờng Euler.
Bớc 2: Kiểm tra xem mọi đỉnh trong G đều có bậc chẵn hay không. Nếu có
chuyển sang bớc 4. Nếu không chuyển sang bớc 3.
Bớc 3: Kiểm tra xem số đỉnh bậc lẻ có bằng 2 hay không. Nếu có chuyển sang b-
ớc 4. Nếu không thì dừng lại và kết luận không có đờng Euler.
Bớc 4: Xây dựng đờng Euler trong G.
II. Chu trình và đờng đi Hamilton
1. Chu trình Hamilton

Định nghĩa: Giả sử G = <X, U> là đồ thị vô hớng. Chu trình Hamilton là chu trình
đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần.
38
Luận văn tốt nghiệp Phan Thanh Long
Định lý 1: Nếu đơn đồ thị liên thông G = <X, U>, n đỉnh và n 3 có bậc ở mỗi
đỉnh không nhỏ hơn nửa số đỉnh của đồ thị, tức là mọi x X ta luôn có
m(x) n/2 thì trong đồ thị có tồn tại chu trình Hamilton.
Chứng minh: Ta chứng minh định lý bằng phản chứng
Giả sử G = <X, U> có n đỉnh là đồ thị không có chu trình Hamilton. Ta thêm vào
một số đỉnh mới và nối mỗi đỉnh mới này với mọi đỉnh của G, ta đợc đồ thị G'.
Giả sử có số k > 0 là số tối thiểu các đỉnh cần thiết để G' chứa một chu trình
Hamilton. Nh vậy G' có n + k đỉnh.
a) b)
Hình 2.1
Gọi P là chu trình Hamilton ayb...a trong G', trong đó a và b là các đỉnh của G,
còn y là một trong các đỉnh mới. Thế thì b không kề với a, vì nếu trái lại thì ta có
thể bỏ đỉnh y và đợc chu trình ab...a, mâu thuẫn với giả thiết về tính chất tối thiểu
của k.
Hơn nữa nếu a' là một đỉnh kề nào đó của a (khác với y) và b' là đỉnh nối tiếp
ngay a' trong chu trình P (hình 2.1.b) thì b' không thể là đỉnh kề của b (nếu trái lại
thì ta có thể thay P bởi chu trình aa'..bb'..a, trong đó không có y).
Nh vậy, với mỗi đỉnh kề với a ta có một đỉnh không kề với b, tức là số đỉnh
không kề với b không thể ít hơn số đỉnh kề với a (số đỉnh kề với a không nhỏ hơn
n/2 + k). Mặt khác, theo giả thiết, số đỉnh kề với b cũng không nhỏ hơn n/2 + k.
Vì không có đỉnh nào vừa kề với b lại vừa không kề với b, nên số đỉnh của G'
không ít hơn 2.(n/2 + k) = n + 2k, mâu thuẫn với giả thiết là số đỉnh của G' bằng n
+ k, (k > 0). Định lý đợc chứng minh.
Ví dụ: Đồ thị trong hình 2.1.a có 8 đỉnh, đỉnh nào cũng có bậc 4. Vậy G có chu
trình Hamilton. Có thể thấy một chu trình Hamilton a-g-c-k-d-h-b-e-a.
2. Đờng Hamilton

Định nghĩa: Đờng Hamilton trong đồ thị G = <X, U> là đờng đi qua tất cả các
đỉnh mỗi đỉnh đúng một lần.
39
a
b
c
d
k
g
e
h
a
y
b
a'
b'

×