Automatas de Pila Maquinas Turing

117
AUTOMATAS DE PILA (Pushdown automata)

Transcript of Automatas de Pila Maquinas Turing

AUTOMATAS DE PILA

AUTOMATAS DE PILA (Pushdown automata)Autmata de pilaUn autmata con pila o autmata de pila o autmata a pila o autmata apilador es un modelo matemtico de un sistema que recibe una cadena constituida por smbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autmata reconoce.

Los Autmatas con Pila son una extensin de los AFD a los que se les aade una memoria (pila).En la pila se almacenan smbolos de la cadena de entrada y de la gramtica, as como caracteres especiales (#) para indicar el estado de pila vaca.Las transiciones son de la forma: (p,x,s;q,t)p=estado inicialq=estado al que llegax= smbolo de la cadena de entradas=smbolo que se desapilat=smbolo que se apila

Proceso de Anlisis Sintctico DescendenteEl proceso comienza apilando el axioma de la gramtica. Continuamente mira lo que hay en las ltimas casillas de la pila:Si existe concordancia con un no terminal de alguna de las reglas de produccin de la gramtica analizada, elimina de la cima de la pila ese no terminal y lo cambia por la cadena de la parte derecha de la regla de produccin.Si existe concordancia con un terminal y coincide con el carcter de la entrada, lo desapila y lee un carcter ms de la entrada.Si con este proceso se consigue agotar el contenido de la cinta de entrada y de la pila, la palabra es reconocida. En otro caso no lo es

EjemploAutmata de pila que acepte {aibi | i > 0}

K = {q0, q1} = {a, b} = {A}s0 = q0F = {q0, q1}(q0, a, ) = (q0, A)(q0, b, A) = (q1, )(q1, b, A) = (q1, )

a, / Ab, A / b, A / q0q1Ejemplo: palndromos de longitud imparAutmata de pila que acepte {wcwR | w {a, b}*}. wR es la palabra w al revs, por ejemplo, anitaR = atina.

K = {q0, q1} = {a, b, c} = {A, B}s0 = q0F = {q1}(q0, a, ) = (q0, A) (q1, a, A) = (q1, ) (q0, b, ) = (q0, B) (q1, b, B) = (q1, )(q0, c, ) = (q1, )

a, / Ab, / Bb, B / a, A / c, / q0q1Ejemplo: palndromos de longitud parAutmata de pila que acepte {wwR | w {a, b}*}. wR es la palabra w al revs, por ejemplo, anitaR = atina.

K = {q0, q1} = {a, b} = {A, B}s0 = q0F = {q1}(q0, a, ) = (q0, A) (q1, a, A) = (q1, ) (q0, b, ) = (q0, B) (q1, b, B) = (q1, )(q0, , ) = (q1, )

a, / Ab, / Bb, B / a, A / , / q0q1AF APTodo lenguaje aceptado por un autmata finito es tambin aceptado por un autmata de pila.Si M = (K, , , s0, F) es un autmata finito, entonces (K, , , , s0, F) con = = {((p, u, ), (q, )) | (p, u, q) }acepta el mismo lenguaje que M.

Los lenguajes libres de contexto son aceptados por los autmatas de pila y los lenguajes generados por los autmatas de pila son los lenguajes libres de contexto.LLC APSea G = (V, , R, S) una gramtica libre de contexto. Entonces el autmata de pila M = ({p, q}, , V, , p, {q}) donde la relacin de transicin se define de la siguiente manera acepta exactamente el mismo lenguaje que G.1) (p, , ) = (q, S)2) (q, , A) = (q, x) para cada regla A x R3) (q, , ) = (q, ) para cada El autmata de pila contiene slo dos estados. El primero se utiliza slo en la primera transicin por lo que los estados no sirven para recordar las caractersticas de la palabra de entrada, este recordatorio se hace en la pila. Las transiciones tipo 2) lo que hacen es derivar en la pila la palabra de entrada sin consumir ningn carcter de entrada. Las transiciones tipo 3) comparan la palabra en la pila con la palabra de entrada.EjemploObtener un AP que acepte el lenguaje generado por la gramtica libre de contexto cuyas reglas son: S aSa S bSb S c

