Parte 1 - Angelfire

Anuncio
CAPÍTULO 1.
EXPRESIONES REGULARES Y AUTÓMATAS FINITOS
1.1
Introducción a los Autómatas Finitos
Para el estudio de la teoría de la computación se necesitan tres
herramientas matemáticas básicas.
a) La notación teórica establecida,
b) El dominio de los conceptos de funciones y relaciones,
c) Buenos conocimientos de inducción matemática.
La capacidad para usar notación la teórica establecida depende,
fundamentalmente, del conocimiento de las definiciones básicas de
símbolos y sus significados. Conocer las otras dos herramientas depende
de la capacidad para entender razonamientos lógicos.
El prerrequisito de este curso es el conocimiento de algún lenguaje
de programación de alto nivel y los fundamentos de estructuras de
datos y algoritmos, teoría de conjuntos, funciones, relaciones, lógica y
elementos de razonamiento matemático.
El campo de las ciencias computacionales incluye un amplio rango
de temas especiales, desde el diseño de una máquina hasta la
programación. El uso de la computación en el mundo involucra una
riqueza de detalles específicos que deben ser aprendidos para
aplicaciones exitosas. La construcción de modelos es unas de las
esencias de cualquier disciplina científica, y el uso de una disciplina
depende de la existencia de teorías y reglas.
La Teoría de Lenguajes y Autómatas tiene diversas aplicaciones,
como son el diseño digital, lenguajes de programación y compiladores.
Para modelar el hardware de una computadora introducimos la noción
de autómata, que es una construcción que posee las características
indispensables de una computadora digital. Acepta una entrada, produce
una salida, puede tener un almacenamiento temporal, y puede decidir
en la transformación de la entrada en la salida.
A continuación se describen algunos conceptos básicos:
Un lenguaje formal consiste de un conjunto de símbolos y algunas reglas
de formación por los cuales esos símbolos pueden ser combinados en
entidades llamadas sentencias.
1
Un símbolo es una entidad abstracta que no se define formalmente, por
ejemplo a,b,1,’,@
Un alfabeto  es un conjunto finito de símbolos, por ejemplo {a,b,c},
{1,2,3}
Una cadena es una secuencia de símbolos
s= s1 s2 ...sn donde si  
Por ejemplo: casa, del alfabeto {c,a,s,a}
La cadena nula  es la cadena de longitud 0
Si x y y son cadenas, la concatenación de las dos se denota xy
Si tenemos las cadenas: la, pelota del alfabeto {l,a,p,e,o,t}, entonces la
concatenación de ambas cadenas es: la pelota
Sean u,v dos cadenas, entonces
uv = u  {(i+|u|,j)|(i,j) v}
En s=xyz,
x es llamado prefijo,
y es una subcadena,
z es un sufijo de s
Propiedades de la concatenación de cadenas:
(xy)z = z(yz)
x = x = 
x = x = x
Una vez que se conoce el alfabeto, ya es posible definir un
lenguaje, que en nuestro caso está aplicado a ejemplos computacionales
como el reconocimiento de patrones, Bases de Datos y Gramáticas.
Antes de continuar con los conceptos básicos, es conveniente
describir un teorema importante de cardinalidad, el cual nos ayudará aa
comprender mejor la cerradura de Kleen.
Teorema. El conjunto 2N no es numerable
Demostración.
Supongamos que 2N es numerable. Dado que es un conjunto infinito,
debe suponerse que 2n es enumerable y que por lo tanto, puede ser
enumerado de la forma 2N = {A0,A1,….}. Sea D={n  , n }.
2
Obsérvese que D   y, por tanto, D= Ak para algún k. Consideremos
dicho k.
Si k  Ak, entonces puesto que Ak = D, k no puede estar en Ak. Por otro
lado, si k  Ak, entonces k  D y por tanto k debe estar en Ak. Ambas
posibilidades nos llevan a una contradicción. Por consiguiente, la
suposición de que 2 es enumerable es incorrecta.
La técnica de diagonalización se usa para la refutación de muchas
afirmaciones. En la demostración precedente no se ve claramente donde
se usa dicha ténica. Un ejemplo clásico de diagolanización es la
demostración de que el intervalo abierto (0,1) no es numerable.
Supongamos que (0,1) es numerable, por lo que puede ser
representado por el conjunto {a0, a1, …}. Entonces cada ai será
representado por su desarrollo decimal y por convención se usará la
forma incompleta tanto para los números de esa forma como para los de
la forma completa.
Por tanto, 0.25 se representará como 0.24999… Bajo esta
representación, dos números en (0,1) son iguales si y sólo si los dígitos
correspondientes son los mismos. Haremos una lista con los ai
a0 = 0.d00d01d02…
a1 = 0.d10d11d12…
…
ak = 0.dk0dk1dk2…
Para demostrar que (0,1) no es numerable debemos encontrar un
número z  (0,1) tal que z  ai para cualquier i. Sea z= 0.z0z1… donde
zk = 5, si akk  5
2, si akk = 5
Obsérvese que z difiere de cada ak en al menos una cifra decimal y
que 0<z<1. Por tanto, hemos encontrado el z que buscábamos, con lo
que ai no da cuenta de todos os números pertenecientes a (0,1). Aquí la
diagonalización resulta obvia.
La Concatenación de Lenguajes es una extensión de la concatenación
de cadenas; es una operación que se puede manejar desde diferentes
puntos de vista.
3
Un lenguaje L es un conjunto finito o infinito de cadenas tomadas de
algún alfabeto, por ejemplo el lenguaje español, inglés, binario. Los
lenguajes que nos interesan son aquellos que se componen por cadenas
que cumplen ciertas propiedades.
Un lenguaje de cardinalidad infinita puede ser descrito por un conjunto
finito de reglas (sintaxis, gramática). La teoría de lenguajes formales
estudia los procedimientos de especificación, reconocimiento y
manipulación de conjuntos de cadenas formadas a partir de un conjunto
de símbolos.
El reconocimiento de patrones es usado en Procesamiento de Señales,
Inteligencia Artificial, Bases de Datos, etc. Normalmente se representa
al patrón como una cadena de caracteres que hay que reconocer en una
cadena más grande
Si  = {a,b}, entonces * = {a, aa, aaa, ..., b, bb, ..., ab, aba, abb }
Si  es el alfabeto, entonces L *, siendo L un lenguaje del alfabeto 
El lenguaje L1L2 está definido como {XY | X  L1, Y  L2 }
De la misma manera tenemos
L0 = {}
Li = LLi-1 i 1
La cerradura de Kleen del lenguaje L está definida como L* =

