記憶化搜尋

2021-09-25 22:21:34 字數 721 閱讀 6420

1.記憶化搜尋的思想

記憶化搜尋的思想是,在搜尋過程中,會有很多重複計算,如果我們能記錄一些狀態的答案,就可以減少重複搜尋量

2、記憶化搜尋的適用範圍

根據記憶化搜尋的思想,它是解決重複計算,而不是重複生成,也就是說,這些搜尋必須是在搜尋擴充套件路徑的過程中分步計算的題目,也就是「搜尋答案與路徑相關」的題目,而不能是搜尋乙個路徑之後才能進行計算的題目,必須要分步計算,並且搜尋過程中,乙個搜尋結果必須可以建立在同型別問題的結果上,也就是類似於動態規劃解決的那種。

也就是說,他的問題表達,不是單純生成乙個走步方案,而是生成乙個走步方案的代價等,而且每走一步,在搜尋樹/圖中生成乙個新狀態,都可以精確計算出到此為止的費用,也就是,可以分步計算,這樣才可以套用已經得到的答案

3、記憶化搜尋的核心實現

a. 首先,要通過乙個表記錄已經儲存下的搜尋結果,一般用雜湊表實現

b.狀態表示,由於是要用雜湊表實現,所以狀態最好可以用數字表示,常用的方法是把乙個狀態連寫成乙個p進製數字,然後把這個數字對應的十進位制數字作為狀態

c.在每一狀態搜尋的開始,高效的使用雜湊表搜尋這個狀態是否出現過,如果已經做過,直接呼叫答案,回溯//這個就是標記 優化加速

d.如果沒有,則按正常方法搜尋

4、記憶化搜尋是類似於動態規劃的,不同的是,它是倒做的「遞迴式動態規劃」。

記憶化搜尋

演算法上依然是搜尋的流程,但是搜尋到的一些解用 動態規劃 的那種思想和模式作一些儲存。一般說來,動態規劃總要遍歷所有的狀態,而搜尋可以排除一些無效狀態。更重要的是搜尋還可以剪枝,可能剪去大量不必要的狀態,因此在空間開銷上往往比動態規劃要低很多。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求...

記憶化搜尋

記憶化搜尋 演算法上依然是搜尋的流程,但是搜尋到的一些解用動態規劃的那種思想和模式作一些儲存。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求解乙個狀態,就將它的解儲存下來,以後再次遇到這個狀態的時候,就不必重新求解了。例1.題目描述 給從左至右排好隊的小朋友們分糖果,要求 1.每個小朋友都...

記憶化搜尋

原文 感謝作者。一.動態規劃 動態規劃 dynamic programming 與 分治思想 有些相似,都是利用將問題分 為子問題,並通過合併子問題的解來獲得整個問題的解。於 分治 的不同之處在 於,對於乙個相同的子問題動態規劃演算法不會計算第二次,其實現原理是將每乙個計算過的子問題的值儲存在乙個表...