Transiciones del APTipo 1): (p, , ) = (q, S)Tipo 2): (q, , S) = (q, aSa)(q, , S) = (q, bSb) (q, , S) = (q, c)Tipo 3): (q, a, a) = (q, ) (q, b, b) = (q, ) (q, c, c) = (q, )...Ejemplo: analizar abcbaEstadoFalta leerPilapabcbaqabcbaSqabcbaaSaqbcbaSaqbcbabSbaqcbaSbaqcbacbaqbabaqaaq

Una palabra es aceptada por un AP si al procesarla completamente, se llega a un estado final y la pila queda vaca.

Debido al no-determinismo del autmata es posible que al terminar de procesar la palabra, varios estados estn activos. Es suficiente que uno de estos estados sea final para que la palabra se acepte.

L(M) denota al lenguaje formado por las palabras aceptadas por M.

MAQUINAS DE TURING

Una Mquina de Turing es un modelo matemticoModelo matemtico es una expresin de esas que se utilizan con cierta frecuencia pero que pocas veces nos paramos a pensar qu significa. Y aunque parezca algo complicado, en realidad se trata de un concepto bastante sencillo.Un modelo matemtico es un conjunto de reglas que encajan en la explicacin y resolucin de un problema, es decir, que modelizan una situacin concreta para poder explicarla y encontrar el modo de resolverla. Ms an, se podra decir que un modelo matemtico es un conjunto de reglas capaces de generalizar y resolver un problema matemtico concreto y cualquier otro de su misma naturaleza que se pueda plantear.

El ejemplo ms simple que se me ocurre es, ante el problema cuntas manzanas tenemos si yo tengo tres y t tienes dos?, el modelo matemtico a aplicar es el que comprende a los nmeros naturales (1,2,3,4,) y su suma finita. As, cuando nos encontremos con otro caso similar, como por ejemplo averiguar cuntos aos suman las edades de tres personas, basta con aplicar este modelo para averiguarlo, es decir, sumar la edad de cada uno de ellos. Tan fcil como parece.Ahora la afirmacin una Mquina de Turing es un modelo matemtico cobra significado: nos dice que es una forma de resolver cierto tipo de problemas, que adems funciona para cualquier problema de la misma naturaleza. Como a estas alturas se podrn imaginar, uno de los problemas que ser capaz de resolver la Mquina de Turing es el Problema de la decisin.

Una mquina de Turing es un autmataEn matemticas, un autmata es lo que se conoce como una mquina terica, es decir, un dispositivo cuyo funcionamiento se estudia sin necesidad de construirlo realmente. En concreto un autmata es una mquina terica que lee unas instrucciones en forma de smbolos y cambia de estado segn stas.Vamos a tratar de explicar esto mediante un sencillo ejemplo. Imaginemos que nuestro autmata es un robot que slo sabe hacer tres cosas: tumbarse, levantarse y decir he quedado con unas robopilinguis. Estas tres cosas seran los tres estados en los que se puede encontrar nuestro autmata.

Imaginemos tambin que el robot tiene una abertura por la que podemos introducir una cinta de papel perforada, y un dispositivo que lee si cada tramo concreto de la cinta tiene un agujero o no. Supongamos que el mecanismo del robot funciona de tal forma que cuando la cinta tiene un agujero, el robot se levanta, cuando tiene otro ms, el robot habla y cuando no lo tiene, se sienta (esta serie de instrucciones de funcionamiento en funcin de las instrucciones de entrada forman lo que se denomina funcin de estado del autmata) Por ltimo, supongamos que el robot est tumbado antes de leer la primera instruccin.Entonces si introducimos una cinta que conste de dos agujeros y un espacio sin perforar, que representamos por OOX, el robot leer el primer agujero y se levantar, leer el segundo y dir he quedado con unas robopilinguis, y al llegar al espacio sin perforar se volver a tumbar.

