ACM-搜索

原文地址:http://blog.csdn.net/ljtlyy/article/details/51235198

dfs(深搜)

深搜,簡言之就是不撞南牆不回頭

顧名思義,深度優先搜索所遵循的策略就是儘可能“深”的在圖中進行搜索,對於圖中某一個頂點V,如果它還有相鄰的頂點(在有向圖中就是還有以V爲起點的邊)且未被訪問,則訪問此頂點。如果找不到,則返回到上一個頂點。這一過程一直進行直到所有的頂點都被訪問爲止。 DFS可以搜索出從某一個頂點到另外的一個頂點的所有路徑。 由於要進行返回的操作,我們採用的是遞歸的方法。

bfs(廣搜)

廣搜,找眼鏡式搜索,大面積尋找,找到爲止,

BFS的思想:
從一個圖的某一個頂點V0出發,首先訪問和V0相鄰的且未被訪問過的頂點V1、V2、……Vn,然後依次訪問與V1、V2……Vn相鄰且未被訪問的頂點。如此繼續,找到所要找的頂點或者遍歷完整個圖。
由此可以看出,用BFS進行搜索所搜索的頂點都是按深度進行擴展的,先找到到V0距離爲1的所有頂點,然後找到距離V0爲2的頂點……所以BFS所搜索到的都是最短的路徑。
由於要將距離V0爲d(d>0)的且未被方位的點都記錄起來,我們採用隊列這種數據結構。隊列的特點是先進先出(FIFO),從某個頂點出發,記此頂點已訪問標記,然後依次搜索和此頂點相鄰的且未被訪問的頂點,將其加入隊列,並置已訪問標記,重複此步驟,直到找到需要搜索的頂點或者所有的頂點都被訪問爲止。

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