Lenguajes Independientes del Contexto Teoría del Autómata.

50
Lenguajes Independientes del Contexto Teoría del Autómata

Transcript of Lenguajes Independientes del Contexto Teoría del Autómata.

Page 1: Lenguajes Independientes del Contexto Teoría del Autómata.

Lenguajes Independientes del Contexto

Teoría del Autómata

Page 2: Lenguajes Independientes del Contexto Teoría del Autómata.

AFD como generadoresUn AFD (o AFN) puede verse como un aceptador de cadenas o como un generador de cadenas.

q0

q2

q3

q1q4

a

a

b

b

b

Acepta a(a* b*)b

Como productor haciendo las transiciones

q0- q1- q2- q2- q2- q5.

Genera: aaaab

Page 3: Lenguajes Independientes del Contexto Teoría del Autómata.

Las cadenas están formadas por a seguidas por otra parte.

Podemos representarlo como S aE, lo que sigue pueden ser cadenas de aes o bes, de E podemos ir a generar aes mediante A y bes mediante B, es decir, E A o E B.

Las aes se producen con A aA y las bes con B bB, eventualmente A y B producirán b, es decir A b y B b.

En suma: S aE

E A

E B

A aA

B bB

A b

B b

Page 4: Lenguajes Independientes del Contexto Teoría del Autómata.

Las reglas anteriores pueden escribirse como se muestra:S aE E A | B A aA | bB bB | b

Donde | significa “o”.Una derivación es una es una serie de sustituciones de el símbolo de la derecha de las producciones por las cadenas de la izquierda hasta obtener una cadena de símbolos terminales.Ejemplo

La siguiente es una derivación para la cadena aaab.

S aE aaA aaaA aaab

Page 5: Lenguajes Independientes del Contexto Teoría del Autómata.

Gramáticas regularesUna gramática es un cuarteto (N, , S , P) donde:

N es un conjunto de símbolos llamados no terminales.

es un conjunto finito y no vacío de símbolos terminales.

S N es el símbolo inicial

P es una colección, de reglas de sustitución, llamadas producciones, que son de la forma A w, donde A N y w es una cadena sobre N que satisface lo siguiente:

1 w contiene un no terminal como mucho.

2 si w contiene un no terminal se encuentra al extremo derecho de la cadena

Page 6: Lenguajes Independientes del Contexto Teoría del Autómata.

EjemploLa siguiente es una gramática

= {a, b}, N = {S, A}, S bA, A aaA | b |

Genera cadena de la forma ba2nb o ba2n.

L(G) = b(aa)*(b)

Las producciones se pueden representar como pares ordenados de N (N ).

P = {(S, bA), (A, aaA), (A, b), (S, )}

Page 7: Lenguajes Independientes del Contexto Teoría del Autómata.

EjerciciosSea S aS | bT y T aa

Derivar abaa, aabaa, aaabaa.

Probar que deriva akba2, k >= 1.

S aS aaS aaaS … akS akbT akbaa

Obtener gramaticas para

a*b a

a*b b*a

(a*b b*a)*

Page 8: Lenguajes Independientes del Contexto Teoría del Autómata.

AFD a gramática regular

A partir de un AFD dado por M = (Q, , s, F, ) definiendo la gramática por G = (N, , S, P) con

N = Q

=

S = s

P = {(q, ap)| (q, ap) = p} {(q, )| q F}

Page 9: Lenguajes Independientes del Contexto Teoría del Autómata.

q1 q2 q3

a

a,b

a,b

b

q1 aq1 | bq2

q1 aq3 | bq3 |

q1 aq3 | bq3

Page 10: Lenguajes Independientes del Contexto Teoría del Autómata.

Tarea

Obtener la expresión regular para la siguiente gramática regular.

S bA | aB |

A abaS

B babS

Page 11: Lenguajes Independientes del Contexto Teoría del Autómata.

Gramática regular a AFDSea G una gramática regular, G = (N, , S, P). Definimos M = (Q, , s, F, ) de la siguiente manera

Q = N { f }

s = S

F = { f }

1. Si A 1…nB es una producción, añada a Q los estados q1,…, qn y las transformaciones siguientes

(A, 1…n) = (q1, 2…n) = (qn–1, n) = B

2. Si A 1…nB es una producción, añada a Q los estados q1,…, qn y las transiciones siguientes

(A, 1…n) = (q1, 2…n) = (qn–1, n) = f

Page 12: Lenguajes Independientes del Contexto Teoría del Autómata.

Ejemplo

s q1 q2

a

a

b

S bA | aB |

A abaS

B babS

q3

b

a

q1

q4

q5

q6

a

b b

Page 13: Lenguajes Independientes del Contexto Teoría del Autómata.

Ejercicios

Obtener AFNs para la siguientes gramáticas regulares.

S aS | bB | b

B cC

C aS

S abA | B | baB |

A bS | b

B aS

Page 14: Lenguajes Independientes del Contexto Teoría del Autómata.

Gramáticas Libres del contexto La siguiente es una gramática

S aB | bA

A a | aS | bAA

B b | bS | aBB

No tiene las restricciones de una gramática regular.

Las producciones permiten más de un no terminal en el lado derecho.

Page 15: Lenguajes Independientes del Contexto Teoría del Autómata.

DefiniciónUna gramática libre del contexto (GIC) es un cuarteto (N, , S , P) donde:

N es un conjunto de símbolos llamados no terminales.

es un conjunto finito y no vacío de símbolos terminales.

S N es el símbolo inicial

P es una colección, de reglas de sustitución, llamadas producciones, que son de la forma A w, donde A N y w es una cadena sobre ( N)*. Es decir, las producciones pueden tener cero, uno o más no terminales que aparezcan en cualquier lugar del lado derecho.

El lenguaje generado es conocido por Lenguaje independiente del contexto (LIC).

Page 16: Lenguajes Independientes del Contexto Teoría del Autómata.

Ejemplo

Sea la gramática S aSb |

Esta gramática genera el lenguaje (anbn | n>=0} que no es regular.

Page 17: Lenguajes Independientes del Contexto Teoría del Autómata.

EjerciciosSea la gramática S AA

A AAA | a | bA | Ab

Obtener derivaciones para b2aba2ba.

Probar como puede obtenerse una derivación para

Para todo n > 0 y m1, m2,…, m2n+1 >= 0

12221 ... nn mmmm abbaabb

Page 18: Lenguajes Independientes del Contexto Teoría del Autómata.

EjerciciosObtener gramáticas independientes del contexto para los siguientes lenguaje

(ambn | m >= n}

(w {a, b}*| w tiene el doble de aes que de bes}

(ambn | n <= m <= 2n} S aSb | aaSb |

(ambncpdq | m+n >= p+q} S aS | aSd | A | B | C

A bA | bAc |

B aBc | aB | A |

C bCd | bC | A |

Page 19: Lenguajes Independientes del Contexto Teoría del Autómata.

Árboles de derivaciónConsidere la siguiente es una gramática

S AB

A aA | a

B bB | b

La cadena aabbb se puede derivar mediante

S AB AbB AbbB Abbb aAbbb aabbb

El árbol de derivación es S

A B

a A

a B

Bb

b

b

Page 20: Lenguajes Independientes del Contexto Teoría del Autómata.

La cadena aabbb se puede derivar también mediante las siguientes derivaciones

S AB aAB aaBBB aabBB aabbB aabbb

S AB aAB aAbB aAbbB aAbbb aabbb

El árbol de derivación es el mismo que el anterior

Considere la siguiente es una gramáticaS SbS | ScS | a

Las siguientes derivaciones son para abaca

S SbS SbScS SbSca Sbaca abaca

S ScS SbScS abScS abacS abaca

Los árboles de derivación se muestran a continuación

Page 21: Lenguajes Independientes del Contexto Teoría del Autómata.

S

S S

a S

a

Sc

a

b

S

S S

bS

a

Sa

a

c

S SbS SbScS SbSca Sbaca abaca

S ScS SbScS abScS abacS abaca

Page 22: Lenguajes Independientes del Contexto Teoría del Autómata.

Ejemplos S → x | y | z | S + S | S – S | S *S | S/S | (S)

S S + S S + S*S S + S*(S) S + S*(S – S)

x + S*(S – S) x + y*(S – S) x + y*(z – S) x + y*(z – y)

Dibujar el árbol de derivación, ¿es ambiguo?

Page 23: Lenguajes Independientes del Contexto Teoría del Autómata.

Una gramática libre de contexto para un lenguaje consistente en todas las cadenas que se pueden formar con las letras a y b, habiendo un número diferente de una que de otra, sería:

S → U | V

U → TaU | TaT

V → TbV | TbT

T → aTbT | bTaT | ε

T genera todas las cadenas con la misma cantidad de letras a que b, U genera todas las cadenas con más letras a, y V todas las cadenas con más letras b.

