Overview

AMorph

Nota: Una versión el línea de este documento puede encontrase en: http://miguelerm.bitbucket.org/doc/amorph/requerimientos.html

Descripción del proyecto

AMorph es una aplicación cuyo objetivo principal es poder convertir un Autómata Finito No Determinista con Transiciones Lambda (AFN-lambda) a un Autómata Finito Determinista (AFD) equivalente.

Este proyecto nace únicamente por propósitos académicos, para poder presentarlo como proyecto final de la cátedra "Lenguajes Formales y Autómatas" de la carrera de "Ingeniería en Sistemas de Información" de la "Universidad Mariano Gálvez de Guatemala".

El código fuente se podrá descargar desde el repositorio de AMorph en bitbucket.org: https://bitbucket.org/miguelerm/amorph/.

Acerca del autor

  • Nombre: Miguel Eduardo Román Martínez
  • Carnet: 090-03-4873
  • Twitter: @miguelerm

Licenciamiento

El proyecto está licenciado bajo licencia Apache 2.0 como lo especifica el siguiente mensaje:

Copyright 2011 Miguel Eduardo Román Martínez

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Acerca del proyecto

Como requerimientos específicos del proyecto, la aplicación debe poseer el siguiente funcionamiento:

Se le debe de especificar la ruta de un archivo con extensión “.txt” que contendrá la definición de un AFN-lambda como se indica a continuación:

  • En la primera línea del archivo se definirán los estados del autómata separados por comas, encerrados entre llaves y precedidos por la letra 'Q' y el signo "igual que".

    Q = {A, B, C, D}
    
  • En la segunda línea del archivo se definirán los símbolos del alfabeto aceptado por el autómata, separados por comas, encerrados entre llaves y precedidos por la letra 'F' más el signo "igual que".

    F = {0, 1}
    
  • En la tercera línea del archivo se definirá el estado inicial del autómata, precedido por la letra 'i' más el signo "igual que".

    i = A
    
  • En la cuarta línea del archivo se definirán los estados de aceptación del autómata, separados por comas y precedidos por la letra 'A' más el signo "igual que”.

    A = {D}
    
  • En la quinta línea se definirá la tabla de transiciones del autómata encerrada entre llaves, precedida por la letra 'W' más el signo "igual que" y dentro de las llaves, las transiciones separadas por comas y entre paréntesis; dentro de cada paréntesis se especificarán los tres elementos de la transición separados por comas (el estado origen, el símbolo y el estado destino). Si existe una transición con símbolo lambda, se indicará con una letra 'e'.

    W = {(A, 0, A), (A, e, B), (B, 0, C), (C, 1, B), (B, e, D), (D, 0, D)}
    

Ejemplo de la definición de un AFN-Lambda

Q = {A, B, C, D}
F = {0, 1}
i = A
A = {D}
W = {(A, 0, A), (A, e, B), (B, 0, C), (C, 1, B), (B, e, D), (D, 0, D)}

La representación gráfica del autómata definido en este ejemplo es la que muestra la siguiente imágen:

Autómata Finito No Determinista con transiciones Lambda

Herramientas y tecnología utilizadas

AMorph está desarrollado utilizando el lenguaje de programación C# de la plataforma Microsoft .Net.

Para la realización de pruebas unitarias se utilizó el Framework NUnit.

Como IDE se utilizó Visual Studio 2010.

Para el control de versiones se utilizó Mercurial y el repositorio se encuentra hospedado en bitbucket.org.

Y para elaborar el presente documento se utilizó la sintaxis Markdown.