11.07.2015 Views

Teor´ıa de Autómatas y Lenguajes Formales

Teor´ıa de Autómatas y Lenguajes Formales

Teor´ıa de Autómatas y Lenguajes Formales

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

130ACEPTACIÓN Y GENERACIÓN DE L. ENUMERABLES RECURSIVAMENTE Y RECURSIVOSse sigue con la próxima instrucción <strong>de</strong> la RAM. Si #j ∗ v j # es encontrado, v j es sumado al registro 2, queestá en su propia cinta, y se continúa con la próxima instrucción.Obsérvese que aún cuando la simulación <strong>de</strong> la RAM hizo uso <strong>de</strong> una MT con varias cintas, por teorema35, una MT con una cinta sería mucho más compleja.7.7 Máquinas <strong>de</strong> Turing como GeneradoresSe ha visto a las máquinas <strong>de</strong> Turing como reconocedoras <strong>de</strong> lenguajes y como computadoras <strong>de</strong> funcionesen los enteros no negativos. Hay una tercera visión útil <strong>de</strong> las MT, como dispositivos generadores. Consi<strong>de</strong>reuna MT, M, que usa una cinta como cinta <strong>de</strong> output, en la cual un símbolo, una vez escrito, no pue<strong>de</strong> sercambiado y cuya cabeza (escritora en este caso) nunca se mueve a la izquierda. Suponga también que en lacinta <strong>de</strong> output M escribe strings sobre algún alfabeto Σ, separados por un símbolo especial #. Se pue<strong>de</strong><strong>de</strong>finir G(M), el lenguaje generado por M, como el conjunto <strong>de</strong> w ∈ Σ ∗ , tal que w es eventualmente escritoentre un par <strong>de</strong> #’s en la cinta <strong>de</strong> output <strong>de</strong> M.Nótese que a menos que M no pare, G(M) es finito. Tampoco se requiere que las palabras sean generadasen algún or<strong>de</strong>n en particular, o que cualquier palabra sea generada una sola vez. Si L es G(M) para algunaMT, M, entonces L es un conjunto enumerable recursivamente y viceversa. Los conjuntos recursivos tambiéntienen una caracterización en términos <strong>de</strong> generadores; ellos son exactamente los lenguajes cuyas palabraspue<strong>de</strong>n ser generadas en or<strong>de</strong>n creciente <strong>de</strong> tamaño.Lema 11 Si L es G(M 1 ) para alguna MT, M 1 , entonces L es un conjunto enumerable recursivamente.Demostración : Se construye una MT, M 2 , con una cinta más que M 1 . M 2 simula a M 1 usando todo exceptola cinta <strong>de</strong> entrada <strong>de</strong> M 2 . Cada vez que M 1 imprime un # en su cinta <strong>de</strong> output, M 2 compara su input conel string recién generado. Si son el mismo, M 2 acepta; si no, sigue simulando a M 1 . Obviamente M 2 aceptaun string X, si y sólo si X ∈ G(M 1 ). Por lo tanto, L(M 2 ) = G(M 1 ) = L es enumerable recursivamente.El converso <strong>de</strong> este lema es algo más difícil. Suponga que M 1 reconoce a L ⊆ Σ ∗ . Nuestro primer (ypoco exitoso) intento para diseñar un generador para L pue<strong>de</strong> ser generar palabras en Σ ∗ , en algún or<strong>de</strong>n,w 1 , w 2 , . . ., hacer correr a M 1 en w 1 y si M 1 acepta, generar w 1 en la cinta <strong>de</strong> output. Luego hacer correr aM 1 en w 2 , generándolo si M 1 acepta, etc. Este método funciona si M 1 está garantizado <strong>de</strong> parar en todoslos inputs. Sin embargo, como se verá en el próximo capítulo, hay lenguajes enumerables recursivamenteque no son recursivos. En esos casos, aparece la posibilidad que M 1 nunca se <strong>de</strong>tenga en algún w i . LuegoM 2 nunca consi<strong>de</strong>rará w i+1 , w i+2 , . . . y no pue<strong>de</strong> generarlas aún cuando M 1 las aceptase.Debe, por lo tanto, evitarse la simulación in<strong>de</strong>finida <strong>de</strong> M 1 en alguna palabra. Para ello se fija un or<strong>de</strong>n enque enumerar strings en Σ ∗ . Luego se <strong>de</strong>sarrolla un método para generar todos los pares <strong>de</strong> enteros positivos(i, j). La simulación proce<strong>de</strong> generando un par (i, j) y simulando a M 1 en la i-ésima palabra durante j pasos.Se fija un or<strong>de</strong>n canónico para Σ ∗ como sigue. Se listan los strings en or<strong>de</strong>n <strong>de</strong> tamaño, con palabras<strong>de</strong>l mismo largo en “or<strong>de</strong>n numérico”. Esto es, sea Σ = {a 0 , a 1 , . . . , a k−1 }, e imagine que a i es el dígito i enbase k. Es <strong>de</strong>cir, las palabras <strong>de</strong> largo N son los números 0 a k N − 1, escritos en base k. El diseño <strong>de</strong> unamáquina <strong>de</strong> Turing que genere palabras en or<strong>de</strong>n canónico no es difícil y se <strong>de</strong>ja como ejercicio.Ejemplo 88 Si Σ = {0, 1}, el or<strong>de</strong>n canónico es ε, 0, 1, 00, 01, 10, 11, 000, 001, . . .Nótese que el or<strong>de</strong>n aparentemente más simple en que usualmente se generan las representaciones áscortas <strong>de</strong> los números en base k, 0, 1, 2, . . . , no sirve pues nunca se generan strings como a 0 a 0 a 1 , que tienenceros a<strong>de</strong>lante.✷✷✷

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!