目录

前言

从1+1开始

总结下概念

地图到图

回头看

代码

动态规划经典问题


前言

下面的概念和公式可能会吓到你,看不懂没关系,就是让你恶心的。反正我看着也挺恶心,专业就是让你看不懂,看懂了怎么能叫专业呢?

动态规划(dynamic programming) DP

解决策过程(decision process)最优化的数学方法

动态规划实际上是一类题目的总称,并不是指某个固定的算法。动态规划的意义就是通过采用递推(或者分而治之)的策略,通过解决大问题的子问题从而解决整体的做法。动态规划的核心思想是巧妙的将问题拆分成多个子问题,通过计算子问题而得到整体问题的解。而子问题又可以拆分成更多的子问题,从而用类似递推迭代的方法解决要求的问题。

从1+1开始

比如:有这么一棵树,求AB  AC 两条路径的最小值,很简单吧:求A+B,A+C最小值

同理,如下树:很简单吧:求B+D,B+E 最小值

组合一下:求A到叶子节点的最近距离

A+B(子树)  和 A+C(子树)  的最小值吗

B子树 不也是 B+D,B+E的最小值

C子树类似

总结下概念

不然不好描述:

树的路径最小值:一棵树的所有路径最小值我

计算方法:树的路径最小值 = 根节点 + 左右子树的路径最小值

这就是:数塔取数问题,有啥用?

再实际一步:假如E和F数值一样,是不是可以合并成这样。解决办法一样

类似(多了几个节点而已):

变形(值不在节点上了,而是在路径上):

A到B = 6km

A到C=1km

问题:A-H的最近距离

分解:

X = B到H的最近距离+ A到B的距离

Y = C到H的最近距离 + A到C的距离

X 和 Y求最小值

B到H的最近距离:

X1 = D到H的最近距离 + B到D距离

Y1 = E到H的最近距离 + B到E距离

X1 和 Y1 求最小值

D到H的最近距离:只有一条路,当然也是最近,距离为10

这不就是导航吗?

地图到图

百度地图导航:延平门导航到烽火科技园,并使用“测距”:

给每个路口标记,并勾勒路线:

抽象为数据结构图,并标记路径距离,单位M:问题,求1-6的最短距离

复杂的导航无非点多几个,层级多,但如果用1W台计算机支持呢,这点计算就是毛毛雨。

回头看

在看公式,是不是能懂几分了。 区别是:上面是列表,但存储图也可以其他数据结构,下边是用数组存储,下标的Fi,j也是标识第i行第j列的节点。数据公式就是抽象概念或者思想的描述,而咱们的教学大部分直接从 公式入手,让咱们自己去理解上面一大串,也是难为我们了。当然么有公式可以不,可以,但很不方便,就跟没有了成语,需要说半天才能清楚,或者也说不清楚。 如果从公式直接看不出抽象的东西,也不着急,多自己走走上面的步骤,在试图给别人说,你是不是也想找一种描述方式,不然很难说清。

代码

代码能力强的话,代码已经出来了。

可以看出上面是找路径的问题,是在图的基础上做的, 图怎么存储直接影响后边的代码。这里就累赘了。 动态规划又分治的思想,就比如这个代码实现,就又很多小问题组成,数组,列表,邻接表,递归,熟悉了这些自然不是问题。 计算机本身就是分治的思想体现。问题来了,如果不能拆分的呢,比如思想,拆不开,拆开了也合并不在一块了,这种问题就是当前计算机解决不了的问题。学习算法,1是对编码能力的锻炼,2就是学习解决问题的思路和思想。

动态规划经典问题

数塔取数问题 (√ 本次解决) 
 矩阵取数问题(√ 本次解决)

编辑距离
 背包问题
 最长递增子序列
 最大子段和
 最长公共子序列Lcs
 正整数分组

具体问题描述和实现可以参考博文:

java-动态规划算法学习笔记 - huster-stl - 博客园动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。在面试笔试中动态规划也是经常作为考题出现,其中较为简单的DP题https://www.cnblogs.com/huststl/p/8664608.html

