LFP Practica1

6
Universidad de San Carlos de Guatemala Facultad de Ingeniería Escuela de Ciencias y Sistemas Catedrático. Ing. Cristian Lavarreda Aux. Juan José Grajeda Cuesi Sección: B+ Practica 1 - Algoritmo Subconjuntos y Optimización AFD Objetivos Entender el proceso de conversión de un AFN a un AFD Aprendizaje del método de Subconjuntos Conocer y aplicar la optimización sobre un AFD Descripción: Se debe realizar un programa que realice la conversión de un AFN un AFD por medio del método de subconjuntos, y que luego sea realizada la optimización 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 aceptación: Ingresar cuales son los estados de aceptación 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 transición. Las transiciones épsilon deben indicarse con su nombre es decir epsilon. Los estados deben indicarse con números. La tabla debe ser llenada de forma grafica. Ejemplo de tabla para una gramática (a|b)*abb

Transcript of LFP Practica1

Page 1: LFP Practica1

Universidad de San Carlos de Guatemala

Facultad de Ingeniería

Escuela de Ciencias y Sistemas

Catedrático. Ing. Cristian Lavarreda

Aux. Juan José Grajeda Cuesi

Sección: B+

Practica 1 - Algoritmo Subconjuntos y

Optimización AFD

Objetivos

Entender el proceso de conversión de un AFN a un AFD

Aprendizaje del método de Subconjuntos

Conocer y aplicar la optimización sobre un AFD

Descripción:

Se debe realizar un programa que realice la conversión de un AFN un AFD por medio

del método de subconjuntos, y que luego sea realizada la optimización 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 aceptación: Ingresar cuales son los estados de aceptación

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

transición. Las transiciones épsilon deben indicarse con su nombre es decir

epsilon. Los estados deben indicarse con números. La tabla debe ser llenada

de forma grafica.

Ejemplo de tabla para una gramática (a|b)*abb

Page 2: LFP Practica1

Estado Inicial Estado Fin Elemento de transicion

0 1 epsilon

0 7 epsilon

1 2 epsilon

1 4 epsilon

2 3 a

4 5 b

3 6 epsilon

5 6 epsilon

6 1 epsilon

6 7 epsilon

7 8 a

8 9 b

9 10 b

Teniendo estos datos ingresados se procederá a realizar lo siguiente.

Mostrar el dibujo del AFN (autómata finito no determinista)

Ejemplo

Luego de mostrarlo se debe aplicar el algoritmo basado en el método 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 (autómata finito determinista)

ESTADO DEL AFN ESTADO DEL AFD a b

{0, 1, 2, 4, 7} S0 S1 S2

Page 3: LFP Practica1

{1, 2, 3, 4, 6, 7, 8} S1 S1 S3

{1, 2, 4, 5, 6, 7} S2 S1 S2

{1, 2, 4, 5, 6, 7, 9} S3 S1 S4

{1, 2, 3, 5, 6, 7, 10} S4 S1 S2

Mostrar el dibujo del AFD

Al mostrar la tabla de transiciones y el autómata, 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 optimización y se deberá mostrar lo siguiente:

Mostrar la Tabla de transiciones AFD optimizada

ESTADO DEL AFD a b

S0 S1 S0

S1 S1 S3

S3 S1 S4

S4 S1 S0

Mostrar el dibujo del AFD optimizado.

Page 4: LFP Practica1

Descripción del algoritmo método de subconjuntos:

El algoritmo está escrito en python, el programa recibe un archivo de texto el cual

contiene en la primer línea el alfabeto separados por comas, la segunda línea los

estados de aceptación separados por comas y de la tercer línea en adelante se

encuentran las transiciones separadas por comas, donde la primera posición es el

estado de donde parte el segundo dato es el estado hacia dónde va y el tercer

dato es el carácter con el cual realiza la transición.

Para la ejecución 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

Page 5: LFP Practica1

Mostrara las transiciones de un estado de partida a un estado de llegada con el

carácter de la transición. Los estados de paréntesis doble son estados de

aceptación.

Si se desea conocer la tabla de transiciones u otra estructura utilizada en el

algoritmo. Pueden escribir dentro del código por ejemplo

print tabla_trans_afd

Y les mostrara la estructura con la información de la tabla.

Los archivos serán adjuntados.

A utilizar:

S.O. a utilizar libre

IDE: Netbeans, Eclipse, JCreator, Notepad. (este queda a discreción del

estudiante).

Lenguaje de programación Java

API para dibujar el autómata puede ser Graphviz o alguna otra herramienta

Pueden utilizar la librería 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 calificación de la práctica es personal y deberá realizarse el día acordado

para su respectiva entrega y calificación.

El método de subconjuntos se le entregara hecho en python y está a

discreción del estudiante pasar este algoritmo a Java o realizar el propio. Si

hay algún error en el algoritmo informarlo.

La optimización del AFD debe ser investigada por el estudiante.

Entregables:

Debe entregarse un CD con los datos del estudiante y tener las siguientes

carpetas

◦ Código fuente: Aquí deberá estar el proyecto con sus fuentes

◦ Ejecutable: El archivo ejecutable y las librerías de las cuales depende

◦ Documentación: Manual técnico y usuario.

Page 6: LFP Practica1

Fecha de entrega:

Sábado 18 de Agosto a las 9:00am frente a la escuela de sistemas. No hay prorroga.

El fecha, lugar y hora de la calificación se les estará informando.