Me he encontrado con muchas definiciones de lenguajes recursivos y recursivamente enumerables. Pero no pude entender lo que son.
¿Puede alguien decirme qué son en palabras simples?
fuente
Me he encontrado con muchas definiciones de lenguajes recursivos y recursivamente enumerables. Pero no pude entender lo que son.
¿Puede alguien decirme qué son en palabras simples?
Realmente no. Deberías leer algunos libros. Quizás podamos recomendar algunos.
Dicho esto, un idioma es recursivo si hay una máquina de Turing que siempre puede responder "sí" o "no" si una cadena dada es parte de este idioma. Si levantamos este requisito de decir simplemente "sí" para las cadenas del lenguaje (puede ejecutarse para siempre si no lo es), entonces tenemos un lenguaje recursivamente enumerable. No es difícil ver que un lenguaje recursivo puede ser decidido por una máquina Turing, mientras que un lenguaje recursivamente enumerable puede tener sus cadenas enumeradas (por ejemplo, ejecutando un número infinito de máquinas Turing en paralelo; sí, esto es posible, ver cola de paloma: en todas las cadenas del alfabeto y generar una cadena si la TM correspondiente lo acepta). Hay muchas, muchas definiciones equivalentes.
Un problema es recursivo o decidible si una máquina puede calcular la respuesta.
Un problema es recursivamente enumerable o semidecidible si una máquina puede estar convencida de que la respuesta es positiva.
Un idioma es solo un conjunto de cadenas. Posiblemente de infinita cardinalidad.
Un lenguaje es recursivo enumerable si existe una TM que sigue generando cadenas que pertenecen al idioma (y solo esas cadenas), de modo que eventualmente cada cadena en el idioma estará en la salida.
Un lenguaje es recursivo si la TM anterior no solo genera todas las cadenas en el idioma, sino que también lo hace en orden. (por ejemplo, lexicográficamente).
Estoy seguro de que puedes pensar fácilmente en lenguajes recursivos (y construir una TM que los genere por orden). Es bastante difícil encontrar lenguajes recursivos enumerables (que no sean recursivos), a menos que lea algo más sobre indecidibilidad y diagonalización. Pero tales lenguajes existen.
Los lenguajes recursivos son decidibles por alguna máquina de Turing, es decir, hay una TM que puede, dada cualquier cadena de entrada (sobre el alfabeto apropiado) responder correctamente sí si la cadena está en el idioma, o no si no lo está.
Los idiomas enumerables recursivamente solo se reconocen, es decir, existe una máquina de Turing que acepta cuando la cadena está en el idioma pero puede repetirse para siempre si la cadena no está en el idioma.
fuente
Siento que la principal diferencia entre los lenguajes recursivos y recursivamente enumerables es que la máquina recursiva de Turing se detiene en un estado no final si no acepta una cadena
La máquina de Turing enumerable recursivamente si no acepta una cadena puede detenerse en estado no final o bucle para siempre, lo que no es el caso para los lenguajes recursivos
fuente
==> Un idioma es recursivo si existe una máquina de Turing que acepta cada cadena en el idioma y rechaza si no está en el idioma. por ejemplo, tomemos la máquina Turing M y la cadena w: si la cadena w es miembro de la máquina Turing M, entonces M se detiene en su estado final; de lo contrario, rechaza el cálculo. ==> ==> Un idioma es recursivo enumerable si existe una máquina de Turing que acepta todas las cadenas en el idioma y rechaza si no está en el idioma puede ser bucle para siempre. por ejemplo, tomemos la máquina Turing M y la cadena w: si la cadena w está en el idioma, entonces M se detiene en su estado final. De lo contrario, rechaza el cálculo o puede ejecutarse para siempre.
fuente