最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

算法分析与设计复习大纲(全)

来源:动视网 责编:小OO 时间:2025-10-01 17:27:31
文档

算法分析与设计复习大纲(全)

算法分析与设计复习大纲第1章绪论考点:1、 算法的5个重要特性。答:输入、输出、有穷性、确定性、可行性 2、 掌握扩展递归技术和通用分治递推式的使用。扩展递归技术:通用分支递归式: 5、使用扩展递归技术求解下列递推关系式(1)(2)第3章蛮力法1、 掌握蛮力法的设计思想:蛮力法依赖的基本技术——扫描技术,即采用一定的策略将待求解问题的所有元素依次处理一次,从而找出问题的解;关键——依次处理所有元素。 2、 蛮力法的代表算法及其时间复杂度:顺序查找,O(n)串匹配(BF O(n*m) ,KMPO
推荐度:
导读算法分析与设计复习大纲第1章绪论考点:1、 算法的5个重要特性。答:输入、输出、有穷性、确定性、可行性 2、 掌握扩展递归技术和通用分治递推式的使用。扩展递归技术:通用分支递归式: 5、使用扩展递归技术求解下列递推关系式(1)(2)第3章蛮力法1、 掌握蛮力法的设计思想:蛮力法依赖的基本技术——扫描技术,即采用一定的策略将待求解问题的所有元素依次处理一次,从而找出问题的解;关键——依次处理所有元素。 2、 蛮力法的代表算法及其时间复杂度:顺序查找,O(n)串匹配(BF O(n*m) ,KMPO
算法分析与设计复习大纲

第1章 绪论

考点:

1、  算法的5个重要特性。

答:输入、输出、有穷性、确定性、可行性

 

2、  掌握扩展递归技术和通用分治递推式的使用。

扩展递归技术:

通用分支递归式:

 

5、使用扩展递归技术求解下列递推关系式

(1)

(2)

第3章 蛮力法

1、  掌握蛮力法的设计思想:

蛮力法依赖的基本技术——扫描技术,即采用一定的策略将待求解问题的所有元素依次处理一次,从而找出问题的解;

关键——依次处理所有元素。

 

2、  蛮力法的代表算法及其时间复杂度:

顺序查找,O(n)

串匹配(BF O(n*m) ,KMPO(n+m)  

选择排序,O(n2)

冒泡排序,O(n2)

生成排列对象(排列问题),O(n!)

生成子集(组合问题),O(2n)

0/1背包 属于组合问题。

任务分配,哈密顿回路,TSP问题 属于排列问题。

 

3、  掌握BF和KMP算法的原理,能够画出比较过程。要求给出一串字符串,能够求出对应的next数组,并能使用KMP算法进行比较匹配。

4、  掌握选择排序和冒泡排序算法描述和时间复杂性,要求能够写出伪代码。

选择排序

算法描述:选择排序开始的时候,扫描整个序列,找到整个序列的最小记录和序列中的第一记录交换,从而将最小记录放到它在有序区的最终位置上,然后再从第二个记录开始扫描序列,找到n-1个序列中的最小记录,再和第二个记录交换位置。一般地,第i趟排序从第i个记录开始扫描序列,在n-i+1个记录中找到关键码最小的记录,并和第i个记录交换作为有序序列的第i个记录。

时间复杂性:O(n2)

伪代码:

 

冒泡排序

算法描述:冒泡排序开始的时候扫描整个序列,在扫描过程中两两比较相邻记录,如果反序则交换,最终,最大记录就能被“沉到”了序列的最后一个位置,第二趟扫描将第二大记录“沉到”了倒数第二个位置,重复上述操作,直到n-1趟扫描后,整个序列就排好序了。

冒泡排序,O(n2)

5、  算法设计题: 

假设在文本“ababcabccabccacbab”中查找模式 “abccac”,求分别采用BF算法和KMP算法进行串匹配过程中的字符比较次数。

由此可知,用BF算法一共要进行3+1+4+1+1+6+1+1+1+6=25次比较方能匹配出

 

KMP算法:next[]={,0,1,1,1,1,2};

由此可知,用KMP算法一共要进行3+4+6+5=18次比较方能匹配出

第4章  分治法

了解分治法的设计思想

设计思想:将要求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止,再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解。

步骤:(1)划分(2)求解子问题(3)合并

 

分治法的代表算法及时间复杂度:

归并排序,快速排序,最大子段和,最近对问题,这五种问题的分治算法的时间复杂度为O(nlog2n)

棋盘覆盖为O(4k)

 

掌握归并排序和快速排序算法的算法伪代码。

归并排序:

算法中数组r中存储原始数据,r1在中间过程中存储排序后的数据,s指需排序数组的起始下标,t指需排序数组的结束下标。最终排序后的数据依然存储在r数组中。

快速排序:

对于待排序列(5, 3, 1, 9, 8, 2, 4, 7),画出快速排序的递归运行轨迹。

按升序排列

初始序列:5,3,1,9,8,2,4,7

第一次划分:4,3,1,2,5,8,9,7

第二次划分:2,3,1,4,5,8,9,7

第三次划分:1,2,3,4,5,8,9,7

第四次划分:1,2,3,4,5,7,8,9

排序完成,红色字体为每次划分的轴值 

第5章 减治法

了解减治法的设计思想

设计思想:原问题的解只存在于其中一个较小规模的子问题中,所以,只需求解其中一个较小规模的子问题就可以得到原问题的解。

 

掌握使用减治法的代表问题及时间复杂度:

折半查找,二叉树查找,堆排序,选择问题,淘汰赛冠军问题,假币问题;

以上问题的时间复杂度,如果减治是每次减小为原来规模的1/2,则时间复杂度一般为O(log2n)

 

掌握折半查找的算法伪代码描述及具体例子的查找过程,会根据折半查找的过程创建判定树。

会根据已知数据序列创建一个二叉查找树。(P100)

掌握堆排序算法中的两种调整堆和新建堆的方法:筛选法

堆调整问题:将一个无序序列调整为堆

(1)筛选法调整堆

        关键问题:完全二叉树中,根结点的左右子树均是堆,如何调整根结点,使整个完全二叉树成为一个堆?    

第6章 动态规划法

了解动态规划法的设计思想

设计思想:将待求解问题分解成若干个相互重叠的子问题,每个子问题对应决策过程的一个阶段,将子问题的解求解一次并填入表中,当需要再次求解此子问题时,可以通过查表获得该子问题的解而不用再次求解。

步骤:

将原始问题分解为相互重叠的子问题,确定动态规划函数;

求解子问题,填表;

根据表,自底向上计算出原问题的解。

 

掌握可以用动态规划法解决的问题及时间复杂度:

TSP,多段图的最短路径问题,0/1背包,最长公共子序列问题,最优二叉查找树,近似串匹配问题;

多段图的最短路径问题: O(n+m)

0/1背包问题: O(n×C)

 

掌握多段图的最短路径问题的动态规划算法

动态规划函数为:

cost[i]中存储顶点i到终点的最短路径长度

cost[i]=min{C[i][j]+cost[j]} (i≤j≤n且顶点j是顶点i的邻接点)

path[i]=使C[i][j]+cost[j]最小的j

先构造cost数组和path数组

 

掌握0/1背包问题的动态规划算法及具体实现

 

例题:用动态规划法求如下0/1背包问题的最优解:有5个物品,其重量分别为(3,2,1,4,5),物品的价值分别为(25,20,15,40, 50),背包容量为6。写出求解过程。

0/1背包问题的动态规划函数为:

V(i,j)表示把前i个物品放入容量为j的背包中的最大价值和。

填表过程:

放入背包中的物品的求解过程:则65表示把5个物品放入容量为6的背包中的最大价值和。

i=5,j=6;  v[5][6]>v[4][6],x[5]=1, j=6-w[5]=1

i=4,j=1; v[4][1]=v[3][1], x[4]=0

i=3,j=1; v[3][1]>v[2][1], x[3]=1, j=1-w[3]=0

i=2,j=0; v[2][1]=v[1][0], x[2]=0

i=1,j=0; v[1][0]=v[0][0], x[1]=0

结果是把第3个和第5个放入了背包

 

 

第7章 贪心法

了解贪心法的设计思想

 

贪心法在解决问题的策略上目光短浅,只根据当前已有的信息就做出局部最优选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。

贪心法的关键在于决定贪心策略。

 

掌握可以用贪心法解决的问题:

TSP问题中的两种解决方法:最近领点策略,最短链接策略

最小生成树问题的两种算法:最近顶点策略(Prim算法),最短边策略(Kruskal算法)

背包问题,活动安排问题,多机调度问题。

 

掌握最小生成树的两种贪心算法:prim算法和kruskal算法(P145-148),给出具体的例子,能够用两种方法画出树的生成过程。

 

掌握背包问题的贪心算法(P148-151),给出一个具体的例子,能够写出解决问题的过程。习题7-2

问题:求如下背包问题的最优解:有7个物品,价值P=(10,5,15,7,6,18,3),重量w=(2,3,5,7,1,4,1),背包容量W=15.

解决方法:

先对物品的单位重量价值按照降序排列

物品重量物品价值物品价值/物品重量

166
2105
4184.5
5153
133
351.67
771
依次把物品放入容量为15的背包,直到背包被装满

1+2+4+5+1=13,前5个物品装入背包,还剩下容量为2,第6个物品只能装入2/3

所以总价值为:6+10+18+15+3+5*2/3=55.3333

 

第8章 回溯法

了解回溯法的设计思想

设计思想:从解空间树根结点出发,按照深度优先策略遍历解空间树,在搜索至树中任一结点时,先判断该结点对应的部分解是否满足约束条件,或者是否超出目标函数的界,也就是判断该结点是否包含问题的(最优)解,如果肯定不包含,则跳过对以该结点为根的子树的搜索,即所谓剪枝(Pruning);否则,进入以该结点为根的子树,继续按照深度优先策略搜索。直到搜索到叶子结点,则得到问题的一个可能解。

步骤:

确定解向量和分量的取值范围,构造解空间树;

确定剪枝函数;

对解空间树按深度优先搜索,搜索过程中剪枝;

从所有的可能解中确定最优解。

 

了解可以用回溯法解决的问题:

属于组合问题和排列问题中求最优解的问题都可以用回溯法解决,例如:图着色问题,哈密顿回路问题,八皇后问题(4皇后问题),批处理作业调度问题。

 

掌握m颜色图着色判定问题的回溯法算法,并能画出解空间树的搜索过程(P168-170),习题8-4

对图8.14使用回溯法求解图问题,画出生成的搜索空间。

解:图着色问题求解的是满足图着色要求的最小颜色数。对图8.14应该从1、2、3、4……种颜色依次尝试用回溯法判定是否满足M着色的要求。

经搜索,1种和2种颜色均不能满足图着色的要求,3种颜色可以满足图着色要求,搜索过程如下,所以图8.14的着色的最少颜色数应该为3

搜索空间为:

 

掌握0/1背包问题的回溯算法,并能画出解空间树的搜索过程

掌握图着色问题的回溯算法,并能画出解空间树的搜索过程

第9章 分治限界法

了解分支限界法的设计思想

设计思想:

1)首先确定一个合理的限界函数,并根据限界函数确定目标函数的界[down, up] ,并确定限界函数;

2)然后按照广度优先策略遍历问题的解空间树,在分支结点上,依次搜索该结点的所有孩子结点,分别估算这些孩子结点的限界函数的可能取值;

3)如果某孩子结点的限界函数可能取得的值超出目标函数的界,则将其丢弃;否则,将其加入待处理结点表(以下简称表PT)中;

