LFP Practica1
-
Upload
luis-jimenez -
Category
Documents
-
view
128 -
download
4
Transcript of 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
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
{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.
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
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.
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.