访问 oracle将为N P - P中的所有内容提供主要的超多项式加速(假定集合不为空)。但是,尚不清楚P从此oracle访问中可受益多少。当然,P中的加速不能是超多项式,但仍然可以是多项式。例如,是否可以使用S A T oracle来比不使用它来更快地找到最短路径?如何处理一些更复杂的任务,例如子模块函数最小化或线性编程?他们(或P中的其他自然问题)是否将从S A T中受益 甲骨文?
更笼统地说,如果我们可以选择任何问题并为其使用预言,那么P中的哪些问题可以看到提速?
访问 oracle将为N P - P中的所有内容提供主要的超多项式加速(假定集合不为空)。但是,尚不清楚P从此oracle访问中可受益多少。当然,P中的加速不能是超多项式,但仍然可以是多项式。例如,是否可以使用S A T oracle来比不使用它来更快地找到最短路径?如何处理一些更复杂的任务,例如子模块函数最小化或线性编程?他们(或P中的其他自然问题)是否将从S A T中受益 甲骨文?
更笼统地说,如果我们可以选择任何问题并为其使用预言,那么P中的哪些问题可以看到提速?
Answers:
实际上,非确定性图灵机在时间接受时间是O (t log t ) -可以归结为SAT的时间(构造是通过遗忘的模拟,请参阅Arora-Barak),因此通常在任何时候,非确定性图灵机比确定性图灵机快得多,我们将至少看到SAT oracle的加速。
为了更具体,素性测试想到,作为AKS的最佳变型算法出现到的测试素性时刻比特数ø (Ñ 6。但是如果我们去“老派”,普拉特给出了一个不确定的TM来确定时间 O (n 3。可以(确定地)以 O (n 3到SAT实例的时间。
3SUM问题可能是另一个例子,因为似乎可以猜出一个解并在二次时间内检查它,然后可以在二次时间内将这种机器的接受程度降低为SAT。
更一般而言,如果我们可以选择NP-P中的任何问题并为其使用预言,那么P中的哪些问题可以看到提速?
这个问题更直接地体现在将一个问题简化为另一个问题所需的表示形式和时间上。
我想到的主要答案是一个整数/线性编程Oracle。该问题的决策版本是NP完全的。线性编程有一个微不足道的“减少”,因为它是一种特殊情况。但是,仅针对线性编程的Oracle(更不用说ILP)加快了许多可以通过线性编程立即解决的问题。通过将问题重写为LP,可以在线性时间内将它们简化为它。例如,最短路径和其他流动问题,匹配。
但是我不认为ILP绝对不是唯一的一种,人们可能并没有考虑太多,例如减少通往TSP的最短路径等等。
在一个相关的说明(更多,张贴由请求回答的评论),如果不是一个的Oracle一个允许Σ 2小号一个牛逼的Oracle,那么它可以用来寻找最小的电路中的任何问题P(这遵循与Karp-Lipton证明相同的思想)。这将为任何问题提供接近最佳的摊销成本;它只是摊销的原因是,如果你只使用这一次,则大小Σ 2小号一个牛逼你写下公式基本上是原来的聚时间算法的运行时间,但是这一步之后,你再有一个最佳的电路对于大小的所有实例≤ ñ。