【发布时间】:2012-10-21 06:29:36
【问题描述】:
考虑一下欧几里得算法的这个实现:
function gcd(a, b)
while b ≠ 0
t := b
b := a mod b
a := t
return a
wikipedia 上的一个很好的证明表明该算法“总是需要少于 O(h) 次除法,其中 h 是较小数字 b 中的位数”。
但是,在图灵机上,计算 mod b 的过程的时间复杂度为 O(a+b)。我的直觉和一些大型测试告诉我,欧几里得算法的复杂度在图灵机上仍然是 O(a+b)。
关于如何证明这一点的任何想法?
【问题讨论】:
-
顺便说一句:经典的欧几里得算法不知道 mod。那里使用了一个重复的减号。
标签: complexity-theory big-o time-complexity turing-machines greatest-common-divisor