Tuy nhiên, trong nhiều bài toán thực tế, đích không nằm ở rìa bản đồ. Robot có thể cần tiếp cận một điểm trung tâm, AI trong game có thể cần bảo vệ hoặc chiếm một khu vực ở giữa bản đồ,
và hệ thống định tuyến có thể cần tối ưu đường đi đến một “hub” trung tâm.
Khi đích nằm ở chính giữa mê cung, hành vi của các thuật toán tìm đường thay đổi một cách đáng kể.
1. Sự khác biệt về mặt hình học của bài toán
Khi goal nằm ở rìa hoặc góc, không gian tìm kiếm có xu hướng “một chiều”: agent chủ yếu tiến về một hướng tổng quát.
Ngược lại, khi goal nằm ở trung tâm:
- Không gian tìm kiếm bao quanh goal theo mọi hướng.
- Agent có thể tiếp cận mục tiêu từ nhiều phía khác nhau.
- Đường đi tối ưu không còn mang tính “đi thẳng về một góc”.
Điều này khiến các thuật toán phải xử lý nhiều nhánh đối xứng hơn, và sự khác biệt giữa các chiến lược tìm kiếm trở nên rõ ràng hơn.
2. BFS trong trường hợp goal ở trung tâm
BFS mở rộng không gian tìm kiếm theo từng lớp, không có định hướng. Vì vậy, khi goal nằm ở trung tâm:
- BFS sẽ lan tỏa gần như đều theo mọi hướng.
- Số node được mở rộng trước khi chạm goal thường lớn.
- Đường đi tìm được vẫn là ngắn nhất theo số bước.
Trong kịch bản này, BFS thể hiện rõ nhược điểm về hiệu năng, đặc biệt khi kích thước mê cung tăng lên.
3. A* và heuristic hướng tâm (goal-centered heuristic)
A* sử dụng heuristic để định hướng tìm kiếm về phía goal. Khi goal nằm ở trung tâm, heuristic (Manhattan hoặc Euclidean) sẽ có tính chất “hướng tâm”:
- Các node ở xa tâm bị đánh giá kém hơn.
- Không gian tìm kiếm bị thu hẹp đáng kể so với BFS.
Trong trường hợp này, A* thường cho hiệu quả rất tốt, vì heuristic phản ánh đúng cấu trúc hình học của bài toán.
Đây là một ví dụ điển hình cho thấy sức mạnh của heuristic không chỉ phụ thuộc vào công thức, mà còn phụ thuộc vào vị trí tương đối của goal.
4. Dijkstra và bài toán chi phí hướng tâm
Khi sử dụng Dijkstra trên mê cung có trọng số, việc đặt goal ở trung tâm làm xuất hiện một đặc điểm thú vị:
- Các đường đi “vòng ngoài” có thể rẻ hơn về chi phí.
- Đường đi tối ưu không nhất thiết là đường ngắn nhất về hình học.
Dijkstra không quan tâm đến hình dạng của mê cung hay vị trí của goal, mà chỉ quan tâm đến tổng chi phí. Vì vậy, nó vẫn đảm bảo nghiệm tối ưu, nhưng thường phải mở rộng nhiều node xung quanh tâm trước khi kết thúc.
5. Weighted A* khi goal nằm ở trung tâm
Weighted A* kết hợp chi phí thực tế và heuristic có trọng số:
f(n) = g(n) + w · h(n)
Trong bài toán goal ở trung tâm:
- Với
wnhỏ, hành vi gần giống A*, cân bằng tốt. - Với
wlớn, agent bị “kéo” mạnh về tâm, bỏ qua nhiều nhánh ngoại vi.
Điều này giúp thuật toán hội tụ rất nhanh, nhưng cũng làm tăng nguy cơ bỏ qua các đường đi có chi phí thấp hơn ở xa tâm.
Demo trực quan với goal ở trung tâm cho thấy rất rõ trade-off này: càng tăng w, đường đi càng thẳng và nhanh, nhưng tổng chi phí có thể tăng lên.
Center Goal Maze Demo
6. Ý nghĩa thực tế
Việc đặt goal ở trung tâm không chỉ là một biến thể hình học, mà còn phản ánh nhiều bài toán thực tế:
- Robot di chuyển đến một trạm sạc trung tâm.
- AI game phòng thủ hoặc tấn công một khu vực chiến lược.
- Hệ thống logistics tối ưu đường đến kho trung tâm.
Trong các bài toán này, việc lựa chọn thuật toán và tham số (heuristic, trọng số) có ảnh hưởng trực tiếp đến hiệu năng và chất lượng nghiệm.
7. Kết luận
Khi đích nằm ở trung tâm mê cung, sự khác biệt giữa BFS, A*, Dijkstra và Weighted A* trở nên rõ ràng hơn bao giờ hết.
Bài toán này cho thấy một nguyên lý quan trọng: hiệu quả của thuật toán tìm đường phụ thuộc không chỉ vào bản thân thuật toán, mà còn vào cấu trúc hình học của không gian và vị trí của mục tiêu.
Bình luận