如何比较计算复杂度:O(k * M(n))和O(log ^ 6(n))?

时间:2011-11-29 13:04:51

标签: algorithm complexity-theory

假设我有两个计算复杂性:

  1. O(k * M(n)) - modular exponentiation的计算复杂度,其中k是指数位数,n是位数,M(n)Newton's division algorithm的计算复杂性。

  2. O(log^6(n)) - 算法的计算复杂性。

  3. 如何确定这两种复杂性中的哪一种不那么“昂贵”?事实上,符号M(n)是令我最困惑的。

2 个答案:

答案 0 :(得分:1)

首先,对于任何给定的固定n,只需将其放入运行时函数(没有Landau O,请注意)并进行比较。

渐近地,你可以将一个函数(resp它的Landau项)除以另一个函数,并将n的商数限制为无穷大。如果它为零,则提名者中的函数正常生长,渐近地弱于另一个。如果它是无穷大,它会更快地生长。在所有其他情况下,具有相同渐近长度的常数因子(即大Theta)。如果商在极限中为1,则它们渐近相等。

答案 1 :(得分:0)

好的,根据this Wikipedia entry关于将牛顿方法应用于除法的问题,您必须执行O(lg(n))步骤来计算n除法的位。每一步都采用乘法和减法,因此我们采用简单的“教科书”方法时会有一点复杂度O(n^2)

因此,第一种方法的复杂性为O(lg(n) * n^2)。它比第二种方法渐近slower