【问题标题】:Extended Euclidean Algorithm runs in time O(log(m)^2)扩展欧几里得算法运行时间 O(log(m)^2)
【发布时间】:2012-12-19 22:53:06
【问题描述】:

我对维基百科文章中以下行的理由感兴趣:

“这个算法[扩展欧几里得算法]运行时间为 O(log(m)^2),假设 |a| http://en.wikipedia.org/wiki/Modular_multiplicative_inverse

为什么会这样?谁能给我解释一下?我完全理解算法和所有数学,只是我不知道如何确定这些算法的复杂性。还有更一般的提示吗?

另外,另外:log 是自然对数 (ln) 还是以 2 为底的对数?

【问题讨论】:

  • "如果 T(n) = O(log n),则称一个算法需要对数时间。由于计算机使用二进制数字系统,对数通常以 2 为底(即, log2 n, 有时写作 lg n). 然而,通过改变对数的基本方程,loga n 和 logb n 仅相差一个常数乘数,在 big-O 表示法中它被丢弃;因此 O(log n) 是对数时间算法的标准表示法,无论对数的底如何。”,所以对数底并不重要,它实际上是一个常数底。

标签: complexity-theory big-o


【解决方案1】:

流行的《算法简介》一书 (http://mitpress.mit.edu/books/introduction-algorithms) 有一整章是关于证明算法复杂性的(但该主题的内容比本书要多得多)。如果您对此事普遍感兴趣,可以阅读它。

您也可以尝试关注本文的参考文献:http://itee.uq.edu.au/~havas/cats03.pdf

【讨论】:

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