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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

XI Jornadas <strong>de</strong> Enseñanza Universitaria <strong>de</strong> la Informática 337en la posición <strong>de</strong> S i. Estas configuraciones generanm hilos <strong>de</strong> ejecución in<strong>de</strong>pendientes y, como es costumbreen los autómatas in<strong>de</strong>terministas, si uno <strong>de</strong>ellos acepta la entrada se dice que el programa aceptala entrada.Ejemplo 11. Queremos construir un programa queimplemente un autómata <strong>de</strong> pila para el lenguaje <strong>de</strong>la gramáticaP → pBfB → IB | λI → i | sBg | mBh.Esta gramática es una simplificación <strong>de</strong> la <strong>de</strong> los bloques<strong>de</strong> un programa y por eso tiene gran importancia.Usando el teorema que permite construir un autómata<strong>de</strong> pila no <strong>de</strong>terminista para una gramática[4, 1], tenemos el siguiente programa in<strong>de</strong>terminista.Una variable <strong>de</strong> la cima <strong>de</strong> la pila se reemplazapor cada una <strong>de</strong> sus posibles partes <strong>de</strong>rechas. Hay unhilo <strong>de</strong> ejecución diferente e in<strong>de</strong>pendiente para cadaposible reemplazo.programa recProg(ent)pila:vector1 escr(acepta,1)2 apilar(P)3 mientras vacía()=0 yleer(acepta)=1 haga4 si cima() = P ent5 <strong>de</strong>sapila()6 apila_pal(pBf)7 si_no8 si cim() = B ent9 <strong>de</strong>sapila()10 paralelo11 apila_pal(IB)12 con13 fparalelo14 si_no15 si cim() = I ent16 <strong>de</strong>sapila()17 paralelo18 apila_pal(i)19 con20 apila_pal(sBg)21 con22 apila_pal(mBh)23 fparalelo24 si_no25 si cim() en {p,f,i,s,g,m,h} ent26 si cim() = leer(ent) ent27 <strong>de</strong>sapila()28 <strong>de</strong>r(ent)29 si_no30 escr(acepta,0)31 fsi32 fsi fsi fsi fsi36 fmientras37 si leer(ent) /= # ent38 escr(acepta,0)39 fsi40 findon<strong>de</strong> el con <strong>de</strong> la instrucción 12 no hace nada porqueno se tiene que apilar nada en el caso B → λ.Aunque es una solución simple y directa basadaen la gramática es muy ineficiente por el no <strong>de</strong>terminismo.En este caso, es posible dar un programa<strong>de</strong>terminista que reconozca el lenguaje haciendo unaobservación importante: si se pue<strong>de</strong> <strong>de</strong>terminar cuál<strong>de</strong> las producciones se tiene que usar, en función <strong>de</strong>la entrada, entonces el bloque <strong>de</strong> paralelismo se pue<strong>de</strong>evitar.Nos <strong>de</strong>tenemos aquí esperando haber convencidoal lector <strong>de</strong> la facilidad <strong>de</strong> entendimiento que programascomo los anteriores tienen, en contraste con lastransiciones con estados las cuales requieren un dobleesfuerzo.4. DiscusiónHemos <strong>de</strong>finido equivalentes estructurados <strong>de</strong> máquinas<strong>de</strong> <strong>Turing</strong>, máquinas <strong>de</strong> <strong>Turing</strong> in<strong>de</strong>terministasy autómatas <strong>de</strong> pila. Las <strong>de</strong>finiciones permiten darlos mismos resultados teóricos tradicionales pero conla motivación adicional <strong>de</strong> ser más accesibles para losestudiantes <strong>de</strong>bido a su carácter estructurado.Estos conceptos se han usado por primera vez enuna asignatura <strong>de</strong> autómatas y lenguajes formales <strong>de</strong>este año. El resultado ha sido interesante: los estudiantesestán activos y atentos a hacer comentariossobre mejoras al programa o dudas sobre las operaciones;los estudiantes se sienten seguros al hacerpreguntas y comentarios. A<strong>de</strong>más, durante la <strong>de</strong>mostración<strong>de</strong> la in<strong>de</strong>cidibilidad <strong>de</strong>l problema <strong>de</strong> la parada,la contradicción les parecía que se <strong>de</strong>bía a una especie<strong>de</strong> error <strong>de</strong> programación superable porque no

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

Saved successfully!

Ooh no, something went wrong!