Về thực chất đồ thị là tập hợp các đối t-ợng đ-ợc biểu diễn bằng đỉnh và giữa các đối t-ợng có mối liên hệ với nhau.. Định nghĩa 3: Giả sử đồ thị vô h-ớng G = V, E, trong đó V là tập cá
Trang 1Đ2 Thuật toán tìm đ-ờng đi ngắn nhất trên đồ thị 6
Ch-ơng 3 Về một ứng dụng của bài toán "Tìm
hành trình tối -u trên đồ thị"
19
Đ2 áp dụng chu trình Hamiltơn để giải bài toán "Ng-ơi
Trang 2Mở đầu
Lý thuyết đồ thị là một lĩnh vực nghiên cứu từ lâu và có nhiều ứng dụng trong thực tiễn Những t- t-ởng cơ bản của lý thuyết đồ thị đ-ợc đề xuất vào những năm đầu của thế kỷ 18 bởi nhà toán học lỗi lạc ng-ời Thuỵ sỹ Leonohard Euler
Lý thuyết đồ thị đ-ợc sử dụng để giải các bài toán trong nhiều lĩnh vục khác nhau Khi nghiên cứu lý thuyết đồ thị chúng tôi đã gặp đ-ợc các công
trình mới của Giáo s- Trần Vũ Thiệu Với ý thức tập d-ợt, nghiên cứu, nhằm hoàn thành luận văn tốt nghiệp cử nhân khoa học, chúng tôi mạnh dạn chọn đề
tài “ Một thuật toán trên đồ thị giải bài toán ng-ời du lịch”
Luận văn đ-ợc chia làm 3 ch-ơng
Ch-ơng 1 bao gồm các kiến thức cơ sở, nhằm tóm tắt những vấn đề liên
quan tới đề tài
Ch-ơng 2 là bài toán xuất phát, nhằm phát biểu bài toán, nêu một số tính
chất và thuật toán giải bài toán đã nêu
Ch-ơng 3 đề cập tới một ứng dụng của bài toán “ Tìm hành trình tối -u trên đồ thị” Từ những kết ở ch-ơng 2 cho phép ta áp dụng để giải “ Bài toán ng-ời du lịch”
Trong toàn bộ nội dung của Luận văn đ-ợc xét trong không gian thực R 2
Để hoàn thành Luận văn tốt nghiệp tôi đã nhận đ-ợc sự h-ớng dẫn nhiệt
tình của Thầy giáo, Tiến sỹ Trần Xuân Sinh Nhân dịp này cho phép tôi bày tỏ lòng biết ơn sâu sắc đến Thầy giáo Đồng thời tôi xin gửi đến các Thầy giáo, Cô giáo thuộc tổ Điều khiển, Khoa Toán, gia đình, bạn bè đã động viên giúp
đỡ tôi nhiều trong quá trình học tập, rèn luyện và thực hiện đề tài Vì năng lực, thời gian có hạn, chắc luận văn không tránh khỏi những thiếu sót, tôi rất thành
thật mong đ-ợc sự góp ý chân thành của các thầy cô giáo và các bạn
Tác giả
Trang 3Ch-ơng 1 Các kiến thức cơ sở
= AA (Về thực chất đồ thị là tập hợp các đối t-ợng đ-ợc biểu diễn bằng đỉnh
và giữa các đối t-ợng có mối liên hệ với nhau)
Định nghĩa 2: Cho một đồ thị có nghĩa là cho một tập A và một ánh xạ
: A A
Ta ký hiệu đồ thị bằng G = (A, ), mỗi phần tử a i A đ-ợc gọi là đỉnh và cặp (a i , a j ) gọi là cung của G Ký hiệu tập cạnh là E Khi đó ta cũng th-ờng viết G = (A, E)
1.1.2 Phân loại đồ thị
Định nghĩa 1: Đơn đồ thị vô h-ớng G = (V, E) bao gồm V là tập đỉnh và
E là tập Các cạnh không có thứ tự gồm hai phần tử khác nhau của V đ-ợc gọi
là cạnh
Định nghĩa 2: Đa đồ thị vô h-ớng G = (V, E) bao gồm V là tập đỉnh và E
là họ các cạnh Hai cạnh e1, e2 đ-ợc gọi là các cạnh tạp nếu chúng cùng t-ơng
ứng với một cặp đỉnh
Định nghĩa 3: Giả sử đồ thị vô h-ớng G = (V, E), trong đó V là tập các
đỉnh và E là tập các cặp không có thứ tự gồm hai đỉnh (không nhất thiết
phải khác nhau) của V gọi là các cạnh Cạnh e gọi là khuyên nếu có dạng
e = (u, u)
Nếu đồ thị G = (V, E), các cạnh đ-ợc xác định bởi thứ tự các đỉnh kề thì
ta nói đồ thị đã cho có h-ớng Cạnh (u, v) thuộc đồ thị có h-ớng thì u gọi là
đỉnh đầu, còn v gọi là đỉnh ngọn, ta ký hiệu v = F(u)
Định nghĩa 4: Hai đỉnh u, v của đồ thị vô h-ớng G đ-ợc gọi là kề nhau nếu (u, v) là hai cạnh của đồ thị G Nếu e = (u, v) là cạnh của đồ thị thì ta nói
Trang 4cạnh này liên thuộc hai đỉnh u và v, ta cũng nói hai đỉnh u, v liên thuộc cạnh (u, v) Đồng thời các đỉnh u và v sẽ đ-ợc gọi là các đỉnh đầu của cạnh (u, v), lúc này ta cũng nói hai đỉnh u và v là kề nhau
Định nghĩa 5: Đồ thị G đ-ợc gọi là đầy đủ nếu hai đỉnh bất kỳ đều kề
nhau
Chú ý: Ta có thể biểu diễn đồ thị bằng hình học, chẳng hạn:
Với đồ thị có h-ớng, trên mặt phẳng, ta biểu diễn đỉnh bằng các điểm,
biểu diễn cung bằng một đoạn định h-ớng xác định
1.1.3 Các khái niệm cơ bản khác có liên quan
1 Cho đồ thị đầy đủ G = (A, E) với tập đỉnh A = a1, a2, , a n và tập
cạnh E = AA Mỗi đỉnh a i A có gắn một số thực t i (i = 1 ,n ) gọi là cao độ
của đỉnh a i Khi đó ta cố định một đỉnh a b nào đó gọi là đỉnh nguồn Cố định một đỉnh a e nào đó gọi là đỉnh đích
2 Đ-ờng đi là một dãy các đỉnh sao cho mỗi đỉnh trong dãy (không kề
đỉnh cuối cùng) đ-ợc nối với đỉnh tiếp theo bằng một cung nào đó Một đỉnh
đ-ờng đi qua hơn một lần gọi là đỉnh lặp
Đ-ờng có dạng (*), ta nói rằng đ-ờng d đi từ đỉnh x1 đến đỉnh x k
Trang 53 Chu trình là một đ-ơng khép kín, tức là đỉnh cuối của đ-ờng trùng với
đỉnh đầu của đ-ờng Do đó khi nói đến chu trình, ng-ời ta không xác định đầu
và cuối Chu trình đ-ợc gọi là chu trình đơn nếu không có đỉnh lặp
4 Xích là một dãy các đỉnh, sao cho mỗi đỉnh trong dãy (không thể đỉnh
cuối cùng) luôn kề với đỉnh tiếp theo sau
Trong d, ta nói rằng xích nối đỉnh x1 với x k
Xích đơn là xích không có đỉnh lặp
Chu trình vô h-ớng là một xích khép kín (tức là đỉnh cuối của xích trùng
với đỉnh đầu của xích) Khi nói đến chu trình vô h-ớng ta không cần xác định
đỉnh đầu và đỉnh cuối của chu trình
Chu trình vô h-ớng đ-ợc gọi là đơn nếu không có đỉnh lặp
5 Bậc của đỉnh x trong đồ thị vô h-ớng là số cạnh liên thuộc với nó, ký
hiệu là r(x) Đỉnh có bậc bằng 0 gọi là đỉnh cô lập Đỉnh có bậc bằng 1 đ-ợc gọi là đỉnh treo
6 Ma trận kề Ta đánh số các đỉnh bằng các số tự nhiên: 1, 2 ., n
Ma trận vuông M nn = (m ij ) chỉ gồm các phần tử 0, 1 gọi là ma trận kề của đồ thị G nếu m i j = 1 khi và chỉ khi (i, j) là cung của G (cách nói khác là
m ij = 0 khi và chỉ khi (i, j) không phải là cung của G)
Rõ ràng G là đồ thi đối xứng (vô h-ớng) khi và chỉ khi ma trận kề M đối
xứng
7 Số cung của đ-ờng gọi là độ dài của đ-ờng đó
Đ 2 thuật toán tìm đ-ờng đi ngắn nhất trên đồ thị
1.2.1 Phát biểu bài toán
Cho đồ thị G và đỉnh a, b G Tìm đ-ờng đi ngắn nhất trên đồ thị (nếu có) từ a đến b
1.2.2 Thuật giải
Để có thuật giải bài toán này ta xét các định lý sau:
Định lý 1.2.2.1 Phần tử ở hàng i và cột j của ma trận luỹ thừa M k là số
đ-ờng khác nhau có độ dài k đi từ đỉnh i đến đỉnh j
Chứng minh Ta chứng minh theo quy nạp
Trang 6Với k = 1, định lý đúng (theo định nghĩa ma trận kề)
Nếu a ij = 0 thì không có cung từ t đến j, do đó không có đ-ờng đi từ
i đến j qua t với độ dài là k+1
Nếu a ij = 1 thì có cung từ t đến j, do đó có các đ-ờng đi từ i đến j qua t với độ dài là k+1, số các đ-ờng đi đó là b i t
Vậy theo tổng trên, khi tính cij, ta sẽ có toàn bộ số đ-ờng đi từ i đến j với
độ dài k+1
Định lý đ-ợc chứng minh
Định lý 1.2.2.2 Giả sử đồ thị G có n đỉnh Nếu có đ-ờng đi từ a đến b thì
sẽ có đ-ờng đi từ a đến b có độ dài không lớn
hơn n-1
Chứng minh Giả sử có đ-ờng đi từ a đến b
Ta ký hiệu đ-ờng đi đó là
d = a = x1, x2, , x k = b
với độ dài nhỏ nhất Hình 3
Rõ ràng độ dài của đ-ờng đi là k-1 Nếu k-1 > n-1 thì trong dãy đỉnh của
đ-ờng đó sẽ có i < j sao cho x i = x j , (vì số đỉnh của đ-ờng đi lớn hơn số đỉnh của đồ thị) Khi đó (bỏ qua đỉnh x j)
a = x1, x2, , x i , x i+1 , , x k = b,
cũng là đ-ờng đi từ a đến b nh-ng có độ dài bé hơn Điều đó mâu thuẩn với d
có độ dài bé nhất Định lý đ-ợc chứng minh
t
Trang 7Hệ quả: Giả sử đồ thị có n đỉnh Khi đó tồn tại đ-ờng đi từ đỉnh a đến
đỉnh b khi và chỉ khi tồn tại đ-ờng đi từ đỉnh a đến đỉnh b với độ dài không lớn hơn n-1
Từ đó vấn đề đặt ra là: Cho đồ thị G và hai đỉnh a, b G Khi nào thì tồn tại đ-ờng đi từ a đến b?
Theo định lý 1.2.2.1 và hệ quả của định lý 1.2.2.2 ta chỉ cần xét ma trận tổng
T = M1 + M2 + + M n-1 = (t ij)
Khi đó để tồn tại đ-ờng đi từ đỉnh i đến đỉnh j điều kiện cần và đủ là các phần tử t ij > 0
Bây giờ ta đi vào việc giải bài toán đã nêu: Cho đồ thị G và hai đỉnh
a, b G Tìm đ-ờng đi ngắn nhất (nếu có) từ a đến b
Rõ ràng nếu P k thì P k+1 Vì tập đỉnh hữu hạn nên sẽ đ-ợc một dãy
hữu hạn các tập P0, P1, , P k sao cho
Trang 8- Nếu gặp b trong P k thì dừng Khi đó k là độ dài ngắn nhất của đ-ờng từ a
đến b
- Nếu không bao giờ gặp b, thì đến một lúc nào đó P k rỗng và quá trình
cũng dừng, không có đ-ờng đi từ a đến b
- Để tìm đ-ờng đi (trong tr-ờng hợp b P i) ta dò ng-ợc lại theo quy tắc
sau (cho đến khi gặp a tức là đến P0): Nếu t P j với j > 0 thì trong P j-1 sẽ có
đỉnh s sao cho có cung đi từ s tới t
Đ 3 đ-ờng đi chu trình hamilton
1.3.1 Định nghĩa
Đ-ờng đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần đ-ợc gọi
là đ-ờng đi Hamilton
Xích đi qua một lần tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần
đ-ợc gọi là xích Hamilton
Chu trình bắt đầu từ đỉnh v nào đó qua tất cả các đỉnh còn lại, mỗi đỉnh
đúng một lần rồi quay trở về v đ-ợc gọi là chu trình Hamilton
Đồ thị G đ-ợc gọi là đồ thị Hamilton nếu nó chứa chu trình Hamilton và gọi là nửa Hamilton nếu nó chứa đ-ờng đi Hamilton
Ví du: 1) Ng-ời du lịch đi qua mỗi thành phố đúng một lần rồi quay trở
về thành phố xuất phát là chu trình Hamilton
Trang 91.3.2 Tính chất
Định lý 1.3.2.1 Đồ thị đầy đủ luôn có đ-ờng Hamilton
Chứng minh Chúng ta quy nạp theo số đỉnh n của G
Với n = 1, 2: Định lý hiển nhiên đúng
Trong tr-ờng hợp ng-ợc lại, G có các cung (a, x n ) và (x1, a) Khi đó sẽ tồn
tại i để có các cung (x i , a) và (a, x i+1 ) Có thể lấy
x1, , x i , a, x i+1 , , x
là đ-ờng Hamilton cần tìm Nh- vậy đồ thị đầy đủ luôn có đ-ờng đi Hamilton
Định lý 1.3.2.2 (Định lý Dirak) Đơn đồ thị vô h-ớng G, với n > 2 đỉnh
và mỗi đỉnh có bậc không nhỏ hơn (n/2), là đồ thị Hamilton
Chứng minh Ta thêm vào đồ thị G, k đỉnh mới và nối chúng lại với tất cả
đỉnh của G Giả sử k là số nhỏ nhất các đỉnh cần thêm vào để đồ thị thu đ-ợc
G’ là đồ thị Hamilton Ta sẽ chứng minh rằng k = 0
Thật vậy, giả sử ng-ợc lại k > 0 Ký hiệu
v, p, w, , v
Trang 10là 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 đó mâu thuẫn với 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 đó ta có
2
n +k
Do đó không có đỉnh nào của G’ vừa kề, vừa không 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
Vì vậy định lý đã đ-ợc chứng minh
Trang 11Ch-ơng 2 Bài toán xuất phát
Đ 1 p hát bi ểu b ài toán ([4 ] , [ 5] )
Cho đồ thị đầy đủ G = (A, E) với tập đỉnh A = a1, a2, , a n và tập cạnh
E = AA Mỗi đỉnh a i A có gắn một số thực t i (i = 1, 2, , n) gọi là cao độ của đỉnh a i Cho một đỉnh a b A gọi là đỉnh nguồn và một đỉnh a e A gọi là
đỉnh đích với b, e 1, 2, , n và t b t e Xét bài toán sau đây gọi là bài toán
A
Bài toán A: Tìm một đ-ờng đi Haminton trên đồ thị từ đỉnh a b tới đỉnh
a e (qua mọi đỉnh của đồ thị, mỗi đỉnh một lần) sao cho làm cực tiểu mức khác
biệt lớn nhất giữa cao độ của hai đỉnh liên tiếp bất kỳ trên đ-ờng đi
Nói cách khác, trong số các hoán vị = i1, i2, , i n } của các số 1, 2, ,
n với i 1 = b, i n = e Hãy tìm một hoán vị sao cho cực tiểu hàm:
Có thể thấy rằng mỗi hoán vị nh- thế sẽ t-ơng ứng với một đ-ờng đi
Haminton trên đồ thị từ a b đến a e, còn hoán vị * = argminf(): P sẽ
đ-ợc gọi là hành trình tối -u từ a b đến a e
Bây giờ ta không cố định đỉnh đầu và đỉnh cuối, ta cũng có bài toán B t-ơng tự nh- sau:
Bài toán B: Tìm một chu trình Haminton trên đồ thị đã cho làm cực tiểu
mức khác biệt lớn nhất giữa cao độ của hai đỉnh liên tiếp bất kỳ trong hai điểm liên tiếp bất kỳ trong chu trình
Một chu trình nh- thế cũng sẽ đ-ợc gọi là hành trình tối -u Rõ ràng số các chu trình Haminton trên đồ thị đ-ợc xét bằng n!
Giống nh- bài toán A, bài toán này có thể diễn đạt theo cách khác nh-
sau: Tìm một hoán vị = (i1, i2, , i n ) của các số 1, 2, , n sao cho
k n t ik - t ik+1 min, với quy -ớc i n+1 = i1
Lời giải của bài toán trên sẽ không thay đổi nếu thay mọi t i bởi t i ’ = t i +t
với t là một số thực bất kỳ Vì thế bằng cách chọn t > 0 đủ lớn, có thể cho rằng
Trang 12t i > 0 với i = 1, 2, , n Hơn nữa, không giảm tổng quát ta có thể giả thiết
(nếu cần thiết thì đánh số lại các đỉnh của đồ thị)
0 < t1 t2 t b t e t n (2.1)
Khi có nhiều giá trị t i trùng nhau, thì các đỉnh t-ơng ứng với các giá trị trùng nhau đó đ-ợc sắp xếp theo thứ tự tuỳ ý Giả sử trong dãy số (2.1) chỉ có
q giá trị khác nhau (q < n), chẳng hạn đó là các giá trị h1 < h2 < <h q Ta sẽ
chia các đỉnh của đồ thị G thành q lớp, ký hiệu là T1, T2, , T q sao cho đỉnh a i thuộc lớp T k khi và chỉ khi t i = h k , (i = 1, 2, , n; k = 1, 2, , q) Khi đó các
đỉnh thuộc lớp T1 sẽ đ-ợc đánh số tr-ớc, rồi đến các đỉnh thuộc lớp T2 và
cuối cùng đến các đỉnh thuộc lớp T q Các đỉnh thuộc cùng một lớp đ-ợc đánh
số một cách tuỳ ý
Đ 2 Tính chất của hành trình tối -u ([5])
Tr-ớc hết ta xét bài toán tìm hành trình tối -u từ đỉnh đầu a b đến đỉnh
cuối a e trong G Ta tạm giả thiết mọi số t i đều khác nhau (về sau giả thiết này
bị loại bỏ), nghĩa là ta đánh số các đỉnh của đồ thị sao cho (1 b e n),
0 < t1 < t2 < t3 < < t n-1 < t n (2.2)
Tính chất của hành trình tối -u đ-ợc nêu ra trong các mệnh đề d-ới đây Chứng minh các mệnh đề này đều sử dụng kỹ thuật cải tiến hành trình
Định lý 2.2.1 Giả sử = (i1 = b, i2, , i n-1 , i n = e) là một hành trình tối -u bất kỳ từ đỉnh b tới đỉnh e Nếu b > 1 và 1 = i k với 1 < k < n thì ta có:
a) Đoạn hành trình từ b tới 1 phải đi theo các đỉnh có số hiệu giảm dần
b = i1 > i 2 > > i k-1 > i k =1 b) Hành trình không thể đi qua 3 đỉnh liên tiếp i-1, i, i+1 hoặc theo các chiều ng-ợc lại i+1, i, i-1, với 1 i-1 và i+1 b
Trang 13Ta sửa lại hành trình thành ’ nh- sau (hình 6):
a) Đoạn hành trình từ n tới e phải đi qua các đỉnh có số hiệu giảm dần
n = i r > i r+1 > > i n-1 > i n = e
b) Hành trình không thể đi qua 3 đỉnh liên tiếp i-1, i, i+1hoặc theo
chiều ng-ợc lại i+1, i, i-1, với e i-1 và i+1 n
Định lý 2.2.3 Với n >3 hành trình (chu trình Hamilton) tối -u của bài
toán B không thể đi qua 3 đỉnh liên tiếp của i-1, i, i+1, hoặc theo chiều ng-ợc lại i+1, i, i-1, với 1 i-1 < i+1 n
Chứng minh Cho =(i1, i2, , i n-1 , i n) là một hành trình tối -u bất kỳ của bài toán B Giả sử trái lại, đi qua 3 đỉnh liên tiếp, chẳng hạn i-1, i, i+1 Ta sẽ
chỉ ra mâu thuẫn bằng cách xây dựng một hành trình mới’ sao cho f(’ ) < f(), trái với là hành trình tối -u
Thật vậy, giả sử 3 đỉnh liên tiếp i-1, i, i+1 nằm trên đ-ờng đi từ 1 đến n
Do i+1 n, nên trên đ-ờng đi từ n tới 1 phải có một đỉnh r, với i+1 r n và
1 u s b v r n e
Trang 14một đỉnh s đi liền sau r, với 1 s i-1, đồng thời phải có hoặc i+1 < r hoặc
s <i-1
Nghĩa là ta có
= (1, , i-1, i, i+1, , n, , r, , s, )
Hình 8 Hành trình của
Ta xây dựng hành trình mới ’ bằng cách đi trực tiếp từ đỉnh i-1 đến đỉnh
i+1 và chèn đỉnh i vào giữa hai đỉnh r và s (hình 9)
k, )
(max t k - t1 và f() = max v,
U l
k, )
(max t k - t1 = max t i - t i-1 , t i+1 - t i , t r - t s = t r - t s ,
v = maxt i+1 - t i , t r - t i , t i - t s < t r - t s = u
Từ đó và từ (2.3) ta suy ra f(’) < f() Điều đó mâu thuẫn giả thiết
Hay với n > 3 hành trình (chu trình Haminton) tối -u của bài toán
B không thể đi qua 3 đỉnh liên tiếp i-1, i, i+1 hoặc theo chiều ng-ợc lại i+1, i,
i-1 với 1 i-1 < i+1 n
Trang 15Đ 3 Thuật toán giải
(Hành trình tối -u dạng tháp hay tháp từng đoạn)
Từ các kết quả nêu trên, ta nhận đ-ợc hành trình tối -u cho các bài toán A
và B với giả thiết
0< t 1 t 2 t b t e t n
nh- sau:
Bài toán A: Hành trình tối -u gồm 3 đoạn (có thể có đoạn rỗng) tuỳ
theo vị trí t-ơng đối của b, e, n Cụ thể là = (1, 2, 3), với:
1 là hành trình tối -u từ b đến b-1 qua mọi đỉnh i thoả mãn 1 i b,
2 là hành trình tối -u từ b+1 đến e-1 qua mọi đỉnh i thoả mãn b+1 i e-1,
3 là hành trình tối -u từ e+1 đến e qua mọi đỉnh i thoả mãn e i n
Dáng điệu của các hành trình con đó nh- sau:
3 = (e+1, e+3, , n-3, n, n-2, , e+2, e) khi e, n cùng tính chẵn lẽ,
3 = (e+1, e+3, , n-2, n, n-1, n-3, , e+2, e) khi e, n khác tính chẵn lẽ,
nghĩa là lúc đầu đi theo các đỉnh chẵn (lẻ) tăng dần từ e+1 đến n, rồi sau đó đi theo các đỉnh lẻ (chẵn) giảm dần từ n đến e