🛠️ Công cụ

Bài 10: Bài toán tìm đường đi tối ưu

Đồ thị có trọng số, thuật toán Dijkstra và bài toán người đi giao hàng — Chuyên đề Toán 11 Kết nối tri thức.

📖 Lý thuyết ✍️ Dạng toán & bài tập 🎯 Trắc nghiệm

Bài 10: Bài toán tìm đường đi tối ưu

I. Tóm tắt lý thuyết trọng tâm

📋 1. Đồ thị có trọng số

Đồ thị có trọng số là đồ thị mà mỗi cạnh ee được gán một số thực w(e)w(e) gọi là trọng số của cạnh đó.

  • Trọng số có thể là: khoảng cách, thời gian, chi phí, lưu lượng,…
  • Độ dài của một đường đi là tổng trọng số của các cạnh trên đường đi đó.
📋 2. Bài toán đường đi ngắn nhất

Cho đồ thị có trọng số và hai đỉnh ss (bắt đầu), tt (đích). Tìm đường đi từ ss đến tt có tổng trọng số nhỏ nhất.

  • Thuật toán Dijkstra: Tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnh còn lại trong đồ thị có trọng số không âm.
⚡ 3. Bài toán người đi giao hàng (TSP)

Cho nn thành phố and chi phí đi lại giữa chúng. Hãy tìm một chu trình Hamilton đi qua mỗi thành phố đúng một lần rồi quay lại điểm xuất phát sao cho tổng chi phí là nhỏ nhất.

  • Đây là một bài toán tối ưu khó (NP-khó) trong toán học và tin học.

II. Các dạng toán và ví dụ minh họa

📌 Kỹ năng tìm đường đi ngắn nhất
  1. Duyệt thủ công (cho đồ thị nhỏ): Liệt kê các đường đi có thể, tính tổng trọng số và so sánh.
  2. Thuật toán Dijkstra:
    • Đặt nhãn cho đỉnh bắt đầu là 0, các đỉnh khác là \infty.
    • Liên tục chọn đỉnh có nhãn tạm thời nhỏ nhất, cập nhật nhãn cho các đỉnh kề nó.
    • Khi đỉnh đích được chọn (nhãn cố định), ta có kết quả.
🔍 Ví dụ 1: Tính độ dài đường đi
5374ABCD

Cho đồ thị có các cạnh: w(A,B)=5,w(B,C)=3,w(A,C)=7,w(C,D)=4w(A,B)=5, w(B,C)=3, w(A,C)=7, w(C,D)=4. Tìm đường đi ngắn nhất từ AA đến DD.

💡 Xem lời giải

Có các đường đi từ A đến D:

  • ACDA \to C \to D: Độ dài 7+4=117 + 4 = 11.
  • ABCDA \to B \to C \to D: Độ dài 5+3+4=125 + 3 + 4 = 12. Vậy đường đi ngắn nhất là ACDA \to C \to D với tổng trọng số là 11.
🔍 Ví dụ 2: Thuật toán Dijkstra đơn giản
241731ABCDE

Dùng Dijkstra để tìm đường đi từ A đến E trong hình sau (giả sử có các cạnh với trọng số dương).

  • A kề B (2), C (4). B kề C (1), D (7). C kề E (3). D kề E (1).
💡 Xem lời giải
  • Bước 1: L(A)=0L(A)=0, các đỉnh khác \infty. Chọn A.
  • Bước 2: Cập nhật L(B)=2,L(C)=4L(B)=2, L(C)=4. Chọn B (nhỏ nhất).
  • Bước 3: Từ B kề C (2+1=3 < 4), cập nhật L(C)=3L(C)=3. Kề D (2+7=9). Chọn C.
  • Bước 4: Từ C kề E (3+3=6). Chọn E. Vậy đường đi ngắn nhất là ABCEA \to B \to C \to E với tổng trọng số là 6.
🔍 Ví dụ 3: Bài toán người giao hàng

Có 3 thành phố A,B,CA, B, C với chi phí: AB=10,AC=15,BC=20AB=10, AC=15, BC=20. Tìm hành trình đi qua cả 3 thành phố rồi về lại điểm xuất phát.

💡 Xem lời giải

Chỉ có các hành trình (chu trình Hamilton):

  • ABCAA \to B \to C \to A (hoặc ngược lại ACBAA \to C \to B \to A).
  • Tổng chi phí: 10+20+15=4510 + 20 + 15 = 45. Trong trường hợp 3 thành phố, chi phí luôn là tổng 3 cạnh nối chúng.

III. Trắc nghiệm ôn tập

Câu 1:Thuật toán Dijkstra không áp dụng được cho đồ thị chứa:
Câu 2:Bài toán người đi giao hàng (TSP) thực chất là bài toán tìm:
Đúng / Sai
Câu 3Xét tính đúng/sai của các nội dung về đồ thị có trọng số:
a)Đường đi ngắn nhất luôn có ít cạnh nhất.
b)Thuật toán Dijkstra tìm đường đi ngắn nhất từ 1 đỉnh đến tất cả đỉnh khác.
c)Chu trình Hamilton ngắn nhất là bài toán đơn giản.
d)Độ dài đường đi bằng tổng trọng số các cạnh.
Câu 4:Tìm độ dài đường đi A -> B -> D biết $w(A,B)=6, w(B,C)=2, w(B,D)=8$.

IV. Bài tập tự luận

📝 Bài tập tự luyện

Câu 1. Cho đồ thị có trọng số. Chứng minh rằng nếu mọi cạnh đều có trọng số là 1 thì bài toán đường đi ngắn nhất trở thành bài toán đường đi có ít cạnh nhất.

💡 Lời giải
  • Tổng trọng số của đường đi nn cạnh là S=1=nS = \sum 1 = n.
  • Để SS nhỏ nhất thì nn phải nhỏ nhất.
  • Vậy đường đi ngắn nhất chính là đường đi đi qua ít cạnh nhất.

Câu 2. Áp dụng thuật toán Dijkstra để tìm khoảng cách từ đỉnh SS đến các đỉnh khác trong đồ thị vô hướng: (S,A)=2,(S,B)=5,(A,B)=2,(A,C)=4,(B,C)=1(S,A)=2, (S,B)=5, (A,B)=2, (A,C)=4, (B,C)=1.

💡 Lời giải
  • Khởi tạo: L(S)=0,L(A)=,L(B)=,L(C)=L(S)=0, L(A)=\infty, L(B)=\infty, L(C)=\infty.
  • Chọn S: L(A)=2,L(B)=5L(A)=2, L(B)=5.
  • Chọn A (nhỏ nhất): L(B)=min(5,2+2)=4,L(C)=2+4=6L(B)=\min(5, 2+2)=4, L(C)=2+4=6.
  • Chọn B: L(C)=min(6,4+1)=5L(C)=\min(6, 4+1)=5.
  • Kết quả: dist(S,A)=2,dist(S,B)=4,dist(S,C)=5dist(S,A)=2, dist(S,B)=4, dist(S,C)=5.

Câu 3. Cho đồ thị có 100 đỉnh, mỗi cạnh có trọng số ngẫu nhiên từ 1 đến 10. Giải thích tại sao việc thử tất cả các chu trình Hamilton để giải bài toán TSP là không khả thi.

💡 Lời giải
  • Số lượng chu trình Hamilton trong đồ thị đầy đủ nn đỉnh là (n1)!/2(n-1)! / 2.
  • Với n=100n = 100, (99)!/2(99)! / 2 là một số vô cùng lớn, vượt xa khả năng tính toán của bất kì máy tính nào hiện nay.
  • Do đó phải dùng các thuật toán xấp xỉ hoặc heuristics.
🎯

Luyện tập trắc nghiệm

Câu hỏi ngẫu nhiên từ ngân hàng đề — kiểm tra kiến thức ngay!

🚀 Làm bài trắc nghiệm →
Miễn phí · Không giới hạn lần làm
📑 Mục lục