(57)【要約】  【課題】  コンピュータの処理によって、グラフにおけるノードの間の類似度を計算するための改善された方法、プログラム、および装置を提供すること。  【解決手段】  コンピュータの処理によって、１以上のグラフにおけるノードの間の類似度を計算する方法が提供される。方法は、１以上のグラフにおけるノードのそれぞれについて、当該ノードの隣接ノードのラベル値に基づいて新ラベル値を計算するステップと、ノード間の類似度を計算する対象ノードのそれぞれについて、当該対象ノードのラベル値の影響を取り除くように、その隣接ノードの新ラベル値を補正するステップと、１の対象ノードの隣接ノードの補正された新ラベル値と、他の対象ノードの隣接ノードの補正された新ラベル値を用いて、対象ノードの間の類似度を計算するステップを含む。【選択図】  図３
2011233069.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータの処理によって、１以上のグラフにおけるノードの間の類似度を計算する方法であって、
前記１以上のグラフにおけるノードのそれぞれについて、当該ノードの隣接ノードのラベル値に基づいて新ラベル値を計算するステップと、
ノード間の類似度を計算する対象ノードのそれぞれについて、当該対象ノードの前記ラベル値の影響を取り除くように、その隣接ノードの前記新ラベル値を補正するステップと、
１の対象ノードの隣接ノードの補正された新ラベル値と、他の対象ノードの隣接ノードの補正された新ラベル値を用いて、前記対象ノードの間の類似度を計算するステップと、
を含む、方法。
【請求項２】
前記新ラベル値を計算するステップが、前記隣接ノードのラベル値のハッシュ計算を実行するステップを含む、請求項１に記載の方法。
【請求項３】
前記ハッシュ計算を実行するステップが、前記隣接ノードが複数存在する場合に複数の前記隣接ノードのラベル値同士をＸＯＲした値を計算するステップを含む、請求項２に記載の方法。
【請求項４】
前記ハッシュ計算を実行するステップが、前記隣接ノードが複数存在する場合に複数の前記隣接ノードのラベル値同士をＸＯＲした値と当該ノードのラベル値のＸＯＲを計算するステップを含む、請求項２に記載の方法。
【請求項５】
前記補正するステップが、当該対象ノードの前記ラベル値の影響を取り除くために、前記対象ノードの隣接ノードの新ラベル値と対象ノードのラベル値をＸＯＲした値を計算するステップを含む、請求項４に記載の方法。
【請求項６】
前記新ラベルを計算するステップが、当該ノードに接続されたエッジのラベル値を用いて隣接ノードのラベル値を変換するステップを含む、請求項１に記載の方法。
【請求項７】
前記変換するステップが、隣接ノードのラベル値を当該ノードに接続されたエッジのラベル値に応じてビット回転するステップを含む、請求項６に記載の方法。
【請求項８】
前記変換するステップが、隣接ノードのラベル値に当該ノードに接続されたエッジのラベル値を加算するステップを含む、請求項７に記載の方法。
【請求項９】
前記類似度を計算するステップが、１の対象ノードの隣接ノードの補正された新ラベル値と他の対象ノードの隣接ノードの補正された新ラベル値を比較し、ジャカード係数（Jaccard coefficient）を計算するステップを含む、請求項１に記載の方法
【請求項１０】
前記新ラベル値を計算するステップが、前記１以上のグラフにおけるノードのラベル値を当該ノードの前記新ラベル値で置き換えるステップを含み、前記新ラベル値を計算するステップを、所定の回数繰り返すステップを含む、請求項１に記載の方法。
【請求項１１】
前記ラベル値が、離散値である、請求項１に記載の方法。
【請求項１２】
前記ラベル値が、所定のビット列である、請求項１に記載の方法。
【請求項１３】
前記ラベル値が、固定長のビット列である、請求項１に記載の方法。
【請求項１４】
１以上のグラフにおけるノードの間の類似度を計算するためのプログラムであって、
前記１以上のグラフにおけるノードのそれぞれについて、当該ノードの隣接ノードにのラベル値に基づいて新ラベル値を計算するステップと、
ノード間の類似度を計算する対象ノードのそれぞれについて、当該対象ノードの前記ラベル値の影響を取り除くように、その隣接ノードの前記新ラベル値を補正するステップと、
１の対象ノードの隣接ノードの補正された新ラベル値と、他の対象ノードの隣接ノードの補正された新ラベル値を用いて、前記２以上のノードの間の類似度を計算するステップと、
をコンピュータに実行させる、プログラム。
【請求項１５】
１以上のグラフにおけるノードの間の類似度を計算するためのシステムであって、
前記１以上のグラフにおけるノードのそれぞれについて、当該ノードの隣接ノードのラベル値に基づいて新ラベル値を計算する手段と、
ノード間の類似度を計算する対象ノードのそれぞれについて、当該対象ノードの前記ラベル値の影響を取り除くように、その隣接ノードの前記新ラベル値を補正する手段と、
１の対象ノードの隣接ノードの補正された新ラベル値と、他の対象ノードの隣接ノードの補正された新ラベル値を用いて、前記２以上のノードの間の類似度を計算する手段と、
を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には情報処理技術に関し、特定的にはグラフにおけるノードの間の類似度を計算するための方法、プログラム、およびシステムに関する。
【背景技術】
【０００２】
グラフとは、頂点（ノードとも呼ばれる）と、頂点を繋ぐ辺（エッジや、枝、リンクとも呼ばれる）からなる数学的対象である。グラフのノードおよびエッジには互いに識別するためのラベルを付与することができる。
【０００３】
道路地図、化学式のような現実の対象を、グラフで表現することができる。例えば、道路地図においては、交差点がノードであり、道がエッジであるとみなすことができる。化学式においては、元素がノードであり、元素間の結合がエッジであるとみなすことができる。グラフは、遺伝子、タンパク質構造、電気回路、地理学、建築学などの広い範囲に応用することができることが理解される。
【０００４】
最近では、ソーシャル・ネットワーキング・サービス（ＳＮＳ）を表現することにもグラフ構造が適用されつつある。すなわち、ＳＮＳの個々のユーザをノードとし、ユーザの間の友好関係などをエッジと考えることにより、ＳＮＳの特定の状態をグラフで表現することができる。同様に、ワールド・ワイド・ウェッブ（ＷＷＷ）のリンク構造も、グラフで表現することができることが当業者には理解されよう。
【０００５】
現実の対象をグラフとして表現した場合、グラフ内のノードの間の類似度を評価することの要望が存在する。例えば、生体内のタンパク質と反応する既知の薬品と、開発中の新薬が類似するかどうかを評価して、当該新薬が生体内のタンパク質と反応するかどうかを推定することの要望がある。この場合、タンパク質および薬品を表現するグラフにおいて、既知の薬品に関するノードと新薬に関するノードの間の類似度の計算することでかかる評価を行うことができるであろう。
【０００６】
背景技術として、構成要素の配列からなる生体高分子の局所類似配列として選択された配列並置結果から、類似度の大きい領域を表示、抽出する方法、及び装置を開示する。方法は、ダイナミックプログラミング法などの手法により、局所類似配列を有する配列同士の並置結果を演算することを含む。並置結果を、第１の軸を並置された一方の配列の要素である塩基あるいはアミノ酸の順序を表す要素番号、第２の軸をその要素番号までのスコアの累積値とするグラフとして求め、出力表示する。類似度の大きい領域ではグラフの勾配は大となる。
【０００７】
は、他の背景技術として、高信頼な通信ソフトウェアの開発を効率的に行う為の通信ソフトウェア開発支援装置を開示する。装置は、通信ソフトウェア開発における各工程において記述され追加される機能の仕様を解釈し状態と通信処理実行時発生する信号から成る状態遷移関係を表す第１のグラフを生成する手段と、自動的に検索された開発済みの機能の仕様を解釈し状態と通信処理実行時発生する信号から成る状態遷移関係を表す第２のグラフを生成する手段と、第１のグラフと第２のグラフ間の類似度を算出する手段と、算出された類似度の高い順にグラフを選択する手段と、選択されたグラフに対応する開発済みの機能の仕様を表示する手段とを備え、仕様定義者に再利用可能な開発済みの機能を再利用可能性の高い順に示すことを特徴とする。
【０００８】
は、他の背景技術として、テキストの構造を反映してテキスト間の類似度を簡単に算出できるようにする類似度計算装置を開示する。類似度計算装置は、テキストに対して形態素解析を行う形態素解析部と、文節へのまとめ上げを行う文節解析部と、文節に関して依存関係を決定する依存関係解析部と、形態素解析の結果、文節へのまとめ上げの結果および依存関係の解析結果に基づいて、処理対象のテキストに対応する階層を許した非循環有向グラフを生成する非循環有向グラフ生成部と、非循環有向グラフ間の類似度を計算してテキスト間の類似度として出力する類似度計算部と、を備える。非循環有向グラフにおける全部分パス中の一致する部分パス数の総和として、非循環有向グラフ間の類似度が定められる。再帰式によって類似度を計算することが好ましい。
【０００９】
は、他の背景技術として、対象文書中に出現する用語のセットに対して、単語シソーラスを用意することなく、同クラス語のグループを、対象文書に応じて高い信頼性で作成することができる単語クラス作成プログラムを開示する。プログラムは、抽出された用語間の組合せに関して類似度を算出し、類似度に基づいて二つの用語からなる用語組を選別し、選別された用語組について、各用語をノードとし組関係をエッジで表してグラフを作成し、所定のエッジを切断することによって得られるグラフの２分割パターンの候補を抽出し、各候補から算出された平均エッジ密度に基づいてグラフを分割し、分割結果における複数のグラフそれぞれの構成ノードにおける用語を同クラス用語グループとして抽出する。
【００１０】
は、他の背景技術として、本発明は、複数の統合グラフを扱うことができ、演算量が少なく、簡易な構成のグラフ統合装置を開示する。装置は、入力要素を示すノードとノード間において分岐及び合流が可能な示すエッジとで構成された入力グラフＧが複数入力され、入力グラフＧを統合するものであって、グラフ入力手段１１と、入力グラフ記憶手段と、ＤＰマッチング法によって、入力グラフＧの類似度を算出する類似度算出手段と、類似度に基づいて、入力グラフＧが類似するか否かを判定する類似判定手段と、入力グラフＧが類似する場合、入力グラフＧを統合するグラフ統合手段と、入力グラフＧが類似しない場合、入力グラフＧを新たな統合グラフとして追加するグラフ追加手段と、統合グラフ記憶手段と、を備える。
【００１１】
“Fast subtreekernels on graphs”は、他の背景技術として、以下を開示する。
“We propose fast subtree kernels on graphs. On graphs with n nodes and medges and maximum degree d, these kernels comparing subtreesof height h can be computed in O(mh), whereas theclassic subtree kernel by Ramon & G¨artner scales as O(n24dh). Key to this efficiency is theobservation that the Weisfeiler-Lehman test ofisomorphism from graph theory elegantly computes a subtreekernel as a byproduct. Our fast subtree kernels candeal with labeled graphs, scale up easily to large graphs and outperformstate-of-the-art graph kernels on several classification benchmark datasets interms of accuracy and runtime.”
【００１２】
“Graph Matching: Theoretical Foundations, Algorithms, and Applications”は、他の背景技術として、以下を開示する。
“Graphs are a powerful and versatile tooluseful in various subfields of science and engineering. In many applications, forexample, in pattern recognition and computer vision, it is required to measurethe similarity of objects. When graphs are used for the representation ofstructured objects, then the problem of measuring object similarity turns intothe problem of computing the similarity of graphs, which is also known as graphmatching. In this paper, similarity measures on graphs and related algorithmswill be reviewed. Applications of graph matching will be demonstrated givingexamples from the fields of pattern recognition and computer vision. Also recenttheoretical work showing various relations between different similaritymeasures will be discussed.”
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平０７−１５５１６９号公報
【特許文献２】特開平０７−２１９７５９号公報
【特許文献３】特開２００４−２７２３５２号公報
【特許文献４】特開２００７−１２８３８９号公報
【特許文献５】特開２０１０−０３２９１９号公報
【非特許文献】
【００１４】
【非特許文献１】Nino Shervashidze and Karsten M. Borgwardt, “Fast subtreekernels on graphs”, NIPS 2009
【非特許文献２】Horst Bunke, “Graph Matching: Theoretical Foundations, Algorithms, and Applications”, Montreal, Quebec, Canada, May 2000, pp. 82-88.
【発明の概要】
【発明が解決しようとする課題】
【００１５】
グラフにおけるノードの間の類似度の計算は、グラフが比較的少ない数のノード、エッジを含むものであれば妥当な計算時間で解が得られる。しかし、グラフの規模が大きくなるとナイーブなノード間の類似度計算技法が現実的な計算量で扱える範囲を大きく上回ることがある。例えば、遺伝子配列を扱うバイオインフォマティックスでは、ノードの数が数千から数万、ＳＮＳでは数百万と非常に大きなものとなる場合がある。
【００１６】
本発明の目的は、コンピュータの処理によって、グラフにおけるノードの間の類似度を計算するための改善された方法、プログラム、および装置を提供することである。
【課題を解決するための手段】
【００１７】
コンピュータの処理によって、１以上のグラフにおけるノードの間の類似度を計算する方法が提供される。方法は、１以上のグラフにおけるノードのそれぞれについて、当該ノードの隣接ノードのラベル値に基づいて新ラベル値を計算するステップと、ノード間の類似度を計算する対象ノードのそれぞれについて、当該対象ノードのラベル値の影響を取り除くように、その隣接ノードの新ラベル値を補正するステップと、１の対象ノードの隣接ノードの補正された新ラベル値と、他の対象ノードの隣接ノードの補正された新ラベル値を用いて、対象ノードの間の類似度を計算するステップを含む。
【００１８】
好ましくは、新ラベル値を計算するステップが、新ラベル値を計算するために、隣接ノードのラベル値のハッシュ計算を実行するステップを含む。
【００１９】
さらに好ましくは、ハッシュ計算を実行するステップが、隣接ノードが複数存在する場合に複数の隣接ノードのラベル値同士をＸＯＲした値を計算するステップを含む。さらに好ましくは、ハッシュ計算を実行するステップが、隣接ノードが複数存在する場合に複数の隣接ノードのラベル値同士をＸＯＲした値と当該ノードのラベル値のＸＯＲを計算するステップを含む。
【００２０】
好ましくは、補正するステップが、当該対象ノードのラベル値の影響を取り除くために、対象ノードの隣接ノードの新ラベル値と対象ノードのラベル値をＸＯＲした値を計算するステップを含む。
【００２１】
好ましくは、新ラベルを計算するステップが、当該ノードに接続されたエッジのラベル値を用いて隣接ノードのラベル値を変換するステップを含む。さらに好ましくは、変換するステップが、隣接ノードのラベル値を当該ノードに接続されたエッジのラベル値に応じてビット回転するステップを含む。さらに好ましくは、変換するステップが、隣接ノードのラベル値に当該ノードに接続されたエッジのラベル値を加算するステップを含む。
【００２２】
好ましくは、類似度を計算するステップが、１の対象ノードの隣接ノードの補正された新ラベル値と他の対象ノードの隣接ノードの補正された新ラベル値を比較し、ジャガード係数（Jaccard Coefficient）を計算するステップを含む。
【００２３】
好ましくは、新ラベル値を計算するステップが、１以上のグラフにおけるノードのラベル値を当該ノードの新ラベル値で置き換えるステップを含み、方法は、新ラベル値を計算するステップを、所定の回数繰り返すステップを含む。
【００２４】
好ましくは、前記ラベル値が、離散値である。好ましくは、ラベル値は所定のビット列である。さらに好ましくは、ラベル値は固定長のビット列である。
【００２５】
以上、方法として本発明の概要を説明したが、本発明は、システム、装置、ソフトウェア製品、ソフトウェア、プログラムなどとしても把握することもできる。ソフトウェア製品は、例えば、前述のソフトウェアを格納した記憶媒体を含め、あるいはソフトウェアを伝送する媒体を含めることができる。
【００２６】
上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた、発明となり得ることに留意すべきである。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施形態に係る処理を実現するコンピュータ・システムの好適なハードウェアのブロック図である。
【図２】本発明の一実施形態に係るコンピュータ・システムの機能ブロック図である。
【図３】本発明の一実施形態におけるデータ処理システムの動作の全体を表現するフローチャートである。
【図４】本発明の一実施形態におけるハッシュ計算の処理をより詳細に説明するフローチャートである。
【図５】図４の処理の一実施例を示す図である。
【図６】図５の処理の具体的な計算例を図示したものである。
【図７】本発明の一実施形態における隣接ノードの新ラベル値の補正処理の具体的な計算例を図示したものである。
【図８】本発明の一実施形態におけるノード間の類似度計算処理を行うグラフの一例を図示したものである。
【図９】本発明の一実施形態の効果の一例を図示したものである。
【発明を実施するための形態】
【００２８】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【００２９】
図１を参照すると、本発明の一実施形態に係る処理を実現するコンピュータ・システムの好適なハードウェアのブロック図が示されている。図１において、システム・パス１０２には、ＣＰＵ１０４と、主記憶（ＲＡＭ）１０６と、ハードディスク・ドライブ（ＨＤＤ）１０８と、キーボード１１０と、マウス１１２と、ディスプレイ１１４が接続されている。ＣＰＵ１０４は、好適には、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＰｅｎｔｉｕｍ（商標）  ４、Ｃｏｒｅ（商標）２  Ｄｕｏ、Ｘｅｏｎ（商標）、ＡＭＤ社のＡｔｈｌｏｎ（商標）などを使用することができる。主記憶１０６は、好適には、２ＧＢ以上の容量をもつものである。ハードディスク・ドライブ１０８は、大量のグラフ・データを格納できるように、例えば、３２０ＧＢ以上の容量をもつものであることが望ましい。
【００３０】
ハードディスク・ドライブ１０８には、個々には図示しないが、オペレーティング・システムが、あらかじめ格納されている。オペレーティング・システムは、Ｌｉｎｕｘ（商標）、マイクロソフト社のＷｉｎｄｏｗｓ  ＸＰ（商標）、Ｗｉｎｄｏｗｓ（商標）２０００、アップルコンピュータのＭａｃ  ＯＳ（商標）などの、ＣＰＵ１０４に適合する任意のものを採用することができる。
【００３１】
ハードディスク・ドライブ１０８は、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（商標）などのプログラム言語処理系も格納する。このプログラム言語処理系は、後で説明する、グラフ・データ処理用のモジュールまたはツールを作成し、維持するために使用される。
【００３２】
ハードディスク・ドライブ１０８は、プログラム言語処理系でコンパイルするためのソースコードを書くためのテキスト・エディタ、及び、Ｅｃｌｉｐｓｅ（商標）などの開発環境を含み得る。
【００３３】
キーボード１１０及びマウス１１２は、オペレーティング・システムまたは、ハードディスク・ドライブ１０８から主記憶１０６にロードされ、ディスプレイ１１４に表示されたプログラム（図示せず）を起動したり、文字を打ち込んだりするために使用される。
【００３４】
ディスプレイ１１４は、好適には、液晶ディスプレイであり、例えば、ＸＧＡ（１０２４×７６８の解像度）、またはＵＸＧＡ（１６００×１２００の解像度）などの任意の解像度のものを使用することができる。ディスプレイ１１４は、図示しないが、処理すべきグラフ・データや、グラフの類似度を表示するために使用される。
【００３５】
図２は、本発明の一実施形態に係るコンピュータ・システム１００の機能ブロック図である。これらの機能ブロックは、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（商標）など既存のプログラム言語で書かれ、実行可能バイナリ形式でハードディスク・ドライブ１０８に格納され、マウス１１２またはキーボード１１０の操作に応答して、オペレーティング・システム（図示しない）の働きで、主記憶１０６に呼び出され実行されるプログラム・モジュールを用いて、ハードウェア資源とソフトウェアを協働させることによって実現することができる。
【００３６】
コンピュータ・システム１００は、グラフ・データ作成部２０５、グラフ・データ格納部２１０、グラフ探索部２１５、ハッシュ計算部２２０、ラベル値補正部２３０、および、ノード類似度計算部２１０を含む。
【００３７】
グラフ・データ作成部２０５は、所与のグラフを、コンピュータ可読なデータ構造に変換する。本発明の一実施形態では、ノード数n、平均隣接ノード数dのグラフgとして、次のようなデータ構造を用いる。もっとも、本発明を実施するためのデータ構造はこれに限定されないことに留意されたい。
【００３８】
g.nodelist：ノードのリストを表す長さnのリスト
g.nodelabellist：ノードラベルのリストを表す長さnのリスト
g.nodelabellistx：g.nodelabellistと同じデータ構造で、ラベル書込み用バッファとして使用される、長さnのリスト
g.adjacencymatrix：グラフの隣接行列。ノードiとノードjにリンクがあれば行列の要素(i, j)は1、そうでなければ0を持つ。大きさはn × nになるが、0要素を省略するスパース行列というデータ構造を使えばn × dで済む。
g.edgelabelmatrix：エッジ・ラベルのリストを表す長さn × nの行列。ノードiとノードjにリンクがあれば行列の要素(i, j)にエッジのラベル値を持ち、そうでなければ0の値を持つ。大きさはn ×nになるが、0要素を省略するスパース行列というデータ構造を使えばn ×dで済む。
【００３９】
グラフ・データ格納部２１０は、グラフ・データ作成部２０５によって構成されたグラフ・データを格納する。具体的には、グラフ・データは、主記憶１０６上にロードされるか、または、ハードディスク１０８に、保存される。グラフ・データが非常に大きい場合、グラフ・データを先ずハードディスク１０８上に置き、計算に必要な箇所のデータだけを主記憶にロードするようにすることもできる。
【００４０】
グラフ探索部２１５は、グラフを順次探索して、１つのグラフの全てのノードを訪問し、訪問中のノード（「自ノード」という）の隣接ノードおよびエッジのラベル値を参照し、ハッシュ計算部２２０に引き渡す。そして、ハッシュ計算部２２０から、ハッシュ計算の結果である自ノードの新ラベル値を受け、グラフ・データ格納部２１０に送る処理を行う。また、グラフ探索部２１５は、後述するノード選択部２２５から受けた類似度の計算を行う２以上の対象ノードの選択情報に基づいて、グラフ・データ格納部２１０から対象ノードのラベル値および対象ノードの隣接ノードの新ラベル値をラベル値補正部２３０に引き渡す処理も行うことができる。
【００４１】
ハッシュ計算部２２０は、グラフ探索部２１５から自ノードの隣接ノードおよび自ノードに接続されているエッジのラベル値を受け、ハッシュ計算（詳細は後述する）を行って、計算結果である新ラベル値をグラフ探索部２１５に渡すことができる。
【００４２】
ノード選択部２２５は、類似度の計算を行う２以上の対象ノードの選択をユーザ、他のシステムなどから受ける。対象ノードの選択情報は、グラフ探索部２１５に引き渡されることとなる。
【００４３】
ラベル値補正部２３０は、ノード選択部２２５によって選択された、類似度の２以上の対象ノードのそれぞれについて、当該対象ノードのラベル値の影響を取り除くように、その隣接ノードの新ラベル値を補正する処理を行うことができる。補正された隣接ノードの新ラベル値は、２以上の対象ノードの間の類似度を計算するためにノード類似度計算部２０５に引き渡される。
【００４４】
ノード類似度計算部２１０は、類似度の計算を行う２以上の対象ノードの隣接ノードに関する補正された新ラベル値をラベル値補正部２３０から受け取り、それらに基づき、２以上の対象ノードの類似度を計算する。本発明の一実施形態では、ノード間の類似度の計算は、ジャカード係数（Jaccard coefficient）を計算することによって行われる（詳細は後述する）。
【００４５】
図３は、本発明の一実施形態におけるデータ処理システムの動作の全体を表現するフローチャート３００である。処理はステップ３０５でスタートし、ステップ３１０でノードおよびエッジを含むグラフ・データが作成される。これらのノードおよびエッジには、それぞれにラベル値が付与される。本発明の一実施形態では、この処理は、図２のグラフ・データ作成部２０５によって実施される。
【００４６】
ステップ３１０では、ノードの異なるラベルの種類をpとすると、p << 2mのようなmを選んで、ラベルをmビットのデータとする。このように、2mをpよりも十分大きくとる理由は、ラベルにおけるハッシュ衝突の可能性を減らすためである。
【００４７】
そして、例えば、2m-1 < P1 < 2mであるような素数P1と、P1よりも十分大きい素数P2を用意して、i番目のラベル値をLHiとすると、下記の式で、ラベルLi ( i = 1,.., p )の各々に、異なるmビットのラベル値を付与することができる。
for ( i = 1; i <= p; i++ ) {
LHi =(P2 * i) % P1;
}
ここで、%は、割算の余りを計算する演算子である。なお、これ以外の任意の乱数生成ルーチンを使用することもできることに留意されたい。
【００４８】
ステップ３１０では、このようにして決められたラベル値LHiを、グラフの各ノードに、そのラベルLiに応じて付与しつつ、グラフ・データを構成する。すなわち、グラフ・データ作成部２０５は、図６にその一部が示されているようなグラフを、例えば深さ優先でグラフを辿りながら、g.nodelistを順次作成し、併せてそのラベル値LHiを g.labellistに記録しつつ、隣接関係をg.adjacencymatrixに記録していく。その結果、各ラベルにラベル値としてビット列が付与される。図６の例では、Ａ =#1000, Ｂ = #1100, Ｃ = #1110である。なお、ここで”#”が先頭に付された#1000のような表記は、”#”に続く数が2進数であることを表現するものとする。後で説明するビット回転、ＸＯＲなどの計算に好都合なので、ラベル値は固定ビット数とすることが好ましい。
【００４９】
また、ステップ３１０では、エッジのラベル値の付与も行われる。本発明の一実施形態では、エッジのラベル値は後でビット回転等に用いられるので、ノードのラベルよりも少ない桁数で実現することが好ましい。具体的には、エッジの種類の数がｑである場合、１、２、３…、ｐの数字をそれぞれのエッジに種類に応じて割り当てるとよい。なお、本発明の一実施形態では、エッジのラベル値は、その方向に応じて正負の数字が与えられる。
【００５０】
処理はステップ３１５に進み、グラフ内のノードの探索が行われる。次に、ステップ３２０では、グラフのすべてのノードを訪問したかどうかの判断が行われる。具体的には、この判断はg.nodelistの末端に達したかどうかで行われる。
【００５１】
ステップ３２５で、まだグラフのすべてのノードを訪問していないと判断された場合、処理はＮＯの矢印からステップ３３０に進む。ステップ３３０では、g.nodelistに従い、グラフ探索モジュール２０６は、次のノードを訪問する。なお、グラフ探索の最初の段階では、ステップ３３０では、先頭のノードを訪問することになる。本発明の一実施形態では、これらの処理は、図２のグラフ探索部２１５によって実施される。
【００５２】
また、ステップ３３０では、いま訪問しているノード（「自ノード」）の隣接ノードのラベル値、自ノードに接続されているエッジのラベル値、および自ノードのラベル値を用いて、ハッシュにより自ノードの新ラベル値（「新ラベル値」という）の計算を行う。本発明の一実施形態では、これらの処理は、図２のハッシュ計算部２２０によって実施される。ここで隣接ノードとは、当該ノードにエッジを介して直接接続されているノードである。このような隣接関係は、 g.adjacencymatrixに記録されている値を参照することによって、調べることができる。これらのラベル値は、g.nodelabellist、g.edgelabelmatrixを参照することによって取得することができる。
【００５３】
ステップ３３０において計算された新ラベル値は、当該ノードの新ラベル値としてグラフ・データ格納部２１０に格納される。この場合、g.nodelabellistにではなく、g.nodelabellistxに新ラベルが書き込まれることが好ましい。これは、g.nodelabellistに直接上書きすると、ノードの探索順序に依存して、結果が変わってしまい、また、g.nodelabellistに格納されている新ラベル値を計算するのに用いたラベル値を後で使用する可能性があるからである。
【００５４】
以下、ラベル値の計算を、図４および図５を参照して、詳細に説明する。図４は、本発明の一実施形態におけるハッシュ計算の処理をより詳細に説明するフローチャートである。
【００５５】
図３のフローチャートで、ノードを訪問していくときに、今滞在しているノードを自ノードと呼ぶことにする。まず、自ノードの隣接ノードのラベル集合４０５は、g.adjacencymatrixに記録されている値を参照することによって、 g.nodelabellistから取得することができる。自ノードの隣接ノードのラベル集合は一般的に複数存在するので、NeighboringNodeLabels[]として表現され得る。
【００５６】
自ノードに接続されているエッジのラベル集合４１０は、g.adjacencymatrixに記録されている値を参照することによって、 g.edgelabematrixから取得される。エッジのラベル集合４１０も一般的に複数存在するので、ConnectedEdgeLabels[]として表現され得る。
【００５７】
自ノードのラベル４１５は、いま訪問しているノードに対応するラベル値であり、g.nodelabellistから取得される。ここでは、自ノードのラベル４１５をThisNodeLabelと表現するものとする。
【００５８】
ハッシュ関数４２０を、Hash()とし、新しいラベル４２５をNewLabelとすると、NewLabelは以下の式によって計算される。このように計算されたNewLabelの値が、自ノードの新ラベル値として、g.labellistxに書き込まれる。
NewLabel =Hash(ThisNodeLabel,NeighboringNodeLabels[], ConnectedEdgeLabels[])
【００５９】
図５は、図４の処理の一実施例を示す図である。図５には、隣接ノードのラベル集合５０５、接続エッジのラベル集合５１０、自ノードのラベル５１５から、新しいラベル５２５を生成するためのハッシュ計算ブロック５２０が示されている。
【００６０】
ハッシュ計算ブロック５２０は、隣接ノードのラベル集合５１０を対応する（つまり、当該隣接ノードと自ノードを接続する）エッジのラベル値の大きさだけビット回転するブロック５３０と、ビット回転された隣接ノードのラベル集合５０５に対応するエッジのラベル値を加算するブロック５３５と、ビット回転、加算が施された隣接ノードのラベル集合５０５の排他的論理和（ＸＯＲ）を計算するブロック５４０と、ＸＯＲされた隣接ノードのラベル集合５０５と自ノードのラベル値のＸＯＲを計算するブロック５４５を備える。
【００６１】
図６に、図５の処理の具体的な計算例を示す。図６において、自ノードv0のラベルが#1000、隣接ノードv1、v2、 v3のラベルがそれぞれ#1100、#1110、#1100、対応するエッジのラベル値が2、-1、1であるとする。なお、エッジのラベル値の正負は、エッジの方向を表現するものであることに留意されたい。
【００６２】
まず、ブロック５３０によるビット回転の出力は、#0011、#0111、#1001となる。次に、ブロック５３５によってエッジのラベル値が加算され、その出力は、#0101、#0110、#1010となる。ブロック５４０が、ＸＯＲを計算し、その出力は#1001となる。これに対してさらにブロック５４５が自ノードのラベル値#1000とのＸＯＲを計算し、最終的に自ノードv0の新ラベル値（ＮＨ）は#0001となる。
【００６３】
なお、自ノードのラベル値をハッシュにより計算するためのアルゴリズムは、図５および図６に示すアルゴリズムに限定されず、妥当な計算量且つハッシュ衝突が起こりにくいものであれば、任意のハッシュ・アルゴリズムを使用することができることに留意されたい。
【００６４】
図３に戻り、ステップ３３０において新ラベル値が計算されたのち、処理はステップ３２０に戻る。全てのノードを訪問し終わるまで、ステップ３２０、３２５及び３３０が実行される。全てのノードを訪問し終わると、g.nodelistの全てのノードについて新ラベル値が計算されたこととなる。
【００６５】
このようなグラフの訪問による新ラベル値の計算処理は、複数回行われることもあり得る。この場合、g.labellistを、 g.labellistxで置換するようにするとよい。このようなグラフの訪問によるラベル値の書き換えは、類似度を計算すべき対象ノードを含む１以上のグラフのすべてについて行われる。なお、所定の複数回新ラベルの計算が行われることによってグラフ比較の精度は一般的には高まるが、必ずしも回数が増えるほど精度が高まるとは限らず最適な回数があろうことに留意されたい。
【００６６】
ステップ３２５で、まだグラフのすべてのノードを訪問したと判断された場合、処理はＹＥＳの矢印からステップ３３０に進む。ステップ３３０では、ノード間の類似度計算を行う対象となる２以上のノード（「対象ノード」という）の選択を受ける。本発明の一実施形態では、この処理は図２のノード選択部２２５によって実施されるが、具体的には、コンピュータ・システム１００のユーザまたは他システムからの入力に基づいて行われる。
【００６７】
処理はステップ３３５に進み、対象ノードの隣接ノードの新ラベル値（ステップ３２５で生成されたものである）から対象ノードのラベル値の影響を取り除くための補正処理が実行される。この処理は、図２のラベル値補正部２３０によって実施される。具体的には、それぞれの隣接ノードの新ラベル値と、対象ノードのラベル値のＸＯＲを計算することによって、隣接ノードの新ラベル値から対象ノードのラベル値の影響を取り除かれることとなる。
【００６８】
図７に、新ラベル値の補正処理の具体的な計算例を示す。図７においては、対象ノードv0のラベルが#1000、その隣接ノードv1、v2、 v3の新ラベル値が（ステップ３２５の処理の結果）それぞれ#0101、#1101、#1001として得られているものと仮定する。この場合、それぞれ補正された隣接ノードv1、v2、 v3の新ラベル値（ＡＮＨ）は、#1101、#0101、#0001となる。
【００６９】
図３に戻り、処理は３４０に進み、選択された対象ノード間の類似度の計算がステップ３３５において補正された新ラベル値を用いて実施される。本発明の一実施形態では、以下に示すよく知られたジャガード係数（Jaccard Coefficient）を求めることによってノード間の類似度を計算するものとする。すなわち、１の対象ノードの隣接ノードの新ラベル値の集合（Ａ）と他の対象ノードの隣接ノードの新ラベル値の集合（Ｂ）について、ＡとＢの積集合の要素数（｜Ａ∩Ｂ｜）をＡとＢの和集合の要素数（｜Ａ∪Ｂ｜）で除算したものを類似度として計算する。本発明の一実施形態では、この処理は図２のノード類似度計算部２３５によって実施される。
【００７０】
【数１】
2011233069.tif 000003
【００７１】
図８に、本発明の一実施形態におけるノード間の類似度計算処理を行うグラフの一例を図示する。図８に示すグラフにおいて、類似度計算を行う対象ノードとしてv0、w0が選択されたものとする。対象ノードv0の隣接ノードv1、v2、v3の補正された新ラベル値の集合（Ｖ）は#1101、#0101、#1001であり、対象ノードw0の隣接ノードw1、w2、w3、w4の補正された新ラベル値の集合（Ｗ）はそれぞれ#1101、#0101、#1011、#1011である。
【００７２】
したがって、ＶとＷの和集合は#1101、#0101、#1001、#1011、#1011でその個数は「５」、ＶとＷの積集合は#1101、#0101でその個数は「２」となる。よって、対象ノードv0、w0の間の類似度（ジャカード係数Ｊ）は、「０．４」と計算されることとなる。
【００７３】
図９に、本発明の一実施形態の適用の効果の一例を図示する。図９は、イースト菌に存在するタンパク質のネットワーク（２３６１ノード）における類似度評価の実験結果である。表中の”Mean similarity (all)”の列は「全タンパク質ペアの類似度」を、”Mean similarity (selected)”の列は、人手でアノテーションされた「既知の類似タンパク質ペアの平均類似度」を、”Mean rank (selected)”の列は「類似タンパク質ペア類似度の平均」をそれぞれ意味している。
【００７４】
図９では、本発明の一実施形態を用いた今回の手法を以下の４つの手法と対比している。
・CoS(ID)：接続ノードベクトル（２３６１次元）の内積で類似度を定義
・CoS(label)：接続ノードのラベル個数ベクトル（１３次元）の内積で類似度を定義
・SimRank：ランダムウォークベースの既存手法
・AugmentedSimRank：ノードラベルを考慮したランダムウォークベースの既存手法
【００７５】
この結果の対比では以下の評価基準を用いることができる、まず第１に「全タンパク質ペアの類似度」に比べて「既知の類似タンパク質ペアの平均類似度」が大きい場合、類似タンパク質ペアの類似度が平均値として高く出ているので、その手法は優れているといえる。第２に、「類似タンパク質ペア類似度の平均」が小さい場合、類似タンパク質ペアの類似度がランキングとして上位に出ているので、その手法は優れているといえる。
【００７６】
結果を見ると、Cos(ID)の手法は、第１の評価基準では優れているが、第２の評価基準では悪い結果を示しているといえる。また、その他の手法（CoS(label)、SimRank、AugmentedSimRank）は第１、第２のいずれの評価基準によっても悪い結果を示しているといえる。
【００７７】
これに対して、今回の手法は第１、第２の評価基準のいずれでも安定して良好な結果を示していることが理解される。よって、本発明の一実施形態によれば、２３６１ノードという大規模なグラフに対しても、かかる良好な結果を妥当な計算時間で解が得られるという顕著な効果が得られることが理解される。
【００７８】
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に、様々な変更または改良を加えることが可能であり、その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、当分野の当業者に明らかであろう。例えば、図４に示すラベル値のハッシュ計算として、図５あるいは図６に示す具体的な処理を示したが、これらはあくまでも実施例であり、妥当な計算量の任意のハッシュ関数を使用することができる。
【００７９】
また、本発明の一実施形態で用いたジャカード係数による類似度計算処理も一実施例であり、この分野の当業者であるなら、２つの対象ノードの隣接ノードの新ラベル値に基づき、様々な変形例を思いつくことができる。他のバリエーションとして、各ノードの新ラベル値の計算を複数回繰り返して行った場合、それぞれの繰り返された計算で得られた新ラベル値を用いて計算した複数のジャカード係数の平均または重み付き平均等を求めることによって対象ノード間の類似度を計算するようにしてもよい。
【符号の説明】
【００８０】
２０５・・・グラフ・データ作成部
２１０・・・グラフ・データ格納部
２１５・・・グラフ探索部
２２０・・・ハッシュ計算部
２２５・・・ノード選択部
２３０・・・ラベル値補正部
２３５・・・ノード類似度計算部
【図１】
2011233069.tif 000004
【図２】
2011233069.tif 000005
【図３】
2011233069.tif 000006
【図４】
2011233069.tif 000007
【図５】
2011233069.tif 000008
【図６】
2011233069.tif 000009
【図７】
2011233069.tif 000010
【図８】
2011233069.tif 000011
【図９】
2011233069.tif 000012