I get that if you can do a polynomial time reduction from "every" problem then it proves that the problem is at least as hard as every problem in NP. Except, how do we know that we've discovered every problem in NP? Can't there exist problems that we may not have discovered or proven exist in NP but CANNOT be reduced to any np-complete problem? Or is this still an open question?
3 Answers
As others have correctly stated, the existence of the problem that is NP, but is not NP-complete would imply that P != NP, so finding one would bring you a million dollar and eternal glory. One famous problem that is believed to belong in this class is integer factorization. However, your original question was
Can't there exist problems that we may not have discovered or proven exist in NP but CANNOT be reduced to any np-complete problem?
The answer is no. By definition of NP-completeness, one of two necessary conditions for a problem A to be NP-complete is that every NP problem needs to be reducible in polynomial time to A. If you want to find out how to prove that every single NP problem can be reducible in polynomial time to some NP-complete problem, have a look at the proof of Cook-Levin theorem that states that 3-SAT problem is NP-complete. It was the first proven NP-complete problem and many other NP-complete problems are later proven to be NP-complete by finding the appropriate reduction from 3-SAT to these problems.

- 14,765
- 8
- 58
- 66
-
Thanks! The SAT idea makes it completely sensible. – rb612 Jun 02 '16 at 06:15
NP consists of all problems that could (theoretically) be solved by being able to make lucky guesses, guessing the solution and checking in polynomial time that the solution is correct. For example, the travelling salesman problem "can I visit the capitols of all 50 states of the USA with a trip of less than 9,825 miles" can be solved by guessing a trip and checking that it is not too long.
And one problem in NP is basically simulating a programmable computer circuit with various inputs and checking whether a certain output can be achieved. And that programmable computer circuit is powerful enough to solve all problems in NP.
So yes, we know all about all problems in NP.
(Then of course an NP complete problem can by definition be used to solve any problem in NP. If there is a problem that it cannot solve, that problem is not in NP).

- 51,477
- 5
- 75
- 98
-
Thanks for your answer. Why is it impossible, then, to find an algorithm X that is in NP and an NP complete problem could not be reduced to X? – rb612 May 31 '16 at 20:30
-
@rb612 If there is a problem X in NP but not NP-Complete, then NP-Complete is a proper subset of NP. But Then P cannot equal NP because every problem in P is polynomial-time reducible to every other problem in P. So if P = NP, all problems in NP must be NP-Complete (that is, in NP and polynomial-time reducible to each other). – Patrick87 Jun 23 '16 at 17:26
Except, how do we know that we've discovered every problem in NP?
We don't. The set of all problems in the universe is not only infinite, but uncountable.
Can't there exist problems that we may not have discovered or proven exist in NP but CANNOT be reduced to any np-complete problem?
We don't know that. We suspect that this is the case, but this hasn't been proven yet. If we were to find a NP problem that is not in NP-Complete, it would be proof that P =/= NP.
It is one of the great unsolved problems in CS. Many brilliant minds have been taking a go at it, but this nut has been one tough one to crack.

- 10,331
- 6
- 39
- 55
-
That's so interesting. Could you explain a little more about finding an NP problem that is not NP-complete would be necessarily proof for P=/=NP? Because I thought the only way to prove that P=/=NP is to show that no algorithm ever could possibly solve an NP complete problem in deterministic polynomial time. – rb612 May 31 '16 at 20:27
-
@rb612 If there is a problem X in NP but not NP-Complete, then NP-Complete is a proper subset of NP. But Then P cannot equal NP because every problem in P is polynomial-time reducible to every other problem in P. So if P = NP, all problems in NP must be NP-Complete (that is, in NP and polynomial-time reducible to each other). – Patrick87 Jun 23 '16 at 17:26
-
@Patrick87 thanks! However the accepted answer says that all problems in NP can be reduced to an NP-complete problem. So has it been proven already or is it still unknown? And can you elaborate more on what you mean by "Then P cannot equal NP because every problem in P is polynomial-time reducible to every other problem in P." I don't see how every problem in P reducing to each other shows that P≠NP if NP ⊂ NP-complete. – rb612 Jun 23 '16 at 22:36
-
@rb612 NP-C is, by definition, a subset of NP. P is also a subset of NP, again by definition. If NP contains x not in NP-C, then there exists some problem y in NP such that y cannot be reduced to x in polynomial time (otherwise, x would be NP-C). But if P = NP, x and y are both in P. If x and y are in P then y can be reduced to x in polynomial time by simply ignoring x and using our polynomial-time algorithm for y. So we can't simultaneously have NP-C =/= NP and P = NP. If you could prove the former were true, that proof would prove P =/= NP. – Patrick87 Jun 23 '16 at 22:57