DFS 動態規劃 回溯法 遞迴之間的關係是什麼?

時間 2021-05-09 00:23:51

1樓:青石向晚

回溯是一種思路,DFS 使用了這種思路。

遞迴是一種程式設計方式,DFS一般會使用這種程式設計方式。

動態規劃也是一種思路,適用於在具備最優子結構的問題中來優化窮舉。跟上面三者沒有什麼特別的關係,勉強算的話自上而下的動態規劃會用到遞迴的程式設計方式。

2樓:Jerron

現有的幾個答案都不對啊。

遞迴就是自我呼叫,經常作為一種程式設計的實現方式,比如題主問題中的DFS 、動態規劃、回溯法都可以用遞迴來實現,當然也可以用非遞迴來實現。很多時候乙個概念也可以用遞迴的方式來定義(比如gnu)。

回溯是一種通用的演算法,把問題分步解決,在每一步都試驗所有的可能,當發現已經找到一種方式或者目前這種方式不可能是結果的時候,退回上一步繼續嘗試其他可能。很多時候每一步的處理都是一致的,這時候用遞迴來實現就很自然。

當回溯用於樹的時候,就是深度優先搜尋。當然了,幾乎所有可以用回溯解決的問題都可以表示為樹。那麼這倆在這裡就幾乎同義了。

如果乙個問題解決的時候顯式地使用了樹,那麼我們就叫它dfs。很多時候沒有用樹我們也管它叫dfs嚴格地說是不對的,但是dfs比回溯打字的時候好輸入。別的回答裡提到了砍枝,實際上這二者都可以砍枝。

至於動態規劃,被題主放到這裡是因為都是競賽中經常會遇到並且學起來不容易明白嗎?回溯可以用於所有用窮舉法可以解決的問題,而DP只用於具有最優子結構的問題。所以不是所有問題都適合用dp來解決,比如八皇后。

dp需要存貯子問題的解,回溯不需要。

3樓:東吳大嘟嘟

遞迴是DFS的實現方式之一,也可以用stack

回溯是長點腦子的DFS,畢竟可以prune

DP就是不用遞迴的dfs,是from bottom level一點一點向上Build

4樓:

首先DFS叫做深度優先搜尋,既然是搜尋,必然會有個起點,也會有個終點。

既然是深度優先,和BFS相比,DFS就是先一次性搜到底,再退一步,再走另一條路,再一次搜到底。想象一下你在迷宮,乙個粗暴的方法就是把每條路徑是試一遍。

那麼DFS過程中,你要退一步,就必然需要儲存你走過每個點的所有資訊,而且是又先後順序的,符合後進先出的規則,那麼就需要用乙個棧,而遞迴過程中函式呼叫會自動產生棧幀,當你的棧的深度越來越大的時候,棧也越來越大,如果遞迴沒有終止條件,就會爆棧了。而在退一步的過程中,你需要從當前狀態回到之前的狀態,那麼這步操作就是回溯,回溯是遞迴的時候一定會產生的很自然的操作,只不過大部分情況下不需要回溯。

如果你知道圖,兩個節點之間一條有向邊連線,表示從這個點可以到那個點,那麼你在DFS的過程中會產生乙個圖。

動態規劃是設定邊界,然後從起點開始,從起點根據轉移方程把能到達的狀態全都算一遍,最終再去獲得那個目標節點的狀態。通常乙個狀態可能由多個狀態到達,所以會有狀態疊加。一般使用for迴圈寫方便簡潔。

而如果使用記憶化搜尋,在DFS的過程中記錄狀態,找到目標後,看看如果想知道目標狀態,這個目標狀態依賴什麼狀態,就是誰能到達它那裡,然後再去算它依賴的狀態,然後再去看依賴的狀態,不斷遞迴,最終回到起點,答案也就出來了。兩者的基礎都是整個狀態圖,可以說記憶化搜尋和動態規劃是乙個東西,而DFS只是一種搜尋方式。而DFS同樣可以不用遞迴,自己模擬棧實現。

總結:遞迴是DFS的一種實現方式,DFS是動態規劃的一種實現方式。回溯法是DFS過程中可以進行的可選操作,

5樓:

總的來說,遞迴是和很寬泛的範圍,DFS可以簡單認為是遞迴演算法中的一種,而回溯則是一種DFS的演算法。DFS、回溯和動態規劃都是為了搜尋答案而產生的演算法,即從諸多可能性中找到答案所在的那乙個。

母親得癌,我應該放棄工作和人生規劃,回去照顧她和弟弟嗎?

淺唱低吟慢悠悠 我就是個癌症晚期的母親,我是希望孩子去打拼去工作去完成她自己的人生夢想和規劃,但我的女兒堅決要回到我身邊工作以方便照顧我,我可以接受她回來小城市,但我絕對不會同意她放棄工作照顧我,我希望在我不能陪伴和保護她之後,她能在世間安穩立足,幸福的生活下去! 直腸癌家屬 父母能給你一套房就回去...

動態規劃怎麼學呀,感覺比較抽象?

George2019 正好之前寫過乙個回答 怎樣學好動態規劃?結合具體問題,理解演算法思想。還要碰到好老師。碰不到好老師,概念上分分鐘把遞推和遞迴 遞推和動規 動規和貪心,還有分治全給講混了,再做一些變形來變形去的綜合題,無益於加深理解基礎知識。最好的辦法是做典型例題,把基本概念吃透。 OhYee ...

面試 動態規劃 之最長遞增子串行

安西教練 我是覺得吧,這個問題由你問出來就特別的有代表性。之於我而言並沒有這種感覺,可能是因為尼古丁有集中注意力,增加記憶力的作用,所以你戒菸後會出現這種感覺。但是戒菸也不是一日之功。我也是老菸槍了好多年了,我後來吃不含尼古丁的進口戒菸藥,吃了一段時間之後菸癮是得到控制了,但是會有食慾不好,不知道是...