JP2015184704A - ネットワーク管理装置、ネットワーク管理方法及びプログラム - Google Patents

ネットワーク管理装置、ネットワーク管理方法及びプログラム Download PDF

Info

Publication number
JP2015184704A
JP2015184704A JP2014057756A JP2014057756A JP2015184704A JP 2015184704 A JP2015184704 A JP 2015184704A JP 2014057756 A JP2014057756 A JP 2014057756A JP 2014057756 A JP2014057756 A JP 2014057756A JP 2015184704 A JP2015184704 A JP 2015184704A
Authority
JP
Japan
Prior art keywords
vertices
network
label
vertex
index
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.)
Pending
Application number
JP2014057756A
Other languages
English (en)
Inventor
悠一 吉田
Yuichi Yoshida
悠一 吉田
拓哉 秋葉
Takuya Akiba
拓哉 秋葉
陽一 岩田
Yoichi Iwata
陽一 岩田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Research Organization of Information and Systems
Original Assignee
Research Organization of Information and Systems
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 Research Organization of Information and Systems filed Critical Research Organization of Information and Systems
Priority to JP2014057756A priority Critical patent/JP2015184704A/ja
Publication of JP2015184704A publication Critical patent/JP2015184704A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】動的なネットワークにおいて、索引の動的更新や、過去のネットワークに関するクエリへの回答を可能にする索引付けを行うことができるネットワーク管理装置、ネットワーク管理方法及びプログラムを提供する。
【解決手段】ネットワーク管理装置100は、頂点と、頂点間を結ぶエッジと、を含むネットワークを管理する。ネットワーク・索引記憶部110は、複数の頂点、各頂点について他の頂点との間の距離情報を保持するラベル、2つの頂点を端点とするエッジ、を保持する。索引更新部120は、新たなエッジが生成された場合、新たなエッジの両端の頂点から幅優先探索を実施することにより、少なくとも一部の頂点のラベルを更新する。
【選択図】図1

Description

