autómatas de pila teoría del autómata. definición un autómata de pila no determinista (adpnd)...

37
Autómatas de Pila Teoría del Autómata

Upload: graciela-esquivel

Post on 28-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Autómatas de Pila

Teoría del Autómata

Page 2: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde:

Q es un conjunto finito de estados

es un alfabeto de entrada

es un alfabeto llamado alfabeto de la pila

es una regla de transición

s Q es el estado inicial o de partida

F Q es el conjunto de los estados finales o de aceptación

z es el símbolo inicial de la pila

La se define por medio de la terna (q, , ), donde q es el estado actual, es un símbolo de {} y . El resultado de aplicar a esta terna es el par (p, w), donde p es el siguiente estado y w es la cadena que se apilará en lugar del símbolo .

Page 3: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

DefiniciónEntonces se define como

Q ( {}) Q

Se puede tener que (q, a, b) produzca (p, ), esto indica que el estado siguiente es p y el símbolo b se elimina de la pila.

No es posible ningún movimiento si la pila está vacía.

Es posible también tener (q, , a) = {(p, aa)}, esto es, cambiar al estado p sin consumir ningún símbolo y apilando una a. También, si (q, , a) = , no es posible ningún movimiento y el ADPND parará.

Page 4: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

DefiniciónLa terna (q, w, u), donde q es el estado actual, w es la cadena de entrada restante y u el contenido de la pila (con el símbolo de la cima en el extremo de la izquierda), se llama descripción instantánea del autómata.

Indicaremos un movimiento de una configuración a otra situando el símbolo entre dos descripciones instantáneas

(q1, aw, bx) |– (q2, w, yx)

representa el movimiento que resulta de (q2, y) (q1, a, b).

Page 5: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Lenguaje aceptado por un ADPND

Sea M = (Q, , , , s, F, z) un ADPND. El lenguaje aceptado por M se denota por L(M) y es el conjunto

L(M) = {w * | (s, w, z) |–* (p, , u) para p F y u *}

Page 6: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

EjemploSe al ADPND

Q = {q1, q2, q3, q4} = {a, b} = {A, B}

z = AF = {q4}

s = q1

dada por

(a, A) (b, A) (, A) (a, B) (b, B) (, B)

q1 {(q2, BA), (q4, A)} {(q4, )}

q2 {(q2, BB)} {(q3, )}

q3 {(q4, A)} {(q3, )}

Page 7: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

ExplicaciónEl estado inicial es q1 y el de aceptación es q4.

La tabla pone en los renglones el estado actual y en las columnas las transiciones correspondientes para cada símbolo de entrada y cada símbolo en la pila.

El lenguaje aceptado es: anbn a

Page 8: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

EjemploEl siguiente ADPND acepta L = {w {a, b}| w contiene el mismo número de aes que de bes}

Q = {q1, q2} = {a, b}

= {A, B,,Z}z = Z

F = {q2}s = q1

dada por

(q1, , Z) = {(q2, Z)} (q1, a, Z) = {(q1, AZ)}

(q1, b, Z) = {(q1, BZ)} (q1, a, A) = {(q1, AA)}

(q1, b, A) = {(q1, )} (q1, a, B) = {(q1, )}

(q1, b, B) = {(q1, BB)}

Page 9: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

(q1, abba, Z) |– (q1, bba, AZ)

|– (q1, ba, Z)

|– (q1, a, BZ)

|– (q1, , Z)

|– (q2, , Z)

Procesar aaababbb

Page 10: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

El siguiente ADPND acepta L = {wcwI | w {a, b}*}

Q = {q1, q2 , q3} = {a, b, c} = {a, b,,z}

z = zF = {q3}

s = q1

dada por: (q1, a, z) = {(q1, az)} (q1, c, z) = {(q2, z)}

(q1, a, a) = {(q1, aa)} (q1, c, a) = {(q2, a)}

(q1, a, b) = {(q1, ab)} (q1, c, b) = {(q2, b)}

(q1, b, z) = {(q1, bz)} (q2, a, a) = {(q2, )}

(q1, b, a) = {(q1, ba)} (q2, b, b) = {(q2, )}

(q1, b, b) = {(q1, bb)} (q2, , z) = {(q3, z)}

Page 11: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Autómatas de pila y lenguajes independientes del contexto

Se construirá un ADPND que acepte el mismo lenguaje que una gramática G.

