算法设计与分析的基本方法-论文.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

算法设计与分析的基本方法

1.递推法

递推算法是一种用若干步可重复的简运算(规律)来描述复杂问题的方法.

递推是序列计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通

常是通过计算机前面的一些项来得出序列中的指定象的值。其思想是把一个复杂的庞大的计

算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。

2.递归法

程序调用自身的编程技巧称为递归(recursion)。一个过程或函数在其定义或说明中

有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题

相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次

重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集

合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递

归前进;当边界条件满足时,递归返回。注意:(1)递归就是在过程或函数里调用自身;

(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

3.穷举法

穷举法,或称为暴力破解法,是一种针对于密码的破译方法,即将密码进行逐个推算直

到找出真正的密码为止。例如一个已知是四位并且全部由数字组成的密码,其可能共有

10000种组合,因此最多尝试10000次就能找到正确的密码。理论上利用这种方法可以破解

任何一种密码,问题只在于如何缩短试误时间。因此有些人运用计算机来增加效率,有些人

辅以字典来缩小密码组合的范围。

4.贪心算法

贪婪算法是一种对某些求最优解问题的更简单、更迅速的设计技术。用贪婪法设计算法

的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不考虑各

种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间,它采用自

顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模

更小的子问题,通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获

得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪婪法不要回溯。贪婪算

法是一种改进了的分级处理方法。其核心是根据题意选取一种量度标准。然后将这多个输入

排成这种量度标准所要求的顺序,按这种顺序一次输入一个量。如果这个输入和当前已构成

在这种量度意义下的部分最佳解加在一起不能产生一个可行解,则不把此输入加到这部分解

中。这种能够得到某种量度意义下最优解的分级处理方法称为贪婪算法。对于一个给定的

问题,往往可能有好几种量度标准。初看起来,这些量度标准似乎都是可取的,但实际上,

用其中的大多数量度标准作贪婪处理所得到该量度意义下的最优解并不是问题的最优解,而

是次优解。因此,选择能产生问题最优解的最优量度标准是使用贪婪算法的核心。一般情

况下,要选出最优量度标准并不是一件容易的事,但对某问题能选择出最优量度标准后,用

贪婪算法求解则特别有效。最优解可以通过一系列局部最优的选择即贪婪选择来达到,根据

当前状态做出在当前看来是最好的选择,即局部最优解选择,然后再去解做出这个选择后产

生的相应的子问题。每做一次贪婪选择就将所求问题简化为一个规模更小的子问题,最终可

得到问题的一个整体最优解。

5.分治法

分治法是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更

小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。

分治法所能解决的问题一般具有以下几个特征:

(1)该问题的规模缩小到一定的程度就可以容易地解决(2)该问题可以分解为若干个规

模较小的相同问题,即该问题具有最优子结构性质。(3)利用该问题分解出的子问题的解可

以合并为该问题的解;(4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包

含公共的子子问题。

6.动态规划法

动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题

的方法。其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求

出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域。

动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不

象前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。

动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条

件也互不相同,因

文档评论(0)

156****6092 + 关注
实名认证
文档贡献者

博士研究生

1亿VIP精品文档

相关文档