動態規劃是什麼,意義在哪裏:
今天花了幾個小時,重新理解了一下dp。。。
首先我們要知道爲什麼要使用dp,我們在選擇dp算法的時候,往往是在決策問題上,而且是在如果不使用dp,直接暴力效率會很低的情況下選擇使用dp.
那麼問題來了,什麼時候會選擇使用dp呢,一般情況下,我們能將問題抽象出來,並且問題滿足無後效性,滿足最優子結構,並且能明確的找出狀態轉移方程的話,
dp無疑是很好的選擇。
無後效性是什麼呢,無後效性通俗的說就是隻要我們得出了當前狀態,而不用管這個狀態怎麼來的,也就是說之前的狀態已經用不着了,如果我們抽象出的狀態有後效性,很簡單,我們只用把這個值加入到狀態的表示中。
最優子結構:在決策問題中,如果,當前問題可以拆分爲多個子問題,並且依賴於這些子問題,那麼我們稱爲此問題符合子結構,而若當前狀態可以由某個階段的某個或某些
狀態直接得到,那麼就符合最優子結構
狀態轉移:這個概念比較簡單,在抽象出上述兩點的的狀態表示後,每種狀態之間轉移時值或者參數的變化。
接下來就是大量的訓練來達到熟練使用了
關於python的動態規劃詳細解釋和案例https://blog.csdn.net/cloudxli/article/details/81272861
面試動態規劃:https://blog.csdn.net/tongxinzhazha/article/details/77407648
回溯法:https://blog.csdn.net/tongxinzhazha/article/details/77628450