Estoy trabajando en un editor de diagramas. Los diagramas muestran formas 2D ( nodos ) conectadas con conectores ( bordes ).
Me gustaría agregar una operación que, dada una selección de nodos, los "desenrede" : los reposiciona para reducir el número de bordes cruzados, si es posible (y está bien si los bordes tendrán que dibujarse con puntos de curvatura) .
Entonces, quiero un algoritmo gráfico que, dada una incrustación gráfica ( topológica ) y un subconjunto de sus nodos, modifique la incrustación (su topología ) solo en esos nodos para minimizar el número de bordes cruzados.
Al leer sobre gráficos de ápice y navegar por Cabello y Mohar (2013) , supongo que este problema es NP-hard. Por lo tanto, estaré contento con un algoritmo parametrizado (por ejemplo, en el número de bordes cruzados) que tiene una complejidad de tiempo conocida, polinómica, para cualquier valor de parámetro dado. Esto parece factible, pero no me resulta fácil crear un algoritmo por mi cuenta.
Preguntas:
- ¿Dónde busco tal algoritmo?
- ¿Existe?
- En el software existente?
- ¿Existe alguna experiencia práctica significativa con tal operación? (Lo que se ve bien en teoría puede no ser tan bueno en la práctica, o viceversa).
(No estoy seguro de dónde hacer esta pregunta: ¿aquí, en StackOverflow o MathOverflow?)