Nói chung, BFS tốt hơn cho các vấn đề liên quan đến việc tìm đường đi ngắn nhất hoặc các vấn đề liên quan đến phần nào đó. Bởi vì ở đây bạn đi từ một nút đến tất cả các nút liền kề với nó và do đó bạn có hiệu quả di chuyển từ chiều dài đường dẫn một đến chiều dài đường dẫn hai và cứ thế.
Trong khi DFS ở đầu kia giúp nhiều hơn trong các vấn đề kết nối và cũng trong việc tìm chu kỳ trong đồ thị (mặc dù tôi nghĩ bạn có thể tìm thấy chu kỳ với một chút sửa đổi của BFS quá). Xác định kết nối với DFS là tầm thường, nếu bạn gọi thủ tục khám phá hai lần từ thủ tục DFS, thì biểu đồ bị ngắt kết nối (điều này là dành cho một đồ thị vô hướng). Bạn có thể thấy thuật toán thành phần được kết nối mạnh mẽ cho một biểu đồ được chỉ dẫn ở đây, đây là một sửa đổi của DFS. Một ứng dụng khác của DFS là phân loại topo.
Đây là một số ứng dụng của cả hai thuật toán:
DFS:
Khả năng kết nối
thành phần liên thông mạnh
tôpô Sorting
BFS:
Shortest Path (Dijkstra là một số những gì sửa đổi BFS).
Kiểm tra xem biểu đồ có phải là Bipartitie hay không.
xem http://stackoverflow.com/questions/687731/breadth-first-vs-depth-first ... chứa một số thông tin và liên kết hữu ích, bao gồm 3 phần blog được liên kết với một trong hai câu trả lời cuối cùng. – hatchet
Cảm ơn bạn đã chia sẻ this.It trông thực sự hữu ích.Tôi thực sự hiểu cả hai thuật toán hoạt động như thế nào, chỉ muốn biết tại sao chúng ta cần hai thuật toán này :) – Kris
tương tự như http://stackoverflow.com/questions/1657174/what- hữu ích cho – hatchet