Transparencias de clase (teoría) - Departamento de Lenguajes y

Anuncio
LENGUAJES FORMALES Y AUTÓMATAS
Departamento de Lenguajes y Sistemas Informáticos
Escuela Técnica Superior de Ingenierı́a Informática
Universidad de Sevilla
Vı́ctor J. Dı́az Madrigal
José Miguel Cañete Valdeón
Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Temario
Lección 1
Cadenas
Lección 2
Lenguajes
Lección 3
Expresiones Regulares
Lección 4
Gramáticas Incontextuales
Lección 5
Autómatas Finitos
Lección 6
Autómatas de Pila
Lección 7
La Jerarquı́a de Chomsky
Lección 8
Máquinas de Turing
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Cadenas
1. Alfabetos, sı́mbolos y cadenas
2. Operaciones sobre cadenas
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Alfabetos, sı́mbolos y cadenas
Alfabeto: Conjunto no vacı́o y finito de elementos denominados sı́mbolos
Cadena: Secuencia finita de sı́mbolos procedentes de un alfabeto.
Cadena nula (vacı́a): Aquella cadena que no contiene ningún sı́mbolo. Se denota
mediante λ (o ²)
Ejemplos:
Alfabeto
Cadenas
{a, b, c}
λ, a, abc, ccccc, . . .
{0, 1}
λ, 0, 010101, 10111111100001111, . . .
ASCII
λ, sin(-1238E42+y), perro, program-nada-begin-end;, . . .
Notación:
Alfabetos: Σ, Σ1
Sı́mbolos: a, b, c, . . .
Cadenas: . . ., u, v, w, x, y, z
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Operaciones sobre cadenas
La longitud o tamaño |x| de una cadena x = a1 . . . an , se define como |x| = n.
La concatenación x · y (o xy) de dos cadenas x = a1 . . . an e y = b1 . . . bm se define
como xy = a1 . . . an b1 . . . bm
La potencia xi con i ≥ 0 de una cadena x se define mediante xi = xx ..i .. x
Ejemplos: Considerando las cadenas x = 101 e y = 11 definidas sobre {0, 1}
Longitud
|0| = 1, |λ| = 0, |x| = 3
Concatenación
xy = 10111, yx = 11101
Potencia
02 = 00, (10)3 = 101010, x2 = 101101
Propiedades
xλ = λx = x (Elemento neutro)
x0 = λ
x(yz) = (xy)z (Asociatividad)
x1 = x
|xy| = |x| + |y|
xi xj = xi+j con i, j ≥ 0
|xi | = i|x| con i ≥ 0
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Lenguajes
1. Definición de lenguaje
2. Operaciones sobre lenguajes
3. Problemas fundamentales
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Definición de lenguaje
Universo Σ∗ de un alfabeto Σ: Conjunto de todas las cadenas que se pueden formar
con los sı́mbolos de Σ
Lenguaje L(Σ) respecto de un alfabeto Σ (o simplemente L en el caso de que Σ se
sobreentienda): Cualquier subconjunto del universo, es decir, L ⊆ Σ∗
Ejemplos de lenguajes sobre Σ = {0, 1}
Lenguaje universal Σ∗
{λ, 0, 1, 00, 01, 10, 11, 000, 001, . . .}
Lenguaje vacı́o
∅={}
Lenguaje de la cadena vacı́a
{λ}
Cadenas que empiezan por 0
{0, 00, 01, 000, 001, 010, 011, . . .}
Cadenas de longitud uno
{0, 1}
Cadenas con un número par de 1s
{λ, 11, 011, 101, 110, 0011, . . .}
Cadenas palindrómicas
{λ, 11, 00, 010, 000, 101, 111, 0000, 1001, . . .}
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Operaciones sobre lenguajes: Operaciones básicas
Unión: L1 ∪ L2 = {x | x ∈ L1 o x ∈ L2 }
Intersección: L1 ∩ L2 = {x | x ∈ L1 y x ∈ L2 }
Diferencia: L1 − L2 = {x | x ∈ L1 y x ∈
/ L2 }
Complementario: L = ¬L = Σ∗ − L
Ejemplo: Sean L1 = {0, 1, 00} y L2 = {00, 01, 10} definidos sobre Σ = {0, 1}
L1 ∪ L2 = {0, 1, 00, 01, 10}
L1 ∩ L2 = {00}
L1 − L2 = {0, 1}
¬L1 = {λ, 01, 10, 11, 000, 001, 010, 011, . . .}
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Operaciones sobre lenguajes: Basadas en la concatenación
Concatenación: L1 · L2 = L1 L2 = {xy | x ∈ L1 e y ∈ L2 }
Potencia: Li = L · L ..i .. · L (con i ≥ 0)
S∞
Clausura o Cierre de Kleene: L∗ = L0 ∪ L1 ∪ L2 ∪ . . . = i=0 Li
S∞
Clausura o Cierre positivo: L+ = L1 ∪ L2 ∪ L3 ∪ . . . = i=1 Li
Ejemplo: Sean L1 = {0, 1, 00} y L2 = {00, 01, 10} definidos sobre Σ = {0, 1}
L1 L2 = {000, 001, 010, 100, 101, 110, 0000, 0001, 0010}
L21 = L1 L1 = {00, 01, 000, 10, 11, 100, 001, 0000}
L∗1 = {λ, 0, 1, 00, 01, 000, 10, 11, 100, ...}
L+
1 = {0, 1, 00, 01, 000, 10, 11, 100, ...}
Propiedades
L{λ} = {λ}L = L (Elemento neutro)
L0 = {λ}
L∅ = ∅L = ∅ (Elemento nulo)
L1 = L
L1 (L2 L3 ) = (L1 L2 )L3 (Asociatividad)
L+ = LL∗ = L∗ L
Li Lj = Li+j con i, j ≥ 0
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Problemas fundamentales
Representación de lenguajes: ¿Qué notaciones son útiles para describir lenguajes
(infinitos)?
Notación
Ejemplo
Lenguaje
Conjuntos
{an bn cn | n ≥ 0}
{λ, abc, aabbcc, aaabbbccc, . . .}
Patrones
0+(10)*
{0, 10, 1010, 101010, . . .}
Autómatas
Gramáticas
{1, 001, 010, 111, 100101, . . .}
S → aSb | λ
{λ, ab, aabb, aaabbb, . . .}
Estudio de la pertenencia: ¿Está incluida una cadena en el lenguaje descrito por
una cierta notación?
Clasificación de lenguajes: ¿Pueden ser representados todos los lenguajes con
una misma notación?
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Expresiones regulares
1. Definición de Expresión Regular (ExpReg)
2. Lenguaje de una expresión regular
3. Propiedades algebraicas
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Definición de Expresión Regular (ExpReg)
Dado un alfabeto Σ, las expresiones regulares (expreg) se definen:
1. a ∈ Σ es una expresión regular
2. ∅ es una una expresión regular
3. λ es una una expresión regular
4. Si α y β son expresiones regulares, entonces
a) α + β es una expresión regular
b) α · β (o αβ) es una expresión regular.
c) α∗ es una expresión regular
d ) (α) es una expresión regular
5. Ninguna otra expresión salvo las anteriores es una expresión regular
Ejemplos: Para Σ = {0, 1} tenemos las siguientes ExpRegs
0
1λ
(0 + λ)11∗ 0
01
(∅ + 1)(1 + 0)∗ 0
Nota: La precedencia de los operadores es (de más a menos): ∗, ·, +
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Lenguaje de una expresión regular
Lenguaje Una expresión regular E representa un lenguaje L(E). Los lenguajes representados por las expresiones regulares se denominan lenguajes regulares.
Denotamos la clase de los lenguajes regulares mediante LREG.
Relación entre una ExpReg E y su lenguaje L(E)
L(a) = {a}
L(α + β) = L(α) ∪ L(β)
L(∅) = ∅
L(αβ) = L(α)L(β)
L(λ) = {λ}
L(α∗ ) = L(α)∗
L((α)) = L(α)
Ejemplos:
L(0 + λ) = L(0) ∪ L(λ) = {0, λ}
L(a(b + c)) = L(a)(L(b) ∪ L(c)) = {ab, ac}
L(a∗ ) = L(a)∗ = {a}∗ = {λ, a, aa, aaa, . . .} = {an | n ≥ 0}
L(aa∗ ) = L(a)L(a)∗ = {a}{λ, a, aa, aaa, . . .} = {a, aa, aaa, . . .} = {an | n ≥ 1}
L((0 + 1)∗ ) = (L(0) ∪ L(1))∗ = {0, 1}∗ = {λ, 0, 1, 00, 01, 10, 11, 000, 0001, . . .}
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Propiedades algebraicas
Equivalencia Dos expresiones regulares E1 y E2 son equivalentes, E1 = E2 , cuando
L(E1 ) = L(E2 ).
Propiedades de la unión, concatenación y cierre de Kleene
α+β =β+α
αλ = λα = α
∅∗ = λ∗ = λ
α + (β + γ) = (α + β) + γ
α(βγ) = (αβ)γ
αα∗ = α∗ α
α+∅=∅+α=α
α∅ = ∅α = ∅
α∗ α∗ = (α∗ )∗ = α∗
α∗ = λ + αα∗
α+α=α
Propiedades distributivas
Ejemplo:
α(β + γ) = αβ + αγ
λ∗ a + b∗∗ ba + b∗ a
= λa + b∗∗ ba + b∗ a
(α + β)γ = αγ + βγ
= a + b∗∗ ba + b∗ a
(αβ)∗ α = α(βα)∗
= a + b∗ ba + b∗ a
(α∗ β)∗ = (α + β)∗ β + λ

