228
Teor´ ıa de la Computaci ´ on Lenguajes, aut ´ omatas, gram´ aticas Rodrigo De Castro Korgi Ph.D. en Matem ´ aticas University of Illinois, U.S.A. Departamento de Matem ´ aticas Universidad Nacional de Colombia, Bogot ´ a

Teoría de La Computación. Lenguajes, Autómatas, Gramáticas. Rodrigo de Castro. 2004

Embed Size (px)

DESCRIPTION

Notas de claseTeoría de la computación. Lenguajes, autómatas, gramáticas. Rodrigo De Castro. 2004

Citation preview

  • Teora de la Computacion

    Lenguajes, automatas, gramaticas

    Rodrigo De Castro Korgi

    Ph.D. en MatematicasUniversity of Illinois, U.S.A.

    Departamento de MatematicasUniversidad Nacional de Colombia, Bogota

  • Teora de la ComputacionLenguajes, automatas, gramaticas

    c Universidad Nacional de ColombiaFacultad de Ciencias

    Juan Manuel Tejeiro, DecanoNatalia Ruiz, Vicedecana Academica

    Gustavo Rubiano, Director de Publicaciones

    c Rodrigo De Castro KorgiProfesor AsociadoDepartamento de Matematicas

    Primera edicion, 2004Diagramacion en LATEX realizada por el autor

    Impresion:UNIBIBLOSUniversidad Nacional de ColombiaBogota D.C., 2004

  • Indice general

    Prologo 1

    Introduccion. Que es la Teora de la Computacion? 3

    1. Alfabetos, cadenas y lenguajes 51.1. Alfabetos y cadenas . . . . . . . . . . . . . . . . . . . . . . 51.2. Concatenacion de cadenas . . . . . . . . . . . . . . . . . . . 71.3. Potencias de una cadena . . . . . . . . . . . . . . . . . . . . 81.4. Longitud de una cadena . . . . . . . . . . . . . . . . . . . . 81.5. Reflexion o inversa de una cadena . . . . . . . . . . . . . . . 91.6. Subcadenas, prefijos y sufijos . . . . . . . . . . . . . . . . . 91.7. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.8. Operaciones entre lenguajes . . . . . . . . . . . . . . . . . . 111.9. Concatenacion de lenguajes . . . . . . . . . . . . . . . . . . 121.10. Potencias de un lenguaje . . . . . . . . . . . . . . . . . . . . 141.11. La clausura de Kleene de un lenguaje . . . . . . . . . . . . 141.12. Reflexion o inverso de un lenguaje . . . . . . . . . . . . . . 171.13. Lenguajes regulares . . . . . . . . . . . . . . . . . . . . . . . 181.14. Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . 19

    2. Automatas finitos 252.1. Automatas finitos deterministas (AFD) . . . . . . . . . . . 252.2. Diagrama de transiciones de un automata . . . . . . . . . . 282.3. Diseno de automatas . . . . . . . . . . . . . . . . . . . . . . 292.4. Automatas finitos no-deterministas (AFN) . . . . . . . . . . 332.5. Equivalencia computacional entre los AFD y los AFN . . . 382.6. Automatas con transiciones (AFN-) . . . . . . . . . . . 43

    iii

  • iv INDICE GENERAL

    2.7. Equivalencia computacional entre los AFN- y los AFN . . 47

    2.8. Teorema de Kleene. Parte I . . . . . . . . . . . . . . . . . . 49

    2.9. Ejemplos de la parte I del Teorema de Kleene . . . . . . . . 52

    2.10. Lema de Arden . . . . . . . . . . . . . . . . . . . . . . . . . 55

    2.11. Teorema de Kleene. Parte II . . . . . . . . . . . . . . . . . . 57

    2.12. Ejemplos de la parte II del Teorema de Kleene . . . . . . . 58

    3. Otras propiedades de los lenguajes regulares 63

    3.1. Lema de bombeo . . . . . . . . . . . . . . . . . . . . . . . . 63

    3.2. Propiedades de clausura . . . . . . . . . . . . . . . . . . . . 67

    3.3. Propiedades de clausura para automatas . . . . . . . . . . . 69

    3.4. Homomorfismos ! . . . . . . . . . . . . . . . . . . . . . . . 72

    3.5. Imagen inversa de un homomorfismo ! . . . . . . . . . . . 74

    3.6. Algoritmos de decision . . . . . . . . . . . . . . . . . . . . . 75

    4. Lenguajes y gramaticas independientes del contexto 81

    4.1. Gramaticas generativas . . . . . . . . . . . . . . . . . . . . 81

    4.2. Gramaticas independientes del contexto . . . . . . . . . . . 82

    4.3. Arbol de una derivacion . . . . . . . . . . . . . . . . . . . . 88

    4.4. Gramaticas ambiguas . . . . . . . . . . . . . . . . . . . . . 91

    4.5. Gramaticas para lenguajes de programacion . . . . . . . . . 94

    4.6. Gramaticas para lenguajes naturales ! . . . . . . . . . . . . 96

    4.7. Gramaticas regulares . . . . . . . . . . . . . . . . . . . . . . 98

    4.8. Eliminacion de las variables inutiles . . . . . . . . . . . . . 102

    4.9. Eliminacion de las producciones . . . . . . . . . . . . . . 107

    4.10. Eliminacion de las producciones unitarias . . . . . . . . . . 110

    4.11. Forma Normal de Chomsky (FNC) . . . . . . . . . . . . . . 113

    4.12. Forma Normal de Greibach (FNG) ! . . . . . . . . . . . . 120

    4.13. Lema de bombeo para LIC . . . . . . . . . . . . . . . . . . 125

    4.14. Propiedades de clausura de los LIC . . . . . . . . . . . . . . 130

    4.15. Algoritmos de decision para GIC . . . . . . . . . . . . . . . 135

    5. Automatas con pila 143

    5.1. Automatas con Pila Deterministas (AFPD) . . . . . . . . . 143

    5.2. Automatas con pila no-deterministas (AFPN) . . . . . . . . 149

    5.3. Aceptacion por pila vaca . . . . . . . . . . . . . . . . . . . 154

    5.4. Automatas con pila y LIC. Parte I. . . . . . . . . . . . . . . 157

    5.5. Automatas con pila y LIC. Parte II. ! . . . . . . . . . . . . 160

  • INDICE GENERAL v

    6. Maquinas de Turing 1676.1. Maquinas de Turing como aceptadoras de lenguajes . . . . . 1676.2. Subrutinas o macros . . . . . . . . . . . . . . . . . . . . . . 1746.3. Maquinas de Turing como calculadoras de funciones . . . . 1766.4. Maquinas de Turing como generadoras de lenguajes . . . . . 1796.5. Variaciones del modelo estandar de MT . . . . . . . . . . . 180

    6.5.1. Estado de aceptacion unico . . . . . . . . . . . . . . 1806.5.2. Maquina de Turing con cinta dividida en pistas . . . 1816.5.3. Maquina de Turing con multiples cintas . . . . . . . 1816.5.4. Maquinas de Turing no-deterministas (MTN) . . . . 183

    6.6. Simulacion de automatas por medio de maquinas de Turing 1866.6.1. Simulacion de automatas . . . . . . . . . . . . . . . 1866.6.2. Simulacion de automatas con pila . . . . . . . . . . . 186

    6.7. Automatas con dos pilas (AF2P) ! . . . . . . . . . . . . . . 1886.8. Propiedades de clausura . . . . . . . . . . . . . . . . . . . . 1936.9. MT, computadores, algoritmos y la tesis de Church-Turing 198

    6.9.1. Maquinas de Turing y algoritmos . . . . . . . . . . . 1986.9.2. Maquinas de Turing y computadores . . . . . . . . . 199

    7. Problemas indecidibles 2017.1. Codificacion y enumeracion de maquinas de Turing . . . . . 2017.2. Maquina de Turing universal . . . . . . . . . . . . . . . . . 2067.3. Algoritmos de aceptacion para lenguajes RE . . . . . . . . . 2097.4. Lenguajes que no son RE . . . . . . . . . . . . . . . . . . . 2117.5. Lenguajes RE no recursivos . . . . . . . . . . . . . . . . . . 2127.6. Problemas indecidibles o irresolubles . . . . . . . . . . . . . 215

    Bibliografa 221

  • vi INDICE GENERAL

  • Prologo

    Este libro contiene lo mnimo que los estudiantes de las carreras de inge-niera de sistemas y de matematicas deberan saber sobre los fundamentosmatematicos de la teora de la computacion. Esta basado en el materialde clase utilizado por el autor durante los ultimos anos en la UniversidadNacional de Colombia, sede de Bogota.

    A estudiantes y profesores

    El libro esta escrito tanto para estudiantes de matematicas quienes, esde suponer, tienen mas experiencia con razonamientos abstractos y demos-traciones como para estudiantes de ingeniera. Es el profesor quien debeestablecer el tono del curso, enfatizando ya sea el rigor matematico o unapresentacion mas intuitiva y practica. Los resultados estan presentados enforma de teoremas, corolarios y lemas, con sus respectivas demostraciones;estas pueden omitirse, si as lo estima el profesor. En los cursos dirigidosa estudiantes de ingeniera de sistemas, el enfasis debe residir tanto porparte del profesor como por parte del estudiante en los ejemplos y ejer-cicios practicos; hay que resaltar mas el significado de los enunciados quesus demostraciones formales. El libro contiene gran cantidad de ejemplos yproblemas resueltos, con aplicaciones o ilustraciones directas de la teora.

    Como prerrequisito, es imprescindible que el estudiante haya tomado almenos un curso de matematicas discretas en el que se haya familiarizadocon las nociones basicas y la notacion de la teora intuitiva de conjuntos,grafos, induccion matematica y logica elemental. La experiencia previa enprogramacion es muy util pero, de ninguna manera, necesaria.

    El material se presenta en secciones relativamente cortas, lo que permitealguna flexibilidad en la seleccion de los topicos del curso. As, si el tiempo

    1

  • 2 PROLOGO

    disponible no es holgado, o no es posible avanzar con la velocidad suficiente,podran suprimirse las secciones demarcadas con el smbolo !.

    Casi todas las secciones poseen ejercicios, de variada dificultad; los masdifciles estan precedidos de un smbolo de admiracion ! y podran ser consi-derados opcionales. Es responsabilidad del estudiante resolver los ejerciciosque sean asignados por el profesor. La unica manera de aprender y asimilarlas ideas y tecnicas presentadas en la clase es trabajar seria y completa-mente los ejercicios.

    Material de apoyo en la red

    Versiones preliminares de estas notas aparecieron, de forma incompleta,en el curso virtual de Teora de la Computacion perteneciente al programaUniversidad Virtual de la la Universidad Nacional de Colombia. Es la inten-cion del autor mantener y actualizar permanentemente la version virtualinteractiva de este curso, con material de apoyo como temas y ejerciciosnuevos, correccion de errores, software, enlaces a otra paginas Web, etc. Sepuede acceder libremente al curso virtual en el portal

    http://www.virtual.unal.edu.co/

    siguiendo los enlaces: CursosFacultad de CienciasMatematicasTeora dela Computacion.

    Agradecimientos

    Durante la elaboracion de estas notas he recibido por parte de estudiantesatentos muchas observaciones utiles que han ayudado a mejorar sustan-cialmente la presentacion. Quiero expresarles mis agradecimientos a todosellos, demasiado numerosos para mencionarlos individualmente.

    La primera version del curso virtual fue realizada con la ayuda del es-tudiante de posgrado Adolfo Reyes, a quien expreso mi gratitud y reco-nocimiento. Para la preparacion de la presente version tuve la suerte decontar con la colaboracion del estudiante de matematicas Camilo Cubides,con quien estoy muy agradecido por la calidad y seriedad de su trabajo.

    Finalmente, quiero agradecer a Gustavo Rubiano, Director de las oficinade publicaciones de la Facultad de Ciencias, por su continuo apoyo y sucooperacion desinteresada.

  • Introduccion

    Que es la Teora de la Computacion?

    La Teora de la Computacion estudia modelos abstractos de los dispositivosconcretos que conocemos como computadores, y analiza lo que se puede y nose puede hacer con ellos. Este estudio teorico se inicio varias decadas antesde la aparicion de los primeros computadores reales y continua creciendo,a medida que que la computacion incrementa su sofisticacion.

    Entre los muchos topicos que conforman la teora de la computacion,solo tendremos la oportunidad de tratar someramente los dos siguientes:

    Modelos de computacion. Las investigaciones en este campo comenza-ron en la decada de los 30 del siglo XX con el trabajo del logico norteame-ricano Alonzo Church (19031995) y del matematico britanico Alan Turing(19121954). Church introdujo el formalismo conocido como calculo- yenuncio la tesis hoy conocida como tesis de Church de que las funcio-nes efectivamente computables, es decir, computables por cualquier metodocomputacional concebible, son exactamente las funciones -computables.En contraste con el enfoque mas abstracto de Church, Turing (quien fuealumno doctoral de Church en la universidad de Princeton) propuso unmodelo concreto de maquina computadora, hoy conocida como la maquinade Turing, capaz de simular las acciones de cualquier otro dispositivo fsicode computacion secuencial.

    Curiosamente, las propuestas de Church y Turing se publicaron exacta-mente en el mismo ano: 1936. Los dos formalismos resultaron ser equivalen-tes y, desde entonces, se han propuesto muchos otros modelos de compu-tacion. Como todos han resultados ser equivalentes entre s, ha ganado

    3

  • 4 INTRODUCCION

    aceptacion universal la tesis de Church-Turing: no hay modelo de compu-tacion mas general ni poderoso que la maquina de Turing.

    En los anos 40 y 50 del siglo XX se adelantaron investigaciones sobremaquinas de Turing con capacidad restringida, surgiendo as la nocion demaquina de estado finito o automata finito (automata es sinonimo demaquina de computo automatico). Los automatas han resultado ser mo-delos muy utiles para el diseno de diversos tipos de software y hardware.

    Lenguajes y gramaticas formales. Una lnea investigativa, aparente-mente alejada de los modelos de computacion, surgio con los estudios dellinguista norteamericano Noam Chomsky1. Chomsky introdujo en 1956 lanocion de gramatica generativa con el proposito de describir los lenguajesnaturales como el espanol, el ingles, el frances, etc. Chomsky clasifico lasgramaticas en cuatro tipos, dependiendo de la forma de sus producciones,que son las reglas que utiliza una gramatica para generar palabras o ca-denas de smbolos. Pocos anos despues se establecio que hay una estrecharelacion entre automatas y gramaticas: los lenguajes de la llamada jerarquade Chomsky corresponden a los lenguajes que pueden ser reconocidos portipos especiales de automatas.

    La interaccion entre los automatas (mecanismos para procesar cade-nas de smbolos) y las gramaticas (mecanismos para generar cadenas desmbolos) es una fuente de resultados profundos y significativos. Desde laaparicion de los influyentes textos de Hopcroft y Ullman ([HU1], 1969) y([HU2], 1979), un curso semestral basico de teora de la computacion seha centrado en el estudio de automatas y gramaticas. Estas notas de clasereflejan esa tradicion.

    1En el ano 2002, la Universidad Nacional de Colombia otorgo el doctorado HonorisCausa a Noam Chomsky.

  • Captulo1Alfabetos, cadenas y lenguajes

    De manera muy amplia podra decirse que la computacion es la manipula-cion de secuencias de smbolos. Pero el numero de smbolos disponibles encualquier mecanismo de computo es finito y todos los objetos usados comoentradas o salidas (inputs/outputs) deben ser identificados en un tiempofinito. Desde el punto de vista teorico esto impone dos restricciones basicas:el conjunto de smbolos (alfabeto) debe ser finito y se deben considerar uni-camente cadenas (secuencias de smbolos) de longitud finita. Surgen as losingredientes esenciales de una teora abstracta de la computacion: alfabe-tos y cadenas. Los conjuntos de cadenas (ya sean finitos o infinitos) sedenominaran lenguajes.

    1.1. Alfabetos y cadenas

    Un alfabeto es un conjunto finito no vaco cuyos elementos se llamansmbolos. Denotamos un alfabeto arbitrario con la letra .

    Una cadena o palabra sobre un alfabeto es cualquier sucesion (osecuencia) finita de elementos de . Admitimos la existencia de una unicacadena que no tiene smbolos, la cual se denomina cadena vaca y sedenota con . La cadena vaca desempena, en la teora de la computacion,un papel similar al del conjunto vaco en la teora de conjuntos.

    Ejemplo Sea = {a, b} el alfabeto que consta de los dos smbolos a y

    b. Las siguientes son cadenas sobre :abaababaaaaaaab.

    5

  • 6 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

    Observese que aba = aab. El orden de los smbolos en una cadena es sig-nificativo ya que las cadenas se definen como sucesiones, es decir, conjuntossecuencialmente ordenados.

    Ejemplo El alfabeto = {0, 1} se conoce como alfabeto binario. Las

    cadenas sobre este alfabeto son secuencias finitas de ceros yunos, llamadas secuencias binarias, tales como

    0011011001000001.

    Ejemplo = {a, b, c, . . . , x, y, z, A,B,C, . . . , X, Y, Z}, el alfabeto del

    idioma castellano. Las palabras oficiales del castellano (las queaparecen en el diccionario DRA) son cadenas sobre .

    Ejemplo El alfabeto utilizado por muchos de los llamados lenguajes de

    programacion (como Pascal o C) es el conjunto de caracte-res ASCII (o un subconjunto de el) que incluye, por lo general, las letrasmayusculas y minusculas, los smbolos de puntuacion y los smbolos ma-tematicos disponibles en los teclados estandares.

    El conjunto de todas las cadenas sobre un alfabeto , incluyendo lacadena vaca, se denota por .

    Ejemplo Sea = {a, b, c}, entonces

    = {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, abc, baa, . . .}.

    En la siguiente tabla aparece la notacion corrientemente utilizada en lateora de la computacion. De ser necesario, se emplean subndices.

    Notacion usada en la teora de la computacion

    , denotan alfabetos.

    denota el conjunto de todas las cadenas que sepueden formar con los smbolos del alfabeto .

    a, b, c, d, e,. . . denotan smbolos de un alfabeto.

    u, v, w, x, y, z, . . .,, , . . .

    denotan cadenas, es decir, sucesiones finitas desmbolos de un alfabeto.

    denota la cadena vaca, es decir, la unica cadenaque no tiene smbolos.

    A,B,C, . . . , L,M,N ,. . . denotan lenguajes (definidos mas adelante).

  • 1.2. CONCATENACION DE CADENAS 7

    Algunos autores denotan la cadena vaca con la letra griega .Preferimos denotarla con porque tiende a confundirse con elsmbolo usado para la relacion de pertenencia.

    Si bien un alfabeto es un conjunto finito, es siempre unconjunto infinito (enumerable). En el caso mas simple, contienesolo un smbolo, = {a}, y = {, a, aa, aaa, aaaa, aaaaa, . . .}.

    Hay que distinguir entre los siguientes cuatro objetos, que sontodos diferentes entre s: , , {} y {}.

    La mayor parte de la teora de la computacion se hace con refe-rencia a un alfabeto fijo (pero arbitrario).

    1.2. Concatenacion de cadenas

    Dado un alfabeto y dos cadenas u, v , la concatenacion de u y vse denota como u v o simplemente uv y se define descriptivamente as:

    1. Si v = , entonces u = u = u. Es decir, la concatenacion decualquier cadena u con la cadena vaca, a izquierda o a derecha, esigual a u.

    2. Si u = a1a2 an, v = b1b2 bm, entonces

    u v = a1a2 anb1b2 bm.

    Es decir, u v es la cadena formada escribiendo los smbolos de u y acontinuacion los smbolos de v.

    La concatenacion de cadenas se puede definir inductiva o recursivamentede la siguiente manera. Si u, v , a , entonces

    1. u = u = u.

    2. u (va) = (u v)a.

    Propiedad. La concatenacion de cadenas es una operacion asociativa. Esdecir, si u, v, w , entonces

    (uv)w = u(vw).

    Demostracion. Se puede hacer escribiendo explcitamente las cadenas u, v,w y usando la definicion descriptiva de concatenacion. Tambien se puede daruna demostracion inductiva usando la definicion recursiva de concatenacion(ejercicio opcional).

  • 8 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

    1.3. Potencias de una cadena

    Dada u y n N, se define (descriptivamente) un en la siguiente forma

    u0 = ,

    un = uu u n veces

    .

    Como ejercicio, el estudiante puede dar una definicion recursiva de un.

    1.4. Longitud de una cadena

    La longitud de una cadena u se denota |u| y se define como el numerode smbolos de u (contando los smbolos repetidos). Es decir,

    |u| =

    {0, si u = ,n, si u = a1a2 an.

    Ejemplo |aba| = 3, |baaa| = 4.

    Ejemplo Si w

    , n,m N, demostrar que |wn+m| = |wn| + |wm|.Esta no es una propiedad realmente importante (no la usare-

    mos nunca en este libro!); la presentamos aqu para enfatizar los conceptosinvolucrados e ilustrar los razonamientos estrictos.

    Solucion. Caso n,m 1. |wn+m| = | ww w n+m veces

    | = (n + m)|w|. Por otro

    lado,

    |wn|+ |wm| = |ww w n veces

    |+ |ww w m veces

    | = n|w|+m|w|.

    Caso n = 0,m 1. |wn+m| = |w0+m| = |wm|. Por otro lado,

    |wn|+ |wm| = |w0|+ |wm| = ||+ |wm| = 0 + |wm| = |wm|.

    Caso m = 0, n 1. Similar al caso anterior.

    Caso n = 0,m = 0. |wn+m| = |w0+0| = || = 0. Por otro lado,

    |wn|+ |wm| = |w0|+ |w0| = ||+ || = 0 + 0 = 0.

  • 1.5. REFLEXION O INVERSA DE UNA CADENA 9

    1.5. Reflexion o inversa de una cadena

    La reflexion o inversa de una cadena u se denota uR y se definedescriptivamente as:

    uR =

    {, si u = ,an a2a1, si u = a1a2 an.

    De la definicion se observa claramente que la reflexion de la reflexion deuna cadena es la misma cadena, es decir,

    (uR)R = u, para u .

    Algunos autores escriben u1 en lugar de uR para denotar la re-flexion de una cadena u.

    Ejercicios de la seccion 1.5

    Dar una definicion recursiva de uR.

    Si u, v , demostrar que (uv)R = vRuR. Generalizar esta propie-dad a la concatenacion de n cadenas.

    1.6. Subcadenas, prefijos y sufijos

    Una cadena v es una subcadena o una subpalabra de u si existen cadenasx, y tales que u = xvy. Notese que x o y pueden ser y, por lo tanto,la cadena vaca es una subcadena de cualquier cadena y toda cadena essubcadena de s misma.

    Un prefijo de u es una cadena v tal que u = vw para alguna cadenaw . Se dice que v es un prefijo propio si v = u.

    Similarmente, un sufijo de u es una cadena v tal que u = wv paraalguna cadena w . Se dice que v es un sufijo propio si v = u.

    Observese que es un prefijo y un sufijo de toda cadena u ya queu = u = u. Por la misma razon, toda cadena u es prefijo y sufijo des misma.

    Ejemplo Sean = {a, b, c, d} y u = bcbaadb.

  • 10 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

    Prefijos de u :

    bbcbcbbcbabcbaabcbaadbcbaadb

    Sufijos de u :

    bdbadbaadbbaadbcbaadbbcbaadb

    1.7. Lenguajes

    Un lenguaje L sobre un alfabeto es un subconjunto de , es decirL .

    Casos extremos:

    L = , lenguaje vaco.L = , lenguaje de todas las cadenas sobre .

    Todo lenguaje L satisface L , y puede ser finito o infinito. Loslenguajes se denotan con letras mayusculas A,B,C, . . . , L,M,N, . . .. En lasiguiente grafica se visualizan dos lenguajes A y B sobre .

    A

    B

    Ejemplos Los siguientes son ejemplos de lenguajes sobre los alfabetos

    especificados.

    = {a, b, c}. L = {a, aba, aca}.

    = {a, b, c}. L = {a, aa, aaa, . . .} = {an : n 1}.

  • 1.8. OPERACIONES ENTRE LENGUAJES 11

    = {a, b, c}. L = {, aa, aba, ab2a, ab3a, . . .} = {abna : n 0} {}.

    = {a, b, c, . . . , x, y, z, A,B,C, . . . , X, Y, Z}. L = {u : u apareceen el diccionario espanol DRA}. L es un lenguaje finito.

    = {a, b, c}. L = {u : u no contiene el smbolo c}. Por ejemplo,abbaab L pero abbcaa / L.

    = {0, 1}. L = conjunto de todas las secuencias binarias que contie-nen un numero impar de unos.

    = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. El conjunto N de los numeros naturalesse puede definir como un lenguaje sobre , en la siguiente forma:

    N = {u : u = 0 o 0 no es un prefijo de u}.

    Como ejercicio, el estudiante puede definir el conjunto de los enteros Z ={. . . ,2,1, 0, 1, 2, . . .} como un lenguaje sobre un alfabeto adecuado.

    El concepto abstracto de lenguaje, tal como se ha definido, no esexactamente la misma nocion utilizada en la expresion lenguajede programacion. Para precisar la relacion entre estos conceptos,consideremos el alfabeto de los caracteres ASCII. Un programaen C o en Pascal, por ejemplo, es simplemente una cadena desmbolos de y, por lo tanto, un conjunto de programas es unlenguaje (en el sentido formal definido en esta seccion).

    1.8. Operaciones entre lenguajes

    Puesto que los lenguajes sobre son subconjuntos de , las operacionesusuales entre conjuntos son tambien operaciones validas entre lenguajes.As, si A y B son lenguajes sobre (es decir A,B ), entonces lossiguientes tambien son lenguajes sobre :

    A B UnionA B InterseccionAB DiferenciaA = A Complemento

    Estas operaciones entre lenguajes se llaman operaciones conjuntistas o boo-leanas para distinguirlas de las operaciones lingusticas (concatenacion, po-tencia, inverso, clausura) que son extensiones a los lenguajes de las opera-ciones entre cadenas.

  • 12 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

    1.9. Concatenacion de lenguajes

    La concatenacion de dos lenguajes A y B sobre , notada A B o sim-plemente AB se define como

    AB = {uv : u A, v B}.

    En general, AB = BA.

    Ejemplo Si = {a, b, c}, A = {a, ab, ac}, B = {b, b2}, entonces

    AB = {ab, ab2, ab2, ab3, acb, acb2}.BA = {ba, bab, bac, b2a, b2ab, b2ac}.

    Ejemplo Si = {a, b, c}, A = {ba, bc}, B = {bn : n 0}, entonces

    AB = {babn : n 0} {bcbn : n 0}.BA = {bnba : n 0} {bnbc : n 0}

    = {bn+1a : n 0} {bn+1c : n 0}= {bna : n 1} {bnc : n 1}.

    Propiedades de la concatenacion de lenguajes. Sean A,B,C lengua-jes sobre , es decir A,B,C . Entonces

    1. A = A = .

    2. A {} = {} A = A.

    3. Propiedad Asociativa,

    A (B C) = (A B) C.

    4. Distributividad de la concatenacion con respecto a la union,

    A (B C) = A B A C.(B C) A = B A C A.

    5. Propiedad distributiva generalizada. Si {Bi}iI es una familia cual-quiera de lenguajes sobre , entonces

    A iI

    Bi =iI

    (A Bi),(iI

    Bi)A =

    iI

    (Bi A).

  • 1.9. CONCATENACION DE LENGUAJES 13

    Demostracion.

    1. A = {uv : u A, v } = .

    2. A {} = {uv : u A, v {}} = {u : u A} = A.

    3. Se sigue de la asociatividad de la concatenacion de cadenas.

    4. Caso particular de la propiedad general, demostrada a continuacion.

    5. Demostracion de la igualdad A iI

    Bi =iI

    (A Bi):

    x A

    iI Bi x = u v, con u A & v

    iI Bi x = u v, con u A & v Bj , para algun j I x A Bj , para algun j I x

    iI(A Bi).

    La igualdad(iI

    Bi)A =

    iI

    (Bi A) se demuestra de forma similar.

    La propiedad asociativa permite escribir concatenaciones de treso mas lenguajes sin necesidad de usar parentesis.

    En general, no se cumple que A (B C) = A B A C. Es decir,la concatenacion no es distributiva con respecto a la interseccion.Contraejemplo: A = {a,}, B = {}, C = {a}. Se tiene:

    A (B C) = {a,} = .

    Por otro lado,

    A B A C = {a,} {} {a,} {a} = {a,} {a2, a} = {a}.

    Ejercicios de la seccion 1.9

    Dar un ejemplo de un alfabeto y dos lenguajes diferentes A,B sobre tales que AB = BA.

    Una de las dos contenencias siguientes es verdadera y la otra es falsa.Demostrar o refutar, segun sea el caso:

    (i) A (B C) A B A C.

    (ii) A B A C A (B C).

  • 14 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

    1.10. Potencias de un lenguaje

    Dado un lenguaje A sobre , (A ), y un numero natural n N, sedefine An en la siguiente forma

    A0 = {},

    An = AA A n veces

    = {u1 un : ui A, para todo i, 1 i n}.

    De esta forma, A2 es el conjunto de las concatenaciones dobles de cadenasde A, A3 esta formado por las concatenaciones triples y, en general, An

    es el conjunto de todas las concatenaciones de n cadenas de A, de todaslas formas posibles. Como ejercicio, el estudiante puede dar una definicionrecursiva de An.

    1.11. La clausura de Kleene de un lenguaje

    La clausura de Kleene o estrella de Kleene o simplemente la estrellade un lenguaje A, A , es la union de todas las potencias de A y sedenota por A.

    (Descripcion 1) A =i0

    Ai = A0 A1 A2 An

    Segun la definicion de las potencias de una lenguaje, A consta de todaslas concatenaciones de cadenas de A consigo mismas, de todas las formasposibles. Tenemos as una util descripcion de A:

    (Descripcion 2)

    A = conjunto de todas las concatenaciones

    de cadenas de A, incluyendo

    = {u1 un : ui A, n 0}

    De manera similar se define la clausura positiva de un lenguaje A, A , denotada por A+.

    A+ =i1

    Ai = A1 A2 An

    A+ se puede describir de la siguiente manera

    A+ = conjunto de todas las concatenaciones de cadenas de A

    = {u1 un : ui A, n 1}

  • 1.11. LA CLAUSURA DE KLEENE DE UN LENGUAJE 15

    Observese que A = A+ {} y que A = A+ si y solamente si A.

    Propiedades de y +. Sea A un lenguaje sobre , es decir, A .

    1. A+ = A A = A A.

    2. A A = A.

    3.(A)n

    = A, para todo n 1.

    4.(A)

    = A.

    5. A+ A+ A+.

    6.(A)+

    = A.

    7.(A+

    )= A.

    8.(A+

    )+= A+.

    9. Si A y B son lenguajes sobre , entonces (A B) = (AB).

    Demostracion.

    A A = A (A0 A1 A2 )1.

    = A1 A2 A3

    = A+.

    Similarmente se demuestra que A A = A+.

    2. Si x A A, entonces x = u v, con u A, v A. De modo que,x = u v, con u = u1u2 un, ui A, n 0 y v = v1v2 vm, vi A,m 0.De donde

    x = u v = u1 u2 un v1 v2 vm.

    con ui A, vi A, n 0. Por lo tanto, x es una concatenacion de n+mcadenas de A. As que x A.

    Recprocamente, si x A, entonces x = x A A. Esto prueba laigualdad de los conjuntos A A y A.

    3. Se sigue de la propiedad anterior.(A)

    =(A)0(A)1(A)2 4.

    = {} A A A

    = A.

  • 16 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

    5. La demostracion de esta propiedad es similar a la de la propiedad 2,pero con la restriccion m,n 1. En general, no se tiene la igualdad A+ A+ = A+; mas adelante se mostrara un contraejemplo.(

    A)+

    =(A)1 (A

    )2 (A

    )3 6.

    = A A A

    = A.

    (A+

    )=(A+

    )0(A+

    )1(A+

    )2 7.

    = {} A+ A+A+

    = A (conjuntos contenidos en A+)

    = A.

    (A+

    )+=(A+

    )1(A+

    )2(A+

    )3 ,8.

    = A+ (conjuntos contenidos en A+)

    = A+.

    9. Segun la Descripcion 2, el lenguaje (AB) esta formado por las conca-tenaciones de cadenas de A consigo mismas, las concatenaciones de cadenasde B consigo mismas y las concatenaciones de cadenas de A con cadenas deB, de todas las formas posibles y en cualquier orden. Si se usa tambien laDescripcion 2, se observa que eso mismo se obtiene al efectuar (AB).

    Contraejemplo de A+ A+ = A+. Sea = {a, b}, A = {a}. Setiene

    A+ = A1 A2 = {a} {aa} {aaa} = {an : n 1}.

    Por otro lado,

    A+ A+ = {a, a2, a3, . . . } {a, a2, a3, . . . } = {a2, a3, a4, . . . }= {an : n 2}.

    Segun las definiciones dadas, tiene dos significados:

    = conjunto de las cadenas sobre el alfabeto .

    = conjunto de todas las concatenaciones de cadenas de .

    No hay conflicto de notaciones porque las dos definiciones anterio-res de dan lugar al mismo conjunto.

  • 1.12. REFLEXION O INVERSO DE UN LENGUAJE 17

    1.12. Reflexion o inverso de un lenguaje

    Dado A un lenguaje sobre , se define AR de la siguiente forma:

    AR = {uR : u A}.

    AR se denomina la reflexion o el inverso de A.

    Propiedades. Sean A y B lenguajes sobre (es decir, A,B ).

    1. (A B)R = BR AR.

    2. (A B)R = AR BR.

    3. (A B)R = AR BR.

    4.(AR

    )R= A.

    5. (A)R =(AR

    ).

    6. (A+)R =(AR

    )+.

    Demostracion. Demostraremos las propiedades 1 y 5; las demas se dejancomo ejercicio para el estudiante.

    x (A B)R x = uR, donde u A B1.

    x = uR, donde u = vw, v A,w B

    x = (vw)R, donde v A,w B

    x = wRvR, donde v A,w B

    x BR AR.

    x (A)R x = uR, donde u A5.

    x = (u1 u2 un)R, donde los ui A, n 0

    x = uRn uR2 uR

    1, donde los ui A, n 0

    x (AR).

    Ejercicios de la seccion 1.12

    Demostrar las propiedades 2, 3, 4 y 6 de la reflexion de cadenas.

    Se pueden generalizar las propiedades 2 y 3 anteriores para unionese intersecciones arbitrarias, respectivamente?

  • 18 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

    1.13. Lenguajes regulares

    Los lenguajes regulares sobre un alfabeto dado son todos los lenguajesque se pueden formar a partir de los lenguajes basicos , {}, {a}, a ,por medio de las operaciones de union, concatenacion y estrella de Kleene.

    A continuacion presentamos una definicion recursiva de los lenguajesregulares. Sea un alfabeto.

    1. , {} y {a}, para cada a , son lenguajes regulares sobre . Estosson los denominados lenguajes regulares basicos.

    2. Si A y B son lenguajes regulares sobre , tambien lo son

    A B (union),A B (concatenacion),A (estrella de Kleene).

    Observese que tanto como son lenguajes regulares sobre . La union,la concatenacion y la estrella de Kleene se denominan operaciones regu-lares.

    Ejemplos Sea = {a, b}. Los siguientes son lenguajes regulares sobre

    :

    1. El lenguaje A de todas las cadenas que tienen exactamente una a:

    A = {b} {a} {b}.

    2. El lenguaje B de todas las cadenas que comienzan con b:

    B = {b} {a, b}.

    3. El lenguaje C de todas las cadenas que contienen la cadena ba:

    C = {a, b} {ba} {a, b}.

    4. ({a} {b}) {a}.

    5.[({a} {b}

    ) {b}

    ].

    Es importante observar que todo lenguaje finito L = {w1, w2, . . . , wn} esregular ya que L se puede obtener con uniones y concatenaciones:

    L = {w1} {w2} {wn},

    y cada wi es la concatenacion de un numero finito de smbolos, wi =a1a2 ak; por lo tanto, {wi} = {a1} {a2} {ak}.

  • 1.14. EXPRESIONES REGULARES 19

    1.14. Expresiones regulares

    Con el proposito de simplificar la descripcion de los lenguajes regulares sedefinen las llamadas expresiones regulares.

    La siguiente es la definicion recursiva de las expresiones regularessobre un alfabeto dado.

    1. Expresiones regulares basicas:

    es una expresion regular que representa al lenguaje . es una expresion regular que representa al lenguaje {}.a es una expresion regular que representa al lenguaje {a}, a .

    2. Si R y S son expresiones regulares sobre , tambien lo son:

    (R)(S)(R S)(R)

    (R)(S) representa la concatenacion de los lenguajes representados porR y S; (R S) representa su union, y (R) representa la clausurade Kleene del lenguaje representado por R. Los parentesis ( y ) sonsmbolos de agrupacion y se pueden omitir si no hay peligro de am-biguedad.

    Para una expresion regular R cualquiera se utiliza en ocasiones la siguientenotacion:

    L(R) := lenguaje representado por R.

    Utilizando esta notacion y la definicion recursiva de expresion regular po-demos escribir las siguientes igualdades en las que R y S son expresionesregulares arbitrarias:

    L() = .L() = {}.L(a) = {a}, a .L(RS) = L(R)L(S).L(R S) = L(R) L(S).L(R) = L(R).

    Ejemplo Dado el alfabeto = {a, b, c},

    (a b)a(bc)

  • 20 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

    es una expresion regular que representa al lenguaje

    ({a} {b}) {a} {bc}.

    Ejemplo Dado el alfabeto = {a, b},

    ( a)(a b)(ba)

    es una expresion regular que representa al lenguaje

    ({} {a}) ({a} {b}) {ba}.

    Ejemplos Podemos representar los tres primeros lenguajes de la sec-

    cion 1.13 con expresiones regulares:

    1. El lenguaje A de todas las cadenas que tienen exactamente una a:

    A = bab.

    2. El lenguaje B de todas las cadenas que comienzan con b:

    B = b(a b).

    3. El lenguaje C de todas las cadenas que contienen la cadena ba:

    C = (a b)ba(a b).

    La representacion de lenguajes regulares por medio de expresionesregulares no es unica. Es posible que haya varias expresiones re-gulares diferentes para el mismo lenguaje. Por ejemplo, b(a b)

    y b(b a) representan el mismo lenguaje.

    Otro ejemplo: las dos expresiones regulares (a b) y (ab) re-presentan el mismo lenguaje por la propiedad 9 de la seccion 1.11.

    Ejemplos Encontrar expresiones regulares que representen los siguientes

    lenguajes, definidos sobre el alfabeto = {a, b}:

    1. Lenguaje de todas las cadenas que comienzan con el smbolo b yterminan con el smbolo a.

    Solucion. b(a b)a.

  • 1.14. EXPRESIONES REGULARES 21

    2. Lenguaje de todas las cadenas que tienen un numero par de smbolos(cadenas de longitud par).

    Solucion. (aa ab ba bb). Otra expresion regular para este len-guaje es [(a b)(a b)].

    3. Lenguaje de todas las cadenas que tienen un numero par de aes.

    Soluciones:b(babab).(aba b).(babab) b.

    Ejemplos Encontrar expresiones regulares que representen los siguientes

    lenguajes, definidos sobre el alfabeto = {0, 1}:

    1. Lenguaje de todas las cadenas que tienen exactamente dos ceros.

    Solucion. 10101.

    2. Lenguaje de todas las cadenas cuyo penultimo smbolo, de izquierdaa derecha, es un 0.

    Solucion. (0 1)0(0 1). Usando la propiedad distributiva obtene-mos otra expresion regular para este lenguaje: (0 1)00 (0 1)01.

    Ejemplo Sea = {0, 1}. Encontrar una expresion regular que represente

    el lenguaje de todas las cadenas que no contienen dos cerosconsecutivos.

    Solucion. La condicion de que no haya dos ceros consecutivos implica quetodo cero debe estar seguido necesariamente de un uno, excepto un cero alfinal de la cadena. Por lo tanto, las cadenas de este lenguaje se obtienenconcatenado unos con bloques 01, de todas las formas posibles. Hay quetener en cuenta, ademas, que la cadena puede terminar ya sea en 1 o en 0.A partir de este analisis, llegamos a la expresion regular

    (1 01) (1 01)0.

    Usando la propiedad distributiva, obtenemos otra expresion para este len-guaje: (1 01)( 0).

    Ejemplo Sea = {a, b, c}. Encontrar una expresion regular que repre-

    sente el lenguaje de todas las cadenas que no contienen la ca-dena bc.

  • 22 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

    Solucion. Una b puede estar seguida solamente de otra b o de una a, mientrasque las aes y las ces pueden estar seguidas de cualquier smbolo. Teniendoen cuenta todas las restricciones y posibilidades, arribamos a la siguienteexpresion regular:

    (a c b+a)b.

    La condicion de que no aparezca la cadena bc significa que una c puedeestar precedida solamente de una a y de otra c. Siguiendo esta descripcion,obtenemos otra expresion regular para el lenguaje en cuestion:

    c(b ac).

    Ejercicios de la seccion 1.14

    Encontrar expresiones regulares para los lenguajes descritos a conti-nuacion:

    (i) = {0, 1, 2}. Lenguaje de todas las cadenas que comienzan con2 y terminan con 1.

    (ii) = {a, b, c}. Lenguaje de todas las cadenas que tienen un nume-ro par de smbolos.

    (iii) = {a, b}. Lenguaje de todas las cadenas que tienen un numeroimpar de smbolos.

    (iv) = {a, b, c}. Lenguaje de todas las cadenas que tienen un nume-ro impar de smbolos.

    (v) = {a, b}. Lenguaje de todas las cadenas que tienen un numeroimpar de aes.

    (vi) = {a, b}. Lenguaje de todas las cadenas que tienen la cadenaab un numero par de veces.

    (vii) = {a, b}. Lenguaje de todas las cadenas que tienen un numeropar de aes o un numero impar de bes.

    (viii) = {0, 1, 2}. Lenguaje de todas las cadenas que no contienendos unos consecutivos.

    Encontrar expresiones regulares para los siguientes lenguajes definidossobre el alfabeto = {0, 1}:

    (i) Lenguaje de todas las cadenas que tienen por lo menos un 0 ypor lo menos un 1.

  • 1.14. EXPRESIONES REGULARES 23

    (ii) Lenguaje de todas las cadenas que tienen a lo sumo dos cerosconsecutivos.

    (iii) Lenguaje de todas las cadenas cuyo quinto smbolo, de izquierdaa derecha, es un 1.

    (iv) Lenguaje de todas las cadenas de longitud par 2 formadaspor ceros y unos alternados.

    (v) Lenguaje de todas las cadenas cuya longitud es 4.

    (vi) Lenguaje de todas las cadenas de longitud impar que tienenunos unicamente en las posiciones impares.

    (vii) Lenguaje de todas las cadenas cuya longitud es un multiplo detres.

    (viii) Lenguaje de todas las cadenas que no contienen tres ceros con-secutivos.

    (ix) Lenguaje de todas las cadenas que no contienen cuatro cerosconsecutivos.

    !(x) Lenguaje de todas las cadenas que no contienen la subcadena101.

    No todos los lenguajes sobre un alfabeto dado son regulares.Mas adelante se mostrara que el lenguaje

    L = {, ab, aabb, aaabbb, . . . } = {anbn : n 0}

    sobre = {a, b} no se puede representar por medio de una expre-sion regular, y por lo tanto, no es un lenguaje regular.

  • Captulo2Automatas finitos

    Los automatas son maquinas abstractas con capacidad de computacion.Historicamente, su estudio se origino con la llamada maquina de Turing,que fue propuesta en 1936 por el matematico britanico Alan Turing (19121954) con el proposito de precisar las caractersticas y las limitaciones deun dispositivo de computacion mecanica. En los anos 40 y 50 del siglo XXse adelantaron investigaciones sobre maquinas de Turing con capacidadrestringida, lo que dio lugar a la nocion de automata finito.

    2.1. Automatas finitos deterministas (AFD)

    Los automatas finitos son maquinas abstractas que procesan cadenas deentrada, las cuales son aceptadas o rechazadas:

    Automata

    M

    Cadena de

    entrada u

    si (u es aceptada)

    no (u es rechazada)

    El automata actua leyendo los smbolos escritos sobre una cinta semi-infinita, dividida en celdas o casillas, sobre la cual se escribe una cadenade entrada u, un smbolo por casilla. El automata posee una unidad decontrol (tambien llamada cabeza lectora, control finito o unidad de

    25

  • 26 CAPITULO 2. AUTOMATAS FINITOS

    memoria) que tiene un numero finito de configuraciones internas, llama-das estados del automata. Entre los estados de un automata se destacanel estado inicial y los estados finales o estados de aceptacion.

    Formalmente, un automata finito M esta definido por cinco parametroso componentes, M = (, Q, q0, F, ), a saber:

    1. Un alfabeto , llamado alfabeto de cinta. Todas las cadenas que pro-cesa M pertenecen a .

    2. Q = {q0, q1, . . . , qn}, conjunto de estados internos del automata.

    3. q0 Q, estado inicial.

    4. F Q, conjunto de estados finales o de aceptacion. F = .

    5. La funcion de transicion del automata

    : Q Q(q, s) / (q, s)

    Una cadena de entrada u se coloca en la cinta de tal manera que el primersmbolo de u ocupa la primera casilla de la cinta. La unidad de controlesta inicialmente en el estado q0 escaneando la primera casilla:

    u Unidad

    de control"

    a a b

    q

    La funcion de transicion indica el estado al cual pasa el control finito,dependiendo del smbolo escaneado y de su estado actual. As, (q, s) = q

    significa que, en presencia del smbolo s, la unidad de control pasa delestado q al estado q y se desplaza hacia la derecha. Esta accion constituyeun paso computacional:

    s s

    q

    q

    (q, s) = q

  • 2.1. AUTOMATAS FINITOS DETERMINISTAS (AFD) 27

    Puesto que la funcion esta definida para toda combinacion estado-smbolo, una cadena de entrada cualquiera es procesada completamente,hasta que la unidad de control encuentra la primera casilla vaca.

    La unidad de control de un automata siempre se desplaza hacia la dere-cha; no puede retornar ni escribir smbolos sobre la cinta.

    Ejemplo Consideremos el automata definido por los siguientes cinco

    componentes: = {a, b}.Q = {q0, q1, q2}.q0 : estado inicial.F = {q0, q2}, estados de aceptacion.Funcion de transicion :

    a b

    q0 q0 q1

    q1 q1 q2

    q2 q1 q1

    (q0, a) = q0 (q0, b) = q1

    (q1, a) = q1 (q1, b) = q2

    (q2, a) = q1 (q2, b) = q1.

    Vamos a ilustrar el procesamiento de dos cadenas de entrada.

    1. u = aabab.

    a a b a b

    q0 q0 q0 q1 q1 q2

    u

    Como q2 es un estado de aceptacion, la cadena de entrada u es aceptada.

    2. v = aababa.

    a a b a b a

    q0 q0 q0 q1 q1 q2 q1

    v

    Puesto que q1 no es un estado de aceptacion, la entrada v es rechazada.

  • 28 CAPITULO 2. AUTOMATAS FINITOS

    Caso especial: la cadena es la cadena de entrada.

    q0

    Como q0 es un estado de aceptacion, la cadena es aceptada.

    En general se tiene lo siguiente: la cadena vaca es aceptada por unautomataM si y solamente si el estado inicial q0 deM tambien es un estadode aceptacion.

    Los automatas finitos descritos anteriormente se denominan automatasfinitos deterministas (AFD) ya que para cada estado q y para cadasmbolo a , la funcion de transicion (q, a) siempre esta definida. Esdecir, la funcion de transicion determina completa y unvocamente laaccion que el automata realiza cuando la unidad de control se encuentra enun estado q leyendo un smbolo s sobre la cinta.

    Dado un automata M , el lenguaje aceptado o reconocido por M sedenota L(M) y se define por

    L(M) := {u :M termina el procesamiento de la cadenade entrada u en un estado q F}.

    2.2. Diagrama de transiciones de un automata

    Un automata finito se puede representar por medio de un grafo dirigido yetiquetado. Recuerdese que un grafo es un conjunto de vertices o nodosunidos por arcos o conectores; si los arcos tienen tanto direccion comoetiquetas, el grafo se denomina grafo dirigido y etiquetado o digrafoetiquetado.

    El digrafo etiquetado de un automata se obtiene siguiendo las siguientesconvenciones:

    Los vertices o nodos son los estados del automata.

    El estado q se representa por: q

    El estado inicial q0 se representa por: >q0

    Un estado final q se representa por: q

  • 2.3. DISENO DE AUTOMATAS 29

    La transicion = (q, s) = p se representa en la forma

    q ps

    Dicho grafo se denomina diagrama de transiciones del automata yes muy util para hacer el seguimiento completo del procesamiento de unacadena de entrada. Una cadena u es aceptada si existe una trayectoriaetiquetada con los smbolos de u, que comienza en el estado q0 y terminaen un estado de aceptacion.

    Ejemplo Diagrama de transiciones del automata presentado en la sec-

    cion anterior.

    = {a, b}.Q = {q0, q1, q2}.q0 : estado inicial.F = {q0, q2}, estados de aceptacion.Funcion de transicion :

    a b

    q0 q0 q1

    q1 q1 q2

    q2 q1 q1

    (q0, a) = q0 (q0, b) = q1

    (q1, a) = q1 (q1, b) = q2

    (q2, a) = q1 (q2, b) = q1

    > q0 q1

    q2

    aa b

    b

    a, b

    Examinando el diagrama de transiciones podemos observar facilmente quela entrada aaababbb es aceptada mientras que aabaaba es rechazada.

    2.3. Diseno de automatas

    Para automatas deterministas se adopta la siguiente convencion adicionalcon respecto a los diagramas de transiciones: se supone que los arcos no

  • 30 CAPITULO 2. AUTOMATAS FINITOS

    dibujadas explcitamente conducen a un estado limbo de no-aceptacion.Es decir, en el diagrama de transiciones se indican unicamente los arcos queintervengan en trayectorias de aceptacion. Esto permite simplificar consi-derablemente los diagramas.

    En este captulo abordaremos dos tipos de problemas:

    1. Dado un lenguaje regular L disenar un automata finitoM que acepteo reconozca a L, es decir, tal que L(M) = L.

    2. Dado un automata M determinar el lenguaje aceptado por M .

    Mas adelante se demostrara, en toda su generalidad, que estos problemassiempre tienen solucion. Consideremos inicialmente problemas del primertipo.

    Ejemplo L = a = {, a, a2, a3, . . .}. AFD M tal que L(M) = L:

    > q0 q1

    a a

    b

    b

    Version simplificada: > q0

    a

    Ejemplo L = a+ = {a, a2, a3, . . .}. AFD M tal que L(M) = L:

    > q0 q1

    q2

    a

    a

    b

    a

    b b

    Version simplificada: > q0 q1

    aa

    Ejemplo = {a, b}. L = lenguaje de las cadenas que contienen exacta-

    mente dos aes = babab. AFD M tal que L(M) = L:

  • 2.3. DISENO DE AUTOMATAS 31

    > q0 q1 q2

    b b ba a

    Ejemplo = {0, 1}. L = lenguaje de las cadenas sobre que tienen un

    numero par de smbolos (cadenas de longitud par). AFD Mtal que L(M) = L:

    > q0 q1

    0, 1

    0, 1

    Ejemplo = {0, 1}. L = lenguaje de las cadenas sobre que contienen

    un numero par de ceros. AFD M tal que L(M) = L:

    > q0 q1

    1 10

    0

    Ejemplo = {a, b}. L = lenguaje de las cadenas sobre que terminan

    en b. AFD M tal que L(M) = L:

    > q0 q1

    a bb

    a

    Ejercicios de la seccion 2.3

    Disenar automatas finitos deterministas que acepten los siguienteslenguajes:

    (i) = {0, 1}. L = lenguaje de las cadenas sobre de longitudimpar.

    (ii) = {0, 1}. L = lenguaje de las cadenas sobre que contienenun numero impar de unos.

  • 32 CAPITULO 2. AUTOMATAS FINITOS

    (iii) = {a, b}. L = ab+.

    (iv) = {a, b}. L = ab aba.

    (v) = {0, 1}. L = (0 10).

    (vi) = {0, 1}. L = (01 10).

    (vii) = {0, 1}. Lenguaje de todas las cadenas que no contienen dosunos consecutivos.

    (viii) = {a, b}. L = {a2ib3j : i, j 0}.

    (ix) = {a, b}. L = lenguaje de las cadenas sobre que contienenun numero par de aes y un numero par de bes. Ayuda: utilizar4 estados.

    (x) = {a, b}. Para cada combinacion de las condiciones par eimpar y de las conectivas o e y, disenar un AFD queacepte el lenguaje L definido por

    L = lenguaje de las cadenas con un numero par/impar de aes

    y/o un numero par/impar de bes.

    Ayuda: utilizar el automata de 4 estados disenado en el ejerci-cio anterior, modificando adecuadamente el conjunto de estadosfinales.

    Determinar los lenguajes aceptados por los siguientes AFD. Describirlos lenguajes ya sea por medio de una propiedad caracterstica o deuna expresion regular.

    (i)

    > q0 q1 q2 q3 q4

    0 0 0 0

    1 1 1 1

    0

    1

    (ii)

    > q0 q1 q2 q31 0

    1

    0

  • 2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN) 33

    (iii)

    > q0

    q1

    q2 q31 1

    0 1

    1

    0

    (iv)

    > q0 q1 q2b

    a

    b

    b a

    2.4. Automatas finitos no-deterministas (AFN)

    Los automatas finitos no-deterministas (AFN) se asemejan a los AFD,excepto por el hecho de que para cada estado q Q y cada a , latransicion (q, a) puede consistir en mas de un estado o puede no estardefinida. Concretamente, un AFN esta definido por M = (, Q, q0, F,)donde:

    1. es el alfabeto de cinta.

    2. Q es un conjunto (finito) de estados internos.

    3. q0 Q es el estado inicial.

    4. = F Q es el conjunto de estados finales o estados de aceptacion.

    5. : Q (Q)

    (q, s) / (q, s) = {qi1 , qi2 , . . . , qik}

    donde (Q) es el conjunto de subconjunto de Q.

  • 34 CAPITULO 2. AUTOMATAS FINITOS

    El significado de (q, s) = {qi1 , qi2 , . . . , qik} es el siguiente: estando enel estado q, en presencia del smbolo s, la unidad de control puede pasar(aleatoriamente) a uno cualquiera de los estados qi1 , qi2 ,. . . , qik , despues delo cual se desplaza a la derecha.

    Puede suceder que (q, s) = , lo cual significa que, si durante el proce-samiento de una cadena de entrada u, M ingresa al estado q leyendo sobrela cinta el smbolo s, el computo se aborta.

    Computo abortado:

    s

    q

    u

    La nocion de diagrama de transiciones para un AFN se define de maneraanaloga al caso AFD, pero puede suceder que desde un mismo nodo (estado)salgan dos o mas arcos con la misma etiqueta:

    q

    q

    q

    q

    s

    s

    s

    Un AFN M puede procesar una cadena de entrada u de varias ma-neras. Sobre el diagrama de transiciones del automata, esto significa quepueden existir varias trayectorias, desde el estado q0, etiquetadas con lossmbolos de u.

    La siguiente es la nocion de aceptacion para automatas no-deterministas:

    L(M) = lenguaje aceptado o reconocido por M= {u : existe por lo menos un computo completo

    de u que termina en un estado q F}

  • 2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN) 35

    Es decir, para que una cadena u sea aceptada, debe existir algun compu-to en el que u sea procesada completamente y que finalice estando M enun estado de aceptacion.

    Ejemplo Sea M el siguiente AFN:

    > q0 q1 q2

    q3

    a b

    ba

    a a b

    b

    a b

    q0 {q0, q1, q3}

    q1 {q1} {q2}

    q2 {q1, q2}

    q3 {q3}

    Para la cadena de entrada u = abb, existen computos que conducen al recha-zo, computos abortados y computos que terminan en estados de aceptacion.Segun la definicion de lenguaje aceptado, u L(M).

    Computo de rechazo:

    Computo de aceptacion:

    a

    a

    b

    b

    b

    b

    q0 q3 q3 q3

    q0 q1 q2 q2

    u

    u

    Otro computo de aceptacion:

    a b b

    q0 q1 q2 q1

    u

  • 36 CAPITULO 2. AUTOMATAS FINITOS

    Computo abortado:

    a b b

    q0 q0

    u

    Ejemplo En el ultimo ejemplo de la seccion 2.3 se diseno el siguiente

    AFD que acepta el lenguaje de las cadenas sobre = {a, b}que terminan en b:

    > q0 q1

    a bb

    a

    Un AFN que acepta el mismo lenguaje y que es, tal vez, mas facil deconcebir, es el siguiente:

    > q0 q1

    ab

    b

    Este automata se asemeja a la expresion regular (a b)b.

    Ejemplo Considerese el lenguaje L = ab

    a+ sobre el alfabeto ={a, b}. El siguiente AFN M satisface L(M) = L.

    > q0 q1

    q2

    b

    a

    a

    a

    Ejemplo = {0, 1}, L = (01 010). El siguiente AFN acepta a L.

  • 2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN) 37

    > q0 q1

    q2 q3

    0

    1

    1

    00

    Otro AFN que acepta el mismo lenguaje y que tiene solo tres estados es elsiguiente:

    > q0 q1 q2

    0

    1

    1

    0

    Ejercicios de la seccion 2.4

    Disenar automatas AFD o AFN que acepten los siguientes lenguajes:

    = {a, b}. L = ab+a.

    = {a, b}. L = a(a ab).

    = {a, b, c}. L = abc.

    = {0, 1, 2}. L = lenguaje de las cadenas sobre que comienzancon 0 y terminan con 2.

    = {0, 1}. Lenguaje de las cadenas de longitud par 2 formadaspor ceros y unos alternados.

    = {0, 1}. Lenguaje de las cadenas que tienen a lo sumo dos cerosconsecutivos.

    = {0, 1}. Lenguaje de las cadenas de longitud impar que tienenunos unicamente en las posiciones impares.

    = {a, b, c}. L = lenguaje de las cadenas sobre que contienen lacadena bc.

    = {a, b, c}. L = lenguaje de las cadenas sobre que no contienenla cadena bc. En el ultimo ejemplo de la seccion 1.14 se presentarondos expresiones regulares para L. Nota: se puede construir un AFDcon solo dos estados para aceptar este lenguaje!

  • 38 CAPITULO 2. AUTOMATAS FINITOS

    2.5. Equivalencia computacional entre los AFD ylos AFN

    En esta seccion se mostrara que los modelos AFD y AFN son computacio-nalmente equivalentes. En primer lugar, es facil ver que un AFD M =(, Q, q0, F, ) puede ser considerado como un AFN M = (, Q, q0, F,)definiendo (q, a) = {(q, a)} para cada q Q y cada a . Para laafirmacion recproca tenemos el siguiente teorema.

    2.5.1 Teorema. Dado un AFN M = (, Q, q0, F,) se puede construirun AFD M equivalente a M , es decir, tal que L(M) = L(M ).

    Este teorema, cuya demostracion se dara en detalle mas adelante, es-tablece que el no-determinismo se puede eliminar. Dicho de otra manera,los automatas deterministas y los no-deterministas aceptan los mismos len-guajes. La idea de la demostracion consiste en considerar cada conjunto deestados {p1, . . . , pj}, que aparezca en la tabla de la funcion del automatano-determinista, como un unico estado del nuevo automata determinista.La tabla de se completa hasta que no aparezcan nuevas combinaciones deestados. Los estados de aceptacion del nuevo automata son los conjuntosde estados en los que aparece por lo menos un estado de aceptacion delautomata original. El siguiente ejemplo ilustra el procedimiento.

    Ejemplo Consideremos el AFN M , presentado en la seccion 2.4, que

    acepta el lenguaje L(M) = ab a+ sobre = {a, b}:

    > q0 q1

    q2

    b

    a

    a

    a

    a b

    q0 {q1, q2}

    q1 {q1}

    q2 {q2}

    El nuevo AFD M construido a partir de M tiene un estado mas, {q1, q2},y su funcion de transicion tiene el siguiente aspecto:

  • 2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN 39

    a b

    q0 {q1, q2}

    q1 {q1}

    q2 {q2}

    {q1, q2} {q2} {q1}

    El diagrama de transiciones de este automata es:

    > {q0} {q1, q2} {q2}

    {q1}

    a

    a a

    b

    b

    Los estados de aceptacion son aquellos en los que aparezcan q1 o q2, queson los estados de aceptacion del automata original.

    Para mayor simplicidad, podemos cambiar los nombres de los estadosdel nuevo automata:

    > p0 p1 p2

    p3

    aa a

    b

    b

    Ejemplo El siguiente AFN M , presentado en la seccion 2.4, acepta el

    lenguaje L = (01 010) sobre = {0, 1}.

  • 40 CAPITULO 2. AUTOMATAS FINITOS

    > q0 q1 q2

    0

    1

    1

    0

    La tabla de la funcion de transicion de M se extiende para completar lafuncion del nuevo AFN:

    0 1

    q0 {q1}

    q1 {q0, q2}

    q2 {q0}

    {q0, q2} {q0, q1}

    {q0, q1} {q1} {q0, q2}

    El diagrama de transiciones del nuevo automata es:

    > {q0} {q1} {q2}

    {q0, q2} {q0, q1}

    0

    0

    1 0

    0

    1

    Los estados de aceptacion son aquellos en los que aparezca q0 ya que q0 esel unico estado de aceptacion del automata original.

    Puesto que el nuevo estado {q2} no interviene en la aceptacion de cade-nas, el automata se puede simplificar en la siguiente forma:

  • 2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN 41

    > p0 p1

    p2 p3

    0

    1 0

    0

    1

    Para la demostracion del Teorema 2.5.1, conviene extender la definicion dela funcion de transicion, tanto de los automatas deterministas como de losno-deterministas.

    2.5.2 Definicion. Sea M = (, Q, q0, F, ) un AFD. La funcion de transi-cion : Q Q se extiende a una funcion : Q Q por mediode la siguiente definicion recursiva:

    (q,) = q, q Q,

    (q, a) = (q, a), q Q, a ,

    (q, wa) = ((q, w), a), q Q, a , w .

    Segun esta definicion, para una cadena de entrada w , (q0, w) es elestado en el que el automata termina el procesamiento de w. Por lo tanto,podemos describir el lenguaje aceptado por M de la siguiente forma:

    L(M) = {w : (q0, w) F}.

    Notacion. Sin peligro de ambiguedad, la funcion extendida (q, w) se no-tara simplemente (q, w).

    2.5.3 Definicion. Sea M = (, Q, q0, F,) un AFN. La funcion de tran-sicion : Q (Q) se extiende inicialmente a conjuntos de estados.Para a y S F se define

    (S, a) :=qS

    (q, a).

  • 42 CAPITULO 2. AUTOMATAS FINITOS

    Luego se extiende a una funcion : Q (Q), de manerasimilar a como se hace para los AFD. Recursivamente,(q,) = {q}, q Q,

    (q, a) = (q, a), q Q, a ,

    (q, wa) = ((q, w), a) =

    p(q,w)

    (p, a), q Q, a , w .

    Segun esta definicion, para una cadena de entrada w , (q0, w) es elconjunto de los posibles estados en los que terminan los computos completosde w. Si el computo se aborta durante el procesamiento de w, se tendra(q0, w) = . Usando la funcion extendida , el lenguaje aceptado por Mse puede describir de la siguiente forma:

    L(M) = {w : (q0, w) contiene un estado de aceptacion}.

    Notacion. Sin peligro de ambiguedad, la funcion extendida (q, w) senotara simplemente (q, w).

    Demostracion del Teorema 2.5.1:

    Dado el AFN M = (, Q, q0, F,), construimos el AFD M as:

    M = (,(Q), {q0}, F , )

    donde : (Q) (Q)

    (S, a) / (S, a) := (S, a).

    F = {S (Q) : S F = }.

    Se demostrara que L(M) = L(M ) probando que, para toda cadena w ,({q0}, w) = (q0, w). Esta igualdad se demostrara por induccion sobre w.Para w = , claramente se tiene ({q0},) = (q0,) = {q0}. Para w = a,a , se tiene

    ({q0}, a) = ({q0}, a) = (q0, a).

    Supongase (hipotesis de induccion) que ({q0}, w) = (q0, w), y que a .

    ({q0}, wa) = (({q0}, w), a) (definicion de la extension de )

    = (({q0}, w), a) (hipotesis de induccion)

    = (({q0}, w), a) (definicion de )

    = ({q0}, wa) (definicion de la extension de )

    = (q0, wa) (definicion de la extension de ).

  • 2.6. AUTOMATAS CON TRANSICIONES (AFN-) 43

    Ejercicios de la seccion 2.5

    Disenar AFD equivalentes a los siguientes AFN:

    > q0 q1

    q2 q3

    b

    a

    a

    bb

    > q0 q1 q2

    q3

    0 1

    10

    0 0 1

    1

    2.6. Automatas con transiciones (AFN-)

    Un automata finito con transiciones (AFN-) es un automata no-deterministaM = (, Q, q0, F,) en el que la funcion de transicion esta de-finida como:

    : Q ( {}) (Q).La transicion (q,) = {pi1 , . . . , pin}, llamada transicion , transicionnula o transicion espontanea, tiene el siguiente significado computacio-nal: estando en el estado q, el automata puede cambiar a uno cualquiera delos estados pi1 , . . . , pin , independientemente del smbolo ledo y sin moverla unidad de control. Dicho de otra manera, las transiciones permitenal automata cambiar internamente de estado sin procesar o consumir elsmbolo ledo sobre la cinta.

    En el diagrama del automata, las transiciones dan lugar a arcos conetiquetas . Una cadena de entrada w es aceptada por un AFN- si exis-te por lo menos una trayectoria, desde el estado q0, cuyas etiquetas sonexactamente los smbolos de w, intercalados con cero, uno o mas s.

  • 44 CAPITULO 2. AUTOMATAS FINITOS

    En los automatas AFN-, al igual que en los AFN, puede haber multiplescomputos para una misma cadena de entrada, as como computos aborta-dos.

    Ejemplo M :

    > q0

    q3

    q1

    q4

    q2

    a

    b

    b

    a

    a

    b

    Ejemplos de cadenas aceptadas por M :

    u = aabv = abaaw = abbaa

    Computos de aceptacion de u = aab y v = abaa:

    a a

    a a a

    b

    b

    q0 q1 q1 q2

    q1

    q0 q3 q3 q4 q4

    q4

  • 2.6. AUTOMATAS CON TRANSICIONES (AFN-) 45

    Los AFN- permiten aun mas libertad en el diseno de automatas, espe-cialmente cuando hay numerosas concatenaciones.

    Ejemplo = {a, b, c}. L = abc. AFD que acepta a L:

    > q0 q1 q2

    b c

    c

    a b c

    AFN- que acepta a L:

    >q0 q1 q2

    a b c

    Este automata se asemeja a la expresion regular abc: las concatenacioneshan sido reemplazadas por transiciones .

    Ejemplo = {a, b}. L = lenguaje de todas las cadenas sobre que

    tienen un numero par de aes o un numero par de bes.

    AFD que acepta el lenguaje de las cadenas con un numero par de aes:

    >q0 q1

    a

    a

    b b

    AFD que acepta el lenguaje de las cadenas con un numero par de bes:

    >q0 q1

    b

    b

    a a

    AFN- que acepta el lenguaje de las cadenas con un numero par de aes oun numero par de bes:

  • 46 CAPITULO 2. AUTOMATAS FINITOS

    >q0

    q3

    q1

    q4

    q2

    a

    a

    b

    ba

    b

    a

    b

    A diferencia de los AFD y los AFN, en los AFN- pueden existir computosinfinitos, es decir computos que nunca terminan. Esto puede suceder siel automata ingresa a un estado desde el cual haya varias transiciones encadenadas que retornen al mismo estado, como por ejemplo:

    Ejercicios de la seccion 2.6

    Disenar AFN- que acepten los siguientes lenguajes:

    (ab b)ab, sobre = {a, b}.

    a(a c)b+, sobre = {a, b, c}.

    ab ba b(ab ba), sobre = {a, b}.

    abbab(ab ba), sobre = {a, b}.

    (0 010)0(01 10), sobre = {0, 1}.

    0+1(010)(01 10)1+, sobre = {0, 1}.

    = {a, b}. L = lenguaje de todas las cadenas sobre que tienen unnumero par de aes y un numero par de bes.

  • 2.7. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFN- Y LOS AFN 47

    2.7. Equivalencia computacional entre los AFN-y los AFN

    En esta seccion se mostrara que el modelo AFN- es computacionalmenteequivalente al modelo AFN. O dicho mas graficamente, las transiciones se pueden eliminar, anadiendo transiciones que las simulen, sin alterar ellenguaje aceptado.

    En primer lugar, un AFN M = (, Q, q0, F,) puede ser consideradocomo un AFN- en el que, simplemente, hay cero transiciones . Para laafirmacion recproca tenemos el siguiente teorema.

    2.7.1 Teorema. Dado un AFN- M = (, Q, q0, F,), se puede construirun AFN M equivalente a M , es decir, tal que L(M) = L(M ).

    Bosquejo de la demostracion. Para construirM a partir deM se requierela nocion de -clausura de un estado. Para un estado q Q, la -clausura de q, notada [q], es el conjunto de estados de M a los que sepuede llegar desde q por 0, 1 o mas transiciones . Notese que, en general,[q] = (q,). Por definicion, q [q]. La -clausura de un conjunto deestados {q1, . . . , qk} se define por:

    [{q1, . . . , qk}] := [q1] [qk].

    Ademas, [] := . Sea M = (, Q, q0, F ,) donde

    : Q (Q)(q, a) / (q, a) :=

    [([q], a)

    ].

    M simula as las transiciones deM teniendo en cuenta todas las posiblestrayectorias. F se define como:

    F = {q Q : [q] contiene al menos un estado de aceptacion}.

    Es decir, los estados de aceptacion deM incluyen los estados de aceptacionde M y aquellos estados desde los cuales se puede llegar a un estado deaceptacion por medio de una o mas transiciones .

    Como se puede apreciar, la construccion de M a partir de M es pura-mente algortmica.

    Ejemplo Vamos a ilustrar el anterior algoritmo con el AFN- M , pre-

    sentado en el segundo ejemplo de la seccion 2.6.

  • 48 CAPITULO 2. AUTOMATAS FINITOS

    >q0 q1 q2

    a b c

    L(M) = abc. Las -clausuras de los estados vienen dadas por:

    [q0] = {q0, q1, q2}.[q1] = {q1, q2}.[q2] = {q2}.

    La funcion de transicion : Q {a, b, c} ({q0, q1, q2}) es:

    (q0, a) = [([q0], a)] = [({q0, q1, q2}, a)] = [{q0}] = {q0, q1, q2}.(q0, b) = [([q0], b)] = [({q0, q1, q2}, b)] = [{q1}] = {q1, q2}.(q0, c) = [([q0], c)] = [({q0, q1, q2}, c)] = [{q2}] = {q2}.(q1, a) = [([q1], a)] = [({q1, q2}, a)] = [] = .(q1, b) = [([q1], b)] = [({q1, q2}, b)] = [{q1}] = {q1, q2}.(q1, c) = [([q1], c)] = [({q1, q2}, c)] = [{q2}] = {q2}.(q2, a) = [([q2], a)] = [({q2}, a)] = [] = .(q2, b) = [([q2], b)] = [({q2}, b)] = [] = .(q2, c) = [([q2], c)] = [({q2}, c)] = [{q2}] = {q2}.

    El automata M as obtenido es el siguiente:

    >q0 q1 q2

    a, b b, c

    a, b, c

    a b c

    Ejercicios de la seccion 2.7

    Construir AFN equivalentes a los siguientes AFN-:

    > q0 q1

    q2 q3

    b

    a,b

  • 2.8. TEOREMA DE KLEENE. PARTE I 49

    > q0 q1 q2

    q3

    b

    a a b

    b

    2.8. Teorema de Kleene. Parte I

    En las secciones anteriores se ha mostrado la equivalencia computacionalde los modelos AFD, AFN y AFN-, lo cual puede ser descrito en la forma:

    AFD AFN AFN-

    Esto quiere decir que para cada automata de uno de estos tres modelos sepueden construir automatas equivalentes en los otros modelos. Por lo tanto,los modelos AFD, AFN y AFN- aceptan exactamente los mismos lengua-jes. El Teorema de Kleene establece que tales lenguajes son precisamentelos lenguajes regulares.

    2.8.1. Teorema de Kleene. Un lenguaje es regular si y solo si es aceptadopor un automata finito (AFD o AFN o AFN-).

    Para demostrar el teorema consideraremos las dos direcciones por separado.Primero demostraremos que para un lenguaje regular L dado existe unAFN- tal que L(M) = L. En la seccion 2.11 demostraremos que, a partirde un AFDM , se puede encontrar una expresion regular R tal que L(M) =R. En ambas direcciones las demostraciones son constructivas.

    Las construcciones de este captulo se pueden presentar as:

    AFD

    Lenguajes regulares

    AFN

    AFN-

    T. de Kleene II T. de Kleene I

  • 50 CAPITULO 2. AUTOMATAS FINITOS

    Parte I. Dada una expresion regular R sobre un alfabeto , se puedeconstruir un AFN-M tal que el lenguaje aceptado porM sea exactamenteel lenguaje representado por R.

    Expresion regular RProcedimientoalgortmico

    MAFN- tal que L(M) = R.

    Demostracion. Puesto que la definicion de las expresiones regulares se hacerecursivamente, la demostracion se lleva a cabo razonando por induccion so-bre R. Para las expresiones regulares basicas, podemos construir facilmenteautomatas que acepten los lenguajes representados. As, el automata

    > q0 q1

    acepta el lenguaje , es decir, el lenguaje representado por la expresionregular R = .

    El automata

    > q0

    acepta el lenguaje {}, es decir, el lenguaje representado por la expresionregular R = .

    El automata

    > q0 q1a

    acepta el lenguaje {a}, a , es decir, el lenguaje representado por laexpresion regular R = a.

    Paso inductivo: supongase que para las expresiones regulares R y S exis-ten AFN-M1 yM2 tales que L(M1) = R y L(M2) = S. Esquematicamentevamos a presentar los automatas M1 y M2 en la siguiente forma:

    >

    M1

    ... >

    M2

    ...

  • 2.8. TEOREMA DE KLEENE. PARTE I 51

    Los estados finales o de aceptacion se dibujan a la derecha, pero cabe ad-vertir que el estado inicial puede ser tambien un estado de aceptacion.Obviando ese detalle, podemos ahora obtener AFN- que acepten los len-guajes R S, RS y R.

    Automata que acepta R S. Los automatas M1 y M2 se conectanen paralelo y los estados finales del nuevo automata son los estadosfinales de M1 junto con los de M2:

    >

    M1

    M2

    ...

    ...

    Automata que acepta RS. Los automatas M1 y M2 se conectan enserie y los estados finales del nuevo automata son unicamente losestados finales de M2:

    >

    M1 M2

    ......

    ...

    Automata que acepta R. Los estados finales del nuevo automata sonlos estados finales de M1 junto con el estado inicial.

  • 52 CAPITULO 2. AUTOMATAS FINITOS

    >

    M1

    ...

    Esto concluye la demostracion de la parte I del Teorema de Kleene. En la si-guiente seccion se presentan ejemplos concretos del procedimiento utilizadoen la demostracion.

    2.9. Ejemplos de la parte I del Teorema de Kleene

    De acuerdo con las construcciones presentadas en la demostracion de laparte I del Teorema de Kleene, un AFN- que acepta el lenguaje a es:

    >a

    Para simplificar las proximas construcciones utilizaremos, en su lugar, elbucle de un estado:

    >

    a

    Ejemplo Vamos a utilizar el procedimiento del teorema para construir

    un AFN- que acepte el lenguaje a(abba) a(ba) sobreel alfabeto {a, b}.

    Automata que acepta ab:

    >a b

  • 2.9. EJEMPLOS DE LA PARTE I DEL TEOREMA DE KLEENE 53

    Automata que acepta ba:

    >b a

    Automata que acepta ab ba:

    >

    a b

    b a

    Automata que acepta (ab ba):

    >

    a b

    b a

  • 54 CAPITULO 2. AUTOMATAS FINITOS

    Automata que acepta a(ab ba):

    >

    a b

    b a

    a

    Automata que acepta b a:

    >

    b

    a

    Automata que acepta a(b a):

    >a

    b

    a

  • 2.10. LEMA DE ARDEN 55

    Automata que acepta a(ab ba) a(b a):

    >

    a

    a b

    b a

    b

    a

    a

    Ejercicios de la seccion 2.9

    Disenar automatas AFN- que acepten los siguientes lenguajes sobre elalfabeto = {a, b, c}:

    a(b ab aba)c (a b)(a ac).

    ca(a ba)(abc) c(a cbc).

    (ac) a(a aba) (abc)(cba) (c ab ba ca)(ca cb).

    2.10. Lema de Arden

    Vamos a utilizar el siguiente resultado, conocido como lema de Arden,para demostrar la segunda parte del Teorema de Kleene.

    2.10.1. Lema de Arden. Si A y B son lenguajes sobre un alfabeto y A, entonces la ecuacion X = AX B tiene una unica solucion dadapor X = AB.

  • 56 CAPITULO 2. AUTOMATAS FINITOS

    Demostracion. Si X es una solucion de X = AX B, entonces B AX B = X. Tambien se tiene AX X; a partir de esta contenencia yusando induccion sobre n, se puede demostrar que AnX X para todon N. Por lo tanto

    AnB AnX X

    para todo n N. As que

    AB =

    (n0

    An)B =

    n0

    AnB X.

    Esto muestra que toda solucion de X = AX B contiene a AB y es facilverificar que, de hecho, AB es una solucion:

    A(AB) B = A+B B = (A+ )B = AB.

    Para la unicidad, demostraremos que si ABC, con C AB = , es unasolucion de la ecuacion, entonces C = .

    AB C = A(AB C) B

    = A+B AC B

    = (A+ )B AC

    = AB AC.

    Intersectando con C ambos lados de la anterior igualdad, se tiene:

    (AB C) C = (AB C) (AC C),

    C = AC C.

    Por lo tanto, C AC. Si se tuviera C = , existira una cadena u C delongitud mnima. Entonces u = vw, con v A, w C. Como A, v = ;por consiguiente |w| < |u|. Esta contradiccion muestra que necesariamenteC = , tal como se quera.

    Ejemplo La ecuacion X = aX bab tiene solucion unica X = abab.

    Ejemplo La ecuacion X = a

    2X b+X ab se puede escribir en la formaX = (a2 b+)X ab. Por el lema de Arden la ecuacion tiene

    solucion unica X = (a2 b+)ab.

    Ejemplo La ecuacion X = ab

    2X aX ab ba se puede escribir comoX = (ab2 a)X (ab ba). Por lema de Arden la ecuacion

    tiene solucion unica X = (ab2 a)(ab ba).

  • 2.11. TEOREMA DE KLEENE. PARTE II 57

    Ejercicios de la seccion 2.10

    Encontrar las soluciones (unicas) de las siguientes ecuaciones:

    (i) X = aX bX.

    (ii) X = aX bab bX a.

    ! Demostrar de si A, entonces Y es una solucion de la ecuacionX = AX B si y solo si Y = A(B D) para algun D .

    2.11. Teorema de Kleene. Parte II

    En esta seccion demostraremos que para todo AFN M = (, Q, q0, F,)existe una expresion regular R tal que L(M) = R.

    Un automata tiene un unico estado inicial pero cambiando dicho es-tado surgen nuevos automatas. Para cada qi Q, sea Mi el automataque coincide con M pero con estado inicial qi; mas precisamente, Mi =(, Q, qi, F,). Al lenguaje aceptado por Mi lo denotaremos Ai; es decir,L(Mi) = Ai. En particular, A0 = L(M). Puesto que los estados de acepta-cion no se han alterado, se tiene que

    Ai = {w : (qi, w) F = }.

    Cada Ai se puede escribir como

    (2.1) Ai =

    a

    {aAj : qj (qi, a)}, si qi F,a

    {aAj : qj (qi, a)} . si qi F.

    Si Q = {q0, q1, . . . , qn}, las igualdades de la forma (2.1) dan lugar a unsistema de n+ 1 ecuaciones con n+ 1 incognitas (los Ai):

    A0 = C01A0 C02A1 C0nAn ()

    A1 = C11A0 C12A1 C1nAn ()......

    An = Cn1A0 Cn2A1 CnnAn ()

    donde cada coeficiente Cij o es o es un smbolo de . El termino seanade a una ecuacion solamente si el estado correspondiente es un estadode aceptacion.

  • 58 CAPITULO 2. AUTOMATAS FINITOS

    Utilizando sucesivas veces el lema de Arden, se puede mostrar que estesistema de ecuaciones siempre se puede solucionar y su solucion es unica.En efecto, comenzando con la ultima ecuacion, se escribe An en terminosde los demas Ai, para lo cual se usa el lema de Arden si es necesario. Estevalor de An se reemplaza en las demas ecuaciones y el sistema se reduce an ecuaciones con n incognitas. Similarmente, An1 se escribe en terminosde los demas Ai, usando el lema de Arden si es necesario, y tal valor sereemplaza en las ecuaciones restantes. Prosiguiendo de esta manera, el sis-tema original se reduce a una sola ecuacion cuya incognita es precisamenteA0. Esta ecuacion se soluciona recurriendo una vez mas al lema de Arden.Puesto que los coeficientes Cij diferentes de son smbolos de , se obtieneuna expresion regular R tal que L(M) = A0 = R.

    2.12. Ejemplos de la parte II del Teorema deKleene

    A continuacion ilustraremos el procedimiento de la seccion 2.11 para en-contrar L(M) a partir de un AFN M = (, Q, q0, F,) dado.

    Ejemplo Considerese el siguiente AFN M :

    > q0 q1 q2a a

    a

    b

    a

    b

    Por simple inspeccion sabemos que L(M) = (a b)a2(a b), pero utili-zaremos el metodo descrito para encontrar explcitamente L(M).

    El sistema de ecuaciones asociado con el automata M es:(1) A0 = aA0 bA0 aA1(2) A1 = aA2

    (3) A2 = aA2 bA2 .

    La ecuacion (3) se puede escribir como

    (4) A2 = (a b)A2 .

    Aplicando el lema de Arden en (4):

    (5) A2 = (a b) = (a b).

  • 2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE 59

    Reemplazando (5) en (2):

    (6) A1 = a(a b).

    Reemplazando (6) en (1):

    (7) A0 = (a b)A0 a2(a b).

    Aplicando el lema de Arden en (7) concluimos:

    A0 = (a b)a2(a b)

    Ejemplo Encontrar una expresion regular para el lenguaje aceptado por

    el siguiente AFN M :

    > q0 q1 q2 q3 q4a a b b

    b a

    a

    a

    El sistema de ecuaciones asociado con el automata M es:

    (1) A0 = aA1

    (2) A1 = aA2

    (3) A2 = bA2 bA3

    (4) A3 = aA3 bA4(5) A4 = aA2 aA3

    Reemplazando (5) en (4):

    (6) A3 = aA3 baA2 baA3 b = (a ba)A3 baA2 b.

    Aplicando el lema de Arden en (6):

    (7) A3 = (a ba)(baA2 b) = (a ba)baA2 (a ba)b.

    Reemplazando (7) en (3):

    (8) A2 = bA2 b(a ba)baA2 b(a ba)b .

    El sistema original de cinco ecuaciones y cinco incognitas se reduce al sis-tema de tres ecuaciones y tres incognitas formado por (1), (2) y (8).

    La ecuacion (8) se puede escribir como

  • 60 CAPITULO 2. AUTOMATAS FINITOS

    (9) A2 =[b b(a ba)ba

    ]A2 b(a ba) .

    Aplicando el lema de Arden en (9):

    (10) A2 =[b b(a ba)ba

    ][b(a ba)b

    ].

    Si se sustituye (10) en (2) y luego el valor de A1 obtenido se sustituye en(1), se obtiene finalmente:

    A0 = a2[b b(a ba)ba

    ][b(a ba)b

    ]

    Ejemplo Encontrar una expresion regular para el lenguaje L de todas

    las cadenas sobre = {a, b} que tienen un numero par de aesy un numero par de bes. El siguiente automata acepta el lenguaje L:

    > q0

    q2 q3

    q1

    a

    a

    a

    a

    b b b b

    Este automata da lugar al siguiente sistema de ecuaciones:(1) A0 = aA1 bA2

    (2) A1 = aA0 bA3(3) A2 = aA3 bA0(4) A3 = aA2 bA1

    Reemplazando (4) en (3):

    (5) A2 = a2A2 abA1 bA0.

    Reemplazando (4) en (2):

    (6) A1 = aA0 baA2 b2A1.

    El sistema original de cuatro ecuaciones y cuatro incognitas se reduce a unsistema de tres ecuaciones y tres incognitas, a saber:

    (1) A0 = aA1 bA2

    (6) A1 = aA0 baA2 b2A1(5) A2 = a2A2 abA1 bA0

  • 2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE 61

    Aplicando el lema de Arden en (5):

    (7) A2 = (a2)(abA1 bA0) = (a2)abA1 (a2)bA0.

    Reemplazando (7) en (6):

    (8) A1 = aA0 ba(a2)abA1 ba(a2)bA0 b2A1.

    Reemplazando (7) en (1):

    (9) A0 = aA1 b(a2)abA1 b(a2)bA0 .

    El sistema se reduce ahora a dos ecuaciones:(9) A0 = aA1 b(a2)abA1 b(a2)bA0 (8) A1 = aA0 ba(a2)abA1 ba(a2)bA0 b2A1

    =(ba(a2)ab b2

    )A1 aA0 ba(a2)bA0.

    Aplicando el lema de Arden en (8):

    A1 =(ba(a2)ab b2

    )(aA0 ba(a

    2)bA0)

    =(ba(a2)ab b2

    )aA0

    (ba(a2)ab b2

    )ba(a2)bA0.

    (10)

    Haciendo R =(ba(a2)ab b2

    ), (10) se puede escribir como

    (11) A1 = RaA0 Rba(a2)bA0.

    Aplicando el lema de Arden en (9):

    A0 =(b(a2)b

    )(aA1 b(a

    2)abA1 )

    =(b(a2)b

    )aA1

    (b(a2)b

    )b(a2)abA1

    (b(a2)b

    ).

    (12)

    Haciendo S =(b(a2)b

    ), (12) se puede escribir como:

    (13) A0 = SaA1 Sb(a2)abA1 S.

    Al sustituir (11) en (13), el sistema original se reduce a una sola ecuacion:

    (14) A0 = Sa[RaA0 Rba(a2)bA0

    ]Sb(a2)ab

    [RaA0 Rba(a2)bA0

    ]S.

    Agrupando los terminos en los que aparece A0 y factorizando, se obtiene

    (15) A0 =[SaRaSaRba(a2)bSb(a2)abRaSb(a2)abRba(a2)b

    ]A0S.

    Aplicando lema de Arden en (15):

    (16) A0 =[SaRa SaRba(a2)b Sb(a2)abRa Sb(a2)abRba(a2)b

    ]S.

    Si sustituimos R y S en (16) obtenemos una expresion regular para L.

  • 62 CAPITULO 2. AUTOMATAS FINITOS

    Ejercicios de la seccion 2.12

    Utilizando el lema de Arden, encontrar expresiones regulares para lossiguientes lenguajes sobre = {a, b}:

    (i) El lenguaje L de todas las cadenas que tienen un numero parde aes y un numero impar de bes.

    (ii) El lenguaje L de todas las cadenas que tienen un numero parde aes o un numero impar de bes.

    Utilizando el lema de Arden, encontrar expresiones regulares para loslenguajes aceptados por los siguientes AFN:

    (i)

    > q0 q1 q2

    q3

    ba a

    b

    a a

    b

    (ii)

    > q0 q1 q2 q3 q4b a b a

    b

    b

    b

  • Captulo3Otras propiedades de los lenguajesregulares

    En los dos captulos anteriores hemos presentado las propiedades basicas delos lenguajes regulares pero no hemos visto como se puede demostrar queun lenguaje no es regular. El llamado lema de bombeo, expuesto en estecaptulo, sirve para tal proposito. Tambien veremos que la regularidad esuna propiedad que se preserva por las operaciones booleanas usuales, porhomomorfismos y por las imagenes inversas de homomorfismos. Finalmen-te, analizaremos ciertos problemas de decision referentes a automatas y alenguajes regulares.

    3.1. Lema de bombeo

    El llamado lema de bombeo (pumping lemma, en ingles) es una propie-dad de los lenguajes regulares que es muy util para demostrar que ciertoslenguajes no son regulares.

    3.1.1. Lema de bombeo. Para todo lenguaje regular L (sobre un alfabetodado ) existe una constante n N, llamada constante de bombeo para L,tal que toda cadena w L, con |w| n, satisface la siguiente propiedad:

    (B)

    {w se puede descomponer como w = uvx, con |uv| n, v = ,y para todo i 0 se tiene uvix L.

    Demostracion. Por el Teorema de Kleene y por los teoremas de equivalenciade los modelos AFD, AFN y AFN-, existe un AFD M tal que L(M) = L.

    63

  • 64 CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

    Sean = # de estados de M.

    Si w L y |w| n, entonces durante el procesamiento completo de w, haypor lo menos un estado que se repite. Sea q el primer estado que se repite.Tal como se muestra en la siguiente grafica, w se puede descomponer comow = uvx, donde |uv| n, v = .

    w

    u v x

    q

    q

    q0

    p

    Notese que tanto u como x pueden ser la cadena vaca , pero v = .Ademas, la cadena v se puede bombear, en el sentido de que uvix esaceptada por M para todo i 0. En el diagrama de estados, se puedevisualizar esta propiedad de bombeo de v:

    q0>

    q

    p

    u x

    v

    Uso del lema de bombeo. El lema de bombeo se puede usar para concluirque un cierto lenguaje dado L no es regular, recurriendo a un razonamientopor contradiccion (o reduccion al absurdo). El razonamiento utilizado tienela siguiente forma:

    1. Si L fuera regular, existira una constante de bombeo n para L.

    2. Se escoge una cadena adecuada w L y se aplica la propiedad (B)del lema de bombeo, descomponiendo w como

    w = uvx, v = , |uv| n.

    3. Se llega a la siguiente contradiccion:

    (I) Por el lema de bombeo, uvix L, para todo i 0.

  • 3.1. LEMA DE BOMBEO 65

    (II) uvix no puede estar en L, para algun i I. Por lo general, bastaescoger valores pequenos de i como i = 0 o i = 2.

    Ejemplo Usar el lema de bombeo para demostrar que el lenguaje L =

    {aibi : i 0} no es regular.

    Solucion. Si L fuera regular, existira una constante de bombeo n para L.Sea w = anbn L. Entonces w se puede descomponer como w = uvx, con|v| 1 y |uv| n. Por lo tanto, u y v constan unicamente de aes:

    u = ar, para algun r 0,v = as, para algun s 1.

    Entonces,x = an(r+s)bn = anrsbn.

    Por el lema de bombeo, uvix L para todo i 0. En particular, si i = 0,ux L. Pero ux = aranrsbn = ansbn. Como n s = n, la cadenaux / L lo cual es una contradiccion. Se concluye entonces que L no puedeser regular.

    Tomando i = 2 tambien se llega a una contradiccion: por un lado, uv2x L, pero

    uv2x = arasasanrsbn = ar+2s+nrsbn = an+sbn.

    Como s 1, an+sbn no esta en L.

    El argumento anterior tambien sirve para demostrar que el lenguajeL = {aibi : i 1} no es regular.

    Ejemplo Demostrar que el lenguaje de los palndromos sobre {a, b} no

    es un lenguaje regular. Recuerdese que un palndromo es unacadena w tal que w = wR.

    Solucion. Si L fuera regular, existira una constante de bombeo n para L.Sea w = anban L. Entonces w se puede descomponer como w = uvx, con|v| 1, |uv| n, y para todo i 0, uvix L. Por lo tanto, u y v constanunicamente de aes:

    u = ar, para algun r 0,v = as, para algun s 1.

    Entonces,x = an(r+s)ban = anrsban.

  • 66 CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

    Tomando i = 0, se concluye que ux L, pero

    ux = aranrsban = ansban.

    Como s 1, ansban no es un palndromo. Esta contradiccion muestra queL no puede ser regular.

    Ejemplo Demostrar que el lenguaje L =

    {ai

    2

    : i 0}no es regular. L

    esta formado por cadenas de aes cuya longitud es un cuadradoperfecto.

    Solucion. Si L fuera regular, existira una constante de bombeo n para L.Sea w = an

    2

    L. Entonces w se puede descomponer como w = uvx, con|v| 1, |uv| n. Por el lema de bombeo, uv2x L, pero por otro lado,

    n2 < n2 + |v| = |uvx|+ |v| = |uv2x| n2 + |uv| n2 + n < (n+ 1)2.

    Esto quiere decir que el numero de smbolos de la cadena uv2x no es un

    cuadrado perfecto y, por consiguiente, uv2x L. En conclusion, L no esregular.

    Ejercicios de la seccion 3.1

    Usar el lema de bombeo para demostrar que los siguientes lenguajesno son regulares:

    (i) L = {w {a, b} : w tiene el mismo numero de aes que de bes}.

    (ii) L = {aibai : i 1}, sobre = {a, b}.

    (iii) L = {aibjai : i, j 0}, sobre = {a, b}.

    (iv) L = {0i12i : i 0}, sobre = {0, 1}.

    (v) L = {1i01i0 : i 1}, sobre = {0, 1}.

    (vi) L = {aibjci+j : i, j 0}, sobre = {a, b, c}.

    (vii) L = {aibj : j > i 0}, sobre = {a, b}.

    (viii) L = {ww : w }, siendo = {a, b}.

    (ix) L = {wwR : w }, siendo = {a, b}.

    (x) L = {ai : i es un numero primo}, sobre = {a}.

    Es L = {(ab)i : i 0} un lenguaje regular?

    Encontrar la falacia en el siguiente argumento: Segun la propiedad(B) del enunciado del lema de bombeo, se tiene que uvix L para to-do i 0. Por consiguiente, L posee infinitas cadenas y, en conclusion,todo lenguaje regular es infinito.

  • 3.2. PROPIEDADES DE CLAUSURA 67

    3.2. Propiedades de clausura

    Las propiedades de clausura afirman que a partir de lenguajes regulares sepueden obtener otros lenguajes regulares por medio de ciertas operacionesentre lenguajes. Es decir, la regularidad es preservada por ciertas operacio-nes entre lenguajes; en tales casos se dice que los lenguajes regulares soncerrados bajo las operaciones.

    El siguiente teorema establece que la coleccion R () de los len-guajes regulares sobre un alfabeto es cerrada bajo todas las operacionesbooleanas.

    3.2.1 Teorema. Si L, L1 y L2 son lenguajes regulares sobre un alfabeto, tambien lo son:

    (1) L1 L2 (union)(2) L1L2 (concatenacion)(3) L (estrella de Kleene)(4) L+ (clausura positiva)(5) L = L (complemento)(6) L1 L2 (interseccion)(7) L1 L2 (diferencia)(8) L1 L2 (diferencia simetrica)

    Demostracion.

    (1), (2) y (3) se siguen de la definicion de los lenguajes regulares.

    (4) Por (2), (3) y L+ = LL.

    (5) Por el Teorema de Kleene y por los teoremas de equivalencia de losmodelos AFD, AFN y AFN-, existe un AFD M = (, Q, q0, F, ) talque L(M) = L. Para construir un AFD que acepte el complementode L basta intercambiar los estados finales con los no finales. Si M

    es el automata (, Q, q0, Q F, ), entonces L(M ) = L.

    (6) Se sigue de (1) y (5) teniendo en cuenta que L1 L2 = L1 L2.

    (7) Se sigue de (5) y (6) teniendo en cuenta que L1 L2 = L1 L2.

    (8) Puesto que

    L1 L2 = (L1 L2) (L1 L2) = (L1 L2) (L2 L1)

    el resultado se sigue de (1), (6), (7).

  • 68 CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

    Recuerdese que un algebra booleana de conjuntos es una familiaA (X) cerrada bajo las operaciones de union, interseccion y complemento,tal que A, X A.

    3.2.2 Corolario. La coleccion R () de todos los lenguajes regularessobre un alfabeto es un algebra booleana de conjuntos.

    Demostracion. Se sigue del Teorema 3.2.1 y del hecho de que y sonlenguajes regulares sobre .

    Hemos visto que un lenguaje finito es regular y que la union fi-nita de lenguajes regulares es regular. Pero una union infinita delenguajes regulares no necesariamente es regular; considerese, porejemplo,

    L = {anbn : n 1} =i1

    {aibi}.

    Cada conjunto {a