2 Khai thác lý thuyết đồ thị vào giải toán trung học phổ thông
2.5 Bài toán liên quan đến đường đi
Dạng 1: Bài toán tìm đường đi từ đỉnh A đến đỉnh B cho trước. Với những bài toán này ta có thể áp dụng một số thuật toán sau:
• Thuật toán Tarry: Với 2 quy tắc.
- Quy tắc 1 (T1): Không bao giờ đi trở lại trên một cạnh theo cùng một chiều.
- Quy tắc 2 (T2): Khi đi đến một đỉnh E ( ngã ba hoặc ngã tư...) thì chỉ được chọn cạnh đã dẫn tới E lần đầu tiên khi không còn cạnh nào khác.
• Quy tắc " Luật giao thông": Luôn đi bên phải hoặc luôn luôn đi bên trái mặt đường.
Dạng 2: Bài toán đường đi Euler.
Một đường đi đơn giản từ đỉnh A đến đỉnhB và chứa mọi cạnh của G gọi là một đường đi Euler từ A đến B.
Trường hợp đặc biệt A trùng với B thì ta có một chu trình Euler. Như vậy một chu trình đơn giản và chứa mọi cạnh của G được gọi là một chu trình Euler của G.
Dạng bài toán vẽ hình bằng một nét liền chính là tìm chu trình Euler trong một đồ thị. Sử dụng định lý sau: Một đơn đồ thị Gcó một chu trình Euler khi và chỉ khi G
liên thông và mọi đỉnh của nó đều bậc chẵn. Khi đó áp dụng thuật toán: Chọn đỉnh xuất phát, vạch một chu trình đơn giản p1 và đánh số tất cả các cạnh của p1. Sau đó vạch tiếp chu trình của p2 và đánh số tất cả các cạnh của p2. Tiếp tục quá trình trên cho tới khi tất cả các cạnh của G đều được đánh số, sau đó đi theo quy tắc sau: Mỗi khi đi ra khỏi đỉnh nào thì đi theo một cạnh đánh số cao nhất trong tất cả các cạnh chưa dùng. Khi đó ta được một chu trình Euler.
Dạng 3: Bài toán đường đi Hamilton.
Đường đi sơ cấp từ A đến B qua mọi đỉnh của đồ thị ( tức là đường đi qua mọi đỉnh của đồ thị và mỗi đỉnh chỉ đi qua một lần) gọi là đường đi Hamilton, trường hợp đặc biệt khi A trùng B ta được chu trình Hamilton.
Để tìm đường đi Hamilton ta dựa vào các nhận xét và định lý:
- Đường đi (chu trình) Hamilton phải đi qua các cạnh có đầu mút tại các đỉnh có bậc 2.
- Nếu đường đi (chu trình) đã qua hai cạnh có đầu mút tại một đỉnh có bậc lớn hơn 2 thì nó không thể đi qua các cạnh khác có đầu mút tại đỉnh đó.
- Định lý 1: Một đồ thị G có n đỉnh và bất kỳ hai đỉnh nào cũng có tổng các bậc không nhỏ hơn n thì G là đồ thị có chu trình Hamilton.
Dạng 4: Đường đi ngắn nhất.
Bằng phương pháp lặp, dần dần ta sẽ cho mỗi đỉnh x một chỉ số nào đó bằng độ dài đường đi ngắn nhất từ a đến x. Thuật toán gồm hai bước:
Bước 1: Ghi chỉ số ở các đỉnh bằng quy nạp theo số bước.
10) Đánh dấu đỉnh xuất phát từ a bằng số 0.
20) Giả sử sau k bước đã đánh dấu một số đỉnh của đồ thị bằng các chỉ số
0,1,2, ..., k−1. DùngA(i)để kí hiệu tập đỉnh được đánh dấu bằng chỉ sối(0≤i≤k−1). Sang bước k+ 1 ta xác định tập đỉnh A(k) gồm các đỉnh được đánh dấu bằng chỉ số
k:
A(k) = {x ∈ X|x 6∈
k−1
S i=0
A(i) (x chưa được đánh số) và ∃y ∈ A(k −1), x ∈ D+(y) hoặc
x∈D(y)}
Quy trình đánh số sẽ dừng lại khi đạt tới đỉnh b. Bước 2: Tìm đường ngắn nhất.
Giả sử b được đánh số bằngm(b ∈A(m)). Khi đó ta tìm tất cả các dãyb1, b2, ..., bm
có thể, sao cho:
b1 ∈A(m−1), b∈D+(b1) (b∈D(b1)) b2 ∈A(m−2), b1 ∈D+(b2) (b1 ∈D(b2)) ... bm−1 ∈A(1), bm−1∈D(a) bm−1∈D(a))
Đường đi α= [a, bm−1, bm−2, ..., b2, b1b] là một trong những đường đi ngắn nhất từ
a sang b.
Dạng 5. Đường đi ngắn nhất trên đồ thị có trọng số.
• Đồ thị có trọng số
Đồ thị G= (X, U) mà mỗi cạnh u ∈ U được đặt tương ứng với một số thực l(u)
(trên u ghi số thựcl(u)) được gọi là đồ thị có trọng số ở cạnh và thông thường gọi là đồ thị có trọng số.
Tổng P
u∈Ul(u) được gọi là trọng số của đồ thị G, đồng thời được kí hiệu bằng
l(G). l(G) = P u∈U l(u). Xét đại lượng: l(a, b) = min{l(α)|α∈D(a, b)}
• Thuật toán Dijkstra (Cho trường hợp trọng số không âm). Thuật toán gồm hai bước:
Bước 1: Ghi và giảm chỉ số tại các đỉnh đến cực tiểu.
- Ghi chỉ số: Tại đỉnh a =x0 ghi chỉ số λ0= 0 và tại đỉnh xi, i6= 0 ghi chỉ số λi là số dương đủ lớn, thậm chí có thể lớn hơn trọng số của đồ thị G.
- Giảm chỉ số đến cực tiểu: Đối với mỗi đỉnh xj(j = 1,2, ...) ta tìm được mọi cạnh (cung) (xi, xj) mà λj −λi > l(xi, xj). Sau đó tại đỉnh xj thay chỉ số λj bằng chỉ số
Ta tiếp tục quá trình này cho tới khi không còn cạnh (cung) nào cho phép giảm bớt các chỉ số λi nữa.
Bước 2: Tìm đường đi ngắn nhất.
Sau khi chỉ mục cực tiểu tại tất cả các đỉnh đã được thiết lập, ký hiệu chỉ số của
b bằng λb và chỉ số tại đỉnh xpi bằng λpi(i= 1,2, ...).
Để tìm đường đi ngắn nhất từ a đến b, ta đi theo chiều ngược lại. Tại đỉnh b
tìm tất cả các đỉnh xp1 sao cho: λb −λp1 = l(xp1, b). Tại xp1 lại tìm tất cả xp2 mà
λp1 −λp2 =l(xp2, xp1), v.v....
Dãy λb, λp1, λp2, ... giảm dần thật sự, vì vậy đến một lúc nào đó sẽ tìm được
xpk+1 = a. Khi đó λb là độ dài của đường ngắn nhất từ đỉnh a đến đỉnh b và
α = [a, xpk, xpk−1, ..., xp2, xp1, b] là một trong những đường ngắn nhất từ a đến b.
Thật vậy, giả sử β = [a, xk1, xk2, ..., xks, b] là một đường đi nào đó từ a đến b. Khi đó: λk1 −0≤l(a, xk1) λk2 −λk1 ≤l(xk1, λk2) +... λks −λks−1 ≤l(xks−1, λks λb−λks ≤l(xks, b) λb−0≤l(β)
Với đường đi α ta có λb =l(α), nên α là một trong những đường đi ngắn nhất từ đỉnh a đến đỉnh b.
Bài 1. Có 25 gian phòng triển lãm hình tam giác đều được biểu diễn trong hình bên. Biết rằng từ mỗi phòng chỉ có thể đi sang phòng bên có chung cạnh với nó mà thôi. Hỏi rằng liệu có thể bằng một lượt đi thăm mà qua được tất cả các phòng mà qua mỗi phòng đúng một lần được không?
H49
Giải
Câu trả lời là không. Hãy biểu diễn thành đồ thị với mỗi phòng là một đỉnh của đồ thị, và hai đỉnh được nối với nhau bởi một cạnh nếu như chúng có cạnh chung. Đồ thị thu được có 3 đỉnh treo tương ứng với các phòng ở góc hình tam giác
có 3 phòng như vậy . Các đỉnh treo này chỉ có thể là đỉnh đầu hoặc đỉnh cuối của một con đường đi thăm, mà một con đường chỉ có hai đỉnh đầu và cuối mà thôi. Bởi vậy, đồ thị tương ứng thu được không có đường Hamilton, cho nên không thể đi thăm tất cả 25 phòng, sao cho mỗi phòng chỉ đi qua đúng một lần mà thôi (H50).
Bài 2. Chu trình Hamilton
Trên bàn cờ có 4×4 ô vuông. Chứng minh con mã không thể đi qua tất cả các ô và qua mỗi ô đúng một lần, rồi trở về ô ban đầu.
Giải
Coi ô của bàn cờ là 1 đỉnh của đồ thị, hai ô thực hiện được một bước đi của con mã tương ứng với hai đỉnh kề nhau của đồ thị. Ta cần chứng minh rằng : Đồ thị không có chu trình Hamilton.
A1 X1 X2 A2
X8 B1 B2 X3 X7 B4 B3 X4 A4 X6 X5 A3
Trước hết xét tất cả các yếu tố có thể có của đồ thị. Do con mã đi theo đường chéo hình chữ nhật 2 x 3 hoặc 3 x 2.
nửa yếu tố nào cũng phải chứa hai chu trình không giao nhau (A1, B2, A3, B4, A1);
(A2, B1, A4, B3, A2). Xem hai chu trình không giao nhau này như các đồ thị con bộ phận, thì chúng là hai thành phần liên thông của nửa yếu tố. Do đó nửa yếu tố là một đồ thị không liên thông, nên không có chu trình Hamilton.
Bài 3. Một xã có một số xóm. Mỗi xóm có hai đường lớn và ba đường mòn đi ra. Mỗi đường lớn cũng như đường mòn dẫn tới một xóm khác. Hai xóm khác nhau bất kỳ được nối liên bằng hoặc đường lớn hoặc đường mòn. Hỏi trong xã này có bao nhiêu đường lớn và bao nhiêu đường mòn.
Giải
Trước hết ta khẳng định rằng trên xã có 6 xóm.
Thật vậy, mỗi xóm ta biểu diễn bằng một điểm. Hai xóm có đường lớn (đường mòn) nối với nhau, thì hai xóm tương ứng được nối bằng một đường nét liền (đường nét đứt). Vì xuất phát từ mỗi xóm có 2 đường lớn và 3 đường mòn đi ra xa, nên xuất phát từ mỗi điểm đã chọn chẳng hạn A, có 2 đường nét liền và 3 đường nét đứt. Bởi vậy với mỗi điểm đã chọn (A) được nối với các điểm khác là B, C, D, E, F bằng một đường nét liền hoặc một đường nét đứt. Như vậy phải có ít nhất 6 xóm (6 điểm đã chọn).
Mặt khác, hai xóm tùy ý đều phải có đường nối với nhau nên mỗi điểm chỉ có thể nối tới 5 điểm. Do đó không còn điểm nào ngoài 6 điểm A, B, C, D, E, F. Bởi vậy có 6 đường lớn và 9 đường nhỏ. Căn cứ vào yêu cầu bài toán ta có thể đơn cử một vài khả năng xảy ra các đường nối giữa xóm như hình vẽ.
H51 H52