特許第6623380号(P6623380)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

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

▶ 日本電信電話株式会社の特許一覧
特許6623380探索装置、探索方法および探索プログラム
<>
  • 特許6623380-探索装置、探索方法および探索プログラム 図000014
  • 特許6623380-探索装置、探索方法および探索プログラム 図000015
  • 特許6623380-探索装置、探索方法および探索プログラム 図000016
  • 特許6623380-探索装置、探索方法および探索プログラム 図000017
  • 特許6623380-探索装置、探索方法および探索プログラム 図000018
  • 特許6623380-探索装置、探索方法および探索プログラム 図000019
  • 特許6623380-探索装置、探索方法および探索プログラム 図000020
  • 特許6623380-探索装置、探索方法および探索プログラム 図000021
  • 特許6623380-探索装置、探索方法および探索プログラム 図000022
  • 特許6623380-探索装置、探索方法および探索プログラム 図000023
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6623380
(24)【登録日】2019年12月6日
(45)【発行日】2019年12月25日
(54)【発明の名称】探索装置、探索方法および探索プログラム
(51)【国際特許分類】
   G06F 16/28 20190101AFI20191216BHJP
【FI】
   G06F16/28
【請求項の数】5
【全頁数】17
(21)【出願番号】特願2017-31866(P2017-31866)
(22)【出願日】2017年2月23日
(65)【公開番号】特開2018-136821(P2018-136821A)
(43)【公開日】2018年8月30日
【審査請求日】2018年12月28日
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】新井 淳也
(72)【発明者】
【氏名】岩村 相哲
(72)【発明者】
【氏名】鬼塚 真
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開2015−156216(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/28
(57)【特許請求の範囲】
【請求項1】
概念を示すラベルが付与された頂点と、頂点間の関係を表すエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと一致する部分を探索する際に、前記データグラフの各頂点と隣接する頂点とのラベルの組み合わせに基づいて、該データグラフの頂点と、該データグラフの頂点と一致し得る前記クエリグラフの頂点との組み合わせを抽出する抽出部と、
前記抽出部により抽出された前記組み合わせのうち、該データグラフの頂点に隣接する頂点と、対応する前記クエリグラフの頂点に隣接する頂点とが一致し得ない組み合わせを除外する除外部と、
を備えることを特徴とする探索装置。
【請求項2】
前記除外部が、前記データグラフの頂点に隣接する頂点と、対応するクエリグラフの頂点に隣接する頂点とが一致し得るか否かを、該頂点同士の写像が単射であることを条件として判定することを特徴とする請求項1に記載の探索装置。
【請求項3】
前記除外部が、前記データグラフの頂点に隣接する頂点と、対応するクエリグラフの頂点に隣接する頂点とが一致し得るか否かを、該頂点同士の写像が単射であるという条件を緩和した判定式を用いて判定することを特徴とする請求項1に記載の探索装置。
【請求項4】
探索装置で実行される探索方法であって、
概念を示すラベルが付与された頂点と、頂点間の関係を表すエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと一致する部分を探索する際に、前記データグラフの各頂点と隣接する頂点とのラベルの組み合わせに基づいて、該データグラフの頂点と、該データグラフの頂点と一致し得る前記クエリグラフの頂点との組み合わせを抽出する抽出工程と、
前記抽出工程において抽出された前記組み合わせのうち、該データグラフの頂点に隣接する頂点と、対応する前記クエリグラフの頂点に隣接する頂点とが一致し得ない組み合わせを除外する除外工程と、
を含むことを特徴とする探索方法。
【請求項5】
概念を示すラベルが付与された頂点と、頂点間の関係を表すエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと一致する部分を探索する際に、前記データグラフの各頂点と隣接する頂点とのラベルの組み合わせに基づいて、該データグラフの頂点と、該データグラフの頂点と一致し得る前記クエリグラフの頂点との組み合わせを抽出する抽出ステップと、
前記抽出ステップにおいて抽出された前記組み合わせのうち、該データグラフの頂点に隣接する頂点と、対応する前記クエリグラフの頂点に隣接する頂点とが一致し得ない組み合わせを除外する除外ステップと、
をコンピュータに実行させることを特徴とする探索プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、探索装置、探索方法および探索プログラムに関する。
【背景技術】
【0002】
近年、大量に生成される情報の中から必要な情報を的確に探索する技術が不可欠になっている。例えば、キーワードによるテキスト検索では、テキストの意味を考慮して概念グラフ化されたテキストに対して効率的な探索手法が提案されている。ここで、概念グラフは、例えば、概念を表す頂点と概念間の関係を表すエッジからなるグラフ構造で表される。この技術において、検索対象となるテキスト集合から作成された概念グラフがデータグラフ、クエリとして入力される概念グラフがクエリグラフとされる。この場合に、概念グラフ化されたテキストを探索するということは、データグラフの中からクエリグラフを含むものを探索することになる。
【0003】
このように、グラフ構造の中からクエリとして与えられた特定の部分構造すなわちサブグラフを発見する問題は、サブグラフマッチングと呼ばれる。従来、サブグラフマッチングは、バックトラッキングと呼ばれる探索アルゴリズムに基づいて探索されていた(非特許文献1参照)。この場合、クエリグラフの頂点に着目して、マッチするデータグラフの頂点を探索するいわゆるサブグラフ同型問題として取り扱われていた。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Jinsoo Lee,Wook-Shin Han,Romans Kasperovics,Jeong-Hoon Lee,“An In-depth Comparison of Subgraph Isomorphism Algorithms in Graph Databases”,Proceedings of the 39th international conference on Very Large Data Bases,2013年,pp.133-144
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、サブグラフ同型問題は、NP(Non-deterministic Polynomial time、非決定性多項式時間)困難、すなわち、NPクラスに属する問題と同等に困難であることが知られている。つまり、多項式時間(Polynomial time)で解くことができる問題のクラスをPとする場合に、P≠NPであれば、サブグラフ同型問題は多項式時間で解くことができない。そのため、データグラフおよびクエリグラフのサイズが増大するにつれ、サブグラフマッチングに要する時間が爆発的に増大してしまっていた。これにより、例えば、利用者からの問い合わせをクエリグラフで表現してデータベース上のデータグラフに対してサブグラフマッチングにより回答を提示するサービス等のように高速な応答を要求されても、対応することができない場合があった。
【0006】
本発明は、上記に鑑みてなされたものであって、データグラフの中からクエリグラフを含むものを探索するサブグラフマッチング処理を高速化することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するために、本発明に係る探索装置は、概念を示すラベルが付与された頂点と、頂点間の関係を表すエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと一致する部分を探索する際に、前記データグラフの各頂点と隣接する頂点とのラベルの組み合わせに基づいて、該データグラフの頂点と、該データグラフの頂点と一致し得る前記クエリグラフの頂点との組み合わせを抽出する抽出部と、前記抽出部により抽出された前記組み合わせのうち、該データグラフの頂点に隣接する頂点と、対応する前記クエリグラフの頂点に隣接する頂点とが一致し得ない組み合わせを除外する除外部と、を備えることを特徴とする。
【発明の効果】
【0008】
本発明によれば、データグラフの中からクエリグラフを含むものを探索するサブグラフマッチング処理を高速化することができる。
【図面の簡単な説明】
【0009】
図1図1は、本発明の一実施形態に係る探索装置の処理対象のグラフを例示する図である。
図2図2は、本実施形態の探索装置の処理概要を説明するための説明図である。
図3図3は、本実施形態の探索装置の概略構成を示す模式図である。
図4図4は、本実施形態の探索装置による探索処理の効果を説明するための説明図である。
図5図5は、本実施形態の探索処理手順を示すフローチャートである。
図6図6は、本実施形態の探索処理手順を示すフローチャートである。
図7図7は、本実施形態の探索処理手順を示すフローチャートである。
図8図8は、本実施形態の探索処理手順を示すフローチャートである。
図9図9は、他の実施形態の探索処理を説明するための説明図である。
図10図10は、探索プログラムを実行するコンピュータを例示する図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0011】
[探索装置の処理概要]
まず、図1および図2を参照して、本実施形態に係る探索装置の処理概要を説明する。探索装置は、概念を示すラベルが付与された頂点と、頂点間の関係を表すエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと一致(マッチ)する部分を探索する。以下、この処理をサブグラフマッチング処理と記す。また、クエリグラフとマッチするデータグラフの部分をサブグラフと記す。
【0012】
探索装置は、以下に説明するバックトラッキングによりサブグラフマッチング処理を実行する。その際、探索装置は、バックトラッキングの前処理として、後述する探索処理により、バックトラッキングの対象から除外するデータグラフの頂点を決定する枝刈りを行う。なお、バックトラッキングでは、クエリグラフの頂点にマッチするデータグラフの頂点を探索する。これに対し、探索処理では、データグラフの頂点に着目して、マッチし得るクエリグラフの頂点を探索する。この場合に、各データグラフの頂点は、マッチし得るかの情報を他の頂点と共有しないため、容易かつ高効率に処理を並列化することが可能となる。
【0013】
ここで、データグラフは、頂点がラベルをもつ無向グラフg=(V,E,Σ,l)で表されるものとする。ただし、Vは頂点の集合、E⊆V×Vはエッジの集合、Σはラベルの集合、lは頂点とラベルを対応させる関数を表す。また、クエリグラフはq=(Vq,Eq,Σ,l)で表されるものとする。gがqに対してサブグラフ同型である場合、次式(1)が成立する。すなわち、サブグラフマッチングとは、あるデータグラフgとクエリグラフqが与えられた場合に、次式(1)を満たす全ての写像Mを発見する問題と定義される。
【0014】
【数1】
【0015】
次に、前処理としての探索処理が行われない場合の従来のバックトラッキングについて説明する。図1は、探索装置の処理対象のグラフを例示する図である。本実施形態において、図1に示すように、クエリグラフqの頂点V(以下、uとも記す)は、u,u,u,…のように番号付けして識別されている。また、データグラフgの頂点V(以下、vとも記す)は、v,v,v,…のように番号付けして識別されている。
【0016】
また、図2は、従来のバックトラッキングを説明するための説明図である。図2に示すように、バックトラッキングでは、具体的にまず、uにマッチするデータグラフgの頂点を探索する。uのラベルはaであり、データグラフgのうちラベルがaの頂点はvのみであることから、M[u]=vとする。次に、uにマッチし得るgの頂点を探索する。uのラベルはcであり、uに隣接していることから、v,v,vがマッチし得る。ここでは、まずM[u]=vとして探索を進める。このことは、図2においてvからvへの矢印で表される。
【0017】
同様に、uにはvとvとがマッチし得る。ここで、M[u]=vとして探索を進めると、uにマッチし得るデータグラフの頂点が存在しないことがわかる。そこで、処理を戻してM[u]=vとして探索を進めると、再びuにマッチし得るデータグラフの頂点が存在しないことがわかる。そこで、処理を戻し、M[u]=vとして探索を進める。
【0018】
このように探索を進めることにより、M={v,v,v,v,v}および{v,v,v8,v,v}の場合に、クエリグラフqがデータグラフgにマッチすることがわかり、サブグラフマッチングの処理結果として出力される。
【0019】
このように、バックトラッキングでは、クエリグラフqの頂点uについて、マッチし得るデータグラフの頂点(V\M)を網羅するように探索する。ここでuにマッチし得るデータグラフgの頂点vとは、次式(2)で表されるように、uと同じラベルを持ち、uに隣接する頂点u(j<i)のうち、マッピングが写像Mに含まれるもの、すなわちマッピング先の頂点との間にエッジを持つ頂点を意味する。
【0020】
【数2】
【0021】
そして、uにマッチし得る頂点vのうち一つを選択してuにマッチさせたものとして、クエリグラフの次の頂点ui+1にマッチし得るデータグラフの頂点の探索を再帰的に実行し、クエリグラフqの全ての頂点についての写像Mを設定する。
【0022】
[探索装置の構成]
次に、図3を参照して、本実施形態に係る探索装置の概略構成を説明する。図3に示すように、本実施形態に係る探索装置1は、ワークステーションやパソコン等の汎用コンピュータで実現され、入力部11と出力部12と制御部13とを備える。探索装置1は、後述する探索処理を実行して、バックトラッキングの対象のデータグラフ頂点を削減する枝刈りを行った後に、サブグラフマッチング処理を行う。
【0023】
入力部11は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部13に対して各種指示情報を入力する。また、本実施形態において、入力部11は、後述する探索処理の対象のデータグラフgおよびクエリグラフqを含むグラフデータを受け付けて制御部13に入力する。
【0024】
出力部12は、液晶ディスプレイなどの表示装置、プリンター等の印刷装置、情報通信装置等によって実現され、例えば、後述する探索処理の処理結果であるサブグラフマッチング結果等を操作者に対して出力する。
【0025】
また、探索装置1は、図示しない通信制御部と記憶部とを備える。通信制御部は、NIC(Network Interface Card)等で実現され、LAN(Local Area Network)やインターネットなどの電気通信回線を介したサーバ等の外部の装置と制御部13との通信を制御する。例えば、上記のグラフデータは、通信制御部を介して外部の装置から受け付けてもよい。また、サブグラフマッチング結果は、通信制御部を介して外部の装置に出力されてもよい。
【0026】
記憶部は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部には、探索装置1を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが予め記憶され、あるいは処理の都度一時的に記憶される。この記憶部は、通信制御部を介して制御部13と通信する構成でもよい。
【0027】
制御部13は、CPU(Central Processing Unit)等の演算処理装置がメモリに記憶された処理プログラムを実行することにより、図3に例示するように、抽出部13a、除外部13b、および探索部13cとして機能する。
【0028】
なお、本実施形態において、制御部13は複数CPUコアで実現される。これにより、バックトラッキングの各枝に対応する処理や、後述する探索処理における各データグラフの頂点に関する処理を、複数のCPUによる並行処理で行うことが可能となる。
【0029】
抽出部13aは、概念を示すラベルが付与された頂点と、頂点間の関係を表すエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと一致する部分を探索する際に、データグラフの各頂点と隣接する頂点とのラベルの組み合わせに基づいて、該データグラフの頂点と、該データグラフの頂点と一致し得るクエリグラフの頂点との組み合わせを抽出する。
【0030】
具体的に、抽出部13aは、サブグラフマッチング処理に先立って、データグラフgの各頂点と隣接する頂点とのラベルの組み合わせを用いて、このデータグラフgの頂点とマッチし得るクエリデータqの頂点を抽出する。
【0031】
例えば、図1に例示するグラフに対して、ラベルがcであるデータグラフg頂点v,v,vに着目する。これに対し、ラベルがcであるクエリグラフqの頂点はu,uの2つである。このうち、uは、隣接する頂点のラベルに着目すると、ラベルがaの1つの頂点と、ラベルがbの2つの頂点とに隣接する。したがって、uは、v,vにはマッチし得るが、vにはマッチし得ない。同様に、uについては、ラベルがbの1つの頂点に隣接することから、v,v,vのいずれにもマッチし得る。
【0032】
ここで、各データグラフの頂点vのうち、クエリグラフの頂点uとマッチし得る頂点について、マッチし得るvとuとの組み合わせを示す写像Pを定義する。なお、P[v]⊆Vである。上記の場合に、P[v]={u,u}、P[v]={u}、P[v]={u,u}が導出される。
【0033】
さらに、ラベルcの頂点に隣接するラベルbのデータグラフの頂点v,vに着目する。この2頂点は、ラベルcの頂点1つに隣接することから、uにはマッチし得るが、uにはマッチし得ないことがわかる。したがって、P[v]={u}、P[v]={u}が導出され、Pが更新される。同様に、抽出部13aは、データグラフの他の頂点についてもPを更新する。
【0034】
なお、抽出部13aは、Pの初期値を全てのvについてP[v]=Vとして、マッチし得ないデータグラフの頂点とクエリグラフの頂点との組み合わせをPから削除するように、Pの更新を行ってもよい。これによっても、マッチし得るデータグラフの頂点とクエリグラフの頂点との組み合わせが抽出されることになる。
【0035】
図3の説明に戻る。除外部13bは、抽出部13aにより抽出された組み合わせのうち、該データグラフの頂点に隣接する頂点と、対応するクエリグラフの頂点に隣接する頂点とが一致し得ない組み合わせを除外する。
【0036】
例えば、図1に例示するグラフに対して、ラベルがcのデータグラフの頂点vに着目する。vがuにマッチし得る場合には、uに隣接するラベルbのuと、vに隣接するいずれかの頂点とがマッチし得る。ここで、vに隣接するラベルbの頂点vおよびvは、抽出部13aの処理により、uとはマッチし得ないことがわかっている。したがって、vはuにマッチし得ないことになる。
【0037】
同様に、vがuにマッチし得る場合には、隣接する頂点どうしがマッチし得ることから、vはuにマッチし得ないことになる。従って、P[v]=0が導出される。
【0038】
さらに、vに隣接するラベルbの頂点vおよびvに着目する。vまたはvがラベルbのuにマッチし得る場合には、vまたはvに隣接するラベルcのvと、uに隣接するラベルcのuとがマッチし得る。ここで、P[v]=0がわかっていることから、vおよびvはuにマッチし得ないことになる。
【0039】
このようにして、除外部13bは、抽出部13aにより抽出されたマッチし得るデータグラフの頂点とクエリグラフの頂点との組み合わせを示すPから、隣接する頂点どうしがマッチし得ない組み合わせを除外する。
【0040】
図3の説明に戻る。探索部13cは、抽出部13aが抽出した組み合わせのうち、除外部13bにより除外されていない組み合わせを対象に、サブグラフマッチング処理を行って、クエリグラフにマッチするデータグラフのサブグラフを抽出する。
【0041】
例えば、図1に例示するグラフについて、vは、uにマッチし得るvに隣接するラベルcの頂点であるが、P[v]=0、すなわち、P[v]≠uであり、uにマッチし得ない。したがって、図2に例示したバックトラッキングにおいて、除外される。
【0042】
図4は、上記の抽出部13aおよび除外部13bによる探索処理の効果を例示する図である。図4の網掛部に示すように、探索部13cは、バックトラッキングによるサブグラフマッチング処理を行う際、図2に示した組み合わせから、上記の探索処理によって除外された組み合わせを除外することができる。
【0043】
[探索処理]
次に、図5図8を参照して、探索装置1の探索処理について説明する。図5は、探索装置1の探索処理手順を示すフローチャートである。図5のフローチャートは、例えば、処理の開始を指示する操作入力があったタイミングで開始される。
【0044】
まず、抽出部13aが、写像Pを全てのvについてP[v]=Vとする初期化を行う(ステップS200)。次に、抽出部13aが、各データグラフの頂点vについて、自身と隣接する頂点とのラベルの組み合わせに基づいて、Pに対する枝刈りを行う(ステップS210)。言い換えれば、抽出部13aが、データグラフの各頂点と隣接する頂点とのラベルの組み合わせに基づいて、マッチし得るデータグラフの頂点とクエリデータの頂との組み合わせを示す写像Pを抽出する。
【0045】
次に、除外部13bが、隣接する頂点どうしのマッチ可能性に基づいて、Pに対する枝刈りを行う(ステップS220)。言い換えれば、除外部13bが、抽出部13aにより抽出されたマッチし得るデータグラフの頂点とクエリグラフの頂点との組み合わせを示すPから、隣接する頂点どうしがマッチし得ない組み合わせを除外する。
【0046】
次に、探索部13cが、ステップS220の処理でPが書き換えられたか否か、すなわち枝刈りが行われた否かを確認する(ステップS230)。Pが書き換えられた場合(ステップS230,Yes)、探索部13cは、ステップS220の処理が継続中として、ステップS220に処理を戻す。一方、Pが書き換えられなかった場合(ステップS230,No)、探索部13cは、ステップS220の処理が終了したものとして、ステップS240に処理を進める。
【0047】
ステップS240の処理では、探索部13cが、最新のPを用いたバックトラッキングを実行する関数(PRUNED BACKTRACK(0,i,P))を呼び出してサブグラフマッチング処理を行って、データグラフからサブグラフを抽出する。ここで、PRUNED BACKTRACK(0,i,P)とは、すなわち、バックトラッキングを実行する関数BACKTRACK(0,i)にPが適用されたものである。これにより、一連の探索処理が終了する。
【0048】
図6は、ステップS210の詳細な処理手順を示すフローチャートである。抽出部13aが、各データグラフの頂点v∈Vについて、並列に処理を行う(ステップS211,S216)。また、抽出部13aが各クエリグラフの頂点u∈Vについて、ループ処理を行う(ステップS212,S215)。
【0049】
また、抽出部13aは、vがuにマッチし得る条件を示す次式(3)を満たすか否かを確認する(ステップS213)。この条件は、自身と隣接する頂点とのラベルの組み合わせについて、uとvとが同じラベルを持ち、任意のラベルについてuに隣接する頂点数と同数以上の頂点にvが隣接することを表している。
【0050】
【数3】
【0051】
上記式(3)の条件を満たす場合に(ステップS213,Yes)、抽出部13aはステップS215に処理を進める。一方、上記式(3)の条件を満たさない場合に(ステップS213,No)、抽出部13aは、P[v]からuを削除して(ステップS214)、その後、ステップS215に処理を進める。
【0052】
なお、抽出部13aの処理はvについてのP[v]の更新のみであるため、各vについての処理の並行化を容易に行える。
【0053】
図7は、ステップS220の詳細な処理手順を示すフローチャートである。除外部13bが、各データグラフの頂点v∈Vについて、並列に処理を行う(ステップS221,S226)。また、除外部13aが、vにマッチし得るクエリグラフの頂点u∈Vについて、ループ処理を行う(ステップS222,S225)。
【0054】
また、除外部13bが、vがuにマッチし得る条件を示す次式(4)を満たすか否かを、Pを用いて確認する(ステップS223)。この条件は、uが隣接するすべての頂点すなわちuの隣接頂点のすべてに、vが隣接する頂点すなわちvの隣接頂点もマッチし得ることを表している。
【0055】
【数4】
【0056】
上記式(4)の条件を満たす場合に(ステップS223,Yes)、除外部13bは、ステップS225に処理を進める。一方、上記式(4)の条件を満たさない場合に(ステップS223,No)、除外部13bは、P[v]からuを削除して(ステップS224)、その後、ステップS225に処理を進める。
【0057】
なお、除外部13bの処理も、抽出部13aの処理と同様に、vについてのP[v]の更新のみであるため、各vについての処理の並行化を容易に行える。
【0058】
図8は、ステップS240の詳細な処理手順を示すフローチャートである。探索部13cは、まず、クエリグラフの全頂点について写像Mを設定する処理が終了したか否かを確認する(ステップS241)。終了した場合、すなわち、クエリグラフの頂点の番号i(=0〜|V|−1)がクエリグラフの頂点数|V|に達した場合(ステップS241,Yes)、探索部13cは、写像Mをマッチとして記録して(ステップS242)、呼び出し元に戻り(ステップS246)、処理を終了させる。
【0059】
一方、写像Mを設定する処理が終了していない場合(ステップS241,No)、探索部13cは、uにマッチし得る上記式(2)を満たす頂点を、まだ探索していないデータグラフの頂点(V\M)のうち、u∈P[v]であるvから探索するループ処理を行う(ステップS243,ステップS245)。
【0060】
また、探索部13cは、uの隣接頂点集合N(u)から1つを選び、uにマッチさせたものとして、次のクエリ頂点ui+1にマッチする頂点を探索する処理を行う関数PRUNED BACKTRACKを再帰的に呼び出して実行する。具体的に、探索部13cは、写像MのコピーM’を作成し、M’[u]にvを設定し、PRUNED BACKTRACK(M’,i+1,P)を呼び出して実行する(ステップS244)。
【0061】
なお、図8に示すステップS240の処理は、従来のバックトラッキングとは、ステップS243の処理において、各データグラフの頂点vについてu∈P[v]であることを確認する点のみが異なる。これに伴い、ステップS244の処理において呼び出される関数が、従来のBACKTRACKに代えてPRUNED BACKTRACKになる。このように、各データグラフの頂点vについてu∈P[v]であることを確認することにより、マッチし得ない頂点を経由したデータグラフの頂点の探索を枝刈りすることができる。したがって、バックトラッキングの探索空間を削減することができるので、サブグラフマッチング処理の高速化が可能となる。
【0062】
以上、説明したように、本実施形態の探索装置1では、抽出部13aが、概念を示すラベルが付与された頂点と、頂点間の関係を表すエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと一致する部分を探索する際に、データグラフの各頂点と隣接する頂点とのラベルの組み合わせに基づいて、該データグラフの頂点と、該データグラフの頂点と一致し得るクエリグラフの頂点との組み合わせを抽出する。また、除外部13bが、抽出部13aにより抽出された組み合わせのうち、該データグラフの頂点に隣接する頂点と、対応するクエリグラフの頂点に隣接する頂点とが一致し得ない組み合わせを除外する。
【0063】
これにより、探索装置1は、探索部13cによるバックトラッキングの探索空間を削減することができる。したがって、データグラフの中からクエリグラフを含むものを探索するサブグラフマッチング処理を高速化して現実的な時間で完了させることが可能となる。例えば、利用者からの問い合わせをクエリグラフで表現してデータベース上のデータグラフに対してサブグラフマッチングにより回答を提示するサービス等のように高速な応答を要求された場合にも対応可能となる。
【0064】
また、探索処理では、データグラフの頂点に着目して、マッチし得るクエリグラフの頂点を探索する。これにより、各データグラフの頂点は、他の頂点とマッチし得るかの情報を共有しないため、容易かつ高効率に枝刈りの処理を並列化することが可能となる。
【0065】
[他の実施形態]
上記実施形態において、除外部13bは、データグラフの頂点に隣接する頂点と、対応するクエリグラフの頂点に隣接する頂点とが一致し得るか否かを、該頂点同士の写像が単射であることを条件として判定している。すなわち、除外部13bは、上記式(4)を用いて、クエリグラフの頂点uの隣接頂点のすべてについて、データグラフの頂点vの隣接頂点がマッチし得るか否かを確認している。この式(4)における、単射(injection)の存在の確認には、膨大な計算量が必要となる。
【0066】
そこで、除外部13bは、データグラフの頂点に隣接する頂点と、対応するクエリグラフの頂点に隣接する頂点とが一致し得るか否かを、該頂点同士の写像が単射であるという条件を緩和した判定式を用いて判定することもできる。すなわち、以下に説明するように、厳密な単射の存在の確認に代えて、簡易な判定式を適用することもできる。この場合に、所定の条件の下では厳密な単射の存在の確認を行った場合と同一の解を得ることができる。一方、所定の条件に当てはまらない場合にも、マッチし得ないデータグラフの頂点とクエリグラフの頂点との組み合わせについてマッチし得ると判定するいわゆる偽陽性の解が与えられることはあっても、逆にマッチし得る組み合わせをマッチし得ないとする偽陰性の解が与えられることはない。
【0067】
ここで、図9を参照して、単射の存在の確認の必要性について説明する。図9(b)はクエリグラフqを例示している。また、図9(a)は、データグラフgの一部を例示している。図9(a)には、そこまでの枝刈りで求められた各頂点についての集合P、すなわち上記したステップS223の処理に移行した際の、各データグラフの頂点とマッチし得るクエリグラフの頂点との組み合わせの集合を表すPも例示されている。図9(a)に示されている範囲で、データグラフgはクエリグラフqにマッチしない。仮に、上記したステップS223の処理に移行した際、各データグラフの頂点とマッチし得るクエリグラフの頂点との組み合わせの集合を表すPが、図9(a)に示すように判定されている場合について説明する。この場合に、ステップS223の処理において、上記式(4)に変えて、fが単射であるという条件を除いた次式(5)を用いることにする。
【0068】
【数5】
【0069】
その場合に、vに着目してステップS223の処理を行うと、図9(a)の範囲のデータグラフがクエリグラフにマッチしないにも関わらず、P[v]={u}のままとなる。これは、上記式(5)では、vがuおよびuに同時にマッチする、いわゆる一人二役になっていることに起因する。実際には、uにマッチするデータグラフの頂点と、uにマッチするデータグラフの頂点とは異なるため、一人二役では偽陽性となり、枝刈りの効果を低下させる。
【0070】
このような一人二役による偽陽性の解の発生を回避するために、u,u,u,uのそれぞれの頂点にマッチし得る異なるvの隣接頂点との組み合わせすなわち単射を発見する必要がある。しかしながら、隣接頂点が多くなるほどこの組み合わせの数が爆発的に増大するため、単射の発見に要する計算時間が増大する。
【0071】
そこで、本実施形態では、単射の存在を確認せずに偽陽性の解を可能な限り削減するため、次式(6)に示すように上記式(5)を書き換えることにより、隣接頂点のラベルごとにマッチし得るか否かを確認する。
【0072】
【数6】
【0073】
上記式(6)に含まれる次式(7)の部分に適切な条件を追加することにより、可能な限り偽陽性の解を減らし上記式(4)と同一の解を得るために、以下のように、Nσ(u)の要素数に応じて3つの場合に分けて考える。
【0074】
【数7】
【0075】
まず、|Nσ(u)|=1の場合には、クエリグラフの頂点が1つであるため、データグラフの一つの頂点を複数のクエリグラフの頂点にマッチさせることによって発生する一人二役による偽陽性の解は発生しない。例えば、図9に示した例において、uに隣接するラベルaの頂点はuのみであり、|N(u)|=1である。この場合に、vに隣接するラベルaの頂点がいずれもuにマッチし得なければ、vがuにマッチし得ないことは明らかである。
【0076】
次に、|Nσ(u)|=2の場合には、Nσ(u)の要素をu’,u’とすると、次式(8)に示すように、クエリグラフ頂点u’,u’にマッチし得る2つの異なるデータグラフ頂点が存在する場合には、偽陽性の解が発生しない。
【0077】
【数8】
【0078】
上記式(8)を満たす場合であることは、次式(9)のように容易に確認することができる。すなわち、u’,u’にマッチし得るNσ(v)に含まれるデータグラフ頂点をそれぞれ計数して加算した後、重複して計数しているu’,u’の双方にマッチし得るデータグラフの頂点の数を減算した値が2以上であることを確認すればよい。
【0079】
【数9】
【0080】
例えば、図9に示したグラフからuよびvを除外したグラフについて考える。この場合に、N(u)={u,u}である。ここで、vの隣接頂点のうちuにマッチし得るのはvの1つであり、uにマッチし得るのはv,vの2つであり、加算すると3になる。このうち、重複して計数しているu,uの双方にマッチし得るvの1つを減算して得た値2が2以上であることから、偽陽性の解は発生せず、vはuにマッチし得ると言うことができる。
【0081】
最後に、|Nσ(u)|≧3の場合には、|Nσ(u)|=2の場合と同様のアイディアを用いて偽陽性を排除することが可能である。すなわち、{u’,u’,u’,…}=Nσ(u)として、それぞれにマッチし得る頂点の数の和から、重複して計数した頂点の数を減算する。ただし、この計算の項数は、上記式(9)のとおり|Nσ(u)|=2の場合は3項であるが、|Nσ(u)|の増加に従って爆発的に増加するため、却って計算コストが増大する。
【0082】
そこで、|Nσ(u)|≧3の場合には、偽陽性の解を許容することにする。ただし、任意の2頂点u’,u’∈Nσ(u)について、|Nσ(u)|=2の場合と同様に、偽陽性の解の発生を抑制する。
【0083】
例えば、図9に示したグラフにおいて、u’=u,u’1=uとした場合に、上記式(8)に含まれる部分について、次式(10)が成立することから、データグラフの隣接頂点が一人二役となり、vはuにマッチし得ないことがわかる。
【0084】
【数10】
【0085】
一方、u’=u,u’=uとした場合には、{v,v}または{v,v}の組み合わせが存在するために、vはuにマッチし得うると判定され、偽陽性の解が発生する。
【0086】
以上により、クエリグラフに含まれる任意のラベルσの任意の頂点uについて、|Nσ(u)|≦2の場合には、簡単な条件で偽陽性の解を排除可能であることがわかる。具体的に、データグラフの頂点vがクエリグラフの頂点uにマッチし得るかを確認するために、上記式(4)に変えて、次式(11)が用いられる。
【0087】
【数11】
【0088】
ここで、hは次式(12)により定義される関数である。
【0089】
【数12】
【0090】
一般に、クエリグラフは小さいため、クエリグラフの各頂点の隣接頂点も少数であり、さらに隣接頂点は複数のラベルに分類されることから、|Nσ(u)|≦2を満たすケースは少なくない。また、|Nσ(u)|≧3の場合にも、偽陽性の解が与えられることはあっても偽陰性の解が与えられることはない。したがって、上記ステップS223の処理において、上記式(11)を用いることにより、より高速にサブグラフマッチング処理の枝刈りを行うことが可能となる。
【0091】
[プログラム]
上記実施形態に係る探索装置1が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。一実施形態として、探索装置1は、パッケージソフトウェアやオンラインソフトウェアとして上記の探索処理を実行する探索プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の探索プログラムを情報処理装置に実行させることにより、情報処理装置を探索装置1として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)などの移動体通信端末、さらには、PDA(Personal Digital Assistants)などのスレート端末などがその範疇に含まれる。また、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の探索処理に関するサービスを提供するサーバ装置として実装することもできる。例えば、探索装置1は、グラフデータを入力とし、サブグラフマッチング結果を出力する探索処理サービスを提供するサーバ装置として実装される。この場合、探索装置1は、Webサーバとして実装することとしてもよいし、アウトソーシングによって上記の探索処理に関するサービスを提供するクラウドとして実装することとしてもかまわない。以下に、探索装置1と同様の機能を実現する探索プログラムを実行するコンピュータの一例を説明する。
【0092】
図10に示すように、探索プログラムを実行するコンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0093】
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1061が接続される。
【0094】
ここで、図10に示すように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ1031やメモリ1010に記憶される。
【0095】
また、探索プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明した探索装置1が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
【0096】
また、探索プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
【0097】
なお、探索プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、探索プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LANやWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0098】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0099】
1 探索装置
11 入力部
12 出力部
13 制御部
13a 抽出部
13b 除外部
13c 探索部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10