卡題之dfs

這幾天在寫洛谷算法題的時候被暴力枚舉的題目給困住了,一個個的需要列出所有可能,可麻煩,這幾天的題目寫的很慢,其中遇到了一個題需要用dfs(深度優(yōu)先搜索算法 ),個用來標記該點是否被訪問過,一個用來把該點放入數(shù)組,所以這兩個標記是相輔相成的,一定同時出現(xiàn);dfs就是隨機選定一個起點將其標記為已經(jīng)訪問過的點,然后就是遞歸調用進行與其相鄰的點的搜索,直到所有的點都被訪問完。簡單點說就是從頂點V開始,訪問這個頂點,然后依次從V的未被訪問的鄰接點出發(fā)深度優(yōu)先遍歷圖,直至圖中所有和V有路徑的相通的頂點都被訪問了,如果此時還有頂點未被訪問,則選擇圖中未被訪問的那個頂點作為起點,重復上述動作。,但應用起來好難,所以現(xiàn)在的了解僅僅只是在理論層面。

說起dfs就不得不說一下回溯與遞歸,遞歸是一種算法結構,回溯是一種算法思想。一個遞歸就是在函數(shù)中調用函數(shù)本身來解決問題?;厮菥褪峭ㄟ^不同的嘗試來生成問題的解,有點類似于窮舉,但是和窮舉不同的是回溯會“剪枝”,剪枝的意思也就是說對已經(jīng)知道錯誤的結果沒必要再枚舉接下來的答案了。

說起來很簡單但是實操起來可謂是困難重重。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容