(57)【特許請求の範囲】
【請求項１】
グラフデータに基づいてノードと当該ノード間を接続するアークとを含むグラフィックス・イメージを生成する処理部と、
前記処理部にて生成されたグラフィックス・イメージを表示する表示部とを備え、
前記処理部は、
前記表示部に表示されるディスプレイ空間に、ノードを順次追加しながら配置し、
ノードが追加配置されるたびに、追加された当該ノードと前記ディスプレイ空間に既に配置されているノードであって追加された当該ノードの近傍のノードとの間に所定の力学モデルを適用して各ノードの位置を修正することを特徴とするグラフデータ視覚化装置。
【請求項２】
前記処理部は、前記ディスプレイ空間に追加されたノードと、当該追加されたノードに隣接されたアークに接続しているノード及び当該追加されたノードから一定以内の距離に位置するノードとの間に、前記力学モデルを適用して各ノードの位置を修正することを特徴とする請求項１に記載のグラフデータ視覚化装置。
【請求項３】
前記処理部は、前記表示部に表示されるディスプレイ空間に、隣接するアークの数の多いノードから順に追加しながら配置することを特徴とする請求項１に記載のグラフデータ視覚化装置。
【請求項４】
前記処理部は、前記ディスプレイ空間に先に配置するノードほど、当該ディスプレイ空間の中心に近い位置に配置することを特徴とする請求項３に記載のグラフデータ視覚化装置。
【請求項５】
前記処理部は、前記表示部に表示されるディスプレイ空間に形成された前記グラフィックス・イメージにおいて、所定のノードに対して一定以内の距離に位置するアークを曲線化して当該ノードから遠ざける処理をさらに実行することを特徴とする請求項１に記載のグラフデータ視覚化装置。
【請求項６】
前記処理部は、
前記ノードに対して一定以内の距離に位置するアークを分割し、
前記アークの分割点を前記ノードから遠ざけ、
前記分割点の間の線分列を一定の曲率の曲線に変換することを特徴とする請求項５に記載のグラフデータ視覚化装置。
【請求項７】
前記処理部は、前記アークを分割して得られる線分を、当該線分と平行な近隣のアークに対して一定以上の距離を保持させることを特徴とする請求項６に記載のグラフデータ視覚化装置。
【請求項８】
前記処理部は、前記アークを一定の長さの線分列に分割することを特徴とする請求項６に記載のグラフデータ視覚化装置。
【請求項９】
視覚的な形態で出力されるグラフィックス・イメージをコンピュータにて生成するグラフィックス作成方法において、
前記コンピュータが、ディスプレイ装置に表示されるディスプレイ空間に、ノードを順次追加しながら配置するステップと、
前記コンピュータが、ノードが追加配置されるたびに、追加された当該ノードと前記ディスプレイ空間に既に配置されているノードであって追加された当該ノードの近傍のノードとの間に所定の力学モデルに基づく運動方程式を解くことにより各ノードの位置を更新するステップと
を含むことを特徴とするグラフィックス作成方法。
【請求項１０】
前記ノードの位置を更新するステップでは、前記ディスプレイ空間に追加されたノードと、当該追加されたノードに隣接されたアークに接続しているノード及び当該追加されたノードから一定以内の距離に位置するノードとの間に、局所的に前記力学モデルを適用し運動方程式を解くことによりノードの位置を更新することを特徴とする請求項９に記載のグラフィックス作成方法。
【請求項１１】
前記ノードを配置するステップは、
前記ディスプレイ空間へのノードの配置順を、隣接するアークの数の多いノードが先になるように決定するステップと、
決定された配置順に従い、前記ディスプレイ空間の中心から周辺へ向かってノードを配置するステップと
を含むことを特徴とする請求項９に記載のグラフィックス作成方法。
【請求項１２】
前記コンピュータが、前記ノードを配置するステップで前記ディスプレイ空間に配置されたノード間にアークを張り、端部のノード以外の所定のノードに近接しているアークを、当該所定のノードを迂回するように変形するステップをさらに含むことを特徴とする請求項９に記載のグラフィックス作成方法。
【請求項１３】
前記アークを変形するステップは、
前記ノードに対して一定以内の距離に位置するアークを分割するステップと、
前記アークの分割点を前記所定のノードから遠ざけるステップと、
前記分割点の間の線分列を一定の曲率の曲線に変換するステップと
を含むことを特徴とする請求項１２に記載のグラフィックス作成方法。
【請求項１４】
コンピュータを制御して、ノードと当該ノード間を接続するアークとを含むグラフィックス・イメージを生成するプログラムであって、
ディスプレイ装置に表示されるディスプレイ空間に、ノードを順次追加しながら配置する処理と、
ノードが追加配置されるたびに、追加された当該ノードと前記ディスプレイ空間に既に配置されているノードであって追加された当該ノードの近傍のノードとの間に所定の力学モデルを適用して各ノードの位置を更新する処理と
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項１５】
前記ノードの位置を更新する処理では、前記ディスプレイ空間に追加されたノードと、当該追加されたノードに隣接されたアークに接続しているノード及び当該追加されたノードから一定以内の距離に位置するノードとの間に、局所的に前記力学モデルを適用してノードの位置を更新することを特徴とする請求項１４に記載のプログラム。
【請求項１６】
前記ノードを配置する処理は、
前記ディスプレイ空間へのノードの配置順を、隣接するアークの数の多いノードが先になるように決定する処理と、
決定された配置順に従い、前記ディスプレイ空間の中心から周辺へ向かってノードを配置する処理と
を含むことを特徴とする請求項１４に記載のプログラム。
【請求項１７】
前記ノードを配置する処理で前記ディスプレイ空間に配置されたノード間にアークを張り、所定のノードに対して一定以内の距離に位置するアークを曲線化して当該ノードを迂回するように変形する処理を、前記コンピュータにさらに実行させることを特徴とする請求項１４に記載のプログラム。
【請求項１８】
コンピュータを制御して、ノードと当該ノード間を接続するアークとを含むグラフィックス・イメージを生成するプログラムを格納した記憶媒体であって、
前記プログラムは、
ディスプレイ装置に表示されるディスプレイ空間に、ノードを順次追加しながら配置する処理と、
ノードが追加配置されるたびに、追加された当該ノードと前記ディスプレイ空間に既に配置されているノードであって追加された当該ノードの近傍のノードとの間に所定の力学モデルを適用して各ノードの位置を更新する処理と
を前記コンピュータに実行させることを特徴とする記憶媒体。
【請求項１９】
前記ノードを配置する処理は、
前記ディスプレイ空間へのノードの配置順を、隣接するアークの数の多いノードが先になるように決定する処理と、
決定された配置順に従い、前記ディスプレイ空間の中心から周辺へ向かってノードを配置する処理と
を含むことを特徴とする請求項１８に記載の記憶媒体。
【請求項２０】
前記ノードを配置する処理で前記ディスプレイ空間に配置されたノード間にアークを張り、所定のノードに対して一定以内の距離に位置するアークを曲線化して当該ノードを迂回するように変形する処理を、前記コンピュータにさらに実行させることを特徴とする請求項１８に記載の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ノードとノード間をつなぐアークとで構成されるグラフデータを視覚化するグラフィックス表示技術に関する。
【０００２】
【従来の技術】
組織全体を構成する要素の関係を示すグラフデータに関して、当該要素を示すノードとノード間をつなぐアークとで表すことにより視覚化することができる。このグラフデータを視覚化するグラフィックス表示は、ウェブページのリンク構造の表示、金融・通信・交通・社会組織などのネットワークの表示、化学・生物などのデータをグラフ化したものの表示、テキストデータや画像データを関連性で連結してできるグラフの表示、いくつかの関連あるモジュールの組み合わせで構成されるシステムの振舞いを表したグラフの表示（例えば並列計算機のプロセス）などのように、種々の用途が考えられる。そのため、コンピュータを用いたグラフデータのグラフィックス表示技術は、非常に幅広い分野で必要とされている。
【０００３】
このグラフィックス表示技術における最も大きな問題は、「読み手に誤解を与えないように、グラフのノード及びアークをディスプレイ空間に自動配置する」ことである。これを実現するためには、次の条件を最大限に満足することが好ましい。
［条件１］
近隣ノードが一定以上の距離を保ち、ノードどうしの重なりを避ける。
［条件２］
アークの長さの総和をできるだけ短くして、アークで連結されたノードをお互いに近い位置に配置する。
［条件３］
アークが端点以外の場所で別のノードと重ならないようにする。
図２１に、これらの条件を図示する。
【０００４】
従来、これらの条件をできるだけ満足するグラフ配置を得るための有用な手法として、分子間力モデルやバネモデルを用いた手法が知られている。すなわち、グラフのノードに分子間力モデル、グラフのアークにバネモデルを用いて、運動方程式を解くことによって各々のノードの適切な位置を算出する手法である。
図２１に示すように、［条件１］は、ノードが重なって表示されることによる誤読を避けるための条件である。ノードに適用された分子間力モデルは、近隣ノードどうしが重なるのを防ぐための斥力として働く。
また、図２１に示すように、［条件２］は、アークで連結されたノードが近くに配置されることで、ノードどうしの関連性を視覚的に理解しやすくするための条件である。アークに適用されたバネモデルは、アークの長さを短くするための引力として働く。
また、図２１に示すように、［条件３］は、アークと重なったノードがアークの端点であるかのように誤読することを避けるための条件である。この条件を満足する手法としては、分子間力モデルとバネモデルとは別に、アークからノードへの斥力を適用して、アークとノードとの間に所定の距離を持たせる手法がある。
図２２は、グラフのノード間に分子間力を適用し、アークにバネモデルを適用した様子を示す図である。図示のように、ノード間の分子間力モデルはノードどうしの斥力として働いており、アークのバネモデルはアークの縮もうとする力（ノードどうしの引力）として働いている。
【０００５】
【発明が解決しようとする課題】
上述したグラフデータのグラフィックス表示技術に対して、多くのアプリケーションが求めている要件は、「最適でなくてもいいから、誤読を防ぐことのできる最低限以上の配置結果を、高速に求める」ことである。
具体的な例を挙げれば、パーソナルコンピュータのディスプレイ装置に表示されたウィンドウの中に整然と配置できる規模（数十〜数百のノード数）のグラフに対して、数秒程度の計算時間でグラフの配置結果を得られ、得られた配置結果において「ノードどうしの重なり」や「ノードとアークの重なり」が発生しないことが要求される。
【０００６】
この「結果における品質」と「高速な処理」というトレードオフ的な要件に対して、上述した分子間力モデルやバネモデルなどの力学モデルを用いた従来のグラフデータの表示手法は、表示結果においてはある程度の品質を満足するものの、十分に高速な処理を行うことができなかった。
この従来の手法による計算時間は、ノード数をＮとすると最悪の場合でＯ（Ｎ2）となる。ここで、Ｏ（Ｎ2）は、Ｎ2の定数倍以内の時間で計算が可能であることを意味する。このため、従来の手法では、ノード数の増加に対して急激に計算時間が大きくなっていた。
【０００７】
特に、アークとノードの重なりを解消するために、アークからノードへの斥力を適用して、アークとノードとの間に所定の距離を持たせる手法を用いることは、計算時間が大幅に増加するため現実的ではなかった。
【０００８】
また、良好な配置結果を得るには、ノードの初期配置に大きく依存するが、従来の手法では、適切な初期配置を決める方法がなかった。
図２３は、好ましくないノードの初期配置の一例を示す図である。
図２３に示す例において、ノードＡとノードＤはアークで結ばれており、このアークには長さを短くするための引力が働く。したがって、このグラフは、アークＡＤの引力によって図２３（Ｂ）あるいは図２３（Ｃ）のように変形することが望ましい。しかし、ノードＡはノードＢ及びノードＣから受ける斥力によって動くことができず、図２３（Ａ）の状態から変形できない場合がしばしば生じる。
このように、従来のグラフィックス表示の手法によれば、ノードの適切でない初期位置が原因で、［条件１］［条件２］を満たせないノード配置結果が出力される場合が多かった。
【０００９】
そこで、本発明は、グラフデータのグラフィックス表示における処理速度の向上を図り、ノードの配置結果における品質と高速な処理という要求を高度に両立させることを目的とする。
【００１０】
また、本発明は、より高品質なノードの配置結果を得ることができるグラフデータのグラフィックス表示技術を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記の目的を達成する本発明は、次のように構成されたことを特徴とするグラフデータ視覚化装置を提供する。このグラフデータ視覚化装置は、グラフデータに基づいてノードとこのノード間を接続するアークとを含むグラフィックス・イメージを生成する処理部と、この処理部にて生成されたグラフィックス・イメージを表示する表示部とを備え、この処理部は、この表示部に表示されるディスプレイ空間に、ノードを順次追加しながら配置し、ノードが追加配置されるたびに、追加されたこのノードとディスプレイ空間に既に配置されているノードとの間に所定の力学モデルを適用して各ノードの位置を修正することを特徴とする。
【００１２】
ここで、この処理部は、ディスプレイ空間に追加されたノードと、この追加されたノードに隣接されたアークに接続しているノード及びこの追加されたノードから一定以内の距離に位置するノードとの間にこの力学モデルを適用して各ノードの位置を修正することを特徴とする。すなわち、この力学モデルを追加されたノードを含む局所的な領域にのみ適用してノードの位置の修正を行う。
【００１３】
また、上記と同様の処理部と表示部とを備えたグラフデータ視覚化装置において、この処理部は、表示部に表示されるディスプレイ空間に、隣接するアークの数の多いノードから順に追加しながら配置することを特徴とする。
ここで、この処理部は、このディスプレイ空間に先に配置するノードほど、当該ディスプレイ空間の中心に近い位置に配置することを特徴とする。
【００１４】
さらに、上記と同様の処理部と表示部とを備えたグラフデータ視覚化装置において、この処理部は、ディスプレイ空間に形成されたグラフィックス・イメージにおいて、所定のノードに対して一定以内の距離に位置するアークを曲線化してこのノードから遠ざけることを特徴とする。
【００１５】
ここで、この処理部は、具体的には、この所定のノードに対して一定以内の距離に位置するアークを分割し、このアークの分割点を前記ノードから遠ざけ、この分割点の間の線分列を一定の曲率の曲線に変換する。
また、この処理部は、このアークを分割して得られる線分を、この線分と平行な近隣のアークに対して一定以上の距離を保持させる。
さらに、この処理部は、このアークを一定の長さの線分列に分割する。
【００１６】
また、本発明は、視覚的な形態で出力されるグラフィックス・イメージをコンピュータにて生成するグラフィックス作成方法において、このグラフィックス・イメージを生成する描画領域にノードを順次追加しながら配置するステップと、ノードが追加配置されるたびに、追加された当該ノードとディスプレイ空間に既に配置されているノードとの間に所定の力学モデルに基づく運動方程式を解くことにより各ノードの位置を更新するステップとを含むことを特徴とする。
ここで、この描画領域にノードを配置するステップは、追加されたノード及び当該ノードの近傍のノードに対して局所的に前記力学モデルを適用し運動方程式を解くことによりノードの位置を更新するステップを含む。
【００１７】
また、本発明は、視覚的な形態で出力されるグラフィックス・イメージをコンピュータにて生成するグラフィックス作成方法において、このグラフィックス・イメージを生成する描画領域へのノードの配置順を、隣接するアークの数の多いノードが先になるように決定し、決定された配置順に従い、この描画領域の中心から周辺へ向かってノードを配置することを特徴とする。
【００１８】
さらに、本発明は、視覚的な形態で出力されるグラフィックス・イメージをコンピュータにて生成するグラフィックス作成方法において、このグラフィックス・イメージを生成する描画領域にノードを配置し、各ノード間にアークを張るステップと、ノード及びアークを配置した後に、端部のノード以外の所定のノードに近接しているアークを、この所定のノードを迂回するように変形するステップとを含むことを特徴とする。
すなわち、このグラフィックス作成方法においては、描画領域にノードを配置する処理と、アークを変形してノードとアークとの重なりのない見やすい画像に整形する処理とが別工程となっている。
【００１９】
ここで、この描画領域にノード及びアークを配置するステップは、このグラフィックス・イメージを生成する描画領域へのノードの配置順を決定するステップと、決定された配置順に従ってノードを順次配置し、配置されたノードに対してアークを張るステップとを含む構成とすることができる。
また、このアークを変形するステップは、所定のノードに対して一定以内の距離に位置するアークを分割するステップと、アークの分割点を所定のノードから遠ざけるステップと、この分割点の間の線分列を一定の曲率の曲線に変換するステップとを含む構成とすることができる。
【００２０】
さらにまた、本発明は、上述したグラフィックス作成方法における各ステップに対応する処理をコンピュータに実行させるプログラムとして提供することができる。
また、本発明は、コンピュータを制御して、ノードとこのノード間を接続するアークとを含むグラフィックス・イメージを生成するプログラムであって、このグラフィックス・イメージを生成する描画領域へのノードの配置順を、隣接するアークの数の多いノードが先になるように決定する機能と、決定された配置順に従い、この描画領域の中心から周辺へ向かってノードを配置する機能とをこのコンピュータに実現させるプログラムとして提供することができる。
さらに、本発明は、コンピュータを制御して、ノードと当該ノード間を接続するアークとを含むグラフィックス・イメージを生成するプログラムであって、このグラフィックス・イメージを生成する描画領域にノードを配置し、配置されたノード間にアークを張るノード配置手段と、この描画領域にノード及びアークが配置された後に、所定のノードに対して一定以内の距離に位置するアークを曲線化してこのノードを迂回するアーク曲線化手段として、このコンピュータを動作させるプログラムとして提供することができる。
さらにまた、本発明は、これらのプログラムを、磁気ディスクや光ディスク、半導体メモリなどの記憶媒体に格納して配布したり、ネットワークを介してプログラムを配信するプログラム伝送装置に格納したりすることによって、提供することができる。
【００２１】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
本実施の形態は、コンピュータシステムを用いて、組織全体を構成する要素の関係を示すグラフデータを、当該要素を示すノードとノード間をつなぐアークとで表すことにより視覚化するグラフィックス表示処理を行う。
図１は、本実施の形態によるグラフデータのグラフィックス表示を行うグラフデータ視覚化装置としてのコンピュータシステムの構成を示す図である。
図１を参照すると、コンピュータシステム１０は、グラフィックス表示処理をプログラム制御により実行する処理装置（ＣＰＵ）１１と、処理装置１１を制御するプログラムを格納した主メモリ１２と、処理装置１１により生成されたグラフデータのグラフィックス・イメージ（以下、単にグラフィックスと記述する）を表示するディスプレイ装置１３と、処理対象であるグラフデータを格納した記憶装置１４とを備える。
なお、図１には、本実施の形態を実現するための構成のみを図示してある。実際には、図示の構成の他に、各種の命令やデータを入力するためのキーボードやマウスなどの入力装置、音声出力機構や各種の周辺機器、ネットワークに対するインタフェースなどが設けられていることは言うまでもない。
【００２２】
図２は、本実施の形態によるグラフデータのグラフィックス表示を実行するグラフィックス作成システムの構成を説明する図である。
図２を参照すると、本実施の形態によるグラフィックス作成システムは、グラフデータに基づいてノードの配置順を決定するノード配置順決定部２１と、ノードを配置する位置を決定するノード配置部２２と、所定のアークを曲線化するアーク曲線化部２３とを備える。
【００２３】
図２に示した各構成要素は、図１の主メモリ１２に保持されているコンピュータプログラムにより制御された処理装置１１にて実現される仮想的なソフトウェアブロックである。処理装置１１を制御する当該コンピュータプログラムは、ＣＤ−ＲＯＭやフロッピーディスクなどの記憶媒体に格納して配布したり、ネットワークを介して伝送したりすることにより提供される。そして、当該コンピュータプログラムは、主メモリ１２にロードされて処理装置１１を制御し、図１に示したコンピュータシステム１０において図２に示した各構成要素の機能を実現する。
【００２４】
図３は、本実施の形態のグラフィックス作成システムによるグラフィックス作成処理の全体的な流れを示すフローチャートである。
図３に示すように、本実施の形態は、まず、処理対象であるグラフデータを入力し（ステップ３０１）、ノード配置順決定部２１により、ノードの配置順を決定する（ステップ３０２）。
そして、決定された配置順に従って、ノード配置部２２により、ノードを１個ずつ配置してゆく（ステップ３０３、３０４）。そして、ノードを１個配置するごとに、そのノードの追加によって既に配置されているノードの位置がどのように変化するかを算出し、グラフに反映させる（ステップ３０５）。
全てのノードの配置が終わると、アーク曲線化部２３により、アークとノードとが重なっている箇所があるかどうかを調べ、アークとノードの重なりがない場合にはそのまま処理を終了する（ステップ３０６）。一方、アークとノードの重なりがある場合は、ノードと重なっているアークを曲線化してノードとの重なりを解消した後、処理を終了する（ステップ３０７）。
【００２５】
次に、図２の構成要素ごとに、各機能及び動作を詳細に説明する。
ノード配置順決定部２１は、処理対象であるグラフデータを入力し、このグラフデータに基づいてノードの配置順を決定する。
なお、上述したようにグラフデータは記憶装置１４に格納されているので、ノード配置順決定部２１として動作する処理装置１１が記憶装置１４から処理対象であるグラフデータを読み出すことにより入力する。ただし、フロッピーディスクやＣＤ−ＲＯＭなどの記憶媒体にグラフデータを格納しておき、ドライブ装置を介して処理対象となるグラフデータを読み込むようにしても良い。また、ネットワークを介して他のコンピュータシステムから処理対象のグラフデータを転送して入力することも可能である。
【００２６】
図４は、ノード配置順決定部２１によるノードの配置順を決定する動作を説明するフローチャートである。
図４に示すように、ノード配置順決定部２１は、まずグラフデータを入力し（ステップ４０１）、ノードを隣接するアークの数（以下、隣接アーク数）に応じて分類する（ステップ４０２）。
そして、次の処理を各ノードについて順次実行する。
まず、最も隣接アーク数の少ない残存ノードを選び、当該ノードをグラフデータから削除すると共に、リストに登録する（ステップ４０３、４０４）。そして、削除したノードに隣接するアークを全て削除し、そのアークに隣接するノードにおける隣接アーク数を１減らす（ステップ４０５）。
グラフデータ中の各ノードに関してステップ４０４、４０５の処理を行い、全てのノードがリストに登録されたならば、ノード配置順決定部２１は、当該リストにおけるノードの登録順を最後から先頭へ遡る順番（登録順の逆の順番）を、ノードの配置順と定義する（ステップ４０３、４０６）。
【００２７】
グラフデータを図示する場合、一般的に、多くのノードに接続されている中心的なノードは、ディスプレイ空間の中心部に配置されることが望ましい、ということが経験的にわかっている。例えば、図５（Ａ）と図５（Ｂ）は等価なグラフであるが、図５（Ａ）のように隣接アークの多いノードが空間の中心部に配置されるほうが、交差するアークが少なく、ノード間の関係を直感的に把握しやすい。そこで、図４を参照して上述したように、本実施の形態は、隣接アーク数の多いノードから順にノードを配置するように順番を決める。そして、先に配置されたノードが中心付近に配置され、後に配置されるノードほど周辺の領域に配置されるようにする。
【００２８】
図４に示した動作のステップ４０５において、リストアップしたノードに隣接するアークを全て削除し、そのアークに隣接するノードにおける隣接アーク数を１減らすという処理を行った。これは、単純に隣接アーク数だけから配置順を決めることが好ましくないケースがあり得ることから、これに対処するために設けられた処理である。
図６は、ステップ４０５の処理を行う効果を説明する図である。
図６（Ａ）に示すように、単純に隣接アーク数の多少のみに基づいて配置順を決めた場合、８〜１２番目のノードはすべて隣接アーク数が２であるため、この５個のノード間の配置順は一意ではない。このため、隣接する末端ノードが連続に配置されるとは限らない。
これに対し、ステップ４０５の処理を行うことにより、グラフの末端部のノードが隣接順に連続して配置されるように配置順を決定することができる（図６（Ｂ）の場合、１０、１１番目、及び１２、１３、１４番目のノードが一列に並ぶ）。これにより、末端部のノードが一列に並んだ良好な配置結果を得やすいこととなる。
【００２９】
ところで、図４に示したノード削除処理では、ノードだけでなくアークも削除しているので、本来なら一続きに連結されているグラフを非連結な複数の部分グラフに分離することがある。例えば、図７（Ａ）のようなグラフを、ノードに割り振られた数字の順番で削除すると、グラフは途中で図７（Ｂ）のような非連結な部分グラフに分離される。
このような状況を避けたい場合は、ノードを削除するかわりに当該ノードを隣接ノードにマージし、マージ前のノードの隣接アークもマージ後のノードに継承する、という考え方を導入すれば良い。図７（Ｃ）（Ｄ）は、ノードをマージした例である。ここで、マージ先以外のノードに連結しているアークの隣接ノードを、マージするノードからマージ先のノードに組み替えることにより、グラフの分離を避けることができる。例えば、図７（Ｄ）では、３番ノードと４番ノードを結ぶアークを、３番ノードから８番ノードに組み替えることで、グラフの分離を避けている。このマージ処理を進める過程で、アークの組み替えの履歴を保存し、ノードの配置処理の際には、マージ処理の履歴を逆向きに再生すれば、グラフを分離させずに処理することができる。
【００３０】
ノード配置部２２は、ノード配置順決定部２１により決定されたノードの配置順にしたがって、各ノードを順次配置し、必要なアークを張って、グラフデータのグラフィックスを作成する。本実施の形態では、ノードを１個ずつ配置しながら、既に配置されている他のノードとの位置関係を調整する。したがって、新たに１個のノードを配置した場合、そのノードの配置の影響として、既に配置されている他のノードの変位を力学的なモデルに基づいて算出し、グラフィックスに反映させてゆく。
【００３１】
本実施の形態では、各ノードの配置位置を算出するために、従来技術でも用いられている分子間力モデルやバネモデルといった力学モデルを用いた計算を局所的に適用する。以下、この手法について詳細に説明する。
ノード配置部２２は、まず、これからディスプレイ空間に配置するノードをＮ０とする。Ｎ０の初期位置は、既にディスプレイ空間に配置されていてノードＮ０とアークで連結されているノードＮａの近傍で、かつノードＮａよりもディスプレイ空間の中心から遠い場所とする。
【００３２】
続いて、ノード配置部２２は、ノードＮａに対してバネモデルを適用し、引力または斥力をノードＮ０及びノードＮａに作用させる。このとき、ノードＮ０及びノードＮａに作用させる力Ｆａは、次の数１式により算出する。図８は、数１式の関数を図示したものである。
【数１】
0003790679.tif 000002
数１式において、対象となる２個のノードの「大きさの総和」に対する「中心点間の距離」の比をｄとする。また、ｋ、ｄ0、ｄ1は定数であり、ｄ0＜ｄ1であるとする。この式は、バネが安定な長さに向かうための力の算出式に類似しているが、一定以上の距離（ｄ≧ｄ1）のときに力の大きさが一定であるという点で異なる。
この力は、アークの長さを安定距離に近い長さに保ち、不必要に長いアークが生成されるのを避けるために作用する。
【００３３】
また同時に、ノード配置部２２は、既にディスプレイ空間に配置されていてノードＮ０とアークで連結されていないノードＮｂに対して分子間力モデルを適用し、斥力をノードＮ０及びノードＮｂに作用させる。このとき、ノードＮ０及びノードＮｂに作用させる力Ｆｂは、次の数２式により算出する。図９は、数２式の関数を図示したものである。
【数２】
0003790679.tif 000003
数２式において、ｋは定数とする。この式は、分子間力モデルの代表的な式であるファン・デル・ワールス力を３次関数で近似したものと類似しているが、ｄ≧１のときに力の大きさがゼロであるという点で異なる。
この力は、アークで連結されていないノード間の距離を一定以上に保ち、ノードの重なりを避けるために作用する。
なお、ファン・デル・ワールス力を３次関数で近似した力としては、例えば下記の文献１に記載されたバブルメッシュ法で適用した分子間力がある。
文献１：嶋田, 物理モデルによる自動メッシュ分割，シミュレーション, Vol.12, No.1, pp.11-20, 1993.
【００３４】
以上の２種類の力をノード間に対して算出した後に、ノード配置部２２は、運動方程式を用いてノードの変位を求める。この場合、例えばＲｕｎｇｅ−Ｋｕｔｔａ法などの微分方程式解法を用いて反復的にノードの変位を求めることにより、各ノードの安定な位置を求めることができる。
ここで、ノードを１個追加配置したときに、そのノードとの直接の相互間力によって変位するノードは、
１．追加配置したノードとアークで結ばれているノード
２．追加配置したノードとアークで結ばれていないが、十分近い距離にあるノード
のいずれかのみである。
追加配置したノードの間接的な作用は、その周辺のノードの変位をもたらすが、追加配置したノードから離れるほど影響は小さくなる。したがって、一定の変位量以下を無視することにより、変位中と判定されるノードの範囲を限定することができる。この範囲は、グラフ全体の規模には依存しないので、１つのノードを追加配置する際の計算量はＯ（１）であり、全ノードの配置の計算量はＯ（Ｎ）となる。
従来のグラフデータのグラフィックス表示技術における力学モデルの計算時間は、最悪の場合でＯ（Ｎ2）程度であるから、本実施の形態による力学モデルの局所的な適用により、大幅な高速化を達成できることとなる。
【００３５】
図１０は、ノード配置部２２において、ノードが１個追加配置された場合に、そのノードとの相互間力によって変位するノードの位置を算出する処理を説明するフローチャートである。
図１０に示すように、新たにノードＮ０をディスプレイ空間に配置すると（ステップ１００１）、ノード配置部２２は、この追加配置したノードＮ０に「変位中」のフラグを立てる（ステップ１００２）。
【００３６】
次に、ノード配置部２２は、既にディスプレイ空間に配置されているノードの中で、ノードＮ０とアークで連結されているｍ個のノードに対して、バネモデルによる力を算出する。また、既にディスプレイ空間に配置されているノードの中で、ノードＮ０とアークで連結されておらず、かつノードＮ０から一定の距離以内にあるｋ個のノードのみに対して分子間力モデルによる力を算出する（ステップ１００３、１００４）。
【００３７】
対象となる全てのノード（ｍ個のノード及びｋ個のノード）に対してバネモデルによる力の算出と分子間力モデルによる力の算出とが終了したならば、次に、ノード配置部２２は、ノードＮ０及び（ｋ＋ｍ）個の対象ノードのみに対して、運動方程式によって変位を算出する（ステップ１００５）。そしてさらに、一定以上の変位が生じたノードに対して「変位中」のフラグを立てる（ステップ１００６）。
【００３８】
ステップ１００６により「変位中」のフラグが立てられたノードが存在するならば、次に、ノード配置部２２は、この「変位中」のフラグが立てられたノードを対象として、アークで連結されているノード及び十分近い距離にあるノードとの相互間力を求め、変位を求める（ステップ１００７、１００３〜１００５）。以上の処理を、ステップ１００６において「変位中」のフラグが立てられるノードがなくなるまで反復する。
なお、ステップ１００３乃至ステップ１００６の処理を、「変位中」のフラグが立てられるノードがなくなるまで繰り返すのではなく、一定回数繰り返したところで打ち切り、処理を終了するように設定することもできる。
【００３９】
図１１は、ノード配置部２２によるノードの配置及びこれに基づくノードの変位の様子を説明する図である。
図１１（Ａ）は、既にいくつかのノードがレイアウトされている状態である。また、図１１（Ｂ）は、図１１（Ａ）の状態のグラフィックスに１個のノードＮ０が追加され、ノードＮ０に「変位中」のフラグが立てられた状態である（図１０、ステップ１００１、１００２参照）。このとき、ノードＮ０と、アークで結ばれたノードまたはノードＮ０とアークで結ばれていないが十分近い距離にあるノードとの間の力が算出される（図１０、ステップ１００３、１００４参照）。
【００４０】
次に、算出された力に基づいて各ノードの変位が算出され、グラフィックスに反映される（図１０、ステップ１００５参照）。そして、移動量が大きいノードについて、改めて「変位中」のフラグが立てられる。図１１（Ｃ）は、図１１（Ｂ）の状態に対して、ノードＮ０の追加によりノードが変位した状態を示す。図１１（Ｃ）における着色されたノードは、移動量が大きく、「変位中」のフラグが立てられたノードである。
【００４１】
この後、「変位中」のフラグが立てられたノードに対して、同様に力を算出し、ノードを変位させ、移動量の大きいノードについて「変位中」のフラグを立てるという操作が繰り返し実行される。
図１１（Ｄ）は、図１１（Ｃ）に示された「変位中」のフラグが立てられたノードに関して、アークで結ばれたノードまたは近隣のノードとの間の力が算出された様子を示す。また、図１１（Ｅ）は、図１１（Ｄ）の状態において算出された力に基づいて各ノードの変位が算出され、グラフィックスに反映された状態を示す。図１１（Ｅ）における着色されたノードは、移動量が大きく、「変位中」のフラグが立てられたノードである。また、図１１（Ｆ）は、図１１（Ｅ）に示された「変位中」のフラグが立てられたノードに関して、アークで結ばれたノードまたは近隣のノードとの間の力が算出された様子を示す。
【００４２】
アーク曲線化部２３は、ノード配置部２２により作成されたグラフィックスにおいて、アークとノードが重なっている場所があるかどうかを調べる。そして、ノードと重なっているアークを曲線化し、ノードを迂回して重なりを解消する。以下、この処理の手順を詳細に説明する。
【００４３】
図１２は、アーク曲線化部２３によるアークを曲線化する処理を説明するフローチャートである。
図１２に示すように、アーク曲線化部２３は、ノード配置部２２によりノードの配置がなされたグラフデータを入力すると（ステップ１２０１）、グラフを構成するアークに対して、ノードとの重なりがあるかどうか判定する（ステップ１２０２、１２０３）。そして、ノードと重なるアークがある場合、そのアークを細かい線分裂に分割する（ステップ１２０４）。
【００４４】
図１３は、アークの分割点の位置を算出する処理を説明する図である。
アーク曲線化部２３は、２つのノードＮａ、Ｎｂを連結する直線アークＮａＮｂを処理対象とし、まず、直線アークＮａＮｂに対して一定の距離以内の極めて近い位置にノードが存在するか探す。そのような近い位置に最低１個のノードＮｉがある場合には、直線アークＮａＮｂを（ｎ＋１）本に分割する（図１３（Ａ）参照）。
続いて、ノードＮｉに連結されたアークと、直線アークＮａＮｂの交差数を判定する。直線アークＮａＮｂが、ノードＮｉを回り込むように曲線化されたほうがアークどうしの交差数が減るのであれば、ノードＮｉを回り込むように分割点の初期位置を算出する（図１３（Ｂ）参照）。
【００４５】
全てのアークをチェックし、ノードとの重なりのあるアークを全て細かく分割したならば、次に、アーク曲線化部２３は、当該アークの分割点に力学モデルを適用して作用する力を算出する（ステップ１２０５）。
本実施の形態では、アークにおけるｎ個の分割点に対して、以下の４種類の力を作用させる。
（Ａ）アークを分割して生成される分割点と近隣ノードとの距離を一定以上に保つための分子間力モデル。
（Ｂ）アークを分割して生成される線分列とそれに平行な近隣アークとの距離を一定以上に保つためのバネモデル
（Ｃ）アークを分割して生成される線分列の各々の長さを一定にするバネモデル
（Ｄ）アークを分割して生成される線分列の曲率を一定にするバネモデル
図１４は、これらの力の作用を図示した概念図である。
【００４６】
ここで、（Ａ）の力については、分割点と近隣ノードとの間の距離の関数を用いて、引力または斥力を算出する。（Ｂ）の力については、分割点と近隣アークとの間の距離の関数を用いて、引力または斥力を算出する。（Ｃ）の力については、分割点と隣接分割点の間の距離の関数を用いて、引力または斥力を算出する。また、（Ｄ）の力については、例えば、下記の文献２に開示されているバネモデルを用いて、引力または斥力を算出する。
文献２：山田敦, 嶋田憲司, 古畑智武, Ko-Hsiu Hou, 離散的なバネモデルを用いた滑らかな曲線、曲面生成手法, 情報処理学会グラフィックスとＣＡＤ／Ｖｉｓｕａｌ  Ｃｏｍｐｕｔｉｎｇ  合同シンポジウム '99, pp.43-48, 1999.
この（Ｄ）の「曲率を一定にする力」によって、アークは滑らかなカーブを描く曲線を形成することとなる。このため、アークを線分列に分割したとき「折れてみえる部位」をノードと誤読することを防止することができる。
【００４７】
以上のようにして、ステップ１２０４で分割された各アークの分割点Ｐｉ（ｉ＝１…ｎ）に対して、ステップ１２０５において作用する力を算出した後に、運動方程式を用いて分割点Ｐｉの変位を求める（ステップ１２０６）。この場合、Ｒｕｎｇｅ−Ｋｕｔｔａ法などの微分方程式解法を用いて反復的に分割点の変位を求めることにより、分割点の安定な位置を求めることができる。
【００４８】
図１５乃至図１９に、本実施の形態を実際に種々のグラフデータに適用してグラフィックス表示を実行した場合の実行例を示す。
図１５は、ノードを１個ずつ追加してゆき、１０個のノードを配置するグラフデータのグラフィックス表示の経過を示す。図示のように、本実施の形態では、１個ずつノードを追加しながら、その都度、既に配置されているノードとの間で力を作用させて位置を修正してゆく。このため、図１５（Ｉ）に示すように、最終的に、各ノード間の関係を把握しやすいバランスの取れたグラフィックス表示を行うことができる。
【００４９】
図１６は、７０個のノードを持つグラフデータのグラフィックス表示を行う過程を６コマ表示したものである。この場合も、ノードを追加するたびに各ノードの位置を修正してゆくので、図１６（Ｆ）に示すように、各ノード間の関係を把握しやすいバランスの取れたグラフィックス表示を行うことができる。
【００５０】
図１７は、図１６と同様のグラフデータに関して、従来手法による配置結果と本実施の形態による配置結果とを比較したものである。ここで、従来手法とは、力学モデル（バネモデル及び分子間力モデル）を適用しつつ、全てのノードを最初から配置して運動方程式を反復的に解く手法である。
従来手法による配置結果を示す図１７（Ａ）と本実施の形態による配置結果を示す図１７（Ｂ）とを比較すると、双方ともノードの重なりやアークの交差が少なく、比較的良好な配置結果を得ることができた。しかし、従来手法の処理に要した計算時間は７３秒であり、本実施の形態の処理に要した計算時間は１９秒であった。したがって、本実施の形態の方が大幅に高速であることがわかる。
【００５１】
図１８は、１００個のノードを持ち、格子状のトポロジーを持つグラフデータに関して、従来手法による配置結果と本発明による配置結果とを比較したものである。
従来手法による配置結果を示す図１８（Ａ）を参照すると、ノードの初期位置が適切に設定できなかったため、格子状のトポロジーが視覚的に把握しにくい配置結果となっている。これに対し、本実施の形態による配置結果を示す図１８（Ｂ）を参照すると、格子状のトポロジーが視覚的に把握しやすい配置結果を得ることができた。
また、従来手法の処理に要した時間は１４９秒であり、本実施の形態の処理に要した計算時間は３１秒であった。したがって、この例においても、本実施の形態の方が大幅に高速であることがわかる。
【００５２】
図１９は、アークを曲線化することによりグラフデータの構造を一層把握しやすくした様子を示す。
全てのアークを直線で描画した図１９（Ａ）を参照すると、画像中右方の２、３のノード付近でアークが重なったり交差したりしており、ノード間の関係が把握しにくくなっている。これに対し、ノードの近くを通るアークを曲線化してこのノードを迂回させた図１９（Ｂ）を参照すると、アークとノードとの間隔が適度に保持され、アークとノードとが重なることを回避している。さらに、画像の左下部分に見られるように、アークの回り込みによって、アークどうしの交差を減少している部位もある。これらの効果により、ノード間の関係の把握が容易となり、グラフデータの誤読を避けることができる。
【００５３】
図２０は、本実施の形態を具体的なグラフデータのグラフィックス表示に適用した例を示す図である。
図２０に示す適用例では、ウェブページのリンク構造を視覚化している。具体的には、「表紙ページ」から「会社概要」、「採用情報」、「製品一覧」といったページ、さらにその下位に位置付けられたページなどからなる会社紹介のウェブサイトにおいて、個々のウェブページをノードとして、個々のリンクをアークとして、ウェブページ間のリンク構造をグラフ化して視覚化している。
なお、本実施の形態によるグラフデータのグラフィックス表示技術は、図２０に示したようなウェブページのリンク構造の他にも、次に示すような分野において利用し、組織構造を視覚化するのに好適である。
１．計算機システムのネットワークをグラフ化し、トラフィック量の管理や故障検知に用いる。
２．金融、交通、通信などのネットワークをグラフ化し、トランザクション量の理解や将来予測に用いる。
３．自治体や会社人事など、階層構造をもつ組織のネットワークをグラフ化し、人的リソースの最適化を図る。
４．テキストデータ群や画像データ群に対して、個々のデータをノードとし、それを関連性でリンクつけしてグラフ化し、データ全体の構成や傾向を理解する。
５．遺伝子データ中のシーケンスパターンをノードとし、それを関連性でリンクつけしてグラフ化し、特徴や法則を見つける。
６．ソフトウェアのプログラミング環境中で、関数やクラスをノードとし、それらの呼び出し関係などでリンクつけして、プロジェクト単位でサブグラフを構成し、ソフトウェアの開発状況を理解する。
【００５４】
【発明の効果】
以上説明したように、本発明によれば、グラフデータのグラフィックス表示における処理速度の向上を図り、ノードの配置結果における品質と高速な処理という要求を高度に両立させることができる。
【００５５】
また、本発明によれば、より高品質なノードの配置結果を得ることができるグラフデータのグラフィックス表示技術を提供することができる。
【図面の簡単な説明】
【図１】  本実施の形態によるグラフデータのグラフィックス表示技術を実現するコンピュータシステムの構成を示す図である。
【図２】  本実施の形態によるグラフデータのグラフィックス表示を実行するグラフィックス作成システムの構成を説明する図である。
【図３】  本実施の形態のグラフィックス作成システムによるグラフィックス作成処理の全体的な流れを示すフローチャートである。
【図４】  本実施の形態のノード配置順決定部によるノードの配置順を決定する動作を説明するフローチャートである。
【図５】  グラフデータのグラフィックス表示において、隣接アークの多いノードを空間の中心部に配置する方が良好な結果を得られることを説明する図である。
【図６】  図４のステップ４０５の処理を行う効果を説明する図である。
【図７】  グラフデータのグラフィックス表示を行う過程で無用なグラフの分離を避ける手法を説明する図である。
【図８】  本実施の形態にて用いられるバネモデルの関数を示す図である。
【図９】  本実施の形態にて用いられる分子間力モデルの関数を示す図である。
【図１０】  本実施の形態のノード配置部による処理を説明するフローチャートである。
【図１１】  本実施の形態のノード配置部によるノードの配置及びこれに基づくノードの変位の様子を説明する図である。
【図１２】  本実施の形態のアーク曲線化部によるアークを曲線化する処理を説明するフローチャートである。
【図１３】  本実施の形態におけるアークの分割点の位置を算出する処理を説明する図である。
【図１４】  図１３に示すアークの分割点に対して作用させる力の概念を示す図である。
【図１５】  本実施の形態を実際に種々のグラフデータに適用してグラフィックス表示を実行した場合の実行例を示す図であり、１０個のノードを配置するグラフデータのグラフィックス表示の経過を示す図である。
【図１６】  本実施の形態を実際に種々のグラフデータに適用してグラフィックス表示を実行した場合の実行例を示す図であり、７０個のノードを持つグラフデータのグラフィックス表示を行う過程を６コマ表示した図である。
【図１７】  本実施の形態を実際に種々のグラフデータに適用してグラフィックス表示を実行した場合の実行例を示す図であり、従来手法による配置結果と本実施の形態による配置結果との比較例を示す図である。
【図１８】  本実施の形態を実際に種々のグラフデータに適用してグラフィックス表示を実行した場合の実行例を示す図であり、従来手法による配置結果と本実施の形態による配置結果との他の比較例を示す図である。
【図１９】  本実施の形態を実際に種々のグラフデータに適用してグラフィックス表示を実行した場合の実行例を示す図であり、アークを曲線化することによりグラフデータの構造を一層把握しやすくした様子を示す図である。
【図２０】  本実施の形態を具体的なグラフデータのグラフィックス表示に適用した例を示す図である。
【図２１】  グラフデータのグラフィックス表示を行う上で要求される条件を説明する図である。
【図２２】  グラフのノード間に分子間力を適用し、アークにバネモデルを適用した様子を示す図である。
【図２３】  グラフデータのグラフィックス表示を行う上で好ましくないノードの初期配置の一例を示す図である。
【符号の説明】
１０…コンピュータシステム、１１…処理装置（ＣＰＵ）、１２…主メモリ、１３…ディスプレイ装置、１４…記憶装置、２１…ノード配置順決定部、２２…ノード配置部、２３…アーク曲線化部
【図１】
0003790679.tif 000004
【図２】
0003790679.tif 000005
【図３】
0003790679.tif 000006
【図４】
0003790679.tif 000007
【図５】
0003790679.tif 000008
【図６】
0003790679.tif 000009
【図７】
0003790679.tif 000010
【図８】
0003790679.tif 000011
【図９】
0003790679.tif 000012
【図１０】
0003790679.tif 000013
【図１１】
0003790679.tif 000014
【図１２】
0003790679.tif 000015
【図１３】
0003790679.tif 000016
【図１４】
0003790679.tif 000017
【図１５】
0003790679.tif 000018
【図１６】
0003790679.tif 000019
【図１７】
0003790679.tif 000020
【図１８】
0003790679.tif 000021
【図１９】
0003790679.tif 000022
【図２０】
0003790679.tif 000023
【図２１】
0003790679.tif 000024
【図２２】
0003790679.tif 000025
【図２３】
0003790679.tif 000026