Se construirá un ADPND que haga las derivaciones por la izquierda para cualquier cadena del lenguaje.

Representaremos la derivación guardando en la pila los no terminales del extremo derecho de la derivación.

La parte izquierda es idéntica a la cadena de entrada que se ha leído.

Page 12: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Introducimos en la pila el símbolo inicial de G, después se realiza una de estas actividades.

1. Si el símbolo que está en la cima de la pila es un no terminal A, lo sustituiremos por el lado derecho de la producción para A, A w, o

2. Si el símbolo en la cima de la pila es un terminal y se corresponde con el siguiente símbolo de entrada. Los desapilaremos de la pila.

Si se agota la cadena de entrada y en la cima de la pila está el símbolo inicial de la pila, aceptaremos la cadena.

Page 13: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Para construir un ADPND a partir de una gramática G = (N, , S, P) se hace lo siguiente:

Se define un ADPND con

Q = {q1, q2, q3}

= N {z}, z es el símbolo inicial de la pila (distinto de todos los símbolos de N )

F = {q3}

s = q1

Page 14: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

la regla de transición está compuesta por cuatro tipos de transiciones:

1. (q1, , z) = {(q2, Sz)}, la cual se corresponde

con la introducción del símbolo inicial en la pila.

2. (q2, , A) = {(q2, w) | A w es una producción

de P} para cada no terminal A de N.

3. (q2, a, a) = {(q2, )} para cada símbolo

terminal a de .

4. (q2, , z) = {(q3, z)}.

Page 15: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

EjemploSea G

S aSa | bSb | c

El ADPND es

(q1, , z) = {(q2, Sz)}

(q2, , S) = {(q2, aSa), (q2, bSb), (q2, c)}

(q2, a, a) = (q2, b, b) = (q2, c, c) = {(q2, )}

(q2, , z) = {(q3, )}

Page 16: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

La cadena abcba se acepta mediante la secuencia:

(q1, abcba, z) | (q2, abcba, Sz)

| (q2, abcba, aSaz)

| (q2, bcba, Saz)

| (q2, bcba, bSbaz)

| (q2, cba, Sbaz)

| (q2, cba, cbaz)

| (q2, ba, baz)

| (q2, a, az)

| (q2, , z)

| (q3, , z)

Page 17: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

(q2, a1a2…an, Sz) | * (q2, a1a2…an, a11z)

| (q2, a2…an, 1z)

| * (q2, an, anz)

| (q2, , z)

| (q3, , z)

y por se obtienen las derivaciones siguientes

S * a11 * a1a22 * … * a1a2…an = w

Por consiguiente, si w es aceptada por el ADPND, entonces w se deriva de la gramática.

Obsérvese que si se tiene que (q2, x, A) | (q2, x, ), es posible

A * . Por tanto si w = a1a2…an es aceptada por el ADPND,

debemos tener

Page 18: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Similarmente, si S * a1a2…an, entonces tendremos una

derivación de a1a2…an por la izquierda y de la forma

S * A11 a11 * a1A22 a1a22 * a1a2…an

Por tanto, en un ADPND derivado de la gramática, se puede tener la secuencia

(q2, a1a2…an, Sz) |–* (q2, a1a2…an, a11z)

|– (q2, a2…an, 1z)

|–* (q2, , z)

|– (q3, , z)

Es decir el ADPND acepta la cadena w = a1a2…an.

Page 19: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Teorema

Si L es un lenguaje independiente del contexto, entonces existirá un ADPND para el cual L = L(M).

Page 20: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

GIC a partir de un ADPND

El lenguaje aceptado por la pila vacía de M se define como

N(M) = {w | (q1, w, z)|* (p, , )}

Sea M un ADPND. Podemos transformar M en un ADPND M’ tal que L(M) = N(M’). Resultará que M’ tendrá un único estado final. Además se requiere que todas las transiciones sean de la forma

(q, a, A) = {c1, c1, c1, …,cn}

donde ci = (p, ) o ci = (p, BC).

Page 21: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Diferencia entre L(M) y N(M)No se cumple que el lenguaje aceptado por un autómata sea el mismo que el aceptado con pila vacía.

(q1, a, z) = {(q1, az)}

(q1, b, z) = {(q2, )}

(q1, a, a) = {(q3, a)}

N(M) = {b}

L(M) = {a2}

Page 22: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Transformación L(M) = N(M’)Si M nunca desapila z, se hará de la siguiente forma

