Answers:
这是一个简单的论证,表明它们是不确定的,即没有算法可以检查给定算法在运行时间或内存使用方面是否最佳。
我们将空白磁带的暂停问题减少到您的运行时最佳性问题。
令为给定的图灵机。令N为以下图灵机:
n M n M n 2 n:在输入
1. 在空白磁带上运行(最多)步。
2.如果不按步停止,则运行大小为的循环,然后返回NO。
3.否则,返回是。
有两种情况:
如果没有在空白磁带上停止,则机器将在输入上运行步。因此其运行时间为。在这种情况下,显然不是最佳的。Ñ Θ (2 Ñ)Ñ Θ (2 Ñ)Ñ
如果在空白磁带上暂停,则对于所有足够大的,机器将以恒定的步数运行,因此运行时间为。在这种情况下,显然是最佳的。N n O (1 )N
简而言之:
此外,给定的代码,我们可以计算的代码。因此,我们可以从空白磁带停止问题减少到运行时最佳问题。如果我们可以确定给定的图灵机是否最优,则可以使用上述减少量来检查给定的机器在空白带上停止。由于无法停止空白磁带,因此您的问题也无法确定。N N M
可以将类似的参数用于空间,即,检查给定的Turing机器在其使用的空间方面是否最优,这也是不确定的。
甚至更强的说法是正确的:我们无法确定给定的可计算函数是否在计算给定的可计算函数的时间复杂度上达到上限。对于空间也是如此。即,即使是基本的复杂性理论也无法通过算法实现自动化(对于复杂性理论家来说,这可以说是个好消息)。
正如其他人提到的,答案是否定的。
但是Blum写了一篇有趣的文章“ 递归函数复杂度的机器无关理论 ”。他证明了有些函数的性质,不管一个程序用来计算这些函数的速度有多快,另一个程序存在来可以更快地计算它们。
一个非常好的财产!
哈!答案是肯定的,我们将生活在另一个世界中。
不幸的是,这是不可能的,实际上我个人认为证明(非平凡的)最优性是计算机科学中最有趣(也是最困难)的问题。据我所知-我很高兴得到纠正-对于任何多项式问题都没有最优结果(除了算法的琐碎最优结果,当然,时间花费与输入大小成正比)。