i  0
Li
La cerradura positiva de Kleen del lenguaje L está definida como

L+ =
i 1
Li
1.2
Expresiones y conjuntos regulares
Un lenguaje regular es aquel que puede ser descrito por Expresiones
Regulares, para ello debemos definir este concepto y enfatizar en las
tres operaciones válidas que se pueden utilizar entre ellos.
Un lenguaje regular es aquel que puede ser descrito por expresiones
regulares y autómatas finitos deterministas
Las expresiones regulares (e.r.) de un alfabeto  son conjuntos de
cadenas definidos como sigue:
 es una e.r. que denota el conjunto vacío
 es una e.r. que denota el conjunto {}
4
Para cada a  , a es una e.r. que denota el conjunto { a }
Si p y q son e.r. entonces (p+q), (pq) y (p*) denotan los conjuntos
PQ, PQ y P* respectivamente
Son expresiones regulares:
(x + y)*w
(0 + 1)*
(0 + 1 + ... + 9 )* (0 + 1 + ... + 9 )*
No son expresiones regulares :
xn yn
an b2k an
Cada expresión regular r de un alfabeto  representa un lenguaje
denotado por L(r)
Existen diferentes formas de representar expresiones regulares,
dependiendo de la complejidad de la condición establecida. Como
veremos, el significado de una ER da como resultado un conjunto, por lo
tanto las propiedades de los conjuntos son válidas para las ER. Sin
embargo debemos considerar el orden cuando se trata de una operación
de concatenación de palabras ya que allá si afecta la propiedad
conmutativa.
El significado de una expresión regular
Para conocer el significado de una expresión regular, debemos
conocer las características de éstos, ya que dos expresiones regulares
distintas pueden referirse a un mismo lenguaje, y por lo tanto el
significado es el mismo.
El significado de una expresión regular es una función
definida de la manera siguiente:
£ : ER 2*
£() = 
£() = { }
£(a) = {a }, a  
R,S son ER
£(RS) =£(R) £(S)
£(R+S) =£(R)  £(S)
£(R*) =£(R)*
5
En el alfabeto  = {a,b}
Tenemos que
* = 0
  1   2  3  …
