BFS與DFS用法與區別

 

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

 

 

 

轉自博主http://blog.csdn.net/qq_16964363/article/details/72462663

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章