华南理工大学广州学院算法设计与分析期末考试复习.pptx
《华南理工大学广州学院算法设计与分析期末考试复习.pptx》由会员分享,可在线阅读,更多相关《华南理工大学广州学院算法设计与分析期末考试复习.pptx(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、考试题型:考试题型:选择题(算法类型、时间复杂度,共选择题(算法类型、时间复杂度,共15题,题,30分)分)简答题(设计思想,共简答题(设计思想,共2题,题,12分)分)应用题(解题步骤、搜索空间树等,共应用题(解题步骤、搜索空间树等,共4题,题,48分)分)编程题(上机实验题,作业题等,共编程题(上机实验题,作业题等,共1题,题,10分)分)复习复习第1页/共68页2023/3/21复习Page 22023/3/21Page 2算法的几种描述方法(重点掌握伪代码和算法的几种描述方法(重点掌握伪代码和C+语言,会使用伪代码写算法);语言,会使用伪代码写算法);理解大理解大O符号的含义;符号的含
2、义;算法的几个重要特性:算法的几个重要特性:输入、输出、有穷性、确定性、可行性。第一章、第二章第一章、第二章第2页/共68页自然语言自然语言r优点:容易理解优点:容易理解r缺点:冗长、二义性缺点:冗长、二义性r使用方法:粗线条描述算法思想使用方法:粗线条描述算法思想 r注意事项:避免写成自然段注意事项:避免写成自然段算法的几种描述方法(重点掌握伪代码和C+语言,会使用伪代码写算法);第3页/共68页 流程图流程图 r优点:流程直观优点:流程直观 r缺点:缺少严密性、灵活性缺点:缺少严密性、灵活性r使用方法:描述简单算法使用方法:描述简单算法r注意事项:注意抽象层次注意事项:注意抽象层次第4页/
3、共68页程序设计语言程序设计语言r优点:能由计算机执行优点:能由计算机执行 r缺点:抽象性差,对语言要求高缺点:抽象性差,对语言要求高r使用方法:算法需要验证使用方法:算法需要验证r注意事项:注意事项:尽量将算法写成子函数尽量将算法写成子函数第5页/共68页 伪代码伪代码算法语言算法语言r伪代码(伪代码(Pseudocode):介于自然语言和):介于自然语言和程序设计语言之间的方法,它采用某一程序设程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语计语言的基本语法,操作指令可以结合自然语言来设计。言来设计。r优点:表达能力强,抽象性强,容易理解优点:表达能力强,抽
4、象性强,容易理解第6页/共68页理解大O符号的含义;时间复杂度第7页/共68页r算法的五大特性:2023/3/21第1章 算法设计基础Page 8输入:输入:一个算法有零个或多个输入。一个算法有零个或多个输入。输出:输出:一个算法有一个或多个输出。一个算法有一个或多个输出。有穷性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。一步都在有穷时间内完成。算法的有穷性意味着不是所有算法的有穷性意味着不是所有的计算机程序都是算法的计算机程序都是算法.确定性:确定性:算法中的每一条指令必须有确切的含义,对于相算法中的每一条指令必须有确
5、切的含义,对于相同的输入只能得到相同的输出。同的输入只能得到相同的输出。可行性:可行性:算法描述的操作可以通过已经实现的基本操作执算法描述的操作可以通过已经实现的基本操作执行有限次来实现(每步可执行)。行有限次来实现(每步可执行)。第8页/共68页2023/3/21复习Page 92023/3/21Page 91.蛮力法的基本思想(蛮力法的基本思想(重要!重要!):蛮力法依赖的基本技术蛮力法依赖的基本技术扫描技术扫描技术,即采,即采用一定的策略将待求解问题的用一定的策略将待求解问题的所有元素依次所有元素依次处理一次处理一次,从而找出问题的解,从而找出问题的解;关键依次处理所有元素。第三章第三章
6、 蛮力法蛮力法第9页/共68页2023/3/21复习Page 102023/3/21Page 102.熟熟记记哪哪些些问问题题使使用用了了蛮蛮力力法法进进行行解解决决:顺顺序序查查找找、串串匹匹配配(KMP,BM,BF),选选择择排排序序,冒冒泡泡排排序序,生生成成排排列列对对象象,生生成成子子集集,0/1背背包包,任任务务分分配配,哈哈密密顿顿回回路路,TSP,最最近近对对问问题题,凸凸包包问问题题,7-11问问题题,百百钱钱买买百鸡问题百鸡问题;并熟记这些问题的;并熟记这些问题的时间复杂度时间复杂度;第三章第三章 蛮力法蛮力法第10页/共68页2023/3/21复习Page 112023/
7、3/21Page 11其中:其中:BF:依次扫描依次扫描,对比,对比,O(n+m);KMP:依次扫描依次扫描,对比(虽然这个,对比(虽然这个“依次依次”已已经是按照一定的规律,效率较高),经是按照一定的规律,效率较高),O(n+m),注意:对于,注意:对于KMP算法,必须求出算法,必须求出next数组;数组;选择排序:扫描整个序列扫描整个序列,找到整个序列的最,找到整个序列的最小记录和序列中的第一个记录交换位置,再扫小记录和序列中的第一个记录交换位置,再扫第二小,依此类推第二小,依此类推,O(n2);第三章第三章 蛮力法蛮力法第11页/共68页2023/3/21复习Page 122023/3/
8、21Page 12其中:其中:冒泡排序:冒泡排序:扫描整个序列扫描整个序列,在扫描过程中两两,在扫描过程中两两比较相邻记录,如果反序则交换,直到比较相邻记录,如果反序则交换,直到n-1趟扫趟扫描后,即排好序,描后,即排好序,O(n2);TSP:把:把所有可能所有可能的回路都找出来,就可以得的回路都找出来,就可以得到最短路径,到最短路径,O(n!);7-11:把:把所有可能所有可能都计算一遍,就能得到正确都计算一遍,就能得到正确的解;的解;百钱买百鸡:把百钱买百鸡:把所有可能所有可能都计算一遍,就能得都计算一遍,就能得到正确的解。到正确的解。第三章第三章 蛮力法蛮力法第12页/共68页2023/
9、3/21复习Page 132023/3/21Page 133.冒泡排序、选择排序、冒泡排序、选择排序、TSP问题的设计思想和伪代码问题的设计思想和伪代码(可(可能出简答题)能出简答题)4.7-11问题、百钱买百鸡问题的代码实现问题、百钱买百鸡问题的代码实现(猜测是编程题)(猜测是编程题)第三章第三章 蛮力法蛮力法第13页/共68页冒泡排序设计思想第14页/共68页选择排序设计思想第15页/共68页TSP问题设计思想 TSP问题:旅行家要旅行问题:旅行家要旅行n个城市然后回到出个城市然后回到出发城市,要求发城市,要求各个城市经历且仅经历一次,并要求各个城市经历且仅经历一次,并要求所走的路程最短。
10、所走的路程最短。用蛮力法解决用蛮力法解决TSP问题,可以问题,可以找出所有可能的找出所有可能的旅行路线,从中选取路径长度最短的简单回路。旅行路线,从中选取路径长度最短的简单回路。第16页/共68页8abdc23571序号路径路径长度是否最短1abcda18 否2abdca11 是3acbda23 否4acdba11 是5adbca23 否6adcba18 否 注注意意到到,在在图图中中有有3对对不不同同的的路路径径,对对每每对对路路径径来来说说,不不同同的的只只是是路路径径的的方方向向,因因此此,可可以以将将这这个个数数量量减减半半,则则可可能能的的解解有有(n-1)!/2个个。这这是是一一个
11、个非非常常大大的的数数,随随着着n的的增增长长,TSP问问题题的的可可能能解解也也在在迅迅速速地地增增长长。用用蛮蛮力力法法求求解解TSP问问题题,其时间复杂性为其时间复杂性为O(n!),只能解决问题规模很小的实例。,只能解决问题规模很小的实例。第17页/共68页一个简单的例子一个简单的例子百元买百鸡问题百元买百鸡问题已知公鸡已知公鸡5元一只,母鸡元一只,母鸡3元一只,元一只,小鸡小鸡1元三只元三只,用,用100元钱买元钱买100只鸡,问只鸡,问公鸡、母鸡、小鸡各多少只?公鸡、母鸡、小鸡各多少只?voidchicken()intx,y,z;for(x=0;x=20;x+)for(y=0;y=3
12、3;y+)z=100-x-y;if(z%3=0)&(5*x+3*y+z/3=100)cout公鸡:x母鸡:y小鸡:zendl;(编程,代码要记牢)第18页/共68页7-11问题(编程,代码要记牢)第19页/共68页设计蛮力算法找出四件物品的价格各是什么?#includevoid main()int a,b,c,d;for(a=1;a=711;a+)for(b=1;b=711;b+)for(c=1;c=711;c+)d=711-a-b-c;if(a*b*c*d=711)couta/100.0tb/100.0tc/100.0td/100.0endl;return;第20页/共68页2023/3/2
13、1复习Page 212023/3/21Page 211.分治法的基本思想(分治法的基本思想(重要!重要!自底向上,理解,理解+应用):应用):将要求解的将要求解的原问题划分成原问题划分成k个较小规模的子问题个较小规模的子问题,对这,对这k个子问题分别个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止,再将子问题的解合并为一个更大规模的问题的解,出其解为止,再将子问题的解合并为一个更大规模
14、的问题的解,自底自底向上向上逐步求出原问题的解。逐步求出原问题的解。步骤:(1)划分(2)求解子问题(3)合并第四章第四章 分治法分治法第21页/共68页2023/3/21复习Page 222023/3/21Page 221.分治法的基本思想(分治法的基本思想(自底向上,理解,理解+应用):应用):第四章第四章 分治法分治法子问题1的规模是n/2 子问题子问题1的解的解 子问题子问题2的解的解子问题2的规模是n/2 原问题的解原问题的解原问题的规模是n第22页/共68页2023/3/21复习Page 232023/3/21Page 232.熟记哪些问题使用了分治法进行解决:熟记哪些问题使用了分
15、治法进行解决:归并归并排序排序,快速排序快速排序,最大子段和最大子段和,棋盘覆盖,棋盘覆盖,循环赛日程安排,最近对问题,凸包问题;循环赛日程安排,最近对问题,凸包问题;并熟记这些问题的并熟记这些问题的时间复杂度时间复杂度:第四章第四章 分治法分治法第23页/共68页2023/3/21复习Page 242023/3/21Page 24其中:其中:归并排序归并排序:划分成等长子序列:划分成等长子序列分别对两子序列分别对两子序列归并排序归并排序将排完的有序子序列合并成一个有序将排完的有序子序列合并成一个有序序列,序列,O(nlog2n);快速排序快速排序:用一个轴值划分成两个子序列:用一个轴值划分成
16、两个子序列分别分别对两个子序列递归地快速排序,对两个子序列递归地快速排序,O(nlog2n);最大子段和最大子段和:划分成等长子序列:划分成等长子序列针对针对3种情况种情况分别处理求子序列最大子段和分别处理求子序列最大子段和合并合并3种情况下种情况下的最大子段和,的最大子段和,O(nlog2n)。第四章第四章 分治法分治法第24页/共68页2023/3/21复习Page 252023/3/21Page 253.归并排序、快速排序、最大子段和问题的设归并排序、快速排序、最大子段和问题的设计思想和伪代码;计思想和伪代码;(可能出简答题)(可能出简答题)4.用快速排序和归并排序算法对数字序列排序。用
17、快速排序和归并排序算法对数字序列排序。第四章第四章 分治法分治法第25页/共68页归并排序设计思想 二路归并排序的分治策略是:二路归并排序的分治策略是:(1)划分划分:将待排序序列:将待排序序列r1,r2,rn划分为两个长度相等的子序列划分为两个长度相等的子序列r1,rn/2和和rn/21,rn;(2)求解子问题求解子问题:分别对这两个子序列进行排序,得到两个有序子序列;:分别对这两个子序列进行排序,得到两个有序子序列;(3)合并合并:将这两个有序子序列合并成一个有序序列。:将这两个有序子序列合并成一个有序序列。二二路路归归并并排排序序在在合合并并过过程程中中需需要要与与原原始始记记录录序序列
18、列同同样样数数量量的的存存储储空空间间,因因此此其其空空间间复复杂杂性性为为O(n)。r1 rn/2 rn/21 rn 划分划分r1 rn/2 rn/21 rn 递归处理递归处理r1rn/2rn/21 r n 合并解合并解 第26页/共68页 r1 rn/2 rn/21 rn 划分划分r1 rn/2 rn/21 rn 递归处理递归处理r1rn/2rn/21 r n 合并解合并解 第27页/共68页快速排序设计思想以第一个记录作为轴值,对待排序序列进行划分的过程为:以第一个记录作为轴值,对待排序序列进行划分的过程为:(1)初初始始化化:取取第第一一个个记记录录作作为为基基准准,设设置置两两个个参
19、参数数i,j分分别别用用来来指指示示将将要要与与基基准准记记录录进进行比较的左侧记录位置和右侧记录位置,也就是本次划分的区间;行比较的左侧记录位置和右侧记录位置,也就是本次划分的区间;(2)右右侧侧扫扫描描过过程程:将将基基准准记记录录与与j指指向向的的记记录录进进行行比比较较,如如果果j指指向向记记录录的的关关键键码码大大,则则j前前移移一一个个记记录录位位置置。重重复复右右侧侧扫扫描描过过程程,直直到到右右侧侧的的记记录录小小(即即反反序序),若若ij,则则将将基基准记录与准记录与j指向的记录进行交换;指向的记录进行交换;(3)左左侧侧扫扫描描过过程程:将将基基准准记记录录与与i指指向向的
20、的记记录录进进行行比比较较,如如果果i指指向向记记录录的的关关键键码码小小,则则i后后移移一一个个记记录录位位置置。重重复复左左侧侧扫扫描描过过程程,直直到到左左侧侧的的记记录录大大(即即反反序序),若若ij,则则将将基基准记录与准记录与i指向的记录交换;指向的记录交换;(4)重复重复(2)()(3)步,直到)步,直到i与与j指向同一位置,即基准记录最终的位置。指向同一位置,即基准记录最终的位置。第28页/共68页第29页/共68页最大子段和问题设计思想第30页/共68页复习1.减治法的基本思想(理解减治法的基本思想(理解+应用):应用):原问题的解原问题的解只存在于其中一个只存在于其中一个较
21、小规模的子问题较小规模的子问题中,所以,中,所以,只需求解其中一个较小规模的子问题只需求解其中一个较小规模的子问题就可以得到原问题的解。就可以得到原问题的解。2.熟记哪些问题使用了减治法进行解决:熟记哪些问题使用了减治法进行解决:折半折半查找查找,二叉树查找,二叉树查找,插入排序插入排序,堆排序,堆排序,选选择问题择问题,淘汰赛冠军问题,淘汰赛冠军问题,假币问题(假币问题(8枚枚硬币不知道假币轻重)硬币不知道假币轻重);并熟记这些问题的;并熟记这些问题的时间复杂度:时间复杂度:第五章第五章 减治法减治法第31页/共68页2023/3/21复习Page 322023/3/21Page 32其中:
22、其中:折半查找:折半查找:在在有序表有序表中,中,取中间记录作为比较取中间记录作为比较对象,对象,若给定值与中间记录的关键码相等,则若给定值与中间记录的关键码相等,则查找成功;若给定值小于中间记录的关键码,查找成功;若给定值小于中间记录的关键码,则在中间记录的左半区继续查找;若给定值大则在中间记录的左半区继续查找;若给定值大于中间记录的关键码,则在中间记录的右半区于中间记录的关键码,则在中间记录的右半区继续查找,继续查找,O(log2n)。插入排序:插入排序:依次将待排序序列中的每一个记录依次将待排序序列中的每一个记录插入到一个已排好序的序列插入到一个已排好序的序列中,直到全部记录中,直到全部
23、记录都排好序,都排好序,O(n2)第五章第五章 减治法减治法第32页/共68页2023/3/21复习Page 332023/3/21Page 33其中:其中:选择问题:选择问题:考虑快速排序中的划分过程,选定考虑快速排序中的划分过程,选定一个轴值将序列一个轴值将序列rirj进行划分,使得比轴值小进行划分,使得比轴值小的元素都位于轴值的左侧,比轴值大的元素都的元素都位于轴值的左侧,比轴值大的元素都位于轴值的右侧,假定轴值的最终位置是位于轴值的右侧,假定轴值的最终位置是s,则:,则:(1)若)若k=s,则,则rs就是第就是第k小元素;小元素;(2)若)若ks,则第,则第k小元素一定在轴值后半区中;
24、小元素一定在轴值后半区中;第五章第五章 减治法减治法第33页/共68页2023/3/21复习Page 342023/3/21Page 34其中:其中:假币问题(假币问题(8枚硬币不知道假币轻重):枚硬币不知道假币轻重):从八枚从八枚硬币中任取六枚硬币中任取六枚a,b,c,d,e,f,在天平两端,在天平两端各放三枚进行比较。假设各放三枚进行比较。假设a,b,c三枚放在天平三枚放在天平的一端,的一端,d,e,f三枚放在天平的另一端,可能三枚放在天平的另一端,可能出现三种比较结果出现三种比较结果(再根据三种比较结果进行(再根据三种比较结果进行分析)分析)abcdef abcdef abcdef第五章
25、第五章 减治法减治法第34页/共68页2023/3/21复习Page 352023/3/21Page 353.折半查找问题的设计思想和伪代码折半查找问题的设计思想和伪代码(可能出简答题)(可能出简答题)4.给一个数字序列,要求采用折半查找,找某个数,给一个数字序列,要求采用折半查找,找某个数,写出求解的过程。写出求解的过程。第五章第五章 减治法减治法第35页/共68页折半查找问题设计思想在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键码相等,则查找成功;若给定值小于中间记录的关键码,则在中间记录的左半区继续查找;若给定值大于中间记录的关键码,则在中间记录的右半区继续查找。不断重复上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华南理工大学 广州 学院 算法 设计 分析 期末考试 复习
限制150内