网站大量收购独家精品文档,联系QQ:2885784924

算法复习提纲.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
复习 递归: 定义、递归算法的效率分析(时间的递推式) 蛮力法: 定义: 蛮力法是一种简单直接的解决问题的方法,常常直接基于问题本身设计算法。可以用“直接干吧!”来描述蛮力法策略,通常是最容易想到和采用的一种简单直接的算法设计策略。 特点:1. 算法设计较为简单直接,相对容易; 2. 通常,算法效率不高。因此,高效算法一般很少来自于蛮力法。 3. 可以解决广泛领域的各种问题,几乎是唯一一种解决各种问题的 一般性方法。常用于一些非常基本而又十分重要的算法。比如: 计算 n 个数的和; 求一个列表的最大元素,等等。 4. 对于一些重要的算法(如排序、查找、矩阵乘法、字符串匹配), 蛮力法可以产生一些合理算法,多少具备一些实用价值 ,且并不 限制问题的规模。 5 对于规模不大的问题,蛮力法的计算速度可以接受时,设计一个 高效算法所花费的代价很可能不值得。(人力成本,算法复杂度) 6. 蛮力法可为研究和教学服务,以它作为尺度,衡量该问题的其他 算法的效率。 例:选择排序、冒泡排序、顺序查找、字符串匹配、穷举查找(穷举查找是一种简单的蛮力法。)等、 分治法: 定义: 分治法是著名的通用算法设计技术,很多非常有效的算法实际上是这个通用算法的特殊实现。基本思想符合人们在解决复杂问题时,常常将其从大到小逐步分解,进而将较易求解的小问题解合并得到原问题的解。这即是“分治法”的分而治之的思想。 1. 分解原问题规模为较小的子问题,子问题最好有相同规模; 2. 求解子问题;( 1、 2 步“分解-求解”过程通常是递归的,直到子问题可简单求解为止) 3. 合并子问题的解,得到原问题的解(必要的话)。 效率分析: 建立递归算法的递推式并求解得到增长函数的增长率类型: 分治法运算时间的通用分治递推式: 一个规模 n 的问题,每次被分为 a 个子问题,每个子问题规模 n/b (上例:a = 2, b = 2)。为简化分析,假定 n 是 b 的乘方即 n = bk, k=1,2,3,..., 通用分治递推式如下: c:子集 (规模为 tr )求解时间 (常量);(时间:基本操作数) f (n):子集分解和子集解合并的时间。(本例比较1次即 f (n) = 1) 解递推式,得到时间效率(主定理):若: 则: 应用例: 折半查找、合并排序、快速排序、大整数乘法、在序列A[1..n]中找最大最小元素的问题、循环锦标赛问题等 减治法: 定义: 利用给定规模与较小规模问题解之间的关系,从顶至下(递归) 或从底至上(非递归)求解问题的一种方法。减治法通常分为3种: 减常量法:常量通常为1即减1法,也有减2的(如奇偶数分别处理) 减常因子法:常因子通常为2(减半技术)。 减可变规模法。 例: 插入排序、深度优先与广度优先搜索、拓扑排序等 减治与分治的区别 变治法: 定义:变治法是一种通用的算法设计技术,基于变换的思想。 变:把问题变得更容易求解; 治:对变换后的问题求解。 变治策略有 3 种主要类型: 实例化简:变换为更简单的实例。如预排序。 改变表现:变换为不同表现实例。如AVL树,2-3树,堆。 问题化简:变换为另一个问题的实例。如数学建模,将具体应用问题 用变量、函数、方程这样的数学对象来表达。 动态规划: 定义:把求解过程分为一系列阶段,各个阶段依次按照最优性原则计算,最后阶段计算得到最优解。包括 分段、求解 两大步。(不能段化的问题不能用动态规划法求解) 动态的含义: 求解算法施加的状态是变化的。当前状态只与其直接前趋状态有关,对其直接前趋状态施加求解算法,成为当前状态。 最优性原则 (Principle of Optimality): 一个最优问题任何实例的最优解,是由该实例的子实例的最优解组成的。子实例组成父实例,父实例分解为子实例。 动态规划法的特点: 1. 分阶段(级)决策。对最优化问题,用最优性原则设计。 2. 一般采用自顶向下分析(规模减小),自底向上计算(规模增加)。计算过程是一级一级(一阶段一阶段)地向前推进,直到最终状态。 动态规划算法的基本要素: 最优子结构性质和重叠子问题。 最优子结构性质: 问题的最优解包含着它的子问题的最优解。即不管前面的策略如何,此后的决策必须是基于当前状态(由上一次决策产生)的最优决策。 重叠子问题: 在用递归算法自顶向下解问题时,每次产生的子

您可能关注的文档

文档评论(0)

wuailuo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档