搜索算法與學習方法論

● 每週一言

聞道有先後,術業有專攻。

導語

去年的基礎算法系列中並未講到搜索算法,考慮到搜索算法的重要性和其思想的普適性,本節就來講講搜索算法的基本原理,以及其中所表現的學習方法論。

搜索

搜索顧名思義,即對關係數據集的元素逐一進行檢索。按檢索順序,通常劃分成兩種方式:深度優先搜索(Depth First Search)寬度優先搜索(Breadth First Search)

DFS,又叫深度優先遍歷,每一次檢索會優先遍歷單條關係,直到不能繼續向前遍歷爲止。

BFS,又叫寬度優先遍歷,每一次檢索會優先遍歷當前所有關係,層層深入直到不能繼續遍歷爲止。

fig1

舉個例子,如上連通圖,從節點1開始節點遍歷。
DFS的結果依次爲:1,2,3,4,5,6;
BFS的結果依次爲:1,2,5,3,6,4。

DFS一般通過遞歸函數實現,遞歸遍歷每一條關係,具體遞歸講解可以參見我之前的文章 算法基礎篇(3)——遞歸與分治

BFS一般用隊列實現,按入隊出隊順序逐層遍歷節點。

fig2

DFS和BFS這兩種不同的搜索方式,恰好體現了兩種不同的學習方法論。

DFS類似一種打破砂鍋問到底的方式,其重點在於問題研究的深度;而BFS則是一種全面思考的方式,其重點在於問題研究的寬度。

由於DFS和BFS最終都會遍歷整個關係數據集,所體現的這兩種學習方法論並無優劣之分。

fig3

不過,每個人的精力尤其是在某一段時間內的精力是有限的。因此需要具體情況具體分析,可以針對具體問題選擇DFS或BFS學習方法論,提高效率。

以上便是小鬥理解的搜索算法與學習方法論,敬請期待下節內容。

結語

感謝各位的耐心閱讀,後續文章於每週日奉上,敬請期待。歡迎大家關注小鬥公衆號 對半獨白

face

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