(57)【要約】  複数の相互接続されたノードを含むグラフの１つまたは複数のツリー部分グラフ表現のコレクションを構築するためのシステムおよび方法が、提供され、ここでは、グラフの１つまたは複数のツリー部分グラフ表現を使用して、グラフの任意の２つのノードの間の最短距離を推定する。本明細書において開示されるシステムおよび方法の特徴のうちの１つは、１つまたは複数のツリー部分グラフ表現のコレクションを構築するための、ルート・ノードの選択または指定のための方法論である。本開示の別の特徴は、親ノードの次数の降順に基づいて、ツリー・グラフ表現の逐次的なレベルの中の１つまたは複数の子ノードへとツリー部分グラフ表現の与えられたレベルの中の親ノードを展開する方法論である。
2016532181.tif 000002
【特許請求の範囲】
【請求項１】
複数の相互接続されたノードを有するグラフの与えられたノード対の間の最短距離を推定するための１つまたは複数のツリー部分グラフ・データ構造を構築するように構成された装置であって、
プロセッサと、
前記プロセッサに通信するように接続されたメモリと
を備えており、前記メモリは、前記１つまたは複数のツリー部分グラフ・データ構造と、１つまたは複数の実行可能命令とを記憶するように構成されており、前記１つまたは複数の実行可能命令は、前記プロセッサによる実行のすぐ後に、
前記グラフの前記複数の相互接続されたノードから１つまたは複数のルート・ノードを選択し、
前記１つまたは複数のルート・ノードのうちの少なくとも１つのうちのおのおのについて、前記１つまたは複数のルート・ノードのうちの前記少なくとも１つのうちのおのおのから出発するマルチ・レベル・ツリー部分グラフ・データ構造の逐次的レベルにおける親子関係にある前記グラフの前記複数の相互接続されたノードを表す前記それぞれのマルチ・レベル・ツリー部分グラフ・データ構造を構築する
ように前記プロセッサを構成し、
前記マルチ・レベル・ツリー部分グラフ・データ構造のうちの少なくとも１つのレベルは、それぞれの次数を有する複数の親ノードを含んでおり、前記複数の親ノードの中の少なくとも１つの親ノードの前記次数は、前記複数の親ノードの中の別の親ノードの前記次数よりも高いものであり、また
前記プロセッサは、さらに、前記複数の親ノードの前記次数の降順に基づいて、前記ツリー部分グラフ・データ構造の逐次的レベルの中の１つまたは複数のそれぞれの子ノードへと、前記ツリー部分グラフ・データ構造の前記少なくとも１つのレベルの前記複数の親ノードのうちのそれぞれ１つを展開することにより、前記マルチ・レベル・ツリー部分グラフ・データ構造を構築するように構成されている、装置。
【請求項２】
前記１つまたは複数の実行可能命令は、さらに、
前記グラフからノードｕを決定すること、
ノードｖが、前記グラフのノードｕから最も遠く離れている、前記グラフの前記ノードとして決定される場合に、前記グラフからノードｖを決定すること、および
前記１つまたは複数のルート・ノードのうちの１つとしてノードｖを選択すること
により、前記グラフの前記複数の相互接続されたノードから前記１つまたは複数のルート・ノードを選択するように前記プロセッサを構成する、請求項１に記載の装置。
【請求項３】
前記１つまたは複数の実行可能命令は、さらに、前記グラフからランダム・ノードを選択することにより、前記グラフからノードｕを決定するように前記プロセッサを構成する、請求項２に記載の装置。
【請求項４】
前記１つまたは複数の実行可能命令は、さらに、
ノードｗが、前記グラフのノードｖから最も遠く離れている、前記グラフの前記ノードとして決定される場合に、前記グラフからノードｗを決定すること、および
前記１つまたは複数のルート・ノードのうちの１つとしてノードｗを選択すること
により、前記グラフの前記複数の相互接続されたノードから前記１つまたは複数のルート・ノードを選択するように前記プロセッサを構成する、請求項１に記載の装置。
【請求項５】
前記１つまたは複数の実行可能命令は、さらに、
前記グラフのノードｖと、前記グラフのノードｗとの間の最短距離経路を決定すること、および
前記グラフのノードｖと、前記グラフのノードｗとの間の前記最短距離経路の上の中間の近くにある、前記グラフの前記ノードとして前記グラフからノードｘを決定すること、ならびに
前記１つまたは複数のルート・ノードのうちの１つとしてノードｘを選択すること
により、前記グラフの前記複数の相互接続されたノードから前記１つまたは複数のルート・ノードを選択するように前記プロセッサを構成する、請求項１に記載の装置。
【請求項６】
前記１つまたは複数の実行可能命令は、さらに、
前記グラフのノードｘから所定の距離の内部に最高の次数を有している前記グラフの前記ノードとして前記グラフからノードｙを決定すること、および
前記１つまたは複数のルート・ノードのうちの１つとしてノードｙを選択すること
により、前記グラフの前記複数の相互接続されたノードから前記１つまたは複数のルート・ノードを選択するように前記プロセッサを構成する、請求項１に記載の装置。
【請求項７】
前記１つまたは複数の実行可能命令は、さらに、
前記それぞれのツリー部分グラフ・データ構造のうちの少なくとも１つのうちのおのおのから前記与えられたノード対についてのそれぞれの最短距離を決定し、また
前記決定されたそれぞれの最短距離の最小値として、前記グラフの前記与えられたノード対の間の前記距離を推定する
ように前記プロセッサを構成する、請求項１に記載の装置。
【請求項８】
前記１つまたは複数の実行可能命令は、さらに、
前記グラフの直径に基づいて、前記グラフの前記複数のノードから選択されるルート・ノードの数、または構築されるそれぞれのツリー部分グラフの数を決定する
ように前記プロセッサを構成する、請求項１に記載の装置。
【請求項９】
前記１つまたは複数の実行可能命令は、さらに、
前記ツリー部分グラフを使用して前記与えられたノード対の間で決定される推定された距離と、前記グラフに基づいて計算される前記与えられたノード対の間の実際の距離とに基づいて、エラーの統計的期待値を計算し、また
前記グラフの前記複数のノードから選択されるルート・ノードの数、または構築されるそれぞれのツリー部分グラフの数を決定するためにエラーの前記統計的期待値を使用する
ように前記プロセッサを構成する、請求項１に記載の装置。
【請求項１０】
前記１つまたは複数の実行可能命令は、さらに、
前記グラフの前記複数の相互接続されたノードのうちのそれぞれのノードの次数の降順に基づいて、前記１つまたは複数のルート・ノードのうちの少なくとも１つを選択する
ように前記プロセッサを構成する、請求項１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ・セットの中の情報を取り出すことを対象としている。より詳細には、本開示は、大きなデータ・セットを表すグラフィカル・モデルから情報を抽出するためのシステムおよび方法を対象としている。
【背景技術】
【０００２】
本節は、本明細書において開示されるシステムおよび方法のよりよい理解を容易にする際に助けとなり得る態様を導入するものである。したがって、本節の記述は、この観点から読み取られるべきであり、また何が先行技術の中にあるか、またはないかについての承認として理解されるべきでも、または解釈されるべきでもない。
【０００３】
オンラインでの交流が急激に増大したこともあって、近年アクセス可能なデータ量が急増したことにより、多数の研究コミュニティと、ビジネス・コミュニティと、マーケティング・コミュニティが、グラフィカル手法で情報を表現するようになってきている。グラフィカル・モデル（例えば、ソーシャル・ネットワーク・グラフィカル・モデル、コール・データ・グラフィカル・モデルなど）は、生データの間の関係または相互接続についての直観的な表現を提供することができるが、そのようなグラフィカル・モデルから情報を抽出することは、一般に、どのようにして、加入者、グループ、人々、オブジェクト、マシンなどの様々なエンティティが、他のエンティティと相互に作用し、または関連するかを決定するために、非常に多数の計算を必要とする。多数のグラフィカル・モデルは、何千個もの接続または何百万個もの接続によって相互に接続されたエンティティを表す莫大な数のノードを含むことができるので、データ・セットを表すグラフィカル・モデルから情報を取り出すための時間および計算努力を低減させるためのスケーラブルなシステムおよび方法についての必要性が存在している。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
様々な態様において、複数の相互接続されたノードを有するグラフについての与えられたノード対の間の最短距離を推定するための１つまたは複数のツリー部分グラフを構築するためのシステムおよび方法が、提供される。
【課題を解決するための手段】
【０００５】
一態様は、グラフの複数の相互接続されたノードから１つまたは複数のルート・ノードを選択することを含んでいる。本態様は、選択されたルート・ノードから開始して、マルチ・レベル・ツリー部分グラフの逐次的レベルにおいて親−子関係で、グラフの複数の相互接続されたノードを表すそれぞれのマルチ・レベル・ツリー部分グラフを構築することをさらに含んでおり、ここでは、マルチ・レベル・ツリー部分グラフの少なくとも１つのレベルは、そのレベルにおける親ノードの次数の降順に基づいて、逐次的なレベルへと展開される。例えば、ツリー部分グラフの与えられたレベルにおける複数の親ノードの中の少なくとも１つの親ノードの次数が、１つまたは複数の他の親ノードの次数よりも高い場合に、より高い次数を有する親ノードは、比較的により低い次数を有する親ノードの前に、逐次的なレベルにおけるそれらの子ノードへと展開される。
【０００６】
一態様においては、１つまたは複数のルート・ノードは、グラフからノードｕを決定すること、ノードｖが、グラフのノードｕから最も遠く離れている、グラフのノードとして、決定される場合に、グラフからノードｖを決定すること、および１つまたは複数のルート・ノードのうちの１つとして、ノードｖを選択することにより、決定されることもある。
【０００７】
別の態様においては、グラフから選択されるノードｕは、グラフからランダムに選択されるノードとすることができる。
【０００８】
一態様においては、１つまたは複数のルート・ノードは、ノードｗが、グラフのノードｖから最も遠く離れている、グラフのノードとして、決定される場合に、グラフからノードｗを決定すること、および１つまたは複数のルート・ノードのうちの１つとして、ノードｗを選択することにより、決定されることもある。
【０００９】
一態様においては、１つまたは複数のルート・ノードは、グラフのノードｖと、グラフのノードｗとの間の最短距離経路を決定すること、およびグラフのノードｖと、グラフのノードｗとの間の最短距離経路の上の中間の近くにある、グラフのノードとして、グラフからノードｘを決定すること、ならびに１つまたは複数のルート・ノードのうちの１つとして、ノードｘを選択することにより、決定されることもある。
【００１０】
一態様においては、１つまたは複数のルート・ノードは、グラフのノードｘから所定の距離の内部の、最高の次数を有する、グラフのノードとして、グラフからノードｙを決定すること、および１つまたは複数のルート・ノードのうちの１つとして、ノードｙを選択することにより、決定されることもある。
【００１１】
さらなる一態様は、それぞれのツリー部分グラフのうちの少なくとも１つのうちのおのおのから、与えられたノード対についてのそれぞれの最短距離を決定すること、およびその決定されたそれぞれの最短距離のうちの最小値として、グラフの与えられたノード対の間の距離を推定することを含んでいる。
【００１２】
別の態様は、グラフの直径に基づいて、グラフの複数のノードから選択されるルート・ノードの数、または構築されるそれぞれのツリー部分グラフの数を決定することを含んでいる。
【００１３】
一態様は、ツリー部分グラフを使用して、与えられたノード対の間で決定される推定された距離と、グラフに基づいて計算される与えられたノード対の間の実際の距離とに基づいて、エラーの統計的期待値を計算すること、およびグラフの複数のノードから選択されるルート・ノードの数、または構築されるそれぞれのツリー部分グラフの数を動的に決定するために、エラーの統計的期待値を使用することを含んでいる。
【００１４】
別の態様は、例えば、グラフの複数の相互接続されたノードのうちのそれぞれのノードの次数の降順に基づいて、追加のルート・ノードを選択することにより、１つまたは複数のルート・ノードのうちの追加のルート・ノードを決定することを含んでいる。
【図面の簡単な説明】
【００１５】
【図１】本開示の一態様に従って、データ・セットのグラフィカル・モデルの一例を示す図である。
【図２】図１のグラフィカル・モデルのノードに関連する次数の一例を示す図である。
【図３】本開示の一態様に従って、プロセス流れ図の一例を示す図である。
【図４】図１のグラフィカル・モデルの与えられたノードと、残りのノードとの間の最短距離経路と最短距離とについての一例を示す図である。
【図５】本開示の一態様に従って、ツリー部分グラフを構築する一例を示す図である。
【図６】本開示の一態様に従って、ツリー部分グラフの追加の例を示す図である。
【図７】本開示の一態様に従って、ツリー部分グラフの追加の例を示す図である。
【図８】図３のプロセス流れ図を実施するための装置の一例を示す図である。
【図９】図１のグラフ１００のノード対の距離を保存する重み付けされたバイナリ・ツリーの一例を示す図である。
【発明を実施するための形態】
【００１６】
本開示についての様々な態様は、添付の図面を参照して以下で説明されており、図面の中では、同様な番号は、図面の説明全体を通して同様な要素のことを言及している。本説明および図面は、単に、本開示の原理を例証しているにすぎない。当業者なら、本明細書において説明されても、または示されてもいないが、原理を実施し、また本開示の精神および範囲の内部に含まれる様々な構成を考案することができるようになることが、理解されるであろう。
【００１７】
本明細書において使用されるように、用語「論理和（ｏｒ）」は、それ以外の方法（例えば、「排他的論理和（ｏｒ  ｅｌｓｅ）」または「代替案の論理和（ｏｒ  ｉｎ  ｔｈｅ  ａｌｔｅｒｎａｔｉｖｅ）」）で示されない限り、非排他的論理和（ｎｏｎ−ｅｘｃｌｕｓｉｖｅ  ｏｒ）のことを意味している。さらに、本明細書において使用されるように、要素の間の関係を説明するために使用される言葉は、それ以外の方法で示されない限り、直接の関係、または介在する要素の存在を含むように広範に解釈されるべきである。例えば、ある要素が、別の要素に「接続され（ｃｏｎｎｅｃｔｅｄ）」ている、または「結合され（ｃｏｕｐｌｅｄ）」ていると称されるときに、その要素は、他の要素に直接に接続され、または結合される可能性もあり、あるいは介在する要素が存在していてもよい。対照的に、ある要素が、別の要素に「直接に（ｄｉｒｅｃｔｌｙ）接続され」ている、または「直接に結合され」ていると称されるときには、介在する要素は存在していない。同様にして、「間の（ｂｅｔｗｅｅｎ）」、「隣接する（ａｄｊａｃｅｎｔ）」などの言葉も、同様なやり方で解釈されるべきである。
【００１８】
データ・セットのグラフィカル・モデル（「グラフ」）表現に関する基本的な計算には、グラフの様々な相互接続されたノードの間の最短距離を決定することを必要とする。距離は、一般に、グラフの与えられたソース・ノードからグラフの与えられた宛先ノードに到達するべき、トラバースされるエッジ（ｅｄｇｅ）の数、または同様な意味合いで、行われるノード・ホップの数として理解される可能性がある。多数のデータ・マイニング・スキームにおいては、与えられたノード対の間の最短距離を決定する計算が、多数回、また多くの場合には、少なくとも、グラフの中のノードの数と少なくとも同じ回数だけ実行される。何千個もの、何百万個もの、またはそれより大きいことさえあるノードの数を含むグラフでは、全般的なデータ・マイニング・スキームが、妥当な時間内に実行するための、グラフの様々な相互接続されたノードの間の最短距離を求める１つまたは複数の問い合わせに対して十分に迅速に応答することは、簡単ではない計算の課題である。
【００１９】
本開示は、グラフの任意の２つのノードの間の最短距離を迅速に、また正確に推定するために使用され得るツリー部分グラフの選択的なコレクションへとデータ・セットのグラフ表現を処理するための態様を説明している。本明細書において開示される態様は、特に、多数の相互接続されたノード（例えば、何千個もの、または何百万個もの）が存在する場合には関連があるが、それらはまた、任意の数のノードを有するグラフに対しても適用可能である。
【００２０】
一般に、双曲線グラフは、エッジと相互接続されるノードのグラフであり、そこでは４つの相互接続されたノードの任意の与えられた組では、すべてのノード対の間の６つの距離は、ひとまとめにして、通常デルタと称されるただの固定値にすぎないものによる適切な近似ツリーの上の距離とは異なっている。デルタ−双曲線グラフは、一般的に、Ｎ２によってスケーリングする、最大の中心性を有する、ノードの非空のコアを含んでおり、ここでＮは、グラフのノード・サイズである。デルタ−双曲線グラフはまた、一般的に、対数スケールの直径を有してもおり、そこでは、グラフのすべてのノード対についての最大の最短距離または直径は、ｌｏｇ  Ｎのファクタにより、グラフのノード・サイズＮに比例している。以下で詳細に説明される態様は、グラフの双曲線特性を活用して、次いで、グラフの内部の任意のノード対の間の距離（例えば、最短距離）を問い合わせるために使用されるグラフに対する１つまたは複数のツリー部分グラフ近似のコレクションを構築している。
【００２１】
以下で詳細に例証されるように、１つまたは複数のツリー部分グラフは、グラフの双曲線の曲率に基づいて、生成される。次いで、ツリー部分グラフは、グラフの様々なノードの間の距離についての１つまたは複数の問い合わせに応じて、距離を推定するために使用される。ツリー部分グラフの生成は、グラフそれ自体から任意の２つの与えられたノードの間で計算され得る実際の距離に比べての、ツリー部分グラフに基づいて計算される距離の中に非ゼロ（であるが、受け入れ可能に小規模）のひずみまたはエラーの量を導入する可能性がある。しかしながら、ツリー部分グラフを使用して近似される距離と、グラフの中の実際の距離との間のひずみまたはエラーの統計的期待値は、多数のノード（例えば、何千個ものノード、または何百万個ものノード）を有する双曲線グラフの場合は、ゼロであり、またはゼロに近いように考えられることもあり、またより少ない数のノード（何十ものノード、または何百ものノード）を有する双曲線グラフの場合には、小さいこともあり、また受け入れ可能なこともあることが、見出されてきている。
【００２２】
以上で指摘されるように、何千個ものノード、または何百万個ものノードを含むグラフの様々な相互接続されたノードの間の最短距離を決定することは、一般に非常に計算集約的である。結果として、グラフの様々なノードの間の距離についての問い合わせに応答するためにかかる時間は、数分、数時間、または数日さえもかかる可能性がある。それに応じて、本開示の態様は、グラフに基づいて、ツリー部分グラフのコレクションを生成すること、および従来の方法よりもずっと速く、また計算集約的でないやり方で、ツリー部分グラフを使用して大規模なグラフのノードの間の距離を推定することを対象としている。
【００２３】
図１は、本開示の様々な態様を例証する目的のための、少数のノード（または頂点）を示すグラフ１００の簡略化された例を示すものである。少数のノードだけが、本開示の原理についての理解を助けるために、グラフ１００の中に示されているが、実際には、グラフは、一般的に、多数の（例えば、何千個もの、または何百万個もの）相互接続されたノードを含むことができることが、理解されるであろう。
【００２４】
例示のグラフ１００は、すべてが、１つまたは複数のエッジ（図１の中に線として示される）によって互いに相互接続されている１３個のノード（図１において、０〜１２として指定される）を図で示している。第１のノードは、どのような介在するノードもなしに、第１のノードを第２のノードと直接に相互接続するエッジが、存在する場合に、第２のノードの隣接ノードである。一例として、ノード５の隣接ノードは、ノード４および６である。同様にして、ノード２の隣接ノードは、ノード０、ノード１、ノード８およびノード１２であることが分かる可能性がある。
【００２５】
図１の中に示される各ノードは、任意の与えられたノード対の間に、グラフ１００における少なくとも１つの最短距離経路が存在するように、１つまたは複数のエッジにより、あらゆる他のノードに直接的にまたは間接的に相互接続される。例えば、グラフ１００は、ノード５から出発してノード３に到達することができる最短距離経路が、経路５−４−３を経由して、または同様な意味合いで、経路５−６−３を経由して、最小の２つのエッジ（または２つのノード・ホップ）をトラバースすることを必要とするので、ノード５と、ノード３との間の最短距離が、二（２）であることを示している。さらに、ノード９と、ノード８との間の最短距離は、１（経路９−８を経由した）であるのに対して、ノード１２と、ノード６との間の最短距離は、４（経路１２−２−８−７−６または１２−２−１−３−６を経由した）である。最短距離経路の類似した決定は、グラフ１００に示される１２個のノードのうちのすべての残りの対について行われることもある。
【００２６】
任意の２つの与えられたノードの間の少なくとも１つの最短距離経路に加えて、任意の与えられたノード対の間のより長い距離の他の経路もまた存在している。例えば、グラフ１００においてノード５から出発して、ノード３に到着するための１つのより長い距離経路は、六（６）という距離を有する経路５−６−７−８−２−１−３をトラバースすることを必要とする。十（１０）の距離を有するより長くさえある経路は、５−６−７−８−９−１０−１１−１２−２−１−３である。類似したより長い距離経路は、グラフ１００の中に示されるすべての残りのノード対について決定される可能性がある。
【００２７】
それぞれのノード０〜１２のうちのおのおのは、グラフ１００のおのおののそれぞれのノードに関連するエッジまたは相互接続の数を表す次数を有するように決定されることもある。グラフ１００のすべてのエッジが、重み付けされていない（または同じ相対的重みを有する）ことが、本明細書において仮定されるが、これは、制約ではない。他の態様においては、グラフ１００の１つまたは複数のエッジは、異なる重みを有することができ、これらの異なる重みは、ノードの次数を決定するときに、考慮に入れられることもある。図２は、与えられたノードをその隣接するノードと相互接続するエッジの数に基づいて、グラフ１００のノード０〜１２のうちのおのおのについての次数を示すものである。
【００２８】
図３は、グラフ（例えば、グラフ１００）の任意の２つのノードの間の最短距離を推定するために使用され得る、ツリー部分グラフのコレクションを構築するために本開示の態様に従って、例示のプロセス３００を示すものである。一般に、ツリー部分グラフは、グラフの指定されたルート・ノードからグラフの他のノードのうちのおのおのへの最短距離経路を示すマルチ・レベル・ツリー表現として理解されることもある。グラフの各ノードは、単一の親ノード（指定されたルート・ノードを除いて）についての子ノードとして、ツリー部分グラフの中で表される。言い換えれば、グラフ（例えば、グラフ１００）のノードのうちのおのおのは、ツリー部分グラフの中で一度、表される。
【００２９】
さらに、同じ親ノードを有する、ツリー部分グラフのノードは、兄弟（ｓｉｂｌｉｎｇｓ）として理解されることもある。子ノードを有していない、ツリー部分グラフのノードは、リーフ・ノードとして理解されることもある。少なくとも１つの子ノードを有するノードは、少なくとも１つの子ノードの親ノードとして理解されることもある。マルチ・レベル・ツリー部分グラフの高さ（または深さ）は、マルチ・レベル・ツリー部分グラフの中のレベルの総数として理解されることもある。
【００３０】
本開示の特徴のうちの１つは、１つまたは複数のツリー部分グラフのコレクションについての特定のルート・ノードの選択または指定のための方法論である。本開示の別の特徴は、ルート・ノードの選択に基づいて、ツリー・グラフのレベルを構築する（例えば、展開する）方法論である。本開示についてのこれらの態様、および他の態様は、プロセス３００の例において明らかになり、このプロセスの例は、次に本明細書において説明される。
【００３１】
プロセス３００は、ステップ３０２において開始される。ステップ３０４において、ノードｕは、グラフからランダムに選択される。図１のグラフ１００に基づいた例示の例証では、グラフ１００のノード４は、ランダムに（または擬似ランダムに）初期ノードｕとして選択されることが、仮定されるが、グラフ１００の任意の他の以上で選択されていないノードは、他のやり方でノードｕとして選択されることもある。
【００３２】
ステップ３０６において、ノードｖは、ノードｕと、グラフの他のノードのうちのおのおのとの間のすべての最短距離の観点から、ノードｕから最も遠く離れているノードとして選択される。同様な意味合いで、ノードｕから最も遠く離れている、グラフの中の複数のノードが存在する場合、そのときにはそのような同様な意味合いで最も遠く離れたノードのうちの任意の１つが、ノードｖとして（例えば、ランダムに）選択されることもある。
【００３３】
図４は、ノード４が、ノードｕとして選択される場合の、例示の例証のための最短距離経路と、最短距離とを示すものである。図４において分かるように、グラフ１００のノード４と、他のノードのうちのおのおのとの間の最短距離の観点からノード４から最も遠く離れているノードは、（六（６）の距離による）ノード１０である。ノード１０は、グラフ１００のノード４と、他のノードのうちのおのおのとの間の最短距離の観点から、ノード４から最も遠く離れているノードであるので、ノード１０は、例示の例証については、ステップ３０６において、ノードｖとして選択される。
【００３４】
ただ比較するために、図４は、ノード４からの第２の最も遠く離れたノードは、（五（５）の距離による）ノード９および１１であることを示すのに対して、その一方で、ノード４に対する最短距離の観点からの最も近いノードは、グラフ１００の中の（一（１）の距離による）ノード３および５である。
【００３５】
ステップ３０８において、ノードｗは、グラフのノードｖと、他のノードのうちのおのおのとの間のすべての最短距離の観点からノードｖから最も遠く離れているノードとして決定される。例示の例証において、グラフ１００から、ノード１０と、他のノードのうちのおのおのとの間のすべての最短距離の観点からのノード１０（ノードｖ）からの最も遠く離れたノードが、たまたまノード４であることが、分かる可能性がある。したがって、ノード４は、例示の例証のために、ステップ３０８において、ノードｗとして選択される。
【００３６】
例示の例証においては、ノード４は、ノードｕ（ステップ３０４における）と、ノードｗ（ステップ３０８における）との両方として選択されることに注意すべきであろう。しかしながら、これは、さらにノードｕとしてのノード４の初期ランダム選択の結果であり、またプロセス３００の他の実現においては、ステップ３０４において選択されるノードｕと、ステップ３０８において選択されるノードｗとは、グラフの異なるノードである可能性があり、また一般にグラフの異なるノードであってもよい。
【００３７】
ステップ３１０において、ノードｘは、ノードｖと、ノードｗとの間の最短距離経路の上のノードｖと、ノードｗとの間の中間にある（または中間の最も近くにある）ノードとして決定される。グラフ１００に基づいた例示の例証を継続すると、ノード１０（ノードｖ）と、ノード４（ノードｗ）との間の距離六（６）の複数の同等の最短距離経路が存在していることが分かる可能性がある。ノード７が、２つの最短距離経路（経路４−５−６−７−８−９−１０および経路４−３−６−７−８−９−１０）の上の中間のノードであること、またノード２が、他の２つの最短距離経路（経路４−３−１−２−１２−１１−１０および４−３−１−２−８−９−１０）の上の中間ノードであることもまた、分かる可能性がある。したがって、グラフ１００のノード２またはノード７のいずれかが、ノードｘとして選択されることもある。例示の例証では、ノード７は、ノードｘとして選択されるが、他の実施形態においては、ノード２はまた、ノードｘとして選択されることもあることが、仮定される。
【００３８】
ステップ３１２において、ノードｙは、ノードｘに近い（例えば、所定の距離の内部にある）ノードから最高の次数のノードであるノードとして決定される。グラフ１００に基づいた例示の例証では、所定の距離が、グラフ１００の全体のサイズの観点から二（２）の距離として選択されることを仮定すると、グラフ１００の中のノード７の近くにある（例えば、二（２）の所定の距離の内部にある）６つのノードが、実際に存在していることが、分かる可能性がある。とりわけ、これらのノードは、ノード８（次数３）と、ノード９（次数２）と、ノード２（次数４）と、ノード６（次数３）と、ノード３（次数３）と、ノード５（次数２）とである。これらの６つの候補ノードの中から、グラフ１００から（または図２から）、ノード２（次数４）は、最高の次数のノードであることが、分かる可能性がある。それゆえに、例示の例証では、ノード２は、ノードｙとして選択される。
【００３９】
２という特定の所定の距離を例示の例証において使用して、ノードｙを決定するが、他の態様においては、他の距離は、例えば、グラフのサイズ、スパン、または中心性についての考慮に基づいて、選択される可能性もある。同等に、ノードｘからの所定の距離の内部にある最高の次数のノードである複数のノードが、存在している場合、そのときには、そのような、同様な意味合いで最高の次数のノードのうちの任意の１つ（または複数）が、ステップ３１２において、ノードｙとして、（例えば、ランダムに）選択されることもある。
【００４０】
ステップ３１４において、１つまたは複数のルート・ノードの初期の組が、ツリー部分グラフのコレクションを構築するためのノードｖと、ｗと、ｘと、ｙとから選択される。これに関して、これらのノードが、グラフの中のノードのグラフのローカル性と、次数の中心性とに関して、ルート・ノードの選択における望ましいダイバーシティを提供するので、ルート・ノードは、ノードｖと、ｗと、ｘと、ｙとから選択されることに注意すべきである。例えば、プロセス３００に従って、ノードｖおよびｗとして、選択されるノードは、グラフの中心から外側にあり、またはグラフの中心から極端に離れたノードである可能性が高い。プロセス３００に従ってノードｘとして選択されるノードは、グラフの中の中心の（または中心に近い）ノードのうちの１つである可能性が高い。さらに、プロセス３００に従ってノードｙとして選択されるノードは、グラフの中心に近い高い次数のノードである可能性が高い。
【００４１】
グラフ１００に基づいた例示の例証では、ノード１０（ノードｖ）は、第１のルート・ノードとして選択され、ノード７（ノードｘ）は、第２のルート・ノードとして選択され、またノード２（ノードｙ）は、ステップ３１４において、第３のルート・ノードとして選択されるが、他の態様においては、ノードｖと、ｗと、ｘと、ｙとのうちのすべて、または任意の他の組合せもまた、ルート・ノードとして選択される可能性もあることが、仮定される。
【００４２】
ステップ３１６において、１つまたは複数のツリー部分グラフのコレクションは、ステップ３１４において選択されるルート・ノードについて、グラフから構築される。グラフの双曲線性または曲率特性を活用するために、マルチ・レベル・ツリー部分グラフは、以下で例示的に説明されるように、次数の降順に基づいて、ツリー部分グラフの任意の与えられたレベルの中のノードをそれらの子ノードへと展開することにより、特定の順序で構築される。
【００４３】
図５は、ステップ３１４における、第１のルート・ノードとしてのノード１０（ノードｖ）の選択に基づいて、ステップ３１６において構築され得るツリー部分グラフ５００の一例を示すものである。例示のツリー部分グラフ５００は、本明細書において、「レベル０」と、「レベル１」と、「レベル２」と、「レベル３」と、「レベル４」と、「レベル５」として参照される６つのレベルを含んでいる。図５の中に示されるように、ツリー部分グラフ５００は、グラフ１００の１３個のノード（ノード０〜１２）のうちのおのおのを含んでおり、これらのノードのうちのおのおのは、便宜上、フォーマットＮＮ（Ｄ）を使用して指定されており、ここで、ＮＮは、特定のノードを特定し、またＤは、ＮＮによって特定されるノードの次数を示している。
【００４４】
図５のツリー部分グラフ５００は、「レベル０」から出発して、グラフ１００からのすべての１３個のノード（ノード０〜１２）が、ツリー部分グラフ５００のレベルのうちの１つの中で一度、表されるまで、図１のグラフ１００から、ステップ３１６において、レベルごとに構築される。ステップ３１４において選択されるノード１０は、「レベル０」におけるツリー部分グラフ５００のルート・ノードとして使用される。「レベル０」は、ルート・ノード以外のどのようなノードも含まないことになり、またそれゆえに、完全である。
【００４５】
「レベル０」のルート・ノード１０は、「レベル１」において、子ノードとしてその隣接するノードを含むように展開される。グラフ１００において、ノード１０の２つの隣接するノード、すなわち、ノード１１と、ノード９とが、存在することが、分かる可能性がある。それゆえに、ノード１１と、９とは、両方ともに、ツリー部分グラフ５００の中のルート・ノード１０の子ノードとして表され、これは、「レベル１」を完成する。
【００４６】
「レベル１」のノードのうちのおのおのは、次数の降順に基づいて、次に、（以下で明らかになるように、子ノードが、ツリー部分グラフ１００の構築されたレベルのうちのどれでも既に表されていない限り）「レベル２」の中のそれらのそれぞれの子ノードへと展開される。ツリー部分グラフ５００の「レベル１」の中にあるノード１１と、９との両方が、たまたま、２という同じ次数を有するので、ノード１１が、最初に、「レベル２」の中のそのすぐ隣接するノードへと展開されるか、またはノード９が、最初に、「レベル２」の中のそのすぐ隣接するノードへと展開されるかは、重要ではない。それゆえに、例示の例証では、同じ次数を有するノードの間で選択するときには、左から右への選択が、使用されるが、他の態様においては、右から左への選択、ランダムな選択、または選択のための何らかの他の判断基準が、使用される可能性もあることが、仮定される。
【００４７】
それに応じて、左から右へと進めると、ノード１１は、「レベル２」におけるその子ノードへの展開のために最初に選択される。グラフ１００において、ノード１１の２つの隣接するノード、すなわち、ノード１０と、ノード１２とが存在していることが、分かる可能性がある。ノード１０は、ルート・ノードとして、ツリー部分グラフ５００の「レベル０」において、既に表されているので、それは、「レベル２」の中に含まれていない。ノード１２は、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード１２は、ノード１１の子ノードとして、「レベル２」の中に含まれる。
【００４８】
左から右へと継続すると、「レベル１」の残りのノード、すなわち、ノード９が、次に、「レベル２」の中のその子ノードへの展開のために選択される。グラフ１００において、ノード９の２つの隣接するノード、すなわち、ノード８と、ノード１０とが、存在していることが、分かる可能性がある。ノード１０は、既に、ルート・ノードとしてツリー部分グラフ５００の「レベル０」の中に表されているので、それは、「レベル２」の中に含まれてはいない。ノード８は、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード８は、次に、ノード９の子ノードとして「レベル２」の中に含められる。「レベル２」への展開のために考慮すべき、「レベル１」の中の残りのノードが、存在していないので、「レベル２」の構築は、今や、完了している。
【００４９】
「レベル２」のノードのうちのおのおのが、次に、次数の降順に基づいて、（子ノードが、ツリー部分グラフ１００の構築されたレベルのうちのどのレベルでも、まだ表されていない限り）「レベル３」におけるそれらのそれぞれの子ノードへと展開される。図５において、ノード８は、３という次数を有する、「レベル２」における最も高い次数のノードであり、２という次数を有する次の最も高い次数のノードであるノード１２によって追随されることが、分かる可能性がある。ノード８は、ノード１２よりも高い次数を有しているので、ノード８は、「レベル３」におけるその子ノードへの展開のために、ノード１２の前に選択される。
【００５０】
グラフ１００において、ノード８の３つの隣接するノード（次数に対応する）が、すなわち、ノード２と、ノード７と、ノード９とが、存在していることが、分かる可能性がある。ノード９は、ツリー部分グラフ５００の「レベル１」において、既に表されているので、それは、「レベル３」の中には、含められない。ノード２と、ノード７とは、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード２と、ノード７とは、次に、「レベル３」において、ノード８の子ノードとして含められる。
【００５１】
「レベル２」の最も高い次数のノードが、展開されており、ノード１２は、次に、「レベル３」におけるその子ノードへの展開のために、次の最高の次数のノードとして選択される。グラフ１００において、ノード１２の２つの隣接するノードが、すなわち、ノード８と、ノード１０とが、存在していることが、分かる可能性がある。ノード８と、ノード１０との両方が、既に、それぞれ「レベル２」と、「レベル０」とにおいて、表されているので、これらの２つのノードのうちのいずれの１つも、この場合にも、「レベル３」の中には含められない。「レベル２」の中には、「レベル３」の中へと展開すべき、残りのノードは、存在していないので、「レベル３」の構築は、今や、完了している。
【００５２】
「レベル３」のノードのうちのおのおのは、次に、次数の降順に基づいて、（可能性のある子ノードが、ツリー部分グラフ１００の構築されたレベルのうちのどのレベルにおいてもまだ表されていない限り）「レベル４」の中のそれらのそれぞれの子ノードへと展開される。図５において、ノード２は、４という次数を有する、「レベル２」における最高の次数のノードであり、２という次数を有する次の最高の次数のノード７によって追随されることが、分かる可能性がある。ノード２は、ノード７よりも高い次数を有しているので、ノード２は、「レベル４」におけるその子ノードへの展開のために、ノード７の前に選択される。
【００５３】
グラフ１００において、ノード２の４つの隣接するノードが、すなわち、ノード０と、ノード１と、ノード８と、ノード１２とが、存在していることが、分かる可能性がある。ノード８と、ノード１２とは、ツリー部分グラフ５００の「レベル２」の中に上記で表されているので、これらの２つのノードのうちのいずれも、「レベル３」における子ノードとして含まれてはいない。しかしながら、ノード０と、ノード１とは、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード０と、ノード１とは、次に、「レベル４」において、ノード２の子ノードとして、含められる。
【００５４】
「レベル３」の最高の次数のノードが、展開されており、ノード７は、次に、「レベル４」におけるその子ノードへの展開のために、次の最も高いノードとして選択される。グラフ１００において、ノード７の２つの隣接するノードが、すなわちノード６と、ノード８とが、存在していることが、分かる可能性がある。ノード８は、既に、「レベル２」において表されているので、ノード８は、「レベル４」においては、子ノードとして含められない。しかしながら、ノード７は、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード７は、「レベル４」において、ノード８の子ノードとして含められる。「レベル３」においては、「レベル４」へと展開すべき残りのノードが、存在していないので、「レベル４」の構築は、今や、完了している。
【００５５】
「レベル４」のノードのうちのおのおのは、次に、次数の降順に基づいて、（可能性のある子ノードが、ツリー部分グラフ１００の既に構築されたレベルのうちのどのレベルでも、まだ表されていない限り）「レベル５」におけるそれらのそれぞれの子ノードへと展開される。「レベル４」における３つのノードのうちで、ノード６と、ノード１とは、３という次数を有する最高の次数のノードであり、２という次数を有する次の最高の次数のノード０によって追随されることが、分かる可能性がある。ノード６と、ノード１とは、ノード０よりも高い次数を有しているので、ノード６と、ノード１とは、「レベル５」におけるその子ノードへの展開のために、ノード０の前に選択される。
【００５６】
「レベル４」のノード６と、ノード１とが、たまたま、３という同じ最高の次数を有するので、ノード６またはノード１のいずれかは、「レベル５」におけるそのすぐ隣接するノードへと展開される第１のノードとして、選択されることもある。以前のように（ノードが、同じ次数を有することが決定されるときに）左から右へと進行して、ノード６は、先ず、「レベル５」におけるその子ノードへの展開のために、選択される。
【００５７】
グラフ１００において、ノード６の３つの隣接するノードが、すなわち、ノード３と、ノード５と、ノード７とが、存在していることが分かる可能性がある。ノード７は、「レベル３」において、既に、表されているので、それは、「レベル５」の中には含められない。しかしながら、ノード３と、ノード５とは、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード３と、ノード５とは、次に、「レベル５」において、ノード６の子ノードとして含められる。
【００５８】
左から右へと継続すると、「レベル４」の残りの最高の次数のノード、すなわち、ノード１は、次に、「レベル５」におけるその子ノードへの展開のために、選択される。グラフ１００において、ノード１の３つの隣接するノードが、すなわち、ノード０と、ノード２と、ノード３とが、存在していることが、分かる可能性がある。ノード０と、ノード２と、ノード３とは、すべて、既に、このポイントにより、部分グラフ５００において、表されているので、これら３つのノードのうちのどれも、「レベル５」における子ノードとして含められない。
【００５９】
最高の次数のノードの両方（ノード６およびノード１）が、処理されているので、次の最高の次数のノードとしてのノード０は、次に、「レベル５」におけるその子ノードへの展開のために、選択される。グラフ１００において、ノード０の２つの隣接するノードが、すなわち、ノード１と、ノード２とが、存在していることが、分かる可能性がある。ノード０と、ノード２とは、両方ともに、このポイントにより、部分グラフ５００において既に表されているので、これらの２つのノードのうちのどれも、「レベル５」における子ノードとして含められない。「レベル４」においては、「レベル５」へと潜在的に展開すべき残りのノードが、存在していないので、「レベル５」の構築は、今や、完了している。
【００６０】
「レベル５」のノードのうちのおのおのは、次に、次数の降順に基づいて、（可能性のある子ノードが、ツリー部分グラフ１００の構築されたレベルのうちのどのレベルにおいてもまだ表されていない限り）「レベル６」における可能性のある子ノードへと展開される。図５において、「レベル５」における２つのノードのうちで、ノード３は、３という次数を有する最高の次数のノードであり、２という次数を有するノード５が、追随していることが、分かる可能性がある。ノード３は、ノード５よりも高い次数を有しているので、ノード３は、「レベル６」におけるその子ノードへの展開のために、ノード５の前に選択される。
【００６１】
グラフ１００において、ノード３の３つの隣接するノードが、すなわち、ノード１と、ノード４と、ノード６とが、存在していることが、分かる可能性がある。ノード１と、ノード６とは、すべて、既に、このポイントにより、ツリー部分グラフ５００の中で表されているので、いずれのノードも、「レベル６」における子ノードとして、含められない。しかしながら、ノード４は、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード４は、次に、「レベル６」において、ノード３の子ノードとして、含められる。
【００６２】
「レベル５」の最高の次数のノード（単数または複数）が、展開されており、ノード５は、次に、「レベル６」におけるその子ノードへの展開のために、次の最高のノードとして選択される。グラフ１００において、ノード５の２つの隣接するノードが、すなわち、ノード４と、ノード６とが、存在していることが分かる可能性がある。ノード４と、ノード６とは、おのおの、既に、「レベル４」において表されているので、これらの２つのノードのうちのいずれのノードも、「レベル６」における子ノードとして、含められてはいない。「レベル５」の中には、「レベル６」へと展開すべき残りのノードが、存在していないので、「レベル６」の構築は、今や、完了している。
【００６３】
このポイントにおいて、グラフ１００のすべての１３個のノードが、すなわち、ノード０〜１２が、ツリー部分グラフ５００のレベル０〜６において一度、表現されている。それゆえに、ツリー部分グラフ５００は、今や、完成している。しかしながら、完全性のために、ツリー部分グラフ５００が完成しているという同じ結論もまた、以前のように、（可能性のある子ノードが、ツリー部分グラフ１００の構築されたレベルのうちのどのレベルにおいてもまだ表されていない限り）可能性のある「レベル７」におけるそれらのそれぞれの子ノードへの、次数の降順に基づいた、展開のために、「レベル６」のノードのうちのおのおのを考慮することにより、到達される可能性もある。２という次数を有するノード４が、「レベル６」におけるただ１つのノードであるので、ノード４は、可能性のある「レベル７」への展開のために選択される。
【００６４】
グラフ１００において、ノード４の２つの隣接するノードが、すなわち、ノード３と、ノード５とが、存在していることが、分かる可能性がある。ノード３と、ノード５とのうちのおのおのが、既に、このポイントにより、ツリー部分グラフ５００において、表されているので、これらの２つのノードのうちのどちらも、「レベル７」における子ノードとして含められない。「レベル６」において、可能性のある「レベル７」へと展開すべき残りのノードが、存在していないので、図５のツリー部分グラフ５００は、完成している。
【００６５】
図５のツリー部分グラフ５００の構築のための詳細な説明が、提供されており、ここでは、ノード１０（ノードｖ）は、ステップ３１４において、ルート・ノードのうちの１つとして選択され、注意は、次に、ノード７（ノードｘ）と、ノード２（ノード７）とに向けられ、これらのノードは、例示の例証のために、第２のルート・ノードと、第３のルート・ノードとして、ステップ３１４において、選択されることもあった。ルート・ノード７と、ルート・ノード２との両方についてのツリー部分グラフは、ルート・ノード１０についてのツリー部分グラフ５００を構築するために上記で説明されるものと類似したプロセスに従って構築されることもある。図６は、ステップ３１４における、第２のルート・ノードとしてのノード７の選択に基づいて、ステップ３１６において構築されるツリー部分グラフ６００の一例を示すものである。同様に、図７は、ステップ３１４における、第３のルート・ノードとしてのノード３の選択に基づいて、ステップ３１６において構築されるツリー部分グラフ７００の一例を示すものである。
【００６６】
ステップ３１４における、ルート・ノードとして選択されたノードについての、ステップ３１６における、１つまたは複数のツリー部分グラフのコレクションの構築のすぐ後に、プロセス３００は、ステップ３１８へと進むことができる。
【００６７】
ステップ３１８において、ステップ３１６において構築される１つまたは複数のツリー部分グラフのコレクションを使用して、グラフの任意の与えられたノード対の間の最短距離を推定し、または計算する。より詳細には、与えられたノード対についての最短距離は、与えられたノード対についてツリー部分グラフから導き出されるすべての最短距離のうちの最小のもの（例えば、最小限のもの）であるように推定される。
【００６８】
例示の例証を継続して、問い合わせが、グラフ１００のノード１と、ノード３との間の最短距離について受信されるものと仮定する。図５においては、ノード１と、ノード３との間のツリー部分グラフ５００の中で示される最短距離は、（経路１−２−８−７−６−３を経由した）５という距離であることが、分かる可能性がある。図６においては、ノード１と、ノード３との間のツリー部分グラフ６００の中で示される最短距離はまた、（やはり経路１−２−８−７−６−３を経由した）５という距離であることも、分かる可能性がある。最後に、図７においては、ノード１と、ノード３との間のツリー部分グラフ７００の中の最短距離は、（経路３−１を経由した）１という距離として示されることが、分かる可能性がある。ツリー部分グラフ５００、６００、および７００から導き出される３つの最短距離のうちの最小のもの、または最小値が、（ツリー部分グラフ７００からの）１であるので、ノード３と、ノード１との間の距離についての問い合わせに対する応答は、（ツリー部分グラフ５００と、ツリー部分グラフ６００とによって示されるより大きな距離５とは対照的に）１という距離として、ステップ３１８において、提供される。図１のグラフ１００において、構築されたツリー部分グラフに基づいて、ステップ３１８において計算される距離１は、実際には、ノード３と、ノード１との間の正しい距離であることが、分かる可能性がある。
【００６９】
追加の一例を提供するために、問い合わせが、グラフ１００のノード８と、ノード１２との間の最短距離について、受信されるものと仮定する。図５においては、ノード８と、ノード１２との間のツリー部分グラフ５００の中で示される最短距離は、（経路８−９−１０−１１−１２を経由した）４という距離であることが、分かる可能性がある。図６においては、ノード８と、ノード１２との間のツリー部分グラフ６００の中で示される最短距離は、（経路８−２−１２を経由した）２という距離であることが、分かる可能性がある。最後に、図７においては、ノード８と、ノード１２との間のツリー部分グラフ７００の中の最短距離はまた、（やはり経路８−２−１２を経由した）２という距離として示されることもあることが、分かる可能性がある。ツリー部分グラフ５００、６００、および７００から導き出される３つの最短距離のうちの最小のもの、または最小値が、（ツリー部分グラフ６００と、さらにツリー部分グラフ７００とからの）２であるので、ノード８と、ノード１２との間の距離についての問い合わせに対する応答は、２という距離として、ステップ３１８において提供される。この場合にも、図１のグラフ１００において、構築されたツリー部分グラフに基づいて、ステップ３１８において計算される距離２は、実際に、ノード８と、ノード１２との間の正しい距離であることが、分かる可能性がある。
【００７０】
プロセス３００は、ステップ３２０において終了する可能性がある。
【００７１】
上記で指摘されるように、グラフの中の与えられたノード対の間の距離を計算するツリー部分グラフの生成と、使用とは、ある種のノード対について非ゼロのエラーを導入することができる。そのようなエラーは、ステップ３１４において追加の（また異なる）ルート・ノードを選択すること、およびステップ３１６において、追加のツリー部分グラフを構築することにより、低減されることもある。次いで、追加のツリー部分グラフをまた使用して、ステップ３１８において説明されるように、構築されたツリー部分グラフに基づいて、距離を計算することもできる。
【００７２】
追加のルート・ノードは、異なるやり方で、選択されることもある。例えば、一態様においては、追加のルート・ノードは、例示のプロセス３００のステップ３０２〜３１４を通して（１回または複数回）繰り返すことにより、選択されることもある。別の特定の態様においては、追加のルート・ノードは、ルート・ノードの望ましい数が、決定されるまで、それらの次数の降順に、全体のグラフ（例えば、グラフ１００）のノードを考慮することにより、ステップ３１４において選択される。この態様に従って考慮されるノードごとに、１つまたは複数のノードは、候補ノードが、異なっており、また以前に、ルート・ノードとしてまだ選択されていない場合に、また候補ノードが、ルート・ノードとして、既に、選択されている別のノードに対してあまりにも近すぎない（例えば、所定の距離の内部にある）限り、次数の降順に基づいて、ルート・ノードとして選択されることもある。
【００７３】
ルート・ノードとして選択されるノードの数は、様々なやり方で決定されることもある。一態様においては、ルート・ノードの数は、ツリー部分グラフが、構築されるべきであるグラフの直径またはスパンに基づいて、決定されることもある。グラフの直径またはスパンは、グラフの中のすべての異なるノード対の間のすべての最短距離経路のうちの最大の最短距離経路として理解されることもある。グラフ１００に戻ると、グラフ１００の直径は、距離６（例えば、ノード４と、ノード１０との間の距離）であることが、分かる可能性がある。それゆえに、一態様においては、選択されるルート・ノードの数は、グラフの直径に比べて少なくとも等しい（またはそれよりもあるファクタだけ大きい）可能性がある。グラフの直径（またはその何らかのファクタ）に基づいて、ルート・ノードの数を選択することは、何百万個ものノードを有するグラフについてゼロに近い値まで、誤った結果の期待値を低減させながら、グラフの中の全体のノードと比べて、比較的少ないルート・ノードを選択する間の良好なバランスを提供することが、見出されてきている。
【００７４】
別の態様においては、選択されるルート・ノードの数は、ｎが、グラフの中のノードの数である場合に、グラフのｌｏｇ  ｎを計算すること、および計算された値に少なくとも等しいか、計算された値（例えば、その何らかのファクタ）よりも大きいノードの数をルート・ノードとして選択することにより、決定されることもある。
【００７５】
さらに別の態様においては、ルート・ノードの数はまた、動的に決定されることもある。例えば、ルート・ノードの最初の組が、決定され、またツリー部分グラフが、構築され、また構築されたツリー部分グラフは、グラフの様々なノードの間の距離問い合わせの組を使用してテストされることもある。それらの問い合わせに対する応答におけるエラーの数が、所定の値（例えば、５％または１％、あるいは何らかの他のパーセンテージ）よりも大きい場合、そのときには追加のルート・ノードが、選択されることもあり、また追加のツリー部分グラフは、エラーの期待値が、望ましいパラメータの内部に入るまで、構築されることもある。
【００７６】
図８は、本開示の様々な態様を実施するために適したコンピューティング装置８００の高レベル・ブロック図を示すものである。単一のブロックの形で示されるが、他の実施形態においては、本装置８００は、並列アーキテクチャと、分散型アーキテクチャとを使用して実施される可能性もある。したがって、例えば、プロセス３００の例の中で示されるこれらのステップなど、様々なステップは、特定の実装形態に基づいて、逐次的に、並列に、または異なる順序で、装置８００を使用して、実行されることもある。装置８００は、様々な入出力デバイス８０４およびメモリ８０６と通信するように相互接続されているプロセッサ８０２（例えば、中央演算処理装置（「ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ」）を備えている。
【００７７】
プロセッサ８０２は、汎用中央演算処理装置（「ＣＰＵ」）など、任意のタイプのプロセッサ、または埋め込み型のマイクロコントローラやデジタル信号プロセッサ（「ＤＳＰ：ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ」）などの専用マイクロプロセッサとすることができる。入出力デバイス８０４は、プロセッサ８０２の制御の下で動作する任意の周辺デバイスとすることができ、また例えば、ネットワーク・アダプタ、データ・ポート、キーボード、キーパッド、マウス、ディスプレイなど、様々なユーザ・インターフェース・デバイスなどの装置９００へとデータを入力し、または装置９００からデータを出力するように構成されていることもある。
【００７８】
メモリ８０６は、例えば、一時的ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）や、リード・オンリー・メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、ハード・ディスク・ドライブ・メモリ、コンパクト・ディスク・ドライブ・メモリ、光メモリなどの非一時的メモリなど、電子情報を記憶するために適した任意のタイプのメモリとすることができる。メモリ８０６は、プロセッサ８０２による実行のすぐ後に、上記で説明された機能を実行するように装置８００を構成することができるデータおよび命令を含むことができる。さらに、装置８００は、メモリ８０６に記憶され、またプロセッサ８０２によって実行される、オペレーティング・システム、問い合わせマネージャ、デバイス・ドライバ、または１つまたは複数のネットワーク・プロトコルを含むこともできる。
【００７９】
上記で説明されるプロセスの様々な態様は、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔｓ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙｓ）、あるいはハードウェアまたはソフトウェアの任意の他の組合せを使用して、実施されることもある。本開示において、グラフを使用して示されているが、グラフと、ツリー部分グラフとは、ソフトウェアまたはハードウェアを使用して実施されるプログラマブルなプロセッサ（例えば、ＣＰＵまたはＦＰＧＡ）によってアクセスされ、また操作され得る様々なタイプのデータ構造（例えば、リンクされたリスト）に記憶されることもある。
【００８０】
例だけとして、ノードの与えられたツリー部分グラフの距離を記憶する１つのやり方は、グラフの中のすべてのノード対について、ツリー部分グラフＴの最短距離経路と、重みづけられたバイナリ・ツリーＴ’の最短距離経路とが、同じになるように、与えられたツリー部分グラフＴを重みづけられたバイナリ・ツリーＴ’へと変換することである。ＴのＴ’への変換は、いくつかの疑似ノードを導入することにより、行われることもある。例えば、Ｔが、ノードｖ、ｗ、ｘおよびｙに直接に接続されたノードｕを有している場合に、２つの疑似ノードｑおよびｒが、導入されることもある。Ｔ’は、重み０のエッジを有する疑似ノードｑおよびｒと、重み１のエッジを有するノードｖおよびｗに接続された疑似ノードｑと、重み１のエッジを有するノードｘおよびｙに接続された疑似ノードｒとに対してノードｕを接続することにより構築されることもある。（図９は、図７のツリー部分グラフ７００を変換することにより、形成されるバイナリ・ツリー９００の１つの特定の例を示すものである。図９の重みづけられたバイナリ・ツリーＴ’９００においては、ノード１３および１４は、疑似ノードである。）バイナリ・ツリーＴ’（バイナリ・ツリー９００など）における最短経路距離は、各ノードに関連する少数のラベルから構成されるデータ構造を使用して、符号化されることもある。例えば、バイナリ・ツリーＴ’は、バイナリ・ツリーＴ’のノードごとに、ツリーＴ’のルート・ノードからツリーＴ’の中の各ノードへの最短距離を符号化し、またさらに同様にツリーＴ’の中のルート・ノードから各ノードへの最短距離経路を符号化するデータ構造の形で表され、また記憶されることもある。
【００８１】
プロセス３００のステップ３１８において使用され得る距離関数ｆは、次に以下のように、すなわち、与えられたノード対ｎ１とｎ２との間の距離を計算する問い合わせを仮定すると、データ構造の中で符号化される最短距離経路を使用して、Ｔ’の中のノードｎ１とｎ２との少なくとも共通の祖先ノードｎ３を決定するように、規定されることもある。次いで、与えられたノード対ｎ１とｎ２との間の近似された距離は、一般に、距離（ｎ１）＋距離（ｎ２）−２×距離（ｎ３）として決定されることもあり、ここで、距離（ｎ１）は、ルート・ノードからのｎ１の距離であり、距離（ｎ２）は、ルート・ノードからのｎ２の距離であり、また距離ｎ３は、ルート・ノードからのｎ３の距離である。少なくとも共通の祖先ノードｎ３は、ノードｎ１とｎ２とを用いて、記憶されるルート経路に対するノードについてのビットごとの排他的論理和（ｅｘｃｌｕｓｉｖｅ  ｏｒ）を取ることにより、決定される可能性がある。
【００８２】
本明細書において開示されるシステムおよび方法は、さらに、ツリー部分グラフが、１）できる限りわずかな空間（ストレージまたはメモリ）を使用して記憶され得る、２）グラフのノードの間の実際の距離に（等しくない場合には）できる限り近い距離推定値を提供するために使用され得る、また３）数分および数日とは対照的に、マイクロ秒およびミリ秒以内に、グラフの任意の２つのノードの間の距離についての問い合わせに応答するために使用され得る１つまたは複数のデータ構造に記憶されることを可能にする。
【００８３】
本開示は、上記で述べられた目標を満足させることがよりよくできる大規模なグラフの中のノード距離を算出するためのシステムおよび方法を説明している。本開示は、効率的に記憶される可能性があり、また他の従来のアプローチよりもずっと高速に距離問い合わせに応答するために使用される可能性があるデータ構造に対するグラフを事前処理するためのシステムおよび方法を説明している。本明細書において開示されるシステムおよび方法は、モバイル・コール・グラフ、オンライン・ソーシャル・ネットワーク・グラフ、自律的システム・レベルにおけるインターネット・グラフなどの双曲線グラフまたは近接双曲線グラフのために特に効果的であるものと考えられる。
【００８４】
本明細書における態様は、特定の実施形態に関連して説明されているが、これらの実施形態は、単に、本開示の原理およびアプリケーションについて例証的であるにすぎないことを理解すべきである。したがって、非常に多数の修正形態が、実例となる実施形態に対して行われる可能性があること、および他の構成が、本開示の精神および範囲を逸脱することなく考案され得ることを理解すべきである。
【図１】
2016532181.tif 000003
【図２】
2016532181.tif 000004
【図３】
2016532181.tif 000005
【図４】
2016532181.tif 000006
【図５】
2016532181.tif 000007
【図６】
2016532181.tif 000008
【図７】
2016532181.tif 000009
【図８】
2016532181.tif 000010
【図９】
2016532181.tif 000011
【国際調査報告】
2016532181.tif 000012
2016532181.tif 000013
2016532181.tif 000014