复杂度为O(n ^ 2/3)的算法图(多项式复杂度):
复杂度为O(20n)的算法图(线性复杂度):
不同复杂程度的优势顺序:
O(1)< O(logn)< O(n)< O(nlogn)< O(n ^ 2)< O(2 ^ n)<为O(n!)
问题:
如果我要在n^2/3
和20n
之上定义两种算法之间的优势顺序,我会对哪一种首先出现感到困惑。
根据不同复杂度的支配顺序,我看到多项式复杂度支配线性复杂度。
订单1 :
O(n ^ 2/3)< O(20N)
但是从图表中我们可以看到,对于O(20n)
,操作次数与元素数量的增长率大于O(n^2/3)
。
订单2 :
O(20n)< O(n ^ 2/3)
我需要澄清订单1 或订单2 中的订单是正确的。
答案 0 :(得分:5)
O(n^b) ⊆ O(n^a) if b <= a
O(20*n) = O(n) = O(n^1)
O(n^(2/3)) ⊆ O(n^1)
关于polynomial time复杂性的几句话
如果某个非负整数
O(n^k)
完成给定输入算法所需的步数为k
,则称算法在多项式时间内是可解的,其中n
为输入的复杂性。
因此,具有O(20*n)
和O(n^(2/3))
时间复杂度的算法都具有多项式时间复杂度。 “线性复杂度”只是多项式的一个子句。