Está en la página 1de 4

Proyecto Análisis y Diseño de Algoritmos

El presente proyecto pretende estudiar el manejo de algoritmos sobre grafos haciendo un análisis
de algunos algoritmos en el ámbito de problemas de optimización. El funcionamiento de cada
algoritmo estudiado se representará en la máquina mediante un simulador para poder observar
los resultados de ejecución de forma más exacta.
Se implementará, para el estudio de los problemas de procesamiento de grafos, un simulador
didáctico con el cual el usuario podrá analizar los posibles resultados de diferentes algoritmos para
resolver el problema de partición de grafos. Esto será de gran beneficio para quien haga uso del
aplicativo creado con este proyecto, al poder ejecutar y comparar varios algoritmos, midiendo las
respuestas y comportamientos, así como el tiempo de respuesta real y teórico, entre otros.

El sistema debe ser desarrollado en el lenguaje de programación Python y deberá tener una
interfaz gráfica de usuario en entorno web. Dicha interfaz gráfica deberá contar con todas las
opciones para que el usuario cargue grafos desde archivos si así lo desea (en formato JSON) o
simplemente crearlo manualmente. La información que se cargue al sistema (desde archivo o
manualmente) y los resultados generados a raíz de la ejecución de un algoritmo en particular
deberán ser almacenados en base de datos con el fin de mantener un histórico de las ejecuciones
y poder comparar los resultados entre los diferentes algoritmos por ejemplo para un mismo grafo.
Se recomienda utilizar la base de datos mongodb (mongodb Atlas) debido a su dinamismo por ser
NoSql.
La aplicación consistirá en un simulador didáctico para la aplicación de algoritmos de partición
sobre grafos como se explica a continuación:
El simulador permitirá diseñar un grafo agregando o eliminando nodos, permitiendo manejar
parámetros de entrada como el tipo de grafo a generar, los algoritmos a utilizar, las consultas que
se desplegarán al ejecutar el algoritmo, etc. Con esto se podrá analizar los resultados del
algoritmo que se probará para el grafo teniendo en cuenta los parámetros y experimentando con
posibles configuraciones, pesos, etc. También se tendrá la opción de dejar que la aplicación
genere el grafo automáticamente con determinados valores (cantidad de nodos, cantidad de
arcos, etc). El simulador también permitirá guardar y modificar los grafos, si así lo desea el
usuario. El simulador mostrará de forma gráfica tanto el grafo generado como el análisis del
algoritmo que usará el grafo. El simulador permitirá exportar el grafo a Excel o como imagen.
El menú principal de la aplicación se describe a continuación:

Barra de Menús
Menú  Submenú 1 Submenú 2 Submenú 3 Descripción
Principal
Archivo Nuevo grafo Personalizado   Esta opción permite
crear un grafo
personalizado acorde a
las preferencias del
usuario
Aleatorio   Esta opción permite
crear un grafo aleatorio
(nodos aleatorios, arcos
aleatorios, costos y tipo
de grafo)
Abrir     Permitirá abrir grafos
guardados en formato
XML
Cerrar     Permitirá cerrar el
espacio de trabajo actual
Guardar     Permitirá guardar el
grafo actual en formato
XML/JSON y también en
base de datos.
Guardar como     Permitirá guardar el
grafo actual en formato
XML/JSON y dar un
nombre al archivo
Exportar datos Excel   Exportará el grafo en
formato xlsx
Imagen    Exportará el grafo a
imagen png y jpeg
PDF Se exportará una
imagen del grafo,
además de una tabla
con el resumen de los
resultados y los datos de
la ejecución.
Importar datos     Importa datos desde
formato JSON o XML. o
desde uno previamente
almacenado en base de
datos.
Inicio     Llevar al inicio del
sistema donde se
deberá mostrar un
listado de todas las
ejecuciones realizadas
hasta el momento por el
usuario en sesión.
Imprimir     Manda a la impresora el
grafo como PDF con la
información resumen de
la ejecución.
Editar Deshacer     Opción para deshacer el
cambio más reciente
Nodo Agregar   Opción para agregar un
nodo al grafo
Editar   Opción para editar el
nodo seleccionado
Eliminar   Opción para eliminar el
nodo seleccionado
Arco Agregar   Opción para agregar un
arco
Eliminar   Permite eliminar un arco
Editar   Permite editar un arco
Analizar Algoritmos Algoritmo 1    Este pedirá …

Algoritmo 2    Este pedirá …


Algoritmo 3    Este pedirá …
Algoritmo 4    Este pedirá …

.
Algoritmo k    Este pedirá …

Herramienta Ejecución     permitirá empezar a


ejecutar la aplicación
seleccionada del menú
Aplicaciones
Aplicación Aplicación1      

Aplicación 2      

Aplicación m      
Ventana Gráfica     permite ver el grafo en
modo gráfico
Tabla     permite ver una ventana
con la matriz de
representación del grafo
Ayuda Ayuda     mostrará manual de
usuario
Acerca de Grafos     datos sobre la aplicación
Grafos

El simulador permitirá al usuario crear su propio grafo bien sea de forma manual o aleatoria,
agregando o eliminando nodos, eligiendo el tipo de grafo deseado y verificándolo. Se permitirá al
usuario definir las características del grafo a crear, como el tipo, el número de nodos, si es dirigido
o no, etc. Se dará la posibilidad de crear el grafo manualmente añadiendo tantos nodos como se
desee, al final el sistema permitirá al usuario validar si su grafo es correcto de acuerdo con las
características seleccionadas. También el sistema podrá crear el grafo automáticamente
(aleatorio), para lo cual el usuario podrá escoger las propiedades del grafo a generar (dirigido,
ponderado, convexo, multigrafo). De cualquier forma, el editor deberá permitir, adicionalmente
usar menús contextuales para agregar, eliminar renombrar, nodos y/o arcos. Además, Los nodos
deberán poder moverse fácilmente con el ratón pulsando el botón izquierdo sobre el nodo y
manteniéndolo pulsado mientras se mueve el ratón.
Cuando el grafo esté creado, estará listo para la siguiente etapa del proyecto y el usuario podrá
ejecutar algún algoritmo en la opción del menú Analizar – Algoritmo y entonces se mostrará
activa la lista de algoritmos disponibles (algo similar a como se muestra en la siguiente imagen):

El proyecto se enfocará principalmente en la funcionalidad pero la Interfaz Gráfica de Usuario será


muy importante como forma de entrada de datos y presentación de resultados.
En el proyecto deben tener en cuenta:
- Definir herramientas a emplear
- Etapa de análisis:
o Definición de requerimientos
o Casos de uso
o Casos de prueba
- Etapa de diseño:
o Diseño de datos
o Diseño de arquitectura
o Diseño de interfaz
o Diseño del software
- Etapa de desarrollo
o Configuración del ambiente de desarrollo
o Desarrollar algoritmos en Python
o Desarrollar aplicación
o Creación de documentación técnica
- Etapa de pruebas
o Pruebas de integración
o Pruebas de requerimiento
o Pruebas de estrés
- Etapa de implementación
o Documento de configuración
o Documento de manual de usuario

Nota importante: se debe desarrollar el componente de los algoritmos y su ejecución y lógica de


resultados en un archivo totalmente separado, dicho archivo se llamará “algorithms.py” de tal
manera que se vea como una librería que se pueda reutilizar.

También podría gustarte