【Algorithm】回溯法與深度優先遍歷的異同


1、相同點:

回溯法在實現上也是遵循深度優先的,即一步一步往前探索,而不像廣度優先那樣,由近及遠一片一片地掃。

 

2、不同點

(1)訪問序

深度優先遍歷:

  目的是“遍歷”,本質是無序的。也就是說訪問次序不重要,重要的是都被訪問過了。

可以參見題Surrounded Regions,深度優先只需要把從邊界起始的'O'全部訪問到即可。

因此在實現上,只需要對於每個位置記錄是否被visited就足夠了。

回溯法:

  目的是“求解過程”,本質是有序的。也就是說必須每一步都是要求的次序。

可以參見題Word Search,需要以要求的序進行深度優先探索,必須每一步都符合要求。

因此在實現上,不能使用visited記錄,因為同樣的內容不同的序訪問就會造成不同的結果,而不是僅僅“是否被訪問過”這么簡單。

要使用訪問狀態來記錄,也就是對於每個點記錄已經訪問過的鄰居方向,回溯之后從新的未訪問過的方向去訪問鄰居。

至於這點點之前有沒有被訪問過並不重要,重要的是沒有以當前的序進行訪問。

 

(2)訪問次數

深度優先遍歷:已經訪問過的節點不再訪問,所有點僅訪問一次。

回溯法:已經訪問過的點可能再次訪問,也可能存在沒有被訪問過的點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM