算法分析(复习版).doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法分析(复习版)

分治法:将一个复杂的问题分解成若干个规模较小、相互独立,但类型相同的子问题求解;然后再将各子问题的解组合成原始问题的一个完整答案,这样的问题求解策略就叫 分治法 快速排序算法,归并排序算法,二分搜索算法,还有汉诺塔问题等都是用分治法求解的。 一个问题能够用分治法求解的要素是: 第一,问题能够按照某种方式分解成若个规模较小、相互独立且与原问题类型同的子问题; 第二,子问题足够小时可以直接求解; 第三,能够将子问题的解组合成原问题解。 最大最小元问题 在一个元素集合中寻找最大元素和最小素的问题,即 在互不相同的 n个数 {x 1 , x2 ,xn } 中,找出最大和最小的数。 二分搜索 在有序表(已按关键字值非减排序)中搜索给定元素的问题。条件: 该问题的规模缩小到一定的程度就可以容易地解决; 该问题可以分解为若干个规模较小的相同问题; 分解出的子问题的解可以合并为原问题的解; 分解出的各个子问题是相互独立的。 二叉判定树 二分搜索过程的算法行为可以用一棵二叉树来描述。通常称这棵描述搜索算法执行过程的二叉树为二叉判定树 分治法求解排序问题思想 :按某种方式将序列分成两个或多个子序列,分别进行排序,再将已排序的子序列合并成一个有序序列。 合并排序和快速排序是两种典型的符合分治策略的排序算法。 合并排序:把两个或多个有序序列合并成一个有序序列。 两路合并排序 ? 最好时间复杂度: O(nlogn ) ? 最坏时间复杂度: O(nlogn ) ? 平均时间复杂度:O(nlogn ) ? 辅助空间: O(n ) 快速排序采用一种特殊的分划操作对排序问题进行分解,其分解方法是 :在待排序的序列(K0 ,K1,…, K n-1 )中选择一个元素作为 分划元素,也称为主元。不妨假定选择Kα( 处于位置j)为主元。经过一趟特殊的分划处理将原序列中的元素重新排列,使得以主元为轴心,将序列分成左右两个子序列。主元左侧子序列中所有元素都不大于主元,主元右侧子序列中所有元素都不小于主元。 ? 最好时间复杂度:O(nlogn) ? 平均时间复杂度:O(nlogn ) ? 最坏时间复杂度:O(n2) ? 辅助空间:O(n )或O(logn) 合并排序VS快速排序 1、问题分解过程: 合并排序 —— 将序列一分为二即可。 快速排序—— 需调用Partition函数将一个序列划分为子序列。 2、子问题解合并得到原问题解的过程: 合并排序 —— 需要调用 Merge函数来实现。(Merge函数时间复杂度为 O(n) 快速排序 ——一旦左、右两个子序列都已分别排序,整个序列便自然成为有序序列。(异常简单,几乎无须额外的工作,省去了从子问题解合并得到原问题解的过程) 选择问题是指在 n 个元素的集合中,选出某个元素值大小在集合中处于第 k 位的元素,即所谓的求第k小元素问题。 矩阵相乘 矩阵用二维数组存储,相乘的时间复杂度为 Θ (n 3 ) 分治法的思想 分治法在 每一层递归 上都有三个步骤: ? 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; ? 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题; ? 合并:将各个子问题的解合并为原问题的解。 贪心法是通过 分步决策的方法来求解问题的。 贪心法每一步上用作决策依据的选择准则被称为最优量度标准(局部最优解) 。 在根据最优量度标准选择分量的过程中,还需要使用一个 可行解判定函数 可行解判定函数 ( 约束条件) 。贪心策略并不是从整体上加以考虑的,它所做出的选择只是当前看似最佳选择,必须进一步证明该算法最终导致问题的一个整体最优解。 贪心法一般具有 2 个重要的性质:贪心选择性质 和 最优子结构性质 。 贪心选择性质:是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的 第一个基本要素,也是贪心算法与动态规划算法的主要区别。 最优子结构性质:一个问题的最优解包含其子问题的最优解。问题的最优子结构性质是该问题可用动态规划算法 或 贪心算法求解的关键特征 。 背包选择最优量度标准 选取单位重量价值最大的物品装包 , 即每次选 p i / w i 最大的物品装包标准最合理 ,得到最优解.(正确性有待证明) 基本步骤 : 1 、首先计算每种物品 单位重量的价值 Pi/ Wi 并按非增次序进行排序; 2 、然后依 贪心选择策略,选择 单位重量价值最高的物品 装入背包。依此策略一直地进行下去,将尽可能多的物品全部装入背包,直到将背包装满。 3 、若装入某件物品时, 不能全部装下 ,而背包内的物品总重量仍未达到 W ,则根据背包的剩余载重,选择单位重量价值次高的物品并尽可

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档