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

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

▶ 日本電信電話株式会社の特許一覧 ▶ 国立大学法人大阪大学の特許一覧

特許6777903探索装置、探索方法および探索プログラム
<>
  • 特許6777903-探索装置、探索方法および探索プログラム 図000011
  • 特許6777903-探索装置、探索方法および探索プログラム 図000012
  • 特許6777903-探索装置、探索方法および探索プログラム 図000013
  • 特許6777903-探索装置、探索方法および探索プログラム 図000014
  • 特許6777903-探索装置、探索方法および探索プログラム 図000015
  • 特許6777903-探索装置、探索方法および探索プログラム 図000016
  • 特許6777903-探索装置、探索方法および探索プログラム 図000017
  • 特許6777903-探索装置、探索方法および探索プログラム 図000018
  • 特許6777903-探索装置、探索方法および探索プログラム 図000019
  • 特許6777903-探索装置、探索方法および探索プログラム 図000020
  • 特許6777903-探索装置、探索方法および探索プログラム 図000021
  • 特許6777903-探索装置、探索方法および探索プログラム 図000022
  • 特許6777903-探索装置、探索方法および探索プログラム 図000023
  • 特許6777903-探索装置、探索方法および探索プログラム 図000024
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6777903
(24)【登録日】2020年10月13日
(45)【発行日】2020年10月28日
(54)【発明の名称】探索装置、探索方法および探索プログラム
(51)【国際特許分類】
   G06F 16/903 20190101AFI20201019BHJP
   G06F 16/28 20190101ALI20201019BHJP
【FI】
   G06F16/903
   G06F16/28
