Académique Documents
Professionnel Documents
Culture Documents
REGULARES
Descripción de los lenguajes formales
Jerarquía de los lenguajes formales
Autómata de estado finito determinista
Expresiones Regulares
AUTOMATAS Y EXPRESIONES
REGULARES
Descripción de los lenguajes formales
Jerarquía de los lenguajes formales
Autómata de estado finito determinista
Expresiones Regulares
Hecho por:
Huaman Tacuri, Percy (093172)
Huillca Chino, Helder (091360)
Huillcahuaman Mondaca, Arleen Marjory
(124760)
Jordán Díaz, Linford Vitali Aron (121454)
Copyright © [2018] por [Grupo 2]
Todos los derechos reservados. Este libro no puede ser reproducido, escaneado,
o distribuido en cualquier forma impresa o electrónica sin permiso.
1ª Edición: [Agosto 2018]
Impreso en el Perú
ISBN: [ISBN number with hyphens]
Tabla de contenido
DESCRIPCION DE LOS LENGUAJES FORMALES .................... 9
INTRODUCCION ......................................................................... 9
DEFINICION DE LENGUAJE ..................................................... 9
PROPIEDADES DE LOS LENGUAJES FORMALES ............. 10
DEFINICION ............................................................................... 12
EJEMPLOS DE LENGUAJES FORMALES ............................. 13
CLASIFICACION DE GRAMATICAS FORMALES ............... 13
FORMALISMO DE LA ESPECIFICACION DE LA LENGUA 14
OPERACIONES EN IDIOMAS.................................................. 15
VERDADES CONCERNIENTES A LOS LENGUAJES
FORMALES ................................................................................ 16
teorema 1 ...................................................................................... 16
Lema 1 ......................................................................................... 16
Demostración del teorema 1 ........................................................ 17
teorema 2 ...................................................................................... 17
teorema 3 ...................................................................................... 18
lenguajes libre del contexto ......................................................... 18
JERARQUIA DE LOS LENGUAJES FORMALES ...................... 20
DEFINICION ............................................................................... 20
LENGUAJES REGULARES ...................................................... 20
Expresiones Regulares ................................................................. 21
Gramáticas Regulares .................................................................. 21
Gramáticas Formales ................................................................... 22
LENGUAJES LIBRES DE CONTEXTO ................................... 22
Gramáticas Libres de Contexto .................................................... 23
LENGUAJES SENSIBLES DEL CONTEXTO .......................... 23
LENGUAJES RECURSIVOS Y RECURSIVAMENTE
ENUMERABLES ........................................................................ 25
AUTOMATA DE ESTADO FINITO DETERMINISTA ............... 26
DEFINICION ............................................................................... 26
Representación de Autómatas ...................................................... 26
Lenguaje recinocido por un AFD ................................................ 29
Estados alcanzables de un AFD ................................................... 29
Distinguibilidad entre palabras .................................................... 29
Operaciones entre lenguajes regulares ......................................... 30
Ejemplos resueltos por el profesor ............................................... 33
Ejemplos resueltos por los estudiantes ........................................ 34
1
Ejemplos sobre autómatas............................................................ 35
EXPRESIONES REGULARES ...................................................... 41
DEFINICION ............................................................................... 41
EXPRESIONES ALTERNATIVAS ........................................... 42
CONTENEDORES ...................................................................... 42
Cuantificadores ............................................................................ 44
Puntos de Anclaje ........................................................................ 45
Sustituciones ................................................................................ 46
Escapes ......................................................................................... 47
Componentes de las expresiones regulares .................................. 47
Ejemplos ...................................................................................... 50
1. Resueltos por el profesor ..................................................... 50
2. Resueltos por el estudiante................................................... 51
3. Ejemplos Nuevos ................................................................. 52
BIBLIOGRAFÍA ............................................................................. 57
2
Índice de figuras
Figura 1:Sistema de ecuación de lenguajes unarios formales. .............................. 19
Figura 2: Transiciones de un Autómata ................................................................. 27
Figura 3:Ejemplo 1 – Automata ............................................................................. 28
Figura 4:AF que reconoce un ER – Caso Base ........................................................ 31
Figura 5:Ejemplo A1 – Primera Aproximacion ....................................................... 31
Figura 6:Ejemplo 2 – Segunda Aproximacion ........................................................ 32
Figura 7:Automata Resultante de A1 y A2 ............................................................. 32
Figura 8: Autómata para transacciones bancarias ................................................ 33
Figura 9: Autómata que conforma el código del cliente bancario ......................... 33
Figura 10: Autómata como cursor ......................................................................... 34
Figura 11: Ejemplo resuelto por el profesor ........................................................... 35
Figura 12:Transicion del automata ........................................................................ 35
Figura 13:Automata que acepta lenguaje L1......................................................... 35
Figura 14: Automata que acepta lenguaje L2 ........................................................ 36
Figura 15: Automata que acepta lenguaje L3 ........................................................ 36
Figura 16: Automata que acepta lenguaje L4 ........................................................ 37
Figura 17:Automata resultante de la tabla ........................................................... 38
Figura 18: Ejemplo de AFD ..................................................................................... 38
Figura 19: AFD equivalente al AFN ........................................................................ 39
Figura 20: AFN ejemplo.......................................................................................... 39
Figura 21: AFD quivalente a AFN ........................................................................... 40
Figura 22:Búsqueda con dos variables................................................................... 42
Figura 23:Busqueda por mayúsculas y minúsculas ................................................ 43
Figura 24: Búsqueda con rangos ............................................................................ 43
Figura 25: Tipos de Caracteres ............................................................................... 43
Figura 26: Búsqueda digito o letra después ........................................................... 44
Figura 27: Búsqueda del siguiente carácter después de la palabra ....................... 44
Figura 28: Búsqueda por negación ........................................................................ 44
Figura 29: Búsqueda por aparición ........................................................................ 45
Figura 30: Búsqueda por inicio de palabra ............................................................ 45
Figura 31: Búsqueda por fin de palabra ................................................................. 46
Figura 32: Sustitución de patrones ........................................................................ 46
Figura 33: Repeticiones por línea ........................................................................... 46
Figura 34: Eliminar primera columna .................................................................... 47
Figura 35: Guardado de un patrón encontrado ..................................................... 47
Figura 36: Metacaracteres – delimitadores ........................................................... 48
Figura 37: Metacaracteres – clases preferidas ...................................................... 49
Figura 38: Metacaracteres – iteradores ................................................................ 49
3
4
Índice de tablas
Tabla 1: Tabla de Transicion .................................................................................. 27
Tabla 2: Ejemplo 1 – Tabla de transiciones ............................................................ 28
Tabla 3:Tabla de transición AFD ............................................................................ 37
Tabla 4:Tabla de Transiciones de AFD Equivalente al AFN .................................... 38
Tabla 5:Tabla de transición de AFD a AFN ............................................................. 39
5
6
Prefacio
7
datos de un usuario, o tal vez para examinar grandes cantidades de
datos. En un nivel superior, las expresiones regulares permiten
dominar los datos, controlarlo y ponerlo a trabajar. Dominar las
expresiones regulares es dominar los datos.
8
DESCRIPCION DE LOS LENGUAJES FORMALES
INTRODUCCION
Existen dos tipos básicos y reconocidos de lenguajes: los lenguajes
naturales y los lenguajes formales. El origen y desarrollo de los
primeros, como pueden ser el castellano, el inglés o el francés, es
natural, es decir, sin el control de ninguna teoría. Las teorías de
lenguajes naturales y las gramáticas, fueron establecidas a priori, esto
es, después de que el lenguaje había ya madurado. Por otro lado, los
lenguajes formales como las matemáticas y la lógica, fueron
desarrollados generalmente a través del establecimiento de una teoría,
la cual le da las bases para dichos lenguajes.
DEFINICION DE LENGUAJE
Las lenguas son sistemas más o menos complejos, que asocian
contenidos de pensamiento y significación a manifestaciones
simbólicas tanto orales como escritas. Aunque en sentido estricto, el
lenguaje sería la capacidad humana para comunicarse mediante
lenguas, se suele usar para denotar los mecanismos de comunicación
no humanos (el lenguaje de las abejas o el de los delfines), o los
creados por los hombres con fines específicos (los lenguajes de
programación, los lenguajes de la lógica, los lenguajes de la
aritmética...).
9
Un conjunto no vacío y finito de símbolos se conoce como alfabeto.
Si es un alfabeto, y denota que es un símbolo de. Por
tanto, si = {0,1,2,3,4,5,6,7,8,9}, podemos decir que 0. Obsérvese, que,
puesto que un alfabeto es simplemente un conjunto finito no vacío,
dados 1 y 2 alfabetos.
Una secuencia finita de símbolos de un determinado alfabeto, se
conoce como palabra sobre dicho alfabeto. Nuestra experiencia, nos
lleva a identificar el término palabra con las palabras de cualquier
lenguaje natural, por esta razón, a menudo se usa el término cadena en
lugar de palabra, con el fin de evitar esta idea preconcebida. Se
tratarán igual los términos cadena y palabra.
10
una palabra mantiene el mismo significado prescindiendo del contexto
en el que se encuentre. Como resultado de este proceso, obtendremos
las llamadas gramáticas libres del contexto. En adición, el significado
de símbolos es determinado exclusivamente por la sintaxis, sin
referencia a ningún contenido semántico. Una función y una fórmula,
puede designar cualquier cosa, solamente los operadores y relaciones
que nos permiten escribir una fórmula como por ejemplo la igualdad,
desigualdad, pertenencia, no pertenencia, conectivos lógicos, etc., y
operadores algebraicos +, *, etc., tienen significados especiales.
DEFINICION
Un lenguaje formal es un conjunto (finito o infinito) de cadenas finitas
de símbolos primitivos
12
Estrictamente hablando, un lenguaje formal es idéntico al conjunto de
todas sus fórmulas bien formadas. A diferencia de lo que ocurre con
el alfabeto (que debe ser un conjunto finito) y con cada fórmula bien
formada (que debe tener una longitud también finita), un lenguaje
formal puede estar compuesto por un número infinito de fórmulas bien
formadas.
Por ejemplo, un alfabeto podría ser el conjunto {a,b}, y una gramática
podría definir a las fórmulas bien formadas como aquellas que tienen
el mismo número de símbolos a que b. Entonces, algunas fórmulas
bien formadas del lenguaje serían: ab, ba, abab, ababba, etc.; y el
lenguaje formal sería el conjunto de todas esas fórmulas bien
formadas.
Para algunos lenguajes formales existe una semántica formal que
puede interpretar y dar significado a las fórmulas bien formadas del
lenguaje. Sin embargo, una semántica formal no es condición
necesaria para definir un lenguaje formal, y eso es una diferencia
esencial con los lenguajes naturales.
En algunos lenguajes formales, la palabra vacía (esto es, la cadena de
símbolos de longitud cero) está permitida, notándose frecuentemente
mediante {\displaystyle \epsilon \,}, {\displaystyle e\,} o
{\displaystyle \lambda \,}.
13
generan lenguajes formales, en estos tipos:
- Tipo 3: Gramáticas regulares que generan lenguajes regulares
- Tipo 2: Gramáticas incontextuales que generan lenguajes
incontextuales
- Tipo 1: Gramáticas contextuales que generan lenguajes
contextuales
- Tipo 0: Gramáticas libres que generan lenguajes sin ningún
tipo de restricción
FORMALISMO DE LA ESPECIFICACION DE LA
LENGUA
La teoría del lenguaje formal se refiere raramente a idiomas
particulares (excepto como ejemplos), pero se trata principalmente al
estudio de varios tipos de formalismos para describir idiomas. Por
ejemplo, una lengua se puede dar como
- Un sistema de las secuencias que se pueden generar por alguno
gramática formal
- Un sistema de secuencias descritas o emparejadas por un
detalle expresión regular
- Un sistema de secuencias aceptadas por alguno autómata, por
ejemplo, a Máquina de Turing o autómata finito del estado.
- Un sistema de las secuencias para las cuales algunos
procedimientos de la decisión (algoritmo que pide una
secuencia de las preguntas relacionadas de YES/NO) produce
la respuesta SÍ.
Las preguntas típicas preguntaron por tales formalismos incluyen:
- ¿Cuál es su energía expresiva? ¿(¿Puede el formalismo X
describir cada lengua que el formalismo Y pueda describir?
¿Puede describir otros idiomas?)
14
- *¿Cuál es su recognizability? (¿Cómo es difícil es para decidir
a si una palabra dada pertenece a una lengua descrita por el
formalismo X?)
- *¿Cuál es su comparabilidad? (¿Cómo es difícil es para decidir
a si dos idiomas, una descrita en el formalismo X y uno en el
formalismo Y, o en X otra vez, son realmente la misma
lengua?).
OPERACIONES EN IDIOMAS
Se pueden utilizar varias operaciones para producir nuevos lenguajes
a partir de otros dados. Supóngase que L1 y L2 son lenguajes sobre un
alfabeto común. Entonces.
- La concatenación L1L2 consiste de todas aquellas palabras de
la forma vw donde v es una palabra de L1 y w es una palabra
de L2
- La intersección L1&L2 consiste en todas aquellas palabras que
están contenidas tanto en L1 como en L2
- La unión L1|L2 consiste en todas aquellas palabras que están
contenidas ya sea en L1 o en L2
- El complemento ~L1 consiste en todas aquellas palabras
producibles sobre el alfabeto de L1 que no están ya contenidas
en L1
- El cociente L1/L2 consiste de todas aquellas palabras v para
las cuales existe una palabra w en L2 tales que vw se encuentra
en L1
- La Estrella L1* consiste de todas aquellas palabras que pueden
ser escritas de la forma W1W2...Wn donde todo Wi se
15
encuentra en L1 y n ≥ 0. (Nótese que esta definición incluye a
ε en cualquier L*)
- La intercalación L1*L2 consiste de todas aquellas palabras que
pueden ser escritas de la forma v1w1v2w2...vnwn; son
palabras tales que la concatenación v1...vn está en L1, y la
concatenación w1...wn está en L2
Lema 1
El conjunto de lenguajes en un alfabeto no vacío dado es incontable.
16
\{a\}\,} es incontable. Como sabemos, un lenguaje L en {\displaystyle
\{a\}\,} {\displaystyle \{a\}\,} es un subconjunto de {\displaystyle
\{a\}^{*}\,} {\displaystyle \{a\}^{*}\,}, esto nos lleva a la conclusión
de que, el conjunto de todos los lenguajes en {\displaystyle \{a\}\,}
{\displaystyle \{a\}\,} es justamente {\displaystyle 2^{\{a\}^{*}}\,}
{\displaystyle 2^{\{a\}^{*}}\,} (el conjunto de todos los
subconjuntos o conjunto potencia de {\displaystyle \{a\}^{*}\,}
{\displaystyle \{a\}^{*}\,}) y es evidente que {\displaystyle
\{a\}^{*}\,} {\displaystyle \{a\}^{*}\,} es infinito (de hecho;
contable), también ha sido demostrado que si {\displaystyle A} A es
un conjunto infinito (contable o incontable), entonces {\displaystyle
2^{A}} {\displaystyle 2^{A}} es mayor que {\displaystyle A} A
porque {\displaystyle 2^{A}} {\displaystyle 2^{A}} pasa a ser un
conjunto infinito de órdenes del infinito, al ser mayor, no existirá
biyección entre {\displaystyle A} A y {\displaystyle 2^{A}}
{\displaystyle 2^{A}}, lo que hace a {\displaystyle 2^{A}}
{\displaystyle 2^{A}} un conjunto infinito incontable, la prueba ha
finalizado.
Teorema 2
Los lenguajes son conjuntos contables.
17
{\displaystyle L} L es como mucho un conjunto infinito contable (del
mismo tamaño que {\displaystyle \Sigma ^{*}} \Sigma ^{*}), la
prueba ha culminado.
Teorema 3
El conjunto de lenguajes formales es contable.
18
lenguajes unarios formales son básicamente conjuntos periódicos (Jez
& Okhotin, 2007).
LENGUAJES REGULARES
Los lenguajes regulares se llaman así porque sus palabras contienen
regularidades o repeticiones de los mismos componentes, como por
ejemplo en el Lenguaje L1 siguiente: L1 = {ab; abab; ababab;
abababab,…}
En este ejemplo se aprecia que las palabras de L1 son simplemente
repeticiones de “ab” cualquier número de veces. Aquí la “regularidad”
consiste en que las palabras contienen “ab” algún número de veces.
Otro ejemplo más complicado sería el lenguaje L2: L2 = {abc; cc;
abab; abccc; ababc,…}
La regularidad en L2 consiste en que sus palabras empiezan con
repeticiones de “ab” seguidas repeticiones de “c”. Similarmente es
posible definir muchos otros lenguajes basados en la idea de repetir
esquemas simples. Esta es la idea básica para formar los lenguajes
regulares. Adicionalmente a las repeticiones de esquemas simples,
vamos a considerar que los lenguajes finitos son también regulares por
definición.
20
Por ejemplo, el lenguaje L3 = {Anita, lava, la, tina} es regular.
Al combinar los lenguajes uniéndolos o concatenándolos, también se
obtiene un lenguaje regular.
Por ejemplo.
L1 U L2 = {Anita, lava, la, tina, ab, abab, ababab, abababab,…} es
regular.
Expresiones Regulares
La noción de conjuntos nos permite describir los lenguajes regulares,
pero es mejor una notación en donde las representaciones de los
lenguajes sean simplemente texto (cadenas de caracteres).
Así las representaciones de los lenguajes regulares serian simplemente
palabras de un lenguaje.
Con estas ideas vamos a definir un lenguaje, a través de las
expresiones regulares, en donde cada palabra va a denotar un lenguaje
regular.
Sea ∑ un alfabeto. El conjunto de las expresiones regulares (ER) sobre
∑ contienen las cadenas en el alfabeto ∑U {“A”,” +”,”.”,” *”,” (”,”)”,”
ᵩ”} que cumplen con lo siguiente:
“A”y” ᵩ” ∈ ER
ʎ ∈ ∑ entonces ʎ ∈ ER
Si E1, E2 ∈ ER, entonces “(” E1” +” E2” ∈ ER,” (” E1”.” E2”)” ∈ ER,
“(” E1”) *” ∈ ER.
Las ER son simplemente formulas cuyo propósito es representar cada
una de ellas un lenguaje, en este caso un lenguaje regular. Así, el
significado de un ER es simplemente el lenguaje que ella representa.
Gramáticas Regulares
Además de las expresiones regulares existe otra forma de representar
los lenguajes regulares, y a esta forma se les llama gramáticas
regulares.
Para ello primeramente vamos a ver que son las gramáticas y como
nos ayudan a representar a los lenguajes formales.
21
Gramáticas Formales
La representación de los lenguajes regulares se fundamenta en la
noción de gramática formal.
Intuitivamente, una gramática es un conjunto de reglas para formar
correctamente las frases de un lenguaje. La formalización que se
presenta de la noción de gramática es debida a Chomsky, y está basada
en las llamadas reglas gramaticales.
Una regla es una expresión de la forma α->β, en donde tanto α como
β son cadenas de símbolo en donde pueden aparecer tanto elemento
del alfabeto ∑ como unos nuevos símbolos, llamados variables (no
terminales). Los símbolos que no son variables son constantes
(terminales).
Por ejemplo, una posible regla gramatical es X->aX. La aplicación de
una regla α->β a una palabra uαv produce la palabra uβv. En
consecuencia, las reglas de una gramática pueden ser vistas como
reglas de reemplazo. Por ejemplo, si tenemos una cadena de símbolos
bbXa, le podemos aplicar la regla X->aX, dando como resultado la
nueva cadena bbaXa.
- <frase>-><sujeto><predicado>
- <sujeto>-><articulo><sustantivo>
- <articulo>->el ǀ la
- <sustantivo>->perro ǀ luna
- <predicado>-><verbo>
- <verbo>->brilla ǀ corte
Como ejemplo, dado el lenguaje {a^n b^n c^n |≥1}, la gramática que
genera dicho lenguaje es la siguiente:
G= ({S, A, B}, {a, b,c}, {S}, {(S,abc|aAbc), (Ab,bA), (Ac,Bbcc),
(bB,Bb), (aB,aa|aaA)})
De donde obtenemos las producciones de esta gramática, las cuales
son:
- S->abc|aAbc
- Ab->bA
- Ac->Bbcc
- bB->Bb
- aB->aa|aaA
24
LENGUAJES RECURSIVOS Y RECURSIVAMENTE
ENUMERABLES
Estos lenguajes también se les conoce como lenguajes estructurados
por frase, y son los lenguajes tipo 0 dentro de la jerarquía de Chomsky.
Un lenguaje L sobre un alfabeto ∑ se dice que es recursivamente
enumerable si es aceptado por una máquina de Turing.
Las gramáticas que describe a este tipo de lenguajes se les conoce
como gramáticas no restringidas o bien gramáticas estructuradas por
frases.
Una gramatical no restringida es una cuádrupla G= (N, ∑, S, P) en
donde:
- N es un alfabeto de símbolos no terminales.
- ∑ es un alfabeto de símbolos terminales con N∩∑= Ø
- S∈N es el símbolo inicial.
- P es un conjunto finito de producciones de la forma α->β,
donde α〖∈(NU∑)〗^+ y β〖∈(NU∑)〗^*
- S->ACaB
- Ca->aaC
- CB->DB|E
- aD->Da
- AD->AC
- aE->Ea
- AE-> ε
25
AUTOMATA DE ESTADO FINITO
DETERMINISTA
DEFINICION
Los Autómatas Finitos son máquinas teóricas que van cambiando de
estado dependiendo de la entrada que reciban. La salida de estos
Autómatas está limitada a dos valores: aceptado y no aceptado, que
pueden indicar si la cadena que se ha recibido como entrada es o no
valida. Generalmente utilizaremos los Autómatas Finitos para
reconocer lenguajes regulares, es decir, una palabra se considerará
valida solo si pertenece a un determinado lenguaje.
Formalmente, un Autómata Finito Determinista (AFD) se define
como una tupla.
Σ es el alfabeto de entrada
Q es el conjunto finito y no vacío de los estados del Autómata
f es la función de transición que indica en que situaciones el
Autómata pasa de un estado a otro, se define f : Q × Σ → Q
q0 ϵ Q es el estado inicial
F ϲ Q es el conjunto de estados finales de aceptación (F= Ø) (Jurado
Málaga, 2008, p. 40)
REPRESENTACIÓN DE AUTÓMATAS
Existen dos formas de representar un AFD, mediante tablas de
transición o mediante diagramas de transición. Introduciremos estas
dos representaciones con un ejemplo.
f(p, a) = q
f(p, b) = r
26
f(q, a) = q
f(q, b) = r
f(r, a) = r
f(r, b) = r
a b
→p q r
∗ q q r
r r r
27
Ejemplo
Número par de 0's y de 1's, con Σ = {0,1}
f 0 1
q0 q2 q3
q1 q3 q0
q2 q0 q3
q3 q1 q2
28
Podemos extender la función de transición f para tratar cadenas en
lugar de símbolos del alfabeto:
f* : Q x Σ* → Q
Caso base:
f* (q,T ) = q
Caso recursivo:
f* (q,aw) = f* (f (q,a),w)
29
Ejemplo
Número par de 0'1 y de 1's
Lo importante es saber si:
1. El número de 0's es par (2 estados)
2. El número de 1's es par (2 estados)
Dado que podemos combinar cualquiera de los dos primeros estados
con cualquiera de los dos segundos, necesitamos estados 2 * 2 = 4
estados.
x= 011010 es indistinguible de y=10 porque da igual qué
cadena se ponga detrás:
Existe z ϵ Σ* | ((x z ϵ L ˄ y z no ϵ L) ˅ (x z no ϵ L ˄ y z ϵ L)
30
- Casos base:
- Casos recursivos:
- (E): Si A es el AF correspondiente a E, también se
corresponde a (E) .
- E1 + E2: Si A1 es el AF correspondiente a E1, y A2 el
de E2, el autómata de debe representar parejas de
estados. Además, un estado es de aceptación si alguno
de sus componentes era de aceptación.
Ejemplo
L1: núm. par de 0’s
L2: núm. par de 1’s
L: núm. par de 0's o de 1's
A1:
31
A2:
Autómata resultante:
32
EJEMPLOS RESUELTOS POR EL PROFESOR
Ejemplo de un autómata diseñado para realizar transacciones
bancarias
33
Figura 10: Autómata como cursor
q0 es el estado inicial
f indica las transiciones: tenemos 5
q4 será un estado de aceptación, esto es, el que señala el punto
final de nuestro proceso.
34
Figura 11: Ejemplo resuelto por el profesor
35
Ejemplo 2:
Autómata finito determinístico que acepta el lenguaje
L2 = {00x1/ x {0, 1}* }
M2D = < {e0, e1, e2, e3}, {0, 1}, f2D, e0, {e3 }>f2D está definida
por el siguiente diagrama de transición de estados
Ejemplo 3:
Autómata finito determinístico que acepta el lenguaje
L3 = {xc^3m/ x ∈ {a, b}* y la cantidad de b’s es par y m ≥ 0} M3D =
< {e0, e1, e2, e3, e4}, {a, b, c}, δ3D, e0, {e0, e4}> δ3D está definida
por el siguiente diagrama de transición de estados
36
Ejemplo 4:
Autómata finito no determinístico que acepta el lenguaje
L4 = {x / x ∈ {0, 1}* y x contiene la subcadena 00 ó x contiene la
subcadena 11}
M4ND = < {e0, e1, e2, e3, e4}, {0, 1}, δ4ND, e0, {e2, e4 }> δ4ND
está definida por el siguiente diagrama de transición de estados
Ejemplo 5:
Dado el alfabeto Σ={0,1}, construir un Autómata Finito
Determinista de 4 estados como máximo, que acepte el lenguaje
representado por la siguiente expresión
regular ((01+10)(11)*0)*(01+10)(11)*.
0 1
1 2 3
2 0 4
3 4 0
*4 1 2
37
Figura 17:Autómata resultante de la tabla
Ejemplo 6:
Dado el autómata de la figura 1, el proceso de construcción de un AFD
equivalente parte del estado inicial {q0}, y determina el conjunto de
estados alcanzables con cada símbolo del alfabeto. De esta forma, por
ejemplo, al considerar el símbolo a se alcanzan los estados {q0, q1,
q2}. Cada uno de los conjuntos de estados que aparezcan se considera
como uno de los estados del AFD equivalente, determinándose para
cada uno de ellos su función de transición. El proceso se repite
mientras aparezcan nuevos estados. La figura 2 muestra la tabla de
transiciones del AFD.
a b c
{q0} {q0,q1,q2} {q1,q2} {q2}
{q0,q1,q2} {q0,q1,q2} {q1,q2} {q2}
{q1,q2} - {q1,q2} {q2}
{q2} - - {q2}
38
A partir de esta tabla el diagrama de transiciones queda como
muestra la figura.
Ejemplo 7:
Dado el AFN de la figura 4 la tabla de transiciones del AFD
equivalente sería la mostrada en la figura 5, con lo que el diagrama de
transiciones del AFD quedaría como se muestra en la figura
a b
{q0} {q0} {q0,q1}
{q0,q1} {q0} {q0,q1,q2}
{q0,q1,q2} {q0,q1,q2} {q0,q1,q2}
39
Figura 21: AFD equivalente a AFN
40
EXPRESIONES REGULARES
DEFINICION
Uno de los éxitos no reconocidos en la estandarización de la
informática ha sido la expresión regular (RE), un lenguaje para
especificar cadenas de búsqueda de texto. Este lenguaje práctico se
utiliza en todos los lenguajes de programación, procesadores de texto
y herramientas de procesamiento de texto como el grep de
herramientas Unix o Emacs. Formalmente, una expresión regular es
una notación algebraica para caracterizar un conjunto de cuerdas. Son
particularmente útiles para la búsqueda en textos, cuando tenemos un
patrón que buscar y un corpus de textos que buscar. Una función de
búsqueda de expresiones regulares buscará a través del corpus,
devolviendo todos los textos que coincidan con el patrón. El corpus
puede ser un único documento o una colección. Por ejemplo, el grep
de la herramienta de línea de comandos de Unix toma una expresión
regular y devuelve cada línea del documento de entrada que coincide
con la expresión. (Jurafsky & James H., 2008, p. 11).
41
En la web hay varios sitios en los que se pueden probar las expresiones
regulares, como por ejemplo regex101.
Las expresiones regulares se evalúan carácter a carácter. Las más
básicas son simplemente una lista de letras que forman un texto que
debe coincidir exactamente con lo que buscamos. Por ejemplo, con la
expresión “Human” sólo coincidirá “Human”. Pero por fortuna las
expresiones regulares nos permiten hacer búsquedas y substituciones
mucho más complejas. (Creative Commons Reconocimiento 4.0
Internacional License., n.d.)
EXPRESIONES ALTERNATIVAS
Una expresión u otra. Imaginemos que tenemos un fichero con
los orígenes de los pacientes de un estudio sobre síndrome de Usher.
Queremos seleccionar todos los pacientes que vienen de Valencia o
Castellón. Podemos hacerlo utilizando la sintaxis para expresiones
alternativas:
CONTENEDORES
En muchas ocasiones nos interesa seleccionar patrones que pueden
tener en una posición varias letras distintas. Por ejemplo, podríamos
describir el patrón “comienza por Usher y después tiene un número”
o “comienza por usher y después tiene un par de letras”. Busquemos
todas las líneas que tienen la palabra Usher o usher.
42
Figura 23:Busqueda por mayúsculas y minúsculas
Cuantificadores
Además de indicar qué caracteres queremos permitir podemos
seleccionar cuantas veces deben aparecer. Si no añadimos nada que
indique lo contrario se asume que el carácter debe aparecer una vez,
pero podríamos pedir que el carácter aparezca un número distinto de
44
veces (Creative Commons Reconocimiento 4.0 Internacional
License., n.d.): (Creative Commons Reconocimiento 4.0 Internacional
License., n.d.)
- ”?”, el carácter aparece ninguna o una vez. “usher1?”
coincidiría con “usher” o “usher1”.
- ”*”, cero, una o varias veces.
- ”+”, al menos una vez.
- “{4}”, cuatro veces.
- “{4,10}”, entre 4 y 10 veces
Puntos de Anclaje
Además de poder indicar qué y cuántas veces queremos que algo
aparezca podemos indicar dónde deseamos que lo haga. Los puntos de
anclaje más utilizados son (Creative Commons Reconocimiento 4.0
Internacional License., n.d.):
- ”^”, inicio de línea
- ”$”, fin de línea
- ”<”, principio de palabra
- ”>”, fin de palabra
- “\b”, límite de palabra
Líneas que comienzan por B:
45
Líneas que terminan por B:
Sustituciones
Las expresiones regulares además de ser útiles para buscar patrones
sirven para sustituirlos. Por ejemplo, podemos sustituir madrid por
Madrid con el siguiente comando (Creative Commons
Reconocimiento 4.0 Internacional License., n.d.):
Escapes
Algunos caracteres tienen significados especiales, como., $, (,), [,], \ o
^ y si se quieren utilizar hay que escaparlos precediéndolos con \.
El campo de las expresiones regulares es muy amplio y esta pequeña
introducción sólo ha pretendido mostrar algunas de las posibilidades
de esta gran herramienta. El mejor modo de aprender a utilizarlas es
intentar hacer uso de ellas en problemas concretos y echar una ojeada
a algunos de los libros y tutoriales que se han escrito sobre ellas.
(Creative Commons Reconocimiento 4.0 Internacional License., n.d.)
Componentes de las expresiones regulares
Las expresiones regulares son un mini lenguaje en sí mismo, por lo
que para poder utilizarlas eficientemente primero debemos entender
los componentes de su sintaxis; ellos son:
47
- Literales: Cualquier carácter se encuentra a sí mismo, a menos
que se trate de un metacarácter con significado especial. Una
serie de caracteres encuentra esa misma serie en el texto de
entrada, por lo tanto, la plantilla "raul" encontrará todas las
apariciones de "raul" en el texto que procesamos.
- Secuencias de escape: La sintaxis de las expresiones
regulares nos permite utilizar las secuencias de escape que ya
conocemos de otros lenguajes de programación para esos
casos especiales como ser finales de línea, tabs, barras
diagonales, etc. Las principales secuencias de escape que
podemos encontrar, son:
- Clases de caracteres: Se pueden especificar clases de
caracteres encerrando una lista de caracteres entre corchetes [],
la que encontrará uno cualquiera de los caracteres de la lista.
Si el primer símbolo después del "[" es "^", la clase encuentra
cualquier carácter que no está en la lista.
- Metacarácteres: Los metacarácteres son caracteres especiales
que son la esencia de las expresiones regulares. Como son
sumamente importantes para entender la sintaxis de
las expresiones regulares y existen diferentes tipos, voy a
dedicar una sección a explicarlos un poco más en detalle.
(Briega, 2015)
Metacarácteres - delimitadores
Esta clase de metacarácteres nos permite delimitar
dónde queremos buscar los patrones de búsqueda.
Ellos son:
Metacarácteres - iteradores
Cualquier elemento de una expresión puede ser
seguido por otro tipo de metacarácteres,
los iteradores. Usando estos metacarácteres se
puede especificar el número de ocurrencias del
carácter previo, de un metacarácter o de una sub
expresión. Ellos son:
49
En estos metacarácteres, los dígitos entre llaves de
la forma {n, m}, especifican el mínimo número de
ocurrencias en n y el máximo en m. (Briega, 2015)
Ejemplos
1. Resueltos por el profesor
i.
ii.
iii.
iv.
v.
50
2. Resueltos por el estudiante
i.
Resultado:
ii.
Resultado:
51
iii.
iv.
3. Ejemplos Nuevos
i.
52
ii.
iii.
iv.
v.
53
vi.
Resultado
vii.
Resultado
viii.
Resultado
54
ix.
Resultado
x.
Resultado
55
56
BIBLIOGRAFÍA
Balari, S. (2014). Teoría de Lenguajes Formales. Barcelona.
Briega, R. E. (19 de 07 de 2015). Matemáticas, análisis de datos y
python. Obtenido de Expresiones Regulares con Python:
https://relopezbriega.github.io/blog/2015/07/19/expresiones-
regulares-con-python/
Creative Commons Reconocimiento 4.0 Internacional License. (s.f.).
Bioinformatics at COMAV. Obtenido de Expresiones
regulares:
https://bioinf.comav.upv.es/courses/linux/unix/expresiones_r
egulares.html
Creative Commons Reconocimiento 4.0 Internacional License. (s.f.).
Curso Unix. Obtenido de Expresiones regulares:
https://bioinf.comav.upv.es/courses/unix/expresiones_regular
es.html
Florencio, N. I. (2011). Lenguajes Formales, un enfoque
computacional. Ciudad de Mexico.
https://es.wikipedia.org/wiki/Lenguaje_formal. (s.f.). Obtenido de
Wikipedia.
Jurado Málaga, E. (2008). Teorías de Autómatas y Lenguajes
Formales. España: Universidad de Extremadura. Servicio de
Publicaciones.
Jurafsky, D., & James H., M. (2008). Speech and Language
Processing: Speech and Language Processing: An
Introduction to Natural Language Processing,. Pentice-Hall,
2 edition.
Madrid, F. d.-U. (s.f.). Teoria de Automatas y Lenguajes formales.
Obtenido de Autómatas finitos deterministas (AFD's):
http://antares.sip.ucm.es:8180/webtalf/index.jsp?submenu=te
mas/submenuRegulares&contenido=temas/afd
57