Está en la página 1de 91

Escuela de Ingenierı́a Civil Informática

Facultad de Ingenierı́a

Lenguajes y Autómatas
Capı́tulo I: Lenguajes regulares y autómatas finitos

Fabián Riquelme Csori


fabian.riquelme@uv.cl

2018-II

1
Alfabetos, cadenas y lenguajes
Expresiones regulares
Autómatas finitos

Index

Alfabetos, cadenas y lenguajes


Teorı́a de conjuntos y relaciones (repaso)
Alfabetos y lenguajes
Jerarquı́a de Chomsky

Expresiones regulares
Expresiones regulares
Lema del bombeo

Autómatas finitos
Autómatas finitos deterministas (DFA)
Autómatas finitos no-deterministas (NFA)
Conversión y equivalencias NFA-DFA

2
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Repaso de conjuntos

I Un conjunto A es una colección finita o infinita de elementos.


La pertenencia de un elemento x al conjunto A se denota
x ∈ A.
I El conjunto vacı́o ∅ es un conjunto sin elementos.
I Sean A y B dos conjuntos:
I B es un subconjunto de A (B ⊆ A) si x ∈ B ⇒ x ∈ A.
I B es un subconjunto estricto de A (B ⊂ A) si B ⊆ A y B 6= A.

3
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Repaso de conjuntos

B*A B⊂A

A B A B

4
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Conjunto potencia

El conjunto potencia de un conjunto A, P(A), es el conjunto de


todos los subconjuntos de A, es decir {X | X ⊆ A}.

Ejemplo
Sea A = {1, 3, 7, 9}, entonces P(A) viene dado por:

P(A) = {∅, {1}, {3}, {7}, {9}, {1, 3}, {1, 7}, {1, 9}, {3, 7}, {3, 9},
{7, 9}, {1, 3, 7}, {1, 3, 9}, {1, 7, 9}, {3, 7, 9}, {1, 3, 7, 9}}

5
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Operaciones de conjuntos

Algunas operaciones posibles sobre dos conjuntos A y B son:


I Unión : x ∈A∪B ⇐⇒ x ∈ A ∨ x ∈ B
I Intersección : x ∈ A ∩ B ⇐⇒ x ∈ A ∧ x ∈ B
I Diferencia : x ∈A−B ⇐⇒ x ∈ A ∧ x ∈
/B
I Producto : (x, y ) ∈ A × B ⇐⇒ x ∈ A ∧ y ∈ B

6
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Operaciones de conjuntos
A∩B A∪B

A B A B

A−B B −A

A B A B

7
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Particiones

Una partición de un conjunto A es un conjunto P de subconjuntos