【請求項の数】6
【全頁数】17
(21)【出願番号】特願2017-230089(P2017-230089)
(22)【出願日】2017年11月30日
(65)【公開番号】特開2019-101610(P2019-101610A)
(43)【公開日】2019年6月24日
【審査請求日】2019年11月18日
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】新井 淳也
(72)【発明者】
【氏名】藤原 靖宏
(72)【発明者】
【氏名】鬼塚 真
【審査官】 甲斐 哲雄
(56)【参考文献】
【文献】 特開2015−156216(JP,A)
【文献】 新井 淳也 その他,データグラフ上の並列枝刈りによるサブグラフマッチング,第9回データ工学と情報マネジメントに関するフォーラム(第15回日本データベース学会年次大会)[online],日本,電子情報通信学会データ工学研究専門委員会,2017年 2月27日,DEIM Forum 2017 E8-2,pp.1-8,Internet<URL:http://db-event.jpn.org/deim2017/papers/103.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00−16/958
(57)【特許請求の範囲】
【請求項1】
ラベルが付与された頂点と、隣接する頂点間を接続するエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと同型な部分を探索する際に、該探索の過程において発生する探索の失敗に基づいて、クエリグラフの頂点とデータグラフの頂点との組み合わせの集合を、探索の失敗の要因を表す失敗パターンとして抽出するパターン抽出部と、
前記パターン抽出部により抽出された前記失敗パターンと合致する探索の状態を枝刈りして、前記データグラフから前記クエリグラフと同型な部分を探索する探索部と、
を備えることを特徴とする探索装置。
【請求項2】
前記データグラフの各頂点と隣接する頂点とのラベルの組み合わせに基づいて、前記クエリグラフの頂点と一致し得る前記データグラフの頂点に隣接する頂点のうち、前記クエリグラフの頂点に隣接する頂点と一致し得る該データグラフの頂点を、前記データグラフの各頂点に対応する候補頂点として抽出する頂点抽出部をさらに備え、
前記パターン抽出部は、抽出された前記候補頂点を用いて前記失敗パターンを抽出することを特徴とする請求項1に記載の探索装置。
【請求項3】
頂点と、隣接する頂点間を接続するラベルが付与されたエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと同型な部分を探索する際に、該探索の過程において発生する探索の失敗に基づいて、クエリグラフの頂点とデータグラフの頂点との組み合わせの集合を、探索の失敗の要因を表す失敗パターンとして抽出するパターン抽出部と、
前記パターン抽出部により抽出された前記失敗パターンと合致する探索の状態を枝刈りして、前記データグラフから前記クエリグラフと同型な部分を探索する探索部と、
を備えることを特徴とする探索装置。
【請求項4】
前記パターン抽出部は、前記失敗パターンをハッシュテーブルとして記憶部に記録し、
前記探索部は、該記憶部を参照して前記失敗パターンと合致する探索の状態を枝刈りして、前記データグラフから前記クエリグラフと同型な部分を探索することを特徴とする請求項1〜3のいずれか1項に記載の探索装置。
【請求項5】
探索装置で実行される探索方法であって、
ラベルが付与された頂点と、隣接する頂点間を接続するエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと同型な部分を探索する際に、該探索の過程において発生する探索の失敗に基づいて、クエリグラフの頂点とデータグラフの頂点との組み合わせの集合を、探索の失敗の要因を表す失敗パターンとして抽出するパターン抽出工程と、
前記パターン抽出工程において抽出された前記失敗パターンと合致する探索の状態を枝刈りして、前記データグラフから前記クエリグラフと同型な部分を探索する探索工程と、
を含むことを特徴とする探索方法。
【請求項6】
ラベルが付与された頂点と、隣接する頂点間を接続するエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと同型な部分を探索する際に、該探索の過程において発生する探索の失敗に基づいて、クエリグラフの頂点とデータグラフの頂点との組み合わせの集合を、探索の失敗の要因を表す失敗パターンとして抽出するパターン抽出ステップと、
前記パターン抽出ステップにおいて抽出された前記失敗パターンと合致する探索の状態を枝刈りして、前記データグラフから前記クエリグラフと同型な部分を探索する探索ステップと、
をコンピュータに実行させることを特徴とする探索プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、探索装置、探索方法および探索プログラムに関する。
【背景技術】
【0002】
グラフ構造の中からクエリとして与えられた特定の部分構造すなわちサブグラフを発見する問題は、サブグラフマッチングと呼ばれる。従来、サブグラフマッチングでは、バックトラッキングと呼ばれる探索アルゴリズムに基づいて探索されていた(非特許文献1,2参照)。バックトラッキングでは、クエリグラフQおよびデータグラフGを入力として、データグラフGに含まれる全てのクエリグラフQの埋め込みが報告される。その際、クエリグラフQの頂点の割り当て先となり得るデータグラフGの候補頂点が抽出され、クエリグラフQの頂点の割り当て先を候補頂点の中から変更しながら選択して埋め込みを探索することにより、埋め込みが列挙される。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Huahai He,Ambuj K. Singh,“Graphs-at-a-time: Query Language and Access Methods for Graph Databases”,Proceedings of the 2008 ACM SIGMOD International Conference on Management of Data,SIG-MOD '08,2008年,pp.405-418
【非特許文献2】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,2012年,pp.133-144
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のバックトラッキングによれば、探索対象であるデータグラフG中の埋め込みが存在しない部分に対しても、網羅的に探索を行うために、長い処理時間を要していた。そのため、例えば、グラフデータ向けに設計されたデータベースであるグラフデータベースに対する、サブグラフマッチングとして記述されるクエリを用いた対話的な作業や、グラフデータベースに依存するサービスの提供が困難な場合があった。また、グラフに対してサブグラフマッチングを用いて、例えば、特定のサブグラフの出現回数をグラフの特徴量として利用するデータマイニングを行う際に、現実的な時間で完了できない場合があった。
【0005】
本発明は、上記に鑑みてなされたものであって、データグラフの中からクエリグラフと同型な部分を探索するサブグラフマッチング処理を高速化することを目的とする。
【課題を解決するための手段】
【0006】
上述した課題を解決し、目的を達成するために、本発明に係る探索装置は、ラベルが付与された頂点と、隣接する頂点間を接続するエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと同型な部分を探索する際に、該探索の過程において発生する探索の失敗に基づいて、クエリグラフの頂点とデータグラフの頂点との組み合わせの集合を、探索の失敗の要因を表す失敗パターンとして抽出するパターン抽出部と、前記パターン抽出部により抽出された前記失敗パターンと合致する探索の状態を枝刈りして、前記データグラフから前記クエリグラフと同型な部分を探索する探索部と、を備えることを特徴とする。
【発明の効果】
【0007】
本発明によれば、データグラフの中からクエリグラフと同型な部分を探索するサブグラフマッチング処理を高速化することができる。
【図面の簡単な説明】
【0008】
図1図1は、サブグラフマッチングに関する定義を示す図である。
図2図2は、再帰関数の処理手順を示すフローチャートである。
図3図3は、サブグラフマッチング処理を説明するための説明図である。
図4図4は、サブグラフマッチング処理を説明するための説明図である。
図5図5は、本実施形態の探索装置の処理概要を説明するための説明図である。
図6図6は、本実施形態の探索装置の処理概要を説明するための説明図である。
図7図7は、本実施形態の探索装置の概略構成を示す模式図である。
図8図8は、本実施形態の探索装置による探索処理に関する定義および定理を示す図である。
図9図9は、本実施形態の探索装置による探索処理に関する定理を示す図である。
図10図10は、本実施形態の探索装置による探索処理に関する定理を示す図である。
図11図11は、本実施形態の探索装置による探索処理に関する定理を示す図である。
図12図12は、本実施形態の探索処理手順を示すフローチャートである。
図13図13は、他の実施形態の探索処理を説明するための説明図である。
図14図14は、探索プログラムを実行するコンピュータを例示する図である。
【発明を実施するための形態】
【0009】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0010】
[従来のサブグラフマッチング処理]
まず、従来のサブグラフマッチング処理について説明する。以下の説明において、頂点がラベルを持つ無向グラフG=(V,E,Σ,l)を処理の対象とする。以下、Gをデータグラフと記す。ここで、Vは頂点の集合、E⊆V×Vはエッジの集合、Σはラベルの集合、lは頂点とラベルとを対応させる関数を示す。同様に、クエリグラフQ=(V,E,Σ,l)を処理の対象とする。クエリグラフの頂点は、u,u,…,u|VQ|というように、番号付けされているものとする。
【0011】
また、サブグラフマッチングとは、データグラフGとクエリグラフQとが与えられたときに、サブグラフ同型である部分への埋め込みMを列挙する問題と定義する。
【0012】
ここで、図1を参照して、サブグラフマッチングについて説明する。図1は、サブグラフマッチングに関する定義を示す図である。以下の説明において、図1の定義1に示すように、埋め込みを集合として表現する。サブグラフマッチングでは、クエリグラフの頂点(以下、クエリ頂点と記す。)から、データグラフの頂点(以下、データ頂点と記す。)への埋め込みM∈V×Vを探索する。
【0013】
また、探索の過程において、図1の定義2に示す部分埋め込み、すなわち、一部のクエリ頂点についてのみ、データ頂点が割り当てられた埋め込みを考える必要がある。なお、本実施形態において、定義域がV全体であるような埋め込みを完全な埋め込みと記す場合がある。
【0014】
また、次式(1)〜(3)に示す3つの制約を満たす埋め込みM:V→Vを定義できるときに、QはGに対してサブグラフ同型であるものする。
【0015】
【数1】
【0016】
【数2】
【0017】
【数3】
【0018】
従来のサブグラフマッチング処理の主流は、バックトラッキングに基づく探索アルゴリズムである。上記したとおり、バックトラッキングは、主に、候補頂点の抽出と、埋め込みの列挙との2つの処理を含む。
【0019】
まず、候補頂点の抽出において、候補頂点すなわち各クエリ頂点の割り当て先となり得るデータ頂点の集合C[u]⊆Vが抽出される。uがデータ頂点vに割り当て可能か否かは、例えば、次式(4)〜(6)を用いて判定される(非特許文献1参照)。つまり、次式(4)〜(6)の全てを満たす場合に、uがvに割り当て可能と判定される。
【0020】
【数4】
【0021】
【数5】
【0022】
【数6】
【0023】
上記式(4)では、まず、ラベルの一致が確認される。従って、C[u]に含まれるデータ頂点は、ラベル制約を満たす。また、上記式(5)にて次数が比較され、上記式(6)にて隣接頂点のラベルごとに隣接頂点数が比較される。これらの条件では、vにu以上の数の隣接頂点がなければ、uの隣接頂点をvの隣接頂点に割り当てることができないことが利用されている。このように、確認が容易な条件により、割り当て不可能なクエリ頂点とデータ頂点との組み合わせを除外して、以降の探索を高速化している。
【0024】
次に、図2を参照して、埋め込みの列挙について説明する。埋め込みの列挙では、再帰関数Searchが呼び出され実行される。図2は、再帰関数の処理手順を示すフローチャートである。図2に示すフローチャートでは、まず、Search(φ)が呼び出される。ただし、φは空集合を表す。再帰関数Search(P)は、部分埋め込みPを引数として受け取り、まず、Pが完全な埋め込みであるか否かが確認される(ステップS100)。すなわち、k=|P|として、k=|V|であるか否かが確認される。Pが完全な埋め込みである場合(ステップS100,Yes)、Pは埋め込みとして報告され(ステップS180)、処理は関数の呼び出し元に戻る。
【0025】
一方、Pが完全な埋め込みではない場合(ステップS100,No)、ステップS110に処理が進む。ステップS110の処理では、クエリ頂点uk+1がデータ頂点vに割り当てられる。その際、vをC[u]から選択することによりラベル制約が満たされることになる。同時に、vは、既にPに含まれるクエリ頂点と、データ頂点に関してエッジ制約が満たされなければならない。具体的には、次式(7)に示すエッジ制約を満たすv∈C[u]が選択される。
【0026】
【数7】
【0027】
次に、Pに(uk+1,v)の割り当てが追加された部分埋め込みPが作成され、Pについて単射制約が確認される(ステップS120)。Pが単射であれば(ステップS120,Yes)、Pを引数として再帰関数Search(P)が再帰呼び出しされる(ステップS140)。一方、Pが単射でなければ(ステップS120,No)、再帰関数Search(P)は再帰呼び出しされず、呼び出し元に戻る(ステップS150)。
【0028】
次に、図3および図4を参照して、従来のサブグラフマッチング処理を具体的に説明する。図3および図4は、サブグラフマッチング処理について説明するための説明図である。従来のサブグラフマッチング処理では、まず、上記式(4)〜(6)を用いて、候補頂点集合が抽出される。図3に示す例では、C[u1]={v},C[u]={v,…,v},C[u]={v,…,v},C[u]={v,v10}が抽出される。
【0029】
この場合に、図4に示すバックトラッキングの探索木に従って、C[u1]={v}であることから、最初にuがvに割り当てられる。またここでは、u以降については、頂点番号の昇順に探索する場合について考える。すなわち、C[u]からvが選択され、C[u]からvが選択され、C[u]からv10が選択される。この場合に、全てのクエリ頂点がデータ頂点に割り当てられるので、{(u,v),(u、v),(u,v),(u,v10)}が埋め込みとして報告される。
【0030】
さらに、他の埋め込みが探索される。uの割り当て先の選択に戻り、uがvに割り当てられ、uがvに割り当てられる。この場合に、vに隣接するuの候補頂点vには、既にuが割り当てられており、単射制約の違反となるため、uをvに割り当てることができない。vの隣接頂点には、他にuの候補頂点が存在しないため、探索失敗となる。
【0031】
の残りの候補頂点v、vについても、同様に、uをvに割り当てることができず、探索失敗となる。また、uの割り当て先の選択に戻り、uがvに割り当てられた場合、およびuがvに割り当てられた場合にも、同様に、探索失敗となる。以上の処理により、全ての候補頂点について探索が行われたことになり、探索が終了する。
【0032】
このように、従来のサブグラフマッチング処理は、クエリ頂点の割り当て先を変更しながら再帰呼び出しを繰り返すバックトラッキングに基づいて実行されている。
【0033】
[探索装置の処理概要]
次に、図5および図6を参照して、本実施形態に係る探索装置の処理概要を説明する。本実施形態の探索装置は、図3に示した例において、上記の従来のサブグラフマッチング処理と同様に、まず、{(u,v),(u、v),(u,v),(u,v10)}を埋め込みとして報告する。
【0034】
次に、探索装置は、バックトラッキングによってuをvに割り当て、uをvに割り当てて探索失敗となった場合に、失敗パターンとして記録する。すなわち、「uのvへの割り当てと、uのvへの割り当てとを同時に行うと、探索に失敗する」ということを失敗パターンとして抽出して記録しておく。同様に、uをvまたはvに割り当てて探索失敗となった場合にも、「uのv1への割り当てと、uのv(またはv)への割り当てとを同時に行うと、探索に失敗する」ということを失敗パターンとして抽出して記録しておく。
【0035】
また、探索装置が、uの割り当て先をvに変更した場合に、uを隣接頂点v,v,vに割り当てた部分埋め込みは、いずれも記録済みの失敗パターンに合致する。従って、uを候補頂点に割り当てた部分埋め込みを作成することなく、探索失敗になることがわかる。uの割り当て先をvに変更した場合についても、同様に、探索失敗になることがわかる。
【0036】
このように、本実施形態の探索装置によれば、図5に示す探索木のように、図4に示した従来のサブグラフマッチングの探索木と比較して、探索空間が減少する。すなわち、従来は、図4に示したように、uをv,v,vのいずれかに割り当てるような埋め込みが存在しないにもかかわらず、それぞれuをv,v,vに割り当てて探索していた。つまり、従来は、ある部分埋め込みPについて、P⊂Mであるような完全な埋め込みMが存在しない場合にも、バックトラッキングによる探索を行っていた。本実施形態の探索装置は、このような埋め込みの発見に至らない探索の枝刈りを行う。したがって、本実施形態の探索装置によれば、高速なサブグラフマッチングが可能となる。
【0037】
また、図6のフローチャートに示すように、本実施形態の探索装置による埋め込みの列挙の処理は、図2に示した従来のサブグラフマッチング処理における再帰関数の処理手順と、ステップS130、S160〜S170が異なる。すなわち、図6に示すように、本実施形態の探索装置においては、失敗パターンが抽出されて記録される(ステップS160〜S170)。具体的には、再帰関数Search(P)の再帰呼び出しにおいて埋め込みが一つも報告されなかった場合に(ステップS160,Yes)、Pから失敗パターンが抽出され記録される(ステップS170)。埋め込みが報告された場合には(ステップS160,No)、処理は関数の呼び出し元に戻る。
【0038】
また、抽出された失敗パターンと照合される(ステップS130)。具体的には、作成された部分埋め込みPが記録されている失敗パターンのいずれにも合致しない場合に(ステップS130,Yes)、再帰関数Search(P)が再帰呼び出しされる(ステップS140)。Pがいずれかの失敗パターンに合致した場合には(ステップS130,No)、ステップS150に処理が進む。その他の処理は図2に示した従来のサブグラフマッチング処理と同様であるので、説明を省略する。
【0039】
[探索装置の構成]
次に、図7を参照して、本実施形態に係る探索装置の概略構成を説明する。図7に示すように、本実施形態に係る探索装置1は、ワークステーションやパソコン等の汎用コンピュータで実現され、入力部11と出力部12と制御部13と記憶部14とを備える。探索装置1は、後述する探索処理を実行して、失敗パターンの枝刈りを行いながら、サブグラフマッチング処理を行う。
【0040】
入力部11は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部13に対して各種指示情報を入力する。また、本実施形態において、入力部11は、後述する探索処理の対象のデータグラフGおよびクエリグラフQを含むグラフデータを受け付けて制御部13に入力する。
【0041】
出力部12は、液晶ディスプレイなどの表示装置、プリンター等の印刷装置、情報通信装置等によって実現され、例えば、後述する探索処理の処理結果であるサブグラフマッチング結果等を操作者に対して出力する。
【0042】
また、探索装置1は、図示しない通信制御部を備える。通信制御部は、NIC(Network Interface Card)等で実現され、LAN(Local Area Network)やインターネットなどの電気通信回線を介したサーバ等の外部の装置と制御部13との通信を制御する。例えば、上記のグラフデータは、通信制御部を介して外部の装置から受け付けてもよい。また、サブグラフマッチング結果は、通信制御部を介して外部の装置に出力されてもよい。
【0043】
記憶部14は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部には、探索装置1を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが予め記憶され、あるいは処理の都度一時的に記憶される。例えば、後述する探索処理において、抽出された失敗パターンが記録される。この記憶部14は、通信制御部を介して制御部13と通信する構成でもよい。
【0044】
制御部13は、CPU(Central Processing Unit)等の演算処理装置がメモリに記憶された処理プログラムを実行することにより、図3に例示するように、頂点抽出部13a、パターン抽出部13b、および探索部13cとして機能する。なお、制御部13は、後述する探索処理が実現されるならば、これらの機能部とは異なる機能単位で構成されていてもよい。
【0045】
また、本実施形態において、制御部13は複数CPUコアで実現されてもよい。これにより、バックトラッキングの各枝に対応する処理や、後述する探索処理における各データグラフの頂点に関する処理を、複数のCPUによる並行処理で行うことが可能となる。
【0046】
具体的には、制御部13は、ラベルが付与された頂点と、隣接する頂点間を接続するエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと一致する部分を探索する際に、以下の探索処理を実行する。
【0047】
すなわち、頂点抽出部13aは、データグラフの各頂点と隣接する頂点とのラベルの組み合わせに基づいて、クエリグラフの頂点と一致し得るデータグラフの頂点に隣接する頂点のうち、クエリグラフの頂点に隣接する頂点と一致し得る該データグラフの頂点を、データグラフの各頂点に対応する候補頂点として抽出する。具体的には、頂点抽出部13aは、従来のバックトラッキング処理と同様に、上記式(4)〜(6)を満たす候補頂点を抽出する。
【0048】
また、パターン抽出部13bは、探索の過程において発生する探索の失敗に基づいて、クエリグラフの頂点とデータグラフの頂点との組み合わせの集合を、探索の失敗の要因を表す失敗パターンとして抽出する。具体的には、パターン抽出部13bは、以下に説明するように、抽出された候補頂点を用いて失敗パターンを抽出する。
【0049】
また、探索部13cは、パターン抽出部13bにより抽出された失敗パターンと合致する探索の状態を枝刈りして、データグラフからクエリグラフと同型な部分を探索する。
【0050】
ここで、図8は、本実施形態の探索装置による探索処理に関する定義および定理を示す図である。以下に説明する探索処理において、図8に示す定義および定理が適用される。すなわち、図8の定義3に示すように、失敗パターンが定義される。また、図8の定義4に示すように、パターンの合致が定義される。また、図8の定理1に示すように、失敗パターンの判定が定義される。
【0051】
パターン抽出部13bは、図6に示したように、探索が失敗した場合に部分埋め込みから失敗パターンを抽出する(ステップS170)。パターン抽出部13bは、より多くの部分埋め込みに合致してより効果的に探索の枝刈りを行うため、より一般化された失敗パターンを抽出することが望ましい。すなわち、失敗パターンDに含まれる、クエリ頂点とデータ頂点との組み合わせの数|D|が小さいことが望ましい。そこで、パターン抽出部13bは、探索失敗であることがわかった部分埋め込みPから、クエリ頂点とデータ頂点との組み合わせの一部を抽出して失敗パターンDを作成する。したがって、作成される失敗パターンDは、抽出元の部分埋め込みをPとしたときにその部分集合となるため、次式(8)を満たす。
【0052】
【数8】
【0053】
失敗パターンは、探索失敗の原因に基づいて作成される。探索失敗の原因は、図6に示したように、エッジ制約を満たす候補頂点がないこと(ステップS110)、Pに新しい割り当てを追加して作成したPがいずれも失敗であること(ステップS120〜S140)の2つに大別される。
【0054】
まず、エッジ制約を満たす候補頂点がない場合の失敗パターンの抽出方法について説明する。図6のステップS110の処理対象である上記式(7)を満たす候補頂点vの集合をC[u]とすると、次式(9)が成立する。
【0055】
【数9】
【0056】
ここで、図9は、本実施形態の探索装置による探索処理に関する定理を示す図である。クエリ頂点uに対応する候補頂点がない状態は、空集合であるようなC[u]によって表される。また、まだデータ頂点が割り当てられていないクエリ頂点の候補頂点がなくなった場合に、探索失敗となる。換言すると、図9の定理2に示すように、式(10)が成立する。
【0057】
さらに、C[u]が空集合である場合について、図9に示す定理3が成立する。
【0058】
つまり、エッジ制約により候補頂点がなくなった場合に、C[u]が空集合となるuが存在する。その場合のiについて、D⊆PかつDead(D)であるようなDが存在し、上記式(8)を満たす。そこで、パターン抽出部13bは、C[u]が空集合であるような任意のDを失敗パターンとして登録する。
【0059】
次に、Pがいずれも失敗である場合の失敗パターンの抽出方法について説明する。ここで、図10は、本実施形態の探索装置による探索処理に関する定理を示す図である。Pがいずれも失敗である場合に、図10に示す定理4および定理5が成立する。すなわち、Pがいずれも失敗である場合について、定理4の式(13)が成立することから、式(15)に示す失敗パターンの集合を定義できる。この場合の失敗パターンについて、定理5の式(16)が成立する。したがって、パターン抽出部13bは、式(16)を用いて作成した失敗パターンを登録する。
【0060】
次に、定理4の式(15)に示した失敗パターンの集合を得るために、PからDを抽出する方法について説明する。Pが失敗となる原因は、図6に示したように、Pが単射でないこと(ステップS120)、Pがいずれかの失敗パターンに合致すること(ステップS130)、再帰呼び出しした再帰関数が探索失敗となること(ステップS140)の3つである。このうち、Pがいずれかの失敗パターンに合致する場合については、失敗パターンが既に抽出され記録されている。また、再帰呼び出しした再帰関数が探索失敗となる場合は、再帰関数内で失敗パターンの抽出と記録とが行われる。したがって、パターン抽出部13bは、Pが単射でない場合にのみ、新たに失敗パターンの抽出を行う。
【0061】
部分埋め込みPが単射でないこと、すなわち、同じデータ頂点に複数のクエリ頂点が割り当てられることによる失敗は、図11に示す定理6および定理7のように表される。すなわち、Pが単射でない場合について、定理6の式(18)が成立する。また、式(19)のDは、定理7の式(20)に示すように、それ自体が失敗パターンとなっている。
【0062】
なお、この探索アルゴリズムでは、再帰関数Searchには単射であることが確認された部分埋め込みが引き渡されている(ステップS120)。そのため、Pが単射でないことは、最後に追加されたuと、もう一つの他のクエリ頂点とが同じデータ頂点に割り当てられたことに起因する。したがって、Pが単射でないならば、|D|=2である。この場合に、パターン抽出部13bは、DをPから抽出した失敗パターンとする。
【0063】
[探索処理]
次に、図12を参照して、探索装置1の探索処理について説明する。図12は、本実施形態の探索処理手順を示すフローチャートである。図12のフローチャートは、図6に示したフローチャートに、失敗パターンを抽出するための処理が追加されたものである。ただし、失敗パターンの集合は、関数Searchのスコープ外で定義された大域変数であり、空集合で初期化されているものとする。
【0064】
この探索処理では、パターン抽出部13bが、上記の定理3,5,7に基づいて失敗パターンDを作成し、作成したDを失敗パターン集合へ追加する。また、パターン抽出部13bは、関数Searchの戻り値としてPから抽出された失敗パターンを返す。ただし、パターン抽出部13bは、引数Pを含む埋め込みが発見された場合には空集合を返す。
【0065】
まず、図2に示した従来のサブグラフマッチング処理と同様に、探索部13cは、Pが完全な埋め込みであるか否かを確認する(ステップS100)。完全な埋め込みである場合には(ステップS100,Yes)、探索部13cは、Pを埋め込みとして報告する(ステップS180)。また、Pは失敗ではないので、探索部13cは、Pから抽出された失敗パターンDを空集合とする(ステップS161)。
【0066】
完全な埋め込みでなかった場合には(ステップS100,No)、探索部13cは、Pが図9に示した定理2に基づく失敗であるか否かを確認する(ステップS163)。失敗の場合には(ステップS163,Yes)、パターン抽出部13bは、図9に示した定理3に基づいて失敗パターンを抽出する(ステップS164)。失敗でない場合には(ステップS163,No)、探索部13cが、Pに新しい割り当てを追加したPについて処理を進める。
【0067】
すなわち、探索部13cは、まず、Pのそれぞれから抽出された失敗パターンDの集合を空集合で初期化する(ステップS165)。次に、探索部13cは、エッジ制約を満たす頂点v∈C[uk+1]について、ループを実行する(ステップS110)。すなわち、探索部13cは、Pを作成し(ステップS121)、それが単射であるか否かを確認する(ステップS122)。ここで、Pは単射であるので、Pが単射でないことは、v∈val(P)であるか否かによって確認できる。
【0068】
単射でない場合に(ステップS122,Yes)、パターン抽出部13bが、図11に示した定理7に基づいて失敗パターンを失敗パターンの集合に追加する(ステップS131)。単射である場合に(ステップS122,No)、探索部13cは、Pが失敗パターンの集合に記録された失敗パターンに合致するか否かを確認する(ステップS132)。
【0069】
合致する失敗パターンDが存在する場合には(ステップS132,Yes)、このDはPから抽出された失敗パターンであるので、パターン抽出部13bは、このDを失敗パターンの集合に追加する(ステップS133)。合致する失敗パターンがなければ(ステップS132,No)、探索部13cは、Search(P)を再帰呼び出しし、戻り値をDに代入する(ステップS141)。また、探索部13cは、戻り値Dを失敗パターンの集合に追加する(ステップS142)。
【0070】
以上の処理を、全てのv∈C[uk+1]について実行したら、探索部13cは、Pの中に成功したものが存在したか否かを確認する。関数Searchは、探索に成功した場合に空集合を返すので、成功したものがあればステップS142の処理で空集合が追加されている。したがって、探索部13cは、失敗パターンの集合が空集合を含むか否かを確認する(ステップS166)。
【0071】
失敗パターンの集合が空集合を含む場合に(ステップS166,Yes)、Pを含む完全な埋め込みが存在することを意味するので、探索部13cは、失敗パターンDを空集合とする(ステップS167)。失敗パターンの集合が空集合を含まない場合には(ステップS166,No)、Pは探索失敗であるので、パターン抽出部13bは、図10に示した定理5に基づいて抽出した失敗パターンをDに代入する(ステップS168)。
【0072】
以上の処理の後に、Dが空集合でない場合、すなわち、Pが失敗であった場合に(ステップS169,Yes)、パターン抽出部13bは、Dを失敗パターンの集合に追加する(ステップS170)。これにより、またはDが空集合であった場合に(ステップS169,No)、関数Searchは、Dを返却して呼び出し元へ戻る。
【0073】
以上、説明したように、本実施形態の探索装置1は、ラベルが付与された頂点と、隣接する頂点間を接続するエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと同型な部分を探索する。その際に、パターン抽出部13bが、探索の過程において発生する探索の失敗に基づいて、クエリグラフの頂点とデータグラフの頂点との組み合わせの集合を、探索の失敗の要因を表す失敗パターンとして抽出する。また、探索部13cが、パターン抽出部13bにより抽出された失敗パターンと合致する探索の状態を枝刈りして、データグラフからクエリグラフと同型な部分を探索する。
【0074】
これにより、データグラフの中からクエリグラフを含むものを探索するサブグラフマッチング処理を高速化することが可能となる。したがって、例えば、グラフデータ向けに設計されたデータベースであるグラフデータベースに対する、サブグラフマッチングとして記述されるクエリを用いた対話的な作業や、グラフデータベースに依存するサービスを容易に提供できる。また、グラフに対してサブグラフマッチングを用いて、例えば、特定のサブグラフの出現回数をグラフの特徴量として利用するデータマイニングを行う場合に、現実的な時間で完了できる。
【0075】
なお、ラベルがエッジに付与された場合にも適用できる。すなわち、探索装置1は、頂点と、隣接する頂点間を接続するラベルが付与されたエッジとで構成されるグラフのうち、検索対象のデータのグラフであるデータグラフから、検索に使用されるクエリのグラフであるクエリグラフと同型な部分を探索してもよい。この場合に、パターン抽出部13bは、探索の過程において発生する探索の失敗に基づいて、クエリグラフの頂点とデータグラフの頂点との組み合わせの集合を、探索の失敗の要因を表す失敗パターンとして抽出する。これにより、探索処理を適用できる範囲が拡大する。
【0076】
[他の実施形態]
上記実施形態において、探索装置1は、失敗パターンの集合の中から部分埋め込みに合致する失敗パターンを探索している(図12のステップS132)が、これに限定されない。図13は、他の実施形態の探索処理を説明するための説明図である。集合の中から特定の条件を満たす要素を探索する作業は、一つ一つの要素を確認する方法では要素の数に比例した処理時間を要し、処理時間が増大する。また、集合に追加される失敗パターンが膨大な数になり得るため、記憶装置に全ての情報を記録できないおそれがある。
【0077】
そこで、図13に示すように、失敗パターンをハッシュテーブルによって保持してもよい。この場合に、探索装置1は、部分埋め込みPに最後に追加した割り当て(u,P[u])と、Pから抽出された失敗パターンとを対応付けて記憶部14に保持する。
【0078】
これにより、図12のステップS132の処理で確認される失敗パターンが一つになるため、処理時間が短縮される。また、ステップS170の処理において、ハッシュテーブルの値が上書きされ、古い値は保持されないため、記録される失敗パターンの数が減少する。存在し得るクエリ頂点とデータ頂点との組み合わせは、最大でも|V||V|通りである。保持される失敗パターンの数はこれ以下の数となるため、抽出された失敗パターンの全てを保持した場合と比較して、圧倒的に少なくなる。したがって、限られた記憶装置を用いても探索処理を実行することが可能となる。
【0079】
[プログラム]
上記実施形態に係る探索装置1が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。一実施形態として、探索装置1は、パッケージソフトウェアやオンラインソフトウェアとして上記の探索処理を実行する探索プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の探索プログラムを情報処理装置に実行させることにより、情報処理装置を探索装置1として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)などの移動体通信端末、さらには、PDA(Personal Digital Assistants)などのスレート端末などがその範疇に含まれる。また、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の探索処理に関するサービスを提供するサーバ装置として実装することもできる。例えば、探索装置1は、グラフデータを入力とし、サブグラフマッチング結果を出力する探索処理サービスを提供するサーバ装置として実装される。この場合、探索装置1は、Webサーバとして実装することとしてもよいし、アウトソーシングによって上記の探索処理に関するサービスを提供するクラウドとして実装することとしてもかまわない。以下に、探索装置1と同様の機能を実現する探索プログラムを実行するコンピュータの一例を説明する。
【0080】
図14は、探索プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0081】
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1061が接続される。
【0082】
ここで、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ1031やメモリ1010に記憶される。
【0083】
また、探索プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明した探索装置1が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
【0084】
また、探索プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
【0085】
なお、探索プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、探索プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LANやWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0086】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0087】
1 探索装置
11 入力部
12 出力部
13 制御部
13a 頂点抽出部
13b パターン抽出部
13c 探索部
14 記憶部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14