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.
Click & drag on the grid to draw walls · drag the green and red squares to move start / goal · then press Play. Want a challenge? Hit Tự chơi thử and solve the maze by hand.
Move the indigo token with ↑ ↓ ← → / WASD (or tap an adjacent cell) from the green start to the red goal. Walls block you.
Mã giả
Time · Space
Cách dùng
- 1 Vẽ tường bằng cách nhấp và kéo chuột; kéo điểm bắt đầu màu xanh hoặc điểm đích màu đỏ để di chuyển chúng.
- 2 Nhấn Play để xem DFS đào sâu theo một đường đi trước khi quay lui.
- 3 Dùng Maze để tạo chướng ngại vật ngay lập tức, hoặc Step để chạy từng nút một.
- 4 Đường đi mà DFS tìm được sẽ tới đích nhưng thường không phải là đường ngắn nhất.
Vì sao dùng công cụ này
- Xem DFS dấn sâu theo một hướng duy nhất và chỉ quay lui khi bị mắc kẹt.
- Hiểu vì sao DFS không đảm bảo tìm ra đường đi ngắn nhất.
- So sánh cách đào sâu của DFS với các vòng lan tỏa đều của BFS và cách tìm mục tiêu của A*.
- Chạy hoàn toàn trong trình duyệt của bạn. Không cần đăng ký, không cần tải lên.
Câu hỏi thường gặp
Tìm kiếm theo chiều sâu (depth-first search) là gì?
DFS khám phá một đồ thị bằng cách đi sâu nhất có thể theo từng nhánh trước khi quay lui, thường sử dụng ngăn xếp (stack) hoặc đệ quy.
Độ phức tạp thời gian của DFS là bao nhiêu?
O(V + E) — giống như BFS, nó xét mỗi đỉnh và mỗi cạnh đúng một lần.
DFS có tìm ra đường đi ngắn nhất không?
Không. DFS tìm ra một đường đi nếu tồn tại, nhưng nó đi theo bất kỳ nhánh nào nó gặp trước, nên kết quả thường dài hơn đường đi ngắn nhất. Hãy dùng BFS, Dijkstra, hoặc A* để tìm đường đi ngắn nhất.
DFS phù hợp cho những bài toán nào?
Sắp xếp tô pô (topological sorting), phát hiện chu trình, tìm thành phần liên thông, tạo mê cung, và bất kỳ bài toán nào cần khám phá toàn bộ cấu trúc thay vì tìm mục tiêu gần nhất.
Trình trực quan hóa Tìm kiếm theo chiều sâu (DFS) là gì?
Trình trực quan hóa Tìm kiếm theo chiều sâu (DFS) mô phỏng cách DFS khám phá một lưới ô vuông bằng cách đi sâu nhất có thể theo một nhánh trước khi quay lui, sử dụng cấu trúc ngăn xếp (stack). Nó tìm ra một đường đi tới đích, nhưng khác với BFS, đường đi đó thường không phải là ngắn nhất.
Tính năng
Hoạt ảnh từng bước
Xem quá trình duyệt đi sâu và quay lui dọc theo từng nhánh.
Độ phức tạp
Thời gian: O(V + E). Không gian: O(V) cho ngăn xếp / đệ quy.
Riêng tư 100%
Chạy hoàn toàn trong trình duyệt của bạn — không có gì được tải lên.
Ví dụ
Input
graph 1–2, 1–3, 2–4, 3–4; start 1
Output
visit order: 1 → 2 → 4 → 3 (deep, then backtrack)
Trường hợp sử dụng
-
1
Phát hiện chu trình
Xem cách DFS tìm ra các cạnh ngược (back edge) cho biết sự tồn tại của chu trình.
-
2
Sắp xếp tô-pô
Hiểu cách DFS được dùng để sắp xếp thứ tự các đỉnh của một DAG.
-
3
Thành phần liên thông
Khám phá toàn bộ khả năng tiếp cận từ một đỉnh xuất phát.
Công cụ trực quan hóa DFS của Zerethon mô phỏng thuật toán tìm kiếm theo chiều sâu trên đồ thị ngay trong trình duyệt, đi sâu nhất có thể theo từng nhánh trước khi quay lui, sử dụng ngăn xếp hoặc đệ quy. DFS chạy với thời gian O(V + E) và không gian O(V). Thuật toán này là nền tảng của phát hiện chu trình, sắp xếp tô-pô và kiểm tra tính liên thông.
- Danh mục
- Thuật toán
- Giá
- Miễn phí
- Quyền riêng tư
- Chạy trên trình duyệt
- Đăng ký
- Không cần
Tài liệu tham khảo
- MIT OCW 6.006 — Introduction to Algorithms (CLRS) — MIT OpenCourseWare
- VisuAlgo — DFS/BFS — VisuAlgo (NUS)
- Depth-first search — Wikipedia
Quyền riêng tư
Dữ liệu của bạn không bao giờ rời khỏi trình duyệt trừ khi được nêu rõ. Trình trực quan hóa Tìm kiếm theo chiều sâu (DFS) chạy hoàn toàn phía client — không tải lên máy chủ, không ghi log, không theo dõi dữ liệu bạn nhập.
Mới làm quen? Đọc giải thích từng bước kèm phân tích Big-O: Tìm hiểu Graph Algorithms →
Xây dựng, chia sẻ và phát triển trên Zerethon Social
Đăng ký miễn phí. Kiếm điểm, sưu tầm thành tựu và kết nối với nhà sáng tạo khắp thế giới.