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.
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
Đồ thị có trọng số là đồ thị mà mỗi cạnh được gán một số thực 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 đó.
Cho đồ thị có trọng số và hai đỉnh (bắt đầu), (đích). Tìm đường đi từ đến 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.
Cho 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
- 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.
- Thuật toán Dijkstra:
- Đặt nhãn cho đỉnh bắt đầu là 0, các đỉnh khác là .
- 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ả.
Cho đồ thị có các cạnh: . Tìm đường đi ngắn nhất từ đến .
Xem lời giải
Có các đường đi từ A đến D:
- : Độ dài .
- : Độ dài . Vậy đường đi ngắn nhất là với tổng trọng số là 11.
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: , các đỉnh khác . Chọn A.
- Bước 2: Cập nhật . Chọn B (nhỏ nhất).
- Bước 3: Từ B kề C (2+1=3 < 4), cập nhật . 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à với tổng trọng số là 6.
Có 3 thành phố với chi phí: . 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):
- (hoặc ngược lại ).
- Tổng chi phí: . 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
IV. Bài tập tự luậ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 cạnh là .
- Để nhỏ nhất thì 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 đến các đỉnh khác trong đồ thị vô hướng: .
Lời giải
- Khởi tạo: .
- Chọn S: .
- Chọn A (nhỏ nhất): .
- Chọn B: .
- Kết quả: .
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 đủ đỉnh là .
- Với , 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 →