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?
Asked
Active
Viewed 2,495 times
2
-
1I'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
-
1If 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 Answers
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