IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マグナビュー ビー.ブイ.の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-01
(45)【発行日】2023-11-10
(54)【発明の名称】安定したグラフレイアウトの決定
(51)【国際特許分類】
   G06T 11/20 20060101AFI20231102BHJP
   G09G 5/36 20060101ALI20231102BHJP
【FI】
G06T11/20 600
G09G5/36 100
【請求項の数】 17
(21)【出願番号】P 2020571599
(86)(22)【出願日】2019-06-07
(65)【公表番号】
(43)【公表日】2021-10-28
(86)【国際出願番号】 EP2019064925
(87)【国際公開番号】W WO2020001956
(87)【国際公開日】2020-01-02
【審査請求日】2022-05-13
(31)【優先権主張番号】18180380.0
(32)【優先日】2018-06-28
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】520498239
【氏名又は名称】マグナビュー ビー.ブイ.
【氏名又は名称原語表記】MAGNAVIEW B.V.
【住所又は居所原語表記】Kennedyplein 244,5611 ZT Eindhoven,The Netherlands
(74)【代理人】
【識別番号】100180781
【弁理士】
【氏名又は名称】安達 友和
(74)【代理人】
【識別番号】100182903
【弁理士】
【氏名又は名称】福田 武慶
(72)【発明者】
【氏名】ブリーゲン,ローランド アウグスティヌス マリア
(72)【発明者】
【氏名】シーペンズ,ローランド ヨハネス
(72)【発明者】
【氏名】メンネス,ロビン ヨハネス ピーター
【審査官】益戸 宏
(56)【参考文献】
【文献】特開2015-203883(JP,A)
【文献】特開2015-075960(JP,A)
【文献】米国特許出願公開第2011/0025692(US,A1)
【文献】国際公開第2006/091119(WO,A1)
【文献】Emden R. Gansner,A Technique for Drawing Directed Graphs,IEEE TRANSACTIONS ON SOFTWARE ENGINEERING,1993年03月,VOL.19, NO.3,pp.214-230
(58)【調査した分野】(Int.Cl.,DB名)
G06T 11/00
G06T 1/00
G09G 5/36
G06F 16/904
(57)【特許請求の範囲】
【請求項1】
グラフのレイアウトを決定するためのグラフレイアウトデバイス(110)であって、
前記グラフは、ノードのセットを通るパスのセットによって誘導され、前記グラフのノードは、前記ノードのセットに含まれ、前記パスのセットは、前記ノードのセットを通るパスのグローバルセットのサブセットであり、前記レイアウトは、前記グラフの各ノードの位置を含み、
前記グラフレイアウトデバイスは、
前記グラフを記憶するように構成されたメモリと、
プロセッサと、
を含み、
前記プロセッサは、
前記ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当てを計算することと、
前記パスのセットを取得するために前記パスのグローバルセットをフィルタリングすることと、
前記グローバルランク割り当てに基づいて前記グラフのレイアウトを計算することと、
前記メモリに前記グラフのレイアウトを記憶することと、
を実行するように構成され、
前記グローバルランク割り当てを計算することは、繰り返し、前記パスのグローバルセットからパスを選択することと、選択されたパスに基づいて前記グローバルランク割り当てを更新することとを含み、
等しいランク割り当てを有する前記グラフのノードは、互いに隣接して配置されることを特徴とするグラフレイアウトデバイス。
【請求項2】
前記グラフレイアウトデバイスはさらに、追加のグラフのレイアウトを決定するように構成され、
前記追加のグラフは、前記ノードのセットを通るパスの追加のセットによって誘導され、
前記パスの追加のセットは、前記パスのグローバルセットのサブセットであり、
前記グラフのレイアウトと前記追加のグラフのレイアウトは、同じグローバルランク割り当てに基づいて計算されることを特徴とする、請求項1に記載のグラフレイアウトデバイス。
【請求項3】
前記グラフレイアウトデバイスは、ディスプレイをさらに備え、
前記プロセッサはさらに、前記グラフのレイアウトに従って前記グラフを前記ディスプレイにレンダリングするように構成されていることを特徴とする、請求項1又は2に記載のグラフレイアウトデバイス。
【請求項4】
前記グラフレイアウトデバイスは、ディスプレイをさらに備え、
前記グラフレイアウトデバイスはさらに、前記グラフのレンダリングを前記追加のグラフのレンダリングにモーフィングするアニメーションを前記ディスプレイにレンダリングするように構成されていることを特徴とする、請求項2に記載のグラフレイアウトデバイス。
【請求項5】
前記グラフのレイアウトを計算することは、
等しいランク割り当てを有するノードのセットを決定することと、
前記ノードのセットの順序付けを決定することと、
前記グローバルランク割り当てと前記順序付けとに従って前記ノードのセットにおけるノードの位置を割り当てることと、
を含むことを特徴とする、請求項1から4のいずれか一項に記載のグラフレイアウトデバイス。
【請求項6】
等しいランク割り当てを有するノードのセットの順序付けを決定することは、
等しいランク割り当てを有するグローバルグラフのノードのセットの順序付けを決定することと、
等しいランク割り当てを有するグローバルグラフのノードのセットの順序付けから等しいランク割り当てを有するノードのセットの順序付けを計算することと、
を含み、
等しいランク割り当てを有するノードのセットは、等しいランク割り当てを有するグローバルグラフのノードのセットのサブセットであり、
前記グローバルグラフは、前記パスのグローバルセットによって誘導されることを特徴とする、請求項5に記載のグラフレイアウトデバイス。
【請求項7】
等しいランク割り当てを有するグローバルグラフのノードのセットの順序付けを決定することは、
各ランクについてバックボーンノードを決定することと、
前記グラフの非バックボーンノードを連結成分に分割することと、
前記バックボーンノードの各々のランクについてのバックボーンノードの前と後とのいずれかに連結成分の全てのノードを順序付けることと、
を含み、
後続のランクについてのバックボーンノードは、前記グローバルグラフのエッジによって連結されることを特徴とする、請求項6に記載のグラフレイアウトデバイス。
【請求項8】
前記グラフのノードは、前記パスのセットからのパスに沿うノードの和集合に含まれ、
前記グラフのエッジは、前記パスのセットからのパスに沿うエッジの和集合に含まれることを特徴とする、請求項1から7のいずれか一項に記載のグラフレイアウトデバイス。
【請求項9】
前記パスのグローバルセットからのパスは、対応する重みを有し、
前記グローバルランク割り当てを計算することは、前記パスのグローバルセットを重みによってソートすることをさらに含み、
繰り返し前記パスのグローバルセットからのパスに基づいて前記グローバルランク割り当てを更新することは、ソートされたグローバルセットのパスの順に実行されることを特徴とする、請求項1から8のいずれか一項に記載のグラフレイアウトデバイス。
【請求項10】
前記パスのグローバルセットからのパスの重みは、前記パスの発生回数を表すことを特徴とする、請求項9に記載のグラフレイアウトデバイス。
【請求項11】
パスの重みは、ユーザによって指定されることを特徴とする、請求項9に記載のグラフレイアウトデバイス。
【請求項12】
選択されたパスに基づいて前記グローバルランク割り当てを更新することは、前記選択されたパスに沿うノードに異なるランクが割り当てられる場合の前記グローバルランク割り当てを更新することを含むことを特徴とする、請求項1から11のいずれか一項に記載のグラフレイアウトデバイス。
【請求項13】
第1のノードが、前記選択されたパスに沿う第2のノードと第3のノードとの間に発生し、前記第1のノードにランクが割り当てられておらず前記第2のノード及び第3のノードにランクが割り当てられている場合、前記第2のノードに割り当てられたランクと前記第3のノードに割り当てられたランクとの間のランクが前記第1のノードに割り当てられて前記グローバルランク割り当てが更新されることを特徴とする、請求項12に記載のグラフレイアウトデバイス。
【請求項14】
前記選択されたパスに沿うノードが、前記選択されたパスに沿う、ランクが割り当てられている全ての他のノードに先行又は後続する場合、前記全ての他のノードのランクよりも小さい又は大きいランクが該ノードに割り当てられて、前記グローバルランク割り当てが更新されることを特徴とする、請求項11に記載のグラフレイアウトデバイス。
【請求項15】
ノードはアクティビティを表し、パスはアクティビティの時間的シーケンスを表すことを特徴とする、請求項1から14のいずれか一項に記載のグラフレイアウトデバイス。
【請求項16】
グラフのレイアウトを決定するためのグラフレイアウト方法(900)であって、
前記グラフは、ノードのセットを通るパスのセットによって誘導され、前記グラフのノードは、前記ノードのセットに含まれ、前記パスのセットは、前記ノードのセットを通るパスのグローバルセットのサブセットであり、前記レイアウトは、前記グラフの各ノードの位置を含み、
前記グラフレイアウト方法は、
前記ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当てを計算することと、
前記パスのセットを取得するために前記パスのグローバルセットをフィルタリングすることと、
前記グローバルランク割り当てに基づいて前記グラフのレイアウトを計算することと、
メモリに前記グラフのレイアウトを記憶することと、
を含み、
前記グローバルランク割り当てを計算することは、繰り返し、前記パスのグローバルセットからパスを選択することと、選択されたパスに基づいて前記グローバルランク割り当てを更新することとを含み、
等しいランク割り当てを有する前記グラフのノードは、互いに隣接して配置されることを特徴とするグラフレイアウト方法。
【請求項17】
請求項16に記載の方法をプロセッサシステムに実行させるための命令を表す一時的又は非一時的なデータを格納するコンピュータ読み取り可能な媒体(1000)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフレイアウトデバイス、グラスレイアウト方法、及びコンピュータ読み取り可能な媒体に関する。
【背景技術】
【0002】
例えば、物理的、生物学的、社会的、及び情報のシステムにおける様々な関係及びプロセスを、ノード及びエッジを含むグラフとして表すことができる。例えば、生物学的システムでは、ノードは、特定の種が存在する領域を表し、エッジは領域間の移動経路(パス)を表すことができる。データから洞察を得るのに特に役立つグラフの種類は、例えばグラフのノードのシーケンスなどのパスのセット(一連のパス)によって誘導されたグラフである。例えば、情報システムにおいて、パスは、ログに記録された関連するアクティビティ(例えば、「ログイン」、「ログアウト」など)の時間的シーケンス(時系列)を表すことができる。そのようなパスのセットは、それらのノードとノード間の接続点(コネクション)とを含むグラフを誘発することができる。このようなグラフは、パス内でどのノードが一緒に頻繁に発生するか、例えば、ログに記録されたどのアクティビティが後で実行されることが多いかについての洞察を得るのに役立つ。
【0003】
グラフの視覚化をユーザに提供することは有益であり、例えば、グラフが表すデータをよりよく理解するために使用できる。グラフ描画の技術分野は、グラフの頂点及びエッジのレイアウト(例えば、画像表現(図形表示)など)の決定に関係する。グラフ描画は複雑である。同じグラフについて多くのレイアウトが可能であり、レイアウトを決定するためのアルゴリズムは、例えばパフォーマンス、結果として生じるグラフのサイズ、様々な美的パラメータ(例えば、エッジ交差の数、エッジの長さ、ノードの空間分布など)などの様々な要素のバランスをとる必要がある。
【0004】
最新技術において知られている種類(クラス)のグラフ描画の技術は、Roberto Tamassia(編集)による「Handbook of Graph Drawing and Visualization(グラフ描画及び視覚化のハンドブック)」の第13章「Hierarchical Drawing Algorithms(階層描画アルゴリズム)」で説明されているように、階層化(レイヤード)グラフ描画又は杉山スタイルのグラフ描画としても知られている階層グラフ描画に焦点を当てている。階層グラフ描画は、通常、少なくともグラフを非巡回にするサイクル削除ステップ、ノードがレイヤ又はランクに分割されるレイヤ割り当てステップ、同じランクの頂点が順序付けられる頂点順序付けステップ、ノードの正確な位置が決定されるx座標割り当てステップを含む。これらのステップの一部は、ヒューリスティックを用いる必要があることが多い複雑な最適化問題の解決を含む。例えば、「Handbook of Graph Drawing and Visualization」で詳述されているように、ステップを実行する様々な方法が使用され得る。階層グラフ描画の実装は、例えば、Graphvizグラフ視覚化ソフトウェアパッケージの一部である「ドット」ツールで利用できる。
【0005】
グラフのレイアウトを決定するために従来の階層化グラフ描画アプローチを使用することの欠点は、安定性の観点からそのようなアプローチの結果が不十分であることである。グラフレイアウトの安定性は、グラフに変更が加えられた場合のノード及びエッジの配置の違いを最小限に抑えることに関連する。例えば、特に、グラフを誘導するパスも考慮に入れて、異なるレイアウトで、レイアウトにおけるエッジの方向、ノード間の相対距離、及び/又はノードの位置を保持する必要がある。例えば、データセットのインタラクティブな分析のためのシステムでは、例えば、パスの様々なフィルタリングを実行し、結果として生じるグラフを検査することによって、例えば、ユーザが変化を観察し易くするために、結果として生じる様々なグラフ間の安定性が望まれる。しかし、安定性は通常、従来の階層化グラフ描画アプローチでは保証されない。例えば、単一のエッジを追加又は削除すると、グラフのレイアウトが完全に異なり、何が変更されたかを確認するのが困難になる可能性がある。
【0006】
したがって、安定性を向上したパス誘導グラフのグラフレイアウト方法を提供することが望ましい。
【発明の概要】
【0007】
特許請求の範囲で定義されるようなグラフレイアウトデバイスが提案される。グラフレイアウトデバイスは、グラフのレイアウトを決定する。グラフは、ノードのセットを通るパスのセットによって誘導される。グラフのノードは、ノードのセットに含まれ、パスのセットは、ノードのセットを通るパスのグローバルセットのサブセットである。レイアウトは、グラフの各ノードの位置を含む。グラフレイアウトデバイスは、ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当てを計算する。グローバルランク割り当てを計算することは、繰り返し、パスのグローバルセットからパスを選択することと、選択されたパスに基づいてグローバルランク割り当てを更新することとを含む。グラフレイアウトデバイスは、パスのセットを取得するために前記パスのグローバルセットをフィルタリングする。グラフレイアウトデバイスは、グローバルランク割り当てに基づいてグラフのレイアウトを計算し、メモリにグラフのレイアウトを記憶する。等しいランク割り当てを有するグラフのノードは、互いに隣接して配置される。
【0008】
興味深いことに、パスのグローバルセットを使用してグローバルランク割り当てを計算し、グローバルランク割り当てを使用してグラフのレイアウトを計算することにより、同じノードのグローバルセットに関連する異なるグラフが同じグローバルランク割り当てを再利用できるので、安定性が向上する。さらに、この方法でグローバルランク割り当てを計算し、且つ/又は、それを再利用することにより、パフォーマンス上の利点が得られ、且つ/又は、基になるデータとより厳密に適合するグラフが得られる。
【0009】
一実施形態において、グラフレイアウトデバイスは、同じグローバルランク割り当てに基づいて、ノードのセットを通るパスの追加のセットによって誘導される追加のグラフのレイアウトを決定し、したがって、グラフと追加のグラフとの間の安定性が向上する。一実施形態において、グラフレイアウトデバイスは、グラフをディスプレイにレンダリングする。別の一実施形態において、グラフレイアウトデバイスは、グラフのレンダリングを追加のグラフのレンダリングにモーフィングするアニメーションをレンダリングし、レンダリングが、安定性の向上により容易になる。
【0010】
一実施形態において、グラフのレイアウトを計算することは、等しいランク割り当てを有するノードのセットを決定することと、ノードのセットの順序付けを決定することと、グローバルランク割り当てとこの順序付けとに従ってノードのセットにおけるノードの位置を割り当てることとを含む。一実施形態において、等しいランク割り当てを有するノードは、グローバルグラフの順序付けに従って順序付けされ、これにより、安定性及びパフォーマンスがさらに向上する。一実施形態において、ノードは、バックボーンノードを使用して順序付けられ、基になるデータ、特にその順次的な性質により厳密に適合するグラフが得られる。
【0011】
一実施形態において、パスのグローバルセットからのパスは、グローバルランク割り当てが決定される順序を決定する重みを有する。これにより、基になるデータにより厳密に適合するグラフレイアウトが得られる。例えば、重みの大きいパスをより顕著に表示するグラフレイアウトなどである。一実施形態において、重みは、発生回数を表す。一実施形態において、パスの重みは、ユーザによって指定される。一実施形態において、ノードはアクティビティを表し、パスはアクティビティの時間的シーケンスを表す。
【0012】
本発明の別の一態様は、特許請求の範囲で定義されるようなグラフレイアウト方法である。本発明の方法は、コンピュータ実施方法としてコンピュータで、又は専用のハードウェアで、又はその両方の組み合わせで、実施され得る。本発明の方法の実行可能コードは、コンピュータプログラム製品に格納され得る。コンピュータプログラム製品の例には、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。好ましくは、コンピュータプログラム製品は、該プログラム製品がコンピュータで実行されるときに本発明の方法を実行するための、コンピュータ読み取り可能な媒体に格納された非一時的なプログラムコードを含む。
【0013】
好ましい実施形態において、コンピュータプログラムは、コンピュータプログラムがコンピュータで実行されるときに、本発明の方法の全てのステップを実行するように構成されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムは、コンピュータ読み取り可能な媒体に格納される。
【0014】
本発明の別の一態様は、コンピュータプログラムをダウンロードできるようにする方法を提供する。この態様は、コンピュータプログラムが、例えばAppleのApp Store、GoogleのPlayストア、MicrosoftのWindowsストアなどにアップロードされる場合、コンピュータプログラムがそのようなストアからダウンロード可能な場合に使用される。
【図面の簡単な説明】
【0015】
本発明のさらなる詳細、態様、及び実施形態は、図面を参照して、例示としてのみ説明される。図における要素は、単純さ及び明確さのために示され、必ずしも一定の縮尺で描かれているわけではない。図において、既に説明した要素に対応する要素には同じ参照番号を付されている場合がある。
図1図1a、図1bは、グラフレイアウトデバイスの実施形態の例を概略的に示す。
図2】グラフレイアウトデバイスの一実施形態の一例を概略的に示す。
図3図3a、図3b、図3cは、ランキングユニットの実施形態の例を概略的に示す。図3dは、グラフのレイアウトに従ってレンダリングされたグラフの一例を概略的に示す。
図4図4aは、2つのグラフのレイアウトをもたらすグローバルランク割り当ての一例を概略的に示す。図4bは、2つのグラフのレイアウトをもたらすローカルランク割り当ての一例を概略的に示す。
図5図5aは、「ドット」を使用して計算されたグラフのレイアウトに従ってレンダリングされたグラフの一例を示す。図5bは、「ドット」を使用して計算されたグラフのレイアウトに従ってレンダリングされたグラフの一例を示す。
図6】一実施形態による、計算されたグラフのレイアウトに従ってレンダリングされた図5aのグラフの一例を示す。
図7】一実施形態による、計算されたグラフのレイアウトに従ってレンダリングされた図5bのグラフの一例を示す。
図8】グラフレイアウト方法の一実施形態の一例を概略的に示す。
図9図9aは、一実施形態による、コンピュータプログラムを記憶する書き込み可能な部分を有するコンピュータ読み取り可能な媒体を概略的に示す。図9bは、一実施形態によるプロセッサシステムの図示を概略的に示す。
【発明を実施するための形態】
【0016】
本発明は、多くの異なる形態において実施形態の影響を受け易いが、本開示が本発明の原理の例示とみなされるべきであり且つ示され説明されている特定の実施形態に本発明を限定することを意図するものではないという理解の下で、一又は複数の特定の実施形態が図面に示され本明細書で詳細に説明される。
【0017】
以下では、理解し易くするために、実施形態の要素が動作中に説明される。しかし、各々の要素は、それらによって実行されるように説明されている機能を実行するように構成されていることが明らかである。
【0018】
さらに、本発明は実施形態に限定されず、本発明は、本明細書に記載され、又は相互に異なる従属請求項に記載される、全ての各々の新規な特徴又は特徴の組み合わせにある。
【0019】
図1a、図1bは、グラフのレイアウトを決定するためのグラフレイアウトデバイスの可能な実施形態を概略的に示す。図1aに示すグラフレイアウトデバイス110は、プロセッサ130とメモリ140とを備える。図1bに示すグラフレイアウトデバイス111は、ディスプレイ121と、プロセッサ131と、メモリ141とを備える。例えば、メモリ140、141は、ソフトウェア及び/又はデータを記憶し、各々のプロセッサ130、131は、このソフトウェア及び/又はデータに従って動作するように構成されている。プロセッサ130、131は、一又は複数のプロセッサ回路(例えば、マイクロプロセッサ、ASIC、FPGAなど)として実装される。プロセッサは、例えば、クラウドコンピューティングアーキテクチャ内などでプロビジョニングされてもよい。さらなる例が本明細書に示される。メモリ140、141は、各々のプロセッサ130、131によって実行可能なコンピュータプログラム命令を記憶してもよい。プロセッサ130、131は、場合によっては各々のメモリ140、141と共に、グラフレイアウトデバイスの実施形態に従って構成される。
【0020】
以下の図2図3a~図3cは、プロセッサの機能ユニットである可能性のある機能ユニットを示す。例えば、図2は、プロセッサの可能な機能構成の青写真として使用され得る。プロセッサは、図2図3a~図3cにおいて、ユニットとは別に示されていないが、図1a、図1bに示される。例えば、図2に示す機能ユニットは、デバイス110で例えばデバイス110の電子メモリに記憶されデバイス110のマイクロプロセッサによって実行可能なコンピュータ命令に全体的又は部分的に実装されてもよく、デバイス111についても同様である。組み合わせ(ハイブリッド)の実施形態では、機能ユニットは、部分的にハードウェアに、例えばコプロセッサ、例えば暗号プロセッサとして、そして部分的にデバイス110及び/又は111に記憶されそこで実行されるソフトウェアに実装される。
【0021】
図2は、グラフレイアウトデバイス210の可能な実施形態を概略的に示す。上記のとおり、図2は、プロセッサによって実装され得る機能ユニットを示す。図2は、説明のため、幾つかのデータ要素も示す。グラフレイアウトデバイス210は、グラフのレイアウト244を決定するように構成される。レイアウトは、グラフの各ノードの位置(例えば、x座標とy座標など)を含む。レイアウトはまた、下記のとおり、例えばダミーのノードの追加のレイアウト要素の位置を含んでもよい。
【0022】
以下でより詳細に説明するように、レイアウト244の決定は、グラフレイアウトデバイス210の各々のユニット、例えば、ランキングユニット231、フィルタリングユニット232、レイアウト233、及び任意選択でレンダリングユニット234によって実行される幾つかのステップを含む。デバイスは、フィルタリングによって取得されたパスのグローバルセットのサブセットであるノードのセットによって誘導されたグラフのレイアウト244を決定する。グラフレイアウトデバイス210のランキングユニット231は、ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当て242を計算する。等しいランク割り当てを有するグラフのノードは、グラフレイアウトで互いに隣接して配置される。興味深いことに、ランク割り当ては、パスのグローバルセットに基づくグローバルランク割り当てであるので、安定性を向上させる。フィルタリングユニット232は、パスのグローバルセットをフィルタリングして、グラフを誘導するパスのセットを取得する。レイアウトユニット233は、等しいランク割り当てを有するグラフのノードが互いに隣接して配置されるように、グローバルランク割り当て242に基づいてグラフのレイアウトを計算する。レンダリングユニット234は、任意にグラフをレンダリングする。ランキングユニット231は、例えば、参照により本明細書に含まれるRoberto Tamassia(編集)による「Handbook of Graph Drawing and Visualization」の13.2節「Cycle Removal(サイクル除去)」に詳述されるように、サイクル除去ステップを任意に実行する。グラフレイアウトデバイス210は、例えば、参照により本明細書に含まれるRoberto Tamassia(編集)による「Handbook of Graph Drawing and Visualization」の13.4節「Edge Concentration(エッジ集中)」に詳述されるように、エッジ集中ステップを任意に実行する。
【0023】
興味深いことに、ランキングユニット231はグローバルランク割り当てを計算し、レイアウトユニット233はこのグローバルランク割り当てに基づいてグラフのレイアウトを計算する。これには、複数のグラフのレイアウトが同じグローバルランク割り当てに基づく場合、このランク割り当てを再利用できるという利点があり、グラフレイアウトの計算がより効率的になり、複数のグラフのレイアウト間の安定性を向上させる。安定性の向上は、幾つかの方法で観察できる。例えば、所与のノードxとノードyとの間の距離が2つのグラフレイアウトで類似していること、及び/又はグラフィックオブジェクト(例えば、ノード、エッジなど)が2つのグラフレイアウトで類似した位置にあること、及び/又はレイアウト調整が通常ノードの方向を保持することを観察することによって観察でき、例えば、あるノードがあるグラフのレイアウトで別のノードの左側にある場合、それは通常、別のグラフのレイアウトでもそのノードの左側にある。さらに、グラフのレイアウトの計算では、グラフを誘導するパスのセットの情報が使用されるため、グラフのレイアウトは、以下でさらに詳しく説明するように、基になるデータをよりよく反映する。
【0024】
レイアウトデバイス210がレイアウトを決定するグラフは、ノードのセットを通るパス243のセットによって以下に詳述されるように誘導される。グラフのノードは、ノードのセットに含まれる。パスは通常、順序付けられたノードのシーケンスを含む。例えば、図2は、「A」から「E」のラベルが付いた5つのノード251~255を概略的に示す。パスのセット243は2つのパスを含み、パス257はノード251、252、253の順序付けられたシーケンスを含み、パス258はノード251、254の順序付けられたシーケンスを含む。説明のため、パスをラベルのシーケンスとして示す場合があり、例えば、パス257は「ABC」で示され、パス258は「AD」で示される。ノードのセットを通る様々なパスは、任意に互いに関連する場合があり、例えば、パスのペアは互いに素であるか、又は部分的若しくは完全に重複している場合がある。例えば、一方のパスが他方のサブパスである場合があり、例えば、一方のパスが他のパスのプレフィックス又はサフィックスである場合がある。ノードは、異なる順序で異なるパスで発生する場合があり、例えば、ノードのセット243は、ノードAがノードDに先行するパス「AD」、及びノードAがノードDに直接続くパス「DA」、又はノードAが間接的にノードDに続くパス「DBA」を含む。パスは通常別個のものであるが、これは必須ではない。ノードのセットにおける全てのノードが、パスのセット243からのパスで必ずしも発生するわけではない。例えば、ノード「E」、255は、セット243からのパスで発生しない。
【0025】
パスのセット243によって誘導されたグラフは、有向グラフであってもよい。そのような有向グラフは、ノードのセット及びエッジのセットを含み、エッジは、順序付けられた頂点の対(ペア)である。グラフはループを含んでもよい。ノードのセットは、マルチセットであってもよく、例えば、グラフはマルチグラフ又はマルチダイグラフであってもよい。グラフは、特定の種類の有向グラフ、例えば、有向非巡回グラフ及び/又は強連結グラフであってもよく、或いは、グラフは、補足的特性を有する有向グラフ、例えば、加重有向グラフ、例えば、各エッジには重みが割り当てられるグラフであってもよい。グラフは、あるノードがソースノードであると区別され、別のノードがシンクノードであると区別されるフローネットワークでもあってもよい。有向グラフの他の様々な既知のサブクラス及び変形例が使用されてもよい。パスのセット243によって誘導されたグラフはまた、無向グラフであってもよい。無向グラフは、ノードのセット及びエッジのセットを含み、エッジは、2つのノードのセット又は2つのノードの2つのマルチセットであってもよく、例えば、ループを表すエッジは、同じノードを2回含む2つのマルチセットであってもよい。グラフは、文献で区別される特別な種類の無向グラフ、例えば、連結グラフ又は平面グラフ、及び/又は補足的な特性を有する無向グラフ、例えば、加重無向グラフ若しくは無向マルチグラフであってもよい。
【0026】
グラフは、様々な方法でパス243のセットによって誘導され得る。幾つかの実施形態において、グラフのノードは、パスのセットからのパスに沿うノードの和集合に含まれ、グラフのエッジは、パスのセットからのパスに沿うエッジの和集合に含まれる。例えば、パスのセット243におけるパスで発生する全てのノードが、グラフのノードであってもよく、パスのセット243におけるパスで発生する全てのエッジが、グラフのエッジであってもよい。例えば、パス「ABC」257とパス「AD」258とを含むパスのセット243について考える。このパスのセットによって誘導されたグラフは、ノード「A」、「B」、「C」、「D」と、「A」から「B」、「B」から「C」、「A」から「D」へのエッジとを含む。例えば、グラフは、ノードのセット上に様々なパス、例えば、パス「ABC」及びパス「AD」を重ね合わせることによって取得されてもよい。グラフは、このように定義されたグラフのサブグラフであってもよく、例えば、グラフは、完全な誘導されたグラフのサブグラフとして得られ、完全な誘導されたグラフは、パスのセット243におけるパスで発生するノードとパスのセット243におけるパスで発生するエッジとを含む。例えば、グラフは、基準に従ってフィルタリングすることによって、例えば、特定の基準を満たす全てのエッジを除外することによって、例えば、閾値未満の重みを有する全てのエッジを除外すること及び/又は入力エッジも出力エッジも有しない全てのノードを除外することによって、例えば、エッジを除外した後に、完全な誘導されたグラフのサブグラフとして取得されてもよい。基準、例えば、閾値は、入力として、例えば、ユーザによって与えられた入力として、グラフレイアウトデバイス210によって取得されてもよく、又は、グラフレイアウトデバイス210自体によって計算されてもよい。グラフはまた、他の方法でパスのセット243によって誘導されてもよく、例えば、パスは、パスに沿うノードの全ての対の間のエッジ、又は同様のものを誘導してもよい。
【0027】
異なるアプリケーションにおいて、ノードのセットとパスのセット243が、異なる種類のオブジェクトを表してもよい。幾つかの実施形態において、ノードはアクティビティを表し、パスはアクティビティの時間的シーケンスを表す。アクティビティは、処理ステップ又は動作ステップ、例えば、製品を製造するための又はサービスを提供するためのプロセスのステップである。例えば、パスは、ケース、例えば、イベントのシーケンスに対応してもよく、この場合、イベントは、ケースの一部として特定の時に発生するアクティビティを含む。アクティビティは一種のイベントであってもよい。異なるケースが同じパスに対応してもよい。例えば、午前11時15分のログインアクティビティと午前11時30分のログアウトアクティビティとを含むケースと、午前11時45分のログインアクティビティと午後12時30分のログアウトアクティビティとを含むケースが、どちらも、ノード「I」、「O」のセットを通るパス「IO」、ログインアクティビティを表すノード「I」、ログアウトアクティビティを表すノード「O」に対応してもよい。他のノードが、他のアクティビティ、例えば、画面ロック、電子メールの送信などを表してもよい。例えば、そのような場合、パスのセット243によって誘導されたグラフは、ノードとして、所与のケースのセットにおけるアクティビティと、ケースの1つにおいて互いに直接連続するアクティビティ間のエッジとを有してもよい。グラフはまた、このように定義されたグラフのサブセットであってもよく、例えば、グラフは、少なくとも最小数のケースにおいて、例えば、10若しくは100のケースにおいて、互いに直接連続するアクティビティ間のエッジ、及び/又は、少なくとも1つの入力エッジ若しくは出力エッジを有するアクティビティを表すノードを含んでもよい。
【0028】
別の例として、ノードは物理的な場所を表してもよく、パスはこのような場所の間のルート、例えば輸送ルートを表してもよい。例えば、ノードはジャンクションを表し、パスは一連のジャンクションを介して始点から終点まで移動する可能な道筋を表してもよい。例えば、ノードは、サイクリングルートのネットワークにおけるジャンクションと、サイクリングルートのネットワークにおけるサイクリングルートを表すパスと、2つのジャンクション間の標識ルートを表すエッジとを表してもよい。或いは、ノードは、公共交通機関の停留所、例えばバス、電車、路面電車、フェリーの停留所を表してもよく、パスは公共交通機関を介して始点から終点まで移動する可能な道筋を表してもよく、エッジは2つの公共交通機関の停留所間の直接の公共交通機関のルート、例えば、1つの列車のある駅から別の駅への移動を表してもよい。有用な実際の概念を表すためのノード、グラフ、パスの他の様々な使用法が知られており、ここに示すグラフレイアウト技術(例えば、システム構造図、計画、運用プロセス図、論理回路図など)の恩恵を受け得る。
【0029】
興味深いことに、パスのセットは、ノードのセットを通るパスのグローバルセット241のサブセットである。例えば、図2におけるパスのグローバルセット241は、ノードのセット243からのパス「ABC」257及び「AD」258を含むが、パス「ACE」256も含む。例えば、パスのグローバルセット241は、ログにおける全てのイベントのシーケンスを含み、パスのセット243が、これらのイベントのシーケンスのサブセットを含んでもよい。例えば、パスのセット243は、条件によって選択されてもよい。例えば、条件は、一時的な条件、例えば、所与の期間に(例えば、先週)起こったイベントのシーケンスのサブセットであってもよい。或いは、条件は、パスのセット243からのパスが特定の条件を満たすか、又は、特定の属性を有することであってもよい。例えば、パスは、最小及び/又は最大の長さを有し、パスは、例えば、述語(例えば、術後「重要」)でタグ付けされている。或いは、条件は、パスが特定のノード又は特定の種類のノード(例えば、特定のアクティビティ)を含むことであってもよい。後でより詳細に説明するように、パスのセット243は、フィルタリングによってパスのグローバルセット241から取得される。パスのグローバルセット241は、グローバルランク割り当て242を計算するために使用され、グローバルランク割り当て242は、グラフのレイアウト244を計算するために使用される。これには、パスのグローバルセット及び/又はグローバルランク割り当てを使用しない従来の方法と比較して、幾つかの利点がある。例えば、パスの異なるセットによって誘導されるグラフのレイアウト間の安定性が向上し、グラフレイアウトの計算における計算の複雑さが低減され、且つ/又は、パスのグローバルセットからの特定のパス(例えば、重みの大きいパス)が、そのような特定のパスからのノードがそのようなパスにおいて発生する順序でより頻繁に表示されるように、一貫して表示される。
【0030】
グラフレイアウトデバイス210は、ランキングユニット231を備える。ランキングユニット231は、ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当て242を計算する。グローバルランク割り当て242は、階層化グラフ描画技術に従ってグラフのレイアウトを決定することを容易にする。好ましくは、グローバルランク割り当て242は、パスのグローバルセット241における各パスについて、異なるランクがパスに沿うノードに割り当てられるというプロパティ(特性)を満たす。このプロパティは、パスに沿うノードが互いに隣接して描画されることを回避してこれによりエッジ交差の数を減らすための階層化グラフ描画に役立つ。何故なら、グラフのレイアウトは、ランク割り当てを有するグラフのノードが互いに隣接して配置されるように計算されるためである。興味深いことに、ランクは、ノードのセットにおける各ノードに割り当てられ、例えば、パスのグローバルセット241からのパス256で発生するがパスのセット243からのパスでは発生しないノード255にも割り当てられる。結果として、グローバルランク割り当て242は、他のグラフ、例えば、ノードのセットを通る異なるパスのセットによって誘導されたグラフのレイアウトを計算するときに再利用することができる。したがって、複数のグラフのレイアウトが、同じグローバルランク割り当て242に基づくことができ、これらの異なるグラフのレイアウト間の安定性が向上し、グラフレイアウトの計算の効率が向上する。
【0031】
グローバルランク割り当て242を計算するために、ランキングユニット231は、繰り返し、パスのグローバルセット241からパスを選択し、選択されたパスに基づいてグローバルランク割り当て242を更新する。例えば、ランキングユニット231は、所望のグローバルランク割り当てが得られるまで、パスを選択し、グローバルランク割り当てを更新し、別のパスを選択し、グローバルランク割り当てを更新するなどである。好ましい実施形態において、ランキングユニット231は、パスのグローバルセット241からの全てのパスを反復するが、これは必須ではない。パスのサブセットのみ、例えば固定数のパス(例えば、最初の10個若しくは10%のパス)のみ、又は特定のプロパティを満たすパスのみ、例えば重みが10以上のパスのみを反復することも可能である。或いは、特定の基準が満たされるまで、例えばグローバルランク割り当てが特定のプロパティを満たすまで、例えばノードのセットにおける全てのノード若しくはノードのセット243におけるパスで発生する全てのノードにランクが割り当てられるまで、又はグローバルランク割り当てが複数の反復にわたって(例えば、最後の5回の反復にわたって)静的なままになるまで、反復することも可能である。有利なことに、グラフ自体を入力として使用する、例えばグラフがどのノード及びエッジを含むかに関する情報を使用するのみの代わりに、ランキングユニット231は、例えばパスのグローバルセット241などの追加情報を利用することができる。パスのグローバルセット241は、グラフレイアウトを計算するために使用されるランキング又は層割り当ての方法で通常は利用できない。このような理由で、ランク割り当て242をより効率的に計算することを可能するだけでなく、基礎となるデータ、例えば、パスのグローバルセット241により厳密に適合するランク割り当て242をもたらす。結果として生じるグラフのレイアウトは、パスのグローバルセット241におけるパスのノードの順序と適合することが望ましい。例えば、パスのセット241からの一又は複数のパスからのノードは、一般に、レイアウトにおいて左から右又は上から下に表示されるべきである。有利なことに、ランキングユニット231は、そのような適合(マッチング)を向上させるためにパスのグローバルセット241を使用し得る。
【0032】
パスのグローバルセット241からパスを選択するための様々な方法が可能である。好ましい実施形態において、パスのグローバルセット241からのパスは、対応する重みを有する。ランキングユニット231は、パスのグローバルセットを重みによって、例えば、昇順又は降順でソートしてもよい。次に、ランキングユニット231は、ソートされたグローバルセットのパスの順にグローバルランク割り当て242を繰り返し更新してもよい。例えば、グローバルセットのパス241からパスを繰り返し選択することは、ソートされたグローバルセットのパスから次のパスを選択することを含んでもよい。好ましい実施形態において、パスは、重みの降順(重みが大きい順)に選択される。結果として、重みが大きいパスがグローバルランク割り当ての初期の更新で使用され、これにより、そのようなパスが他のパスよりも、グローバルランク割り当て、したがってグラフのレイアウトに、大きな影響を与える。これには、結果として生じるグラフレイアウトでより重要なパスがより顕著に特徴付けられるという利点がある。
【0033】
パスの重みは、グラフレイアウトデバイス210によって計算されてもよく、入力として受け取られてもよく、又はユーザによって指定されてもよく、例えば、ユーザは、例えば、グラフレイアウトデバイス210のユーザインタフェースを介して、少なくとも1つのパスの重みを指定してもよい。例えば、デフォルトの重みは、例えば、グラフレイアウトデバイス210によってパスに割り当てられてもよく、ユーザは、一又は複数の、例えば、全てのパスについて、このデフォルトの重みをオーバーライドしてもよい。これにより、ユーザによって選択されたパスが、他のパスよりもグラフのレイアウトでより顕著に特徴付けられてもよい。幾つかの実施形態において、パスのグローバルセット241からのパスの重み又はデフォルトの重みは、パスの発生(出現)回数を表す。特にそのような場合、複数のサブセットにおいて頻繁な発生が起こる可能性が高いため、同じグローバルパスセットのサブセットであるパスの異なるセットについて、重みの大きいパスのセットが同じ又は類似している可能性がある。したがって、パスのグローバルセットの異なるサブセットについてのグローバルランク割り当ての精度が向上する、例えば、パスのグローバルセット241からのパスは、アクティビティの時間的シーケンスを表し、重みは、例えば、ログファイルにおいて、アクティビティの時間的シーケンスのインスタンスが発生した回数を表してもよい。
【0034】
パスを繰り返し選択するための他の方法又は上記の方法の変形も可能であり、例えば、パスは、ランダムに、例えば、ランダムに均一に、又はバイアスをかけて、例えば、パスの重みに比例する確率で選択されてもよい。
【0035】
パスを選択すると、ランキングユニット231は、選択されたパスに基づいてグローバルランク割り当て242を更新する。ローバルランク割り当て242の更新は、例えば以前にランクが割り当てられなかった選択されたパスからの、ノードへのランクの割り当て、及び/又は、選択されたパスからのモード若しくは他のノードに以前に割り当てられたランクの更新を含んでもよい。ランキングユニット231は、好ましくは、最初は空のランク割り当てで開始し、例えば、ランクはノードに割り当てられていない。或いは、ランキングユニット231は、デフォルトのランクが全てのノードに割り当てられているランク割り当てで開始し、例えば、全てのノードに同じランクに割り当てられているか、又は全てのノードにランダムなランクが割り当てられている。幾つかの実施形態において、選択されたパスに基づいてグローバルランク割り当て242を更新した後、ランクが、これまでランキングユニット231によって処理されたパスに沿う全てのノードにグローバルランク割り当て242によって割り当てられる。
【0036】
幾つかの実施形態において、ランキングユニット231は、グローバルランク割り当て242を更新する。ここで、別個のランクが、選択されたパスに沿うノードに割り当てられる。とりわけ、これは、上記のように、階層化グラフ描画に望ましい、パスのグローバルセット241からの各パスに沿うノードに別個のランクが割り当てられることを容易にし得る。例えば、ランキングユニット231は、選択されたパスに沿う第1のノード及び第2のノードに同じランクが以前に割り当てられたことを検出してもよい。この場合に、ランキングユニット231は、例えば、第2のノードのランクを1つインクリメントすることによって、第1のノードと第2のノードのランクを区別するようにランク割り当てを更新してもよい。一又は複数の他のノードのランクもインクリメントされてもよい。例えば、第2のノードのランク以上のランクを有する、及び/又は、これまでに選択されたパスに沿う第2のノードに直接若しくは間接的に続く、又は同様の、全てのノードのランクがインクリメントされてもよい。
【0037】
好ましくは、各反復(イテレーション)の後、別個のランクが、選択されたパスにおける全てのノード及び/又は以前に選択された全てのパスに割り当てられる。例えば、ランキングユニット231は、選択されたパスにおいて直接連結されているノードに別個のランクが割り当てられる不変条件として維持してもよい。しかし、これは必須ではない。例えば、ランキングユニット231は、反復を実行する間、このプロパティを不変条件として保証しなくてもよく、代わりに、反復が実行された後に後処理によってこれを達成する。
【0038】
ランキング(ランク付け)は、他の順序付けられたランク値のセットも使用可能であるが、通常、整数である。グローバルランク割り当て242においてノードに割り当てられるランクは、グローバルランク割り当て242の計算中と計算完了後とのいずれかにおいても、連続していなくてもよい。例えば、ランク1を一又は複数のノードに割り当て、ランク3を他のノードに割り当て、ランク2は割り当てられないランクであってもよい。連続するランクを割り当てないことは、以前に割り当てられたランクを更新する必要がないことにより、以前に割り当てられた2つのランクの間にあるノードにランクを割り当てることを容易にするので、特にグローバルランク割り当ての計算中に、有益であり得る。例えば、ノードAのランクが1でありノードBのランクが2である場合、ノードAとノードBのランクの間にあるノードCに整数のランクを割り当てるには、AのランクとBのランクとのいずれかを更新する必要がある。一方、ノードAのランクが100でありノードBのランクが200である場合、A又はBのランクに影響を与えることなく、Cにランク150を割り当てることができる。同様に、幾つかの実施形態において、例えば、グローバルランク割り当て242の計算中、ランクは負であってもよい。これは、以前に割り当てられた全てのランクよりも小さいランクをノードに割り当てることを容易にし得るので、グローバルランク割り当ての計算を容易にするのに有益であり得る。例えば、以前に割り当てられた全てのランクよりも1単位小さいランクがノードに割り当てられてもよい。例えば、以前に割り当てられた最小のランクが-2であり、ランク-3がノードに割り当てられてもよい。グローバルランク割り当て242におけるランクは、ランキングユニット231による計算中及び/又は計算後に必ずしもメモリに明示的に記憶されるとは限らない。例えば、ランクは、各レベルが同じランクが割り当てられたノードのセットを含むレベルの連結リストを保持することによって、又は、同様のデータ構造によって黙示的に記憶されてもよい。以下の例では、明確さのため、整数のランクを明示的に示すが、このようなランクは黙示的であってもよいことが理解される。
【0039】
図3aは、ランキングユニット331の一実施形態の一例を概略的に示す。図3aでは、ランキングユニット331は、以前にグローバルランクが割り当てられていなかったノードA(351)、ノードC(353)、ノードE(355)にランク1、2、3を割り当てることによって、選択されたパス「ACE」356に基づいてグローバルランク割り当て342を更新する。例えば、パス356は、最初に選択されたパスであり、ランキングユニット331は、選択されたパス356からの各々のノードに、増加するランク、例えば、連続するランクを割り当てることによって、グローバルランク割り当て331を更新する。
【0040】
図3bは、ランキングユニット331の一実施形態の一例を概略的に示す。この図は、第1のノード、例えば、ノード「B」(352)が、選択されたパス、例えば、パス「ACE」(356)に沿う、第2のノード、例えば、ノード「A」(351)と第3のノード、例えば、ノード「C」(353)との間に発生する状況を例示する。ここで、第1のノードにランクは割り当てられておらず、第2のノード及び第3のノードにランクが割り当てられており、例えば、ノード「A」351にランク1が割り当てられ、ランク「C」353にランク2が割り当てられている。このような状況において、第2のノードに割り当てられたランクと第3のノードに割り当てられたランクとの間のランクが第1のノードに割り当てられて、グローバルランク割り当てが更新されてもよい。例えば、図3bにおいて、第1のノード「B」(352)にランク2が割り当てられ、第3のノード「C」(353)のランクが3に更新されて、ノード352のランクが、ノード351のランクとノード353のランクとの間のランクになる。
【0041】
第2のノードと第3のノードとの間にランクが割り当てられていない複数のノードがあってもよい。その場合、これらのノードの各々にランクが割り当てられてもよく、好ましくは別個のランク、例えば連続するランクが割り当てられる。第2のノードと第3のノード以外のノードのランクが更新されてもよい。例えば、更新前に別個のランクを有するノードが更新後にも別個のランクを有するように、ランクが更新されてもよい。例えば、図3bでは、更新後にノードC(353)とノードE(355)とが異なるランクを有するように、ノードE(355)のランクが3から4に更新される。例えば、所望のランク以上であるノードのランクを1つインクリメントして次に所望のランクをノードに割り当てることによって、所望のランクをノードに割り当ててもよい。
【0042】
図3cは、ランキングユニット331の一実施形態の一例を概略的に示す。この図は、選択されたパス、例えば、パス「AD」(358)に沿うノード、例えば、ノード「D」(354)が、選択されたパスに沿う、ランクが割り当てられている全ての他のノード、例えば、ノード「A」(351)に先行又は後続する状況を例示する。このような状況において、ランキングユニット331は、上記の全ての他のノードのランクよりも小さい又は大きいランクがノードに割り当てられるように、グローバルランク割り当てを更新してもよい。例えば、図3cでは、グローバルランク割り当て342’’において、ノード「D」に先行するノード「A」(351)のランクよりも大きいランク2が、ノード「D」(354)に割り当てられる。選択されたパスに沿う、ランクが割り当てられている全てのノードに先行する複数のノート及び/又は後続する複数のノードがあってもよい。ここで、ランクは、このような先行する複数のノード及び/又は後続する複数のノードの各々に割り当てられてもよく、好ましくは、別個の、例えば、増加するランクが割り当てられる。割り当てられるランクは、この例のように、割り当てられたランクに直接先行又は後続するが、これは必須ではない。例えば、ランク3、4、又はより大きなランクがノード「D」(354)に割り当てられることも可能である。
【0043】
パスに沿う、以前に割り当てられたノードのランクが更新されてもよい。例えば、パス「AB」が選択され、ランク1がノード「B」に割り当てられている場合、「B」のランクが2に更新され、「A」のランクが1に設定されてもよい。上記のように、例えば、上記全ての他のノードのランクよりも小さい所望のランクをノードに割り当てるために、他のノードのランクが同様に更新され、既に割り当てられており所望のランク以上であるグローバルランク割り当て342’’における全ての既存のランクがインクリメントされて、所望のランクがノードに割り当てられてもよい。ノードに割り当てられるランクは、ノードが上記全ての他のノードに先行する場合にはより小さく、後続する場合にはより大きくてもよい。しかし、ランキングユニット331は、ノードが上記全ての他のノードに先行する場合、上記全ての他のノードのランクよりも大きいランクを割り当ててもよい。例えば、ランク3がノード「B」に割り当てられ、ランク2がノード「C」に割り当てられ、選択されたパスが「AB」である場合、ランク1の代わりにランク4がノード「A」に割り当てられてもよい。この場合、例えば、結果として生じるグラフのレイアウトのコンパクトさが向上する。同様に、ランキングユニット331は、ノードが上記全ての他のノードに後続する場合、上記全ての他のノードのランクよりも小さいランクを割り当ててもよい。
【0044】
幾つかの実施形態において、上記全ての他のノードのランクよりも小さい又は大きいランクをノードに割り当てる代わりに、直接先行又は後続するノードのランクよりも小さい又は大きいが必ずしも上記全ての他のノードのランクよりも小さい又は大きいとは限らないランクが割り当てられる。これは、グローバルランク割り当てのランクの総数を制限するのに有益であり、グラフがよりコンパクトになる可能性がある。
【0045】
図5a、5b、6、7は、グラフレイアウト210によって達成される利点の幾つか(例えば、安定性の向上)を示す、グラフレイアウトに従ってレンダリングされたグラフの例を示す。図5aは、Graphvizグラフ視覚化ソフトウェア(https://www.graphviz.org/)からの既知のツールである「dot」を使用して計算されたグラフのレイアウトに従ってレンダリングされたグラフ500を示す。「dot」は、有向グラフの「階層的な」又は階層化された描画を作成するグラフレイアウトプログラムである。レイアウトアルゴリズムは、エッジを同じ方向(上から下又は左から右)に向け、エッジ交差を回避してエッジの長さを短くすることを試みる。グラフは、「Check received invoice(受け取った請求書をチェック)」というラベルの付いたノード501と、「Post-process invoice(後処理請求書)」というラベルの付いたノード502と、ノード501からノード502までのエッジ509とを含む。図5bは、フィルタリングによって図5aのグラフから取得したグラフの、「dot」を使用して計算されたグラフのレイアウトに従ってレンダリングされたレンダリング510を示す。図5bにおけるレンダリングされたグラフは、図5aにおけるレンダリングされたグラフと同じである。例えば、エッジ509が除去されていることを除いて、グラフは、同じノードとノード間のエッジとを含む。例えば、レイアウト510において、「Check received invoice」とラベル付けされたノード511は、「Post-process invoice」とラベル付けされたノード512にエッジで連結されていない。図から分かるように、2つのグラフ間のこの小さな違いは、2つのグラフレイアウト500と510の間に大きな違いをもたらす。例えば、2つのグラフ間の安定性は低くなる。レイアウト500と510は類似していないように見える。例えば、それらがほぼ同じグラフを表していることを確認するのは困難である。例えば、これは、レイアウト500をレイアウト510にモーフィングするアニメーションのレンダリングを複雑にする。特に、レイアウト500では、「Process employee reimbursement(従業員への払い戻しを処理)」503とラベル付けされたノードと「Checked and approved(チェック及び承認済み)」504とラベル付けされたノードとが隣接していないが、レイアウト510では、対応するノード513と514は隣接している。
【0046】
図6は、一実施形態による、計算されたレイアウトに従ってレンダリングされた、図5aと同じグラフ600を示す。図から分かるように、「Check received invoice」というラベルの付いたノード601は、「Post-process invoice」というラベルの付いたノード602にエッジ609によって連結されている。図7は、一実施形態による、計算されたレイアウトに従ってレンダリングされた、図5bと同じグラフ700を示す。ここで、「Check received invoice」というラベルの付いたノード701と「Post-process invoice」というラベルの付いたノード702とは、エッジによって連結されていない。両方のグラフは、共通のセットのノードを通るパスの各々のセットによって誘導され、パスの各々のセットは、パスのグローバルセットのサブセットである。例えば、グラフ700は、グラフからエッジ609を除去するフィルタリングによってグラフ600aから得られる。両方のグラフのレイアウトは、同じグローバルランク割り当てに基づく。結果として、両方のグラフレイアウトにおいて、同じノードが互いに隣接する。例えば、レイアウト600において隣接するノードは、レイアウト700において隣接し、その逆も同様である。例えば、レイアウト600において、「Process employee reimbursement」というラベルの付いたノード603は、「Checked and approved」というラベルの付いたノード604に隣接し、レイアウト700において、対応するノード703と704は隣接する。これは、上述のように、「dot」を使用して計算されたグラフ500及び510には当てはまらない。結果として、レイアウト600と700の安定性が向上し、とりわけ、2つのレイアウトのレンダリングはほぼ全く同じに見え、例えば、ユーザは各々のグラフ間の変更を簡単に検査できる。例えば、これは、レイアウト600をレイアウト700にモーフィングするアニメーションのレンダリングを容易にする。
【0047】
図2に戻ると、グラフレイアウトデバイス210は、フィルタリングユニット232を備える。フィルタリングユニット232は、パスのグローバルセット241をフィルタリングして、パスのセット243を取得する。パスのセット243は、パスのグローバルセット241のサブセットであってもよい。例えば、図2において、フィルタリングユニット232は、パスのグローバルセット241からのパスのセット243に含まれるパス「ABC」(257)及び「AD」(258)を選択する。パスのセット243は、メモリに明示的に記憶される必要はない。例えば、パスのセット243は、パスのグローバルセット241におけるパスへの参照のリストや、パスのグローバルセット241からのパスのどれがパスのセットにおいて発生するかを示すビットマップなどとして、記憶されてもよい。上述のように、パスは、例えばアクティビティの時間的シーケンスなど、様々な種類のオブジェクトを表してもよい。このようなパスのフィルタリングは、それに応じて様々な方法で実行されてもよい。例えば、パスの選択は、パスの重みと、パスの長さと、パスにおけるノードに対応するアクティビティの時間と、パスが特定のエッジ、ノード、又はノードの種類を含むか否かとのうちの少なくとも1つに基づいて基準を評価することを含んでもよい。例えば、パスは、そのノードに対応するアクティビティが先月発生した場合、特定の人物がパスのアクティビティに関与した場合、パスが特定のノード又はエッジを含む場合、又は同様の基準で選択されてもよい。いずれの場合においても、グローバルランク割り当て242が決定されたパスのグローバルセット241からパスのセット243を取得することにより、グローバルランク割り当て242を使用してグラフのレイアウトを決定できるという利点があり、グラフのレイアウトを決定する効率が向上し、パスのグローバルセット241のサブセットによって誘導された複数のグラフのレイアウトが計算されるときのグラフレイアウトの安定性が向上する。
【0048】
グラフレイアウトデバイス210は、レイアウトユニット233をさらに備える。レイアウトユニット233は、グローバルランク割り当て242に基づいてグラフのレイアウト244を計算する。レイアウトは、グラフの各ノードの位置(例えば、x座標及びy座標)を含む。等しいランク割り当てを有するグラフのノードは、互いに隣接して配置される。例えば、等しいランク割り当てを有するグラフのノードには、同じ若しくは類似のx座標又は同じ若しくは類似のy座標が割り当てられる。図2に示す例では、ノード「A」(251)は位置(x、y)を有し、ノード「B」(252)は位置(x、y)を有し、ノード「C」(253)は位置(x、y)を有し、ノード「D」(254)は位置(x、y)を有する。ノード「B」252及びノード「D」254は、ランク割り当て242に従って同じランクを有するので、これらのノードには、同じy座標yが割り当てられる。一方、ノード「A」(251)及びノード「C」(253)は異なるランクを有するので、この例では、yとは異なるy座標y及びyが各々割り当てられる。図3dは、グラフのレイアウト244に従ってレンダリングされたグラフの一例を概略的に示す。一実施形態において、レイアウトユニット233は、既知の階層化グラフ描画アプローチを使用してレイアウトを計算する。これは、例えば、参照により本明細書に含まれるRoberto Tamassia(編集)による「Handbook of Graph Drawing and Visualization」の13.5節「Vertex Ordering(頂点の順序付け)」、13.6節「x-Coordinate Assignment(x座標の割り当て)」、13.4節「Edge Concentration」で説明されているように、頂点の順序付け、x座標の割り当て、及び任意選択でエッジ集中を実行することによる。
【0049】
幾つかの実施形態において、グラフのレイアウト244は、一又は複数のダミーのノードの位置をさらに含む。レイアウトユニット233は、ダミーの頂点及び/又はダミーのエッジをグラフに追加してもよい。幾つかの実施形態において、レイアウトユニット233は、グラフの第1のノードと第2のノードとの間にダミーの頂点及びダミーのエッジを含むパスを追加する。ここで、これらのノードの間にはエッジがあり、これらのノードのランクが1を超えて異なる。レイアウトユニット233は、グラフから元のエッジを一時的又は恒久的に除去してもよい。ダミーのエッジには連続するランクが割り当てられる。ダミーのエッジ及び頂点は、レイアウトユニット233及び/又は他のユニットによって実行される後続のステップを容易にし得る。例えば、レイアウトユニット233のさらなる動作は、複数の頂点が単一の層(レイヤ)に広がることを想定し、且つ/又は、レンダリングユニットが一又は複数のダミーのノードの決定された位置を使用してグラフのノード(例えば、グラフのダミーでないノード)間にエッジを描画してもよい。
【0050】
グローバルランク割り当て242に基づいてグラフのレイアウト244を計算することは、例えば、グラフにおいて発生しないグローバルランク割り当てからノードを除去すること及び/又はグラフにおけるノードに割り当てられていないランクを除去することによって、グローバルランク割り当てをグラフに適応させることを含んでもよい。例えば、図2に示すグローバルランク割り当て242の例では、ノード「E」255にランク4が割り当てられるが、このノードは、ノードのセット243によって誘導されるグラフにおいて発生しない。したがって、レイアウトユニット233は、グローバルランク割り当て242からノード「E」及び/又はランク4を除去してもよい。グローバルランク割り当てからランクを除去することは、適応されたグローバルランク割り当てにおいてランクが連続して発生するように、より高いランクをシフトすることを含んでもよい。例えば、グローバルランク割り当てからランクを除去することは、除去されたランクよりも高い全てのランクを1つ減らすことを含んでもよい。グローバルランク割り当ての適応は、例えば、グローバルランク割り当てを編集することによって、インプレースで(その場で)実行されてもよい。しかし、好ましくは、グローバルランク割り当てはインプレースで実行されず、例えば、グローバルランク割り当ての深い又は浅いコピーが作成され、適応がコピーに対して実行されて、グローバルランク割り当て242自体が他のグラフについて再利用されてもよい。
【0051】
等しいランク割り当てを有するノードが、互いに完全に隣接していなくてもよく、例えば、ノードはおおよそ隣接しているだけでもよい。例えば、グラフにおける交差の数を減らすため、又は、2つのノード間に短い若しくはより直線的なエッジを描画するために、例えば、ノードの1つを隣接する位置に対してわずかに移動することが有利であり得る。しかし、一般に、ノードは隣接しない方向に沿ってランクの昇順で表示される。例えば、同じランク割り当てを有するノードはx方向に隣接し、y座標がより大きいノードは、より高いランクを有するか、又は、x方向とy方向とが入れ替わった状態で類似する。グラフのレイアウト244を計算すると、レイアウトユニット233は、グラフのレイアウト244をメモリ、例えば、図1aのメモリ140又は図1bのメモリ141に記憶する。
【0052】
幾つかの実施形態において、レイアウトユニット233は、等しいランク割り当てを有するノードのセットを決定し、このノードのセットの順序付けを決定し、グローバルランク割り当て242及びこの順序付けに従ってこのノードのセットにおけるノードに位置を割り当てることによって、グラフのレイアウトを計算する。例えば、レイアウトユニット233は、グラフの全てのノードを等しいランク割り当てを有するノードのセットに分割し、且つ/又は、等しいランク割り当てを有するノードの各セットにおける全てのノードに位置を割り当ててもよい。順序付けは、好ましくは線形順序付け、例えば全順序付けである。例えば、等しいランク割り当てを有するノードは、当業者に知られている交差低減方法(例えば、ヒューリスティックな方法)を使用して、ノードをより低いランクを有するノードに連結するエッジ間の交差の数を低減するように、順序変更される。このプロセスは、各ランクについて安定した順序付けのセットが取得されるまで、又は、別の基準が満たされるまで、異なるランクについて繰り返されてもよい。レイアウトユニット233は、例えば、参照により本明細書に含まれるRoberto Tamassia(編集)による「Handbook of Graph Drawing and Visualization」の13.6節「x-Coordinate Assignment」に詳述されるように、x座標の割り当てに関する文献からの既知の技術を使用して、グローバルランク割り当て及び順序付けに従ってグラフのノードに位置を割り当ててもよい。
【0053】
興味深いことに、幾つかの実施形態において、レイアウトユニット233は、ノードのグローバル順序付けを決定し、このグローバル順序付けから等しいランク割り当てを有するグラフのノードのセットの順序付けを計算する。例えば、レイアウトユニット233は、等しいランク割り当てを有するグラフのノードの全てのセットの順序付けを、各々のグローバル順序付けから決定してもよい。グローバル順序付けは、等しいランク割り当てを有するグローバルグラフのノードのセットの順序付け、好ましくは全順序付け又は線形順序付けである。等しいランク割り当てを有するノードのセットは、等しいランク割り当てを有するグローバルグラフのノードのセットのサブセットである。例えば、等しいランク割り当てを有するノードのセット及びグローバルグラフのノードのセットからのノードに同じランクが割り当てられる。グローバルグラフは、パスのグローバルセット241によって誘導される。例えば、グローバルグラフは、パスのセット243によってグラフが誘導されるのと同じ方法で、パスのグローバルセット241によって誘導される。例えば、グローバルグラフは、ノードとしてノードのセットを、又は、パスのグローバルセット241におけるパスで発生するそのようなノードを有し、そして、エッジとして、パスのグローバルセット241におけるパスで発生するエッジを有し、又は、このようなノード及び/又はこのようなエッジのサブセットを、例えば、基準に従ってノード及び/又はエッジをフィルタリングすることによって得られるものとして有する。幾つかの実施形態において、例えば、参照により本明細書に含まれるRoberto Tamassia(編集)による「Handbook of Graph Drawing and Visualization」の13.5節「Vertex Ordering」で説明されるように、既知の頂点の順序付けの技術を使用して、等しいランク割り当てを有するグローバルグラフのノードの順序付けを得る。
【0054】
幾つかの実施形態において、レイアウトユニット233は、バックボーンノードに基づいて、等しいランク割り当てを有するグローバルグラフのノードのセットの順序付けを決定する。レイアウトユニット233は、各ランクについてバックボーンノードを決定する。例えば、パスは、パスのグローバルセットからランキングユニット231によって選択された順序に従ってインデックス付けされてもよい。ここで、ランクについてのバックボーンノードは、ランクが割り当てられたノードのうち最も小さいインデックスのパスに沿うノードである。後続のランクについてのバックボーンノードは、グローバルグラフのエッジによって連結される。例えば、ランク2についてのバックボーンノードとランク3についてのバックボーンノードとが、グローバルグラフのエッジによって連結される。バックボーンノードはダミーのノードであってもよい。例えば、ダミーのノードは、それが挿入されたパスのグローバルセットからのパスに沿うとみなされてもよい。バックボーンノードを決定するために、レイアウトユニット233は、ランキングユニット231の順序でパスのグローバルセット241からのパスを反復し、選択されたパスに沿う各ノード(例えば、ダミーのノードを含む)を、同じランクを有するバックボーンノードがまだ選択されていない場合にバックボーンノードになるように設定し、各ランクについてのバックボーンノードが決定されるまで続ける。
【0055】
決定されたバックボーンノードに基づいて、レイアウトユニット233は、グラフの非バックボーンノードを連結成分に分割する。例えば、レイアウトユニット233は、グラフのコピーを作成し、バックボーンノード及びそれらが連結されているエッジをコピーから削除し、コピーを連結成分に分割する。レイアウトユニット233は、バックボーンノードの各々のランクについてのバックボーンノードの前と後とのいずれかに、連結成分の全てのノードを順序付ける。例えば、レイアウトユニット233は、各連結成分について、それが左連結成分であるか右連結成分であるかを決定する。連結成分が左連結成分である場合、レイアウトユニット233は、各々のランクについてのバックボーンノードの前に連結成分のノードを順序付ける。例えば、ノードが特定のランクを有する場合、ノードは、そのランクについてのバックボーンノードの前に順序付けられる。同様に、連結成分が右連結成分である場合、レイアウトユニット233は、各々のランクについてのバックボーンノードの後に連結成分のノードを順序付ける。左連結成分である連結成分は、連結成分のノードに位置が割り当てられ、且つ/又は、そのノードがバックボーンノードの左若しくは上にレンダリングされることを意味し、右連結成分についても同様であってもよい。
【0056】
左連結成分又は右連結成分である連結成分は、左連結成分と右連結成分とに、近い数のノードが存在するように決定されてもよい。例えば、左連結成分又は右連結成分である連結成分は、既知の分割最適化アルゴリズムを使用して、各々のサイズの合計間の差が最小化又はほぼ最小化されるように、連結成分のセットを2つのサブセットに分割することによって決定されてもよい。例えば、レイアウトユニット233は、最初に全ての連結成分に同じ側を割り当て、次に連結成分を最大から最小まで反復し、その側を変更することにより左連結成分と右連結成分のサイズの合計間の差が減る場合、その側を変更する。
【0057】
複数のノードにバックボーンノードの順序よりも大きい又は小さい順序が割り当てられる場合、例えば、グローバルグラフの異なる左連結成分又は右連結成分からの2つのノードに同じランクが割り当てられている場合、複数のノード相対的な順序付けは、様々な方法で、例えば、ランダムに、又は、前のランク若しくは後のランクへのエッジ間の交差の数が最小化されるような方法で、決定されてもよい。複数のノードの相対的な順序付けを決定する1つの方法は、バックボーンへの連結性に基づく。ノードの連結性は、同じパスインデックスを有するノード(例えば、ランキングユニット231によって選択された同じパスで最初に発生したノードであって、グラフのエッジによってバックボーンノードに直接連結されるノード)の数として定義されてもよい。複数のノードの相対的な順序付けは、連結性によって複数のノードをソートすることによって決定されてもよい。例えば、レイアウトユニット233は、最初に左連結成分からノードを取り、連結性の増加によって順序付けられ、次にランクについてのバックボーンノードが続き、次に右連結成分からノードが続き、連結性の減少によって順序付けられ、又は同様に、等しいランク割り当てを有するノードを順序付けてもよい。同じ連結性を有するノードの相対的な順序は、前ま又は次のランクへのエッジ間の交差を最小限に抑えるように選択されてもよい。例えば、レイアウトユニット233は、連結性に従ってパスをソートし、ノードがそのパスに沿って出現した、ランキングユニット231によって選択された最初のパスに従って、ノードを順序付けてもよい。
【0058】
幾つかの実施形態において、レイアウトユニット233は、各ランクのバックボーンノードを決定し、グローバルグラフの連結されたサブグラフの側を決定し、連結されたサブグラフのサブグラフノードに順序を割り当てることによって、等しいランク割り当てを有するグローバルグラフのノードの順序付けを決定する。ここで、連結されたサブグラフはバックボーンノードを含まず、側は左側又は右側であり、割り当てられる順序は、側が左側である場合にはサブグラフノードに割り当てられたランクについてのバックボーンノードの順序よりも小さく、側が右側である場合にはサブグラフノードに割り当てられたランクについてのバックボーンノードの順序よりも大きい。
【0059】
グローバルグラフのノードの順序付けを決定すると、これらの順序付けを使用して、等しいランク割り当てを有するグラフのノードの順序付けを決定してもよい。例えば、等しいランク割り当てを有するグラフのノードは、グローバルグラフのノードの順序付けに出現するように順序付けられてもよい。例えば、グラフのノードの順序付けは、そのようなノードを、グラフに出現しないグローバルグラフのノードの順序付けから除去することによって、得られる。これにより、ノードの一貫した順序が使用されるので、グラフレイアウト間の安定性が向上し、複数のグラフのレイアウトを決定するためにグローバルグラフのノードの順序付けを再利用できるので、ノードの順序付けの効率が向上するという利点がある。
【0060】
安定性の向上は、例えば、既知のツール「dot」によってレイアウトに従ってレンダリングされたグラフを示す図5a、図5bを、上記のように、一実施形態によるレイアウトに従ってレンダリングされた各々のグラフを示す図6図7と比較することによって、観察し得る。「dot」によって得られるグラフレイアウト500、510は両方とも、「Checked and approved」というラベルの付いたノード504、514と、「Request data(データを要求)」というラベルの付いたノード505、515とを含む。レイアウト500において、第1のノード504は第2のノード505の左側にある。一方、レイアウト510において、第1のノード514は、第2のノード515の右側にある。図6図7は、一実施形態による、同じグラフのレイアウト600、700を示す。詳細には、レイアウト600、700は両方とも、「Checked and approved」というラベルの付いたノード604、704と、「Request data」というラベルの付いたノード605、705とを含む。レイアウト600、700の両方において、グローバルグラフのノードの同じ順序付けがグラフ600におけるノード604、605及びグラフ700におけるノード704、705の順序付けを決定するために使用されるということの結果として、第1のノード604、704は、第2のノード605、705の左側に配置される。有利なことに、このような特定のノードに関するレイアウトの安定性は、レイアウト500、510と比較して、レイアウト600、700において向上する。
【0061】
さらに、バックボーンがグラフレイアウトの中央に出現するので、取得されたレイアウトは、有利なことに、基となるデータとより厳密に適合し得る。これは、図5a、図5bを図6図7と比較することによっても観察できる。各図において、「Request invoice(請求書を要求)」、「Check received invoice」、「Final check of invoice(請求書の最終チェック)」、「Approve invoice(請求書を承認)」、「Pay invoice(請求書に対して支払い)」の5つのノードを含む同じパスが、太いエッジ及び濃い色のノードで表示される。この場合、この特定のパスは、パスのグローバルセットからのパス、つまり、最も重みの大きいパスである。本明細書に記載のランキング及び順序付けのメカニズムをグラフレイアウトデバイス210によって使用した結果として、パスのノードは、レイアウト600、700において上から下に出現する。さらに、これらのノードはバックボーンノードとなり、そのため、このパスの重要性を反映して、レイアウト600、700において中央に出現する。対照的に、本明細書に記載のグラフレイアウト技術を使用しないレイアウト500、600では、パスは上から下に出現せず、ノードはそれらのランクのノードのうち中央に出現しない。このような理由で、レイアウト600、700は、基となるデータ、詳細には、パスのセットにおいて反映されるようなその順次的な性質に、より厳密に適合する。
【0062】
図2に戻ると、グローバルグラフのノードの順序付けに基づいてグラフのノードの順序付けを決定すると、このような順序付けは、例えば、文献で知られている一又は複数の交差低減ステップを使用して交差をさらに削減し且つ/又は現在のグラフに合わせて調整されたグラフレイアウトを取得することにより、任意にさらに改良され得る。
【0063】
幾つかの実施形態において、グラフレイアウトデバイス210はさらに、追加のグラフのレイアウトを決定するように構成される。追加のグラフは、ノードのセットを通るパスの追加のセットによって誘導される。パスの追加のセットは、パスのグローバルセット241のサブセットである。グラフのレイアウト244及び追加のグラフのレイアウトは、同じグローバルランク割り当てに基づいて計算される。例えば、ランキングユニット231は、グローバルランク割り当て242を計算し、ユニット233は、例えば、上記の技術を使用して、グローバルランク割り当て242に基づいて、グラフのレイアウトと追加のグラフのレイアウトとの両方を計算する。有利なことに、グローバルランク割り当て242は、グラフのレイアウトと追加のグラフのレイアウトとの両方を計算するために使用されて、ランク割り当てを2回計算する必要性を除去し、したがって、パフォーマンスを向上させ、2つのグラフについて使用されるランク割り当て間の一貫性も向上させる。幾つかの実施形態において、等しいランク割り当てを有するグラフのノードの順序付けは、パスのグローバルセット241によって誘導されるグローバルグラフのノードの順序付けから計算される。この場合、レイアウトユニット233は、グローバルグラフのノードの順序付けを一度で決定して、それらを使用して、グラフのレイアウト244と追加のグラフのレイアウトとの両方を計算し、同様に、グラフ間のパフォーマンス及び一貫性を向上し得る。
【0064】
グラフレイアウトデバイス210は、任意に、レンダリングユニット234とディスプレイ220とを備える。レンダリングユニット234は、グラフ244のレイアウトに従ってグラフをディスプレイ220にレンダリングするように構成される。グラフのレンダリングは、レイアウト244によって指定された位置にグラフのノードを表示することと、ノード間のエッジを描画することとを含む。エッジの描画は、文献で知られている様々なスプライン描画技術を使用して実行されてもよい。幾つかの実施形態において、例えば、上記のように、レイアウトユニット233は、ランクが1を超えて異なるノード間に挿入されるダミーのノードの位置を計算するように構成される。このようなノード間のエッジは、ノード間に挿入されたダミーのノードの計算された位置を通過して描画されてもよい。例えば、ダミーのノードは、スプラインについてのパスをレイアウトし、ノード間のエッジは、ノードと該ノード間に挿入されたダミーのノードとを通るスプラインとして描画されてもよい。レンダリングユニット234は、他のノード、エッジ、及びラベルが回避されるように、2つのポイント間の最も滑らかな曲線を探索してもよい。これは、まず、スプラインが描画され得る多角形領域を計算し、次に、この多角形領域が与えられると、この領域内のスプラインを計算することを含んでもよい。領域の計算では、既に描画されているスプライン、ノード、及びラベルが考慮され、偶発的なエッジ-エッジ、エッジ-ノード、又はエッジ-ラベルの交差の数を低減する。詳細には、Gansner et al.の“A Technique for Drawing Directed Graphs”,IEEE Trans.Software Eng.19.3(1993)(参照により本明細書に含まれる)で提案されたアルゴリズム又はその変形が使用されてもよい。
【0065】
上記のように、グラフレイアウトデバイス210が追加のグラフのレイアウトを決定するようにさらに構成される実施形態において、レンダリングユニット234は、グラフのレンダリングを追加のグラフのレンダリングに変形するアニメーションをディスプレイ220上にレンダリングしてもよい。有利なことに、グラフのレイアウト及び追加のグラフのレイアウトは両方ともランク割り当て242に基づき、場合によってはグローバルグラフのノードの順序付けに基づくので、両方のグラフで発生するノードは通常、2つのグラフレイアウトにおいて互いに対して類似の位置及び類似の方向を有し、モーフィングプロセスを容易にする。例えば、方向が類似していることにより、ノードが互いに対して方向を入れ替えることが回避され得る。例えば、第1のノードが、グラフにおいて第2のノードの左側にあり、追加のグラフにおいて第2のノードの右側にあり、これにより、モーフィング効果が向上する。様々なモーフィング技術が使用されてもよい。例えば、第2のグラフのレンダリングが不透明度を増加した状態で重ね合わされた第1のグラフのレンダリングが表示されてもよい。或いは、両方のグラフで発生するノードの位置が、第1のレイアウトにおける位置と第2のレイアウトの位置との間で補間される後続のレンダリングが表示されてもよい。第1のグラフでのみ発生するノードは、不透明度を低減して表示され、且つ/又は、別のノードと重なり合うときは常に見えなくなってもよい。同様に、第2のグラフでのみ発生するノードは、不透明度を増加して表示され、且つ/又は、それらのノードの位置が別のノードの位置と重ならないときは常に出現してもよい。エッジは、例えば、上記の技術を使用して、アニメーションにおける中間位置に対して描画されてもよい。
【0066】
グローバルランク割り当てを使用する利点の幾つかを強調するさらなる例を図4a、図4bに示す。図4aは、ノード「A」(451)、ノード「B」(452)、ノード「C」(453)を通るパス「CA」(456)、パス「AB」(457)、パス「AC」(458)を含むパスのグローバルセット441の例を概略的に示す。図4bは、パスのグローバルセット441のサブセットであるパスのセット444、444’の例を概略的に示す。パスのセット444は、パス「CA」(456)、パス「AB」(457)を含む。パスのセット444’は、パス「AB」(457)、パス「AC」(458)を含む。
【0067】
図4aは、グローバルランク割り当て442に従って、パスのセット444、444’によって各々誘導されるグラフのレイアウト443、443’の例を概略的に示す。本明細書に記載の実施形態に従ってグローバルランク割り当てを計算すると、グローバルランク割り当て442が得られる。グローバルランク割り当て442では、ランク2はノード「A」451に割り当てられ、ランク3はノード「B」452に割り当てられ、ランク1はノード「C」453に割り当てられる。例えば、ランキングユニット231は、パス「CA」を選択して、グローバルランクの割り当てをC:1、A:2に更新し、パス「AB」を選択して、グローバルランク割り当てをC:1、A:2、B:3に更新し、最後に、パス「AC」を選択して、グローバルランクの割り当てを変更しないでおく。レイアウト443、443’におけるノード「A」(451)、ノード「B」(452)、ノード「C」(453)のy座標は、グローバルランク割り当て442によって決定され、したがって、レイアウト443、443’において同じである。有利なことに、これにより、2つの類似のグラフレイアウトが得られる。例えば、グラフレイアウトは、パスのグローバルセット441の異なるサブセット444、444’によって誘導されたグラフにわたり安定したままである。
【0068】
図4bは、グローバルランク割り当ての代わりにローカルランク割り当て445、445’を使用することによって取得され得る、パスのセット444、444’によって各々誘導されるグラフのレイアウト446、446’の例を概略的に示す。例えば、パスのセット444についてのローカルランク割り当て445は、A:2、B:3、C:1であってもよい。例えば、AはパスにおいてCよりも後に発生するので、AにはCよりも高いランクが割り当てられ、BはパスにおいてAよりも後に発生するので、BにはAよりも高いランクが割り当てられる。同様に、パスのセット444’についてのローカルランク割り当て445’は、A:1、B:2、C:2であってもよい。例えば、B、CはパスにおいてAよりも後に発生するため、B、CにはAよりも高いランクが割り当てられる。結果として、ノード「A」(451)、ノード「B」(452)、ノード「C」(453)のy座標は、異なるランク割り当てに基づくので、結果として生じるレイアウト446、446’において同じではない。詳細には、ローカルランク割り当て445’を計算する場合、ローカル情報のみがグラフレイアウトで使用されるので、例えば、同じグローバルパスセットに基づく異なるグラフのレイアウトにわたる安定性を向上させるために、CにAよりも低いランクを割り当てる必要があることを示すものはない。対照的に、グローバルランク割り当て442は、パスのグローバルセット441に基づき、したがって、レイアウト443、443’について一貫したランク割り当てが使用されることが保証され、これにより、安定性が向上し、グラフレイアウト443、443’が基となるパスのグローバルセット441をよりよく反映することを保証する。
【0069】
グラフレイアウトデバイス110、111、又は210は、例えば一又は複数のボタン、キーボード、ディスプレイ、タッチスクリーンなどの周知の要素を含み得るユーザインタフェースを有してもよい。ユーザインタフェースは、例えば、パスのグローバルセットをフィルタリングすることによって、グラフレイアウトを決定するためのユーザインタラクションに対応するように構成されてもよい。
【0070】
典型的には、グラフレイアウトデバイス110、111、又は210は、デバイス110、111、又は210に記憶された適切なソフトウェアを実行するマイクロプロセッサ(別個に示さず)を備える。例えば、このソフトウェアは、対応するメモリ、例えば、RAMなどの揮発性メモリ又はフラッシュなどの不揮発性メモリ(別個に示さず)にダウンロード及び/又は記憶されていてもよい。或いは、グラフレイアウトデバイス110、111、又は210は、全体的又は部分的に、例えば、フィールドプログラマブルゲートアレイ(FPGA)として、プログラマブルロジックで実装されてもよい。グラフレイアウトデバイス110又は210は、全体的又は部分的に、いわゆる特定用途向け集積回路(ASIC)、即ち、それらの特定の用途のためにカスタマイズされた集積回路(IC)として実装されてもよい。例えば、回路は、例えばVerilog、VHDLなどのハードウェア記述言語を使用して、CMOSで実装されてもよい。
【0071】
一実施形態において、グラフレイアウトデバイス110又は111は、メモリ回路及びプロセッサ回路を備える。デバイス110又は111は、さらなる回路、例えば、通信回路又は記憶回路を備えてもよい。グラフレイアウトデバイスは、ランキング回路、フィルタリング回路、レイアウト回路、レンダリング回路のうちの一又は複数を備えてもよい。回路は、本明細書に記載の対応するユニットを実装する。回路は、プロセッサ回路及び記憶回路であってもよい。プロセッサ回路は、記憶回路において電子的に表される命令を実行する。回路はまた、FPGA、ASICなどであってもよい。
【0072】
プロセッサ回路は、分散方式で、例えば、複数のサブプロセッサ回路として実装されてもよい。記憶装置(ストレージ)は、複数の分散サブストレージに分散されてもよい。メモリの一部又は全部が、電子メモリ、磁気メモリなどであってもよい。例えば、メモリは、揮発性部分及び不揮発性部分を有してもよい。メモリの一部が読み取り専用であってもよい。
【0073】
図8は、グラフレイアウト方法900の一実施形態の一例を概略的に示す。グラフレイアウト方法900は、グラフのレイアウトを決定するために構成される。例えば、グラフレイアウト方法900は、グラフレイアウトデバイスで実行され得る。グラフは、ノードのセットを通るパスのセットによって誘導される。グラフのノードは、ノードのセットに含まれる。パスのセットは、ノードのセットを通るパスのグローバルセットのサブセットである。レイアウトは、グラフの各ノードの位置を含む。グラフレイアウト方法900は、以下を含む。
・ノードのセットにおける各ノードにランクを割り当てるグローバルランク割り当てを計算すること(901)。グローバルランク割り当ての計算は、パスのグローバルセットからパスを繰り返し選択すること(911)と、選択されたパスに基づいてグローバルランク割り当てを更新すること(913)と、任意選択で、グローバルランク割り当てが完了したか否かを確認すること(912)とを含む。
・パスのセットを取得するためにパスのグローバルセットをフィルタリングすること(902)
・グローバルランク割り当てに基づいてグラフのレイアウトを計算すること(903)。ここで、等しいランク割り当てを有するグラフのノードは、互いに隣接して配置される。
・グラフのレイアウトをメモリに記憶すること(904)。
【0074】
当業者には明らかであるように、該方法を実行する多くの異なる方法が可能である。例えば、ステップの順序は変更でき、一部のステップが並行して実行されてもよい。さらに、ステップの間に他の方法ステップが挿入されてもよい。挿入されたステップは、例えば本明細書に記載されているような方法の改良を示してもよく、又は該方法とは無関係であてもよい。例えば、ステップ901及び902は、少なくとも部分的に、並行して実行されてもよい。さらに、所与のステップが、次のステップが開始される前に完全に終了していなくてもよい。
【0075】
本発明の方法は、プロセッサシステムに方法900を実行させるための命令を含むソフトウェアを使用して実行され得る。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、例えばハードディスク、フロッピーディスク、メモリ、光ディスクなどの適切な記憶媒体に記憶されてもよい。ソフトウェアは、有線、無線、又は、例えばインターネットなどのデータネットワークを使用して、信号として送信されてもよい。ソフトウェアは、ダウンロード及び/又はサーバ上でのリモート使用のために利用可能であってもよい。本発明の方法は、該方法を実行するために、プログラマブルロジック、例えば、フィールドプログラマブルゲートアレイ(FPGA)を構成するように構成されたビットストリームを使用して実行されてもよい。
【0076】
本発明はまた、本発明を実施するために構成されたコンピュータプログラム、とりわけ、搬送波上又は搬送波内のコンピュータプログラムにも及ぶことが理解されよう。プログラムは、ソースコードの形式、オブジェクトコードの形式、コード中間ソースの形式、例えば部分的にコンパイルされた形式などのオブジェクトコードの形式、又は本発明の方法の実施に使用するのに適した任意の他の形式であり得る。コンピュータプログラム製品に関する一実施形態は、記載された方法のうちの少なくとも1つの処理ステップの各々に対応するコンピュータ実行可能命令を含む。このような命令は、サブルーチンに細分され、且つ/又は、静的若しくは動的に関連付けられた一又は複数のファイルに記憶されてもよい。コンピュータプログラム製品に関する別の一実施形態は、記載されたシステム及び/又は製品の少なくとも1つの手段の各々に対応するコンピュータ実行可能命令を含む。
【0077】
図9aは、一実施形態による、コンピュータプログラム1020を含む書き込み可能部分1010を有するコンピュータ読み取り可能な媒体1000を示し、コンピュータプログラム1020は、プロセッサシステムにグラフレイアウト方法を実行させるための命令を含む。コンピュータプログラム1020は、物理的マークとして、又は、コンピュータ読み取り可能な媒体1000の磁化によって、コンピュータ読み取り可能な媒体1000上に格納され得る。しかし、任意の他の適切な実施形態も同様に考えられる。さらに、コンピュータ読み取り可能な媒体1000は、本明細書では光ディスクとして示されるが、コンピュータ読み取り可能な媒体1000は、例えばハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ読み取り可能な媒体であり、記録不可能又は記録可能であり得ることが理解されよう。コンピュータプログラム1020は、プロセッサシステムに上記グラフレイアウト方法を実行させるための命令を含む。
【0078】
図9bは、一実施形態によるプロセッサシステム1140の概略図を示す。プロセッサシステムは、一又は複数の集積回路1110を備える。一又は複数の集積回路1110のアーキテクチャを、図9bに概略的に示す。回路1110は、一実施形態による方法を実行するため及び/又はそのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを実行するためのプロセッシングユニット1120(例えば、CPU)を備える。集積回路1110は、プログラミングコード、データなどを記憶するためのメモリ1122を備える。メモリ1122の一部は、読み取り専用であってもよい。集積回路1110は、通信要素1126、例えば、アンテナ、コネクタ、又はその両方などを含んでもよい。集積回路1110は、該方法で定義される処理の一部又は全部を実行するための専用集積回路1124を含んでもよい。プロセッサ1120、メモリ1122、専用IC1124、及び通信要素1126は、相互接続1130、例えばバスを介して互いに接続されてもよい。プロセッサシステム1110は、アンテナ及び/又はコネクタを使用して、接触及び/又は非接触通信のために構成されてもよい。
【0079】
例えば、一実施形態において、グラフレイアウトデバイスは、プロセッサ回路及びメモリ回路を備えてもよく、プロセッサは、メモリ回路に記憶されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、Intel Core i7プロセッサ、ARM Cortex-R8などであってもよい。一実施形態において、プロセッサ回路は、ARM Cortex M0であってもよい。メモリ回路は、ROM回路、又は、不揮発性メモリ、例えばフラッシュメモリであってもよい。メモリ回路は、揮発性メモリ、例えば、SRAMメモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するために構成された、不揮発性ソフトウェアインタフェース、例えば、ハードドライブ、ネットワークインタフェースなどを含んでもよい。
【0080】
上記実施形態は、本発明を限定するのではなく例示するものであり、当業者は、多くの代替の実施形態を設計可能であることに留意されたい。
【0081】
特許請求の範囲において、括弧内に記載された参照符号は、請求項を限定するものと解釈されないものとする。動詞「comprise(備える/含む)」とその活用形の使用は、クレームに記載されているもの以外の要素又はステップの存在を排除しない。要素の前にある冠詞「a」又は「an」は、そのような要素が複数存在することを排除しない。本発明は、幾つかの別個の要素を含むハードウェアによって及び適切にプログラムされたコンピュータによって実施されてもよい。幾つかの手段を列挙するデバイスクレームでは、これらの手段の一部が、ハードウェアの1つの同じアイテムによって具現化されてもよい。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組み合わせを有利に使用できないことを示すものではない。
【0082】
特許請求の範囲において、括弧内の参照符号は、実施形態を例示する図面における参照符号又は実施形態の式を参照し、したがって、請求項の理解し易さを向上させる。このような参照符号は、請求項を限定するものとして解釈されるべきではない。
【符号の説明】
【0083】
110,111 グラフレイアウトデバイス
121 ディスプレイ
130,131 プロセッサ
140,141 メモリ
210 グラフレイアウトデバイス
220 ディスプレイ
231 ランキングユニット
232 フィルタリングユニット
233 レイアウトユニット
234 レンダリングユニット
241 パスのグローバルセット
242 グローバルランク割り当て
243 パスのセット
244 グラフのレイアウト
251,252,253,254,255 ノード
256,257,258 パス
331 ランキングユニット
342,342’,342’’ グローバルランク割り当て
351,352,353,354,355 ノード
356,357,358 選択されたパス
441 パスのグローバルセット
442 グローバルランク割り当て
443,443’ グローバルランク割り当てに基づくグラフのレイアウト
444,444’ パスのセット
445,445’ ローカルランク割り当て
446,446’ ローカルランク割り当てに基づくグラフのレイアウト
451,452,453 ノード
456,457,458 パス
500,510,600,700 レンダリングされたグラフ
501~505,511~515,601~605,701~705 ノード
509,609 エッジ
900 グラフレイアウト方法
901 グローバルランク割り当てを計算
902 パスのグローバルセットをフィルタリング
903 グラフのレイアウトを計算
904 グラフのレイアウトを記憶
911 パスを選択
912 グローバルランク割り当てが完了したか否かを確認
913 グローバルランク割り当てを更新
1000 コンピュータ読み取り可能な媒体
1010 書き込み可能部分
1020 コンピュータプログラム
1110 集積回路
1120 プロセッシングユニット
1122 メモリ
1124 専用集積回路
1126 通信要素
1130 相互接続
1140 プロセッサシステム

図1a
図1b
図2
図3a
図3b
図3c
図3d
図4a
図4b
図5A
図5B
図6
図7
図8
図9a
図9b