JP6178004B2 - グラフにおける距離近似のためのシステムおよび方法 - Google Patents

グラフにおける距離近似のためのシステムおよび方法 Download PDF

Info

Publication number
JP6178004B2
JP6178004B2 JP2016518671A JP2016518671A JP6178004B2 JP 6178004 B2 JP6178004 B2 JP 6178004B2 JP 2016518671 A JP2016518671 A JP 2016518671A JP 2016518671 A JP2016518671 A JP 2016518671A JP 6178004 B2 JP6178004 B2 JP 6178004B2
Authority
JP
Japan
Prior art keywords
node
nodes
graph
level
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016518671A
Other languages
English (en)
Other versions
JP2016532181A (ja
Inventor
アジュワニ,ディーパック
ケネディ,ウィリアム
サラ,アレッサンドラ
サニー,イラジュ
Original Assignee
アルカテル−ルーセント
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アルカテル−ルーセント filed Critical アルカテル−ルーセント
Publication of JP2016532181A publication Critical patent/JP2016532181A/ja
Application granted granted Critical
Publication of JP6178004B2 publication Critical patent/JP6178004B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/122Shortest path evaluation by minimising distances, e.g. by selecting a route with minimum of number of hops
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • H04L45/484Routing tree calculation using multiple routing trees

Description

本開示は、データ・セットの中の情報を取り出すことを対象としている。より詳細には、本開示は、大きなデータ・セットを表すグラフィカル・モデルから情報を抽出するためのシステムおよび方法を対象としている。
本節は、本明細書において開示されるシステムおよび方法のよりよい理解を容易にする際に助けとなり得る態様を導入するものである。したがって、本節の記述は、この観点から読み取られるべきであり、また何が先行技術の中にあるか、またはないかについての承認として理解されるべきでも、または解釈されるべきでもない。
オンラインでの交流が急激に増大したこともあって、近年アクセス可能なデータ量が急増したことにより、多数の研究コミュニティと、ビジネス・コミュニティと、マーケティング・コミュニティが、グラフィカル手法で情報を表現するようになってきている。グラフィカル・モデル(例えば、ソーシャル・ネットワーク・グラフィカル・モデル、コール・データ・グラフィカル・モデルなど)は、生データの間の関係または相互接続についての直観的な表現を提供することができるが、そのようなグラフィカル・モデルから情報を抽出することは、一般に、どのようにして、加入者、グループ、人々、オブジェクト、マシンなどの様々なエンティティが、他のエンティティと相互に作用し、または関連するかを決定するために、非常に多数の計算を必要とする。多数のグラフィカル・モデルは、何千個もの接続または何百万個もの接続によって相互に接続されたエンティティを表す莫大な数のノードを含むことができるので、データ・セットを表すグラフィカル・モデルから情報を取り出すための時間および計算努力を低減させるためのスケーラブルなシステムおよび方法についての必要性が存在している。
様々な態様において、複数の相互接続されたノードを有するグラフについての与えられたノード対の間の最短距離を推定するための1つまたは複数のツリー部分グラフを構築するためのシステムおよび方法が、提供される。
一態様は、グラフの複数の相互接続されたノードから1つまたは複数のルート・ノードを選択することを含んでいる。本態様は、選択されたルート・ノードから開始して、マルチ・レベル・ツリー部分グラフの逐次的レベルにおいて親−子関係で、グラフの複数の相互接続されたノードを表すそれぞれのマルチ・レベル・ツリー部分グラフを構築することをさらに含んでおり、ここでは、マルチ・レベル・ツリー部分グラフの少なくとも1つのレベルは、そのレベルにおける親ノードの次数の降順に基づいて、逐次的なレベルへと展開される。例えば、ツリー部分グラフの与えられたレベルにおける複数の親ノードの中の少なくとも1つの親ノードの次数が、1つまたは複数の他の親ノードの次数よりも高い場合に、より高い次数を有する親ノードは、比較的により低い次数を有する親ノードの前に、逐次的なレベルにおけるそれらの子ノードへと展開される。
一態様においては、1つまたは複数のルート・ノードは、グラフからノードuを決定すること、ノードvが、グラフのノードuから最も遠く離れている、グラフのノードとして、決定される場合に、グラフからノードvを決定すること、および1つまたは複数のルート・ノードのうちの1つとして、ノードvを選択することにより、決定されることもある。
別の態様においては、グラフから選択されるノードuは、グラフからランダムに選択されるノードとすることができる。
一態様においては、1つまたは複数のルート・ノードは、ノードwが、グラフのノードvから最も遠く離れている、グラフのノードとして、決定される場合に、グラフからノードwを決定すること、および1つまたは複数のルート・ノードのうちの1つとして、ノードwを選択することにより、決定されることもある。
一態様においては、1つまたは複数のルート・ノードは、グラフのノードvと、グラフのノードwとの間の最短距離経路を決定すること、およびグラフのノードvと、グラフのノードwとの間の最短距離経路の上の中間の近くにある、グラフのノードとして、グラフからノードxを決定すること、ならびに1つまたは複数のルート・ノードのうちの1つとして、ノードxを選択することにより、決定されることもある。
一態様においては、1つまたは複数のルート・ノードは、グラフのノードxから所定の距離の内部の、最高の次数を有する、グラフのノードとして、グラフからノードyを決定すること、および1つまたは複数のルート・ノードのうちの1つとして、ノードyを選択することにより、決定されることもある。
さらなる一態様は、それぞれのツリー部分グラフのうちの少なくとも1つのうちのおのおのから、与えられたノード対についてのそれぞれの最短距離を決定すること、およびその決定されたそれぞれの最短距離のうちの最小値として、グラフの与えられたノード対の間の距離を推定することを含んでいる。
別の態様は、グラフの直径に基づいて、グラフの複数のノードから選択されるルート・ノードの数、または構築されるそれぞれのツリー部分グラフの数を決定することを含んでいる。
一態様は、ツリー部分グラフを使用して、与えられたノード対の間で決定される推定された距離と、グラフに基づいて計算される与えられたノード対の間の実際の距離とに基づいて、エラーの統計的期待値を計算すること、およびグラフの複数のノードから選択されるルート・ノードの数、または構築されるそれぞれのツリー部分グラフの数を動的に決定するために、エラーの統計的期待値を使用することを含んでいる。
別の態様は、例えば、グラフの複数の相互接続されたノードのうちのそれぞれのノードの次数の降順に基づいて、追加のルート・ノードを選択することにより、1つまたは複数のルート・ノードのうちの追加のルート・ノードを決定することを含んでいる。
本開示の一態様に従って、データ・セットのグラフィカル・モデルの一例を示す図である。 図1のグラフィカル・モデルのノードに関連する次数の一例を示す図である。 本開示の一態様に従って、プロセス流れ図の一例を示す図である。 図1のグラフィカル・モデルの与えられたノードと、残りのノードとの間の最短距離経路と最短距離とについての一例を示す図である。 本開示の一態様に従って、ツリー部分グラフを構築する一例を示す図である。 本開示の一態様に従って、ツリー部分グラフの追加の例を示す図である。 本開示の一態様に従って、ツリー部分グラフの追加の例を示す図である。 図3のプロセス流れ図を実施するための装置の一例を示す図である。 図1のグラフ100のノード対の距離を保存する重み付けされたバイナリ・ツリーの一例を示す図である。
本開示についての様々な態様は、添付の図面を参照して以下で説明されており、図面の中では、同様な番号は、図面の説明全体を通して同様な要素のことを言及している。本説明および図面は、単に、本開示の原理を例証しているにすぎない。当業者なら、本明細書において説明されても、または示されてもいないが、原理を実施し、また本開示の精神および範囲の内部に含まれる様々な構成を考案することができるようになることが、理解されるであろう。
本明細書において使用されるように、用語「論理和(or)」は、それ以外の方法(例えば、「排他的論理和(or else)」または「代替案の論理和(or in the alternative)」)で示されない限り、非排他的論理和(non−exclusive or)のことを意味している。さらに、本明細書において使用されるように、要素の間の関係を説明するために使用される言葉は、それ以外の方法で示されない限り、直接の関係、または介在する要素の存在を含むように広範に解釈されるべきである。例えば、ある要素が、別の要素に「接続され(connected)」ている、または「結合され(coupled)」ていると称されるときに、その要素は、他の要素に直接に接続され、または結合される可能性もあり、あるいは介在する要素が存在していてもよい。対照的に、ある要素が、別の要素に「直接に(directly)接続され」ている、または「直接に結合され」ていると称されるときには、介在する要素は存在していない。同様にして、「間の(between)」、「隣接する(adjacent)」などの言葉も、同様なやり方で解釈されるべきである。
データ・セットのグラフィカル・モデル(「グラフ」)表現に関する基本的な計算には、グラフの様々な相互接続されたノードの間の最短距離を決定することを必要とする。距離は、一般に、グラフの与えられたソース・ノードからグラフの与えられた宛先ノードに到達するべき、トラバースされるエッジ(edge)の数、または同様な意味合いで、行われるノード・ホップの数として理解される可能性がある。多数のデータ・マイニング・スキームにおいては、与えられたノード対の間の最短距離を決定する計算が、多数回、また多くの場合には、少なくとも、グラフの中のノードの数と少なくとも同じ回数だけ実行される。何千個もの、何百万個もの、またはそれより大きいことさえあるノードの数を含むグラフでは、全般的なデータ・マイニング・スキームが、妥当な時間内に実行するための、グラフの様々な相互接続されたノードの間の最短距離を求める1つまたは複数の問い合わせに対して十分に迅速に応答することは、簡単ではない計算の課題である。
本開示は、グラフの任意の2つのノードの間の最短距離を迅速に、また正確に推定するために使用され得るツリー部分グラフの選択的なコレクションへとデータ・セットのグラフ表現を処理するための態様を説明している。本明細書において開示される態様は、特に、多数の相互接続されたノード(例えば、何千個もの、または何百万個もの)が存在する場合には関連があるが、それらはまた、任意の数のノードを有するグラフに対しても適用可能である。
一般に、双曲線グラフは、エッジと相互接続されるノードのグラフであり、そこでは4つの相互接続されたノードの任意の与えられた組では、すべてのノード対の間の6つの距離は、ひとまとめにして、通常デルタと称されるただの固定値にすぎないものによる適切な近似ツリーの上の距離とは異なっている。デルタ−双曲線グラフは、一般的に、Nによってスケーリングする、最大の中心性を有する、ノードの非空のコアを含んでおり、ここでNは、グラフのノード・サイズである。デルタ−双曲線グラフはまた、一般的に、対数スケールの直径を有してもおり、そこでは、グラフのすべてのノード対についての最大の最短距離または直径は、log Nのファクタにより、グラフのノード・サイズNに比例している。以下で詳細に説明される態様は、グラフの双曲線特性を活用して、次いで、グラフの内部の任意のノード対の間の距離(例えば、最短距離)を問い合わせるために使用されるグラフに対する1つまたは複数のツリー部分グラフ近似のコレクションを構築している。
以下で詳細に例証されるように、1つまたは複数のツリー部分グラフは、グラフの双曲線の曲率に基づいて、生成される。次いで、ツリー部分グラフは、グラフの様々なノードの間の距離についての1つまたは複数の問い合わせに応じて、距離を推定するために使用される。ツリー部分グラフの生成は、グラフそれ自体から任意の2つの与えられたノードの間で計算され得る実際の距離に比べての、ツリー部分グラフに基づいて計算される距離の中に非ゼロ(であるが、受け入れ可能に小規模)のひずみまたはエラーの量を導入する可能性がある。しかしながら、ツリー部分グラフを使用して近似される距離と、グラフの中の実際の距離との間のひずみまたはエラーの統計的期待値は、多数のノード(例えば、何千個ものノード、または何百万個ものノード)を有する双曲線グラフの場合は、ゼロであり、またはゼロに近いように考えられることもあり、またより少ない数のノード(何十ものノード、または何百ものノード)を有する双曲線グラフの場合には、小さいこともあり、また受け入れ可能なこともあることが、見出されてきている。
以上で指摘されるように、何千個ものノード、または何百万個ものノードを含むグラフの様々な相互接続されたノードの間の最短距離を決定することは、一般に非常に計算集約的である。結果として、グラフの様々なノードの間の距離についての問い合わせに応答するためにかかる時間は、数分、数時間、または数日さえもかかる可能性がある。それに応じて、本開示の態様は、グラフに基づいて、ツリー部分グラフのコレクションを生成すること、および従来の方法よりもずっと速く、また計算集約的でないやり方で、ツリー部分グラフを使用して大規模なグラフのノードの間の距離を推定することを対象としている。
図1は、本開示の様々な態様を例証する目的のための、少数のノード(または頂点)を示すグラフ100の簡略化された例を示すものである。少数のノードだけが、本開示の原理についての理解を助けるために、グラフ100の中に示されているが、実際には、グラフは、一般的に、多数の(例えば、何千個もの、または何百万個もの)相互接続されたノードを含むことができることが、理解されるであろう。
例示のグラフ100は、すべてが、1つまたは複数のエッジ(図1の中に線として示される)によって互いに相互接続されている13個のノード(図1において、0〜12として指定される)を図で示している。第1のノードは、どのような介在するノードもなしに、第1のノードを第2のノードと直接に相互接続するエッジが、存在する場合に、第2のノードの隣接ノードである。一例として、ノード5の隣接ノードは、ノード4および6である。同様にして、ノード2の隣接ノードは、ノード0、ノード1、ノード8およびノード12であることが分かる可能性がある。
図1の中に示される各ノードは、任意の与えられたノード対の間に、グラフ100における少なくとも1つの最短距離経路が存在するように、1つまたは複数のエッジにより、あらゆる他のノードに直接的にまたは間接的に相互接続される。例えば、グラフ100は、ノード5から出発してノード3に到達することができる最短距離経路が、経路5−4−3を経由して、または同様な意味合いで、経路5−6−3を経由して、最小の2つのエッジ(または2つのノード・ホップ)をトラバースすることを必要とするので、ノード5と、ノード3との間の最短距離が、二(2)であることを示している。さらに、ノード9と、ノード8との間の最短距離は、1(経路9−8を経由した)であるのに対して、ノード12と、ノード6との間の最短距離は、4(経路12−2−8−7−6または12−2−1−3−6を経由した)である。最短距離経路の類似した決定は、グラフ100に示される12個のノードのうちのすべての残りの対について行われることもある。
任意の2つの与えられたノードの間の少なくとも1つの最短距離経路に加えて、任意の与えられたノード対の間のより長い距離の他の経路もまた存在している。例えば、グラフ100においてノード5から出発して、ノード3に到着するための1つのより長い距離経路は、六(6)という距離を有する経路5−6−7−8−2−1−3をトラバースすることを必要とする。十(10)の距離を有するより長くさえある経路は、5−6−7−8−9−10−11−12−2−1−3である。類似したより長い距離経路は、グラフ100の中に示されるすべての残りのノード対について決定される可能性がある。
それぞれのノード0〜12のうちのおのおのは、グラフ100のおのおののそれぞれのノードに関連するエッジまたは相互接続の数を表す次数を有するように決定されることもある。グラフ100のすべてのエッジが、重み付けされていない(または同じ相対的重みを有する)ことが、本明細書において仮定されるが、これは、制約ではない。他の態様においては、グラフ100の1つまたは複数のエッジは、異なる重みを有することができ、これらの異なる重みは、ノードの次数を決定するときに、考慮に入れられることもある。図2は、与えられたノードをその隣接するノードと相互接続するエッジの数に基づいて、グラフ100のノード0〜12のうちのおのおのについての次数を示すものである。
図3は、グラフ(例えば、グラフ100)の任意の2つのノードの間の最短距離を推定するために使用され得る、ツリー部分グラフのコレクションを構築するために本開示の態様に従って、例示のプロセス300を示すものである。一般に、ツリー部分グラフは、グラフの指定されたルート・ノードからグラフの他のノードのうちのおのおのへの最短距離経路を示すマルチ・レベル・ツリー表現として理解されることもある。グラフの各ノードは、単一の親ノード(指定されたルート・ノードを除いて)についての子ノードとして、ツリー部分グラフの中で表される。言い換えれば、グラフ(例えば、グラフ100)のノードのうちのおのおのは、ツリー部分グラフの中で一度、表される。
さらに、同じ親ノードを有する、ツリー部分グラフのノードは、兄弟(siblings)として理解されることもある。子ノードを有していない、ツリー部分グラフのノードは、リーフ・ノードとして理解されることもある。少なくとも1つの子ノードを有するノードは、少なくとも1つの子ノードの親ノードとして理解されることもある。マルチ・レベル・ツリー部分グラフの高さ(または深さ)は、マルチ・レベル・ツリー部分グラフの中のレベルの総数として理解されることもある。
本開示の特徴のうちの1つは、1つまたは複数のツリー部分グラフのコレクションについての特定のルート・ノードの選択または指定のための方法論である。本開示の別の特徴は、ルート・ノードの選択に基づいて、ツリー・グラフのレベルを構築する(例えば、展開する)方法論である。本開示についてのこれらの態様、および他の態様は、プロセス300の例において明らかになり、このプロセスの例は、次に本明細書において説明される。
プロセス300は、ステップ302において開始される。ステップ304において、ノードuは、グラフからランダムに選択される。図1のグラフ100に基づいた例示の例証では、グラフ100のノード4は、ランダムに(または擬似ランダムに)初期ノードuとして選択されることが、仮定されるが、グラフ100の任意の他の以上で選択されていないノードは、他のやり方でノードuとして選択されることもある。
ステップ306において、ノードvは、ノードuと、グラフの他のノードのうちのおのおのとの間のすべての最短距離の観点から、ノードuから最も遠く離れているノードとして選択される。同様な意味合いで、ノードuから最も遠く離れている、グラフの中の複数のノードが存在する場合、そのときにはそのような同様な意味合いで最も遠く離れたノードのうちの任意の1つが、ノードvとして(例えば、ランダムに)選択されることもある。
図4は、ノード4が、ノードuとして選択される場合の、例示の例証のための最短距離経路と、最短距離とを示すものである。図4において分かるように、グラフ100のノード4と、他のノードのうちのおのおのとの間の最短距離の観点からノード4から最も遠く離れているノードは、(六(6)の距離による)ノード10である。ノード10は、グラフ100のノード4と、他のノードのうちのおのおのとの間の最短距離の観点から、ノード4から最も遠く離れているノードであるので、ノード10は、例示の例証については、ステップ306において、ノードvとして選択される。
ただ比較するために、図4は、ノード4からの第2の最も遠く離れたノードは、(五(5)の距離による)ノード9および11であることを示すのに対して、その一方で、ノード4に対する最短距離の観点からの最も近いノードは、グラフ100の中の(一(1)の距離による)ノード3および5である。
ステップ308において、ノードwは、グラフのノードvと、他のノードのうちのおのおのとの間のすべての最短距離の観点からノードvから最も遠く離れているノードとして決定される。例示の例証において、グラフ100から、ノード10と、他のノードのうちのおのおのとの間のすべての最短距離の観点からのノード10(ノードv)からの最も遠く離れたノードが、たまたまノード4であることが、分かる可能性がある。したがって、ノード4は、例示の例証のために、ステップ308において、ノードwとして選択される。
例示の例証においては、ノード4は、ノードu(ステップ304における)と、ノードw(ステップ308における)との両方として選択されることに注意すべきであろう。しかしながら、これは、さらにノードuとしてのノード4の初期ランダム選択の結果であり、またプロセス300の他の実現においては、ステップ304において選択されるノードuと、ステップ308において選択されるノードwとは、グラフの異なるノードである可能性があり、また一般にグラフの異なるノードであってもよい。
ステップ310において、ノードxは、ノードvと、ノードwとの間の最短距離経路の上のノードvと、ノードwとの間の中間にある(または中間の最も近くにある)ノードとして決定される。グラフ100に基づいた例示の例証を継続すると、ノード10(ノードv)と、ノード4(ノードw)との間の距離六(6)の複数の同等の最短距離経路が存在していることが分かる可能性がある。ノード7が、2つの最短距離経路(経路4−5−6−7−8−9−10および経路4−3−6−7−8−9−10)の上の中間のノードであること、またノード2が、他の2つの最短距離経路(経路4−3−1−2−12−11−10および4−3−1−2−8−9−10)の上の中間ノードであることもまた、分かる可能性がある。したがって、グラフ100のノード2またはノード7のいずれかが、ノードxとして選択されることもある。例示の例証では、ノード7は、ノードxとして選択されるが、他の実施形態においては、ノード2はまた、ノードxとして選択されることもあることが、仮定される。
ステップ312において、ノードyは、ノードxに近い(例えば、所定の距離の内部にある)ノードから最高の次数のノードであるノードとして決定される。グラフ100に基づいた例示の例証では、所定の距離が、グラフ100の全体のサイズの観点から二(2)の距離として選択されることを仮定すると、グラフ100の中のノード7の近くにある(例えば、二(2)の所定の距離の内部にある)6つのノードが、実際に存在していることが、分かる可能性がある。とりわけ、これらのノードは、ノード8(次数3)と、ノード9(次数2)と、ノード2(次数4)と、ノード6(次数3)と、ノード3(次数3)と、ノード5(次数2)とである。これらの6つの候補ノードの中から、グラフ100から(または図2から)、ノード2(次数4)は、最高の次数のノードであることが、分かる可能性がある。それゆえに、例示の例証では、ノード2は、ノードyとして選択される。
2という特定の所定の距離を例示の例証において使用して、ノードyを決定するが、他の態様においては、他の距離は、例えば、グラフのサイズ、スパン、または中心性についての考慮に基づいて、選択される可能性もある。同等に、ノードxからの所定の距離の内部にある最高の次数のノードである複数のノードが、存在している場合、そのときには、そのような、同様な意味合いで最高の次数のノードのうちの任意の1つ(または複数)が、ステップ312において、ノードyとして、(例えば、ランダムに)選択されることもある。
ステップ314において、1つまたは複数のルート・ノードの初期の組が、ツリー部分グラフのコレクションを構築するためのノードvと、wと、xと、yとから選択される。これに関して、これらのノードが、グラフの中のノードのグラフのローカル性と、次数の中心性とに関して、ルート・ノードの選択における望ましいダイバーシティを提供するので、ルート・ノードは、ノードvと、wと、xと、yとから選択されることに注意すべきである。例えば、プロセス300に従って、ノードvおよびwとして、選択されるノードは、グラフの中心から外側にあり、またはグラフの中心から極端に離れたノードである可能性が高い。プロセス300に従ってノードxとして選択されるノードは、グラフの中の中心の(または中心に近い)ノードのうちの1つである可能性が高い。さらに、プロセス300に従ってノードyとして選択されるノードは、グラフの中心に近い高い次数のノードである可能性が高い。
グラフ100に基づいた例示の例証では、ノード10(ノードv)は、第1のルート・ノードとして選択され、ノード7(ノードx)は、第2のルート・ノードとして選択され、またノード2(ノードy)は、ステップ314において、第3のルート・ノードとして選択されるが、他の態様においては、ノードvと、wと、xと、yとのうちのすべて、または任意の他の組合せもまた、ルート・ノードとして選択される可能性もあることが、仮定される。
ステップ316において、1つまたは複数のツリー部分グラフのコレクションは、ステップ314において選択されるルート・ノードについて、グラフから構築される。グラフの双曲線性または曲率特性を活用するために、マルチ・レベル・ツリー部分グラフは、以下で例示的に説明されるように、次数の降順に基づいて、ツリー部分グラフの任意の与えられたレベルの中のノードをそれらの子ノードへと展開することにより、特定の順序で構築される。
図5は、ステップ314における、第1のルート・ノードとしてのノード10(ノードv)の選択に基づいて、ステップ316において構築され得るツリー部分グラフ500の一例を示すものである。例示のツリー部分グラフ500は、本明細書において、「レベル0」と、「レベル1」と、「レベル2」と、「レベル3」と、「レベル4」と、「レベル5」として参照される6つのレベルを含んでいる。図5の中に示されるように、ツリー部分グラフ500は、グラフ100の13個のノード(ノード0〜12)のうちのおのおのを含んでおり、これらのノードのうちのおのおのは、便宜上、フォーマットNN(D)を使用して指定されており、ここで、NNは、特定のノードを特定し、またDは、NNによって特定されるノードの次数を示している。
図5のツリー部分グラフ500は、「レベル0」から出発して、グラフ100からのすべての13個のノード(ノード0〜12)が、ツリー部分グラフ500のレベルのうちの1つの中で一度、表されるまで、図1のグラフ100から、ステップ316において、レベルごとに構築される。ステップ314において選択されるノード10は、「レベル0」におけるツリー部分グラフ500のルート・ノードとして使用される。「レベル0」は、ルート・ノード以外のどのようなノードも含まないことになり、またそれゆえに、完全である。
「レベル0」のルート・ノード10は、「レベル1」において、子ノードとしてその隣接するノードを含むように展開される。グラフ100において、ノード10の2つの隣接するノード、すなわち、ノード11と、ノード9とが、存在することが、分かる可能性がある。それゆえに、ノード11と、9とは、両方ともに、ツリー部分グラフ500の中のルート・ノード10の子ノードとして表され、これは、「レベル1」を完成する。
「レベル1」のノードのうちのおのおのは、次数の降順に基づいて、次に、(以下で明らかになるように、子ノードが、ツリー部分グラフ100の構築されたレベルのうちのどれでも既に表されていない限り)「レベル2」の中のそれらのそれぞれの子ノードへと展開される。ツリー部分グラフ500の「レベル1」の中にあるノード11と、9との両方が、たまたま、2という同じ次数を有するので、ノード11が、最初に、「レベル2」の中のそのすぐ隣接するノードへと展開されるか、またはノード9が、最初に、「レベル2」の中のそのすぐ隣接するノードへと展開されるかは、重要ではない。それゆえに、例示の例証では、同じ次数を有するノードの間で選択するときには、左から右への選択が、使用されるが、他の態様においては、右から左への選択、ランダムな選択、または選択のための何らかの他の判断基準が、使用される可能性もあることが、仮定される。
それに応じて、左から右へと進めると、ノード11は、「レベル2」におけるその子ノードへの展開のために最初に選択される。グラフ100において、ノード11の2つの隣接するノード、すなわち、ノード10と、ノード12とが存在していることが、分かる可能性がある。ノード10は、ルート・ノードとして、ツリー部分グラフ500の「レベル0」において、既に表されているので、それは、「レベル2」の中に含まれていない。ノード12は、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード12は、ノード11の子ノードとして、「レベル2」の中に含まれる。
左から右へと継続すると、「レベル1」の残りのノード、すなわち、ノード9が、次に、「レベル2」の中のその子ノードへの展開のために選択される。グラフ100において、ノード9の2つの隣接するノード、すなわち、ノード8と、ノード10とが、存在していることが、分かる可能性がある。ノード10は、既に、ルート・ノードとしてツリー部分グラフ500の「レベル0」の中に表されているので、それは、「レベル2」の中に含まれてはいない。ノード8は、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード8は、次に、ノード9の子ノードとして「レベル2」の中に含められる。「レベル2」への展開のために考慮すべき、「レベル1」の中の残りのノードが、存在していないので、「レベル2」の構築は、今や、完了している。
「レベル2」のノードのうちのおのおのが、次に、次数の降順に基づいて、(子ノードが、ツリー部分グラフ100の構築されたレベルのうちのどのレベルでも、まだ表されていない限り)「レベル3」におけるそれらのそれぞれの子ノードへと展開される。図5において、ノード8は、3という次数を有する、「レベル2」における最も高い次数のノードであり、2という次数を有する次の最も高い次数のノードであるノード12によって追随されることが、分かる可能性がある。ノード8は、ノード12よりも高い次数を有しているので、ノード8は、「レベル3」におけるその子ノードへの展開のために、ノード12の前に選択される。
グラフ100において、ノード8の3つの隣接するノード(次数に対応する)が、すなわち、ノード2と、ノード7と、ノード9とが、存在していることが、分かる可能性がある。ノード9は、ツリー部分グラフ500の「レベル1」において、既に表されているので、それは、「レベル3」の中には、含められない。ノード2と、ノード7とは、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード2と、ノード7とは、次に、「レベル3」において、ノード8の子ノードとして含められる。
「レベル2」の最も高い次数のノードが、展開されており、ノード12は、次に、「レベル3」におけるその子ノードへの展開のために、次の最高の次数のノードとして選択される。グラフ100において、ノード12の2つの隣接するノードが、すなわち、ノード8と、ノード10とが、存在していることが、分かる可能性がある。ノード8と、ノード10との両方が、既に、それぞれ「レベル2」と、「レベル0」とにおいて、表されているので、これらの2つのノードのうちのいずれの1つも、この場合にも、「レベル3」の中には含められない。「レベル2」の中には、「レベル3」の中へと展開すべき、残りのノードは、存在していないので、「レベル3」の構築は、今や、完了している。
「レベル3」のノードのうちのおのおのは、次に、次数の降順に基づいて、(可能性のある子ノードが、ツリー部分グラフ100の構築されたレベルのうちのどのレベルにおいてもまだ表されていない限り)「レベル4」の中のそれらのそれぞれの子ノードへと展開される。図5において、ノード2は、4という次数を有する、「レベル2」における最高の次数のノードであり、2という次数を有する次の最高の次数のノード7によって追随されることが、分かる可能性がある。ノード2は、ノード7よりも高い次数を有しているので、ノード2は、「レベル4」におけるその子ノードへの展開のために、ノード7の前に選択される。
グラフ100において、ノード2の4つの隣接するノードが、すなわち、ノード0と、ノード1と、ノード8と、ノード12とが、存在していることが、分かる可能性がある。ノード8と、ノード12とは、ツリー部分グラフ500の「レベル2」の中に上記で表されているので、これらの2つのノードのうちのいずれも、「レベル3」における子ノードとして含まれてはいない。しかしながら、ノード0と、ノード1とは、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード0と、ノード1とは、次に、「レベル4」において、ノード2の子ノードとして、含められる。
「レベル3」の最高の次数のノードが、展開されており、ノード7は、次に、「レベル4」におけるその子ノードへの展開のために、次の最も高いノードとして選択される。グラフ100において、ノード7の2つの隣接するノードが、すなわちノード6と、ノード8とが、存在していることが、分かる可能性がある。ノード8は、既に、「レベル2」において表されているので、ノード8は、「レベル4」においては、子ノードとして含められない。しかしながら、ノード7は、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード7は、「レベル4」において、ノード8の子ノードとして含められる。「レベル3」においては、「レベル4」へと展開すべき残りのノードが、存在していないので、「レベル4」の構築は、今や、完了している。
「レベル4」のノードのうちのおのおのは、次に、次数の降順に基づいて、(可能性のある子ノードが、ツリー部分グラフ100の既に構築されたレベルのうちのどのレベルでも、まだ表されていない限り)「レベル5」におけるそれらのそれぞれの子ノードへと展開される。「レベル4」における3つのノードのうちで、ノード6と、ノード1とは、3という次数を有する最高の次数のノードであり、2という次数を有する次の最高の次数のノード0によって追随されることが、分かる可能性がある。ノード6と、ノード1とは、ノード0よりも高い次数を有しているので、ノード6と、ノード1とは、「レベル5」におけるその子ノードへの展開のために、ノード0の前に選択される。
「レベル4」のノード6と、ノード1とが、たまたま、3という同じ最高の次数を有するので、ノード6またはノード1のいずれかは、「レベル5」におけるそのすぐ隣接するノードへと展開される第1のノードとして、選択されることもある。以前のように(ノードが、同じ次数を有することが決定されるときに)左から右へと進行して、ノード6は、先ず、「レベル5」におけるその子ノードへの展開のために、選択される。
グラフ100において、ノード6の3つの隣接するノードが、すなわち、ノード3と、ノード5と、ノード7とが、存在していることが分かる可能性がある。ノード7は、「レベル3」において、既に、表されているので、それは、「レベル5」の中には含められない。しかしながら、ノード3と、ノード5とは、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード3と、ノード5とは、次に、「レベル5」において、ノード6の子ノードとして含められる。
左から右へと継続すると、「レベル4」の残りの最高の次数のノード、すなわち、ノード1は、次に、「レベル5」におけるその子ノードへの展開のために、選択される。グラフ100において、ノード1の3つの隣接するノードが、すなわち、ノード0と、ノード2と、ノード3とが、存在していることが、分かる可能性がある。ノード0と、ノード2と、ノード3とは、すべて、既に、このポイントにより、部分グラフ500において、表されているので、これら3つのノードのうちのどれも、「レベル5」における子ノードとして含められない。
最高の次数のノードの両方(ノード6およびノード1)が、処理されているので、次の最高の次数のノードとしてのノード0は、次に、「レベル5」におけるその子ノードへの展開のために、選択される。グラフ100において、ノード0の2つの隣接するノードが、すなわち、ノード1と、ノード2とが、存在していることが、分かる可能性がある。ノード0と、ノード2とは、両方ともに、このポイントにより、部分グラフ500において既に表されているので、これらの2つのノードのうちのどれも、「レベル5」における子ノードとして含められない。「レベル4」においては、「レベル5」へと潜在的に展開すべき残りのノードが、存在していないので、「レベル5」の構築は、今や、完了している。
「レベル5」のノードのうちのおのおのは、次に、次数の降順に基づいて、(可能性のある子ノードが、ツリー部分グラフ100の構築されたレベルのうちのどのレベルにおいてもまだ表されていない限り)「レベル6」における可能性のある子ノードへと展開される。図5において、「レベル5」における2つのノードのうちで、ノード3は、3という次数を有する最高の次数のノードであり、2という次数を有するノード5が、追随していることが、分かる可能性がある。ノード3は、ノード5よりも高い次数を有しているので、ノード3は、「レベル6」におけるその子ノードへの展開のために、ノード5の前に選択される。
グラフ100において、ノード3の3つの隣接するノードが、すなわち、ノード1と、ノード4と、ノード6とが、存在していることが、分かる可能性がある。ノード1と、ノード6とは、すべて、既に、このポイントにより、ツリー部分グラフ500の中で表されているので、いずれのノードも、「レベル6」における子ノードとして、含められない。しかしながら、ノード4は、今までのところは、まだ、構築されたレベルのうちのどのレベルにおいても表されていないので、ノード4は、次に、「レベル6」において、ノード3の子ノードとして、含められる。
「レベル5」の最高の次数のノード(単数または複数)が、展開されており、ノード5は、次に、「レベル6」におけるその子ノードへの展開のために、次の最高のノードとして選択される。グラフ100において、ノード5の2つの隣接するノードが、すなわち、ノード4と、ノード6とが、存在していることが分かる可能性がある。ノード4と、ノード6とは、おのおの、既に、「レベル4」において表されているので、これらの2つのノードのうちのいずれのノードも、「レベル6」における子ノードとして、含められてはいない。「レベル5」の中には、「レベル6」へと展開すべき残りのノードが、存在していないので、「レベル6」の構築は、今や、完了している。
このポイントにおいて、グラフ100のすべての13個のノードが、すなわち、ノード0〜12が、ツリー部分グラフ500のレベル0〜6において一度、表現されている。それゆえに、ツリー部分グラフ500は、今や、完成している。しかしながら、完全性のために、ツリー部分グラフ500が完成しているという同じ結論もまた、以前のように、(可能性のある子ノードが、ツリー部分グラフ100の構築されたレベルのうちのどのレベルにおいてもまだ表されていない限り)可能性のある「レベル7」におけるそれらのそれぞれの子ノードへの、次数の降順に基づいた、展開のために、「レベル6」のノードのうちのおのおのを考慮することにより、到達される可能性もある。2という次数を有するノード4が、「レベル6」におけるただ1つのノードであるので、ノード4は、可能性のある「レベル7」への展開のために選択される。
グラフ100において、ノード4の2つの隣接するノードが、すなわち、ノード3と、ノード5とが、存在していることが、分かる可能性がある。ノード3と、ノード5とのうちのおのおのが、既に、このポイントにより、ツリー部分グラフ500において、表されているので、これらの2つのノードのうちのどちらも、「レベル7」における子ノードとして含められない。「レベル6」において、可能性のある「レベル7」へと展開すべき残りのノードが、存在していないので、図5のツリー部分グラフ500は、完成している。
図5のツリー部分グラフ500の構築のための詳細な説明が、提供されており、ここでは、ノード10(ノードv)は、ステップ314において、ルート・ノードのうちの1つとして選択され、注意は、次に、ノード7(ノードx)と、ノード2(ノード7)とに向けられ、これらのノードは、例示の例証のために、第2のルート・ノードと、第3のルート・ノードとして、ステップ314において、選択されることもあった。ルート・ノード7と、ルート・ノード2との両方についてのツリー部分グラフは、ルート・ノード10についてのツリー部分グラフ500を構築するために上記で説明されるものと類似したプロセスに従って構築されることもある。図6は、ステップ314における、第2のルート・ノードとしてのノード7の選択に基づいて、ステップ316において構築されるツリー部分グラフ600の一例を示すものである。同様に、図7は、ステップ314における、第3のルート・ノードとしてのノード3の選択に基づいて、ステップ316において構築されるツリー部分グラフ700の一例を示すものである。
ステップ314における、ルート・ノードとして選択されたノードについての、ステップ316における、1つまたは複数のツリー部分グラフのコレクションの構築のすぐ後に、プロセス300は、ステップ318へと進むことができる。
ステップ318において、ステップ316において構築される1つまたは複数のツリー部分グラフのコレクションを使用して、グラフの任意の与えられたノード対の間の最短距離を推定し、または計算する。より詳細には、与えられたノード対についての最短距離は、与えられたノード対についてツリー部分グラフから導き出されるすべての最短距離のうちの最小のもの(例えば、最小限のもの)であるように推定される。
例示の例証を継続して、問い合わせが、グラフ100のノード1と、ノード3との間の最短距離について受信されるものと仮定する。図5においては、ノード1と、ノード3との間のツリー部分グラフ500の中で示される最短距離は、(経路1−2−8−7−6−3を経由した)5という距離であることが、分かる可能性がある。図6においては、ノード1と、ノード3との間のツリー部分グラフ600の中で示される最短距離はまた、(やはり経路1−2−8−7−6−3を経由した)5という距離であることも、分かる可能性がある。最後に、図7においては、ノード1と、ノード3との間のツリー部分グラフ700の中の最短距離は、(経路3−1を経由した)1という距離として示されることが、分かる可能性がある。ツリー部分グラフ500、600、および700から導き出される3つの最短距離のうちの最小のもの、または最小値が、(ツリー部分グラフ700からの)1であるので、ノード3と、ノード1との間の距離についての問い合わせに対する応答は、(ツリー部分グラフ500と、ツリー部分グラフ600とによって示されるより大きな距離5とは対照的に)1という距離として、ステップ318において、提供される。図1のグラフ100において、構築されたツリー部分グラフに基づいて、ステップ318において計算される距離1は、実際には、ノード3と、ノード1との間の正しい距離であることが、分かる可能性がある。
追加の一例を提供するために、問い合わせが、グラフ100のノード8と、ノード12との間の最短距離について、受信されるものと仮定する。図5においては、ノード8と、ノード12との間のツリー部分グラフ500の中で示される最短距離は、(経路8−9−10−11−12を経由した)4という距離であることが、分かる可能性がある。図6においては、ノード8と、ノード12との間のツリー部分グラフ600の中で示される最短距離は、(経路8−2−12を経由した)2という距離であることが、分かる可能性がある。最後に、図7においては、ノード8と、ノード12との間のツリー部分グラフ700の中の最短距離はまた、(やはり経路8−2−12を経由した)2という距離として示されることもあることが、分かる可能性がある。ツリー部分グラフ500、600、および700から導き出される3つの最短距離のうちの最小のもの、または最小値が、(ツリー部分グラフ600と、さらにツリー部分グラフ700とからの)2であるので、ノード8と、ノード12との間の距離についての問い合わせに対する応答は、2という距離として、ステップ318において提供される。この場合にも、図1のグラフ100において、構築されたツリー部分グラフに基づいて、ステップ318において計算される距離2は、実際に、ノード8と、ノード12との間の正しい距離であることが、分かる可能性がある。
プロセス300は、ステップ320において終了する可能性がある。
上記で指摘されるように、グラフの中の与えられたノード対の間の距離を計算するツリー部分グラフの生成と、使用とは、ある種のノード対について非ゼロのエラーを導入することができる。そのようなエラーは、ステップ314において追加の(また異なる)ルート・ノードを選択すること、およびステップ316において、追加のツリー部分グラフを構築することにより、低減されることもある。次いで、追加のツリー部分グラフをまた使用して、ステップ318において説明されるように、構築されたツリー部分グラフに基づいて、距離を計算することもできる。
追加のルート・ノードは、異なるやり方で、選択されることもある。例えば、一態様においては、追加のルート・ノードは、例示のプロセス300のステップ302〜314を通して(1回または複数回)繰り返すことにより、選択されることもある。別の特定の態様においては、追加のルート・ノードは、ルート・ノードの望ましい数が、決定されるまで、それらの次数の降順に、全体のグラフ(例えば、グラフ100)のノードを考慮することにより、ステップ314において選択される。この態様に従って考慮されるノードごとに、1つまたは複数のノードは、候補ノードが、異なっており、また以前に、ルート・ノードとしてまだ選択されていない場合に、また候補ノードが、ルート・ノードとして、既に、選択されている別のノードに対してあまりにも近すぎない(例えば、所定の距離の内部にある)限り、次数の降順に基づいて、ルート・ノードとして選択されることもある。
ルート・ノードとして選択されるノードの数は、様々なやり方で決定されることもある。一態様においては、ルート・ノードの数は、ツリー部分グラフが、構築されるべきであるグラフの直径またはスパンに基づいて、決定されることもある。グラフの直径またはスパンは、グラフの中のすべての異なるノード対の間のすべての最短距離経路のうちの最大の最短距離経路として理解されることもある。グラフ100に戻ると、グラフ100の直径は、距離6(例えば、ノード4と、ノード10との間の距離)であることが、分かる可能性がある。それゆえに、一態様においては、選択されるルート・ノードの数は、グラフの直径に比べて少なくとも等しい(またはそれよりもあるファクタだけ大きい)可能性がある。グラフの直径(またはその何らかのファクタ)に基づいて、ルート・ノードの数を選択することは、何百万個ものノードを有するグラフについてゼロに近い値まで、誤った結果の期待値を低減させながら、グラフの中の全体のノードと比べて、比較的少ないルート・ノードを選択する間の良好なバランスを提供することが、見出されてきている。
別の態様においては、選択されるルート・ノードの数は、nが、グラフの中のノードの数である場合に、グラフのlog nを計算すること、および計算された値に少なくとも等しいか、計算された値(例えば、その何らかのファクタ)よりも大きいノードの数をルート・ノードとして選択することにより、決定されることもある。
さらに別の態様においては、ルート・ノードの数はまた、動的に決定されることもある。例えば、ルート・ノードの最初の組が、決定され、またツリー部分グラフが、構築され、また構築されたツリー部分グラフは、グラフの様々なノードの間の距離問い合わせの組を使用してテストされることもある。それらの問い合わせに対する応答におけるエラーの数が、所定の値(例えば、5%または1%、あるいは何らかの他のパーセンテージ)よりも大きい場合、そのときには追加のルート・ノードが、選択されることもあり、また追加のツリー部分グラフは、エラーの期待値が、望ましいパラメータの内部に入るまで、構築されることもある。
図8は、本開示の様々な態様を実施するために適したコンピューティング装置800の高レベル・ブロック図を示すものである。単一のブロックの形で示されるが、他の実施形態においては、本装置800は、並列アーキテクチャと、分散型アーキテクチャとを使用して実施される可能性もある。したがって、例えば、プロセス300の例の中で示されるこれらのステップなど、様々なステップは、特定の実装形態に基づいて、逐次的に、並列に、または異なる順序で、装置800を使用して、実行されることもある。装置800は、様々な入出力デバイス804およびメモリ806と通信するように相互接続されているプロセッサ802(例えば、中央演算処理装置(「CPU:central processing unit」)を備えている。
プロセッサ802は、汎用中央演算処理装置(「CPU」)など、任意のタイプのプロセッサ、または埋め込み型のマイクロコントローラやデジタル信号プロセッサ(「DSP:digital signal processor」)などの専用マイクロプロセッサとすることができる。入出力デバイス804は、プロセッサ802の制御の下で動作する任意の周辺デバイスとすることができ、また例えば、ネットワーク・アダプタ、データ・ポート、キーボード、キーパッド、マウス、ディスプレイなど、様々なユーザ・インターフェース・デバイスなどの装置900へとデータを入力し、または装置900からデータを出力するように構成されていることもある。
メモリ806は、例えば、一時的ランダム・アクセス・メモリ(RAM:random access memory)や、リード・オンリー・メモリ(ROM:read only memory)、ハード・ディスク・ドライブ・メモリ、コンパクト・ディスク・ドライブ・メモリ、光メモリなどの非一時的メモリなど、電子情報を記憶するために適した任意のタイプのメモリとすることができる。メモリ806は、プロセッサ802による実行のすぐ後に、上記で説明された機能を実行するように装置800を構成することができるデータおよび命令を含むことができる。さらに、装置800は、メモリ806に記憶され、またプロセッサ802によって実行される、オペレーティング・システム、問い合わせマネージャ、デバイス・ドライバ、または1つまたは複数のネットワーク・プロトコルを含むこともできる。
上記で説明されるプロセスの様々な態様は、1つまたは複数の特定用途向け集積回路(ASIC:application specific integrated circuits)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate arrays)、あるいはハードウェアまたはソフトウェアの任意の他の組合せを使用して、実施されることもある。本開示において、グラフを使用して示されているが、グラフと、ツリー部分グラフとは、ソフトウェアまたはハードウェアを使用して実施されるプログラマブルなプロセッサ(例えば、CPUまたはFPGA)によってアクセスされ、また操作され得る様々なタイプのデータ構造(例えば、リンクされたリスト)に記憶されることもある。
例だけとして、ノードの与えられたツリー部分グラフの距離を記憶する1つのやり方は、グラフの中のすべてのノード対について、ツリー部分グラフTの最短距離経路と、重みづけられたバイナリ・ツリーT’の最短距離経路とが、同じになるように、与えられたツリー部分グラフTを重みづけられたバイナリ・ツリーT’へと変換することである。TのT’への変換は、いくつかの疑似ノードを導入することにより、行われることもある。例えば、Tが、ノードv、w、xおよびyに直接に接続されたノードuを有している場合に、2つの疑似ノードqおよびrが、導入されることもある。T’は、重み0のエッジを有する疑似ノードqおよびrと、重み1のエッジを有するノードvおよびwに接続された疑似ノードqと、重み1のエッジを有するノードxおよびyに接続された疑似ノードrとに対してノードuを接続することにより構築されることもある。(図9は、図7のツリー部分グラフ700を変換することにより、形成されるバイナリ・ツリー900の1つの特定の例を示すものである。図9の重みづけられたバイナリ・ツリーT’900においては、ノード13および14は、疑似ノードである。)バイナリ・ツリーT’(バイナリ・ツリー900など)における最短経路距離は、各ノードに関連する少数のラベルから構成されるデータ構造を使用して、符号化されることもある。例えば、バイナリ・ツリーT’は、バイナリ・ツリーT’のノードごとに、ツリーT’のルート・ノードからツリーT’の中の各ノードへの最短距離を符号化し、またさらに同様にツリーT’の中のルート・ノードから各ノードへの最短距離経路を符号化するデータ構造の形で表され、また記憶されることもある。
プロセス300のステップ318において使用され得る距離関数fは、次に以下のように、すなわち、与えられたノード対nとnとの間の距離を計算する問い合わせを仮定すると、データ構造の中で符号化される最短距離経路を使用して、T’の中のノードnとnとの少なくとも共通の祖先ノードnを決定するように、規定されることもある。次いで、与えられたノード対nとnとの間の近似された距離は、一般に、距離(n)+距離(n)−2×距離(n)として決定されることもあり、ここで、距離(n)は、ルート・ノードからのnの距離であり、距離(n)は、ルート・ノードからのnの距離であり、また距離nは、ルート・ノードからのnの距離である。少なくとも共通の祖先ノードnは、ノードnとnとを用いて、記憶されるルート経路に対するノードについてのビットごとの排他的論理和(exclusive or)を取ることにより、決定される可能性がある。
本明細書において開示されるシステムおよび方法は、さらに、ツリー部分グラフが、1)できる限りわずかな空間(ストレージまたはメモリ)を使用して記憶され得る、2)グラフのノードの間の実際の距離に(等しくない場合には)できる限り近い距離推定値を提供するために使用され得る、また3)数分および数日とは対照的に、マイクロ秒およびミリ秒以内に、グラフの任意の2つのノードの間の距離についての問い合わせに応答するために使用され得る1つまたは複数のデータ構造に記憶されることを可能にする。
本開示は、上記で述べられた目標を満足させることがよりよくできる大規模なグラフの中のノード距離を算出するためのシステムおよび方法を説明している。本開示は、効率的に記憶される可能性があり、また他の従来のアプローチよりもずっと高速に距離問い合わせに応答するために使用される可能性があるデータ構造に対するグラフを事前処理するためのシステムおよび方法を説明している。本明細書において開示されるシステムおよび方法は、モバイル・コール・グラフ、オンライン・ソーシャル・ネットワーク・グラフ、自律的システム・レベルにおけるインターネット・グラフなどの双曲線グラフまたは近接双曲線グラフのために特に効果的であるものと考えられる。
本明細書における態様は、特定の実施形態に関連して説明されているが、これらの実施形態は、単に、本開示の原理およびアプリケーションについて例証的であるにすぎないことを理解すべきである。したがって、非常に多数の修正形態が、実例となる実施形態に対して行われる可能性があること、および他の構成が、本開示の精神および範囲を逸脱することなく考案され得ることを理解すべきである。

