Wednesday, October 31, 2012

Euclidean时间复杂度



  1. gcd(a, b) = gcd(b, r) r=a%b
    每调用一次gcd,需要计算一次a%b,所以gcd的时间复杂度可用a%b的执行次数衡量。
  2.  Finonacci序列 1, 2, 3, 5, 8, 13, ...f1 =1, f2=2, ...fk=fk-1+fk-2  


a
b
求余运算次数
1
0
0
2
1
1
3
2
2
5
3
3
8
5
4
13
8
5
21
13
6





从上图出发,可以假设若欧几里德算法执行n次时,a>=fn+1, b>=fn
证明:

n=1时假设成立,假设在n时成立,只需证当n+1时成立即可

假设 gcd(a, b)需要执行n+1次,r=a%b, gcd(b, r)需要执行n

所以有 b>=fn+1,r>=fn,a = bq + r >= b + r >=fn+1 + fn = fn+2 

从而有a>=fn+2 b>=fn+1 所以假设在n+1时也成立
                            
 



 
 

No comments:

Post a Comment