Computer science 是什么使NP难问题不是NP完全问题?

Computer science 是什么使NP难问题不是NP完全问题?,computer-science,theory,complexity-theory,np,Computer Science,Theory,Complexity Theory,Np,我对NP难问题感到困惑。 有些NP难问题在NP中,称为NP完全问题,有些则不在NP中。 例如:停止问题只是NP难问题,不是NP完全问题。 但为什么它不是NP完全的呢?我的意思是,一个问题应该符合什么属性 “NP难但不是NP完全问题”?NP难只是指“至少和NP中的问题一样难”。NP完全是指“在NP中,所有的NP完全问题都可以归结为这个问题,这个问题也可以归结为所有的NP完全问题” 这可能是一个很好的起点,因为它专门将停顿问题作为其例证之一进行了讨论。我认为最短的答案是:NP完全=NP难且在NP中

我对NP难问题感到困惑。
有些NP难问题在NP中,称为NP完全问题,有些则不在NP中。
例如:停止问题只是NP难问题,不是NP完全问题。
但为什么它不是NP完全的呢?我的意思是,一个问题应该符合什么属性
“NP难但不是NP完全问题”?

NP难只是指“至少和NP中的问题一样难”。NP完全是指“在NP中,所有的NP完全问题都可以归结为这个问题,这个问题也可以归结为所有的NP完全问题”


这可能是一个很好的起点,因为它专门将停顿问题作为其例证之一进行了讨论。

我认为最短的答案是:NP完全=NP难且在NP中

因此,要证明一个问题是NP完全的,你必须证明它既是NP难的,又是NP中的。通常,显示问题在NP中是非常容易的(只需给出一个非确定性多项式时间算法)。证明一个问题是NP难问题是很难的。因此,即使在证明NP完备性的过程中,大多数证明都致力于证明NP的硬度


至于停顿问题,它不在NP中,因此不是NP完全。

定义NP的事实是,你可以在多项式时间内验证NP问题的解。因此,如果一个问题是NP难的,但不是NP完全的,你就不能在理论上及时地验证问题的解决方案。如果你看一下停顿问题,这是有道理的。解决方案是“是”或“否”,您只能通过再次解决原始问题来验证,这意味着它不在NP中。

简短回答:唯一不属于NP完全的NP难问题是那些不属于NP的问题

长答案:

为什么呢?让我们仔细看看NP完全和NP难的定义:

问题X是NP完全的,如果:

  • 它是NP

  • NP中的每一个问题在多项式时间内都可化为X

  • 如果问题X满足(2)((1)不是必要条件),则它是NP难问题

    从这些定义中可以明显地得出结论,唯一的NP难但不是NP完全的问题是NP之外的问题

    例如,所有不是决策问题的NP难问题都不是NP完全问题(因为NP根据定义是由决策问题构成的)。特别是,旅行推销员问题的搜索版本:给定一个城市列表及其成对距离,任务是找到每个城市只访问一次并返回原始城市的最短可能路线

    TSP的搜索版本被证明是NP难的,但由于它不是一个决策问题(你不能通过回答问题的是或否来解决),它不是NP的一部分,因此不可能是NP完全的


    停顿问题是一个决策问题,但它在多个时间段内是不可验证的(问题定义为NP的第二个要求),这就是为什么它不能是NP完全的。

    你可以找到这个使用站点:它已经;-)我不是建议迁移,只是读了一些有趣的文章。我读了维基百科的文章,但不太明白。我的意思是“至少和NP中的问题一样难”还有什么?此外,NP-hard问题也满足这种约化性质。所有NP-complete问题都是NP-hard的,一些NP-hard问题比NP-complete更难(也就是说,它们至少和NP-complete问题一样难,但不可转换为NP-complete问题或从NP-complete问题转换为NP-hard问题)。