例子:最短路径问题。

下图中,连接两个节点的线段上标注着节点间的距离,请问A到D点的最短距离是多少?

静态规划

有一个很简单的思路,穷举所有可能的途径,从中选择最短的一条。这个方法的缺点是速度慢,因为问题规模较大时,穷举全部路径要面临一个天文数字的计算量。

当然这种方法也有优点,在穷举过程中,我们始终保存着一个可行解。如果不愿意继续计算,停止计算后,总能得到一个不算太差的可行解,运气好的话可能就是最优解。如果以后有时间了,想接着进行穷举,理论上也是可以的。这种方法,从一个或多个可行解开始,通过不断迭代对现有可行解优化,最后得到最优解。这种方法称为静态规划。

线性规划的单纯性解法,是一种静态规划方法。首先生成线性规划的一个可行解,然后不断迭代优化可行解,最后得到最优解。在迭代计算过程中,始终保持一个可行解或近优解,这是静态优化的一个显著特征。

忽然想起了机器学习里面有一种所谓的在线式学习方法,大概也是按照这个模式去寻找模型最优解的。比如各种神经网络模型求解过程应该都属于这类静态划问题。

当然,上面这个问题如果用静态规划的路子求解,可以穷举所有可能的途径,从中选择最短的一条。如果问题规模比较大,采用穷举的方法性能就太差了,所以才会考虑其他更好的方法。动态规划就是出于这样一种考虑被发明出来了。

动态规划

前面的问题求解可以分成 A->B,B->C,C->D 三个阶段完成。采用拆分的方法,把问题分解成多个相互联系的单阶段问题,通过求解每个单阶段问题,完成问题求解。这种方法称为动态规划

前面的问题比较简单,我们很容易用手工标出从A点出发到各个节点的最短距离,参见下图。

如果我们用F(X)表示节点X到A点的最短距离,很明显

F(D) = min( F(C1)+2, F(C2)+1, F(C3)+3 )

在动态规划问题中,F(X)称为状态,上述状态关系式称为状态转移方程。在上式中,F(D)的求解问题归结为了F(C1)、F(C2)、FC3)三个子问题。同样,可以得到:

F(C2) = min( F(B1)+3, F(B2)+1 )

状态转移

动态规划的关键就是确定状态转移方程,所谓状态实质上就是动态规划的子问题。动态规划的解决方法,是利用状态转移方程把问题归结的子问题求解。换句话讲,把最终状态的求解归结为其他状态的求解,这大概是状态转移的要表达的含义。

穷举状态 vs 穷举路径

动态规划真正的威力在于它的高效率。状态转移模型中,状态的数量远远少于状态转移路径的数量。采用传统的搜索算法暴力穷举每条路径,算法复杂度远远高于遍历状态节点。

浅析静态规划和动态规划相关推荐

  1. sql表中只有子节点的递归_动态规划与静态规划、递归、分治、回溯

    动态规划算是运筹学或者算法中的硬骨头了.不是说算法本身有多难,而是学完用完之后还是感觉到对其领会的不够深入,一种能用其术,不知其道的感觉.在很多教材或者回答中,经常看多将动态规划放在递归这一部分中.当 ...

  2. 智能汽车路径规划学习-动态规划算法、A*算法

    动态规划算法 动态规划时运筹学的一个分支,是求解多阶段决策过程最优问题的数学方法. 各个阶段决策的选取不是任意确定的,它依赖于当前面临的状态,又影响以后的发展.当各个阶段的决策确定后,就组成了一个决策 ...

  3. 浅析NOIP中的动态规划

    浅析NOIP中的图论[1] 浅析NOIP中的图论[2] 一.背包DP 背包是初学动态规划的经典模型,附:背包九讲 1[NOIP2018]货币系统 [完全背包] 题意:给定一个包含n个元素的集合A,求一 ...

  4. 多边形之间相交求交点的算法_路径规划算法总结

    本文来自知乎网友@搬砖的旺财,地平线机器人算法工程师.作者根据自己本科和硕士阶段的学习经历,整理归纳了所接触过的规划算法. 1.自主机器人近距离操作运动规划体系 在研究自主运动规划问题之前,首先需建立 ...

  5. 【Java数据结构与算法】第十八章 动态规划和KMP算法

    第十八章 动态规划和KMP算法 文章目录 第十八章 动态规划和KMP算法 一.动态规划 1.介绍 1.爬楼问题 2.扔鸡蛋问题 3.背包问题 二.KMP算法 1.引入 2.介绍 2.代码实现 一.动态 ...

  6. 运筹优化(七)--动态规划解析

    其实,在各种算法领域,动态规划的思想随处可见,用同事的话说,就是一种很朴素的方法,我之所以记录这么多文字,是今天看完动态规划,突然发现,有时候,静下心,好好理解理解最最基础的理论原理,你对这个算法的体 ...

  7. Apollo星火计划学习笔记——Apollo速度规划算法原理与实践

    文章目录 1. 速度规划算法总体介绍 1.2 不同场景下的ST图 1.2.1 主车向前匀速行驶 1.2.2 主车先向前匀速行驶,后停车 1.2.3 主车跟随前车行驶 1.2.4 主车跟随前车刹停 1. ...

  8. 动态规划(Dynamic Programming, DP)简介

    动态规划(Dynamic programming,DP)是一种在数学.计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划常常适用于有重叠子问题和最优子结 ...

  9. 路径规划五种算法简述及对比

    以下是本人在学习路径规划过程中的一些总结,借着机会写了一下,有不妥之处欢迎批评指正,谢谢. 路径规划部分在无人车架构体系当中分属控制或决策部分,如图1,是实现无人化驾驶的关键技术之一.路径规划模块性能 ...

最新文章

  1. iOS开发UI篇—transframe属性(形变)
  2. wampsever的mysql密码_WampServer修改Mysql密码的步骤
  3. Sublime Text 3 注册激活码
  4. Spark SQL之External DataSource外部数据源(二)源代码分析
  5. C++阶段01笔记03【运算符(算术运算符、赋值运算符、比较运算符、逻辑运算符)】
  6. 【框架】[Spring]XML配置实现AOP拦截-切点:JdkRegexpMethodPointcut
  7. 发布 Rafy .NET Standard 版本 Nuget 包
  8. 泛型数组 List c# 1613647847
  9. 计算机专业本科毕业转行会计,大学里就业最难的5个专业,毕业后难找工作,很多同学都转行了!...
  10. 4. linux调用文件计算阶乘前5项和_【题解循环】1091:求阶乘的和
  11. UI设计师样机模型|超酷折叠屏UI设计指南
  12. 【初级02】java JVM核心技术(2)开发工具和GC策略
  13. vs2005开发Silverlight平台搭建
  14. 【Jmeter自学】Linux环境下Jmeter运行
  15. 微信小程序开发——单行文本溢出显示省略号
  16. 公认最好的鸿蒙系统,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  17. d3js绘制y坐标轴_如何用D3绘制各类样式的x坐标轴
  18. 百家号如何提高推荐量和阅读量,百家号提高推荐量和阅读量的方法
  19. 做PPT不要傻乎乎直接插入图片,一键处理,秒变高逼格
  20. cesium建筑物3DTile单体化(cesium篇.24)

热门文章

  1. 图像边缘检测 Canny边缘检测
  2. 【Oracle】10g 11g下载路径
  3. 攒机笔记十三:国产固态硬盘
  4. 【Java】Ceph对Swift的支持及Java…
  5. Vue 引入腾讯地图 API 与实际应用保姆级分享
  6. java计算机毕业设计中医药科普网站源码+mysql数据库+系统+lw文档+部署
  7. Doris-查询(三)
  8. 登录企业邮箱入口,查看你不知道的企业公共邮箱优惠
  9. 微信小程序开发——json对象和字符串转换
  10. 网络编程2(TCP、UDP)