no vacı́os B1 , ..., Bn que cumple las siguientes condiciones:
I P no contiene el conjunto vacı́o: ∅ ∈
/P
I La unión de los conjuntos en P es igual al conjunto A:
[
A= Bi
1≤i≤n

I La intersección entre conjuntos de P es vacı́a:

Bi ∩ Bj = ∅ para todo i 6= j

8
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Relaciones
Una relación R entre dos conjuntos A y B es un subconjunto de
A × B. Si (a, b) ∈ R se dice también aRb.
Ejemplo
Sean A = {1, −3} y B = {2, 3, 6}, encontrar los pares ordenados
(x, y ) que satisfagan la relación

R = {(x, y ) | x + y = 3}

El producto cartesiano A × B viene dado por:

A × B = {(1, 2), (1, 3), (1, 6), (−3, 2), (−3, 3), (−3, 6)}

La relación está dada por extensión como R = {(1, 2), (−3, 6)}.

9
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Propiedades de relaciones

Algunas propiedades que puede tener una relación R ⊆ A × A son:


I Reflexividad : ∀a ∈ A, aRa
I Simetrı́a: ∀a, b ∈ A, aRb ⇒ bRa
I Transitividad: ∀a, b, c ∈ A, aRb ∧ bRc ⇒ aRc

¿Cómo se manifiestan estas propiedades en grafos?

10
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Ejemplos

I Sea T el conjunto de todos los rectángulos en un plano y la


relación “congruente con”, como todo rectángulo t pertenece
a T , cada uno es congruente consigo mismo, por lo tanto, la
relación es reflexiva.
I La relación de distancia entre dos puntos es simétrica, ya que
la distancia desde un punto a a un punto b, es la misma que
desde el punto b al a.
I Sea L el conjunto de todas las rectas y R la relación “paralela
con”, luego si L1 es paralela con L2 (L1 RL2 ) y L2 es paralela
con L3 (L2 RL3 ), entonces L1 es paralela con L3 (L1 RL3 ), por
lo tanto, la relación es transitiva.

11
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Funciones

Una función f : A → B es una relación en A × B que cumple que


∀a ∈ A, ∃!b ∈ B, a f b.
I Ese único b es la imagen de a, y se denota f (a).
I A es el dominio y B el recorrido de f .
I {f (a) | a ∈ A} ⊆ B es el conjunto imagen de f .

Una función f : A → B es:


I inyectiva si a 6= a0 ⇒ f (a) 6= f (a0 )
I sobreyectiva si ∀b ∈ B, ∃a ∈ A, f (a) = b
I biyectiva si es inyectiva y sobreyectiva.

12
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Cardinalidad

La cardinalidad de un conjunto finito es su cantidad de elementos.


La cardinalidad de un conjunto infinito es más compleja: reciben
nombres especiales y no todas las cardinalidades infinitas son
iguales.
La cardinalidad de un conjunto A se denota |A|.
Si A es finito, entonces |A| ∈ N.

I |A| ≤ |B| si existe una función f : A → B inyectiva.


I |A| ≥ |B| si existe una función f : A → B sobreyectiva.
I |A| = |B| si existe una función f : A → B biyectiva.
|A| < |B| ssi |A| ≤ |B| y |A| =
6 |B|; similarmente con |A| > |B|.

13
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Conjuntos numerables

A la cardinalidad de N se la llama |N| = ℵ0 (alef sub cero).


Un conjunto numerable es un conjunto con cardinalidad ≤ ℵ0 .

Por definición, un conjunto numerable A admite una sobreyección


f : N → A.
I Es decir, es posible listar los elementos de A en orden
f (0), f (1), f (2), . . . de manera que todo elemento de A se
mencione alguna vez.
I Para demostrar que A es numerable basta exhibir una forma
de listar sus elementos y mostrar que todo elemento será
listado en algún momento.

14
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Conjuntos numerables

Teorema
ℵ0 es el menor cardinal infinito. Más precisamente, todo A tal que
|A| ≤ ℵ0 cumple que |A| es finito o |A| = ℵ0 .

Demostración.
Si A es infinito, entonces |A| > n para cualquier n ≥ 0. Es decir, podemos
definir subconjuntos An ⊂ A, |An | = n, para cada n ≥ 0, de modo que
An−1 ⊆ An . Sea an el único elemento de An − An−1 . Entonces todos los
an son distintos y podemos hacer una sobreyección de {a1 , a2 , ...} en N.

Nota. A ⊂ B no implica que |A| < |B| en conjuntos infinitos.


Por ejemplo el conjunto de los pares tiene la misma cardinalidad que los
naturales, mediante la biyección f (n) = 2n.

15
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Conjuntos numerables

Lema.
Sean A y B numerables. Los siguientes conjuntos son numerables:
I A∪B
I A×B
I Ak donde A1 = A y Ak = A × Ak−1
S
I Ai , donde todos los Ai son numerables.
I A+ = A1 ∪ A2 ∪ A3 ∪ · · ·

16
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Alfabetos

Llamaremos alfabeto a cualquier conjunto finito no vacı́o.


Usualmente lo denotaremos como Σ.
Los elementos de Σ se llaman sı́mbolos o caracteres.
Ejemplo
I El alfabeto español contiene 27 caracteres, y viene dado por
Σ = {a, b, c, ..., x, y , z}
I Se puede definir el alfabeto binario Σ = {0, 1}, o terciario
Σ = {0, 1, 2}, como también el alfabeto para números en base
hexadecimal Σ = {0, 1, ..., 9, A, B, ..., F }.

17
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Cadenas

Llamaremos cadena o string a una secuencia finita de sı́mbolos de


un alfabeto Σ, es decir, a un elemento de

Σ∗ = Σ0 ∪ Σ1 ∪ Σ2 ∪ · · ·

donde Σ1 = Σ y Σk = Σ × Σk−1 .
I Σ∗ denota el conjunto de todas las secuencias finitas de
sı́mbolos de Σ.
I El conjunto Σ0 tiene un sólo elemento denotado ε, que
corresponde a la cadena vacı́a.
I El largo de una cadena x ∈ Σk es |x| = k (note que |ε| = 0).
I Otro conjunto que usaremos es Σ+ = Σ∗ − ε.

18
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Cadenas
Una cadena x sobre Σ se escribe yuxtaponiendo sus caracteres uno
tras otro: x = a1 a2 · · · a|x| , donde ai ∈ Σ.

Ejemplo
Sea el alfabeto Σ = {0, 1, 2}, entonces se tiene que:
I Σ0 = ε
I Σ1 = Σ = {0, 1, 2}
I Σ2 = Σ × Σ = {00, 01, 02, 10, 11, 12, 20, 21, 22}
I Σ3 = Σ × Σ2 = {000, 001, 002, 010, 011, 012, 020, 021, 022,
100, 101, 102, 110, 111, 112, 120, 121, 122,
200, 201, 202, 210, 211, 212, 220, 221, 222}
I El largo de la cadena x = 012021 es 6, |x| = 6.

19
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Concatenación de cadenas
La concatenación de dos cadenas x = a1 a2 · · · an e y = b1 b2 · · · bm
produce la cadena

xy = a1 a2 · · · an b1 b2 · · · bm , con |xy | = |x| + |y |.

Usaremos x k para denotar k concatenaciones sucesivas de x,


es decir, x 0 = ε y x k = xx k−1 .

Ejemplo
Sean las cadenas x = 010 e y = 212, luego
I xy = 010212
I x 2 = 010010
I y 3 = 212212212
I xyx 2 y = 010212010010212
20
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Subcadenas

Sean x, y , z cadenas:
I x es un prefijo de xy .
I x es un sufijo de yx.
I x es una subcadena o substring de yxz.

Ejemplo
Sean las cadenas x = 00, y = 121 y z = 11, entonces
I x es un prefijo de 0012111121.
I y es un sufijo de 110011001100121.
I z es una subcadena de 0000121001100.

21
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Lenguajes

Un lenguaje sobre un alfabeto Σ es cualquier subconjunto de Σ∗ .

Nota: En este curso entenderemos “lenguaje” como sinónimo de lenguaje


formal, en contraposición a un lenguaje natural (como el castellano).
Algunas operaciones aplicables a lenguajes sobre un alfabeto Σ:
I Concatenación: L1 · L2 = L1 L2 = {xy | x ∈ L1 ∧ y ∈ L2 }
I Disyunción: L1 | L2 = {x | x ∈ L1 ∨ x ∈ L2 }
I Potencia: L0 = {ε}, Lk = L · Lk−1
Clausura de Kleene: L∗ =
S k
I L
k≥0
I Complemento: Lc = Σ∗ − L

22
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Ejercicios
Dado Σ = {a, b}:
1. Determine Σ∗ .
2. Determine un ejemplo de un lenguaje finito en Σ.
3. Dado L = {an b n | n ≥ 0}, compruebe si las cadenas aabb, aaaabbbb
y abb están en el lenguaje L.
4. Dado L = {an b n | n ≥ 0}, determine L2 y L3 .
5. Sea L = {ab, aa, baa}.
¿Cuáles de las siguientes cadenas están en L∗ ?
a) abaabaaabaa
b) aaaabaaaa
c) baaaaabaaaab
d) baaaaabaa

