您能否指出一些動態規劃問題的陳述,其中自下而上比上自下而上更有利? (即簡單的DP工作更自然,但memo化將更難實施?)動態規劃:自上而下與自下而上比較
我發現遞歸與memoization更容易,並希望解決問題,自下而上是一個更好的或許只有可行的方法。
我知道理論上兩者都是等價的,所以即使是易於實現的東西也可以算作一種好處。
您能否指出一些動態規劃問題的陳述,其中自下而上比上自下而上更有利? (即簡單的DP工作更自然,但memo化將更難實施?)動態規劃:自上而下與自下而上比較
我發現遞歸與memoization更容易,並希望解決問題,自下而上是一個更好的或許只有可行的方法。
我知道理論上兩者都是等價的,所以即使是易於實現的東西也可以算作一種好處。
根據手頭的問題,您將使用memoization自上而下地應用自上而下的遞歸。
例如,如果您必須找到路徑圖的最小權重無關路徑,那麼您將使用自下而上的方法,因爲您必須解決所有可能的子問題。
但是,如果你必須解決揹包問題,你可能希望使用遞歸自上而下,因爲你必須解決有限數量的子問題。自下而上處理揹包問題會導致算法解決很多未在原始子問題中使用的冗餘問題。
兩件事情來決定使用哪種算法
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)
,我們只需要存儲在過去的兩個計算話雖這麼說,自底向上的並不總是最好的選擇,我會嘗試用例子來說明:
nmlog(nm)
預處理時間
你可以看一下揹包問題。製作表格可以解決這個問題。 看看標有12的幻燈片:http://www.es.ele.tue.nl/education/5MC10/Solutions/knapsack.pdf – wrhall