Vous êtes sur la page 1sur 34

Notas de clase para el curso

Introducción a la Teorı́a de la Computación


I Semestre 2019
Profesor: Rodrigo De Castro K.

2.10. Teorema de Kleene, parte I


En las secciones anteriores se ha mostrado la equivalencia computacional de los modelos
AFD, AFN y AFN-λ, lo cual quiere decir que para cada autómata de uno de estos tres
modelos se pueden construir autómatas equivalentes en los otros modelos. Por lo tanto,
los autómatas AFD, AFN y AFN-λ aceptan exactamente la misma colección de lenguajes.
El Teorema de Kleene establece que tal colección de lenguajes la conforman precisamente
los lenguajes regulares, representados por las expresiones regulares.
El siguiente diagrama esboza los procedimientos constructivos de conversión entre los
modelos de autómatas y las expresiones regulares.

Conversión AFN Conversión

AFD AFN-λ

Expresiones
T. de Kleene II regulares T. de Kleene I

2.10.1. Teorema de Kleene. Sea Σ un alfabeto dado. Un lenguaje es regular (sobre Σ)


si y sólo si es aceptado por un autómata finito (AFD o AFN o AFN-λ) con alfabeto de
entrada Σ.

Para demostrar el teorema consideraremos las dos direcciones por separado.


Parte I del Teorema de Kleene. Para un lenguaje regular, representado por una expresión
regular R dada, se puede construir un AFN-λ M tal que el lenguaje aceptado por M sea
exactamente el lenguaje representado por R, es decir, L(M ) = L[R]. Por simplicidad
escribiremos simplemente L(M ) = R.
Demostración. Puesto que se ha dado una definición recursiva de las expresiones regulares,
la demostración se lleva a cabo razonando recursivamente sobre R. Para las expresiones

61
Introducción a la Teorı́a de la Computación. Capı́tulo 2 62

regulares básicas, podemos construir fácilmente autómatas que acepten los lenguajes re-
presentados. Ası́, el autómata

q0 q0

acepta el lenguaje ∅, es decir, el lenguaje representado por la expresión regular R = ∅.


El autómata

q0

acepta el lenguaje {λ}, es decir, el lenguaje representado por la expresión regular R = λ.


El autómata

q0 a q0

acepta el lenguaje {a}, a ∈ Σ, es decir, el lenguaje representado por la expresión regular


R = a.
Razonando recursivamente, supóngase que para las expresiones regulares R1 y R2 se
dispone de AFN-λ M1 y M2 tales que L(M1 ) = R1 y L(M2 ) = R2 . Esquemáticamente
vamos a presentar los autómatas M1 y M2 en la siguiente forma:
4,5

3,5

.. ..
2,5 M1 . M2 .

1,5

0,5
0 1 2 3 4 5 6 7 8 9 10 11 12

Los estados finales o de aceptación se dibujan a la derecha, pero cabe advertir que el
estado inicial puede ser también un estado de aceptación. Podemos ahora obtener AFN-λ
que acepten los lenguajes R1 ∪ R2 y R1 R2 .
Para aceptar R1 ∪ R2 los autómatas M1 y M2 se conectan mediante lo que se denomina
una conexión en paralelo. Hay un nuevo estado inicial y los estados de aceptación del
nuevo autómata son los estados de aceptación de M1 , junto con los de M2 .
Autómata que acepta R1 ∪ R2 :
Introducción a la Teorı́a de la Computación. Capı́tulo 2 63

..
7 M1 .

6 λ

λ
3
..
M2 .
2

0
0 1 2 3 4 5 6 7 8 9

Autómata que acepta R1 R2 :

4
λ
3
.. .. ..
M1 . . M2 .
2

1
λ

0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Este tipo de conexión entre dos autómatas M1 y M2 se denomina conexión en serie.


Los estados de aceptación del nuevo autómata son únicamente los estados de aceptación
de M2 .
Supóngase ahora R es una expresión regular y M es un AFN-λ tal que L(M ) = R:
Introducción a la Teorı́a de la Computación. Capı́tulo 2 64

4,5

3,5

..
2,5 M .

1,5

0,5
0 1 2 3 4 5 6

El siguiente autómata acepta R∗ :

λ ..
M .

Esto concluye la demostración de la parte I del Teorema de Kleene.


Para aceptar R∗ a partir de un autómata M tal que L(M ) = R, serı́a incorrecto (en
general) utilizar el siguiente autómata M 0 :

M 0: λ

..
M .

λ
Introducción a la Teorı́a de la Computación. Capı́tulo 2 65

A primera vista esta construcción parece razonable, pero al convertir el estado inicial
en estado de aceptación, M 0 podrı́a aceptar cadenas adicionales no pertenecientes a R∗ .
Como contraejemplo consideremos la expresión regular R = a∗ b. En la gráfica siguiente
se exhibe a la izquierda un AFN M tal que L(M ) = a∗ b y a la derecha el autómata M 0
obtenido realizando la construcción esbozada arriba.
M: M 0:
a a
b b

No se cumple que L(M 0 ) = R∗ = (a∗ b)∗ ya que M 0 acepta también a, a2 , a3 , . . . (potencias


de a) que no pertenecen a R∗ . Para aceptar R∗ utilizando la construcción mencionada en
la demostración del Teorema 2.10.1 se obtendrı́a el siguiente autómata M 00 :
M 00 :
a
λ b

Simplificaciones en el procedimiento. El procedimiento constructivo del Teore-


ma 2.10.1 admite varias simplificaciones, útiles en la práctica.
Para aceptar ab:
Según el procedimiento: Simplificación:

a λ b a b

Para aceptar a∗ :
Según el procedimiento: Simplificación:

λ a
λ a

Para aceptar a+ podemos usar una cualquiera de las siguientes dos simplificaciones:
a a
a a
Introducción a la Teorı́a de la Computación. Capı́tulo 2 66

Además, las conexiones en paralelo y en serie de dos autómatas se pueden generalizar


fácilmente para aceptar uniones R1 ∪ R2 ∪ R3 ∪ · · · ∪ Rk , o concatenaciones R1 R2 R3 · · · Rk ,
de k lenguajes (k ≥ 3).
 
Ejemplo Utilizar el procedimiento del Teorema 2.10.1 para construir un AFN-λ que
 acepte el lenguaje (bc ∪ cb)∗ a∗ b ∪ (b∗ ca)∗ c+ sobre el alfabeto Σ = {a, b, c}.

Solución. Escribimos la expresión regular R = (bc ∪ cb)∗ a∗ b ∪ (b∗ ca)∗ c+ como R = R1 ∪ R2


donde R1 = (bc ∪ cb)∗ a∗ b y R2 = (b∗ ca)∗ c+ . Construimos dos autómatas que acepten R1
y R2 , respectivamente, y luego los conectamos en paralelo.
Autómata que acepta bc:

b c

Autómata que acepta cb:

c b

Autómata que acepta bc ∪ cb:

b c
λ

λ
c b

Autómata que acepta (bc ∪ cb)∗ :

b c
λ λ
λ

c b

Autómata que acepta a∗ b:


Introducción a la Teorı́a de la Computación. Capı́tulo 2 67

a
λ b

Para aceptar R1 = (bc ∪ cb)∗ a∗ b conectamos en serie los dos últimos autómatas:

b c
a
λ λ λ b
λ
λ
λ
c b
λ

A continuación construimos un autómata que acepte R2 = (b∗ ca)∗ c+ . Autómata que


acepta b∗ ca:

λ c a

Autómata que acepta (b∗ ca)∗ :

λ
b

λ λ c a

Autómata que acepta R2 = (b∗ ca)∗ c+ :

λ
b c

λ λ c a λ λ c

λ
Introducción a la Teorı́a de la Computación. Capı́tulo 2 68