4)依次从表PT中选取使限界函数的值是极值的结点成为当前扩展结点;

5)重复上述过程,直到找到搜索到叶子结点,如果叶子结点的限界函数的值是极值,则就是问题的最优解,否则,找到其他极值结点重复扩展搜索。

步骤:

确定解空间树

确定限界函数

按广度优先搜索解空间树,计算限界函数的值,填入PT表

从PT表中寻找极值,继续扩展结点,直到找到限界函数值为极值的叶子结点。

 

了解可以使用分支限界法解决的问题:

TSP问题,多段图的最短路径问题,任务分配问题,批处理作业调度问题,0/1背包问题。

掌握TSP问题的分支限界法

掌握0/1背包问题的分支限界法

掌握批处理作业问题的分支限界法

文档

算法分析与设计复习大纲(全)

算法分析与设计复习大纲第1章绪论考点:1、 算法的5个重要特性。答:输入、输出、有穷性、确定性、可行性 2、 掌握扩展递归技术和通用分治递推式的使用。扩展递归技术:通用分支递归式: 5、使用扩展递归技术求解下列递推关系式(1)(2)第3章蛮力法1、 掌握蛮力法的设计思想:蛮力法依赖的基本技术——扫描技术,即采用一定的策略将待求解问题的所有元素依次处理一次,从而找出问题的解;关键——依次处理所有元素。 2、 蛮力法的代表算法及其时间复杂度:顺序查找,O(n)串匹配(BF O(n*m) ,KMPO
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top