0

Backstory: As happens, every now and then, one encounters an idea, prompting the question: Could I use this to prove that NP==P, or vice versa NP!=P So then, today I got to trying to show that NP!=P using the SAT problem.

Defining things: Let's call a specific instance of a SAT circuit an: instance The input to a gate is called: input A gate refers to a logic gate such as AND, OR, XOR, etc.

Assumptions: Showing that there exists a SAT instance that can only be solved with exponential time would prove that NP!=P. Why: This would mean that there are no polynomial time algorithm that could solve this instance, meaning that P and NP can't be the same. How: Showing that the instance grows exponentially AND that everything has to be considered to evaluate the instance

The XOR gate (and similar gates) We have certain gates, e.g. XOR, that requires us to evaluate both inputs, no pruning possible. Regardless if the first input evaluated is true or false, the second input must still be evaluate before knowing if the output of the XOR gate is true or false.

If the input to an XOR gate is known then we can evaluate an XOR gate in constant time. Though if we don't know the input to the XOR gate we must first evaluate those inputs.

Let's now define a block. A block contains a set of arbitrary logic gates (excluding XOR gates), the logic can't be a tautology.

Now let's create an instance that grows exponentially. We have our output node. Connect a block to the output. Let the block's input be a XOR gate with each input connected to another block, giving us two new blocks. Each of the new blocks are now connected to a new XOR gate with blocks as inputs, creating four more blocks. Totaling $2^0 + 2^1 + 2^2$ blocks. Adding more layers of blocks and XOR gates result in continual exponential growth of the tree.

Remember that each XOR gate requires us to evaluate each input (due to its inherent logic). That means we have to evaluate each block, and we have a way to create an exponential amount of blocks.

The only problem left to solve is to remove memoïzation of blocks. This can be achieved by computing unique blocks. This forces us to compute each block and grouping of blocks without being able to create memorization structures.

Conclusion As far as my untrained eye sees, this results is a method to generate an exponentially growing instance where no pruning is possible. This tells me that no polynomial algorithm can solve this problem. Thus NP!=P

NOTE: I've left out the complexity of the block but as far as I see it shouldn't matter. Even if this is only constant we're still growing exponentially without pruning being a possibility.

Simon
  • 15
  • 3

1 Answers1

3

I suspect you have a misunderstanding about what polynomial time and exponential time mean. When we say "polynomial time", we mean "a polynomial in the length of the input" (i.e., in the number of bits it takes to represent the input). If you have a SAT instances whose length is $2^k$ and the running time of an algorithm to check whether it is satisfiable is $2^k$, then that is a polynomial-time algorithm, since $2^k$ is a polynomial function of $2^k$. If the input is very long, polynomial-time algorithms might take a very long time.

See, e.g., https://en.wikipedia.org/wiki/Time_complexity#Polynomial_time, What exactly is polynomial time?, https://stackoverflow.com/a/19647659/781723, Simple (non-mathematical) definition of polynomial time?, Pseudopolynomials and $NP$ problems like $CLIQUE$, Shouldn't every algorithm run in pseudo-polynomial time?.

D.W.
  • 167,959
  • 22
  • 232
  • 500