* Lenguaje decidible (lenguaje recursivo): Un lenguaje l es decidible si existe una máquina de turbio que, para * cada * cadena de entrada w, se detiene y responde correctamente "sí" si w ∈ L y "no" si w ∉ L. Esto significa que el TM siempre se detiene, independientemente de si la entrada está en el lenguaje o no.
* Lenguaje reconocible (lenguaje recursivamente enumerable): Un lenguaje l es reconocible si existe una máquina de turbio que, para * cada * cadena de entrada w, detiene y responde "sí" si w ∈ L. Sin embargo, si w ∉ l, el TM puede detenerse y responder "no" o puede funcionar para siempre (bucle indefinidamente). La clave es que * siempre * da la respuesta correcta ("sí") si la cadena está en el idioma; Solo se permite que no sea determinista o no proporcione una respuesta cuando la cadena es * no * en el idioma.
En términos más simples:
* decidible: El TM siempre da una respuesta definitiva (sí o no) en tiempo finito.
* Reconocible: El TM da una respuesta "sí" en tiempo finito si la entrada está en el idioma, pero podría no dar una respuesta (al bucle para siempre) si la entrada no está en el idioma.
Cada lenguaje decidible también es reconocible. Sin embargo, lo contrario no es cierto; Hay idiomas reconocibles que no son decidibles. El problema de detención es un ejemplo clásico de un lenguaje que es reconocible pero no decidible. Se puede construir un TM que reconoce las cadenas que representan las máquinas de Turing Turing (simula la máquina y responde "sí" si se detiene), pero ningún TM puede decidir si una máquina de Turing arbitraria se detendrá en una entrada dada (porque eso resolvería el problema de detención en sí).
La diferencia se reduce a si el TM garantiza la terminación de todas las entradas (decidibles) o solo garantiza una respuesta "sí" en tiempo finito para las entradas en el idioma (reconocible). La diferencia es fundamental en la teoría de la computabilidad.