什么是Ruffini规则算法的复杂性(Big O)

时间:2015-11-24 10:06:11

标签: algorithm math big-o time-complexity complexity-theory

Ruffini's algorithm的正确复杂性分析是什么?

1 个答案:

答案 0 :(得分:2)

我对Ruffini规则的理解是它基本上由这个伪代码给出:

let b = [];
let last = 0;

for (i from n - 1 to 0) {
    b.add(last + a[n]);
    last = (last + a[n]) * r;
}
let s = last;

如果我们假设所有系数都是整数并且乘法都可以在每个时间O(1)完成,那么这个算法的运行时将是O(n),因为有一个循环的n次迭代做O (1)各自工作。

在实践中,乘法需要比这更长的时间。具体来说,分别乘以a和b位长的两个整数通常需要时间O(记录log b),除非你使用比这更快的运行速度的专用算法。

所以让我们假设每个系数和数字r都是最多U.在每次迭代中,我们乘以r并加上U,所以每次迭代后的最后一个值将是0,O(U 2 ),O(U 3 ),O(U 4 ),...,O(U n + 1 < / SUP>)。这意味着乘法将花费时间与0,2 log U,3 log U,4 log U,...,n log U成比例。在乘法之间求和,这需要时间O(n 2 log U),所做的总工作量为O(n 2 log U)。