P ONTIFICIA U NIVERSIDAD C AT ÓLICA DE C HILE E SCUELA DE I NGENIER ÍA D EPARTAMENTO DE C IENCIA DE LA C OMPUTACI ÓN IIC 2223 — Teorı́a de Autómatas y Lenguajes Formales Interrogación 1 1. a) Dé un AFD que acepte palabras en {0, 1}∗ que interpretadas como un número binario son divisibles por 3 y que no contienen a 001 como sub-palabra. La palabra vacı́a debe ser aceptada por su autómata. El AFD es M = (Q, Σ, δ, q0 , F ), con Q = {0, 1, 2} × {a1 a2 | a1 , a2 ∈ {0, 1, @}} ∪ {⊥} δ 0 ((i, a1 a2 ), b) = ((2i + b) mod 3, a2 b), para todo a1 , a2 ∈ {0, 1, @}, i ∈ {0, 1, 2}, b ∈ {0, 1}, y no pasa que a1 = 0, a2 = 0, b = 1. δ 0 ((i, 00), 1) = ⊥, cuando i ∈ {0, 1, 2}. δ 0 (⊥, 0) = δ(⊥, 1) = ⊥. q0 = (0, @@). F = {(0, a1 a2 ) | a1 a2 ∈ {0, 1, @}}. b) Dé un autómata finito sin transiciones en vacı́o para el lenguaje generado por aa(ba)∗ + b∗ aba∗ . Dado por: b a a a a a b a b b 2. Dé expresiones regulares para los siguientes lenguajes sobre {0, 1} a) Las palabras que contienen tanto a 11 como a 010 como subpalabra. (0 + 1)∗ 11(0 + 1)∗ 010(0 + 1)∗ + (0 + 1)∗ 010(0 + 1)∗ 11(0 + 1)∗ b) Las palabras que contienen tanto a 101 como a 010 como subpalabra. (0+1)∗ 101(0+1)∗ 010(0+1)∗ +(0+1)∗ 010(0+1)∗ 101(0+1)∗ +(0+1)∗ 1010(0+1)∗ +(0+1)∗ 0101(0+1)∗ c) Las palabras cuyo número de unos es divisible por 3 y que terminan en 1. (0∗ 10∗ 10∗ 10∗ )∗ 0∗ 10∗ 10∗ 1 k 3. Para un AFD M = ({1, . . . , n}, Σ, δ, 1, F ), sea rij la expresión regular para el lenguaje de las palabras que hacen saltar a M desde el estado i al estado j sin pasar, entre medio, por un estado p > k. Formalmente, si δ̂ : Q × Σ∗ → Q es tal que δ̂(i, w) = j ssi M , al procesar w desde el estado i, queda en j. Formalmente, el k lenguaje generado por rij es: k L(rij ) = {w ∈ Σ∗ | δ̂(i, w) = j y para todo prefijo propio x 6= ε, δ̂(i, x) ≤ k} Diga si las siguientes afirmaciones son verdaderas o falsas, demostrando su respuesta. k−1 k−1 k a) Si rij = ∅ y rkk = ∅, entonces rij = ∅. Recordando que k−1 k−1 k−1 ∗ k−1 k rij = rij + rik (rkk ) rkj k−1 k−1 El antecedente no implica al consecuente puesto que basta con que rik y rkj sean distintos de vacı́o. k−1 k−1 k b) Si rij = ∅ y rkj = ∅. = ∅, entonces rij En este caso, dada la expansión anterior, recordamos que al concatenar el lenguaje vacı́o con otro lenguaje, se obtiene un lenguaje vacı́o. La afirmación es por lo tanto verdadera. 1 c) Existen infinitos n, tales que M – tal cual está definido arriba – cumple que L(M ) = L(r11 ). Es verdadera. Basta con que se cumplan las siguientes condiciones: El estado 1 es también final. M no contiene, aparte de 1, otros estados finales alcanzables desde el estado inicial. No hay strings que conduzcan al estado 1 pasando por otro estado distinto de 1. Es sencillo ver que hay infinitos autómatas de la forma propuesta que satisfacen estas 3 propiedades. 4. Un autómata finito con observación de cola (AFOC) es un autómata cuyo estado inicial está determinado por el último sı́mbolo de la palabra de entrada. Al recibir una palabra w el AFOC mira el último sı́mbolo de w, luego salta a algún estado – determinado por ese sı́mbolo – y continúa leyendo a w tal como lo harı́a un AFD. El AFOC aceptará w si después de procesar w llega a un estado final. Formalmente un AFOC es una tupla M = (Q, Σ, δ, I, F ), donde Q es un conjunto finito de estados, Σ es un alfabeto, F es el conjunto de estados finales, δ : Q × Σ → Q es la función de transición, e I : Σ ∪ {ε} → Q es una función que decide desde qué estado comienza el autómata a procesar el input dependiendo del último sı́mbolo del input. Si la palabra de entrada es ε, el autómata saltará al estado I(ε) antes de procesar el input. a) Basándose en la descripción intuitiva del AFOC, defina formalmente el lenguaje aceptado por un AFOC. Sea init : Σ∗ → Q definida por: init(ε) = I(ε) init(wa) = I(a) para todo a ∈ Σ, w ∈ Σ∗ Además, sea δ̂ definido en la forma estándar: δ̂(q, ε) = q δ̂(q, wa) = δ(δ̂(q, w), a) El lenguaje aceptado por el AFOC M es: L = {w ∈ Σ∗ | δ̂(init(w), w) ∈ F }. b) Demuestre que los AFOC aceptan la misma clase de lenguajes que los AFD. Debemos demostrar que 1) todo lenguaje aceptado por un AFD es aceptado por un AFOC. 2) todo lenguaje aceptado por un AFOC es aceptado por un AFD. Para 1), dado un AFD M = (Q, Σ, δ, q0 , F ) construimos un AFOC M 0 = (Q, Σ, δ, I, F ) donde I(x) = q0 , para todo x. Es claro que M 0 acepta el mismo lenguaje que M pues siempre parte desde el mismo estado y luego funciona, por definición, igual que M . Para 2), dado un AFOC M = (Q, Σ, δ, I, F ), definimos AFND-ε M 0 = (Q0 , Σ, δ 0 , q0 , F 0 ). Con: Q0 = {q0 } ∪ {[q, a, b] | q ∈ Q, a ∈ Σ, y b ∈ Σ ∪ {@}} δ(q0 , ε) = {[I(a), a, @] | para todo a ∈ Σ}. δ([q, a, b], c) = {[δ(q, c), a, c]}, para todo q ∈ Q, a ∈ Σ, b ∈ Σ ∪ {@}. δ está definido como ∅ para parámetros no mencionados arriba. F = {[q, a, a] | q ∈ F, a ∈ Σ} ∪ A, donde ( {q0 } si ε ∈ L(M ) A= ∅ en otro caso Intuitiavamente, el estado [q, a, b] representa que M 0 optó por “creer” que la palabra iba a terminar con una a, y que el último sı́mbolo que ha leı́do es una b. Continuamos demostrando que M y M 0 aceptan el mismo lenguaje. En efecto, si M acepta una palabra wa, entonces hay un camino que comienza en I(a) y que termina en un estado final de M , digamos qf . Por otro lado, M 0 puede optar saltar a [I(a), a, @], desde donde habrá algún camino hasta [qf , a, a], que es un estado de aceptación. Para el caso de la palabra vacı́a la demostración es trivial. En el otro sentido, si M 0 acepta una palabra w entonces tenemos dos casos. En el primer caso w = ε, ası́ que claramente M también acepta a w. En el segundo caso w 6= ε entonces hay un camino que parte en q0 , sigue directamente en [I(a), a, @] para finalemente terminar en un estado de la forma [I(a), a, a], para algún a. Dado que el tercer componente del estado recuerda el último sı́mbolo leı́do, la palabra w debe terminar en a. De aquı́, es claro que M también acepta a w. Concluimos que M y M 0 aceptan el mismo lenguaje. Finalmente, usamos el hecho que es posible construir un AFD equivalente a M 0 para terminar la demostración.