Claims (10)

  1. 複数の相互接続されたノードを有するグラフの与えられたノード対の間の最短距離を推定するための1つまたは複数のツリー部分グラフ・データ構造を構築するように構成された装置であって、
    プロセッサと、
    前記プロセッサに通信するように接続されたメモリと
    を備えており、前記メモリは、前記1つまたは複数のツリー部分グラフ・データ構造と、1つまたは複数の実行可能命令とを記憶するように構成されており、前記1つまたは複数の実行可能命令は、前記プロセッサによる実行のすぐ後に、
    前記グラフの前記複数の相互接続されたノードから1つまたは複数のルート・ノードを選択し、
    前記1つまたは複数のルート・ノードのうちの少なくとも1つのうちのおのおのについて、前記1つまたは複数のルート・ノードのうちの前記少なくとも1つのうちのおのおのから出発するマルチ・レベル・ツリー部分グラフ・データ構造の逐次的レベルにおける親子関係にある前記グラフの前記複数の相互接続されたノードを表す前記それぞれのマルチ・レベル・ツリー部分グラフ・データ構造を構築する
    ように前記プロセッサを構成し、
    前記マルチ・レベル・ツリー部分グラフ・データ構造のうちの少なくとも1つのレベルは、それぞれの次数を有する複数の親ノードを含んでおり、前記複数の親ノードの中の少なくとも1つの親ノードの前記次数は、前記複数の親ノードの中の別の親ノードの前記次数よりも高いものであり、また
    前記プロセッサは、さらに、前記複数の親ノードの前記次数の降順に基づいて、前記ツリー部分グラフ・データ構造の逐次的レベルの中の1つまたは複数のそれぞれの子ノードへと、前記ツリー部分グラフ・データ構造の前記少なくとも1つのレベルの前記複数の親ノードのうちのそれぞれ1つを展開することにより、前記マルチ・レベル・ツリー部分グラフ・データ構造を構築するように構成されている、装置。
  2. 前記1つまたは複数の実行可能命令は、さらに、
    前記グラフからノードuを決定すること、
    ノードvが、前記グラフのノードuから最も遠く離れている、前記グラフの前記ノードとして決定される場合に、前記グラフからノードvを決定すること、および
    前記1つまたは複数のルート・ノードのうちの1つとしてノードvを選択すること
    により、前記グラフの前記複数の相互接続されたノードから前記1つまたは複数のルート・ノードを選択するように前記プロセッサを構成する、請求項1に記載の装置。
  3. 前記1つまたは複数の実行可能命令は、さらに、前記グラフからランダム・ノードを選択することにより、前記グラフからノードuを決定するように前記プロセッサを構成する、請求項2に記載の装置。
  4. 前記1つまたは複数の実行可能命令は、さらに、
    ノードwが、前記グラフのノードvから最も遠く離れている、前記グラフの前記ノードとして決定される場合に、前記グラフからノードwを決定すること、および
    前記1つまたは複数のルート・ノードのうちの1つとしてノードwを選択すること
    により、前記グラフの前記複数の相互接続されたノードから前記1つまたは複数のルート・ノードを選択するように前記プロセッサを構成する、請求項1に記載の装置。
  5. 前記1つまたは複数の実行可能命令は、さらに、
    前記グラフのノードvと、前記グラフのノードwとの間の最短距離経路を決定すること、および
    前記グラフのノードvと、前記グラフのノードwとの間の前記最短距離経路の上の中間の近くにある、前記グラフの前記ノードとして前記グラフからノードxを決定すること、ならびに
    前記1つまたは複数のルート・ノードのうちの1つとしてノードxを選択すること
    により、前記グラフの前記複数の相互接続されたノードから前記1つまたは複数のルート・ノードを選択するように前記プロセッサを構成する、請求項1に記載の装置。
  6. 前記1つまたは複数の実行可能命令は、さらに、
    前記グラフのノードxから所定の距離の内部に最高の次数を有している前記グラフの前記ノードとして前記グラフからノードyを決定すること、および
    前記1つまたは複数のルート・ノードのうちの1つとしてノードyを選択すること
    により、前記グラフの前記複数の相互接続されたノードから前記1つまたは複数のルート・ノードを選択するように前記プロセッサを構成する、請求項1に記載の装置。
  7. 前記1つまたは複数の実行可能命令は、さらに、
    前記それぞれのツリー部分グラフ・データ構造のうちの少なくとも1つのうちのおのおのから前記与えられたノード対についてのそれぞれの最短距離を決定し、また
    前記決定されたそれぞれの最短距離の最小値として、前記グラフの前記与えられたノード対の間の前記距離を推定する
    ように前記プロセッサを構成する、請求項1に記載の装置。
  8. 前記1つまたは複数の実行可能命令は、さらに、
    前記グラフの直径に基づいて、前記グラフの前記複数のノードから選択されるルート・ノードの数、または構築されるそれぞれのツリー部分グラフの数を決定する
    ように前記プロセッサを構成する、請求項1に記載の装置。
  9. 前記1つまたは複数の実行可能命令は、さらに、
    前記ツリー部分グラフを使用して前記与えられたノード対の間で決定される推定された距離と、前記グラフに基づいて計算される前記与えられたノード対の間の実際の距離とに基づいて、エラーの統計的期待値を計算し、また
    前記グラフの前記複数のノードから選択されるルート・ノードの数、または構築されるそれぞれのツリー部分グラフの数を決定するためにエラーの前記統計的期待値を使用する
    ように前記プロセッサを構成する、請求項1に記載の装置。
  10. 前記1つまたは複数の実行可能命令は、さらに、
    前記グラフの前記複数の相互接続されたノードのうちのそれぞれのノードの次数の降順に基づいて、前記1つまたは複数のルート・ノードのうちの少なくとも1つを選択する
    ように前記プロセッサを構成する、請求項1に記載の装置。
