计算机算法概论优秀PPT.ppt

上传人:wj151****6093 文档编号:86830429 上传时间:2023-04-15 格式:PPT 页数:34 大小:229.50KB
返回 下载 相关 举报
计算机算法概论优秀PPT.ppt_第1页
第1页 / 共34页
计算机算法概论优秀PPT.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《计算机算法概论优秀PPT.ppt》由会员分享,可在线阅读,更多相关《计算机算法概论优秀PPT.ppt(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 9)概率算法概率算法 10)近似算法近似算法 8)NPNP完全性完全性 6)回溯法回溯法 7)分支分支-限界法限界法 学习要点学习要点:理解算法的概念。理解算法的概念。理解什么是程序,程序与算法的区分和内理解什么是程序,程序与算法的区分和内在联系。在联系。驾驭算法的计算困难性概念。驾驭算法的计算困难性概念。驾驭算法渐近困难性的数学表述。驾驭算法渐近困难性的数学表述。驾驭用驾驭用C/C+语言描述算法的方法。语言描述算法的方法。第一讲第一讲 算法概述算法概述 20世纪50年头,西方著名的词典中还未曾收录过算法(Algorithm)一词,据西方数学史家考证,Algorithm取自于古代阿拉伯学者的

2、名著复原和化简的规则一书的作者的署名中的al-Khwarizmi,而从作品名字中的al-jabr派生出了Algebra(代数)一词。随着时间的推移,Algorithm这个词的含义,已经完全不同于它原来的含义了。一、什么是算法?一、什么是算法?一个算法是一个有穷规则的集合。这些规则规定了解一个算法是一个有穷规则的集合。这些规则规定了解决某一问题的一个运算序列。同时,一个算法应当具有五决某一问题的一个运算序列。同时,一个算法应当具有五个特性:有穷性、可行性、确定性、输入、输出。个特性:有穷性、可行性、确定性、输入、输出。1.有穷性:规则的有限性。或者说,求解问题的运算序有穷性:规则的有限性。或者说

