[S] Algo. für Netzwerkvisualisierung

DelphiKing

King with a crown
ID: 46719
L
20 April 2006
6.554
729
Aloha,

ich würde mir gerne eine Grafik basteln, die die Kontakte/Beziehung von Usern untereinander visualisiert ... und zwar ziemlich genau wie hier:
https://ircstats.ashes2ashes.de/iSpy/pl0g.de/pl0g.de-current.png (wahllos bei google rausgesucht).

Nicht für IRC jetzt, aber sonst ganz ähnlich (nur halt statt "x hat mit y 123 Nachrichten geschrieben" eine andere Grundlage als "123 Nachrichten").

Gibts da einen speziellen Algorithmus zur möglichst optimalen Positionierung der Knoten und der Pfade? Bräuchte da ein paar Denkanstöße...

Grüße
flo
 
Naja, gar kein spezielles Programm oder Protokoll.. weil ich suche ja keine Software sondern möchte die mir erst basteln (zur Visualisierung der Kontakte von Usern auf einer Webseite..)
Sollte ja ansich unabhängig vom konkreten Einsatz sein ... ob ich jetzt Daten über ausgetauschte Nachrichten (s.o. bei IRC) habe oder einen anderen Faktor (z.B. "hat Userseite aufgerufen") ist ja ansich wurst.. so oder so hab ich dann ein Netz von Usern die sich kennen, mehr oder weniger gut (aka "Mehr oder weniger oft die Userpage besucht")...

Die Daten hab' ich also letztendlich aus ner DB...
 
Theoretisch müsstest du dir dann ein Punktesystem überlegen und
in einer MM-Tabelle die Beziehungen erstellen und die Zähler setzen.
 
Jaa, so ne Tabelle macht Sinn.. nur wie kriege ich die Beziehungen dann ordentlich grafisch dargestellt.. so dass der Platz ideal ausgenutzt wird und net in einem Eck ein riesen Knollen ist und der Rest leer, nur weil ein User sehr viele Kontakte hat und der andere fast keinen ... hat sich da niemand eine tolle/perfekte Lösung ausgedacht und aufgeschrieben? ^^
 
Du muesstest dir ne Summe ausrechnen, wieviel Anhaengsel an einem Knoten dranhaengt. Quasi rekursiv zusammenzaehlen (Tiefe 3 oder so abbrechen, du willst ja nicht ewig viel), a) wie viele Kanten weggehen (Platzbedarf) und b) wie dick die Kante is (damit du ne maximale Strichdicke berechnen kannst, z.B. maxPoints entsprich 5px Dicke => x Points entsprechen dann 5px * x / maxPoints).

Dann schnappst du dir die x dicksten Knoten und verteilst diese entsprechend. Den Platz, den sie in etwa brauchen, hast du ja bereits.

Nur als Denkanstoss, kp, ob das wirklich funktioniert.
 
Klingt ziemlich sclau .. werd mich also wohl doch mal daheim hinsetzen und wild drauf los programmieren/testen .. finde das ein spannendes Thema :)

Danke euch beiden auf jeden Fall schonmal...