验证NP难度优化问题解决方案的复杂性?

时间:2011-02-28 20:31:01

标签: algorithm complexity-theory lower-bound np

有许多已知为NP难的优化问题,例如旅行商问题,MAX-SAT或找到图的最小色数。鉴于这种问题,我很好奇以下问题的复杂性:

  

鉴于NP难度优化问题和候选解决方案S,S是问题的最佳解决方案吗?

直观地说,似乎这可能是共同NP难的,因为通过猜测更好的解决方案并将其用作见证人来反驳优化问题的答案很容易,但我不知道如何展示这一点。事实上,我真的不知道如何推断这个问题的复杂性。

有谁知道这个决定问题的复杂性有任何好的下限?知道这是否是共同的NP难,PSPACE-hard等会非常有趣。

3 个答案:

答案 0 :(得分:4)

“NP难度优化问题”一词似乎有点过于宽泛,无法找到令人满意的答案。

例如,我无法看出是什么阻止决策问题被视为NP难度优化问题 - 如果你考虑MAX-CNF-SAT问题,解决方案被评为楼层(k / N),其中k是满足子句的数量,N是实例中子句的总数(在多项式时间内可以明显计算),那么在该公式中得到1的任何估值都必须满足整个公式。所以我们假设我们正在最大化楼层(k / N)并称之为FLOOR-CNF-SAT优化问题:)

这意味着您可以将TAUTOLOGY减少到所述优化问题 - 否定输入并将任何解决方案添加为S.您甚至可以添加虚拟变量以确保初始解决方案在FLOOR-CNF-SAT问题中获得0。否定是时间上的多项式。

然后,如果拟议问题的求解器认为S不是最优的,那么必须明确地根据我们的精心设计得出1的估值,从而满足整个公式 - 反过来提供不满足的估值对TAUTOLOGY的原始输入。

通过略微欺骗(使用人工制作的优化问题),我们已经确定了'最优'问题作为共同NP完全,因为TAUTOLOGY很容易显示为共同NP完全。

根据你自己的观点,'最优'决策问题是共同NP难的,因为作为证人,你只需要一个更好的解决方案 - 得分S,得分见证并进行比较。

我对这种减少并不是很好,但我不能轻易改进问题类。如果你需要有任意得分高而不仅仅是{0,1}的实例,我可以使用N * floor(k / N)。如果对于每个K,存在具有至少K个解决方案且所有得分都不同的实例,则对类的改进可以是仅考虑NP-硬优化问题的问题。

我想我仍然可以欺骗我:

考虑减少将N个虚拟变量添加到TAUTOLOGY输入中,如下所示:

d1 && d2 && d3 ... && dN && (S)

其中S是否定输入。作为初始估值,我选择d1,...,dN = false,但作为分数,我给出一个函数,如果前N个子句全为假,则返回2N - 1,否则返回满足子句的数量。如果满足所有条款,这样的函数将仅返回2N,但是可以容易地具有至少N个不同的值。

我担心在评分函数没有一些复杂的规律条件的情况下,这是我们能得到的最好的,除非你认为NP-硬优化问题的定义是'一个问题,给定一个候选解S,我们可以在多项式时间验证S是否是最优的',在这种情况下,'is-optimal'显然是P并且它根本没有乐趣:/

答案 1 :(得分:2)

NP难问题“至少与NP中最难的问题一样难”。

NP难问题的例子:停止问题(程序A是否可以停止?):)

假设你有一个候选解决方案:“不,程序A不能停止”。我们知道,你无法验证它 - 它是不可判断的。

你甚至无法检查“是的,程序A停止” - 因为它可能需要永远,所以它也是不可判断的。

答案 2 :(得分:0)

因为S是候选解决方案;鉴于没有其他S可以证明S比任何其他S更贪婪或更不理想。必须是S当前是问题的最佳解决方案。