我正在尝试通过阅读CLR算法书来学习RSA密码学的数论。我正在看练习31.2-5,声称1 + log Φ(b / gcd(a,b))的界限。
完整的问题是:
如果是> b> = 0,表明调用EUCLID(a,b)
最多生成1 + log Φ b递归调用。将此限制改为1 + log Φ(b / gcd(a,b))。
有谁知道如何展示这个?欧几里德的算法在这个网站上已经有其他几个问题和答案,但是它们似乎都没有这个确切的答案。
答案 0 :(得分:2)
请参阅Donald Knuth对Euclid算法的分析, TAOCP Vol.2 p.356
答案 1 :(得分:1)
这就是我解决第一部分的方法。我还在继续第二次
我们知道Euclid算法的运行时是所涉及步骤数的函数(本书的第pg页) 设k是所需的递归步数。 因此,b> = F k + 1> =φk-1 b> =φk-1 记录找到我们的k Logφb> = k-1 1 +Logφb> = k 因此运行时间为O(1 +Logφb)
答案 2 :(得分:1)
如果Euclid(a,b)
步数超过N
,则显示
a>=F(n+1)
和b>=F(n)
,其中F(i)
是i
斐波那契
数。
这可以通过Induction轻松完成。
再次显示F(n)
≥φ n-1
诱导。
使用步骤1和2的结果,我们有b≥F(n)
≥
φ n-1
以两侧的对数为准,
log φb≥n-1。
因此证明,n≤1+
日志<子>φ子> B'/ p>
第二部分通常如下
EUCLID(ka,kb)
中的递归调用次数与EUCLID(a,b)
中的递归调用次数相同,其中k
是一个整数。
因此,边界被改进为1 + log φ(b / gcd(a,b))。