(q’, ) (q, , z)

Se sustituyen las transiciones donde q’ no esté en F por nuevas transiciones (p1, z).

Se sustituyen las transiciones donde q’ esté en F por nuevas transiciones (p2, z) inclluyendo p2 en F.

Para todo q F, se añaden transiciones

(q, , ) = {(p3, )} para todo .

(p3, , ) = {(p3, )} para todo – {z}

(p3, , z) = {(p4, )}

Se hace F = {p4}

Page 23: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Para poder seguir la traza de los estados por los que pasa el autómata conforme se reconoce la gramática, usaremos no terminales de la forma [qAp], donde interpretaremos [qAp] * w como la acción del ADPND correspondiente, que saca A de la pila y se mueve del estado q al p mientras consume la cadena de entrada w.

Si (qj, ) (qi, a, A), la producción correspondiente es [qiAqj]

a, ya que el ADPND para del estado qi al estado qj y

desapila A de la pila sobre el símbolo de entrada a.

Page 24: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Por otro lado si (qj, BC) (qi, a, A), la entrada a produce que

A sea desapilado, pero entonces B y C serían rechazados.

Para eliminarlos incluiremos todas las producciones de la forma [qiAqm] a[qjBqn][qnCqm], donde qn y qm pueden ser cualquiera

de los estados de Q.

Finalmente, tendremos como símbolo inicial [szqf], donde s es

el estado inicial, z es el símbolo inicial de la pila y qf es el

(único) estado de aceptación de ADPND.

Obsérvese que, de la forma de construir una gramática a partir de un ADPND que satisfaga las condiciones dadas, se obtiene que (qi, uv, Ax) |* (qj, v, x) por medio de las operaciones que

realiza un autómata de pila, entonces en la gramática resultante se tendrá [qiAqj] * u. Lo inverso también se cumple.

Page 25: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Construcción de GIC a partir de ADPND

Los no terminales serán de la forma [pAq], donde se interpreta [pAq] w como la acción de sacar A de la pila mientras se va del estado p a q y se consume la cadena w. Además el símbolo inicial es [szqf], donde s es el estado inicial qf es el único

estado de aceptación z es el símbolo inicial de la pila.

Las transiciones del autómata se convierten a producciones de acuerdo a la siguiente tabla.

Transición Producción

(qj, ) (qi, a, A) [qiAqj] a

(qj, BC) (qi, a, A) [qiAqm] a[qjBqn] [qnCqm] para cualquier n, m.

Page 26: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Ejemplo sea el ADPND

1.(q1, a, z) = {(q1, Az)}

2.(q1, a, A) = {(q1, AA)}

3.(q1, b, A) = {(q2, )}

4.(q2, b, A) = {(q2,)}

.(q2, , A) = {(q2,)}

.(q2, , z) = {(q3, )}

con F = {q3} y q1 como el estado inicial.

El símbolo inicial es [q1zq3] y las transiciones 3, 4, 5 y 6 se traducen por

[q1Aq2] b

[q2Aq2] b |

[q2zq3]

Page 27: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Ejemplo[q1Aq2] b

[q2Aq2] b |

[q2zq3]

Las transiciones 1 y 2 se traducen por:

[q1zq1] a[q1Aq1] [q1zq1] | a[q1Aq2] [q2zq1] | a[q1Aq3] [q3zq1]

[q1zq2] a[q1Aq1] [q1zq2] | a[q1Aq2] [q2zq2] | a[q1Aq3] [q3zq2]

[q1zq3] a[q1Aq1] [q1zq3] | a[q1Aq2] [q2zq3] | a[q1Aq3] [q3zq3]

[q1Aq1] a[q1Aq1] [q1Aq1] | a[q1Aq2] [q2Aq1] | a[q1Aq3] [q3Aq1]

[q1Aq2] a[q1Aq1] [q1Aq2] | a[q1Aq2] [q2Aq2] | a[q1Aq3] [q3Aq2]

[q1Aq3] a[q1Aq1] [q1Aq3] | a[q1Aq2] [q2Aq3] | a[q1Aq3] [q3Aq3]

Page 28: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Los siguientes no terminales son inútilies

[q2zq1] , [q3zq1], [q3zq2] [q2Aq1], [q3Aq1], [q3Aq2],

[q3zq3]

Pueden ser eliminados por los algoritmos estudiados antes.

Page 29: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

