如果算法的时间复杂度为n ^ k
n是元素数,k是一个数值变量,上限为720,下限为1,k独立于n
O(n ^ k)可以称为伪多项式吗?
如果不是,您认为这比O(2 ^ n)好吗?
编辑:
如果k没有上限,可以将O(n ^ k)称为伪多项式吗?
如果不是,您认为这比O(2 ^ n)好吗?
答案 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 )算法。但是正如所说的,这实际上取决于算法和输入的细节。