时间复杂度混淆的下限

时间:2016-07-07 18:05:53

标签: c++ time-complexity big-o

是否有可能证明存在排序列表的任何基于比较的搜索算法的时间复杂度的下限?换句话说,任何算法都将排序列表和元素作为输入并输出列表中元素的索引(如果出现)是否必须采取一定数量的步骤?

1 个答案:

答案 0 :(得分:1)

执行您建议的特定算法的可接受方法是二进制搜索https://en.wikipedia.org/wiki/Binary_search_algorithm,其平均时间复杂度为O(log N)。正如上面的评论中所指出的,这种算法和很多类似的算法可以在完美的情况下一步完成。

一般来说,证明算法是优化的是一个难题,它涉及对算法进行分类或对平凡性的吸引力。您可以在此处找到更多信息:

https://cstheory.stackexchange.com/questions/1284/problems-that-can-be-used-to-show-polynomial-time-hardness-results

下面:

https://cstheory.stackexchange.com/questions/2038/what-techniques-are-used-for-proving-algorithms-optimal

在这里:

https://www.quora.com/Is-there-any-known-way-to-prove-that-an-algorithm-is-optimal