● 每週一言
聞道有先後,術業有專攻。
導語
去年的基礎算法系列中並未講到搜索算法,考慮到搜索算法的重要性和其思想的普適性,本節就來講講搜索算法的基本原理,以及其中所表現的學習方法論。
搜索
搜索顧名思義,即對關係數據集的元素逐一進行檢索。按檢索順序,通常劃分成兩種方式:深度優先搜索(Depth First Search)和寬度優先搜索(Breadth First Search)。
DFS,又叫深度優先遍歷,每一次檢索會優先遍歷單條關係,直到不能繼續向前遍歷爲止。
BFS,又叫寬度優先遍歷,每一次檢索會優先遍歷當前所有關係,層層深入直到不能繼續遍歷爲止。
舉個例子,如上連通圖,從節點1開始節點遍歷。
DFS的結果依次爲:1,2,3,4,5,6;
BFS的結果依次爲:1,2,5,3,6,4。
DFS一般通過遞歸函數實現,遞歸遍歷每一條關係,具體遞歸講解可以參見我之前的文章 算法基礎篇(3)——遞歸與分治。
BFS一般用隊列實現,按入隊出隊順序逐層遍歷節點。
DFS和BFS這兩種不同的搜索方式,恰好體現了兩種不同的學習方法論。
DFS類似一種打破砂鍋問到底的方式,其重點在於問題研究的深度;而BFS則是一種全面思考的方式,其重點在於問題研究的寬度。
由於DFS和BFS最終都會遍歷整個關係數據集,所體現的這兩種學習方法論並無優劣之分。
不過,每個人的精力尤其是在某一段時間內的精力是有限的。因此需要具體情況具體分析,可以針對具體問題選擇DFS或BFS學習方法論,提高效率。
以上便是小鬥理解的搜索算法與學習方法論,敬請期待下節內容。
結語
感謝各位的耐心閱讀,後續文章於每週日奉上,敬請期待。歡迎大家關注小鬥公衆號 對半獨白!