特許第6226462号(P6226462)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ KDDI株式会社の特許一覧

<>
  • 特許6226462-グラフ描画システムおよびプログラム 図000002
  • 特許6226462-グラフ描画システムおよびプログラム 図000003
  • 特許6226462-グラフ描画システムおよびプログラム 図000004
  • 特許6226462-グラフ描画システムおよびプログラム 図000005
  • 特許6226462-グラフ描画システムおよびプログラム 図000006
  • 特許6226462-グラフ描画システムおよびプログラム 図000007
  • 特許6226462-グラフ描画システムおよびプログラム 図000008
  • 特許6226462-グラフ描画システムおよびプログラム 図000009
  • 特許6226462-グラフ描画システムおよびプログラム 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6226462
(24)【登録日】2017年10月20日
(45)【発行日】2017年11月8日
(54)【発明の名称】グラフ描画システムおよびプログラム
(51)【国際特許分類】
   H04L 12/705 20130101AFI20171030BHJP
   G06F 17/30 20060101ALI20171030BHJP
   H04L 12/24 20060101ALI20171030BHJP
【FI】
   H04L12/705
   G06F17/30 419B
   H04L12/24
【請求項の数】3
【全頁数】9
(21)【出願番号】特願2013-204747(P2013-204747)
(22)【出願日】2013年9月30日
(65)【公開番号】特開2015-70526(P2015-70526A)
(43)【公開日】2015年4月13日
【審査請求日】2016年2月22日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100114258
【弁理士】
【氏名又は名称】福地 武雄
(74)【代理人】
【識別番号】100125391
【弁理士】
【氏名又は名称】白川 洋一
(72)【発明者】
【氏名】松野 淳
(72)【発明者】
【氏名】林 通秋
(72)【発明者】
【氏名】宮澤 雅典
【審査官】 衣鳩 文彦
(56)【参考文献】
【文献】 特開2013−175999(JP,A)
【文献】 特開2003−203076(JP,A)
【文献】 特開2011−029975(JP,A)
【文献】 米国特許出願公開第2008/0143723(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/705
G06F 17/30
H04L 12/24
(57)【特許請求の範囲】
【請求項1】
ノードの集合およびエッジの集合で構成されるグラフを描画するグラフ描画システムであって、
隣接する2つのノードを特定する情報を含むグラフ構成情報データベースと、
入力された始点およびホップ数に基づいて、前記グラフ構成情報データベースを参照して、幅優先探索を実行し、あるホップ数における展開の展開元となったノードは、同一のホップ数または一つ後のホップ数における展開では展開先としないことにより閉路での探索を終了するグラフ探索部と、
探索終了後のノードの集合およびエッジの集合に基づいて、グラフを描画するグラフ描画部と、を備えることを特徴とするグラフ描画システム。
【請求項2】
ネットワークに接続され、ネットワーク上のノードを特定する情報を収集し、前記収集した情報を前記グラフ構成情報データベースに記録するグラフ構成情報収集部を更に備えることを特徴とする請求項記載のグラフ描画システム。
【請求項3】
ノードの集合およびエッジの集合で構成されるグラフを描画するグラフ描画システムのプログラムであって、
始点およびホップ数を入力する処理と、
前記入力された始点およびホップ数に基づいて、グラフ構成情報データベースを参照して、幅優先探索を実行する処理と、
前記幅優先探索で、あるホップ数における展開の展開元となったノードは、同一のホップ数または一つ後のホップ数における展開では展開先としないことにより閉路での探索を終了する処理と、
探索終了後のノードの集合およびエッジの集合に基づいて、グラフを描画する処理と、の一連の処理を、コンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ノードの集合およびエッジの集合で構成されるグラフを描画する技術に関する。
【背景技術】
【0002】
従来から、グラフを描画する技術分野においては、ある制約下で始点と終点間の最適経路を探索する技術が提案されている。例えば、特許文献1記載の技術では、現在位置から探索範囲を特定し、該当探索範囲の地図データを読み込んで格納し、探索開始点および探索終了点を決定する。また、現在日時を取得し、出発地から目的地までの走行予定時間帯を決定し、その時間帯において、格納されている地図データの各ノードおよびリンクが通行可能か否かを判定し、地図データ上に規制の有無を書き込む。書き込まれた地図データに基づいて、探索開始点から探索終了点までの経路を選出する。
【0003】
また、グラフを探索する技術として、「幅優先探索」が知られている。図7は、従来の幅優先探索の一例を示す図である。以下、本明細書では、点aの隣接点を訪問することを、「aを展開する」と呼称する。この幅優先探索は、始点に隣接している点を順次展開し、隣接する頂点が無くなったら、最初に展開した点に戻り、その点の隣接点を順次展開する。そして、この処理を繰り返し、戻るべき点が無くなった時点で、探索を終了する。図7では、例えば、始点をノードAとし、ホップ数を3とした場合、ノードFとGに到達したことを示している。
【0004】
しかし、この幅優先探索では、グラフに「閉路」が含まれていると、同じ点を何度も展開することになるため、探索が無限に続いてしまう問題がある。図8は、グラフに閉路がある場合に、単に幅優先探索を行なうと、既に展開したノードを重複して展開してしまう例を示している。図8の例では、「ノードA、ノードB、ノードD、ノードC」という探索と、「ノードA、ノードC、ノードD、ノードB」という探索において、ノードDとBおよびノードDとCとの間で重複した展開をしている。
【0005】
そこで、展開した点を記憶することで、幅優先探索の欠点を補うことが提案されている。図9は、既に展開したノードを記憶する幅優先探索の例を示している。この手法では、展開済みの点を記憶しておき、展開しようとする点が展開済み点か否かを確認することで、同じ点を重複して展開することを回避している。図9の例では、「ノードA、ノードB、ノードD、ノードC」という探索と、「ノードA、ノードC、ノードD、ノードB」という探索において、ノードDとBおよびノードDとCとの間では重複した展開がされないようになっている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006−250946号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来は、ユーザが要求する範囲内のグラフを高速に描画するために、グラフを効率的に探索する手法は、提案されていない。また、幅優先探索では、展開点を記憶したとしても、グラフの規模が大きくなると(グラフの点の数が多くなると)、非常に多くの展開済み点を記憶する必要があり、かつ、展開済み点か否かの確認に非常に時間がかかる。
【0008】
本発明は、このような事情に鑑みてなされたものであり、グラフの探索を効率的かつ正確に実現することができるグラフ描画システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
(1)上記の目的を達成するため、本発明は、以下のような手段を講じた。すなわち、本発明のグラフ描画システムは、ノードの集合およびエッジの集合で構成されるグラフを描画するグラフ描画システムであって、入力された始点およびホップ数に基づいて、幅優先探索を実行し、閉路における2方向からの探索が、前記閉路内の同一のノードに到達した場合または前記閉路内の隣接するノードに到達した場合に、前記閉路での探索を終了するグラフ探索部と、探索終了後のノードの集合およびエッジの集合に基づいて、グラフを描画するグラフ描画部と、を備えることを特徴とする。
【0010】
このように、入力された始点およびホップ数に基づいて、幅優先探索を実行し、閉路における2方向からの探索が、閉路内の同一のノードに到達した場合または閉路内の隣接するノードに到達した場合に、閉路での探索を終了するので、重複した展開を回避することができ、グラフ描画のためのグラフ探索を効率的かつ正確に実現することが可能となる。
【0011】
(2)また、本発明のグラフ描画システムは、隣接する2つのノードを特定する情報を含むグラフ構成情報データベースを更に備え、前記グラフ探索部は、前記グラフ構成情報データベースを参照して、前記幅優先探索を実行することを特徴とする。
【0012】
このように、隣接する2つのノードを特定する情報を含むグラフ構成情報データベースを更に備え、グラフ構成情報データベースを参照して、幅優先探索を実行するので、ネットワークトポロジを形成するために必要な最小限の情報でグラフ探索を実行することが可能となる。その結果、処理負荷の軽減と処理速度の向上を図ることが可能となる。
【0013】
(3)また、本発明のグラフ描画システムは、ネットワークに接続され、ネットワーク上のノードを特定する情報を収集し、前記収集した情報を前記グラフ構成情報データベースに記録するグラフ構成情報収集部を更に備えることを特徴とする。
【0014】
このように、ネットワークに接続され、ネットワーク上のノードを特定する情報を収集し、収集した情報をグラフ構成情報データベースに記録するので、ネットワークからリアルタイムに収集した構成情報を、グラフ構成情報データベースに反映させることが可能となる。
【0015】
(4)また、本発明のプログラムは、ノードの集合およびエッジの集合で構成されるグラフを描画するグラフ描画システムのプログラムであって、始点およびホップ数を入力する処理と、前記入力された始点およびホップ数に基づいて、幅優先探索を実行する処理と、前記幅優先探索で、閉路における2方向からの探索が、前記閉路内の同一のノードに到達した場合または前記閉路内の隣接するノードに到達した場合に、前記閉路での探索を終了する処理と、探索終了後のノードの集合およびエッジの集合に基づいて、グラフを描画する処理と、の一連の処理を、コンピュータに実行させることを特徴とする。
【0016】
このように、入力された始点およびホップ数に基づいて、幅優先探索を実行し、閉路における2方向からの探索が、閉路内の同一のノードに到達した場合または閉路内の隣接するノードに到達した場合に、閉路での探索を終了するので、重複した展開を回避することができ、グラフ描画のためのグラフ探索を効率的かつ正確に実現することが可能となる。
【発明の効果】
【0017】
本発明によれば、重複した展開を回避することができ、グラフ描画のためのグラフ探索を効率的かつ正確に実現することが可能となる。
【図面の簡単な説明】
【0018】
図1】2つの探索が、閉路内の同じ点に到達した場合の例を示す図である。
図2】2つの探索が、閉路内の隣接する点に到達した場合の例を示す図である。
図3】本実施形態に係るグラフ描画システムの概略構成を示すブロック図である。
図4】グラフ構成情報データベースが記録している情報の一例を示す図である。
図5】本実施形態に係るグラフ描画システムの動作を示すフローチャートである。
図6図4で示されたグラフの構成情報のデータベースに基づいたグラフ探索の一例を示す図である。
図7】従来の幅優先探索の一例を示す図である。
図8】グラフに閉路がある場合に、重複して展開してしまう例を示している。
図9】既に展開したノードを記憶する幅優先探索の例を示している。
【発明を実施するための形態】
【0019】
本発明の実施形態に係るグラフ描画システムは、始点sとホップ数kが与えられたときに、幅優先探索に閉路での探索の終了処理を付加した探索アルゴリズムを用いる。閉路での探索の終了処理は、以下の2つの条件下でそれぞれ異なる。
【0020】
[第1の条件]2つの探索が、閉路内の同じ点に到達した場合
[第2の条件]2つの探索が、閉路内の隣接する点に到達した場合
以下、2つの探索の終了処理について説明する。
【0021】
図1は、2つの探索が、閉路内の同じ点に到達した場合の例を示す図である。図1において、cは一度しか展開せず、cを展開するときは、cの親であるa、bは展開しない。すなわち、cの展開元の点をcの「親集合」として記憶し、cを一度だけ展開する。cを展開するときは、隣接点がcの親集合に含まれるかどうか確認する。隣接点がcの親集合に含まれない場合は、cから隣接点へ展開する。隣接点がcの親集合に含まれる場合は、cから隣接点へ展開しない。図1では、cの隣接点a、bはcの親集合なので、cはdへのみ展開する。
【0022】
図2は、2つの探索が、閉路内の隣接する点に到達した場合の例を示す図である。図2において、cを展開するとき、隣接点としてdが含まれている場合、cからdへ展開した後で、dは展開しない。また、dからcへ展開しない。dを展開するとき、隣接点としてcが含まれている場合、dからcへ展開した後で、cは展開しない。また、dからcへ展開しない。なお、先にcからdへ展開したら、dからcへは展開しない。同様に、先にdからcへ展開したら、cからdへは展開しない。
【0023】
すなわち、cを展開するときは、同じhop数で到達した展開予定点集合に隣接点が含まれるかどうか確認する。同じhop数で到達した展開予定点集合に隣接点が含まれる場合は、cから隣接点へ訪問した後で、隣接点は展開しない。また、隣接点からcへ訪問しない。一方、同じhop数で到達した展開予定点集合に隣接点が含まれない場合は、通常の幅優先探索に従い、隣接点への訪問と隣接点の展開を行なう。
【0024】
図2では、cの隣接点dは展開予定点集合に含まれるので、cからdへ訪問した後で、dは展開しない。また、dからcへ訪問しない。
【0025】
図3は、本実施形態に係るグラフ描画システムの概略構成を示すブロック図である。ここでは、ネットワークトポロジのグラフ描画を例にとって説明する。このグラフ描画システムにおいて、グラフ探索部1は、入力された始点およびホップ数に基づいて、幅優先探索を実行する。閉路においては、2方向からの探索が、閉路内の同一のノードに到達した場合、または閉路内の隣接するノードに到達した場合に、閉路での探索を終了する。グラフの探索には、既知情報として、図4で示されるようなグラフ構成情報データベース5を用いる。グラフ構成情報データベース5は、2点間の隣接のみを表している。これは、ネットワークトポロジを形成するために必要最小限な情報である。
【0026】
グラフ描画部3は、グラフ探索部1での探索が終了した後、ノードの集合およびエッジの集合に基づいて、グラフを描画する。すなわち、グラフ探索部1が取得したグラフの情報は、グラフ描画部3に順次送信され、最終的に、始点とホップ数で指定された範囲内のグラフの描画が得られる。グラフ構成情報データベース5は、ネットワーク上の隣接する2つのノードを特定する情報を含む。グラフ探索部1は、グラフ構成情報データベース5を参照して、幅優先探索を実行する。グラフ構成情報収集部7は、ネットワーク9に接続され、リアルタイムでネットワーク9上のノードを特定する情報を収集し、収集した情報をグラフ構成情報データベース5に記録する。
【0027】
図5は、本実施形態に係るグラフ描画システムの動作を示すフローチャートである。また、図6は、図4で示されたグラフの構成情報のデータベースに基づいたグラフ探索の一例を示す図である。
【0028】
まず、開始点s、ホップ数nを入力する(ステップS1)。ここでは、現在のホップ数をk=1とする(ステップS1)。次に、(s,Ps)を展開予定点集合Fに入れる(ステップS2)。Psはsの親集合を表し、空集合である。次に、kは3以下であり、かつ始点をs、ホップ数を3とする(ステップS3、S4)。次に、kがn以上であるかどうかを判断し(ステップS5)、kがnより大きい場合は、終了する。一方、kがn以下である場合は、Fが空集合であるかどうかを判断する(ステップS6)。ここでは、Fは空集合ではないので、Fに含まれる要素を未展開点集合Oに含め、F、展開済み点集合Cを空集合とする(ステップS7)。
【0029】
次に、Oが空集合であるかどうかを判断する(ステップS8)。Oは空集合ではないので、Oに含まれるs、Psを取り出す(ステップS9)。次に、図4より、sの隣接点集合N={a, b}を取得する(ステップS10)。次に、Nが空集合であるかどうかを判断し(ステップS11)、Nは空集合ではないので、Nからaを取り出す(ステップS12)。
【0030】
次に、nがPに含まれるかどうかを判断し(ステップS13)、nがCに含まれるかどうかを判断し(ステップS14)、nがOに含まれるかどうかを判断する(ステップS15)。aはPs、C、Oに含まれない、かつ、Fにはaを含む要素は含まれないので、Pa={s}として、(a,Pa)をCに入れる(ステップS16)。(s,a)の情報をグラフ描画部へ送信する(ステップS20)。上記のステップS11からステップS16、ステップS20の処理をbに対しても行なう。
【0031】
次に、ステップS11、8において、Nは空集合で、かつ、Oが空集合なので、kをインクリメントし、k=2とする。k=3でkは3以下であり、かつ、F={(a,Pa),(b,Pb)}でFは空集合ではないので、Fに含まれる要素をOに含め、Fを空集合とする。ステップS8からステップS16、ステップS20の処理を(a,Pa)、(b,Pb)に対して行なう。
【0032】
次に、ステップS4からステップS7において、k=3でkは3以下であり、かつ、F={(c,Pc),(d,Pd)}でFは空集合ではないので、Fに含まれる要素をOに含め、Fを空集合とする(Pc={a}、Pd={b})。次に、Oが空集合であるかどうかを判断し(ステップS8)、Oは空集合ではないので、Oに含まれるc、Pcを取り出す(ステップS9)。図4より、N={a,d,e}を取得する(ステップS10)。次に、Nが空集合であるかどうかを判断し(ステップS11)、Nは空集合ではないので、Nからaを取り出す(ステップS12)。次に、ステップS13において、aはPcに含まれるので、cからaへ展開しない。
【0033】
ステップS11において、Nは空集合ではないので、Nからdを取り出す(ステップS12)。ステップS13からステップS16において、dはPc、Cに含まれないが、Oに含まれるので、Cにcを入れる。ステップS20おいて、(c,d)の情報をグラフ描画部へ送信する。
【0034】
ステップS11において、Nは空集合ではないので、Nからeを取り出す(ステップS12)。ステップS13からステップS19において、eはPc、C、Oに含まれない、かつ、Fにはeを含む要素は含まれないので、Pe={c}として、(e,Pe)をFに入れる。(c,e)の情報をグラフ描画部へ送信する(ステップS20)。
【0035】
ステップS8において、Oは空集合ではないので、Oに含まれるd、Pdを取り出す(ステップS9)。図4より、N={b,c}を取得する(ステップS10)。ステップS11において、Nは空集合ではないので、Gよりbを取り出す(ステップS12)。ステップS13において、bはPdに含まれるので、dからbへ展開しない。ステップS11において、Nは空集合ではないので、Nからcを取り出す(ステップS12)。ステップS13〜ステップS14において、cはPdに含まれないが、Cに含まれるので、dからcへ展開しない。ステップS11において、Nは空集合で、かつ、ステップS8において、Oが空集合なので、kをインクリメントし、k=4とする(ステップS4)。ステップS5において、kは3より大きい値であるため、終了する。
【0036】
以上説明したように、本実施形態によれば、入力された始点およびホップ数に基づいて、幅優先探索を実行し、閉路における2方向からの探索が、閉路内の同一のノードに到達した場合または閉路内の隣接するノードに到達した場合に、閉路での探索を終了するので、重複した展開を回避することができ、グラフ描画のためのグラフ探索を効率的かつ正確に実現することが可能となる。
【符号の説明】
【0037】
1 グラフ探索部
3 グラフ描画部
5 グラフ構成情報データベース
7 グラフ構成情報収集部
9 ネットワーク

図1
図2
図3
図4
図5
図6
図7
図8
図9