Subido por Lucía Domínguez Rodrigo

Tema1-TALF-Chomsky

Anuncio
TEORÍA DE AUTÓMATAS
Y LENGUAJES FORMALES
(TALF)
BLOQUE I: PRELIMINARES
Tema 1: Introducción
Jerarquía de Chomsky: resumen y ejemplos
Grado en Ingeniería Informática
URJC
Ana Pradera
Ingeniería Informática (URJC)
TALF
1 / 12
Recordemos antes de nada la notación utilizada al tratar con una
gramática G = (ΣN , ΣT , S, P):
ΣN son los símbolos no terminales, denotados A, B, C, ....
ΣT son los símbolos terminales, denotados a, b, c, ....
S ∈ ΣN es el axioma de la gramática.
La unión de ΣN y ΣT se denota mediante Σ, es decir, se tiene
Σ = ΣN ∪ ΣT , y por lo tanto:
Σ∗ , el cierre universal de Σ, es el conjunto de todas las cadenas
formadas por símbolos tanto terminales como no terminales,
incluyendo la cadena vacía λ.
Ejemplos: λ, a, A, S, aBCc, ab, BAC, ... ∈ Σ∗ .
Σ+ , el cierre universal positivo de Σ, es el conjunto de todas las
cadenas formadas por símbolos tanto terminales como no
terminales, excluyendo la cadena vacía λ.
Ejemplos: λ ∈
/ Σ+ , a, A, S, aBCc, ab, BAC, ... ∈ Σ+ .
Ingeniería Informática (URJC)
TALF
2 / 12
P es un conjunto finito de reglas de la forma xAy ::= v (o,
equivalentemente, xAy → v ) donde A ∈ ΣN representa un
símbolo no terminal cualquiera y x, y , v ∈ Σ∗ representan
cadenas cualesquiera de símbolos terminales y/o no terminales.
Por lo tanto, dada una regla de una gramática:
Su parte izquierda tiene que tener al menos un símbolo no
terminal, que puede estar rodeado, o no (ya que tanto x como y , o
ambas a la vez, podrían ser vacías), de cadenas de símbolos
terminales y/o no terminales.
Su parte derecha puede ser la palabra vacía λ o cualquier cadena
de símbolos terminales y/o no terminales (ya que v ∈ Σ∗ ).
Chomsky, imponiendo restricciones adicionales a las reglas,
estableció una jerarquía formada por cuatro tipos de gramáticas:
Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0
Ingeniería Informática (URJC)
TALF
3 / 12
Gramáticas de tipo 0
Todas sus reglas tienen que ser de la forma
xAy ::= v ,
x, y , v ∈ Σ∗ , A ∈ ΣN
El esquema anterior coincide exactamente con la definición de
regla de una gramática, sin imponer ninguna restricción.
Por lo tanto, cualquier regla es de tipo 0, y cualquier gramática es
una gramática de tipo 0.
Ejemplos de reglas de tipo 0
S → λ, B → λ, A → aAb, S → BAbS, aA → λ, SaC → a, CCC → ab,
Caa → ABbS
Ejemplos de reglas que no son de tipo 0 (no son reglas)
a → λ, ab → ABa, λ → AS (no tienen ningún símbolo no terminal a la
izquierda).
Ingeniería Informática (URJC)
TALF
4 / 12
Gramáticas de tipo 1
Todas sus reglas tienen que ser de una de las dos siguientes formas:
S ::= λ
o bien
xAy ::= xvy ,
x, y ∈ Σ∗ , A ∈ ΣN , v ∈ Σ+
Las reglas de tipo 1 se llaman dependientes del contexto porque
en el esquema xAy ::= xvy la transformación de A, que
representa un símbolo no terminal cualquiera (que podría ser
también el axioma S), en la cadena de símbolos terminales y/o no
terminales v , depende de lo que rodea a A (las cadenas x e y ),
es decir, de su contexto, que se debe mantener.
Ingeniería Informática (URJC)
TALF
5 / 12
Ejemplos de reglas de tipo 1
S ::= λ es de tipo 1 (siendo S el axioma).
Las siguientes reglas son de tipo 1, porque encajan con el
esquema xAy ::= xvy como se indica en la parte derecha de la
tabla:
B ::= a
S ::= aB
B ::= aCb
aSaC ::= abaC
aSaC ::= aSabb
aBC ::= aBB
SS ::= SBc
BC ::= Bcc
BCc ::= cCCc
Ingeniería Informática (URJC)
x
x
x
x
x
x
x
x
x
=λ
=λ
=λ
=a
= aSa
= aB
=S
=B
=λ
TALF
A=B
A=S
A=B
A=S
A=C
A=C
A=S
A=C
A=B
y
y
y
y
y
y
y
y
y
=λ
=λ
=λ
= aC
=λ
=λ
=λ
=λ
= Cc
v
v
v
v
v
v
v
v
v
=a
= aB
= aCb
=b
= bb
=B
= Bc
= cc
= cC
6 / 12
Ejemplos de reglas que no son de tipo 1 (1/3)
(y por lo tanto tampoco de tipos 2 o 3, ya que Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1)
Una regla con parte derecha vacía es de tipo 1 si y solo si su
parte izquierda contiene exclusivamente el axioma S (ya que en
el esquema xAy ::= xvy es v ∈ Σ+ , lo cual implica v 6= λ y por lo
tanto xvy 6= λ).
B ::= λ (con B 6= S), AB ::= λ, aAb ::= λ no son de tipo 1.
Salvo en el caso S ::= λ, las reglas de tipo 1 nunca pueden tener
menos símbolos a la derecha que a la izquierda (ya que x e y
aparecen a ambos lados de la regla y el símbolo A de la izquierda
se transforma a la derecha en una cadena no vacía v ).
AB ::= A, ABC ::= Ab, Ab ::= b, BaBB ::= CaC no son de tipo 1.
Ingeniería Informática (URJC)
TALF
7 / 12
Ejemplos de reglas que no son de tipo 1 (2/3)
La parte derecha de una regla de tipo 1 cuya parte izquierda
empieza (termina) por símbolos terminales tiene que empezar
(terminar) por esos mismos símbolos (ya que estarán
necesariamente en las cadenas x o y , respectivamente).
aA ::= bA o aBD ::= BSac no son de tipo 1
(sus partes derechas deberían empezar por “a”).
DaAbb ::= aDaAb o Sbb ::= aSbSb no son de tipo 1
(sus partes derechas deberían terminar por “bb”).
abAc ::= abSABb , abSDc ::= bSAScc o abSc ::= bbASD
no son de tipo 1
(sus partes derechas deberían empezar por “ab” y terminar por
“c”).
Ingeniería Informática (URJC)
TALF
8 / 12
Ejemplos de reglas que no son de tipo 1 (3/3)
La parte derecha de una regla de tipo 1 cuya parte izquierda tiene
al menos dos símbolos, debe o bien empezar o bien terminar con
el mismo símbolo con el que empieza/termina la parte izquierda
(ya que al menos uno de los dos pertenecerá a x o a y ).
BC ::= aBbc no es de tipo 1, ya que su parte derecha debería
bien empezar por B (si se toma x = B, A = C, y = λ), o bien
terminar por C (si se toma x = λ, A = B, y = C).
SaBbC ::= SBbSC no es de tipo 1, ya que no encaja con el
esquema xAy ::= xvy . En efecto:
Tomando A = S, la parte derecha debería acabar en y = aBbC.
Tomando A = B, la parte derecha debería empezar por x = Sa (y
acabar por y = bC).
Tomando A = C, la parte derecha debería empezar por x = SaBb.
Ingeniería Informática (URJC)
TALF
9 / 12
Gramáticas de tipo 2
Todas sus reglas tienen que ser de una de las dos siguientes formas:
S ::= λ
A ::= v ,
o bien
A ∈ ΣN , v ∈ Σ+
Una regla con parte derecha vacía es de tipo 2 si y solo si su
parte izquierda contiene exclusivamente el axioma S (ya que en
el segundo esquema es v ∈ Σ+ , lo cual implica v 6= λ).
S ::= λ es de tipo 2 (siendo S el axioma).
B ::= λ (con B 6= S) no es de tipo 2 (y por lo tanto tampoco de tipo
3, ya que Tipo 3 ⊂ Tipo 2). Ni siquiera es de tipo 1.
Una regla con parte derecha no vacía es de tipo 2 si y solo si
tiene a la izquierda un único símbolo no terminal (cualquiera, el
axioma incluido).
C ::= B, S ::= baC, D ::= a, D ::= BDSb son de tipo 2.
AS ::= B, Sa ::= b, DdA ::= DdSb no son de tipo 2 (ni por lo tanto
de tipo 3). Las dos primeras ni siquiera son de tipo 1.
Ingeniería Informática (URJC)
TALF
10 / 12
Gramáticas de tipo 3
Hay dos clases de gramáticas de tipo 3:
gramáticas lineales por la izquierda (GLIs), en las que todas las
reglas tienen que ser de una de las tres siguientes formas:
S ::= λ o bien
A ::= Ba, A, B ∈ ΣN , a ∈ ΣT
A ::= a, A ∈ ΣN , a ∈ ΣT
o bien
gramáticas lineales por la derecha (GLDs), en las que todas las
reglas tienen que ser de una de las tres siguientes formas:
S ::= λ o bien
A ::= aB, A, B ∈ ΣN , a ∈ ΣT
A ::= a, A ∈ ΣN , a ∈ ΣT
Ingeniería Informática (URJC)
TALF
o bien
11 / 12
Una regla con parte derecha vacía es de tipo 3 si y solo si su
parte izquierda contiene exclusivamente el axioma S (ya que los
otros esquemas tienen parte derecha distinta de λ).
S ::= λ es de tipo 3 (siendo S el axioma).
B ::= λ (con B 6= S) no es de tipo 3 (ni siquiera es de tipo 2).
Una regla con parte derecha no vacía es de tipo 3 si y solo si
tiene a la izquierda un único símbolo no terminal (cualquiera, el
axioma incluido) y tiene a la derecha o bien un único símbolo
terminal, o bien dos símbolos, uno no terminal seguido de uno
terminal (caso GLI) o al revés (caso GLD).
C ::= a, S ::= b, C ::= Ca, B ::= Sb son de tipo 3 (GLI).
C ::= a, S ::= b, C ::= aB, S ::= bS son de tipo 3 (GLD).
AS ::= aB, Aa ::= a, S ::= B, D ::= abD, D ::= DBab, D ::= SB,
B ::= ab no son de tipo 3 (las dos primeras ni siquiera son de tipo
2).
Ingeniería Informática (URJC)
TALF
12 / 12
Descargar