(57)【特許請求の範囲】
【請求項１】
複数のノードとノード間を接続する複数のエッジとを含むグラフを生成して表示手段の画面に表示するグラフ生成装置において、
各ノードについてその形状及び大きさを示すデータと各エッジについてノードとの接続関係を示すデータとを含むグラフ構造データが記憶された記憶手段と、
前記記憶手段に記憶されている前記グラフ構造データに基づいて前記表示手段の画面に表示された複数のノードの中から、ユーザが入力手段を用いて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択したときに、その選択した前記選択ノードを特定する選択ノード特定データを生成して前記記憶手段に記憶する選択ノード特定データ生成手段と、
前記記憶手段に記憶されている前記選択ノード特定データによって特定される前記選択ノードの全体を一つの仮ノードで置き換えて、所定のグラフレイアウトアルゴリズムに従った処理を実行することにより、前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置を算出した後、その算出された前記仮ノードのレイアウト位置に、前記選択ノードの全体をレイアウトするという条件の下で、前記記憶手段に記憶されている前記グラフ構造データに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記各ノードのレイアウト位置を算出し、その算出された結果に基づいてグラフを生成して、前記表示手段の画面に表示するグラフ生成手段と、
を備えることを特徴とするグラフ生成装置。
【請求項２】
前記グラフ生成手段は、
前記選択ノード特定データ生成手段で得られた前記選択ノード特定データに基づいて前記グラフ構造データから前記選択ノードに関連するデータを抽出し、その抽出した前記選択ノードに関連するデータに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記各選択ノードのレイアウト位置を算出する第一のレイアウト位置算出手段と、
前記第一のレイアウト位置算出手段で得られた前記各選択ノードのレイアウト位置に関するデータに基づいて、前記選択ノードの全体をレイアウトするのに必要な領域の形状・大きさを決定する領域決定手段と、
前記選択ノードの全体を、前記領域決定手段で決定された前記領域の形状・大きさと同じ形状・大きさを有する一つの仮ノードで置き換え、前記仮ノードの形状・大きさに関するデータ、前記仮ノードとの接続関係を示すデータ、及び、前記グラフ構造データのうち前記選択ノード以外の各ノードに関連するデータに基づいて、前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置を算出する第二のレイアウト位置算出手段と、
前記第二のレイアウト位置算出手段で得られた前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置に関するデータによって定められる前記仮ノード及び前記選択ノード以外の各ノードについての相対的な位置関係を維持するという条件、及び、前記仮ノードの代わりに前記選択ノードの全体をレイアウトするという条件の下で、前記グラフ構造データに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記グラフ構造データに記述されている各ノードのレイアウト位置を算出する第三のレイアウト位置算出手段と、
前記第三のレイアウト位置算出手段で得られた各ノードのレイアウト位置に関するデータと前記グラフ構造データとに基づいてグラフを生成し、前記表示手段の画面に表示するグラフ表示処理手段と、
を有することを特徴とする請求項１記載のグラフ生成装置。
【請求項３】
前記グラフ構造データに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することによりグラフを生成し、前記表示手段の画面に表示する基本グラフ生成手段を備え、
前記選択ノード特定データ生成手段は、前記基本グラフ生成手段によって前記表示手段の画面に表示されたグラフにおいて、ユーザが前記入力手段を用いて、互いに近接した位置にレイアウトしたいノードを前記選択ノードとして選択したときに、その選択した前記選択ノードを特定する前記選択ノード特定データを生成することを特徴とする請求項１又は２記載のグラフ生成装置。
【請求項４】
前記記憶手段に記憶されている前記グラフ構造データは有向グラフに対するものであり、前記グラフレイアウトアルゴリズムは有向グラフの階層レイアウトを行うためのアルゴリズムであることを特徴とする請求項１、２又は３記載のグラフ生成装置。
【請求項５】
コンピュータを利用して、複数のノードとノード間を接続する複数のエッジとを含むグラフを生成して前記コンピュータの表示手段の画面に表示するグラフ生成方法において、
前記コンピュータの記憶手段に記憶されている、各ノードについてその形状及び大きさを示すデータと各エッジについてノードとの接続関係を示すデータとを含むグラフ構造データに基づいて前記表示手段の画面に表示された複数のノードの中から、ユーザが前記コンピュータの入力手段を用いて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択したときに、前記コンピュータの制御手段が、その選択した前記選択ノードを特定する選択ノード特定データを生成して前記記憶手段に記憶する選択ノード特定データ生成ステップと、
前記制御手段が、前記記憶手段に記憶されている前記選択ノード特定データによって特定される前記選択ノードの全体を一つの仮ノードで置き換えて、所定のグラフレイアウトアルゴリズムに従った処理を実行することにより、前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置を算出した後、その算出された前記仮ノードのレイアウト位置に、前記選択ノードの全体をレイアウトするという条件の下で、前記記憶手段に記憶されている前記グラフ構造データに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記各ノードのレイアウト位置を算出し、その算出された結果に基づいてグラフを生成して、前記表示手段の画面に表示するグラフ生成ステップと、
を具備することを特徴とするグラフ生成方法。
【請求項６】
前記グラフ生成ステップは、
前記制御手段が、前記選択ノード特定データ生成ステップで得られた前記選択ノード特定データに基づいて前記グラフ構造データから前記選択ノードに関連するデータを抽出し、その抽出した前記選択ノードに関連するデータに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記各選択ノードのレイアウト位置を算出する第一ステップと、
前記制御手段が、前記第一ステップで得られた前記各選択ノードのレイアウト位置に関するデータに基づいて、前記選択ノードの全体をレイアウトするのに必要な領域の形状・大きさを決定する第二ステップと、
前記制御手段が、前記選択ノードの全体を、前記第二ステップで決定された前記領域の形状・大きさと同じ形状・大きさを有する一つの仮ノードで置き換え、前記仮ノードの形状・大きさに関するデータ、前記仮ノードとの接続関係を示すデータ、及び、前記グラフ構造データのうち前記選択ノード以外の各ノードに関連するデータに基づいて、前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置を算出する第三ステップと、
前記制御手段が、前記第三ステップで得られた前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置に関するデータによって定められる前記仮ノード及び前記選択ノード以外の各ノードについての相対的な位置関係を維持するという条件、及び、前記仮ノードの代わりに前記選択ノードの全体をレイアウトするという条件の下で、前記グラフ構造データに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記グラフ構造データに記述されている各ノードのレイアウト位置を算出する第四ステップと、
前記制御手段が、前記第四ステップで得られた各ノードのレイアウト位置に関するデータと前記グラフ構造データとに基づいてグラフを生成し、前記表示手段の画面に表示する第五ステップと、
を備えることを特徴とする請求項５記載のグラフ生成方法。
【請求項７】
前記記憶手段に記憶されている前記グラフ構造データは有向グラフに対するものであり、前記グラフレイアウトアルゴリズムは有向グラフの階層レイアウトを行うためのアルゴリズムであることを特徴とする請求項５又は６記載のグラフ生成方法。
【請求項８】
コンピュータを利用して、複数のノードとノード間を接続する複数のエッジとを含むグラフを生成して前記コンピュータの表示手段の画面に表示するためのグラフ生成プログラムにおいて、
前記コンピュータに、
前記コンピュータの記憶手段に記憶されている、各ノードについてその形状及び大きさを示すデータと各エッジについてノードとの接続関係を示すデータとを含むグラフ構造データに基づいて前記表示手段の画面に表示された複数のノードの中から、ユーザが前記コンピュータの入力手段を用いて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択したときに、その選択した前記選択ノードを特定する選択ノード特定データを生成して前記記憶手段に記憶する選択ノード特定データ生成機能と、
前記記憶手段に記憶されている前記選択ノード特定データによって特定される前記選択ノードの全体を一つの仮ノードで置き換えて、所定のグラフレイアウトアルゴリズムに従った処理を実行することにより、前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置を算出した後、その算出された前記仮ノードのレイアウト位置に、前記選択ノードの全体をレイアウトするという条件の下で、前記記憶手段に記憶されている前記グラフ構造データに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記各ノードのレイアウト位置を算出し、その算出された結果に基づいてグラフを生成して、前記表示手段の画面に表示するグラフ生成機能と、
を実現させることを特徴とするグラフ生成プログラム。
【請求項９】
前記グラフ生成機能は、
前記選択ノード特定データ生成機能で得られた前記選択ノード特定データに基づいて前記グラフ構造データから前記選択ノードに関連するデータを抽出し、その抽出した前記選択ノードに関連するデータに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記各選択ノードのレイアウト位置を算出する第一のレイアウト位置算出機能と、
前記第一のレイアウト位置算出機能で得られた前記各選択ノードのレイアウト位置に関するデータに基づいて、前記選択ノードの全体をレイアウトするのに必要な領域の形状・大きさを決定する領域決定機能と、
前記選択ノードの全体を、前記領域決定機能で決定された前記領域の形状・大きさと同じ形状・大きさを有する一つの仮ノードで置き換え、前記仮ノードの形状・大きさに関するデータ、前記仮ノードとの接続関係を示すデータ、及び、前記グラフ構造データのうち前記選択ノード以外の各ノードに関連するデータに基づいて、前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置を算出する第二のレイアウト位置算出機能と、
前記第二のレイアウト位置算出機能で得られた前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置に関するデータによって定められる前記仮ノード及び前記選択ノード以外の各ノードについての相対的な位置関係を維持するという条件、及び、前記仮ノードの代わりに前記選択ノードの全体をレイアウトするという条件の下で、前記グラフ構造データに基づいて前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記グラフ構造データに記述されている各ノードのレイアウト位置を算出する第三のレイアウト位置算出機能と、
前記第三のレイアウト位置算出機能で得られた各ノードのレイアウト位置に関するデータと前記グラフ構造データとに基づいてグラフを生成し、前記表示手段の画面に表示するグラフ表示処理機能と、
を備えることを特徴とする請求項８記載のグラフ生成プログラム。
【請求項１０】
前記記憶手段に記憶されている前記グラフ構造データは有向グラフに対するものであり、前記グラフレイアウトアルゴリズムは有向グラフの階層レイアウトを行うためのアルゴリズムであることを特徴とする請求項８又は９記載のグラフ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードとノード間を接続する複数のエッジとを含むグラフを生成して表示装置の画面に表示するグラフ生成装置、グラフ生成方法及びグラフ生成プログラムに関するものである。
【背景技術】
【０００２】
従来、複雑なデータを目視で確認し易くするためにチャートや表やグラフが用いられている。ここでいうグラフとは、データ同士の関連を可視化するための図のことであり、統計データを表示するための図、例えば、データの時間変化を示すための折れ線グラフ、各データの大小関係や各データが全体に対して占める割合を表すための円グラフや棒グラフとは区別される。また、システム開発においては、例えば、システムの設計情報や構造を可視化するためにクラス図が用いられ、システムプログラムのサブルーチン同士の呼び出し関係を示すためにコールグラフが用いられるが、これらのクラス図やコールグラフもここでいうグラフの一種である。
【０００３】
一般に、グラフは複数のノードと複数のエッジとによって構成される。ノードとはデータを表す点のことであるが、グラフ上では、大抵、大きさを有する図形で表現される。エッジはノード間を繋ぐ辺であり、グラフ上では直線又は折れ線等で表現される。グラフを生成する際には、ユーザがグラフ構造を把握しやすいように複数のノード及び複数のエッジをレイアウトすることが望まれる。このため、例えばエッジが向きを持つ有向グラフを生成する場合には、「エッジの単一方向性」、「エッジの長さの最短性」、「エッジの交差数の最小性」、「エッジの垂直性」、「ノードの一貫性」といった条件を可能な限り満たすように複数のノード及び複数のエッジをレイアウトする必要がある。ここで、「エッジの単一方向性」とは、各エッジが同じ方向を向いていることであり、「エッジの長さの最短性」とは、各エッジをその長さができるだけ短くなるように表現することであり、「エッジの交差数の最小性」とは、交差しているエッジの数ができるだけ少なくすることであり、「エッジの垂直性」とは、各エッジを折れ線ではなく直線で表現することであり、そして、「ノードの一貫性」とは、グラフ内において同一のノードが複数箇所に現れず、一箇所だけに現れるようにすることである。
【０００４】
小規模なグラフに対しては、上記の各条件を満たすように複数のノード及び複数のエッジを手作業でレイアウトすることは可能であるが、大多数のノード及び大多数のエッジを含む大規模なグラフに対しては、複数のノード及び複数のエッジを手作業でレイアウトするのは困難である。このため、現在では、コンピュータを利用して、上記の各条件をできるだけ満たすようにグラフのレイアウトを自動で行うことが提案されている（例えば、特許文献１，２参照。）。この場合、グラフのレイアウトは、グラフレイアウトアルゴリズムに従って行われる。このようなグラフレイアウトアルゴリズムとしては様々なものがあるが、特に、有向グラフの階層レイアウトの分野においては、Sugiyamaアルゴリズムが有名である（例えば、非特許文献１，２参照。）。以下、Sugiyamaアルゴリズムの概要について説明する。
【０００５】
Sugiyamaアルゴリズムは、有向グラフの階層レイアウトを行うためのアルゴリズムである。このSugiyamaアルゴリズムでは、有向グラフとして有向非循環グラフを想定している。図１８はSugiyamaアルゴリズムを説明するための図である。図１８に示すように、Sugiyamaアルゴリズムは、階層割当てを行う第一ステップ（階層割当てステップ）、ノード順序付けを行う第二ステップ（順序付けステップ）、位置座標付与を行う第三ステップ（座標付与ステップ）という三つのステップから構成される。
【０００６】
まず、第一ステップでは、グラフ構造データに基づいて、エッジの長さの最短性やノードの一貫性等の条件をできる限り満たすように、各ノードに対してそれを配置すべき階層を割り当てる。ここで、グラフ構造データには、各ノードについてその形状及び大きさを示すデータ（ノードデータ）と、各エッジについてノードとの接続関係を示すデータ（エッジデータ）とが含まれている。かかるグラフ構造データは予めコンピュータに入力されている。次に、第二ステップでは、各階層において、エッジの交差数の最小性の条件をできる限り満たすように、当該階層が割り当てられた各ノードに対してそれを配置する順序を決定する。そして、第三ステップでは、エッジの垂直性の条件をできる限り満たすように、各ノードの位置を決定し、当該ノードにその位置に関する情報（位置座標）を付与する。こうして、各ノードの位置座標が決定されると、コンピュータは、その各ノードの位置座標に関するデータとグラフ構造データとに基づいて有向グラフを生成し、表示装置の画面に表示することができる。
【０００７】
尚、Sugiyamaアルゴリズムでは、レイアウトを行う有向グラフとして有向非循環グラフを想定しているが、実際にレイアウトを行う有向グラフは有向循環グラフである場合もある。Sugiyamaアルゴリズムを用いて有向循環グラフのレイアウトを行う場合は、上記三つのステップによる処理を行う前に、循環削除(Cycle
Remove)処理を行うようにすればよい。この循環削除処理では、有向循環グラフについてのグラフ構造データにおいて、エッジを「反転」（エッジの始点と終点を入れ替えること）もしくは「削除」することにより、有向非循環グラフについてのグラフ構造データを作成する。そして、この作成したグラフ構造データに対して上記三つのステップによる処理を行い、グラフのレイアウトを行う。最後に、「反転」若しくは「削除」したエッジを元に戻すことにより、有向循環グラフが生成される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−３１２８０３号公報
【特許文献２】特開２００５−３２３１０９号公報
【非特許文献】
【０００９】
【非特許文献１】Kozo Sugiyama, Shojiro Tagawa andMitsuhiko Toda, “Methods for visual understanding of hierarchical systemstructures”, IEEE Trans. on Systems, Man, and Cybernetics, vol.SMC-11, no.2,pp.109-125, 1981.
【非特許文献２】Hugo A. D. do Nasciment and PeterEades, “User Hints for Directed Graph Drawing”, Graph Drawing, pp.205-219,2001.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、コンピュータを利用してグラフのレイアウトを行う場合、上述した各条件をできるだけ満たすようなグラフが生成されるため、その生成されたグラフは必ずしもユーザが意図したグラフにならないことが多い。例えば、コンピュータを利用してグラフのレイアウトを行うと、エッジの交差数が少なくなるようなグラフを作成することはできるが、ノードの持つ意味やユーザの考えをレイアウトに反映することができない。
【００１１】
また、グラフのレイアウトを行って得られたグラフがユーザの意図したレイアウトのグラフになっていない場合には、ユーザがグラフを手作業で修正することになる。しかし、例えば大規模なシステムのコールグラフでは、それに含まれるノードの数が数万個になることもあり、このようなコールグラフを手作業で修正するというのはほとんど不可能である。また、上記非特許文献２に記載されているように条件を課してグラフを自動で修正する方法も存在するが、このグラフの自動修正方法では、あくまで二つのノードに対してそれらが満たすべき条件を指定してグラフの修正を行うことができるだけであり、一度に多くのノードに対して同じ条件を課してグラフを修正することはできない。このため、この場合も、条件を課すノードが多ければ、グラフを修正するのは困難である。
【００１２】
本発明は上記事情に基づいてなされたものであり、ユーザが意図したレイアウトのグラフを容易に生成することができるグラフ生成装置、グラフ生成方法及びグラフ生成プログラムを提供することを目的とするものである。
【課題を解決するための手段】
【００１３】
上記の目的を達成するための本発明に係るグラフ生成装置は、複数のノードとノード間を接続する複数のエッジとを含むグラフを生成して表示手段の画面に表示するグラフ生成装置において、各ノードについてその形状及び大きさを示すデータと各エッジについてノードとの接続関係を示すデータとを含むグラフ構造データが記憶された記憶手段と、記憶手段に記憶されているグラフ構造データに基づいて表示手段の画面に表示された複数のノードの中から、ユーザが入力手段を用いて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択したときに、その選択した選択ノードを特定する選択ノード特定データを生成して記憶手段に記憶する選択ノード特定データ生成手段と、記憶手段に記憶されている選択ノード特定データによって特定される選択ノードの全体を一つの仮ノードで置き換えて、所定のグラフレイアウトアルゴリズムに従った処理を実行することにより、仮ノードと選択ノード以外の各ノードとのレイアウト位置を算出した後、その算出された仮ノードのレイアウト位置に、選択ノードの全体をレイアウトするという条件の下で、記憶手段に記憶されているグラフ構造データに基づいてグラフレイアウトアルゴリズムに従った処理を実行することにより、各ノードのレイアウト位置を算出し、その算出された結果に基づいてグラフを生成して、表示手段の画面に表示するグラフ生成手段と、を備えることを特徴とするものである。ここで、例えば、記憶手段に記憶されているグラフ構造データは有向グラフに対するものであり、グラフレイアウトアルゴリズムは有向グラフの階層レイアウトを行うためのアルゴリズムであってもよい。
【００１４】
ここで、グラフ生成手段は、選択ノード特定データ生成手段で得られた選択ノード特定データに基づいてグラフ構造データから選択ノードに関連するデータを抽出し、その抽出した選択ノードに関連するデータに基づいてグラフレイアウトアルゴリズムに従った処理を実行することにより、各選択ノードのレイアウト位置を算出する第一のレイアウト位置算出手段と、第一のレイアウト位置算出手段で得られた各選択ノードのレイアウト位置に関するデータに基づいて、選択ノードの全体をレイアウトするのに必要な領域の形状・大きさを決定する領域決定手段と、選択ノードの全体を、領域決定手段で決定された領域の形状・大きさと同じ形状・大きさを有する一つの仮ノードで置き換え、仮ノードの形状・大きさに関するデータ、仮ノードとの接続関係を示すデータ、及び、前記グラフ構造データのうち前記選択ノード以外の各ノードに関連するデータに基づいて、前記グラフレイアウトアルゴリズムに従った処理を実行することにより、前記仮ノードと前記選択ノード以外の各ノードとのレイアウト位置を算出する第二のレイアウト位置算出手段と、第二のレイアウト位置算出手段で得られた仮ノードと選択ノード以外の各ノードとのレイアウト位置に関するデータによって定められる仮ノード及び選択ノード以外の各ノードについての相対的な位置関係を維持するという条件、及び、仮ノードの代わりに選択ノードの全体をレイアウトするという条件の下で、グラフ構造データに基づいてグラフレイアウトアルゴリズムに従った処理を実行することにより、グラフ構造データに記述されている各ノードのレイアウト位置を算出する第三のレイアウト位置算出手段と、第三のレイアウト位置算出手段で得られた各ノードのレイアウト位置に関するデータとグラフ構造データとに基づいてグラフを生成し、表示手段の画面に表示するグラフ表示処理手段と、を有することが望ましい。
【００１５】
上記の構成により、本発明に係るグラフ生成装置は、入力手段を用いて選択された選択ノードの全体を一つの仮ノードで置き換えて、仮ノードと選択ノード以外の各ノードとについてのレイアウト位置を算出した後、その算出された仮ノードのレイアウト位置に、選択ノードの全体をレイアウトするという条件の下に、グラフ構造データに基づいて所定のグラフレイアウトアルゴリズムに従った処理を実行して、グラフのレイアウトを行う。このため、グラフ上には、選択ノードの全体が互いに近接した位置にレイアウトされるので、ユーザが意図したレイアウトのグラフを容易に生成することができる。
【００１６】
また、本発明に係るグラフ生成装置は、グラフ構造データに基づいてグラフレイアウトアルゴリズムに従った処理を実行することによりグラフを生成し、表示手段の画面に表示する基本グラフ生成手段を備え、選択ノード特定データ生成手段は、基本グラフ生成手段によって表示手段の画面に表示されたグラフにおいて、ユーザが入力手段を用いて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択したときに、その選択した選択ノードを特定する選択ノード特定データを生成することが望ましい。これにより、ユーザは表示手段の画面に表示されたグラフを見ながら、そのグラフに含まれるノードの中から所望のノードを選択することができるので、選択ノードの選択を容易に行うことができる。
【００１７】
また、上記の目的を達成するための本発明に係るグラフ生成方法は、コンピュータを利用して、複数のノードとノード間を接続する複数のエッジとを含むグラフを生成してコンピュータの表示手段の画面に表示するグラフ生成方法において、コンピュータの記憶手段に記憶されている、各ノードについてその形状及び大きさを示すデータと各エッジについてノードとの接続関係を示すデータとを含むグラフ構造データに基づいて表示手段の画面に表示された複数のノードの中から、ユーザがコンピュータの入力手段を用いて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択したときに、コンピュータの制御手段が、その選択した選択ノードを特定する選択ノード特定データを生成して記憶手段に記憶する選択ノード特定データ生成ステップと、制御手段が、記憶手段に記憶されている選択ノード特定データによって特定される選択ノードの全体を一つの仮ノードで置き換えて、所定のグラフレイアウトアルゴリズムに従った処理を実行することにより、仮ノードと選択ノード以外の各ノードとのレイアウト位置を算出した後、その算出された仮ノードのレイアウト位置に、選択ノードの全体をレイアウトするという条件の下で、記憶手段に記憶されているグラフ構造データに基づいてグラフレイアウトアルゴリズムに従った処理を実行することにより、各ノードのレイアウト位置を算出し、その算出された結果に基づいてグラフを生成して、表示手段の画面に表示するグラフ生成ステップと、を具備することを特徴とするものである。ここで、例えば、記憶手段に記憶されているグラフ構造データは有向グラフに対するものであり、グラフレイアウトアルゴリズムは有向グラフの階層レイアウトを行うためのアルゴリズムであってもよい。
【００１８】
ここで、グラフ生成ステップは、制御手段が、選択ノード特定データ生成ステップで得られた選択ノード特定データに基づいてグラフ構造データから選択ノードに関連するデータを抽出し、その抽出した選択ノードに関連するデータに基づいてグラフレイアウトアルゴリズムに従った処理を実行することにより、各選択ノードのレイアウト位置を算出する第一ステップと、制御手段が、第一ステップで得られた各選択ノードのレイアウト位置に関するデータに基づいて、選択ノードの全体をレイアウトするのに必要な領域の形状・大きさを決定する第二ステップと、制御手段が、選択ノードの全体を、第二ステップで決定された領域の形状・大きさと同じ形状・大きさを有する一つの仮ノードで置き換え、仮ノードの形状・大きさに関するデータ、仮ノードとの接続関係を示すデータ、及び、グラフ構造データのうち選択ノード以外の各ノードに関連するデータに基づいて、グラフレイアウトアルゴリズムに従った処理を実行することにより、仮ノードと選択ノード以外の各ノードとのレイアウト位置を算出する第三ステップと、制御手段が、第三ステップで得られた仮ノードと選択ノード以外の各ノードとのレイアウト位置に関するデータによって定められる仮ノード及び選択ノード以外の各ノードについての相対的な位置関係を維持するという条件、及び、仮ノードの代わりに選択ノードの全体をレイアウトするという条件の下で、グラフ構造データに基づいてグラフレイアウトアルゴリズムに従った処理を実行することにより、グラフ構造データに記述されている各ノードのレイアウト位置を算出する第四ステップと、制御手段が、第四ステップで得られた各ノードのレイアウト位置に関するデータとグラフ構造データとに基づいてグラフを生成し、表示手段の画面に表示する第五ステップと、を備えることが望ましい。
【００１９】
本発明に係るグラフ生成方法では、コンピュータの制御手段が、入力手段を用いて選択された選択ノードの全体を一つの仮ノードで置き換えて、仮ノードと選択ノード以外の各ノードとについてのレイアウト位置を算出した後、その算出された仮ノードのレイアウト位置に、選択ノードの全体をレイアウトするという条件の下に、グラフ構造データに基づいて所定のグラフレイアウトアルゴリズムに従った処理を実行して、グラフのレイアウトを行う。このため、グラフ上には、選択ノードの全体が互いに近接した位置にレイアウトされるので、ユーザが意図したレイアウトのグラフを容易に生成することができる。
【００２０】
更に、上記の目的を達成するための本発明に係るグラフ生成プログラムは、コンピュータを利用して、複数のノードとノード間を接続する複数のエッジとを含むグラフを生成してコンピュータの表示手段の画面に表示するためのグラフ生成プログラムにおいて、コンピュータに、コンピュータの記憶手段に記憶されている、各ノードについてその形状及び大きさを示すデータと各エッジについてノードとの接続関係を示すデータとを含むグラフ構造データに基づいて表示手段の画面に表示された複数のノードの中から、ユーザがコンピュータの入力手段を用いて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択したときに、その選択した選択ノードを特定する選択ノード特定データを生成して記憶手段に記憶する選択ノード特定データ生成機能と、記憶手段に記憶されている選択ノード特定データによって特定される選択ノードの全体を一つの仮ノードで置き換えて、所定のグラフレイアウトアルゴリズムに従った処理を実行することにより、仮ノードと選択ノード以外の各ノードとのレイアウト位置を算出した後、その算出された仮ノードのレイアウト位置に、選択ノードの全体をレイアウトするという条件の下で、記憶手段に記憶されているグラフ構造データに基づいてグラフレイアウトアルゴリズムに従った処理を実行することにより、各ノードのレイアウト位置を算出し、その算出された結果に基づいてグラフを生成して、表示手段の画面に表示するグラフ生成機能と、を実現させることを特徴とするものである。ここで、例えば、記憶手段に記憶されているグラフ構造データは有向グラフに対するものであり、グラフレイアウトアルゴリズムは有向グラフの階層レイアウトを行うためのアルゴリズムであってもよい。
【００２１】
ここで、グラフ生成機能は、選択ノード特定データ生成機能で得られた選択ノード特定データに基づいてグラフ構造データから選択ノードに関連するデータを抽出し、その抽出した選択ノードに関連するデータに基づいてグラフレイアウトアルゴリズムに従った処理を実行することにより、各選択ノードのレイアウト位置を算出する第一のレイアウト位置算出機能と、第一のレイアウト位置算出機能で得られた各選択ノードのレイアウト位置に関するデータに基づいて、選択ノードの全体をレイアウトするのに必要な領域の形状・大きさを決定する領域決定機能と、選択ノードの全体を、領域決定機能で決定された領域の形状・大きさと同じ形状・大きさを有する一つの仮ノードで置き換え、仮ノードの形状・大きさに関するデータ、仮ノードとの接続関係を示すデータ、及び、グラフ構造データのうち選択ノード以外の各ノードに関連するデータに基づいて、グラフレイアウトアルゴリズムに従った処理を実行することにより、仮ノードと選択ノード以外の各ノードとのレイアウト位置を算出する第二のレイアウト位置算出機能と、第二のレイアウト位置算出機能で得られた仮ノードと選択ノード以外の各ノードとのレイアウト位置に関するデータによって定められる仮ノード及び選択ノード以外の各ノードについての相対的な位置関係を維持するという条件、及び、仮ノードの代わりに選択ノードの全体をレイアウトするという条件の下で、グラフ構造データに基づいてグラフレイアウトアルゴリズムに従った処理を実行することにより、グラフ構造データに記述されている各ノードのレイアウト位置を算出する第三のレイアウト位置算出機能と、第三のレイアウト位置算出機能で得られた各ノードのレイアウト位置に関するデータとグラフ構造データとに基づいてグラフを生成し、表示手段の画面に表示するグラフ表示処理機能と、を備えることが望ましい。
【００２２】
本発明に係るグラフ生成プログラムをコンピュータに適用すると、このコンピュータは、入力手段を用いて選択された選択ノードの全体を一つの仮ノードで置き換えて、仮ノードと選択ノード以外の各ノードとについてのレイアウト位置を算出した後、その算出された仮ノードのレイアウト位置に、選択ノードの全体をレイアウトするという条件の下に、グラフ構造データに基づいて所定のグラフレイアウトアルゴリズムに従った処理を実行して、グラフのレイアウトを行う。このため、グラフ上には、選択ノードの全体が互いに近接した位置にレイアウトされるので、ユーザが意図したレイアウトのグラフを容易に生成することができる。
【発明の効果】
【００２３】
本発明に係るグラフ生成装置、グラフ生成方法及びグラフ生成プログラムによれば、グラフ上には、ユーザが入力手段を用いて選択した選択ノードの全体が互いに近接した位置にレイアウトされるので、ユーザが意図したレイアウトのグラフを容易に生成することができる。
【図面の簡単な説明】
【００２４】
【図１】図１は本発明の一実施形態であるグラフ生成装置の概略ブロック図である。
【図２】図２はグラフ構造データの一例を示す図である。
【図３】図３は本実施形態のグラフ生成装置においてグラフを生成して表示装置の画面に表示する処理の手順を説明するためのフローチャートである。
【図４】図４は第一のグラフ生成手段によって修正された修正エッジデータの例を示す図である。
【図５】図５は第一のグラフ生成手段によって生成されるレイアウト元データの例を示す図である。
【図６】図６は図５に示すレイアウト元データに対応する基本グラフを示す図である。
【図７】図７（ａ）はグラフ構造データのうち選択ノードに関連するデータを示す図、図７（ｂ）は第一のレイアウト位置算出手段によって生成される、選択ノードをレイアウトするためのレイアウト元データの例を示す図である。
【図８】図８は図７（ｂ）に示すレイアウト元データに対応するグラフを示す図である。
【図９】図９は選択ノードを一つの仮ノードで置き換えた場合のグラフ構造データを示す図である。
【図１０】図１０は第二のレイアウト位置算出手段によって生成される、仮ノードと選択ノード以外の各ノードとをレイアウトするためのレイアウト元データの例を示す図である。
【図１１】図１１は図１０に示すレイアウト元データに対応するグラフを示す図である。
【図１２】図１２（ａ）は第三のレイアウト位置算出手段が階層割当てステップに従った処理を行うことによって決定された各ノードの階層を示す図、図１２（ｂ）は第三のレイアウト位置算出手段が順序付けステップに従った処理を行うことによって決定された各ノードの階層及び階層内順序を示す図である。
【図１３】図１３は第三のレイアウト位置算出手段によって生成される、各ノードをレイアウトするためのレイアウト元データの例を示す図である。
【図１４】図１４は図１３に示すレイアウト元データに対応するグラフを示す図である。
【図１５】図１５は仮ノードが中間階層に配置される場合のグラフ生成処理の概要を説明するための図である。
【図１６】図１６は仮ノードが中間階層に配置される場合のグラフ生成処理の概要を説明するための図である。
【図１７】図１７は仮ノードが中間階層に配置される場合のグラフ生成処理の概要を説明するための図である。
【図１８】図１８はSugiyamaアルゴリズムを説明するための図である。
【発明を実施するための形態】
【００２５】
以下に、図面を参照して、本願に係る発明を実施するための形態について説明する。図１は本発明の一実施形態であるグラフ生成装置の概略ブロック図である。
【００２６】
本実施形態のグラフ生成装置は、複数のノードとノード間を接続する複数のエッジとを含むグラフを生成して画面に表示するものであり、図１に示すように、入力装置１０と、表示装置２０と、ＲＯＭ３０と、ＲＡＭ４０と、制御部５０とを備える。かかるグラフ生成装置は、例えばパーソナルコンピュータにより実現される。
【００２７】
入力装置（入力手段）１０は、例えば、各種の指示やデータを入力するものである。この入力装置１０としては、キーボードやマウス等が用いられる。例えば、ユーザは入力装置１０を用いて、グラフを生成するのに必要なグラフ構造データを入力する。また、この入力装置１０は、表示装置２０の画面に表示された、グラフ構造データに記述されている複数のノードの中から、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択するための選択手段として用いられる。表示装置（表示手段）２０は、制御部５０によって生成されたグラフを表示するものである。
【００２８】
ＲＡＭ（記憶手段）４０には、各種のデータ、例えば、入力装置１０を用いて入力されたグラフ構造データや、入力装置１０を用いて選択された選択ノードを特定するデータ等が記憶される。本実施形態では、グラフ構造データは、有向非循環グラフに対するものである場合について説明する。図２はグラフ構造データの一例を示す図である。かかるグラフ構造データには、図２に示すように、ノードデータと、エッジデータとが含まれる。ノードデータは、各ノードについてその形状及び大きさ（図形定義情報）を示すものである。例えば、グラフ上においてあるノードを円で表示する場合には、当該ノードについての図形定義情報には、当該ノードの形状が円である旨の内容とその円の半径とが含まれる。また、あるノードを長方形で表示する場合には、当該ノードについての図形定義情報には、当該ノードの形状が長方形である旨の内容とその長方形の縦の長さ及び横の長さとが含まれる。エッジデータは、各エッジについてノードとの接続関係を示すものである。有向グラフにおけるエッジは向きを持っており、この向きはエッジの始点から終点への向きとして特定される。具体的に、各エッジについてのエッジデータには、当該エッジの始点に接続されるノード（始点ノード）とその終点に接続されるノード（終点ノード）とを特定するデータが含まれる。
【００２９】
ＲＯＭ３０には、制御部５０に所定の処理を実行させるための各種のプログラムが記憶されている。例えば、所定のグラフレイアウトアルゴリズムに従った処理を行うことにより各ノードのレイアウト位置を算出するためのプログラム、グラフ構造データ等に基づいてグラフを生成するプログラム、その生成したグラフを表示装置２０の画面に表示するプログラム等がＲＯＭ３０に記憶されている。ここで、本実施形態では、グラフ構造データが有向グラフに対するものであるので、上記グラフレイアウトアルゴリズムとしては、有向グラフの階層レイアウトを行うためのアルゴリズム、具体的にはSugiyamaアルゴリズムが用いられる。
【００３０】
制御部（制御手段）５０は、本装置の各部を統括して制御するものである。この制御部５０は、図１に示すように、第一のグラフ生成手段５１と、選択ノード特定データ生成手段５２と、第二のグラフ生成手段５３とを備える。
【００３１】
第一のグラフ生成手段（基本グラフ生成手段）５１は、ユーザが入力装置１０を用いて所定の指示を入力したときに、ＲＡＭ４０に記憶されているグラフ構造データに基づいてSugiyamaアルゴリズムに従った処理を実行することにより、グラフ構造データに記述されている各ノードのレイアウト位置を算出し、この算出された各ノードのレイアウト位置に関するデータとグラフ構造データとに基づいてグラフを生成して、表示装置２０の画面に表示するものである。ここで、第一のグラフ生成手段５１によって表示装置２０の画面に表示されるグラフは、ＲＡＭ４０に記憶されているグラフ構造データをそのまま用いてSugiyamaアルゴリズムに従った処理を適用することによりレイアウトされたものであるので、必ずしもユーザの意図したレイアウトのグラフになっていない。以下では、この第一のグラフ生成手段５１によって生成されるグラフのことを特に「基本グラフ」とも称することにする。
【００３２】
選択ノード特定データ生成手段５２は、表示装置２０の画面に表示された基本グラフにおいて、ユーザが入力装置１０を用いて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択したときに、その選択した選択ノードを特定するデータ（選択ノード特定データ）を生成するものである。ユーザは、基本グラフを見て、自身の意図したレイアウトがなされていないときに、入力装置１０を用いて、その基本グラフにおいて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択することになる。選択ノード特定データ生成手段５２は、こうして選択された選択ノードを特定する選択ノード特定データを生成し、ＲＡＭ４０に一時記憶する。
【００３３】
第二のグラフ生成手段５３は、ＲＡＭ４０に記憶されている選択ノード特定データによって特定される選択ノードの全体を一つの仮ノードで置き換えて、Sugiyamaアルゴリズムに従った処理を実行することにより、仮ノードと選択ノード以外の各ノードとのレイアウト位置を算出した後、その算出された仮ノードのレイアウト位置に、選択ノードの全体をレイアウトするという条件の下で、ＲＡＭ４０に記憶されているグラフ構造データに基づいてSugiyamaアルゴリズムに従った処理を実行することにより、各ノードのレイアウト位置を算出し、その算出された結果に基づいてグラフを生成して、表示装置２０の画面に表示するものである。具体的に、この第二のグラフ生成手段５３は、図１に示すように、第一のレイアウト位置算出手段５３１と、領域決定手段５３２と、第二のレイアウト位置算出手段５３３と、第三のレイアウト位置算出手段５３４と、グラフ表示処理手段５３５とを有する。
【００３４】
第一のレイアウト位置算出手段５３１は、選択ノード特定データ生成手段５２で得られた選択ノード特定データに基づいてグラフ構造データから選択ノードに関連するデータを抽出し、その抽出した選択ノードに関連するデータに基づいてSugiyamaアルゴリズムに従った処理を実行することにより、各選択ノードのレイアウト位置を算出するものである。ここで、「選択ノードに関連するデータ」とは、各選択ノードについてのノードデータ、及び、始点と終点とがともに選択ノードと接続されているエッジについてのエッジデータのことである。したがって、第一のレイアウト位置算出手段５３１で算出される各選択ノードのレイアウト位置は、選択ノードだけをレイアウトすると仮定した場合におけるノードのレイアウト位置である。第一のレイアウト位置算出手段５３１によって算出された各選択ノードのレイアウト位置に関するデータはＲＡＭ４０に一時記憶される。
【００３５】
領域決定手段５３２は、第一のレイアウト位置算出手段５３１で得られた各選択ノードのレイアウト位置に関するデータに基づいて、選択ノードの全体をレイアウトするのに必要な領域の形状・大きさを決定するものである。特に、本実施形態では、領域決定手段５３２は、選択ノードの全体をレイアウトするのに必要な領域として選択ノードの全体を含む最小の大きさの長方形の領域を決定することにしている。そして、領域決定手段５３２は、その決定した領域についてのデータとして、当該領域の形状が長方形である旨の内容とその長方形の縦の長さ及び横の長さとを含むものを生成し、ＲＡＭ４０に一時記憶する。
【００３６】
第二のレイアウト位置算出手段５３３は、選択ノードの全体を、領域決定手段５３２で決定された領域の形状・大きさと同じ形状・大きさを有する一つの仮ノードで置き換え、仮ノードの形状・大きさに関するデータ、仮ノードとの接続関係を示すデータ、及び、グラフ構造データのうち選択ノード以外の各ノードに関連するデータに基づいて、Sugiyamaアルゴリズムに従った処理を実行することにより、仮ノードと選択ノード以外の各ノードとのレイアウト位置を算出するものである。ここで、「仮ノードの形状・大きさに関するデータ」としては、領域決定手段５３２で得られた領域についてのデータを用いることができる。また、「仮ノードとの接続関係を示すデータ」とは、始点及び終点のうち少なくとも一方が選択ノードと接続されているエッジについてのエッジデータのことであり、かかるデータは、選択ノードを特定するデータ及びグラフ構造データに基づいて生成される。更に、「グラフ構造データのうち選択ノード以外の各ノードに関連するデータ」とは、選択ノード以外の各ノードについてのノードデータ、及び、始点と終点とがともに選択ノードと接続されていないエッジについてのエッジデータのことである。第二のレイアウト位置算出手段５３３によって算出された仮ノードと選択ノード以外の各ノードとのレイアウト位置に関するデータはＲＡＭ４０に一時記憶される。
【００３７】
第三のレイアウト位置算出手段５３４は、第二のレイアウト位置算出手段５３３で得られた仮ノードと選択ノード以外の各ノードとのレイアウト位置に関するデータによって定められる仮ノード及び選択ノード以外の各ノードについての相対的な位置関係を維持するという条件、及び、仮ノードの代わりに選択ノードの全体をレイアウトするという条件の下で、グラフ構造データに基づいてSugiyamaアルゴリズムに従った処理を実行することにより、グラフ構造データに記述されている各ノードのレイアウト位置を算出するものである。したがって、第三のレイアウト位置算出手段５３４によって算出された各ノードのレイアウト位置に関するデータの内容は、選択ノードの全体を互いに近接した位置にレイアウトするという内容になっている。第三のレイアウト位置算出手段５３４によって算出された各ノードとのレイアウト位置に関するデータはＲＡＭ４０に一時記憶される。
【００３８】
グラフ表示処理手段５３５は、第三のレイアウト位置算出手段５３４で得られた各ノードのレイアウト位置に関するデータとグラフ構造データとに基づいてグラフを生成し、表示装置２０の画面に表示するものである。このとき、表示装置２０の画面に表示されるグラフ上には、選択ノードの全体が互いに近接した位置にレイアウトされており、これにより、ユーザが意図したレイアウトのグラフが生成される。
【００３９】
次に、本実施形態のグラフ生成装置においてグラフを生成して表示装置２０の画面に表示する処理の手順について説明する。
【００４０】
図３は本実施形態のグラフ生成装置においてグラフを生成して表示装置２０の画面に表示する処理の手順を説明するためのフローチャートである。以下では、図２に示すグラフ構造データがＲＡＭ４０に記憶されており、このグラフ構造データに対するグラフを生成する場合を説明する。このグラフ構造データのノードデータによれば、グラフには１１個のノード１〜１１が含まれ、いずれのノード１〜１１の形状も半径ｒの円である。また、そのグラフ構造データのエッジデータによれば、グラフには９つのエッジｅ１〜ｅ９が含まれている。
【００４１】
まず、ユーザは、入力装置１０を用いてグラフを生成する旨の指示を入力する。すると、制御部５０はグラフ生成処理を開始する。この処理が開始されると、最初に、制御部５０の第一のグラフ生成手段５１は、ＲＡＭ４０に記憶されているグラフ構造データに基づいてSugiyamaアルゴリズムに従った処理を実行することにより、グラフ構造データに記述されている各ノードのレイアウト位置を算出する。そして、この算出した各ノードのレイアウト位置に関するデータとグラフ構造データとに基づいて基本グラフを生成して表示装置２０の画面に表示する（Ｓ１）。
【００４２】
いま、第一のグラフ生成手段５１が行うSugiyamaアルゴリズムに従った処理の内容を詳しく説明する。Sugiyamaアルゴリズムは、上述したように、第一ステップとしての階層割当てステップ、第二ステップとしての順序付けステップ、第三ステップとしての座標付与ステップからなる。まず、第一のグラフ生成手段５１は、Sugiyamaアルゴリズムにおける階層割当てステップに従った処理を行う。すなわち、第一のグラフ生成手段５１は、図２に示すグラフ構造データのエッジデータに基づいて、エッジとノードとの接続関係をチェックした後、エッジの長さの最短性やノードの一貫性等の条件をできる限り満たすように、各ノードに対してそれを配置すべき階層を割り当てる。
【００４３】
具体的に、この階層の割当ては次のようにして行われる。図２に示すエッジデータによれば、ノード１は、いずれのエッジの終点にも接続されていないので、最上位の第１階層に割り当てられることになる。このノード１はエッジｅ１の始点にのみ接続されている。そして、エッジｅ１の終点にはノード３が接続されているが、ノード３は、エッジｅ１の終点を除き、いずれのエッジの終点にも接続されていないので、ノード１よりも一つ下位の階層、すなわち第２階層に割り当てられることになる。また、ノード３はエッジｅ２の始点とエッジｅ３の始点に接続されている。このエッジｅ２の終点にはノード５が接続されているが、ノード５は、エッジｅ２の終点を除き、いずれのエッジの終点にも接続されていないので、ノード３よりも一つ下位の階層、すなわち第３階層に割り当てられることになる。一方、エッジｅ３の終点にはノード６が接続されているが、ノード６は、エッジｅ３の終点を除き、いずれのエッジの終点にも接続されていないので、第３階層に割り当てられることになる。
【００４４】
また、ノード２は、いずれのエッジの終点にも接続されていないので、第１階層に割り当てられることになる。このノード２はエッジｅ５の始点にのみ接続され、エッジｅ５の終点にはノード４が接続されているが、ノード４は、エッジｅ５の終点を除き、いずれのエッジの終点にも接続されていないので、第２階層に割り当てられることになる。また、ノード４はエッジｅ６の始点に接続され、エッジｅ６の終点にはノード７が接続されているが、ノード７は、エッジｅ６の終点を除き、いずれのエッジの終点にも接続されていないので、第３階層に割り当てられることになる。
【００４５】
更に、ノード９は、いずれのエッジの終点にも接続されていないので、第１階層に割り当てられることになる。このノード９はエッジｅ８の始点にのみ接続され、このエッジｅ８の終点にはノード１０が接続されているが、ノード１０は、エッジｅ８の終点を除き、いずれのエッジの終点にも接続されていないので、第２階層に割り当てられることになる。そして、ノード１０はエッジｅ９の始点に接続され、このエッジｅ９の終点にはノード１１が接続されているが、ノード１１は、エッジｅ９の終点を除き、いずれのエッジの終点にも接続されていないので、第３階層に割り当てられることになる。
【００４６】
また、ノード８は、エッジｅ４の終点及びエッジｅ７の終点に接続されている。ここで、エッジｅ４の始点には第３階層に割り当てられるノード５が接続され、エッジｅ７の始点には第２階層に割り当てられるノード４が接続されている。このため、ノード８は、ノード５及びノード４のうちより下位の階層に割り当てられているノードよりも一つ下位の階層、すなわち第４階層に割り当てられることになる。こうして、各ノードに対してそれを配置すべき階層が決定される。
【００４７】
次に、第一のグラフ生成手段５１は、Sugiyamaアルゴリズムにおける順序付けステップに従った処理を行う。すなわち、第一のグラフ生成手段５１は、各階層において、エッジの交差数の最小性等の条件をできる限り満たすように、当該階層が割り当てられた各ノードに対してそれを配置する順序を決定する。ここでは、各階層においてノードを配置する順序を、全てのノードを一列に並べたときに当該ノードが左側から何番目に配置されているかによって表すことにする。特に、第一のグラフ生成手段５１は、あるエッジについてその始点に接続されるノードに割り当てられた階層とその終点に接続されるノードに割り当てられた階層との間に１以上の階層が存在する場合には、その存在する階層の各々に、当該エッジの通過点を表すためにダミーのノードを追加する。ダミーノードが追加された場合、第一のグラフ生成手段５１は、ダミーノードが追加された各階層において、その追加されたダミーのノードを通常のノードに加えた全体のノードの各々に対して順序付けを行う。
【００４８】
本実施形態では、エッジｅ７についてはその始点にノード４が接続され、その終点にノード８が接続されるが、上記の階層割当てステップに従った処理の結果、ノード４は第２階層に割り当てられ、ノード８は第４階層に割り当てられている。このため、第３階層にはダミーのノードｄ１が追加されることになる。また、このダミーノードｄ１の追加により、エッジｅ７は、ノード４とダミーノードｄ１とを接続するエッジｅ７’と、ダミーノードｄ１とノード８とを接続するエッジｅ７”とに分けられることになる。ここで、第一のグラフ生成手段５１は、ダミーノードを追加したときに、そのダミーノードの追加に応じた修正をエッジデータに加え、その修正を加えたエッジデータを修正エッジデータとしてＲＡＭ４０に一時記憶しておく。図４に第一のグラフ生成手段５１によって修正された修正エッジデータの例を示す。その後、第一のグラフ生成手段５１は、各階層においてノードの順序付けを行う。その結果、例えば、第１階層においては、ノード９を１番目に、ノード２を２番目に、ノード１を３番目に配置することが決定され、第２階層においては、ノード１０を１番目に、ノード４を２番目に、ノード３を３番目に配置することが決定され、第３階層においては、ノード１１を１番目に、ダミーノードｄ１を２番目に、ノード７を３番目に、ノード６を４番目に、ノード５を５番目に配置することが決定される。そして、第４階層にはノード８が一つだけ配置されるので、ノード８を１番目に配置することが決定される。
【００４９】
次に、第一のグラフ生成手段５１は、Sugiyamaアルゴリズムにおける座標付与ステップに従った処理を行う。すなわち、第一のグラフ生成手段５１は、エッジの垂直性の条件をできる限り満たすように、各ノードの位置を決定し、当該ノードにレイアウト位置座標（レイアウト位置に関するデータ）を付与する。ここで、ダミーノードが存在していれば、ダミーノードについてもそのレイアウト位置座標が付与される。また、レイアウト位置座標としては、例えば、ノードの形状が円である場合には中心の位置座標を用いることができ、ノードの形状が長方形である場合には例えば４つの頂点のうちいずれかの頂点（例えば左上の頂点）の位置座標を用いることができる。更に、ダミーノードについてはその形状が所定の図形、例えば点とすることが予め定められており、ダミーノードについてのレイアウト位置座標としては、当該点の位置座標を用いることができる。
【００５０】
こうして、第一のグラフ生成手段５１は、グラフ構造データに基づいてSugiyamaアルゴリズムに従った処理を実行することにより、グラフ生成に利用する中間的なデータとしてのレイアウト元データを生成する。レイアウト元データには、Sugiyamaアルゴリズムに従った処理で得られたデータが含まれている。図５は第一のグラフ生成手段５１によって生成されるレイアウト元データの例を示す図である。具体的に、レイアウト元データには、図５に示すように、各ノードについて、当該ノードに割り当てられた階層、階層内で当該ノードが配置される順序（階層内順序）、レイアウト位置座標、図形定義情報といった各データが含まれている。但し、ダミーノードの形状・大きさは予め定められているため、レイアウト元データにはダミーノードの図形定義情報は示されていない。ところで、実際、グラフ生成のためには、各ノードのレイアウト位置座標とグラフ構造データとがあればよい。本実施形態では、本発明の内容が容易に理解することができるように、レイアウト元データに、レイアウト位置座標の他に、階層、階層内順序、及び、図形定義情報をも含めている。したがって、レイアウト元データには、少なくとも各ノードのレイアウト位置座標が含まれていればよい。
【００５１】
その後、第一のグラフ生成手段５１は、図５に示すレイアウト元データとＲＡＭ４０に記憶されているグラフ構造データとに基づいて基本グラフを生成し、表示装置２０の画面に表示する。図６に図５に示すレイアウト元データに対応する基本グラフを示す。ここで、グラフを生成する際、ノード上におけるエッジとの接続点は予め定められている。特に、ダミーノードについては、それを表す図形である点が接続点である。そして、ある階層のノードとそれより一つ下位の階層のノードとがエッジで接続される場合には、これら二つのノードの接続点間を矢印付きの直線で結ぶことにより、グラフを生成している。尚、本実施形態では、上述したようにダミーノードを点で表すことにしているが、図６のグラフでは、ダミーノードの存在を明確に示すため、ダミーノードを黒丸（小さな円）で表現している。また、他のグラフにおいても同様に、ダミーノードを黒丸で表現することにする。
【００５２】
次に、ユーザは、表示装置２０の画面に表示された基本グラフを見て、その基本グラフが自分の意図したグラフになっているかどうかを判断する。ユーザの意図したグラフが生成されておらず、ユーザは、その基本グラフにおいていくつかのノードを互いに近接した位置にレイアウトしたい場合、それらのノードを選択することになる。例えば、図６に示す基本グラフにおいて、ノード５，８，１１が同じ種類のノードであるため、ユーザは、ノード５，８，１１を互いに近接した位置にレイアウトしたいと考えたとする。この場合、ユーザは、入力装置１０を用いて、ノード５，８，１１を選択した後、所定のメニュー画面を表示させて、そのメニュー画面に含まれる項目の中から、選択したノードを近接した位置にレイアウトする処理の実行を指示するための項目を選択する。すると、ユーザが選択したノード５，８，１１についてのデータと選択したノードを近接した位置にレイアウトする処理の実行を指示する命令が選択ノード特定データ生成手段５２に送られる。選択ノード特定データ生成手段５２は、この命令を受けると、基本グラフにおいて選択されたノード５，８，１１を選択ノードとして特定する選択ノード特定データを生成して、ＲＡＭ４０に一時記憶する（Ｓ２）。
【００５３】
こうして選択ノード特定データ生成手段５２により選択ノード特定データが生成されると、次に、制御部５０の第一のレイアウト位置算出手段５３１は、その生成された選択ノード特定データに基づいてグラフ構造データから選択ノード５，８，１１に関連するデータを抽出する。そして、その抽出した選択ノード５，８，１１に関連するデータに基づいてSugiyamaアルゴリズムに従った処理を実行することにより、各選択ノードのレイアウト位置を算出する（Ｓ３）。ここで、図７（ａ）にグラフ構造データのうち選択ノード５，８，１１に関連するデータを示す。すなわち、選択ノード５，８，１１に関連するデータは、選択ノード５，８，１１についてのノードデータと、始点と終点がともに選択ノードと接続されているエッジｅ４についてのエッジデータとからなる。
【００５４】
具体的に、まず、第一のレイアウト位置算出手段５３１は、図７（ａ）に示すデータに基づいてSugiyamaアルゴリズムにおける階層割当てステップに従った処理を行う。これにより、選択ノード５，１１を最上位の第１階層に配置し、選択ノード８を第２階層に配置することが決定される。次に、第一のレイアウト位置算出手段５３１は、Sugiyamaアルゴリズムにおける順序付けステップに従った処理を行う。これにより、第１階層においては、選択ノード１１を１番目に、選択ノード５を２番目に配置し、第２階層においては、選択ノード８を１番目に配置することが決定される。その後、第一のレイアウト位置算出手段５３１は、Sugiyamaアルゴリズムにおける座標付与ステップに従った処理を行い、各選択ノードのレイアウト位置座標を決定する。こうして、第一のレイアウト位置算出手段５３１による処理の結果、選択ノードをレイアウトするためのレイアウト元データが生成される。図７（ｂ）は第一のレイアウト位置算出手段５３１によって生成される、選択ノードをレイアウトするためのレイアウト元データの例を示す図である。また、図８に図７（ｂ）に示すレイアウト元データに対応するグラフを示す。尚、図８は図７（ｂ）の内容を説明するための図であり、実際にこの図８に示すグラフが表示装置２０の画面に表示されるわけではない。
【００５５】
次に、制御部５０の領域決定手段５３２は、第一のレイアウト位置算出手段５３１で得られた各選択ノード５，８，１１のレイアウト位置に関するデータに基づいて、選択ノード５，８，１１の全体をレイアウトするのに必要な領域の形状・大きさを決定する（Ｓ４）。例えば、領域決定手段５３２は、図８に示すグラフにおいて三つの選択ノード５，８，１１を包含する最小面積の長方形Ｒを当該領域の形状として決定し、その長方形Ｒの縦の長さａ及び横の長さｂを求める。こうして得られた領域についてのデータは、ＲＡＭ４０に一時記憶される。
【００５６】
尚、本実施形態では、領域決定手段５３２が、選択ノードの全体をレイアウトするのに必要な領域として選択ノードの全体を含む最小の大きさの長方形の領域を決定することにしているが、これは一例であって、一般に、領域決定手段５３２は、選択ノードの全体をレイアウトするのに必要な領域として必ずしも選択ノードの全体を含む最小の大きさの領域を決定する必要はない。また、領域の形状は長方形に限らず、円等、他の形状であってもよい。
【００５７】
次に、制御部５０の第二のレイアウト位置算出手段５３３は、選択ノード５，８，１１の全体を、領域決定手段５３２で決定された領域の形状・大きさと同じ形状・大きさを有する一つの仮ノード１２で置き換え、仮ノード１２の形状・大きさに関するデータ、仮ノード１２との接続関係を示すデータ、及び、グラフ構造データのうち選択ノード以外の各ノードに関連するデータに基づいて、Sugiyamaアルゴリズムに従った処理を実行することにより、仮ノード１２と選択ノード５，８，１１以外の各ノード１，２，３，４，６，７，９，１０とのレイアウト位置を算出する（Ｓ５）。ここで、仮ノード１２の形状・大きさに関するデータは、仮ノード１２についてのノードデータのことであり、その内容は、領域決定手段５３２で得られた領域についてのデータの内容と同じである。また、仮ノード１２との接続関係を示すデータは、始点及び終点のうち少なくとも一方が仮ノードと接続されているエッジについてのエッジデータのことであり、選択ノードを特定するデータ及びグラフ構造データに基づいて生成される。例えば、図２に示すグラフ構造データのエッジデータによれば、始点及び終点のうち少なくとも一方が選択ノード５，８，１１と接続されているエッジは、エッジｅ２，ｅ４，ｅ７，ｅ９である。この四つのエッジｅ２，ｅ４，ｅ７，ｅ９についてのエッジデータにおいて当該選択ノードを仮ノード１２に置き換えることにより得られるエッジデータが、仮ノード１２との接続関係を示すデータである。したがって、「仮ノード１２の形状・大きさに関するデータ」、「仮ノード１２との接続関係を示すデータ」、及び、「グラフ構造データのうち選択ノード以外の各ノードに関連するデータ」は全体として、選択ノード５，８，１１を一つの仮ノード１２で置き換え、仮ノード１２と各ノード１，２，３，４，６，７，９，１０とを含むグラフについてのグラフ構造データである。図９は選択ノード５，８，１１を一つの仮ノード１２で置き換えた場合のグラフ構造データを示す図である。尚、図２に示すグラフ構造データにおいて、エッジｅ４についてはその始点及び終点がともに選択ノードと接続されているので、エッジｅ４についてのエッジデータは、図９に示すグラフ構造データには含まれていない。
【００５８】
具体的に、まず、第二のレイアウト位置算出手段５３３は、図９に示すデータに基づいてSugiyamaアルゴリズムにおける階層割当てステップに従った処理を行う。これにより、ノード１，２，９を第１階層に配置し、ノード３，４，１０を第２階層に配置し、ノード６，７及び仮ノード１２を第３階層に配置することが決定される。ここで、仮ノード１２は、第３階層及び第４階層の二つの階層にまたがって配置されるノードであると認識されている。一般に、仮ノードは一つの階層に収まって配置される場合もあるし、二つ以上の階層に跨って配置される場合もある。一つの階層に配置できるノードの最大の大きさは予め定められており、第二のレイアウト位置算出手段５３３は、今回配置する仮ノードの大きさを、一つの階層に配置できるノードの最大の大きさと比較することにより、当該仮ノードを何階層にまたがって配置するかを決定するのである。次に、第二のレイアウト位置算出手段５３３は、Sugiyamaアルゴリズムにおける順序付けステップに従った処理を行う。これにより、第１階層においては、ノード２を１番目に、ノード９を２番目に、ノード１を３番目に配置し、第２階層においては、ノード４を１番目に、ノード１０を２番目に、ノード３を３番目に配置し、第３階層においては、ノード７を１番目に、仮ノード１２を２番目に、ノード６を３番目に配置することが決定される。その後、第二のレイアウト位置算出手段５３３は、Sugiyamaアルゴリズムにおける座標付与ステップに従った処理を行い、仮ノード１２と各ノード１，２，３，４，６，７，９，１０とのレイアウト位置座標を決定する。こうして、第二のレイアウト位置算出手段５３３による処理の結果、仮ノード１２と各ノード１，２，３，４，６，７，９，１０とをレイアウトするためのレイアウト元データが生成される。図１０は第二のレイアウト位置算出手段５３３によって生成される、仮ノードと選択ノード以外の各ノードとをレイアウトするためのレイアウト元データの例を示す図である。また、図１１に図１０に示すレイアウト元データに対応するグラフを示す。図１１に示すグラフと図６に示す基本グラフとを比較すると、各ノード１，２，３，４，６，７，９，１０が割り当てられる階層は同じであるが、各階層におけるノードの配置順序が異なっている。これは、選択ノード５，８，１１を一つの仮ノード１２に置き換えて処理を行った結果である。尚、図１１は図１０の内容を説明するための図であり、実際にこの図１１に示すグラフが表示装置２０の画面に表示されるわけではない。
【００５９】
次に、制御部５０の第三のレイアウト位置算出手段５３４は、第二のレイアウト位置算出手段５３３で得られた仮ノード１２と選択ノード５，８，１１以外の各ノード１，２，３，４，６，７，９，１０とのレイアウト位置に関するデータによって定められる仮ノード１２及び選択ノード５，８，１１以外の各ノード１，２，３，４，６，７，９，１０についての相対的な位置関係を維持するという条件、及び、仮ノード１２の代わりに選択ノード５，８，１１の全体をレイアウトするという条件の下で、図２に示すグラフ構造データに基づいてSugiyamaアルゴリズムに従った処理を実行することにより、各ノード１〜１１のレイアウト位置を算出する（Ｓ６）。このように、上記条件を課すことにより、この第三のレイアウト位置算出手段５３４による処理では、図１０のレイアウト元データに示される各ノード１，２，３，４，６，７，９，１０の相対的な位置関係がそのまま維持されることになる。また、図１０のレイアウト元データに示される仮ノード１２及び選択ノード５，８，１１以外の各ノード１，２，３，４，６，７，９，１０についての相対的な位置関係が維持されるので、仮ノード１２の代わりに選択ノード５，８，１１の全体をレイアウトすると、選択ノード５，８，１１及び選択ノード５，８，１１以外の各ノード１，２，３，４，６，７，９，１０についての相対的な位置関係も、図１０のレイアウト元データに示される位置関係と同様の位置関係に保持されることになる。
【００６０】
具体的に、まず、第三のレイアウト位置算出手段５３４は、Sugiyamaアルゴリズムにおける階層割当てステップに従った処理を行う。この階層割当てステップに従った処理では、第二のレイアウト位置算出手段５３３で得られた結果及び第一のレイアウト位置算出手段５３で得られた結果を利用して、各ノード１〜１１に対してそれを配置すべき階層を割り当てる。第二のレイアウト位置算出手段５３３で得られた結果によって定められる仮ノード１２及び選択ノード５，８，１１以外の各ノード１，２，３，４，６，７，９，１０についての相対的な位置関係を維持するために、各ノード１，２，３，４，６，７，９，１０は、第二のレイアウト位置算出手段５３３で決定された階層と同じ階層に配置されることになる。すなわち、ノード１，２，９を第１階層に配置し、ノード３，４，１０を第２階層に配置し、ノード６，７を第３階層に配置することが決定される。また、仮ノード１２の代わりに選択ノード５，８，１１の全体をレイアウトするために、選択ノード５，８，１１は、仮ノード１２が配置される第３階層及び第４階層に配置されることになる。ここで、選択ノード５，８，１１についての相対的な階層関係は維持される。第一のレイアウト位置算出手段５３１で得られた結果によれば、選択ノード５，１１が最上位の階層に配置され、選択ノード８がその一つ下位の階層に配置されるので、選択ノード５，１１を第３階層に配置し、選択ノード８を第４階層に配置することが決定される。こうして第三のレイアウト位置算出手段５３４が階層割当てステップに従った処理を行うことによって決定された各ノードの階層を図１２（ａ）に示す。
【００６１】
次に、第三のレイアウト位置算出手段５３４は、Sugiyamaアルゴリズムにおける順序付けステップに従った処理を行う。この順序付けステップに従った処理でも、第二のレイアウト位置算出手段５３３で得られた結果及び第一のレイアウト位置算出手段５３１で得られた結果を利用して、各階層において、当該階層に割り当てられた各ノードに対してそれを配置する順序を決定する。第二のレイアウト位置算出手段５３３で得られた結果によって定められる仮ノード１２及び選択ノード５，８，１１以外の各ノード１，２，３，４，６，７，９，１０についての相対的な位置関係を維持するために、仮ノード１２が配置されていない第１階層及び第２階層においては、当該階層に割り当てられた各ノードに対してそれを配置する順序を変更しない。すなわち、第１階層においては、ノード２を１番目に、ノード９を２番目に、ノード１を３番目に配置し、第２階層においては、ノード４を１番目に、ノード１０を２番目に、ノード３を３番目に配置することが決定される。一方、仮ノード１２が配置された第３階層においては、ノード６，７と仮ノード１２に対応するノード５，１１との間の位置関係だけは変更しないようにする。すなわち、ノード６とノード７との間に、ノード５，１１が配置されるようにする。また、エッジｅ７についてはその始点にノード４が接続され、その終点にノード８が接続されるが、ノード４は第２階層に配置され、ノード８は第４階層に配置されるため、第３階層にはダミーのノードｄ１が追加される。そして、この第３階層において、エッジの単一方向性やエッジの交差数の最小性等の条件をできる限り満たすように、各ノード６，７，５，１１及びダミーノードｄ１に対してそれを配置する順序が決定される。例えば、第３階層においては、ノード７を１番目に、ダミーのノードｄ１を２番目に、ノード１１を３番目に、ノード５を４番目に、そして、ノード６を５番目に配置することが決定される。そして、このとき、第三のレイアウト位置算出手段５３４は、ダミーノードｄ１の追加に応じた修正をエッジデータに加え、その修正を加えたエッジデータを修正エッジデータとしてＲＡＭ４０に一時記憶しておく。この修正エッジデータは、図４に示すものと同じである。すなわち、その修正エッジデータには、エッジｅ７についてのエッジデータの代わりに、ノード４とダミーノードｄ１とを接続するエッジｅ７’についてのエッジデータと、ダミーノードｄ１とノード８とを接続するエッジｅ７”についてのエッジデータとが含まれている。更に、第４階層にはノード８が一つだけ配置されるので、ノード８を１番目に配置することが決定される。こうして第三のレイアウト位置算出手段５３４が順序付けステップに従った処理を行うことによって決定された各ノードの階層及び階層内順序を図１２（ｂ）に示す。
【００６２】
次に、第三のレイアウト位置算出手段５３４は、Sugiyamaアルゴリズムにおける座標付与ステップに従った処理を行う。すなわち、エッジの垂直性の条件をできる限り満たすように、ダミーノードを含む各ノードの位置を決定し、各ノードのレイアウト位置座標を算出する。こうして、第三のレイアウト位置算出手段５３４による処理の結果、各ノード１〜１１，ｄ１をレイアウトするためのレイアウト元データが生成される。図１３は第三のレイアウト位置算出手段５３４によって生成される、各ノード１〜１１，ｄ１をレイアウトするためのレイアウト元データの例を示す図である。図１３に示すレイアウト元データの内容については次のような特徴がある。すなわち、ノード間の相対的な位置関係は、図１０に示すレイアウト元データによって定められるノード間の相対的な位置関係と変わらないが、仮ノードの代わりに選択ノード５，８，１１の全体をレイアウトしたため、選択ノード５，８，１１のレイアウト位置に応じて、全てのノードの位置座標が、図１０に示すレイアウト元データにおけるものとは異なっている。また、選択ノード５，８，１１のうち選択ノード８については、エッジの垂直性の条件を考慮した結果、選択ノード５，１１に対する選択ノード８の相対的な位置座標が図８に示すものと異なっている。尚、一般に、第三のレイアウト位置算出手段５３４により順序付けステップに従った処理が実行された結果、階層内での選択ノードの順序が変更になることがあり、この場合にも、選択ノードの中でそれらの相対的な位置座標が異なることになる。また、選択ノードが最終的に配置される位置の座標により、選択ノードの全体がレイアウトされる領域の大きさは、領域決定手段５３２で決定された領域の大きさよりも拡がる場合がある。
【００６３】
最後に、グラフ表示処理手段５３５は、第三のレイアウト位置算出手段５３４で得られた各ノード１〜１１，ｄ１のレイアウト元データとグラフ構造データとに基づいてグラフを生成し、表示装置２０の画面に表示する（Ｓ７）。図１４に図１３に示すレイアウト元データに対応するグラフを示す。この図１４のグラフが表示装置２０の画面に表示される。このグラフ上には、選択ノード５，８，１１の全体が互いに近接した位置にレイアウトされている。実際、図１４のグラフでは、同一階層に配置される選択ノード５，１１の間には選択ノード以外のノードはレイアウトされておらず、しかも、選択ノード５，８，１１の全体を含む長方形の領域を、選択ノードと無関係のエッジが横切ることもない。但し、選択ノードと無関係のエッジが選択ノードの全体を含む長方形の領域を横切ることを許容するようにしてもよい。この場合、第三のレイアウト位置算出手段５３４は、その横切るエッジが選択ノードに重ならないように、各ノードのレイアウト位置座標を算出する必要がある。このように、選択ノードと無関係のエッジが選択ノードの全体を含む長方形の領域を横切ることを許容しても、本実施形態では、第三のレイアウト位置算出手段５３４が上記条件の下で各ノードのレイアウト位置座標を算出しているので、選択ノードの全体を含む長方形の領域に選択ノード以外のノードが入ることはない。
【００６４】
尚、ユーザは、こうして表示装置２０の画面に表示されたグラフが未だ自分の意図したグラフになっておらず、そのグラフにおいてさらにいくつかのノードを互いに近接した位置にレイアウトしたいと考える場合には、再度、入力装置１０を用いてノードを選択し、選択したノードを近接した位置にレイアウトする処理の実行を指示する命令を入力すればよい。
【００６５】
本実施形態のグラフ生成装置は、入力装置を用いて選択された選択ノードの全体をレイアウトするのに必要な領域の形状・大きさを決定し、選択ノードの全体をその決定した領域の形状・大きさを有する一つの仮ノードで置き換えて、仮ノードと選択ノード以外の各ノードとについてのレイアウト位置を算出した後、その算出した結果によって定められる仮ノード及び選択ノード以外の各ノードについての相対的な位置関係を維持するという条件、及び、仮ノードの代わりに選択ノードの全体をレイアウトするという条件の下に、グラフ構造データに基づいて所定のグラフレイアウトアルゴリズムに従った処理を実行して、グラフのレイアウトを行う。このため、グラフ上には、選択ノードの全体が互いに近接した位置にレイアウトされるので、ユーザが意図したレイアウトのグラフを容易に生成することができる。
【００６６】
尚、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内において種々の変形が可能である。
【００６７】
例えば、上記の実施形態では、仮ノードが最下層に配置される場合について説明したが、仮ノードは最上層や中間階層（一番上でも一番下でもない階層）に配置されてもよい。図１５、図１６及び図１７は仮ノードが中間階層に配置される場合のグラフ生成処理の概要を説明するための図である。ここで、図１５は図６と同様に図２のグラフ構造データを用いて作成された基本グラフである。図１５に示すように、ユーザがノード３，４，６を選択ノードとして選択すると、第二のレイアウト位置算出手段５３３は、図１６に示すようなグラフに対応するレイアウト元データを生成することになる。この図１６では、仮ノード１２’が中間階層に配置されている。ここで、仮ノード１２’は、選択ノード３，４，６に代わりに置き換えられたものである。そして、第三のレイアウト位置算出手段５３４は、上記の実施形態で説明したように、仮ノード１２’及び選択ノード３，４，６以外の各ノード１，２，５，７，８，９，１０，１１についての相対的な位置関係を維持するという条件、及び、仮ノード１２’の代わりに選択ノード３，４，６の全体をレイアウトするという条件の下で、各ノード１〜１１のレイアウト位置を算出することにより、図１７に示すようなグラフに対応するレイアウト元データを生成する。このように、仮ノードが中間階層に配置される場合でも、上記の実施形態で説明したのと同様の処理を行うことにより、ユーザが意図したレイアウトのグラフを生成することができる。
【００６８】
また、上記の実施形態では、ユーザが、入力装置を用いて、第一のグラフ生成手段によって生成されて表示装置の画面に表示された基本グラフにおいて、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択する場合について説明したが、一般には、ユーザが、入力装置を用いて、グラフ構造データに基づいて表示装置の画面に表示された複数のノードの中から、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択するようにすればよい。例えば、基本グラフを表示装置の画面に表示するのではなく、ノードデータを表示装置の画面に表示し、ユーザが、その表示されたノードデータに含まれる複数のノードの中から、互いに近接した位置にレイアウトしたいノードを選択ノードとして選択するようにしてもよい。また、上記の実施形態において、手作業により過去に作成されたグラフや有向グラフの階層レイアウトを行うアルゴリズム以外のグラフレイアウトアルゴリズムにより過去に作成されたグラフであっても、当該グラフに対してグラフ構造データが定義済みであれば、そのグラフを基本グラフとし、当該基本グラフにおいて選択ノードを選択することが可能である。
【００６９】
また、上記の実施形態では、説明を簡単にするために、ノードの数の少ないグラフを生成する場合について説明したが、ノードの数が数千〜数万であるようなグラフを生成する場合にも本発明のグラフ生成装置、グラフ生成方法及びグラフ生成プログラムを適用することができる。この場合であっても、ユーザの意図したとおりにレイアウトされたグラフを生成することができる。このため、本発明のグラフ生成装置、グラフ生成方法及びグラフ生成プログラムは、特に、システムプログラムのサブルーチン同士の呼び出し関係を示すコールグラフを生成する場合に用いるのに適している。例えば、対象のシステムアーキテクチャーの階層がコントローラ層、サービス/ロジック層、ＤＡＯ（Data Access Object）層の３階層に分かれている場合、生成するコールグラフにおいては、メソッド（ノード）をこれら３階層に分けて表示させることができる。
【００７０】
また、本発明のグラフ生成装置、グラフ生成方法及びグラフ生成プログラムは、コールグラフの他にも、ネットワーク上の機器構成や企業等の組織構成などを表すグラフ等、さまざまなグラフを生成する場合に適用することができる。
【００７１】
更に、上記の実施形態では、グラフレイアウトアルゴリズムとしてSugiyamaアルゴリズムを用いた場合について説明したが、本発明で使用するグラフレイアウトアルゴリズムはSugiyamaアルゴリズムに限定されない。
【００７２】
加えて、上記の実施形態では、有向非循環グラフを生成する場合について説明したが、本発明のグラフ生成装置、グラフ生成方法及びグラフ生成プログラムは、例えば、有向循環グラフを生成する場合や、有向グラフ以外のグラフを生成する場合にも適用することができる。
【産業上の利用可能性】
【００７３】
以上説明したように、本発明のグラフ生成装置、グラフ生成方法及びグラフ生成プログラムによれば、入力手段を用いて選択された選択ノードの全体を一つの仮ノードで置き換えて、仮ノードと選択ノード以外の各ノードとについてのレイアウト位置を算出した後、その算出された仮ノードのレイアウト位置に、選択ノードの全体をレイアウトするという条件の下に、グラフ構造データに基づいて所定のグラフレイアウトアルゴリズムに従った処理を実行して、グラフのレイアウトを行う。このため、グラフ上には、選択ノードの全体が互いに近接した位置にレイアウトされるので、ユーザが意図したレイアウトのグラフを容易に生成することができる。したがって、本発明は、特に、システム開発において大規模なコールグラフ等を生成して表示手段の画面に表示する場合に用いるのに好適である。
【符号の説明】
【００７４】
１０  入力装置
２０  表示装置
３０  ＲＯＭ
４０  ＲＡＭ
５０  制御部
５１  第一のグラフ生成手段
５２  選択ノード特定データ生成手段
５３  第二のグラフ生成手段
５３１  第一のレイアウト位置算出手段
５３２  領域決定手段
５３３  第二のレイアウト位置算出手段
５３４  第三のレイアウト位置算出手段
５３５  グラフ表示処理手段
【図１】
0006028703.tif 000002
【図２】
0006028703.tif 000003
【図３】
0006028703.tif 000004
【図４】
0006028703.tif 000005
【図５】
0006028703.tif 000006
【図６】
0006028703.tif 000007
【図７】
0006028703.tif 000008
【図８】
0006028703.tif 000009
【図９】
0006028703.tif 000010
【図１０】
0006028703.tif 000011
【図１１】
0006028703.tif 000012
【図１２】
0006028703.tif 000013
【図１３】
0006028703.tif 000014
【図１４】
0006028703.tif 000015
【図１５】
0006028703.tif 000016
【図１６】
0006028703.tif 000017
【図１７】
0006028703.tif 000018
【図１８】
0006028703.tif 000019