动态规划算法

小黄鸭和大树 2011-11-30 11:31:48
加精
动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法,在解决实际问题中经常被使用。
然而它本身或许不是很好理解,这里做一下本人对它的理解。
动态规划三要素:阶段,状态,决策
1、阶段是对整个过程的自然划分
2、状态表示每个阶段开始时过程所处的自然状况
3、当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这种选择手段称为决策
找出此类问题的关键:
1、能够用动态规划来求解(这是基本前提)
利用最优性原理来进行判断(这里不做解释)
2、获得状态转移方程(这是重点)
可以看做动态规划求解实际问题的时候,就是来获得当某阶段的状态和决策为已知,下阶段的状态可以通过该阶段来表示出来,而且它们之间满足一个状态转移方程:X[k+1]=T[k](X[k],U[k](X[k]))
3、根据题目要求对决策过程中产生的中间状态进行选取(如0/1背包问题中要求不超过重量上限的情况下获得最大效益,这里面获得大效益便是一个限制条件,可以用来在中间决策中产生的状态中进行选择

这里总结一下一般思路:
拿到多阶段决策最优化问题后,第一步要判断这个问题是否可以用动态规划解决,如果不能就要考虑搜索或贪心了。当确定问题可以用动态规划后,就要用下面介绍的方法解决问题了:
(1)模型匹配法:
最先考虑的就是这个方法了。挖掘问题的本质,如果发现问题是自己熟悉的某个基本的模型,就直接套用,但要小心其中的一些小的变动,现在考题办都是基本模型的变形套用时要小心条件,三思而后行。这些基本模型在先面的分类中将一一介绍。
(2)三要素法
仔细分析问题尝试着确定动态规划的三要素,不同问题的却定方向不同:
先确定阶段的问题:数塔问题,和走路问题
先确定状态的问题:大多数都是先确定状态的。
先确定决策的问题:背包问题
(3)寻找规律、拼凑法:
这个方法很简单,耐心推几组数据后,看他们的规律,总结规律间的共性,这里一般可以比较容易的得到状态转移方程,也就是确定下一阶段与前一阶段之间的联系
(4)边界条件法
找到问题的边界条件,然后考虑边界条件与它的领接状态之间的关系。这个方法也很起效。
(5)放宽约束和增加约束
这个思想是在陈启锋的论文里看到的,具体内容就是给问题增加一些条件或删除一些条件使问题变的清晰。

...全文
1904 76 打赏 收藏 转发到动态 举报
写回复
用AI写文章
76 条回复
切换为时间正序
请发表友善的回复…
发表回复
oowangfanoo 2011-12-14
  • 打赏
  • 举报
回复
不错不错
aierda 2011-12-13
  • 打赏
  • 举报
回复
不错,研究下~~~~~~~~~·
Step__by__step 2011-12-12
  • 打赏
  • 举报
回复
最优子结构,重叠子问题~~~还有各种优化,斜率优化,单调队列优化,四变形优化,貌似这都是高中学的吧~
e757717288 2011-12-12
  • 打赏
  • 举报
回复
研究下
onlymearmstr 2011-12-10
  • 打赏
  • 举报
回复
不错,研究下~~~~~~~~~·
xcd582439 2011-12-10
  • 打赏
  • 举报
回复
这个,楼主啊,动态规划怎么感觉和穷举法差不多呢,就是将所有的可能性都列出来,然后从中选取最优的,怎样去改进它呢?
dingyaguang117 2011-12-09
  • 打赏
  • 举报
回复
会DP很哈皮~~~
xiongtudi 2011-12-09
  • 打赏
  • 举报
回复
楼主说的太对了
liveths 2011-12-09
  • 打赏
  • 举报
回复
我又来片 了
AgeThirteen 2011-12-08
  • 打赏
  • 举报
回复
楼上说得太对了
超级大笨狼 2011-12-08
  • 打赏
  • 举报
回复
菲波纳切数列就是很好的DP案例

普通青年写个递归, 文艺青年加上DP

效果震撼,自己试验一下吧,不难.
dfasri 2011-12-07
  • 打赏
  • 举报
回复
要是多点懂这东西的人, 国产软件也不至于质量这么低了
hopkinsyang 2011-12-06
  • 打赏
  • 举报
回复
路过,看看,没意见发表
chensheng021 2011-12-06
  • 打赏
  • 举报
回复
学习中,表示有难度
yuniannian112 2011-12-06
  • 打赏
  • 举报
回复
nice---------
nuptxxp 2011-12-06
  • 打赏
  • 举报
回复
真正判断状态时还是很难
_menglan_Zi 2011-12-05
  • 打赏
  • 举报
回复
是吗?谢谢啦
[Quote=引用 39 楼 zhourrr1234 的回复:]
引用 8 楼 power_zhy 的回复:

LZ 有没有动态规划的好书可以推荐下的啊~~
看了不少例题了,能看懂,但尝试着自己做就老是干瞪眼 - -


有好的算法书,《计算机算法设计与分析》里面讲了很多算法,还有很多经典算法题目,我觉得挺好的
[/Quote]
liyf_liyunfeng 2011-12-05
  • 打赏
  • 举报
回复
lz:不懂啊,不过还是谢谢
hjqy114220 2011-12-05
  • 打赏
  • 举报
回复
定你一个哈
jerry0814 2011-12-05
  • 打赏
  • 举报
回复
lz:不懂啊,不过还是谢谢
加载更多回复(31)

566

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