23
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Ejercicios
Dado Σ = {a, b, c}
1. Determine L∗ para los siguientes lenguajes:
a) L = {b 2 }
b) L = {a, b}
c) L = {a, b, c 3 }

2. Para el lenguaje L = {ab, c} determine:


a) L0
b) L2
c) L3
3. Compruebe si L1 , L2 , L3 y L4 son lenguajes sobre Σ, donde:
a) L1 = {a, aa, ab, ac, abc, cab}
b) L2 = {aba, aabaa}
c) L3 = { }
d) L4 = {ai cb i | i ≥ 1}
24
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Ejercicios

Sean L1 = {a, ab, a2 }, L2 = {b 2 , aba} y L3 = {aca, ba} lenguajes


sobre Σ = {a, b, c}, determine
1. L1 · L2
2. L2 · L2
3. L3 · L1
4. L3 · L2

25
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

¡Gracias!

26
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Gramáticas y lenguajes formales

Una gramática es el conjunto de reglas y principios que rigen el uso


de una lengua.
I Cada lengua o lenguaje tiene su propia gramática.
I ¿Ejemplos de reglas gramaticales del castellano y el inglés?

Una gramática formal es un conjunto de reglas de formación que


definen las palabras o cadenas permitidos en un lenguaje formal.
I Noam Chomsky (n. 1928) jerarquizó en 1956 los distintos
tipos posibles de lenguajes formales, a partir de la
caracterización de sus reglas gramaticales.
I Mientras más flexible es una gramática, más poderoso es el
lenguaje asociado, en términos de su expresividad.

27
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Jerarquı́a de Chomsky

28
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Jerarquı́a de Chomsky

equivale
Gramática Autómata

describe
reconoce
genera
Lenguaje

29
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Jerarquı́a de Chomsky
Tipo Lenguaje Autómata Reglas prod. gramatical
0 LRE Máquina de Turing α → β (sin restricciones)
1 LSC A. linealmente acotado αAβ → αγβ
2 LLC A. con pila A→γ
3 LR A. finito A → aB o A → a

Más concretamente, una gramática es una serie de reglas de derivación,


producción o reescritura, en que un sı́mbolo puede reescribirse como una
cadena del lenguaje. En estas reglas identificamos:
I sı́mbolos terminales: pertenecen a Σ y forman la cadena final.
I sı́mbolos no terminales: se pueden reescribir como otros y no
aparecen en la cadena final.
I sı́mbolo inicial: es de donde parten todas las derivaciones y genera
cualquier cadena de sı́mbolos terminales.
30
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

Ejemplos

¿Qué hace esta gramática?

A → 0A
A→1
¿Cómo serı́a una gramática que reconoce el lenguaje de “puros
ceros seguidos de puros unos”?

A → 0A
A → 0B
B → 1B
B→1

31
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Teorı́a de conjuntos y relaciones (repaso)
Expresiones regulares Alfabetos y lenguajes
Autómatas finitos Jerarquı́a de Chomsky

¡Gracias!

32
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Motivación

I Algunas aplicaciones de los lenguajes regulares:


I Analizadores léxicos (compiladores).
I Mecanismos de búsqueda de editores de texto (vi, emacs).
I Procesadores de texto (sed, awk perl).
I Shell de Unix.
I Búsqueda de sencuencias de ADN o proteı́nas, en biologı́a
computacional.
I Los lenguajes regulares son:
I Descritos/generados por gramáticas regulares.
I Reconocidos/generados por autómatas finitos.
I Al ser los lenguajes formales más sencillos, se pueden
representar mediante expresiones regulares.

33
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Expresiones regulares

Una expresión regular (RE) sobre un alfabeto finito Σ se puede