* =   {a,b}  {ab, ba, aa, bb}  …
* = {a,b,ab,ba,aa,bb,…}
2* = { a,b,ab,ba,aa,bb,… {a,b}, {a,ab}, {a,aa},…,{a,b,ab},…}
Si tenemos una ER que reconozca a las palabras que empiecen
con la letra b, entonces la solución sería:
b(a+b)* = b,bb,ba,….
La parte de la derecha tiene que ser un elemento de un conjunto
ya que la función va de una ER a un elemento del conjunto.
En * no hay un elemento de esa naturaleza, pero en 2* si lo hay
Una ER que tenga cadenas con al menos dos ceros consecutivos, está
representada por: (0+1)*00(0+1)*
Ejercicio. Encuentra una ER para el lenguaje en el alfabeto {0,1} para
a) Todas las cadenas de ceros y unos
b) Las cadenas que comienzan con 1 y no tienen 2 ceros
consecutivos
c) Las cadenas que contienen un número de ceros distintos de tres
La inversa de una cadena abc es cba. Este concepto es fácilmente
entendido por una persona que programa, porque existen funciones en
los lenguajes de programación que obtienen la inversa de una cadena.
6
Equivalencias principales de las Expresiones Regulares
La práctica se pone de manifiesto cuando queremos detectar
igualdades de expresiones regulares. Existen ocho equivalencias
principales, las cuales se usarán como fórmulas para extender a otras
expresiones.
1. (R+S)=(S+R)
(R+S)+T=R+(S+T)
R+=+R=R
R+R=R
2. R=R=R
R=R=
(RS) T=R(ST)
3. R(S+T)=RS +
RT
(S+T) R=SR+TR
4.R*=R*R*=(R*)*
=(+R)*
5.R*=+RR*
6.(R+S)*=(R*+S*)
*
=(R*S*)*=(R*S)*R
*
=R*(SR*)*  R*+S*
7. R*R=RR*
R(SR)*=(RS)*R
8.
(R*S)*=
+(R+S)*S
(RS*)*=+R(R+S)*
9.
R=SR+T ssi R=S*T
R=RS+T ssi R=TS*
Lo que procede es la comprobación de las igualdades,
considerando las definiciones de cerradura de Kleen, cerradura positiva
de Kleen y concatenación de ER.
1.3 Autómatas Finitos Deterministas
Una máquina de estado finito se utiliza para representar
expresiones regulares. Para entender su funcionamiento es conveniente
familiarizarnos con algunos conceptos de la simbología formal y hacer la
relación con un grafo. Una máquina de estados finitos es un quíntuplo
en el cual se señalan el alfabeto y la función de traslación entre estados.
La transición es única, ya que de cada estado salen exactamente el
número de elementos del alfabeto.
7
Estos autómatas no tienen almacenamiento temporal. Debido a
que el número de estados es finito, un AFD puede tratar únicamente con
situaciones en las cuales la información a ser almacenada en
determinado tiempo está estrictamente limitada. Para representar estos
autómatas, usamos grafos de transición, en los cuales los vértices
representan los estados y las ligas las transiciones. Un lenguaje es el
conjunto de cadenas aceptadas por un Autómata.
Se requiere mostrar la teoría de grafos, a manera de recordatorio,
ya que éste es un tema de la asignatura de Matemáticas Discretas.
Aceptación de una palabra
Cuando rastreamos el AFD, nos damos cuenta que la cantidad de
caminos desde un estado se reduce al número de elementos del
alfabeto. Por lo tanto hay que concentrarnos en las configuraciones
convenientes para armar un buen autómata. Muchas veces hacemos
autómatas redundantes, y aunque aceptan las palabras requeridas, no
son óptimos y eso se manifiesta en la implementación del AFD por
computadora.
Una máquina de estados finitos es un quíntuplo (K, , ,s, F ), donde
K es un conjunto de identificadores de estados
 es el alfabeto de entrada
