Answers:
我们绝对可以证明这些事情。
许多问题的下限都很微不足道,例如,找到一组个数的最小值(无论如何都不进行排序/结构化)至少需要Ω (n )时间。证明很简单:在o (n )时间运行的假设算法无法检查输入中的所有数字。因此,如果我们在某些输入上运行该算法,则可以观察到它从未检查过输入的特定元素。将元素最小化,我们可以使算法失败。
较小的下限是在基于比较的模型中进行排序的下限。证明遵循以下几行:给定n个数字的输入,就有n个!可能的输出(输入可以是排序列表的任何排列,因此输出也可以是输入的任何排列)。如果我们仅限于进行比较,那么我们的算法(平均)需要至少执行log 2(n !)= Ω (n log n )比较,以便能够给出n不同的输出。
下界可能会更强。存在几个指数下界的问题(特别是困难问题)。此类中的问题包括为(通用)国际象棋,跳棋和围棋等游戏计算最佳策略。时间等级理论证明了这一点,该定理指出(受f的某些限制):
给定一个函数,存在一个可以在时间O (f (n ))中解决但不能在时间o (f (n ))中解决的计算问题。。
因此,基本上,如果您可以想到一个函数则存在一个需要花费大量时间才能解决的问题。
最后,另一条不一定证明时间下限但更强大的方法表明问题的不确定性(例如,暂停,发布信函)。
是的,有可能。典型的例子是,任何基于比较的排序算法都需要比较才能对长度为n的列表进行排序。
但是,下限似乎比上限更难证明。为了证明有一个排序算法需要比较,您只需要展示这种算法即可(合并排序– 瞧!)。但是对于下限,您需要以某种方式表明特定类中没有算法可以解决您的问题。这样做的困难是由以下事实说明,我们只知道 大号 ⊆ Ñ 大号 ⊆ P ⊆ Ñ P ⊆ P 小号P 甲Ç È 尽管我们知道,那些夹杂物中的至少一个是严格(大号 ⊂ P 小号P 一ç é通过空间层次定理),大多数人认为他们是所有严格。
另一方面,瑞安·威廉姆斯(Ryan Williams)有一篇不错的论文(而且我已经听过几次),叫做《电路算法》和《算法电路》,他在论文中指出,寻找下限和寻找算法从根本上讲并不是全部那不同。例如,他引用了停止问题的不确定性的证明作为算法(通用图灵机)正好用于证明下界(不确定性)的示例。
但是,问题中有一点需要就下限(或通常的复杂性界限)进行更多说明。
实际上,什么是单个计算步骤的选择是无关紧要的,只要可以将计算步骤视为具有恒定的上限(和下限)即可。复杂度结果将是相同的,因为它被定义为一个常数。将3个比较作为单元操作,或者仅一个比较,没有什么区别。
关于用作评估计算成本的参考的数据大小也是如此。以单个整数或两个整数作为大小单位没有区别。
但是,这两个选择必须相关。
是否可以将某项操作视为具有单位成本与哪些数据可以视为具有单位大小紧密相关。这取决于您为计算模型选择的抽象级别。