1. 程式人生 > >bfs與dfs的用途與區別

bfs與dfs的用途與區別

1.BFS是用來搜尋最短徑路的解是比較合適的,比如求最少步數的解,最少交換次數的解,因為BFS搜尋過程中遇到的解一定是離根最近的,所以遇到一個解,一定就是最優解,此時搜尋演算法可以終止。這個時候不適宜使用DFS,因為DFS搜尋到的解不一定是離根最近的,只有全域性搜尋完畢,才能從所有解中找出離根的最近的解。(當然這個DFS的不足,可以使用迭代加深搜尋ID-DFS去彌補)
2.空間優劣上,DFS是有優勢的,DFS不需要儲存搜尋過程中的狀態,而BFS在搜尋過程中需要儲存搜尋過的狀態,而且一般情況需要一個佇列來記錄。
3.DFS適合搜尋全部的解,因為要搜尋全部的解,那麼BFS搜尋過程中,遇到離根最近的解,並沒有什麼用,也必須遍歷完整棵搜尋樹,DFS搜尋也會搜尋全部,但是相比DFS不用記錄過多資訊,所以搜素全部解的問題,DFS顯然更加合適。

作者:知乎使用者
連結:https://www.zhihu.com/question/23780297/answer/167225829
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。