我对所遇到的关于优化问题的复杂性的某些术语感到有些困惑。在算法课程中,我遇到了一个大的简约问题,被描述为NP-complete。但是,我不确定在优化问题中术语“ NP完全”的含义。这是否仅表示相应的决策问题是NP完全的?这是否意味着优化问题实际上可能会更困难(也许在NP之外)?
尤其是,我担心这样一个事实,即一个NP完全决策问题可以通过多项式时间验证,而解决相应优化问题的方法似乎并不是多项式时间可验证的。这是否意味着问题并非真正存在于NP中,还是多项式时间可验证性只是NP决策问题的特征?
我对所遇到的关于优化问题的复杂性的某些术语感到有些困惑。在算法课程中,我遇到了一个大的简约问题,被描述为NP-complete。但是,我不确定在优化问题中术语“ NP完全”的含义。这是否仅表示相应的决策问题是NP完全的?这是否意味着优化问题实际上可能会更困难(也许在NP之外)?
尤其是,我担心这样一个事实,即一个NP完全决策问题可以通过多项式时间验证,而解决相应优化问题的方法似乎并不是多项式时间可验证的。这是否意味着问题并非真正存在于NP中,还是多项式时间可验证性只是NP决策问题的特征?
Answers:
尝试部分回答:
从优化算法的角度来看,决策问题已经被调查了一段时间,直到优化问题出现为止。
继承决策问题中的概念时必须小心。可以做到,并且可以给出优化问题的NP完整性的精确概念。看这个答案。当然,它与决策问题的NP完备性不同,但是它基于相同的思想(归约法)。
如果您遇到无法通过可行解决方案进行验证的优化问题,那么您将无能为力。这就是为什么通常认为:
否则,我们没有什么希望可以实现的。
复杂度等级仅包含每个定义的决策问题。因此,其中没有任何优化问题。而基于验证定义的 你提到是针对。我还没有遇到优化问题。
如果您想验证一个解决方案不仅可行,而且是最优的,那么我要说这与解决原始优化问题一样困难,因为为了反驳给定的可行且可能的最优解为非最优方案,您需要必须提供更好的解决方案,这可能需要您找到真正的最佳解决方案。
但这并不意味着优化问题就更难了。请参阅此答案,这当然取决于精确的定义。
大多数优化问题可以归类为P,NP,NP完全等的原因是Kuhn-Tucker条件。我将讨论线性编程问题,但是KTC可以应用于许多其他优化问题。对于每个优化问题,都有一个对偶。如果原始问题的目标是最大化某个功能,则对偶(通常)具有一个最小化的功能。*可行,但对偶问题不可行/无效,对原始问题的解决方案无效/无效;反之, -反之亦然。当且仅当一个解决方案适用于主要和双重解决方案时,这才是两者的最佳解决方案。(从技术上讲,它可能是产生相同结果的大量最佳解决方案之一。)
因此,找到优化问题的最佳解决方案等同于为主要和对偶找到有效解决方案。您可以使用优化算法来找到该解决方案,但是整个过程是存在的证明。