Merkmale und Einschränkungen des HL

Merkmale

  • Organisiert Knoten ohne Überschneidungen in horizontalen oder vertikalen Ebenen.
  • Ordnet den Graphen so an, dass die meisten Links kurz sind und in dieselbe Richtung fließen (von links nach rechts, von oben nach unten usw.).
  • Reduziert die Anzahl der Linkkreuzungen. Das Layout erzeugt meistens Zeichnungen ohne bzw. nur sehr wenigen Kreuzungen.
  • Erzeugt häufig gleichmäßige Zeichnungen, die die Symmetrie im Graphen betonen.
  • Unterstützt Self-Links (siehe self-link), d. h. Links, deren Ursprungs- und Zielknoten identisch ist), Mehrfachlinks (siehe multiple links) zwischen demselben Knotenpaar, und Zyklen.
  • Effizienter skalierbarer Algorithmus. Erzeugt ein übersichtliches Layout für die meisten Graphen geringer und mittlerer Dichte in relativ kurzer Zeit, selbst wenn die Anzahl der Knoten sehr hoch ist.
  • Stellt mehrere Ausrichtungs- und Offsetoptionen bereit.
  • Unterstützt Portspezifikationen, in denen die Links den Knoten zugeordnet werden. Dies ermöglicht Ihnen anzugeben, mit welcher Seite eines Knotens (oben, unten, links, rechts) ein Link verbunden werden kann bzw. welche relative Portposition für die Verbindung verwendet werden muss.
  • Unterstützt Layoutvorgaben. Ermöglicht Ihnen, relative Positionsvorgaben festzulegen, z. B., dass ein Knoten über einem Knoten oder links von einem anderen Knoten positioniert werden soll.
  • Inkrementeller und nicht inkrementeller Modus. Im inkrementellen Modus werden die vorherigen Positionen der Knoten berücksichtigt. Positioniert die Knoten, ohne die relative Reihenfolge der Knoten zu ändern, so dass das Layout bei inkrementellen Änderungen des Graphen stabil bleibt.
  • Die Berechnungszeit richtet sich nach der Anzahl der Knoten, der Anzahl der Ebenen und der Anzahl der Links, die mehrere Ebenen kreuzen. Meistens werden die Links zwischen benachbarten Ebenen platziert, was die Berechnungszeit gering hält.

Einschränkungen

  • Der Algorithmus versucht, die Anzahl der Linkkreuzungen (siehe link crossing) zu minimieren (gewöhnlich ein "NP-vollständig"-Problem, siehe NP-complete). Es ist mathematisch nicht möglich, dieses Problem schnell für jede Graphengröße zu beheben. Deshalb verwendet der Algorithmus ein schnelles heuristisches Verfahren, das zwar ein übersichtliches Layout liefert, aber nicht immer mit der theoretischen Mindestanzahl an Linkkreuzungen.
  • Der Algorithmus versucht, die Knoten so zu platzieren, dass alle Links einheitlich in dieselbe Richtung zeigen. Es ist nicht möglich, Linkzyklen auf diese Weise zu platzieren. Aus diesem Grund wird manchmal ein Graph erzeugt, in dem einige wenige Links umgekehrt sind und in die entgegengesetzte Richtung zeigen. Der Algorithmus versucht, die Anzahl umgekehrter Links (auch dies ist ein "NP-vollständig"-Problem) zu minimieren. Deshalb verwendet der Algorithmus ein schnelles heuristisches Verfahren, das zwar ein übersichtliches Layout liefert, aber nicht immer mit der theoretischen Mindestanzahl umgekehrter Links.
  • Die erforderliche Berechnungszeit für das Abrufen einer angemessenen Zeichnung ist ganz entscheidend von der Anzahl der Kurven in den Links abhängig. Da der Algorithmus eine Kurve platziert, sobald ein Link eine Ebene kreuzt, kann die Anzahl der Kurven relativ schnell ansteigen, wenn das Layout sehr viele lange Links erfordert, die mehrere Ebenen umspannen. Deshalb kann der Layoutprozess für dichte Graphen (die Anzahl der Links ist verglichen mit der Anzahl der Knoten sehr hoch) oder für Graphen mit sehr vielen Knotenebenen zeitaufwendig werden.