Está en la página 1de 6

Universidad de San Carlos de Guatemala Facultad de Ingeniera Escuela de Ciencias y Sistemas Catedrtico. Ing. Cristian Lavarreda Aux.

Juan Jos Grajeda Cuesi Seccin: B+

Practica 1 - Algoritmo Subconjuntos y Optimizacin AFD


Objetivos Entender el proceso de conversin de un AFN a un AFD Aprendizaje del mtodo de Subconjuntos Conocer y aplicar la optimizacin sobre un AFD Descripcin: Se debe realizar un programa que realice la conversin de un AFN un AFD por medio del mtodo de subconjuntos, y que luego sea realizada la optimizacin sobre el AFD obtenido. Para ello el programa deber solicitar los siguientes datos: Lista de Alfabeto: Ingresar el alfabeto es decir los caracteres utilizados en las transiciones entre estados. Lista de Estados de aceptacin: Ingresar cuales son los estados de aceptacin en el AFN Tabla de transiciones: En esta tabla se debe ingresar las transiciones del AFN indicando desde que estado parte a que estado llega y el elemento de su transicin. Las transiciones psilon deben indicarse con su nombre es decir epsilon. Los estados deben indicarse con nmeros. La tabla debe ser llenada de forma grafica. Ejemplo de tabla para una gramtica (a|b)*abb

Estado Inicial Estado Fin 0 1 0 7 1 2 1 4 2 3 4 5 3 6 5 6 6 1 6 7 7 8 8 9 9 10

Elemento de transicion epsilon epsilon epsilon epsilon a b epsilon epsilon epsilon epsilon a b b

Teniendo estos datos ingresados se proceder a realizar lo siguiente. Mostrar el dibujo del AFN (autmata finito no determinista) Ejemplo

Luego de mostrarlo se debe aplicar el algoritmo basado en el mtodo de subconjuntos (El cual le ser dado en python). Luego de aplicar el algoritmo se debe mostrar lo siguiente. Mostrar la Tabla de transiciones AFD (autmata finito determinista) ESTADO DEL AFN {0, 1, 2, 4, 7} ESTADO DEL AFD S0 a S1 b S2

{1, 2, 3, 4, 6, 7, 8} {1, 2, 4, 5, 6, 7} {1, 2, 4, 5, 6, 7, 9} {1, 2, 3, 5, 6, 7, 10} Mostrar el dibujo del AFD

S1 S2 S3 S4

S1 S1 S1 S1

S3 S2 S4 S2

Al mostrar la tabla de transiciones y el autmata, el programa deber ser capaz de ver si es ptimo si no lo es indicar si se desea que se optimice, si el usuario indica que si, se proceder a realizar la optimizacin y se deber mostrar lo siguiente: Mostrar la Tabla de transiciones AFD optimizada ESTADO DEL AFD S0 S1 S3 S4 Mostrar el dibujo del AFD optimizado. a S1 S1 S1 S1 b S0 S3 S4 S0

Descripcin del algoritmo mtodo de subconjuntos: El algoritmo est escrito en python, el programa recibe un archivo de texto el cual contiene en la primer lnea el alfabeto separados por comas, la segunda lnea los estados de aceptacin separados por comas y de la tercer lnea en adelante se encuentran las transiciones separadas por comas, donde la primera posicin es el estado de donde parte el segundo dato es el estado hacia dnde va y el tercer dato es el carcter con el cual realiza la transicin. Para la ejecucin del archivo se debe hacer lo siguiente (primero tener instalado python) Escribir en consola python MetodoSubconjuntos.py Ingresar la ruta o nombre del archivo luego de hacerlo y presionar Enter, mostrara lo siguiente

Mostrara las transiciones de un estado de partida a un estado de llegada con el carcter de la transicin. Los estados de parntesis doble son estados de aceptacin. Si se desea conocer la tabla de transiciones u otra estructura utilizada en el algoritmo. Pueden escribir dentro del cdigo por ejemplo print tabla_trans_afd Y les mostrara la estructura con la informacin de la tabla. Los archivos sern adjuntados. A utilizar: S.O. a utilizar libre IDE: Netbeans, Eclipse, JCreator, Notepad. (este queda a discrecin del estudiante). Lenguaje de programacin Java API para dibujar el autmata puede ser Graphviz o alguna otra herramienta Pueden utilizar la librera Java util ( java.util ). Datos importantes: No hay prorroga Si se encuentran copias se pondr una nota de 0. Si se usa solamente una clase se calificara sobre 70% Se debe trabajar individualmente. La calificacin de la prctica es personal y deber realizarse el da acordado para su respectiva entrega y calificacin. El mtodo de subconjuntos se le entregara hecho en python y est a discrecin del estudiante pasar este algoritmo a Java o realizar el propio. Si hay algn error en el algoritmo informarlo. La optimizacin del AFD debe ser investigada por el estudiante. Entregables: Debe entregarse un CD con los datos del estudiante y tener las siguientes carpetas Cdigo fuente: Aqu deber estar el proyecto con sus fuentes Ejecutable: El archivo ejecutable y las libreras de las cuales depende Documentacin: Manual tcnico y usuario.

Fecha de entrega: Sbado 18 de Agosto a las 9:00am frente a la escuela de sistemas. No hay prorroga. El fecha, lugar y hora de la calificacin se les estar informando.