definir recursivamente como sigue:
1. Para todo c ∈ Σ, c es una RE.
2. ε es una RE.
3. Si E1 y E2 son RE’s, E1 · E2 es una RE.
4. Si E1 y E2 son RE’s, E1 | E2 es una RE.
5. Si E1 es una RE, E1∗ es una RE.
6. Si E1 es una RE, (E1 ) es una RE.
No hay más expresiones regulares.

34
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Ejemplos

Sea Σ = {0, 1}, luego


I 0 es una RE.
I 1 es una RE.
I ε es una RE.
I 0 | 1 es una RE.
I 0 · 1, o simplemente 01, es una RE.
I 0∗ es una RE.
I 1∗ es una RE.
I (01) es una RE.
I Más ejemplos: (0 | 1)∗ , (00 | 01∗ ), 0 (0 | 1)∗ 0

35
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Orden de precedencia
¿Cómo debe entenderse la expresión a | b · c ∗ ?
I ¿Se aplica ∗ a toda la expresión?
I ¿Se aplica | a todo el resto?
I ¿Se aplica · a toda la expresión de la derecha?
Por convención, primero se aplica ∗, luego · y finalmente |.
Los paréntesis permiten alterar el orden de precedencia de los
operadores.
I Siendo redundantes, la RE anterior equivale a: a | (b · (c ∗ ))
I Modificando paréntesis, obtenemos distintas RE: (a | b) · c ∗

OJO: Aún no hemos dicho qué significa una RE.


Solamente hemos visto su sintaxis, pero no su semántica.
36
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Lenguajes regulares

El lenguaje descrito por una RE E , denotado L(E ), se puede


definir recursivamente como sigue:
1. Si c ∈ Σ, L(c) = {c}.
2. L(ε) = ε.
3. L(E1 |E2 ) = L(E1 ) ∪ L(E2 ).
4. L(E1 · E2 ) = L(E1 ) ∩ L(E2 ).
5. L(E1∗ ) = L(E1 )∗ .
6. L((E1 )) = L(E1 ).

L es un lenguaje regular si existe una RE E tal que L = L(E ).

37
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Ejemplo
¿Cómo se puede escribir una RE para las cadenas de a’s y b’s que
contienen una cantidad impar de b’s?
I Una solución posible: a∗ (ba∗ ba∗ )∗ ba∗
I La clausura de Kleene mayor encierra secuencias de cantidades
pares de b’s.
I La última b asegura que la cantidad de b’s sean impar.
I Existen otras soluciones equivalentes: (a∗ ba∗ ba∗ )∗ ba∗ .

Ejemplo
Escribir una RE para las cadenas de a’s y b’s que nunca contengan
tres b’s seguidas.
I Una solución parcial puede ser: (a | ba | bba)∗ .
Sin embargo, no permite cadenas terminadas en b.
I Esto se puede corregir ası́: (a | ba | bba)∗ (ε | b | bb)
38
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Ejemplo
¿Cómo describirı́a el lenguaje denotado por la RE (ab | aba)∗ ?
I “Cadenas que se descomponen en ab o aba”.
La descripción de un lenguaje regular debe ser concisa.
Ejemplo
¿Es posible escribir una RE que denote los números decimales que
son múltiplos de 7?
I Se puede, pero directamente es muy difı́cil.
I Más adelante veremos cómo lograrlo.

Ejemplo
¿Es posible escribir una RE que denote las cadenas de a’s cuyo
largo es un número primo?
I No, no se puede. Más adelante veremos cómo demostrarlo.
39
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Ejercicios

1. ¿Qué lenguaje representa la expresión ((a∗ a)b | b) ?


2. ¿Cuál es el lenguaje descrito por la RE 1∗ (01∗ 01∗ )1∗ ?
3. Sea Σ = {a, b}. Escriba expresiones regulares para los
siguientes conjuntos:
a) Las cadenas que comienzan con la subcadena bb y terminan
con la subcadena aa.
b) Las cadenas con no más de 3 a’s.
c) Las cadenas que comienzan con la subcadena a b y terminan
con la subcadena b.
d) Las cadenas con exactamente una ocurrencia de la subcadena
aaa.

40
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Motivación

I Muchos lenguajes formales relativamente sencillos no son


regulares.
Por ejemplo, L = {0n 1n | n ≥ 1} no se puede describir
mediante ninguna expresión regular.
I El lema del bombeo permite demostrar cuándo un lenguaje no
es regular.

41
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Lema del bombeo

Teorema (Lema del bombeo)


Sea L un lenguaje regular. Entonces existe una constante n (que
depende de L) tal que toda cadena w ∈ L de largo |w | ≥ n se
puede descomponer en tres subcadenas, w = xyz de modo que:
I y 6= ε,
I |xy | ≤ n
I Para todo k ≥ 0, la cadena xy k z también pertenece a L.

42
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Ejemplo

Demostrar que L = {0n 1n | n ≥ 1} no es regular.


I Tomamos una cadena w = 0n 1n para un n ≥ 1 y la
descomponemos en w = xyz.
I Suponiendo y 6= ε y |xy | ≤ n, una posible descomposición es:

x =0 y =0 z = 0n−2 1n

I El lema del bombeo nos dice que si L es regular, entonces


xz ∈ L (para k = 0). Sin embargo xz = 0n−1 1n , cadena que
no pertenece a L, por lo tanto el lenguaje no es regular.

