算法设计与分析开卷

算法设计与分析开卷

ID:12967855

大小:798.41 KB

页数:15页

时间:2018-07-19

算法设计与分析开卷_第1页
算法设计与分析开卷_第2页
算法设计与分析开卷_第3页
算法设计与分析开卷_第4页
算法设计与分析开卷_第5页
资源描述:

《算法设计与分析开卷》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、算法(Algorithm)有限性:每条指令的执行次数、时间有限;确定性:每条指令有确定的含义、无歧义;输入:0个或多个输入;输出:1个或多个输出;有效性。程序:是算法用某种程序设计语言的具体实现。程序可以不满足算法的有限性。算法涵盖的主要元素:数据、运算设计算法的基本原则:自顶向下逐步求精。设计算法的基本过程:分析问题域,确定数学模型;整理初始状态与结果状态之间的隐含关系,寻求从数学模型已知初始状态到达结果状态的运算步骤。抽象数据类型(ADT)=数学模型+运算ADT=(D,S,P)数据对象、数据

2、关系、基本操作算法复杂性是算法运行所需要的计算机资源量,时间资源量称为时间复杂性,空间资源量称为空间复杂性。这些量只依赖于算法所要求解问题的规模、算法的输入和算法本身。空间复杂性的组成:指令空间(编译之后的程序指令)数据空间(常量、变量)栈空间(函数调用)指令空间的大小对特定问题不敏感。算法分析方法:概率分析;分摊分析;实验分析分治算法能解决问题特征:缩小问题规模可以降低解决问题的难度;可以将子问题的解合并为原问题解;问题分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。替换方法解

3、递归方程步骤:猜测出递归解的形式;用数学归纳法找出使解真正有效的常数递归树方法基本步骤:利用递归树推测出一个解;利用替换方法进行证明分治算法的特征:将较大规模的问题分解为若干个较小规模的子问题,每个子问题的求解过程与原问题一样,并利用自底向上的求解策略得到最终的解。直接或间接地调用自身的算法称为递归算法。在定义函数时调用到函数自身称为递归函数。边界条件与递归方程是递归函数的二要素。递归优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。缺点:

4、递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。贪心算法设计思路:总是做出在当前看来最好的选择,即贪心算法并不是从整体最优考虑,它所做的选择只是在某种意义上的局部最优选择。前提:贪心选择性质和最优子结构性质。所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。贪心算法与动态规划算法的差异:动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下

5、的方式进行,以迭代的方式作出相继的贪心选择,每做一次贪心选择就将所求问题简化为规模更小的子问题。背包、活动安排、最优装载、单源最短路径问题。一、算法时间复杂性问题1.试证明下面的定理:(1)如果f(n)=O(s(n))并且g(n)=O(r(n)),则f(n)+g(n)=O(s(n)+r(n));(2)如果f(n)=O(s(n))并且g(n)=O(r(n)),则f(n)*g(n)=O(s(n)*r(n))根据符号O的定义,存在正常数C1,C2和自然数N1,N2,使得对所有的n>=N1,f(n)<=

6、C1s(n);对所有的n>=N2,g(n)<=C2r(n)所以f(n)+g(n)<=C1s(n)+C2r(n),f(n)*g(n)<=C1C2s(n)r(n);令C3=max(C1,C2),C4=C1*C2;则:f(n)+g(n)<=C3[s(n)+r(n)]=O(s(n)+r(n))f(n)*g(n)<=C4*s(n)*r(n)=O(s(n)*r(n))2.假设某算法在输入规模为n时的计算时间为:T(n)=3*2n,在A型计算机上实现并完成该算法的时间为t秒,现有更先进的B型计算机,其运算速度

7、为A型计算机的64倍。试求出若在先进的B型机上运行同一算法在则T秒内能求解输入规模为多大的问题?某台t秒内完成的基本运算的次数=3*2^n新机器t秒内完成的基本运算的次数=64*3*2^n=2^6*3*2^n=3*2^(n+6)设N为B型机上t秒钟能求解的问题的规模所以T=T(N)=3*2^N=3*2^(n+6)则:N=n+63.试说明为什么“在现代计算机上运行指数(如2n)时间算法是不可能的,要想在顺序处理机上扩大所处理问题的规模,有效的途径是降低算法计算复杂度的数量级,而不是提高计算机的速度

8、”。Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(nn)一个计算时间为Ο(1)的算法,它的基本运算执行的次数是固定的,因此,总的时间由一个常数(即,零次多项式)来限界,而一个时间为Ο(n2)的算法则由一个二次多项式来限界。以下六种计算时间的多项式时间算法是最为常见的,其关系为Ο(2n)<Ο(n!)<Ο(nn)指数时间算法一般有Ο(2n)、Ο(n!)和Ο(nn)等。其关系为:其中,最常见的是时间为Ο(2n)的算法。当n取得很大时,指数时间算法和多项式时间算法在所需时间上

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。