∗
∗ ∗


 (α + β )
(α + β)∗ =
(α∗ β ∗ )∗



(α∗ β)∗ α∗
= a + bb∗ a + b∗ a
= (λ + bb∗ )a + b∗ a
= b∗ a + b∗ a
= b∗ a
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Gramáticas independientes del contexto (GIC)
1. Definición de GIC
2. Derivación
3. Lenguaje de una GIC
4. Árbol sintáctico
5. Ambigüedad
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Definición de GIC: Definición
Una gramática independiente del contexto (o incontextual) GIC se define con
una tupla:
G = (VT , VN , S, P )
VT es el alfabeto de los sı́mbolos terminales (token, lexema)
VN es el alfabeto de los sı́mbolos no terminales (variable, categorı́a)
Los alfabetos VT y VN son disjuntos. Denotamos V = VT ∪ VN
S ∈ VN es un no terminal distinguido denominado axioma (sı́mbolo inicial o raı́z)
P ⊆ VN × V ∗ es un conjunto finito de pares (A, α) denominados reglas o producciones denotados A → α.
Ejemplos:
G0 = ({a, b}, {S, A, B}, S, {S → AB, A → aA, A → a, B → Bb, B → λ})
G1 = ({a, b}, {S}, S, {S → aSb, S → λ})
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Definición de GIC: Notación
Salvo que se indique lo contrario usaremos el siguiente convenio en la notación:
Un sı́mbolo en VT
a, b, c, . . .
Un sı́mbolo en VN
A, B, C, . . .
Un sı́mbolo en V
. . . , X, Y, Z
Una secuencia en VT∗
. . . , x, y, z
Una secuencia en V ∗
α, β, γ, . . .
La cadena vacı́a
λ
Combinación de A-reglas
A → α1 | . . . | αk
Con estos convenios, la gramática G1 = ({a, b}, {S}, S, {S → aSb, S → λ}) puede ser
descrita de forma sucinta enumerando sus producciones:
G1 = {S → aSb | λ}
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Derivación
Dada una GIC G = (VT , VN , S, P ) definimos:
Derivación directa α ⇒G β cuando α = µAν, β = µγν y A → γ ∈ P
Derivación (en al menos un paso) α ⇒+
G β cuando existen α1 , α2 , . . . , αk con
k > 1 tales que: α = α1 ⇒G α2 . . . ⇒G αk = β
Derivación (en cero o más pasos) α ⇒∗G β cuando α = β o α ⇒+
G β
Forma sentencial a todo α ∈ V ∗ que verifica S ⇒∗G α
Sentencia a todo w ∈ VT∗ que verifica S ⇒∗G w
Nota: Cuando se sobreentiende la gramática G se usa la notación ⇒, ⇒+ y ⇒∗ .
Ejemplo: Dado G1 = {S → aSb | λ} tenemos que
S ⇒ aSb ⇒ aaSbb ⇒ aaaSbbb ⇒ aaabbb
S ⇒+ aSb
aSb ⇒+ aaaSbbb
aSb ⇒∗ aSb
aSb ⇒∗ aaaSbbb
Formas sentenciales: S, aaSbb, aaabbb
Sentencia: aaabbbb
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Lenguaje de una GIC
Lenguaje El lenguaje generado por una GIC G = (VT , VN , S, P ) se define mediante:
L(G) = {w ∈ VT∗ | S ⇒∗G w}
Ejemplos
G0 = {S → AB, A → aA | a, B → Bb | λ}
L(G0 ) = {an bm | n ≥ 1, m ≥ 0}
G1 = {S → aSb, S → λ}
L(G1 ) = {an bn | n ≥ 0}
Los lenguajes generados por las gramáticas GIC se denomina lenguajes incontextuales o independientes del contexto.
Denotaremos la clase de los lenguajes independientes del contexto con LIC.
Teorema [LREG ⊂ LIC] La clase de los lenguajes regulares está estrictamente contenida en la clase de los lenguajes independientes del contexto.
Equivalencia Dos gramáticas GIC G1 y G2 son equivalentes cuando L(G1 ) = L(G2 )
Ejemplo: Las gramáticas G1 , G0 y G00 son equivalentes.






