Verbundene Komponenten eines nicht verbundenen Graphen anlegen

IBM® ILOG® Dojo Diagrammer stellt eine spezielle Unterstützung für das Layout eines nicht verbundenen Graphen (siehe disconnected graph) bereit.
Wenn sich ein Graph aus mehreren verbundenen Komponenten (siehe connected component) zusammensetzt oder isolierte Knoten (Knoten ohne Links) enthält, möchten Sie möglicherweise den Layoutalgorithmus separat auf jede verbundene Komponente anwenden und dann die verbundenen Komponenten mithilfe eines speziellen Layoutalgorithmus (gewöhnlich ibm_ilog.graphlayout.grid.GridLayout) positionieren. Die folgende Abbildung zeigt ein Beispiel eines Graphen, der vier verbundene Komponenten enthält. Durch die Aktivierung des Layouts der verbundenen Komponenten in der regulären Layoutinstanz (hier ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout) werden die verbundenen Komponenten automatisch identifiziert und einzeln angelegt. Zum Schluss werden die vier verbundenen Komponenten mithilfe eines hoch anpassbaren Platzierungsalgorithmus (ibm_ilog.graphlayout.grid.GridLayout) positioniert.
Beispiel für einen Graphen mit vier verbundenen
Komponenten, die einzeln angelegt und mithilfe eines hoch anpassbaren Platzierungsalgorithmus positioniert werden
Automatisches Layout verbundener Komponenten in einem nicht verbundenen Graphen
Verwenden Sie die folgende Methode, um anzuzeigen, ob eine Unterklasse von ibm_ilog.graphlayout.GraphLayout dieses Merkmal unterstützt:
supportsLayoutOfConnectedComponents()
Die Standardimplementierung gibt false zurück. Eine Unterklasse kann diese Methode überschreiben, so dass true zurückgegeben wird, um anzuzeigen, dass dieses Merkmal unterstützt wird.
Sie können das Layout der verbundenen Komponenten mit der Methode setLayoutOfConnectedComponentsEnabled(true) aktivieren.
Gehen Sie zum Abrufen der aktuellen Einstellung wie folgt vor:
var enabled = layout.isLayoutOfConnectedComponentsEnabled();
Der Standardwert ist der Wert, der von der folgenden Methode zurückgegeben wird:
isLayoutOfConnectedComponentsEnabledByDefault()
Die Standardimplementierung dieser Methode in ibm_ilog.graphlayout.GraphLayout gibt false zurück. Für einige der Layoutklassen ist es in Ordnung, dass dieses Merkmal standardmäßig aktiviert ist, und sie überschreiben diese Methode so, dass true zurückgegeben wird.
Wenn die Methode performLayout der Klasse ibm_ilog.graphlayout.GraphLayout in einer Layoutklasse aktiviert ist, die dieses Merkmal unterstützt, teilt die Methode das zugeordnete Graphenmodell in verbundene Komponenten auf und legt jede verbundene Komponente separat an.
Wie funktioniert das Layout verbundener Komponenten, wenn dieser Mechanismus in den Layoutklassen aktiviert ist, die dieses Merkmal unterstützen? Anstatt das Layout des gesamten Graphen auszuführen, teilt die Methode performLayout den Graphen zuerst in verbundene Komponenten auf.
Anschließend wird jede verbundene Komponente separat durch einen Aufruf der Methode layout angelegt. Dazu wird der zugeordnete Graph vorübergehend in intern generierte Graphen geändert, die jeweils einer der verbundenen Komponenten des ursprünglichen Graphen entsprechen.
Zum Schluss wird die mit der Methode setLayoutOfConnectedComponents -
layout.setLayoutOfConnectedComponents(connectedComponentsLayout);
angegebene Layoutinstanz verwendet, um die verbundenen Komponenten zu positionieren. Rufen Sie die Methode setLayoutOfConnectedComponents auf, um die Layoutinstanz anzugeben, die die verbundenen Komponenten platziert.
Wenn mit dieser Methode keine Layoutinstanz angegeben wird, gibt die Methode getLayoutOfConnectedComponents eine Instanz von ibm_ilog.graphlayout.grid.GridLayout zurück. Der Layoutbereichsparameter ist standardmäßig auf das Rechteck (0, 0, 800, 800) gesetzt. Der Parameter für den Layoutmodus ist auf ibm_ilog.graphlayout.grid.GridLayout.TILE_TO_ROWS gesetzt.
Hinweis
Das Baumstrukturlayout und das hierarchische Layout enthalten integrierte Unterstützung für nicht verbundene Graphen. Für das Baumstrukturlayout und das hierarchische Layout kann das Ergebnis vom Ergebnis des generischen Mechanismus (das Layout der verbundenen Komponenten), er von der Basisklasse ibm_ilog.graphlayout.GraphLayout bereitgestellt wird, abweichen. Je nach Ihren speziellen Anforderungen können Sie den generischen Mechanismus oder die integrierte Unterstützung verwenden.