




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法分析总复习算法分析总复习考试题型:填空、简答、编程、计算。算法的定义:按照某种机械步骤得到问题结果的处理过程。算法的3要素:操作、控制结构、数据结构。算法的3个结构: 顺序结构、选择结构、循环结构。算法的基本性质: 目的性、分布性、有序性、有限性、操作性。算法的基本特征:有穷性、确定性、可行性、输入性、输出性。(前3个是最主要的)算法的(质量)指标: 正确性、可读性、稳健性、高效率与低存储量需求。算法的抽象描述:算法=控制结构+原操作算法的表示方式包括:自然语言、流程图、盒图、PAD图、伪代码、程序设计语言。算法分析的任务: 利用数学工具,讨论算法的复杂度。评价算法的标准:1)算法实现所消耗的时间;2)算法实现所消耗的存储空间;3)算法应易于理解、易于编码、易于调试。算法复杂度: 算法的时间复杂度与算法的空间复杂度的统称。算法时间复杂度的估算: 1)算法的执行时间=原操作的执行次数原操作的执行时间2)算法时间复杂度的数量级的形式: O(L)称为常数级; O(Logn)称为对数级; O(n)称为线性级; O()称为多项式级; O()称为指数级; O(n!)称为阶乘级; 判断时间复杂度的数量级: 1)顺序结构的算法的时间复杂度是O(L);2)循环结构的算法的时间复杂度是O()(x:循环的层数);算法时间复杂度的最坏情况: 可操作性最好的,且最有实际价值的,是最坏情况下的时间复杂性。算法的存储量包括: 1)输入数据所占空间; 2)算法本身所占空间; 3)辅助变量所占空间。NP完全问题:多项式复杂程度的非确定性问题,是图灵机在P时间内解决的问题,是世界7大数学难题之一。递归算法设计: 就是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题,逐步求解小问题后,再返回得到大问题的解。递归与非递归的比较程序可读性代码量大小时间占用空间使用范围设计难度递归易小长大广易非递归难大短小窄难算法与数据结构:1)计算机处理的问题类型: 数值计算问题、非数值性问题。2)算法设计的实质: 对实际问题要处理的数据选择一种恰当的存储结构,并在选定的存储结构上设计一个好的算法,实现对数据的处理。 好的算法在很大程度上取决于问题中数据所采用的数据结构。3)常用的数据结构的分类:连续存储、链式存储。4)连续存储和链式存储的优缺点比较: 基于存储的考虑:顺序表的存储空间是静态分配的,事先必须明确规定其存储规模;链表不用事先估计存储规模,但存储密度较低。 基于运算的考虑:运算若按序号访问数据元素,则顺序表优于链表;若是比较操作,则链表优于顺序表。 基于环境的考虑:顺序表容易实现;链表的操作是基于指针的。 总之,通常较稳定的线性表选择顺序存储;而动态性较强的线性表宜选择链式存储。选学生会主席问题(P70)的算法分析: 先为5个候选人设置5个计数器,然后根据选票分别对5个计数器累加1。即数组用于存储统计结果,而其下标则是输入的原始信息。编程统计身高问题(P71)的算法分析: 由于多数统计区间的大小都固定为5,这样用“身高/529”做下标,只须开辟8个元素的数组,对应8个统计档次,即可完成统计工作。统计3科全及格的学生问题(P71)的算法分析: 从语文名单中逐一抽出及格学生学号,先在代数名单中查找,若有该学号,则代数也及格了,再在外语名单中查找,看该学号是否外语也及格了,若仍在,则该学号学生3科全及格,否则至少有一科不及格。语文名单中没有的学号,不可能3科全及格,所以,语文名单处理完后算法就可以结束了。数字编号翻译成英文编号问题(P73)的算法分析: 将英文的“zeronine”存储在数组中,对应下标为“09”。通过求余、取整运算,可以取到编号的各个位数字。用这个数字作下标,正好能找到对应的英文数字。高精度数据长整数问题(P78)的算法分析: 一个高精度数据与一个自然数的乘法运算过程,用一重循环来实现,循环变量i代表当前参与运算的数组下标,d表示存储进位。统计50个学生中至少有3门成绩高于90分的人数问题(P91)的算法分析: 对每个同学,先计算其成绩高于90分的课程科目,若超过3,则累加到满足条件的人数中。用二重循环实现以上过程,外层循环模拟50个同学,内层循环模拟5门课程。开灯问题(P92)的算法分析: 定义有n个元素的a数组,它的每个下标变量ai视为一灯,i表示其编号。ai=1表示第i盏灯处于打开状态,ai=0表示第i盏灯处于关闭状态。通过算术运算ai=1-ai,就能很好地模拟开关灯的操作。数字圆圈问题(P93)的算法分析: 数组定义为an,则有a0an-1共n个元素。用i代表下标,题目就是顺序将a(i-1)与a(i+1)相乘,通过求余运算求出乘积的最大值和最小值。任意3个数的最小公倍数问题(P97和P136)的算法分析: 用蛮力法最方便,但运算时间最长。警察抓小偷问题(P99)的算法分析: 将a、b、c、d 4个人进行编号,号码分别是1、2、3、4。接着用枚举法来解决。老师预测数学竞赛问题(P100)的算法分析: 利用三重循环把所有的情况枚举出来即可。找次品问题(P102)的算法分析: 110号箱取产品的件数分别为件,然后称量,就可以很简单地找到次品。数学模型的定义: 数学模型是利用数学语言模拟现实的模型。把现实模型抽象、简化为某种数学结构是数学模型的基本特征。上楼梯问题(P114)的算法分析:设n阶台阶的走法数位f(n),则:迭代法的定义:也称辗转法,是一种不断用变量的旧值推出新值的解决问题的方法。兔子繁殖问题(P124)的算法分析:把a,b表示成每月的前2个月和前1个月的兔子的对数,它们的初值均为1,这样3月兔子的对数c=a+b;求4月兔子的对数时,先将4月前2个月和前1个月兔子的对数存储在变量a,b中,即a=b,b=c,再将4月份兔子的对数继续保存在变量c中,即c=a+b+当然,在变量中的数据被覆盖之前应先行输出已求解的结果。main( )int i,a=1,b=1; printf(“%d %d”,a,b); fot(i=1;i=10;i+) c=a+b; printf(“ %d”,c);a=b;b=c;倒推法的定义: 是对某些特殊问题,所采用的从后向前推解的方法。杨辉三角(限定用1个一维数组完成)问题(P)的算法分析:从每一行第i个元素倒着向前计算,则可避免这种情况出现迭代表达式如下:A1=Ai=1;Aj(i行)=Aj(i-1行)+Aj-1(i-1行) j=i-1,i-2,2;穿越沙漠问题(P128)的算法分析: 倒着累加储油点间的距离,并计算各储油点的储油量,直到总距离超过1000千米,求解距出发点最近的一个储油点的位置及储油量,问题就得以解决。牛顿迭代法的定义: 又称切线法,首先,选择一个接近f(x)零点的,计算相应的的切线斜率;然后,根据牛顿迭代公式求得。该方法具有更高收敛速度。二分逼近法的定义: f(x)在区间a,b上连续,f(a)*f(b) 1/n;输出1/n;计算f=f-1/n;若此时的f是埃及分数,输出f,否则返回第一步。贪心算法的基本思路: 从问题的某一个初始解出发逐步逼近给定的目标,每一步都作一个不可回溯的决策,尽可能地求得最好的解。动态规划的基本思想: 把求解的问题分成许多阶段或多个子问题,然后按顺序求解各子问题。前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。不同算法策略特点总结:1、贪婪法:“通过局部最优得到全局最优”2、递推法:由当前问题的逐步解决从而得到整个问题的解,多用于计算。3、递归法:利用大问题与其子问题间的递推关系来解决问题。4、枚举法: 逐一尝试问题的所有可能的解,从而找出真正的解,多用于决策类问题。5、递归回溯法:通过递归尝试遍历问题各个可能解得的通路,当发现此路不通时,回溯到上一步继续尝试别的通路。6、分治法:把一个大问题分解成若干个容易解决的子问题,分而治之,然后把子问题的解合成,得到大问题的解,多用于较复杂的问题。7、动态规划法: 通过多阶段决策过程来解决问题。每个阶段决策的结果是一个决策结果序列,这个结果序列的最优结果,取决于以后每个阶段的决策。搜索算法的定义: 有目的地枚举一个问题的部分或所有的可能情况,从而找到问题的解。显示图的常用方法:1)邻接矩阵法:邻接矩阵是表示顶点之间相邻关系的矩阵。2)邻接表法: 对于图G中的每个结点,该方法把所有邻接于的顶点链成一个单链,这个单链表就称为顶点的邻接表。邻接表由顶点表和边表两部分组成。广度优先搜索算法的基本思路: 通过搜索图的过程中进行相应的操作,从而解决问题,主要用于解决在显式图中寻找某一方案的问题。1)邻接表表示图的广度优先搜索算法:int visitedn;bfs(int k,graph head )int I; queue Q; edgenode *p; InitQueue(Q); print(“visit vertex”,k); visitedk=1; EnQueue(Q,k); while(not QueueEmpty(Q) i=DeQueue(Q); p=headi.firstedge; while(pnull) if(visitedp-adjvex=0) print(“visitertex”,p-adjvex);visitedp-adjvex=1;EnQueue(Q,p-adjvex); p=p-next;2)邻接矩阵表示的图的广度优先搜索算法:brsm(int k,graph g 100,int n)int i,j;queue Q;InitQueue(Q);print(“visit vertex”,k);visitedk=1;EnQueue(Q,k);while(not QueueEmpty(Q)i=DeQueue(Q);for(j=0;jn;j+) if(gij=1 and visitedj=0) print(“visit vertex”,j);visitedj=1;EnQueue(Q,j);选路径问题(P198)的算法分析: 运用广度优先搜索,逐层搜索正好可以尽快找到一个结点与另一个结点相对而言最直接的路径。走迷宫问题(P200)的算法分析: 运用广度优先搜索,从入口开始广度优先搜索所有可到达的方格入队,再扩展队首的方格,直到搜索到出口时算法结束。深度优先搜索算法的基本思路: 深度优先搜索和广度优先搜索的基本思路相同。由于深度优先搜索的E结点是分多次进行扩展的,所以它可以搜索到问题所有可能的解决方案。1)用邻接表存储图的搜索算法如下:int visitedn;graph head100;dfs(int k)edgenode *ptr;visitedk=1;print(“访问”,k);ptr=headk.firstedge;while(ptrnull)if(visitedptr-vertex=0) dfs(ptr-vertex) ptr=ptr-nextnode;2)用邻接矩阵存储图的搜索算法如下:int visitedn;graph g 100,int n;dfsm(int k)int j;print(“访问”,k);visitedk=1;for(j=1;j=n;j+) if(gkj=1 and visitedj=0) dfsm(g,j);走迷宫问题(P204)的算法分析: 深度优先搜索,就是一直向着可通行的下一个方格进行,直到搜索到出口就找到一个解。若行不通,则返回上一个方格,继续搜索其他方向。七巧板问题(P206)的算法分析: 在深度优先搜索顶点时,并不加入任何涂色的策略,只是对每一个顶点逐个尝试4种颜色,检查当前顶点的颜色是否与前面已确定的相邻顶点的颜色发生冲突,若不冲突,则继续以同样的方法处理下一个顶点;若4个颜色都尝试完毕,仍然与前面顶点的颜色发生冲突,则返回到上一个还没有尝试
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 象山店面设计知识培训课件
- 2025版商铺租赁合同范本下载全攻略
- 2025办公室装修改造项目环保壁纸材料选用合同
- 2025版特色主题团建活动设计与执行合同范本
- 2025年度婚庆服务合同范本
- 2025版粉末涂料采购合同范本
- 2025年度区块链技术应用合作协议下载
- 2025年度物流配送合作保证金合同
- 2025年度日用品供应链金融服务合同
- 2025年购买带产权车位应签署何种合同
- 2025-2030中医药大健康产业链整合与投资机会分析报告
- 消费者心理学PPT完整全套教学课件
- 部编六年级语文上册一二单元教案
- 炮塔铣床数显表使用说明书
- 乒乓球体育课教案1
- 自然灾害与防治
- 先进制造技术第1章
- 2023年兴文县中医院康复医学与技术岗位招聘考试历年高频考点试题含答案解析
- 用地性质分类表代码
- 中班语言绘本《点》课件
- 浙江省地方课程《人自然社会》课件
评论
0/150
提交评论