2

I am trying to understand the relation between these classes of languages. Can someone do some order in my way of thinking of this? For example, if i take the language HAMPATH = {: G has a hamiltonion path}. I know this is in NP and also NP hard. Does this teach me anything about being in R, RE coRE? is there any connection between them?

Eyzuky
  • 1,843
  • 2
  • 22
  • 45
  • 1
    I'm voting to close this question as off-topic because it is not a programming question. It is a question about the theory of computation. – Raymond Chen Jul 13 '16 at 15:49
  • Maybe you should ask here: http://cstheory.stackexchange.com/ – pzaenger Jul 13 '16 at 15:50
  • 1
    If you have a word W and a language L, and you can decide whether or not W is in L, then L is Recursive, regardless of the complexity of how to determine whether W is in L (P or NP or otherwise). P/NP/etc are measures of how much time it takes to get to an answer. R/RE/etc are measures of the *possibility* of getting an answer at all. – Welbog Jul 13 '16 at 15:58

1 Answers1

8

All problems in P, NP, and co-NP are decidable, so all of these classes are strict subsets of R. It's known that R is a strict subset of both RE and co-RE and, furthermore, that R = RE ∩ co-RE.

There's a nice intuitive connection between these classes. The definitions of R, RE, and co-RE can essentially be described as

  • R languages are languages that can be decided.
  • RE languages are languages that have verifiers.
  • co-RE languages are languages whose complements are in RE.

The definitions of P, NP, and co-NP are

  • P languages are languages that can be decided in polynomial time.
  • NP languages are languages that have verifiers that run in polynomial time.
  • co-NP languages are languages whose complements are in NP.

In a sense, you can go from one class of languages to the other by adding or removing a polynomial-time restriction. (This also helps explain the containments).

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