算法.动态规划 导航/数塔取数字问题相关推荐

  1. 51Nod-1002 数塔取数问题【DP】

    1002 数塔取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值. 每次只能走到下一层相 ...

  2. 2022-5-20 吃月饼(something wrong), 数塔取数问题, 制铁棒, 子段统计, 炮兵阵地

    1. 吃月饼 有一块月饼,是正三角形的,又被分割成了许多块小正三角形的月饼,里面有若干块被吃掉了.现在想要在这块月饼中再找一个由小正三角形月饼的正三角形月饼,而且要求面积最大的. 样例解释: 大月饼的 ...

  3. 算法学习(动态规划)- 数塔问题

    前言 之前碰到了扔鸡蛋问题(给你2个鸡蛋,在100层楼上扔,要求想出一个好的策略,去测出哪一层楼开始鸡蛋就会碎掉),一直摸不着头脑.后来才知道可以使用"动态规划"这种思想(或者叫算 ...

  4. C简单动态规划——爬数塔

    问题描述: 小明在某个角落发现了一座由数字组成的斜塔,他I想到塔顶去看看.小明可以从底层任意一个数字出发逐层爬上去,每次可以爬至上一层数字上或者上一层左边相邻的数字上(第1列只能爬至正上方上一层的数字 ...

  5. c语言动态规划算法数塔问题,动态规划之数塔问题...

    这么简单的DP问题就不要再讲了吧...无奈楼翰诚大佬的数塔问题是在没讲清楚,也只好自己写一个... 数塔问题嘛...已经有很多大佬讲过了,比如这位令人熟悉的大佬 BUT! 实际上关于这种从下往上的DP ...

  6. 杭电ACM 动态规划 1 数塔

    Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大 ...

  7. 动态规划2(数塔问题)

    数塔问题是二维情况下动态规划的经典问题,下面以洛谷的一个例题来分析数塔问题以及动态规划:原题链接 题目描述 观察下面的数字金字塔.写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大 ...

  8. python 动态规划 数塔_数塔问题,简单的动态规划算法

    /* 数塔问题: 9 12 15 10 6 8 2 18 9 5 19 7 10 4 16 有形如图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走, 一直走到底层,要求找出一条路径,使路径 ...

  9. 算法-数塔问题-c语言

    如下图是一个数塔,从顶部出发在每一个节点可以选择向左或者向右走,一直走到底层,要求找出一条路径,使得路径上的数字之和最大. 思路分析: 在用动态规划考虑数塔问题时可以自顶向下的分析,自底向上的计算. ...

最新文章

  1. 【Codeforces】1111B - Average Superhero Gang Power
  2. 万字长文总结机器学习的模型评估与调参 | 附代码下载
  3. 一次Binder通信最大可以传输多大的数据?
  4. linux 服务器(CentOS7)搭建PHP环境+SSH配置+服务器文件上传配置
  5. 训练日志 2019.1.2
  6. mysql安装忘了root_MySQL - 安装:MySQL忘记root密码的解决办法
  7. MySQL无法启动 服务没有报告任何错误
  8. WLT8016:模组通信调试
  9. Qt摄像头热插拔实现
  10. php 如何添加备案号,wordpress如何添加备案信息
  11. jxl操作合并单元格复杂表头
  12. 【数据结构】— 「时间复杂度」与「空间复杂度」
  13. LoRa亿佰特 E22-400T22S 临时寄存器和无线配置的详细解释
  14. 【LINUX】LAMP概念与搭建
  15. java毕业设计——基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码)——贪吃蛇游戏
  16. 代码格式调整 Astyle 基本使用
  17. 工作流程管理软件的系统架构与功能
  18. 2010年8月14日安排~
  19. AUTOJS新手各种脚本演示-陆续更新
  20. 服务器地址器上显示无票卷,无停售票系统全操作指南

热门文章

  1. 如何不开会员,把易企秀图片下载保存本地
  2. pdf中添加声音 java_PDF怎么添加音频?你不能错过的PDF编辑器办公软件
  3. android基本布局-TableLayout_表格布局
  4. JAVA dwg转pdf的正确解法
  5. 概率论 事件关系 古典概型与几何概型
  6. EOS区块链常见错误编码代码汇总
  7. 第一次开发EOS区块链的经验
  8. 6 模型的属性与功能
  9. 阿里工程师的自我修养之:如何在工作中快速成长? 致工程师的 10 个简单技巧
  10. 程序员不好好写报告的结果是很严重的