1. 程式人生 > >2018/9/13訓練日記

2018/9/13訓練日記

這幾天還是一直在刷pku的題,還有把網路賽沒出的B題補了一補,記憶化搜尋+dp

什麼是記憶化搜尋呢?記憶化搜尋採用搜尋的形式和動態規劃中遞推的思想將這兩種方法有機地綜合在一起,揚長避短,簡單實用,在資訊學中有著重要的作用。 
用一個公式簡單地說:記憶化搜尋=搜尋的形式+動態規劃的思想。 

網上有人說用dp做的題都可以用記憶化搜尋去做,感覺emmmm

仔細去想了想,也查了些資料

dp和記憶化搜尋原理都是相同的,只是實現方法不同

可以明顯的發現有以下幾點不同:

1、DP是從下向上,而記憶化搜尋是從上向下的

2、DP是從下向上,為了求到最終結果需要把過程中所有的值都儲存下來,以便下一步可能會使用,

而因為記憶化搜尋是從上向下的,所以求解過程求的都是需要的;也就是說不需要的值並沒有求

3、記憶化搜尋使用遞迴實現的,從上面的程式碼可以看出

如果一個dp[i][j]的值已經求過,使用DP直接呼叫即可;而使用記憶化搜尋則要進入遞迴

如果一個dp[i][j]的值還未求過,使用DP直接求得,而使用記憶化搜尋則要進入遞迴中去求,而這個遞迴很有可能是多重的

這樣一來DP在時間上幾乎總是優於記憶化搜尋的。。

emmm,總之,之後遇見的題哪個好想就寫哪個吧