3、,求解问题的运算序列,必需在有限的计算步后停止。列,必需在有限的计算步后停止。2.可行性:每一计算步都是基本的、可实现的。可行性:每一计算步都是基本的、可实现的。3.确定性:每一条规则都是明确、无二义的。确定性:每一条规则都是明确、无二义的。算法定义:算法定义:5.输出(输出(1):算法产生与输入相关的量。):算法产生与输入相关的量。4.输入(输入(0):算法起先执行之前指定初始值。):算法起先执行之前指定初始值。二、算法的又一描述方式二、算法的又一描述方式 设:四元组(设:四元组(Q,I,f ).其中:其中:Q:状态集合状态集合;I,:Q的子集,分别代表输入和输出的子集,分别代表输入和输出

4、f:定义在定义在Q之上的一个映射之上的一个映射。且有:若且有:若q ,则:,则:f(q)=q。1.描述描述计算序列计算序列:若对于若对于I 的每一个输入的每一个输入x,由由f 定义一个计算序列:定义一个计算序列:y0,y1,y2,。其中:其中:y0=x;yk+1=f(yk)(k 0)。若一个计算序列在第若一个计算序列在第k步终止,且步终止,且k是使是使yK 的最小整数,则称的最小整数,则称yk是由是由x产生的输出。产生的输出。2.描述算法:描述算法:一个算法是对于一个算法是对于I 中全部输入中全部输入x,都能在有穷步内终止都能在有穷步内终止的一个计算序列。的一个计算序列。f0y1Q f1y2

5、x Iykfk-1三、程序三、程序(Program)程序是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质(1)。例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。操作系统的各种任务可看成是单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。该子程序得到输出结果后便终止。四、算法困难性分析四、算法困难性分析 算法困难性=算法所须要的计算机资源算法的时间困难性T(n);算法的空间困难性S(n)。其中n是问题的规模(输入大小)。算法的时间困难性算法的时间困难性(1)最坏状况下的时间困难性 Tmax(n)=max T(I)|size(I)=n(2)最好状况下的时

6、间困难性 Tmin(n)=min T(I)|size(I)=n(3)平均状况下的时间困难性 Tavg(n)=其中I是问题的规模为n的实例,p(I)是实 例I出现的概率。假设某算法的计算时间是f(n),其中变量n可以是输入或输出量,也可以是两者之和,还可以是它们之一的某种测度(例如,数组的维数,图的边数等)。g(n)是在事前分析中确定的某个形式很简洁的函数,它是独立于机器和语言的函数,而f(n)则与机器和语言有关。定义定义1.1 假如存在两个正常数假如存在两个正常数c和和n0,对于全部的对于全部的n n0,有,有|f(n)|c|g(n)|记作记作f(n)=O(g(n)算法时间的渐近表示算法时间的

7、渐近表示当说一个算法具有当说一个算法具有O(g(n)的计算时间时,的计算时间时,指的是假如此算法用指的是假如此算法用n值不变的同一类数值不变的同一类数据在某台机器上运行时,所用的时间总据在某台机器上运行时,所用的时间总是小于是小于|g(n)|的一个常数倍。所以的一个常数倍。所以g(n)是是计算时间计算时间f(n)的一个上界函数,的一个上界函数,f(n)的数的数量级就是量级就是g(n)。当然,在确定。当然,在确定f(n)的数量的数量级时总是试图求出最小的级时总是试图求出最小的g(n),使得,使得f(n)=O(g(n)。证明:取n0=1,当n n0时,利用A(n)的定义和一个简洁的不等式,有|A(

8、n)|am|nm+|a1|n+|a0|(|am|+|am-1|/n+|a0|/nm)nm (|am|+|a0|)nm选取c=|am|+|a0|,定理马上得证。定理定理1.11.1 若若A(n)=aA(n)=am mn nm m+a+a1 1n+an+a0 0 是一个是一个m m次多次多项式,则项式,则A(n)=O(nA(n)=O(nm m)。这个定理表明,变量这个定理表明,变量n的固定阶数为的固定阶数为m的任一的任一多项式,与此多项式的最高阶多项式,与此多项式的最高阶nm同阶。因此同阶。因此计算时间为计算时间为m阶的多项式的算法,其时间都可阶的多项式的算法,其时间都可用用O(nm)来表示。来表

9、示。事实上,只要将事实上,只要将n0取得足够大,可以证明只要取得足够大,可以证明只要c是比是比|am|大的随意一个常数,此定理都成立。大的随意一个常数,此定理都成立。从计算时间上可以把算法分成两类,从计算时间上可以把算法分成两类,凡可用凡可用多项式来对其计算时间限界的算法,称为多项式来对其计算时间限界的算法,称为多多项式时间算法项式时间算法(polynomial time algorithm)(polynomial time algorithm);而计算时间用指数函数限界的算法称为;而计算时间用指数函数限界的算法称为指指数时间算法数时间算法(exponential time algorithm

10、)(exponential time algorithm)。指数时间算法一般有以下几种,它们关系为:指数时间算法一般有以下几种,它们关系为:O(2n)O(n!)O(nn)以下六种计算时间的多项式时间算法是最为常见以下六种计算时间的多项式时间算法是最为常见的,其关系为:的,其关系为:O(1)O(1)O(longn)O(longn)O(n)O(n)O(nlongn)O(nlongn)O(nO(n2 2)O(nO(n3 3)因此,只要有人能将现在指数时间算法中因此,只要有人能将现在指数时间算法中的任何一个算法化简为多项式时间算法,的任何一个算法化简为多项式时间算法,那就取得了一个宏大的成就那就取得了

11、一个宏大的成就!算法分析中常见的困难性函数算法分析中常见的困难性函数算法分析的基本法则算法分析的基本法则非递归算法:非递归算法:(1)for/while 循环循环循环体内计算时间循环体内计算时间*循环次数;循环次数;(2)嵌套循环)嵌套循环循环体内计算时间循环体内计算时间*全部循环次数;全部循环次数;(3)依次语句)依次语句各语句计算时间相加;各语句计算时间相加;(4)if-else语句语句if语句计算时间和语句计算时间和else语句计算时间的较大者。语句计算时间的较大者。问题求解问题求解(Problem Solving)证明正确性分析算法设计程序理解问题精确解或近似解选择数据结构算法设计策略

12、设计算法五、算法设计的例子穷举法例1.1 百鸡问题公元5世纪末,数学家张丘建在算经中,提出这样一个问题:“鸡翁一,值钱五;鸡母一,值钱一;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何”。l令a为公鸡只数,b为母鸡只数,c为小鸡只数l a+b+c=100 (1)l5a+3b+c/3=100 (2)lc%3=0 (3)l上述百鸡问题中,a、b、c的可能取值范围为0-100,对在此范围内的a、b、c的全部组合进行测试,凡是满足上述3个约束方程的组合,都是问题的解。输入:所购买的3种鸡的总数目n输出:满足问题的解的数目k,公鸡,母鸡,小鸡的只数g,m,svoid chicken_question(

13、int n,int&k,int g,int m,int s)int a,b,c;k=0;for(a=0;a=n;a+)for(b=0;b=n;b+)for(c=0;c=n;c+)if(a+b+c=n)&(5*a+3*b+c/3=n)&(c%3=0)gk=a;mk=b;sk=c;k+;当n=100时,内循环体执行次数大于100万次考虑到n元钱只可以买到n/5只公鸡,或n/3只母鸡,有些组合可以不必考虑。而小鸡的只数又与公鸡及母鸡的只数相关,内循环可以省去。这样,算法1.1中可以改为:void chicken_problem(int n,int&k,int g,int m,int s)int i,

14、j,a,b,c;k=0;i=n/5;j=n/3;for(a=0;a=i;a+)for(b=0;b=j;b+)c=n-a-b;if(5*a+3*b+c/3=n)&(c%3=0)gk=a;mk=b;sk=c;k+例1.2 货郎担问题l某售货员要到若干个城市销售货物,已知各城市之间的距离,要求售货员选择动身的城市及旅行路途,使每一个城市仅经过一次,最终回到原动身城市,而总路程最短。l假如对随意数目的n个城市,分别用1-n的数字编号,这个问题归结为带权有向图中,找寻一条路径最短 的哈密尔顿回路问题。l思索:存储的实现方法l售货员的每一条路途,对应于城市编号1,2,n的一个排列。用一个数组来存放这个排列

15、中的数据,数组中的元素依次存放旅行路途中的城市编号。ln个城市具有n!个排列,售货员共有n!条路途可供选择。接受穷举法逐一计算每一条路途的费用,从中找出费用最小的路途,便可求出问题的解。l算法1.3 穷举法版本的货郎担问题l输入:城市个数n,费用矩阵cl输出:旅行路途t,最小费用minvoid salesman_problem(int n,float&min,int t,float c)int pn,i=1;float cost;min=MAx_FLoat_NUM;while(i=n!)产生n个城市的第i个排列于p;cost=路途p的费用;if(cost0;i=1,2,n)。判定:是否存在一种

16、装包方法,使装)。判定:是否存在一种装包方法,使装入背包物品的总效益大于入背包物品的总效益大于K?(1)计算机算法设计与分析)计算机算法设计与分析 王晓东王晓东 电子工业出版社电子工业出版社 2001年年1月第月第1版版 (2)算法设计与分析)算法设计与分析 王晓东王晓东 清华高校出版社清华高校出版社 2003年年1月第月第1版版 (3)计算机算法基础(其次版)计算机算法基础(其次版)余祥宣余祥宣 等等 华中理工高校出版社华中理工高校出版社 2000年年1月第月第1版版 (4)算法导论)算法导论 (英文英文,影印版),影印版)参考书参考书 *计算理论导引计算理论导引 Introduction to the Theory of Computation (美)(美)Michael Sipser 著著 麻省理工学院麻省理工学院 张立昂等译张立昂等译 机械工业出版社机械工业出版社 2000年第一版年第一版

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 商业计划书

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com