Automatas de pila_no_det

Post on 07-Jul-2015

4.407 views 2 download

Transcript of Automatas de pila_no_det

Autómatas de pila no deterministas.

Generalidades, relación con lenguajes independientes del contexto, ejemplos

y aplicaciones

Por: Oscar Eduardo Sánchez Garcia.

1. Introducción

Construcción de compiladores

Teoría de Lenguajes Formales y Autómatas

Matemáticas

p u b l i c c l a s s A r r a y D e m o { p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) { i n t [ ] a n A r r a y ; a n A r r a y = n e w i n t [ 1 0 ] ; f o r ( i n t i = 0 ; i < a n A r r a y . l e n g t h ; i + + ) { a n A r r a y [ i ] = i ; S y s t e m . o u t . p r i n t ( a n A r r a y [ i ] + " " ) ; } S y s t e m . o u t . p r i n t l n ( ) ; }}

L e n g u a j e d e a l t o n i v e l

C ó d i g o e j e c u t a b l e

C o m p i l a d o r

Análisis Lexicográfico

Análisis Sintáctico

Análisis Semántico

OptimizaciónPreparación para la generación de código

Generación de código

Fas

es d

el

Com

pila

dor1

1 Fases del Compilador según Karen A. Lemone

Autómatas de pila no deterministas

2. Pila

La pila

• Estructura de datos• Permite las operaciones

– Quitar: pop()– Colocar: push()– Ver el elemento del tope:

stackTop()– Ver si la pila está vacía:

empty()

• Es una lista LIFOA

C

A

F

G

3. Autómata de pila no determinista (ADPND)

3.1 Generalidades

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H B

Q u i t a r C o l o c a r

z

Ejemplo

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H B z

¿Acepta aab?

3.1.1

¿Acepta aab?

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H B z

¿Acepta aab?

a / z / A H a / A / a b / b / bq 2q 1 q 2

q 1

z

a)

¿Acepta aab?

a / z / A H a / A / a b / b / bq 2q 1 q 2

q 1

z

a)

H

A

¿Acepta aab?

a / z / A H a / A / a b / b / bq 2q 1 q 2

q 1

z

a)

H

AH

a

¿Acepta aab?

a / z / A H a / A / a b / b / bq 2q 1 q 2

q 1

z

a)

H

AH

a Falló

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H Bz

b)

¿Acepta aab?

¿Acepta aab?

a / z / z a / z / z b / F / a H a Eq 3q 2 q 4q 1

z

b)

¿Acepta aab?

a / z / z a / z / z b / F / a H a Eq 3q 2 q 4q 1

z

b)

z

¿Acepta aab?

a / z / z a / z / z b / F / a H a Eq 3q 2 q 4q 1

z

b)

z z

¿Acepta aab?

a / z / z a / z / z b / F / a H a Eq 3q 2 q 4q 1

z

b)

z z

Falló

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H B z

c)

¿Acepta aab?

¿Acepta aab?

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

z

c)

¿Acepta aab?

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

z

c)

B

H

A

¿Acepta aab?

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

z

c)

B

H

A

B

H

b

F

¿Acepta aab?

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

z

c)

B

H

A

B

H

b

F

B

H

b

E

a

H

a

¿Acepta aab?

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

z

c)

B

H

A

B

H

b

F

B

H

b

E

a

H

a

El autómata acepta aab

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H B z

¿Acepta ab?

3.1.2

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H B z

¿Acepta ab? No

3.1.2

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H B z

¿Acepta aba?

3.1.3

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H B z

¿Acepta aba? No

3.1.3

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z)

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( , , )

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, , )

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, )

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, AHB)

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, AHB) ├── ( , , )

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, , )

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, )

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB)

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB) ├── ( , , )

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB) ├── ( q4, , )

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB) ├── ( q4, ε, )

3.2 Descripción instantánea

z

B

H

A

B

H

b

F

B

H

b

E

a

H

a

a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1

( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB) ├── ( q4, ε, aHaEbHB)

