Loading documents preview...
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O)
Capítulo 1: AUTÓMATAS, LENGUAJES Y GRAMÁTICAS REGULARES. Capítulo 1.1. INTRODUCCIÓN. Los lenguajes son fundamentales en la Computación: mediante ellos se expresan los programas, protocolos de comunicación, etcétera. En la Computación se trabaja con los lenguajes formales. Estos lenguajes se caracterizan por poseer reglas sintácticas y semánticas rígidas, concretas y bien definidas. Por ejemplo, en los lenguajes de programación: • Reglas que indican cómo construir cadenas válidas (palabras reservadas, identificadores de variables, etcétera). • Reglas que indican cómo combinar estas cadenas para formar programas válidos. El procesamiento de los lenguajes formales es importante en la Informática ya que se necesita traducir los programas escritos en lenguajes de alto nivel a programas en lenguaje máquina. Este proceso de traducción lo realizan los compiladores. Por otra parte, también se necesita describir de forma sintética los lenguajes, especificando mediante reglas, cómo se escriben programas sintácticamente correctos en un determinado lenguaje. Para llevar a cabo estos procesos disponemos de las siguientes herramientas: • Descriptoras Describen las reglas de un lenguaje . Son las gramáticas y las expresiones regulares. • Reconocedoras Reconocen si un programa sigue las reglas del lenguaje . Son los autómatas.
Alberto Suárez López
Página 1
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 1.2. LENGUAJES FORMALES. Definición: Alfabeto: Conjunto finito y no vacío de símbolos. Por ejemplo: = { },
={
},
={
}
Un alfabeto es válido si no se genera ambigüedad en la formación de palabras. Por ejemplo:
={
}
Palabra:
,¿
ó
?
Definición: Palabra o cadena: Secuencia finita de símbolos de un alfabeto. Por ejemplo: Sea ={
} , son palabras
=
y
=
.
Definición: Longitud de una palabra: Número de símbolos que la forman. Por ejemplo: ={ Sea •
}:
=
=
•
Definición: Palabra vacía, λ : Dado un alfabeto , λ se define como la única palabra construida con símbolos del alfabeto. Aunque se represente por un carácter simple, es una palabra no un símbolo del alfabeto, es decir, λ ∉ . Definición: Universo del discurso, : Se compone de todas las palabras que se pueden formar con símbolos del alfabeto Se caracteriza por: • Contiene un número infinito de palabras • La palabra vacía pertenece a todos los universos Por ejemplo: Sea
={
},
Alberto Suárez López
= {λ
.
}.
Página 2
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Definición: Lenguaje sobre un alfabeto Todo subconjunto de
•
={ = {λ
( ):
.
Por ejemplo: Dos posibles lenguajes sobre •
,
}
={
} serían:
}
Definición: Lenguaje: Conjunto de palabras, también llamadas sentencias o cadenas, formadas por símbolos de un alfabeto. Por ejemplo: Sea el alfabeto de los símbolos ASCII. Un lenguaje sobre este alfabeto serían todas aquellas cadenas que representen identificadores válidos en Java: • Empieza con letra, , y sigue con un conjunto de cero o más letras, dígitos, o •
={
}
Por ejemplo: Se el alfabeto de todos los identificadores, signos de puntuación, palabras reservadas en Java. Un lenguaje sobre este alfabeto sería el formado por todos los programas bien construidos. Descripción de los lenguajes: Definición: Gramática: Describe la estructura de un lenguaje, proporcionando las reglas que determinan las combinaciones válidas de los símbolos del alfabeto. Definición: Expresión regular: Describen de manera declarativa las cadenas aceptables o pertenecientes a un lenguaje regular. Definición: Autómata: Mecanismo o máquinas abstractas que son dispositivos teóricos capaces de recibir, procesar y transmitir información (cadenas de un lenguaje).
Alberto Suárez López
Página 3
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Relación Gramática – Autómata – Lenguaje: Gramática
Autómata
Lenguaje
Gramática Tipo 0: Gramática sin restricciones Tipo 1: Gramática sensible al contexto Tipo 2: Gramática libre de contexto Tipo 3: Gramática regular
Lenguaje Recursivamente enumerable. Sin restricciones
Autómata Máquina de Turing (MT)
Dependiente del contexto
Autómata linealmente acotado (ALA)
Independiente del contexto
Autómata con pila (AP)
Regular
Autómata finito (AF)
Relación de inclusión: Relación de Chomsky:
Tipo 0 Tipo 1 Tipo 2
Alberto Suárez López
Tipo 3
Página 4
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Operaciones con palabras: Definición: Concatenación: Dado un alfabeto , sean =
∀
∈
y
=
palabras donde ∀
. La concatenación de las palabras y ,
símbolos de seguidos de los símbolos de
∈
y
, es una palabra formada por los
=
, es decir,
.
Además se cumple que:
=
• •
+
λ es el elemento neutro para la concatenación. Para cualquier palabra , λ = λ =
Por ejemplo: • •
= =
Definición: Potencia: La potencia i – ésima de una palabra ,
, se forma por la contatenación veces de .
=λ.
Por definición, para toda palabra , se cumple que Por ejemplo: • •
=
( )
=
Definición: Potencia : Dado un alfabeto y un número natural , definimos:
={
=
}
Por ejemplo: Sea ={ } • • •
= {λ }
={
={
}
}
Definición: Cierre positivo: Dado un alfabeto
, definimos
+
=
∞
=
∪
∪
∪
=
∪
∪
∪
=
Definición: Cierre estrella: Dado un alfabeto
, definimos
=
∞
∪
=
Alberto Suárez López
Página 5
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Definición: Unión o alternativa:
={
∪
Por ejemplo: = { }y
∪
•
∈
}
∨ ∈
={
}
={
}
Definición: Concatenación:
={
Por ejemplo: = { },
∈
∧
={
},
={ = {∅}
• •
∈
}
= {∅}
Definición: Intersección:
∩
={
∈
}
}
∧ ∈
Definición: Potencia de un lenguaje:
={
∈
= {λ }
}
Por ejemplo:
={
• • •
} = {λ } ={ } ={
}
Definición: Clausura o cierre positivo: +
=
∪
∪
∪
Definición: Cierre u operación estrella. Clausura de Kleene:
=
∪
∪
Alberto Suárez López
∪
∪
Página 6
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 1.3. EXPRESIONES REGULARES. Las expresiones regulares definen las cadenas válidas de un lenguaje mediante una descripción algebraica (fórmula). Los lenguajes que pueden describirse mediante expresiones regulares se denominan lenguajes regulares. Se utilizan como lenguaje de entrada en muchos sistemas de proceso de cadenas. Por ejemplo: • grep de UNIX y otros similares en navegadores, procesadores, etcétera, usan una notación similar a las expresiones regulares para describi los patrones que el usuario quiere encontrar en un archivo. • Búsqueda en Word. Definición: Expresión regular: Sea un alfabeto finito, las expresiones regulares sobre y los lenguajes que denotan se definen recursivamente como: • ∅ es una expresión regular y denota al conjunto vacío. • •
•
λ es una expresión regular y denota {λ } ⊂
Si ∈ entonces es una expresión regular y denota el lenguaje { Por ejemplo: }, la expresión regular representa = { } ={ SI y son expresiones regulares que denotan los lenguajes o + ó ! denota al lenguaje ∪ Por ejemplo: = , = , + = + , ( + )={ } o
o
denota al lenguaje Por ejemplo: = , ( )={
= o
,
( ) = {λ
=
+
,
:
}
denota al lenguaje Por ejemplo: +
∈
}
denota al lenguaje Por ejemplo: +
y
}⊂
+
( )= {
}
+
Precedencia en la utilización de los operadores: De mayor a menor prioridad: •
1º Operación cierre positivo.
•
2º Operación concatenación.
( ) +
()
• 3º Alternativa. (+ !) Se permite el uso de paréntesis para indicar la precedencia.
Alberto Suárez López
Página 7
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Ejemplos: Sea ={ Expresión regular
+ +( ( + )
( ) ( + )
(
(
+
(
)
)
+
}. Lenguaje
)
{ { {λ {
)
} }
Palabras que terminan en
+
(
+
Palabras que empiezan en y luego sólo tienen ´s Empiezan y terminan con la misma letra
)
Expresión regular
+ + + + + + +#+"+ ( $ )+ (+ ! − ! λ ) $ ) $ (λ ! ! $
!
! $
(+
}
Palabras con un número par de ´s
Igual número de
(
}
)(
!
! $
!
$
)+
)
que de
Lenguaje Dígitos Números naturales Números enteros Números reales sin exponente en Java Identificadores en Java Expresión de adicción en Java
Equivalencia de expresiones regulares: Dos expresiones regulares son equivalentes si designan al mismo lenguaje regular. Sean , , expresiones regulares: • + es asociativa
+( +
)= (
+
)+
•
+ es conmutativa + = +
•
· es asociativa
•
· es distributiva respecto a +
•
· tiene elemento neutro λ
• •
( )= ( ) (
+
)=
+
λ =λ = + tiene elemento neutro ∅ +∅ = ∅+ = λ =λ
Alberto Suárez López
Página 8
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Equivlencia de expresiones regulares: • ∅ = ∅=∅
•
∅ =λ + = = =
•
=
• • •
•
( )
( )
• • •
=
=λ+
•
( ( (
+ +
+
) ) )
+
=
( ) + = (λ + )
( + ) =( ) =( ) = ( ) =
≠
Alberto Suárez López
+
Página 9
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 1.4. AUTÓMATAS FINITOS. Dispositivo para procesar palabras pertenecientes a un lenguaje regular. Se construyen siguiendo las reglas de formación de palabras de un lenguaje: recibe una palabra y determina si pertenece o no al lenguaje, es decir, si sigue las reglas. Por ejemplo: Identificadores válidos en Java: luego tienen letras, dígitos, $ ó _
palabra de entrada
pertenece o no
deben empezar por letra, & ó _ Introducción: Disponen de una cinta de entrada, de donde van leyendo las palabras, procesando sus símbolos secuencialmente, de izquierda a derecha. A s $ 1 _ 3 2 V >
palabra de entrada
identificador válido o no
En cada momento, almacenan información acerca de la historia del sistema. Cada almacén de información se denomina estado. Tienen un número finito de estados: • Es necesario diseñarlos con cuidado para recordar la información interesante. • Estado: El primer símbolo fue letra, $ ó _ • No es interesante recordar qué fue exactamente. En cada momento, el puede estar en alguno de ellos y, según va leyendo símbolos podrá ir cambiando de estado, por lo que el estado nos va a decir que tipo de cadena ha llegado hasta ese momento. Habrá estados que activen la luz verde y otros que activen la roja. Por ejemplo: Los analalizadores léxicos que determinan si un identificador es válido o no en Java. Alberto Suárez López
Página 10
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Definición: Autómata finito determinista, : Un autómata finito determinista, , es una quíntupla ) donde: =( δ • • • • •
es un conjunto finito denominado alfabeto de entrada. es un conjunto finito denominado conjunto de estados.
δ% ∈ ⊂
×
→ llamada función de transición de estados.
es el llamado estado inicial. recibe el nombre de conjunto de estados finales que corresponde a los
estados ∈ en que se acepta la cadena de entrada. Determinista hace referencia al hecho de que: • δ debe estar definida para cada estado y símbolo del alfabeto. • Para cada símbolo de entrada, existe un único estado al que el partiendo del actual. Representación de la función de transición de un Tabla de transiciones:
Se representa δ mediante una matriz de
δ
puede llegar
:
×
•
Filas:
•
Estados ∈ , estado inicial precedido de → y estados finales de Columnas: ) el estado determinado por δ ( Símbolos de entrada ∈ y en (
)
Por ejemplo:
Alberto Suárez López
Página 11
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Diagrama de transición de estados: Se crea un grafo dirigido en el que, para cada estado
(
cada transición δ
)=
, se crea un arco de
a
∈
se crea un nodo y, para
etiquetado con
.
El estado inicial tendrá un arco entrante no etiquetado y los estados finales estarán rodeados de doble círculo. Por ejemplo: q2 a q1
b
q3
Ejemplo: que reconozca las palabras formadas por ´s y ´s con un número par de un número par de ´s. ={ } • •
• • •
={
}
o
: El número de
´ses par y el número de ´s es par
o
: El número de
´ses par y el número de ´s es impar
o
: El número de
´ses impar y el número de ´s es par
o
: El número de
´ses impar y el número de ´s es impar
={
δ% δ
×
´s y
} →
Alberto Suárez López
Página 12
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) b
q0
q1 b
a
a
a
q2
b
a
q3
b
Definición: Configuración:
Descripción instantánea de un , (ω ) ∈ estado actual y ω la cadena que queda por procesar.
ω∈
, donde representa el
Definición: Configuración inicial:
(ω
)
Definición: Configuración dinal o aceptación de palabra:
(λ )
∈
Definición: Movimiento:
(
ω
)
(ω ) δ ( ) = &
&
: Procesamiento de palabras en un El “lenguaje del ” es el conjunto de palabras aceptadas por el mismo. Supongamos que es una secuencia de símbolos. Comenzamos con el
en el estado inicial. Se procesa el primer símbolo
aplicando δ (
) para encontrar
el estado al que pasa el tras procesar el primer símbolo de la entrada. ). Supongamos que fue . Se procesa el segundo símbolo aplicando δ ( Continuamos así hasta procesar el último de los símbolos, llegando al final a un estado . Si
pertenece a
Alberto Suárez López
, la palabra es aceptada. Sino, es rechazada.
Página 13
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Ejemplo: Sea el del ejemplo anterior y la palabra a) Configuación inicial
(
:
)
b) Procese la palabra representando el procesamiento mediante configuraciones y movimientos
(
)
(
)
(
)
(
)
(λ
)
c) ¿Cuál es la configuración final?
(λ
)
Extensión a palabras de la función de transición:
Si δ es la función de transición, la función de transición extendida se llamará δ y se construirá a partir de δ . partiendo de un estado y procesando una Describe el comportamiento de un cadena de símbolos. Recibe un estado y una cadena ω y devuelve un estado , estado que alcanza el autómata cuando comienza en el estado y procesa la secuencia de símbolos ω . Definición: Función de transición extendida:
Se define la función de transición extendida a partir de δ %
δ %
× • •
→
δ (λ δ (ω
Donde ∈
×
a
de la forma siguiente:
)= )=δ( ,
ω∈
δ (ω y
)) ∈
Lenguaje aceptado por un
:
Definición: Aceptación de palabras:
Una palabra ω será aceptada por un
si y sólo si δ
(ω
Definición: Lenguaje reconocido por un : ) , el lenguaje aceptado por Sea el =( δ como
→
( ) es el conjunto ( ) = {ω ∈
δ (ω
)∈
}.
)∈ que se representa
Al conjunto de los lenguajes reconocidos por algún se les denomina lenguajes regulares. Para cada lenguaje regular existe un que reconoce palabras de este lenguaje y no reconoce ninguna palabra que no pertenezca al lenguaje. Definición: Autómatas equivalentes: Dos autómatas son equivalentes si aceptan el mismo lenguaje.
Alberto Suárez López
Página 14
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Equivalencia de estados: Definición: Estados equivalentes: ) , dos estados Sea el =( δ denota
y son equivalentes, y se
≡ , si para toda cadena de entrada ω , δ (ω
) es un estado final si y sólo
si δ (ω ) también lo es; es decir, serán equivalentes si tienen el mismo comportamiento ante toda palabra. Definición: Estados distinguibles:
se distingue de si y sólo si ∃ω ∈
(
δ
ω)∈
(
δ
ω)∉
.
Corolario: Si dos estados son equivalentes, pueden ser sustituidos por uno sólo con el mismo comportamiento que los originales. Corolario: Existen algoritmos para minimizar un número mínimo de estados.
, es decir, hallar otro
Minimización de autómatas finitos deterministas: ) . Hallaremos un Partimos de un =( δ tiene el menor número de estados posibles,
&
=
(
&
δ&
&
&
equivalente con el
que acepta
).
( )y
El algoritmo consiste en determinar las clases de equivalencia en el conjunto de estados. 1. Se elimina cualquier estado que no sea accesible desde el inicial. 2. Se dividen los estados restantes en particiones de forma que todos los estados de una partición sean equivalentes y no haya pares de estados equivalentes en particiones distintas. Construir una partición inicial ∏ dividiendo el conjunto en dos grupos: estados finales
y no – finales
−
.
Determinar una nueva partición ∏ para cada grupo o
a partir de ∏ aplicando el siguiente procedimiento
de ∏ : Dividir
en dos subgrupos tales que dos estados
y
de
estarán en el
mismo subgrupo si y sólo si para cada entrada ! , los estados
y
tienen
transiciones con ! hacia estados del mismo grupo de ∏ . o Si ∏
por sus grupos en ∏
Sustituir
.
≠ ∏ , se han creado nuevos subgrupos: o
∏=∏
o volver al paso 2.2 en caso contrario, es decir, si ya no salen más grupos: o ∏' = ∏ o ir al paso 3 3. Se escoge un estado de cada grupo de la partición ∏ ' formar el nuevo conjunto 4. Cálculo de δ en &
que δ (
)=
Alberto Suárez López
&
. Sea
y sea
&
como representante para
.
un estado representante, sea un símbolo tal el representante del grupo de
, entonces δ (
)= Página 15
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) 5. Estado inicial y finales. &
El estado inicial
o
de
&
se elige como el representante del grupo que
contiene al estado inicial
. &
El conjunto de estados finales estará formado por los representantes de grupos donde haya estados finales.
o Ejemplo: Minimizar el
={
de
=(
δ
) donde
={
}y δ viene dada por la siguiente tabla:
},
={
},
= ,
δ
∏
={
}
={ } Luego, viene dada por:
&
={
=
(
={ &
δ&
&
} } &
) donde
={
} ={ } ={
},
&
={
},
&
= ,
&
={
}y δ &
δ&
Alberto Suárez López
Página 16
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Autómatas finitos no – deterministas, " : Permiten , o más transiciones desde un estado con cada símbolo de entrada. Tiene la capacidad de disparar varias transiciones a la vez con el mismo símbolo de entrada y, por tanto, puede estar en varios estados simultáneamente. Por ejemplo: Si estamos buscando la palabra clave implements en un programa en Java y la ) es útil, al llegar al símbolo , suponer que configuración inicial es ( ( $ estamos al inicio de la palabra clave buscada y utilizar una secuencia de estados para comprobar que, efectivamente, llega a esa palabra. Es decir, sólo definimos los estados que necesitamos para aceptar palabras. Los
" ´s reconocen los mismos lenguajes que los
´s.
Los " ´s son similares a los ´s, con un conjunto finito de estados y símbolos de entrada, un estado inicial, un conjunto de estados finales y una función de transición de estados δ . Diferencia: • δ define para cada posible combinación ( ) un estado nuevo. •
δ
"
puede no estar definida para alguna combinación (
definir para otras combinaciones (
) y, por el contrario, puede
) más de un estado.
Ejemplo: Autómata que reconoce aquellas palabras formadas por ´s y ´s que terminan en
.
0,1 0
A
B
1
Definición: Autómata finito no – determinista, Un " es una quíntupla " = ( δ
" :
) con el mismo significado que para
salvo que δ es en este caso un una aplicación no determinista o relación de la forma:
un
δ%
C
×
→
( ) , donde ( ) es un subconjunto de
Definición: Configuración: Descripción instantánea de
(ω )
∈
ω∈
.
" .
, donde representa el estado actual y ω la cadena que queda por
procesar. Definición: Configuración inicial: (ω ) .
Alberto Suárez López
Página 17
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Definición: Configuración final: λ , con ∈ .
(
)
Definición: movimiento: Es el tránsito entre dos configuraciones. Se representa:
vacío.
(
ω
(ω ) , donde
)
&
&
∈δ (
).
Representación de un
" :
Tabla de transiciones: Se diferencian de los
en que el contenido de las casillas es un conjunto, incluso el
Por ejemplo:
δ
{ #} {∅} {∅}
# $
$
{∅}
Diagrama de transición de estados: Igual que los ´s. Definición: Función de transición extendida:
Se extiende δ %
δ (λ δ (ω
• •
Donde ∈
)= )= ,
×
→
δ ( δ (ω ω∈ y ∈
Lenguaje aceptado por un
( ) aδ
×
%
→
( ) como sigue:
)) " :
Definición: Aceptación de palabras:
Una palabra ω será aceptada por un
" si y sólo si δ (ω
)⊂
Definición: Lenguaje reconocido por un : ) , el lenguaje aceptado por Sea el " =( δ como
( ) es el conjunto ( ) = {ω ∈
Teorema: Equivalencia entre Si
⊂
es aceptado por un
Alberto Suárez López
δ (ω
y
)∩
}
que se representa
≠∅ .
" :
" , existe un
que acepta
.
Página 18
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Algoritmo
:
"
1. Definición del nuevo conjunto de estados o
Notación: al conjunto
o
A menudo, no todos los estados de inicial
=
&
&
)
}lo denotamos por [
{
o
o
.
( ) (conjunto de partes de
=
&
&
&
]
serán accesibles desde el estado
. En el paso 2 se determiná cuales son accesibles.
[∅] [ ] [ ] [ ] [ ] [ ] [ ] [ ][ ][ ][ ][ [ ][ ][ ][ [ ][ ][ ][ [ ][ ][ [ ][ ][
][ ][ ][ ][ ][ ][ ] ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
]
2. Definición de la nueva función de transición δ . &
o
Para cada conjunto de estados $ ⊆
δ
&
(
$) =
δ(
&
)
y para cada símbolo ∈
,
$
Para cada conjunto de estados que sea accesible desde el
&
, miramos para
todos los estados del conjunto a qué estados transita con la entrada tomamos la unión de todos ellos. &
o
y
estará formada por aquellos estados que sean accesibles desde el inicial
al definir δ . &
3. Definición del nuevo estado inicial o
=
&
&
[ ]
.
&
&
4. Definición del nuevo conjunto de estados finales o
&
=
{[
][
]∈
&
.
∧∃
∈
}
5. Eliminación de estados inaccesibles. o
Todos aquellos estados de paso 2.
Alberto Suárez López
&
(ver paso 1) que no hayan hecho falta en el
Página 19
] ]
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Ejemplo: Sea el siguiente
δ
" , calcular el
→
equivalente:
{ } ∅
{ } ∅
δ& →
Alberto Suárez López
[] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
Página 20
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Autómatas finitos no – deterministas con λ − ) ) $ : Extensión de " que permite cambios de estado con la entrada vacía (λ ) , es decir, permite evolucionar de un estado a otro sin consumir ningún símbolo de la cadena de entrada. Los autómatas aceptarán las secuencias de etiquetas que pasan por algún camino que lleve desde el estado inicial a algún estado final. Cada λ que se encuentre en el camino es “invisible”. , pero proporciona
No expande la clase de lenguajes hasta ahora aceptados por los facilidades para construirlos. Por ejemplo:
=
{
}
0
2
1
A
B
C
Definición: Autómata finito no – deterministas con λ − ) Un
con λ − )
"
)
sólo δ difiere de un
" . ∪ {λ }}× →
δ %{
=(
se define como
$
δ
∅ # ∅
∅ ∅
Definición: Configuración: Descripción instantánea de
(ω )
∈
ω∈
$
δ
:
) donde
( )
En el ejemplo anterior:
# $
)
λ #
∅ ∅ $
"
con λ − )
$ ∅
)
$
.
, donde representa el estado actual y ω la cadena que queda por
procesar. Definición: Configuración inicial: (ω ) . Definición: Configuración final: λ , con ∈ .
(
)
Definición: movimiento: Es el tránsito entre dos configuraciones. Se representa: Alberto Suárez López
(
ω
)
(ω ) , donde &
&
∈δ
(
). Página 21
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O)
λ− ) = { }∪ { & ∈
Definición:
λ −* (
Es decir: 1. ∈λ −* 2. si
( ) ∈λ −* ( )
de un estado,
∃
δ (λ
)
λ − * ( )% → & λ}
( ):
)∈ λ − * ( )
Por ejemplo, en el autómata definido anteriormente:
λ −*
{ # $} {# $} {$}
# $
λ− & )% λ − * (
Definición:
λ −* (
)
de un conjunto de estados,
∈
λ −* (
&
)% ( ) → ( ):
&
Observaciones: • λ −* ( )⊆ •
λ − * (# ) ⊆# & λ − * (λ − * ( )) = λ − * ( & )
Por ejemplo:
λ −*
{} { { #} { { # $} {
# $} # $} # $}
Definición: Función de transición extendida:
Se extiende δ % { 1. 2. 3.
δ (λ δ (
δ (ω
∪ {λ }}×
"
con λ − )
Definición: Aceptación de palabras: Una palabra ω será aceptada por un
(ω ) ∩
( )aδ
×
%
)= λ −* ( ) ) = λ − * [ δ ( ) ∈ λ − * ( )] ) = λ − * [ δ ( ) ∈ δ (ω )]
Lenguaje aceptado por un
si δ
→
)
( ) donde:
→
:
$
" con λ − )
)
$
si y sólo
≠ ∅.
Una palabra ω es aceptada por un " con λ − ) ) $ si existe algún camino etiquetado con los símbolos de la palabra que, partiendo del estado inicial lleve a algún estado final. Pueden aparecer en el camino actos etiquetados con λ . Definición: Lenguaje reconocido por un " con λ − ) ) $ = Sea el por
que se representa como
Alberto Suárez López
(
con λ − )
δ
: ) , el lenguaje aceptado
( ) es el conjunto ( ) = {ω ∈
)
$
δ (ω
)∩
}
≠∅ . Página 22
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O)
" con y sin λ − )
Equivalencia entre
)
:
$
Teorema:
" con λ − ) ) $ , entonces Si ⊂ es aceptado por un por un " sin λ − ) ) $ y, por tanto, es un lenguaje regular. Algoritmo " con λ − ) ) $ Dado un " con λ − ) ) $ definimos como
&
=
(
δ
1. Definición de δ : &
δ
&
(
)=δ (
)
Calculamos
o
Calculamos
o
Calculamos &
o o
&
δ& %
o
2. Definición de
&
×
→
= λ −* ( = δ(
[
=(
δ
)
≠ ∅ entonces
&
={
= ∅ entonces
&
=
" con λ − )
0
)
$
}∪
, calcular el
B
δ →
∅ ∅
# $
δ →
# $
Alberto Suárez López
%"
{
∅ ∅
" equivalente: 2
1
A
$
]
∈
:
( )∩ Si λ − * ( ) ∩
: ) , el nuevo autómata lo
)
( )
) = λ −* ( )
Si λ − *
Ejemplo: Sea el siguiente
).
" sin λ − )
es aceptado
C
∅ # ∅
∅ ∅ $
# $}
{# $} {# $} ∅
λ # $ ∅
{$} {$} {$}
Página 23
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Equivalencia entre expresión regular (!
) y autómata finito (
):
Teorema: Si es una expresión regular, entonces existe un " con λ − ) ) lo sumo, un estado final del que no sale niguna transición, que acepta ( ) .
y con, a
$
Demostración: Aplicamos el método de inducción al número de operadores de la expresión regular: • Caso básico. Con operadores.
=λ
=∅
q
q0
q
= con ∈ q0
•
x
q
Caso general. Con ó más operadores. o Sean y dos expresiones regulares, por tanto, para existe
=( =(
o
Supongamos
Alberto Suárez López
δ δ ∩
) tal que ( ) = ( ) y para ) tal que ( ) = ( ) .
existe
= ∅ (renombrar estados) y construimos
.
Página 24
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) o
Caso A:
=(
=( + ) ∪ ∪{
}
∪
{ }) , con δ :
δ
M1 q1
…
f1
q0
f0
q2
…
f2
M2
o
( ) = {ω ω ∈ ( ) ω ∈ ( )} ) Caso B: = ( =( ∪ ∪ δ { }) , con δ : q1
M1
f1
q2
( ) = {ω
Alberto Suárez López
ω ω ∈
( )
ω ∈
M2
(
f2
)}
Página 25
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) o
Caso C:
=(
=( ∪{
)
}
q0
δ
{ }) , con δ :
q1
M1
f1
f2
( ) = {ω ω ∈ ( ) }
o
Reglas de desarrollo:
qi
a·b
qj
qi
a+b
qj
qi
a
qk
b
qj
a
qi
qj
b a*
qi
qj qi
qk
qj
Teorema: Si ⊂ es un lenguaje aceptado por un expresión regular.
, entonces
se puede describir por una
Corolario: Sea • • • • •
un conjunto finito, y ⊂ . Son equivalentes las siguientes afirmaciones: es un lenguaje regular es un lenguaje aceptado por algún es un lenguaje aceptado por algún " sin λ − ) ) $ es un lenguaje aceptado por algún " con λ − ) ) $ se puede describir por una expresión regular
Alberto Suárez López
Página 26
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Equivalencia entre autómata finito (
) y expresión regular (! ) :
Se trada de, dado un encontrar una expresión regular de tal forma que describan el mismo lenguaje. Dado un se denota por al lenguaje reconocido por el cuando se considera al estado como estado inicial. Se denota por
a la expresión regular que denota al lenguaje
, por tanto,
=
( ).
Definición: Ecuación característica:
&
( )= &
&
∈δ (
)
Por ejemplo, en el autómata: 0
2
1
A
B
&( &( # &($
&( # ) = λ &( # # ) = &($ # ) = ∅
)= )=∅ )=∅
=
&
∈
&
( ) &
•
= ∅ si ∉
ó •
= λ si ∈
&
+
C
&( $ ) = ∅ &( # $ ) = λ &($ $ ) =
, donde:
Así, en el autómata del ejemplo:
+λ
=
#
=
$
=
# +λ $
# $
+λ
Definición: Equivalencia entre autómata finito ( Se trata de, dado un mismo lenguaje.
) y expresión regular (! ) :
encontrar una expresión regular de tal forma que describan el
Definición: Regla de Arden: Sean , y ' tres expresiones regulares tal que λ ∉ • •
= =
+' ⇔ +' ⇔
Alberto Suárez López
, entonces:
= ' ='
Página 27
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Algoritmo ! : 1. Obtener las ecuaciones carácterísticas del 2. Despejar
calculando
para todo
∈
.
aplicando las propiedades de las expresiones regulares (principalmente
regla de Arden y distributiva). 3. Si es el estado inicial, es la expresión regular que denota aquellas cadenas que partiendo de
llegan a un estado final y por tanto la expresión que denota al
lenguaje reconocido por el
.
Ejemplo: Hallar la expresión regular que describe el lenguaje definido por el autómata: 0
2
1
A
B
+λ
#
+λ
$
= #
=
#
$
=
$
Así, ! =
+λ
λ # λ $ = λ
= # =
= # =
$
$
=
C
# $
= # = $
=
=
Alberto Suárez López
Página 28
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 1.5. PROPIEDADES DE LOS LENGUAJES REGULARES. Lema de Pumping: Cuestión pendiente: Dado un lenguaje , ¿es regular? El lema de Pumping sirve para demostrar que un lenguaje Definición: Lema de Pumping: Sea
un lenguaje aceptado por un
Entonces, es posible descomponer ω en la forma ω
(
∈
∀ ≥
Hipótesis:
con estados. Sea ω ∈
yω ≥
.
= ( , donde la subcadena ( es no vacía,
( < .
y
con ω ≥
•
ω∈
•
ω= (
•
( <
Tésis: El lenguaje
no es regular.
con
(
∈
∀ ≥
es regular.
Propiedades de clausura de los lenguajes regulares: Las propiedades de clausura expresan la idea de que, cuando uno o varios lenguajes son regulares, otros relacionados con ellos también lo son. Los lenguajes regulares son cerrados para la unión, concatenación y clausura (operador ). • Sean y dos lenguajes regulares; expresiones regulares.
Alberto Suárez López
y
los autómatas finitos y
y
las
Página 29
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) •
Caso A:
∪
=(
∪{
∪
}
δ
∪
{ }) , con δ : M1
q1
…
f1
q0
f0
q2
…
f2
M2 •
Caso B:
=(
∪ q1
∪
δ
{ }) , con δ : M1
q2
Alberto Suárez López
f1
M2
f2
Página 30
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) •
Caso C:
=(
∪{
}
q0
{ }) , con δ :
δ
q1
M1
f1
f2
Teorema: es.
⊂
Si
es un lenguaje regular, entonces su complementario
Demostración: Sea el
=
#=(
ω∈
( ) para un δ
−
).
=(
(# ) si y sólo si δ (ω ) ∈
Alberto Suárez López
δ −
) , se define
=
, lo que significa que ω ∉
=
− también lo
(# ) donde # es ( ).
Página 31
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Teorema: Si y son lenguajes regulares, también lo es
∩
=
∪
=
( )y
•
=(
=
.
.
Construcción del Sea =( δ que
∩
:
=(
)y
( ),
δ
) los
´s tales
que simule el comportamiento de ambos autómatas:
δ
×
(
•
Los estados de
•
Estado inicial:
•
Estados finales:
×
•
Transiciones de
: Si
(
suponiendo que δ
δ(
(
×
)
son pares de estados, el primero de
)
)) = (δ (
Alberto Suárez López
)
(
está en el estado (
)=
)δ (
yδ
( ))
)=
y el segundo de
.
) y es el símbolo a la entrada, )) = ( ) . , δ( (
Página 32
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 1.6. APLICACIONES DE LOS AUTÓMATAS FINITOS. La aplicación más inmediata de los es la construcción de analizadores léxicos. La tarea del analizador léxico es la de leer carácter a carácter el fichero de entrada y reconocer las unidades sintácticas, es decir: • Subcadenas de caracteres consecutivos que forman una agrupación lógica con significado léxico para lenguaje. • Palabra reservada, identificador, número, etcétera. El analizador léxico se construirá como un , que habitualmente será un " con λ − ) ) $ .
Alberto Suárez López
Página 33
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O)
Capítulo 2: LENGUAJES LIBRES DE CONTEXTO. Capítulo 2.1. DEFINICIONES BÁSICAS. Definición: Autómata: Permite decidir directamente si una palabra dada pertenece a un lenguaje. Definición: Gramática: Permite definir un lenguaje mediante reglas generadoras de palabras. Por ejemplo, para representar un nombre seguido de un adjetivo utilizando una gramática, decimos: • Todo sustantivo puede ir seguido de un adjetivo • Los sustantivos válidos serán chico, casa, perro • Los adjetivos válidos serán pequeño, grande Es decir:
→ / $ $
0
→ .
/ $ $
→
, - $
, - $ ! !
! +
Definición: Gramática: Una gramática es una cuádrupla • • • •
= ()" )'
) donde:
)" (vocabulario no terminal): Conjunto finito de símbolos que permiten representar estados intermedios de la generación de las palabras del lenguaje. )' (vocabulario terminal): Conjunto finito de símbolos que forman las palabras del lenguaje. ∈ )" (símbolo inicial o axioma): A partir del que se aplican las reglas de la gramática para obtener las distintas palabras del lenguaje. (conjunto de producciones o reglas de derivación): Permiten obtener las palabras del lenguaje.
Par ordenado de palabras α β ∈ ()" ∪ )' ) , representado mediante α → β . o Esto significa que si α es una subcadena de una palabra , entonces se puede sustituir α por β en
o
.
En general, las reglas son de la forma α → β , con α ∈ ()" ∪ )' ) y +
α ∈ ()" ∪ )' )
Ejemplo: Operaciones aritméticas con enteros.
46
7
4 $
→ 3
3 2
$)5$ $
→ 4 $ 4 $
!3
2
4 $
$
$ → ! ! ! ! ! ! ! # ! " ! → + ! − ! ! 1
Alberto Suárez López
Página 34
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Definición: Derivación directa:
* y es la aplicación de una producción → a una palabra ( para convertirla en otra palabra * , de tal forma que si ( = α β , entonces * = α β . Se representa mediante (
→ se aplica a la palabra ( para obtener la palabra * o Se dice que la producción se dice que de ( se deriva directamente * . Por ejemplo:
+ 4 $
+
Definición: Derivación: Se representa mediante ( una palabra. Si −
,
→
,
,…,
* y es la aplicación de una secuencia de producciones a
son palabras y
→
,
→
,
son reglas de derivación, entonces se dice que
→
,…,
.
Por ejemplo:
4 $
2
4 $
#
Definición: Derivación más a la izquierda: Cuando se utiliza en cada derivación directa la producción aplicada a los símbolos más a la izquieda de la palabra. Definición: Derivación más a la derecha: Cuando se utiliza en cada derivación directa la producción aplicada a los símbolos más a la derecha de la palabra. Definición: Sentencia: Se dice que es una sentencia si
y ∈ )' .
Definición: Lenguaje generado por una gramática: Es el conjunto de todas las sentencias de la gramática, es decir, todas las palabras que se pueden obtener a partir del axioma por la aplicación de derivaciones.
( ) = {ω
ω ∈ )'
ω}
Definición: Gramáticas equivalentes: Dos gramáticas y son equivalentes si
Alberto Suárez López
( ) = ( ).
Página 35
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 2.2. GRAMÁTICAS LIBRES DE CONTEXTO. Definición: Lenguajes regulares: Los lenguajes regulares se describen mediante autómatas finitos o expresiones regulares. Definición: Lema de Pumping: Permite demostrar que no todos los lenguajes son regulares. Definición: Lenguajes libres de contexto: Los lenguajes libres de contexto se describen mediante las gramáticas libres de contexto ( $ ) . • • •
Todos los lenguajes regulares son lenguajes libres de contexto, pero no todos los lenguajes libres de contexto son lenguajes regulares. Los lenguajes libres de contexto no pueden denotarse mediante expresiones regulares ni pueden ser reconocidos mediante autómatas finitos. Los lenguajes libres de contexto sirven para especificar parte de los lenguajes de programación.
$: Sus producciones responden al modelo →α , donde ∈ )" y α ∈ ()" ∪ )' ) . Definición: Gramática libre de contexto,
Definición: Notación #" , Backus – Naur – Form: Esta notación se utiliza para representar la gramática libre de contexto de un lenguaje libre de programación. • Símbolos terminales entre <> •
Sustitución de → por %%=
Por ejemplo:
<
$
'
>%%=
<
7 ><
>
$
Definición: Lenguaje libre de contexto, $: $. Es el lenguaje generado por una gramática
( ) = {ω
ω ∈ )'
ω}, es decir ω ∈
( ) si ω consiste solamente en
símbolos terminales y puede ser derivada desde el símbolo inicial. Definición: Simplificación de $: Consiste en restringir el formato de las producciones de la gramática sin reducir su poder generativo de palabras de un $. • Cada símbolo no terminal y cada símbolo terminal aparece en la derivación de alguna palabra del $ generado por la $ . •
No hay producciones de la forma
→ # donde
# ∈ )" .
Los pasos a seguir son los siguientes: • Eliminar símbolos inútiles • Eliminar λ − o producciones vacías • Eliminar producciones unidad
Alberto Suárez López
Página 36
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Definición: Símbolos muertos: Símbolos no terminales de los que no se deriva ninguna cadena de símbolos terminales.
inicial.
Definición: Símbolos inaccesibles: Símbolos terminales o no terminales a los cuales no se puede llegar desde el símbolo
Definición: Símbolos inútiles: Símbolos terminales o no terminales que no pueden aparecer en la derivación de ninguna palabra del $. Lema: Eliminar símbolos muertos: ) con Dada una $ = ()" )'
&
(
= )" )' &
&
)equivalente a
palabra ω ∈ )' tal que
( ) ≠ ∅ , se puede encontrar otra
$
tal que ∀ ∈ )" existe al menos una &
ω.
Algoritmo: Eliminar símbolos muertos: &
1. Cálculo de )" . o
Si una producción es de la forma el símbolo
o
→ ω con ω ∈ )' entonces se añade
&
en )" .
Si una producción es de la forma
→
con
símbolos &
terminales o no terminales que ya han sido incluidos en )" , entoncese se añade el símbolo &
2. Cálculo de &
o
&
en )" .
.
será el conjunto de todas las producciones de
que contengan sólo
símbolos pertenecientes a )" ∪ )' . &
Ejemplo: Eliminar los símbolos muertos de la gramática:
→ # ! # → # → ! # → # # → ! #
Alberto Suárez López
Página 37
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Lema: Eliminar símbolos inaccesibles: $ ) con Dada una = ()" )'
&
(
= )" & )' &
que
) equivalente a
&
α β.
( ) ≠ ∅ , se puede encontrar otra
tal que ∀
(
)
$
(
)
∈ )" & ∪ )' & existe α β ∈ )" & ∪ )' & tal
Algoritmo: Eliminar símbolos inaccesibles: &
&
1. Cálculo de )" y )' . &
o
Se coloca el símbolo inicial en )" .
o
Si
∈ )" & y la producción →α ! α ! α !
! α ∈ , se añade a )" &
todos los símbolos no terminales que aparecen en cada α y a )' todos los &
símbolos terminales que aparecen en cada α &
2. Cálculo de &
o
.
será el conjunto de todas las producciones de
que contengan sólo
símbolos pertenecientes a )" ∪ )' . &
&
Ejemplo: Eliminar los símbolos inaccesibles de la gramática:
→ → #$ ! # → # ! $ → $ ! → → → #$ ! # → # ! $ → $ !
Alberto Suárez López
Página 38
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Lema: Eliminar símbolos inútiles. Es importante eliminar primero los símbolos muertos y luego los inaccesibles. Ejemplo: Al eliminar símbolos muertos pueden aparecer símbolos inaccesibles.
→ # ! # → $# $ → Eliminamos símbolos muertos:
→ $ → Eliminamos símbolos inaccesibles:
→ Teorema: Todo $ no vacío es generado por alguna
Alberto Suárez López
$ sin símbolos inútiles.
Página 39
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Lema: Eliminar λ −
o producciones vacías.
( ) entonces no se pueden eliminar todas las λ − contrario, si λ ∉ ( ) entonces sí se pueden eliminar todas las λ − Si λ ∈
Definición: Símbolo anulable: Un símbolo no terminal
es anulable si y sólo si
de
. Por el
de
.
λ.
Por ejemplo: Dadas las producciones:
→
$
→ ! λ $ → ! λ Entonces y $ son anulables. Teorema: Si ( ) es generado por una &
$
sin símbolos inútiles ni λ −
, entonces
( ) − {λ} es generada por una
$
.
: Algoritmo: Eliminar λ − 1. Determinar los símbolos anulables.
→ λ es una producción, entonces es anulable. o Si # →α es una producción y todos los símbolos de α son anulables, entonces # es anulable. o
Si
2. Determinar
&
.
→
Si
o o
entonces se añade a
&
todas las producciones
α donde: Si no es anulable entonces α = Si es anulable entonces α = o bien α = λ No todas las α son λ
posibles de la forma o
está en
Ejemplo: Eliminar λ −
→α α α
de la gramática:
→ → #$ # → λ ! $ → λ !
→ → #$ ! $ ! # ! # → $ → Alberto Suárez López
Página 40
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Definición: Producción unidad: Las producciones unidad son producciones de la forma derecha es un único símbolo no terminal. Teorema: Todo lenguaje libre de contexto sin λ −
símbolos inútiles, ni λ −
→ # , es decir, la parte
está definido por una gramática sin
, ni producciones unidad.
Algoritmo: Eliminar producciones unidad: 1. Por el teorema anterior se puede suponer que no existen λ − 2. Cálculo de
&
.
En
&
estarán todas las producciones no unidad de
o o
.
# , se añade a & todas las producciones de la forma →α , siendo # →α una producción no unidad de Si
Ejemplo: Encontrar una gramática equivalente sin producciones unidad:
→ $ →
! $
# →
! ,,,
$ →
!
!$
→ + !
#$
+ → ! → $ →
! !!
#$
$
# →
! ,,,
$ →
!
Alberto Suárez López
Página 41
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 2.3. ÁRBOLES DE DERIVACIÓN. DERIVACIONES Y AMBIGÜEDAD. Definición: Árbol de derivación: ) una $ . Un árbol es un árbol de derivación para Sea = ()" )'
si:
•
Todo vértice tiene una etiqueta tomada de )" ∪)' ∪ {λ }
• • •
La etiqueta de la raíz es el símbolo inicial Los vértices interiores tienen etiquetas de )" Si un nodo tiene etiqueta y respectivamente son hijos del vértice , ordenados de izquierda a derecha, con etiquetas
respectivamente,
entonces:
→
!
!
!
!
debe ser una producción en Si el vértice tiene etiqueta λ , entonces es una hoja y es el único hijo de su padre.
•
Ejemplo: Sea
= ()" )'
) una
$ con
:
→
. La derivación de la cadena
!
será: y el árbol de derivación: S
a
S
a
b
S
b
a
b
Definición: Producción del árbol de derivación: Si leemos las etiquetas de las hojas de izquierda a derecha tenemos una sentencia. Llamamos a esta cadena la producción del árbol de derivación. Teorema: Sea
= ()" )'
) una
α (de con la producción de α .
$ . Entonces
un árbol de derivación en la gramática
se deriva α ) si y sólo si hay
Si ω es una cadena de ( ) para la gramática libre de contexto , entonces ω tiene al menos un árbol de derivación. Referido a un árbol de derivación particular, ω tendrá una única derivación a la izquierda y otra a la derecha.
Alberto Suárez López
Página 42
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Ambigüedad: Es posible que exista más de un árbol de derivación para una única cadena. Por ejemplo: Sea = ()" )'
) con )' = {
) + 9 8}, )" = {+} y
:
→ + + + ! + + ! 9 + 8 ! ! ) . La cadena + tiene dos árboles de derivación: E
E
·
id
E
E
+
id
E
id E
E
E
id
·
+
E
E
id
id
Definición: Ambigüedad: Una gramática libre de contexto se dice que es ambigua si existe alguna palabra perteneciente al lenguaje que genera que tenga más de un árbol de derivación. Definición: Lenguaje intrínsecamente ambiguo: Un lenguaje es intrínsecamente ambiguo cuando no existe ninguna gramática libre de contexto que lo genere que no sea ambigua.
Alberto Suárez López
Página 43
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 2.4. AUTÓMATAS DE PILA.
{
}
¿Podríamos encontrar un autómata finito que reconociera el lenguaje = ≥ ? La longitud de la cadena puede ser infinita y no podemos contruir infinitos estados. El lema de Pumping nos dice que no. Idea: No tenemos forma de memorizar el número de ceros que han llegado para compararlo con el número de unos. Autómata de pila: Un autómata de pila es aquella máquina que reconoce lenguajes generados por gramáticas libres de contexto. La aceptación de las cadenas por parte de estos autómatas puede ser: • Por vaciado de pila • Por estados finales Definición: Autómata de pila: Un autómata de pila es una séptupla • • •
Σ es el alfabeto de entrada Γ es el alfabeto de la pila
• •
- es el símbolo inicial de la pila
= (Σ Γ
) donde:
-
es el conjunto de estados es el estado inicial
•
es una aplicación
•
es un subconjunto de
%
Definición: Configuración: Descripción instantánea del
(
× Σ ∪ {λ }× Γ →
(
×Γ
)
que contiene los estados finales
.
ω α ) , donde representa el estado actual del autómata, ω ∈ Σ la cadena que queda por procesar (si ω = λ toda la cadena de entrada ha sido leída) y α es el contendo de la pila en el instante actual (si α = λ la pila está vacía, α ∈ Γ ) Definición: Configuración inicial:
(
ω - ), ω ∈ Σ
.
Definición: Configuración final: Autómata de pila por estados finales:
(
λ
) , con
∈
y
∈Γ .
Autómata de pila por vaciado de pila: ( λ λ ) , con ∈ . Definición: movimiento: Es el tránsito entre dos configuraciones. Se representa: el valor:
(
&
γ )∈
(
Alberto Suárez López
(
ω - α)
(
&
ω γ α ) , donde la función
para esta entrada toma
-). Página 44
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Lenguaje aceptado por un
:
Definición: Lenguaje aceptado por estados finales: = (Σ Γ El lenguaje aceptado por estados finales por el
{ω ∈ Σ (
ω -)
(
λ
)
∈
∈Γ
Definición: Lenguaje aceptado por vaciado de pila: El lenguaje aceptado por vaciado de pila por el
{ω ∈ Σ (
ω -)
(
λ λ)
∈
}
}
= (Σ Γ
Ejemplo: Autómata de pila que reconozca el lenguaje libre de contexto
= (Σ Γ
• •
•
• • •
) con: Alfabeto de entrada. Σ = { } Alfabeto de la pila. Γ = {- $ }
=
-
) es:
-
∅ ) es:
{
≥
}.
-
o Llega un cero. Introducimos una $ en la pila o Llega un uno. Retiramos una $ de la pila o Estado inicial de la pila. Conjunto de estados. ={ } o Estado . Leyendo ceros (apilando) o Estado . Leyendo unos (desapilando) Estado inicial.
=
Comenzamos leyendo ceros. Estados finales. =∅ El autómata funcionará por vaciado de pila. La función .
( - ) = {( $- )} ( $ ) = {( $$ )} ( $ ) = {( λ )} ( $ ) = {( λ )} ( λ - ) = {( λ )}
Con definimos aquellos movimientos que hacen que las cadenas del lenguaje sean aceptadas, no definimos aquellas transiciones que no nos conduzcan a una aceptación. Definición: Autómata de pila determinista: Se dice que un es determinista cuando cumple que: ) ≠ ∅ entonces ( )= ∅ ∀ ∈Σ 1. ∀ ∈ y ∀ ∈ Γ , si ( λ Es decir, no se podrá obtar por un funcionamiento independiente de la entrada u otro dependiente de la entrada. ( ( )) ≤ 2. ∀ ∈ , ∀ ∈ Γ y ∀ ∈ (Σ ∪ {λ }) debe cumplir que No habrá para ningún estado más de un posible movimiento dado un determinado símbolo de entrada y uno en la cima de la pila.
Alberto Suárez López
Página 45
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Teorema: El conjunto de lenguajes aceptados por estado final es igual al conjunto de lenguajes aceptados por vaciado de pila. Teorema: A toda gramática libre de contexto, le corresponde un pila, el lenguaje generado por ella y viceversa. Corolario: El conjunto de lenguajes reconocidos por los $ tiene un autómata de pila que lo reconoce. todo
que reconoce, por vaciado de
son los lenguajes libres de contexto y
También se puede deducir que existe una correspondencia entre los lenguajes libres de contexto, las gramáticas libres de contexto y los autómatas de pila. Gramática
Autómata
Lenguaje
Alberto Suárez López
Página 46
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Algoritmo $− : Sea la gramática libre de contexto
= (Σ Γ • • • • • •
∅ ) donde: Σ = )' Γ = )" ∪ )' ={ } -= =
) , construimos un
se define como:
( λ) = ( ) ∀ ∈ )' ( α ) = ( λ ) si y sólo si
Ejemplo: Sea la gramática y
= ()" )'
= ()" )'
→α ∈ , donde ∈ )" y α ∈ ()" ∪ )' )
) tal que )' = {
+ 9 8} , )" = {+ '
},
=+
:
+ → + + ' ! ' ' → '
!
→(+ ) ! Hallar el autómata de pila equivalente: = (Σ Γ ∅ ) , donde: • • • • • •
Σ = { + 9 8} Γ ={ + 9 8 + ' ={ } -=+ =
}
:
( ) = {( λ )} ( + + ) = {( λ )} ( ) = {( λ )} ( 9 9 ) = {( λ )} ( 8 8 ) = {( λ )} ( λ 4 ) = {( + + ' ) ( ' )} ( λ ' ) = {( ' ) ( )} ( λ 4 ) = {( (+ )) ( )}
Alberto Suárez López
Página 47
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 2.5. ALGORITMOS DE DECISIÓN. FNC Y CYK. Teorema: Cualquier lenguaje libre de contexto sin λ es generado por una gramática en la que todas las producciones son de la forma
→ ó → #$ , donde
# $ ∈ )" y ∈ )' .
Definición: Forma normal de Chomsky, "$ : Una gramática que tiene todas las producciones en la forma indicada por el teorema anterior se dice que están en forma normal de Chomsky ( "$ ) .
Alberto Suárez López
Página 48
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O)
$ − "$ : una $ de forma que 1. Paso previo: Eliminar λ −
Algoritmo Suponemos
( ) no contiene λ . , producciones unidad y símbolos inútiles.
En este momento, cualquier producción de la forma → ya está en "$ , porque tiene que ser un terminal (no hay producciones unidad).
→
2. Nos ocuparemos de producciones de la forma o
Si
es un símbolo terminal,
&,
por $ .
Repetimos el proceso para cada símbolo terminal y para cada producción.
3. Tendremos producciones de la forma o o
.
, introducimos un nuevo símbolo no
terminal $ y una producción $ → y reemplazamos o
con & ≥
→ # # #
Si & = ya está en "$ . Sino, creamos símbolos no terminales producción
→ # # #
#& , con & ≥ . &−
y reemplazamos la
#& por el conjunto de producciones:
→ # → # → #
&−
→ #& −
Ejemplo: Consideremos la
$
→
! #
→
!
!
# → ## !
!
= ({
#} {
}
) con
el conjunto de producciones:
Buscar una gramática equivalente en "$ :
→ . ! # → $ !
!
# → # ! . ! $ → . → # → . →
Alberto Suárez López
Página 49
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Cuestión: ¿Es un lenguaje libre de contexto vacío? Un lenguaje libre de contexto será vació si, a partir de (el axioma), no podemos llegar a cadenas de símbolos terminales. Es decir, basta estudiar si es un símbolo muerto. Cuestión: ¿Es un lenguaje libre de contexto infinito?
( ) es finito, buscamos una $ ( ) − {λ} . ( & ) será finito si ( ) lo es.
Para ver si genere
&
en "$ y sin símbolos inútiles, que
Construimos un grafo dirigido con un vértice para cada variable y una flecha del vértice al vértice # si hay una producción de la forma → #$ ó → $# para cualquier $ . Entonces, el lenguaje creado es finito si y sólo si este grafo no tiene ciclos. Por ejemplo:
→ # → #$ ! # → $$ ! $ → S
A
B
C El grafo carece de ciclos y por tanto el lenguaje es finito.
Alberto Suárez López
Página 50
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O)
$ ) , ∈ )' , ¿ ∈ ( ) ? Cuestión: Dada una = ()" )' Para responder a esta cuestión utilizaremos el algoritmo Cocke – Younger – Kasami ($./ ) . Partimos de una $ en forma normal de Chomsky. Se trata de reconstruir el árbol de derivación para de abajo arriba. Iremos obteniendo los )" que generan las distintas subcadenas de . Estos conjuntos de )" se denominarán ) y contienen símbolos )" que derivan la subcadena de que comienza en la posición y con longitud . El objetivo es obtener los )" del conjunto )" axioma, entonces ∈
( ).
(toda la cadena
), si uno de ellos es el
Algoritmo $./ : Formalmente, podemos expresar el algoritmo anterior como sigue:
! $ %&
'
"
#
%$
( $ %
%$ ) *+ , , /
1
1
./ ) ,#
0.
El algoritmo va a ir rellenando la siguiente matriz:
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
Alberto Suárez López
Página 51
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Ejemplo: Dada una
= ()" )'
$
) , con
:
→ # ! #$ → # ! # → $$ ! $ → # ! Determinar si la palabra
1 2 3 4 5
Como
)
{#}
)
{
}
)
pertenece al lenguaje generado por
)
{
)
{#}
)
{#}
∅ )
)
∅ )
{
$
$}
{
) ) )
{
{
$}
$}
)
)
.
{#} {
)
{
$}
}
{#}
$}
}
∈ ) , la palabra pertenece al lenguaje.
Alberto Suárez López
Página 52
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Capítulo 2.6. PROPIEDADES DE LOS LENGUAJES LIBRES DE CONTEXTO. Teorema: Los lenguajes libres de contexto son cerrados bajo la unión, la concatenación y el cierre de Kleene. • Sean y dos lenguajes libres de contexto y y las gramáticas libres de contexto que reconocen cada lenguaje, respectivamente: ∪ • Caso A:
= ()" ∪ )" ∪ {
} )' ∪ )'
) , donde
tiene
∪
y además las
} )' ∪ )'
) , donde
tiene
∪
y además la
producciones:
→ •
!
Caso B:
= ()" ∪ )" ∪ {
producción:
→ •
( ): = ()" ∪ { } )'
Caso C:
→
Alberto Suárez López
) , donde
tiene
, más las producciones:
!λ
Página 53
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O)
Apéndice A: ÁLGORITMOS. Minimización de autómatas finitos deterministas: ) . Hallaremos un Partimos de un =( δ tiene el menor número de estados posibles,
&
=
(
&
δ
&
&
&
que acepta
).
( )y
El algoritmo consiste en determinar las clases de equivalencia en el conjunto de estados. 6. Se elimina cualquier estado que no sea accesible desde el inicial. 7. Se dividen los estados restantes en particiones de forma que todos los estados de una partición sean equivalentes y no haya pares de estados equivalentes en particiones distintas. Construir una partición inicial ∏ dividiendo el conjunto en dos grupos: estados finales
y no – finales
−
.
Determinar una nueva partición ∏ para cada grupo o
a partir de ∏ aplicando el siguiente procedimiento
de ∏ : Dividir
en dos subgrupos tales que dos estados
y
de
estarán en el
mismo subgrupo si y sólo si para cada entrada ! , los estados
y
tienen
transiciones con ! hacia estados del mismo grupo de ∏ . o Si ∏
por sus grupos en ∏
Sustituir
.
≠ ∏ , se han creado nuevos subgrupos: o
∏=∏
o volver al paso 2.2 en caso contrario, es decir, si ya no salen más grupos: o ∏' = ∏ o ir al paso 3 8. Se escoge un estado de cada grupo de la partición ∏ ' &
formar el nuevo conjunto 9. Cálculo de δ en &
que δ (
)=
&
. Sea
y sea
como representante para
.
un estado representante, sea un símbolo tal el representante del grupo de
, entonces δ (
)=
10. Estado inicial y finales. o
El estado inicial
&
de
&
se elige como el representante del grupo que
contiene al estado inicial o
de
. &
El conjunto de estados finales estará formado por los representantes de grupos donde haya estados finales.
Alberto Suárez López
Página 54
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Ejemplo: Minimizar el
={
=(
δ
) donde
={
}y δ viene dada por la siguiente tabla:
},
={
},
= ,
δ
∏
={
}
={ } Luego, viene dada por:
&
={
=
(
={ &
δ&
&
} } &
) donde
={
} ={ } ={
},
&
={
},
&
= ,
&
={
}y δ &
δ&
Alberto Suárez López
Página 55
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Algoritmo
:
"
6. Definición del nuevo conjunto de estados o
Notación: al conjunto
o
A menudo, no todos los estados de inicial
=
&
&
)
}lo denotamos por [
{
o
o
.
( ) (conjunto de partes de
=
&
&
&
]
serán accesibles desde el estado
. En el paso 2 se determiná cuales son accesibles.
[∅] [ ] [ ] [ ] [ ] [ ] [ ] [ ][ ][ ][ ][ [ ][ ][ ][ [ ][ ][ ][ [ ][ ][ [ ][ ][
][ ][ ][ ][ ][ ][ ] ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
]
7. Definición de la nueva función de transición δ . &
o
Para cada conjunto de estados $ ⊆
δ
&
(
$) =
δ(
&
)
y para cada símbolo ∈
,
$
Para cada conjunto de estados que sea accesible desde el
&
, miramos para
todos los estados del conjunto a qué estados transita con la entrada tomamos la unión de todos ellos. &
o
y
estará formada por aquellos estados que sean accesibles desde el inicial
al definir δ . &
8. Definición del nuevo estado inicial o
=
&
&
[ ]
.
&
&
9. Definición del nuevo conjunto de estados finales o
&
= {[
][
]∈
&
.
∧∃
∈
}
10. Eliminación de estados inaccesibles. o
Todos aquellos estados de paso 2.
Alberto Suárez López
&
(ver paso 1) que no hayan hecho falta en el
Página 56
] ]
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Ejemplo: Sea el siguiente
δ
" , calcular el
→
equivalente:
{ } ∅
{ } ∅
δ& →
Alberto Suárez López
[] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
Página 57
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Algoritmo " con λ − ) ) $ Dado un " con λ − ) ) $ definimos como
&
=
(
δ
3. Definición de δ : &
δ
&
(
)=δ (
&
&
δ %
×
&
)
).
→
o
Calculamos
= λ −* (
o
Calculamos
=
o
Calculamos &
4. Definición de o o
[
=(
δ
)
≠ ∅ entonces
&
={
= ∅ entonces
&
=
" con λ − )
0
)
$
}∪
, calcular el
B
δ →
∅ ∅
# $
δ → # $
Alberto Suárez López
%"
{
∅ ∅
" equivalente: 2
1
A
$
]
∈
:
( )∩ Si λ − * ( ) ∩
: ) , el nuevo autómata lo
)
( )
) = λ −* ( )
Si λ − *
Ejemplo: Sea el siguiente
δ(
" sin λ − )
C
λ
∅ # ∅
∅ ∅ $
# $ ∅
# $}
{# $} {# $}
{$} {$} {$}
∅
Página 58
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Equivalencia entre expresión regular (!
) y autómata finito (
):
Teorema: Si es una expresión regular, entonces existe un " con λ − ) ) lo sumo, un estado final del que no sale niguna transición, que acepta ( ) .
y con, a
$
Demostración: Aplicamos el método de inducción al número de operadores de la expresión regular: • Caso básico. Con operadores.
=λ
=∅
q
q0
q
= con ∈ q0
•
x
q
Caso general. Con ó más operadores. o Sean y dos expresiones regulares, por tanto, para existe
=( =(
o
Supongamos
Alberto Suárez López
δ δ ∩
) tal que ( ) = ( ) y para ) tal que ( ) = ( ) .
existe
= ∅ (renombrar estados) y construimos
.
Página 59
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) o
Caso A:
=(
=( + ) ∪ ∪{
}
∪
{ }) , con δ :
δ
M1 q1
…
f1
q0
f0
q2
…
f2
M2
o
( ) = {ω ω ∈ ( ) ω ∈ ( )} ) Caso B: = ( =( ∪ ∪ δ { }) , con δ : q1
M1
f1
q2
( ) = {ω
Alberto Suárez López
ω ω ∈
( )
ω ∈
M2
(
f2
)}
Página 60
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) o
Caso C:
=(
=( ∪{
)
}
q0
( ) = {ω
o
δ
{ }) , con δ :
q1
ω∈
M1
f1
f2
( )}
Reglas de desarrollo:
qi
a·b
qj
qi
a+b
qj
qi
a
qk
b
qj
a
qi
qj
b qi
a*
qj qi
Alberto Suárez López
qk
qj
Página 61
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Equivalencia entre autómata finito (
) y expresión regular (! ) :
Se trada de, dado un encontrar una expresión regular de tal forma que describan el mismo lenguaje. Dado un se denota por al lenguaje reconocido por el cuando se considera al estado como estado inicial. Se denota por
a la expresión regular que denota al lenguaje
, por tanto,
=
( ).
Definición: Ecuación característica:
&
( )= &
&
∈δ (
)
Por ejemplo, en el autómata: 0
2
1
A
B
&( &( # &($
&( # ) = λ &( # # ) = &($ # ) = ∅
)= )=∅ )=∅
=
&
∈
&
( ) &
•
= ∅ si ∉
ó •
= λ si ∈
&
+
C
&( $ ) = ∅ &( # $ ) = λ &($ $ ) =
, donde:
Así, en el autómata del ejemplo:
=
+λ
#
#
=
# +λ
$
$
=
$
+λ
Definición: Regla de Arden: Sean , y ' tres expresiones regulares tal que λ ∉ • •
= =
+' ⇔ +' ⇔
Alberto Suárez López
, entonces:
= ' ='
Página 62
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Algoritmo ! : 4. Obtener las ecuaciones carácterísticas del 5. Despejar
calculando
para todo ∈
.
aplicando las propiedades de las expresiones regulares (principalmente
regla de Arden y distributiva). 6. Si es el estado inicial, es la expresión regular que denota aquellas cadenas que partiendo de
llegan a un estado final y por tanto la expresión que denota al
lenguaje reconocido por el
.
Ejemplo: Hallar la expresión regular que describe el lenguaje definido por el autómata: 0
2
1
A
B
+λ
#
+λ
$
= #
=
#
$
=
$
Así, ! =
+λ
λ # λ $ = λ
= # =
= # =
$
$
=
C
# $
= # = $
=
=
Alberto Suárez López
Página 63
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Simplificación de $: Consiste en restringir el formato de las producciones de la gramática sin reducir su poder $. generativo de palabras de un • Cada símbolo no terminal y cada símbolo terminal aparece en la derivación de $ generado por la $ . alguna palabra del •
No hay producciones de la forma
→ # donde
# ∈ )" .
Los pasos a seguir son los siguientes: • Eliminar símbolos inútiles o producciones vacías • Eliminar λ − • Eliminar producciones unidad Definición: Símbolos muertos: Símbolos no terminales de los que no se deriva ninguna cadena de símbolos terminales.
inicial.
Definición: Símbolos inaccesibles: Símbolos terminales o no terminales a los cuales no se puede llegar desde el símbolo
Definición: Símbolos inútiles: Símbolos terminales o no terminales que no pueden aparecer en la derivación de $. ninguna palabra del
Alberto Suárez López
Página 64
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Lema: Eliminar símbolos muertos: $ ) con Dada una = ()" )'
&
(
= )" & )'
)equivalente a
&
palabra ω ∈ )' tal que
( ) ≠ ∅ , se puede encontrar otra
$
tal que ∀ ∈ )" existe al menos una &
ω.
Algoritmo: Eliminar símbolos muertos: &
3. Cálculo de )" . o
Si una producción es de la forma el símbolo
o
→ ω con ω ∈ )' entonces se añade
&
en )" .
Si una producción es de la forma
→
con
símbolos &
terminales o no terminales que ya han sido incluidos en )" , entoncese se añade el símbolo &
4. Cálculo de &
o
&
en )" .
.
será el conjunto de todas las producciones de
que contengan sólo
símbolos pertenecientes a )" ∪ )' . &
Ejemplo: Eliminar los símbolos muertos de la gramática:
→ # ! # → # → ! # → # # → ! #
Alberto Suárez López
Página 65
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Lema: Eliminar símbolos inaccesibles: $ ) con Dada una = ()" )'
&
(
= )" & )' &
que
) equivalente a
&
α β.
( ) ≠ ∅ , se puede encontrar otra
tal que ∀
(
)
$
(
)
∈ )" & ∪ )' & existe α β ∈ )" & ∪ )' & tal
Algoritmo: Eliminar símbolos inaccesibles: &
&
3. Cálculo de )" y )' . &
o
Se coloca el símbolo inicial en )" .
o
Si
∈ )" & y la producción →α ! α ! α !
! α ∈ , se añade a )" &
todos los símbolos no terminales que aparecen en cada α y a )' todos los &
símbolos terminales que aparecen en cada α &
4. Cálculo de &
o
.
será el conjunto de todas las producciones de
que contengan sólo
símbolos pertenecientes a )" ∪ )' . &
&
Ejemplo: Eliminar los símbolos inaccesibles de la gramática:
→ → #$ ! # → # ! $ → $ ! → → → #$ ! # → # ! $ → $ !
Alberto Suárez López
Página 66
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Lema: Eliminar símbolos inútiles. Es importante eliminar primero los símbolos muertos y luego los inaccesibles. Ejemplo: Al eliminar símbolos muertos pueden aparecer símbolos inaccesibles.
→ # ! # → $# $ → Eliminamos símbolos muertos:
→ $ → Eliminamos símbolos inaccesibles:
→
Alberto Suárez López
Página 67
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Lema: Eliminar λ −
o producciones vacías.
( ) entonces no se pueden eliminar todas las λ − contrario, si λ ∉ ( ) entonces sí se pueden eliminar todas las λ − Si λ ∈
Definición: Símbolo anulable: Un símbolo no terminal
es anulable si y sólo si
de
. Por el
de
.
λ.
Por ejemplo: Dadas las producciones:
→
$
→ ! λ $ → ! λ Entonces y $ son anulables. Teorema: Si ( ) es generado por una &
$
sin símbolos inútiles ni λ −
, entonces
( ) − {λ} es generada por una
$
.
: Algoritmo: Eliminar λ − 3. Determinar los símbolos anulables.
→ λ es una producción, entonces es anulable. o Si # →α es una producción y todos los símbolos de α son anulables, entonces # es anulable. o
Si
4. Determinar
&
.
→
Si
o o
entonces se añade a
&
todas las producciones
α donde: Si no es anulable entonces α = Si es anulable entonces α = o bien α = λ No todas las α son λ
posibles de la forma o
está en
Ejemplo: Eliminar λ −
→α α α
de la gramática:
→ → #$ # → λ ! $ → λ !
→ → #$ ! $ ! # ! # → $ → Alberto Suárez López
Página 68
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Definición: Producción unidad: Las producciones unidad son producciones de la forma derecha es un único símbolo no terminal. Teorema: Todo lenguaje libre de contexto sin λ −
símbolos inútiles, ni λ −
→ # , es decir, la parte
está definido por una gramática sin
, ni producciones unidad.
Algoritmo: Eliminar producciones unidad: 3. Por el teorema anterior se puede suponer que no existen λ − 4. Cálculo de
&
.
En
&
estarán todas las producciones no unidad de
o o
.
# , se añade a & todas las producciones de la forma →α , siendo # →α una producción no unidad de Si
Ejemplo: Encontrar una gramática equivalente sin producciones unidad:
→ $ →
! $
# →
! ,,,
$ →
!
!$
→ + !
#$
+ → ! → $ →
! !!
#$
$
# →
! ,,,
$ →
!
Alberto Suárez López
Página 69
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Algoritmo $− : Sea la gramática libre de contexto
= (Σ Γ • • • • • •
∅ ) donde: Σ = )' Γ = )" ∪ )' ={ } -= =
) , construimos un
se define como:
( λ) = ( ) ∀ ∈ )' ( α ) = ( λ ) si y sólo si
Ejemplo: Sea la gramática y
= ()" )'
= ()" )'
→α ∈ , donde ∈ )" y α ∈ ()" ∪ )' )
) tal que )' = {
+ 9 8} , )" = {+ '
},
=+
:
+ → + + ' ! ' ' → '
!
→(+ ) ! Hallar el autómata de pila equivalente: = (Σ Γ ∅ ) , donde: • • • • • •
Σ = { + 9 8} Γ ={ + 9 8 + ' ={ } -=+ =
}
:
( ) = {( λ )} ( + + ) = {( λ )} ( ) = {( λ )} ( 9 9 ) = {( λ )} ( 8 8 ) = {( λ )} ( λ 4 ) = {( + + ' ) ( ' )} ( λ ' ) = {( ' ) ( )} ( λ 4 ) = {( (+ )) ( )}
Alberto Suárez López
Página 70
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O)
$ − "$ : una $ de forma que 4. Paso previo: Eliminar λ −
Algoritmo Suponemos
( ) no contiene λ . , producciones unidad y símbolos inútiles.
En este momento, cualquier producción de la forma → ya está en "$ , porque tiene que ser un terminal (no hay producciones unidad).
→
5. Nos ocuparemos de producciones de la forma o
Si
es un símbolo terminal,
&,
por $ .
Repetimos el proceso para cada símbolo terminal y para cada producción.
6. Tendremos producciones de la forma o o
.
, introducimos un nuevo símbolo no
terminal $ y una producción $ → y reemplazamos o
con & ≥
→ # # #
Si & = ya está en "$ . Sino, creamos símbolos no terminales producción
→ # # #
#& , con & ≥ . &−
y reemplazamos la
#& por el conjunto de producciones:
→ # → # → #
&−
→ #& −
Ejemplo: Consideremos la
$
→
! #
→
!
!
# → ## !
!
= ({
#} {
}
) con
el conjunto de producciones:
Buscar una gramática equivalente en "$ :
→ . ! # → $ !
!
# → # ! . ! $ → . → # → . →
Alberto Suárez López
Página 71
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) ¿Es un lenguaje libre de contexto vacío? Un lenguaje libre de contexto será vació si, a partir de (el axioma), no podemos llegar a cadenas de símbolos terminales. Es decir, basta estudiar si es un símbolo muerto. ¿Es un lenguaje libre de contexto infinito?
( ) es finito, buscamos una $ ( ) − {λ} . ( & ) será finito si ( ) lo es.
Para ver si genere
&
en "$ y sin símbolos inútiles, que
Construimos un grafo dirigido con un vértice para cada variable y una flecha del vértice al vértice # si hay una producción de la forma → #$ ó → $# para cualquier $ . Entonces, el lenguaje creado es finito si y sólo si este grafo no tiene ciclos. Por ejemplo:
→ # → #$ ! # → $$ ! $ → S
A
B
C El grafo carece de ciclos y por tanto el lenguaje es finito.
Alberto Suárez López
Página 72
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O)
$ ) , ∈ )' , ¿ ∈ ( ) ? Dada una = ()" )' Para responder a esta cuestión utilizaremos el algoritmo Cocke – Younger – Kasami ($./ ) . Partimos de una $ en forma normal de Chomsky. Se trata de reconstruir el árbol de derivación para de abajo arriba. Iremos obteniendo los )" que generan las distintas subcadenas de . Estos conjuntos de )" se denominarán ) y contienen símbolos )" que derivan la subcadena de que comienza en la posición y con longitud . El objetivo es obtener los )" del conjunto )" axioma, entonces ∈
( ).
(toda la cadena
), si uno de ellos es el
Algoritmo $./ : Formalmente, podemos expresar el algoritmo anterior como sigue:
! $ %&
'
"
#
%$
( $ %
%$ ) *+ , , /
1
1
./ ) ,#
0.
El algoritmo va a ir rellenando la siguiente matriz:
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
Alberto Suárez López
Página 73
Universidad de Oviedo TEORÍA DE AUTÓMATAS Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo (E.U.I.T.I.O) Ejemplo: Dada una
= ()" )'
$
) , con
:
→ # ! #$ → # ! # → $$ ! $ → # ! Determinar si la palabra
1 2 3 4 5
Como
)
{#}
)
{
}
)
pertenece al lenguaje generado por
)
{
)
{#}
)
{#}
∅ )
)
∅ )
{
$
$}
{
) ) )
{
{
$}
$}
)
)
.
{#} {
)
{
$}
}
{#}
$}
}
∈ ) , la palabra pertenece al lenguaje.
Alberto Suárez López
Página 74