Ich arbeite an einem Diagrammeditor. Diagramme zeigen 2D-Formen ( Knoten ) an, die mit Verbindern ( Kanten ) verbunden sind.
Ich möchte eine Operation hinzufügen, die sie bei einer Auswahl von Knoten "entwirrt" : Sie positioniert sie neu, um die Anzahl der sich kreuzenden Kanten nach Möglichkeit zu verringern (und es ist in Ordnung, wenn die Kanten mit Biegepunkten gezeichnet werden müssen). .
Ich möchte also einen Graph-Algorithmus, der bei einer ( topologischen ) Graph-Einbettung und einer Teilmenge seiner Knoten die Einbettung (seine Topologie ) nur auf diesen Knoten modifiziert , um die Anzahl der sich kreuzenden Kanten zu minimieren.
Nach dem Lesen über Apex-Diagramme und dem Durchsuchen von Cabello und Mohar (2013) ist dieses Problem vermutlich NP-schwer. Ich bin also mit einem parametrisierten Algorithmus (z. B. der Anzahl der Kreuzungskanten) zufrieden, der für jeden gegebenen Parameterwert eine bekannte polynomielle Zeitkomplexität aufweist. Dies scheint machbar, aber ich finde es nicht einfach, selbst einen solchen Algorithmus zu entwickeln.
Fragen:
- Wo suche ich nach einem solchen Algorithmus?
- Existiert es?
- In vorhandener Software?
- Gibt es bedeutende praktische Erfahrungen mit einer solchen Operation? (Was theoretisch gut aussieht, ist in der Praxis möglicherweise nicht so gut oder umgekehrt.)
(Ich bin mir nicht sicher, wo ich diese Frage am besten stellen soll: hier auf StackOverflow oder MathOverflow?)