算法设计与分析之蛮力法


前言

大家好,我是一只勤勤恳恳的程序猿。本篇文章小猿将跟您分享算法设计与分析中的蛮力法,希望对大家有所帮助。

一、蛮力法设计思想

蛮力法是指采用遍历(扫描)技术,即采用一定的策略将待求解问题的所有元素依次处理一次,从而找出问题的解。依次处理所有元素是蛮力法的关键,为了避免陷入重复试探,应保证处理过的元素不再被处理。

二、对蛮力法的思考

1、蛮力法(枚举法、穷举法、暴力法)要求设计者找出所有可能的情况,然后选择其中一种情况,若该情况不可行(或不是最优解)则试探下一种可能的情况。 2、蛮力法是一种直接解决问题的方法,常常直接基于问 题的描述和所设计的概念定义。 3、力”一指计算机的能力,而不是人的智力。 4、蛮力法常常是最容易应用的方法。 5、蛮力法不是一个最好的算法(巧妙和高效的算法很少出自蛮力) ,但当我们想不出更好的办法时,它也是一种有效的解决问题的方法。 6、它可能是惟一一种几乎什么问题都能解决的一般性方法,常用于一些非常基本、但又十分重要的算法。

三、蛮力法的优缺点

优点 1、逻辑清晰,编写程序简洁 2、对于一些重要的问题(比如:排序、查找、矩阵乘法和字符串匹配),可以产生一些合理的算法 3、解决问题的实例很少时,可以花费较少的代价 4、可以解决一些小规模的问题(使用优化的算法没有必要,而且某些优化算法本身较复杂) 5、可以作为其他高效算法的衡量标准 缺点 用蛮力法设计的算法其时间性能往往也是最低的, 典型的指数时间算法一般都是通过蛮力搜索而得到的

四、使用蛮力法的几种情况

1、搜索所有的解空间 2、搜索所有的路径 3、直接计算 4、模拟和仿真

五、蛮力法设计步骤

用蛮力法解决问题,通常可以从两个方面进行算法设计: 1、找出枚举范围:分析问题所涉及的各种情况。 2、找出约束条件:分析问题的解需要满足的条件,并用逻辑表达式表示。

六、蛮力法示例

1、百元百鸡问题 2、BF算法 3、KMP算法 4、排序(选择排序) 5、0/1背包问题 6、TSP-图问题 7、最近对问题

总结

知识点总结 1、蛮力法的设计思想:采用一定的策略将待求解问题的所有元素依次处理一次, 从而找出问题的解。 2、求解步骤: (1)、找出枚举范围 (2)、找出约束条件

经验分享 程序员 微信小程序 职场和发展