Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between Turing-Decidable and Co-Turing-Decidable

I am really struggling with understanding the difference between these two. From my textbook, it essentially describes the difference by saying

a language is co-turing recognizable if it is complement of a turing-recognizable language.

I guess the part of this definition I don't understand is: what does it mean when it is a complement of a turing-recognizable language?

How exactly do you determine if it is a complement of another language?

like image 376
Jason M. Avatar asked Apr 05 '12 16:04

Jason M.


People also ask

What is the difference between Turing recognizable and Turing decidable?

A language is said to be Decidable if there is a Machine that will accept strings in the language and reject strings not in the language. A Language is called Turing Recognizable if some Turing Machine recognizes it.

How do you know if something is Turing decidable?

Prove that the language it recognizes is equal to the given language and that the algorithm halts on all inputs. To prove that a given language is Turing-recognizable: Construct an algorithm that accepts exactly those strings that are in the language. It must either reject or loop on any string not in the language.

What do you mean by Decidability?

Definition of Decidability A is a decidable language if there exists a Computational Model (such as Turing Machine) M such that for every string w that belong to Σ*, the following two conditions hold: If w belongs to A, then the computation of Turing Machine M on w as input, ends in the accept state.

What is the difference between deciding and recognizing a language?

A TM recognises a language, if it halts and accepts all strings in that language and no others. A Turing machine decides a language if it halts and accepts on all strings in that language, and halts and rejects for any string not in that language.


1 Answers

(A note- the terms "Turing decidable" and "co-Turing decidable" are the same thing. However, "Turing-recognizable" and "co-Turing-recognizable" are not the same, and it's this that I've decided to cover in my answer. The reason for this is that if a language is decidable, then its complement must be decidable as well. The same is not true of recognizable languages.)

Intuitively, a language is Turing-recognizable if there is some computer program that, given a string in the language, can confirm that the string is indeed within the language. This program might loop infinitely if the string isn't in the language, but it's guaranteed to always eventually accept if you give it a string in the language.

While it's true that a language is co-Turing-recognizable if it's the complement of a language that's Turing-recognizable, this definition doesn't shed much light on what's going on. Intuitively, if a language is co-Turing-recognizable, it means that there is a computer program that, given a string not in the language, will eventually confirm that the string is not in the language. It might loop infinitely if the string is indeed within the language, though. The reason for this is simple - if some string w isn't contained within a co-Turing-recognizable language, then that string w must be contained within the complement of that co-Turing-recognizable language, which (by definition) has to be Turing-recognizable. Since w is in the Turing-recognizable complement, there must be some program that can confirm that w is indeed in the complement. This program therefore can confirm that w is not in the original co-Turing-recognizable language.

In short, Turing-recognizability means that there is a program that can confirm that a string w is in a language, and co-Turing-recognizability means that there is a program that can confirm that a string w is not in the language.

Hope this helps!

like image 129
templatetypedef Avatar answered Jan 27 '23 21:01

templatetypedef