Page 24: Lenguajes Independientes del Contexto Teoría del Autómata.

Otro ejemplo para un lenguaje es {anbncm+n | n>=0 , m>=0} puede ser generado por la siguiente gramática libre de contexto.

S → aSc | BB → bBc | ε

Es ambiguo?

Page 25: Lenguajes Independientes del Contexto Teoría del Autómata.

Simplificación de gramáticas independientes del contexto

Sea G = (N, , S, P) una gramática independiente del contexto. Transformaremos G en G'= (N', , S, P') de forma que L(G') = L(G), y para todo A N' se obtenga que A * w para algún w *.

Page 26: Lenguajes Independientes del Contexto Teoría del Autómata.

Algoritmo 1.

1. Iniciar N' con todos los no terminales de A para los que A w, es una producción de G, con w *.

2. Inicializar P' con todas las producciones A w para las cuales A N y w *.

3. Repetir

Añadir a N ' todos los no terminales A para los cuales A w, para algún w (N ' *) que sea una producción de P y añadirla P '.

hasta que no puedan añadir más no terminales a N '.

Eliminación de no terminales que no deriven cadenas terminales.

Page 27: Lenguajes Independientes del Contexto Teoría del Autómata.

EjemploS Aa | B | D

B b

A aA | bA | B

C abc

C es una producción inútil

1er paso: N’ = {B, C}

2o paso: P = {B b}

3er paso: N’ = {B, C, A, S}

Page 28: Lenguajes Independientes del Contexto Teoría del Autómata.

EjemploS aAb | cEB | CE

A dBE | eeC

B ff | D

C gFB | ae

D h

Page 29: Lenguajes Independientes del Contexto Teoría del Autómata.

Algoritmo 2. Elimina aquellos terminales y no terminales que no aparezcan en las cadenas que se deriven a partir de S.

Sea G = (N, , S, P) una gramática independiente del contexto.

Transformaremos G en G '= (N', , S, P ') de forma que

L(G ') = L(G),

y para todo X N ' ', se tenga que

S aXb

para las cadenas a y b de (N ' ')*.

Page 30: Lenguajes Independientes del Contexto Teoría del Autómata.

Algoritmo 2. (cont.)

1. Inicializar N ' de forma que contenga el símbolo inicial S, e inicializar P ' y ' a .

2. Repetir

Para A N ', si A w es una producción de P, entonces

1. Introducir A w en P '.

2. Para todo no terminal B de w, introducir B en N '.

3. Para todo terminal de w, introducir en '.

hasta que no se puedan añadir nuevas producciones

Page 31: Lenguajes Independientes del Contexto Teoría del Autómata.

Algoritmo 3 Identifica el conjunto N, de todos los no terminales anulables en una gramática independiente del contexto.

1. Inicializar N con todos los no terminales A para los cuales existe una producción , A .

2. Repetir

Si B w para algún w (N )* y todos los símbolos de w están en N, añadir B a N.

hasta que no se añadan más no terminales a N.

Page 32: Lenguajes Independientes del Contexto Teoría del Autómata.

Algoritmo 3 (cont.)

Una vez identificados los no terminales anulables, se modifican las reglas de producción con el fin de eliminar la producciones .

Esto se realiza sustituyendo producciones de la forma B X1X2…Xn por las producciones que se formen al eliminar los

subconjuntos de Xi que son anulables.

Page 33: Lenguajes Independientes del Contexto Teoría del Autómata.

Algoritmo 3 (cont.)

Se crea un nuevo conjunto de producciones P’ como sigue:

Si B X1X2…Xn es una producción de P, entonces en P’

introduciremos todas las producciones de la forma B Y1Y2…Yn,

donde las Yi satisfagan:

Yi = Xi si Xi no es anulable

Yi = Xi o si Xi es anulable

Yi no es para toda i (es decir, no se introduce en P’

ninguna producción de la forma

B )

En una gramática que contenga , se pueden eliminar todas las producciones y después añadir la producción S .

Page 34: Lenguajes Independientes del Contexto Teoría del Autómata.

EjemploN = {B, C, D}

S AB S AB | A

A aA | abB | aCa A aA | abB | ab | aCa | aa

B bA | BB | B bA | BB | B

C D dB | d | BCB | BC | CB | BB

D dB | BCB B | C

Con 1: S AB abB abbA abbaA abbaabB abbaab

Con 2: S A abB abbA abbaA abbaab

Page 35: Lenguajes Independientes del Contexto Teoría del Autómata.

Eliminación de producciones unitarias

Producciones de la forma A B se conocen como unitarias. Para A N se define

Unitario(A) = {B N | A * B usando solamente producciones unitarias}

Las producciones unitarias agregan pasos inútiles al proceso de derivación de cadenas de terminales.

El siguiente algoritmo elimina todas las producciones unitarias de una gramática G. Sea G = (N, , S, P) se obtendrá G’, tal que G’ = (N, , S, P’) no contiene producciones unitarias como sigue:

Page 36: Lenguajes Independientes del Contexto Teoría del Autómata.

Eliminación de producciones unitarias (cont.)

1. Inicializar P’ de forma que contenga todos los elementos de P.

2. Para cada A N, obtener el conjunto Unitario(A).

3. Para cada A para el cual Unitario(A) {A}.

Para cada B Unitario(A).

Para cada producción no unitaria B w de P

Añadir A w a P’

4. Eliminar todas las producciones unitarias que haya en P’.

Page 37: Lenguajes Independientes del Contexto Teoría del Autómata.

S A | Aa Unitario(S) = {S, A, B, C, D}

A B Unitario(A) = {A, B, C, D}

B C | bUnitario(B) = {B, C, D}

C D | abUnitario(C) = {C, D}

D b Unitario(D) = {D}

Se introducen las producciones:

S b | ab, A b | ab, B b | ab, C b | ab

Se eliminan las unitarias y resulta:

S b | ab | Aa C b | ab

A b | ab D b

B b | ab

Page 38: Lenguajes Independientes del Contexto Teoría del Autómata.

Forma normal de Chomsky Una gramática independiente del contexto esta en forma normal de Chomsky si no contiene producciones y todas las producciones son de la forma A a para a , o de la forma A BC, donde B y C son no terminales.

Para transformar una gramática independiente del contexto a la forma normal de Chomsky, primero se eliminan todas las transformaciones , los símbolos inútiles y las producciones unitarias de G.

Si se tiene una producción de la forma A w, con |w| > 1, donde w = X1X2…Xn. Si Xi es un símbolo terminal ,

sustituimos Xi por un nuevo no terminal C y añadimos la

producción C . De esta forma A w contendrá solo no

terminales.

Page 39: Lenguajes Independientes del Contexto Teoría del Autómata.

Forma normal de Chomsky (cont.)

La producción tendrá la forma A B1B2…Bn, esta se puede

reemplazar por las producciones

A B1D1

D1 B2D2

Dn-2 Bn-1Bn

donde los Di son nuevo no terminales.

Page 40: Lenguajes Independientes del Contexto Teoría del Autómata.

S bA | aB

A bAA | aS | a

B aBB | bS | b

Después de la primera transformación:

S CbA | CaB

A CbAA | CaS | a

B CaBB | CbS | b

Ca a

Cb b

Después de la segunda transformación:

S CbA | CaB

A CbD1 | CaS | a

D1 A A

B CaD2 | CbS | b

Ca a

Cb b

D2 BB

Page 41: Lenguajes Independientes del Contexto Teoría del Autómata.

Propiedades de los lenguajes independientes del contexto

Se puede probar mediante inducción que, si se puede derivar w y | w | >0, la derivación tiene 2 | w | etapas en una gramática en forma normal de Chomsky.

En el nivel m del árbol de derivación hay, como máximo, 2m nodos padre, por tanto, el camino más largo en un árbol de derivación consta de m + 2 nodos, entonces 2m es la longitud máxima de la cadena derivada.

Page 42: Lenguajes Independientes del Contexto Teoría del Autómata.

Lema del bombeo para GIC Sea L un LIC que no contiene . Existe un entero k para el

cual, si z L y | z | > k, entonces z se puede volver a escribir como z = uvwxy con las propiedades siguientes:

1. | vwx | k.

2. Al menos o v o x no es .

3. uviwxiy L para todo i 0.

Demostración. Sea G = (N, , S, P) con L = L(G) y sea n el número de no terminales de N y k = 2n. Supongamos z L con | z | > k.

Page 43: Lenguajes Independientes del Contexto Teoría del Autómata.

Lema del bombeo para GIC (cont.)

El camino más largo de derivación debe contener n + 2 nodos, n + 1 serán no terminales, por tanto, algún no terminal se repite. Entonces

S * uAy * uvAxy * uvwxy = z

por tanto | vwx | 2n. Puesto que A * vAx, debemos tener A * viAxi para algún i 0. Por tanto S * uviwxiy para todo i 0. Como A * vAx, se debe tener que A BC * vAx * vwx. Entonces B * v y C * Ax o si no B * vA y C * x. En el primer caso | v | 1 y en el segundo | x | 1, con lo que o v o x no es .

Page 44: Lenguajes Independientes del Contexto Teoría del Autómata.

EjemploConsiderar el lenguaje L = {aibj | j = i2}.

Si z L, z = akbk^2, por el lema del bombeo z = uvwxy.

Si v = arbs, vi = (arbs)i y por tanto no pertenece a L. Igualmente si x = arbs. Las únicas posibilidades son

v = ar y x = as

v = br y x = bs v = ar y x = bs.

En el primer caso tenemos: uv2wx2y = ak+r+sbk^2

En el segundo caso tenemos: uv2wx2y = akbk^2+r+s

En el tercer caso tenemos: uv2wx2y = ak+(i–1)rbk^2+(i–1)s

Los cuales no pertenecen a L.

Page 45: Lenguajes Independientes del Contexto Teoría del Autómata.

Lema

Sea G = (N, , S, P) una GIC que no tiene producciones y que está en forma normal de Chomsky. Sea x una cadena de *. Se puede determinar, para cada A N y para cada subcadena w de x, si A * w.

Demostración. Sea n = | x | y sea wij la subcadena que

comienza en la posición i y tiene j caracteres. Probaremos el lema con inducción sobre j.

Si j = 1, entonces A * w si y solo si existe la producción A wij esta en P, por tanto se puede

determinar lo enunciado en el lema.

Page 46: Lenguajes Independientes del Contexto Teoría del Autómata.

Lema

Ahora supongamos que se cumple para cadenas de longitud menor que j con j > 1. Observe que A wij si

y solo si A BC para algunos B y C, los cuales B * wik y C * wk+1,j-k para k entre 1 y j 1.

Entonces tanto wik como wk+1,j-k tiene longitud menor

que j y se puede determinar si B * wik y si C * wk+1,j-

k.

De lo anterior, si j = n entonces se puede determinar si S * w1,j = w1,n = x. Es decir si x L(G) para cada x

*.

Page 47: Lenguajes Independientes del Contexto Teoría del Autómata.

Algoritmo CYK (Cocke, Younger y Kasami)

Sirve para determinar si x L(G).

1. Para cada i = 1, 2, …, n, sea

Ni1 = {A | A wi1}

Es decir, Ni1 es el subconjunto de todos los no terminales que producen el

i-ésimo símbolo de x.

2. Para cada j = 2, 3, …, n, hacer lo siguiente:

Para cada i = 1, 2, …, n - j + 1, hacer lo siguiente:

a. Iniciar Nij =

b. Para cada k = 1, 2, …, j 1, añadir a Nij todos los no

terminales A para los cuales A BC, con B Nik y C

Ni+k,jk.

3. Si S N1n, entonces x L(G).

Page 48: Lenguajes Independientes del Contexto Teoría del Autómata.

Ejemplo de CYKSea la gramática

S AB | BC

A BA | a

B CC | b

C AB | a

Para la cadena bbab se genera la siguiente tabla

Para la cadena bbab se genera la siguiente tabla

j = 2, i = 1..3 y k = 1, Nij Ni+k,j–k = N12

N21, N22 N31, N32 N41,

j = 3, i = 1..2 y k = 1..2 Nij Ni+k,j–k = N13

N22, N13 N31, N23 N32, N23 N41,

j = 4, i = 1 y k = 1..3 Nij Ni+k,j–k = N14

N23, N14 N32, N14 N41,

B B A S, CB A, S S,C

A,C S, CB

j = 1 j = 2 j = 3 j = 4

j = 1

j = 2

j = 3

j = 4

b

b

a

b

Page 49: Lenguajes Independientes del Contexto Teoría del Autómata.

Demostrar que bba, bab, babba pertenecen al lenguaje anterior

Page 50: Lenguajes Independientes del Contexto Teoría del Autómata.

Algunos teoremas

Teorema. Si L1 y L2 son lenguajes independientes del contexto, entonces L1 L2 es un lenguaje independiente del contexto.

Teorema. Si L es un lenguaje independiente del contexto, entonces L* es un lenguaje independiente del contexto.

Teorema. La concatenación de lenguajes independientes del contexto es independiente del contexto.

Los lenguajes independientes del contexto no son cerrados respecto a la intersección ni el complemento.