Thuật toán giải mê cung: Từ DFS/BFS cổ điển đến demo trực tiếp trong trình duyệt

Mê cung nhìn thì giống trò chơi, nhưng bản chất là một bài toán “tìm đường” kinh điển của khoa học máy tính. Chỉ cần biến mê cung thành một đồ thị (graph), ta có thể dùng những thuật toán rất “cổ đại” như DFS/BFS để tìm đường đi, và quan sát trực tiếp cách thuật toán “suy nghĩ” từng bước.

Thuật toán giải mê cung: Từ DFS/BFS cổ điển đến demo trực tiếp trong trình duyệt

Bài viết này sẽ:

  • Mô hình hóa mê cung thành grid (lưới ô).
  • Giải mê cung bằng DFSBFS.
  • Có demo chạy trực tiếp: random mê cung, chọn thuật toán, chỉnh tốc độ, step/pause.

1. Bản chất bài toán “giải mê cung” là gì?

Ta có:

  • Một bản đồ dạng lưới (grid).
  • Mỗi ô là:
    • Tường (wall): không đi qua được
    • Đường (empty): đi được
    • Start: điểm xuất phát
    • Goal: điểm đích

Nếu nhìn dưới góc độ thuật toán:

  • Mỗi ô “đi được” là một node.
  • Hai node nối với nhau nếu kề nhau theo 4 hướng (trên/dưới/trái/phải).
  • “Giải mê cung” = tìm một đường đi từ Start đến Goal.

2. DFS và BFS khác nhau thế nào?

  • DFS (Depth-First Search): đi sâu một nhánh đến cùng rồi mới quay lại. Thường cho cảm giác “liều”, dễ vòng vèo, nhưng code gọn và nhanh để demo.
  • BFS (Breadth-First Search): loang ra từng lớp như nước. Nếu mọi bước đi có chi phí như nhau, BFS đảm bảo tìm được đường đi ngắn nhất.

Điểm hay nhất: hai thằng này “cãi nhau” bằng hình ảnh rất rõ, chạy demo là thấy ngay.

3. Demo: Maze Solver (DFS/BFS)

AI Maze Solver Demo

DFS / BFS + step-by-step animation (Canvas, Vanilla JS)

Speed
Visited: 0 | Path length: 0 | 

4. Kết luận

DFS và BFS đều giải được mê cung, nhưng:

  • DFS thường tìm được đường “điên” (nhanh tìm ra một đường, không chắc ngắn).
  • BFS loang theo lớp và đảm bảo đường đi ngắn nhất khi mọi bước có chi phí như nhau.

Bài tiếp theo chúng ta sẽ nâng cấp lên A* (A-star): vẫn là “tìm đường”, nhưng biết dùng heuristic để đi thông minh hơn rất nhiều.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...