JP2016518671A 2013-09-30 2014-09-25 グラフにおける距離近似のためのシステムおよび方法 Active JP6178004B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/041,210 2013-09-30
US14/041,210 US20150091909A1 (en) 2013-09-30 2013-09-30 Systems And Methods For Distance Approximation In Graphs
PCT/IB2014/002212 WO2015044777A1 (en) 2013-09-30 2014-09-25 Systems and methods for distance approximation in graphs

Publications (2)

Publication Number Publication Date
JP2016532181A JP2016532181A (ja) 2016-10-13
JP6178004B2 true JP6178004B2 (ja) 2017-08-09

Family

ID=52292961

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016518671A Active JP6178004B2 (ja) 2013-09-30 2014-09-25 グラフにおける距離近似のためのシステムおよび方法

Country Status (4)

Country Link
US (1) US20150091909A1 (ja)
EP (1) EP3053311B1 (ja)
JP (1) JP6178004B2 (ja)
WO (1) WO2015044777A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9667528B2 (en) * 2014-03-31 2017-05-30 Vmware, Inc. Fast lookup and update of current hop limit
US10402217B2 (en) * 2014-05-15 2019-09-03 Vmware, Inc. Automatic reconfiguration of a pre-configured hyper-converged computing device
US11070461B1 (en) * 2017-03-20 2021-07-20 Amazon Technologies, Inc. System for dividing a tree data structure to improve traversal operations
CN107291861B (zh) * 2017-06-12 2020-05-12 北京理工大学 一种面向加密图的带约束近似最短距离查询方法
CN109560944B (zh) * 2017-09-25 2020-06-16 中国科学院声学研究所 一种支持动态根节点双向切换的网络节点组织方法
CN111464450B (zh) * 2020-03-27 2022-03-25 杭州海康威视数字技术股份有限公司 网络拓扑结构的生成方法及装置
WO2022011652A1 (en) * 2020-07-16 2022-01-20 Huawei Technologies Co., Ltd. Multi-graph convolution collaborative filtering

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE208109T1 (de) * 1993-07-30 2001-11-15 Ibm Verfahren und gerät zur automatischen verteilung einer netztopologie in haupt- und nebentopologie
US6324674B2 (en) * 1998-04-17 2001-11-27 Lsi Logic Corporation Method and apparatus for parallel simultaneous global and detail routing
US6704320B1 (en) * 1999-03-24 2004-03-09 Lucent Technologies Inc. Dynamic algorithm for determining a shortest path tree between network nodes
FI20001317A (fi) * 2000-05-31 2001-12-01 Nokia Networks Oy Suojattu reititys telekommunikaatioverkossa
WO2002069168A1 (en) * 2001-02-24 2002-09-06 International Business Machines Corporation A global tree network for computing structures
US7203743B2 (en) * 2001-12-28 2007-04-10 Nortel Networks Limited Hierarchical tree-based protection scheme for mesh networks
US7330440B1 (en) * 2003-05-20 2008-02-12 Cisco Technology, Inc. Method and apparatus for constructing a transition route in a data communications network
JP4309316B2 (ja) * 2004-07-06 2009-08-05 株式会社東芝 ルーティング方法および伝送システム
US7649884B1 (en) * 2004-12-01 2010-01-19 Hrl Laboratories, Llc Collaborative multicast routing (CMR) for multicasting in unidirectional, hybrid, multi-tiered mobile wireless network
DE602005021746D1 (de) * 2004-12-23 2010-07-22 Univ Carmel Haifa Economic Cor Ad-hoc Kommunikationssystem und Verfahren zum leiten Sprachpakets darin
US7474631B2 (en) * 2005-01-13 2009-01-06 International Business Machines Corporation On-demand group communication services with quality of service (QoS) guarantees
EP1935145B1 (en) * 2005-10-11 2011-12-21 Telefonaktiebolaget LM Ericsson (publ) Method of generating spanning trees
WO2008112247A1 (en) * 2007-03-12 2008-09-18 Espre Solutions, Inc. System and method for multicast transmission
CN101420320A (zh) * 2007-10-26 2009-04-29 西门子公司 多跳无线通信网络中的网络重配方法、系统与网络节点
US7788305B2 (en) * 2007-11-13 2010-08-31 Oracle International Corporation Hierarchy nodes derived based on parent/child foreign key and/or range values on parent node
KR101431268B1 (ko) * 2007-12-14 2014-08-20 삼성전자주식회사 직렬 부호화를 위한 저밀도 패리티 검사 부호의 생성 장치및 방법
JP5108956B2 (ja) * 2008-11-19 2012-12-26 日本電信電話株式会社 経路計算順決定方法、プログラムおよび計算装置
WO2010096552A1 (en) * 2009-02-19 2010-08-26 Futurewei Technologies, Inc. System and method for point to multipoint inter-domain multiprotocol label switching traffic engineering path calculation
JP5016657B2 (ja) * 2009-11-12 2012-09-05 日本電信電話株式会社 ネクストホップ検索装置、ネクストホップ検索方法およびプログラム
US9350641B2 (en) * 2011-11-01 2016-05-24 Alcatel Lucent IP fast reroute scheme offering full protection

Also Published As

Publication number Publication date
JP2016532181A (ja) 2016-10-13
WO2015044777A1 (en) 2015-04-02
US20150091909A1 (en) 2015-04-02
EP3053311A1 (en) 2016-08-10
EP3053311B1 (en) 2017-11-29

Similar Documents

Publication Publication Date Title
JP6178004B2 (ja) グラフにおける距離近似のためのシステムおよび方法
US11586464B2 (en) Techniques for workflow analysis and design task optimization
US11010527B2 (en) Optimization of a quantum circuit by inserting swap gates
WO2008016495A2 (en) Determination of graph connectivity metrics using bit-vectors
WO2019160128A1 (ja) ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
JP6520362B2 (ja) 生成方法、装置、及びプログラム
US10191998B1 (en) Methods of data reduction for parallel breadth-first search over graphs of connected data elements
US20220245499A1 (en) Quantum circuit simulation
JP6467540B1 (ja) ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
CN111597139B (zh) 一种gpu的通信方法、系统、设备以及介质
CN104572687A (zh) 微博传播的关键用户识别方法和装置
JP2017530477A (ja) グラフを処理するためのシステムおよび方法
CN109952742A (zh) 图结构处理方法、系统、网络设备及存储介质
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
JP6261669B2 (ja) クエリ校正システムおよび方法
KR102394210B1 (ko) 커뮤니티 검출 장치 및 방법
US20210124566A1 (en) Branch objects for dependent optimization problems
US20170161620A1 (en) Determining a minimal explanation
WO2009107412A1 (ja) グラフ構造推定装置、グラフ構造推定方法およびプログラム
Beccuti et al. A new symbolic approach for network reliability analysis
KR101432385B1 (ko) 유전자 알고리즘을 이용한 경로 생성 장치 및 그 동작 방법
JP6005583B2 (ja) 検索装置、検索方法および検索プログラム
WO2011131248A1 (en) Method and apparatus for losslessly compressing/decompressing data
WO2014205114A1 (en) Automated circuit triplication method and system
CN117234524B (zh) 量子云计算的编译方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170612

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170615

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170712

R150 Certificate of patent or registration of utility model

Ref document number: 6178004

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250