S
→
A
|
λ




 S → aA | λ 
n
o
0
00
G1 = S → aSb | λ
G =
G =
A → aBb


 A → Sb





B → A|λ
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Árbol sintáctico
El conjunto de los árboles sintácticos (de derivación, o de análisis) de una GIC
G = (VT , VN , S, P ) incluye aquellos árboles que cumplen que:
Sus nodos interiores están etiquetados con sı́mbolos no terminales
Sus nodos hojas están etiquetados con sı́mbolos en V o con λ.
Si un nodo interior está etiquetado con A y sus k ≥ 0 hijos (ordenados de izquierda a
derecha) están etiquetados con X1 , X2 , . . . , Xk ∈ V entonces A → X1 X2 . . . Xk ∈ P .



 S → AcB | c
G=



A → aA | λ
B → bS | b
Toda derivación X ⇒∗G w tiene asociado un único árbol sintáctico (pero no al contrario).
Derivación por la izquierda
S ⇒ AcB ⇒ aAcB ⇒ acB ⇒ acbS ⇒ acbc
Derivación por la derecha
S ⇒ AcB ⇒ AcbS ⇒ Acbc ⇒ aAcbc ⇒ acbc
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Ambigüedad: Definición
Decimos que una GIC G = (VT , VN , S, P ) es ambigua si existe al menos una cadena
w ∈ L(G) que tiene dos o más árboles sintácticos distintos.
Ejemplo: Sea la gramática G = ({+, ∗, num}, {E}, E, {E → E + E | E ∗ E | num}).
La cadena num + num + num muestra que G es ambigua puesto que:
Denominamos lenguaje ambiguo a aquel que puede ser generado por una gramática
ambigua. Decimos que un lenguaje es inherentemente ambiguo si toda gramática que
genera dicho lenguaje es ambigua.
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Ambigüedad: Gramática de la calculadora
Existen heurı́sticas que permiten, en determinados casos, transformar una gramática
ambigua en otra equivalente que no lo es.
Ambigua (Precedencia y Asociatividad)
Versión no ambigua
G = ({num, +, ∗, (, )}, {E}, E, P )
G0 = ({num, +, −, (, )}, {E, T, F }, E, P 0 )



 E → E + T |T