Si ahora introducimos una cinta con la instruccin OXOOOX, el robot se levantar, se tumbar, se volver a levantar, dir dos veces su clebre frase, y acabar tumbado de nuevo.Esto es bsicamente un autmata: un dispositivo que lee (implementa) unas instrucciones (algoritmos), y cambia su estado en funcin de estas (se sienta, se levanta o dice la frase). Pero para un matemtico, que el dispositivo sea un robot que vaya a cuerda o un computador cuntico es completamente indiferente, lo importante es el estudio de qu algoritmos puede implementar, qu simbologa y qu gramtica se puede utilizar para representar estos algoritmos y cmo hacer que el autmata llegue a un estado determinado partiendo de un estado inicial.Despus de esta pequea introduccin, por fin nos encontramos en disposicin de comprender lo que es una Mquina de Turing y cmo funciona.Si recopilamos lo que hemos visto hasta ahora, ya sabemos lo que es un modelo matemtico, un autmata, un problema matemtico, un algoritmo y lo que significa implementar, adems de que todo esto debe de tener que ver con el Problema de la decisin.Una mquina de Turing es un autmata que consta de una cabeza lectora y una cinta infinita en la que la cabeza puede leer smbolos, borrarlos, escribirlos y moverse a la derecha o a la izquierda. Por supuesto tambin consta de una funcin de estado que determinar los cambios de un estado a otro que se deben producir en funcin de las instrucciones que reciba.

ste aparato tan sencillo (y tan parecido a un radiocasete) tiene una propiedad sorprendente, y es que es capaz de implementar cualquier problema matemtico que se nos ocurra, con la nica condicin de que ste se pueda expresar por medio de un algoritmo (que recordemos que no es ms que estructurar el problema en un nmero de pasos determinados) Por tanto, podremos escribir una cadena de smbolos que represente el problema de manera que la mquina lo pueda leer y, como adems tambin puede escribir y borrar, cuando vayamos de un paso a otro del algoritmo podr recordar el paso en el que se encuentra en cada momento para as poder dar el siguiente en la direccin correcta.Si nos fijamos bien, es sencillo encontrar una analoga entre una Mquina de Turing y un computador moderno. En un computador, tenemos un dispositivo de lectura y borrado que interpreta los datos grabados en un soporte (hardware) sobre el que puede adems borrar, escribir y moverse. Adems, este dispositivo dispone de un cdigo (software) que, segn sean las instrucciones de entrada, proporciona una salida determinada en forma de imagen en una pantalla, clculo matemtico, sonido, etc. La nica diferencia esencial es que el soporte de informacin no es infinito, pero eso en la prctica no es un gran problema porque en la mayora de los casos nuestras necesidades de computacin son finitas.Por tanto, podemos identificar el hardware de un computador con la cabeza lectora y la cinta, mientras que el software seran las instrucciones de la cinta y la funcin de estado de la Mquina de Turing.

Autmatas son insuficientesAutmatas finitos modelan adecuadamente mecanismos que requieren una memoria pequea.Autmatas de pila modelan adecuadamente mecanismos que requieren memoria infinita que slo puede ser replicada con una pila LIFO (Last In First Out){anbncn | n > 0} no es un lenguaje libre de contexto pero s es sensitivo al contexto, es decir, es generado por una gramtica sensitiva al contexto.{anbncn | n 0} no es un lenguaje sensitivo al contexto (porque contiene ) pero s es un lenguaje recursivamente numerable, es decir, es generado por una gramtica sin restriccin.{anbncn | n > 0} es un lenguaje sensitivo al contextoS aBTc | abcT ABTcT ABcBA BXBX YXYX AXAX ABaA aaaB abbB bbLas reglas 1 a 3 generan el nmero correcto de as, bs y cs (contando maysculas y minsculas).Las reglas 4 a 7 ordenan las letras (maysculas y minsculas) en el orden correcto.Las reglas 8 a 10 generan los smbolos terminales slo cuando estn en el orden correcto.{anbncn | n 0} es un lenguaje recursivamente numerableS aBTc | abc | T ABTcT ABcBA BXBX YXYX AXAX ABaA aaaB abbB bbLas reglas 1 a 3 generan el nmero correcto de as, bs y cs (contando maysculas y minsculas).Las reglas 4 a 7 ordenan las letras (maysculas y minsculas) en el orden correcto.Las reglas 8 a 10 generan los smbolos terminales slo cuando estn en el orden correcto.Lema de bombeo para LLCSi L es un lenguaje libre de contexto, entonces existe un nmero n (la longitud de bombeo) tal que si w es cualquier cadena en L de longitud mayor o igual que n, entonces w puede ser dividido en cinco partes, w = uvxyz, que satisfacen las siguientes tres condiciones:1) uvixyiz L para toda i 0.2) |vy| > 0.3) |vxy| n.

