如果我定义多时间函数,则由图灵机在最大多项式(n)时间内计算的函数,其中n是输入的大小。这些函数的类是递归可枚举的吗?
答案 0 :(得分:0)
我很确定答案是肯定的。递归枚举多时间函数的程序必须在某个时刻告诉您解决旅行商问题的函数是否为Poly-time。该特定问题是否可以回答目前仍未解决。
我不知道我用那个可怕的答案吸烟了。如果旅行商问题不是Poly-time,程序就不必发现这个事实。它只是永远不会到处列出任何解决方案。这很容易,因为它永远找不到。
我不清楚的一个重要细节是你如何表示功能,以及你认为什么是独特的功能。
假设函数等于“在Poly-time中运行的程序”并且您希望列出所有程序,无论它们是否产生相同的输出。然后您的答案归结为“如果给定的程序是Poly-时间,是否总能证明这一事实?“这显然是错误的。您可以使用一个程序来搜索聚合时间以获得某些未解决问题的证明,如果找到它,则会在生成最终输出之前浪费指数时间。这个程序是聚合时间,但如果没有证明开放式问题是假的,你就无法证明这一点。
假设您的函数等于“将输入与输出相关联的规则”,并且您不能列出编码相同函数的多个程序。让我们修改先前的病理功能来修改其输出,而不是在发现所述证据时浪费时间。现在你可以证明这个程序是多边形时间,但是你无法证明它是否代表了一个与不进行整个证明步骤(并可能修改其输出)的函数不同的函数。
假设您的函数等于“将输入与输出相关联的规则”,您可以列出编码相同函数但不想要每个函数的多个程序。假设prog
是一个可能或可能不是多边形时间的程序,p(x)
是多项式。编写第二个程序可以很容易地模拟p(x)
步骤的第一个程序,如果另一个程序仍在运行,则会发出一些固定输出。第二个程序保证是聚合时间。实际上,如果prog
是多边形时间,则此形式的某些程序将表示prog
所执行的相同功能,因此输出列表将包括每个可能的多边形函数。 (但是同样的功能将以许多不同的方式编码。)
答案 1 :(得分:0)
嗯,答案似乎是否定,请查看Complexity Class中的图表。
答案 2 :(得分:0)
答案是肯定的,实际上我也在书中找到了证据。 感谢所有人,给了我很多指导:)
答案 3 :(得分:0)
为多项式时间内可计算的所有函数提供枚举相对容易:只需给出所有多项式的枚举pi_j,j为N,然后考虑任何一对(i,j)工作的机器就像图灵机M_i与时钟pi_j。在多项式时间内可计算的任何函数都可以用这种方式表示。
这与理解通用图灵机是否在多项式时间内工作的问题有很大的不同,这是不可判定的。 证明并非完全无关紧要,因为它不是一个扩展属性 程序,我们不能应用赖斯定理。你可以在我的文章“水稻定理的内涵”,POPL 2008(珍珠)中找到证据。
提供诸如P,Pspace等子递归复杂性类的句法特征的问题在文献中受到了很多关注。隐含复杂性的最新领域旨在研究程序的计算复杂性,而不是参考特定的机器模型和时间或内存的显式界限,而是依赖于需要复杂性属性的逻辑或计算原理,通常通过控制使用可用资源。有关此主题的介绍,您可以参考有关隐式计算复杂性的特殊问题,ACM Trans。 COMPUT。 Log。,Vol 10,n.4 2009。
已经获得了限制其他有趣的特征 将编程语言解释为有限域。开创性的 这个领域的结果是Gurevich的旧作品(“可行函数的代数”,FOCS 1983),他证明了在有限结构上解释原始递归函数(相应的递归函数)可以精确地得到对数空间(相应的多项式时间)。 )可计算的函数。
请查看我的文章“通过有限类型计算复杂性”, ACM Trans。 COMPUT。 Log。,Vol 16,n.15 2015,更多参考资料 区域。