动态规划和递归、循环、迭代

原创 2013年12月03日 18:28:49

动态规划和递归是两种不同的方法,不可混为一谈。

递归算法是解决递归问题的算法。若问题与其子问题是同一概念,该问题是递归问题。

动态规划算法是空间换时间的算法。

经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。

为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。

当递归运算的中间结果要反复使用时,动态规划可能将指数速度的算法改进为多项式速度(但相应地,空间代价提高)。
动态规划可以递归地实现,也可以非递归地实现,一般建议用非递归的方法即循环的方法,用递归的方法有点杀鸡用宰牛刀的感觉了。


注意循环,递归,迭代各自适用的地方,三种方法有时可以互换,但是更适用一种方法的若换另一种方法往往不方便或形式复杂。

递归、分治策略、动态规划以及贪心算法之间的关系

最近集中研究计算智能,其中涉及到递归和动态规划,动态规划实现中又用到了递归,忽然发现这两个概念的差别分得不太清楚。索性把递归、分治策略、动态规划、贪婪选择之间的联系与区别都一并搞清楚吧。...
  • tyhj_sf
  • tyhj_sf
  • 2017年01月01日 23:01
  • 2059

Python算法:动态规划

转载自伯乐在线 本节主要结合一些经典的动规问题介绍动态规划的备忘录法和迭代法这两种实现方式,并对这两种方式进行对比 大家都知道,动态规划算法一般都有下面两种实现方式,前者我称为...
  • a359680405
  • a359680405
  • 2015年08月28日 10:53
  • 1573

活动选择问题(贪心算法vs动态规划)

活动选择问题贪心算法vs动态规划 基础知识 1-1动态规划 1-2贪心算法 1-3贪心算法vs动态规划 活动选择问题描述 活动选择问题最优子结构 活动选择问题算法设计4-1贪心算法之选择最早结束活动 ...
  • ii1245712564
  • ii1245712564
  • 2015年05月01日 16:25
  • 2218

java算法的基本思想之迭代,递归,动态规划

这里有n个台阶,每次能爬1或2节,请问有多少种爬法?
  • YAOQINGGG
  • YAOQINGGG
  • 2014年05月06日 22:49
  • 1023

算法之递归,迭代,动态规划,分冶

递归和迭代的本质在于,递归不需要知道大的问题的处理细节,它直接分解为小规模的问题,只关注小问题的求解和小问题如何合并这两个问题。 为了求 Qn ,先求 Qn-1;为了求  Qn-1 要先求 Qn-2...
  • lizhihaoweiwei
  • lizhihaoweiwei
  • 2014年07月17日 15:21
  • 657

递归、迭代、到动态规划

递归 VS迭代首先,一起来看下这几道经典面试题: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳...
  • ssqqdns
  • ssqqdns
  • 2017年07月31日 17:50
  • 202

python 斐波拉契递归 尾递归 备忘录 动态规划 迭代

1 递归 #coding=utf-8 ''' @author: 182 ''' from time import time def fab(n): if n==0: ...
  • judyge
  • judyge
  • 2015年10月31日 12:46
  • 518

递归、迭代与动态规划

在这篇博客里,我将以计算斐波那契数列指定位置的数为例介绍递归、迭代与动态规划。首先我们得弄清楚这三者的定义。 递归——程序调用自身,也就是函数自己调用自己。递归通常从顶部将问题分解,通过解决掉所有分...
  • wopelo
  • wopelo
  • 2017年07月09日 20:35
  • 231

五大常用算法-动态规划,分治,递归,贪心,回溯

  • 2016年01月05日 14:57
  • 62KB
  • 下载

算法分析 递归与分治策略 动态规划 贪心算法 分支限界法 随机化算法等算法

  • 2010年11月12日 10:24
  • 2.34MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态规划和递归、循环、迭代
举报原因:
原因补充:

(最多只允许输入30个字)