3.2. AUTÓMATAS FINITOS NO DETERMINÍSTICOS 39 ✷3.2 Autómatas Finitos No DeterminísticosEn esta sección se introduce el concepto <strong>de</strong> no-<strong>de</strong>terminismo en un autómata finito. Como se verá mása<strong>de</strong>lante, cualquier conjunto aceptado por un autómata finito no <strong>de</strong>terminístico es aceptado por un autómatafinito <strong>de</strong>terminístico. Sin embargo, la no-<strong>de</strong>terminación es un concepto útil para probar teoremas y simplificarla <strong>de</strong>scripción <strong>de</strong> los autómatas. Más aún, el concepto <strong>de</strong> in<strong>de</strong>terminación es central en la teoría <strong>de</strong> lenguajesy computación y es útil enten<strong>de</strong>rlo en un contexto simple como el <strong>de</strong> estos autómatas. Después se veránautómatas con versiones <strong>de</strong>terminísticas y no-<strong>de</strong>terminísticas que, se sabe, no son equivalentes o en que laequivalencia está todavía no resuelta.Consi<strong>de</strong>re una modificación <strong>de</strong>l mo<strong>de</strong>lo <strong>de</strong> autómatas finitos que permita cero, una o más transiciones<strong>de</strong>s<strong>de</strong> un estado en un mismo símbolo <strong>de</strong>l alfabeto. Este mo<strong>de</strong>lo es llamado un autómata finito no <strong>de</strong>terminístico(AFND). Un diagrama <strong>de</strong> transición para un AFND se muestra a continuación.✛ ✘✂✛✘★✥0✛✘1✛✌q✲1 q 2✛ ✘✚✙ ✚✙✞ ✛ ✏1✧✦1✍✛✘ ✛✁✟ ✟✟✟✟✟✟✟✟✯1✚ ✙✲ q 0✛ ✘✎✚✙✛☞ ✛✘ ★✥✛✘✂ 00✛✌✚ ✙0 q✲3 q 4✚✙ 0 ✞ ✛✏✧✦✚✙1✚ ✙Figure 3.5: Diagrama <strong>de</strong> transición para un AFNDEjemplo 36 Considérese el autómata <strong>de</strong> la Figura 3.5. En él hay dos arcos con etiqueta 0 que salen <strong>de</strong>s<strong>de</strong>q 0 , uno vuelve a q 0 y el otro va al estado q 3 .Un string <strong>de</strong> símbolos a 1 a 2 . . . a n es aceptada por un autómata finito no <strong>de</strong>terminístico si existe unasecuencia <strong>de</strong> transiciones, correspondientes al string, que lleve <strong>de</strong>s<strong>de</strong> el estado inicial a algún estado final.Por ejemplo, 01001 es aceptado por el AFND <strong>de</strong> la Figura 3.5, porque hay una secuencia <strong>de</strong> transiciones,a través <strong>de</strong> q 0 , q 0 , q 0 , q 3 , q 4 , q 4 , cuyas etiquetas son 01001, que van <strong>de</strong>l estado inicial q 0 al estado final q 4 .Nótese que, el que haya una secuencia (por ejemplo q 0 , q 0 , q 0 , q 0 , q 0 , q 1 ) que no conduce a un estado finalno importa; es <strong>de</strong>cir, el no <strong>de</strong>terminismo no molesta, basta que haya una secuencia para que el string seaaceptado. El AFND <strong>de</strong>l ejemplo acepta todos los strings binarios que tienen dos 1’s ó dos 0’s consecutivos.El autómata finito <strong>de</strong> la Sección 3.1, es un caso especial <strong>de</strong>l AFND, en que todos los estados tienen unatransición única en cada símbolo. Es <strong>de</strong>cir, en un AFD, por cada string w y estado q, hay exactamente uncamino con etiqueta w que comienza en q. Para saber si el AFD acepta w, es suficiente revisar ese camino.Para un AFND, en cambio, pue<strong>de</strong> haber muchos caminos posibles y todos <strong>de</strong>ben revisarse, en general, parasaber si al menos uno conduce a un estado final.✷
40 CHAPTER 3.ACEPTACIÓN Y GENERACIÓN DE LENGUAJES REGULARESUn AFND también pue<strong>de</strong> ser visto como un control finito que lee una cinta. Sin embargo, en este caso, elcontrol finito pue<strong>de</strong> estar, a cada instante, en cualquiera <strong>de</strong> un grupo <strong>de</strong> estados. Cuando es posible escogerel próximo estado, se pue<strong>de</strong> imaginar que se producen copias <strong>de</strong>l autómata. Por cada próximo estado posible,hay una copia <strong>de</strong>l autómata cuyo control finito está en ese estado. La Figura 3.6 muestra este proceso parael AFND <strong>de</strong>l Ejemplo 36, cuando lee el string 01001.q ✲ q ✲ q ✲ q ✲ q ✲ q0 0 0 0 0 0❅ ❅ ❅ ❅ ❅❅❘ q ❅❘ q ❅❘ q ❅❘ q ❅❘ q3 1 3 3 1❅ ✛✘❅❘ q ✲ q4 4✚✙Figure 3.6: Secuencia <strong>de</strong> pasos al procesar el string 01001Formalmente, un autómata finito no <strong>de</strong>terminístico esuna quíntupla:(Q, Σ, δ, q 0 , F )en que Q, Σ, q 0 y F tienen el mismo significado que para el autómata finito <strong>de</strong>terminístico, pero δ es unafunción que va <strong>de</strong> Q × Σ a 2 Q , es <strong>de</strong>cir:δ : Q × Σ → 2 QLa i<strong>de</strong>a es que δ(q, a) es el conjunto <strong>de</strong> todos los estados a los que hay una transición <strong>de</strong>s<strong>de</strong> q con etiquetaa. Recuer<strong>de</strong> que 2 Q es el conjunto potencia <strong>de</strong> Q, el conjunto <strong>de</strong> todos los subconjuntos <strong>de</strong> Q.Ejemplo 37 La función <strong>de</strong> transición para el AFND <strong>de</strong> la Figura 3.5 está dada por:Q \ Σ 0 1q 0 {q 0 , q 3 } {q 0 , q 1 }q 1 ∅ {q 2 }q 2 {q 2 } {q 2 }q 3 {q 4 } ∅q 4 {q 4 } {q 4 }Nuevamente es posible exten<strong>de</strong>r la función <strong>de</strong> transición δ a la funciónˆδ : Q × Σ ∗ → 2 Qpara reflejar el comportamiento <strong>de</strong> un AFND en un string:• ˆδ(q, ε) = {q}• ˆδ(q, wa) = {p/ para algún estado r ∈ ˆδ(q, w), p ∈ δ(r, a)}La primera condición impi<strong>de</strong> cambios sin procesar símbolos. La segunda, indica que comenzando enestado q y leyendo el string w, seguido <strong>de</strong>l símbolo a, es posible estar en un estado p, si y sólo si r es uno <strong>de</strong>los estados en que se pue<strong>de</strong> estar luego <strong>de</strong> leer w, y <strong>de</strong>s<strong>de</strong> r es posible ir a p leyendo a.Nótese que ˆδ(q, a) = δ(q, a), para todo a ∈ Σ y q ∈ Q. Por lo tanto, nuevamente se usará δ en lugar <strong>de</strong> ˆδ.✷