MÁQUINAS DE TURING Teoría del Autómata. Definición Definimos una máquina de Turing como una 7-tupla M = (Q, , , s, b, F,  ), donde Q es un conjunto.

Slides:



Advertisements
Presentaciones similares
INSTITUTO TECNOLÓGICO DE MINATITLÁN
Advertisements

Gramáticas, lenguajes y reconocedores
Gramáticas.
Máquinas de Turing (MT)
TIPOS DE GRAMATICAS JERARQUIAS DE CHOMSKY
4. Máquinas de Turing 4.1. Modelo básico.
EJERCICIOS DE EXPRESIONES REGULARES Y AUTOMATAS
CLASIFICACION DE LAS MAQUINAS DE TURING
Tema 2 Lenguajes Formales.
Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.
Lenguajes Independientes del Contexto
Autómatas de Pila Teoría del Autómata.
Teoría de lenguajes y compiladores
Tema 2 Autómatas finitos 1. Autómata finito determinista
Lenguajes regulares Teoría del Autómata.
Teoría de lenguajes y compiladores Analizadores lexicográficos
MÁQUINAS DE TURING Teoría del Autómata.
COMPUTABILIDAD Y COMPLEJIDAD 1. Conceptos básicos (revisión). 2. Gramáticas independientes de contexto. 3. Propiedades de los lenguajes independientes.
Tomado de Sudkamp: Languages and Machines Cap. 6.
Lenguajes Formales y Autómatas
AUTÓMATA LINEALMENTE ACOTADO
Autómatas de Pila (Pushdown Automatón)
Teoría de lenguajes y compiladores
I.- ESTUDIO DE LOS LENGUAJES DE PROGRAMACIÓN.
LENGUAJES GRÁMATICAS Y AUTÓMATAS
Centro Universitario Valle de México Gramáticas Libres de Contexto Dra. Maricela Quintana López Elaborado por: Autómatas y Lenguajes Formales.
Introducción al cálculo lambda Programación lógica funcional.
Teoría de la computación DECIBILIDAD Equipo 4 Karla Flores Samuel rojas Filiberto Jiménez.
LOGICA Y MATEMATICA COMPUTACIONAL Profesora Responsable: Esp. Prof. Liliana Caputo.
Autómatas finitos (AF) Los AF constan de 5 elementos fundamentales AF=( , E, F, s,  ).  Un alfabeto (  )  Un conjunto de estados (E)  Un conjunto.
Universidad Cesar Vallejo ALFA-UCV Teoría de Conjuntos.
1 Autómatas de pila (Pushdown automata). 2 Autómata de conteo Autómata finito determinista con un contador de enteros o “bolsa” en la que se colocan o.
LENGUAJES FORMALES, AUTOMATAS Y MAQUINAS DE ESTADOS FINITOS
Fundamentos de la Computación
CONJUNTOS Álgebra Superior
DISTRIBUCIONES EN EL MUESTREO
Fundamentos de programación
Estructuras de Datos Recursividad.
5. Fundamentos de algoritmos
Computación Valeria Herskovic –
Básicos de Autómatas.
5. Análisis y diseño de sistemas secuenciales (II)
UNIVERSIDAD ALONSO DE OJEDA FACULTAD DE CIENCIAS ADMINISTRATIVAS
Definición operacional de trabajo
Antidiferenciación A la operación inversa de la diferenciación se le llama antidiferenciación. El procedimiento que implica a la antidiferenciación,
EJERCICIOS DE EXPRESIONES REGULARES Y AUTOMATAS
AUTOMATAS FINITOS DETERMINISTICOS
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA
CAPACIDAD DE DETECCION Y CORRECCION DE ERRORES
EJERCICIOS DE EXPRESIONES REGULARES Y AUTOMATAS 1.α + (β + γ) = (α + β) + γ 2.α + β = β + α 3.α + Ø = α 4.α + α = α 5.α · λ = α 6.α · Ø = Ø 7.α · (β ·
Desigualdades e Inecuaciones
Tema 2 Autómatas finitos 1. Autómata finito determinista
Máquinas de Turing.
Metodología de la Programación
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018
TEORÍA DE CONJUNTOS.
Tomado de Sudkamp: Languages and Machines Cap. 5.
CONJUNTOS Álgebra Superior
.- Es fácil observar que cuantos más puntos dibujamos sobre una recta, más segmentos diferentes se determinan. ____|_______|_____ Dos puntos (A y B)
2/22/2019 SISTEMAS NO LINEALES.
Escuela Nacional de Antropología e Historia (ENAH)
Escuela Nacional de Antropología e Historia (ENAH)
2/23/2019 TRAZADOR CUBICO SPLINE.
EJERCICIOS DE EXPRESIONES REGULARES Y AUTOMATAS 1.α + (β + γ) = (α + β) + γ 2.α + β = β + α 3.α + Ø = α 4.α + α = α 5.α · λ = α 6.α · Ø = Ø 7.α · (β ·
¿Cómo nos comunicamos?.
CAPACIDAD DE DETECCION Y CORRECCION DE ERRORES
AUTÓMATAS ROHERMY OCHOA V AUTÓMATA FINITO Es un modelo computacional que realiza cómputos en forma automática sobre una entrada para producir.
AUTOMATAS GENERALIDADES AUTOR: MARIA FERNANDA DUARTE PORTUGAL C.I. : ASIGNATURA : ESTRUCTURA DISCRETA Y GRAFOS CARRERA: ING, EN SISTEMAS MAYO 2019.
Tipos de Automas Realizado por : Henry Alberto Rangel Vargas C.I
Automata de Pila
Transcripción de la presentación:

MÁQUINAS DE TURING Teoría del Autómata

Definición Definimos una máquina de Turing como una 7-tupla M = (Q, , , s, b, F,  ), donde Q es un conjunto finito de estados  es un alfabeto de entrada  es un alfabeto llamado alfabeto de la cinta s  Q es el estado inicial b   es el símbolo blanco F  Q es el conjunto de estados finales o de aceptación d: Q    Q    {L, R} es una función parcial que se llama función de transición

La cinta La máquina de Turing posee una cinta dividida en celdas, cada celda es capaz de almacenar un símbolo. Además posee una cabeza lectora/escritora que lee y escribe un símbolo en la cinta. Inicialmente la cinta contiene b en todas sus celdas. La función de transición  transforma pares (q,  ) en ternas de la forma (p, t, X), donde p es el siguiente estado, t es el símbolo escrito en la cinta y X es el movimiento de la cabeza lectora/escritora, que puede ser L o R. ab b Posición de la cabeza lectora/escritora Estado interno q 1  (q 1, a) = (q 5, b, R) bb b Posición de la cabeza lectora/escritora Estado interno q 5

Representación instantánea Se puede dar una descripción instantánea de la máquina de Turing similar a la de los ADPND, para la transición anterior sería (q 1, abb) ├─ (q 5, bbb) el carácter subrayado indica la posición de la cabeza lectora/escritora. Otra posibilidad es anteponer el estado actual al carácter señalado por la cabeza lectora/escritora como se muestra q 1 abb ├─ bq 5 bb

Máquinas de Turing como aceptadores de lenguajes Sea M = (Q, , , s, b, F,  ) una máquina de Turing. Entonces el lenguaje aceptado por M es L(M) = {w   * | q 1 w ├─* w 1 pw 2 para p  F y w i   *} Los lenguajes aceptados por las máquinas de Turing se conocen como lenguajes recursivamente enumerables. Una cadena puede rechazarse por una máquina de Turing si se termina de procesarla en un estado de no aceptación. Otra forma es rechazarla al entrar en un bucle infinito.

Ejemplo El lenguaje regular a* es aceptado por la máquina Q = {q 1, q 2 }, s = q 1, F = {q 2 },  (q 1, a) = (q 1, a, R) y  (q 1, #) = (q 2, #, R) También puede se aceptar por la máquina: Q = {q 1, q 2, q 3 }, s = q 1, F = {q 3 },  (q 1, a) = (q 1, a, R)  (q 2, a) = (q 2, a, R)  (q 1, b) = (q 2, b, R)  (q 2, b) = (q 2, b, R)  (q 1, #) = (q 3, #, R)  (q 2, #) = (q 2, #, R)

Ejemplo El lenguaje a n b n es aceptado por la máquina Q = {q 1, q 2, q 3, q 4, q 4 }, s = q 1, F = {q 5 }  (q 1, a) = (q 2, c, R)  (q 2, d) = (q 2, d, R)  (q 2, a) = (q 2, a, R)  (q 2, b) = (q 3, d, L)  (q 3, d) = (q 3, d, L)  (q 3, a) = (q 3, a, L)  (q 3, c) = (q 1, c, R)  (q 1, d) = (q 4, d, R)  (q 4, d) = (q 4, d, R)  (q 4, #) = (q 5, #, L)

Ejemplo El siguiente grafo muestra una máquina de Turing transforma una cadena de la forma a n ba m en a n+m b mediante la siguiente función de transición:  (q 1, a) = (q 1, a, R)  (q 1, b) = (q 2, a, R)  (q 2, a) = (q 2, a, R)  (q 2, #) = (q 3, #, L)  (q 3, a) = (q 4, b, L)  (q 4, a) = (q 4, a, L)  (q 4, #) = (q 5, #, R)

Maquinas de Turing y lenguajes Una máquina de Turing que acepta un lenguaje no necesita detenerse para cualquier cadena de entrada, solo para las que pertenecen al lenguaje. Hay lenguajes RE para los cuales ninguna máquina de Turing que los acepte para con todas las entradas. La subclase de lenguajes que son aceptados al menos por una máquina de Turing que para con toda cadena de entrada se llaman lenguajes recursivos.

Funciones Turing computables Se dice que una función de cadena f e sTuring computable si existe una máquina de Turing M = (Q, , , q 1, #, F,  ) para la cual q 1 w |–* q f u para algún q f  F, cuando f (w) = u. La función f (m, n) = m + n se puede implementar con  (q 1, a) = (q 1, a, R)  (q 3, a) = (q 4, b, L)  (q 1, b) = (q 2, a, R)  (q 4, a) = (q 4, a, L)  (q 2, a) = (q 2, a, R)  (q 4, #) = (q 5, #, R)  (q 2, c) = (q 3, b, L)

a/a,Ra/a,R b/a,Rb/a,R a/a,Ra/a,R #/#,L a/b,La/b,L #/#,R#/#,R a/a,La/a,L q2q2 q3q3 q4q4 q5q5 q1q1 Diagrama de estados

Ejemplo La siguiente máquina de Turing reconoce el lenguaje a n b n.  (q 1, a) = (q 2, c, R)  (q 2, a) = (q 2, a, R)  (q 2, d) = (q 2, d, R)  (q 2, b) = (q 3, d, L)  (q 3, d) = (q 3, d, L)  (q 3, a) = (q 3, a, L)  (q 3, c) = (q 1, c, R)  (q 1, d) = (q 4, d, R)  (q 4, d) = (q 4, d, R)  (q 4, b) = (q 5, b, L) a/a, L a/c, R a/a, R d/d, R b/b, L d/d, R q1q1 q2q2 q3q3 q4q4 q5q5 b/d, L d/d, Rd/d, L c/c,Rc/c,R

Construcción de Máquinas de Turing Definición. Sean M1 y M2 dos máquinas de Turing sobre el mismo alfabeto de entrada  y el mismo alfabeto de salida , donde M 1 = (Q, , , s 1, b, F 1,  1 ) M 2 = (Q, , , s 2, b, F 2,  2 ) se supone Q 1  Q 2 = , La composición de máquinas de Turing M 1 y M 2 es la máquina de Turing M = (Q, , , s, b, F,  ), que se denota por M 1 M 2. donde Q = Q 1  Q 2 s=s 1 F = F 2  1 (q,  ) si q  Q 1 y  1 (q,  )  (p, , X)  p  F 1  =  2 (q,  ) si q  Q 2 (s 2, , X) si q  Q 1 y  1 (q,  ) =(p, , X) para algún p  F 1 {

Bloques de construcción Definimos R b como la máquina M 1 con F 1 = {q 4 } con  1 (q 1, a) = (q 2, a, R)  1 (q 1, #) = (q 2, #, R)  1 (q 2, a) = (q 2, a, R)  1 (q 2, #) = (q 3, #, L)  1 (q 3, #) = (q 4, #, R)  1 (q 3, a) = (q 4, a, R) Mueve la cabeza lec/esc hasta la posición del siguiente blanco a la derecha. Definimos la máquina M 2 con F 2 = {p 2 } con  2 (p 1, a) = (p 2, a, R)  2 (p 1, #) = (p 2, a, R) Escribe a en la posición de la cabeza lec/esc. Se representa por el símbolo a. Definimos M 1 M 2 estará dada por  (q 1, a) = (q 2, a, R)  (q 1, #) = (q 2, #, R)  (q 2, a) = (q 2, a, R)  (q 2, #) = (q 3, #, L)  (q 3, #) = (p 1, #, R)  (q 3, a) = (p 1, a, R)  (p 1, a) = (p 2, a, R)  (p 1, #) = (p 2, a, R) con F = {p 2 } Se mueve al siguiente blanco a la derecha y escribe una a.

Ejemplo aaaaaa  Cabeza lec/esc Antes de R # R # aaaaaa  Cabeza lec/esc Después de R # R # #

Otra forma de R #  (q,  )  #  = # q1q1 (q 2, , R) (q 2, #, R) q2q2 (q 2, , R) (q 3, #, L) q3q3 (q 4, , R) (q 4, #, R)

LbLb Esta máquina busca el primer símbolo de la izquierda que no sea blanco.  (q,  )  = #  # q1q1 (q 2, #, L) (q 2, , L) q2q2 (q 2, #, L) (q 3, , R) q3q3 (q 4, #, L) (q 4, , L)

Ejemplo aaaaaa  Cabeza lec/esc Antes de R # L # aaaaaa  Cabeza lec/esc Después de R # L #

Otras máquinas útiles  (q,  )   q1q1 (q 2, a, R) q2q2 (q 2, , L) Escribe el símbolo a sobre la cinta y deja la cabeza sobre el símbolo  (q,  )  = #  = a q1q1 (q 2, #, L)(q 4, a, L) q2q2 (q 3, #, R)(q 3, a, R) q4q4 (q 5, #, R)(q 5, a, R) La siguiente máquina termina en q 3 si el símbolo en la cinta es un blanco y termina en q 5 si es una a. Esta máquina representa una bifurcación y se representa mediante dos flechas.  = #  = a

Máquina de Turing que cambia aes por bes y bes por aes.  = a  = b R b a En el simulador JCT:

Flechas múltiples R a, b, # R R a R b # RR o R 2   a R b  = a a R b a

Desplazamiento de una cadena w L2L2 #RaR#RR#R  = a R  = #  = b #Rb L2L2 #R#R R#RR#R   # R  = # El símbolo  indica que la máquina recuerda cual símbolo escribió sobre #. SRSR En el simulador JCT:

Reconocedor de ww I #R#L#R#LL#L# R  =   = # #   #   # #  = # #    Para en estado de aceptaciónPara en estado de no aceptación #R#L#R#LL#L# R  =   = # #   #   # #  = # b    Para en estado de aceptación 

Modificaciones de las máquinas de Turing Transiciones sin movimiento de la cabeza lec/esc. Modificar  : Q    Q   {R, L} Por  : Q    Q   {R, L, S} Donde S significa permanecer. Puede obtenerse con una máquina normal agregando  (q,  ) = (p’,  ’, R) y  (p’,  ) = (p, , L)    

Cinta dividida en subceldas aaaa abaa abba La cinta contiene múltiples caracteres. El movimiento de la cabeza dependerá del estado actual y de la n-tupla que represente el contenido actual.

Suma binaria El alfabeto estará formado por las ternas: (b, b, b)(1, 1, b)(1, 1, 0)(1, 1, 1) (0, 0, b)(0, 0, 0)(0, 0, 1)(b, b, 1) (0, 1, b)(0, 1, 0)(0, 1, 1) (1, 0, b)(1, 0, 0)(1, 0, 1) Primero buscará el extremo derecho mediante  (q 1,  ) = (q 1, , R) si  <> (b, b, b)  (q 1,  ) = (q 2, , L) si  = (b, b, b) además:  (q 2, (0, 0, b)) = (q 2, (0, 0, 0), L)  (q 3, (0, 0, b)) = (q 2, (0, 0, 1), L)  (q 2, (0, 1, b)) = (q 2, (0, 1, 1), L)  (q 3, (0, 1, b)) = (q 3, (0, 1, 0), L)  (q 2, (1, 0, b)) = (q 2, (1, 0, 1), L)  (q 3, (1, 0, b)) = (q 3, (1, 0, 0), L)  (q 2, (1, 1, b)) = (q 3, (0, 0, 0), L)  (q 3, (1, 1, b)) = (q 3, (1, 1, 1), L)  (q 2, (b, b, b)) = (q 4, (b, b, 0), S)  (q 3, (b, b, b)) = (q 2, (b, b, 1), S)

Cinta semiinfinita aaaabbaab Máquina de Turing con una cinta semiinfinita. Máquina de Turing con una cinta infinita puede simularse con una cinta semiinfinita de dos pistas abaabbaab aaba bbaab * * abaabbaab aaba bbaab * *

Máquinas multicinta Contiene varias cintas independientes. En un solo movimiento, esta máquina de Turing 1. Cambia de estado dependiendo del estado actual y del contenido de las celdas de todas las cintas, que están analizando actualmente las cabezas lec/esc. 2. Escribe un nuevo símbolo en cada una de las celdas barridas por sus cabezas lec/esc. 3. Mueve cada una de las cabezas hacia la izquierda o hacia la derecha (de forma independiente al resto de las cabezas).  : Q   n  Q   n  {L, R} n  (q,(  ,    ,...,  n )) = (p,(  ,    ,...,  n ),(X 1, X 2,X 3,...,X n ))

Ejemplo: reconocer a n b n  (q 1, (a, b)) = (q 1, (a, a), (R, R))  (q 1, (b, b)) = (q 2, (b, b), (S, L))  (q 2, (b, a)) = (q 2, (b, a), (R, L))  (q 2, (b, b)) = (q 3, (b, b), (R, L)) aabb a a aabb a aabb a a aabb a a aabb a a aabb estado: q 1 estado: q 2

Máquina Universal de Turing una máquina Universal de Turing es una máquina que a partir de una descripción de una máquina de Turing M y una cadena de entrada w, simula el comportamiento de M sobre la cadena w. Suponemos que Q = {q 1, q 2,..., q n } donde q 1 es el estado inicial y q 2 es el único estado de aceptación. Además  = {  1,  2,...,  m } donde  1 es el símbolo blanco. Codificamos M de la siguiente manera representamos q 1 por 1 representamos q 2 por 11, etc representamos  1 por 1 representamos  2 por 11, etc representamos L por 1 y representamos R por 11 Ejemplo:  (q 3,  1 ) = (q 4,  3, L) 

Máquina Universal de Turing La máquina de Turing Universal M u consta de tres cintas 1er cinta – la codificación de M en uno y ceros. 2a. cinta – la codificación del contenido de la cinta de M en unos y ceros. 3a. cinta – la codificación del estado actual codificado de M.

Problema de la parada El problema de la parada o problema de la detención para máquinas de Turing es el ejemplo de problema irresoluble más conocido. Consiste en determinar si una máquina de Turing se detendrá con cierta entrada, o bien quedará en un ciclo infinito. Este fue el primer problema que se demostró formalmente que no tenía solución.

Problema de la parada Definición Sea M una máquina de Turing arbitraria con un alfabeto de entrada Σ. Sea. ¿Puede decidirse si la máquina M se detendrá con la entrada w? Demostración Para demostrarlo, supongamos que el problema de la parada tiene solución, es decir, supondremos que existe una máquina de Turing que es capaz de determinar si otra máquina de Turing para con una entrada determinada.

Problema de la parada Consideremos una máquina de Turing P, que recibe como entrada una máquina de Turing M y una cadena w codificadas en la cinta y una a continuación de la otra (Mw), y que se encarga de ejecutar M sobre la cadena w. La máquina P parará y aceptará la entrada si M para con w, y parará y rechazará la entrada si M no para con w.

Modificamos la máquina P, creando una máquina P' equivalente. Esta máquina no parará si M para con w, y parará si M no para con w.

Ahora crearemos una máquina D, cuya función es la siguiente. Recibe una máquina M, la pasa por una máquina que se encarga de copiar la máquina M a continuación. Por lo tanto, a la salida de la máquina copia, la cinta contendrá MM (la codificación de la máquina repetida). A continuación, D coge este resultado y lo pasa a través de P'. Con esto intentamos decidir si la máquina M para con la entrada M. Es decir, si M para con la entrada M, entonces D no para, y si M no para con la entrada M, entonces D para.

Por último, tomaremos una máquina D (denominaremos SD), y le aplicaremos como entrada una máquina D. SD aplica como entrada a la máquina que recibe, la misma máquina. Por lo tanto, esta máquina en principio parará si D no para con entrada D, y no parará si D para con entrada D. Pero si SD no para y si D para con entrada D, sabiendo que D=SD, llegamos a una contradicción, por que aplicar D a SD debería dar como resultado lo mismo que aplicar D sobre D. Del mismo modo para el otro caso. Por lo tanto, el problema de la parada no tiene solución. Obtenido de " "

Lenguajes recursivamente enumerables Un lenguaje L sobre un alfabeto  se dice que es recursivamente enumerable si es aceptado por una máquina de Turing. Un lenguaje L es recursivo si L es recursivamente enumerable y hay alguna máquina de Turign que para sobre todas las entradas que acepta L.

Máquina para reconocer un lenguaje regular Sea M = (Q, , s, F,  ), un autómata finito determinista, Se puede construir una máquina de Turing que reconozca el lenguaje reconocido por M, M’ = (Q’,  ’, , s’, #, F’,  ’), donde Q’ = Q  {q’}  ’ =   =   {#} F’ = {q’}  ’(q,  ) = (  ’(q,  ), , R) para todo q  Q y   ’(q,  ) = (q, #, S) para todo q  Q

Gramáticas no restringidas Una gramática no restringida (también se conoce como una gramática estructurada por frases) es una 4-tupla G = (N, , S, P), donde N es el alfabeto de símbolos no terminales  es el alfabeto de símbolos terminales S  N es el símbolo inicial P es un conjunto de producciones de la forma , donde   (N   ) + u   (N   ) * (es decir, P  (N   ) +  (N   ) * y es un conjunto finito)

Ejemplo S  aSBC | aBC CB  BC aB  ab bB  bb bC  bc cC  cc La producción CB  BC intercambia los no terminales B y C, obteniendo una cadena de la forma a n B n C n. Las producciones aB  ab y bB  bb transforman toda B en b, obteniendo a n b n C n. Las producciones bC  bc y cC  cc transforman toda C en c, obteniendo a n b n c n

Ejemplo S  ACaB Ca  aaC CB  DB | E aD  Da AD  AC aE  Ea AE   A y B actúan como marcadores de final de la cadena de aes. C se desplaza a la derecha al duplicarse el número de aes hasta que está junto a B, entonces se transforma en D. D se desplaza hacia la izquierda hasta que encuentra una A, y entonces se convierte en C. Cuando CB se reemplaza por E, termina la generación de aes. Entonces E se desplaza a la izquierda hasta que encuentra la A, momento en el cual se elimina AE. Lenguaje generado:

La Jerarquía de Chomsky TipoLanguageAutómata Normas de producción de gramáticas 0 recursivamente enumerable (LRE) Máquina de Turing (MT)Sin restricciones 1 dependiente del contexto (LSC) Autómata linealmente acotado αAβ → αγβ 2 independiente del contexto (LLC) Autómata con pilaA → γ 3regular (RL)Autómata finito A → aB A → a