2

Hier sind zwei verschiedene Möglichkeiten, die gleiche Hierarchie zu zeichnen. Beachten Sie, dass Knoten im "gestapelten" Layout immer eine Schicht höher als ihr höchster "untergeordneter" Knoten sind. (Wichtig: Siehe bearbeiten am Ende der Frage für ein anderes Beispiel)Standardnamen für "gestapelte" versus "hängende" Graphik-Zeichenalgorithmen?

two different ways of visualising the same graph

Haben diese beiden Arten von geschichteten Zeichenmethoden haben bestimmte Namen? Ich versuche, existierende Algorithmen für die "gestapelten" Algorithmen zu finden, aber ich kann keine Informationen finden, weil ich nicht weiß, wie sie heißen.

Wenn sie keine Namen haben, um sie zu unterscheiden, weil sie auf dem gleichen Algorithmus beruhen, gibt es wohlbekannte Parametersätze, um die "gestapelte" Version des Graphen mit existierenden Algorithmen zu erreichen? Vielen Dank!

Edit: Obwohl die obigen Graphen streng „trees“ sind, geht der Algorithmus ich suche sollte Fälle behandeln können, wo Knoten mehr als ein Elternteil haben, und Fälle, in denen es mehr als einen Weg von der Wurzel ist um zu blättern. Here's an example und here's another.

Edit2: Falls es für irgendjemanden nützlich ist, scheint ein hacky (und langsamer) kraftgesteuerter Ansatz mit vorberechneten Knoten-Layern (y-Achsen-Contraints) in Ordnung zu sein. Here's what it looks like. Dieses Beispiel verwendet cytoscape.js und cola.js und ist auf dem Kopf stehend. Es ist überhaupt keine Lösung für diese Frage, also stelle ich das hier nur als Bearbeitung vor.

(SO wouldn't let me submit the JSBin link without a code block...) 
+0

Wenn ich es richtig verstehe, hängt auf der linken Seite die y-Position jedes Knotens von der * maximalen * Tiefe eines beliebigen untergeordneten Knotens ab. Also, dass Blattknoten per Definition y = 0 haben? Das ist im Grunde Ihr Algorithmus. – MSalters

+0

Ja, genau. Beide haben sehr einfache Regeln für die Knotentiefe - sie sind eine Art Gegensätze, in denen man die Blattknoten verankert, der andere den Wurzelknoten verankert. Ich kann mir vorstellen, dass die Logik für die Minimierung von Überschneidungen ein wenig anders wäre, aber ich habe nicht zu viel darüber nachgedacht, da ich hoffe, dass es bereits eine Reihe von Implementierungen gibt, die ich verwenden kann. – JoeRocc

+0

Übergänge? Ein Baum ist ein planarer Graph. Muss sein, es ist azyklisch. Also Nulldurchgänge. Trivial: Jeder endliche Baum hat eine Obergrenze N von Kindern pro Knoten und eine endliche Tiefe D. Jeder Baum ist somit eine Teilmenge des vollständigen N-ären Baumes der Tiefe D, die leicht ohne Übergänge gezeichnet werden kann. – MSalters

Antwort

1

Ich kenne keine bestimmten Namen für die oben genannten. Es sieht so aus, als ob der Layering-Algorithmus in beiden Fällen longest path algorithm ist, der die Höhe minimiert, aber im Wesentlichen die Breite ignoriert. Wenn Sie den Graphen von unten nach oben schichten und der Graph viele Senken (Scheitelpunkte mit Null-Grad) hat, erhalten Sie eine breite untere Ebene (ein "gestapeltes" Layout?). Wenn Sie das Diagramm von oben nach unten schichten und es viele Quellen (Scheitelpunkte mit null Grad) hat, erhalten Sie eine breite obere Ebene (ein "hängendes" Layout?).

Verwandte Themen