【发布时间】:2014-04-28 08:10:32
【问题描述】:
我在理解动态编程时遇到了一些麻烦,尽管我已经阅读了很多试图理解的资源。
我了解使用斐波那契算法给出的动态编程示例。我理解如果你使用分而治之的方法,你最终会多次解决一些子问题,而动态编程通过解决那些重叠的子问题来解决这个问题,但只解决一次(并将它们存储起来以供将来参考) .但是,我在课堂上以 0/1 背包问题为例介绍了动态编程,但我并不真正理解该示例,或者它如何说明动态编程,或者它与斐波那契示例有何相似之处.
以下是与之相关的幻灯片:
在最后一张幻灯片之前,我主要了解发生了什么,上面写着 f(i,y) = max{....}
我到底找到了什么最大值?为什么我发现任何东西的最大值?最重要的是,这与动态规划有什么关系?我不理解这种关系,就像我在谈到斐波那契示例时所做的那样。老实说,我不知道这个背包问题与动态规划有什么关系,因为它甚至看起来都无法与使用斐波那契示例来说明动态规划相提并论。就像我没有看到任何相似之处或任何东西,这对我来说真的没有多大意义
【问题讨论】:
-
最大的意思是:选择或不选择,以最好的为准。
标签: algorithm dynamic-programming knapsack-problem