Gramáticas libres de contexto en su habitát

Preview:

Citation preview

Gramáticas libres de contexto ensu habitat

A veces te vas por las ramas para no tener que ir directo a la raíz. Sobre todo si la raíz es dolorosa ypuede derribar el árbol—Albert Espinosa

Ivan Meza

Son una tupla , donde:

Gramáticas libres de contextoG = (V , Σ, P , S)

es otro alfabeto que denominamos símbolos no terminales(generalmente en mayúsculas)

es un alfabeto que denominamos símbolos terminales es conjunto de reglas con la forma donde

que denominamos símbolo inicial

V

ΣP V → α α ∈ (Σ ∪ V )∗

S ∈ V

GLC para el lenguaje de ER donde G = ({R, B}, {a, b, ϵ, ∅}, P , R, +, ∗, (, )) P

R → BR → R + RR → R∗R → RRR → (R)B → aB → bB → ϵB → ∅

Derivaciones para: a + (ab)

Derivación a la izquierdaa + (ab)

R⇒ R + R⇒ B + R⇒ a + R⇒ a + (R)⇒ a + (RR)⇒ a + (BR)⇒ a + (aR)⇒ a + (aB)⇒ a + (ab)

Derivación a la derechaa + (ab)

R⇒ R + R⇒ R + (R)⇒ R + (RR)⇒ R + (RB)⇒ R + (Rb)⇒ R + (Bb)⇒ R + (ab)⇒ B + (ab)⇒ a + (ab)

Derivaciones diferentes

¿Árboles?

Árbol primera derivación

a b

B B

a R R

B ( R )

R + R

R

Árbol segunda derivación

a b

B B

a R R

B ( R )

R + R

R

a b

B B

a R R

B ( R )

R + R

R

a b

B B

a R R

B ( R )

R + R

R

Dos derivaciones diferentes producen el mismo árbol

Derivaciones para: a + ab

Derivación a la izquierdaa + ab

R⇒ R + R⇒ B + R⇒ a + R⇒ a + RR⇒ a + BR⇒ a + aR⇒ a + aB⇒ a + ab

¡¡Segunda derivación a laizquierda!!a + ab

R⇒ RR⇒ R + RR⇒ B + RR⇒ a + RR⇒ a + BR⇒ a + aR⇒ a + aB⇒ a + ab

Derivaciones diferentes

¿Árboles?

Árbol primera derivación

a b

a B B

B R R

R + R

R

Árbol segunda derivación

a a

B B b

R + R B

R R

R

a b

a B B

B R R

R + R

R

a a

B B b

R + R B

R R

R

Dos derivaciones diferentes producen dos árboles diferentes

¡¡Dos derivaciones diferentesproducen dos árbolesdiferentes!!

A esta propiedad de que una cadena tiene dos "signi�cados"diferentes le llamamos

Ambigüedad

veo al gato con el telescopio

¿quien tiene el telescopio?

S

VP

veo NP PP

al gato con el telescopio

S

VP

veo NP

NP PP

al gato con el telescopio

Ambigüedad

Los humanos encontramos la ambigüedad muy divertida

Hola, ¿cómo te llamas?Maria de los Ángeles ¿y tú?Daniel de Nueva York

Oye, pues mi hijo en su nuevo trabajo se siente como pez en elagua.¿Qué hace?Nada

Definiciones

Una gramática es ambigua si para cuando menos una

cadena tiene más de un árbol de derivación

Si todas las cadenas de una gramática tienen cuando menos

un árbol de derivación no es ambigua

Reducción de gramáticasambiguasMalas noticias: no existe un algoritmo para reducirgramáticas

Pero hay algunas estrategias

Elegir un agrupamiento paramismo operador: izquierda oderechaa + a + a

Forzar preferencia: introducirnuevas variables

donde G = ({E, T , F , B}, {a, b, ϵ, ∅, P , R, +, ∗, (, )}, E)

P

E → T |E + TT → F |TFF → B|F ∗ |(E)B → aB → bB → ϵB → ∅

Derivación por la izquierdaa + ab

E⇒ E + T⇒ T + T⇒ F + T⇒ B + T⇒ a + T⇒ a + TF⇒ a + FF⇒ a + BF⇒ a + aF⇒ a + aB⇒ a + ab

Árbol primera derivación

E

E + T

T T F

F F B

B B b

a a

Derivación por la derechaa + ab

E⇒ E + T⇒ E + TF⇒ E + TB⇒ E + Tb⇒ E + Fb⇒ E + Bb⇒ E + ab⇒ T + ab⇒ F + ab⇒ B + ab⇒ a + ab

Árbol segunda derivación

E

E + T

T T F

F F B

B B b

a a

