Tìm đường trong mê cung – BFS, DFS và A*
0
Chạy mô phỏng
Cần đăng nhập để mở; tài khoản miễn phí.
Luôn dùng bản mới nhất; khi bạn sửa lần đầu mới tạo bản riêng, bản gốc không đổi.

Tìm đường trong mê cung – BFS, DFS và A*

Lưới ô vuông có tường, một ô xuất phát và một ô đích. Học sinh chọn thuật toán tìm theo chiều rộng (BFS, dùng hàng đợi), theo chiều sâu (DFS, dùng ngăn xếp) hoặc A*, rồi xem từng bước: ô đang chờ xét được đánh số theo thứ tự sẽ lấy ra, ô đã xét tô màu theo khoảng cách, cuối cùng hiện đường tìm được. Vẽ hoặc xoá tường, kéo điểm xuất phát và đích, tạo mê cung mới và so sánh số ô đã xét, độ dài đường đi của từng thuật toán.

Bài toán tìm đường là ví dụ điển hình của chủ đề Giải quyết vấn đề với sự trợ giúp của máy tính: mê cung được mô hình hoá thành lưới ô, mỗi bước đi sang một ô kề với giá như nhau. Tìm kiếm theo chiều rộng (BFS) dùng hàng đợi, tìm kiếm theo chiều sâu (DFS) dùng ngăn xếp, còn A* dùng hàng đợi ưu tiên theo f = g + h với h là khoảng cách theo ô ngang dọc tới đích. Chọn thuật toán, bấm Chạy hoặc Từng bước. Ô màu cam là ô đang chờ, số 1, 2, 3… cho biết thứ tự sẽ được lấy ra; ô đã xét tô màu đậm dần theo số bước từ điểm xuất phát nên thấy rõ BFS lan ra như sóng còn DFS đâm sâu theo một hướng. Khi tới đích, đường đi hiện màu đỏ và bảng kết quả ghi số ô đã xét, độ dài đường và cho biết đó có phải đường ngắn nhất không. Có thể vẽ tường, kéo điểm xuất phát và đích, chọn mê cung có vòng, chướng ngại ngẫu nhiên hoặc lưới trống. Câu hỏi gợi ý: – Vì sao đường BFS tìm được luôn ngắn nhất, còn đường của DFS thì không? – Trên lưới trống, thuật toán nào xét ít ô nhất? Vì sao? – Khi nào DFS tìm tới đích nhanh hơn BFS?

Tham số điều chỉnh được

  • Thuật toán
  • Số cột của lưới (11–41 ô)
  • Tỉ lệ tường bị đục thêm (mê cung) (0–60 %)
  • Tốc độ chạy (1–100 bước/giây)
  • Mật độ chướng ngại (0–45 %)
  • Kiểu lưới