(57)【要約】  幾つかの実施形態は、グラフのレイアウトを決定するためのグラフレイアウトデバイスを対象とする。グラフは、ノードのセットを通るパスのセットによって誘導される。グラフのノードは、ノードのセットに含まれる。パスのセットは、ノードのセットを通るパスのグローバルセットのサブセットである。レイアウトは、グラフの各ノードの位置を含む。グラフレイアウトデバイスは、グローバルランク割り当てを計算し、パスのセットを取得するためにパスのグローバルセットをフィルタリングし、グローバルランク割り当てに基づいてグラフのレイアウトを計算する。【選択図】  図１
2021529381.tif 000002
【特許請求の範囲】
【請求項１】
グラフのレイアウトを決定するためのグラフレイアウトデバイス（１１０）であって、
前記グラフは、ノードのセットを通るパスのセットによって誘導され、前記グラフのノードは、前記ノードのセットに含まれ、前記パスのセットは、前記ノードのセットを通るパスのグローバルセットのサブセットであり、前記レイアウトは、前記グラフの各ノードの位置を含み、
前記グラフレイアウトデバイスは、
前記グラフを記憶するように構成されたメモリと、
プロセッサと、
を含み、
前記プロセッサは、
前記ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当てを計算することと、
前記パスのセットを取得するために前記パスのグローバルセットをフィルタリングすることと、
前記グローバルランク割り当てに基づいて前記グラフのレイアウトを計算することと、
前記メモリに前記グラフのレイアウトを記憶することと、
を実行するように構成され、
前記グローバルランク割り当てを計算することは、繰り返し、前記パスのグローバルセットからパスを選択することと、選択されたパスに基づいて前記グローバルランク割り当てを更新することとを含み、
等しいランク割り当てを有する前記グラフのノードは、互いに隣接して配置されることを特徴とするグラフレイアウトデバイス。
【請求項２】
前記グラフレイアウトデバイスはさらに、追加のグラフのレイアウトを決定するように構成され、
前記追加のグラフは、前記ノードのセットを通るパスの追加のセットによって誘導され、
前記パスの追加のセットは、前記パスのグローバルセットのサブセットであり、
前記グラフのレイアウトと前記追加のグラフのレイアウトは、同じグローバルランク割り当てに基づいて計算されることを特徴とする、請求項１に記載のグラフレイアウトデバイス。
【請求項３】
前記グラフレイアウトデバイスは、ディスプレイをさらに備え、
前記プロセッサはさらに、前記グラフのレイアウトに従って前記グラフを前記ディスプレイにレンダリングするように構成されていることを特徴とする、請求項１又は２に記載のグラフレイアウトデバイス。
【請求項４】
前記グラフレイアウトデバイスは、ディスプレイをさらに備え、
前記グラフレイアウトデバイスはさらに、前記グラフのレンダリングを前記追加のグラフのレンダリングにモーフィングするアニメーションを前記ディスプレイにレンダリングするように構成されていることを特徴とする、請求項２に記載のグラフレイアウトデバイス。
【請求項５】
前記グラフのレイアウトを計算することは、
等しいランク割り当てを有するノードのセットを決定することと、
前記ノードのセットの順序付けを決定することと、
前記グローバルランク割り当てと前記順序付けとに従って前記ノードのセットにおけるノードの位置を割り当てることと、
を含むことを特徴とする、請求項１から４のいずれか一項に記載のグラフレイアウトデバイス。
【請求項６】
等しいランク割り当てを有するノードのセットの順序付けを決定することは、
等しいランク割り当てを有するグローバルグラフのノードのセットの順序付けを決定することと、
等しいランク割り当てを有するグローバルグラフのノードのセットの順序付けから等しいランク割り当てを有するノードのセットの順序付けを計算することと、
を含み、
等しいランク割り当てを有するノードのセットは、等しいランク割り当てを有するグローバルグラフのノードのセットのサブセットであり、
前記グローバルグラフは、前記パスのグローバルセットによって誘導されることを特徴とする、請求項５に記載のグラフレイアウトデバイス。
【請求項７】
等しいランク割り当てを有するグローバルグラフのノードのセットの順序付けを決定することは、
各ランクについてバックボーンノードを決定することと、
前記グラフの非バックボーンノードを連結成分に分割することと、
前記バックボーンノードの各々のランクについてのバックボーンノードの前と後とのいずれかに連結成分の全てのノードを順序付けることと、
を含み、
後続のランクについてのバックボーンノードは、前記グローバルグラフのエッジによって連結されることを特徴とする、請求項６に記載のグラフレイアウトデバイス。
【請求項８】
前記グラフのノードは、前記パスのセットからのパスに沿うノードの和集合に含まれ、
前記グラフのエッジは、前記パスのセットからのパスに沿うエッジの和集合に含まれることを特徴とする、請求項１から７のいずれか一項に記載のグラフレイアウトデバイス。
【請求項９】
前記パスのグローバルセットからのパスは、対応する重みを有し、
前記グローバルランク割り当てを計算することは、前記パスのグローバルセットを重みによってソートすることをさらに含み、
繰り返し前記パスのグローバルセットからのパスに基づいて前記グローバルランク割り当てを更新することは、ソートされたグローバルセットのパスの順に実行されることを特徴とする、請求項１から８のいずれか一項に記載のグラフレイアウトデバイス。
【請求項１０】
前記パスのグローバルセットからのパスの重みは、前記パスの発生回数を表すことを特徴とする、請求項９に記載のグラフレイアウトデバイス。
【請求項１１】
パスの重みは、ユーザによって指定されることを特徴とする、請求項９に記載のグラフレイアウトデバイス。
【請求項１２】
選択されたパスに基づいて前記グローバルランク割り当てを更新することは、前記選択されたパスに沿うノードに異なるランクが割り当てられる場合の前記グローバルランク割り当てを更新することを含むことを特徴とする、請求項１から１１のいずれか一項に記載のグラフレイアウトデバイス。
【請求項１３】
第１のノードが、前記選択されたパスに沿う第２のノードと第３のノードとの間に発生し、前記第１のノードにランクが割り当てられておらず前記第２のノード及び第３のノードにランクが割り当てられている場合、前記第２のノードに割り当てられたランクと前記第２のランクに割り当てられたランクとの間のランクが前記第１のノードに割り当てられて前記グローバルランク割り当てが更新されることを特徴とする、請求項１２に記載のグラフレイアウトデバイス。
【請求項１４】
前記選択されたパスに沿うノードが、前記選択されたパスに沿う、ランクが割り当てられている全ての他のノードに先行又は後続する場合、前記全ての他のノードのランクよりも小さい又は大きいランクが該ノードに割り当てられて、前記グローバルランク割り当てが更新されることを特徴とする、請求項１１に記載のグラフレイアウトデバイス。
【請求項１５】
ノードはアクティビティを表し、パスはアクティビティの時間的シーケンスを表すことを特徴とする、請求項１から１４のいずれか一項に記載のグラフレイアウトデバイス。
【請求項１６】
グラフのレイアウトを決定するためのグラフレイアウト方法（９００）であって、
前記グラフは、ノードのセットを通るパスのセットによって誘導され、前記グラフのノードは、前記ノードのセットに含まれ、前記パスのセットは、前記ノードのセットを通るパスのグローバルセットのサブセットであり、前記レイアウトは、前記グラフの各ノードの位置を含み、
前記グラフレイアウト方法は、
前記ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当てを計算することと、
前記パスのセットを取得するために前記パスのグローバルセットをフィルタリングすることと、
前記グローバルランク割り当てに基づいて前記グラフのレイアウトを計算することと、
メモリに前記グラフのレイアウトを記憶することと、
を含み、
前記グローバルランク割り当てを計算することは、繰り返し、前記パスのグローバルセットからパスを選択することと、選択されたパスに基づいて前記グローバルランク割り当てを更新することとを含み、
等しいランク割り当てを有する前記グラフのノードは、互いに隣接して配置されることを特徴とするグラフレイアウト方法。
【請求項１７】
請求項１６に記載の方法をプロセッサシステムに実行させるための命令を表す一時的又は非一時的なデータを格納するコンピュータ読み取り可能な媒体（１０００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフレイアウトデバイス、グラスレイアウト方法、及びコンピュータ読み取り可能な媒体に関する。
【背景技術】
【０００２】
例えば、物理的、生物学的、社会的、及び情報のシステムにおける様々な関係及びプロセスを、ノード及びエッジを含むグラフとして表すことができる。例えば、生物学的システムでは、ノードは、特定の種が存在する領域を表し、エッジは領域間の移動経路（パス）を表すことができる。データから洞察を得るのに特に役立つグラフの種類は、例えばグラフのノードのシーケンスなどのパスのセット（一連のパス）によって誘導されたグラフである。例えば、情報システムにおいて、パスは、ログに記録された関連するアクティビティ（例えば、「ログイン」、「ログアウト」など）の時間的シーケンス（時系列）を表すことができる。そのようなパスのセットは、それらのノードとノード間の接続点（コネクション）とを含むグラフを誘発することができる。このようなグラフは、パス内でどのノードが一緒に頻繁に発生するか、例えば、ログに記録されたどのアクティビティが後で実行されることが多いかについての洞察を得るのに役立つ。
【０００３】
グラフの視覚化をユーザに提供することは有益であり、例えば、グラフが表すデータをよりよく理解するために使用できる。グラフ描画の技術分野は、グラフの頂点及びエッジのレイアウト（例えば、画像表現（図形表示）など）の決定に関係する。グラフ描画は複雑である。同じグラフについて多くのレイアウトが可能であり、レイアウトを決定するためのアルゴリズムは、例えばパフォーマンス、結果として生じるグラフのサイズ、様々な美的パラメータ（例えば、エッジ交差の数、エッジの長さ、ノードの空間分布など）などの様々な要素のバランスをとる必要がある。
【０００４】
最新技術において知られている種類（クラス）のグラフ描画の技術は、Ｒｏｂｅｒｔｏ  Ｔａｍａｓｓｉａ（編集）による「Ｈａｎｄｂｏｏｋ  ｏｆ  Ｇｒａｐｈ  Ｄｒａｗｉｎｇ  ａｎｄ  Ｖｉｓｕａｌｉｚａｔｉｏｎ（グラフ描画及び視覚化のハンドブック）」の第１３章「Ｈｉｅｒａｒｃｈｉｃａｌ  Ｄｒａｗｉｎｇ  Ａｌｇｏｒｉｔｈｍｓ（階層描画アルゴリズム）」で説明されているように、階層化（レイヤード）グラフ描画又は杉山スタイルのグラフ描画としても知られている階層グラフ描画に焦点を当てている。階層グラフ描画は、通常、少なくともグラフを非巡回にするサイクル削除ステップ、ノードがレイヤ又はランクに分割されるレイヤ割り当てステップ、同じランクの頂点が順序付けられる頂点順序付けステップ、ノードの正確な位置が決定されるｘ座標割り当てステップを含む。これらのステップの一部は、ヒューリスティックを用いる必要があることが多い複雑な最適化問題の解決を含む。例えば、「Ｈａｎｄｂｏｏｋ  ｏｆ  Ｇｒａｐｈ  Ｄｒａｗｉｎｇ  ａｎｄ  Ｖｉｓｕａｌｉｚａｔｉｏｎ」で詳述されているように、ステップを実行する様々な方法が使用され得る。階層グラフ描画の実装は、例えば、Ｇｒａｐｈｖｉｚグラフ視覚化ソフトウェアパッケージの一部である「ドット」ツールで利用できる。
【０００５】
グラフのレイアウトを決定するために従来の階層化グラフ描画アプローチを使用することの欠点は、安定性の観点からそのようなアプローチの結果が不十分であることである。グラフレイアウトの安定性は、グラフに変更が加えられた場合のノード及びエッジの配置の違いを最小限に抑えることに関連する。例えば、特に、グラフを誘導するパスも考慮に入れて、異なるレイアウトで、レイアウトにおけるエッジの方向、ノード間の相対距離、及び／又はノードの位置を保持する必要がある。例えば、データセットのインタラクティブな分析のためのシステムでは、例えば、パスの様々なフィルタリングを実行し、結果として生じるグラフを検査することによって、例えば、ユーザが変化を観察し易くするために、結果として生じる様々なグラフ間の安定性が望まれる。しかし、安定性は通常、従来の階層化グラフ描画アプローチでは保証されない。例えば、単一のエッジを追加又は削除すると、グラフのレイアウトが完全に異なり、何が変更されたかを確認するのが困難になる可能性がある。
【０００６】
したがって、安定性を向上したパス誘導グラフのグラフレイアウト方法を提供することが望ましい。
【発明の概要】
【０００７】
特許請求の範囲で定義されるようなグラフレイアウトデバイスが提案される。グラフレイアウトデバイスは、グラフのレイアウトを決定する。グラフは、ノードのセットを通るパスのセットによって誘導される。グラフのノードは、ノードのセットに含まれ、パスのセットは、ノードのセットを通るパスのグローバルセットのサブセットである。レイアウトは、グラフの各ノードの位置を含む。グラフレイアウトデバイスは、ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当てを計算する。グローバルランク割り当てを計算することは、繰り返し、パスのグローバルセットからパスを選択することと、選択されたパスに基づいてグローバルランク割り当てを更新することとを含む。グラフレイアウトデバイスは、パスのセットを取得するために前記パスのグローバルセットをフィルタリングする。グラフレイアウトデバイスは、グローバルランク割り当てに基づいてグラフのレイアウトを計算し、メモリにグラフのレイアウトを記憶する。等しいランク割り当てを有するグラフのノードは、互いに隣接して配置される。
【０００８】
興味深いことに、パスのグローバルセットを使用してグローバルランク割り当てを計算し、グローバルランク割り当てを使用してグラフのレイアウトを計算することにより、同じノードのグローバルセットに関連する異なるグラフが同じグローバルランク割り当てを再利用できるので、安定性が向上する。さらに、この方法でグローバルランク割り当てを計算し、且つ／又は、それを再利用することにより、パフォーマンス上の利点が得られ、且つ／又は、基になるデータとより厳密に適合するグラフが得られる。
【０００９】
一実施形態において、グラフレイアウトデバイスは、同じグローバルランク割り当てに基づいて、ノードのセットを通るパスの追加のセットによって誘導される追加のグラフのレイアウトを決定し、したがって、グラフと追加のグラフとの間の安定性が向上する。一実施形態において、グラフレイアウトデバイスは、グラフをディスプレイにレンダリングする。別の一実施形態において、グラフレイアウトデバイスは、グラフのレンダリングを追加のグラフのレンダリングにモーフィングするアニメーションをレンダリングし、レンダリングが、安定性の向上により容易になる。
【００１０】
一実施形態において、グラフのレイアウトを計算することは、等しいランク割り当てを有するノードのセットを決定することと、ノードのセットの順序付けを決定することと、グローバルランク割り当てとこの順序付けとに従ってノードのセットにおけるノードの位置を割り当てることとを含む。一実施形態において、等しいランク割り当てを有するノードは、グローバルグラフの順序付けに従って順序付けされ、これにより、安定性及びパフォーマンスがさらに向上する。一実施形態において、ノードは、バックボーンノードを使用して順序付けられ、基になるデータ、特にその順次的な性質により厳密に適合するグラフが得られる。
【００１１】
一実施形態において、パスのグローバルセットからのパスは、グローバルランク割り当てが決定される順序を決定する重みを有する。これにより、基になるデータにより厳密に適合するグラフレイアウトが得られる。例えば、重みの大きいパスをより顕著に表示するグラフレイアウトなどである。一実施形態において、重みは、発生回数を表す。一実施形態において、パスの重みは、ユーザによって指定される。一実施形態において、ノードはアクティビティを表し、パスはアクティビティの時間的シーケンスを表す。
【００１２】
本発明の別の一態様は、特許請求の範囲で定義されるようなグラフレイアウト方法である。本発明の方法は、コンピュータ実施方法としてコンピュータで、又は専用のハードウェアで、又はその両方の組み合わせで、実施され得る。本発明の方法の実行可能コードは、コンピュータプログラム製品に格納され得る。コンピュータプログラム製品の例には、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。好ましくは、コンピュータプログラム製品は、該プログラム製品がコンピュータで実行されるときに本発明の方法を実行するための、コンピュータ読み取り可能な媒体に格納された非一時的なプログラムコードを含む。
【００１３】
好ましい実施形態において、コンピュータプログラムは、コンピュータプログラムがコンピュータで実行されるときに、本発明の方法の全てのステップを実行するように構成されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムは、コンピュータ読み取り可能な媒体に格納される。
【００１４】
本発明の別の一態様は、コンピュータプログラムをダウンロードできるようにする方法を提供する。この態様は、コンピュータプログラムが、例えばＡｐｐｌｅのＡｐｐ  Ｓｔｏｒｅ、ＧｏｏｇｌｅのＰｌａｙストア、ＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓストアなどにアップロードされる場合、コンピュータプログラムがそのようなストアからダウンロード可能な場合に使用される。
【図面の簡単な説明】
【００１５】
本発明のさらなる詳細、態様、及び実施形態は、図面を参照して、例示としてのみ説明される。図における要素は、単純さ及び明確さのために示され、必ずしも一定の縮尺で描かれているわけではない。図において、既に説明した要素に対応する要素には同じ参照番号を付されている場合がある。
【図１】図１ａ、図１ｂは、グラフレイアウトデバイスの実施形態の例を概略的に示す。
【図２】グラフレイアウトデバイスの一実施形態の一例を概略的に示す。
【図３】図３ａ、図３ｂ、図３ｃは、ランキングユニットの実施形態の例を概略的に示す。図３ｄは、グラフのレイアウトに従ってレンダリングされたグラフの一例を概略的に示す。
【図４】図４ａは、２つのグラフのレイアウトをもたらすグローバルランク割り当ての一例を概略的に示す。図４ｂは、２つのグラフのレイアウトをもたらすローカルランク割り当ての一例を概略的に示す。
【図５】図５ａは、「ドット」を使用して計算されたグラフのレイアウトに従ってレンダリングされたグラフの一例を示す。図５ｂは、「ドット」を使用して計算されたグラフのレイアウトに従ってレンダリングされたグラフの一例を示す。
【図６】一実施形態による、計算されたグラフのレイアウトに従ってレンダリングされた図５ａのグラフの一例を示す。
【図７】一実施形態による、計算されたグラフのレイアウトに従ってレンダリングされた図５ｂのグラフの一例を示す。
【図８】グラフレイアウト方法の一実施形態の一例を概略的に示す。
【図９】図９ａは、一実施形態による、コンピュータプログラムを記憶する書き込み可能な部分を有するコンピュータ読み取り可能な媒体を概略的に示す。図９ｂは、一実施形態によるプロセッサシステムの図示を概略的に示す。
【発明を実施するための形態】
【００１６】
本発明は、多くの異なる形態において実施形態の影響を受け易いが、本開示が本発明の原理の例示とみなされるべきであり且つ示され説明されている特定の実施形態に本発明を限定することを意図するものではないという理解の下で、一又は複数の特定の実施形態が図面に示され本明細書で詳細に説明される。
【００１７】
以下では、理解し易くするために、実施形態の要素が動作中に説明される。しかし、各々の要素は、それらによって実行されるように説明されている機能を実行するように構成されていることが明らかである。
【００１８】
さらに、本発明は実施形態に限定されず、本発明は、本明細書に記載され、又は相互に異なる従属請求項に記載される、全ての各々の新規な特徴又は特徴の組み合わせにある。
【００１９】
図１ａ、図１ｂは、グラフのレイアウトを決定するためのグラフレイアウトデバイスの可能な実施形態を概略的に示す。図１ａに示すグラフレイアウトデバイス１１０は、プロセッサ１３０とメモリ１４０とを備える。図１ｂに示すグラフレイアウトデバイス１１１は、ディスプレイ１２１と、プロセッサ１３１と、メモリ１４１とを備える。例えば、メモリ１４０、１４１は、ソフトウェア及び／又はデータを記憶し、各々のプロセッサ１３０、１３１は、このソフトウェア及び／又はデータに従って動作するように構成されている。プロセッサ１３０、１３１は、一又は複数のプロセッサ回路（例えば、マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡなど）として実装される。プロセッサは、例えば、クラウドコンピューティングアーキテクチャ内などでプロビジョニングされてもよい。さらなる例が本明細書に示される。メモリ１４０、１４１は、各々のプロセッサ１３０、１３１によって実行可能なコンピュータプログラム命令を記憶してもよい。プロセッサ１３０、１３１は、場合によっては各々のメモリ１４０、１４１と共に、グラフレイアウトデバイスの実施形態に従って構成される。
【００２０】
以下の図２、図３ａ〜図３ｃは、プロセッサの機能ユニットである可能性のある機能ユニットを示す。例えば、図２は、プロセッサの可能な機能構成の青写真として使用され得る。プロセッサは、図２、図３ａ〜図３ｃにおいて、ユニットとは別に示されていないが、図１ａ、図１ｂに示される。例えば、図２に示す機能ユニットは、デバイス１１０で例えばデバイス１１０の電子メモリに記憶されデバイス１１０のマイクロプロセッサによって実行可能なコンピュータ命令に全体的又は部分的に実装されてもよく、デバイス１１１についても同様である。組み合わせ（ハイブリッド）の実施形態では、機能ユニットは、部分的にハードウェアに、例えばコプロセッサ、例えば暗号プロセッサとして、そして部分的にデバイス１１０及び／又は１１１に記憶されそこで実行されるソフトウェアに実装される。
【００２１】
図２は、グラフレイアウトデバイス２１０の可能な実施形態を概略的に示す。上記のとおり、図２は、プロセッサによって実装され得る機能ユニットを示す。図２は、説明のため、幾つかのデータ要素も示す。グラフレイアウトデバイス２１０は、グラフのレイアウト２４４を決定するように構成される。レイアウトは、グラフの各ノードの位置（例えば、ｘ座標とｙ座標など）を含む。レイアウトはまた、下記のとおり、例えばダミーのノードの追加のレイアウト要素の位置を含んでもよい。
【００２２】
以下でより詳細に説明するように、レイアウト２４４の決定は、グラフレイアウトデバイス２１０の各々のユニット、例えば、ランキングユニット２３１、フィルタリングユニット２３２、レイアウト２３３、及び任意選択でレンダリングユニット２３４によって実行される幾つかのステップを含む。デバイスは、フィルタリングによって取得されたパスのグローバルセットのサブセットであるノードのセットによって誘導されたグラフのレイアウト２４４を決定する。グラフレイアウトデバイス２１０のランキングユニット２３１は、ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当て２４２を計算する。等しいランク割り当てを有するグラフのノードは、グラフレイアウトで互いに隣接して配置される。興味深いことに、ランク割り当ては、パスのグローバルセットに基づくグローバルランク割り当てであるので、安定性を向上させる。フィルタリングユニット２３２は、パスのグローバルセットをフィルタリングして、グラフを誘導するパスのセットを取得する。レイアウトユニット２３３は、等しいランク割り当てを有するグラフのノードが互いに隣接して配置されるように、グローバルランク割り当て２４２に基づいてグラフのレイアウトを計算する。レンダリングユニット２３４は、任意にグラフをレンダリングする。ランキングユニット２３１は、例えば、参照により本明細書に含まれるＲｏｂｅｒｔｏ  Ｔａｍａｓｓｉａ（編集）による「Ｈａｎｄｂｏｏｋ  ｏｆ  Ｇｒａｐｈ  Ｄｒａｗｉｎｇ  ａｎｄ  Ｖｉｓｕａｌｉｚａｔｉｏｎ」の１３．２節「Ｃｙｃｌｅ  Ｒｅｍｏｖａｌ（サイクル除去）」に詳述されるように、サイクル除去ステップを任意に実行する。グラフレイアウトデバイス２１０は、例えば、参照により本明細書に含まれるＲｏｂｅｒｔｏ  Ｔａｍａｓｓｉａ（編集）による「Ｈａｎｄｂｏｏｋ  ｏｆ  Ｇｒａｐｈ  Ｄｒａｗｉｎｇ  ａｎｄ  Ｖｉｓｕａｌｉｚａｔｉｏｎ」の１３．４節「Ｅｄｇｅ  Ｃｏｎｃｅｎｔｒａｔｉｏｎ（エッジ集中）」に詳述されるように、エッジ集中ステップを任意に実行する。
【００２３】
興味深いことに、ランキングユニット２３１はグローバルランク割り当てを計算し、レイアウトユニット２３３はこのグローバルランク割り当てに基づいてグラフのレイアウトを計算する。これには、複数のグラフのレイアウトが同じグローバルランク割り当てに基づく場合、このランク割り当てを再利用できるという利点があり、グラフレイアウトの計算がより効率的になり、複数のグラフのレイアウト間の安定性を向上させる。安定性の向上は、幾つかの方法で観察できる。例えば、所与のノードｘとノードｙとの間の距離が２つのグラフレイアウトで類似していること、及び／又はグラフィックオブジェクト（例えば、ノード、エッジなど）が２つのグラフレイアウトで類似した位置にあること、及び／又はレイアウト調整が通常ノードの方向を保持することを観察することによって観察でき、例えば、あるノードがあるグラフのレイアウトで別のノードの左側にある場合、それは通常、別のグラフのレイアウトでもそのノードの左側にある。さらに、グラフのレイアウトの計算では、グラフを誘導するパスのセットの情報が使用されるため、グラフのレイアウトは、以下でさらに詳しく説明するように、基になるデータをよりよく反映する。
【００２４】
レイアウトデバイス２１０がレイアウトを決定するグラフは、ノードのセットを通るパス２４３のセットによって以下に詳述されるように誘導される。グラフのノードは、ノードのセットに含まれる。パスは通常、順序付けられたノードのシーケンスを含む。例えば、図２は、「Ａ」から「Ｅ」のラベルが付いた５つのノード２５１〜２５５を概略的に示す。パスのセット２４３は２つのパスを含み、パス２５７はノード２５１、２５２、２５３の順序付けられたシーケンスを含み、パス２５８はノード２５１、２５４の順序付けられたシーケンスを含む。説明のため、パスをラベルのシーケンスとして示す場合があり、例えば、パス２５７は「ＡＢＣ」で示され、パス２５８は「ＡＤ」で示される。ノードのセットを通る様々なパスは、任意に互いに関連する場合があり、例えば、パスのペアは互いに素であるか、又は部分的若しくは完全に重複している場合がある。例えば、一方のパスが他方のサブパスである場合があり、例えば、一方のパスが他のパスのプレフィックス又はサフィックスである場合がある。ノードは、異なる順序で異なるパスで発生する場合があり、例えば、ノードのセット２４３は、ノードＡがノードＤに先行するパス「ＡＤ」、及びノードＡがノードＤに直接続くパス「ＤＡ」、又はノードＡが間接的にノードＤに続くパス「ＤＢＡ」を含む。パスは通常別個のものであるが、これは必須ではない。ノードのセットにおける全てのノードが、パスのセット２４３からのパスで必ずしも発生するわけではない。例えば、ノード「Ｅ」、２５５は、セット２４３からのパスで発生しない。
【００２５】
パスのセット２４３によって誘導されたグラフは、有向グラフであってもよい。そのような有向グラフは、ノードのセット及びエッジのセットを含み、エッジは、順序付けられた頂点の対（ペア）である。グラフはループを含んでもよい。ノードのセットは、マルチセットであってもよく、例えば、グラフはマルチグラフ又はマルチダイグラフであってもよい。グラフは、特定の種類の有向グラフ、例えば、有向非巡回グラフ及び／又は強連結グラフであってもよく、或いは、グラフは、補足的特性を有する有向グラフ、例えば、加重有向グラフ、例えば、各エッジには重みが割り当てられるグラフであってもよい。グラフは、あるノードがソースノードであると区別され、別のノードがシンクノードであると区別されるフローネットワークでもあってもよい。有向グラフの他の様々な既知のサブクラス及び変形例が使用されてもよい。パスのセット２４３によって誘導されたグラフはまた、無向グラフであってもよい。無向グラフは、ノードのセット及びエッジのセットを含み、エッジは、２つのノードのセット又は２つのノードの２つのマルチセットであってもよく、例えば、ループを表すエッジは、同じノードを２回含む２つのマルチセットであってもよい。グラフは、文献で区別される特別な種類の無向グラフ、例えば、連結グラフ又は平面グラフ、及び／又は補足的な特性を有する無向グラフ、例えば、加重無向グラフ若しくは無向マルチグラフであってもよい。
【００２６】
グラフは、様々な方法でパス２４３のセットによって誘導され得る。幾つかの実施形態において、グラフのノードは、パスのセットからのパスに沿うノードの和集合に含まれ、グラフのエッジは、パスのセットからのパスに沿うエッジの和集合に含まれる。例えば、パスのセット２４３におけるパスで発生する全てのノードが、グラフのノードであってもよく、パスのセット２４３におけるパスで発生する全てのエッジが、グラフのエッジであってもよい。例えば、パス「ＡＢＣ」２５７とパス「ＡＤ」２５８とを含むパスのセット２４３について考える。このパスのセットによって誘導されたグラフは、ノード「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」と、「Ａ」から「Ｂ」、「Ｂ」から「Ｃ」、「Ａ」から「Ｄ」へのエッジとを含む。例えば、グラフは、ノードのセット上に様々なパス、例えば、パス「ＡＢＣ」及びパス「ＡＤ」を重ね合わせることによって取得されてもよい。グラフは、このように定義されたグラフのサブグラフであってもよく、例えば、グラフは、完全な誘導されたグラフのサブグラフとして得られ、完全な誘導されたグラフは、パスのセット２４３におけるパスで発生するノードとパスのセット２４３におけるパスで発生するエッジとを含む。例えば、グラフは、基準に従ってフィルタリングすることによって、例えば、特定の基準を満たす全てのエッジを除外することによって、例えば、閾値未満の重みを有する全てのエッジを除外すること及び／又は入力エッジも出力エッジも有しない全てのノードを除外することによって、例えば、エッジを除外した後に、完全な誘導されたグラフのサブグラフとして取得されてもよい。基準、例えば、閾値は、入力として、例えば、ユーザによって与えられた入力として、グラフレイアウトデバイス２１０によって取得されてもよく、又は、グラフレイアウトデバイス２１０自体によって計算されてもよい。グラフはまた、他の方法でパスのセット２４３によって誘導されてもよく、例えば、パスは、パスに沿うノードの全ての対の間のエッジ、又は同様のものを誘導してもよい。
【００２７】
異なるアプリケーションにおいて、ノードのセットとパスのセット２４３が、異なる種類のオブジェクトを表してもよい。幾つかの実施形態において、ノードはアクティビティを表し、パスはアクティビティの時間的シーケンスを表す。アクティビティは、処理ステップ又は動作ステップ、例えば、製品を製造するための又はサービスを提供するためのプロセスのステップである。例えば、パスは、ケース、例えば、イベントのシーケンスに対応してもよく、この場合、イベントは、ケースの一部として特定の時に発生するアクティビティを含む。アクティビティは一種のイベントであってもよい。異なるケースが同じパスに対応してもよい。例えば、午前１１時１５分のログインアクティビティと午前１１時３０分のログアウトアクティビティとを含むケースと、午前１１時４５分のログインアクティビティと午後１２時３０分のログアウトアクティビティとを含むケースが、どちらも、ノード「Ｉ」、「Ｏ」のセットを通るパス「ＩＯ」、ログインアクティビティを表すノード「Ｉ」、ログアウトアクティビティを表すノード「Ｏ」に対応してもよい。他のノードが、他のアクティビティ、例えば、画面ロック、電子メールの送信などを表してもよい。例えば、そのような場合、パスのセット２４３によって誘導されたグラフは、ノードとして、所与のケースのセットにおけるアクティビティと、ケースの１つにおいて互いに直接連続するアクティビティ間のエッジとを有してもよい。グラフはまた、このように定義されたグラフのサブセットであってもよく、例えば、グラフは、少なくとも最小数のケースにおいて、例えば、１０若しくは１００のケースにおいて、互いに直接連続するアクティビティ間のエッジ、及び／又は、少なくとも１つの入力エッジ若しくは出力エッジを有するアクティビティを表すノードを含んでもよい。
【００２８】
別の例として、ノードは物理的な場所を表してもよく、パスはこのような場所の間のルート、例えば輸送ルートを表してもよい。例えば、ノードはジャンクションを表し、パスは一連のジャンクションを介して始点から終点まで移動する可能な道筋を表してもよい。例えば、ノードは、サイクリングルートのネットワークにおけるジャンクションと、サイクリングルートのネットワークにおけるサイクリングルートを表すパスと、２つのジャンクション間の標識ルートを表すエッジとを表してもよい。或いは、ノードは、公共交通機関の停留所、例えばバス、電車、路面電車、フェリーの停留所を表してもよく、パスは公共交通機関を介して始点から終点まで移動する可能な道筋を表してもよく、エッジは２つの公共交通機関の停留所間の直接の公共交通機関のルート、例えば、１つの列車のある駅から別の駅への移動を表してもよい。有用な実際の概念を表すためのノード、グラフ、パスの他の様々な使用法が知られており、ここに示すグラフレイアウト技術（例えば、システム構造図、計画、運用プロセス図、論理回路図など）の恩恵を受け得る。
【００２９】
興味深いことに、パスのセットは、ノードのセットを通るパスのグローバルセット２４１のサブセットである。例えば、図２におけるパスのグローバルセット２４１は、ノードのセット２４３からのパス「ＡＢＣ」２５７及び「ＡＤ」２５８を含むが、パス「ＡＣＥ」２５６も含む。例えば、パスのグローバルセット２４１は、ログにおける全てのイベントのシーケンスを含み、パスのセット２４３が、これらのイベントのシーケンスのサブセットを含んでもよい。例えば、パスのセット２４３は、条件によって選択されてもよい。例えば、条件は、一時的な条件、例えば、所与の期間に（例えば、先週）起こったイベントのシーケンスのサブセットであってもよい。或いは、条件は、パスのセット２４３からのパスが特定の条件を満たすか、又は、特定の属性を有することであってもよい。例えば、パスは、最小及び／又は最大の長さを有し、パスは、例えば、述語（例えば、術後「重要」）でタグ付けされている。或いは、条件は、パスが特定のノード又は特定の種類のノード（例えば、特定のアクティビティ）を含むことであってもよい。後でより詳細に説明するように、パスのセット２４３は、フィルタリングによってパスのグローバルセット２４１から取得される。パスのグローバルセット２４１は、グローバルランク割り当て２４２を計算するために使用され、グローバルランク割り当て２４２は、グラフのレイアウト２４４を計算するために使用される。これには、パスのグローバルセット及び／又はグローバルランク割り当てを使用しない従来の方法と比較して、幾つかの利点がある。例えば、パスの異なるセットによって誘導されるグラフのレイアウト間の安定性が向上し、グラフレイアウトの計算における計算の複雑さが低減され、且つ／又は、パスのグローバルセットからの特定のパス（例えば、重みの大きいパス）が、そのような特定のパスからのノードがそのようなパスにおいて発生する順序でより頻繁に表示されるように、一貫して表示される。
【００３０】
グラフレイアウトデバイス２１０は、ランキングユニット２３１を備える。ランキングユニット２３１は、ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当て２４２を計算する。グローバルランク割り当て２４２は、階層化グラフ描画技術に従ってグラフのレイアウトを決定することを容易にする。好ましくは、グローバルランク割り当て２４２は、パスのグローバルセット２４１における各パスについて、異なるランクがパスに沿うノードに割り当てられるというプロパティ（特性）を満たす。このプロパティは、パスに沿うノードが互いに隣接して描画されることを回避してこれによりエッジ交差の数を減らすための階層化グラフ描画に役立つ。何故なら、グラフのレイアウトは、ランク割り当てを有するグラフのノードが互いに隣接して配置されるように計算されるためである。興味深いことに、ランクは、ノードのセットにおける各ノードに割り当てられ、例えば、パスのグローバルセット２４１からのパス２５６で発生するがパスのセット２４３からのパスでは発生しないノード２５５にも割り当てられる。結果として、グローバルランク割り当て２４２は、他のグラフ、例えば、ノードのセットを通る異なるパスのセットによって誘導されたグラフのレイアウトを計算するときに再利用することができる。したがって、複数のグラフのレイアウトが、同じグローバルランク割り当て２４２に基づくことができ、これらの異なるグラフのレイアウト間の安定性が向上し、グラフレイアウトの計算の効率が向上する。
【００３１】
グローバルランク割り当て２４２を計算するために、ランキングユニット２３１は、繰り返し、パスのグローバルセット２４１からパスを選択し、選択されたパスに基づいてグローバルランク割り当て２４２を更新する。例えば、ランキングユニット２３１は、所望のグローバルランク割り当てが得られるまで、パスを選択し、グローバルランク割り当てを更新し、別のパスを選択し、グローバルランク割り当てを更新するなどである。好ましい実施形態において、ランキングユニット２３１は、パスのグローバルセット２４１からの全てのパスを反復するが、これは必須ではない。パスのサブセットのみ、例えば固定数のパス（例えば、最初の１０個若しくは１０％のパス）のみ、又は特定のプロパティを満たすパスのみ、例えば重みが１０以上のパスのみを反復することも可能である。或いは、特定の基準が満たされるまで、例えばグローバルランク割り当てが特定のプロパティを満たすまで、例えばノードのセットにおける全てのノード若しくはノードのセット２４３におけるパスで発生する全てのノードにランクが割り当てられるまで、又はグローバルランク割り当てが複数の反復にわたって（例えば、最後の５回の反復にわたって）静的なままになるまで、反復することも可能である。有利なことに、グラフ自体を入力として使用する、例えばグラフがどのノード及びエッジを含むかに関する情報を使用するのみの代わりに、ランキングユニット２３１は、例えばパスのグローバルセット２４１などの追加情報を利用することができる。パスのグローバルセット２４１は、グラフレイアウトを計算するために使用されるランキング又は層割り当ての方法で通常は利用できない。このような理由で、ランク割り当て２４２をより効率的に計算することを可能するだけでなく、基礎となるデータ、例えば、パスのグローバルセット２４１により厳密に適合するランク割り当て２４２をもたらす。結果として生じるグラフのレイアウトは、パスのグローバルセット２４１におけるパスのノードの順序と適合することが望ましい。例えば、パスのセット２４１からの一又は複数のパスからのノードは、一般に、レイアウトにおいて左から右又は上から下に表示されるべきである。有利なことに、ランキングユニット２３１は、そのような適合（マッチング）を向上させるためにパスのグローバルセット２４１を使用し得る。
【００３２】
パスのグローバルセット２４１からパスを選択するための様々な方法が可能である。好ましい実施形態において、パスのグローバルセット２４１からのパスは、対応する重みを有する。ランキングユニット２３１は、パスのグローバルセットを重みによって、例えば、昇順又は降順でソートしてもよい。次に、ランキングユニット２３１は、ソートされたグローバルセットのパスの順にグローバルランク割り当て２４２を繰り返し更新してもよい。例えば、グローバルセットのパス２４１からパスを繰り返し選択することは、ソートされたグローバルセットのパスから次のパスを選択することを含んでもよい。好ましい実施形態において、パスは、重みの降順（重みが大きい順）に選択される。結果として、重みが大きいパスがグローバルランク割り当ての初期の更新で使用され、これにより、そのようなパスが他のパスよりも、グローバルランク割り当て、したがってグラフのレイアウトに、大きな影響を与える。これには、結果として生じるグラフレイアウトでより重要なパスがより顕著に特徴付けられるという利点がある。
【００３３】
パスの重みは、グラフレイアウトデバイス２１０によって計算されてもよく、入力として受け取られてもよく、又はユーザによって指定されてもよく、例えば、ユーザは、例えば、グラフレイアウトデバイス２１０のユーザインタフェースを介して、少なくとも１つのパスの重みを指定してもよい。例えば、デフォルトの重みは、例えば、グラフレイアウトデバイス２１０によってパスに割り当てられてもよく、ユーザは、一又は複数の、例えば、全てのパスについて、このデフォルトの重みをオーバーライドしてもよい。これにより、ユーザによって選択されたパスが、他のパスよりもグラフのレイアウトでより顕著に特徴付けられてもよい。幾つかの実施形態において、パスのグローバルセット２４１からのパスの重み又はデフォルトの重みは、パスの発生（出現）回数を表す。特にそのような場合、複数のサブセットにおいて頻繁な発生が起こる可能性が高いため、同じグローバルパスセットのサブセットであるパスの異なるセットについて、重みの大きいパスのセットが同じ又は類似している可能性がある。したがって、パスのグローバルセットの異なるサブセットについてのグローバルランク割り当ての精度が向上する、例えば、パスのグローバルセット２４１からのパスは、アクティビティの時間的シーケンスを表し、重みは、例えば、ログファイルにおいて、アクティビティの時間的シーケンスのインスタンスが発生した回数を表してもよい。
【００３４】
パスを繰り返し選択するための他の方法又は上記の方法の変形も可能であり、例えば、パスは、ランダムに、例えば、ランダムに均一に、又はバイアスをかけて、例えば、パスの重みに比例する確率で選択されてもよい。
【００３５】
パスを選択すると、ランキングユニット２３１は、選択されたパスに基づいてグローバルランク割り当て２４２を更新する。ローバルランク割り当て２４２の更新は、例えば以前にランクが割り当てられなかった選択されたパスからの、ノードへのランクの割り当て、及び／又は、選択されたパスからのモード若しくは他のノードに以前に割り当てられたランクの更新を含んでもよい。ランキングユニット２３１は、好ましくは、最初は空のランク割り当てで開始し、例えば、ランクはノードに割り当てられていない。或いは、ランキングユニット２３１は、デフォルトのランクが全てのノードに割り当てられているランク割り当てで開始し、例えば、全てのノードに同じランクに割り当てられているか、又は全てのノードにランダムなランクが割り当てられている。幾つかの実施形態において、選択されたパスに基づいてグローバルランク割り当て２４２を更新した後、ランクが、これまでランキングユニット２３１によって処理されたパスに沿う全てのノードにグローバルランク割り当て２４２によって割り当てられる。
【００３６】
幾つかの実施形態において、ランキングユニット２３１は、グローバルランク割り当て２４２を更新する。ここで、別個のランクが、選択されたパスに沿うノードに割り当てられる。とりわけ、これは、上記のように、階層化グラフ描画に望ましい、パスのグローバルセット２４１からの各パスに沿うノードに別個のランクが割り当てられることを容易にし得る。例えば、ランキングユニット２３１は、選択されたパスに沿う第１のノード及び第２のノードに同じランクが以前に割り当てられたことを検出してもよい。この場合に、ランキングユニット２３１は、例えば、第２のノードのランクを１つインクリメントすることによって、第１のノードと第２のノードのランクを区別するようにランク割り当てを更新してもよい。一又は複数の他のノードのランクもインクリメントされてもよい。例えば、第２のノードのランク以上のランクを有する、及び／又は、これまでに選択されたパスに沿う第２のノードに直接若しくは間接的に続く、又は同様の、全てのノードのランクがインクリメントされてもよい。
【００３７】
好ましくは、各反復（イテレーション）の後、別個のランクが、選択されたパスにおける全てのノード及び／又は以前に選択された全てのパスに割り当てられる。例えば、ランキングユニット２３１は、選択されたパスにおいて直接連結されているノードに別個のランクが割り当てられる不変条件として維持してもよい。しかし、これは必須ではない。例えば、ランキングユニット２３１は、反復を実行する間、このプロパティを不変条件として保証しなくてもよく、代わりに、反復が実行された後に後処理によってこれを達成する。
【００３８】
ランキング（ランク付け）は、他の順序付けられたランク値のセットも使用可能であるが、通常、整数である。グローバルランク割り当て２４２においてノードに割り当てられるランクは、グローバルランク割り当て２４２の計算中と計算完了後とのいずれかにおいても、連続していなくてもよい。例えば、ランク１を一又は複数のノードに割り当て、ランク３を他のノードに割り当て、ランク２は割り当てられないランクであってもよい。連続するランクを割り当てないことは、以前に割り当てられたランクを更新する必要がないことにより、以前に割り当てられた２つのランクの間にあるノードにランクを割り当てることを容易にするので、特にグローバルランク割り当ての計算中に、有益であり得る。例えば、ノードＡのランクが１でありノードＢのランクが２である場合、ノードＡとノードＢのランクの間にあるノードＣに整数のランクを割り当てるには、ＡのランクとＢのランクとのいずれかを更新する必要がある。一方、ノードＡのランクが１００でありノードＢのランクが２００である場合、Ａ又はＢのランクに影響を与えることなく、Ｃにランク１５０を割り当てることができる。同様に、幾つかの実施形態において、例えば、グローバルランク割り当て２４２の計算中、ランクは負であってもよい。これは、以前に割り当てられた全てのランクよりも小さいランクをノードに割り当てることを容易にし得るので、グローバルランク割り当ての計算を容易にするのに有益であり得る。例えば、以前に割り当てられた全てのランクよりも１単位小さいランクがノードに割り当てられてもよい。例えば、以前に割り当てられた最小のランクが−２であり、ランク−３がノードに割り当てられてもよい。グローバルランク割り当て２４２におけるランクは、ランキングユニット２３１による計算中及び／又は計算後に必ずしもメモリに明示的に記憶されるとは限らない。例えば、ランクは、各レベルが同じランクが割り当てられたノードのセットを含むレベルの連結リストを保持することによって、又は、同様のデータ構造によって黙示的に記憶されてもよい。以下の例では、明確さのため、整数のランクを明示的に示すが、このようなランクは黙示的であってもよいことが理解される。
【００３９】
図３ａは、ランキングユニット３３１の一実施形態の一例を概略的に示す。図３ａでは、ランキングユニット３３１は、以前にグローバルランクが割り当てられていなかったノードＡ（３５１）、ノードＣ（３５３）、ノードＥ（３５５）にランク１、２、３を割り当てることによって、選択されたパス「ＡＣＥ」３５６に基づいてグローバルランク割り当て３４２を更新する。例えば、パス３５６は、最初に選択されたパスであり、ランキングユニット３３１は、選択されたパス３５６からの各々のノードに、増加するランク、例えば、連続するランクを割り当てることによって、グローバルランク割り当て３３１を更新する。
【００４０】
図３ｂは、ランキングユニット３３１の一実施形態の一例を概略的に示す。この図は、第１のノード、例えば、ノード「Ｂ」（３５２）が、選択されたパス、例えば、パス「ＡＣＥ」（３５６）に沿う、第２のノード、例えば、ノード「Ａ」（３５１）と第３のノード、例えば、ノード「Ｃ」（３５３）との間に発生する状況を例示する。ここで、第１のノードにランクは割り当てられておらず、第２のノード及び第３のノードにランクが割り当てられており、例えば、ノード「Ａ」３５１にランク１が割り当てられ、ランク「Ｃ」３５３にランク２が割り当てられている。このような状況において、第２のノードに割り当てられたランクと第３のノードに割り当てられたランクとの間のランクが第１のノードに割り当てられて、グローバルランク割り当てが更新されてもよい。例えば、図３ｂにおいて、第１のノード「Ｂ」（３５２）にランク２が割り当てられ、第３のノード「Ｃ」（３５３）のランクが３に更新されて、ノード３５２のランクが、ノード３５１のランクとノード３５３のランクとの間のランクになる。
【００４１】
第２のノードと第３のノードとの間にランクが割り当てられていない複数のノードがあってもよい。その場合、これらのノードの各々にランクが割り当てられてもよく、好ましくは別個のランク、例えば連続するランクが割り当てられる。第２のノードと第３のノード以外のノードのランクが更新されてもよい。例えば、更新前に別個のランクを有するノードが更新後にも別個のランクを有するように、ランクが更新されてもよい。例えば、図３ｂでは、更新後にノードＣ（３５３）とノードＥ（３５５）とが異なるランクを有するように、ノードＥ（３５５）のランクが３から４に更新される。例えば、所望のランク以上であるノードのランクを１つインクリメントして次に所望のランクをノードに割り当てることによって、所望のランクをノードに割り当ててもよい。
【００４２】
図３ｃは、ランキングユニット３３１の一実施形態の一例を概略的に示す。この図は、選択されたパス、例えば、パス「ＡＤ」（３５８）に沿うノード、例えば、ノード「Ｄ」（３５４）が、選択されたパスに沿う、ランクが割り当てられている全ての他のノード、例えば、ノード「Ａ」（３５１）に先行又は後続する状況を例示する。このような状況において、ランキングユニット３３１は、上記の全ての他のノードのランクよりも小さい又は大きいランクがノードに割り当てられるように、グローバルランク割り当てを更新してもよい。例えば、図３ｃでは、グローバルランク割り当て３４２’’において、ノード「Ｄ」に先行するノード「Ａ」（３５１）のランクよりも大きいランク２が、ノード「Ｄ」（３５４）に割り当てられる。選択されたパスに沿う、ランクが割り当てられている全てのノードに先行する複数のノート及び／又は後続する複数のノードがあってもよい。ここで、ランクは、このような先行する複数のノード及び／又は後続する複数のノードの各々に割り当てられてもよく、好ましくは、別個の、例えば、増加するランクが割り当てられる。割り当てられるランクは、この例のように、割り当てられたランクに直接先行又は後続するが、これは必須ではない。例えば、ランク３、４、又はより大きなランクがノード「Ｄ」（３５４）に割り当てられることも可能である。
【００４３】
パスに沿う、以前に割り当てられたノードのランクが更新されてもよい。例えば、パス「ＡＢ」が選択され、ランク１がノード「Ｂ」に割り当てられている場合、「Ｂ」のランクが２に更新され、「Ａ」のランクが１に設定されてもよい。上記のように、例えば、上記全ての他のノードのランクよりも小さい所望のランクをノードに割り当てるために、他のノードのランクが同様に更新され、既に割り当てられており所望のランク以上であるグローバルランク割り当て３４２’’における全ての既存のランクがインクリメントされて、所望のランクがノードに割り当てられてもよい。ノードに割り当てられるランクは、ノードが上記全ての他のノードに先行する場合にはより小さく、後続する場合にはより大きくてもよい。しかし、ランキングユニット３３１は、ノードが上記全ての他のノードに先行する場合、上記全ての他のノードのランクよりも大きいランクを割り当ててもよい。例えば、ランク３がノード「Ｂ」に割り当てられ、ランク２がノード「Ｃ」に割り当てられ、選択されたパスが「ＡＢ」である場合、ランク１の代わりにランク４がノード「Ａ」に割り当てられてもよい。この場合、例えば、結果として生じるグラフのレイアウトのコンパクトさが向上する。同様に、ランキングユニット３３１は、ノードが上記全ての他のノードに後続する場合、上記全ての他のノードのランクよりも小さいランクを割り当ててもよい。
【００４４】
幾つかの実施形態において、上記全ての他のノードのランクよりも小さい又は大きいランクをノードに割り当てる代わりに、直接先行又は後続するノードのランクよりも小さい又は大きいが必ずしも上記全ての他のノードのランクよりも小さい又は大きいとは限らないランクが割り当てられる。これは、グローバルランク割り当てのランクの総数を制限するのに有益であり、グラフがよりコンパクトになる可能性がある。
【００４５】
図５ａ、５ｂ、６、７は、グラフレイアウト２１０によって達成される利点の幾つか（例えば、安定性の向上）を示す、グラフレイアウトに従ってレンダリングされたグラフの例を示す。図５ａは、Ｇｒａｐｈｖｉｚグラフ視覚化ソフトウェア（ｈｔｔｐｓ：／／ｗｗｗ．ｇｒａｐｈｖｉｚ．ｏｒｇ／）からの既知のツールである「ｄｏｔ」を使用して計算されたグラフのレイアウトに従ってレンダリングされたグラフ５００を示す。「ｄｏｔ」は、有向グラフの「階層的な」又は階層化された描画を作成するグラフレイアウトプログラムである。レイアウトアルゴリズムは、エッジを同じ方向（上から下又は左から右）に向け、エッジ交差を回避してエッジの長さを短くすることを試みる。グラフは、「Ｃｈｅｃｋ  ｒｅｃｅｉｖｅｄ  ｉｎｖｏｉｃｅ（受け取った請求書をチェック）」というラベルの付いたノード５０１と、「Ｐｏｓｔ−ｐｒｏｃｅｓｓ  ｉｎｖｏｉｃｅ（後処理請求書）」というラベルの付いたノード５０２と、ノード５０１からノード５０２までのエッジ５０９とを含む。図５ｂは、フィルタリングによって図５ａのグラフから取得したグラフの、「ｄｏｔ」を使用して計算されたグラフのレイアウトに従ってレンダリングされたレンダリング５１０を示す。図５ｂにおけるレンダリングされたグラフは、図５ａにおけるレンダリングされたグラフと同じである。例えば、エッジ５０９が除去されていることを除いて、グラフは、同じノードとノード間のエッジとを含む。例えば、レイアウト５１０において、「Ｃｈｅｃｋ  ｒｅｃｅｉｖｅｄ  ｉｎｖｏｉｃｅ」とラベル付けされたノード５１１は、「Ｐｏｓｔ−ｐｒｏｃｅｓｓ  ｉｎｖｏｉｃｅ」とラベル付けされたノード５１２にエッジで連結されていない。図から分かるように、２つのグラフ間のこの小さな違いは、２つのグラフレイアウト５００と５１０の間に大きな違いをもたらす。例えば、２つのグラフ間の安定性は低くなる。レイアウト５００と５１０は類似していないように見える。例えば、それらがほぼ同じグラフを表していることを確認するのは困難である。例えば、これは、レイアウト５００をレイアウト５１０にモーフィングするアニメーションのレンダリングを複雑にする。特に、レイアウト５００では、「Ｐｒｏｃｅｓｓ  ｅｍｐｌｏｙｅｅ  ｒｅｉｍｂｕｒｓｅｍｅｎｔ（従業員への払い戻しを処理）」５０３とラベル付けされたノードと「Ｃｈｅｃｋｅｄ  ａｎｄ  ａｐｐｒｏｖｅｄ（チェック及び承認済み）」５０４とラベル付けされたノードとが隣接していないが、レイアウト５１０では、対応するノード５１３と５１４は隣接している。
【００４６】
図６は、一実施形態による、計算されたレイアウトに従ってレンダリングされた、図５ａと同じグラフ６００を示す。図から分かるように、「Ｃｈｅｃｋ  ｒｅｃｅｉｖｅｄ  ｉｎｖｏｉｃｅ」というラベルの付いたノード６０１は、「Ｐｏｓｔ−ｐｒｏｃｅｓｓ  ｉｎｖｏｉｃｅ」というラベルの付いたノード６０２にエッジ６０９によって連結されている。図７は、一実施形態による、計算されたレイアウトに従ってレンダリングされた、図５ｂと同じグラフ７００を示す。ここで、「Ｃｈｅｃｋ  ｒｅｃｅｉｖｅｄ  ｉｎｖｏｉｃｅ」というラベルの付いたノード７０１と「Ｐｏｓｔ−ｐｒｏｃｅｓｓ  ｉｎｖｏｉｃｅ」というラベルの付いたノード７０２とは、エッジによって連結されていない。両方のグラフは、共通のセットのノードを通るパスの各々のセットによって誘導され、パスの各々のセットは、パスのグローバルセットのサブセットである。例えば、グラフ７００は、グラフからエッジ６０９を除去するフィルタリングによってグラフ６００ａから得られる。両方のグラフのレイアウトは、同じグローバルランク割り当てに基づく。結果として、両方のグラフレイアウトにおいて、同じノードが互いに隣接する。例えば、レイアウト６００において隣接するノードは、レイアウト７００において隣接し、その逆も同様である。例えば、レイアウト６００において、「Ｐｒｏｃｅｓｓ  ｅｍｐｌｏｙｅｅ  ｒｅｉｍｂｕｒｓｅｍｅｎｔ」というラベルの付いたノード６０３は、「Ｃｈｅｃｋｅｄ  ａｎｄ  ａｐｐｒｏｖｅｄ」というラベルの付いたノード６０４に隣接し、レイアウト７００において、対応するノード７０３と７０４は隣接する。これは、上述のように、「ｄｏｔ」を使用して計算されたグラフ５００及び５１０には当てはまらない。結果として、レイアウト６００と７００の安定性が向上し、とりわけ、２つのレイアウトのレンダリングはほぼ全く同じに見え、例えば、ユーザは各々のグラフ間の変更を簡単に検査できる。例えば、これは、レイアウト６００をレイアウト７００にモーフィングするアニメーションのレンダリングを容易にする。
【００４７】
図２に戻ると、グラフレイアウトデバイス２１０は、フィルタリングユニット２３２を備える。フィルタリングユニット２３２は、パスのグローバルセット２４１をフィルタリングして、パスのセット２４３を取得する。パスのセット２４３は、パスのグローバルセット２４１のサブセットであってもよい。例えば、図２において、フィルタリングユニット２３２は、パスのグローバルセット２４１からのパスのセット２４３に含まれるパス「ＡＢＣ」（２５７）及び「ＡＤ」（２５８）を選択する。パスのセット２４３は、メモリに明示的に記憶される必要はない。例えば、パスのセット２４３は、パスのグローバルセット２４１におけるパスへの参照のリストや、パスのグローバルセット２４１からのパスのどれがパスのセットにおいて発生するかを示すビットマップなどとして、記憶されてもよい。上述のように、パスは、例えばアクティビティの時間的シーケンスなど、様々な種類のオブジェクトを表してもよい。このようなパスのフィルタリングは、それに応じて様々な方法で実行されてもよい。例えば、パスの選択は、パスの重みと、パスの長さと、パスにおけるノードに対応するアクティビティの時間と、パスが特定のエッジ、ノード、又はノードの種類を含むか否かとのうちの少なくとも１つに基づいて基準を評価することを含んでもよい。例えば、パスは、そのノードに対応するアクティビティが先月発生した場合、特定の人物がパスのアクティビティに関与した場合、パスが特定のノード又はエッジを含む場合、又は同様の基準で選択されてもよい。いずれの場合においても、グローバルランク割り当て２４２が決定されたパスのグローバルセット２４１からパスのセット２４３を取得することにより、グローバルランク割り当て２４２を使用してグラフのレイアウトを決定できるという利点があり、グラフのレイアウトを決定する効率が向上し、パスのグローバルセット２４１のサブセットによって誘導された複数のグラフのレイアウトが計算されるときのグラフレイアウトの安定性が向上する。
【００４８】
グラフレイアウトデバイス２１０は、レイアウトユニット２３３をさらに備える。レイアウトユニット２３３は、グローバルランク割り当て２４２に基づいてグラフのレイアウト２４４を計算する。レイアウトは、グラフの各ノードの位置（例えば、ｘ座標及びｙ座標）を含む。等しいランク割り当てを有するグラフのノードは、互いに隣接して配置される。例えば、等しいランク割り当てを有するグラフのノードには、同じ若しくは類似のｘ座標又は同じ若しくは類似のｙ座標が割り当てられる。図２に示す例では、ノード「Ａ」（２５１）は位置（ｘＡ、ｙ１）を有し、ノード「Ｂ」（２５２）は位置（ｘＢ、ｙ２）を有し、ノード「Ｃ」（２５３）は位置（ｘＣ、ｙ３）を有し、ノード「Ｄ」（２５４）は位置（ｘＤ、ｙ２）を有する。ノード「Ｂ」２５２及びノード「Ｄ」２５４は、ランク割り当て２４２に従って同じランクを有するので、これらのノードには、同じｙ座標ｙ２が割り当てられる。一方、ノード「Ａ」（２５１）及びノード「Ｃ」（２５３）は異なるランクを有するので、この例では、ｙ２とは異なるｙ座標ｙ１及びｙ３が各々割り当てられる。図３ｄは、グラフのレイアウト２４４に従ってレンダリングされたグラフの一例を概略的に示す。一実施形態において、レイアウトユニット２３３は、既知の階層化グラフ描画アプローチを使用してレイアウトを計算する。これは、例えば、参照により本明細書に含まれるＲｏｂｅｒｔｏ  Ｔａｍａｓｓｉａ（編集）による「Ｈａｎｄｂｏｏｋ  ｏｆ  Ｇｒａｐｈ  Ｄｒａｗｉｎｇ  ａｎｄ  Ｖｉｓｕａｌｉｚａｔｉｏｎ」の１３．５節「Ｖｅｒｔｅｘ  Ｏｒｄｅｒｉｎｇ（頂点の順序付け）」、１３．６節「ｘ−Ｃｏｏｒｄｉｎａｔｅ  Ａｓｓｉｇｎｍｅｎｔ（ｘ座標の割り当て）」、１３．４節「Ｅｄｇｅ  Ｃｏｎｃｅｎｔｒａｔｉｏｎ」で説明されているように、頂点の順序付け、ｘ座標の割り当て、及び任意選択でエッジ集中を実行することによる。
【００４９】
幾つかの実施形態において、グラフのレイアウト２４４は、一又は複数のダミーのノードの位置をさらに含む。レイアウトユニット２３３は、ダミーの頂点及び／又はダミーのエッジをグラフに追加してもよい。幾つかの実施形態において、レイアウトユニット２３３は、グラフの第１のノードと第２のノードとの間にダミーの頂点及びダミーのエッジを含むパスを追加する。ここで、これらのノードの間にはエッジがあり、これらのノードのランクが１を超えて異なる。レイアウトユニット２３３は、グラフから元のエッジを一時的又は恒久的に除去してもよい。ダミーのエッジには連続するランクが割り当てられる。ダミーのエッジ及び頂点は、レイアウトユニット２３３及び／又は他のユニットによって実行される後続のステップを容易にし得る。例えば、レイアウトユニット２３３のさらなる動作は、複数の頂点が単一の層（レイヤ）に広がることを想定し、且つ／又は、レンダリングユニットが一又は複数のダミーのノードの決定された位置を使用してグラフのノード（例えば、グラフのダミーでないノード）間にエッジを描画してもよい。
【００５０】
グローバルランク割り当て２４２に基づいてグラフのレイアウト２４４を計算することは、例えば、グラフにおいて発生しないグローバルランク割り当てからノードを除去すること及び／又はグラフにおけるノードに割り当てられていないランクを除去することによって、グローバルランク割り当てをグラフに適応させることを含んでもよい。例えば、図２に示すグローバルランク割り当て２４２の例では、ノード「Ｅ」２５５にランク４が割り当てられるが、このノードは、ノードのセット２４３によって誘導されるグラフにおいて発生しない。したがって、レイアウトユニット２３３は、グローバルランク割り当て２４２からノード「Ｅ」及び／又はランク４を除去してもよい。グローバルランク割り当てからランクを除去することは、適応されたグローバルランク割り当てにおいてランクが連続して発生するように、より高いランクをシフトすることを含んでもよい。例えば、グローバルランク割り当てからランクを除去することは、除去されたランクよりも高い全てのランクを１つ減らすことを含んでもよい。グローバルランク割り当ての適応は、例えば、グローバルランク割り当てを編集することによって、インプレースで（その場で）実行されてもよい。しかし、好ましくは、グローバルランク割り当てはインプレースで実行されず、例えば、グローバルランク割り当ての深い又は浅いコピーが作成され、適応がコピーに対して実行されて、グローバルランク割り当て２４２自体が他のグラフについて再利用されてもよい。
【００５１】
等しいランク割り当てを有するノードが、互いに完全に隣接していなくてもよく、例えば、ノードはおおよそ隣接しているだけでもよい。例えば、グラフにおける交差の数を減らすため、又は、２つのノード間に短い若しくはより直線的なエッジを描画するために、例えば、ノードの１つを隣接する位置に対してわずかに移動することが有利であり得る。しかし、一般に、ノードは隣接しない方向に沿ってランクの昇順で表示される。例えば、同じランク割り当てを有するノードはｘ方向に隣接し、ｙ座標がより大きいノードは、より高いランクを有するか、又は、ｘ方向とｙ方向とが入れ替わった状態で類似する。グラフのレイアウト２４４を計算すると、レイアウトユニット２３３は、グラフのレイアウト２４４をメモリ、例えば、図１ａのメモリ１４０又は図１ｂのメモリ１４１に記憶する。
【００５２】
幾つかの実施形態において、レイアウトユニット２３３は、等しいランク割り当てを有するノードのセットを決定し、このノードのセットの順序付けを決定し、グローバルランク割り当て２４２及びこの順序付けに従ってこのノードのセットにおけるノードに位置を割り当てることによって、グラフのレイアウトを計算する。例えば、レイアウトユニット２３３は、グラフの全てのノードを等しいランク割り当てを有するノードのセットに分割し、且つ／又は、等しいランク割り当てを有するノードの各セットにおける全てのノードに位置を割り当ててもよい。順序付けは、好ましくは線形順序付け、例えば全順序付けである。例えば、等しいランク割り当てを有するノードは、当業者に知られている交差低減方法（例えば、ヒューリスティックな方法）を使用して、ノードをより低いランクを有するノードに連結するエッジ間の交差の数を低減するように、順序変更される。このプロセスは、各ランクについて安定した順序付けのセットが取得されるまで、又は、別の基準が満たされるまで、異なるランクについて繰り返されてもよい。レイアウトユニット２３３は、例えば、参照により本明細書に含まれるＲｏｂｅｒｔｏ  Ｔａｍａｓｓｉａ（編集）による「Ｈａｎｄｂｏｏｋ  ｏｆ  Ｇｒａｐｈ  Ｄｒａｗｉｎｇ  ａｎｄ  Ｖｉｓｕａｌｉｚａｔｉｏｎ」の１３．６節「ｘ−Ｃｏｏｒｄｉｎａｔｅ  Ａｓｓｉｇｎｍｅｎｔ」に詳述されるように、ｘ座標の割り当てに関する文献からの既知の技術を使用して、グローバルランク割り当て及び順序付けに従ってグラフのノードに位置を割り当ててもよい。
【００５３】
興味深いことに、幾つかの実施形態において、レイアウトユニット２３３は、ノードのグローバル順序付けを決定し、このグローバル順序付けから等しいランク割り当てを有するグラフのノードのセットの順序付けを計算する。例えば、レイアウトユニット２３３は、等しいランク割り当てを有するグラフのノードの全てのセットの順序付けを、各々のグローバル順序付けから決定してもよい。グローバル順序付けは、等しいランク割り当てを有するグローバルグラフのノードのセットの順序付け、好ましくは全順序付け又は線形順序付けである。等しいランク割り当てを有するノードのセットは、等しいランク割り当てを有するグローバルグラフのノードのセットのサブセットである。例えば、等しいランク割り当てを有するノードのセット及びグローバルグラフのノードのセットからのノードに同じランクが割り当てられる。グローバルグラフは、パスのグローバルセット２４１によって誘導される。例えば、グローバルグラフは、パスのセット２４３によってグラフが誘導されるのと同じ方法で、パスのグローバルセット２４１によって誘導される。例えば、グローバルグラフは、ノードとしてノードのセットを、又は、パスのグローバルセット２４１におけるパスで発生するそのようなノードを有し、そして、エッジとして、パスのグローバルセット２４１におけるパスで発生するエッジを有し、又は、このようなノード及び／又はこのようなエッジのサブセットを、例えば、基準に従ってノード及び／又はエッジをフィルタリングすることによって得られるものとして有する。幾つかの実施形態において、例えば、参照により本明細書に含まれるＲｏｂｅｒｔｏ  Ｔａｍａｓｓｉａ（編集）による「Ｈａｎｄｂｏｏｋ  ｏｆ  Ｇｒａｐｈ  Ｄｒａｗｉｎｇ  ａｎｄ  Ｖｉｓｕａｌｉｚａｔｉｏｎ」の１３．５節「Ｖｅｒｔｅｘ  Ｏｒｄｅｒｉｎｇ」で説明されるように、既知の頂点の順序付けの技術を使用して、等しいランク割り当てを有するグローバルグラフのノードの順序付けを得る。
【００５４】
幾つかの実施形態において、レイアウトユニット２３３は、バックボーンノードに基づいて、等しいランク割り当てを有するグローバルグラフのノードのセットの順序付けを決定する。レイアウトユニット２３３は、各ランクについてバックボーンノードを決定する。例えば、パスは、パスのグローバルセットからランキングユニット２３１によって選択された順序に従ってインデックス付けされてもよい。ここで、ランクについてのバックボーンノードは、ランクが割り当てられたノードのうち最も小さいインデックスのパスに沿うノードである。後続のランクについてのバックボーンノードは、グローバルグラフのエッジによって連結される。例えば、ランク２についてのバックボーンノードとランク３についてのバックボーンノードとが、グローバルグラフのエッジによって連結される。バックボーンノードはダミーのノードであってもよい。例えば、ダミーのノードは、それが挿入されたパスのグローバルセットからのパスに沿うとみなされてもよい。バックボーンノードを決定するために、レイアウトユニット２３３は、ランキングユニット２３１の順序でパスのグローバルセット２４１からのパスを反復し、選択されたパスに沿う各ノード（例えば、ダミーのノードを含む）を、同じランクを有するバックボーンノードがまだ選択されていない場合にバックボーンノードになるように設定し、各ランクについてのバックボーンノードが決定されるまで続ける。
【００５５】
決定されたバックボーンノードに基づいて、レイアウトユニット２３３は、グラフの非バックボーンノードを連結成分に分割する。例えば、レイアウトユニット２３３は、グラフのコピーを作成し、バックボーンノード及びそれらが連結されているエッジをコピーから削除し、コピーを連結成分に分割する。レイアウトユニット２３３は、バックボーンノードの各々のランクについてのバックボーンノードの前と後とのいずれかに、連結成分の全てのノードを順序付ける。例えば、レイアウトユニット２３３は、各連結成分について、それが左連結成分であるか右連結成分であるかを決定する。連結成分が左連結成分である場合、レイアウトユニット２３３は、各々のランクについてのバックボーンノードの前に連結成分のノードを順序付ける。例えば、ノードが特定のランクを有する場合、ノードは、そのランクについてのバックボーンノードの前に順序付けられる。同様に、連結成分が右連結成分である場合、レイアウトユニット２３３は、各々のランクについてのバックボーンノードの後に連結成分のノードを順序付ける。左連結成分である連結成分は、連結成分のノードに位置が割り当てられ、且つ／又は、そのノードがバックボーンノードの左若しくは上にレンダリングされることを意味し、右連結成分についても同様であってもよい。
【００５６】
左連結成分又は右連結成分である連結成分は、左連結成分と右連結成分とに、近い数のノードが存在するように決定されてもよい。例えば、左連結成分又は右連結成分である連結成分は、既知の分割最適化アルゴリズムを使用して、各々のサイズの合計間の差が最小化又はほぼ最小化されるように、連結成分のセットを２つのサブセットに分割することによって決定されてもよい。例えば、レイアウトユニット２３３は、最初に全ての連結成分に同じ側を割り当て、次に連結成分を最大から最小まで反復し、その側を変更することにより左連結成分と右連結成分のサイズの合計間の差が減る場合、その側を変更する。
【００５７】
複数のノードにバックボーンノードの順序よりも大きい又は小さい順序が割り当てられる場合、例えば、グローバルグラフの異なる左連結成分又は右連結成分からの２つのノードに同じランクが割り当てられている場合、複数のノード相対的な順序付けは、様々な方法で、例えば、ランダムに、又は、前のランク若しくは後のランクへのエッジ間の交差の数が最小化されるような方法で、決定されてもよい。複数のノードの相対的な順序付けを決定する１つの方法は、バックボーンへの連結性に基づく。ノードの連結性は、同じパスインデックスを有するノード（例えば、ランキングユニット２３１によって選択された同じパスで最初に発生したノードであって、グラフのエッジによってバックボーンノードに直接連結されるノード）の数として定義されてもよい。複数のノードの相対的な順序付けは、連結性によって複数のノードをソートすることによって決定されてもよい。例えば、レイアウトユニット２３３は、最初に左連結成分からノードを取り、連結性の増加によって順序付けられ、次にランクについてのバックボーンノードが続き、次に右連結成分からノードが続き、連結性の減少によって順序付けられ、又は同様に、等しいランク割り当てを有するノードを順序付けてもよい。同じ連結性を有するノードの相対的な順序は、前ま又は次のランクへのエッジ間の交差を最小限に抑えるように選択されてもよい。例えば、レイアウトユニット２３３は、連結性に従ってパスをソートし、ノードがそのパスに沿って出現した、ランキングユニット２３１によって選択された最初のパスに従って、ノードを順序付けてもよい。
【００５８】
幾つかの実施形態において、レイアウトユニット２３３は、各ランクのバックボーンノードを決定し、グローバルグラフの連結されたサブグラフの側を決定し、連結されたサブグラフのサブグラフノードに順序を割り当てることによって、等しいランク割り当てを有するグローバルグラフのノードの順序付けを決定する。ここで、連結されたサブグラフはバックボーンノードを含まず、側は左側又は右側であり、割り当てられる順序は、側が左側である場合にはサブグラフノードに割り当てられたランクについてのバックボーンノードの順序よりも小さく、側が右側である場合にはサブグラフノードに割り当てられたランクについてのバックボーンノードの順序よりも大きい。
【００５９】
グローバルグラフのノードの順序付けを決定すると、これらの順序付けを使用して、等しいランク割り当てを有するグラフのノードの順序付けを決定してもよい。例えば、等しいランク割り当てを有するグラフのノードは、グローバルグラフのノードの順序付けに出現するように順序付けられてもよい。例えば、グラフのノードの順序付けは、そのようなノードを、グラフに出現しないグローバルグラフのノードの順序付けから除去することによって、得られる。これにより、ノードの一貫した順序が使用されるので、グラフレイアウト間の安定性が向上し、複数のグラフのレイアウトを決定するためにグローバルグラフのノードの順序付けを再利用できるので、ノードの順序付けの効率が向上するという利点がある。
【００６０】
安定性の向上は、例えば、既知のツール「ｄｏｔ」によってレイアウトに従ってレンダリングされたグラフを示す図５ａ、図５ｂを、上記のように、一実施形態によるレイアウトに従ってレンダリングされた各々のグラフを示す図６、図７と比較することによって、観察し得る。「ｄｏｔ」によって得られるグラフレイアウト５００、５１０は両方とも、「Ｃｈｅｃｋｅｄ  ａｎｄ  ａｐｐｒｏｖｅｄ」というラベルの付いたノード５０４、５１４と、「Ｒｅｑｕｅｓｔ  ｄａｔａ（データを要求）」というラベルの付いたノード５０５、５１５とを含む。レイアウト５００において、第１のノード５０４は第２のノード５０５の左側にある。一方、レイアウト５１０において、第１のノード５１４は、第２のノード５１５の右側にある。図６、図７は、一実施形態による、同じグラフのレイアウト６００、７００を示す。詳細には、レイアウト６００、７００は両方とも、「Ｃｈｅｃｋｅｄ  ａｎｄ  ａｐｐｒｏｖｅｄ」というラベルの付いたノード６０４、７０４と、「Ｒｅｑｕｅｓｔ  ｄａｔａ」というラベルの付いたノード６０５、７０５とを含む。レイアウト６００、７００の両方において、グローバルグラフのノードの同じ順序付けがグラフ６００におけるノード６０４、６０５及びグラフ７００におけるノード７０４、７０５の順序付けを決定するために使用されるということの結果として、第１のノード６０４、７０４は、第２のノード６０５、７０５の左側に配置される。有利なことに、このような特定のノードに関するレイアウトの安定性は、レイアウト５００、５１０と比較して、レイアウト６００、７００において向上する。
【００６１】
さらに、バックボーンがグラフレイアウトの中央に出現するので、取得されたレイアウトは、有利なことに、基となるデータとより厳密に適合し得る。これは、図５ａ、図５ｂを図６、図７と比較することによっても観察できる。各図において、「Ｒｅｑｕｅｓｔ  ｉｎｖｏｉｃｅ（請求書を要求）」、「Ｃｈｅｃｋ  ｒｅｃｅｉｖｅｄ  ｉｎｖｏｉｃｅ」、「Ｆｉｎａｌ  ｃｈｅｃｋ  ｏｆ  ｉｎｖｏｉｃｅ（請求書の最終チェック）」、「Ａｐｐｒｏｖｅ  ｉｎｖｏｉｃｅ（請求書を承認）」、「Ｐａｙ  ｉｎｖｏｉｃｅ（請求書に対して支払い）」の５つのノードを含む同じパスが、太いエッジ及び濃い色のノードで表示される。この場合、この特定のパスは、パスのグローバルセットからのパス、つまり、最も重みの大きいパスである。本明細書に記載のランキング及び順序付けのメカニズムをグラフレイアウトデバイス２１０によって使用した結果として、パスのノードは、レイアウト６００、７００において上から下に出現する。さらに、これらのノードはバックボーンノードとなり、そのため、このパスの重要性を反映して、レイアウト６００、７００において中央に出現する。対照的に、本明細書に記載のグラフレイアウト技術を使用しないレイアウト５００、６００では、パスは上から下に出現せず、ノードはそれらのランクのノードのうち中央に出現しない。このような理由で、レイアウト６００、７００は、基となるデータ、詳細には、パスのセットにおいて反映されるようなその順次的な性質に、より厳密に適合する。
【００６２】
図２に戻ると、グローバルグラフのノードの順序付けに基づいてグラフのノードの順序付けを決定すると、このような順序付けは、例えば、文献で知られている一又は複数の交差低減ステップを使用して交差をさらに削減し且つ／又は現在のグラフに合わせて調整されたグラフレイアウトを取得することにより、任意にさらに改良され得る。
【００６３】
幾つかの実施形態において、グラフレイアウトデバイス２１０はさらに、追加のグラフのレイアウトを決定するように構成される。追加のグラフは、ノードのセットを通るパスの追加のセットによって誘導される。パスの追加のセットは、パスのグローバルセット２４１のサブセットである。グラフのレイアウト２４４及び追加のグラフのレイアウトは、同じグローバルランク割り当てに基づいて計算される。例えば、ランキングユニット２３１は、グローバルランク割り当て２４２を計算し、ユニット２３３は、例えば、上記の技術を使用して、グローバルランク割り当て２４２に基づいて、グラフのレイアウトと追加のグラフのレイアウトとの両方を計算する。有利なことに、グローバルランク割り当て２４２は、グラフのレイアウトと追加のグラフのレイアウトとの両方を計算するために使用されて、ランク割り当てを２回計算する必要性を除去し、したがって、パフォーマンスを向上させ、２つのグラフについて使用されるランク割り当て間の一貫性も向上させる。幾つかの実施形態において、等しいランク割り当てを有するグラフのノードの順序付けは、パスのグローバルセット２４１によって誘導されるグローバルグラフのノードの順序付けから計算される。この場合、レイアウトユニット２３３は、グローバルグラフのノードの順序付けを一度で決定して、それらを使用して、グラフのレイアウト２４４と追加のグラフのレイアウトとの両方を計算し、同様に、グラフ間のパフォーマンス及び一貫性を向上し得る。
【００６４】
グラフレイアウトデバイス２１０は、任意に、レンダリングユニット２３４とディスプレイ２２０とを備える。レンダリングユニット２３４は、グラフ２４４のレイアウトに従ってグラフをディスプレイ２２０にレンダリングするように構成される。グラフのレンダリングは、レイアウト２４４によって指定された位置にグラフのノードを表示することと、ノード間のエッジを描画することとを含む。エッジの描画は、文献で知られている様々なスプライン描画技術を使用して実行されてもよい。幾つかの実施形態において、例えば、上記のように、レイアウトユニット２３３は、ランクが１を超えて異なるノード間に挿入されるダミーのノードの位置を計算するように構成される。このようなノード間のエッジは、ノード間に挿入されたダミーのノードの計算された位置を通過して描画されてもよい。例えば、ダミーのノードは、スプラインについてのパスをレイアウトし、ノード間のエッジは、ノードと該ノード間に挿入されたダミーのノードとを通るスプラインとして描画されてもよい。レンダリングユニット２３４は、他のノード、エッジ、及びラベルが回避されるように、２つのポイント間の最も滑らかな曲線を探索してもよい。これは、まず、スプラインが描画され得る多角形領域を計算し、次に、この多角形領域が与えられると、この領域内のスプラインを計算することを含んでもよい。領域の計算では、既に描画されているスプライン、ノード、及びラベルが考慮され、偶発的なエッジ−エッジ、エッジ−ノード、又はエッジ−ラベルの交差の数を低減する。詳細には、Ｇａｎｓｎｅｒ  ｅｔ  ａｌ．の“Ａ  Ｔｅｃｈｎｉｑｕｅ  ｆｏｒ  Ｄｒａｗｉｎｇ  Ｄｉｒｅｃｔｅｄ  Ｇｒａｐｈｓ”，ＩＥＥＥ  Ｔｒａｎｓ．Ｓｏｆｔｗａｒｅ  Ｅｎｇ．１９．３（１９９３）（参照により本明細書に含まれる）で提案されたアルゴリズム又はその変形が使用されてもよい。
【００６５】
上記のように、グラフレイアウトデバイス２１０が追加のグラフのレイアウトを決定するようにさらに構成される実施形態において、レンダリングユニット２３４は、グラフのレンダリングを追加のグラフのレンダリングに変形するアニメーションをディスプレイ２２０上にレンダリングしてもよい。有利なことに、グラフのレイアウト及び追加のグラフのレイアウトは両方ともランク割り当て２４２に基づき、場合によってはグローバルグラフのノードの順序付けに基づくので、両方のグラフで発生するノードは通常、２つのグラフレイアウトにおいて互いに対して類似の位置及び類似の方向を有し、モーフィングプロセスを容易にする。例えば、方向が類似していることにより、ノードが互いに対して方向を入れ替えることが回避され得る。例えば、第１のノードが、グラフにおいて第２のノードの左側にあり、追加のグラフにおいて第２のノードの右側にあり、これにより、モーフィング効果が向上する。様々なモーフィング技術が使用されてもよい。例えば、第２のグラフのレンダリングが不透明度を増加した状態で重ね合わされた第１のグラフのレンダリングが表示されてもよい。或いは、両方のグラフで発生するノードの位置が、第１のレイアウトにおける位置と第２のレイアウトの位置との間で補間される後続のレンダリングが表示されてもよい。第１のグラフでのみ発生するノードは、不透明度を低減して表示され、且つ／又は、別のノードと重なり合うときは常に見えなくなってもよい。同様に、第２のグラフでのみ発生するノードは、不透明度を増加して表示され、且つ／又は、それらのノードの位置が別のノードの位置と重ならないときは常に出現してもよい。エッジは、例えば、上記の技術を使用して、アニメーションにおける中間位置に対して描画されてもよい。
【００６６】
グローバルランク割り当てを使用する利点の幾つかを強調するさらなる例を図４ａ、図４ｂに示す。図４ａは、ノード「Ａ」（４５１）、ノード「Ｂ」（４５２）、ノード「Ｃ」（４５３）を通るパス「ＣＡ」（４５６）、パス「ＡＢ」（４５７）、パス「ＡＣ」（４５８）を含むパスのグローバルセット４４１の例を概略的に示す。図４ｂは、パスのグローバルセット４４１のサブセットであるパスのセット４４４、４４４’の例を概略的に示す。パスのセット４４４は、パス「ＣＡ」（４５６）、パス「ＡＢ」（４５７）を含む。パスのセット４４４’は、パス「ＡＢ」（４５７）、パス「ＡＣ」（４５８）を含む。
【００６７】
図４ａは、グローバルランク割り当て４４２に従って、パスのセット４４４、４４４’によって各々誘導されるグラフのレイアウト４４３、４４３’の例を概略的に示す。本明細書に記載の実施形態に従ってグローバルランク割り当てを計算すると、グローバルランク割り当て４４２が得られる。グローバルランク割り当て４４２では、ランク２はノード「Ａ」４５１に割り当てられ、ランク３はノード「Ｂ」４５２に割り当てられ、ランク１はノード「Ｃ」４５３に割り当てられる。例えば、ランキングユニット２３１は、パス「ＣＡ」を選択して、グローバルランクの割り当てをＣ：１、Ａ：２に更新し、パス「ＡＢ」を選択して、グローバルランク割り当てをＣ：１、Ａ：２、Ｂ：３に更新し、最後に、パス「ＡＣ」を選択して、グローバルランクの割り当てを変更しないでおく。レイアウト４４３、４４３’におけるノード「Ａ」（４５１）、ノード「Ｂ」（４５２）、ノード「Ｃ」（４５３）のｙ座標は、グローバルランク割り当て４４２によって決定され、したがって、レイアウト４４３、４４３’において同じである。有利なことに、これにより、２つの類似のグラフレイアウトが得られる。例えば、グラフレイアウトは、パスのグローバルセット４４１の異なるサブセット４４４、４４４’によって誘導されたグラフにわたり安定したままである。
【００６８】
図４ｂは、グローバルランク割り当ての代わりにローカルランク割り当て４４５、４４５’を使用することによって取得され得る、パスのセット４４４、４４４’によって各々誘導されるグラフのレイアウト４４６、４４６’の例を概略的に示す。例えば、パスのセット４４４についてのローカルランク割り当て４４５は、Ａ：２、Ｂ：３、Ｃ：１であってもよい。例えば、ＡはパスにおいてＣよりも後に発生するので、ＡにはＣよりも高いランクが割り当てられ、ＢはパスにおいてＡよりも後に発生するので、ＢにはＡよりも高いランクが割り当てられる。同様に、パスのセット４４４’についてのローカルランク割り当て４４５’は、Ａ：１、Ｂ：２、Ｃ：２であってもよい。例えば、Ｂ、ＣはパスにおいてＡよりも後に発生するため、Ｂ、ＣにはＡよりも高いランクが割り当てられる。結果として、ノード「Ａ」（４５１）、ノード「Ｂ」（４５２）、ノード「Ｃ」（４５３）のｙ座標は、異なるランク割り当てに基づくので、結果として生じるレイアウト４４６、４４６’において同じではない。詳細には、ローカルランク割り当て４４５’を計算する場合、ローカル情報のみがグラフレイアウトで使用されるので、例えば、同じグローバルパスセットに基づく異なるグラフのレイアウトにわたる安定性を向上させるために、ＣにＡよりも低いランクを割り当てる必要があることを示すものはない。対照的に、グローバルランク割り当て４４２は、パスのグローバルセット４４１に基づき、したがって、レイアウト４４３、４４３’について一貫したランク割り当てが使用されることが保証され、これにより、安定性が向上し、グラフレイアウト４４３、４４３’が基となるパスのグローバルセット４４１をよりよく反映することを保証する。
【００６９】
グラフレイアウトデバイス１１０、１１１、又は２１０は、例えば一又は複数のボタン、キーボード、ディスプレイ、タッチスクリーンなどの周知の要素を含み得るユーザインタフェースを有してもよい。ユーザインタフェースは、例えば、パスのグローバルセットをフィルタリングすることによって、グラフレイアウトを決定するためのユーザインタラクションに対応するように構成されてもよい。
【００７０】
典型的には、グラフレイアウトデバイス１１０、１１１、又は２１０は、デバイス１１０、１１１、又は２１０に記憶された適切なソフトウェアを実行するマイクロプロセッサ（別個に示さず）を備える。例えば、このソフトウェアは、対応するメモリ、例えば、ＲＡＭなどの揮発性メモリ又はフラッシュなどの不揮発性メモリ（別個に示さず）にダウンロード及び／又は記憶されていてもよい。或いは、グラフレイアウトデバイス１１０、１１１、又は２１０は、全体的又は部分的に、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）として、プログラマブルロジックで実装されてもよい。グラフレイアウトデバイス１１０又は２１０は、全体的又は部分的に、いわゆる特定用途向け集積回路（ＡＳＩＣ）、即ち、それらの特定の用途のためにカスタマイズされた集積回路（ＩＣ）として実装されてもよい。例えば、回路は、例えばＶｅｒｉｌｏｇ、ＶＨＤＬなどのハードウェア記述言語を使用して、ＣＭＯＳで実装されてもよい。
【００７１】
一実施形態において、グラフレイアウトデバイス１１０又は１１１は、メモリ回路及びプロセッサ回路を備える。デバイス１１０又は１１１は、さらなる回路、例えば、通信回路又は記憶回路を備えてもよい。グラフレイアウトデバイスは、ランキング回路、フィルタリング回路、レイアウト回路、レンダリング回路のうちの一又は複数を備えてもよい。回路は、本明細書に記載の対応するユニットを実装する。回路は、プロセッサ回路及び記憶回路であってもよい。プロセッサ回路は、記憶回路において電子的に表される命令を実行する。回路はまた、ＦＰＧＡ、ＡＳＩＣなどであってもよい。
【００７２】
プロセッサ回路は、分散方式で、例えば、複数のサブプロセッサ回路として実装されてもよい。記憶装置（ストレージ）は、複数の分散サブストレージに分散されてもよい。メモリの一部又は全部が、電子メモリ、磁気メモリなどであってもよい。例えば、メモリは、揮発性部分及び不揮発性部分を有してもよい。メモリの一部が読み取り専用であってもよい。
【００７３】
図８は、グラフレイアウト方法９００の一実施形態の一例を概略的に示す。グラフレイアウト方法９００は、グラフのレイアウトを決定するために構成される。例えば、グラフレイアウト方法９００は、グラフレイアウトデバイスで実行され得る。グラフは、ノードのセットを通るパスのセットによって誘導される。グラフのノードは、ノードのセットに含まれる。パスのセットは、ノードのセットを通るパスのグローバルセットのサブセットである。レイアウトは、グラフの各ノードの位置を含む。グラフレイアウト方法９００は、以下を含む。
・ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当てを計算すること（９０１）。グローバルランク割り当ての計算は、パスのグローバルセットからパスを繰り返し選択すること（９１１）と、選択されたパスに基づいてグローバルランク割り当てを更新すること（９１３）と、任意選択で、グローバルランク割り当てが完了したか否かを確認すること（９１２）とを含む。
・パスのセットを取得するためにパスのグローバルセットをフィルタリングすること（９０２）
・グローバルランク割り当てに基づいてグラフのレイアウトを計算すること（９０３）。ここで、等しいランク割り当てを有するグラフのノードは、互いに隣接して配置される。
・グラフのレイアウトをメモリに記憶すること（９０４）。
【００７４】
当業者には明らかであるように、該方法を実行する多くの異なる方法が可能である。例えば、ステップの順序は変更でき、一部のステップが並行して実行されてもよい。さらに、ステップの間に他の方法ステップが挿入されてもよい。挿入されたステップは、例えば本明細書に記載されているような方法の改良を示してもよく、又は該方法とは無関係であてもよい。例えば、ステップ９０１及び９０２は、少なくとも部分的に、並行して実行されてもよい。さらに、所与のステップが、次のステップが開始される前に完全に終了していなくてもよい。
【００７５】
本発明の方法は、プロセッサシステムに方法９００を実行させるための命令を含むソフトウェアを使用して実行され得る。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、例えばハードディスク、フロッピーディスク、メモリ、光ディスクなどの適切な記憶媒体に記憶されてもよい。ソフトウェアは、有線、無線、又は、例えばインターネットなどのデータネットワークを使用して、信号として送信されてもよい。ソフトウェアは、ダウンロード及び／又はサーバ上でのリモート使用のために利用可能であってもよい。本発明の方法は、該方法を実行するために、プログラマブルロジック、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を構成するように構成されたビットストリームを使用して実行されてもよい。
【００７６】
本発明はまた、本発明を実施するために構成されたコンピュータプログラム、とりわけ、搬送波上又は搬送波内のコンピュータプログラムにも及ぶことが理解されよう。プログラムは、ソースコードの形式、オブジェクトコードの形式、コード中間ソースの形式、例えば部分的にコンパイルされた形式などのオブジェクトコードの形式、又は本発明の方法の実施に使用するのに適した任意の他の形式であり得る。コンピュータプログラム製品に関する一実施形態は、記載された方法のうちの少なくとも１つの処理ステップの各々に対応するコンピュータ実行可能命令を含む。このような命令は、サブルーチンに細分され、且つ／又は、静的若しくは動的に関連付けられた一又は複数のファイルに記憶されてもよい。コンピュータプログラム製品に関する別の一実施形態は、記載されたシステム及び／又は製品の少なくとも１つの手段の各々に対応するコンピュータ実行可能命令を含む。
【００７７】
図９ａは、一実施形態による、コンピュータプログラム１０２０を含む書き込み可能部分１０１０を有するコンピュータ読み取り可能な媒体１０００を示し、コンピュータプログラム１０２０は、プロセッサシステムにグラフレイアウト方法を実行させるための命令を含む。コンピュータプログラム１０２０は、物理的マークとして、又は、コンピュータ読み取り可能な媒体１０００の磁化によって、コンピュータ読み取り可能な媒体１０００上に格納され得る。しかし、任意の他の適切な実施形態も同様に考えられる。さらに、コンピュータ読み取り可能な媒体１０００は、本明細書では光ディスクとして示されるが、コンピュータ読み取り可能な媒体１０００は、例えばハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ読み取り可能な媒体であり、記録不可能又は記録可能であり得ることが理解されよう。コンピュータプログラム１０２０は、プロセッサシステムに上記グラフレイアウト方法を実行させるための命令を含む。
【００７８】
図９ｂは、一実施形態によるプロセッサシステム１１４０の概略図を示す。プロセッサシステムは、一又は複数の集積回路１１１０を備える。一又は複数の集積回路１１１０のアーキテクチャを、図９ｂに概略的に示す。回路１１１０は、一実施形態による方法を実行するため及び／又はそのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを実行するためのプロセッシングユニット１１２０（例えば、ＣＰＵ）を備える。集積回路１１１０は、プログラミングコード、データなどを記憶するためのメモリ１１２２を備える。メモリ１１２２の一部は、読み取り専用であってもよい。集積回路１１１０は、通信要素１１２６、例えば、アンテナ、コネクタ、又はその両方などを含んでもよい。集積回路１１１０は、該方法で定義される処理の一部又は全部を実行するための専用集積回路１１２４を含んでもよい。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４、及び通信要素１１２６は、相互接続１１３０、例えばバスを介して互いに接続されてもよい。プロセッサシステム１１１０は、アンテナ及び／又はコネクタを使用して、接触及び／又は非接触通信のために構成されてもよい。
【００７９】
例えば、一実施形態において、グラフレイアウトデバイスは、プロセッサ回路及びメモリ回路を備えてもよく、プロセッサは、メモリ回路に記憶されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、Ｉｎｔｅｌ  Ｃｏｒｅ  ｉ７プロセッサ、ＡＲＭ  Ｃｏｒｔｅｘ−Ｒ８などであってもよい。一実施形態において、プロセッサ回路は、ＡＲＭ  Ｃｏｒｔｅｘ  Ｍ０であってもよい。メモリ回路は、ＲＯＭ回路、又は、不揮発性メモリ、例えばフラッシュメモリであってもよい。メモリ回路は、揮発性メモリ、例えば、ＳＲＡＭメモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するために構成された、不揮発性ソフトウェアインタフェース、例えば、ハードドライブ、ネットワークインタフェースなどを含んでもよい。
【００８０】
上記実施形態は、本発明を限定するのではなく例示するものであり、当業者は、多くの代替の実施形態を設計可能であることに留意されたい。
【００８１】
特許請求の範囲において、括弧内に記載された参照符号は、請求項を限定するものと解釈されないものとする。動詞「ｃｏｍｐｒｉｓｅ（備える／含む）」とその活用形の使用は、クレームに記載されているもの以外の要素又はステップの存在を排除しない。要素の前にある冠詞「ａ」又は「ａｎ」は、そのような要素が複数存在することを排除しない。本発明は、幾つかの別個の要素を含むハードウェアによって及び適切にプログラムされたコンピュータによって実施されてもよい。幾つかの手段を列挙するデバイスクレームでは、これらの手段の一部が、ハードウェアの１つの同じアイテムによって具現化されてもよい。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組み合わせを有利に使用できないことを示すものではない。
【００８２】
特許請求の範囲において、括弧内の参照符号は、実施形態を例示する図面における参照符号又は実施形態の式を参照し、したがって、請求項の理解し易さを向上させる。このような参照符号は、請求項を限定するものとして解釈されるべきではない。
【符号の説明】
【００８３】
１１０，１１１    グラフレイアウトデバイス
１２１    ディスプレイ
１３０，１３１    プロセッサ
１４０，１４１    メモリ
２１０    グラフレイアウトデバイス
２２０    ディスプレイ
２３１    ランキングユニット
２３２    フィルタリングユニット
２３３    レイアウトユニット
２３４    レンダリングユニット
２４１    パスのグローバルセット
２４２    グローバルランク割り当て
２４３    パスのセット
２４４    グラフのレイアウト
２５１，２５２，２５３，２５４，２５５    ノード
２５６，２５７，２５８    パス
３３１    ランキングユニット
３４２，３４２’，３４２’’    グローバルランク割り当て
３５１，３５２，３５３，３５４，３５５    ノード
３５６，３５７，３５８    選択されたパス
４４１    パスのグローバルセット
４４２    グローバルランク割り当て
４４３，４４３’    グローバルランク割り当てに基づくグラフのレイアウト
４４４，４４４’    パスのセット
４４５，４４５’    ローカルランク割り当て
４４６，４４６’    ローカルランク割り当てに基づくグラフのレイアウト
４５１，４５２，４５３    ノード
４５６，４５７，４５８    パス
５００，５１０，６００，７００    レンダリングされたグラフ
５０１〜５０５，５１１〜５１５，６０１〜６０５，７０１〜７０５    ノード
５０９，６０９    エッジ
９００    グラフレイアウト方法
９０１    グローバルランク割り当てを計算
９０２    パスのグローバルセットをフィルタリング
９０３    グラフのレイアウトを計算
９０４    グラフのレイアウトを記憶
９１１    パスを選択
９１２    グローバルランク割り当てが完了したか否かを確認
９１３    グローバルランク割り当てを更新
１０００    コンピュータ読み取り可能な媒体
１０１０    書き込み可能部分
１０２０    コンピュータプログラム
１１１０    集積回路
１１２０    プロセッシングユニット
１１２２    メモリ
１１２４    専用集積回路
１１２６    通信要素
１１３０    相互接続
１１４０    プロセッサシステム
【図１ａ】
2021529381.tif 000003
【図１ｂ】
2021529381.tif 000004
【図２】
2021529381.tif 000005
【図３ａ】
2021529381.tif 000006
【図３ｂ】
2021529381.tif 000007
【図３ｃ】
2021529381.tif 000008
【図３ｄ】
2021529381.tif 000009
【図４ａ】
2021529381.tif 000010
【図４ｂ】
2021529381.tif 000011
【図５Ａ】
2021529381.tif 000012
【図５Ｂ】
2021529381.tif 000013
【図６】
2021529381.tif 000014
【図７】
2021529381.tif 000015
【図８】
2021529381.tif 000016
【図９ａ】
2021529381.tif 000017
【図９ｂ】
2021529381.tif 000018
【国際調査報告】
2021529381.tif 000019
2021529381.tif 000020
2021529381.tif 000021