domingo, 5 de mayo de 2013

Casi tengo programado al completo el AFD mínimo...

Esta mañana he dejado casi al completo el algoritmo que pasa de un AFD a AFD mínimo. La fase de prueba no la ha superado. Funciona perfectamente para las ER de dígito, natural, entero positivo, entero negativo y entero, cuando agrego la ER de real positivo... ya algo falla. Alguna tontería. Nada, sentarse y buscar el fallo.

He querido hacer una comparativa entre lo que ya funciona. Para las expresiones antes citadas el ANDL genera 398 estados, el AFD 190 siendo una compresión del 52.26% y el AFD mínimo genera 43 estados siendo una compresión del 89,19%. Son unos resultados muy prometedores, pero hasta que no esté completamente probado no puedo hacer la comparativa general con todas las ER insertadas y comprobar los tiempos de procesado y estados generados.

Para cuando esté resuelto, se me han ocurrido ciertas mejoras que podrían agiliar el procesado:
  • No realizar el AFD mínimo de aquella AFD cuya expresión ER tenga menos de 3 caracteres, ya será mínimo.
  • Para acelerar el proceso de AFD a AFD mínimo he pensado el repartir el peso del AFNDL en otros tres. Uno que sólo contenga las ER que correspondan a números, es decir cuyo alfabeto sea 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, - y el punto. Otro con las letras del abecedario, minúsculas, mayúsculas y acentuadas y por último aquellas ER que sean un pupurrí de números, letras y otros símbolos. Como para calcular los AFD mínimos para cada estado se compueba todas las letras de su alfabeto, al separarlos en estos tres grupos se evitará estar comprobando los números en una ER que sean de sólo letras, ahorrando muchos pasos del proceso, memoría y tiempo. Esto debe de ser transparente al usuario.

No hay comentarios:

Publicar un comentario