Estoy tratando de entender la existencia de lenguajes no reconocibles. Para obtener esto, necesito saber por qué una máquina Turing reconoce solo un idioma, no varios. ¿Por qué es esto?
Estoy tratando de entender la existencia de lenguajes no reconocibles. Para obtener esto, necesito saber por qué una máquina Turing reconoce solo un idioma, no varios. ¿Por qué es esto?
Respuestas:
El lenguaje reconocido por una máquina de Turing es, por definición, el conjunto de cadenas que acepta. Cuando se da una entrada a la máquina, se acepta o no. Cualquier entrada particular a esa máquina siempre se acepta (en el idioma) o siempre no se acepta (no en el idioma). Por lo tanto, no existe un mecanismo por el cual una sola máquina de Turing pueda aceptar más de un idioma.
Piénselo de esta manera: una TM es como una computadora con un software cargado. Cada software hace una cosa, ¿verdad? Por ejemplo, piense en su computadora y suponga que solo tiene 1 programa cargado. Entonces PC + "photoshop" solo hace photoshop, mientras que PC + "mine sweeper" solo barre las minas.
Entonces, una máquina de Turing es una criatura muy simple, que en cada ejecución obtiene una sola entrada y emite un sí o un no . En qué entradas dice que sí, y en qué dice que no, esto lo establece el "programa" de la TM según lo determinado por sus estados y función de transición. Una vez que estos están arreglados, el "programa" está arreglado, y para cualquier entrada dada solo hay una respuesta: Sí o No (aceptar / rechazar). Esto define exactamente un solo idioma = todas las entradas que producen un Sí cuando se le da a la TM.
Por otro lado, el conjunto de todas las TM es equivalente al conjunto de computadora + "software" con todos los programas posibles. Ahora se pueden decidir más idiomas, pero aún así, cada TM específica decide (o reconoce) solo un idioma.
Turing Machine funciona como lo hacen porque elegimos definirlos así. Podríamos tener definiciones más sofisticadas, pero la pregunta es si serviría un propósito, si nos permitiría hacer más cosas. Y, hasta donde sabemos, la respuesta es no.
Es muy fácil hacer modelos de máquinas de Turing que reconocen dos idiomas. Dados los lenguajes y L 2 , podríamos definir una TM con 2 tipos de estados de aceptación: uno para L 1 y otro para L 2 . Se podría decir que un TM acepta L i si entra en algún punto en un estado de aceptación correspondiente. Pero reanudaría la computación para ver si también puede ingresar al otro tipo de estado de aceptación. Y podríamos requerir que luego se detenga, o posiblemente no. Entonces podría construir toda la teoría en tales máquinas. Funcionaría y sería mucho más complicado de lo que solemos hacer.
Para responder a la declaración de David Richerby de que " no existe un mecanismo por el cual una sola máquina de Turing pueda aceptar más de un idioma ", es solo porque elegimos no considerar tales mecanismos. Incluso si restringe TM al modelo estándar, podría decirse que se reconoce que la entrada está en el lenguaje cuando TM se detiene en un estado de aceptación con un número impar de pasos, y está en L 2 cuando TM acepta con un número par de pasos Gracias al no determinismo, esto no evitaría que la TM reconozca ambos lenguajes que se cruzan.
El punto es que se pueden usar todo tipo de variantes para hacer la teoría. También se han intentado enfoques muy diferentes para modelar lo que es la computación, como el cálculo lambda, la lógica de compilación, la teoría de funciones recursivas y más.
Siempre se ha demostrado que ninguno de ellos hace nada que no pueda hacer nuestro modelo simple donde TM reconoce solo un idioma. Hasta tal punto que se ha conjeturado que hace cualquier cosa que se pueda hacer. Eso se llama la tesis de la Iglesia-Turing . Es la piedra angular de la teoría de la computabilidad, que, hasta donde sabemos, determina qué lenguajes son reconocibles o no.
Por lo tanto, podríamos usar un modelo simple, ya que uno complejo nos hará la vida más difícil, sin ningún beneficio real.
Por supuesto, a veces utilizamos otros modelos porque nos permiten comprender mejor algunos problemas.
Me gustaría ampliar un punto en la respuesta de Richerby:
Cuando se da una entrada a la máquina, se acepta o no.
La razón de esto es que la máquina de Turing es determinista: dada la misma entrada y estado inicial, siempre hará lo mismo cada vez que la ejecute (ya sea que termine en el mismo estado de aceptación o en el mismo estado de rechazo, o realice un bucle para siempre )
Además, podemos demostrar fácilmente que cada máquina Turing reconoce exactamente un idioma:
Supongamos, por contradicción, que una máquina Turing M reconoce dos lenguajes distintos L1 y L2. Como L1 y L2 son distintos, debe existir una cadena S que esté en L1 pero no en L2 (sin pérdida de generalidad; podría ser al revés, pero la prueba procedería de la misma manera a partir de aquí con L1 y L2 intercambiados ) Ahora ejecute M en S. Si acepta, se llega a una contradicción porque S estaría en L2. Si no acepta (rechaza o repite), se llega a una contradicción porque S no estaría en L1.
Una máquina de Turing reconoce un idioma porque esa es la definición de la palabra reconocer : el idioma que reconoce una máquina de Turing es el conjunto de todas las cadenas / entradas que acepta la máquina de Turing.
La respuesta a esto depende de lo que entiendas exactamente cuando te refieres a "máquina de Turing". Hay tres componentes para cualquier modelo computacional (restringido a los decisores / aceptadores aquí):
Para las máquinas de Turing, la sintaxis sería la tupla de conjunto de estados, alfabetos, función de transición, etc. La semántica sería la definición de un cálculo , es decir, cómo aplicar la función de transición para derivar el contenido de la cinta después de algunos pasos. El criterio de aceptación es decir, "cuando esto sucede, nos detenemos y el resultado es ese".
Ahora, ¿las máquinas de Turing son solo sintaxis y semántica para usted, o también incluye el criterio de aceptación? Si hace lo primero, cualquier TM puede aceptar múltiples idiomas usando diferentes criterios de aceptación; incluso puede concebir criterios de aceptación que permitan múltiples idiomas aceptados (piense en TM de dos parámetros, por ejemplo). Sin embargo, si hace lo último, no hay margen de maniobra y el criterio de aceptación habitual permite exactamente un idioma por TM (de este tipo).
La definición habitual y el uso del término en TCS incluye los tres componentes. Eso tiene sentido porque, en particular, cambiar el criterio de aceptación puede cambiar la clase de objetos que el autómata representa drásticamente , por lo que debemos fijar el criterio para saber de qué hablamos.
Como ejemplo, compare autómatas finitos y autómatas Büchi . La sintaxis y la semántica son exactamente iguales, ¡pero una acepta palabras finitas mientras que la otra acepta palabras infinitas!
Intente averiguar qué sucede si conecta el criterio de aceptación de los autómatas de Büchi en la definición de TM.
Ahora, ¿por qué el criterio de aceptación habitual es significativo? Siempre y cuando se limite al lenguaje de cadenas finitas, no cambiará mucho al tener varios idiomas por TM, en el nivel conceptual: aún podremos aceptar el mismo conjunto de idiomas. Entonces nos atenemos al modelo más simple. Sin embargo, eso no quiere decir que un modelo más complicado no pueda ser útil para modelar en aplicaciones, pero eso está más allá del alcance de TCS (que tiene autoridad definitiva).
Un lenguaje es un conjunto de cadenas. ¿No es la unión de dos idiomas L1 y L2 un conjunto de cadenas (llamémoslo L3), y entonces sería otro idioma? Luego, si la máquina Turing reconoce ambos idiomas, reconoce L3, un solo idioma.
ninguna otra respuesta señala la existencia de la (s) Máquina (s) Universal de Turing descrita / descubierta por primera vez por Turing en su prueba de detención. Sí, un TM acepta un único lenguaje recursivamente enumerable, pero el UTM puede reconocer cualquier lenguaje recursivamente enumerable si está codificado en la entrada junto con la cadena de entrada. entonces la pregunta tiene cierta calidad zenlike. Los TM aceptan solo un idioma y todos los idiomas codificables posibles.