算法|动态规划问题

来源:互联网 发布:ubuntu syslog函数 编辑:程序博客网 时间:2024/06/03 11:54

一、什么是动态规划?

动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。1957年出版了他的名著《Dynamic Programming》,这是该领域的第一本著作。

 

二、分类

动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。

举例:

线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等;

区域动规:石子合并,加分二叉树,统计单词个数,炮兵布阵等;

树形动规:贪吃的九头龙,二分查找树,聚会的欢乐,数字三角形等;

背包问题01背包问题,完全背包问题,分组背包问题,二维背包,装箱问题,挤牛奶(同济ACM第1132题)等;

三、应用实例:

最短路径问题项目管理网络流优化库存管理、资源分配、设备更新、排序、装载等问题最长公共子序列问题、矩阵连乘、最大子段和、凸多边形最优三角剖析、多边形游戏、图像压缩、电路布线、流水作业调度、0-1背包问题、最优二叉搜索树。

 

 

 著作权归作者所有