s  K es el estado inicial
F  K es un conjunto de estados finales
: Kx  K es la función de transición
Una configuración es la situación en que se encuentra la máquina en un
momento dado.
Definición. [q1,w1 M [q2,w2 ssi w1=w2 para un   , y existe una
transición en M tal que
 (q1, )=q2
Definición. Una palabra w  * es aceptada por una máquina M=(K, ,
,s, F ) ssi existe un estado
q  F tal que [s,w M* [q, 
Definición.
Un cálculo en una máquina M es una secuencia de
configuraciones c1,c2,...,cn tales que ci  ci+1.
8
Teorema. Dados una palabra w  * y una máquina M, sólo hay un
cálculo
[s,w M... M[q,  .
Definición. Dos autómatas M1 y M2 son equivalentes, M1  M2 , cuando
aceptan exactamente el mismo lenguaje.
Definición. Dos estados son compatibles si ambos son finales o ninguno
es final.
Definición. Dos estados q1 y q2 son equivalentes, q1  q2 , ssi al
intercambiarlos en cualquier configuración, no se altera la aceptación o
rechazo de toda palabra.
Definimos una función  de Kx*  K de la siguiente manera
(q,)
(q,wa) = ( (q,w), a )
La intención es que (q,w) represente al estado en que estará el AF
después de leer la cadena w del estado q.
Existen algunas características interesantes en un AFD que es
conveniente analizar. Por ejemplo, el número de transiciones que salen
de cada estado está en función de los elementos del alfabeto. Esta
característica parece dificultar la representación regular del autómata,
pero la definición lo pide, por lo cual, el alumno deberá pensar un poco
más antes de obtener el AFD definitivo.
Una palabra es reconocida por un AFD cuando se realizan una
serie de configuraciones hasta llegar a un estado final y la cadena haya
sido consumida en su totalidad.
Cuando se rastrea una palabra en un AFD, se conocen los estados
por donde se va pasando; sin embargo este camino es único, ya que de
cada estado solo sale una transición por cada elemento del alfabeto. El
alumno deberá demostrar esta unicidad, reforzando con aplicaciones. El
cálculo de una palabra en un AFD es único.
9
Elaborando un AFD
La construcción de AFD’s es esencial para entender el
comportamiento de las expresiones regulares. Dado un alfabeto y una
serie de condiciones, se puede elaborar un AFD que satisfaga dichas
condiciones, mediante ensayo y error
Ejercicios
Dado el alfabeto en {0,1}, elaborar un AFD que acepte solamente
palabras
a) que empiecen con 00
b) que no empiecen con 00
c) con un número par de ceros
d) con un número impar de unos
e) con las dos condiciones anteriores
A continuación se realiza el inciso c:
1.4 Autómatas Finitos No Deterministas
A diferencia de los AFD, los AFN permiten que salga un número de
ligas arbitrario de cada estado. Los Autómatas Finitos No Deterministas
(AFN) varían un poco con respecto a los AFDs, ya que las transiciones
que salen de un estado pueden ser muchas porque una palabra del
alfabeto puede repetirse. Por tal motivo, las operaciones que se realizan
son más flexibles y por tanto el análisis varía un poco.
La relación de transición es la parte variable de la definición formal
de un AFN, ya que en los AFD, se maneja una función. La flexibilidad
permitida a las transiciones hace más poderosos a estos autómatas,
pero también más peligrosos en cuanto al control del reconocimiento de
un lenguaje.
Definición. Un AFN es un quíntuplo (K, , ,s, F ) donde K, , s, F
tienen el mismo significado que para el caso de los AFD, y , llamada la
relación de transición, es un subconjunto finito de k x*x k.
10
Definición.
Una palabra w es aceptada por AFN ssi existe una
trayectoria en su diagrama de estados, que parte del estado inicial y
llega a un estado final, tal que la concatenación de las etiquetas de las
flechas es igual a w.
Definición. La cerradura al vacío de cerr-(q) de un estado q es el
conjunto más pequeño que contiene
al estado q,
a todo estado r   una transición (p,,r)  , con cerr-(q).
Un primer ejemplo
Se muestra en la siguiente gráfica el comportamiento de las
transiciones de los AFN’s. Observamos que podría darse el caso en que
no salgan transiciones de un estado, también que salga una transición
vacía. Esto nos indica la gran flexibilidad de los AFN’s con respecto a los
AFD’; sin embargo, hay ventajas y desventajas para cada uno.
La transición en los Autómatas Finitos es de cuidado, ya que
debemos distinguir las características de cada Autómata, así como del
alfabeto. En un AF se definen dos conceptos, la transición  en un AFD
que significa estar en un estado sin transición, pero en un AFN se define
con la cerradura al vacío.
Teorema. Sea M=(K, , ,s, F ) un AFN. Entonces existe un AFD M’= (K’,
‘, ,s’, F’ ) que es equivalente a M.
Teorema. Si L es aceptado por un AFN con transiciones , entonces L es
aceptado por un AFN sin transiciones .
11
1.5 Lenguajes Regulares y Autómatas Finitos
Se dice que dos autómatas son equivalentes si aceptan el mismo
lenguaje. Un AFD es un AFN, pero no viceversa. Sin embargo, existe un
procedimiento para convertir un AFN en un AFD.
Un AFD define un único lenguaje, pero lo inverso no es verdadero.
Se puede reducir el número de estados en un AF.
Las ER pueden ser usadas para describir algunos lenguajes. Si r es
una ER, L( r ) denota el lenguaje asociado con r. Este lenguaje se define
como sigue:
 es una ER que denota el conjunto vacío
 es una ER que denota {}
para cada a  , a es una ER que denota {a}
si r1 y r2 son ER, entonces
L(r1 + r2) = L(r1) + L(r2)
L(r1 r2) = L(r1) L(r2)
L(r1*) = (L(r1) )*
Un AFD es un AFN debido a que cumple las características de sus
parámetros, sin embargo cuando queremos transformar un AFN en un
AFD, debemos cuidar las transiciones. Es válida la transformación y
siempre se puede realizar. El número de estados obtenidos es igual a la
cardinalidad del conjunto potencia de los estados del AFN.
Teorema de transformación AFN a AFD
Para todo AFN N existe algún AFD D tal que L(N)=L(D)
Un AFN con transiciones  puede ser convertido en un AFN sin
transiciones , eliminando las transiciones vacías, sin alterar el
comportamiento del autómata. Para hacer esto, es necesario
comprender que las deltas manejadas tienen una diferencia cuando se
trata de la cerradura al vacío, ya que en el AFN sin  la cerradura al
vacío de un estado es solamente el mismo estado.
Lema. Para cada x,y   y A  K, (A,xy) = ((A,x),y)
12
El lema anterior nos dice que es posible separar las cadenas en una
operación de transición de un Autómata Finito. Esta separación nos
ayudará a simplificar el rastreo de la cadena general.
Ejercicios.
a) Obtener un AF que acepte ((a+b)(a+b))*(ab+(ba)*)
b) Obtener una ER para el lenguaje generado por el siguiente
autómata:
En este capítulo se enseñó el concepto de Expresión Regular y su
relación para ser representado por un Autómata Finito. La construcción
de AF’s tiene como base los grafos de transición, los cuales nos
muestran cómo un lenguaje puede ser reconocido por dicho grafo.
Ahora estamos preparados para profundizar un poco más en las
Expresiones Regulares, tema del siguiente capítulo.
13
Descargar