Proof that Collinearity Problem is NP Complete

Problem: Given 3 points a, b, c, the task is to check if these three points are collinear.

Explanation: An instance of the problem is an input specified to the problem. An instance of the collinearity problem is three points ((ax, ay), (bx, by), (cx, cy)). Since an NP-Complete is a problem which is both in NP and NP-hard, the proof for the statement that a problem is NP-Complete consists of two parts:

  1. The problem itself is in NP class.
  2. 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)

If the 2nd condition is only satisfied then the problem is called NP-Hard.
But it is not possible to reduce every NP problem into another NP problem to show its NP-Completeness all the time. That is why to show a problem is NP-complete, prove that the problem is in NP and any NP-Complete problem is reducible to that. Thus, it can be verified that the collinearity problem is NP-Complete using the following propositions:

Collinearity Problem is in NP:
If any problem is in NP, then given a ‘certificate’, which is a solution to the problem and an instance of the problem (a collection of three points a, b, c) we will be able to identify(whether the solution is correct or not) certificate in polynomial time. This can be done by checking:



Collinearity problem is NP-Hard:
In order to prove the Collinearity problem is NP-Hard, deduce a reduction from a known NP-Hard problem, that is, 3-Sum to collinearity problem. For each x in the 3-Sum instance, map from x to (x, x3). Now, from 3 Sum instances (x, y, z) we have ((x, x3), (y, y3), (z, z3))
The following propositions hold:

Let set S has collinear points (x, x3), (y, y3), (z, z3)
Now,

=>

=>

=>

=>

=>

Therefore, (x, y, z) are collinear points. These equations are interchangeable.
Therefore, the Collinearity Problem is NP-Complete.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.


Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :