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.

122ACEPTACIÓN Y GENERACIÓN DE L. ENUMERABLES RECURSIVAMENTE Y RECURSIVOSY también es útil cuando <strong>de</strong>ben compararse longitu<strong>de</strong>s <strong>de</strong> algunos substrings, tales como en los lenguajes{a i b i /i ≥ 1}, {a i b j c k /i ≠ j o j ≠ k}Para ello se usa una segunda pista en la cinta, la que sólo contiene un blanco o un √ (visto). El símbolo√ aparece bajo uno <strong>de</strong> la primera pista, que ya ha sido consi<strong>de</strong>rado por la MT en una <strong>de</strong> las comparaciones.7.3.4 Correr SímbolosUna máquina <strong>de</strong> Turing pue<strong>de</strong> hacer espacio en su cinta al mover todos los símbolos no blancos un númerofinito <strong>de</strong> celdas hacia la <strong>de</strong>recha. Para ello, la cabeza se mueve hacia la <strong>de</strong>recha almacenando repetidamentelos símbolos leídos en celdas <strong>de</strong> más a la izquierda. La MT pue<strong>de</strong> entonces volver a las celdas vaciadas yescribir los símbolos que <strong>de</strong>see. Si hay espacio disponible, también es posible empujar grupos <strong>de</strong> símboloshacia la izquierda <strong>de</strong> manera similar.7.3.5 SubrutinasTal como suce<strong>de</strong> con programas, un diseño modular o “top-down” se facilita al usar subrutinas que <strong>de</strong>finenprocesos elementales. Una máquina <strong>de</strong> Turing pue<strong>de</strong> simular cualquier tipo <strong>de</strong> subrutinas encontradas enlenguajes <strong>de</strong> programación, incluso procedimientos recursivos y cualquiera <strong>de</strong> los métodos conocidos parapasar parámetros. Aquí sólo se <strong>de</strong>scribirá el uso <strong>de</strong> subrutinas sin parámetros y no recursivas, pero aún éstasson bastante po<strong>de</strong>rosas.La i<strong>de</strong>a general es escribir una parte <strong>de</strong> una MT que sirva como subrutina; ella tendrá un estado inicial yuno <strong>de</strong> regreso que momentáneamente no tendrá movidas y que se usará para efectuar el regreso a la rutinaque la llamó. Para <strong>de</strong>signar una MT que “llama” a la subrutina, un conjunto nuevo <strong>de</strong> estados para lasubrutina se llama y se especifica una movida para el estado <strong>de</strong> regreso. La llamada se efectúa entrando alestado inicial <strong>de</strong> la subrutina y el regreso, por la movida <strong>de</strong>finida para el estado <strong>de</strong> regreso.7.4 <strong>Lenguajes</strong> y Funciones ComputablesUn lenguaje aceptado por una máquina <strong>de</strong> Turing se llama enumerable recursivamente (recursively enumerableo r.e., en inglés). El término enumerable <strong>de</strong>riva <strong>de</strong>l hecho que son precisamente estos lenguajescuyos strings pue<strong>de</strong>n ser enumerados (listados) por una máquina <strong>de</strong> Turing. Recursivamente, es un términomatemático previo a la existencia <strong>de</strong> los computadores y su significado es similar a lo que se llama recursiónen ciencia <strong>de</strong> la computación. La clase <strong>de</strong> los lenguajes enumerables recursivamente es muy amplia e incluyecon propiedad a la clase <strong>de</strong> los lenguajes libres <strong>de</strong> contexto.La clase <strong>de</strong> los lenguajes enumerables recursivamente incluye algunos lenguajes para los que no se pue<strong>de</strong><strong>de</strong>terminar pertenencia en forma mecánica. Si L(M) es uno <strong>de</strong> esos lenguajes, entonces cualquier máquina<strong>de</strong> Turing que reconozca L(M) <strong>de</strong>be no <strong>de</strong>tenerse en algunos strings que no pertenecen al lenguaje. Siw ∈ L(M), M se <strong>de</strong>tendrá eventualmente en input w. Sin embargo, mientras M esté ejecutando en algúninput, no es posible saber si parará y aceptará si se la <strong>de</strong>ja ejecutar lo suficiente, o si M no se <strong>de</strong>tendránunca y correrá para siempre.Es conveniente singularizar un subconjunto <strong>de</strong> los conjuntos enumerables recursivamente, llamados losconjuntos recursivos, que son aquellos lenguajes aceptados por al menos una máquina <strong>de</strong> Turing que se<strong>de</strong>tiene en todos sus inputs, ya sea aceptando o no. Posteriormente se verá que los conjuntos recursivosson una subclase propia <strong>de</strong> los conjuntos enumerables recursivamente. Nótese también que por el algoritmoCYK, todo lenguaje libre <strong>de</strong> contexto es un conjunto recursivo.A<strong>de</strong>más <strong>de</strong> ser un dispositivo <strong>de</strong> aceptación, la máquina <strong>de</strong> Turing pue<strong>de</strong> verse como un computador <strong>de</strong>funciones <strong>de</strong> enteros a enteros. La forma tradicional es representar los enteros en unario; es <strong>de</strong>cir, i ≥ 0 serepresenta por el string 0 i . Si una función tiene k argumentos, i 1 , i 2 , . . . , i k , entonces estos enteros se poneninicialmente en la cinta separados por 1’s, como: 0 i1 10 i2 1 . . . 10 i k.

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

Saved successfully!

Ooh no, something went wrong!