Gráf+(adattípus)

Vizualizáció
A gráfok átlátható elrendezése alapvető kérdés. Nem szükséges, hogy a gráfok manuálisan (húzogatással is átrendezhetőek) legyenek A megjelenítés közelítő eljárással történjen.

Elrendezés szempontjai

 * A gráf beleférjen az adott terjedelmű téglalapba.
 * Két összekötött csúcs közötti vonalon ne legyen csúcs
 * Az összekötött csúcsok egymástól egyenletes távolságban legyenek.
 * A nem összekötött csúcsok ennél távolabb legyenek.
 * Kisebb súlyú, hogy a csúcsok szomszédai egyenletesen elosztott szögekben álljanak (átlagosabb alakú gráfok esetén ez következik a fentiekből)

Egyszerű erőalapú rendezés
A csúcsokat véletlenszerűen helyezzük el. Minden egyes közelítő lépésben elvégzi az alábbiakat: Kiszámolja az összekötött élek átlagos távolságát (legyen ez ÖAT). Az összekötött élek az ÖAT-től való különbségük alapján lineárisan húzó illetve tolóerőt kapnak. Az összekötetlen élek az ÖAT-hoz képest vett távolságuk alapján négyzetesen gyengülő tolóerőt kapnak. Minden csúcs a rá ható erők eredője alapján mozog.
 * Hátrányok**: Ha szerencsétlen az eredeti elrendezés, akkor a taszító erők gátja megakadályozhatja.
 * Fejlesztés**: Már a kezdeti elrendezésben is közel rakni egymáshoz a gyermekeket. Esetleg némi véletlenszerűség az erők mértékében segítheti a lokális gátak átlépését.
 * Implementáció**: Nagyon primitív megvalósítás javában [|itt], inkább a nyelv, mint az algoritmus próbálgatására.

Források

 * [|Itt] találhatóak általános információk a gráfok rendezéséről.
 * Az yFiles java alapú gráfkezelési könyvtár fejlesztői dokumentációja [|itt].
 * [|Itt] az erőalapú közelítő algoritmus
 * Sok általános implementáció van hozzá, [|itt] pl a boost-é.
 * Van még pár doksi, amit találtam, csak még át kell őket néznem.