Các bài toán ứng dụng quan trọng của thuyết đồ thị như Bài toán đường đi ngắn nhất, Bài toán cây bao trùm ngắn nhất, Trò chơi Nim… và những thuật toán để giải quyết chúng đã được trình b
Trang 1TRƯỜNG ĐẠI HỌC VINH
CHUYÊN NGÀNH: TOÁN TIN ỨNG DỤNG
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Trần Xuân Sinh NGƯỜI THỰC HIỆN: Phạm Thị Mỵ
Lớp 45B Toán
VINH - 2008
Trang 2
MỤC LỤC trang Mở đầu 3
Chương 1 Một số bài toán cơ bản của lý thuyết đồ thị 4
1.1 Định nghĩa đồ thị 4
1.2 Các bài toán về đường đi 10
1.3 Nhân của đồ thị 17
1.4 Cây bao trùm 18
1.5 Sắc tính của đồ thị 20
Chương 2 Một số bài toán trò chơi trên đồ thị 22
2.1 Các bài toán sử dụng đồ thị hai phía 22
2.2 Các bài toán sử dụng đường đi ngắn nhất 23
2.3 Các bài toán sử dụng tập ổn định ngoài của đồ thị 27
2.4 Các bài toán sử dụng tìm nhân cuả đồ thị 28
2.5 Các bài toán sử dụng tìm cây bao trùm ngắn nhất 32
2.6 Bài toán bốn màu 35
Kết luận 38
Tài liệu tham khảo 39
Trang 3MỞ ĐẦU
Lý thuyết đồ thị là một ngành toán học hiện đại, có những ứng dụng quan trọng trong nhiều lĩnh vực khoa học và kĩ thuật khác nhau: điều khiển học, lý thuyết trò chơi, thông tin học, kỹ thuật điện, lý thuyết tập hợp, lý thuyết ma trận, một số vấn đề về vật lý, hoá học, sinh vật học, công nghệ thông tin Đặc biệt trong những năm gần đây lý thuyết đồ thị đã trở thành một trong những công cụ đắc lực nhất của công nghệ thông tin và trong lý thuyết tối ưu Trong nhiều bài toán thực tế thường dẫn tới bài toán tối ưu trên đồ thị Một lớp trong các bài toán
tối ưu đó là bài toán trò chơi Một bài toán được gọi là bài toán trò chơi nếu có
thể xác định được đấu thủ, trong đó mỗi đấu thủ luôn muốn giành nhau phần ưu thế về mình Để hiểu biết rõ hơn về những ứng dụng của lý thuyết đồ thị trong
các trò chơi, chúng tôi lựa chọn đề tài luận văn Sử dụng lý thuyết đồ thị giải các bài toán trò chơi Việc sử dụng lý thuyết đồ thị để giải các bài toán trò chơi đã
được nhiều nhà toán học quan tâm và nhiều tài liệu đề cập tới (Chẳng hạn các tài liệu [1], [2], [3], [4], [5])
Nội dung khoá luận được trình bày thành hai chương
Chương 1 trình bày một số bài toán cơ bản của lý thuyết đồ thị
Chương 2 trình bày một số bài toán trò chơi trên đồ thị có những ứng dụng rộng rãi trong thực tế Các bài toán ứng dụng quan trọng của thuyết đồ thị như Bài toán đường đi ngắn nhất, Bài toán cây bao trùm ngắn nhất, Trò chơi Nim…
và những thuật toán để giải quyết chúng đã được trình bày chi tiết
Khoá luận được viết dựa trên những tài liệu cơ sở của Lý thuyết đồ thị và Toán rời rạc xuất hiện trong vài chục năm gần đây Tuy nhiên, do trình độ bản thân còn hạn chế nên khoá luận không thể tránh khỏi những thiếu sót, nhầm lẫn hoặc chưa hiểu sâu vấn đề Bản thân tác giả mong được sự góp ý, phê bình, tha thứ và giúp đỡ của các thầy cô giáo giảng dạy và hướng dẫn viết luận văn, cũng như ban chủ nhiệm Khoa Toán - Trường Đại học Vinh
Tác giả xin chân thành cảm ơn sự giúp đỡ hướng dẫn tận tình của các thầy
cô giáo trong tổ Xác suất - Toán ứng dụng - Khoa Toán, đặc biệt là thầy giáo
Trần Xuân Sinh đã giúp tác giả hoàn thành khoá luận này Tác giả
Trang 4Chương 1
MỘT SỐ BÀI TOÁN CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ
1.1 Định nghĩa đồ thị
1.1.1 Các khái niệm cơ bản
Cho tập hợp U bao gồm các phần tử rời rạc và tập V là tập hợp các phần tử thuộc U×U Khi đó ta có tập hợp G = (U, V) được gọi là đồ thị xác định bởi tập
đỉnh U và tập cạnh V Như vậy, đồ thị là một cấu trúc rời rạc được tạo nên bởi
các cạnh và đỉnh Cho hai phần tử a, b U, nếu (a, b)V thì ta nói cạnh (a, b) liên thuộc a (liên thuộc b) Số cạnh liên thuộc a gọi là cấp (hoặc bậc) của đỉnh a,
ký hiệu là deg(a) Hai đỉnh a, b có cạnh (a, b) thuộc G thì ta nói hai đỉnh kề nhau
Ví dụ Cho đồ thị thể hiện các vị trí đặt máy tính bởi các đỉnh và các cạnh
là kênh thoại nối chúng (xem hình 1)
Đồ thị G cho trong Hình 1, có 12 đỉnh, 15 cạnh Các đỉnh a, b, c, m, s là các đỉnh bậc 1; đỉnh h là đỉnh bậc 2; các đỉnh d, p là các đỉnh bậc 3; các đỉnh g, n, q
d e g h r
Trang 5+ Nếu bất kỳ cặp phần tử của U đều gồm hai phần tử khác nhau, không lặp lại và không có thứ tự thì ta có đơn đồ thị vô hướng (hình 1)
+ Nếu bất kỳ cặp phần tử của U đều gồm hai phần tử khác nhau và không
có thứ tự thì ta có đa đồ thị vô hướng Hai cạnh cùng chung với một cặp đỉnh gọi là cạnh lặp (hình 2)
Rõ ràng mỗi đơn đồ thị đều là đa đồ thị, nhưng ngược lại thì không đúng
+ Nếu bất kỳ cặp phần tử của U đều gồm hai phần tử không có thứ tự (không nhất thiết khác nhau) thì ta có giả đa đồ thị vô hướng Cạnh cùng chung với một đỉnh gọi là khuyên (hình 3)
+ Một đồ thị G = (U, V) nếu các cạnh của V được xác định bởi cặp đỉnh thuộc U có thứ tự thì G được gọi là đồ thị có hướng Khi G là đồ thị có hướng thì các cạnh (a, b) được gọi là các cung; đỉnh a được gọi là đỉnh đầu, đỉnh b được gọi là đỉnh cuối; trong trương hợp này ta cũng nói cung (a, b) đi ra khỏi a
và đi vào b Để phân biệt với đồ thị có hướng và đồ thị vô hướng trên các cung
người ta xác định theo mũi tên (→) để chỉ chiều của cung (hình 4)
+ Cho đồ thị có hướng G = (U, V) Ta gọi bán bậc ra (bán bậc vào) của đỉnh
tự kí hiệu là deg−(a)) Chẳng hạn trong Hình 4 thì deg+(d) = 3, deg−(d) = 1
Đồ thị vô hướng được sinh ra từ đồ thị có hướng khi bỏ qua chiều thứ tự
của các cung được gọi là đồ thị vô hướng tương ứng với đồ thị có hướng đã cho
Trang 61.1.2.Một số tính chất chung của đồ thị
Định lý 1.1.2.1 Cho G = (U, V) là đồ thị vô hướng có m cạnh Khi đó ta có
U v
deg(v) = 2m
Chứng minh: Rõ ràng mỗi cạnh e = (u, v) được tính một lần trong deg(u) và
một lần trong deg(v) Từ đó cho thấy tổng số các bậc của đỉnh bằng 2 lần số
cạnh Đó là điều phải chứng minh
Định lý 1.1.2.2 Cho đồ thị vô hướng G = (U, V) với n đỉnh Khi đó số đỉnh
Số trên không nguyên (không chia hết cho 2), đó là điều mâu thuẫn Vậy
số đỉnh lẻ phải là số chẵn Đó là điều phải chứng minh
Định lý 1.1.2.3
U v
deg + (v) =
U v
deg ─ (v) = m
Định lý 1.1.2.3 được suy trực tiếp từ định nghĩa đồ thị có hướng vì mỗi cung chỉ được tính 1 lần trong bán bậc của mỗi đỉnh
1.1.3 Đường đi, chu trình Đồ thị liên thông
Định nghĩa Cho đồ thị vô hướng G = (U, E) và số nguyên dương n Ta
nói đường đi độ dài n từ đỉnh a đến đỉnh b trên đồ thị G là dãy các đỉnh
Đường đi nói trên còn có thể biểu diễn bởi dãy cạnh liên tiếp
{(xo, x1), (x1, x2), … , (x n-1 , x n)}
Đỉnh a gọi là đỉnh đầu, đỉnh b là đỉnh cuối của đường đi
Lúc này ta cũng nói tồn tại đường đi nối a với b
Đường đi có đỉnh đầu trùng với đỉnh cuối (a ≡ b) gọi là chu trình
Đường đi hay chu trình được gọi là đơn nếu như không có cạnh nào lặp lại Đưòng đi hay chu trình được gọi là sơ cấp nếu như không có đỉnh nào lặp lại
Trang 7Khái niệm đường đi và chu trình với đồ thị có hướng được định nghĩa giống như với đồ thị vô hướng Tuy nhiên, cần phân biệt đường đi được thực hiện đúng theo các cung có hướng
Ví dụ 1 Xét đồ thị ở hình 3
Đường đi {d, n, e, g, q} là đường đi đơn từ d tới q có độ dài 4 Còn dãy
{d, n, e, b, g, c} không phải đường đi vì cạnh (b, g) không thuộc E Dãy {g, q, h} là chu trình độ dài 3 Đường đi {d, e, n, d, e, g} có độ dài 5 là đường đi không đơn vì cạnh (d, e) có mặt hai lần
Cho đồ thị vô hướng G = (U, E) Đồ thị G được gọi là liên thông nếu tồn
tại đường đi nối hai đỉnh bất kỳ của nó
Tương tự đồ thị có hướng G =(U, E) được gọi là liên thông mạnh nếu tồn tại đường đi nối hai đỉnh bất kỳ của nó Đồ thị có hướng G = (U, E) được gọi là
liên thông yếu nếu đồ thị vô hướng tương ứng là liên thông
Chú ý rằng đồ thị liên thông mạnh thì liên thông yếu, nhưng ngược lại thì
hướng các cạnh để có đồ thị liên thông gọi là đồ thị định hướng được
Định lý 1.1.3.1 Đồ thị liên thông vô hướng G là định hướng được khi và
chỉ khi mỗi cạnh của nó nằm trên ít nhất một chu trình
Chứng minh xem tài liệu [2]
1.1.4 Một số đồ thị dạng đặc biệt
Trong nhiều bài toán thực tế và ứng dụng thường gặp các dạng đồ thị đặc biệt sau đây
a) Đồ thị đầy đủ Cho đơn đồ thị vô hướng G = (U, V) có n đỉnh Đồ thị G
được gọi là đầy đủ, ký hiệu K n nếu giữa hai đỉnh bất kỳ của nó luôn có một cạnh
nối Chẳng hạn các đồ thị K3, K4, K5 cho trong hình 5
Trang 8
Hình 5 Đồ thị đầy đủ
nhất trong các đồ thị có cùng số đỉnh
b) Đồ thị hai phía Đơn đồ thị G = (U, V) được gọi là đồ thị hai phía nếu
như tập đỉnh được phân hoạch thành hai tập hợp X, Y sao cho mỗi cạnh của đồ thị chỉ nối một đỉnh của X với đỉnh của Y Khi đó thay vì kí hiệu đồ thị G = (U, V)
ta sử dụng kí hiệu G = (X Y, V) để chỉ đồ thị hai phía với tập đỉnh X Y
Để nhận biết đồ thị hai phía ta để ý tới định lý sau đây
Định lý 1.1.4.1 Đơn đồ thị G là hai phía khi và chỉ khi nó không chứa chu
trình độ dài lẻ
Để kiểm tra xem một đơn đồ thị có phải là hai phía hay không, ta thực hiện
các bước sau đây:
Bước 1 Chọn d là một đỉnh bất kì của đồ thị Đặt X = {d} và Y là các đỉnh kề
của d
Bước 2 Kí hiệu X’ là tập các đỉnh kề của các đỉnh thuộc Y
+ Nếu Y X’ ≠ thì đồ thị không phải hai phía, kết thúc
+ Ngược lại, gán X := X’, trở lại bước 1
Cho đồ thị hai phía G = (X Y, U) với X có m đỉnh, Y có n đỉnh G được gọi là đồ thị hai phía đầy đủ, ký hiệu là K m.n , nếu mỗi đỉnh trong tập X đều có cạnh nối với mọi đỉnh trong Y
Trang 9c) Đồ thị phẳng Đồ thị G = (U, V) được gọi là đồ thị phẳng nếu ta có thể
vẽ nó trên một mặt phẳng sao cho các cạnh của nó không cắt nhau ngoài các
đỉnh Cách vẽ như vậy được gọi là biễu diễn phẳng của đồ thị
Hình 7 Đồ thị phẳng
Để kiểm tra một đồ thị có phải là đồ thị phẳng hay không, ta có thể sử dụng định lý Kuratovski sau đây
Định lý 1.1.4.2 (Định lý Kuratovski) Đồ thị G là phẳng khi và chỉ khi nó
Đồ thị K3.3 và đồ thị K5 không phải là đồ thị phẳng
Bài toán tìm đồ thị phẳng là bài toán thông dụng trong nhiều bài toán thực
tế Chẳng hạn: Bài toán chế tạo mạch in trong công nghệ nối mạch điện; Bài toán về xây dựng đường cấp nước, điện, hơi đốt cho ba căn hộ sao cho các đường nối không cắt nhau
Việc biểu diễn phẳng của đồ thị sẽ chia cắt mặt phẳng thành nhiều miền (mảnh, phần), trong đó có cả miền không bị chặn
Ta hãy xem công thức Euler về đồ thị phẳng chia mặt phẳng ra sao
Định lý 1.1.4.3 (Công thức Euler) Giả sử G là đồ thị phẳng, liên thông, với
n đỉnh, m cạnh Gọi r là số miền (mảnh, phần) bị chia bởi biểu diễn phẳng của G Khi đó ta có
r = m – n + 2
Hệ quả: Trong một đơn đồ thị phẳng phải có ít nhất một đỉnh bậc không lớn hơn 5
Chứng minh: Xét đơn đồ thị G = (U, V) Vì G là đơn đồ thị nên mỗi phần
mặt phẳng giới hạn bởi ít nhất 3 cạnh, lại vì mỗi cạnh chỉ chung cho nhiều nhất
2 phần mặt phẳng, nên 3r ≤ 2m Nếu mọi đỉnh đều có bậc ≥ 6 thì vì mỗi cạnh liên thuộc hai đỉnh, khi đó ta có 6n ≤ 2m hay là 3n ≤ m Cộng từng vế hai bất đẳng
Trang 10thức trên ta được 3(r + n) ≤ 3m, hay là r + n ≤ m, trái với công thức Euler r + n = m + 2
Mâu thuẫn cho ta điều kết luận của hệ quả
Ví dụ 1 Giả sử có 3 nhà máy nhiệt điện và 3 mỏ than Người ta muốn làm
những con đường đi từ mỗi nhà máy tới mỏ than mà lại không cắt nhau Có thể
được không?
Đây là một bài toán khá nổi tiếng Nếu giả sử rằng những con đường ấy
không cắt nhau thì ta được một đồ thị phẳng với 6 đỉnh: a, b, c, a’, b’, c’, trong
đó mỗi đỉnh a, b, c, đều được nối với mỗi đỉnh a’, b’, c’ bằng 1 cạnh Nhưng
dựa vào các kết quả trên, có thể thấy ngay điều đó là vô lý Thật vậy n = 6, nên theo công thức
Euler r = m – n + 2 = 5
Ở đây mỗi phần mặt phẳng được tạo
nên từ đồ thị được giới hạn bởi ít nhất 4
cạnh (vì nếu 3 cạnh thì hoá ra 3 cạnh ấy
phải nối hai nhà máy hoặc hai mỏ than: điều này là ngoài thiết kế của bài toán đã
nêu); đồng thời mỗi cạnh là biên chung cho hai phần mặt phẳng cho nên 4r ≤ 2m
tức 4 5 ≤ 2 9, vô lý Vậy không thể có những con đường như trên
1.2 Các bài toán về đường đi
Trong một đồ thị G = (A, U), cho hai đỉnh a và b Người ta có thể nêu lên
ba vấn đề sau đây:
1) Tìm một đường đi từ a tới b?
2) Tìm một đường đi sơ cấp từ a tới b, qua mọi đỉnh của đồ thị?
3) Tìm một đường đi đơn giản từ a tới b, qua mọi cạnh của đồ thị?
Vấn đề thứ hai phức tạp cho nên ở đây ta xét đến hai vấn đề 1) và 3)
1.2.1 Bài toán mê lộ Theo thần thoại Hylap, người anh hùng Têzê đã liều mình
vào mê lộ (nơi có nhiều lối đi ngoắt ngoéo dễ lạc) tìm giết con quỉ Minoto Để
giúp anh khỏi lạc lối, nàng Arianđưa cho Têzê một cuộn chỉ, và cầm lấy đầu
a b c
a’ b’ c’
Hình 8
Trang 11mối Khi Têzê đi sâu vào mê lộ thì kéo dần cuộn chỉ ra và đến lúc quay về thì cuộn chỉ lại để lần theo đó mà ra khỏi mê lộ
Câu chuyện thần thoại này gần đây đã được các nhà toán học nhắc tới nhiều, vì
nó bao hàm một ý nghĩa khoa học sâu sắc có liên quan tới điều khiển học hiện đại Nếu ta xem các ngã ba, ngã tư, v.v… là những đỉnh, các đoạn đường nối
hai ngã là những cạnh, thì ta có một đồ thị G (hình 9) Gọi chỗ đứng của Arian
là a, và chỗ ở của con quỉ Minôto là b, thì vấn đề của Têzê chính là tìm xem từ a
có thể đi tới b được không và nếu được thì bằng con đường nào?
* Thuật toán 1 G Tarry đã đưa ra thuật toán đơn giản như sau để giải bài toán
Bước 1 Từ a hãy đi theo một cạnh
Bước k (k = 2, …) Khi ở đỉnh b không được chọn cạnh đã dẫn mình tới b
(trừ khi không có cách nào khác thì phải quay lui)
Chú ý: Không bao giờ được đi theo một cạnh hai lần cùng chiều
Định lý 1.2.1.1 Nếu xuất phát từ a và theo dúng theo qui tắc Tary thì sau
một số hữu hạn giai đoạn sẽ tới b hoặc sẽ phát hiện rằng không có đường đi tới b
Trang 12Chứng minh xem tài liệu [4]
*Thuật toán 2 Nếu muốn tìm đường đi sơ cấp từ a tới b thì phải theo một
thuật toán hơi khác Trong mỗi giai đoạn của quá trình tìm đường đi, ta gọi những cạnh chưa đi qua lần nào là “cạnh xanh”, những cạnh đã qua một lần là
“cạnh vàng” Khi tới mỗi điểm e ≠ b thì người kia kiểm tra lần lượt từng trường
hợp dưới đây (theo đúng thứ tự) và làm theo trường hợp đầu tiên xảy ra:
1) Có hai cạnh vàng liên thuộc e: quay lại theo cạnh vừa mới dẫn tới e; 2) Có một cạnh xanh liên thuộc e: đi theo cạnh đó;
3) e = a dừng lại;
4) Có một cạnh vàng duy nhất liên thuộc e: đi theo cạnh đó
Có thể chứng minh rằng ngoài ra không có trường hợp nào khác và sau một
số hữu hạn giai đoạn thì người kia sẽ tới b (nếu có đường đi từ a tới b), hoặc sẽ dừng ở a (nếu không có đường đi từ a tới b) Nếu người ấy dùng một cuộn chỉ
như Têzê thì trong trường hợp 1) và 4) anh ta cuốn chỉ lại, trong trường hợp 2)
anh ta kéo chỉ ra Mỗi lần tới một đỉnh e (nói riêng, khi tới b) thì sợi chỉ nằm theo một đường đi sơ cấp từ a tới e Dĩ nhiên đường đi đó tạo nên do các cạnh
vàng ở giai đoạn ấy
1.2.2 Đường đi ngắn nhất
1.2.2.1 Đồ thị vô hướng liên thông không có trọng số Khi đó đường đi từ
đỉnh a tới đỉnh b là dãy (n+1) đỉnh a = x0, x1, x2, …, x n = b Độ dài đường đi được hiểu là số cạnh n trên đường đi
Bài toán đường đi ngắn nhất từ a tới b là tìm cực tiểu của n
Ta có thuật toán sau đây để tìm đường đi ngắn nhất từ đỉnh a tới đỉnh b
Trang 13Bằng cách đó, sau n bước, đỉnh b sẽ được đánh số n Để tìm đường đi, ta xuất phát từ b, tìm đỉnh có đánh số n - 1 là đỉnh x n-1 , gán b := x n-1 và tiếp tục như
đã làm với b Bằng cách đó ta được tất cả các đường đi từ a tới b với độ dài n bé nhất
1.2.2.2 Đồ thị vô hướng liên thông có trọng số
Trong trường hợp này, đường đi ngắn nhất được hiểu là tổng các trọng số
trên đường đi từ đỉnh a tới đỉnh b là bé nhất
a) Định nghĩa Cho đồ thị vô hướng G = (U, V) Mỗi cạnh (i, j)V đặt
tương ứng giá trị số a[i, j] gọi là trọng số của cạnh Khi đó đồ thị G gọi là đồ thị
có trọng số
Ví dụ
+) Bản đồ giao thông đường bộ với trọng số của mỗi con đường là độ dài +) Bản đồ giao thông của một địa phương nào đó với trọng số của một cạnh (một cung) là khả năng thông qua của đường
Giả sử cần tìm đường đi từ a tới b được đường đi S = {a = x0, x1, … , x n = b}
Ký hiệu L(S) =
1 0
Đường đi S từ a tới b là ngắn nhất khi và chỉ khi trên mỗi đỉnh i tìm được các số
∂ i sao cho ∂ j - ∂ i ≤ a[i, j], (i, j) V và ∂ p - ∂ q = a[x p , x q ] với mọi cạnh (x p , x q) S
Chứng minh xem tài liệu [2]
Trang 14Ta có thuật toán tìm đường đi ngắn nhất từ đỉnh a tới đỉnh b
Thuật toán (Ford)
Bước 1 Gán cho a giá trị ∂0 = 0 và mọi đỉnh i thuộc U, gán ∂ i := + ∞
Bước 2 Điều chỉnh ∂ i bằng cách hễ thấy cạnh (i, j) mà ∂ j – ∂ i > a[i, j]
thì gán ∂ j := ∂ i + a[i, j] Cứ tiếp tục như vậy cho đến khi các cạnh thoả mãn điều
kiện của định lý
Bước 3 Tìm đường đi ngắn nhất
Xuất phát từ đỉnh b đã được gán giá trị ∂ n Tìm đỉnh x n-1 có ∂ n -∂ n-1 = a[x n-1 , x n]
Do quá trình xác định các giá trị ∂ như đã nêu nên đỉnh x n-1 như vậy phải
tồn tại Gán x n-1 := x n
1.2.3 Đường đi Euler
Ở mục giải trí một số báo người ta thường gặp câu đố cho trước một hình
vẽ Chẳng hạn hình 10a) hay 10b) hãy vẽ hình ấy bằng một nét bút liền (không
được dở bút khỏi trang giấy trong khi vẽ) Sau khi vẽ thử ta thấy hình 10a) thì vẽ
được bằng một nét, nhưng hình 10b) thì không vẽ được Tại sao?
Hình 10
Người ta kể rằng trước đây hơn hai trăm năm ở một thành phố tên là
Koenisberg nhiều người đã từng thắc mắc vấn đề như sau: thành phố có 7 cầu
bắc qua sông như trong hình 11, có thể nào đi dạo chơi qua khắp các cầu, nhưng
mỗi cầu chỉ đi một lượt thôi? Nếu ta coi mỗi khu vực a, b, c, d của thành phố
như một đỉnh, mỗi cầu như một cạnh nối hai đỉnh, thì bản đồ thành phố
Trang 15Lúc đó thắc mắc của dân thành phố chính là bài toán có vẽ được hình 12
bằng một nét bút liền hay không?
Bài toán này trông có vẻ đơn giản nhưng không phải dễ Người đầu tiên đã
chú ý tới nó và giải quyết nó một cách chặt chẽ là nhà toán học nổi tiếng Euler
Nói theo danh từ chính xác thì vấn đề ở đây là trong một đa đồ thị G cho
trước, hãy tìm một đường đi nối hai đỉnh a và b, và đi qua mỗi cạnh của đa đồ
thị một lần và chỉ một lần thôi Một đường đi như thế gọi là một đường đi Euler
từ a tới b Nếu đường đi khép kín (a và b trùng nhau) thì nó cũng gọi là một chu
trình Euler của đa đồ thị
Ta gọi bậc của mỗi đỉnh trong một đồ thị là số cạnh liên thuộc nó Lời giải
tổng quát cho bài toán trên nằm trong định lý sau đây
Định lý 1.2.3.1
1) Muốn cho một đa đồ thị có một đường đi Euler từ a đến b, điều kiện cần
và đủ là nó phải liên thông và mọi đỉnh của nó đều có bậc chẵn, chỉ trừ a và b
có bậc lẻ
2) Muốn cho một đa đồ thị có một chu trình Euler, điều kiện cần và đủ là
nó phải liên thông, và mọi đỉnh của nó đều có bậc chẵn
Chứng minh xem tài liệu [4]
Dưới ánh sáng định lý nên ta thấy rõ đồ thị 10a) có thể vẽ được bằng một
nét, còn hai đồ thị 10b) và 12 thì không vẽ được
Ta có thuật toán như sau để tìm đường đi Euler từ đỉnh a tới đỉnh b
* Thuật toán 1 Sau khi mọi cạnh của đồ thị đã được đánh số rồi (không
còn cạnh trắng) thì ta xuất phát từ a, và theo đúng qui tắc sau đây để đi tới b:
mỗi khi tới một đỉnh nào đó thì đi theo một cạnh đã đánh số với số cao nhất
trong tất cả các cạnh chưa dùng Rõ ràng làm như vậy ta sẽ đi theo đúng đường
* Thuật toán 2 (Fleury)
Bước 1 Xuất phát từ đỉnh lẻ a (nếu không có đỉnh lẻ thì xuất phát từ một
đỉnh a bất kỳ)
Bước k (k = 1, 2, …) Giả sử ta đang ở đỉnh k
k.1 Mỗi lần đi qua mỗi cạnh thì “xoá” cạnh đó đi
Trang 16k.2 Kiểm tra xem: Cạnh đi tiếp theo (kề k) có phải là “cầu” của đồ thị còn
lại sau khi “xoá” hay không?
+ Nếu đúng, không đi theo cạnh đó, trở lại bước k.2
+ Nếu sai, đi theo cạnh đó, sau đó trở lại bước k.1
Sau hữu hạn bước thì sẽ kết thúc ở đỉnh lẻ thứ hai b (nếu không có đỉnh lẻ thì có chu trình, trở lại a = b)
Định lý 1.2.3.2 Muốn cho v là hành trình ngắn nhất, điều kiện cần và đủ
là trên mọi chu trình sơ cấp của đồ thị G tổng số độ dài các cạnh kép của G(v) không vượt quá tổng số độ dài các cạnh đơn
Chứng minh xem tài liệu [4]
Định lý trên đưa đến thuật toán sau đây
* Thuật toán Trên đồ thị G cho trước, tìm các đỉnh bậc lẻ (theo định lý
1.1.2.2, số đỉnh này bao giờ cũng là số chẵn), rồi vẽ kép một số cạnh để biến các đỉnh ấy thành bậc chẵn Kiểm tra xem có chu trình nào trên đó tổng số độ dài các cạnh kép lớn hơn tổng số độ dài các cạnh đơn không: nếu có thì điều chỉnh bằng cách đổi cạnh kép trên chu trình ấy thành đơn và ngược lại Khi nào không còn chu trình phải điều chỉnh, thì chu trình Euler trên đa đồ thị tương ứng cho ta lời giải
Ví dụ Một chiếc xe đi tưới đường trong một khu vực (hình 13) Mỗi đường cần tưới một lần Đi thế nào cho tiết kiệm?
Hành trình nên đi là chu trình Euler của đa đồ thị đã vẽ
Hình 13
Trang 171.3 Nhân của đồ thị
1.3.1 Số ổn định trong
Cho đồ thị vô hướng G = (U, V) và A U
Tập A được gọi là ổn định trong của đồ thị nếu hai đỉnh bất kì a, b thuộc A
là không kề nhau, tức là không có cạnh nào của đồ thị nối hai đỉnh a và b
Nếu tập ổn định trong A không nằm trong bất kì tập ổn định trong nào khác
A thì ta nói A là tập ổn định trong cực đại
Số đỉnh của tập ổn định trong cực đại được gọi là số ổn định trong của đồ thị
1.3.2 Số ổn định ngoài
Cho đồ thị vô hướng G = (U,V) và B U
Tập B được gọi là ổn định ngoài của đồ thị nếu với mỗi đỉnh bất kì b không thuộc B đều tồn tại đỉnh a thuộc B sao cho có cạnh nối giữa a với b (đôi khi người ta gọi B là tập thống trị của đồ thị)
Tập ổn định ngoài B nằm trong mọi tập ổn định ngoài thì ta gọi là tập ổn
định ngoài cực tiểu
Số đỉnh của tập ổn định ngoài cực tiểu gọi là số ổn định ngoài của đồ thị
Kí hiệu số ổn định ngoài của đồ thị G là (G) = B
*Thuật toán tìm số ổn định ngoài (hay bài toán đặt vọng giác)
Bước 1 Với mỗi x i U, ta ký hiệu tập
∆(x i) = x i , y : y kề với x i , y U
Bước 2 Giả sử bước 1 xác định các tập ∆(x i ), i = 1, 2, , n Ta tìm tập B là
hợp một số tập (x i ) sao cho B U, có số phần tử ít nhất mà ∆(B) = U Khi đó B
là tập ổn định ngoài cực tiểu của đồ thị
Ví dụ Có một bản đồ nhà tù theo sơ đồ hình 14 Cần đặt các vọng giác để kiểm tra tất cả các cửa nhà tù được đánh số như sơ đồ Hỏi nên đặt vọng giác ở đâu để chỉ cần số vọng giác ít nhất mà quan sát được tất cả cửa nhà tù
Trang 18Giải Để giải quyết bài toán đặt ra, ta quy bài toán về việc tìn số ổn định ngoài của đồ thị tương ứng Vì vậy việc giải quyết bài toán vọng giác nên người
ta còn gọi tìm tập ổn định ngoài (số ổn định ngoài) là bài toán vọng giác
Cho đồ thị vô hướng G = (U, V) Tập A U gọi là nhân của đồ thị nếu A
vừa là tập ổn định trong vừa là tập ổn đỉnh ngoài
Nhân của đồ thị có thể có nhiều tập, nhưng người ta thường quan tâm nhân
có số phần tử ít nhất
Trở lại ví dụ đã nêu, các tập A1, A2, A3, A4 đều là nhân
1.4 Cây, cây bao trùm
VD Một mạng điện (không đấu song song) là một cây
Một cây có thể chọn một đỉnh là gốc của cây, các đỉnh treo gọi là lá, các cạnh gọi là cành
3
4
72
4
5
1 6
Trang 19Định lý 1.4.1.1 Cho G là đồ thị n đỉnh (n ≥ 2) Các mệnh đề sau đây là
Cho đồ thị G = (U, V) và H = (U’, V’) là một cây của G H được gọi là cây
bao trùm của G nếu H không phải là đồ thị con của bất kỳ cây nào khác của G
(H là cây cực đại của G)
Định lý 1.4.2.1 Cho H là đồ thị con của một đồ thị liên thông G với n ≥ 2
đỉnh Các tính chất sau đây là tương đương:
1) H là cây bao trùm của G;
2) H là cây có n đỉnh;
3) H không chu trình và có n - 1 cạnh;
4) H không chu trình và mỗi cạnh của G mà không thuộc H tạo nên với
các cạnh của H một chu trình duy nhất
Chứng minh xem tài liệu [4]
* Thuật toán tìm cây bao trùm
Bước 1 Xuất phát từ một chu trình sơ cấp của G ta xoá đi một cạnh
Bước k (k = 1, 2, …) Tiếp tục làm như bước 1 với các chu trình còn lại
1.4.3 Cây bao trùm ngắn nhất