3.3 Especificación formal de un ADPND

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / z

a / z / A H B

M = ( Q, Σ, Γ, Δ, s, F, z)

Q = { q1, q2, q3, q4 }

Σ = { a, b }

Γ = { z, A, B, E, F, H, a, b}

s = q1

F = { q2, q4 }

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / za / z / A H B

Δ( q3, b, F ) = { ( q4, aHaE)}

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / za / z / A H B

Δ( , , ) = { ( , )}

Δ( q3, b, F ) = { ( q4, aHaE)}

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / za / z / A H B

Δ( q1, , ) = { ( , )}

Δ( q3, b, F ) = { ( q4, aHaE)}

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / za / z / A H B

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

Δ( q3, b, F ) = { ( q4, aHaE)}

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / za / z / A H B

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

Δ( q3, b, F ) = { ( q4, aHaE)}

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / za / z / A H B

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

Δ( q3, b, F ) = { ( q4, aHaE)}

q 1 q 2

q 3q 4

a / z / A H

a / A / ab / b / b

a / z / z

a / A / F bb / F / a H a E

a / z / za / z / A H B

Δ( q1, a, z ) = { ( q3, AHB)}

Δ( q3, b, F ) = { ( q4, aHaE)}

Δ( q1, a, z ) = { ( q1, AH), ( q2, z), ( q3, AHB) }

Δ( q1, a, A ) = { ( q2, a)}

Δ( q2, b, b ) = { ( q2, b)}

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

Δ( q3, a, A ) = { ( q3, Fb)}

Δ( q3, b, F ) = { ( q4, aHaE)}

La transiciones quedan:

El autómata queda M = ( Q, Σ, Γ, Δ, s, F, z)

donde

Q = { q1, q2, q3, q4 }

Σ = { a, b }

Γ = { z, A, B, E, F, H, a, b}

s = q1

F = { q2, q4 }

y Δ, la regla de transición, está dada por

Δ( q1, a, z ) = { ( q1, AH), ( q2, z), ( q3, AHB) }

Δ( q1, a, A ) = { ( q2, a)}

Δ( q2, b, b ) = { ( q2, b)}

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

Δ( q3, a, A ) = { ( q3, Fb)}

Δ( q3, b, F ) = { ( q4, aHaE)}

3.4 Definición de autómata de pila no determinista1.

Un autómata de pila no determinista 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, Δ: Q × ( Σ ∪ {ε} ) × ΓP( Q × Γ *)

s ∈ Q es el estado inicial o de partida

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

z ∈ Γ es el símbolo inicial o de partida

___________________________1 Basada en la definición de Kelly y de Isasi-Martínez-Borrajo

Δ : Q × ( Σ ∪ {ε} ) × Γ P( Q × Γ * )

Δ( q3, b, F ) = { ( q4, aHaE ) }

3.5 Definición de lenguaje aceptado por un autómata de pila no determinista1.

Sea M = ( Q, Σ, Γ, Δ, s, F, z ) un autómata de pila no determinista. El lenguaje aceptado por M se denota por L(M) y es el conjunto

__________________________

1 Dean Kelly

