第3章 蛮力法资料课件.ppt
《第3章 蛮力法资料课件.ppt》由会员分享,可在线阅读,更多相关《第3章 蛮力法资料课件.ppt(51页珍藏版)》请在三一办公上搜索。
1、2023/1/16,算法设计与分析-蛮力法,1,第3章 蛮力法,3.1 概述,3.2 查找问题中的蛮力法,3.3 排序问题中的蛮力法,3.4 组合问题中的蛮力法,3.5 图问题中的蛮力法,3.6 几何问题中的蛮力法,2023/1/16,算法设计与分析-蛮力法,2,3.1 概述,蛮力法(穷举法),是一种简单而直接地解决问题的方法。设计思想:直接基于问题的描述。,例:计算an,3.1.1 蛮力法的设计思想,2023/1/16,算法设计与分析-蛮力法,3,应用实例:计算an的值是RSA算法的主要组成部分。RSA算法的加密和解密过程都需要一个整数的整数次幂再取模。,例如,设公钥为(5,119),私钥为
2、(77,119),明文m=19,则加密得密文c为:c=195 mod 119=2 476 099 mod 119=66解密得明文m为:m=6677 mod 119=19计算an算法的效率直接影响到RSA算法的性能。,2023/1/16,算法设计与分析-蛮力法,4,蛮力法所依赖的基本技术扫描技术 关键依次处理所有元素,基本的扫描技术遍历(1)集合的遍历(2)线性表的遍历(3)树的遍历(4)图的遍历,2023/1/16,算法设计与分析-蛮力法,5,蛮力法也是一种重要的算法设计技术,原因如下:,(1)理论上,蛮力法可以解决可计算领域的各种问题。(2)蛮力法经常用来解决一些较小规模的问题。(3)对于一
3、些重要的问题(如:排序、查找)蛮力法可以产生一些合理的算法。(4)蛮力法可以作为某类问题时间性能的底限,来衡量同样问题的更高效算法。,2023/1/16,算法设计与分析-蛮力法,6,举例:百元买百鸡问题,已知公鸡5元一只,母鸡3元一只,小鸡1元三只,用100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?,2023/1/16,算法设计与分析-蛮力法,7,3.2 查找问题中的蛮力法,3.2.1 顺序查找,3.2.2 串匹配问题,2023/1/16,算法设计与分析-蛮力法,8,顺序查找从表的一端向另一端逐个将元素与给定值进行比较,若相等,则查找成功,给出该元素在表中的位置;若整个表检测完仍未找到与给
4、定值相等的元素,则查找失败,给出失败信息。,3.2.1 顺序查找,2023/1/16,算法设计与分析-蛮力法,9,算法3.1的基本语句是i0和ri!=k,其执行次数为:,基本语句?,其中pi是第i个元素的查找概率,而bi和ci分别是基本语句i0和ri!=k的执行次数,2023/1/16,算法设计与分析-蛮力法,10,将待查值放在查找方向的尽头处,免去了在查找过程中每一次比较后都要判断查找位置是否越界,从而提高了查找速度。,改进的顺序查找,2023/1/16,算法设计与分析-蛮力法,11,算法3.2的基本语句是ri!=k,其执行次数为:,数量级相同,系数相差一半,2023/1/16,算法设计与分
5、析-蛮力法,12,用蛮力法设计的算法,都可以对算法的第一个版本进行一定程度的改良,改进其时间性能,但只能减少系数,而数量级不会改变。,一般观点:,2023/1/16,算法设计与分析-蛮力法,13,3.2.2 串匹配问题(略),串匹配问题属于易解问题。串匹配问题的特征:(1)算法的一次执行时间不容忽视:问题规模 n 很大,常常需要在大量信息中进行匹配;(2)算法改进所取得的积累效益不容忽视:串匹配操作经常被调用,执行频率高。,串匹配问题给定两个串S=“s1s2sn”和T=“t1t2tm”,在主串S中查找子串T的过程称为串匹配,也称模式匹配。,2023/1/16,算法设计与分析-蛮力法,14,3.
6、3 排序问题中的蛮力法,3.3.1 选择排序,3.3.2 起泡排序,排序:给定一个记录序列(r1,r2,rn),其相应的关键字分别为(k1,k2,kn),排序是将这些记录排列成顺序为(rs1,rs2,rsn)的一个序列,使得相应的关键字满足ks1ks2 ksn(升序或非降序)或 ks1 ks2 ksn(降序或非升序)。,2023/1/16,算法设计与分析-蛮力法,15,3.3.1 选择排序,选择排序第i趟排序从第i个记录开始扫描序列,在n-i+1(1in-1)个记录中找到关键码最小的记录,并和第i个记录交换作为有序序列的第i个记录。,2023/1/16,算法设计与分析-蛮力法,16,该算法的基
7、本语句是内层循环体中的比较语句rjrindex,其执行次数为:,2023/1/16,算法设计与分析-蛮力法,17,起泡排序在扫描过程中两两比较相邻记录,如果反序则交换,最终,最大记录就被“沉到”了序列的最后一个位置,第二遍扫描将第二大记录“沉到”了倒数第二个位置,重复上述操作,直到n-1遍扫描后,整个序列就排好序了。解释冒泡的含义,3.3.2 起泡排序,2023/1/16,算法设计与分析-蛮力法,18,该算法的基本语句是内层循环体中的比较语句rjrj+1,其执行次数为:,2023/1/16,算法设计与分析-蛮力法,19,基于起泡排序的特点,可对上述算法进行改进:,2023/1/16,算法设计与
8、分析-蛮力法,20,在最好情况下,待排序记录序列为正序,算法只执行一趟,进行了n-1次关键码的比较,不需要移动记录,时间复杂性为O(n),例:正序 1 2 3 4 5 6 7 8 9 10,例:反序 10 9 8 7 6 5 4 3 2 1,2023/1/16,算法设计与分析-蛮力法,21,最坏情况:记录的比较次数为 关键码的移动次数为因此,时间复杂性为O(n2);,平均情况:时间复杂性与最坏情况同数量级。,2023/1/16,算法设计与分析-蛮力法,22,3.4 组合问题中的蛮力法,3.4.1 0/1背包问题,3.4.2 任务分配问题,补充 生成排列对象,3.4.4,要求生成并依次考察问题域
9、中的每一个元素,从中选出满足问题的约束的元素。易产生组合爆炸现象。,2023/1/16,算法设计与分析-蛮力法,23,3.4.1 0/1背包问题,0/1背包问题是给定n个重量为w1,w2,wn、价值为v1,v2,vn的物品和一个容量为C的背包,求这些物品中的一个最有价值的子集,并且要能够装到背包中。,用蛮力法解决0/1背包问题,需要考虑给定n个物品集合的所有子集,找出所有可能的子集(总重量不超过背包容量的子集),计算每个子集的总价值,然后在他们中找到价值最大的子集。,2023/1/16,算法设计与分析-蛮力法,24,2023/1/16,算法设计与分析-蛮力法,25,结论:,对于一个具有n个元素
10、的集合,其子集数量是2n,所以,不论生成子集的算法效率有多高,蛮力法都会导致一个(2n)的算法。,2023/1/16,算法设计与分析-蛮力法,26,3.4.2 任务分配问题,假设有n个任务需要分配给n个人执行,每个任务只分配给一个人,每个人只分配一个任务,且第j个任务分配给第i个人的成本是Ci,j(1i,jn),任务分配问题要求找出总成本最小的分配方案。,2023/1/16,算法设计与分析-蛮力法,27,下面是一个任务分配问题的成本矩阵,矩阵元素Ci,j代表将任务j分配给人员i的成本。,任务分配问题就是在分配成本矩阵中的每一行选取一个元素,这些元素分别属于不同的列,并且元素之和最小。,2023
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 蛮力法资料课件 蛮力法 资料 课件

链接地址:https://www.31ppt.com/p-2137912.html