Finalmente, conectamos en paralelo los autómatas que aceptan R1 y R2 y obtenemos un


autómata que acepta R = R1 ∪ R2 = (bc ∪ cb)∗ a∗ b ∪ (b∗ ca)∗ c+ :

b c
a
λ λ λ b
λ
λ
λ
λ
c b
λ

λ
λ b c

λ λ c a λ λ c

 
Ejercicios de la sección 2.10
 

Utilizar el procedimiento del Teorema 2.10.1 para construir AFN-λ que acepten los si-
guientes lenguajes sobre el alfabeto {a, b, c}.

À (a∗ c)∗ ∪ (b∗ a)∗ (ca∗ )∗ b+ .

Á (a∗ cb)∗ (a ∪ b)(a ∪ bc)∗ .

 (a ∪ ba ∪ ca)∗ (λ ∪ a)b+ c+ .

à (a∗ bc)∗ ∪ (cb∗ a)+ ∪ (ca ∪ cb ∪ c2 )∗ a∗ b+ .

Ä a∗ b∗ (ca+ ∪ b ∪ λ)(b ∪ bc)∗ ∪ (b ∪ λ)(b∗ ac)∗ .


Introducción a la Teorı́a de la Computación. Capı́tulo 2 69

2.11. Teorema de Kleene, parte II


Parte II del Teorema de Kleene. Dado un autómata M , ya sea AFD o AFN o AFN-λ, se
puede encontrar una expresión regular R tal que L(M ) = R.
La demostración de este enunciado será también constructiva y se basa en la noción de
grafo etiquetado generalizado, o GEG, que es un grafo como el de un autómata excepto
que las etiquetas de los arcos entre estados pueden ser expresiones regulares en lugar
de simplemente sı́mbolos del alfabeto. El procedimiento consiste en eliminar uno a uno
los estados del autómata original M , obteniendo en cada paso un GEG cuyo lenguaje
aceptado coincide con L(M ). Cuando el grafo se reduce a dos estados (uno de ellos debe
ser el estado inicial), el lenguaje aceptado se puede obtener por simple inspección.
Antes de presentar el procedimiento en todo detalle, consideraremos un ejemplo sencillo.
 
Ejemplo A la izquierda aparece el grafo de un AFD M dado. Se observa que el estado
 q solamente sirve de “puente” o “pivote” entre q y q y, por consiguiente,
2 1 0

se puede eliminar añadiendo un arco entre q1 y q0 con etiqueta ba∗ b. Se obtiene el GEG
(grafo derecho) cuyo lenguaje aceptado (por inspección) es (aba∗ b)∗ .
a a

q0 q1 q0 q1
a
ba∗ b
b b
q2

El procedimiento general para encontrar una expresión regular R que represente el len-
guaje aceptado por un autómata M dado consta de los siguientes pasos:

(1) Convertir el grafo de M en un GEG G reemplazando múltiples arcos etiquetados


con sı́mbolos a1 , a2 , . . . , ak entre dos estados qi y qj por un único arco etiquetado
a1 ∪ a2 ∪ · · · ∪ ak :

a1 , a2 , . . . , ak a1 ∪ a2 ∪ · · · ∪ ak
qi qj se transforma en qi qj

De esta forma, entre dos estados cualesquiera hay, a lo sumo, un arco etiquetado con
una expresión regular.
(2) Modificar el GEG G de tal manera que haya un único estado de aceptación. Esto se
puede conseguir añadiendo un nuevo estado qf , que será el único estado de aceptación,
y trazando transiciones λ entre todos y cada uno de los estados en F (los estados de
aceptación originales) y qf . Cuando el autómata original posee un único estado de
aceptación, simplemente se mantiene como tal hasta el final.
Introducción a la Teorı́a de la Computación. Capı́tulo 2 70

(3) Este paso es un proceso iterativo por medio del cual se van eliminando uno a uno los
estados de G hasta que permanezcan únicamente dos estados (uno de ellos debe ser
el estado inicial q0 ). Para presentar el procedimiento en forma general utilizaremos la
siguiente notación: se denota con Rij la etiqueta (expresión regular) entre dos estados
qi y qj ; si no existe un arco entre qi y qj , se considera que Rij = ∅.
Si hay tres o más estados, escoger un estado cualquiera qk , diferente de q0 y que
no sea un estado de aceptación. Se pretende eliminar qk añadiendo adecuadamente
transiciones entre los estados restantes de tal manera que el lenguaje aceptado no se
altere. Sean qi y qj dos estados, diferentes de qk , con arcos etiquetados por expresiones
regulares, en la siguiente forma:

Rii Rjj
Rij
qi qj
Rji

Rik Rjk
Rki Rkj

qk

Rkk

qk sirve de “puente” entre qi y qj , y entre qj y qi . Además, a través de qk hay una


trayectoria que conecta qi consigo mismo, y también una trayectoria que conecta qj
consigo mismo. Teniendo en cuenta tales trayectorias, se procede a eliminar el estado
qk reemplazando las etiquetas entre qi y qj por las siguientes:
∗ ∗
Rii ∪ Rik Rkk Rki ∗ Rjj ∪ Rjk Rkk Rkj
Rij ∪ Rik Rkk Rkj

qi qj


Rji ∪ Rjk Rkk Rki

Lo anterior se debe realizar para todos los pares de estados qi y qj (diferentes de qk ).


Para tener en cuenta arcos inexistentes entre estados, en todo momento se deben usar
las simplificaciones: R ∪ ∅ = R, R∅ = ∅ y ∅∗ = λ. Eliminar posteriormente el estado
qk junto con todos los arcos que entra o salen de él.
Introducción a la Teorı́a de la Computación. Capı́tulo 2 71

(4) Finalmente, cuando haya solamente dos estados, se puede obtener una expresión re-
gular para L(M ) considerando los siguientes dos casos:

R1 R2
R3

q0 L(M ) = (R1 ∪ R3 R2∗ R4 )∗ .

R4

R1 R2
R3

q0 L(M ) = R1∗ R3 (R2 ∪ R4 R1∗ R3 )∗ .

R4

Observaciones:

1. El procedimiento anterior es bastante flexible; por ejemplo, el paso (2) (estado de


aceptación único) se puede realizar después de haber eliminado uno o más estados
(siguiendo las instrucciones del paso (3)).

2. Es importante recalcar que, siempre que se ejecute la subrutina (3), el estado inicial
y los estados de aceptación no se pueden eliminar.
 
Ejemplo Utilizar el procedimiento presentado en la presente sección para encontrar
 una expresión regular que represente el lenguaje L de todas las cadenas sobre
el alfabeto Σ = {a, b} que tienen un número par de aes y un número par de bes.
Solución. Conocemos un AFD M que acepta este lenguaje:
a
q0 q1
a

b b b b

a
q2 q3
a
Introducción a la Teorı́a de la Computación. Capı́tulo 2 72

El estado inicial q0 se puede mantener hasta el final como el único estado de aceptación.
Procedemos primero a eliminar el estado q1 (debido a la simetrı́a del grafo de M , también
podrı́amos eliminar primero q2 , o bien q3 ).

a2

q0

ab
b b
ba
a
q2 q3 b2
a

A continuación podemos eliminar ya sea q2 o q3 . Puesto que q2 no tiene bucles es más


sencillo eliminarlo:

a2 ∪ b 2 b 2 ∪ a2
ab ∪ ba

q0 q3

ba ∪ ab

El lenguaje aceptado es entonces


∗
L(M ) = a2 ∪ b2 ∪ (ab ∪ ba)(a2 ∪ b2 )∗ (ab ∪ ba) .


Si en el penúltimo GEG se elimina q3 en vez de q2 , se llega finalmente a una expresión


regular diferente (y más compleja) que representa el mismo lenguaje.
 
Ejemplo Encontrar una expresión regular para el lenguaje aceptado por el autómata
 M que aparece en la parte superior de la siguiente página.

