TRADUCTORES E INTERPRETADORES Clase 15: Tipos de Máquinas de Turing
Agenda Reconocedores vs. Decididores Computadores Enumeradores
Agenda Reconocedores vs. Decididores Computadores Enumeradores No existe en el castellano, pero no importa
Reconocedores vs. Decididores Como vimos la clase pasada, una Máquina de Turing es un autómata aumentado con una cinta que puede recorrerse arbitrariamente.
Reconocedores vs. Decididores Como vimos la clase pasada, una Máquina de Turing es un autómata aumentado con una cinta que puede recorrerse arbitrariamente. Una máquina de Turing puede comportarse de 3 maneras diferentes dada una entrada en particular:
Reconocedores vs. Decididores Como vimos la clase pasada, una Máquina de Turing es un autómata aumentado con una cinta que puede recorrerse arbitrariamente. Una máquina de Turing puede comportarse de 3 maneras diferentes dada una entrada en particular: Terminar su ejecución y Aceptar.
Reconocedores vs. Decididores Como vimos la clase pasada, una Máquina de Turing es un autómata aumentado con una cinta que puede recorrerse arbitrariamente. Una máquina de Turing puede comportarse de 3 maneras diferentes dada una entrada en particular: Terminar su ejecución y Aceptar. Terminar su ejecución y Rechazar.
Reconocedores vs. Decididores Como vimos la clase pasada, una Máquina de Turing es un autómata aumentado con una cinta que puede recorrerse arbitrariamente. Una máquina de Turing puede comportarse de 3 maneras diferentes dada una entrada en particular: Terminar su ejecución y Aceptar. Terminar su ejecución y Rechazar. No terminar su ejecución.
Reconocedores vs. Decididores El lenguaje reconocido por una Máquina de Turing son todas aquellas frases que, al ser usadas como entrada, hacen que la Máquina termine y acepte.
Reconocedores vs. Decididores El lenguaje reconocido por una Máquina de Turing son todas aquellas frases que, al ser usadas como entrada, hacen que la Máquina termine y acepte. Nótese que esta definición no dice nada sobre las frases que no estén en el Lenguaje.
Reconocedores vs. Decididores El lenguaje reconocido por una Máquina de Turing son todas aquellas frases que, al ser usadas como entrada, hacen que la Máquina termine y acepte. Nótese que esta definición no dice nada sobre las frases que no estén en el Lenguaje. En cualquier otro caso la Máquina puede terminar rechazando, pero también puede continuar ejecutándose infinitamente.
Reconocedores vs. Decididores Si una Máquina de Turing termina siempre, entonces decimos que dicha Máquina es un Decididor.
Reconocedores vs. Decididores Si una Máquina de Turing termina siempre, entonces decimos que dicha Máquina es un Decididor. Si una Máquina de Turing puede o no terminar, entonces decimos que dicha Máquina es un Reconocedor.
Reconocedores vs. Decididores Si una Máquina de Turing termina siempre, entonces decimos que dicha Máquina es un Decididor. El Lenguaje cuyas frases hacen que la máquina acepte es el lenguaje decidido por el Decididor. Si una Máquina de Turing puede o no terminar, entonces decimos que dicha Máquina es un Reconocedor. El Lenguaje cuyas frases hacen que la máquina acepte es el lenguaje reconocido por el Reconocedor.
Reconocedores vs. Decididores La clase de Lenguajes para los cuales existe un Decidor que los decida, se denominan: RECURSIVOS
Reconocedores vs. Decididores La clase de Lenguajes para los cuales existe un Decidor que los decida, se denominan: RECURSIVOS La clase de Lenguajes para los cuales existe un Reconocedor que los reconozca, se denominan: RECURSIVAMENTE ENUMERABLES
Reconocedores vs. Decididores Se le ocurre algún Lenguaje Recursivo?
Reconocedores vs. Decididores Se le ocurre algún Lenguaje Recursivo? Todos los Lenguajes Regulares son Recursivos. Todos los Lenguajes Libres de Contexto son Recursivos.
Reconocedores vs. Decididores Se le ocurre algún Lenguaje Recursivo? Todos los Lenguajes Regulares son Recursivos. Todos los Lenguajes Libres de Contexto son Recursivos. p { 1 p es primo}
Reconocedores vs. Decididores Se le ocurre algún Lenguaje Recursivo? Todos los Lenguajes Regulares son Recursivos. Todos los Lenguajes Libres de Contexto son Recursivos. p { 1 p es primo} { w n w { a, b} * n 0}
Reconocedores vs. Decididores Se le ocurre algún Lenguaje Recursivo? Todos los Lenguajes Regulares son Recursivos. Todos los Lenguajes Libres de Contexto son Recursivos. p { 1 p es primo} { w n w { a, b} Y muchos otros * n 0}
Reconocedores vs. Decididores Se le ocurre algún Lenguaje Recursivo? Todos los Lenguajes Regulares son Recursivos. Todos los Lenguajes Libres de Contexto son Recursivos. p { 1 p { w n es primo} w { a, b} Y muchos otros * n 0} Se les ocurre algún Lenguaje Recursivamente Enumerable? Y que no sea Recursivo también?
Reconocedores vs. Decididores Se le ocurre algún Lenguaje Recursivo? Todos los Lenguajes Regulares son Recursivos. Todos los Lenguajes Libres de Contexto son Recursivos. p { 1 p { w n es primo} w { a, b} Y muchos otros * n 0} Se les ocurre algún Lenguaje Recursivamente Enumerable? Y que no sea Recursivo también? El problema de la parada
Se les ocurre algún Lenguaje que NO sea Recursivamente Enumerable?
Se les ocurre algún Lenguaje que NO sea Recursivamente Enumerable? El complemento del problema de la parada (pertenece a la clase de Lenguaje Co-Recursivamente Enumerables)
Se les ocurre algún Lenguaje que NO sea Recursivamente Enumerable? El complemento del problema de la parada (pertenece a la clase de Lenguaje Co-Recursivamente Enumerables) Habrá algún Lenguaje que no sea Recursivamente Enumerable, ni Co-Recursivamente Enumerable?
Se les ocurre algún Lenguaje que NO sea Recursivamente Enumerable? El complemento del problema de la parada (pertenece a la clase de Lenguaje Co-Recursivamente Enumerables) Habrá algún Lenguaje que no sea Recursivamente Enumerable, ni Co-Recursivamente Enumerable? Conjuntos incontables al rescate!
Computadores Dado que las Máquinas de Turing pueden aceptar o rechazar, independientemente del contenido final de su cinta Por qué no usar el estado final de la cinta para describir algo útil? Por ejemplo, para calcular el resultado de una función.
Computadores Dado que las Máquinas de Turing pueden aceptar o rechazar, independientemente del contenido final de su cinta Por qué no usar el estado final de la cinta para describir algo útil? Por ejemplo, para calcular el resultado de una función. Si la función calculada siempre arroja un resultado (la máquina siempre termina), se dice que la función es computable.
Computadores Dado que las Máquinas de Turing pueden aceptar o rechazar, independientemente del contenido final de su cinta Por qué no usar el estado final de la cinta para describir algo útil? Por ejemplo, para calcular el resultado de una función. Si la función calculada siempre arroja un resultado (la máquina siempre termina), se dice que la función es computable. A la máquina que computa una función se le llama Computador.
Computadores Generalmente, los Computadores utilizan al menos dos cintas. Una cinta de entrada. Una cinta de salida.
Computadores Generalmente, los Computadores utilizan al menos dos cintas. Una cinta de entrada. Una cinta de salida. De todas formas, vimos que una Máquina de Turing de varias cintas es equivalente a una Máquina de Turing de una sola cinta.
Computadores Un momento Las Máquinas de Turing sirven para reconocer Lenguajes. Pero ahora vemos que también sirven para computar funciones. Computar funciones es equivalente a reconocer lenguajes?
Computadores Un momento Las Máquinas de Turing sirven para reconocer Lenguajes. Pero ahora vemos que también sirven para computar funciones. Computar funciones es equivalente a reconocer lenguajes? De aquí unos de los principios mas importantes de la computación TODO ES UN LENGUAJE! (Clase 0)
Computadores Toda solución a un problema en particular tiene una codificación. Resolver un problema es equivalente a conseguir un conjunto de codificaciones válidas para el mismo.
Computadores Toda solución a un problema en particular tiene una codificación. Resolver un problema es equivalente a conseguir un conjunto de codificaciones válidas para el mismo. Por ejemplo: Es G un grafo planar? Pertenece la codificación de G al conjunto de codificaciones de grafos, tal que los mismos son planares?
Computadores Toda solución a un problema en particular tiene una codificación. Resolver un problema es equivalente a conseguir un conjunto de codificaciones válidas para el mismo. Por ejemplo: Es G un grafo planar? Pertenece la codificación de G al conjunto de codificaciones de grafos, tal que los mismos son planares? Conclusión: Reconocer lenguajes es equivalente a resolver problemas.
Computadores Ejemplo: Dado un número en binario, calcular su sucesor:
Computadores Ejemplo: Dado un número en binario, calcular su sucesor: Se recorre la frase de entrada hasta alcanzar un blanco, copiando el contenido de la cinta de entrada en la cinta de salida.
Computadores Ejemplo: Dado un número en binario, calcular su sucesor: Se recorre la frase de entrada hasta alcanzar un blanco, copiando el contenido de la cinta de entrada en la cinta de salida. Se retrocede una casilla en ambas cintas.
Computadores Ejemplo: Dado un número en binario, calcular su sucesor: Se recorre la frase de entrada hasta alcanzar un blanco, copiando el contenido de la cinta de entrada en la cinta de salida. Se retrocede una casilla en ambas cintas. Si la casilla apuntada es 0 o, se coloca un 1 y la Máquina acepta.
Computadores Ejemplo: Dado un número en binario, calcular su sucesor: Se recorre la frase de entrada hasta alcanzar un blanco, copiando el contenido de la cinta de entrada en la cinta de salida. Se retrocede una casilla en ambas cintas. Si la casilla apuntada es 0 o, se coloca un 1 y la Máquina acepta. Si la casilla apuntada es un 1, se coloca un cero y se retrocede una casilla.
Computadores Ejemplo: Dado un número en binario, calcular su sucesor: Se recorre la frase de entrada hasta alcanzar un blanco, copiando el contenido de la cinta de entrada en la cinta de salida. Se retrocede una casilla en ambas cintas. Si la casilla apuntada es 0 o, se coloca un 1 y la Máquina acepta. Si la casilla apuntada es un 1, se coloca un cero y se retrocede una casilla. El autómata les queda de ejercicio a ustedes.
Enumeradores Los Lenguajes Recursivamente Enumerables deben su nombre a que sus frases pueden enumerarse. Esto es, es posible realizar una biyección de dicho Lenguaje con un subconjunto de los números naturales.
Enumeradores Los Lenguajes Recursivamente Enumerables deben su nombre a que sus frases pueden enumerarse. Esto es, es posible realizar una biyección de dicho Lenguaje con un subconjunto de los números naturales. Esto también induce un orden sobre las frases del Lenguaje.
Enumeradores Los Lenguajes Recursivamente Enumerables deben su nombre a que sus frases pueden enumerarse. Esto es, es posible realizar una biyección de dicho Lenguaje con un subconjunto de los números naturales. Esto también induce un orden sobre las frases del Lenguaje. Una Máquina de Turing que genere cada frase de un Lenguaje, en algún determinado orden, se conoce como un Enumerador.
Enumeradores Los Reconocedores y Decididores, cuando aceptan o rechazan, ignoran el estado actual de la cinta.
Enumeradores Los Reconocedores y Decididores, cuando aceptan o rechazan, ignoran el estado actual de la cinta. Los Computadores, cuando aceptan o rechazan, dejan en la cinta información de utilidad que puede ser consultada luego.
Enumeradores Los Reconocedores y Decididores, cuando aceptan o rechazan, ignoran el estado actual de la cinta. Los Computadores, cuando aceptan o rechazan, dejan en la cinta información de utilidad que puede ser consultada luego. Los Enumeradores, pueden terminar o no, pero en todo momento, la información de la cinta es relevante y puede ser consultada.
Enumeradores Los Reconocedores y Decididores, cuando aceptan o rechazan, ignoran el estado actual de la cinta. Los Computadores, cuando aceptan o rechazan, dejan en la cinta información de utilidad que puede ser consultada luego. Los Enumeradores, pueden terminar o no, pero en todo momento, la información de la cinta es relevante y puede ser consultada. Es útil una Máquina que nunca termine?
Enumeradores Generalmente, los Enumeradores utilizan al menos tres cintas. Una cinta de entrada. Una cinta de trabajo. Una cinta de salida.
Enumeradores Generalmente, los Enumeradores utilizan al menos tres cintas. Una cinta de entrada. Una cinta de trabajo. Una cinta de salida. La cinta de salida siempre es relevante, por lo que los cálculos intermedio deben hacerse en la cinta de trabajo. La cinta de salida contiene los elementos del lenguaje que se desea enumerar, separados por algún símbolo adicional.
Enumeradores Ejemplo: Enumerar todos los números binarios que son primos.
Enumeradores Ejemplo: Enumerar todos los números binarios que son primos. Se pueden usar máquinas ya hechas y componerlas: Computador que sabe generar sucesores. Decididor para el Lenguaje de los números primos.
Enumeradores Ejemplo: Enumerar todos los números binarios que son primos. Se pueden usar máquinas ya hechas y componerlas: Computador que sabe generar sucesores. Decididor para el Lenguaje de los números primos. Se comienza con la frase 10 en la cinta de trabajo.
Enumeradores Ejemplo: Enumerar todos los números binarios que son primos. Se pueden usar máquinas ya hechas y componerlas: Computador que sabe generar sucesores. Decididor para el Lenguaje de los números primos. Se comienza con la frase 10 en la cinta de trabajo. Repetir: Decidir si la frase en la cinta de trabajo corresponde a un número primo. Si es primo, copiar a la cinta de salida junto con un separador. Generar el sucesor y reemplazarlo en la cinta de trabajo.
Enumeradores En conclusión, hay diferentes tipos de Máquina de Turing, diseñadas para cumplir diferentes propósitos.
Enumeradores En conclusión, hay diferentes tipos de Máquina de Turing, diseñadas para cumplir diferentes propósitos. Resolver problemas algorítmicos viene a ser un caso particular de reconocimiento de Lenguajes.
Enumeradores En conclusión, hay diferentes tipos de Máquina de Turing, diseñadas para cumplir diferentes propósitos. Resolver problemas algorítmicos viene a ser un caso particular de reconocimiento de Lenguajes. Esto clasifica los problemas como se clasifican los Lenguajes? Estudiar esta relación nos lleva al tema de la complejidad de algoritmos.
Enumeradores En conclusión, hay diferentes tipos de Máquina de Turing, diseñadas para cumplir diferentes propósitos. Resolver problemas algorítmicos viene a ser un caso particular de reconocimiento de Lenguajes. Esto clasifica los problemas como se clasifican los Lenguajes? Estudiar esta relación nos lleva al tema de la complejidad de algoritmos. Comenzaremos a estudiarlo la clase que viene
Enumeradores En conclusión, hay diferentes tipos de Máquina de Turing, diseñadas para cumplir diferentes propósitos. Resolver problemas algorítmicos viene a ser un caso particular de reconocimiento de Lenguajes. Esto clasifica los problemas como se clasifican los Lenguajes? Estudiar esta relación nos lleva al tema de la complejidad de algoritmos. Comenzaremos a estudiarlo la clase que viene Insensibles u_u Estas son las máquinas maaaaas bonitas que he implementado