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

Posted

技术标签:

【中文标题】验证 NP-hard 优化问题的解决方案的复杂性?【英文标题】:The complexity of verifying solutions to NP-hard optimization problems? 【发布时间】:2011-07-06 01:21:41 【问题描述】:

有许多已知的 NP-hard 优化问题,例如旅行商问题、MAX-SAT 或求图的最小色数。鉴于此类问题,我很好奇以下问题的复杂性:

给定一个 NP-hard 优化问题和一个候选解 S,S 是该问题的最优解吗?

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

有人知道这个决策问题的复杂性有什么好的下限吗?知道这是否是 co-NP 难、PSPACE 难等会非常有趣。

【问题讨论】:

假设优化问题的决策变体是 NP 完全的,您已经概述了验证最优解在 coNP 中的证明。获得硬度结果的最直接途径是从 coNP-hard 问题进行多项式时间多一约简,但这种约简很难找到验证解决方案。我参加了研究生级别的复杂性课程,并认为这适合 ctheory。 如果优化是一个正整数最小化问题(即答案总是一个正整数),你可以使用“IsOptimal”验证器进行二分搜索,所以看起来这将是 NP - 也很难...... @Moron:一定是这样吗?请注意,该问题需要一个实际的候选解决方案,而不仅仅是它的“价值”。 @mhum:我说的是值是解决方案的情况(如色数)。当然你是对的,如果你需要着色,这是行不通的。 @Moron:确实,我将这个问题解释为说色数的“解决方案”指的是实际的颜色,而不仅仅是色数本身。我从提问者使用猜测的解决方案来推断这个问题在 co-NP 中的部分得出了这种解释。 【参考方案1】:

NP-hard 问题“至少和 NP 中最难的问题一样难”。

NP-hard问题示例:停机问题(程序A是否可以停止?):)

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

你甚至不能检查“是,程序 A 停止”——因为它可能需要很长时间,所以它也是不可判定的。

【讨论】:

停机问题不是 NP 难的。它是不可判定的(一般来说)。但是,您如何验证旅行推销员的路线是最小长度?它应该在多项式时间内是可验证的。 我知道,停机问题是无法确定的。我认为,存在包容——我的错误。 如果我错了,请纠正我,但我的印象是停止问题是 NP 难题,因为 NP 中的任何问题都可以在多项式时间内简化为它。您不必在 NP 中成为 NP 难。我错了吗? 要明确的是,NP 和 NP-hard 中的问题是 NP-complete。 呃,停机问题既是不可判定的,也是 NP 难的。它们并不是相互排斥的。【参考方案2】:

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

例如,我看不出是什么排除了将决策问题视为 NP-hard 优化问题的原因 - 例如,如果您考虑 MAX-CNF-SAT 问题,解决方案的评分为 floor(k/N),其中 k 是满足子句的数量,N 是实例中的子句总数(显然可以在多项式时间内计算),那么在该公式中产生 1 的任何估值都必须满足整个公式。所以让我们假设我们正在最大化 floor(k/N) 并将其称为 FLOOR-CNF-SAT 优化问题:)

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

然后,如果所提出问题的求解器认为 S 不是最优的,则显然必须有一个根据我们精心设计的函数产生 1 的估值,因此满足整个公式 - 反过来提供的估值不满足TAUTOLOGY 的原始输入。

通过稍微作弊(使用人为设计的优化问题),我们已经将“最优”问题确定为 co-NP-complete,因为 TAUTOLOGY 很容易证明是 co-NP-complete。

根据您自己的论点,“最优”决策问题是 co-NP-hard,因为作为见证人,您只需要一个更好的解决方案 - 得分 S,给见证人打分并进行比较。

我对这种减少感觉不太好,但我不能轻易改进问题类。如果您要求有得分任意高的实例而不仅仅是 0, 1,我可以只使用 N * floor(k/N)。如果对于每个 K 存在一个实例,该实例至少有 K 个解决方案,这些解决方案的得分都不同,则该类的改进可能是仅将问题视为 NP-hard 优化问题。

我认为我仍然可以通过这种方式作弊:

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

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

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

恐怕在评分函数上没有一些复杂的规律性条件,这是我们能得到的最好的,除非你认为一个 NP-hard 优化问题的定义是“一个问题,给定一个候选解 S,我们可以在多项式时间内验证 S 是否是最优的',在这种情况下,'is-optimal' 显然是 P,而且一点也不好玩:/

【讨论】:

【参考方案3】:

因为 S 是候选解;鉴于没有其他 S 可以证明 S 是贪婪的或比任何其他 S 更不最优。一定是 S 目前是该问题的 MOST 最优解。

【讨论】:

以上是关于验证 NP-hard 优化问题的解决方案的复杂性?的主要内容,如果未能解决你的问题,请参考以下文章

P问题,NP问题,NPC问题,NP-hard问题

P问题NP问题NPC问题和NP-Hard问题,相关概念与题目

P问题NP问题NPC问题和NP-Hard问题,相关概念与题目

NPNPCNP-hard问题的定义

路径优化基于人工蜂群(ABC)算法和粒子群优化算法的组合求解路径优化问题(Matlab代码实现)

NP-Hard问题和NP-Complete问题