-1

if we "assume" P not equals NP , this and this suggests NP could be equals to co-NP .

I searched a lot , and went through a lot of materials . I can't seem to quite intuitively understand why this could be true . It would be really helpful if someone can lead me to any resource or help me intuitively understand why this could be true .

Zarif
  • 445
  • 5
  • 12
  • 1
    I’m voting to close this question because it is not a computer programming question. It is a question about the theory of computing. try cs.stackexchange.com. – Raymond Chen Dec 01 '20 at 18:01

2 Answers2

2

Here's one possible intuition, which could be totally misguided given that we haven't yet resolved P versus NP.

The complexity class P can be thought of as all problems for which the following statement is true: there's a boolean function solveProblem such that

  • solveProblem runs in polynomial time in the size of its input,
  • for any input x where the answer is "yes," solveProblem(x) returns true, and
  • for any input x where the answer is "no," solveProblem(x) returns false.

Now, let's look at the definition of NP. It's the set of problems for which the following statement is true: there's a boolean function checkYesAnswer such that

  • checkYesAnswer runs in polynomial time,
  • for any input x where the answer is "yes", there is some y where checkYesAnswer(x, y) returns true, and
  • for any input x where the answer is "no," checkYesAnswer(x, y) always returns false.

The difference between P and NP, then, is that when you're looking at the complexity class P, you're given just the input and need to make a yes/no determination, whereas in the class NP there may be some auxiliary information that helps you make a yes/no decision. That makes the distinction between the definitions of P and NP pretty large - in one case you need to solve the problem, and in the other you need to check whether some auxiliary information helps you.

Now, here's another, equivalent definition of co-NP. The class co-NP consists of all problems where there's a boolean function checkNoAnswer such that

  • checkNoAnswer runs in polynomial time,
  • for any input x where the answer is "yes," checkNoAnswer(x, y) always returns true, and
  • for any input x where the answer is "no," there is a choice of y where checkNoAnswer(x, y) returns true.

In other words, the definitions of NP and co-NP are very closely related to one another, with the only difference being that the branches for "yes" and "no" are swapped. So in that sense, even if PNP, it still could be plausible that NP and co-NP could be equal, since we're basically just flipping the role of the words "yes" and "no."

There's also good reasons to see why NP might not be co-NP. You can think of the distinction between the definitions as follows: with NP, the answer is "yes" if there exists some y with some property, whereas with co-NP the answer is "yes" if for all y something holds. And since the ∃ and ∀ quantifiers work differently, perhaps there's something else going on here.

templatetypedef
  • 362,284
  • 104
  • 897
  • 1,065
-1

If P=NP, then NP=co-NP. The proof for this statement critically depends on the assumption P=NP.

Now if P!=NP, the proof does not work, and so the question whether NP=co-NP remains open. It's as simple as that.

Mo B.
  • 5,307
  • 3
  • 25
  • 42