43
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Ejemplo
Demostrar que L = {ap | p es primo} no es regular.
I Tomamos una cadena w = ap para un p primo, p ≥ n + 2, y
tomemos la descomposición w = xyz.
I Suponiendo y 6= ε y |xy | ≤ n, podemos tomar |y | = m < n, luego
|xz| = p − m.
I Consideremos entonces ahora la cadena xy p−m z, donde hemos
escogido k = p − m, luego
|xy p−m z| = |xz|+(p −m)|y | = (p −m)+(p −m) m = (m+1)(p −m)
I Hemos obtenido que |xy p−m z| = (m + 1)(p − m).
I m + 1 > 1, ya que y 6= ε, entonces m ≥ 1.
I p − m > 1, ya que escogimos p ≥ n + 2 y m ≤ n, puesto que

m = |y | ≤ |xy | ≤ n, por tanto p − m ≥ 2.


I Por lo tanto |xy p−m z| tiene dos factores > 1, por tanto no es un
número primo, luego L no es regular.
44
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Ejercicios

Demuestre si los siguientes lenguajes son regulares o no.


1. L1 = {ww R | w ∈ {a, b}∗ }
2. L2 = ai b j c i+j | i, j ≥ 1 para Σ = {a, b, c}
3. L3 = {an b am | n, m ≥ 1}
4. L4 = {b ak b | k ≥ 1}.

45
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Lenguajes regulares

Lema
La unión, concatenación y clausura de lenguajes regulares es
regular.

Demostración. Basta considerar RE E1 y E2 , de modo que


L1 = L(E1 ) y L2 = L(E2 ). Entonces

L1 ∪ L2 = L(E1 | E2 )
L1 · L2 = L(E1 · E2 )
L∗1 = L(E1∗ )

son regulares. 

46
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

Lenguajes regulares
Lema
El complemento de un lenguaje regular es regular, y la intersección
y diferencia de dos lenguajes regulares es regular.

Demostración. Para el complemento basta intercambiar los estados


finales por los no-finales en el autómata finito que reconoce el
lenguaje (esto se entenderá más adelante). La intersección es
inmediata a partir de la unión y complemento,

L1 ∩ L2 = (LC1 ∪ LC2 )C

La diferencia es
L1 − L2 = L1 ∩ LC2

47
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes
Expresiones regulares
Expresiones regulares
Lema del bombeo
Autómatas finitos

¡Gracias!

48
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Autómatas finitos deterministas


Un autómata finito determinsita (DFA) es otro mecanismo para
describir lenguajes regulares.
En vez de generar cadenas (RE), las reconoce.
a a
b
Inicio q0 q1
b

I Nodos del grafo → estados


I Inicio → estado inicial
I Aristas dirigidas → transiciones
I Nodos dobles → estados finales
49
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Autómatas finitos deterministas

Ejemplo
(a | ba | bba)∗ (ε | b | bb)
a

q0 b q1 b q2
Inicio a
a b
a, b
q3

Los estados como q3 se denominan sumideros.


50
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Autómatas finitos deterministas

Formalmente, un autómata finito determinista (DFA) es una tupla


A = (Q, Σ, δ, s, F ) tal que
I Q es un conjunto finito de estados.
I Σ es un alfabeto finito.
I s ∈ Q es el estado inicial.
I F ⊆ Q es el conjunto de estados finales.
I δ : Q × Σ → Q es la función de transición.

51
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

a a
b
Inicio q0 q1
b

Q = {q0 , q1 }, Σ = {a, b}, s = q0 , F = {q1 } y la función δ

δ q0 q1
a q0 q1
b q1 q0

52
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Configuraciones

Una configuración de un DFA A = (Q, Σ, δ, s, F ) es un elemento


de CA = Q × Σ∗ .
I La configuración (q, x) indica que A está en el estado q y le
falta leer la cadena x.
I La configuración inicial es el par (s, x), donde x es la entrada.
I Una configuración final es un par (q, ε), con q ∈ F .

53
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Configuraciones

La relación “lleva en un paso” `A ⊆ CA × CA se define como:

(q, ax) `A (q 0 , x) donde a ∈ Σ ssi δ(q, a) = q 0

La relación “lleva en cero o más pasos” `∗A es la clausura reflexiva


y transitiva de `A .
El lenguaje aceptado por un DFA A = (Q, Σ, δ, s, F ) es:

