算法02引论

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

每条语句的执行时间=语句的执行次数(frequency count)×语句执行一次所需时间
算法转化为程序后,每条语句的执行时间取决 一个算法的时间耗费就是该算法中所有语句的频 一般分析时是独立于机器的软硬件系统分析算 于:机器的指令性能,速度以及编译所产生的代 度和 法的复杂性,即设每条语句执行一次的时间均 码质量等难以确定的因素 为单位时间
例如:自然数集合对于小于( <)关系良序。 性质(3)说明:任何一个非空的良序集合都有
一个最小元素。(实数集合?)
良序原则
命题1 ﹤是集合S的一个良序,当且仅当它满足性质 (1)和(2),并且对于所有的j≥1,不存在具有 xj+1﹤xj的无限序列 x1 , x2 , x3
( )设﹤是集合1 S),( 的良序,如果存在这样的一个序 证明: ( )若﹤满足( 2)但不满足(3)。设A
5n 3 n (2)随着问题规模n的增大,两个算法的时间开销比为: 2 20 之增大, 100n
亦随
说明当问题规模比较大的时候, A1比A2有效的多。 容易看出它们的渐近时间复杂度为O(n2)与O(n3),宏观地评价 了这两个算法在时间方面的质量。约定不区分时间复杂度和渐 近时间复杂度,常用渐近时间复杂度评价算法的时间性能。
列,则由该序列成员组成的集合 A是集合 S的一个非 是 S一个没有最小元素的非空子集。由于 A非空,所以 空子集, 不满足性质(3),与﹤是集合S的良序矛 xA 可以找到 1 A ,由于A中无最小元素,故有 x2 A : x2 x1 盾。 x 也不是最小元素,可以同样找到 x A : x x ,由于 3 3 2 2
2 3
A B H ( x) 1 x 1 2x
A 1,
H ( x)
k k ( 2 1 ) x k 1
B 1
1 1 (1 2 x 2 2 x 2 ) (1 x x 2 ) 1 2x 1 x

生成函数 得到 h(n) 2 n 1
时间复杂度计算表示
两个函数阶数的比较方法有如下结论: 假设 lim f (n) L 有下列情况: n g ( n) (1)如果L=a,a是有限正常数,则 f (n) ( g (n)) (2)如果L=0,则 f(n)的阶数比g(n)低(<); (3)如果 L 则f(n)的阶数比g(n)高(>); ;
(1)若A中没有与k相等元素,则语句(3)的频度 f(n)=n; (2)若A中最后一个元素等于k,则语句(3)的 频度f(n)=0;
问题4 最坏时间复杂度与平均时间复杂度
最坏情况下的时间复杂度是:算法在任何输入实例上 的运行时间上的上界,保证了算法运行时间不会比任 何更长; 平均情况下的时间复杂度是:所有可能的输入实例均 以等概率的出现的情况下,算法的期望运行时间。 时间复杂度和空间复杂度统称为算法的复杂度。
2 算法终止性证明-良序原则
利用良序原则证明依赖于不可数集合的命题P(x)。 良序关系 设﹤是集合S上的一个良序关系,如果满足以下性质:

(1)给定集合S中元素x,y,z,如果x﹤y,y﹤z,则x﹤z。 (2)给定集合S中元素x,y,以下三种可能性恰有一种为真: x﹤y,x=y,y﹤x (3)如果A是S的任何非空子集,则A中必有一个元素x,使得 对于A中所有的y,有x≤y。
H ( x) h(1) x h(2) x h(3) x h(k ) x k
2 3 k 1
先求出H(x)的解析表达式,然后展开为幂级数,其中xn的系数即为要 移动的次数。
H ( x) h(1) x h(2) x 2 h(3) x 3
) 2 xH ( x) 2h(1) x 2 2h(2) x 3
每秒钟1206万亿次的峰值速度和每秒 563.1万亿次的Linpack实测性能,使 这台名为“天河一号”的计算机位居 同日公布的中国超级计算机前100强之 首,也使中国成为继美国之后世界上 第二个能够自主研制千万亿次超级计 算机的国家。 这个速度意味着,如果用“天河 一号”计算一秒,则相当于全国13亿 人连续计算88年。如果用“天河一号” 计算一天,一台当前主流微机得算160 年。“天河一号”的存储量,则相当 于4个国家图书馆藏书量之和。
定理1-1 若 A(n) am n a1n a0 是一个m次多项式,则
m
A(n) O(n )
m
证明:(?) 说明:变量n的阶数为m的多项式与其最高阶同阶。
时间复杂度计算表示
定义 定义 1 1 ( ( 2 3 )(下界函数)如果存在两个正常数 )(双界函数)如果存在两个正常数 cc 和 1,c2 和 n0n ,对所有 n≧ n≧ n0n ,有 0,对所有 0,有 c1 | g (n) || f (n) | c2 | g (n) | |f(n)|≧c|g(n)| f( n) ( g (n)) f(n)的一个 则: 则记作:f(n)= (g(n)), g(n) 是计算时间 说明: 下界函数。 g(n)既是计算时间f(n)的一个下界函数也是一 个上界函数。
问题3 算法的时间复杂度不仅仅依赖于问题的规模, 还要与输入实例的初始状态有关(算法工作量) 例1-3 对于在数组 A[0,, n] 中查找给定值k的算 法,大致如下: (1)i=n-1; (2)while(i≥0 && (A[i] !=k)) (3)i--; (4)return i; 语句(3)的频度不仅与问题规模n有关,而且与 输入实例中A的各元素取值及k的取值有关
频度和=n+1+n(n+1)+n2+n2(n+1)+n3=2n3+3n2+2n+1=T(n)
问题2 用渐近时间复杂度评价算法的时间性能
例1-2 设有算法A1和A2求解同一问题,时间复杂度分 别为 T1 (n) 100n 2 , T2 (n) 5n 3 。 T1 (n) T2 (n) (1)当输入量n<20时,有
更快的计算机还是更快的算法??
联想 曙光 浪潮
联想深腾7000系列百万亿次超级计算机系统
2010年6月1日,中国首台实测性能超千万亿次的超级计算机——曙 光“星云”高性能计算机系统于北京国家会议中心正式发布,超千 万亿次的计算能力再次刷新了中国高性能计算的最高速度。在德国 时间2010年5月31日公布的第35届全球超级计算机TOP500排行榜 中排名第二,创造了中国高性能计算机全球排名的最好成绩。 浪潮 “倚天”的万亿次桌面超级计算机,售价5万元,开创出新的 桌面超级计算机细分市场。“倚天”与普通台式机主机箱体积相仿, 最高计算能力可达4万亿次/秒,相当于40台服务器或200台PC的 计算,而成本只有传统高性能计算系统的1/5。
递归算法的时间复杂度对应为相应的递归关系式
如何求解?
3 递归关系式的求解
例:梵塔(汉诺(Hanoi)塔)问题
A
B
C
递归关系:h(n)=2h(n-1)+1
初始条件:h(1)=1
据说在东方的古国──印度土地上,有一座印度教的神庙,这 庙有一块黄铜板,板上插著三根细细的、镶上宝石的细针,细 针像菜叶般粗,而高就像成人由手腕到肘关节的长。 当印度教的主神梵天在创造地球这个世界时,就在其中的 一根针上从下到上放了半径由大到小的六十四片圆金片环,这 就是有名的「梵塔」或称「汉内塔」(Towers of Hanoi)。 天神梵天要这庙的僧侣,把这些金片全部由一根针移到另 外一根指定的针上,一次只能移一片,不管在什么情况下,金 片环的大小次序不能变更,小金片环永远只能放在大金片环上 面。 只要有一天这六十四片的金环能从指定的针上完全转移到 另外指定的针上,世界末日就来到,芸芸众生、神庙一切都将 消灭,万物尽入极乐世界去。
(1 2 x) H ( x) h(1) x [h(2) 2h(1)]x 2 [h(3) 2h(2)]x 3
生成函数
得到
x (1 2 x) H ( x) x x x (| x | 1) 1 x x H ( x) (1 x)(1 2 x)
G( x) a0 a1 x a 2 x 2
生成函数与递归序列
寻找递归序列的通项
1)构造递归序列的生成函数; 2)生成函数对于某些x值收敛,得到g(x) 的解析表达式; 3)将g(x)展开为幂级数,则xn的系数就是递 归序列的通项an的表达式。
生成函数
对于河内塔问题,以h(n)为系数,构造其生成函数H(x),
时间复杂度计算表示
假设f(n)为某算法的计算时间,n是问题的大小,g(n)是
事先确定的简单函数,如:nm, 2n, n!。 定义1-1 如果存在两个正常数c和n0,对所有n≧n0,有 |f(n)|≦c|g(n)| 则记作:f(n)=O(g(n)), O为数量级(阶数), g(n)是计算 时间f(n)的一个上界函数, f(n)的数量级是g(n) 。
良序原则
命题2 设﹤是集合S的一个良序,并且设p(x)是关于S元素x的 一个命题。如果p(x)能在p(y)对于所有的y<x为真的假定下
得证,则p(x)对S中所有的x为真。 证明:命A是使得p(x)为假的所有x的集合。如果A非空,A对于 <为良序,则A含有一个最小元素x0,因此p(y)对于所有y< x0为 真。但这说明p(x0)为真,所以x0不在A中(因为A是使得p(x)为 假的所有x的集合),与假设矛盾,因此A必须为空,即p(x)总 是为真。 命题2是数学归纳法的推广,若S为自然数,则就是一般的 简单的数学归纳法。
理论上说明算法终止性是可以证明的。
Lattice 格
对任意一个偏序集来说, 其中每一对元素不一定都 有最大下界或最小上界。 设<A;≤>是一个偏序集, 如果A中任意两个元素 均有最小上界和最大下界, 那么就说A关于偏序 “≤”作成一个格(Lattice), 或直接称A为格。
递归算法
递归算法,就是把一个输入规模较大的问题转化为一个 输入规模较小的同类问题,并反复进行这种转化,直到 输入规模小到可以直接求解为止。
例1-1 (矩阵乘法)求两个n阶方阵A,B的乘积C
Void MatrixMultiply(int A[n][n], int B[n][n], int C[n][n]) {int i,j,k; 频度:n+1,循环执行n次 (1) For (i=0;i<n;i++) n(n+1) (2) { for (j=0;j<n;j++) n2 (3) C[i][j]=0; n2(n+1) (4) { for (k=0;k<n;k++) (5) C[i][j]=c[i][j]+A[i][k] ×B[k][j] n3 } T ( n) lim 2 ,T(n)的数 } 其渐近时间复杂度: n n 3 量级是 n3,即T(n)=O(n3)。 }
递归关系的求解-生成函数(母函数)
1 2 n c , c , , c 函数 (1 x) 1 c x c x c x 与序列 n n n 相对应,定义生成函数:对于序列 a0 , a1 ,, 构造函数
n 1 n 2 2 n n n n
为序列 a0 , a1 , a2 , 的生成函数,其中x是参数,只 要序列{an}确定,则G只依赖于x。反之,若G已知, 则序列自然确定。
这样就可以在A中找到存在具有xj+1﹤xj的无限序列 x1 , x2 , x3 。与给定条件矛盾,故假设错误, ﹤ 是集合S的一个良序。证毕。
算法终止性证明
说明:命题1可以用来证明算法的终止性:如果能够把一 个计算的各个状态映射到一个良序集S,使得计算的每一 个步骤总是从一个状态x进入到另一个状态y,并且有 f(y)<f(x),则此算法必定终止。
, 即为要求移动的次数。
当n=64时,要移动264-1次,假设1s移动一次,需 要5849亿年。
计算速度
空间换时间
2009年国际超级计算机 会议上,美国洛斯阿拉莫 斯国家实验的IBM Roadrunner计算机被评 选为世界上最快的超级计 算机速度达到了每秒1.105千
万亿次
“天河一号”为我国首台千万亿次超级计算 机
由此可以得到数量级的大小比较: O(1) O(log n) O(n) O(n log n) O(n 2 ) O(n 3 )
O(2 n ) O(n!) O(n n )
(ຫໍສະໝຸດ Baidu项式时间算法与指数时间算法)
时间复杂度的几个相关问题
问题1 算法耗费的时间和语句频度
一个算法耗费的时间=算法中每条语句的执行时间之和
相关文档
最新文档