本発明はネットワーク管理装置、ネットワーク管理方法及びプログラムに関し、特に動的なネットワークにおいて、索引の動的更新や、過去のネットワークに関するクエリへの回答を可能にする索引付け技術に関する。
従来より、複数の頂点と頂点間を結ぶエッジ(枝)とから構成されるネットワークにおいて、各頂点に索引(インデックス)を付与することにより、種々のクエリに対する回答を効率よく求める手法が種々提案されている。
例えば、特許文献1及び特許文献2には、複数のデータ(頂点に相当)間にリンク(エッジに相当)が設定されたネットワークにおいて、各データに予め所定のインデックスを付与することにより、入力データに類似するデータを効率よく出力可能とした検索データ管理装置が記載されている。
特開2011−090351号公報 特開2011−090352号公報
ところで、近年、ネットワーク内の任意の2頂点間の最短距離を要求するクエリに回答するための索引付け手法が注目されている。例えば、ソーシャルネットワーク上の2人のユーザの最短距離は、2人の親密さを示す指標と考えられる。また、1以上のリンク(エッジ)で結ばれた2つのウェブページ間の距離は、ウェブページ同士の関連性を示す指標となる。このような2つの情報間の距離を効率的に求めることができれば、様々なサービスの提供が可能となる。例えば、ソーシャルネットワークのユーザに対しては、そのユーザに関連があると推測される他のユーザやコンテンツを、頂点間の距離に基づいて推薦することができるであろう。また、あるウェブページに関連する他のウェブページを、頂点間の距離に基づいてランキングして提示することも可能であろう。これらを効率よく実現するためには、適切な索引をネットワークに付与することが必要である。
特に、例えばソーシャルネットワークやウェブページのような、現実世界のネットワークのほとんどは、動的に頂点やエッジが追加される。すなわち、時間の経過に従って新たな頂点やエッジが追加されてゆく、動的なネットワークである。そのため、ネットワークに対する索引付け手法もまた、このような動的なネットワークに対応した、効率性及び拡張性を有するものであることが求められる。
しかしながら、上記特許文献1及び特許文献2は、かかる課題に対応するものでない。すなわち、そもそも、クエリとして2点が与えられたときに、その2点間の最短距離を効率よく回答することに資するような索引付け手法を提示するものでない。
また、2点間の最短距離を求めるための索引付け手法として、従来より幾つかの手法が提案されてきた。しかしなら、かかる手法はいずれも静的なネットワークを対象とするものであった。すなわち、その手法は、動的に頂点やエッジが追加された場合、その変化を逐次、必要な範囲で索引に反映させるというものではなく、ネットワーク全体の索引付けをはじめからやり直すというものであった。このような索引の更新手法は、実行に非常に大きなコストを要するものであるため、動的ネットワークの変化に対応した動的な索引の更新を行うことは実質的に困難であった。
加えて、従来の索引付け手法はいずれも、現在すなわちクエリ発行時点のネットワークにおける2点間の最短距離を求めることはできても、過去の任意の時点のネットワークにおける2点間の最短距離を求めることはできなかった。これは、従来の索引及び索引付け手法は、動的な索引更新を念頭に置いておらず、そもそも時間の概念を織り込んでいないためである。
本発明は、このような問題点を解決するためになされたものであり、動的なネットワークにおいて、索引の動的更新や、過去のネットワークに関するクエリへの回答を可能にする索引付けを行うことができるネットワーク管理装置、ネットワーク管理方法及びプログラムを提供することを目的とする。
その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
本発明に係るネットワーク管理装置は、頂点と、前記頂点間を結ぶエッジと、を含むネットワークを管理するためのネットワーク管理装置であって、複数の前記頂点と、前記頂点それぞれについて、他の前記頂点との間の距離情報を保持するラベルと、2つの前記頂点を端点とする前記エッジと、を保持するネットワーク・索引記憶部と、新たな前記エッジが生成された場合、前記新たなエッジの両端の前記頂点から幅優先探索を実施することにより、少なくとも一部の前記頂点の前記ラベルを更新する索引更新部と、を含むものである。
また、本発明に係るネットワーク管理方法は、頂点と、前記頂点間を結ぶエッジと、を含み、前記頂点にはそれぞれ他の前記頂点との間の距離情報を保持するラベルが定義されているネットワークを管理するためのネットワーク管理方法であって、新たな前記エッジが生成された場合、前記新たなエッジの両端の前記頂点から幅優先探索を実施することにより、少なくとも一部の前記頂点の前記ラベルを更新する索引更新ステップを有するものである。
これらの発明においては、索引更新部が、新たなエッジの追加により更新が必要になったラベルのみを更新するので、索引の更新処理の効率を大幅に向上させることができる。これにより、ネットワークの動的な変化に追従する、索引の動的な更新を実用化できる。
本発明に係る他のネットワーク管理装置は、頂点と、前記頂点間を結ぶエッジと、を含むネットワークを管理するためのネットワーク管理装置であって、複数の頂点と、前記頂点それぞれについて、他の前記頂点との間の距離情報と、時刻情報と、を保持するラベルと、2つの前記頂点を端点とするエッジと、を保持するネットワーク・索引記憶部と、2つの前記端点と、前記時刻情報と、が与えられた場合に、前記時刻情報が示す時点の前記ネットワークにおける、前記2つの端点間の最短距離を出力するクエリ処理部と、を含むものである。
本発明に係る他のネットワーク管理装置は、頂点と、前記頂点間を結ぶエッジと、を含むネットワークを管理するためのネットワーク管理装置であって、複数の頂点と、前記頂点それぞれについて、他の前記頂点との間の距離情報と、時刻情報と、を保持するラベルと、2つの前記頂点を端点とするエッジと、を保持するネットワーク・索引記憶部と、2つの前記端点が与えられた場合に、前記2つの端点間の最短距離が変化した時点を示す前記時刻情報を出力するクエリ処理部と、を含むものである。
また、本発明に係る他のネットワーク管理方法は、頂点と、前記頂点間を結ぶエッジと、を含み、前記頂点にはそれぞれ時刻情報及び他の前記頂点との間の距離情報を保持するラベルが定義されているネットワークを管理するためのネットワーク管理方法であって、2つの前記端点と、前記時刻情報と、が与えられた場合に、前記時刻情報が示す時点の前記ネットワークにおける、前記2つの端点間の最短距離を出力するクエリ処理ステップを有するものである。
本発明に係る他のネットワーク管理方法は、頂点と、前記頂点間を結ぶエッジと、を含み、前記頂点にはそれぞれ時刻情報及び他の前記頂点との間の距離情報を保持するラベルが定義されているネットワークを管理するためのネットワーク管理方法であって、2つの前記端点が与えられた場合に、前記2つの端点間の最短距離が変化した時点を示す前記時刻情報を出力するクエリ処理ステップを有するものである。
これらの発明においては、ネットワーク・索引記憶部1がラベル内に時刻情報を保持するので、クエリ処理部は、過去のある時点における2点間の最短距離クエリや、2点間の最短距離の変遷を示す変化点クエリに回答することができる。
また、本発明は、上記ネットワーク管理方法ををコンピュータに実行させるためのプログラムを含む。
本発明により、動的なネットワークにおいて、索引の動的更新や、過去のネットワークに関するクエリへの回答を可能にする索引付けを行うことができるネットワーク管理装置、ネットワーク管理方法及びプログラムを提供することができる。
本発明の実施の形態1のネットワーク管理装置100の構成を示すブロック図である。 本発明の実施の形態1のネットワーク管理装置100の動作の概要を示す図である。 本発明の実施の形態1のネットワーク管理装置100の動作を示すフローチャートである。 本発明の実施の形態1のネットワーク管理装置100の動作の一例としてのアルゴリズムを示す図である。 本発明の実施の形態2のネットワーク管理装置100の動作の一例としてのアルゴリズムを示す図である。 従来のネットワーク管理装置の動作の一例としてのアルゴリズムを示す図である。
はじめに、本発明の理解を容易にするため、従来の索引付け手法と、最短距離クエリの処理手法について概略を説明する。
(2-hop cover)
まず、従来より2-hop coverとして知られている、基本的な索引構造と、その索引を利用した最短距離クエリの処理手法について説明する。
2-hop coverにおいては、ネットワーク内の各頂点vに対応させて、ラベルL(v)を保持させる。このラベルL(v)は、(u,δuv)なる情報を複数含むことができる。ここでuは他の頂点のID、δuvはvからuまでの距離を表す。すなわち、各頂点vに、他の頂点uと、uからvまでの距離と、の情報を持たせるのである。ここで距離とは、2つの頂点間のホップ数をいう。つまり、ある頂点から他の頂点に到達するために経由することが必要なエッジの数をいう。
なお、ラベルL(v)を構成する個々の(u,δuv)を、以下、ラベルエントリと呼ぶ。また、ネットワーク内のすべてのラベルの集合を、索引(インデックス)と呼ぶ。
かかる索引を付与されたネットワークにおいて、最短距離クエリに対する回答を求めるためには、以下の計算を実行すればよい。
QUERY(s,t,L)=min{δvsvt|(v,δvs)∈L(s),(v,δvt)∈L(t)}
すなわち、頂点sに対応するラベルL(s)のラベルエントリとして、頂点vとsとの距離δvsが保持されているとする。また、頂点tに対応するラベルL(t)のラベルエントリとして、頂点vとtとの距離δvtが保持されているとする。このとき、s,t間の距離は、δvsvtで表される。つまり、s,t間の距離は、L(s),L(t)がラベルエントリとして共通に保持しているvを媒介として、s,v間の距離とv,t間の距離の和として表される。このようにして求められる幾つかのs,t間の距離のうち、最短距離をクエリの回答とする。なお、L(s)とL(t)が共通に保持している頂点がひとつもない場合、QUERY(s,t,L)=∞とする。
この手法によれば、ラベルエントリを頂点によりソートした形で保持しているという前提において、例えばマージソートのようなアルゴリズムを利用することにより、QUERY(s,t,L)を時間計算量O(|L(s)|+|L(t)|)で処理することが可能である。
(naive landmark labeling)
naive landmark labelingは、2-hop coverのラベルを各頂点に付与するための具体的な手法の1つである。naive landmark labelingでは、ネットワーク内の全ての頂点から幅優先探索(BFS)を行い、到達した各頂点に対して順次ラベルを付与していく。以下、naive landmark labelingによる索引付けの過程を具体的に説明する。
初期状態として、索引L0は空であるものとする。すなわち、どの頂点についてもラベルの内容は空であるものとする。
naive landmark labelingを実行する情報処理装置は、ネットワーク内の全ての頂点v1,v2,...,vnに順に着目していく。ある頂点に着目したならば、その頂点を基点としてBFSを開始し、到達した頂点にはラベルを付与していく。k番目の頂点vkを基点としてBFSを開始し、到達した頂点においてラベルを付与する際の処理は以下のとおりである。
vkからBFSにより到達可能な全ての頂点uに対し、ラベルLk(u)をLk-1(u)∪{(vk,d(vk,u))}と設定する。すなわち、既にuにラベルが付与されているならばそれにラベルエントリを追加する形で、vkからuまでの距離を示すラベルエントリ(vk,d(vk,u))を付与する。なお、vkからBFSにより到達不可能な頂点uについては、ラベルの更新を行わない。すなわち、Lk(u)=Lk-1(u)となる。vkから到達可能な全ての頂点を網羅したならば、vkを基点とするBFSは終了する。続いて、次の頂点vk+1からのBFSを実行する。
ネットワーク内の全ての頂点からのBFSが終了すると、ネットワークに対する索引付けは完了となる。つまり、このネットワークにおいては、任意の頂点s,t間の距離QUERY(s,t,Ln)=d(s,t)を求めることができることになる。しかしながら、naive landmark labelingは必ずしも効率的とは言い難い索引付け手法である。具体的には、ネットワーク全体に索引付けを行うために要する時間計算量はθ(mn)、必要な空間計算量はθ(n2)となる。ここでn,mはそれぞれ頂点の数|V|、エッジの数|E|を表す。これらの値は、頂点やエッジの数が大きくなるほど増大する。よって、naive landmark labelingは、動的ネットワークの管理には最適とはいえない索引付け手法である。
(pruned landmark labeling)
pruned landmark labelingは、上述のnaive landmark labelingを基礎としつつも、枝刈りと呼ばれる手法を取り入れることにより、索引を作成する処理の効率向上を図った手法である。以下、pruned landmark labelingによる索引付け過程を具体的に説明する。
pruned landmark labelingを実行する情報処理装置は、ネットワーク内の全ての頂点v1,v2,...,vnに順に着目していく。ある頂点に着目したならば、その頂点を基点として枝刈り処理を含むBFS(以下、枝刈りBFS)を開始し、到達した頂点にはラベルを付与していく。k番目の頂点vkを基点として枝刈りBFSを開始し、到達した頂点においてラベルを更新する際の処理は以下のとおりである。
vkからBFSで到達した頂点uについて、以下の処理を行う。まず、vk,u間の最短距離QUERY(vk,u,L'k-l)を計算する。このクエリの処理に使用される索引は、k-1番目までの枝刈りBFSにより作成された索引L'k-1である。計算の結果、QUERY(vk,u,L'k-l)≦δである場合、頂点uを枝刈りする。すなわち、頂点uに対し新たなラベルエントリを付加せず、ここでBFSを停止する。つまり、L'k(u)=L'k-1(u)となる。計算結果が上記以外である場合は、naive landmark labelingと同様に、頂点uに対しラベルエントリL'k(u)=L'k-1(u)∪{(vk,d(vk,u))}を追加する。また、vkから到達不可能な頂点uについては、naive landmark labelingと同様に、L'k(u)=L'k-1(u)と設定する。
図5に、このpruned landmark labelingを情報処理装置で実行するための具体的なアルゴリズムを示す。このアルゴリズムは、pruned landmark labelingを実行するにあたり、ネットワークGに含まれる頂点のうち、k番目に着目する頂点vkから枝刈りBFSを行ってラベリングを行う処理を示している。この処理には、k-1番目の頂点まで同様の処理を行った結果作成された索引L'k-lが用いられる(1行目)。まず、キューQに、頂点vkを投入する。このvkからBFSが開始される(2行目)。
3行目で用意されている配列P[vk]は、vkから他の頂点までの距離を格納するための配列である。初期値として、vkとvk間の距離は0、vkと他の頂点間の距離は∞と設定する。4行目で用意されている配列L'k[v]は、k番目の頂点vkに着目して枝刈りBFSを行った結果作成されるラベルである。この段階ではまだ枝刈りBFSが実行されていないので、初期値であるL'k-1[v](k-1番目の頂点までについて枝刈りBFSを実行した結果作成されたラベル)が格納されている。
vkからの枝刈りBFSを開始する。キューQに格納されている頂点を1つ取り出す。ここで取り出した頂点をuとする(5−6行目)。vkからuまでの距離QUERY(vk,u,L'k-l)を、索引L'k-lを用いて計算する。ここで、計算結果QUERY(vk,u,L'k-l)が、vkから見たuの距離P|u|以下であれば、uのラベルを更新することなく、枝刈りBFSを停止する(7行目)。
一方、vkから見たuの距離P|u|のほうが、索引L'k-lを用いて計算したvkからuまでの距離QUERY(vk,u,L'k-l)よりも小さいのであれば、従来より短い経路を発見したことになるから、uのラベルを更新する。すなわち、頂点uのラベルL'k[u]にvk,u間の距離を保存する(9行目)。
かかる後、枝刈りBFSの到達先、つまりラベルの更新対象をuに隣接する頂点にも拡大してゆく。まず、uに隣接する頂点NG(u)の1つwに着目し、wが未だ枝刈りBFSによって訪問されていない頂点であれば(P[w]=∞)、続く処理を行う(10行目)。wはuの隣接頂点であるから、vkから見たwの距離を、vkから見たuの距離P|u|+1とおく(11行目)。この頂点wを、キューQに追加する。(12行目)。同様の処理を、uの隣接兆店すべてについて行う。これにより、この後uの隣接頂点からの枝刈りBFSが行われてゆくことになる(13行目)。
このように、pruned landmark labeling では、vkから見た最短距離が発見されない場合には、そこから先のBFSを中止する(枝刈りする)。これにより、naive landmark labelingに比べ、効率的に索引を作成することができる。そして、このpruned landmark labelingによって構築された索引と、naive landmark labelingによって構築された索引とは、最短距離探索クエリに対して同じ回答を出力する。
<実施の形態1>
(Online Incremental Update)
本発明の実施の形態1は、上述のpruned landmark labelingを前提とした、索引の更新手法に関するものである。すなわち、ネットワークに頂点又はエッジが1つ追加された際に、その変化を即座に索引に反映させる方法に関するものである。この索引更新手法をOnline Incremental Updateと呼ぶ。はじめに、このOnline Incremental Updateの概念について説明する。
なお、本実施の形態では、ネットワークに変更が生じる場面として、頂点の追加とエッジの追加とを考える。このうち、新たな頂点が追加された場合は、単に新たなラベルを索引に追加する処理を行えば、索引を更新できる。一方、新たなエッジが追加された場合は、以下の一連の処理により索引を更新する処理を行う。なお、新たな頂点と新たなエッジが追加された場合は、まず頂点の追加処理を行い、次いでエッジの追加処理を行う。複数のエッジが同時に追加された場合は、エッジを1つずつ順に追加する処理を行う。よって、以下の説明では、主にエッジの追加に焦点を当てて説明する。
ネットワークにエッジが追加された際に、その変化を索引に反映させる最も簡単な方法は、naive landmark labeling処理と全く同様に、全ての頂点からBFSを再度実施し、ラベルを更新することである。これにより、新たに追加されたエッジが索引に反映され、最短距離クエリに対する正しい回答が得られるようになる。
しかし、次の2つの事実に注目すれば、さらに効率よく索引を更新することができることがわかる。(1)ネットワークの変化すなわちエッジが1つ追加されたことによって、頂点vkから頂点uまでの距離が変化した場合、vk,u間の最短距離は、新しいエッジ(a,b)を通過するはずである。ここで、vkからみてaよりbのほうが距離が遠いものとする。すなわち、dτ-1(vk,a)≦dτ-1(vk,b)であるものとする。(2)vkと、u≠a,bと、の間の距離が変化したとき、vkとwとの間の距離も変化したのであれば、vkからみてwはbの先に存在するはずである。
これらの事実から、ネットワークの変更を効率よく索引に反映するには、以下のような手順を踏めばよいことが分かる。まず、両端点a,bのラベルを参照し、これらのラベルに含まれる頂点vkを抽出する。つぎに、全てのvkについて、vkからみた枝刈りBFSを再開する。ここで、枝刈りBFSは、エッジの端点から再開すべきことに留意されたい。枝刈りBFSで到達した頂点uとvkとの距離が以前より短くなっていれば、それはエッジの追加によりuとvkとの間に最短距離が作られたことを意味しているので、uのラベルを更新する。そして、vkからみてuの先にある頂点に向けて、さらに枝刈りBFSの範囲を広げてゆく。一方、頂点uとvkとの距離が以前の距離以上であれば、それはエッジの追加によるuとvkとの最短距離への影響はないことを意味しているので、uのラベルは更新しない。また、そこで枝刈りBFSを停止する。すなわち、頂点uから先については枝刈りBFSをせず、ラベルの更新も行わない。
図2の模式図を用いて、この処理についてより具体例に説明する。いま、ネットワーク(a)に新たなエッジa,b(一点鎖線)が1つ追加され、ネットワーク(b)が作成されたものとする。このエッジの追加を反映すべく、ラベルの更新を行ってゆく。まず、vkに注目し、vkからみた枝刈りBFSを、新たなエッジの端点bから再開する。エッジの追加によりvk,bの最短距離が生成されているので、まずb自身のラベルエントリ(vk,d(vk,b))が更新される。次いで、ラベルの更新処理がbの隣接頂点u1,u2,u3,u4に伝播し、u1,u2,u3,u4のラベルエントリが、vkとの新たな距離に更新されてゆく。その後、枝刈りBFSは頂点z1,z2に到達するが、これらの頂点から先は、エッジの追加によってもvkとの距離が変化していない。したがって、ラベルエントリの更新の必要がない。よって、ここで枝刈りBFSは停止され、vkを基点にしたラベルの更新処理が終了する。同様の処理が、全ての頂点を基点として順次実行される。なお、ここでは端点bについての処理のみ説明したが、同様の処理を端点aについても実行することができる。但し、この例では、端点aから再開した枝刈りBFSはすぐに停止するであろう。
つづいて、図1のブロック図を用いて、Online Incremental Updateを実行するためのネットワーク管理装置100の具体的な構成について説明する。
ネットワーク管理装置100は、ネットワーク・索引記憶部110、索引更新部120、ネットワーク更新部130、クエリ処理部140を有する。
ネットワーク管理装置100は、データ及び制御プログラムを記憶する記憶装置と、制御プログラムに基づき所定の処理を実行する制御装置とを含む情報処理装置であり、典型的にはパーソナルコンピュータやサーバコンピュータ等である。なお、ネットワーク管理装置100は必ずしも物理的に単一の装置である必要はなく、複数のハードウェアにより分散処理を行うコンピュータシステムであってもよい。
ネットワーク・索引記憶部110は、ネットワークに係る情報を保持する記憶部である。具体的には、ネットワークに含まれる各頂点と、各頂点のラベル、及び各頂点をリンクしてなるエッジにかかる情報を保持する。典型的には、ネットワーク・索引記憶部110は、頂点vに対応付けて、ラベルL(v)、およびvを端点とするエッジの情報を保持できる。但し、ラベルと頂点、頂点とエッジが相互に参照可能であれば、ネットワーク・索引記憶部110はどのようなデータ構造を有していても良い。例えば、ラベルと頂点に関するデータと、頂点とエッジに関するデータとを、異なるデータベースに格納していても良い。
索引更新部120は、後述のネットワーク更新部130によってネットワークに頂点又はエッジが追加された際に、索引を更新する処理を行う。
ネットワーク更新部130は、ネットワークに頂点又はエッジを追加する処理を行う。
クエリ処理部140は、ネットワークに対するクエリに回答する処理を行う。例えば、少なくとも2点s,tを引数とする最短距離クエリを入力し、s,t間の最短距離を計算して出力する。
なお、本実施の形態におけるネットワーク・索引記憶部110、索引更新部120、ネットワーク更新部130、及びクエリ処理部140は、ネットワーク管理装置100の制御装置及び記憶装置の協働により実現される論理的な記憶部又は処理部である。
つづいて、図3のフローチャートを用いて、Online Incremental Updateを実行する際のネットワーク管理装置100の動作について説明する。
S101:
ネットワーク更新部130が、ネットワークに新たなエッジを追加する。すなわち、ネットワーク・索引記憶部110に、新たなエッジの情報を追加する。この情報には、少なくともエッジの両端点の頂点IDが含まれる。以下、エッジの両端点がaおよびbである場合を例として説明する。
S102:
索引更新部120が、エッジの両端点aおよびbに付与されているラベルを参照し、各々のラベルに含まれている全てのラベルエントリを抽出する。ここで、aから抽出されたラベルエントリを(vk,d(vk,a))、bから抽出されたラベルエントリを(vk,d(vk,b)と一般化して表現する。
S103:
索引更新部120は、S102で抽出した頂点vkの1つに注目する。以下、本実施の形態では1つのvkにかかる処理のみを説明するが、S102で複数の頂点が抽出されている場合は、抽出された全ての頂点に対して、同様の処理を実行すれば良い。
索引更新部120は、vkからみた枝刈りBFSを、エッジの端点aおよびbから開始する。すなわち、vkからみて、エッジを渡った先にある端点を根ノードとして、階層が深くなる方向に(つまりエッジから遠ざかる方向に)BFSを進めてゆく。エッジの渡り方には2方向あるから、vkからみた枝刈りBFSの処理も2系統存在することになる。つまり、エッジの端点aから開始し、端点bから遠ざかる方向に進める枝刈りBFSと、エッジの端点bから開始し、端点aから遠ざかる方向に進める枝刈りBFSと、の2つである。
索引更新部120は、まず根ノードであるエッジの端点aおよびbを、枝刈り又はラベル更新の要否の判定対象とする。以下、本実施の形態では端点bにかかる処理のみを説明するが、端点aについても同様の処理を実行すれば良い。
S104〜S105:
索引更新部120は、枝刈り又はラベル更新の要否の判定対象である頂点について、以下の判定を行う。まず、vkから、新たなエッジを経由して、判定対象の頂点に至るまでの距離が計算される。他方、現在の索引を用いた、vkから判定対象の頂点までの最短距離が計算される。ここで、前者の距離が、後者の距離よりも小さい場合、索引更新部120は、判定対象の頂点について、ラベルを更新すべきと判断する。その理由は、新たなエッジによって、vkから判定対象の頂点までの最短距離が短縮されており、最短距離クエリに正確に回答するためには、現在の索引を更新する必要があるからである。この場合、索引更新部120は、S106〜S107の処理を行う。
一方、上記以外の場合、索引更新部120は、判定対象の頂点について、ラベルの更新を不要と判断する。その理由は、新たなエッジによっては、vkから判定対象の頂点までの最短距離が変更されないからである。この場合、判定対象の頂点から先の(vkからみて深い)頂点についても、新たなエッジによっては、vkからの最短距離が変更されないと考えられる。よって、索引更新部120は、この判定対象の頂点をもって枝刈りBFSを停止し、S108に遷移する。
S106:
索引更新部120は、現在の索引の更新を行う。具体的には、判定対象の頂点のラベルのうち、vkからの距離を示すラベルエントリを、新たなエッジを経由した際のvkからの距離を用いて更新する。
S107:
索引更新部120は、判定対象の頂点に隣接する頂点を抽出し、新たな判定対象の頂点とする。なお、抽出する頂点は1つである必要はなく、複数であって良い。
S108:
判定対象の頂点が残っていれば、その頂点にかかるS104以降の処理を再度実行する。判定対象の頂点が複数残っている場合は、全ての判定対象の頂点に対する処理が終わるまで、S104以降の処理を繰り返し実行する。
S109:
索引更新部120は、S102で抽出した全ての頂点vkについて、S103以降の処理を実行する。
図4に、図3のフローチャートにかかる処理を具体的に実現するためのアルゴリズムの一例を示す。このアルゴリズムは、ネットワークGに、頂点aおよびbを両端とするエッジが新たに追加した場合の、索引Mの更新処理を示す。言うまでもなく、索引Mとは、現在の(更新を行う前の)索引である(1行目)。
エッジの一方の端点aに保存されているラベルM(a)と、他方の端点bに保存されているラベルM(b)と、に含まれるすべての頂点vkを抽出する(2行目)。そして、各vkについて、vkからみた枝刈りBFSを再開する。この枝刈りBFSは、aおよびbから、それぞれ開始する(3〜4行目)。
枝刈りBFSの詳細は以下の通りである。まず、枝刈り又はラベル更新の要否の判定対象である頂点(u,δru)を格納するためのキューQを用意する(5行目)。初期値として、エッジの端点を投入する。例えば、bを判定対象とする場合は、(b,d(vk,a)+1)をQに格納する。ここでd(vk,a)+1は、エッジを経由した場合の、vkからbまでの距離を示している(6行目)。
次に、キューQから頂点を1つ取出し(8行目)、現在の索引Mを使用したvkからその頂点までの距離であるPREFIXALQUERY(vk,v,M,k)を計算する。もしこの値が、エッジを経由した場合のvkからこの頂点までの距離δ以下であれば、この頂点に対するラベル更新は行わず、この頂点で枝刈りBFSを停止する(9〜10行目)。
一方、PREFIXALQUERY(vk,v,M,k)>δであれば、この頂点のラベルを更新する。すなわち、この頂点のvkにかかるラベルエントリを、エッジを経由した場合の距離を用いて更新する。つまり、現在のラベルに、(vk,δ)を追加する。そして、枝刈りBFSを続行するため、この頂点の隣接頂点をキューQについかする。これにより、これらの隣接頂点についても、7行目以下の処理が実施され、ラベル更新又は枝刈りが行われる。これにより、必要な範囲にまでラベル更新が伝播される。
本実施の形態においては、ネットワークに新たなエッジが追加された際、索引更新部120が、エッジの端点から枝刈りBFSを再開する。これにより、ラベルの更新処理を必要な範囲内のみで行うことができ、索引更新に要する時間計算量、空間計算量を抑制することができる。
具体的には、|L(v)|=O(l)、本手法における枝刈りBFSにより到達する頂点の数をO(s)(l,sは整数)とすれば、枝刈りBFSはO(l)回実行されるので、全体の時間計算量はO(l2s)と見積もることができる。発明者の実験によれば、数百万の頂点を有する大規模ネットワークにおいても、ミリ秒単位で索引の更新を行うことが可能であった。これは、最初から索引を再構築する静的な索引更新手法に比べ、数桁速い処理時間である。
<実施の形態2>
(過去のネットワークに対するクエリ)
実施の形態1では、現在のネットワークに対し変化が生じた場合の、索引の効率的な更新手法について説明した。実施の形態2では、経時変化するネットワークを分析する際に、過去のある時点のネットワークに対し、最短距離クエリを発行できるようなスキームを開示する。また、ある2点間の距離が変化した時刻を問うクエリに回答できるようなスキームも合わせて開示する。以降、これらのクエリをまとめて履歴クエリと呼ぶ。
(Historical 2-Hop Cover)
はじめに、この履歴クエリに対応できるような索引のデータ構造を開示する。これは、従来の2-Hop Coverを拡張したものであり、Historical 2-Hop Coverと称する。
Historical 2-Hop Coverにおいては、各頂点vのラベルL(v)を、データ組(u,τ,δuv)のセットとして定義する。ここで、uは他の頂点、τは時刻、δuvはvからuまでの距離を表す。すなわち、ラベルエントリ(u,τ,δuv)は、ある時刻τにおいて、頂点vが、他の頂点uに対し距離δuvに位置していることを示している。ここで、時刻τとは、典型的には、ネットワークに頂点又はエッジが追加される度にインクリメントされる序数である。換言すれば、ネットワークの世代を示す数値である。なお、時刻τは、ネットワークの変遷における1時点を特定できる指標であればどのようなものであっても良い。例えば、日時等を含むタイムスタンプであっても良い。
この手法によれば、ラベルエントリを頂点uによりソートし、さらに、共通の頂点uを含むラベルエントリを距離に従ってソートした形で保持しているという前提において、例えばマージソートのようなアルゴリズムを利用することにより、時間τにおける頂点s,t間の最短距離を問うクエリを時間計算量O(|L(s)|+|L(t)|)で処理することが可能である。
(最短距離クエリ)
次に、Historical 2-Hop Coverに基づいて索引付けされたネットワークにおいて、過去の時刻τにおける頂点s,t間の最短距離を問うクエリに回答する手法について説明する。基本的には、通常の2-Hop Coverにおける場合と同様の処理を行うが、本手法は以下の点で相違する。
ネットワーク管理装置100のクエリ処理部140は、s及びtのラベルを参照する際、クエリで指定されたτと同じ時刻か、τよりも古くかつτに最も近い時刻か、を含むラベルエントリのみを参照する。すなわち、τよりも新しい時刻を含むラベルエントリを無視する必要がある。その余の処理については、通常の2-Hop Coverと同様に実行して良い。
(変化点クエリ)
ある2点s,t間の距離が変化した時刻を問うクエリを変化点クエリと称する。Historical 2-Hop Coverに基づいて索引付けされたネットワークにおいて、変化点クエリに回答するための処理について説明する。
ネットワーク管理装置100のクエリ処理部140は、はじめに、2点s,t間の距離の変化点の候補を抽出する。このため、クエリ処理部140はまず、頂点s及び頂点tのラベルエントリのうち、任意の頂点uを共有するラベルエントリ(u,τss)∈L(s)、(u,τtt)∈L(t)のペアを抽出する。なお、このペアの数は限定されない。次に、クエリ処理部140は、これらのペアの中から、例えばマージソートのようなアルゴリズムを使用して、 (τ,δ)=(max{τst},δst)を抽出する。さらに、クエリ処理部140は、抽出したこれらのペアを時刻τでソートする。最後に、不要なペアを削除する。つまり、もし(τii)と(τi+1i+1)とが連続したペアであって、τi≦τi+1かつδi≦δi+1であれば、後者のペアを削除する。
(索引付け)
Historical 2-Hop Coverに基づいて索引付けされたネットワークにおいても、上述のPruned Landmark Labeling又は実施の形態1のOnline Incremental Update Algorithmを用いて、索引の付与や動的な索引更新を行うことが可能である。
図6に、Historical 2-Hop Coverに基づいて索引付けされたネットワークにおける、Pruned Landmark Labelingを用いた索引付けアルゴリズムの一例を示す。通常の2-Hop Coverに基づいて索引付けされたネットワークにおけるPruned Landmark Labelingを用いた索引付け(図5)との違いは以下の通りである。ある頂点について、枝刈りの停止や、ラベルの更新の判断を行う際に、指定の時刻τに関するラベルのみを参照する。また、頂点のラベルを更新する際には、過去のラベルを削除したり、上書きすることなくに残しておく。そして、その頂点に追加するラベルエントリには、現在の時刻、すなわちネットワーク内のラベルに格納されているあらゆる時刻よりも新しい時刻を含ませる。
本実施の形態においては、索引更新部120が、時刻τを含むラベルを頂点に付与する。また、クエリ処理部140は、ラベル内の時刻τを参照して、最短距離クエリや変化点クエリに回答する。これにより、特定の時刻における2点間距離を得ることが可能となる。また、ネットワークの経時変化に伴う、頂点間の距離の変遷が分かるようになる。
従来、頂点間の距離の変遷をプロットすることは不可能であった。その理由は、頂点やエッジの追加に伴う索引の動的更新技術がそもそも確立されておらず、頂点やエッジが追加される時刻に注目されることがなかったためである。まして、頂点やエッジが追加されるタイミングで、ラベルに時刻情報を付与することは行われていなかった。しかし、本実施の形態では、実施の形態1のラベルの動的更新手法を応用し、これを実現した。
本実施の形態により、ネットワークの変遷に関する様々な新たな知見を得ることが期待される。例えば、ネットワークの経時変化に伴う頂点間の距離の変遷に注目することにより、現実世界の様々なネットワークの性質や特徴の解明を試みることができよう。
<その他の実施の形態>
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の実施の形態では、種々の索引付け手法及びクエリ処理手法を提示したが、発明の主旨を逸脱しない範囲内において、これらを任意に組み合わせて利用することができる。
また、上述の実施の形態では、本発明を主にハードウェアの構成として説明したが、これに限定されるものではなく、任意の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
100 ネットワーク管理装置
110 ネットワーク・索引記憶部
120 索引更新部
130 ネットワーク更新部
140 クエリ処理部

Claims (8)

  1. 頂点と、前記頂点間を結ぶエッジと、を含むネットワークを管理するためのネットワーク管理装置であって、
    複数の前記頂点と、
    前記頂点それぞれについて、他の前記頂点との間の距離情報を保持するラベルと、
    2つの前記頂点を端点とする前記エッジと、を保持するネットワーク・索引記憶部と、
    新たな前記エッジが生成された場合、前記新たなエッジの両端の前記頂点から幅優先探索を実施することにより、少なくとも一部の前記頂点の前記ラベルを更新する索引更新部と、を含む
    ネットワーク管理装置。
  2. 前記索引更新部は、
    前記幅優先探索により到達した前記頂点それぞれについて、前記新たなエッジにより、他の前記頂点との間に、従来の最短経路より短い新たな最短経路が形成されたか否かを判定し、
    前記新たな最短経路が形成されている場合に、前記到達した頂点のラベルを更新する
    請求項1記載のネットワーク管理装置。
  3. 前記索引更新部は、
    前記新たな最短経路が形成されていない場合に、前記到達した頂点で前記幅優先探索を中止する
    請求項2記載のネットワーク管理装置。
  4. 前記索引更新部は、
    他の前記頂点との間の距離情報と、時刻情報と、を前記ラベルに追加することにより、前記ラベルを更新する
    請求項1乃至3いずれか1項記載のネットワーク管理装置。
  5. 頂点と、前記頂点間を結ぶエッジと、を含むネットワークを管理するためのネットワーク管理装置であって、
    複数の頂点と、
    前記頂点それぞれについて、他の前記頂点との間の距離情報と、時刻情報と、を保持するラベルと、
    2つの前記頂点を端点とするエッジと、を保持するネットワーク・索引記憶部と、
    2つの前記頂点と、前記時刻情報と、が与えられた場合に、前記時刻情報が示す時点の前記ネットワークにおける、前記2つの頂点間の最短距離を出力するクエリ処理部と、を含む
    ネットワーク管理装置。
  6. 頂点と、前記頂点間を結ぶエッジと、を含み、前記頂点にはそれぞれ他の前記頂点との間の距離情報を保持するラベルが定義されているネットワークを管理するためのネットワーク管理方法であって、
    新たな前記エッジが生成された場合、前記新たなエッジの両端の前記頂点から幅優先探索を実施することにより、少なくとも一部の前記頂点の前記ラベルを更新する索引更新ステップを有する
    ネットワーク管理方法。
  7. 頂点と、前記頂点間を結ぶエッジと、を含み、前記頂点にはそれぞれ時刻情報及び他の前記頂点との間の距離情報を保持するラベルが定義されているネットワークを管理するためのネットワーク管理方法であって、
    2つの前記頂点と、前記時刻情報と、が与えられた場合に、前記時刻情報が示す時点の前記ネットワークにおける、前記2つの頂点間の最短距離を出力するクエリ処理ステップを有する
    ネットワーク管理方法。
  8. 請求項6又は7いずれか1項記載の方法ををコンピュータに実行させるためのプログラム。
JP2014057756A 2014-03-20 2014-03-20 ネットワーク管理装置、ネットワーク管理方法及びプログラム Pending JP2015184704A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014057756A JP2015184704A (ja) 2014-03-20 2014-03-20 ネットワーク管理装置、ネットワーク管理方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014057756A JP2015184704A (ja) 2014-03-20 2014-03-20 ネットワーク管理装置、ネットワーク管理方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2015184704A true JP2015184704A (ja) 2015-10-22

Family

ID=54351223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014057756A Pending JP2015184704A (ja) 2014-03-20 2014-03-20 ネットワーク管理装置、ネットワーク管理方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2015184704A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113272774A (zh) * 2018-11-02 2021-08-17 思睿人工智能公司 用于全历史动态网络分析的系统和方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113272774A (zh) * 2018-11-02 2021-08-17 思睿人工智能公司 用于全历史动态网络分析的系统和方法

Similar Documents

Publication Publication Date Title
Nagata et al. A new genetic algorithm for the asymmetric traveling salesman problem
CN104266656B (zh) 用于道路网的最短路径搜索方法及装置
CN113015970A (zh) 划分知识图
US20130151536A1 (en) Vertex-Proximity Query Processing
CN105335855A (zh) 一种交易风险识别方法及装置
US20190056235A1 (en) Path querying method and device, an apparatus and non-volatile computer storage medium
Duarte et al. Improved heuristics for the regenerator location problem
JP5108956B2 (ja) 経路計算順決定方法、プログラムおよび計算装置
CN103294799B (zh) 一种数据并行批量导入只读查询系统的方法及系统
KR101480670B1 (ko) 대용량 그래프 데이터베이스에서 최단 경로를 탐색하는 방법
CN108446110A (zh) Lua脚本生成方法、装置、终端及计算机可读介质
CN107547378B (zh) 一种vpn路由学习方法和装置
JP2020086662A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP2015184704A (ja) ネットワーク管理装置、ネットワーク管理方法及びプログラム
JP6705764B2 (ja) 生成装置、生成方法、及び生成プログラム
CN109582543A (zh) 数据回溯方法和装置
CN115297048B (zh) 一种基于光纤网络的路由路径生成方法及装置
CN112347216B (zh) 一种基于动态路网的初始线路搜索方法
CN109543018A (zh) 答案生成方法、装置、电子设备及存储介质
CN109165325A (zh) 用于切分图数据的方法、装置、设备以及计算机可读存储介质
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
Liu et al. Real-time graph partition and embedding of large network
CN108536447A (zh) 运维管理方法
Messaoud et al. Hybrid ant colony system algorithm for the vehicle routing problem with dynamic customers and traffic factors
CN107249029B (zh) 主动领取任务的方法、工作节点、系统及存储介质