什么是动态规划?动态规划的意义是什么?

问题补充:最近遇到一些不是很清楚的问题,请大神们给我解决一下困惑

提问者:张名2017-04-09 22:28:44

查看全部 6 个回答

钟丽

2017-04-09 22:31:38

0 0

动态规划不是个具体的算法,是一个框架。框架是死的,但框架里填什么全看人。

这个框架就是有向无环图。图中每个点都存着一个值。你去把图论刷一遍,弄弄拓扑排序之后,就会明白,动态规划就是对图中所有点执行拓扑排序,再依照拓扑序让每个点更新自己指向的节点的值的过程。

至于图中点怎么定义,边怎么定义,值怎么定义,“更新”怎么定义,那就是考验建图论模型的能力了,我也没能力讲出个系统规律来。

这时候动态规划那些概念都能一一对应了。所谓最优子结构就是我可以证明只要按着拓扑序来更新,保证能得到最优解。无后效性呢,就是图不能有环。至于记忆化嘛,就是在每个点上存一个值了。递推嘛就是把拓扑序正着来一遍,递归嘛就是把拓扑序反着来一遍。都没什么新鲜东西的。

值得一提的是,根据上述的定义,动态规划不如最短路径强劲(觉得不好理解的请看后面的更新)。因为最短路径可以反复迭代,而动态规划必须一遍扫完。

也就是说,不要管什么动态规划了,只要是动态规划,最短路径都能解:)动态规划点里的值嘛就是最短距离了,一个点对另一个点的更新嘛就是最短路径的更新了。

若是连最短路径也不能活学活使,那还是背背书让老师开心就行了。

赞成功