La cadena aabb se acepta por el autómata de la siguiente manera

(q1, aabb, z) | (q1, abb, Az)

| (q1, bb, AAz)

| (q2, b, Az)

| (q2, , )

La derivación con la gramática es

[q1Aq2] a [q1Aq2] [q2zq3]

aa [q1Aq2] [q2Aq2] [q2zq3]

aab [q2Aq2] [q2zq3]

aabb [q2zq3]

aabb

Page 30: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

1.(q1, a, z) = {(q1, Az)}2.(q1, b, A) = {(q2, )}

3.(q4, , z) = {(q1, Az)} 4.(q2, , z) = {(q3 )}

.(q1, a, A) = {(q4,)}

[q1zq3] inicial, [q1Aq2] b [q1Aq4] a [q2zq3]

Las transiciones 1 y 3 se traducen por:

[q1zq1] a[q1Aq1] [q1zq1]|a[q1Aq2] [q2zq1]|a[q1Aq3] [q3zq1]|a[q1Aq4] [q4zq1]

[q1zq2] a[q1Aq1] [q1zq2]|a[q1Aq2] [q2zq2]|a[q1Aq3] [q3zq2]|a[q1Aq4] [q4zq2]

[q1zq3] a[q1Aq1] [q1zq3]|a[q1Aq2] [q2zq3]|a[q1Aq3] [q3zq3]|a[q1Aq4] [q4zq3]

[q1zq4] a[q1Aq1] [q1zq4]|a[q1Aq2] [q2zq4]|a[q1Aq3] [q3zq4]|a[q1Aq4] [q4zq4]

[q1zq1] [q1Aq1] [q1zq1]| [q1Aq2] [q2zq1]| [q1Aq3] [q3zq1]| [q1Aq4] [q4zq1]

[q1zq2] [q1Aq1] [q1zq2]| [q1Aq2] [q2zq2]| [q1Aq3] [q3zq2]| [q1Aq4] [q4zq2]

[q1zq3] [q1Aq1] [q1zq3]| [q1Aq2] [q2zq3]| [q1Aq3] [q3zq3]| [q1Aq4] [q4zq3]

[q1zq4] [q1Aq1] [q1zq4]| [q1Aq2] [q2zq4]| [q1Aq3] [q3zq4]| [q1Aq4] [q4zq4]

Page 31: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Forma normal de Greibach

Teorema. Si A B es una producción de una gramática independiente del contexto y si B 1 | 2 | ... | m son las producciones que tienen a B en su lado izquierdo, entonces la producción A B se puede reemplazar por A 1 | 2 | ... | m sin que varíe el lenguaje generado por la gramática.

Page 32: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Definiciones

Una producción de la forma A se llama recursiva por la derecha.

Una producción de la forma A A se llama recursiva por la izquierda.

Page 33: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Teorema. Sea G una gramática independiente del contexto y A un no terminal de G. Si A A1 | A2 |... An son todas las producciones de A, que sonmm recursivas por la izquierda y si A 1 | 2 | ... | m son las restantes producciones de A, entonces se puede construir una gramática equivalente introduciendo un nuevo no terminal Z y reemplazando todas las producciones precedentes por

A 1| 2 | ... | m | 1| 2Z | ... | mZ |

Z 1| 2 | ... | m | 1| 2Z | ... | nZ |

Demostración

En ambos caso las producciones forman el lenguaje regular

{1 2, ... , m} {1 2, ... , n}*

Page 34: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

EjemploConsidere la gramática

S Sa | Sb | cA

A Aa | a |

Cuando se procesa S se transforma en

S cA | cAZ1

Z1 a | b | aZ1| bZ1

A Aa | a |

Cuando se procesa A se transforma en

S cA | cAZ1

Z1 a | b | aZ1| bZ1

A a | aZ2 | Z2

Z2 a | aZ2

Page 35: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Definición

Una gramática independiente del contexto está en forma normal de Greeibach (FNG) si todas las producciones son de la forma A a, donde a es un símbolo terminal y ( N)*.

Page 36: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un

Pasar a forma normal de Greibach.

a) S aSb | ab

b) S AA | a

A SS | b

c) S Sa | Sb | cA

A Aa | a |

Page 37: Autómatas de Pila Teoría del Autómata. Definición Un Autómata de pila no determinista (ADPND) es una 7-tupla. M = (Q, , , , s, F, z) donde: Q es un