【问题标题】:What is the bit complexity of Extended Euclid Algorithm?扩展欧几里得算法的位复杂度是多少?
【发布时间】:2019-07-15 08:33:48
【问题描述】:

使用欧几里得扩展算法计算两个 n 位值 x 和 y 的最大公约数时所涉及的位复杂度是多少,即以 n 表示的复杂度

我在使用标准扩展欧几里得算法计算 GCD 时观察到以下模式,在最坏的情况下不同位大小。

就 x 和 y 两个值的大小而言,复杂度接近该值:

Source

如何得出理论上的位复杂度来验证我的观察结果?

【问题讨论】:

标签: algorithm recursion time-complexity big-o


【解决方案1】:

我希望你能适应高峰,因为你正在寻找最坏情况的复杂性。

无论如何...

如果 ab 的长度为 N 位,那么在最坏的情况下(斐波那契对),扩展欧几里得算法将采用 O(N) 次迭代。

f(N) 为单次迭代的成本。当然 f(N) 将至少是线性的,但仍然是多项式的,并且每种情况下近一半的迭代将涉及至少 N/2 位长的参数,所以总复杂度将在 O(N * f(N))

现在,f(N) 究竟是什么将取决于您的库中如何实现大整数运算的细节。除法/余数运算将占主导地位,尽管维基百科说如果您使用牛顿-拉夫森除法,那么其复杂性与乘法相同(尽管肯定会有一个常数乘数!)。

乘法成本 O(N * log N * log log N) 在 Schönhage–Strassen 的限制中,希望您的图书馆最终会使用它......所以当数字得到 真的很大,扩展欧几里得算法最坏的情况应该是O(N2 * log N * log log N)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多