动态规划算法的例子
标签(空格分隔): 算法知识文档 动态规划
最短路径问题
问题:
求图中一点到图中其他点的最短路径
输入:
起点集合:
{S1,S2,...,Sn}
{
S
1
,
S
2
,
.
.
.
,
S
n
}
终点集合:
{T1,T2,...,Tn}
{
T
1
,
T
2
,
.
.
.
,
T
n
}
中间结点集合,
边的集合
E
E
, 对于任意边有长度
输出:
一条从起点到终点的最短路径
一个实例子:
算法的设计:
蛮力算法:
考察每一条从某个起点到某个终点的路径,计算长度,从其中找到最短路径.
在上述实际例子中,如果网络的层数是
k
k
,那么路径条数将会接近
动态规划算法:
多阶段决策过程,挑出子问题中好的结果进行下一步的决策,每一步求解的问题是后面阶段求解问题的子问题.每一步决策将依赖于以前步骤的决策结果.
小结:
动态规划
- 求解过程是多阶段决策过程,每步处理一个子问题,可用于求解组合优化问题
- 适用条件:问题要满足优化原则或者最优子结构性质,即:一个最优决策序列的任何子序列的初始和结束状态的最优决策序列.