Chuyển tới nội dung chính
Z

Graph Algorithms

BFS, DFS, Dijkstra & A* — pathfinding and traversal, visualized

A graph is just a set of nodes connected by edges — it models road networks, social connections, dependency chains and game maps alike. Graph algorithms answer two recurring questions: can I reach this node? and what is the cheapest way to get there?

Traversal: BFS vs DFS

Breadth-first search (BFS) explores a graph layer by layer using a queue, visiting all neighbours at distance 1 before distance 2. On an unweighted graph this finds the shortest path in terms of edge count. Depth-first search (DFS) instead follows one branch as far as it can using a stack (or recursion) before backtracking — ideal for cycle detection, topological sorting and maze generation. Both run in O(V + E) time.

Shortest paths: Dijkstra & A*

When edges carry weights (distances, costs, times), Dijkstra’s algorithm greedily settles the nearest unvisited node, guaranteeing the shortest path from a source to every other node in O((V + E) log V) with a priority queue. A* speeds this up for point-to-point queries by adding a heuristic that biases the search toward the goal — the same core relaxation step, just better-informed.

Where graphs show up

GPS routing, network packet forwarding, social-graph friend suggestions, build-system dependency ordering and game-AI pathfinding are all graph problems underneath. Master the four algorithms below and you have the toolkit for most of them. Drive each one yourself and watch the frontier expand in real time.

Try it interactively

Trình trực quan Tìm kiếm theo chiều rộng (BFS)

Tìm kiếm theo chiều rộng tương tác trên lưới ô — vẽ tường, di chuyển điểm bắt đầu/đích, sinh mê cung, xem từng bước mở rộng theo từng lớp. Chạy ngay trên trình duyệt.

Mở công cụ

Trình trực quan hóa Tìm kiếm theo chiều sâu (DFS)

Tìm kiếm theo chiều sâu tương tác trên lưới ô vuông — vẽ tường, di chuyển điểm bắt đầu/đích, tạo mê cung, chạy từng bước quá trình khám phá đào sâu. Chạy ngay trong trình duyệt.

Mở công cụ

Trình trực quan hóa thuật toán Dijkstra

Trực quan hóa tìm đường Dijkstra trên lưới ô — vẽ tường, di chuyển điểm bắt đầu/đích, tạo mê cung, chạy từng bước quá trình tìm kiếm. Hoạt động ngay trên trình duyệt.

Mở công cụ

Trình trực quan hóa thuật toán tìm đường A*

Tìm đường A* tương tác trên lưới ô vuông với heuristic Manhattan — vẽ tường chắn, di chuyển điểm bắt đầu/đích, tạo mê cung, chạy từng bước quá trình tìm kiếm. Chạy hoàn toàn trên trình duyệt.

Mở công cụ

Trình tạo mê cung

Trình tạo mê cung có hoạt ảnh bằng thuật toán chia đệ quy (recursive division) — xem từng bước dựng tường, điều chỉnh tốc độ, tạo mê cung mới. Kết hợp tốt với các trình trực quan hóa thuật toán tìm đường. Chạy hoàn toàn trên trình duyệt.

Mở công cụ

Prefer a focused tool?

Câu hỏi thường gặp

Thuật toán chia đệ quy tạo mê cung như thế nào?

Nó bắt đầu với một vùng trống, sau đó chia đệ quy mỗi khoang bằng một bức tường thẳng có một khe hở ngẫu nhiên, lặp lại cho đến khi các khoang quá nhỏ để chia tiếp.

Mê cung "hoàn hảo" là gì?

Một mê cung có đúng một đường đi giữa hai ô bất kỳ — không có vòng lặp và không có vùng bị cô lập. Thuật toán chia đệ quy luôn tạo ra mê cung hoàn hảo.

Tôi có thể giải mê cung này không?

Có — sao chép bố cục sang các trình trực quan hóa BFS, Dijkstra hoặc A* (cùng chung lưới ô vuông) để xem thuật toán tìm đường đi qua nó.

Còn những thuật toán tạo mê cung nào khác?

Recursive backtracker (DFS ngẫu nhiên hóa), Prim's, Kruskal's, Wilson's và Eller's — mỗi thuật toán tạo ra mê cung với kết cấu hình ảnh khác nhau.