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

2021-09-06 20:27:41 字數 626 閱讀 8158

1、相同點:

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

2、不同點

(1)訪問序

深度優先遍歷:

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

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

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

回溯法:

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

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

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

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

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

(2)訪問次數

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

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

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

1 相同點 回溯法在實現上也是遵循深度優先的,即一步一步往前探索,而不像廣度優先那樣,由近及遠一片一片地掃。2 不同點 1 訪問序 深度優先遍歷 目的是 遍歷 本質是無序的。也就是說訪問次序不重要,重要的是都被訪問過了。可以參見題surrounded regions,深度優先只需要把從邊界起始的 o...

回溯法遵循深度優先嗎 深度優先搜尋(回溯法)

事實上,深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次.舉例說明之 下圖是乙個無向圖,如果我們從a點發起深度優先搜尋 以下的訪問次序並不是唯一的,第二個點既可以是b也可以是c...

回溯法 回溯法介紹 回溯與遞迴的區別

回溯法 有一類問題,我們不知道它明確的計算法則。而是先進行試探,試探到最終狀況,發現不滿足問題的要求,則回溯到上乙個狀態繼續試探。這種不斷試探和回溯的思想,稱為回溯法 backtrcking 此類問題包括 求最優解 一組解 全部解。例如八皇后問題 回溯的演算法思想 一直往下走,然後再一步步往回走 面...