P0 =
T → T ∗ F |F



F → (E) | num
P = {E → E + E | E ∗ E | (E) | num}
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Autómatas Finitos (AF)
1. Autómatas finitos deterministas (AFD)
2. Autómatas finitos no deterministas (AFND)
3. Autómatas finitos no deterministas con λ-transiciones (λ-AFND)
4. La clase de los lenguajes aceptados por los autómatas finitos
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Autómatas Finitos Deterministas (AFD): Definición
Un autómata finito determinista AFD es una tupla M = (Σ, Q, q0 , F, δ) donde
Σ es el alfabeto de la entrada
Q es un conjunto finito de elementos denominados estados
q0 ∈ Q es el estado inicial
F ⊆ Q es el conjunto de estados finales o de aceptación
δ : Q × Σ → Q es la función de transición
Ejemplo: M0 = ({0, 1}, {q0 , q1 }, q0 , {q0 }, δ) donde

 δ(q , 0) = q δ(q , 1) = q
0
0
0
1
 δ(q1 , 0) = q1 δ(q1 , 1) = q0
Tabla de transición
M0
0
1
→ ∗q0
q0
q1
q1
q1
q0
Diagrama (Grafo) de transición
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
AFD: Lenguaje
Lenguaje L(M ) aceptado por un AFD: Dado un AFD M = (Σ, Q, q0 , F, δ)
L(M ) = {w ∈ Σ∗ | δ ∗ (q0 , w) ∈ F }
donde δ ∗ : Q × Σ∗ → Q es la extensión de δ a cadenas definida mediante:

 δ ∗ (q, λ) = q
para todo q ∈ Q y a ∈ Σ
 δ ∗ (q, aw) = δ ∗ (δ(q, a), w)
Ejemplo: L(M0 ) lo forman las cadenas de 0s y 1s que contienen un número par de 1s
0
1
0
1
0
0
1
0101 ∈ L(M0 )
δ ∗ (q0 , 0101) = q0 ∈ F
q0 → q0 → q1 → q1 → q0
100 ∈
/ L(M0 )
δ ∗ (q0 , 100) = q1 ∈
/F
q0 → q1 → q1 → q1
Equivalencia: Dos AFDs M 0 y M 00 son equivalentes si y sólo si L(M 0 ) = L(M 00 )
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Autómatas Finitos No Deterministas (AFND): Definición
Un autómata finito no determinista AFND es una tupla M = (Σ, Q, q0 , F, δ) similar
a un AFD salvo que δ : Q × Σ → ℘(Q)
Ejemplo: M1 = ({0, 1}, {q0 , q1 , q2 }, q0 , {q2 }, δ)



 δ(q0 , 0) = {q0 , q1 }
δ(q1 , 0) = ∅



δ(q2 , 0) = ∅
donde
δ(q0 , 1) = {q0 }
δ(q1 , 1) = {q2 }
δ(q2 , 1) = ∅
Nota: La ejecución del autómata se detiene ante transiciones que conducen a ∅.
Tabla de transición
M1
→ q0
q1
0
1
q0 , q1
q0
Diagrama (Grafo) de transición
q2
∗q2
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
AFND: Lenguaje
Lenguaje L(M ) aceptado por un AFND: Dado un AFND M = (Σ, Q, q0 , F, δ)
L(M ) = {w ∈ Σ∗ | δ ∗ (q0 , w) ∩ F 6= ∅}
donde δ ∗ : Q × Σ∗ → ℘(Q) es la extensión de δ a cadenas definida

 δ ∗ (q, λ) = {q}
para todo q ∈ Q y a ∈ Σ
 δ ∗ (q, wa) = S ∗
p∈δ (q,w) δ(p, a)
Ejemplo: L(M1 ) lo forman las cadenas de 0s y 1s que acaban en 01
10101 ∈ L(M1 )
δ ∗ (q0 , 10101) = {q0 , q2 }
10 ∈
/ L(M1 )
δ ∗ (q0 , 10) = {q0 , q1 }
Equivalencia: Dos AFNDs M 0 y M 00 son equivalentes si y sólo si L(M 0 ) = L(M 00 )
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
AFND con λ-transiciones (λ-AFND): Definición
Un autómata finito no determinista con transiciones nulas λ-AFND es una tupla
M = (Σ, Q, q0 , F, δ) similar a un AFND salvo que δ : Q × (Σ ∪ {λ}) → ℘(Q)
Ejemplo: M2 = ({0, 1}, {q0 , q1 , q2 }, q0 , {q2 }, δ) donde



 δ(q0 , 0) = {q1 }
