(57)【要約】【課題】PPRに基づく関連度の高い個数のノードもしくは閾値内のノードを高速かつ正確に検索する。【解決手段】複数のノードからなるグラフデータと問い合わせ分布からPPR（Personalized PageRank）に基づき関連度を計算し、関連度が高い順にK 個のノードを検索する、又は所定の閾値よりも大きい関連度を持つノードを検索する関連ノード検索装置において、前記グラフデータから、PPRに基づく特定のノードの関連度を算出するために用いるユニタリ行列と上三角行列の逆行列を計算し、記憶手段に格納する事前計算手段と、前記問い合わせ分布、及び前記事前計算手段により求めたユニタリ行列と上三角行列の逆行列を用いて、関連度が高い順にK 個のノードを検索、又は所定の閾値よりも大きい関連度を持つノードを検索し、出力する検索手段とを備える。【選択図】図１
2014021862.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードからなるグラフデータと問い合わせ分布からPPR（Personalized PageRank）に基づき関連度を計算し、関連度が高い順にK 個のノードを検索する、又は所定の閾値よりも大きい関連度を持つノードを検索する関連ノード検索装置であって、
前記グラフデータから、PPRに基づく特定のノードの関連度を算出するために用いるユニタリ行列と上三角行列の逆行列を計算し、記憶手段に格納する事前計算手段と、
前記問い合わせ分布、及び前記事前計算手段により求めたユニタリ行列と上三角行列の逆行列を用いて、関連度が高い順にK 個のノードを検索、又は所定の閾値よりも大きい関連度を持つノードを検索し、出力する検索手段と
を備えることを特徴とする関連ノード検索装置。
【請求項２】
前記事前計算手段は、
前記ユニタリ行列と前記上三角行列の逆行列とがそれぞれ疎になるように、前記グラフデータにおけるノードを並び替え、ノードを並び替えたグラフデータを記憶手段に格納するノード並び替え手段と、
前記ノード並び替え手段によりノードが並び替えられたグラフデータを用いて、前記ユニタリ行列と前記上三角行列の逆行列を計算する逆行列計算手段と、を備え、
前記検索手段は、
グラフの隣接行列及び前記問い合わせ分布に基づいて全てのノードについての関連度の下限値を推定し、当該下限値に基づいて関連度の上限値を推定する関連度推定手段と、
特定のノードについて、前記ユニタリ行列と前記上三角行列の逆行列を用いて関連度を計算する関連度計算手段と、を備える
ことを特徴とする請求項１に記載の関連ノード検索装置。
【請求項３】
前記検索手段において、
前記関連度推定手段により、下限値の降順に、関連度の上限値が前記K番目の関連度未満又は前記所定の閾値未満となるまでノードを探索し、関連度の上限値が前記K番目の関連度未満又は前記所定の閾値未満にならない間は、前記関連度計算手段により正確な関連度を計算することにより、関連度が高い順にK 個のノードを検索、又は前記所定の閾値よりも大きい関連度を持つノードを検索する
ことを特徴とする請求項２に記載の関連ノード検索装置。
【請求項４】
複数のノードからなるグラフデータと問い合わせ分布からPPR（Personalized PageRank）に基づき関連度を計算し、関連度が高い順にK 個のノードを検索する、又は所定の閾値よりも大きい関連度を持つノードを検索する関連ノード検索装置が実行する関連ノード検索方法であって、
前記グラフデータから、PPRに基づく特定のノードの関連度を算出するために用いるユニタリ行列と上三角行列の逆行列を計算し、記憶手段に格納する事前計算ステップと、
前記問い合わせ分布、及び前記事前計算手段により求めたユニタリ行列と上三角行列の逆行列を用いて、関連度が高い順にK 個のノードを検索、又は所定の閾値よりも大きい関連度を持つノードを検索し、出力する検索ステップと
を備えることを特徴とする関連ノード検索方法。
【請求項５】
前記事前計算ステップは、
前記ユニタリ行列と前記上三角行列の逆行列とがそれぞれ疎になるように、前記グラフデータにおけるノードを並び替え、ノードを並び替えたグラフデータを記憶手段に格納するノード並び替えステップと、
前記ノード並び替えステップによりノードが並び替えられたグラフデータを用いて、前記ユニタリ行列と前記上三角行列の逆行列を計算する逆行列計算ステップと、を備え、
前記検索ステップは、
グラフの隣接行列及び前記問い合わせ分布に基づいて全てのノードについての関連度の下限値を推定し、当該下限値に基づいて関連度の上限値を推定する関連度推定ステップと、
特定のノードについて、前記ユニタリ行列と前記上三角行列の逆行列を用いて関連度を計算する関連度計算ステップと、を備える
ことを特徴とする請求項４に記載の関連ノード検索方法。
【請求項６】
前記検索ステップにおいて、
前記関連度推定ステップにより、下限値の降順に、関連度の上限値が前記K番目の関連度未満又は前記所定の閾値未満となるまでノードを探索し、関連度の上限値が前記K番目の関連度未満又は前記所定の閾値未満にならない間は、前記関連度計算ステップにおいて正確な関連度を計算することにより、関連度が高い順にK 個のノードを検索、又は前記所定の閾値よりも大きい関連度を持つノードを検索する
ことを特徴とする請求項５に記載の関連ノード検索方法。
【請求項７】
コンピュータを、請求項１ないし３のうちいずれか１項に記載の関連ノード検索装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はPersonalized PageRank に基づき関連度を計算し検索を行う技術に関するものである。
【背景技術】
【０００２】
グラフはデータをノードとエッジで表現するデータ構造であり、様々な分野で用いられている。近年グラフを用いたパーソナライズドサーチに関心が高まっている。パーソナライズドサーチの例としては個人の購入履歴から個別にレコメンドを行うサービスなどがあげられる。
【０００３】
グラフ理論においてノードの関連度は重要な性質の一つであり、ノードの関連度として今まで様々な手法が提案されてきた。その中でもPersonalized PageRank(PPR)はノードの関連度として最も注目を集めているもののひとつである。PPRは今までグラフ理論でよく用いられてきたノード間の最短距離などと異なり、グラフの構造的な特徴に基づいて関連度が計算できるからである（非特許文献１、２）。
【０００４】
PPRは概念的に以下のように説明できる。問い合わせ分布に基づいた各ノードの存在確率からランダムウォークを開始し、隣接するノードにエッジの重みに比例した確率でランダムに移動する。さらにノードに到達するたびに一定の確率で問い合わせ分布に基づいた確率でノードに戻る。この操作を再帰的に繰り返した結果として各ノードにおける定常状態確率が得られるが、PPRはこの得られた定常状態確率を関連度とする方法である。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Glen Jeh and Jennifer Widom, Scaling personalized web search, WWW, 2003
【非特許文献２】Hanghang Tong and Christos Faloutsos, Center-piece subgraphs: problem definition and fast solutions,KDD, 2006
【非特許文献３】D′aniel Fogaras and Bal′azs R′acz and K′aroly Csalog′any and Tam′as Sarl′os, Towards Scaling Fully
【非特許文献４】Hanghang Tong and Christos Faloutsos and Jia-Yu Pan, Fast Random Walk with Restart and Its Applications, ICDM, 2006
【非特許文献５】Jimeng Sun and Huiming Qu and Deepayan Chakrabarti and Christos Faloutsos, Neighborhood Formation and Anomaly Detection in Bipartite Graphs, ICDM, 2005
【非特許文献６】Thomas H. Cormen and Charles E. Leiserson and Ronald L.  Rivest and Clifford Stein, Introduction to Algorithms, The MIT Press, 2001
【非特許文献７】David A. Harville, Matrix Algebra From a Statistician's Perspective. Springer, 2008
【発明の概要】
【発明が解決しようとする課題】
【０００６】
PPRは様々な分野のアプリケーションに応用されている関連度であるが、計算量が高いという問題がある。そのため今まで様々な高速化手法が提案されてきた（非特許文献３、４、５）が、それらは精度を犠牲にするものであった。しかし、アプリケーションに対する応用を考えた場合、精度が犠牲になるのは好ましくない。また実際のアプリケーションにおいては問い合わせ分布からほかのすべてのノードの関連度を計算するのではなく、関連度の高いノードの処理が行われている（非特許文献５）。
【０００７】
本発明は上記の点に鑑みてなされたものであり、問い合わせ分布と検索個数もしくは閾値が与えられたときに、問い合わせ分布に対して、PPRに基づく関連度の高い個数のノードもしくは閾値内のノードを高速かつ正確に検索することを可能とした技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明は、複数のノードからなるグラフデータと問い合わせ分布からPPR（Personalized PageRank）に基づき関連度を計算し、関連度が高い順にK 個のノードを検索する、又は所定の閾値よりも大きい関連度を持つノードを検索する関連ノード検索装置であって、
前記グラフデータから、PPRに基づく特定のノードの関連度を算出するために用いるユニタリ行列と上三角行列の逆行列を計算し、記憶手段に格納する事前計算手段と、
前記問い合わせ分布、及び前記事前計算手段により求めたユニタリ行列と上三角行列の逆行列を用いて、関連度が高い順にK 個のノードを検索、又は所定の閾値よりも大きい関連度を持つノードを検索し、出力する検索手段とを備えることを特徴とする関連ノード検索装置として構成される。
【０００９】
前記事前計算手段は、前記ユニタリ行列と前記上三角行列の逆行列とがそれぞれ疎になるように、前記グラフデータにおけるノードを並び替え、ノードを並び替えたグラフデータを記憶手段に格納するノード並び替え手段と、前記ノード並び替え手段によりノードが並び替えられたグラフデータを用いて、前記ユニタリ行列と前記上三角行列の逆行列を計算する逆行列計算手段と、を備え、
前記検索手段は、グラフの隣接行列及び前記問い合わせ分布に基づいて全てのノードについての関連度の下限値を推定し、当該下限値に基づいて関連度の上限値を推定する関連度推定手段と、特定のノードについて、前記ユニタリ行列と前記上三角行列の逆行列を用いて関連度を計算する関連度計算手段と、を備えるように構成することができる。
【００１０】
また、前記検索手段において、前記関連度推定手段により、下限値の降順に、関連度の上限値が前記K番目の関連度未満又は前記所定の閾値未満となるまでノードを探索し、関連度の上限値が前記K番目の関連度未満又は前記所定の閾値未満にならない間は、前記関連度計算手段により正確な関連度を計算することにより、関連度が高い順にK 個のノードを検索、又は前記所定の閾値よりも大きい関連度を持つノードを検索するようにしてもよい。
【００１１】
また、本発明は、上記関連ノード検索装置が実行する関連ノード検索方法として構成することもできる。更に、本発明は、コンピュータを、上記関連ノード検索装置における各手段として機能させるためのプログラムとして構成することもできる。
【発明の効果】
【００１２】
本発明によれば、特定のノードの関連度を疎行列を用いて計算するとともに、不必要な関連度の計算を探索において省略することとしたので、従来手法より大幅に高速に関連ノードを検索できる。また、本発明による検索結果は正確であり、更に、本発明に対してユーザはパラメータ調整する必要がないという効果も奏する。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係る関連ノード検索装置１の機能構成図である。
【図２】本発明の実施の形態に係る事前計算部１０の機能構成図である。
【図３】本発明の実施の形態に係る検索部２０の機能構成図である。
【図４】ノードの置換のアルゴリズムであるアルゴリズム１を示す図である。
【図５】ノードの置換のフローチャートである。
【図６】上位K個検索のアルゴリズムであるアルゴリズム２を示す図である。
【図７】上位K個検索のフローチャートである。
【図８】範囲検索のアルゴリズムであるアルゴリズム３を示す図である。
【図９】範囲検索のフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【００１５】
（装置の基本構成）
本実施の形態に係る関連ノード検索装置１の構成、及び機能の概要を図１〜図３を参照して説明する。
【００１６】
図１は、本実施の形態に係る関連ノード検索装置１の機能構成図である。図１に示すように、本実施の形態に係る関連ノード検索装置１は、事前計算部１０と検索部２０を有する。事前計算部１０はグラフデータを外部入力とし、ユニタリ行列と上三角行列の逆行列を出力する。検索部２０には、事前計算部１０からユニタリ行列と上三角行列の逆行列が入力され、外部から問い合わせ分布と検索個数等が入力される。検索部２０は、これらの入力に基づいて、検索結果である関連ノードを出力する。
【００１７】
図２に、事前計算部１０の機能構成を示す。図２に示すとおり、事前計算部１０は、ノード並び替え部１１と逆行列計算部１２を有する。ノード並び替え部１１は、グラフを入力とし、グラフのノードを並び替えて出力する。出力された並び替え後のグラフのデータは、メモリ等の記憶手段に格納される。逆行列計算部１２はノードが並び替えられたグラフを入力としユニタリ行列と上三角行列の逆行列を出力する。出力されたユニタリ行列と上三角行列の逆行列のデータは、後述するデータ保存部２３（記憶手段）に格納される。
【００１８】
図３に、検索部２０の機能構成を示す。図３に示すとおり、検索部２０は、関連度推定部２１、関連度計算部２２、データ保存部２３、検索処理制御部２４を有する。
【００１９】
関連度推定部２１には、問い合わせ分布と検索個数等が外部から入力され、関連度計算部２２から計算された関連度が入力され、更に、データ保存部２３から検索対象のノードが入力される。関連度推定部２１は、これらの入力に基づいて、ノードの関連度を推定し、推定した関連度をデータ保存部２３に格納する。
【００２０】
関連度計算部２２には、事前計算部１０からユニタリ行列と上三角行列の逆行列が入力され、データ保存部２３から検索対象のノードが入力される。関連度計算部２２は、これらの入力に基づいて、ノードの関連度を計算し、計算した関連度をデータ保存部２３に出力する。
【００２１】
検索処理制御部２４は、後述するアルゴリズムに従って処理が行われるように検索対象のノードを決定するなどの制御を実施するとともに、検索結果を外部に出力する。
【００２２】
本実施の形態における関連ノード検索装置１は、例えば、ＣＰＵ、メモリやハードディスク等の記憶手段を備えるコンピュータに、本実施の形態で説明する機能部の処理に対応するプログラムを実行させることにより実現可能である。当該プログラムは、可搬メモリ等の記憶媒体に格納して配布し、上記コンピュータにインストールして用いてもよいし、ネットワーク上のサーバからダウンロードして上記コンピュータにインストールしてもよい。本実施の形態で説明する各計算処理は、メモリ等の記憶手段に格納されたデータをCPUが読み出して処理し、処理された結果を記憶手段に格納する処理を繰り返しながら実行されるものである。
【００２３】
（関連ノード検索装置１の処理動作）
以下、本発明の実施の形態における関連ノード検索装置１が実行する処理内容について、その原理や処理手順などを詳細に説明する。実施の形態の説明にあたり、まずは本明細書で用いる記号を定義し、必要となる背景知識を説明する。
【００２４】
＜PPRについて＞
PPRはグラフのノードの関連度を計算するひとつの方法である。PPRでは問い合わせ分布から各ノードの存在確率を決定し、決定されたノードからランダムウォークを行う。そしてランダムウォークでノードに到達するたびに一定の確率cで問い合わせ分布に基づき各ノードに戻る。ここで、グラフのノード数をnとする。sをn×1行列とし、su要素をノードuにランダムウォークする確率を表すとする。またdを問い合わせ分布で決定されるn×1行列とする。またAを列が正規化されたグラフの隣接行列とする（すなわちAu,v要素はノードvからノードuへランダムウォークする確率を表す）。定常状態における各ノードにおける存在確率は以下の式を再帰的に収束するまで繰り返すことで計算することができる。
s = (1-c)As + cd             （１）
PPR は定常状態における確率を関連度とする方法である。すなわちs行列のsu要素はノードuの分布dに対する関連度となる。
【００２５】
定義から繰り返し回数をtとしたときPPRの計算コストはO(mt)となる。そのためグラフが大規模である場合PPRの値を計算するのは非常に時間がかかる。
【００２６】
＜本実施の形態に係る技術の原理＞
本実施の形態に係る技術は、大きく以下の２つの手法（疎行列計算と関連度の推定）で構成される。
【００２７】
（１）疎行列計算
上記のように、問い合わせ分布に対する関連度は繰り返し計算によって定常状態における確率を計算することで求めることができる。この方法はグラフの全てのノードの関連度を再帰的に計算するため計算コストが高い。そこで本実施の形態に係る手法では全てのノードの関連度を計算せずに、選んだノードの関連度のみを計算し高速な検索を可能にする。
【００２８】
選んだノードの関連度は式（１）から直接求められる逆行列を用いることで計算できる。そのためこの逆行列を事前に計算しておけば関連度を高速に計算できる。しかし逆行列を保持するには一般的にO(n2) のメモリが必要になるのが問題になる。
【００２９】
そこで本実施の形態に係る手法では、この逆行列を疎行列として保持するために、検索の事前処理でまずノードを並び替えてからQR分解を計算し、得られたユニタリ行列と上三角行列の逆行列を計算する。このユニタリ行列と上三角行列の逆行列は疎行列なため、隣接リスト表現（非特許文献６）を用いることにより選んだノードの関連度を疎行列から計算できる。
【００３０】
（２）関連度の推定
上記の疎行列計算の手法により、選んだノードの関連度を高速に計算することができる。しかし、上位K個のノードを検索するためには全てのノードの関連度を計算しなければならない。そこで、本実施の形態に係る技術では、高速に検索を行うために関連度の推定を行う。具体的には各ノードに対して関連度の推定を行い、関連度が高いことが期待されるノードに対してのみ疎行列を用いて正確な関連度を計算する。ノードの推定値はO(1)で計算することができるため、少ない計算コストで関連度の計算を省略することができる。後述するように、本実施の形態で用いる関連度の推定値は正確な関連度の上限値になることが保証されているため、推定を用いても検索結果が正確になるという利点がある。
【００３１】
＜疎行列による関連度計算、疎行列計算について＞
以下、疎行列を用いて選択したノードの関連度を計算する処理について詳細に説明する。まず選択したノードの関連度は逆行列から計算できることを説明し、その逆行列を疎行列から計算する手法について説明する。
【００３２】
行列Pをノードの置換行列とすると、グラフの隣接行列AはA′= PAPTという計算を経て行列A′に変換される。ここで行列PTは行列Pの転置行列である。また、ここでn×nの大きさの置換行列Pは直交行列であり、各行と列においてただ一つの値が1である要素と、それ以外は値が0である要素を持つ。またPij= 1はj番目の行がi番目の行に置換されることを表す。
【００３３】
ここで、I = PTIP、P-1 = PT、A = PTAPであるため（P-1 はPの逆行列）、式（１）は以下のように書き換えられる。
s=c{I- (1-c)A}-1d=c{PTIP- (1-c)PTA′P}-1d =cPT{I- (1-c)A′}-1Pd     （２）
特定のノードの関連度を計算するため、本実施の形態では行列I - (1 - c)A′ のQR分解を計算する。すなわちQR = I - (1 - c)A′となるが、ここで行列Qは直交行列（ユニタリ行列）であり、行列Rは上三角行列である。形式的には特定のノードxの関連度は以下のように計算する。
【００３４】
定義1：n × nの行列F = cPTR-1とし、n × 1のベクトルg = QTPd とし、1 × nのベクトルfiを行列Fのi番目の行ベクトルとすると、ノードxの分布dに対する関連度sxは以下のように計算できる。
sx = fx・g                 （３）
式（３）からノードxの関連度はベクトルfxとgを用いれば繰り返し計算なしに求めることができる。またベクトルdはユーザから与えられるため、関連度を計算するためまずベクトルgを計算する必要がある。
【００３５】
定義1に対して以下の定理が成り立つ。
【００３６】
定理1：|fx|と|Q|をそれぞれfx and Qにおける非零要素の数とすると、特定のノードの関連度を計算するために必要な計算量はO(|fx| + |Q|) となる。
【００３７】
定理１の証明：本実施の形態では関連度を計算するため、まずベクトルgを分布dから計算する。ベクトルPdは分布dのノードを置換すれば得られるため、ベクトルg = QTPd を計算するために必要な計算量はO(|Q|) となる。ベクトルfxとgの内積を計算するための計算コストはO(|fx| + |Q|) であるため、関連度を計算するために必要な計算量はO(|fx| + |Q|) となる。
【００３８】
ここでF = cPTR-1でありg = QTPdであるため、定理1から関連度を高速に計算するためには行列R-1とQの非零要素を減らす必要があることがわかる。そのため本実施の形態では非零要素を減らすための後述する手法を用いる。
【００３９】
当該手法を詳しく説明する前に行列R-1とQの計算方法について説明する。ベクトルqi を行列Qのi 番目の列ベクトル、wiを行列W = I - (1 - c)A′のi番目の列ベクトルとすると、行列QとRはグラム・シュミットの正規直交化法（非特許文献７参照）から以下のように計算できる。
【００４０】
【数１】
2014021862.tif 000003
【００４１】
【数２】
2014021862.tif 000004
【００４２】
ここで||q′i||はq′iのノルムである。行列R-1の要素は後退代入（非特許文献７参照）を用いることで以下のように計算できる。
【００４３】
【数３】
2014021862.tif 000005
【００４４】
式（４）と（５）から行列QとRの列ベクトルは左から右の列へそれぞれ直交な列ベクトルと行列Wとの内積を計算することで求められることがわかる。式（６）から行列R-1 の列ベクトルは右から左の列へ、また各列ベクトルの要素は下から上の要素の順番で求められることがわかる。また式（４）と（５）と（６）から行列QとRは行列Wから計算できることがわかる。
【００４５】
行列Qの非零要素を減らすために、本実施の形態では以下の知見を用いる。「もし列ベクトルwiが行列Ｗにおいて全ての左の要素がすべて零である一つの非零要素をもつならば、その列ベクトルwiは行列Qのすべての左の列ベクトルに対して直交となる。」。これは列ベクトルwiが線形独立になるためである。よって行列Qは疎なデータ構造となる。
【００４６】
また行列R-1 を疎にするため以下の２つの知見を用いる。「もし行列R の右と下の要素が疎であれば、行列R-1の右と下の要素も疎になる。」。「もし行列Wの右と下の要素が疎であれば、行列R の右と下の要素も疎になる。」。
【００４７】
図４に、疎な行列を得るためのノードの置換方法についてのアルゴリズム１を示す。また図５に、このアルゴリズム１に対応して、事前計算部１０のノード並び替え部１１が実行する処理のフローチャートを示す。
【００４８】
図４に示すアルゴリズムは行列QとR-1に対する知見に基づいている。このアルゴリズムにおいてVはグラフにおけるノードの集合とし、集合"P"は置換されたノードの集合とする。deg(u) はノードu に入るエッジの数とし、e(u)はノードuから集合"P"へ出ていないエッジの数とする。まずノード並び替え部１１は、置換行列Pを零行列に初期化し、集合"P"を空集合とする（１〜２行目、図５のステップ１１）。
【００４９】
置換されていないノードの集合V＼Pからエッジの数がmin{e(u)|u ∈ V＼P}になるノード集合Uを計算する（４行目、ステップ１２）。この処理は行列Qに対する知見に基づいている。もし行列A′の右と下の要素が疎であれば行列R-1も疎になるため、行列A′の左と上の要素を密にするためにエッジの数が最大になるノードを選択する（５行目、ステップ１３）。そして選択されたノードから行列P の要素を決定し、置換の順番を決定する（６〜７行目、ステップ１４、１５）。
【００５０】
＜関連度の推定について＞
次に、関連度の推定について説明する。これは、上位K個のノードを検索するために、検索の途中において正確な関連度を計算していないノードの関連度の上限値を高速に推定するものである。関連度の上限値を計算するために、本実施の形態ではまず関連度の下限値を推定する。関連度の下限値は与えられた分布の値が零にならないシードノードからの最小ホップ数を用いて計算する。シードノードからの最小ホップ数は幅優先探索を用いて計算する。huをノードuに対するシードノードからの最小ホップ数とし、H(i)をシードノードからの最小ホップ数がiとなるノードの集合とする。すなわちH(i)はi番目のレイヤを構成し、H(0)はシードノードの集合となる。本実施の形態では以下のように関連度の下限値を計算する。
【００５１】
定義2：ノードuの分布d に対する関連度の下限値suは以下のように定義される。
【００５２】
【数４】
2014021862.tif 000006
幅優先探索を用いることにより、すべてのノードに対して下限値を計算するには、O(n+m) の計算コストが必要になる。この下限値の性質を示すために以下の補助定理を示す。
【００５３】
補助定理1 ：H(i)に含まれる全てのノードに対してsu ≦ suが成り立つ。
【００５４】
補助定理1の証明：証明には数学的帰納法を用いる。まずH(0)に含まれるノードに対して成り立つことを示す。PPRにおいてランダムウォークがシードノードに至るのは、（１）ランダムウォークが確率cでシードノードにジャンプするか、（２）ランダムウォークがその過程でシードノードに至るかの２つの場合である。（１）の場合、ランダムウォークはあるシードノードuに確率cduでジャンプする。そのためシードノードuの定常状態における確率はcduより小さくなることはない。よってH(0)に含まれるノードに対して成り立つ。
【００５５】
次に、H(i-1)に含まれるノードに対してsv ≦ sv が成り立つ場合、H(i) に含まれるノードに対してsv ≦ svが成り立つことを示す。H(i - 1) に含まれるノードはグラフ全体のノードの部分集合でありc、du ≧ 0であるため、式（１）において以下が成り立つ。
【００５６】
【数５】
2014021862.tif 000007
【００５７】
よって補助定理1 が成り立つ。
【００５８】
上位K個のノードを検索するために本実施の形態では一つ一つノードをたどり上限値と正確な関連度を計算する。関連度の上限値は関連度の下限値を用いて計算するが、uiをi番目にたどるノードとしたときに関連度の上限値は以下のように計算する。
【００５９】
定義3：ノードuiの
【００６０】
【数６】
2014021862.tif 000008
【００６１】
は以下のように定義される。
【００６２】
【数７】
2014021862.tif 000009
【００６３】
上限値を計算する計算コストはもしi = 1であればO(n) になる。またもしそうでなければ上限値はすでに計算した
【００６４】
【数８】
2014021862.tif 000010
【００６５】
を用いて逐次的に計算できるため、その計算コストはO(1)になる。
【００６６】
本実施の形態ではノードは関連度の下限値の降順でたどられる。これには２つの理由がある。はじめの理由は下限値が大きいほど正確な下限値も大きくなることが期待されるからである。そのため効率的に上位K個のノードを検索できる。２つめの理由は以下に示す補助定理により検索の途中で処理を停止し、より高速に検索を行うためである。
【００６７】
補助定理2：ノードを関連度の下限値の降順にたどった場合、
【００６８】
【数９】
2014021862.tif 000011
【００６９】
が成り立つ。
【００７０】
証明：まず
【００７１】
【数１０】
2014021862.tif 000012
【００７２】
になることを示す。式（８）と補助定理1 から以下の式が成り立つ。
【００７３】
【数１１】
2014021862.tif 000013
【００７４】
つぎに、
【００７５】
【数１２】
2014021862.tif 000014
【００７６】
が成り立つことを示す。式（８）から
【００７７】
【数１３】
2014021862.tif 000015
【００７８】
となる。よって成り立つ。
【００７９】
図６に、上位K個のノードを検索するアルゴリズム２を示す。このアルゴリズムに従って検索部２０において実行される処理のフローチャートを図７に示す。アルゴリズム2 においてθは解候補のノード集合におけるK番目の関連度であり、Vaは解候補のノード集合であり、Veは探索済みのノード集合とする。この処理において、検索部２０における関連度推定部２１が、関連度の下限値及び上限値の計算を行い、関連度計算部２２が正確な関連度の計算を行う。また、データ保存部２３には、計算結果のデータ、計算途中のデータ、計算に必要な行列のデータや、その他の計算に必要なデータが格納される。検索処理制御部２４は、アルゴリズム２の通りに処理が行われるように処理制御を行い、最終結果（K個の関連ノード）を出力する制御を行う。
【００８０】
アルゴリズム２において、初期化の後、関連度推定部２１はデータ保存部２３に格納するデータとして、関連度が0であるK個のダミーノードをVaに追加する（４行目、図７のステップ２２）。そして関連度推定部２１はすべてのノードに対して関連度の下限値を計算する（５行目、ステップ２３）。そして最も関連度の下限値が高いノードを、データ保存部２３に保存された探索していないノードの集合V＼Veから選択し、選択されたノードの関連度の上限値を計算する（７〜８行目、ステップ２４、２５）。補助定理2から選択されたノードの関連度の上限値がθより小さい場合、そのノードおよび探索されていないノードは解ノードになり得ない。そのため、その場合に関連度推定部２１は処理を停止する（９〜１０行目、ステップ２６、２７）。
【００８１】
もしそうでなければ、選択されたノードは解になり得る。そのため、そのノードの正確な関連度を関連度計算部２２が計算する（１２行目、ステップ２８）。もし計算した関連度がθ より大きければ、関連度計算部２２はデータ保存部２３において解候補の集合VaとK番目の関連度θを更新する（１３〜１８行目、ステップ２９〜３３）。
【００８２】
このアルゴリズムが正確に解ノードを検索できることを示すために以下の定理を示す。
【００８３】
定理2：アルゴリズム2は上位K個のノードを正確に検索する。
【００８４】
定理２の証明：θKを解ノードにおけるK番目の関連度とした場合、解ノードの関連度の上限値はθKより小さくなることはない（補助定理2）。もし関連度の上限値がθより小さければ、アルゴリズム2はノードを枝刈りする。解候補のノード集合におけるK番目の関連度θはθKより大きくなることはないため、解ノードがアルゴリズム2により枝刈りされることはない。またもしあるノードがθより小さければ、そのノードはアルゴリズム2 により枝刈りされる。よって定理２が成り立つ。 
上位K個のノードを検索するために必要な計算コストは以下のようになる。
【００８５】
定理3：アルゴリズム2 はO(n log n + m + |F| + |Q|)の計算コストを要する。
【００８６】
定理３の証明：アルゴリズム2 はまずすべてのノードに対して関連度の下限値を計算するが、下限値はO(n + m)の計算コストを要する幅優先探索で計算できる。そして関連度の下限値が最も大きいノードを選択しその関連度の上限値を計算するが、もしどのノードも枝刈りされなければ、これらはそれぞれO(n log n) とO(n)の計算コストを要する。
【００８７】
【数１４】
2014021862.tif 000016
【００８８】
であるため、定理1からすべてのノードの関連度を計算するにはO(|F| + |Q|)の計算コストを要する。そのため上位K 個のノードを検索をするためには、O(n log n +m+ |F| + |Q|) の計算コストを要する。
【００８９】
＜閾値εより大きい関連度を持つノードの範囲検索＞
これまで上位K個のノードを検索する方法について説明したが、本実施の形態に係る関連ノード検索装置１により、閾値εより大きい関連度を持つノードを検索することもできる。すなわち本実施の形態に係る関連ノード検索装置１により、閾値εより大きい関連度を持つノードの範囲検索が可能である。以下にその詳細を説明する。
【００９０】
閾値εより大きい関連度を持つノードを検索するために関連度の下限値を用いる。具体的には、もしあるノードの関連度の下限値が閾値εより大きい場合、明らかにそのノードの正確な関連度は閾値εより大きくなる。そのためそのようなノードに対して正確な関連度の計算を省略する。上位K個のノードを検索する場合と同様に、下限値の降順にノードを探索する。そして関連度の上限値を計算し、不要な関連度の計算を省略する。しかしもし正確な関連度の計算を行わない場合、定義3 を用いて上限値を計算することができない。そのためもし正確な関連度の計算を省略した場合、以下のように関連度の上限値を計算する。
【００９１】
定義4 ：もしノードui-1の正確な関連度の計算を省略した場合、ノードuiの
【００９２】
【数１５】
2014021862.tif 000017
【００９３】
を以下のように計算する。
【００９４】
【数１６】
2014021862.tif 000018
【００９５】
この定義について以下の補助定理を示す。
【００９６】
補助定理3 ：定義4に対してi番目に探索したノードuiに対して
【００９７】
【数１７】
2014021862.tif 000019
【００９８】
が成り立つ。また上限値を計算する計算コストはi ≠ 1であればO(1) になる。
【００９９】
補助定理３の証明：まず
【０１００】
【数１８】
2014021862.tif 000020
【０１０１】
になることを示す。Vi-1をi - 1番目までに探索したノードの集合、Veをi - 1番目までに探索したノードの集合のうち、正確な関連度を計算したノードとすると、式（８）と補助定理1から以下の式が成り立つ。
【０１０２】
【数１９】
2014021862.tif 000021
【０１０３】
つぎに
【０１０４】
【数２０】
2014021862.tif 000022
【０１０５】
が成り立つことを示す。式（９）から
【０１０６】
【数２１】
2014021862.tif 000023
【０１０７】
となる。
【０１０８】
次に、計算コストがi ≠ 1 であればO(1) になることを示す。これは
【０１０９】
【数２２】
2014021862.tif 000024
【０１１０】
を計算する前にすでに
【０１１１】
【数２３】
2014021862.tif 000025
【０１１２】
が計算済みであることから明らかである。よって成り立つ。
【０１１３】
図８に、範囲検索のアルゴリズム３を示す。また、検索部２０が、アルゴリズム３に従って実行する範囲検索のフローチャートを図９に示す。この処理において、検索部２０における関連度推定部２１が、アルゴリズム３に基づく関連度の下限値及び上限値の計算を行い、関連度計算部２２が正確な関連度の計算を行う。また、データ保存部２３には、計算結果のデータ、計算途中のデータ、計算に必要な行列のデータや、その他の計算に必要なデータが格納される。検索処理制御部２４は、アルゴリズム３の通りに処理が行われるように処理制御を行い、最終結果（条件を満たす関連ノード）を出力する制御を行う。
【０１１４】
このアルゴリズム３において、初期化の後、すべてのノードに対して関連度推定部２１が関連度の下限値を計算する（３行目、図９のステップ４１）。そして最も関連度の下限値が高いノードを、データ保存部２３に格納された探索していないノードの集合から選択し、選択されたノードの関連度の上限値を関連度推定部２１が計算する（５〜６行目、ステップ４３、４４）。もしその上限値がεより大きくなければ、そのノードおよび探索されていないノードは解ノードになり得ない。そのためその場合、関連度推定部２１は処理を停止する（７〜８行目、ステップ４５、４６）。
【０１１５】
もし選択されたノードの下限値がεより大きければ、そのノードは解ノードとなる。そのため、関連度推定部２１は、データ保存部２３においてそのノードを解ノードの集合に追加する（９〜１０行目、ステップ４７、４８）。そうでなければ、関連度計算部２２が正確な関連度を計算し、選択されたノードが解ノードか否かの確認を行う（１１〜１６行目、ステップ４９〜５１）。
【０１１６】
アルゴリズム3 により正確に範囲検索を実施できることを以下に示す。
【０１１７】
定理4 ：アルゴリズム3 は範囲検索を正確にO(n log n + m + |F| + |Q|) の計算コストで行う。
【０１１８】
まずアルゴリズム3は範囲検索を正確に行うことを示す。アルゴリズム3は選択されたノードの上限値がεより小さければ、そのノードとそれ以外の探索されていないノードを枝刈りする。またアルゴリズム3は選択されたノードの正確な関連度がεより小さければ、そのノードを枝刈りする。探索されていないノードの上限値は選択されたノードの上限値より小さくなることはないので、これらのノードが解ノードの集合に含まれることはない。
【０１１９】
またアルゴリズム3は選択されたノードの下限値及び正確な関連度がεより大きい場合、そのノードを解ノードとする。よってアルゴリズム3 は範囲検索を正確に行う。
【０１２０】
次にアルゴリズム3は範囲検索をO(n log n+m+|F|+|Q|)の計算コストで行うことを示す。アルゴリズム3はまずすべてのノードに対して関連度の下限値を計算するが、下限値はO(n+m)の計算コストを要する幅優先探索で計算できる。そして関連度の下限値が最も大きいノードを選択しその関連度の上限値を計算するが、もしどのノードも枝刈りされなければこれらはそれぞれO(n log n) とO(n) の計算コストを要する。
【０１２１】
【数２４】
2014021862.tif 000026
【０１２２】
であるため、定理1からすべてのノードの関連度を計算するにはO(|F| + |Q|)の計算コストを要する。そのため上位K個のノードを検索をするためにはO(n log n + m + |F| + |Q|) の計算コストを要する。よって定理４が成り立つ。
【０１２３】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【０１２４】
１  関連ノード検索装置
１０  事前計算部
１１  ノード並び替え部
１２  逆行列計算部
２０  検索部
２１  関連度推定部
２２  関連度計算部
２３  データ保存部
２４  検索処理制御部
【図１】
2014021862.tif 000027
【図２】
2014021862.tif 000028
【図３】
2014021862.tif 000029
【図４】
2014021862.tif 000030
【図５】
2014021862.tif 000031
【図６】
2014021862.tif 000032
【図７】
2014021862.tif 000033
【図８】
2014021862.tif 000034
【図９】
2014021862.tif 000035