Solución. Primero convertimos el grafo de M en un GEG (grafo À) y luego eliminamos el


estado q1 (grafo Á).
Introducción a la Teorı́a de la Computación. Capı́tulo 2 73

M:
a

a, b
q0 q1

a
b b

q2 q3
a

À a Á

q0 a∪b q1 q0

a a ∪ (a ∪ b)a∗ b
b b b

q2 q3 q2 a q3
a

a b

A continuación añadimos el nuevo estado q4 (que será el único estado de aceptación) y


transiciones λ desde q2 y q3 hasta q4 (grafo Â). Luego eliminamos el estado q2 (grafo Ã):

 Ã
a ∪ (a ∪ b)a∗ b

a ∪ (a ∪ b)a b
q0 q3 q0 q3

a+ b
a
b λ λ ∪ a+

q2 q4 q4
λ

a
Introducción a la Teorı́a de la Computación. Capı́tulo 2 74

Finalmente, eliminamos el estado q3 ; teniendo en cuenta que λ ∪ a+ = a∗ , obtenemos:

Ä
[a ∪ (a ∪ b)a∗ b]a∗

q0 q4

[a ∪ (a ∪ b)a∗ b]a+ b

Con el grafo Ä obtenemos el lenguaje aceptado por simple inspección:


 ∗
L(M ) = [a ∪ (a ∪ b)a∗ b]a+ b [a ∪ (a ∪ b)a∗ b]a∗ .

Podemos observar que en el grafo  es también posible eliminar q3 en vez de q2 ; proce-


diendo ası́ se llega a una expresión regular mucho más compleja para L(M ).
 
Ejercicios de la sección 2.11
 

À Utilizar el procedimiento presentado en la presente sección para encontrar expresio-


nes regulares para los lenguaje aceptados por los siguientes autómatas:

(i)
b

q0 a q1 b q2

b a
q3
Introducción a la Teorı́a de la Computación. Capı́tulo 2 75

(ii)
b
a
q0 q1
a

b a
b

q2

(iii)

a b
b b
q0 q1 q2

a a

(iv)
b a
a
q0 q1 b q2
a

a b

q3
Introducción a la Teorı́a de la Computación. Capı́tulo 2 76

(v)
b a
b
q0 a q1 a q2 b q3 q4
a

(vi)
a
b

q0 a q1 b q2

a
b b
b

q3 q4 a
a

Á Sea Σ = {a, b, c} y L el lenguaje de todas las cadenas que no contienen la subcadena


bc. Diseñar un autómata M que acepte el lenguaje L, y luego utilizar el procedimien-
to presentado en la presente sección para encontrar una expresión regular para L.
Esta expresión regular se puede comparar con las obtenidas en el último ejemplo de
la sección 1.14, página 22.

 Sea Σ = {a, b} y L = {u ∈ Σ∗ : [#a (u) − #b (u)] ≡ 1 (mód 3)}. La notación #a (u)


representa el número de aes en la cadena u mientras que #b (u) es el número de
bes. Diseñar un AFD M con tres estados que acepte el lenguaje L, y luego utilizar
el procedimiento presentado en la presente sección para encontrar una expresión
regular para L.
Introducción a la Teorı́a de la Computación. Capı́tulo 2 77

2.12. Propiedades de clausura de los lenguajes regu-


lares
Las propiedades de clausura afirman que a partir de lenguajes regulares se pueden obtener
otros lenguajes regulares por medio de ciertas operaciones entre lenguajes. Es decir, la
regularidad es preservada por ciertas operaciones entre lenguajes; en tales casos se dice
que los lenguajes regulares son cerrados bajo las operaciones.
Inicialmente presentamos las propiedades de clausura para autómatas. El siguiente
teorema resume los procedimientos algorı́tmicos que han sido presentados en secciones
anteriores para la construcción de nuevos autómatas finitos.
2.12.1 Teorema. Sean M , M1 y M2 autómatas finitos (ya sean AFD o AFN o AFN-λ)
tales que L(M ) = L, L(M1 ) = L1 , L(M2 ) = L2 . Se pueden construir autómatas finitos
que acepten los siguientes lenguajes:
(1) L1 ∪ L2 . (5) L = Σ∗ − L.
(2) L1 L2 . (6) L1 ∩ L2 .
(3) L∗ . (7) L1 − L2 .
(4) L+ . (8) L1 / L 2 .
Demostración. La construcción de autómatas que acepten L1 ∪ L2 , L1 L2 y L∗ se presentó
en la demostración de la parte I del Teorema de Kleene. Como L+ = L∗ L = LL∗ , también
se pueden utilizar tales construcciones para (4).
Para construir un autómata que acepte L, se construye primero un AFD que acepte a
L y se intercambian luego los estados de aceptación con los de no aceptación. Se obtiene
ası́ el complemento de M , tal como se explicó en la sección 2.8.
Para construir autómatas que acepten L1 ∩ L2 y L1 − L2 , basta formar el producto
cartesiano de dos AFDs que acepten a L1 y L2 , y escoger adecuadamente los estados
de aceptación, tal como se indicó en la sección 2.9. También se puede usar el producto
cartesiano para aceptar L1 ∪ L2 .
Finalmente, los procedimientos de construcción de (1), (6) y (7) se pueden combinar
para obtener un autómata que acepte el lenguaje L1 / L2 = (L1 − L2 ) ∪ (L2 − L1 ).
Puesto que, según el Teorema de Kleene, los lenguajes regulares son precisamente
los lenguajes aceptados por autómatas finitos, el Teorema 2.12.1 se puede presentar en
términos de lenguajes regulares.
2.12.2 Teorema. Si L, L1 y L2 son lenguajes regulares sobre un alfabeto Σ, también son
regulares los siguientes lenguajes:
(1) L1 ∪ L2 . (5) L = Σ∗ − L.
(2) L1 L2 . (6) L1 ∩ L2 .
(3) L∗ . (7) L1 − L2 .
(4) L+ . (8) L1 / L 2 .
Introducción a la Teorı́a de la Computación. Capı́tulo 2 78

2.13. Minimización de autómatas, parte I


En la presente sección presentaremos un procedimiento general para encontrar un autóma-
ta con el menor número de estados posible, equivalente a un AFD dado. Se trata de un
procedimiento algorı́tmico en el que se identifican “estados equivalentes”, en un senti-
do que se precisará detalladamente, lo cual permite “colapsar estados” en el autómata
original y de esta manera reducir el número de estados hasta el mı́nimo posible.

2.13.1 Definición. Dado un AFD M = (Σ, Q, q0 , F, δ) y dos estados p, q ∈ Q, se dice


que p es equivalente a q, notado p ≈ q, si:

p ≈ q si y sólo si (∀u ∈ Σ∗ ) δ(p,


 
b u) ∈ F ⇐⇒ δ(q,
b u) ∈ F .

Es fácil comprobar que la relación ≈ es reflexiva, simétrica y transitiva; es decir, para


todos los estados p, q, r de Q se cumple:

Reflexividad. p ≈ p.

Simetrı́a. Si p ≈ q entonces q ≈ p.

Transitividad. Si p ≈ q y q ≈ r entonces p ≈ r.

Por lo tanto, ≈ es una relación de equivalencia sobre el conjunto de estados Q. Si p ≈ q


se dice que p y q son estados equivalentes. La clase de equivalencia de un estado p se
denotará con [p]; es decir,
[p] := {q ∈ Q : p ≈ q}.
Se define el autómata cociente M 0 identificando entre sı́ los estados equivalentes según la
relación ≈. Formalmente, M 0 = (Σ, Q0 , q00 , F 0 , δ 0 ) donde:
Q0 = {[p] : p ∈ Q},
q00 = [q0 ],
F 0 = {[p] : p ∈ F },
δ 0 ([p], a) = [δ(p, a)], para todo a ∈ Σ.
Hay que verificar que tanto F 0 como la función de transición δ 0 están bien definidos, es
decir, que no dependen del representante escogido en la clase de equivalencia. Esto se hace
en la siguiente proposición.

2.13.2 Proposición.

(i) δ 0 está bien definida, es decir, si [p] = [q] (o sea, si p ≈ q) entonces δ(p, a) ≈ δ(q, a)
para todo a ∈ Σ.

(ii) F 0 está bien definido, es decir, si q ∈ F y p ≈ q entonces p ∈ F .

(iii) p ∈ F ⇐⇒ [p] ∈ F 0 .
Introducción a la Teorı́a de la Computación. Capı́tulo 2 79

b u)] para toda cadena u ∈ Σ∗ .


