该停机问题指出,这是不可能写一个程序,可确定是否存在另一个程序暂停,对于所有可能的输入程序。
但是,我当然可以编写一个可以计算如下程序的运行时间的程序:
for(i=0; i<N; i++)
{ x = 1; }
并返回的时间复杂度,而无需运行它。
对于所有其他输入程序,它将返回一个标志,表明它无法确定时间复杂度。
我的问题是这样的:
必须满足什么条件,以便我们可以算法确定给定程序的时间复杂度?
*如果对此有规范的参考或评论文章,请在评论中提供链接。
1
(1)“ O表示法”并不表示“时间复杂度”。(2)不清楚“ O(无穷大)”是什么意思。请尽可能避免发明新的表示法。(3)决定一个给定的程序是否暂停,并给出一个明确的程序时间复杂度上限是不同的。
—
伊藤刚(Tsuyoshi Ito)
我对在受限类中推断程序的时间复杂度并不熟悉,但是一类值得检查的程序称为“有界循环程序”,可以很容易地限制其时间复杂度。我记得UweSchöning和Randall J.Pruim在《理论计算机科学的宝石》第3章中讨论了两个程序的等效性时讨论了有界循环程序,但是我不确定该章与您的问题有多大的关联。
—
伊藤刚(Tsuyoshi Ito)2012年
我有点困惑。这以什么方式超出范围?OP的问题的一个合理答案是语言片段(甚至片段类别),可以通过算法确定运行时间。
—
Suresh Venkat 2012年
相关问题:是否可以确定P中的运行时边界?
—
Artem Kaznatcheev
我对这个评论话题太迟了。当帖子闻到新手味时,我们似乎会扑鼻。我没有指责。我自己感觉到这种本能。也许我们应该更温柔些。OP承认不熟悉该领域或术语。如果我们只容忍确切知道他们想要什么的人,并以我们的语言提出要求,那么问题解答站点的意义何在?
—
Vijay D