Todos los proyectos
Núm. 83er lugar · Expo Ingenierías 2025
Visualizador Fork/Join de DAGs
Grafos de precedencia y programación paralela
- Mi rol
- Autor del repositorio
- Periodo
- Ago – dic 2025
El problema
En programación paralela, un grafo de precedencia indica qué tareas pueden correr al mismo tiempo y cuáles tienen que esperar a otras. Pasar ese grafo a instrucciones FORK/JOIN a mano es mecánico y fácil de equivocar, y en papel cuesta ver cómo avanzan las ramas.
Qué construí
Un visualizador en JavaFX, 1,080 líneas de Java en 4 clases, que obtuvo el 3er lugar en la categoría Desarrollo de prototipo digital de la Expo Ingenierías agosto-diciembre 2025.
- Carga grafos escritos como matrices de adyacencia. El repositorio trae 4 ejemplos, de 3 a 11 nodos.
- Dibuja el grafo por niveles: cada nodo queda en el nivel de su camino más largo desde una raíz, así las tareas que pueden correr juntas quedan en la misma fila.
- Genera pseudocódigo FORK/JOIN: un nodo con más de 1 sucesor abre un FORK, uno con más de 1 predecesor es un JOIN con su contador (
CONTn := ramas), y las ramas se enlazan con GOTO. Es pseudocódigo, no código deForkJoinPoolde Java. - Anima la ejecución: resalta los nodos y las líneas del pseudocódigo a medida que avanza cada rama.
Arquitectura
Resultados
El reconocimiento de la Expo es el único resultado externo; no hay métricas de uso. Publiqué el código en GitHub el 10 de diciembre de 2025, en 6 commits.
Límites conocidos
- No valida ciclos: si el grafo tiene uno, el generador no termina o falla (
ForkJoinGenerator.java:69-75). - Las rutas a los archivos de grafos son rutas absolutas de Windows, así que no corre en otra máquina sin editar el código.
- El README promete validación de grafos y generación de código Java Fork/Join, y el código no hace ninguna de las dos. Hay que corregirlo.
- No hay tests.