LSCLenguajes sensitivos al contextoLLCLR{anbn}X a{anbncn}a X b a g bEjemplos de LLC cuya interseccin no es un LLCL1 = {aibjck | i < j} es LLC porque la siguiente gramtica libre de contexto lo genera:S ABC, A aAb | , B bB | b, C cC | L2 = {aibjck | i < k} es LLC porque la siguiente gramtica libre de contexto lo genera:S AC, A aAc | B, B bB | , C cC | cSin embargo L = L1 L2 no es LLC.Ejemplo de un LLC cuyo complemento no es LLCL = {aibjck | (i = j = k)} es LLC porque es la unin deL1 = {aibjck | i j}L2 = {aibjck | j k}Sin embargo el lenguaje LC = {aibici | i 0} no es LLC.Mquinas de TuringTuring empez tratando de modelar a una computadora humana, es decir, a un humano tratando de resolver algoritmicamente un problema utilizando papel y lpiz.Reglas bsicasSlo se pueden escribir smbolos que pertenecen a un conjunto finito.Cada accin que la computadora toma slo depende del smbolo que est siendo examinado y del estado mental en ese momento.Aunque el estado mental puede cambiar como resultado de los smbolos o clculos que se han efectuado, el nmero de estados mentales distintos es finito.Mquina abstractaExaminar un smbolo individual en el papel. Borrar un smbolo o reemplazarlo por otro.Trasladar la atencin de una parte del papel a otra.Mquinas de TuringSe tiene un alfabeto de entrada y un alfabeto, posiblemente mayor, de los smbolos utilizados durante la operacin o clculos de la mquina.Un conjunto finito de estados que representan los distintos estados mentales.En lugar de una hoja de papel, se tiene una cinta linear semi-infinita con inicio en el extremo izquierdo e infinita hacia la derecha. Esta cinta esta dividida en cuadros, en cada uno de los cuales puede estar un smbolo o un espacio en blanco (#).Caricatura de una MT

Operacin de la MTLa accin est determinada por el estado actual y el smbolo en la cinta y consiste de tres partesReemplazar el smbolo en el cuadrado actual por otro que puede ser distinto o el mismo.Mover la cabeza lectora a la derecha o a la izquierda (a menos que se encuentre en el extremo izquierdo de la cinta) o quedarse donde est.Hacer una transicin de estado, que puede ser distinto o el mismo.La cinta sirve como dispositivo de entrada y salida as como la memoria disponible para utilizar durante la operacin o clculos de la mquina.Diferencias de una MT con un autmataLa cabeza lectora se puede mover a la izquierda o derecha o quedarse donde est.Puede modificar los datos de entrada.Puede examinar parte de los datos de entrada, modificarlos, irse a otro lugar de la cinta y ejecutar ciertos clculos, regresar a re-examinar los datos de entrada, repetir cualquiera de estas acciones y quizs detener el proceso antes de procesar todos los datos de entrada.En lugar de que un subconjunto de los estados sean estados finales o de aceptacin, tendremos dos estados de paro que son un estado de aceptacin ha y un estado de rechazo hr.Definicin formal de Mquina de TuringUna Mquina de Turing es un quintetoT = (Q, , , q0, )Q es un conjunto finito de estados en el que no est includo los estados de paro ha y hr. es el alfabeto de entrada con el que se forman las cadenas a procesar. es el alfabeto de la cinta que contiene a pero no al espacio en blanco (#).q0 es el estado inicial y pertenece a Q.La funcin de transicin : Q ( {#}) Q {ha, hr} ( {#}) {#}) {R, L, S} (q, X) = (r, Y, D) significa que si la mquina se encuentra en el estado q y leyendo el smbolo X en la cinta, entonces la mquina reemplaza X por Y, se mueve al estado r y mueve la cabeza lectora en la direccin D.Notacin grfica(q, X) = (r, Y, D) se puede representar grficamente de la siguiente maneraqrX/Y, D

(1) Este ejemplo muestra la construccin de una mquina Turing para realizar la funcin AND. Los dos bits de entrada estn establecidos en cuadros adyacentes, seguidos por un signo de interrogacin que ser reemplazado por el resultado. Flanquean el rea de datos dos asteriscos para que acten como bordes. Los diez quntuplos reseados abajo especifican la operacin de esta mquina, aunque para cualquier ejemplo con el cual se trabaje (en este caso 1 AND 1), slo se utilizan cinco de los diez.(2) La mquina comienza a funcionar en el estado Sa con la cabeza posicionada sobre el asterisco situado a la izquierda. El nico efecto de este quntuplo es mover la cinta hacia la derecha.(3) Si el siguiente cuadrado contiene un 1 entonces se selecciona este quntuplo y la mquina pasa a estado Sc, instruyndola para que se mueva hacia la derecha. Si se ha ledo un 0, el resultado es Sb.(4) Con la mquina en estado Sc, un 1 es el segundo cuadrado da Se. En otro caso, la mquina pasara a Sd.(5) Ante signo de interrogacin, segn el estado de la mquina, Se o Sd, se escribir en su lugar un 1 o un 0. En cualquier caso, la mquina se coloca en estado Sf.(6) La mquina pasa a estado de detencin (H) con el segundo asterisco. Se puede verificar sobre el papel el funcionamiento para 1 AND 0, 0 AND 1 y 0 AND 0.

ANIMACIN DE LA MAQUINA DE TURING

Ejemplo

Aceptacin de palabras por MTUna palabra x * es aceptada por una MT T si empezando con la configuracin inicial correspondiente a la palabra x, eventualmente se llega al estado de aceptacin ha.Note que no es necesario procesar toda la palabra para aceptarla.El lenguaje aceptado por T es el conjunto de palabras aceptadas por T.Rechazo de palabras por MTUna palabra x * es rechazada por una MT T si empezando con la configuracin inicial correspondiente a la palabra x, eventualmente se llega al estado de rechazo hr.Note que no es necesario procesar toda la palabra para rechazarla.Es costumbre omitir el estado de rechazo y rechazar una palabra cuando no existe una transicin, es decir, cuando la mquina se queda colgada.EjemploMT que acepta palabras sobre {a, b} que inician con a1ha#/#,R2a/a,Sb/b,S#/#,ShrEjemplo: MT palabras en {a, b} que terminan con a1ha#/#,R2a/a,Sb/b,S#/#,S#/#,L3a/a,Rb/b,RhrEjemplos MT que acepta(a + b)*aba(a + b)*MT que acepta (a + b)*aba(a + b)*MT que acepta (a + b)*abaMT que acepta palindromos sobre {a, b}.(a + b)*aba(a + b)*

(a + b)*aba

Palndromos sobre {a, b}

L = {ss | s (a + b)*}Este lenguaje no es libre de contexto

EjemploMquina de Turing que acepte el lenguaje L = {1x | x = 2n para n 0}, es decir, cadenas de 1s cuya longitud es una potencia de 2.Idea de construccin:1) Barrer la palabra de izquierda a derecha tachando un 1 s y otro no.2) Si en el paso 1) la cinta contiene slo un 1, entonces parar y aceptar.3) Si en el paso 1) la cinta contiene ms de un 1 y el nmero de 1s es impar, entonces rechazar.4) Regresar la cabeza lectora al extremo izquierdo de la cinta.5) Ir al paso 1).#/#,R1/x,R1/1,R#/#,L#/#,S#/#,Rx/1,L1/1,Lha1/1,R1/#,L#/#,Lx/x,R1/x,R