【问题标题】:If algorithm in P, efficient way to extract solutions?如果 P 中的算法,提取解决方案的有效方法是什么?
【发布时间】:2015-05-28 21:56:24
【问题描述】:

也许这很明显,但是如果我们在 P 中有一个算法(所以这个算法在多项式时间内给出是/否的答案),除了猜测和检查之外,有没有更有效的方法来找到解决方案?

所以,假设 SAT 在 P 中(我知道这是一个 NP 完全问题,但这似乎是我要问的最好的例子)。这意味着有一个多项式时间算法会根据给定的输入是否可满足来告诉您是或否。

似乎应该有一种有效的方法来查找/提取这个令人满意的任务(而不是仅仅知道它存在,如果有的话)。但是,我想不出任何有效的方法来利用这种多时间算法来找到这样的分配。

** 旁注 ** 对于最大化/最小化(例如背包)问题,我知道您可以使用二分搜索来找到您的解决方案,但我的问题更涉及这些非最大化类型的问题,例如 SAT

【问题讨论】:

  • 请参阅function problems 上的 wiki,特别是函数 SAT 到决策版本的自还原性。由于 SAT 是 NP 完全的,这意味着如果 P=NP,那么我们可以有效地解决决策版本在 NP 中的所有函数问题。

标签: algorithm np


【解决方案1】:

您不必猜测整个事情然后进行测试。

您可以像这样获得令人满意的估值(如果存在):

选择一个变量,使其为假,从所有子句中删除它/删除满意的子句。参考 SAT 预言机,它显然是在今天的多项式时间内运行的。如果它仍然令人满意,那好吧,保持它。否则必须为真,恢复子句并再次清理子句。没有回溯,每个变量只有一次调用 SAT。整个事情还在多项式时间内。

或者,如果这就是您的想法,那么,就是这样。但这真的很重要吗?多项式时间就是多项式时间,无论如何这在实践中是不可用的,所以挂钟时间几乎不是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2018-04-02
    • 2017-11-19
    相关资源
    最近更新 更多