




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章穷举法2022/11/101成都学院计算机系第4章穷举法2022/11/91成都学院计算机系4.1穷举法的设计思想4.2渐近表示法
4.3算法分析2022/11/102成都学院计算机系4.1穷举法的设计思想2022/11/92成都学院计算机主要知识点掌握好算法的评价标准;了解影响程序运行时间的因素;掌握算法的评价标准:时间复杂度和空间复杂度的概念;掌握渐近时间复杂度的几种表示方式;掌握常见时间复杂度渐近表示之间的关系.2022/11/103成都学院计算机系主要知识点掌握好算法的评价标准;2022/11/93成都学院4.1穷举法思想2022/11/104成都学院计算机系4.1穷举法思想2022/11/94成都学院计算机系一、穷举法定义是一种简单而直接地解决问题的方法,常常直接基于问题的描述。是最容易应用的方法,其时间性能比较低。通常典型的指数时间算法一般都是通过穷举法搜索而得到的。2022/11/105成都学院计算机系一、穷举法定义是一种简单而直接地解决问题的方法,常二、设计思想采用的基本技术是扫描技术,即使用一定的策略将待求解问题的所有元素依次处理一次,从而找到问题的解。为了避免重复试探,在基本的数据结构中采用遍历来处理每一个元素。2022/11/106成都学院计算机系二、设计思想采用的基本技术是扫描技术,即使用一定的策略将待求(1)集合的遍历按照元素序号的顺序依次处理每个元素。(2)线性表的遍历元素序号,如数组是按元素的下标来处理。(3)树的遍历先序、中序、后序2022/11/107成都学院计算机系(1)集合的遍历2022/11/97成都学院计算机系三、采用穷举法的原因理论上可以解决可计算领域的各种问题。经常用来解决一些较小规模的问题。对一些重要问题(排序、查找、字符串匹配等)有一些实用价值,且不受问题规模的限制。可作为某类问题时间性能下限,进行高效算法的比较。2022/11/108成都学院计算机系三、采用穷举法的原因理论上可以解决可计算领域的各种问题。204.2查找问题中的穷举法顺序查找思想:从表的一端向另一端逐个将元素与给定值进行比较,若相等,查找成功,给出该元素的具体位置;若整个表检测完仍未找到与给定值相等的元素,则查找失败!2022/11/109成都学院计算机系4.2查找问题中的穷举法顺序查找2022/11/99成假设以n个数放入数组r[1]~r[n]中,查找值k的算法。
intSeqsearch(intr[],intn,intk){i=n;while(i>0&&r[i]!=k)i--;returni;}2022/11/1010成都学院计算机系假设以n个数放入数组r[1]~r[n]中,查找值k的算法。2其基本语句i>0和r[i]!=k,其执行次数缺陷:每次都要判断下标i是否越界。2022/11/1011成都学院计算机系其基本语句i>0和r[i]!=k,其执行次数2022/11改进方法:哨兵将k放入到r[0]中,每次将r[1]~r[n]中的值与r[0]进行比较。intSeqsearch(intr[],intn,intk){i=n;r[0]=k;while(r[i]!=k)i--;returni;}2022/11/1012成都学院计算机系改进方法:哨兵将k放入到r[0]中,每次将r[1]~r其基本语句i>0和r[i]!=k,其执行次数比较顺序查找方法,减少了系数。2022/11/1013成都学院计算机系其基本语句i>0和r[i]!=k,其执行次数2022/114.3排序问题中的穷举法一、选择排序思想:开始扫描整个序列,找到最小记录和序列中的第一个记录交换,再从第二个记录扫描,找到最小记录与第二个记录交换,直到扫描第n-1个记录与第n个记录进行交换,使得整个序列有序。2022/11/1014成都学院计算机系4.3排序问题中的穷举法一、选择排序2022/11/914一般情况,第i趟排序从第i个记录开始扫描序列,在n-i+1(1≤i≤n)个记录中找最小记录,并与第i个记录进行交换。2022/11/1015成都学院计算机系一般情况,第i趟排序从第i个记录开始扫描序列,在n-i+1(VoidSelectsort(intr[],intn){for(i=1;i<=n-1;i++){index=i;for(j=i+1;j<=n;j++)//找最小记录if(r[j]<r[index])index=j;if(index!=i)r[j]>r[index];}}2022/11/1016成都学院计算机系VoidSelectsort(intr[],intn)基本语句内层循环中的r[j]<r[index],其执行次数为:选择排序最多交换n-1次数据。
2022/11/1017成都学院计算机系基本语句内层循环中的r[j]<r[index],其执行次数二、冒泡排序一开始就扫描整个序列,在扫描的过程中两两比较相邻记录,如反序则交换,最终将最大记录置于最后一个记录位置,第二大记录置于倒数第二个记录位置,重复至整个序列有序。2022/11/1018成都学院计算机系二、冒泡排序2022/11/918成都学院计算机系VoidBubblesort(intr[],intn){for(i=1;i<=n-1;i++)for(j=1;j<=n-i;j++)//找最小记录if(r[j]<r[j+1])r[j]>r[j+1];}
2022/11/1019成都学院计算机系VoidBubblesort(intr[],intn)基本语句内层循环中的r[j]<r[j+1],其执行次数为:不足:如果整个序列已经有序,还是要直接整个外循环执行完。思想有没有改进的办法?有则写出算法。2022/11/1020成都学院计算机系基本语句内层循环中的r[j]<r[j+1],其执行次数为:4.5几何问题中的穷举法最近对问题要求找出一个包含n个点的集合中距离最近的两个点。应用实例:空中交通2022/11/1021成都学院计算机系4.5几何问题中的穷举法最近对问题2022/11/921前提假设
1.二维空间中的点,并且点的坐标形式(x,y)给出的。
2.若Pi=(xi,yi),Pj=(xj,yj),则其间距离d:
最近对问题的求解过程:分别计算每一对点之间的距离,然后找出距离最小的那一对,只考虑i<j的那些点对。
2022/11/1022成都学院计算机系前提假设2022/11/922成都学院计算机系intclosetpoint(intn,intx[],inty[],int&index1,int&index2){mindist=+∞;for(i=1;i<n;i++)for(j=i+1;j<=n;j++){d=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);if(d<mindist){mindist=d;index1=i;index2=j;}}returnmindist;}2022/11/1023成都学院计算机系intclosetpoint(intn,intx[],实验—串匹配题目:给定一个文本,在该文本中查找并定位任意给定字符串实验目的:理解并掌握穷举法的设计思想;实验要求:
1.实现BF算法及对其的改进算法BM算法
2.对BF、BM进行时间复杂度的分析并编程验证。2022/11/1024成都学院计算机系实验—串匹配题目:给定一个文本,在该文本中查找并定位任意给定BM算法基本思想:假设将主串中自位置i起往左的一个子串与模式进行从右到左的匹配过程中,若发现不匹配,则下次应从主串的i+dist(si)位置开始重新进行新一轮的匹配,其效果相当于把模式和主串均右滑过一段距离dist(si),即跳过dist(si)个字符而无需进行比较。2022/11/1025成都学院计算机系BM算法基本思想:假设将主串中自位置i起往左的一个子串与模式假设字符表{a,b,c,……,z},BM算法对给定的模式T=“t1t2…tm”,定义一个从字符到正整数的映射:
dist:c{1,2,…,m},c属于字符表滑动函数给出了正文中可能出现的任意字符在模式中的位置,定义如下:
m-jj=max{j|tj=c且1≤j≤m-1
dist(c)=c若c不出现在模式中或tm=c2022/11/1026成都学院计算机系假设字符表{a,b,c,……,z},BM算法对给定的模式T=IntBM(chars[],chart[],intn,intm){i=m;//模式串长度
while(i<=n){j=m;while(j>0&&s[i]==t[j]){j--;i--;}if(j==0)returni+1;elsei=i+dist(s[i]);}return0;}2022/11/1027成都学院计算机系IntBM(chars[],chart[],intn第4章穷举法2022/11/1028成都学院计算机系第4章穷举法2022/11/91成都学院计算机系4.1穷举法的设计思想4.2渐近表示法
4.3算法分析2022/11/1029成都学院计算机系4.1穷举法的设计思想2022/11/92成都学院计算机主要知识点掌握好算法的评价标准;了解影响程序运行时间的因素;掌握算法的评价标准:时间复杂度和空间复杂度的概念;掌握渐近时间复杂度的几种表示方式;掌握常见时间复杂度渐近表示之间的关系.2022/11/1030成都学院计算机系主要知识点掌握好算法的评价标准;2022/11/93成都学院4.1穷举法思想2022/11/1031成都学院计算机系4.1穷举法思想2022/11/94成都学院计算机系一、穷举法定义是一种简单而直接地解决问题的方法,常常直接基于问题的描述。是最容易应用的方法,其时间性能比较低。通常典型的指数时间算法一般都是通过穷举法搜索而得到的。2022/11/1032成都学院计算机系一、穷举法定义是一种简单而直接地解决问题的方法,常二、设计思想采用的基本技术是扫描技术,即使用一定的策略将待求解问题的所有元素依次处理一次,从而找到问题的解。为了避免重复试探,在基本的数据结构中采用遍历来处理每一个元素。2022/11/1033成都学院计算机系二、设计思想采用的基本技术是扫描技术,即使用一定的策略将待求(1)集合的遍历按照元素序号的顺序依次处理每个元素。(2)线性表的遍历元素序号,如数组是按元素的下标来处理。(3)树的遍历先序、中序、后序2022/11/1034成都学院计算机系(1)集合的遍历2022/11/97成都学院计算机系三、采用穷举法的原因理论上可以解决可计算领域的各种问题。经常用来解决一些较小规模的问题。对一些重要问题(排序、查找、字符串匹配等)有一些实用价值,且不受问题规模的限制。可作为某类问题时间性能下限,进行高效算法的比较。2022/11/1035成都学院计算机系三、采用穷举法的原因理论上可以解决可计算领域的各种问题。204.2查找问题中的穷举法顺序查找思想:从表的一端向另一端逐个将元素与给定值进行比较,若相等,查找成功,给出该元素的具体位置;若整个表检测完仍未找到与给定值相等的元素,则查找失败!2022/11/1036成都学院计算机系4.2查找问题中的穷举法顺序查找2022/11/99成假设以n个数放入数组r[1]~r[n]中,查找值k的算法。
intSeqsearch(intr[],intn,intk){i=n;while(i>0&&r[i]!=k)i--;returni;}2022/11/1037成都学院计算机系假设以n个数放入数组r[1]~r[n]中,查找值k的算法。2其基本语句i>0和r[i]!=k,其执行次数缺陷:每次都要判断下标i是否越界。2022/11/1038成都学院计算机系其基本语句i>0和r[i]!=k,其执行次数2022/11改进方法:哨兵将k放入到r[0]中,每次将r[1]~r[n]中的值与r[0]进行比较。intSeqsearch(intr[],intn,intk){i=n;r[0]=k;while(r[i]!=k)i--;returni;}2022/11/1039成都学院计算机系改进方法:哨兵将k放入到r[0]中,每次将r[1]~r其基本语句i>0和r[i]!=k,其执行次数比较顺序查找方法,减少了系数。2022/11/1040成都学院计算机系其基本语句i>0和r[i]!=k,其执行次数2022/114.3排序问题中的穷举法一、选择排序思想:开始扫描整个序列,找到最小记录和序列中的第一个记录交换,再从第二个记录扫描,找到最小记录与第二个记录交换,直到扫描第n-1个记录与第n个记录进行交换,使得整个序列有序。2022/11/1041成都学院计算机系4.3排序问题中的穷举法一、选择排序2022/11/914一般情况,第i趟排序从第i个记录开始扫描序列,在n-i+1(1≤i≤n)个记录中找最小记录,并与第i个记录进行交换。2022/11/1042成都学院计算机系一般情况,第i趟排序从第i个记录开始扫描序列,在n-i+1(VoidSelectsort(intr[],intn){for(i=1;i<=n-1;i++){index=i;for(j=i+1;j<=n;j++)//找最小记录if(r[j]<r[index])index=j;if(index!=i)r[j]>r[index];}}2022/11/1043成都学院计算机系VoidSelectsort(intr[],intn)基本语句内层循环中的r[j]<r[index],其执行次数为:选择排序最多交换n-1次数据。
2022/11/1044成都学院计算机系基本语句内层循环中的r[j]<r[index],其执行次数二、冒泡排序一开始就扫描整个序列,在扫描的过程中两两比较相邻记录,如反序则交换,最终将最大记录置于最后一个记录位置,第二大记录置于倒数第二个记录位置,重复至整个序列有序。2022/11/1045成都学院计算机系二、冒泡排序2022/11/918成都学院计算机系VoidBubblesort(intr[],intn){for(i=1;i<=n-1;i++)for(j=1;j<=n-i;j++)//找最小记录if(r[j]<r[j+1])r[j]>r[j+1];}
2022/11/1046成都学院计算机系VoidBubblesort(intr[],intn)基本语句内层循环中的r[j]<r[j+1],其执行次数为:不足:如果整个序列已经有序,还是要直接整个外循环执行完。思想有没有改进的办法?有则写出算法。2022/11/1047成都学院计算机系基本语句内层循环中的r[j]<r[j+1],其执行次数为:4.5几何问题中的穷举法最近对问题要求找出一个包含n个点的集合中距离最近的两个点。应用实例:空中交通2022/11/1048成都学院计算机系4.5几何问题中的穷举法最近对问题2022/11/921前提假设
1.二维空间中的点,并且点的坐标形式(x,y)给出的。
2.若Pi=(xi,yi),Pj=(xj,yj),则其间距离d:
最近对问题的求解过程:分别计算每一对点之间的距离,然后找出距离最小的那一对,只考虑i<j的那些点对。
2022/11/1049成都学院计算机系前提假设2022/11/922成都学院计算机系intclosetpoint(intn,intx[],inty[],int&index1,int&index2){mindist=+∞;for(i=1;i<n;i++)for(j=i+1;j<=n;j++){d=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);if(d<mindist){mindist=d;index1=i;index2=j;}}returnmindist;}2022/11/1050成都学院计算机系intclosetpoint(intn,intx[],实验—串匹配题目:给定一个文本,在该文本中查找并定位任意给定字符串实验目的:理解并掌握穷举法的设计思想;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织机械自动化与智能控制考核试卷
- 磷肥生产设备操作规程与故障预防考考核试卷
- 肉牛饲养与生长发育监测试题考核试卷
- 碳酸饮料行业新技术应用考核试卷
- 中药材种植基础知识考核试卷
- 畜牧养殖场环境治理技术考核试卷
- 成人教育学生综合素质评价体系构建考核试卷
- 电机在电力行业品牌建设的应用考核试卷
- 网络文学虚拟作品收益分成合同
- 游戏虚拟货币发行与内容创作者激励协议
- 新闻记者职业资格2024年笔试考试必做题有答案
- 私人公司用人合同协议
- 江苏南京历年中考作文题与审题指导(2002-2020)
- 2025江苏省环保集团(筹)招聘92人易考易错模拟试题(共500题)试卷后附参考答案
- 湖北省武汉市2025届高三下学期四月调研考试(二模)数学试题 含解析
- 广东省2025年普通高等学校招生全国统一考试模拟测试(英语试题及答案)(广东二模)
- 浙江省绍兴市2025年高考二模数学试题(含答案)
- DeepSeek1小时快速入门教程学习
- 第7单元 第1课 《自动行驶保出行》 课件【湘科2024版】信息科技 六年级下册
- 脑卒中多学科会诊制度
- 企业资产管理(EAM)系统实施作业指导书
评论
0/150
提交评论