(iv) δb0 ([p], w) = [δ(p,

Demostración.
(i) Si p ≈ q, entonces

(∀u ∈ Σ∗ )(∀a ∈ Σ)[δ(p,


b au) ∈ F ⇐⇒ δ(q,
b au) ∈ F ],

de donde
(∀u ∈ Σ∗ )[δ(δ(p,
b a), u) ∈ F ⇐⇒ δ(δ(q,
b a), u) ∈ F ],
para todo a ∈ Σ. Por la definición de la relación ≈, se concluye que δ(p, a) ≈ δ(q, a).

(ii) Tomando u = λ en la definición de p ≈ q, se tiene que p = δ(p,


b λ) ∈ F si y solo si
b λ) ∈ F . Puesto que q ∈ F , se concluye que p ∈ F .
q = δ(q,
(iii) La dirección (=⇒) se sigue de la definición de F 0 . Para demostrar la otra dirección
sea [p] ∈ F 0 . Entonces [p] = [q], con q ∈ F ; de donde p ≈ q. De (ii) se sigue que
p ∈ F.
(iv) Se demuestra por recursión sobre u.
Usando las propiedades de la Proposición 2.13.2 se puede deducir que M y M 0 aceptan el
mismo lenguaje, tal como se demuestra en el siguiente teorema.
2.13.3 Teorema. El autómata M y el autómata cociente M 0 aceptan el mismo lenguaje,
es decir, L(M ) = L(M 0 ).
Demostración.
u ∈ L(M 0 ) ⇐⇒ δb0 ([q0 ], u) ∈ F 0
b 0 , u)] ∈ F 0 (por la Proposición 2.13.2 (iv))
⇐⇒ [δ(q
⇐⇒ δ(q
b 0 , u) ∈ F (por la Proposición 2.13.2 (iii))
⇐⇒ u ∈ L(M ). 
Dado un AFD M , el autómata cociente M 0 resulta ser un autómata con el mı́nimo número
de estados posible para aceptar L(M ). Esto se demuestra detalladamente en la sección 2.14
Dado un AFD M , se dispone de un algoritmo para encontrar el autómata cociente M 0 ,
y se le conoce como algoritmo de minimización por llenado de tabla. Es muy importante
tener presente que para aplicar este algoritmo se requiere que todos los estados de M
dado sean accesibles. Un estado q es accesible si existe una cadena de entrada u tal que
δ(q
b 0 , u) = q. Un estado inaccesible q (o sea, no accesible) es completamente inútil ya que
la unidad de control del autómata nunca ingresará a q al procesar una cadena cualquiera
desde el estado inicial q0 . Los estados inaccesibles se deben eliminar previamente. Además,
siendo un autómata determinista, M debe ser completo, es decir, para cada estado q y
cada sı́mbolo a ∈ Σ, la transición δ(q, a) debe estar definida. Por consiguiente, en el grafo
de M se deben mostrar todos los estados, incluyendo los llamados “estados limbo”.
Introducción a la Teorı́a de la Computación. Capı́tulo 2 80

Algoritmo por llenado de tabla para determinar la


equivalencia de estados en un AFD
ENTRADA:
AFD M = (Σ, Q, q0 , F, δ) completo (incluyendo estados limbo) cuyos
estados son todos accesibles y tabla triangular que muestra todos los
pares {p, q} de estados p, q ∈ Q.
INICIALIZAR:
i := 1. Se marca con 7 la casilla {p, q} si p ∈ F y q ∈
/ F (o viceversa).
REPETIR:
i := i + 1. Para cada casilla no marcada {p, q} y cada a ∈ Σ, hallar
{δ(p, a), δ(q, a)}. Si para algún a ∈ Σ, la casilla {δ(p, a), δ(q, a)} ha
sido marcada previamente, entonces se marca la casilla {p, q} con 7.
HASTA:
No se puedan marcar más casillas en la tabla.
SALIDA:
Si la casilla {p, q} está marcada con 7, entonces p 6≈ q. Si la casilla
{p, q} no está marcada, entonces p ≈ q.

El algoritmo se ejecuta llenando una tabla que muestra todos los pares de estados {p, q};
el propósito es determinar cuáles son equivalentes y cuáles no. Puesto que en el par {p, q}
no importa el orden de los estados, basta trabajar en una tabla de formato triangular
como la siguiente:
q0
q1
q2
..
. qn−2
··· qn−1
··· qn
En cada iteración la tabla se recorre por columnas, q0 , q1 , . . . , qn . La casilla {p, q} es
marcada por el algoritmo de minimización si y sólo si existe u ∈ Σ∗ tal que δ(q, b u) ∈ F
b u) ∈
y δ(q, / F , o viceversa, es decir, si y solo si p ≈ q. Por consiguiente, las casillas no
marcadas al finalizar el algoritmo representan estados equivalentes.
Si en la definición de la relación ≈ se toma u = λ, se deduce que si p ≈ q, entonces
δ(p, λ) ∈ F ⇐⇒ δ(q,
b b λ) ∈ F , o sea, p ∈ F ⇐⇒ q ∈ F . Esto implica que si p ≈ q, entonces
ambos estados son de aceptación o ninguno de los dos lo es. De manera que si p es estado
de aceptación y q no lo es (o viceversa), se tendrá p 6≈ q. Esta es la razón por la cual el
algoritmo de minimización comienza marcando las casillas {p, q} para las cuales p ∈ F y
q∈/ F (o viceversa).
 
Ejemplo Aplicar el algoritmo de minimización para encontrar un AFD con el menor
 número de estados posible, equivalente al siguiente AFD, cuyo alfabeto de
Introducción a la Teorı́a de la Computación. Capı́tulo 2 81

entrada es {a}.

q5
a a

q0 q4

a a

q1 q3

a a
q2

Solución. Primero marcamos con 7 las casillas {p, q} para las cuales p es un estado de
aceptación y q no lo es, o viceversa:
q0
7 q1
7 q2
7 q3
7 7 7 q4
7 7 q5
Luego hacemos i := 2, examinamos las casillas aún no marcadas y procesamos el sı́mbolo
a. La información necesaria aparece en la siguiente tabla; la columna izquierda corresponde
a las casillas no marcadas {p, q} y la derecha a las casillas {δ(p, a), δ(q, a)} obtenidas al
procesar a. Esta tabla se utiliza a partir de la segunda iteración.
{p, q} {δ(p, a), δ(q, a)}
{q0 , q2 } {q1 , q3 } 7
{q0 , q3 } {q1 , q4 }
{q0 , q5 } {q1 , q0 } 7
{q1 , q4 } {q2 , q5 }
{q2 , q3 } {q3 , q4 } 7
{q2 , q5 } {q3 , q0 }
{q3 , q5 } {q4 , q0 } 7

Las marcas 7 en la columna derecha representan casillas previamente marcadas; según el


algoritmo, las correspondientes casillas en la columna izquierda se marcan con 7. Entonces,
al terminar la segunda iteración la tabla triangular adquiere el siguiente aspecto:
Introducción a la Teorı́a de la Computación. Capı́tulo 2 82

q0
7 q1
7 7 q2
7 7 q3
7 7 7 q4
7 7 7 7 q5
En la tercera iteración ya no se pueden marcar más casillas y el algoritmo termina. Las
casillas vacı́as representan estados equivalentes; ası́ que q0 ≈ q3 , q1 ≈ q4 y q2 ≈ q5 . El
autómata cociente M 0 tiene entonces tres estados (las tres clases de equivalencia): {q0 , q3 },
{q1 , q4 } y {q2 , q5 }; el grafo obtenido es:

{q2 , q5 }

a a

{q0 , q3 } {q1 , q4 }
a

 
Ejemplo Aplicar el algoritmo de minimización para encontrar un AFD con el menor
 número de estados posible, equivalente al siguiente AFD.

q1 b q3
b

q0 a b a

a
q2 q4
a

b a

Al marcar con 7 las casillas {p, q} para las cuales p es un estado de aceptación y q no lo
es, o viceversa, obtenemos la tabla:
q0
q1
q2
q3
7 7 7 7 q4
Introducción a la Teorı́a de la Computación. Capı́tulo 2 83

Luego hacemos i := 2, examinamos las casillas aún no marcadas y procesamos con las
entradas a y b. Tal información aparece en la siguiente tabla, la cual se utiliza a partir de
la segunda iteración.
{p, q} {δ(p, a), δ(q, a)} {δ(p, b), δ(q, b)}
{q0 , q1 } {q2 , q4 } 7 {q1 , q1 }
{q0 , q2 } {q2 , q4 } 7 {q1 , q2 }
{q0 , q3 } {q2 , q4 } 7 {q1 , q1 }
{q1 , q2 } {q4 , q4 } {q1 , q2 }
{q1 , q3 } {q4 , q4 } {q1 , q1 }
{q2 , q3 } {q4 , q4 } {q2 , q1 }
Las marcas 7 representan casillas previamente marcadas; según el algoritmo, las corres-
pondientes casillas en la columna izquierda se marcan con 7. Entonces, al terminar la
segunda iteración obtenemos la tabla triangular:
q0
7 q1
7 q2
7 q3
7 7 7 7 q4
En la tercera iteración ya no se marcan más casillas y el algoritmo termina. Se deduce que
los tres estados q1 , q2 y q3 son equivalentes entre sı́ (q1 ≈ q2 ≈ q3 ). El autómata cociente
posee entonces tres estados, a saber, {q0 }, {q1 , q2 , q3 } y {q4 }. Su grafo es:
b

a, b
{q0 } {q1 , q2 , q3 }

b a

{q4 }

a
 
Ejemplo Sea Σ = {a, b}. Demostrar que el lenguaje L de todas las cadenas que tienen
 un número par de aes y un número par de bes no puede ser aceptado por
ningún AFD con menos de cuatro estados.
Solución. Ya conocemos un AFD M que acepta este lenguaje:
Introducción a la Teorı́a de la Computación. Capı́tulo 2 84

a
q0 q1
a

b b b b

a
q2 q3
a

El problema se reduce a minimizar este AFD con el objeto de determinar si o no es


posible construir uno equivalente con menos de cuatro estados. Al aplicar el algoritmo de
minimización tenemos inicialmente las siguientes marcas sobre la tabla:
q0
7 q1
7 q2
7 q3
Consideramos luego las casillas no marcadas y procesamos con a y con b:
{p, q} {δ(p, a), δ(q, a)} {δ(p, b), δ(q, b)}
{q1 , q2 } {q0 , q3 } 7 {q3 , q0 } 7
{q1 , q3 } {q0 , q3 } 7 {q3 , q1 }
{q2 , q3 } {q3 , q2 } {q0 , q1 } 7

Llegamos entonces a la tabla triangular


q0
7 q1
7 7 q2
7 7 7 q3

en la cual todas las casillas han sido marcadas. Esto quiere decir que no hay pares de
estados diferentes que sean equivalentes entre sı́, o lo que es lo mismo, todo estado es
equivalente solamente a sı́ mismo. Por lo tanto, el autómata no se puede minimizar más
y no es posible aceptar el lenguaje L con menos de cuatro estados.
Introducción a la Teorı́a de la Computación. Capı́tulo 2 85

 
Ejercicios de la sección 2.13
 

À Minimizar los siguientes AFD, es decir, encontrar autómatas deterministas con el


mı́nimo número de estados posible, equivalentes a los autómatas dados.

(i) Alfabeto Σ = {a, b}.

a q2 b
b
b a
a a, b
q0 q1 q3 q5

b a
q6 a
b

(ii) Alfabeto Σ = {a, b}.

q1 a q3 a, b
a b a
b
a, b
q0 q5 q6
b

b b a
q2 q4
a

(iii) Alfabeto Σ = {a, b}.


b

q0 b q1 a q2 b q3

b
a b a a b

b a
q4 q5 q6 q7
a a
a b
Introducción a la Teorı́a de la Computación. Capı́tulo 2 86

(iv) Alfabeto Σ = {0, 1}.


1

q1 1 q2
1 0 1
0
q0 q4
0 0
0 0
q3 q5
1

(v) Alfabeto Σ = {a, b, c}.


a

b, c a
q0 c a q1 q2
a
q3
a
b
c
b c a
b, c

q4 q5 q6
b

b c a, b, c

Á Sea Σ = {a, b}. Demostrar que el lenguaje L = a+ b∗ a no puede ser aceptado por
ningún AFD con menos de seis estados (incluyendo el estado limbo).

 Sea Σ = {a, b}. Demostrar que el lenguaje L = a∗ b ∪ b∗ a no puede ser aceptado por
ningún AFD con menos de siete estados (incluyendo el estado limbo).

2.14. Minimización de autómatas. Parte II


En la presente sección se demuestra que, dado un AFD M , el autómata cociente M 0 ,
definido en la sección 2.13, resulta ser un autómata con el mı́nimo número de estados
equivalente a M . La demostración requiere introducir la noción de distinguiblidad entre
cadenas, la cual resulta también crucial en la sección 2.15
Introducción a la Teorı́a de la Computación. Capı́tulo 2 87

2.14.1 Definición. Sea Σ un alfabeto dado y L un lenguaje sobre Σ (o sea, L ⊆ Σ∗ ).


Dos cadenas u, v ∈ Σ∗ son indistinguibles con respecto a L (o L-indistinguibles) si
(2.14.1) (∀x ∈ Σ∗ ) [ux ∈ L ⇐⇒ vx ∈ L] .
Utilizaremos la notación uIL v para representar el hecho de que las cadenas u y v son
L-indistinguibles.
Si dos cadenas u, v no son indistinguibles con respecto a L, se dice que son distinguibles
con respecto a L o L-distinguibles. Afirmar que u y v son L-distinguibles equivale a negar
(2.14.1); ası́ que u, v ∈ Σ∗ son L-distinguibles si
(∃x ∈ Σ∗ ) [(ux ∈ L y vx ∈
/ L) ó (ux ∈
/ L y vx ∈ L)] .
Es decir, u y v son L-distinguibles si existe x en Σ∗ tal que una de las cadenas ux ó vx
está en L y la otra no.
Con el siguiente resultado podemos obtener muchos ejemplos concretos de cadenas
L-indistinguibles, cuando L es un lenguaje regular.
2.14.2 Proposición. Sea M = (Σ, Q, q0 , F, δ) un AFD tal que L(M ) = L. Si para dos
cadenas u y v en Σ∗ se tiene que δ(q
b 0 , u) = δ(q
b 0 , v), entonces u y v son L-indistinguibles.
Demostración. Hay que demostrar que (∀x ∈ Σ∗ ) [ux ∈ L ⇐⇒ vx ∈ L]. Sea x ∈ Σ∗ ; puesto
que δ(q
b 0 , u) = δ(q
b 0 , v), se tendrá que

δ(q
b 0 , ux) = δ(
b δ(q
b 0 , u), x) = δ(
b δ(q
b 0 , v), x) = δ(q
b 0 , vx).

Entonces
ux ∈ L = L(M ) ⇐⇒ δ(q
b 0 , ux) ∈ F ⇐⇒ δ(q
b 0 , vx) ∈ F ⇐⇒ vx ∈ L(M ) = L.

Por lo tanto, uIL v.


2.14.3 Corolario. Sea M = (Σ, Q, q0 , F, δ) un AFD tal que L(M ) = L. Si las cadenas u
y v en Σ∗ son L-distinguibles, entonces δ(q
b 0 , u) 6= δ(q
b 0 , v).
Demostración. El enunciado es la implicación contra-recı́proca de la Proposición 2.14.2.

2.14.4 Proposición. Sea Σ un alfabeto dado y L ⊆ Σ∗ regular. Si hay n cadenas u1 ,


u2 , . . . , un en Σ∗ que sean L-distinguibles dos a dos (es decir, ui y uj son L-distinguibles
para todo i 6= j, i, j = 1, . . . , n), entonces cualquier AFD M que acepte a L debe tener
por lo menos n estados.
Demostración. Sea M = (Σ, Q, q0 , F, δ) un AFD que acepte a L. Por el Corolario 2.14.3,
b 0 , ui ) 6= δ(q
δ(q b 0 , uj ) para todo i 6= j. Entonces los n estados

δ(q
b 0 , u1 ), δ(q
b 0 , u2 ), . . . , δ(q
b 0 , un )

son diferentes entre sı́ (diferentes dos a dos) y, por lo tanto, M tiene por lo menos n
estados.
El siguiente enunciado es un recı́proco parcial de la Proposición 2.14.2.
Introducción a la Teorı́a de la Computación. Capı́tulo 2 88

2.14.5 Proposición. Sea M = (Σ, Q, q0 , F, δ) un AFD tal que L(M ) = L. Si dos cadenas
u y v ∈ Σ∗ son L-indistinguibles, entonces δ(q
b 0 , u) ≈ δ(q
b 0 , v).

Demostración. Sean p = δ(q


b 0 , u) y q = δ(q
b 0 , v). Hay que demostrar que

(∀w ∈ Σ∗ ) δ(p,
 
b w) ∈ F ⇐⇒ δ(q,
b w) ∈ F .

Sea w ∈ Σ∗ . Se tiene que

(2.14.2) δ(p,
b w) = δ(
b δ(q
b 0 , u), w) = δ(q
b 0 , uw),
(2.14.3) δ(q,
b w) = δ(
b δ(q
b 0 , v), w) = δ(q
b 0 , vw).

Entonces
b w) ∈ F ⇐⇒ δ(q
δ(p, b 0 , uw) ∈ F (por (2.14.2))
⇐⇒ uw ∈ L(M ) = L
⇐⇒ vw ∈ L (por ser u y v indistinguibles)
⇐⇒ δ(q
b 0 , vw) ∈ F
⇐⇒ δ(q,
b w) ∈ F (por (2.14.3)). 

2.14.6 Corolario. Sean M = (Σ, Q, q0 , F, δ) un AFD tal que L(M ) = L, y dos cadenas
u, v ∈ Σ∗ . Si δ(q
b 0 , u) 6≈ δ(q
b 0 , v), entonces u y v son L-distinguibles.

Demostración. Contrarecı́proca de la Proposición 2.14.5.

2.14.7 Teorema. Sea M un AFD cuyos estados son todos accesibles. El autómata cocien-
te M 0 (definido en la sección 2.13) es un AFD equivalente a M , con el mı́nimo número
de estados posible para aceptar el lenguaje L(M ).

Demostración. Sea M el AFD M = (Σ, Q, q0 , F, δ). Los estados del autómata cociente
M 0 = (Σ, Q0 , q00 , F 0 , δ 0 ) son todos accesibles. En efecto, dado q ∈ Q, existe u tal que
b 0 , u) = q ya que q es accesible en M . Se sigue que δb0 ([q0 ], u) = [δ(q
δ(q b 0 , u)] = [q] y, por lo
tanto [q] es accesible.
Supóngase ahora que M 0 tiene n estados diferentes, [q0 ], [q1 ], . . . , [qn−1 ], formados por
clases de equivalencia del autómata M . Como los estados q0 , q1 , . . . , qn−1 de M son accesi-
bles, existen cadenas x0 , x1 , . . . , xn−1 tales que δ(q
b 0 , x0 ) = q0 , δ(q
b 0 , x1 ) = q1 , . . . , δ(q
b 0 , xn−1 ) =
qn−1 . Puesto que qi 6≈ qj si i 6= j, se sigue del Corolario 2.14.6 que xi es distinguible de
xj si i 6= j. Por lo tanto, x0 , x1 , . . . , xn−1 son n cadenas distinguibles dos a dos. Por la
Proposición 2.14.4, cualquier AFD que acepte a L debe tener por lo menos n estados. En
consecuencia, n es el mı́nimo número de estados posible.
Introducción a la Teorı́a de la Computación. Capı́tulo 2 89

2.15. Lenguajes no-regulares


En secciones anteriores se han estudiado los lenguajes regulares y sus propiedades funda-
mentales. En particular, el Teorema de Kleene (secciones 2.10 y 2.11) establece que los
lenguajes regulares son exactamente los lenguajes aceptados por los autómatas finitos.
En esta sección se demostrará que existen lenguajes no-regulares y, como consecuencia,
se concluirá que hay problemas computacionales que no se pueden resolver utilizando los
modelos de autómatas finitos (AFD, AFN y AFN-λ) hasta ahora considerados.
  n n 2 3 4
Ejemplo Demostrar que el lenguaje L = {a b : n ≥ 0} = {λ, a, a , a , a , . . .}, sobre
 Σ = {a, b}, no es regular.

Solución. En primer lugar, hay que observar que el lenguaje L es diferente de a∗ b∗ ya que
este último lenguaje está formado por las concatenaciones de cualquier número de aes con
cualquier numero de bes, o sea, a∗ b∗ = {am bn : m, n ≥ 0}, mientras que cada cadena de
L tiene igual número de aes que de bes. a∗ b∗ es regular y se puede aceptar por medio del
siguiente AFD:

a b

q0 b q1

No obstante, para aceptar a L un autómata debe almacenar (de alguna forma) la infor-
mación sobre el número de aes y compararla luego con el número de bes. El único tipo
de memoria disponible son los estados y resulta intuitivamente claro que con un número
finito de estados es imposible para un autómata almacenar la información necesaria para
procesar y aceptar todas y cada una de las cadenas de la forma an bn con n ≥ 0. Pero se
requiere un argumento matemáticamente riguroso para demostrarlo concluyentemente.
Para concluir que L no es regular razonamos por contradicción (o reducción al absurdo):
suponemos que L es regular y llegamos a una contradicción. Si L es regular, existe un AFD
M = (Σ, Q, q0 , F, δ) tal que L(M ) = L. A continuación consideramos las potencias de a,
a saber, λ, a, a2 , a3 , a4 , . . .. Después de leer completamente cada una de estas cadenas, M
termina en un determinado estado, pero como hay infinitas potencias de a y solamente un
número finito de estados en M , deben existir dos cadenas diferentes ai y aj , con i 6= j, cuyo
procesamiento completo termina en el mismo estado. Utilizando la función δb (Definición
2.5.2), podemos expresar este hecho como δ(q b 0 , ai ) = δ(q
b 0 , aj ). Como M es un autómata
determinista, se concluye que, para toda cadena x ∈ Σ∗ , el procesamiento de las cadenas
ai x y aj x termina en el mismo estado; en efecto,
b 0 , ai x) = δ(
δ(q b 0 , ai ), x) = δ(
b δ(q b 0 , aj ), x) = δ(q
b δ(q b 0 , aj x).

En el grafo de M se puede visualizar la situación de la siguiente manera:


Introducción a la Teorı́a de la Computación. Capı́tulo 2 90

ai
x
q0 q q0

aj

Esto implica que para toda x ∈ Σ∗ , las cadenas ai x y aj x son ambas aceptadas o am-
bas rechazadas. La contradicción surge porque existe una cadena x ∈ Σ∗ tal que ai x es
aceptada pero aj x es rechazada. Por simple inspección observamos que tomando x = bi se
tendrá ai x = ai bi ∈ L pero aj x = aj bi ∈
/ L (porque i 6= j). De modo que ai bi es aceptada
mientras que aj bi es rechazada, lo cual es una contradicción.
 
Ejemplo Demostrar que el lenguaje de los palı́ndromes sobre Σ = {0, 1} no es un
 lenguaje regular. Recuérdese que un palı́ndrome es una cadena u que coincide
con su reflexión, o sea, tal que u = uR .
Solución. Como en el ejemplo anterior, razonamos por contradicción. Suponemos que L es
regular; entonces existe un AFD M = (Σ, Q, q0 , F, δ) tal que L(M ) = L. A continuación
consideramos las potencias de 1, a saber, λ, 1, 12 , 13 , 14 , . . .. Después de leer completamente
cada una de estas cadenas, M termina en un determinado estado; pero como hay infinitas
potencias de 1 y solamente un número finito de estados en M , deben existir dos cadenas
diferentes 1i y 1j , con i 6= j, cuyo procesamiento termina en el mismo estado. Es decir,
b 0 , 1i ) = δ(q
δ(q b 0 , 1j ). Como M es un autómata determinista, se concluye que, para toda

x ∈ Σ , el procesamiento de las cadenas 1i x y 1j x termina en el mismo estado. En otras
b 0 , 1j x) para toda cadena x ∈ Σ∗ . Esto implica que para toda
b 0 , 1i x) = δ(q
palabras, δ(q
x ∈ Σ∗ , las cadenas 1i x y 1j x son ambas aceptadas o ambas rechazadas. Se llega a una
contradicción si podemos encontrar una cadena x ∈ Σ∗ tal que 1i x sea aceptada pero 1j x
sea rechazada (o viceversa). Procediendo por inspección (ensayo y error) observamos que
tomando x = 01i se tendrá que 1i x = 1i 01i es un palı́ndrome pero 1j x = 1j 01i no lo es
(porque i 6= j). De modo que 1i 01i es aceptada mientras que 1j 01i es rechazada, lo cual
es una contradicción.
Nótese que podrı́amos haber construido un razonamiento completamente similar con-
siderando las infinitas potencias de 0 (λ, 0, 02 , 03 , 04 , . . . ,) en vez de las de 1.
Utilizando la noción de distinguiblidad entre cadenas introducida en la sección 2.14, el
argumento usado en los dos ejemplos anteriores se puede convertir en un criterio práctico
para demostrar que ciertos lenguajes no son regulares.
2.15.1. Criterio de no regularidad. Sea Σ un alfabeto dado y L un lenguaje sobre Σ.
Si en Σ∗ hay infinitas cadenas L-distinguibles dos a dos, entonces L no es regular.
Demostración. Razonamos por contradicción (o reducción al absurdo): suponemos que
L es regular y llegamos a una contradicción. Si L es regular, existe un AFD M =
(Σ, Q, q0 , F, δ) tal que L(M ) = L. Por hipótesis, existen infinitas cadenas L-distinguibles
dos a dos, u1 , u2 , u3 , . . . . Después de leer completamente cada una de estas cadenas, M
termina en un determinado estado, pero como solamente hay un número finito de estados
Introducción a la Teorı́a de la Computación. Capı́tulo 2 91

en M , deben existir dos cadenas diferentes ui y uj , con i 6= j, cuyo procesamiento com-


pleto termina en el mismo estado, es decir, δ(q
b 0 , ui ) = δ(q
b 0 , uj ). Como M es un autómata
determinista, se concluye que, para toda cadena x ∈ Σ∗ , el procesamiento de las cadenas
ui x y uj x termina en el mismo estado; en efecto,

δ(q
b 0 , ui x) = δ(
b δ(q
b 0 , ui ), x) = δ(
b δ(q
b 0 , uj ), x) = δ(q
b 0 , uj x).

Esto implica que para toda x ∈ Σ∗ , las cadenas ui x y uj x son ambas aceptadas o ambas
rechazadas, es decir, o bien (ui x ∈ L y uj x ∈ L), o bien (ui x ∈/ L y uj x ∈
/ L). Esto
contradice el hecho de que ui y uj son L-distinguibles.

Según este criterio, para concluir que L no es regular basta exhibir infinitas cadenas en
Σ∗ que sean L-distinguibles dos a dos. No es necesario utilizar explı́citamente autómatas
al invocar el criterio de no regularidad. En la mayorı́a de los casos será suficiente mostrar
que a, a2 , a3 , . . . son infinitas cadenas L-distinguibles dos a dos (en caso de que a ∈ Σ). En
algunos problemas resulta conveniente mostrar que las potencias pares, a2 , a4 , a6 , . . . (o
bien, las potencias impares) son infinitas cadenas L-distinguibles dos a dos. Los siguientes
ejemplos ilustran el uso de esta técnica.
 
Ejemplo Utilizar el criterio de no regularidad para demostrar que el lenguaje L =
 {an bn : n ≥ 0}, sobre Σ = {a, b}, no es regular.

Solución. Vamos a comprobar que a, a2 , a3 , . . . son infinitas cadenas L-distinguibles dos a


dos. Sean i, j ≥ 1, con i 6= j. Queremos mostrar que ai y aj son L-distinguibles, para lo
cual hay que encontrar una cadena x tal que ai x ∈ L pero aj x ∈ / L. La escogencia de x es
obvia: x = bi . Se tiene que ai x = ai bi ∈ L pero aj x = aj bi ∈/ L. Esto muestra que ai y aj
son L-distinguibles si i 6= j y, por el criterio 2.15.1, L no puede ser regular.
 
Ejemplo Utilizar el criterio de no regularidad para demostrar que el lenguaje de los
 palı́ndromes sobre Σ = {0, 1} no es un lenguaje regular.

Solución. Vamos a comprobar que 1, 12 , 13 , . . . son infinitas cadenas L-distinguibles dos a


dos. Sean i, j ≥ 1, con i 6= j. Queremos mostrar que 1i y 1j son L-distinguibles, para lo
cual hay que encontrar una cadena x tal que 1i x ∈ L pero 1j x ∈ / L. Escogemos x = 01i .
Se tendrá entonces que 1i x = 1i 01i ∈ L pero 1j x = 1j 01i ∈ / L. Esto muestra que 1i y 1j
son L-distinguibles si i 6= j y, por criterio 2.15.1, L no puede ser regular.
 
Ejemplo Utilizar el criterio de no regularidad para demostrar que el lenguaje L =
 {an2 : n ≥ 1} no es regular. L está formado por cadenas de aes cuya longitud
es un cuadrado perfecto, sobre el alfabeto Σ = {a}.
Solución. Vamos a comprobar que las cadenas de L, o sea a, a4 , a9 , a16 , a25 , . . . son L-
distinguibles dos a dos. Sean i, j ≥ 1, con i 6= j; sin pérdida de generalidad podemos
2 2
suponer que i < j. Queremos mostrar que ai y aj son L-distinguibles. Si escogemos
2 2 2 2 2
x = a2i+1 , se tendrá que ai x = ai a2i+1 = ai +2i+1 = a(i+1) ∈ L. De otro lado, aj x =
2 2
aj a2i+1 = aj +2i+1 ∈
/ L ya que

j 2 < j 2 + 2i + 1 < j 2 + 2j + 1 = (j + 1)2 .


Introducción a la Teorı́a de la Computación. Capı́tulo 2 92

2
Esto quiere decir que el número de aes que hay en aj +2i+1 está estrictamente compren-
dido entre dos cuadrados perfectos consecutivos, a saber, j 2 y (j + i)2 . Por consiguiente,
2
aj +2i+1 ∈
/ L.
 
Ejercicios de la sección 2.15
 

À Ya sea utilizando un argumento por contradicción o el criterio de no regularidad,


demostrar que los siguientes lenguajes no son regulares:

(i) L = {an b2n : n ≥ 0}, sobre Σ = {a, b}.


(ii) L = {a2n bn : n ≥ 0}, sobre Σ = {a, b}.
(iii) L = {an bm : n, m ≥ 0, n 6= m}, sobre Σ = {a, b}.
(iv) L = {am bn : m ≥ n ≥ 0}, sobre Σ = {a, b}.
(v) L = {0n 10n : n ≥ 1}, sobre Σ = {0, 1}.
(vi) L = {0m 1n 0m : m, n ≥ 0}, sobre Σ = {0, 1}.
(vii) L = {1n 01n 0 : n ≥ 1}, sobre Σ = {0, 1}.
(viii) L = {01n 01n : n ≥ 1}, sobre Σ = {0, 1}.
(ix) L = {uu : u ∈ Σ∗ }, sobre Σ = {a, b}.
(x) L = {uuR : u ∈ Σ∗ }, sobre Σ = {a, b}.

Á Σ = {0, 1}. Ya sea utilizando un argumento por contradicción o el criterio de no


regularidad, demostrar que el lenguaje L = {u ∈ Σ∗ : #0 (u) = #1 (u)} no es regular.

 Utilizar el criterio de no regularidad para demostrar que el lenguaje

L = {an : n es un número primo},

sobre Σ = {a}, no es regular. Ayuda: usar el Teorema de Legendre según el cual,


si p y q son primos, entonces la progresión aritmética {p + kq : k ≥ 0} contiene
infinitos primos.

à Demostrar que a∗ b∗ es la unión de dos lenguajes disyuntos no-regulares.

Ä Sea L un lenguaje no-regular y N un subconjunto finito de L. Demostrar que L − N


tampoco es regular.

Å Demostrar o refutar las siguientes afirmaciones:

(i) Un lenguaje no-regular debe ser infinito.


(ii) Si el lenguaje L1 ∪ L2 es regular, también lo son L1 y L2 .
(iii) Si los lenguajes L1 y L2 no son regulares, el lenguaje L1 ∩ L2 tampoco puede
ser regular.
Introducción a la Teorı́a de la Computación. Capı́tulo 2 93

(iv) Si el lenguaje L∗ es regular, también lo es L.


(v) Si L es regular y N es un subconjunto finito de L, entonces L − N es regular.
(vi) Un lenguaje regular no-vacı́o L es infinito si y sólo si en cualquier expresión
regular de L aparece por lo menos una ∗ (estrella de Kleene).

2.16. Problemas insolubles para autómatas finitos


La existencia de lenguajes no-regulares implica que hay ciertos problemas que no pueden
ser resueltos por medio de autómatas finitos. Dado un alfabeto Σ, consideremos una
propiedad P referente a las cadenas de Σ∗ . Denotamos con LP el lenguaje de todas las
cadenas que satisfacen la propiedad P, es decir,

LP = {u ∈ Σ∗ : u satisface P} = {u ∈ Σ∗ : P(u)}.

El problema de decisión para P es el siguiente:

(2.16.1) Dada u ∈ Σ∗ , ¿satisface u la propiedad P?

Decimos que el problema (2.16.1) puede ser resuelto usando autómatas finitos si existe
un AFD M tal que L(M ) = LP . En tal caso, para cada entrada u ∈ Σ∗ se tendrá
(
Si u es aceptada por M =⇒ u ∈ L(M ) =⇒ u satisface P.
Si u es rechazada por M =⇒ u ∈ / L(M ) =⇒ u no satisface P.

Por el Teorema de Kleene se concluye que el problema de decisión (2.16.1) se puede


resolver usando autómatas finitos si y sólo si LP es regular.
 
Ejemplo Sea Σ = {0, 1}. El problema de decisión
 

Dada u ∈ Σ∗ , ¿tiene u un número par de ceros?

se puede resolver usando autómatas finitos. La propiedad P en este caso es “tener un


número par de ceros” y LP es el lenguaje

LP = {u ∈ Σ∗ : u tiene un número par de ceros } = {u ∈ Σ∗ : #0 (u) es par}.

Sabemos que LP es regular y es aceptado por el siguiente AFD M :

1 1
0
q0 q1

0
Introducción a la Teorı́a de la Computación. Capı́tulo 2 94

Entonces M resuelve el problema de decisión para P.


 
Ejemplo Sea Σ = {0, 1}. El problema de decisión
 
Dada u ∈ Σ∗ , ¿es u un palı́ndrome?
no se puede resolver usando autómatas finitos. La propiedad P en este caso es “ser un
palı́ndrome” y LP es el lenguaje de todos los palı́ndromes, el cual se demostró en la sección
anterior que no es regular.
 
Ejemplo Sea Σ = {0, 1}. Demostrar que ningún autómata finito puede resolver el
 siguiente problema de decisión:

Dada u ∈ Σ∗ , ¿tiene u el mismo número de ceros que de unos?


Solución. La propiedad P en este caso es “tener el mismo número de ceros que de unos”
y LP es el lenguaje LP = {u ∈ Σ∗ : #0 (u) = #1 (u)}. Utilizando los argumentos de la
sección anterior (ya sea por contradicción o por el criterio de no regularidad), es posible
demostrar que LP no es regular (véase el ejercicio Á de la sección 2.15). Por consiguiente,
este problema es insoluble por medio de autómatas finitos.
 
Ejercicios de la sección 2.16
 
Determinar si los siguientes problemas de decisión se pueden o no resolver utilizando
autómatas finitos. Ya sea la respuesta afirmativa o negativa, se debe presentar una de-
mostración rigurosa.
À Σ = {a, b}. Dada u ∈ Σ∗ , ¿tiene u un número par de aes y un número impar de bes?
Á Σ = {a, b}. Dada u ∈ Σ∗ , ¿se cumple que #a (u) = #b (u) + 1?
Â Σ = {a, b}. Dada u ∈ Σ∗ , ¿es el número de aes en u un múltiplo 3? Nota: 0 se
considera múltiplo de cualquier otro número natural.
Ã Σ = {a, b}. Dada u ∈ Σ∗ , ¿es el número de aes en u un múltiplo del número de bes
en u?
Ä Σ = {0, 1}. Dada u ∈ Σ∗ , ¿el primer sı́mbolo de u (de izquierda a derecha) coincide
con el último sı́mbolo de u (de izquierda a derecha)?
Å Σ = {0, 1}. Dada u ∈ Σ∗ , ¿tiene u por lo menos un cero y por lo menos dos unos?
Æ Σ = {0, 1}. Dada u ∈ Σ∗ , ¿aparece la subcadena 01 una única vez en u?
Ç Σ = {0, 1}. Dada u ∈ Σ∗ , ¿se cumple #0 (u) 6= #0 (u)?
È Σ = {0, 1}. Dada u ∈ Σ∗ , ¿se cumple #1 (u) > #0 (u)?
É Σ = {0, 1}. Dada u ∈ Σ∗ , ¿se puede escribir u como la concatenación de dos mitades
iguales? Es decir, ¿es u = ww, para alguna cadena w ∈ Σ∗ ?

Vous aimerez peut-être aussi