レイアウト・アルゴリズムの使用に関する FAQ

以下の FAQ リストは、レイアウト・アルゴリズムの使用に 関するヒントとして役立ちます。グラフ・レイアウト・パッケージを 使用する際に生じる疑問に対する回答が見つかるかもしれません。
レイアウト・アルゴリズムに関する FAQ
質問
回答
レイアウトを実行しても何も起こりません (ノード が移動しません)。なぜでしょうか?
考えられる理由の 1 つは、次のとおりです。 製品で提供されているすべてのレイアウト・アルゴリズムは、 同じグラフに対して最後にレイアウトが正常に実行されてから変更されていない場合は、 デフォルトでは何もしないように設計されています。変更というのは、 ノードが移動されるか、ノードまたはリンクが追加、削除、または形状変更されることを意味します。
force 引数に true 値を指定して performLayout(force:Boolean = false, traverse:Boolean = false):int メソッドを呼び出すことによって、変更が起こっていなくてもレイアウトが再実行されるように強制できます。
別の理由として考えられるのは、 レイアウト中にエラーまたは特殊なケースが発生したこと です。まず最初に、performLayout() メソッド がエラーをスローしたかどうかをチェックする必要があります。エラーがスローされなかった場合、レイアウト・レポートのインスタンスの code プロパティー を取得してください。この値を、 適切なレイアウト・レポート・クラスの文書で チェックしてください。(詳しくは、グラフ・レイアウト・レポートの使用 を参照してください。)
Force-directed アルゴリズムを、 一度レイアウトを実行した後で、インクリメンタル・モードで実行すると、 force レイアウト・オプションを使用しているにも関わらず、何も移動していないように見えます。なぜでしょうか?
理由として考えられるのは、最初にレイアウトを実行したときに アルゴリズムが収束したことです。もう一度レイアウト を実行すると、既に収束していることが検出され、レイアウトは 停止します。例えばグラフの特定の部分を見やすくするといった目的などにより、作業を続け たい場合は、初期構成を変更するために、1 つまたはいくつかのノードを 移動する必要があるかもしれません。(このアルゴリズムは初期構成に依存します。)
レイアウトを実行した後のグラフでは、初期の位置と まったく違います。なぜでしょうか?
大部分のレイアウト・アルゴリズムは、 レイアウト領域パラメーターを使用して、レイアウトのサイズと位置を制御します。(詳しくは、レイアウト領域 を参照してください。) このパラメーターの値によっては、ノードが初期の位置から離れた位置に 移動することがあります。
レイアウト領域パラメーターを 使用するよう設計されたレイアウト・アルゴリズムかどうかを判定するには、 資料をチェックして、レイアウト・クラスが基本クラスの以下の メソッドを true を戻すようにオーバーライドしているかどうかを確認してください。
他のアルゴリズムではメカニズムが異なっており、 レイアウトのロケーションをユーザーが指定できるようになっています。ロケーション・パラメーターのデフォルト値が、グラフが初期の位置から離れてレイアウトされるような値 になることが起こりえます。
特定のグラフに対して特定のレイアウト・アルゴリズムを使用すると、 ノードの重なり合いが発生します。理由と対処法は?
考えられる理由の 1 つは、 ノードのサイズを扱う方法がレイアウト・アルゴリズムによって異なることに関連しています。
- ツリー・アルゴリズムおよび階層型アルゴリズムは、常に ノードの重なり合いを回避します (リンク・アルゴリズムはノードを移動しません。交差および重なり合いが減るように、リンクを 形状変更するだけです。ノードのサイズは考慮に入れられます)。
- Force-directed アルゴリズム (ノード・サイズを尊重するオプションを有効にした場合) は、 多くの場合、ノードの重なり合いを回避することに成功します。
どの場合でも、 レイアウト・アルゴリズムがレイアウト領域のメカニズム (レイアウト領域を参照) を サポートしている場合は、レイアウト領域のサイズを増やしてみてください。例えば、 数百のノードが含まれているグラフの場合、600x600 のような小さなレイアウト領域を 使用するのは妥当ではありません。ノードすべてに対して十分な スペースを確保できません。もっと大きなレイアウト領域 (例えば 5000x5000) にしてみてください。
レイアウト領域の最適なサイズ は、ノードの数だけではなく、ノードのサイズによっても異なります。レイアウト領域のサイズに比べてノードが大きい場合、 いくつかのパラメーター (例えば、Force-directed レイアウトの優先リンク長など) を調整する必要があるかもしれません。
いくつかのネットワークに、接続されていない 2 つ (またはそれ以上) の サブネットワークがあります。これはレイアウト・アルゴリズムに どのように影響しますか?
次のように、使用するレイアウト・クラスによって異なります。
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout: この アルゴリズムは非接続グラフをサポートしますが、通常は、自動「接続コンポーネントのレイアウト」パラメーターを利用することをお勧めします。 (「接続コンポーネントのレイアウト」を参照してください。)
- ibm_ilog.graphlayout.hierarchical.HierarchicalLayout および ibm_ilog.graphlayout.tree.TreeLayout: これら のアルゴリズムには、非接続グラフのサポートが組み込まれています。代替方法として、 基本クラスからの自動サポートを使用できます。(「接続コンポーネントのレイアウト」を参照してください。)
- ibm_ilog.graphlayout.longlink.LongLinkLayoutibm_ilog.graphlayout.shortlink.ShortLinkLayoutibm_ilog.graphlayout.grid.GridLayoutibm_ilog.graphlayout.random.RandomLayout: これらの アルゴリズムは、接続グラフと非接続グラフの両方をサポートします。それらの動作は、両方のカテゴリーのグラフで 同じです。
ネットワークのいくつかの 属性について知っていることがあります (例えば、コア・スイッチとは何か、 センターはどうあるべきかなど)。レイアウト・アルゴリズム はそのような属性を考慮に入れますか?
それはレイアウト・アルゴリズムによります。
- 環状レイアウト は、ネットワークの物理的トポロジーに関する情報をユーザーが指定できるように 設計されています。同じクラスター (リングまたはスター) に属しているノード、 クラスターでのノードの順序、 スター型クラスターの中心のノードを指定できます。
- ツリー・レイアウトでは、ルート・ノード を指定できます。
- 階層型レイアウト・アルゴリズム では、ノード位置インデックスおよびレベル・インデックスを指定でき、 相対位置制約も指定できます。
IBM ILOG Dojo Diagrammer を、異なるブラウザーを使用する異なるコンピューター上で 使用すると、同じグラフに対して同じパラメーターを使用しても 異なるレイアウトになることがあります。なぜでしょうか?
1. 異なるコンピューターおよびブラウザーの処理速度が、より速いまたは遅い可能性があります。 指定された許容時間が経過したために、使用するレイアウト・アルゴリズムが計算を停止した場合、遅いコンピューター またはブラウザーでは計算がより早い過程で停止してしまいます。そのため、結果が異なることがあります。これは、 同じコンピューターおよびブラウザーであっても、コンピューターの負荷が増えると 発生する可能性があります。遅いコンピューターまたは異なるブラウザーで実行している場合、 許容時間の指定値を大きくする必要があるかもしれません。
グラフィック・オブジェクトのネットワークの リンクをレイアウトするため、長リンク・レイアウト・アルゴリズムと短リンク・レイアウト・アルゴリズムを 使用しています。
いくつかのリンクが 1 つのノードの同じ側に接続する 場合、それらのリンクが重なり合います。リンク・レイアウトの「リンク・オフセット」(または「グリッド・サイズ」) パラメーター に従うと期待したのですが違うようです。
なぜでしょうか?
レイアウト・アルゴリズムのいくつかのディメンション・パラメーター は、ノードのサイズを考慮して選択する必要があります。 短リンク・レイアウトの「リンク・オフセット」および「バイパス距離」パラメーター、 および長リンク・レイアウトのグリッド・サイズがこれに 該当します。実際、これらのパラメーターのデフォルト値は、 ノードが大きい場合は適切ではありません。このサイズに 比べてこれらのパラメーターのデフォルト値が小さすぎて、 ゼロであるように見えます。
解決策は、 ノードのサイズを考慮に入れてディメンション・パラメーターの値を 増やすことです。さまざまなサイズのさまざまなノードがある場合、 それらのノードの中間サイズと最大サイズのどちらかを使用して、このサイズの 割合としてこれらのパラメーターを計算できます。