Pracuję nad edytorem diagramów. Diagramy przedstawiają kształty 2D ( węzły ) połączone ze złączami ( krawędziami ).
Chciałbym dodać operację, która, biorąc pod uwagę wybór węzłów, „rozplątuje” je: zmienia ich położenie, jeśli to możliwe, aby zmniejszyć liczbę przecinających się krawędzi (i jest w porządku, jeśli krawędzie będą musiały być rysowane za pomocą punktów zgięcia) .
Chcę więc algorytmu graficznego, który, biorąc pod uwagę ( topologiczny ) osadzanie wykresu i podzbiór jego węzłów, modyfikuje osadzanie (jego topologię ) tylko na tych węzłach, aby zminimalizować liczbę przecinających się krawędzi.
Czytając o wykresach wierzchołków i przeglądając Cabello i Mohara (2013) , przypuszczam, że ten problem jest trudny do rozwiązania. Będę więc zadowolony ze sparametryzowanego algorytmu (np. Liczby przecinających się krawędzi), który ma znaną wielomianową złożoność czasową dla dowolnej wartości parametru. Wydaje się to wykonalne, ale nie jest mi łatwo wymyślić taki algorytm.
Pytania:
- Gdzie szukać takiego algorytmu?
- Czy to istnieje?
- W istniejącym oprogramowaniu?
- Czy jest jakieś istotne praktyczne doświadczenie z taką operacją? (To, co w teorii wygląda dobrze, może nie być tak dobre w praktyce lub odwrotnie.)
(Nie jestem pewien, gdzie najlepiej zadać to pytanie: tutaj, na StackOverflow lub MathOverflow?)