【发布时间】:2012-10-06 21:34:52
【问题描述】:
我正试图围绕比特成本(而不是单位成本)研究算法的时间复杂度的概念,似乎不可能找到关于该主题的任何内容.
这是我目前所拥有的:
使用任意算术运算,两个数的 n 位乘法和除法的位成本为 O(n^2)。
所以,例如:
int number = 2;
for(int i = 0; i < n; i++ ){
number = i*i;
}
具有 O(log(n)^2*n) 的时间复杂度,因为它执行 n 次乘法,i 具有 log(i) 位。
但在常规情况下,我们希望获得与输入相关的时间复杂度。那么,这种情况如何运作? i 中的位数可以被认为是一个常数。这将使时间复杂度与单位成本相同,但常数更大(因此两者都是线性的)。
加法、减法、比较和赋值变量都是 O(n),n 是位数,用于任意精度算术。
【问题讨论】: