我知道O(NlgN)是线性的。但是什么是O(N ^ m(lgN))?由于多项式部分增长得更快,它会被认为是多项式运行时间吗?
答案 0 :(得分:2)
如果您知道O(n^m log N)
可以描述函数或算法的渐近行为,那么您应该坚持这样做。但是,您可以自然地说,同一函数/算法的时间复杂度的一个上限是多项式时间之一,即:
这是可以接受的,因为渐近行为的Big-O上界不一定是紧的。
现在,假设您有一些算法并且已经找到了O(N^(m+1))
的上渐近界限,但是知道在推导此边界时使用了非常粗糙的工具;即,可能存在更紧密的渐近界限。然而,在进行微积分和分析的十字军之前,你可以问自己:这对我的目的是否足够好? (例如,确保算法不在指数时间内运行)。如果是这样,只需使用你已经得到的一般但可接受的界限。
如果你已经得到了更严格的更好的约束,那么在呈现你的函数或算法的渐近行为时坚持使用该约束可能是最有利的。