δ(q1 , 0) = ∅



δ(q2 , 0) = ∅
δ(q0 , 1) = ∅
δ(q0 , λ) = {q1 }
δ(q1 , 1) = {q1 , q2 } δ(q1 , λ) = ∅
δ(q2 , 1) = ∅
δ(q2 , λ) = {q0 }
Nota: La ejecución del autómata se detiene ante transiciones que conducen a ∅.
Tabla de transición
M2
0
→ q0
q1
q1
∗q2
1
λ
Diagrama (Grafo) de transición
q1
q1 , q2
q0
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
λ-AFND: Cierre λ∗
Dado un λ-AFND M = (Σ, Q, q0 , F, δ) se define λ∗ (S) con S ⊆ Q como el menor conjunto
que verifica:
1. si q ∈ S entonces q ∈ λ∗ (S)
2. si q ∈ λ∗ (S) entonces δ(q, λ) ⊆ λ∗ (S)
Ejemplo: Dado el λ-AFND M2
λ∗ ({q0 }) = {q0 , q1 }
λ∗ ({q1 }) = {q1 }
λ∗ ({q2 }) = {q0 , q1 , q2 }
λ∗ ({q1 , q2 }) = λ∗ ({q1 }) ∪ λ∗ ({q2 }) = {q0 , q1 , q2 }
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
λ-AFND: Lenguaje
Lenguaje L(M ) aceptado por un λ-AFND: Dado un λ-AFND M = (Σ, Q, q0 , F, δ)
L(M ) = {w ∈ Σ∗ | δ ∗ (q0 , w) ∩ F 6= ∅}
donde δ ∗ : Q × Σ∗ → ℘(Q) es la extensión de δ a cadenas definida

 δ ∗ (q, λ) = λ∗ ({q})
para todo q ∈ Q y a ∈ Σ
 δ ∗ (q, wa) = λ∗ (S ∗
δ(p, a))
p∈δ (q,w)
Ejemplo: L(M2 ) lo forman cadenas constituidas por secuencias no vacı́as de 1s precedidos
opcionalmente por un 0.
0101 ∈ L(M1 )
δ ∗ (q0 , 0101) = {q0 , q1 , q2 }
010 ∈
/ L(M1 )
δ ∗ (q0 , 010) = {q1 }
Equivalencia: Dos λ-AFNDs M 0 y M 00 son equivalentes si y sólo si L(M 0 ) = L(M 00 )
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
La clase de los lenguajes aceptados por los AFs
Teorema Dado L ⊆ Σ∗ , las siguientes tres afirmaciones son equivalentes:
L es aceptado por un AFD
L es aceptado por un AFND
L es aceptado por un λ-AFND
Teorema: La clase LAF de lenguajes aceptados por los AFs es idéntica a la clase LREG
de los lenguajes descritos mediante expresiones regulares.
Ejemplo: Para el lenguaje {a, ab} tenemos:
a + ab
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Autómatas de Pila (AP)
1. Autómata de Pila (AP)
2. Autómata de Pila Determinista (APD)
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Autómata de Pila (AP): Definición
Un autómata de pila AP es una tupla M = (Σ, Γ, Z0 , Q, q0 , F, δ) donde
Σ es el alfabeto de la entrada
Γ es el alfabeto de los sı́mbolos de la pila
Z0 ∈ Γ − Σ es la marca de la pila (se usa para determinar su fondo)
Q conjunto finito de estados (q0 ∈ Q es el inicial y F ⊆ Q los finales)
δ : Q × (Σ ∪ {λ}) × Γ → ℘f in (Q × Γ∗ ) es la función parcial de transición
Ejemplo: M1 = ({a, b}, {a, b, Z0 }, Z0 , {p, q, f }, p, {f }, δ) donde

 δ(p, a, Z ) = {(p, aZ )} δ(p, a, a) = {(p, aa)} δ(p, b, a) = {(q, λ)}
0
0
 δ(q, b, a) = {(q, λ)}
