Chapter 3ACEPTACIÓN Y GENERACIÓNDE LENGUAJES REGULARESEn este capítulo se estudiarán los lenguajes regulares, sus dispositivos <strong>de</strong> aceptación y <strong>de</strong> generación.3.1 Autómatas Finitos DeterminísticosUn autómata finito (AF) consta <strong>de</strong> un conjunto finito <strong>de</strong> estados y un conjunto <strong>de</strong> transiciones <strong>de</strong> estado aestado, que ocurren en símbolos tomados <strong>de</strong> un alfabeto Σ. Por cada símbolo hay exactamente una transición<strong>de</strong>s<strong>de</strong> cada estado. Un estado, usualmente <strong>de</strong>nominado q 0 , es el estado inicial en el que el autómata comienza;algunos estados se <strong>de</strong>signan como estados finales o <strong>de</strong> aceptación.Un grafo dirigido, llamado diagrama <strong>de</strong> transición, es asociado con un AF como se indica a continuación.Los vértices <strong>de</strong>l grafo correspon<strong>de</strong>n a los estados <strong>de</strong>l AF. Si hay una transición <strong>de</strong>l estado q al estado p ensímbolo a, entonces hay un arco con etiqueta a, <strong>de</strong>s<strong>de</strong> el estado q al estado p en el diagrama <strong>de</strong> transición.El AF acepta un string x si y sólo si la secuencia <strong>de</strong> transiciones que correspon<strong>de</strong>n a los símbolos <strong>de</strong> x, llevan<strong>de</strong>s<strong>de</strong> el estado inicial a uno <strong>de</strong> los estados <strong>de</strong> aceptación.✛✘✎✓✏✲ q 0✲✎ ✚✙✒✑☞✻✍00✔✓✏❄q✲✗1✒✑✔✕1 1 0 1 1✗✔✖✛ ✓✏✕✖✛ ✓✏❄✕q 2 q 3✒✑✒✑✻✖ 0 ✕Figure 3.1: Autómata que acepta los strings binarios con número par <strong>de</strong> 0’s y número par <strong>de</strong> 1’sEjemplo 32 En la Figura 3.1 el estado inicial q 0 está indicado por la flecha. Hay sólo un estado final,también q 0 en este caso, indicado por el círculo doble. Este autómata acepta todos los strings binarios enque hay un número par <strong>de</strong> 0’s y un número par <strong>de</strong> 1’s.35✷
36 CHAPTER 3.ACEPTACIÓN Y GENERACIÓN DE LENGUAJES REGULARESFormalmente, un autómata finito <strong>de</strong>terminístico es una quíntupla:(Q, Σ, δ, q 0 , F )en que Q es un conjunto finito <strong>de</strong> estados, Σ es un alfabeto <strong>de</strong> entrada, q 0 ∈ Q es el estado inicial, F ⊆ Q esel conjunto <strong>de</strong> estados finales y δ es la función <strong>de</strong> transición que va <strong>de</strong> Q × Σ a Q. Esto es, δ(q, a) ∈ Q paratodo q ∈ Q y a ∈ Σ.Como se aprecia en la Figura 3.2, un autómata finito se visualiza como un control finito, que está enalguno <strong>de</strong> los estados <strong>de</strong> Q, leyendo una secuencia <strong>de</strong> símbolos <strong>de</strong> Σ escritos sobre una cinta.1 0 0 1 1 1 0 0✻..ControlFinito.✓✏✒✑Figure 3.2: Representación <strong>de</strong> un autómata finitoEn una movida, el AF en estado q y viendo el símbolo a, entra al estado δ(q, a) y mueve su cabeza lectoraun símbolo hacia la <strong>de</strong>recha sobre la cinta. Si δ(q, a) es un estado <strong>de</strong> aceptación, el AF habría aceptado elprefijo <strong>de</strong>l string escrito en la cinta, a la izquierda <strong>de</strong>l símbolo sobre el cual recién llegó la cabeza lectora,sin incluirlo. Si la cabeza lectora se ha salido <strong>de</strong>l final <strong>de</strong> la cinta (por la <strong>de</strong>recha), entonces acepta elstring completo. Nótese que mientras se mueve sobre el string, el AF pue<strong>de</strong> aceptar (o no) muchos prefijosdiferentes.Para <strong>de</strong>scribir formalmente el comportamiento <strong>de</strong> un AF en un string, es necesario exten<strong>de</strong>r la función<strong>de</strong> transición δ, <strong>de</strong> forma tal que actúe sobre un string y un estado, en lugar <strong>de</strong> un estado y un símbolo. Es<strong>de</strong>cir, se quiere una función ˆδ : Q × Σ ∗ → Q. La intención es que ˆδ(q, w) sea el estado en que el AF estaríaleyendo w a partir <strong>de</strong>l estado q. Dicho <strong>de</strong> otra forma, ˆδ(q, w) es el estado p (único) tal que hay un camino<strong>de</strong> q a p en el diagrama <strong>de</strong> transición y en que las etiquetas <strong>de</strong> sus arcos forman w.Formalmente:• ˆδ(q, ε) = q• Para todo string w ∈ Σ ∗ y símbolo a ∈ Σ, δ(ˆδ(q, w), a)La primera parte <strong>de</strong> esta <strong>de</strong>finición asegura que el AF no pue<strong>de</strong> cambiar <strong>de</strong> estado sin leer símbolos. Lasegunda, indica cómo encontrar el estado en que quedará <strong>de</strong>spués <strong>de</strong> leer un string no vacío wa.Dado que ˆδ(q, a) = δ(ˆδ(q, ε), a) = δ(q, a), no hay diferencia entre δ y ˆδ para aquellos argumentos en queambas están <strong>de</strong>finidas. Por lo tanto, por conveniencia, se usará δ en lugar <strong>de</strong> ˆδ, siempre.En general, se tratará <strong>de</strong> usar los mismos símbolos para significar las mismas cosas a través <strong>de</strong> todo elmaterial para autómatas finitos. En particular se usarán los siguientes:• Q es un conjunto <strong>de</strong> estados. Los símbolos p y q, con o sin subíndice serán estados. El estado inicialserá q 0 .• Σ es un alfabeto <strong>de</strong> símbolos <strong>de</strong> entrada. Los símbolos a y b, con o sin subíndice, y los dígitos, seránsímbolos <strong>de</strong> entrada.• δ es la función <strong>de</strong> transición <strong>de</strong> un AF..