【发布时间】: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) 是对数时间算法的标准表示法,无论对数的底如何。”,所以对数底并不重要,它实际上是一个常数底。