如果算法在P中,提取解决方案的有效方法是什么?

时间:2015-05-28 21:56:24

标签: algorithm np

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

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

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

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

1 个答案:

答案 0 :(得分:1)

您无需猜测整个事物然后进行测试。

您可以获得满意的估值(如果存在),如下所示:

选择一个变量,将其设为false,将其从所有子句中删除/删除满意的子句。咨询SAT oracle,它显然在今天的多项式时间内运行。如果它仍然可以满足,很好,保持它。否则必须为真,恢复条款并再次清理条款。没有回溯,只有一个SAT调用每个变量。整个事情仍处于多项式时间。

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