autómatas de pila

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

Upload: serge

Post on 01-Feb-2016

57 views

Category:

Documents


0 download

DESCRIPTION

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 , G , D , s , F , z ) donde: Q es un conjunto finito de estados S es un alfabeto de entrada G es un alfabeto llamado alfabeto de la pila - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Autómatas de Pila

Autómatas de Pila

Teoría del Autómata

Page 2: Autómatas de Pila

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

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

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

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

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

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

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

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

|– (q1, ba, Z)

|– (q1, a, BZ)

|– (q1, , Z)

|– (q2, , Z)

Procesar aaababbb

Page 10: Autómatas de Pila

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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