Intentar con: a ∗ +(a ∗ b)∗

Intentar con: ∪anbncmdm anbmcmdn

Por un lado... y anbn cndn

A → aAb|abB → cBd|cd

Por otro lado anbmcmdn

C → aCd|aDdD → bDc|bc

E → AB|C

¿Qué pasa cuando ?n = m

OjoHay lenguajes inherentemente ambiguos

Regresando a operaciones con

Además podemos definir

y = ( , Σ, , )G1 V1 P1 S1 = ( , Σ, , )G2 V2 P2 S2

= ( ∪ , Σ, ∪ ∪ { → + }, )GU V1 V2 P1 P2 SU S1 S2 SU

= ( ∪ , Σ, ∪ ∪ { → }, )GC V1 V2 P1 P2 SC S1S2 SC

= ( , Σ, ∪ { → |ϵ}, )G∗ V1 P1 S∗ S1S∗ S∗

¿A qué lenguajes corresponden?

G = (V , Σ, ∅, S)

G = (V , Σ, {S → ϵ}, S)

G = (V , Σ, {S → a}, S)

EntoncesTenemos las operaciones de composición para cualquier GLC

Tenemos lenguajes básicos como GLC

Podemos usar las operaciones sobre las GLR

¡Podemos generar todos los lenguajes regulares congramáticas!

Convertir de AF a GLC

q₀ q₁b

a a

b

a bQ

q0 q0 q1

q1 q1 q0

se transforma en , se transforma en q0 A q1 B

a bV

A A B

B B A

con , reescribir las transicionesa reglas

G = ({A, B}, {a, b}, P , A)

A → aAA → bBB → aBB → bA

Incluir las �nales, que lleguen a un estado �nal

A → bB → a

Derivación por la izquierda yderechaababa

A⇒ aA⇒ abB⇒ abaB⇒ ababA⇒ ababa

EntoncesDado un AF podemos encontrar una GLC

¿Dada una GLC podemos encontrar un AF?

Cuidado... mucho cuidado

Sí y Solo sí tienen la misma forma A → cB|a

con , reescribir las reglas atransiciones

G = ({A, B}, {a, b}, P , A)

A → aA δ(A, a) = A

A → bB δ(A, b) = B

B → aB δ(B, a) = B

B → bA δ(B, b) = A

A → b δ(A, b) = F

B → a δ(A, a) = F

Son una tupla , donde:

Gramáticas regularesG = (V , Σ, P , S)

es otro alfabeto que denominamos símbolos no terminales(generalmente en mayúsculas)

es un alfabeto que denominamos símbolos terminales es conjunto de reglas con la forma donde y

que denominamos símbolo inicial

V

ΣP A → aB|a a ∈ ΣA, B ∈ VS ∈ V

Jerarquía de ChomskyLenguaje Gramática Máquina

Independiente de contexto Tipo 2, ??

Regular Tipo 3, Autómata finito

V → α

V → aA

Autómata de pilaUn AFND- + una pilaϵ

No confundir

Autómata de pilaEs una tupla (Q, Σ, Γ, , , A, δ)q0 Z0

conjunto finito de estados alfabeto de cadenas reconocidas alfabeto de pila estado inicial símbolo inicial de la pila

estados finales función de transición

QΣΓq0Z0Aδ Q × (Σ ∪ {ϵ}) × Γ → Q × Γ∗

Un AFND- + una pilaϵ

AF vs AFND vs AFND- vs APϵ

AF AFND AFND- APϵ

Q Q Q Q

Σ Σ Σ ΣΓ

∈ Qq0 ∈ Qq0 ∈ Qq0 ∈ Qq0

∈ ΓZ0

A ⊆ Q A ⊆ Q A ⊆ Q A ⊆ Q

Q × Σ → Q Q × Σ → 2Q Q × (Σ ∪ {ϵ}) → 2Q Q × (Σ ∪ {ϵ}) × Γ → Q × Γ∗

q₀ q₁ q₂b,A/ε

b,A/εa,Z₀/AZ₀

a,A/AA

ε,Z₀/Z₀

Posición inicialEstado: Pila:

q0Z0

OperacionesPush: Pop: Sin operación:

A/BAA/ϵ

A/A

q₀ q₁ q₂b,A/ε

b,A/εa,Z₀/AZ₀

a,A/AA

ε,Z₀/Z₀

Z0

¿Qué recuerda el AP?

ivanvladimir@gmail.com ivanvladimir.github.io ivanvladimir

¿Qué es un computadora? by is licensed under a.

Creado a partir de la obra en.

Ivan V. Meza RuizCreative Commons Reconocimiento 4.0 Internacional License

http://turing.iimas.unam.mx/~ivanvladimir/slides/lfya/intro.html

Recommended