*}ypara),,(),,(| * {)( Γ∈∈Σ∈= uFpupzwswML ε*

3.6 Ejemplo 2

q 1 q 2 q 3

a / z / A z

a / A / A A

b / A / ε

b / A / ε ε / z / z

Acepta: ab, aabb, aaabbb, aaaabbbb, …

Es decir acepta el lenguaje {ab, aabb, aaabbb, aaaabbbb, …}

Formalmente acepta el lenguaje: { aibi | i ≥ 1}

3.7 Método de construcción de un ADPND a partir de una Gramática independiente del contexto

Ejemplo: }0,0|{ ≥≥ jiabbaa jjii

4.7 Método de construcción de un ADPND a partir de una Gramática independiente del contexto

Ejemplo: }0,0|{ ≥≥ jiabbaa jjii Gramática independiente del Contexto:

S AB

A aAa | b

B bBa | ε

4.7 Método de construcción de un ADPND a partir de una Gramática independiente del contexto

Ejemplo: }0,0|{ ≥≥ jiabbaa jjiiGramática independiente del Contexto:

S AB

A aAa | b

B bBa | ε

q 1

q 2

q 3

ε / z / S z ε / A / b

ε / B / ε

ε / S / A B ε / A / a A a

ε / B / b B ab / b / ε

a / a / ε

ε / z / ε

4.8 Método de construcción de una gramática independiente del contexto a partir de un ADPND

ADPND M con estado inicial q1, F = { q3 } y transiciones:

Δ( q1, a, z ) = { ( q1, Az) } Δ( q2, b, A ) = { ( q2, ε)}

Δ( q1, a, A ) = { ( q1, AA)} Δ( q2, ε, A ) = { ( q2, ε)}

Δ( q1, b, A ) = { ( q2, ε)} Δ( q2, ε, z ) = { ( q3, ε)}

Gramática independiente del contexto con símbolo inicial [q1zq3]

[q1Aq2] b

[q2Aq2] b | ε

[q2zq3] ε

[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]

4.9 Aplicación

Ejemplo: Especificar la sintaxis de una expresión algebraica (problema simplificado)

Gramática independiente del Contexto:

S S+T | T

T T*F | F

F a | (S)

Palabras que el autómata debe aceptar

(a+a)*a+a*a

a*(a+(a+a))

(a+a*(a+a))*(a*a)

ADPND para especificar la sintaxis de una expresión algebraica (problema simplificado)

q 1

q 2

q 3

ε / z / S z

ε / F / a

ε / F / ( S )

ε / S / S + Tε / S / T

ε / T / T * F

( / ( / ε

) / ) / ε

ε / z / ε

ε / T / F

* / * / ε

+ / + / εa / a / ε

El autómata es una guía para escribir el código del compilador

{ aibici | i ≥ 0 }

4.10 Poder de representación

{ aibi | i≥1}

{ai | i≥0}

Autómata Finito no determinista

Lenguajes regulares

Autómata de pila no determinista

Lenguajes independientes del contexto

Todos los lenguajes

Lenguaje independiente del contexto

S S+T | T

T T*F | F

F a | (S)

q 1

q 2

q 3

ε / z / S z

ε / F / a

ε / F / ( S )

ε / S / S + Tε / S / T

ε / T / T * F

( / ( / ε

) / ) / ε

ε / z / ε

ε / T / F

* / * / ε

+ / + / εa / a / ε

For

If

While

Do while

expresiones

4.11 Autómatas y lenguajes de programación de computadores

Identificadores

Enteros

Reales

Operadores

Cadenas de caracteres

Autómata Finito no determinista

Autómata de pila no determinista

Análisis léxico

Análisis sintáctico

5. Aplicaciones

Aplicaciones que requieren análisis sintáctico

• Compilador para un computador de automatización industrial

• Herramienta de consulta de bases de datos distribuidas

• Creación de un motor de base de datos relacional

• Creación de un motor de base de datos OO (Base de objetos) y su lenguaje de consulta (OQL)

• Simulador robótico con lenguaje de programación para robots

• Generador de analizador sintáctico (YACC, JAVACC)

Investigación y desarrollo

Bibliografía

• KELLY, Dean. Teoría de Autómatas y Lenguajes Formales. Prentice Hall.

• BRENA, Ramón. Autómatas y Lenguajes. Tec. Monterrey. 2003. Libro electrónico disponible en http://lizt.mty.itesm.mx/~rbrena/AyL.html

• ISASI VIÑUELA, Pedro ;MARTÍNEZ FERNANDEZ, Paloma; BORRAJO MILLÁN, Daniel. Lenguajes, Gramáticas y Autómatas; Un enfoque práctico. Editorial Addison-Wesley.

• HOPCROFT Y ULLMAN. Introducción a la Teoría de Autómatas, Lenguajes y Computación. Editorial Cecsa.