时间复杂度n ^ k,k是一个数值变量,这是伪多项式吗?

时间:2018-11-06 13:32:16

标签: algorithm

如果算法的时间复杂度为n ^ k

n是元素数,k是一个数值变量,上限为720,下限为1,k独立于n

O(n ^ k)可以称为伪多项式吗?

如果不是,您认为这比O(2 ^ n)好吗?


编辑:

如果k没有上限,可以将O(n ^ k)称为伪多项式吗?

如果不是,您认为这比O(2 ^ n)好吗?

1 个答案:

答案 0 :(得分:1)

由于 k 的上限为 720 ,这意味着最坏的情况,该算法的缩放比例为 O(n 720 ,这意味着它是多项式

渐近优于 O(2 n ,因此这意味着最终 n < / em> O(n 720 算法的性能将优于 O(2 n 算法。但是,对于实用输入来说,是否更好,取决于很多因素。

例如,如果第一个算法恰好需要 n 720 步骤,而 2 n 第二个(大哦, not 暗含了这个意思),那么第一个要保存的 n n = 9'516 。这意味着第一种算法将执行 3.070×10 2865 步骤,而第二种算法将采用 3.994×10 2865 em>步骤。如果这些是简单的CPU指令,那么对于当今的技术来说,这是几个数量级,太大而无法实现。

如果例如 n 通常很小,并且指数算法的“常数因子”较低,那么在实践中,有时使用 O(2 n 算法。但是正如所说的,这实际上取决于算法和输入的细节。