1、算法与程序设计复习总结1、算法一个算法是一个有穷规则的集合,其中规则规定了解决某一特定问题的运算序列。算法特性:有穷性、确定性、可行性、输入、输出。2、 时间复杂度设 n 为被求解问题的规模,则用 n 的函数表示执行算法所需的时间,称为算法的时间复杂度。渐进时间复杂性nn0n若 lim T(n)/g(n)=1 , 则称 T(n)渐进于 g(n),记为 T(n)o(g(n)3、 时间复杂性的上下界及阶若存在常数 c、c1、c2 和 n0,对所有的 nn0,有 |T(n)|c|g(n)|,则称 g(n)为 T(n)的上界,记为 T(n)=O(g(n)。 |T(n)|c|g(n)|,则称 g(n)为
2、 T(n)的下界,记为 T(n)=(g(n)。 c1|g(n)|T(n)c2|g(n)|,则称 T(n)与 g(n)同阶,称 g(n)是 T(n)的精确界。记为 T(n)=(g(n),等价于 T(n)=O(g(n)且 T(n)=(g(n),还等价于 T(n)=O(g(n)且 g(n)=O(T(n)。4、 TSP(Travelling Salesman Problem)旅行商问题设有 n 个城市,分别用 1、2、3、4n 表示,从城市 i 到城市 j 的距离为 dij ,一个推销员要从城市 1开始,到达其他任何一个城市一次且仅到达一次,最后返回城市 1。问题是他应如何选择行走路线,使总的路径最短
3、。5、 RASP(Random Access Stored Program)随机存储存取程序RASP 程序存放在存储器中,能修改自身,无间接寻址,每条指令占两个存储单元,第一个存放操作码,第二个存放操作数。6、 P 类问题:一类能够用确定性算法在多项式时间内求解的问题7、 NP 类:一类能够用非确定性算法在多项式时间内求解的问题。8、 NP 难度:一个问题可在多项式时间内转化成为一个 NP 问题,但是不能证明该问题是 NP 问题,但是至少可以证明该问题的难度相当于一个 NP 问题,称该问题具有 NP 难度。9、 NPC 类:NP 完全类。设在 NP 问题中存在某问题 c,所有其他 NP 问题都
4、可以在多项式时间内转化为问题 c,则称 c 是 NP 完全的。NPC c|cNP 并且所有 aNP ,ac10、EREW单读单写 EREW(Exclusive-Read and Exclusive-Write ) 并读单写 CREW(Concurrent-Read and Exclusive-Write )单读并写 ERCW(Exclusive-Read and Concurrent-Write )并读并写 CRCW(Concurrent-Read and Concurrent-Write)11、 SM 共享存储器12、SIMDSISD:单指令流单数据流MISD:多指令流单数据流SIMD:单指
5、令流多数据流MIMD:多指令流多数据流 T(n)=3T(n/2)+kn,T(1)=k T(n)=32 T(n/22)+3kn/2+kn=33 T(n/23)+ 32kn/22+3kn/2+knm-1i=0=3mT(n/2m)+ kn(3/2) i=3mT(n/2m)+kn1-(3/2)m/ 1-3/2令 n=2m m=logn T(n)=k3m-2k(2m-3 m)=O(3m)=O(3logn)=O(nlog3) 换底公式解法 2:(讲义可乘函数)令 T(n)=k U(n)U(1)=1k U(n)=3kU(n/2)+kn U(n)=3kU(n/2)+n此时 n 是可乘函数,a=3,b=2,d(
6、2)=21 三种情况下,T(n)=O( ? ) 。T(n)=a2 T(n-2)+ab(n-1)+bn=a3 T(n-3)+ a2b(n-2)+ ab(n-1)+bnk-1i=0=akT(n-k)+ b a i(n-i)令 n-k=1 k=n-1当 a=1,T(n)=1+b(n+2)(n-1)/2如果 a=1T(n)=O(n2)k-1k-1当 a1,i=0T(n)=akT(n-k)+ nb (a i)-b (ia i)i=0k-1令 A=(iai)=0+a+2a 2+3a3+(k-2)ak-2+(k-1)ak-1i=0aA=0+a2+2a3+(k-2)ak-1+(k-1)akA=a(1-ak)/
7、(1-a)2-kak/(1-a)则 T(n)= an-1+b(n+1+k)an(n+k)an-1 +n+na-a/(1-a)2 如果 a1,T(n)=O(a n) T(n)=aT(n-1)+b n,T(1)=b T(n)=O( ? ) 。讨论:当 ab 三种情况下,T(n)=O( ? ) T(n)=a2 T(n-2)+abn-1+bn=a3 T(n-3)+ a2bn-2+ abn-1+bnk-1=akT(n-k)+ bn(a/b) ii=0k-1令 n-k=1,k=n-1,如果 a=b, T(n)= ban-1+ bn1i=0= ban-1+(n-1) bn = O(nbn)如果 ab T(n
8、)= ban-1+b2(bn-an)/(1-a)如果 ab则 T(n)=O(an)三、对于 an 4+bn3+cn2+dn+e 给出计算算法:秦九韶算法原式=nnn(an+b)+c+d+e 编写 RAM 程序;假设输入带上的数据依次为 n、a、b、c、d、e。r0 r1 r2 r3 r4r0 :累加器r1 :存放 nr2 :存放 a、b、c、d、er3 :存放和r4 :存放循环次数,本题为 4READ 1 ;把 n 读到 r1 寄存器READ 3 ;把 a 读到 r3 寄存器LOAD =4 ;把立即数 4 放到 r0 寄存器STORE 4 ;把 r0 寄存器的内容放到 r4 寄存器aa: LO
9、AD 4 ;r4 寄存器的内容放到 r0 寄存器JZERO bb ;如果 r0 寄存器的值为 0 就跳转到标号 bb 处SUB =1 ;r0 寄存器的内容减 1STORE 4 ;把 r0 寄存器的内容放到 r4 寄存器LOAD 1 ;把 r1 寄存器的内容放到 r0 寄存器MULT 3 ;r0 r0r3 /anREAD 2 ;从磁带上读入一个数据到 r2 寄存器ADD 2 ;r0 r0+r2 /an+b STORE 3 ;把 r0 寄存器的内容放到 r3 寄存器/an+bJUMP aa ;跳转到标号 aa 处bb: WRITE 3 ;把 r3 寄存器的内容写到磁带上 分析该 RAM 程序 在均
10、匀耗费标准下和对数耗费标准下的时间复杂性。均匀耗费标准:执行次数最高的是 4 次,而其中处理数最大的有 10 条:aa:LOAD 4 JZERO bb SUB =1 STORE 4 LOAD 1 MULT 3 READ 2 ADD 2 STORE 3 JUMP aa T(n)= O(4*10)= O(1)对数耗费标准:处理数最大的有 10 条指令,MULT 的时间远远大于其它指令的执行时间,仅取 MULT 计算。T(n)=log(a)+log(n)+log(an+b)+log(n)+log(an2+bn+c)+log(n) + log(an3+bn2+cn+d)+log(n)= O(log(n
11、)如果本题循环次数不是常数 4,而是 m,则均匀耗费标准:T(m)= O(m)/ T(n)= O(1)对数耗费标准:T(m)= O(mlog(n)/ T(n)= O(log(n)五、两个 n 位二进制数相乘,n 是 3 的幂,用三分法,不考虑进位, 给出算法; 求其复杂性。X YXY=(a22n/3+ b2n/3+ c) (d22n/3+ e2n/3+ f)=ad24n/3+ (ae+bd)2n+(af+be+cd) 22n/3+(bf+ce) 2n/3+cf设 A=ad B=ae+bd C=af+be+cd D=bf+ce E=cf 令 U1=(a+b+c)(d+e+f) U2=ad U3=
12、cf U4=be U5=(a+b)(d+e) U6=(b+c)(f+e) 则 A= U2 B= U5- U2- U4 D= U6- U3- U4 E= U3 C= U1-A- B- D- E原来: 9 次乘法,8 次加法,和一些移位现在: 6 次乘法, 16 次加法,和一些移位b n=1T(n)=6T(n/3)+bn n1a b cd e f3 6T(n)=O(n )六、动态规划下列矩阵连乘积M = M1 M2 M3 M4 M57 8 6 3 5 2要求: 给出算法的描述;原理:在每一步决策阶段,列出各种可能的解,从中淘汰掉不可能的解,保留可能产生最优解的局部解,再进入下一阶段,最后的结果就是
13、最优解。本题中依次找出 2 个、3 个、4 个、5 个矩阵相乘的最优解即可。 给出决策的数学模型;mij= ij mii=0 给出结果:运算次序和最小耗费。两个矩阵相乘:m127,6=336 m238,3=144 m346,5=90 m453,2=30三个矩阵相乘:m137,3= M12 M3 = 462m137,3= M1 M23 = 312选其小者 m 13=312m248,5= M23 M4 = 264m248,5= M2 M34 = 330选其小者 m 24=264m356,2= M34 M5 = 150m356,2= M3 M45 = 66选其小者 m 35=66四个矩阵相乘:m147,5= M13 M4 = 417m147,5= M12 M34 = 636m147,5= M1 M24 = 544选其小者 m 14=471m258,2= M24 M5 = 344m258,2= M23 M45 = 222m258,2= M2 M35 = 162选其小者 m 25=162五个矩阵相乘:m157,2= M14 M5 = 541m157,2= M13 M45 = 384m157,2= M12 M35 = 486m157,2= M1 M25 = 274最后结果 274次序 M 1(M2 (M3(M4M5 )