Informe comparativo de simuladores de máquinas de Turing para la asignatura Complejidad Computacional.
Simuladores de Máquinas de Turing. Turing. (JFLAP, xTuringMachine, Uber Turing Machine.
!. "b#e$i%os del documen$o& El presente documento trata de una descripción comparativa entre simuladores que permiten emular la construcción y comportamiento de máquinas de Turing. Además de compararlos, se expondrán las ventajas e inconvenientes que amos aportan en cuanto a la usailidad y a la eficiencia y eficacia que presentan a la !ora de reali"ar el cómputo. #tras actividades que se reali"arán son la descripción de dos $áquinas de Turing espec%ficas y que son con las que se reali"aron las prueas de evaluación en los simuladores.
Al final del documento de redactará una reve conclusión que reflejará la opinión personal del autor en cuanto a cuál de los simuladores le parece mejor.
'. Máquinas de Turing Turing u$iliadas como )rueba& Considerando una Máquina de Turing Turing con ∑ = {1,2} {1,2} y una cadena de entrada en la cinta delimitada por símbolos blancos y la cabea de lectura!escritura situada sobre el símbolo de la cadena más a la derec"a# &
$áquina de Turing que encuentre el primer ' en la cadena !acia la i"quierda de la cae"a lectura(escritura.
Imagen)*
&
$áquina de Turing que encuentre dos ' consecutivos en la cinta !acia la i"quierda de la cae"a lectura(escritura. Imagen)'
*. Simuladores& *.!. Primer simulador& JFLAP +-A es un simulador que permite la creación de varios tipos de
/artilugios0 de cómputo, por ejemplo permite la creación de varios autómatas finitos, de gramáticas, y como no, de $áquinas de Turing.
*.!.!. +en$a#as& 1 -a principal ventaja que ofrece esta aplicación es la clara e intuitiva navegación ya que se produce de forma gráfica y atractiva a trav2s de las diversas opciones que ofrece, todas accesiles desde un men3 o ventana principal. 1 #tra ventaja in!erente a +-A es la capacidad de integrar diferentes simuladores en una misma aplicación sin necesidad de instalar un programa por cada tipo de simulador que necesitemos.
1 -as m3ltiples opciones que ofrece para reali"ar las simulaciones de cómputos son un plus a4adido al programa.
*.!.'. ncon%enien$es& 1 A pesar de integrar un amplio conjunto de !erramientas variadas, en lo referente a la simulación de $áquinas de Turing no ofrece grandes capacidades en cuanto a definir caracter%sticas propias de la $.T. por ejemplo, si queremos indicar que el cae"al de -(E está situado a la derec!a de la cadena y lee !acia la i"quierda, cometer%a errores5
E66#6 +-A Imagen )7
Como podemos oservar, ante las cadenas seleccionadas en la parte derec!a de la imagen, el resultado es /rec!a"ada0, este resultado no coincide con lo que deer%a ocurrir en la descripción de la $.T. del ejemplo *. Considero oportuno nomrar que camiando el tipo de movimiento !acia encontrar el primer /'0 a la derec!a, la $.T. reali"a el cómputo de d e forma correcta.
*.'. Segundo simulador& xTuringMachine xTuringMachine xTuring$ac!ine es un simulador de $áquinas de Turing, cuya descripción se corresponde con la de un simulador para una máquina de Turing fácil y accesile. Al igual que q ue +-A, está desarrollado en el lenguaje de programación +ava, pero no presenta las mismas caracter%sticas de usailidad que +-A.
*.'.!. +en$a#as& 1 -a principal ventaja que ofrece esta aplicación es que reali"a cómputos de forma correcta, controlada y permite además !acerlo de forma gráfica. 1 Como está especiali"ado en el cómputo de $áquinas de Turing y no en otro tipo de autómatas ni gramáticas, presenta una mayor interfa" dedicada a 3nicamente $.T. $.T.s y no nos distrae de dic!o modelo mod elo de cómputo. 1 -a interfa", a pesar de ser comprensile, no llega a ser del todo intuitiva, pero no lo considero una desventaja mientras compute de forma clara.
1 ermite la carga de la configuración de la $.T. $.T. y de la cadena de entrada para el cómputo desde un fic!ero externo con formato propio para que la aplicación pueda reali"ar el parseo. 1 -ogr2 solventar el prolema presente en la aplicación +-A al intentar simular una $T que comien"a la lectura a la derec!a y lee !acia la i"quierda.
*.'.'. ncon%enien$es& 1 Antes de utili"ar la aplicación, al ser una aplicación dedicada en su totalidad a simular el cómputo de máquinas de Turing, Turing, se tiene tiene la sensación de que va a poseer una mayor potencia y vamos a poder reali"ar una mayor descripción de la $.T, pero lo que sucede es que se trata de una aplicación muc!o más ásica que la anali"ada anteriormente 8+-A9. 1 -a definición de la máquina, a pesar de estar accesile toda desde la ventana principal, no es intuitiva y podr%a dar lugar a muc!os fallos a usuarios inexpertos. 1 :n 3ltimo inconveniente, y por ello no menos importante es que el conjunto de s%molos que reconoce la máquina está predefinido y no podemos usar otro, por ejemplo la siguiente imagen muestra.
Imagen);
3.3. Tercer simulador:
Uber Turing Machine.
:er Turing $ac!ine es un programa simulador de máquinas de Turing comercial de la empresa
*.*.!. +en$a#as& Tiene un alto nivel de configuración, creando una tala en la que las columnas son los s%molos definidos para la máquina y la filas son los estados que contiene. El estado inicial es el estado * 8primera fila de la tala de configuración9. El conjunto de s%molos posiles es muy alto y las transiciones se definen como sigue5 para la fila >8estado de origen9 y la columna ?8s%molo de lectura9, la casilla contendrá el s%molo de escritura, el movimiento a reali"ar y el estado al que transitar 8separados por un espacio9. -a cinta de entrada(salida se le configura el tama4o y los caracteres de entrada que va a contener.
*.*.'. ncon%enien$es& Traajar con talas es poco visual y un usuario poco !ec!o a las máquinas de Turing le resultar%a dif%cil y tedioso. -a ejecución por defecto es muy rápida y casi no se puede apreciar qu2 ocurre en la cinta. or 3ltimo destacar el informe de ejecución generado tras la misma, ofrece gran cantidad de información pero oscurece averiguar con facilidad algo tan ásico como saer si se !a terminado en un estado de aceptación o no.
@entana @entana principal del programa con el primer ejemplo de máquina creado.
6esultado de la ejecución de la máquina anterior.
@entana @entana principal del programa con el segundor ejemplo de máquina creado.
6esultado de la ejecución de la máquina anterior.