δ(q, λ, Z0 ) = {(f, λ)}
Nota: Las transiciones no definidas indican que el autómata se detiene.
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
AP: Configuración, movimiento y computación
Dado un AP M = (Σ, Γ, Z0 , Q, q0 , F, δ) definimos:
Configuración: Tupla de la forma (q, x, α) con q ∈ Q, x ∈ Σ∗ y α ∈ Γ∗
Movimiento `M : Cambio de configuración en el autómata
(q, aw, Aγ) `M (p, w, βγ) si (p, β) ∈ δ(q, a, A) con a ∈ Σ ∪ {λ}
Computación `∗M : Secuencia de cero o más movimientos. Dadas dos configuraciones
C y D, se cumple C `∗M D cuando
C = D o existen c1 , c2 , . . . , ck con k > 1 tales que: C = c1 `M c2 . . . `M ck = D
Nota: Cuando el AP M se sobreentiende se usa la notación ` y `∗
(p, aabb, Z0 ) `M1 (p, abb, aZ0 ) `M1 (p, bb, aaZ0 ) `M1 (q, b, aZ0 ) `M1 (q, λ, Z0 ) `M1 (q, λ, λ)
(p, abb, aZ0 ) `∗M1 (p, abb, aZ0 )
(p, abb, aZ0 ) `∗M1 (q, b, aZ0 )
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
AP: Lenguajes aceptados
Dado un AP M = (Σ, Γ, Z0 , Q, q0 , F, δ) definimos:
Por pila vacı́a: LV (M ) = {w ∈ Σ∗ | (q0 , w, Z0 ) `∗M (q, λ, λ) con q ∈ Q}
Por estado final: LF (M ) = {w ∈ Σ∗ | (q0 , w, Z0 ) `∗M (qf , λ, α) con α ∈ Γ∗ , qf ∈ F }
Ejemplos:
LV = LF = {an bn | n > 0}
LV = ∅ y LF = a∗
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
AP: Indeterminismo
El AP de la figura es no determinista y reconoce el lenguaje wwR con w ∈ (0 + 1)∗ . El
indeterminismo se debe a que el AP ignora cuando comienza el sufijo wR . De forma que
o bien sigue en el estado p indicando que no se ha leido el primer sı́mbolo de wR
o bien cambia al estado q indicando que ha leido el primer sı́mbolo de wR .
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
AP: La clase LAP
Teorema: La clase de lenguajes aceptados por los AP con aceptación por estado final
es la misma que la clase de los lenguajes aceptados por los AP con aceptación por pila
vacı́a. Denotaremos a dicha clase mediante LAP.
Teorema: La clase LAP es idéntica a la clase LIC de los lenguajes generados por las
gramáticas independientes del contexto.
Ejemplo: Para el lenguaje am+n bn con n, m > 0 tenemos:



 S→
G=
LFA, Curso 2006/2007



AI
A→
aA | a
I→
aIb | ab
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Autómata de Pila Determinista (APD): Definición
Un autómata de pila determinista APD es una AP M = (Σ, Γ, Z0 , Q, q0 , F, δ) tal
que para cada q ∈ Q, a ∈ Σ y X ∈ Γ se cumple |δ(q, a, X)| + |δ(q, λ, X)| ≤ 1
Ejemplo: El siguiente APD reconoce el lenguaje wcwR donde w ∈ {0, 1}∗ .
Estado
Entrada
Pila
p
01c10
Z0
p
1c10
0Z0
p
c10
10Z0
q
10
10Z0
q
0
0Z0
q
λ
Z0
f
λ
λ
Se denominan lenguajes independientes del contexto deterministas a aquellos
lenguajes independientes del contexto que son aceptados por algún APD. Denotamos
mediante LICD la clase de los lenguajes independientes del contexto deterministas.
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
APD: La clase LAPD(F)
Denotamos mediante LAPD(F) la clase de los lenguajes aceptados por los APD con
aceptación por estado final.
Teorema: [LAF ⊂ LAPD(F)] Si un lenguaje es aceptado por un AF entonces dicho
lenguaje es aceptado por un APD con aceptación por estado final.
(Basta con añadir Z0 /Z0 a cada una de las transiciones del AFD)
Teorema: [LAPD(F) ⊂ LAP] Si un lenguaje es aceptado por un APD con aceptación
por estado final entonces dicho lenguaje es aceptado por un AP.
(Lo contrario no es cierto, puesto que el lenguaje wwR , con w ∈ {0, 1}∗ , no puede ser
aceptado mediante un APD debido a la imposibilidad de saber a priori en qué momento
debe empezar el reconocimiento del sufijo wR )
Nota: A pesar de que el autómata es no determinista, podemos encontrar una gramática
no ambigua para generar dicho lenguaje: G = ({0, 1}, {S}, S, {S → 1S1 | 0S0 | λ})
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
APD: La clase LAPD(V)
Denotamos mediante LAPD(V) la clase de los lenguajes aceptados por los APD con
aceptación por pila vacı́a.
Teorema Dado L ⊆ Σ∗ , las siguientes dos afirmaciones son equivalentes:
1. L es aceptado por un APD por pila vacı́a
2. L es aceptado por un APD por estado final y L cumple la propiedad del prefijo
(Un lenguaje L cumple la propiedad del prefijo (PREF) si no existen dos cadenas distintas x, y ∈ L tales que x es un prefijo de y)
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Jerarquı́a de Chomsky
1. Clasificación de gramáticas
2. Clasificación de lenguajes
3. Gramáticas regulares
4. Gramáticas independientes del contexto
5. Gramáticas dependientes del contexto
6. Gramáticas sin restricciones
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Clasificación de gramáticas
Chomsky generaliza el concepto de gramática G = (VT , VN , S, P ) y propone una clasificación (jerarquı́a) según la forma que deben tener sus producciones:
Regulares (GREG)
Por la izquierda:
A → Ba A → a
Por la derecha:
A → aB A → a
Independientes del contexto (GIC)
A→v
Dependientes del contexto (GDC)
αAβ → v con |αAβ| ≤ |v|
Con estructura de frase (GEF)
αAβ → γ
donde A, B ∈ VN , a ∈ VT , α, β, γ ∈ V ∗ y v ∈ V +
Para cubrir el caso de la generación de λ en todos los tipos de gramáticas, se admite la
inclusión de la regla S → λ en GREGs, GICs y GDCs.
Se verifica:
El conjunto de las gramáticas GRs está estrictamente contenido en el de las GICs.
El conjunto de las gramáticas GICs está estrictamente contenido en el de las GDCs.
El conjunto de las gramáticas GDCs está estrictamente contenido en el de las GEFs.
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Clasificación de lenguajes
La jerarquı́a de Chomsky implica a su vez una jerarquı́a de lenguajes.
Las gramáticas GREGs por la derecha o izquierda generan la misma clase de lenguajes LREG denominados regulares. Esta clase coincide con la de los lenguajes aceptados por los autómatas finitos y la de los lenguajes descritos mediante expresiones
regulares.
Las GICs generan la clase LIC de los lenguajes independientes del contexto.
Esta clase coincide con la de los lenguajes aceptados por los autómatas de pila.
Las GDCs generan la clase LDC de los lenguajes dependientes del contexto.
Las GEFs generan la clase LEF de los lenguajes con estructura de frases. Esta
clase de lenguajes coincide con la de los lenguajes aceptados por las máquinas de
Turing.
Se verifica LREG ⊂ LIC ⊂ LDC ⊂ LEF
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Gramáticas regulares
Ejemplo: Las dos gramáticas Gr y Gl generan el lenguaje regular 11∗ 00∗
Regular por la derecha



 S → 1A
Gr =
A → 1A | 0B | 0



B → 0B | 0
Regular por la izquierda



 S → C0
Gl =
C → C0 | D1 | 1



D → D1 | 1
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Gramáticas independientes del contexto
Ejemplo: Las dos gramáticas G1 y G2 generan el lenguaje independiente del contexto
0n 1n 2m con n, m ≥ 0.
GIC en formato no estricto



 S → AB
G1 =
A → 0A1 | λ



B → 2B | λ
GIC en formato estricto



 S → AB | A | B | λ
G2 =
A → 0A1 | 01



B → 2B | 2
Podemos observar que la gramática G1 no es una GIC en sentido estricito ( incluye reglas
nulas asociadas a sı́mbolos que no son el axioma). Admitiremos, sin embargo, que es una
GIC debido al siguiente teorema.
Teorema Si todas las reglas de una gramática G son de la forma A → γ con A ∈ VN y
γ ∈ V ∗ , entonces podemos obtener otra gramática GIC equivalente a G.
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Gramáticas dependientes del contexto
Ejemplo: Sea la GDC G = ({a, b, c}, {S, M }, S, P ) donde


S → aM c | aSM c




 cM → M c
P =

aM → ab




 bM → bb
La gramática G genera el lenguaje dependiente del contexto an bn cn con n > 0. Un
ejemplo de derivación serı́a:
S
⇒ aSM c ⇒ aaSM cM c
⇒ aaaM cM cM c ⇒ aaaM M ccM c ⇒ aaaM M cM cc ⇒ aaaM M M ccc
⇒ aaabM M ccc ⇒ aaabbM ccc ⇒ aaabbbccc
Teorema Toda gramática GDC G pueden ser convertida en otra gramática equivalente
G0 donde todas las reglas de G0 son la forma αAβ → αvβ o S → λ con A ∈ VN , v ∈ V +
y α, β ∈ V ∗ . Es decir, reglas en donde A se sustituye por v en el contexto (α, β).
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Gramáticas con estructura de frases
Las gramáticas GEFs se caracterizan frente al resto (dejando aparte el caso S → λ) en
que admite reglas compresoras. Una regla compresora es aquella regla que cumple que
el tamaño de su lado derecho es menor que el tamaño de su lado izquierdo.
Ejemplo: Sea la GEF G = ({a, b, c}, {S, M }, S, P ) donde


S → abM Sc | λ




 bM c → bc
P =

bM a → abM




 bM b → bbM
La gramática G genera el lenguaje an bn cn con n ≥ 0. Un ejemplo de derivación serı́a:
S ⇒ abM Sc ⇒ abM abM Scc ⇒ abM abM cc ⇒ abM abcc ⇒ aabM bcc ⇒ aabbM cc ⇒ aabbcc
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Máquinas de Turing
1. Modelo básico de una Máquina de Turing
2. Máquinas de Turing y computadoras
3. Lenguajes aceptados por una Máquina de Turing
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Modelo básico de una MT: Componentes
Una máquina de Turing (MT) es una tupla M = (Γ, Σ, 4, Q, q0 , F, δ) donde
Γ es el alfabeto de la cinta infinita por ambos lados.
Σ ⊂ Γ es el alfabeto de la entrada
4 ∈ Γ (4 ∈
/ Σ) es el sı́mbolo espacio en blanco.
Q conjunto finito de estados (q0 ∈ Q es el inicial y F ⊆ Q los finales)
δ : Q × Γ → Q × Γ × {I, D} es la función parcial de transición (I y D indican si
tras la lectura el movimiento es a la izquierda o a la derecha)
Ejemplo: M1 = ({a, b, 4}, {a, b}, 4, {q0 , q1 }, q0 , {q1 }, δ) donde
δ(q0 , a) = (q0 , a, D)
δ(q0 , b) = (q0 , a, D)
δ(q0 , 4) = (q1 , 4, I)
Diagrama (Grafo) de transición
Tabla de transición
M1
→ q0
a
b
4
q0 aD
q0 aD
q1 4I
∗q1
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Modelo básico de una MT: Movimientos
Dada una MT M = (Γ, Σ, 4, Q, q0 , F, δ) se define
Configuración X1 . . . Xi−1 qXi . . . Xn con X1 , . . . Xn ∈ Γ y q ∈ Q, indica que M está en
el estado q, que el puntero de lectura se encuentra situado sobre la casilla que contiene
el sı́mbolo Xi , y que todas las casilla a la izquierda (derecha) del sı́mbolo X1 (Xn )
contienen 4.
Movimiento `M : Cambio de configuración en el autómata. Hay dos alternativas dependiendo del sentido del movimiento indicado por las directivas I o D
Izquierdo: X1 . . . Xi−1 qXi . . . Xn `M X1 . . . pXi−1 Y . . . Xn si δ(q, Xi ) = (p, Y, I)
Derecho: X1 . . . Xi−1 qXi . . . Xn `M X1 . . . Xi−1 Y p . . . Xn si δ(q, Xi ) = (p, Y, D)
Computación `∗M : Secuencia de cero o más movimientos.
Nota: Cuando la MT M se sobreentiende se usa la notación ` y `∗
q0 aaba `M1 aq0 aba `M1 aaq0 ba `M1 aaaq0 a `M1 aaaaq0 4 `M1 aaaq1 a
aq0 aba `∗M1 aq0 aba
q0 aaba `∗M1 aaaq1 a
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Máquinas de Turing y computadoras
Una función de cadena es Turing computable si existe una MT M = (Γ, Σ, 4, Q, q0 , F, δ)
para la que q0 w `∗M qf u para algún qf ∈ F , cuando f (w) = u donde u, v ∈ Σ∗ .
Ejemplo: Supongamos que representamos un entero positivo n mediante una cadena
an . La siguiente M T calcula la función f (n, m) = n + m teniendo en cuenta que f
será representada mediante la transformación de an bam en an+m b.
M
a
b
→ q0
q0 aD
q1 aD
q1
q1 aD
q2
q3 bI
q3
q3 aI
4
q2 4I
q4 4D
∗q4
q0 abaa
` aq0 baa ` aaq1 aa ` aaaq1 a ` aaaaq1 4
` aaaq2 a ` aaq3 ab ` aq3 aab ` q3 aaab ` q3 4aaab ` q4 aaab
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Lenguajes aceptados por una MT: Definición
Lenguaje L(M ) aceptado por una MT: Dado un MT M = (Γ, Σ, 4, Q, q0 , F, δ)
L(M ) = {w ∈ Σ∗ | q0 w `∗M αqf β con α, β ∈ Γ∗ y qf ∈ F }
Ejemplo: L(M ) acepta el lenguaje an con n ≥ 0.
M
→ q0
a
4
q0 aD
q1 4D
∗q1
q0 aa ` aq0 a ` aaq0 4 ` aa4q1 4
Nota: Asumimos que no existen transiciones desde ningún estado de aceptación.
Los lenguajes aceptados por las MT se denominan lenguajes recursivamente enumerables. Denotamos mediante LR.E. a la clase de los lenguajes recursivamente
enumerables.
Equivalencia: Decimos que dos MT M1 y M2 son equivalentes cuando L(M1 ) = L(M2 ).
LFA, Curso 2006/2007
Vı́ctor J. Dı́az Madrigal y José Miguel Cañete
Lenguajes aceptados por una MT: La parada
Parada Decimos que una MT M = (Γ, Σ, 4, Q, q0 , F, δ) para si alcanza un p ∈ Q y
señala a un X ∈ Γ para el que no está definido δ(p, X).
Una MT no tiene porqué pararse ante todas las cadenas de entrada. Por ejemplo, la MT
M acepta el lenguaje {a, b} y sólo se para con las cadenas λ, a y b del lenguaje (a + b)∗ .
M
a
b
→ q0
q1 aD
q1 bD
q1
q0 aI
q0 bI
4
q0 a ` aq1 4 ` a4q2 4
q2 4D
q0 ab ` aq1 b ` q0 ab ` aq1 b ` . . .
∗q2
Los lenguajes aceptados por una MT que paran ante cualquier cadena de entrada
(pertenezca o no al lenguaje) se denominan lenguajes recursivos. Denotamos la clase
de los lenguajes recursivos mediante LREC.
Teorema [LDC ⊂ LREC]. La clase LDC de los lenguajes dependientes del contexto
está contenida de forma estricta en la clase de los lenguajes recursivos.
LFA, Curso 2006/2007
Descargar