Szukam algorytmu do rysowania mieszanego wykresu okręgów / zależności (dla aplikacji językowych). Taki wykres miałby dwa różne typy wierzchołków (tokeny, węzły) i dwa różne typy krawędzi (hierarchiczne, niehierarchiczne).
Jestem nowy w teorii grafów i algorytmach w ogóle i mam nadzieję, że to pytanie nie koliduje np. Z wymaganiami dotyczącymi tej strony na poziomie badań. Powinien jednak zasadniczo wchodzić w zakres cstheory .
Wykres musiałby być narysowany od dołu (myślę), ponieważ wszystkie tokeny powinny być wyświetlane z tą samą współrzędną y, a współrzędne y węzłów grupujących tokeny i / lub węzły w elementach będą musiały być obliczane dynamicznie, np. najdłuższą drogą do tokena.
Hierarchiczne krawędzie (używane do grupowania tokenów / węzłów w składniki) powinny mieć minimalną liczbę punktów zgięcia (najlepiej 0), ale powinna również istnieć minimalna liczba skrzyżowań, zastępując w razie potrzeby poprzednie wymaganie.
Krawędzie niehierarchiczne (używane w zależnościach) powinny mieć minimalną liczbę skrzyżowań i być rysowane jako krzywe Béziera.
Kolejną najlepszą rzeczą, na jaką się natknąłem, jest algorytm opisany przez Buchheim i in. , ulepszając algorytm Walkera do działania w czasie liniowym.
Daj mi znać, jeśli zaistnieje potrzeba poprawy mojego pytania i z góry dziękuję za wszelkie wskazówki.
EDYTOWAĆ:
Jak wskazano w komentarzu, powinienem wspomnieć, że zasadniczo chcę domyślnego układu graficznego algorytmu, który - na dłuższą metę - chcę edytować i poprawiać w ramach możliwości Eclipse GEF . Wcześniej szukałem opcji, aby Graphviz działał z GEF, ale wydaje się, że nie ma działającego rozwiązania, które zachowałoby wszystkie funkcje edycyjne odziedziczone po GEF.