13.07.2015 Views

Autómatas de Pila y Máquinas de Turing Estructurados Jairo Rocha

Autómatas de Pila y Máquinas de Turing Estructurados Jairo Rocha

Autómatas de Pila y Máquinas de Turing Estructurados Jairo Rocha

SHOW MORE
SHOW LESS

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

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

336 Fundamentos teóricos <strong>de</strong> la informáticaLos tres objetivos para enseñar autómatas <strong>de</strong> pilason: apren<strong>de</strong>r a usar autómatas <strong>de</strong> pila, hacer unreconocedor <strong>de</strong> programas que es útil a la hora <strong>de</strong> escribirprogramas que interpretan programas (programasuniversales), y ver más aplicaciones prácticas <strong>de</strong>programas.Definición 8 (Autómata <strong>de</strong> pila). Un autómata <strong>de</strong>pila se <strong>de</strong>fine como un programa <strong>de</strong> dos vectores, el<strong>de</strong> entrada y el <strong>de</strong> la pila. Se permiten solamente dosoperaciones en el vector <strong>de</strong> entrada: leer(ent) y<strong>de</strong>r(ent); en el vector pila se permiten las operacionesbásicas siguientes:vacía() que tiene el valor 1 si la pila está vacía,cima() que tiene el valor <strong>de</strong> la cima <strong>de</strong> la pila y no lamodifica,<strong>de</strong>sapila() que <strong>de</strong>sapila el símbolo <strong>de</strong> la cima <strong>de</strong> lapila, yapila_pal(w) que aña<strong>de</strong> a la pila cada uno <strong>de</strong> lossímbolos <strong>de</strong> una palabra w <strong>de</strong> manera or<strong>de</strong>nada,<strong>de</strong>jando el primer símbolo <strong>de</strong> la palabra a lacima <strong>de</strong> la pila.A<strong>de</strong>más, permitimos dos extensiones <strong>de</strong> la sintaxis:1. las condiciones <strong>de</strong> las instrucciones si ymientras pue<strong>de</strong>n contener operadores <strong>de</strong>conjunción y disyunción, y2. pue<strong>de</strong>n haber otras variables <strong>de</strong> una sola casillaque se pue<strong>de</strong>n leer y modificar <strong>de</strong> la mismaforma que la variable acepta.Las últimas extensiones nos permiten escribir programasmás claros aunque se podrían simular usandola variable acepta con muchos símbolos que representenotras variables y resultados <strong>de</strong> combinaciones<strong>de</strong> expresiones.Si la pila es vacía, el valor <strong>de</strong> cima es # y<strong>de</strong>sapila no tiene ningún efecto.Las configuraciones <strong>de</strong> programas nos permitenrepresentar los contenidos <strong>de</strong> la entrada y <strong>de</strong> la pila.Por ejemplo, con la instrucción apila_pal(abc)tenemos el paso(n, abc<strong>de</strong>, 3, Zfg, 3, 0) ⊢(n + 1, abc<strong>de</strong>, 3, Zfgcba, 6, 0)ya que la cima <strong>de</strong> la pila la representamos a la posiciónmás a la <strong>de</strong>recha. Es <strong>de</strong>cir, cima() tiene el valora en la última configuración, y <strong>de</strong>sapila() <strong>de</strong>rivaa la configuración (n+2, abc<strong>de</strong>, 3, Zfgcb, 5, 0).Ejemplo 9. Consi<strong>de</strong>remos el lenguajeL 2 = {w2w t | w ∈ {0, 1} ∗ }.Un programa con pila para este lenguaje es:programa rec_w2wt(ent)pila:vectorescr(acepta,1)mientras leer(ent) /= 2y leer(ent) /= # hagaapila_pal(leer(ent))<strong>de</strong>r(ent)fmientrassi leer(ent) = 2 ent<strong>de</strong>r(ent)si_noescr(acepta,0)fsimientras vacía() = 0y cima()=leer(ent) haga<strong>de</strong>sapila()<strong>de</strong>r(ent)fmientrassi vacía() = 0 o leer(ent) \= # entescr(acepta,0)fsifinCon el fin <strong>de</strong> <strong>de</strong>finir automatas <strong>de</strong> pila no <strong>de</strong>terministas<strong>de</strong>finimos instrucciones no <strong>de</strong>terministas, unaintroducción sencilla al paralelismo.Definición 10 (Programa in<strong>de</strong>terminista). Un programano <strong>de</strong>terminista, o in<strong>de</strong>terminista, es un programadon<strong>de</strong> se permiten instrucciones <strong>de</strong> la formaparaleloS1 con S2 con ... con Smfparalelodon<strong>de</strong> S1, S2, ..., Sm son instrucciones.La semántica intuitiva es que una configuraciónque ejecuta un bloque <strong>de</strong> paralelismo se convierte enm configuraciones in<strong>de</strong>pendientes, todas iguales endatos excepto por la posición <strong>de</strong> la siguiente instruccióna ejecutar: cada configuración i-ésima comienza

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

Saved successfully!

Ooh no, something went wrong!