Từ kết quả trên, ta thu được ma trận kề của đồ thị G có hướng: Một đỗ thị được gọi là liên thông nêu có đường đi giữa mọi cặp đỉnh phân biệt của đồ thị.. Các định lý của đồ thị liên thôn
Trang 1
*
TRUONG DAI HOC QUOC GIA THÀNH PHÓ HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
CHU TRINH EULER — CHU TRINH HAMILTON VA UNG DUNG
TRONG BAI TOAN TIM DUONG DI NGAN NHAT
Trang 2MỤC LỤC
IE20I:8I621 1012775 4T 4 1.1 Một số khái niệm cơ bản 5-5-2 55+ + S2 S2 +e+se+Ee+eeeereezeeeezrrerresree 4
Ni Sa , H, , II
In nh .Ô II 1.2.3 Điều kiện của chu trình -. + 52+ +s+s++S+s+s+ezszsezezxeexeersezezsescee 12
1.3 Chu trinh Hamilton ccccccccseeecesesesseeeeeeeeeeeeeeeeeeeseeseaseneeneeneaeenseeeenseesegaes 13
Trang 3V TAI LIEU THAM KHAO eccccccocccsssecceccceccescetececcecccaecesecceceaucateseecseeascaceeaeeass 24
Trang 4I ĐỊNH NGHĨA
1.1 Một số khái niệm cơ bản
Idd Bac (Degree)
Bậc của dinh v trong dé thi G (ký hiệu: đe(v)) là số cạnh liên thuộc với v Một
đỉnh có bậc 0 là đỉnh cô lập Đỉnh có bậc | la một đỉnh treo hay lá Trong dé thị
vi dụ bên dưới, các đỉnh I và 3 có bậc là 2, các đỉnh 2, 4 và 5 có bậc bằng 3,
đỉnh 6 có bậc 1
Hình 1.1 Vi du vé do thi
1.1.2 Chu trinh (Cycle)
Trong lý thuyết đồ thị, chu trình trong đồ thị là một dây chuyền đóng Hay nói
cách khác, chu trình chính là đường đi mà điểm xuất phát và điểm kết thúc ở
trong một dé thi trùng với nhau Đề thị chỉ gồm một chu trình với n đỉnh được
gọi là dé thị vòng, ký hiệu Cn
Các loại chu trình:
- Chu trình chấn: là chu trình có độ dai chan
- Chu trình lẻ: là chu trình có độ dài lẻ
- Chu trình có hướng: là một chu trình đơn mà mọi cung trong đó đều cùng
hướng, nghĩa là mọi đỉnh đều có bậc trong và bậc ngoài bằng I Có thê gọi đơn
giản là chu trình khi ngữ cảnh rõ ràng
- Chu trinh đơn: là chu trình không đi qua một cạnh nào quá một lần
- Chu trình sơ cấp: là chu trình không chứa cùng một đỉnh quá một lần (trừ
đỉnh đầu và đỉnh cuối) Trong đồ thị ở hình trên, (1, 5, 2, 1) là một chu trình sơ
cấp Chu trình sơ cấp thì là chu trình đơn
- Chu trinh Euler: là chu trình qua tất cả các cạnh, mỗi cạnh đúng một lần
- Chu trình bao trùm: là cách gọi khác của chu trinh Hamilton
Trang 5Hình 1.2 Chu trình của đồ thị với đường đi qua các đỉnh l— 2-— 3— 4- 1
1.13 Đường đi (Path)
Theo lý thuyết đồ thị, đường đi là một chuỗi luân phiên giữa đỉnh và cạnh, bắt
đầu và kết thúc bởi một đỉnh Trong đó, mỗi đỉnh là đỉnh đầu cuối của hai cạnh
đứng liền trước và liền sau trong chuỗi, các đỉnh đứng liền trước và liền sau một
cạnh là các đỉnh đầu cuối của cạnh đó
Khi có hai cạnh giống nhau trên chuỗi có thể loại bỏ bớt các cạnh trùng nhau,
sao cho không có cạnh nào của đồ thị có mặt quá một lần trên đường đi Một
đường đi được coi là đóng hay một chu trình nếu đỉnh đầu và đỉnh cuối trùng
nhau, được coi là mở nếu đỉnh đầu và đỉnh cuối khác nhau Đường đi quan đỉnh
được ký hiệu là Pa
Có nhiều loại đường ổi trong dé thi:
- Đường đi có hướng: là một đường đi đơn trong đó mọi cung đều theo cùng
một hướng, nghĩa là mọi đỉnh trên đó đều có bậc trong và bậc ngoài bằng 1
Trong dé thị có hướng, đỉnh v được coi là đến được từ đỉnh u nếu có một đường
đi có hướng xuất phát từ u và kết thúc tại v Có thê gọi đơn giản là đường đi khi
Trang 6
Hình 1.3 Đường di của một đồ thị qua các đỉnh l— 2— 3— 4-— 5— 6
1.14 Khuyên (Loop)
Cạnh có hai đầu trùng nhau (cùng một đỉnh) được gọi là khuyên
Hình 1.4 Đô thị có khuyên lại đính SỐ 2
1.1.5 Ma trận kê đô thị (Adjacency Matrix)
Trong Toán học và Khoa học máy tính, ma trận kề của một đồ thị hữu hạn G
gồm n đỉnh là một ma trận vuông n x n
Trong đó:
- Các ô không nằm trên đường chéo chính a¡ là số cạnh nối hai đỉnh ¡ và j
- Các ô nằm trên đường chéo chính a¡ là hai lần số khuyên tại đỉnh i, hoặc chỉ
là số khuyên tại đỉnh đó
Mỗi đồ thị có duy nhất một ma trận kê, các đồ thị khác nhau có các ma trận kề
khác nhau Nếu đề thị là vô hướng, ma trận kè là ma trận đối xứng
Trang 7Đối với một đồ thị vô hướng với n đỉnh, ma trận kề được ký hiệu là A voi Aj
bang I nếu có cạnh giữa đỉnh ¡ và đỉnh j, bằng 0 nếu không có cạnh Trường
hợp có hướng, A¡¡ sẽ có giá trị là L khi và chỉ khi có cạnh theo hướng từ đỉnh 1
đến đỉnh j, các gia tri Ay con lại bang 0
- Trường hợp vô hướng:
® | va 4 có cạnh nồi: Aia = Agi = L
Tương tự cho các trường hợp còn lại, đối với các cặp đỉnh không có cạnh nối
với nhau thì A¡ = A¡= 0
Ta thu được kết quả sau khi biểu diễn từ đồ thị G sang ma trận kề:
Trang 8
Hình 1.6 Ma trận kê của đồ thị G vô hướng
Trong đó dòng và cột màu vàng là danh sách các đỉnh của đồ thị vô hướng G
e | va2co | canh ndi va | di vao 2: An = 1
@ 2 va3co | canh ndi va 2 đi vao 3: Ao3 = 1
Tuong tu cho tất cả các cạnh còn lại Đối với các cặp đỉnh không có cạnh nỗi
thì A¡ = 0
Trang 9Từ kết quả trên, ta thu được ma trận kề của đồ thị G có hướng:
Một đỗ thị được gọi là liên thông nêu có đường đi giữa mọi cặp đỉnh phân biệt
của đồ thị Ngược lại, dé thị này được gọi là không liên thông
Một đồ thị không liên thông sẽ bao gồm nhiều đỗ thị con liên thông, các đồ thị
con này được gọi là cac thanh phan lién théng (connected component) D6 thị
liên thông khi và chỉ khi có một thành phân liên thông
Hinh 1.9 Cac thanh phan lién thong
Trong hình trên có 4 thành phần liên thông (Đỉnh k đứng riêng lẻ theo quy
ước cũng tính là 1 thành phần liên thông)
Các định lý của đồ thị liên thông:
- Định lý về đường di giữa 2 đỉnh bậc lẻ: Nếu một đồ thị G (không quan tâm
Trang 10liên thông hay không) có đúng 2 đỉnh bậc lẻ, chắc chắn sẽ có một đường đi nối
2 đỉnh này
- Định lý về số cạnh của đồ thị (Định lý bắt tay): Số cạnh tối đa của một đơn
đỗ thị không liên thông G gồm n đỉnh và k thành phân là:
(n ®#(n -k?
2
Các tính chất của đồ thị liên thông:
- Đồ thị liên thông có hướng:
® Liên thông mạnh (strongly connecteđ): nêu có đường đi từ a tới b và từ b tới
a với mọi cặp đỉnh a và b của đồ thị
® Liên thông yếu (weakly connecfeđ): nêu có đường di giữa 2 đỉnh bất kỳ của
đỗ thị vô hướng tương ứng với đồ thị đã cho Tức là hủy bỏ các hướng của các
cạnh trong đồ thị
© Lién théng mét phan (unilaterally connected): Dé thi co huéng goi la liên
thông một phần nếu với mọi cặp đỉnh a, b bất kỳ, có ít nhất một đỉnh đến được
Hình 1.10 Các dạng đô thị liên thông
- Đỉnh khớp (cut vertex/ articulation point): của một đồ thị vô hướng là đỉnh
mà nếu xóa đỉnh nảy khỏi đồ thị và các cạnh nối đến nó thì số thành phần liên
thông của đồ thị sẽ tăng thêm
- Cạnh cầu (bridge): của một đồ thị vô hướng là cạnh mà nếu xóa đi khỏi đồ
thị thì số thành phần liên thông của đồ thị sẽ tăng thêm
- Đồ thị song liên thông (biconnectivity): là đồ thị không chứa đỉnh khớp
Trang 11<—— Dinh khop
Ì Không là đê thị
Cạnh câu song liên thông
Hình 1.11 Lí dụ về các định nghĩa của đồ thị liên thông
1.2, Chu trinh Euler
1.2.1 Tổng quan
Trong lý thuyết đồ thị, một đường đi trong đồ thị G =(X, E) được gọi là đường
di Euler néu né di qua tất cả các cạnh của đỗ thị, mỗi cạnh đúng một lần Đường
đi Euler có đỉnh cuỗi cùng trùng với đỉnh xuất phát gọi là chu trinh Euler
Carl Hierholzer là người đầu tiên mô tả hoàn chỉnh đồ thị Euler vào năm 1873,
bằng cách chứng minh rằng đồ thi Euler là đồ thị liên thông không có đỉnh bậc
lẻ
1.2.2 Ý tởng
Chu trình Euler được xuất phát từ “bài toán 7 cây cầu” kinh điển do Euler giải
quyết vào khoảng năm 1737 Đề bài toán đưa ra răng:
“Thành phố Konigsberg (Nga) có 2 vùng bị ngăn cách bởi một dòng sông và
có 2 đảo ở giữa sông Có 7 chiếc cầu nối những vùng này với nhau
Hình 1.12 Hình ảnh 7 chiếc câu nối 4 vùng đất trong thành phố Komigsberg
Trang 12Người dân trong vùng thách đồ nhau là thử tìm cách xuất phát từ một vùng đi
dạo qua mỗi chiếc cầu đúng một lần và trở về nơi xuất phat.”
Năm 1736, nhà toán học Euler (1707 - 1783) đã mô hình bài toán này bằng
một đỗ thị vô hướng với mỗi đỉnh ứng với một vùng, mỗi cạnh ứng với một
chiếc cầu
Hình 1.13 Đô thị vô hướng được mô hình hóa từ bài toản 7 chiếc câu
1.2.3 Điều kiện của chu trình
Đối với đồ thị vô hướng:
- Đồ thị sẽ có chu trình Euler nếu:
® Các đỉnh có bậc khác 0 của đồ thị liên thông với nhau
® Tắt cả các đỉnh của đồ thị đều có bậc chẵn
- Đồ thị sẽ có đường đi Euler nếu:
® Các đỉnh có bậc khác 0 của đồ thị liên thông với nhau
e Đồ thị có 2 đỉnh có bậc lẻ hoặc không có đỉnh nào có bậc lẻ Trong trường
hợp có 2 đỉnh bậc lẻ thì đường đi sẽ bắt đầu từ đỉnh bậc lẻ thứ nhất và kết thúc
Trang 13Đồ thị Ga không có chu trình Euler nhưng nó có đường di Euler a, c, d, e, b, d,
a, b Vi thé G; là đồ thị nửa Euler
Đối với đồ thị có hướng:
- Đồ thị sẽ có chu trình Euler nếu:
® Các đỉnh có bậc khác 0 của đồ thị thuộc cùng một thành phần liên thông
® Mọi đỉnh thuộc đồ thị đều có số bậc trong bằng số bậc ngoài Hay nói cách
khác chính là số đường đi vào một điểm trên đồ thị bằng số đường đi từ điểm
đó đến điểm khác
- Đồ thị sẽ có đường đi Euler nếu:
® Các đỉnh có bậc khác 0 của đồ thị thuộc cùng một thành phần liên thông
e Tôn tại 2 đỉnh u, v mà de'(u) - đe(u) = 1 và đe(v) - đe*(v) = 1 Mọi đỉnh
còn lại đều có số bậc trong bằng số bậc ngoài Khi đó đường đi bắt đầu từ đỉnh
Đường đi Hamilton có nguồn gốc từ bài toán: "Xuất phát từ một đỉnh của khối
thập nhị diện đều hãy đi dọc theo các cạnh của khối đó sao cho đi qua tất cả các
đỉnh khác, mỗi đỉnh đúng một lần sau đó quay về đỉnh xuất phát." Đỗ thị này
duoc goi theo tén cua William Rowan Hamilton Bài toán được ông phát biểu
vào năm 1859
Trang 14
Hình 1.16 Khối thập nhị diện đều
1.3.2 Định nghĩa
Theo lý thuyết đồ thị, chu trình Hamilton trong một đồ thị là một đường đi qua
mỗi đỉnh của đỗ thị đúng một lần và quay về đỉnh xuất phát Nếu một đồ thị
chứa một chu trình Hamilton, nó được gọi là đồ thị Hamilton
Cho đồ thị G = (V,E), có n đỉnh Đường đi xo, xi, , Xa, Xa là đường đi
Hamilton néu V = {xo,x1, Xn-1.Xn} Xi!=xj ,0<i<j<n
Ainh 1.17 Chu trinh Hamilton
Một số định lý vé chu trinh Hamilton:
- Cho đồ thị G có n đỉnh, bao đóng cl(G) được tạo ra từ G bằng cách bô sung
cho mỗi cặp đỉnh không kề nhau u và v với đe(v) + đe(u) > n một cạnh mới uv
- Dirac (1952): Xét G là đơn đồ thị vô hướng Hamilton nếu tổng các bậc của
hai đỉnh không kề nhau đều bằng n hoặc lớn hơn
- Định lý Bondy-Chvátal(1972): Một đồ thị là Hamilton nếu và chỉ nếu bao
đóng của nó là Hamilton Vì đồ thi đầy đủ là Hamilton, nên tất cả các đồ thị mà
bao dong day du 1a Hamilton
Trang 15- Ghouila-Houiri (1960): Mot đồ thị liên thông mạnh với n đỉnh la đồ thị
Hamilton nếu mọi đỉnh có bậc > n
- Meyniel(1973): Một đồ thị liên thông mạnh với n đỉnh là đồ thị Hamilton nếu
de(x)+de(y) > 2n-l với mọi cặp đỉnh x,y không kề nhau
Đồ thị đủ luồn là đồ thị Hamilton, với n lẻ > 3 thì Kn(Kn là đỗ thị đủ với n
đỉnh) có (n-1)/⁄2 chu trinh Hamilton đôi một không có cạnh chung
1.3.3 Điều kiện của chu trình
Không giống như đồ thị Euler, hiện nay chưa có quy tắc can va du dé kiém tra
xem một đồ thị có là Hamilton không Các kết quả có được hiện nay chỉ là các
điều kiện đủ để một đồ thị là đồ thị Hamilton hay có đường đi Hamilton
- Đồ thị đủ luôn là đỗ thị Hamilton Với n lẻ và Xị, X› và |X¡| = |Xa| = n Nếu
d, (x) 2561 mọi đỉnh x của G thi G là đô thi Hamilton
cg ? ` x ^ z x 3 re A n 4 re
- Giả sử G là đô thị vô hướng đơn gôm n đỉnh với n> 3 Nêu d ( x >—z- Với
mọi đỉnh x của G thi G có đường di Hamilton
- Giả sử G là đồ thị vô hướng đơn n đỉnh với n>3 Nếu d( } +d( ỳ >wới
mọi cặp đỉnh x,y không kể nhau của G thì G là đồ thi Hamilton
- Giả sử G là đồ thị vô hướng đơn gồm n đỉnh và m cạnh Nếu m> f -an+6
2
thì G là đồ thị Hamilton
Trang 16Il THUẬT TOÁN
2.1 Chu trình Euler
Giải thuật của chu trình Euler được thể hiện qua các bước:
Đầu vào: Đồ thị liên thông có hướng hoặc vô hướng
Đầu ra: Một chu trình Euler nếu tồn tại, hoặc thông báo rằng không có chu
trình Euler
1 Kiểm tra tính liên thông:
- Nếu đồ thị không liên thông, thông báo rằng không có chu trình Euler
- Ngược lại, tiếp tục với bước 2
2 Kiểm tra bậc của mỗi đỉnh:
- Đối với đồ thị vô hướng: Tính bậc của mỗi đỉnh và kiểm tra xem tất cả các
đỉnh có bậc chăn không Nếu có ít hơn hoặc nhiều hơn 2 đỉnh có bậc lẻ, thông
báo rằng không có chu trình Euler
Đối với đồ thị có hướng: Kiểm tra xem mỗi đỉnh có bậc vào bằng bậc ra không
Nếu có đỉnh không thỏa điều kiện này, thông báo răng không có chu trình Euler
- Đi đến đỉnh đích của cạnh và đặt nó làm đỉnh hiện tại
5 Kiểm tra hoàn thành:
- Nếu không còn cạnh nao trong đồ thị, kiểm tra xem đỉnh hiện tại có trùng với
đỉnh xuất phát hay không
- Nếu có, thông báo rằng đã tìm thấy chu trình Euler
- Ngược lại, thông báo răng không có chu trình Euler
Thuật toán này đảm bảo mỗi cạnh của đồ thị chỉ được duyệt qua một lần và
mỗi đỉnh được ghé thăm đúng một lần, giữ cho tính chất của chu trình Euler