问题:给定3个点a , b , c ,任务是检查这三个点是否共线。
说明:问题的一个实例是为问题指定的输入。共线性问题的一个实例是三个点((a x ,a y ),(b x ,b y ),(c x ,c y )) 。由于NP-Complete是一个在NP和NP-hard中都存在的问题,因此证明问题为NP-Complete的陈述的证明包括两部分:
- The problem itself is in NP class.
- All other problems in NP class can be polynomial-time reducible to that.
(B is polynomial-time reducible to C is denoted as B ≤ PC)
如果仅满足第二个条件,则该问题称为NP-Hard 。
但是不可能始终将每个NP问题都简化为另一个NP问题以显示其NP完整性。这就是为什么显示一个问题是NP完全的,证明该问题在NP中并且任何NP-Complete问题都可以解决。因此,可以使用以下命题证明共线性问题是NP-Complete:
共线性问题在NP中:
如果NP中存在任何问题,则给定“证明”,它是问题的解决方案和问题的实例(三个点a , b , c的集合),我们将能够识别(解决方案是否为多项式时间内的正确与否)证书。可以通过检查以下内容来完成:
共线性问题是NP-Hard :
为了证明共线性问题是NP-Hard,请从已知的NP-Hard问题即3-Sum简化为共线性问题。对于在3-萨姆实例每个x,映射从x到(X,X 3)。现在,从3个总和实例(x,y,z)中,我们有((x,x 3 ),(y,y 3 ),(z,z 3 )) 。
以下命题成立:
令集合S具有共线点(x,x 3 ),(y,y 3 ),(z,z 3 )
现在,
=>
=>
=>
=>
=>
因此,(x,y,z)是共线点。这些方程式是可以互换的。
因此,共线性问题是NP-Complete 。