算法设计的与分析第3章蛮力法.pptVIP

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

蛮 力 法 1 2 3 4 概述 查找问题中的蛮力法 排序问题中的蛮力法 组合问题中的蛮力法 5 图问题中的蛮力法 几何问题中的蛮力法 6 1 蛮力法的设计思想 蛮力法是指采用遍历(扫描)技术,即采用一定的策略将待求解问题的所有元素依次处理一次,从而找出问题的解。 依次处理所有元素是蛮力法的关键,为了避免陷入重复试探,应保证处理过的元素不再被处理。 蛮力法(枚举法、穷举法,暴力法)要求设计者找出所有可能的情况,然后选择其中一种情况,若该情况不可行(或不是最优解)则试探下一种可能的情况。 蛮力法是一种直接解决问题的方法,常常直接基于问题的描述和所设计的概念定义。 “力”——指计算机的能力,而不是人的智力。 蛮力法常常是最容易应用的方法。 求an(n为非负整数) 用连续整数检测算法计算GCD(m, n) 关于蛮力法思考 蛮力法不是一个最好的算法(巧妙和高效的算法很少出自蛮力),但当我们想不出更好的办法时,它也是一种有效的解决问题的方法。 它可能是惟一一种几乎什么问题都能解决的一般性方法,常用于一些非常基本、但又十分重要的算法。 关于蛮力法思考 蛮力法的优点 逻辑清晰,编写程序简洁 对于一些重要的问题(比如:排序、查找、矩阵乘法和字符串匹配),可以产生一些合理的算法 解决问题的实例很少时,可以花费较少的代价 可以解决一些小规模的问题(使用优化的算法没有必要,而且某些优化算法本身较复杂) 可以作为其他高效算法的衡量标准 使用蛮力法的几种情况 有哪些信誉好的足球投注网站所有的解空间 有哪些信誉好的足球投注网站所有的路径 直接计算 模拟和仿真 一个简单的例子——百元买百鸡问题 根据问题中的条件将可能的情况一一列举出来,逐一尝试从中找出满足问题条件的解。但有时一一列举出的情况数目很大,如果超过了我们所能忍受的范围,则需要进一步考虑,排除一些明显不合理的情况,尽可能减少问题可能解的列举数目。 用蛮力法解决问题,通常可以从两个方面进行算法设计: 1)找出枚举范围:分析问题所涉及的各种情况。 2)找出约束条件:分析问题的解需要满足的条件,并用逻辑表达式表示。 蛮力法解题步骤 思考下面问题:找出枚举范围和约束条件 思路: 枚举范围:100—999,共900个。 约束条件:设三位数的百位、十位、个位的数字分别为x,y,z。则有x2+y2+z2≤10,进而1≤x≤3, 0≤y≤3, 0≤z≤3。 求所有的三位数,它除以11所得的余数等于它的三个数字的平方和. 解:所求三位数必在以下数中:   100,101,102,103,110,111,112,   120,121,122,130,200,201,202,   211,212,220,221,300,301,310。   不难验证只有100,101两个数符合要求。 2 查找问题中的蛮力法—顺序查找 思路:顺序查找从表的一端向另一端逐个将元素与给定值进行比较,若相等,则查找成功,给出该元素在表中的位置;若整个表检测完仍未找到与给定值相等的元素,则查找失败,给出失败信息。 10 15 24 6 12 35 40 98 55 0 1 2 3 4 5 6 7 8 9 i 查找方向 10 15 24 6 12 35 40 98 55 0 1 2 3 4 5 6 7 8 9 i 查找方向 哨兵 K 10 15 24 6 12 35 40 98 55 0 1 2 3 4 5 6 7 8 9 i 查找方向 2 查找问题中的蛮力法—顺序查找 int SeqSearch1(int r[ ], int n, int k) { i=n; while (i0 r[i]!=k) i--; return i; } int SeqSearch2(int r[ ], int n, int k) { r[0]=k; i=n; while (r[i]!=k) i--; return i; } 2 查找问题中的蛮力法—顺序查找 2 查找问题中的蛮力法—串的匹配 BF算法 KMP算法 本趟开始位置 S 模式T tj j 回溯 si …… 回溯 i …

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档