L(A) = {x ∈ Σ∗ | ∃f ∈ F , (s, x) `∗A (f , ε)}

54
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo
a a, b

q0 b q1 b q2 b q3
Inicio a
a
A = (Q, Σ, δ, s, F ) con Q = {q0 , q1 , q2 , q3 }, Σ = {a, b}, s = q0 ,
F = {q0 , q1 , q2 } y la función δ dada por:
δ q0 q1 q2 q3
a q0 q0 q0 q3
b q1 q2 q3 q3
Transiciones para la cadena x = abbababb:
(q0 , abbababb) ` (q0 , bbababb) ` (q1 , bababb) ` (q2 , ababb)
(q2 , ababb) ` (q0 , babb) ` (q1 , abb) ` (q0 , bb) ` (q1 , b) ` (q2 , ε)

Por lo tanto, (q0 , x) `∗ (q2 , ε) y como q2 ∈ F , se tiene que x ∈ L(A)


55
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo
El lenguaje regular L dado por la RE (0 | 1)∗ 01 lo reconoce el DFA:
1 0

q0 0 q1 1 q2
Inicio
0
1

Su lenguaje complementario L lo reconoce el DFA:


1 0

q0 0 q1 1 q2
Inicio
0
1

Como L también se puede describir por un DFA, es regular.


56
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

DFA para (ab | aba)∗


a

q0 a q1 b q2 a q3
Inicio
b b b
a

q4

a, b

57
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

DFA que acepta todas las cadenas con la subcadena 01 sobre


Σ = {0, 1}.

1 0 0, 1

q0 0 q1 1 q2
Inicio

58
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

DFA que acepta el siguiente lenguaje

L = {x | x tiene número par de ceros y unos}

sobre Σ = {0, 1}.

1
Inicio q0 q1
1

0 0 0 0
1
q2 q3
1

59
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

DFA que acepta todas las cadenas que terminan en 00 sobre


Σ = {0, 1}.

1 0

q0 0 q1 0 q2
Inicio 1

60
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

DFA que acepta todas las cadenas con 3 0’s consecutivos sobre
Σ = {0, 1}.

1 0, 1

q0 0 q1 0 q2 0 q3
Inicio 1

61
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

DFA que acepta todas las cadenas que contenga la subcadena aca
sobre Σ = {a, b, c}.

b, c a a, b, c

q0 a q1 c q2 a q3
Inicio b

b, c

62
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejercicios

Sea Σ = {a, b}, determine un DFA


1. que contengan una cantidad impar de b’s.
2. que no tengan ni aa, ni bb como subcadena.
3. para la RE a∗ b.
4. que acepte una cantidad impar de a’s y par de b’s.
5. que reconozca ab y ba como subcadenas.
6. para la RE (aa | aab | aba).
7. que reconozca aba como subcadena.

63
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo
DFA que reconoce los números decimales que son múltiplos de 7.
3
5
2, 9
6 q2
9
q1 2,
4
4 0, 7
1, 8 3 q3
8
1,

Inicio q0
1,
8 5
4
0, 7 6 3 q4
2, 9
0, 7 6
5
q6
q5

64
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

¡Gracias!

65
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Autómatas finitos no-deterministas


En cada transición:
I Los DFA pasan exactamente a un estado (determinista).
I Los NFA pasan a ninguno, uno o más estados;
además permiten transiciones con la cadena vacı́a ε.
Dos maneras de entender no-determinismo:
I Cuando hay varias alternativas, el NFA elige alguna de ellas.
I El NFA está en varios estados a la vez.

Ejemplo
(ab | aba)∗ a

q0 a q1 b q2
Inicio

ε
66
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Autómatas finitos no-deterministas

Formalmente, un autómata finito no-determinista (NFA) es una


tupla A = (Q, Σ, ∆, s, F ) , tal que:
I Q es un conjunto finito de estados.
I Σ es un alfabeto finito.
I s ∈ Q es el estado inicial.
I F ⊆ Q es el conjunto de estados finales.
I ∆ ⊂F Q × Σ × Q es la relación de transición, finita.

67
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo
(ab | aba)∗

q0 a q1 b q2
Inicio

ε
I Q = {q0 , q1 , q2 }
I Σ = {a, b}
I s = q0
I F = {q0 }
I ∆ = {(q0 , a, q1 ), (q1 , b, q2 ), (q2 , a, q0 ), (q2 , ε, q0 )}

68
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Configuraciones

La relación “lleva en un paso” `A ⊆ CA × CA , cuando


A = (Q, Σ, ∆, s, F ) es un NFA, se define como:

(q, zx) `A (q 0 , x) donde z ∈ Σ∗ ssi (q, z, q 0 ) ∈ ∆

El lenguaje aceptado por un NFA A = (Q, Σ, ∆, s, F ) es:

L(A) = {x ∈ Σ∗ | ∃f ∈ F , (s, x) `∗A (f , ε)}

69
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo
NFA que reconoce todas las cadenas que terminan en 01 para el
alfabeto Σ = {0, 1}

0, 1

q0 0 q1 1 q2
Inicio

I Q = {q0 , q1 , q2 }
I Σ = {0, 1}
I s = q0
I F = {q2 }
I ∆ = {(q0 , 0, q0 ), (q0 , 1, q0 ), (q0 , 0, q1 ), (q1 , 1, q2 )}
I ¿x = 00101?
70
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

NFA que reconoce todas las cadenas que terminan en 00 o en 11


para el alfabeto Σ = {0, 1}

0, 1

q0 0 q3 0 q4
Inicio

1
q1 1
q2

71
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

NFA que reconoce todas las cadenas que representan los números
reales con y sin signo. Por ejemplo: +45,32, 3,141516, −2,0,
−2378,123, 0,012.
0, 1, ..., 9 0, 1, ..., 9

ε, +, − 1, ..., 9 • 0, 1, ..., 9
Inicio q0 q1 q2 q3 q4

0, 1, ..., 9 • ε

q5 q6

72
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

El conjunto de cadenas del alfabeto {0, 1, ..., 4} tal que el dı́gito


final no haya aparecido antes.

Inicio q0

1, 2, 3, 4 ε ε 0, 1, 2, 3
ε ε ε

q1 q3 q5 q7 q9
0, 2, 3, 4 0, 1, 3, 4 0, 1, 2, 4

0 1 2 3 4

q2 q4 q6 q8 q10

73
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejercicios

1. Determine un NFA que reconozca todas las cadenas de 0’s y


1’s que su antepenúltimo elemento sea 1.
Ejemplo: 000100, 10111, 10101.
2. Esquematice el siguiente NFA: Q = {q0 , q1 , q2 , q3 },
Σ = {0, 1}, s = q0 , F = {q3 } y ∆ viene dado por:

∆ = {(q0 , 0, q0 ), (q0 , 0, q1 ), (q0 , 1, q0 ), (q0 , 1, q2 ),


(q1 , 0, q3 ), (q2 , 1, q3 ), (q3 , 0, q3 ), (q3 , 1, q3 )}

3. Determine un NFA que reconozca cadenas que contengan al


menos dos a’s o dos b’s para Σ = {a, b}.

74
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

¡Gracias!

75
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Clausura-ε
Un NFA es más flexible que un DFA, pero es el DFA el que se
implementa en la práctica.
Un DFA se puede construir a partir de un NFA.
I El diseño de un DFA está basado en los conjuntos de estados
del NFA.
I A partir de un estado q del NFA, ¿A qué estados q 0 podemos
llegar sin consumir caracteres de entrada?

Dado un NFA A = (Q, Σ, ∆, s, F ) , la clausura-ε de un estado


q ∈ Q se define como

E (q) = {q 0 ∈ Q | (q, ε) `∗ (q 0 , ε)}

76
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Conversión NFA → DFA

Dado un NFA A = (Q, Σ, ∆, s, F ) que cumple


(q, x, q 0 ) ∈ ∆ ⇒ |x| ≤ 1, se define un DFA D = (Q 0 , Σ, δ, s 0 , F 0 ) de
la siguiente manera:
1. Q 0 = P(Q).
2. s 0 = E (s).
3. F 0 = Q 0 − P(Q − F ).
4. Para cada W ⊆ Q y c ∈ Σ,
[
δ(W , c) = {E (p) | p ∈ Q y (q, c, p) ∈ ∆ para algún q ∈ W }

77
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

0, 1

q0 0 q1 1 q2
Inicio

I Q 0 = {∅, {q0 }, {q1 }, {q2 }, {q0 , q1 }, {q0 , q2 }, {q1 , q2 }, {q0 , q1 , q2 }}


I s 0 = E (q0 ) = {q0 }
I F 0 = {{q2 }, {q0 , q2 }, {q1 , q2 }, {q0 , q1 , q2 }}
I Solo falta construir δ, a partir de:

∆ = {(q0 , 0, q0 ), (q0 , 0, q1 ), (q0 , 1, q0 ), (q1 , 1, q2 )}

78
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo (cont.)

δ 0 1
∅ ∅ ∅
{q0 } {q0 , q1 } {q0 }
{q1 } ∅ {q2 }
{q2 } ∅ ∅
{q0 , q1 } {q0 , q1 } {q0 , q2 }
{q0 , q2 } {q0 , q1 } {q0 }
{q1 , q2 } ∅ {q2 }
{q0 , q1 , q2 } {q0 , q1 } {q0 , q2 }

79
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo (cont.)
La tabla de transición para todos los subconjuntos puede ser tediosa.
I Pero basta con fijarnos en los estados alcanzables.
I Ası́ ahorramos tiempo de evaluación en la construcción de
transiciones:

BASE Sabemos con certeza que el conjunto que contiene solamente


el estado inicial del NFA se alcanza.
INDUCCIÓN Supongamos que el estado s se alcanza. Entonces para cada
sı́mbolo a, se calcula el conjunto de estados δ(s, a), se sabe
entonces que este conjunto de estados también es alcanzable.
δ 0 1
{q0 } {q0 , q1 } {q0 }
{q0 , q1 } {q0 , q1 } {q0 , q2 }
{q0 , q2 } {q0 , q1 } {q0 }
D = {{{q0 }, {q0 , q1 }, {q0 , q2 }}, {0, 1}, δ, {q0 }, {q0 , q2 }}
80
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo (cont.)
0
1

0 1
Inicio {q0 } {q0 , q1 } {q0 , q2 }

0
1

δ 0 1
{q0 } {q0 , q1 } {q0 }
{q0 , q1 } {q0 , q1 } {q0 , q2 }
{q0 , q2 } {q0 , q1 } {q0 }
81
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

Sea el NFA que reconoce todas las cadenas que terminan en 00 o


en 11 para el alfabeto Σ = {0, 1}

0, 1

q0 0 q3 0 q4
Inicio

1
q1 1
q2

Determinemos el DFA D = (Q 0 , Σ, δ, s 0 , F 0 ) equivalente.

82
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo (cont.)

δ 0 1
{q0 } {q0 , q3 } {q0 , q1 }
{q0 , q3 } {q0 , q3 , q4 } {q0 , q1 }
1 {q0 , q1 } {q0 , q3 } {q0 , q1 , q2 }
{q0 , q3 , q4 } {q0 , q3 , q4 } {q0 , q1 }
{q0 , q1 , q2 } {q0 , q3 } {q0 , q1 , q2 }
Inicio {q0 } {q0 , q1 }
1
0 1
0 1
1

{q0 , q3 } 0
0
{q0 , q3 , q4 } {q0 , q1 , q2 }

0
83
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

Dado el siguiente NFA A = (Q, Σ, ∆, s, F )


determinemos el DFA D = (Q 0 , Σ, δ, s 0 , F 0 ) equivalente.
I Q = {q0 , q1 , q2 , q3 , q4 }
I Σ = {0, 1}
I s = q0
I ∆ = {(q0 , 0, q0 ), (q0 , 0, q1 ), (q0 , 1, q0 ), (q1 , 0, q2 ), (q1 , 0, q3 ),
(q1 , 1, q4 ), (q2 , 0, q0 ), (q2 , 0, q2 ), (q2 , 1, q4 )}
I F = {q3 , q4 }

84
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo (cont.)

Diagrama para el NFA

0, 1 0
0

q0 0 q1 0 q2
Inicio
0 1
1

q3 q4

85
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo (cont.)

δ 0 1
{q0 } {q0 , q1 } {q0 }
1 {q0 , q1 } {q0 , q1 , q2 , q3 } {q0 , q4 }
{q0 , q4 } {q0 , q1 } {q0 }
{q0 , q1 , q2 , q3 } {q0 , q1 , q2 , q3 } {q0 , q4 }

0
Inicio {q0 } {q0 , q1 }
0
1 1 0

1
{q0 , q4 } {q0 , q1 , q2 , q3 } 0

86
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo

Dado el siguiente NFA A = (Q, Σ, ∆, s, F ) , determinemos el DFA


D = (Q 0 , Σ, δ, s 0 , F 0 ) equivalente.
I Q = {q0 , q1 , q2 , q3 }
I Σ = {0, 1}
I s = q0
I ∆ = {(q0 , 0, q1 ), (q0 , 0, q3 ), (q0 , 1, q1 ), (q1 , 0, q2 ), (q1 , 1, q1 ),
(q1 , 1, q2 ), (q2 , 0, q3 ), (q2 , 0, q0 ), (q3 , 1, q0 )}
I F = {q1 , q3 }

87
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejemplo (cont.)

δ 0 1
∅ ∅ ∅
1 {q0 } {q1 , q3 } {q1 }
{q1 } {q2 } {q0 , q2 }
{q2 } {q0 , q3 } ∅
0, 1 {q0 , q2 } {q0 , q1 , q3 } {q1 }
Inicio q0 q1 {q0 , q3 } {q1 , q3 } {q0 , q1 }
{q0 , q1 } {q1 , q2 , q3 } {q0 , q1 , q2 }
0 {q1 , q3 } {q2 } {q0 , q2 }
1 0 0, 1 {q0 , q1 , q2 } {q0 , q1 , q2 , q3 } {q0 , q1 , q2 }
{q0 , q1 , q3 } {q1 , q2 , q3 } {q0 , q1 , q2 }
0 {q0 , q2 , q3 } {q0 , q1 , q3 } {q0 , q2 }
q3 q2 {q1 , q2 , q3 } {q0 , q2 , q3 } {q0 , q1 }
{q0 , q1 , q2 , q3 } {q0 , q1 , q2 , q3 } {q0 , q1 , q2 }

88
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejercicio

Construya un DFA que reconozca el lenguaje aceptado por el NFA


A = (Q, Σ, ∆, s, F ) dado por:
I Q = {q0 , q1 , q2 , q3 , q4 , q5 , q6 }
I Σ = {a, b}
I s = q0
I F = {q2 , q4 , q6 }
I ∆ = {(q0 , ε, q1 ), (q0 , ε, q2 ), (q1 , a, q1 ), (q1 , b, q1 ), (q1 , b, q3 ),
(q2 , ε, q4 ), (q2 , a, q3 ), (q3 , a, q4 ), (q3 , a, q6 ), (q4 , b, q3 ),
(q4 , b, q5 ), (q5 , ε, q3 ), (q5 , ε, q6 ), (q6 , a, q3 ), (q6 , a, q5 )}

89
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Ejercicio

Construya un DFA que reconozca el lenguaje aceptado por el NFA


A = (Q, Σ, ∆, s, F ) dado por:
I Q = {q0 , q1 , q2 , q3 }
I Σ = {0, 1}
I s = q0
I F = {q3 }
I ∆ = {(q0 , 0, q0 ), (q0 , 0, q1 ), (q0 , 1, q0 ), (q0 , 1, q2 ), (q1 , 0, q3 ),
(q2 , 1, q3 ), (q3 , 0, q3 ), (q3 , 1, q3 )}

90
Fabián Riquelme Csori Lenguajes y Autómatas
Alfabetos, cadenas y lenguajes Autómatas finitos deterministas (DFA)
Expresiones regulares Autómatas finitos no-deterministas (NFA)
Autómatas finitos Conversión y equivalencias NFA-DFA

Referencias

Estos apuntes están en parte basados en los del profesor y colega,


Dr. Roberto León Vásquez.

Recuerden utilizar la bibliografı́a sugerida para el curso, disponible


en las Bibliotecas de la Universidad.

91
Fabián Riquelme Csori Lenguajes y Autómatas

También podría gustarte