[go: up one dir, main page]

JP2019091257A - 情報処理装置、情報処理方法及びプログラム - Google Patents

情報処理装置、情報処理方法及びプログラム Download PDF

Info

Publication number
JP2019091257A
JP2019091257A JP2017219779A JP2017219779A JP2019091257A JP 2019091257 A JP2019091257 A JP 2019091257A JP 2017219779 A JP2017219779 A JP 2017219779A JP 2017219779 A JP2017219779 A JP 2017219779A JP 2019091257 A JP2019091257 A JP 2019091257A
Authority
JP
Japan
Prior art keywords
group
route
vertices
vertex
identification information
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
JP2017219779A
Other languages
English (en)
Inventor
敏章 佐伯
Toshiaki Saeki
敏章 佐伯
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017219779A priority Critical patent/JP2019091257A/ja
Priority to US16/190,318 priority patent/US20190149419A1/en
Publication of JP2019091257A publication Critical patent/JP2019091257A/ja
Pending legal-status Critical Current

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/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】複雑ネットワークに対するグラフトラバーサルに要する時間を短縮する。【解決手段】本情報処理方法は、所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、抽出されたハブに隣接する頂点をグループ化し、グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部に格納し、複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして記憶部から特定し、グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成する処理を含む。【選択図】図4

Description

本発明は、グラフ処理技術に関する。
複雑ネットワークは、頂点間の接続パターンが純粋な規則性を有するわけではなく且つ純粋なランダム性を有するわけでもないネットワークである。図1は、複雑ネットワークの一例を示す図である。図1において、円は頂点を表し、頂点間の線分はエッジを表す。例えばソーシャルネットワークやナレッジグラフなど、現実世界における巨大で複雑なネットワークの中には複雑ネットワークの性質を有するネットワークがある。
複雑ネットワークはスケールフリーネットワークであることが知られている。スケールフリーネットワークとは次数分布がべき乗則に従うネットワークであり、次数とは頂点のエッジ数のことである。スケールフリーネットワークには、ハブ或いはハブノードと呼ばれる、極めて次数が大きい頂点がごく少数(例えば1%程度)存在する。一方で、多くの(例えば50%程度の)頂点は1又は2といったごく少数のエッジを有する。ハブのエッジ数の合計が複雑ネットワークにおける全エッジ数のおよそ半数に達することがあり、このような場合、或る頂点の次に到達する頂点はおおよそ50%の確率でハブである。
特開2016−189214号公報 特開平2−253478号公報 特表2013−519140号公報
グラフトラバーサルとはグラフ処理の一種であり、経路の探索等を目的としてグラフにおける頂点を辿る処理である。ハブに関する上記のような性質から、複雑ネットワークに対してグラフトラバーサルを実行すると経路がハブを経由する確率が高い。経路がハブを経由する場合、経路の組合せ爆発により記憶装置に対するランダムアクセス(具体的には、ランダムリード)の回数が増大するため処理時間が長くなるという問題が有る。上で述べたように、複雑ネットワークによってはおよそ半数のエッジが1つのハブに接続することがあるため、特に、ハブから出た複数の経路が再びハブを経由するパターンが原因となり処理時間が長くなりやすい。グラフ処理に関する従来技術は、このような問題の解決には適していない。
本発明の目的は、1つの側面では、複雑ネットワークに対するグラフトラバーサルに要する時間を短縮するための技術を提供することである。
一態様に係る情報処理方法は、所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、抽出されたハブに隣接する頂点をグループ化し、グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部に格納し、複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして記憶部から特定し、グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成する処理を含む。
1つの側面では、複雑ネットワークに対するグラフトラバーサルに要する時間を短縮できるようになる。
図1は、複雑ネットワークの一例を示す図である。 図2は、情報処理装置の機能ブロック図である。 図3は、本実施の形態におけるグループ化について説明するための図である。 図4は、本実施の形態におけるグループ化について説明するための図である。 図5は、本実施の形態におけるグループ化について説明するための図である。 図6は、本実施の形態におけるグループ化について説明するための図である。 図7は、第1KVSに格納されるデータの一例を示す図である。 図8Aは、第2KVSに格納されるデータの一例を示す図である。 図8Bは、第2KVSに格納されるデータの一例を示す図である。 図9は、グループ化部が実行する処理の処理フローを示す図である。 図10は、第1の実施の形態におけるトラバーサル処理部が実行する処理の処理フローを示す図である。 図11は、第1の実施の形態におけるトラバーサル処理部が実行する処理の処理フローを示す図である。 図12は、第1の実施の形態のグラフトラバーサルについて説明するための図である。 図13は、第1の実施の形態のグラフトラバーサルについて説明するための図である。 図14は、第1の実施の形態のグラフトラバーサルについて説明するための図である。 図15は、第1の実施の形態のグラフトラバーサルについて説明するための図である。 図16は、第1の実施の形態のグラフトラバーサルについて説明するための図である。 図17は、第1の実施の形態のグラフトラバーサルについて説明するための図である。 図18は、第1の実施の形態のグラフトラバーサルについて説明するための図である。 図19は、本実施の形態におけるグループ化について説明するための図である。 図20は、本実施の形態におけるグループ化について説明するための図である。 図21は、第2の実施の形態のトラバーサル処理部が実行する処理の処理フローを示す図である。 図22は、第2の実施の形態のトラバーサル処理部が実行する処理の処理フローを示す図である。 図23は、第2の実施の形態のトラバーサル処理部が実行する処理の処理フローを示す図である。 図24は、第2の実施の形態のトラバーサル処理部が実行する処理の処理フローを示す図である。 図25は、第2の実施の形態のトラバーサル処理部が実行する処理の処理フローを示す図である。 図26は、通常のグラフトラバーサルにおいて実行される処理の処理フローを示す図である。 図27は、通常のグラフトラバーサルにおいて実行される処理の処理フローを示す図である。 図28は、コンピュータの機能ブロック図である。
[実施の形態1]
本実施の形態における情報処理装置1は、複雑ネットワークについてのグラフ処理を実行するパーソナルコンピュータ或いはサーバ等の装置である。情報処理装置1は、LAN(Local Area Network)又はインターネット等のネットワークを介してグラフトラバーサルのクエリ(以下、トラバーサルクエリと呼ぶ)を受信し、受信したトラバーサルクエリに応じてグラフトラバーサルを実行し、グラフトラバーサルの結果を出力する。
図2は、情報処理装置1の機能ブロック図である。情報処理装置1は、ネットワーク管理部101と、グループ化部103と、トラバーサル処理部105と、第1KVS(Key-Value Store)111と、第2KVS113と、出力データ格納部115とを含む。
ネットワーク管理部101、グループ化部103及びトラバーサル処理部105は、例えば図28におけるSSD(Solid State Drive)2505に格納されたプログラムがメモリ2501に読み出されてCPU(Central Processing Unit)2503により実行されることで実現される。第1KVS111、第2KVS113及び出力データ格納部115は、例えばSSD2505に設けられる。
ネットワーク管理部101は、複雑ネットワークにおける各頂点に隣接する頂点の情報を第1KVS111において管理する。複雑ネットワークのトポロジが変更された場合、ネットワーク管理部101は第1KVS111に格納されているデータを更新する。なお、「隣接」とは頂点が他の頂点に1ホップで接続されることを意味する。以下では、或る頂点又はグループに隣接する頂点のことを「隣接頂点」とも呼ぶ。また、或る頂点に隣接するグループのことを「隣接グループ」とも呼ぶ。
グループ化部103は、第1KVS111に格納されたデータに基づきハブを抽出し、抽出されたハブの隣接頂点をグループ化する。グループ化部103は、グループ化の結果を第2KVS113に格納する。
トラバーサル処理部105は、第1KVS111に格納されたデータ及び第2KVS113に格納されたデータに基づき、複雑ネットワークに対するグラフトラバーサルを実行し、グラフトラバーサルの結果を出力データ格納部115に格納する。
ここで、本実施の形態におけるグループ化の概要を説明する。一例として、図3に示すような複雑ネットワークを考える。図3には無向グラフが示されており、円は頂点を表し、頂点間の線分はエッジを表す。図3においては次数が5以上である頂点がハブであるので、頂点A、頂点B及び頂点Cがハブである。頂点A、頂点B及び頂点Cはハッチングされている。なお、実際の複雑ネットワークは図3に示すようなネットワークより複雑である場合が多いが、説明を簡単にするためここでは単純な例が示されている。
図4は、ハブAの隣接頂点をグループ分けした結果を示す図である。ハブAの隣接頂点は頂点a、頂点b、頂点c、頂点d、頂点e、頂点l、頂点m、頂点n、頂点o及びハブである頂点Bである。本実施の形態においては、(1)隣接するハブの組み合わせが同じである頂点が同じグループに属するという条件、及び(2)ハブはグループには属さないという条件が満たされるようにグループ化が実行される。これらのルールに従うと、図4に示すようにグループ化が行われる。頂点a、頂点b及び頂点cはハブAに隣接するのでグループGA1に属し、頂点d及び頂点eはハブA及びハブBに隣接するのでグループGA2に属し、頂点l及び頂点mはハブA及びハブCに隣接するのでグループGA3に属し、頂点n及び頂点oはハブA、ハブB及びハブCに隣接するのでGA4に属する。ハブである頂点Bはいずれのグループにも属さない。
図5は、ハブBの隣接頂点をグループ分けした結果を示す図である。ハブBの隣接頂点はハブである頂点A、ハブである頂点C、頂点g、頂点q、頂点d、頂点e、頂点n及び頂点oである。上記のルールに従うと、図5に示すようにグループ化が行われる。頂点g及び頂点qはハブBに隣接するのでグループGB1に属し、頂点d及び頂点eはハブA及びハブBに隣接するのでグループGB2に属し、頂点n及び頂点oはハブA、ハブB及びハブCに隣接するのでGB3に属する。ハブである頂点A及びハブである頂点Cはいずれのグループにも属さない。
図6は、ハブCの隣接頂点をグループ分けした結果を示す図である。ハブCの隣接頂点は、ハブである頂点B、頂点f、頂点r、頂点l、頂点m、頂点n及び頂点oである。上記のルールに従うと、図6に示すようにグループ化が行われる。頂点f及び頂点rはハブCに隣接するのでグループGC1に属し、頂点l及び頂点mはハブA及びハブCに隣接するのでGC2に属し、頂点n及び頂点oはハブA、ハブB及びハブCに隣接するのでグループGC3に属する。ハブである頂点Bはいずれのグループにも属さない。
図7は、第1KVS111に格納されるデータの一例を示す図である。図7の例では、頂点の識別情報(キー)と、その頂点の隣接頂点の識別情報(バリュー)とが格納される。エントリは、複雑ネットワークにおける全頂点(ハブを含む)について生成される。
図8A及び図8Bは、第2KVS113に格納されるデータの一例を示す図である。図8A及び図8Bには、図4に示したハブAについて格納されるデータの一例が示されている。図8Aの例では、ハブの識別情報(キー)と、当該ハブの隣接グループの識別情報及び隣接頂点の識別情報(バリュー)とが格納される。図8Bの例では、グループの識別情報(キー)と、当該グループ内の頂点の識別情報及びその隣接頂点の識別情報並びにグループ内の全頂点が隣接するハブの識別情報(バリュー)とが格納される。
なお、図8A及び図8Bに示したデータは、全ハブについて生成される。
次に、情報処理装置1が実行する処理を詳細に説明する。
図9は、情報処理装置1のグループ化部103が実行する処理の処理フローを示す図である。本処理は、例えば、第1KVS111に格納されているデータが更新された場合、又は、ユーザからの指示に応じて実行される。
グループ化部103は、第1KVS111に格納されているデータに基づき、所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出する(図9:ステップS1)。
ステップS1における所定数は、例えば、(1)SSD2505に対する1回のランダムアクセスに要する時間と1の頂点につき許容される処理時間とに基づき決定される数、又は、(2)複雑ネットワークにおける頂点のうちエッジ数の多さが第N位(Nは自然数)である頂点のエッジ数である。(1)については、例えば1回のランダムアクセスに要する時間が10マイクロ秒であり且つ1の頂点につき許容される処理時間が1秒(=1000000マイクロ秒)である場合、100000(=1000000/10)が所定数である。(2)については、例えばNが13であり且つ第13位の頂点のエッジ数が5000000である場合、所定数は5000000である。但し、(1)又は(2)以外の数を所定数としてもよい。
グループ化部103は、ステップS1において抽出されたハブのうち未処理のハブを1つ特定する(ステップS3)。以下では、ステップS3において特定されたハブをハブhと呼ぶ。
グループ化部103は、第1KVS111から、ハブhに対応付けられている隣接頂点を抽出する。(ステップS5)。
グループ化部103は、ステップS5において抽出された隣接頂点を、当該隣接頂点に隣接するハブの組み合わせに基づきグループ化する(ステップS7)。グループ化の方法については、図3乃至図6を用いて説明したとおりである。
グループ化部103は、ハブhの識別情報に対応付けて、隣接グループの識別情報及び隣接頂点の識別情報を第2KVS113に格納する(ステップS9)。
グループ化部103は、ハブhの各隣接グループの識別情報に対応付けて、当該グループに属する頂点の識別情報と当該頂点の隣接頂点の識別情報と当該グループ内の全頂点が隣接するハブの識別情報とを第2KVS113に格納する(ステップS11)。
グループ化部103は、ステップS1において抽出されたハブのうち未処理のハブが有るか判定する(ステップS13)。
未処理のハブが有る場合(ステップS13:Yesルート)、処理はステップS3に戻る。一方、未処理のハブが無い場合(ステップS13:Noルート)、処理は終了する。
以上のような処理を実行すれば、本実施の形態のグラフトラバーサルにおいて使用される第2KVS113のデータを用意できるようになる。
図10は、第1の実施の形態におけるトラバーサル処理部105が実行する処理の処理フローを示す図である。本処理は、トラバーサルクエリを受信又は受け付けた場合に実行される。
トラバーサル処理部105は、トラバーサル処理についての初期化を実行する。具体的には、トラバーサル処理部105は、経路集合QをQ=[T0]と設定し且つ経路集合RをR=[]と設定する(図10:ステップS21)。
本実施の形態において、グラフトラバーサルの経路はリストで表現される。例えば頂点a、頂点b、頂点cの順に探索された場合、経路は[a,b,c]と表現される。Qは一時的に使用されるキューであり、Rは結果を格納するためのキューである。Q及びRは、例えばメモリ2501に格納される。また、グラフトラバーサルの始点である頂点をn0とする。n0のみで構成される経路をT0とする。つまりT0=[n0]である。
トラバーサル処理部105は、経路集合Qが空であるか判定する(ステップS23)。
経路集合Qが空である場合(ステップS23:Yesルート)、処理はステップS27に移行する。一方、経路集合Qが空ではない場合(ステップS23:Noルート)、トラバーサル処理部105は、探索終了条件が満たされるか判定する(ステップS25)。探索終了条件はトラバーサルクエリに含まれており、経路が所定個以上見つかったという条件やグラフトラバーサルのホップ数が所定の閾値を超えたという条件等である。
探索終了条件が満たされない場合(ステップS25:Noルート)、処理は端子Aを介して図11のステップS33の処理に移行する。
図11の説明に移行し、トラバーサル処理部105は、経路集合Qにおける経路を1つ取り出す(図11:ステップS33)。以下では、ステップS33において取り出された経路を経路Tと呼ぶ。
トラバーサル処理部105は、経路Tが探索条件を満たさないか判定する(ステップS35)。ステップS35の処理時点においてはグループが展開されていないため、経路Tにはグループが含まれる可能性がある。但し、たとえ経路Tにグループが含まれていたとしても経路Tが明らかに探索条件を満たさないと判定可能なことがあり、このような場合には経路Tは選択肢から除外される。なお、探索条件はトラバーサルクエリに含まれており、例えば、頂点aを始点とし且つ頂点kを終点とする経路であるという条件等である。
経路Tが探索条件を満たさない場合(ステップS35:Yesルート)、処理はステップS41に移行する。
一方、経路Tが探索条件を満たす場合(ステップS35:Noルート)、トラバーサル処理部105は、経路Tがフィルタ条件Fを満たさないか判定する(ステップS37)。ステップS37の処理時点においてはグループが展開されていないため、経路Tにはグループが含まれる可能性がある。但し、たとえ経路Tにグループが含まれていたとしても経路Tが明らかにフィルタ条件Fを満たさないと判定可能なことがあり、このような場合には経路Tは選択肢から除外される。フィルタ条件Fはトラバーサルクエリに含まれており、例えば、ホップ数が所定値以上であるという条件や或る頂点を経由するという条件等である。
経路Tがフィルタ条件Fを満たさない場合(ステップS37:Yesルート)、処理はステップS41に移行する。一方、経路Tがフィルタ条件Fを満たす場合(ステップS37:Noルート)、トラバーサル処理部105は、経路Tを経路集合Rに追加する(ステップS39)。
トラバーサル処理部105は、経路Tの最後の要素eを特定する(ステップS41)。要素eは、頂点又はグループである。例えば経路Tが[A,B,c]である場合、ステップS41において特定される要素eは頂点cである。
トラバーサル処理部105は、要素eがグループであるか判定する(ステップS43)。
要素eがグループである場合(ステップS43:Yesルート)、トラバーサル処理部105は、グループeに隣接するハブのうち未訪問のハブの集合M=[m1,m2,m3,...]を特定する(ステップS45)。そして処理はステップS49に移行する。ここで、未訪問であるハブとは経路Tに含まれないハブを意味する。以下においても同様とする。
上で述べたように、同じグループに属する頂点は同じハブに接続される。ステップS45においては、SSD2505に対する1回のランダムアクセスによってグループ内の各頂点に隣接するハブが一括して特定されることになるので、各頂点についてランダムアクセスを行わなくて済むようになる。これにより、ランダムアクセスの回数を減らし、グラフトラバーサルにかかる時間を短縮できるようになる。
一方、要素eがグループではない場合(ステップS43:Noルート)、トラバーサル処理部105は、以下の処理を実行する。具体的には、トラバーサル処理部105は、頂点eの隣接頂点のうち未訪問の隣接頂点、及び、頂点eの隣接グループのうち未訪問のグループの集合を、M=[m1,m2,m3,...]として特定する(ステップS47)。
トラバーサル処理部105は、経路TM1=T+[m1]、経路TM2=T+[m2]、経路TM3=T+[m3]、・・・を生成する。そして、トラバーサル処理部105は、経路TM1=T+[m1]、経路TM2=T+[m2]、経路TM3=T+[m3]、・・・のうちフィルタ条件Fを満たす経路を経路集合Qに追加する(ステップS49)。そして処理は端子Bを介して図10のステップS23に戻る。
図10の説明に戻り、探索終了条件が満たされる場合(ステップS25:Yesルート)、トラバーサル処理部105は、経路集合Qにおける経路及び経路集合Rにおける経路の各々について、当該経路に含まれるグループを第2KVS113に格納されているデータを用いて展開することで経路集合Rxを生成する(ステップS27)。例えば経路が[a,A,GA2]であり且つグループGA2に頂点d及び頂点eが含まれる場合、グループの展開により経路[a,A,d]及び経路[a,A,e]が生成される。ここで、展開により同じ頂点が2度以上訪問されることになった場合、経路は削除される。例えば展開により経路[a,A,o,C,o]が生成された場合、頂点oが2回訪問されるので経路[a,A,o,C,o]は削除される。
トラバーサル処理部105は、経路集合Rxに含まれる経路のうち探索条件を満たし且つフィルタ条件Fを満たす経路を特定する(ステップS29)。
トラバーサル処理部105は、ステップS29において特定された経路の情報(例えば、経路に含まれる頂点の識別情報が順序通りに並んだ情報)を出力データ格納部115に格納する(ステップS31)。そして処理は終了する。なお、トラバーサル処理部105は出力データ格納部115に格納された経路の情報を出力(例えば、表示部への表示又はトラバーサルクエリの送信元への送信)してもよい。
通常のグラフトラバーサルには、探索される頂点の数とランダムアクセスの回数とがほぼ一致するという特徴がある。これに対し、本実施の形態の方法においては、ハブに基づいて頂点がグループ化されており、複数の頂点に対して1回のランダムアクセスが実行される。これにより、経路がハブを経由する場合であっても、ランダムアクセスの回数の増加が原因となり処理時間が増大することを抑制できるようになる。複雑ネットワークによっては、処理時間の桁数を大幅に減らすことができる。
なお、通常のグラフトラバーサルの詳細については、付録を参照されたい。
また、第1の実施の形態においては、フィルタ条件Fを明らかに満たさない経路はステップS49において経路集合Qに追加されない。従って、特にフィルタ条件Fの条件が厳しい場合には、フィルタ条件Fによって多くの経路が探索の対象から外されるようになるのでグラフトラバーサルにかかる時間を短縮できるようになる。
複雑ネットワークは疎な部分が占める割合が大きいにもかかわらず、疎な部分での処理によっては性能問題が発生しないため、複雑ネットワーク全体に対して前処理を実行すること及びインデックスを生成することは効率的ではない。本実施の形態においては、性能問題の原因であるハブに限定してグループ化を実行しており、効率的な対策が実現されている。
また、本実施の形態の方法は、オンメモリでの処理が困難である大規模グラフに対しても有効である。
ここで、本実施の形態の処理について具体例を用いて説明する。
第1の例として、探索条件が「aを始点とし且つkを終点とする経路」という条件であり、且つ、フィルタ条件Fが「ホップ数が3以下である」という条件であるケースについて説明する。
図12は、経路集合Qに含まれる経路をホップ数毎に示す図である。
ホップ数が0である経路[a]は経路集合Qに追加される。但し、経路[a]は明らかに探索条件を満たさないので、経路集合Rには追加されない。ホップ数が1である経路[a,A]は経路集合Qに追加される。但し、経路[a,A]は明らかに探索条件を満たさないので、経路集合Rには追加されない。ホップ数が2である経路[a,A,GA1]、経路[a,A,GA2]、経路[a,A,GA3]、経路[a,A,GA4]及び経路[a,A,B]は経路集合Qに追加される。これらの経路のうち経路[a,A,B]は明らかに探索条件を満たさないので、経路[a,A,B]以外の経路が経路集合Rに追加される。ホップ数が3である経路[a,A,GA2,B]、経路[a,A,GA3,C]、経路[a,A,GA4,B]、経路[a,A,GA4,C]、経路[a,A,B,GB1]、経路[a,A,B,GB2]、経路[a,A,B,GB3]及び経路[a,A,B,C]は経路集合Qに追加される。これらの経路のうち経路[a,A,B,C]は明らかに探索条件を満たさないので、経路[a,A,B,C]以外の経路が経路集合Rに追加される。
図13は、経路集合Qに含まれる経路及び経路集合Rに含まれる経路のうちグループを含むものについて展開を実行した場合の結果を示す図である。なお、ホップ数が3以下であるという条件の下で展開後にさらに探索が実行されている。
経路[a,A,GA1]におけるグループGA1の展開及び展開後の探索を実行すると、経路[a,A,c]、経路[a,A,c,p]、経路[a,A,b]、経路[a,A,b,j]及び経路[a,A,b,i]が得られる。経路[a,A,GA2]におけるグループGA2の展開を実行すると、経路[a,A,d]及び経路[a,A,e]が得られる。経路[a,A,GA3]におけるグループGA3の展開及び展開後の探索を実行すると、経路[a,A,m]、経路[a,A,l]及び経路[a,A,l,i]が得られる。経路[a,A,GA4]におけるグループGA4の展開及び展開後の探索を実行すると、経路[a,A,n]、経路[a,A,o]及び経路[a,A,o,k]が得られる。
経路[a,A,GA2,B]におけるグループGA2の展開を実行すると、経路[a,A,d,B]及び経路[a,A,e,B]が得られる。経路[a,A,GA3,C]におけるグループGA3の展開を実行すると、経路[a,A,l,C]及び経路[a,A,m,C]が得られる。経路[a,A,GA4,B]におけるグループGA4の展開を実行すると、経路[a,A,n,B]及び経路[a,A,o,B]が得られる。経路[a,A,GA4,C]におけるグループGA4の展開を実行すると、経路[a,A,n,C]及び経路[a,A,o,C]が得られる。経路[a,A,B,GB1]におけるグループGB1の展開を実行すると、経路[a,A,B,q]及び経路[a,A,B,g]が得られる。経路[a,A,B,GB2]におけるグループGB2の展開を実行すると、経路[a,A,B,d]及び経路[a,A,B,e]が得られる。経路[a,A,B,GB3]におけるグループGB3の展開を実行すると、経路[a,A,B,n]及び経路[a,A,B,o]が得られる。
なお、(※)は、隣接頂点が存在するためさらなる探索が可能であるがフィルタ条件Fに基づき処理が打ち切られた経路を表している。
以上から、探索条件及びフィルタ条件Fを満たす経路として経路[a,A,o,k]が得られる。
第2の例として、探索条件が「aを始点とし且つkを終点とする経路」という条件であり、且つ、フィルタ条件Fが「ホップ数が4以下であり且つ頂点Bを経由しない」という条件であるケースについて説明する。
図14は、経路集合Qに含まれる経路をホップ数毎に示す図である。
ホップ数が0である経路[a]は経路集合Qに追加される。但し、経路[a]は明らかに探索条件を満たさないので、経路集合Rには追加されない。ホップ数が1である経路[a,A]は経路集合Qに追加される。但し、経路[a,A]は明らかに探索条件を満たさないので、経路集合Rには追加されない。ホップ数が2である経路[a,A,GA1]、経路[a,A,GA2]、経路[a,A,GA3]及び経路[a,A,GA4]は経路集合Qに追加される。これらの経路は経路集合Rにも追加される。ホップ数が3である経路[a,A,GA3,C]及び経路[a,A,GA4,C]は経路集合Qに追加される。これらの経路は経路集合Rにも追加される。ホップ数が4である経路[a,A,GA3,C,GC1]、経路[a,A,GA3,C,GC2]、経路[a,A,GA3,C,GC3]、経路[a,A,GA4,C,GC1]、経路[a,A,GA4,C,GC2]及び経路[a,A,GA4,C,GC3]は経路集合Qに追加される。これらの経路は経路集合Rにも追加される。
図15は、経路集合Qに含まれる経路及び経路集合Rに含まれる経路のうちグループを含むものについて展開を実行した場合の結果を示す図である。なお、ホップ数が4以下である条件の下で展開後にさらに探索が実行されている。
経路[a,A,GA1]におけるグループGA1の展開及び展開後の探索を実行すると、経路[a,A,c]、経路[a,A,c,p]、経路[a,A,b]、経路[a,A,b,j]及び経路[a,A,b,i]が得られる。経路[a,A,GA2]におけるグループGA2の展開を実行すると、経路[a,A,d]及び経路[a,A,e]が得られる。経路[a,A,GA3]におけるグループGA3の展開及び展開後の探索を実行すると、経路[a,A,m]、経路[a,A,l]及び経路[a,A,l,i]が得られる。経路[a,A,GA4]におけるグループGA4の展開及び展開後の探索を実行すると、経路[a,A,n]、経路[a,A,o]及び経路[a,A,o,k]が得られる。
経路[a,A,GA3,C]におけるグループGA3の展開を実行すると、経路[a,A,l,C]及び経路[a,A,m,C]が得られる。経路[a,A,GA4,C]におけるグループGA4の展開を実行すると、経路[a,A,n,C]及び経路[a,A,o,C]が得られる。
経路[a,A,GA3,C,GC1]におけるグループGA3及びグループGC1の展開を実行すると、経路[a,A,l,C,f]、経路[a,A,l,C,r]、経路[a,A,m,C,f]及び経路[a,A,m,C,r]が得られる。経路[a,A,GA3,C,GC2]におけるグループGA3及びグループGC2の展開を実行すると、経路[a,A,m,C,l]及び経路[a,A,l,C,m]が得られる。経路[a,A,GA3,C,GC3]におけるグループGA3の展開を実行すると、経路[a,A,l,C,n]、経路[a,A,m,C,n]、経路[a,A,l,C,o]及び経路[a,A,m,C,o]が得られる。経路[a,A,GA4,C,GC1]におけるグループGA4及びグループGC1の展開を実行すると、経路[a,A,n,C,f]、経路[a,A,n,C,r]、経路[a,A,o,C,f]及び経路[a,A,o,C,r]が得られる。経路[a,A,GA4,C,GC2]におけるグループGA4及びグループGC2の展開を実行すると、経路[a,A,n,C,l]、経路[a,A,n,C,m]、経路[a,A,o,C,l]及び経路[a,A,o,C,m]が得られる。経路[a,A,GA4,C,GC3]におけるグループGA4及びグループGC3の展開を実行すると、経路[a,A,n,C,o]及び経路[a,A,o,C,n]が得られる。
(※)は、隣接頂点が存在するためさらなる探索が可能な経路である。
図16は、図15に示された経路のうち一部の経路についてさらなる探索を実行した場合の結果を示す図である。経路[a,A,n,C,f]、経路[a,A,o,C,f]、経路[a,A,m,C,l]、経路[a,A,n,C,f]、経路[a,A,o,C,f]及び経路[a,A,n,C,l]は、フィルタ条件Fを満たさない。
経路[a,A,b,i]からは経路[a,A,b,i,l]が得られる。経路[a,A,l,i]からは経路[a,A,l,i,b]が得られる。経路[a,A,o,k]からは経路[a,A,o,k,g]及び経路[a,A,o,k,f]が得られる。
以上から、探索条件及びフィルタ条件Fを満たす経路として経路[a,A,o,k]が得られる。
図17は、第1の例について本実施の形態のグラフトラバーサルを実行した場合のランダムアクセスを示す図である。例えば第1行目の情報は、経路[a]における最後の要素である頂点aの隣接頂点を第1KVS111から特定するためのランダムアクセスを表す。また、例えば第8行目の情報は、経路[a,A,GA1]における最後の要素であるグループGA1に属する頂点を第2KVS113から特定するためのランダムアクセスを表す。このように、合計で15回のランダムアクセスが発生する。一方、図18は、第1の例について通常のグラフトラバーサルを実行した場合のランダムアクセスを示す図である。このように、合計で30回のランダムアクセスが発生する。
このように、本実施の形態のグラフトラバーサルを実行すれば、ランダムアクセスの回数を減らすことができるので、最終的にグラフトラバーサルを完了するまでの時間を短縮することができるようになる。
なお、本実施の形態の方法は、図3乃至図6に示したような無向グラフだけではなく、例えば図19に示すような、或る頂点(図19においては頂点a)を始点とする有向グラフに対しても適用可能である。図19においてはエッジの数が4以上である頂点がハブであり、ハブは頂点A、頂点B、頂点C、頂点D及び頂点Eである。ハブAには、頂点a、頂点b、頂点c、頂点d、頂点e、頂点f、頂点g及び頂点Eが接続されている。
このようなケースにおいては、例えば図20に示すようにグループ化が実行される。図20の例においては、ハブA及びハブBに接続されている頂点b及び頂点cはグループGA1に属し、ハブAにのみ接続されている頂点d及び頂点eはグループGA2に属し、ハブA、ハブC及びハブDに接続されている頂点f及び頂点gはグループGA3に属し、ハブEはいずれのグループにも属さない。
[実施の形態2]
第1の実施の形態においては、フィルタ条件Fを満たさない経路が経路探索が完了した後に一括して除外される。これに対して、第2の実施の形態においては、フィルタ条件Fを満たさない経路が経路探索中に除外される。そのため、複雑ネットワークの形態及びフィルタ条件Fの内容によっては、グラフトラバーサルに要する時間がさらに短縮される。
図21は、第2の実施の形態のトラバーサル処理部105が実行する処理の処理フローを示す図である。本処理は、トラバーサルクエリを受信又は受け付けた場合に実行される。
トラバーサル処理部105は、トラバーサル処理についての初期化を実行する。具体的には、トラバーサル処理部105は、経路集合QをQ=[T0]と設定し且つ経路集合RをR=[]と設定する(図21:ステップS121)。
本実施の形態において、グラフトラバーサルの経路はリストで表現される。例えば頂点a、頂点b、頂点cの順に探索された場合、経路は[a,b,c]と表現される。Qは一時的に使用されるキューであり、Rは結果を格納するためのキューである。
グラフトラバーサルの始点である頂点をn0とする。n0のみで構成される経路をT0とする。つまりT0=[n0]である。
トラバーサル処理部105は、経路集合Qが空であるか判定する(ステップS123)。
経路集合Qが空である場合(ステップS123:Yesルート)、処理はステップS127に移行する。一方、経路集合Qが空ではない場合(ステップS123:Noルート)、トラバーサル処理部105は、探索終了条件が満たされるか判定する(ステップS125)。探索終了条件はトラバーサルクエリに含まれており、経路が所定個以上見つかったという条件やグラフトラバーサルのホップ数が所定の閾値を超えたという条件等である。
探索終了条件が満たされない場合(ステップS125:Noルート)、処理は端子Cを介して図22のステップS131の処理に移行する。
図22の説明に移行し、トラバーサル処理部105は、経路集合Qにおける経路を1つ取り出す(図22:ステップS131)。以下では、ステップS131において取り出された経路を経路Tと呼ぶ。
トラバーサル処理部105は、経路Tの最後の要素を特定する(ステップS133)。以下では、ステップS133において特定された要素を要素eと呼ぶ。要素eは、頂点又はグループである。例えば経路Tが[A,B,c]である場合、要素eは頂点cである。
トラバーサル処理部105は、ステップS133において特定された要素eがグループであるか判定する(ステップS135)。
要素eがグループである場合(ステップS135:Yesルート)、処理は端子Dを介して図23のステップS147に移行する。
一方、要素eがグループではない場合(ステップS135:Noルート)、トラバーサル処理部105は、経路Tが探索条件を満たすか判定する(ステップS137)。探索条件はトラバーサルクエリに含まれており、例えば、頂点aを始点とし且つ頂点kを終点とする経路であるという条件等である。
経路Tが探索条件を満たさない場合(ステップS137:Noルート)、処理はステップS141に移行する。一方、経路Tが探索条件を満たす場合(ステップS137:Yesルート)、トラバーサル処理部105は、経路Tを経路集合Rに追加する(ステップS139)。
トラバーサル処理部105は、第1KVS111に格納されているデータ及び第2KVS113に格納されているデータに基づき、要素eの隣接頂点のうち未訪問の隣接頂点の集合M=[m1,m2,m3,...]、及び、要素eの隣接グループの集合G=[g1,g2,g3,...]を特定する(ステップS141)。ここで、未訪問である頂点とは経路Tに含まれない頂点を意味する。以下においても同様とする。
トラバーサル処理部105は、経路TM1=T+[m1]、経路TM2=T+[m2]及び経路TM3=T+[m3]、・・・を生成する。そして、トラバーサル処理部105は、経路TM1、経路TM2、経路TM3、・・・のうちフィルタ条件Fを満たす経路を経路集合Qに追加する(ステップS143)。フィルタ条件Fはトラバーサルクエリに含まれており、例えば、ホップ数が所定値以上であるという条件や或る頂点を経由するという条件等である。
トラバーサル処理部105は、経路TG1=T+[g1]、経路TG2=T+[g2]、経路TG3=T+[g3]、・・・を生成する。そして、トラバーサル処理部105は、経路TG1、経路TG2及び経路TG3、・・・を経路集合Qに追加する(ステップS145)。但し、Gが空集合である場合にはステップS145の処理はスキップされる。そして処理は端子Eを介して図21のステップS123に戻る。
端子Dを介して図23の説明に移行し、トラバーサル処理部105は、経路Tからグループeを取り除いた経路である経路Txを生成する(図23:ステップS147)。
トラバーサル処理部105は、第2KVS113に格納されているデータに基づき、グループeに隣接するハブのうち未訪問のハブの集合H=[h1,h2,h3,...]を特定する(ステップS149)。上で述べたように、同じグループに属する頂点は同じハブに接続される。ステップS149においては、1回のランダムアクセスによってグループ内の各頂点に隣接するハブが一括して特定されることになるので、各頂点についてランダムアクセスを行わなくて済むようになる。これにより、ランダムアクセスの回数を減らし、グラフトラバーサルにかかる時間を短縮できるようになる。
トラバーサル処理部105は、グループeに未処理の頂点が有るか判定する(ステップS150)。未処理の頂点が無い場合(ステップS150:Noルート)、処理は端子Eを介して図21のステップS123に戻る。
一方、グループeに未処理の頂点が有る場合(ステップS150:Yesルート)、トラバーサル処理部105は、グループeに属する頂点のうち未処理の頂点を1つ特定する(ステップS151)。以下では、ステップS151において特定された頂点を頂点pと呼ぶ。
トラバーサル処理部105は、経路Tp=Tx+[p]を生成する(ステップS153)。例えばTx=[a,b]である場合にはTp=[a,b,p]である。
トラバーサル処理部105は、経路Tpがフィルタ条件Fを満たすか判定する(ステップS155)。
経路Tpがフィルタ条件Fを満たさない場合(ステップS155:Noルート)、処理はステップS150に戻る。一方、経路Tpがフィルタ条件Fを満たす場合(ステップS155:Yesルート)、トラバーサル処理部105は、経路Tpが探索条件を満たすか判定する(ステップS157)。
経路Tpが探索条件を満たさない場合(ステップS157:Noルート)、処理は端子Fを介して図24のステップS161に移行する。一方、経路Tpが探索条件を満たす場合(ステップS157:Yesルート)、経路Tpを経路集合Rに追加する(ステップS159)。そして処理は端子Fを介して図24のステップS161に移行する。
図24の説明に移行し、トラバーサル処理部105は、ハブの集合Hに含まれるハブのうち未処理のハブを1つ特定する(図24:ステップS161)。以下では、ステップS161において特定されたハブをハブhと呼ぶ。
トラバーサル処理部105は、経路Th=Tp+[h]を生成する(ステップS163)。
トラバーサル処理部105は、経路Thがフィルタ条件Fを満たすか判定する(ステップS165)。
経路Thがフィルタ条件Fを満たさない場合(ステップS165:Noルート)、処理はステップS169に移行する。一方、経路Thがフィルタ条件Fを満たす場合(ステップS165:Yesルート)、トラバーサル処理部105は、経路Thを経路集合Qに追加する(ステップS167)。
トラバーサル処理部105は、ハブの集合Hに含まれるハブのうち未処理のハブが有るか判定する(ステップS169)。未処理のハブが有る場合(ステップS169:Yesルート)、処理はステップS161に戻る。一方、未処理のハブが無い場合(ステップS169:Noルート)、処理は端子Gを介して図25のステップS171に移行する。
図25の説明に移行し、トラバーサル処理部105は、第1KVS111に格納されているデータに基づき、頂点pの隣接頂点(ここでは、ハブ以外の頂点)のうち未訪問の隣接頂点の集合Vから、未処理の頂点を1つ特定する(図25:ステップS171)。以下では、ステップS171において特定された頂点を頂点vと呼ぶ。
トラバーサル処理部105は、経路Tv=Tp+[v]を生成する(ステップS173)。
トラバーサル処理部105は、経路Tvがフィルタ条件Fを満たすか判定する(ステップS175)。
経路Tvがフィルタ条件Fを満たさない場合(ステップS175:Noルート)、処理はステップS179に移行する。一方、経路Tvがフィルタ条件Fを満たす場合(ステップS175:Yesルート)、トラバーサル処理部105は、経路Tvを経路集合Qに追加する(ステップS177)。
トラバーサル処理部105は、未処理の頂点が有るか判定する(ステップS179)。
未処理の頂点が有る場合(ステップS179:Yesルート)、処理はステップS171に戻る。一方、未処理の頂点が無い場合(ステップS179:Noルート)、処理は端子Hを介してステップS150の処理に戻る。
図21の説明に戻り、探索終了条件が満たされる場合(ステップS125:Yesルート)、トラバーサル処理部105は、経路集合Qにおける経路及び経路集合Rにおける経路のうち、フィルタ条件Fを満たす経路を特定する(ステップS127)。
トラバーサル処理部105は、ステップS127において特定された経路の情報(例えば、経路に含まれる頂点の識別情報が順序通りに並んだ情報)を出力データ格納部115に格納する(ステップS129)。そして処理は終了する。なお、トラバーサル処理部105は出力データ格納部115に格納された経路の情報を出力(例えば、表示部への表示又はトラバーサルクエリの送信元への送信)してもよい。
通常のグラフトラバーサルには、探索される頂点の数とランダムアクセスの回数とがほぼ一致するという特徴がある。これに対して、本実施の形態の方法においては、ハブに基づいて頂点がグループ化されており、複数の頂点に対して1回のランダムアクセスが実行される。これにより、経路がハブを経由する場合であっても、ランダムアクセスの回数の増加が原因となり処理時間が増大することを抑制できるようになる。複雑ネットワークによっては、処理時間の桁数を大幅に減らすことができる。
また、第2の実施の形態においては、フィルタ条件Fを満たさない経路はステップS143において経路集合Qに追加されない。従って、特にフィルタ条件Fの条件が厳しい場合には、フィルタ条件Fによって多くの経路が探索の対象から外されるようになるのでグラフトラバーサルにかかる時間を短縮できるようになる。
複雑ネットワークは疎な部分が占める割合が大きいにもかかわらず、疎な部分での処理によっては性能問題が発生しないため、複雑ネットワーク全体に対して前処理を実行すること及びインデックスを生成することは効率的ではない。本実施の形態においては、性能問題の原因であるハブに限定してグループ化を実行しており、効率的な対策が実現されている。
また、本実施の形態の方法は、オンメモリでの処理が困難である大規模グラフに対しても有効である。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置1の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
例えば、グラフトラバーサルと展開とを並行して実行することで処理時間を短縮してもよい。
[付録]
本付録においては、通常のグラフトラバーサルにおいて実行される処理について説明する。図26は、通常のグラフトラバーサルにおいて実行される処理の処理フローを示す図である。
トラバーサル処理部105は、トラバーサル処理についての初期化を実行する。具体的には、トラバーサル処理部105は、経路集合QをQ=[T0]と設定し且つ経路集合RをR=[]と設定する(図26:ステップS221)。
トラバーサル処理部105は、経路集合Qが空であるか判定する(ステップS223)。
経路集合Qが空である場合(ステップS223:Yesルート)、処理はステップS227に移行する。一方、経路集合Qが空ではない場合(ステップS223:Noルート)、トラバーサル処理部105は、探索終了条件が満たされるか判定する(ステップS225)。
探索終了条件が満たされない場合(ステップS225:Noルート)、処理は端子Iを介して図27のステップS231の処理に移行する。
図27の説明に移行し、トラバーサル処理部105は、経路集合Qにおける経路を1つ取り出す(図27:ステップS231)。以下では、ステップS231において取り出された経路を経路Tと呼ぶ。
トラバーサル処理部105は、経路Tが探索条件を満たすか判定する(ステップS233)。探索条件はトラバーサルクエリに含まれており、例えば、頂点aを始点とし且つ頂点kを終点とする経路であるという条件、といった条件である。
経路Tが探索条件を満たさない場合(ステップS233:Noルート)、処理はステップS237に移行する。
一方、経路Tが探索条件を満たす場合(ステップS233:Yesルート)、トラバーサル処理部105は、経路Tを経路集合Rに追加する(ステップS235)。
トラバーサル処理部105は、経路Tの最後の頂点である頂点nを特定する(ステップS237)。
トラバーサル処理部105は、第1KVS111に格納されているデータに基づき、頂点nの隣接頂点を特定する。そして、トラバーサル処理部105は、頂点nの隣接頂点のうち未処理の隣接頂点の集合M=[m1,m2,m3,...]を特定する(ステップS239)。
トラバーサル処理部105は、経路TM1=T+[m1]、経路TM2=T+[m2]、経路TM3=T+[m3]、・・・を生成する。そして、トラバーサル処理部105は、経路TM1、経路TM2、経路TM3、・・・を経路集合Qに追加する(ステップS241)。そして処理は端子Jを介して図26のステップS223に戻る。
図26の説明に戻り、探索終了条件が満たされる場合(ステップS225:Yesルート)、トラバーサル処理部105は、経路集合Qにおける経路及び経路集合Rにおける経路のうち、フィルタ条件Fを満たす経路を特定する(ステップS227)。
トラバーサル処理部105は、ステップS227において特定された経路の情報(例えば、経路に含まれる頂点の識別情報が順序通りに並んだ情報)を出力データ格納部115に格納する(ステップS229)。そして処理は終了する。なお、トラバーサル処理部105は出力データ格納部115に格納された経路の情報を出力(例えば、表示部への表示又はトラバーサルクエリの送信元への送信)してもよい。
このように、通常のグラフトラバーサルは、頂点をキーとし且つ隣接頂点をバリューとする第1KVS111を繰り返し参照することにより進行する。
なお、ここでは単純な幅優先探索に基づくグラフトラバーサルの例を示したが、例えば、深さ優先探索に基づくグラフトラバーサルや訪問済みの頂点には再訪問しないグラフトラバーサルなど、グラフトラバーサルには種々のバリエーションがある。
以上で付録を終了する。
なお、上で述べた情報処理装置1は、コンピュータ装置であって、図28に示すように、メモリ2501とCPU2503とソリッドステートドライブ2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、SSD2505に格納されており、CPU2503により実行される際にはSSD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、SSD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からSSD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、SSD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る情報処理装置は、(A)所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、抽出されたハブに隣接する頂点をグループ化し、グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部(実施の形態における第2KVS113は上記記憶部の一例である)に格納するグループ化部(実施の形態におけるグループ化部103は上記グループ化部の一例である)と、(B)複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして記憶部から特定し、グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成するトラバーサル処理部(実施の形態におけるトラバーサル処理部105は上記トラバーサル処理部の一例である)とを有する。
複雑ネットワークに対するグラフトラバーサルにおいては、多数のエッジを有するハブが原因となり、ランダムアクセスの回数が増加して処理時間が長くなる。そこで、上で述べたような処理を実行すれば、頂点単位ではなくグループ単位でランダムアクセスが行われるので、複雑ネットワークに対するグラフトラバーサルに要する時間を短縮できるようになる。
また、上記グループ化部は、(a1)ハブが複数抽出された場合、隣接するハブの組み合わせが同じである頂点が同じグループに属するようにグループ化を実行してもよい。
ランダムアクセスの回数が少なくなるようにグループ化することができるようになる。
また、上記所定数は、記憶部に対する1回のランダムアクセスに要する時間と1の頂点につき許容される処理時間とに基づき決定される数、又は、複雑ネットワークにおける頂点のうちエッジ数の多さが所定順位である頂点のエッジ数であってもよい。
処理時間の増加をもたらすハブを適切に抽出できるようになる。
また、上記トラバーサル処理部は、(b1)グラフトラバーサルにより生成される経路上のグループを、当該経路の生成が完了した後に展開し、生成された複数の経路のうち所定の条件を満たす経路を特定してもよい。
展開を一括して実行することができるようになる。
また、上記トラバーサル処理部は、(b2)グラフトラバーサルにより経路を生成中に当該経路上にグループを検出した場合、当該グループを展開し、展開により生成された経路のうち所定の条件を満たす経路についてグラフトラバーサルを実行することで複数の経路を生成してもよい。
所定の条件を満たさない経路を途中で除外することができるようになる。
また、上記所定の条件は、グラフトラバーサルのクエリに含まれてもよい。
本実施の形態の第2の態様に係る情報処理方法は、(C)所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、(D)抽出されたハブに隣接する頂点をグループ化し、(E)グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部に格納し、(F)複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして記憶部から特定し、(G)グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成する処理を含む。
なお、上記方法による処理をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、抽出された前記ハブに隣接する頂点をグループ化し、グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部に格納するグループ化部と、
前記複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして前記記憶部から特定し、前記グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成するトラバーサル処理部と、
を有する情報処理装置。
(付記2)
前記グループ化部は、
前記ハブが複数抽出された場合、隣接するハブの組み合わせが同じである頂点が同じグループに属するようにグループ化を実行する、
付記1記載の情報処理装置。
(付記3)
前記所定数は、前記記憶部に対する1回のランダムアクセスに要する時間と1の頂点につき許容される処理時間とに基づき決定される数、又は、前記複雑ネットワークにおける頂点のうちエッジ数の多さが所定順位である頂点のエッジ数である、
付記1又は2記載の情報処理装置。
(付記4)
前記トラバーサル処理部は、
前記グラフトラバーサルにより生成される経路上のグループを、当該経路の生成が完了した後に展開し、生成された前記複数の経路のうち所定の条件を満たす経路を特定する、
付記1乃至3のいずれか1つ記載の情報処理装置。
(付記5)
前記トラバーサル処理部は、
前記グラフトラバーサルにより経路を生成中に当該経路上にグループを検出した場合、当該グループを展開し、展開により生成された経路のうち所定の条件を満たす経路について前記グラフトラバーサルを実行することで前記複数の経路を生成する、
付記1乃至3のいずれか1つ記載の情報処理装置。
(付記6)
前記所定の条件は、前記グラフトラバーサルのクエリに含まれる、
付記4又は5記載の情報処理装置。
(付記7)
コンピュータに、
所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、
抽出された前記ハブに隣接する頂点をグループ化し、
グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部に格納し、
前記複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして前記記憶部から特定し、
前記グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成する、
処理を実行させるプログラム。
(付記8)
コンピュータが、
所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、
抽出された前記ハブに隣接する頂点をグループ化し、
グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部に格納し、
前記複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして前記記憶部から特定し、
前記グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成する、
処理を実行する情報処理方法。
1 情報処理装置 101 ネットワーク管理部
103 グループ化部 105 トラバーサル処理部
111 第1KVS 113 第2KVS
115 出力データ格納部

Claims (7)

  1. 所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、抽出された前記ハブに隣接する頂点をグループ化し、グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部に格納するグループ化部と、
    前記複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして前記記憶部から特定し、前記グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成するトラバーサル処理部と、
    を有する情報処理装置。
  2. 前記グループ化部は、
    前記ハブが複数抽出された場合、隣接するハブの組み合わせが同じである頂点が同じグループに属するようにグループ化を実行する、
    請求項1記載の情報処理装置。
  3. 前記所定数は、前記記憶部に対する1回のランダムアクセスに要する時間と1の頂点につき許容される処理時間とに基づき決定される数、又は、前記複雑ネットワークにおける頂点のうちエッジ数の多さが所定順位である頂点のエッジ数である、
    請求項1又は2記載の情報処理装置。
  4. 前記トラバーサル処理部は、
    前記グラフトラバーサルにより生成される経路上のグループを、当該経路の生成が完了した後に展開し、生成された前記複数の経路のうち所定の条件を満たす経路を特定する、
    請求項1乃至3のいずれか1つ記載の情報処理装置。
  5. 前記トラバーサル処理部は、
    前記グラフトラバーサルにより経路を生成中に当該経路上にグループを検出した場合、当該グループを展開し、展開により生成された経路のうち所定の条件を満たす経路について前記グラフトラバーサルを実行することで前記複数の経路を生成する、
    請求項1乃至3のいずれか1つ記載の情報処理装置。
  6. コンピュータに、
    所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、
    抽出された前記ハブに隣接する頂点をグループ化し、
    グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部に格納し、
    前記複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして前記記憶部から特定し、
    前記グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成する、
    処理を実行させるプログラム。
  7. コンピュータが、
    所定数以上のエッジを有する頂点であるハブを複雑ネットワークから抽出し、
    抽出された前記ハブに隣接する頂点をグループ化し、
    グループに属する複数の頂点の識別情報と当該複数の頂点に隣接する頂点の識別情報とを含むグループ情報を当該グループの識別情報に対応付けて記憶部に格納し、
    前記複雑ネットワークに対するグラフトラバーサルにおいて、各グループに属する複数の頂点に隣接する頂点を、当該グループの識別情報をキーとして前記記憶部から特定し、
    前記グラフトラバーサルにより生成される経路上のグループを当該グループのグループ情報に基づき展開して複数の経路を生成する、
    処理を実行する情報処理方法。
JP2017219779A 2017-11-15 2017-11-15 情報処理装置、情報処理方法及びプログラム Pending JP2019091257A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017219779A JP2019091257A (ja) 2017-11-15 2017-11-15 情報処理装置、情報処理方法及びプログラム
US16/190,318 US20190149419A1 (en) 2017-11-15 2018-11-14 Information processing device and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017219779A JP2019091257A (ja) 2017-11-15 2017-11-15 情報処理装置、情報処理方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2019091257A true JP2019091257A (ja) 2019-06-13

Family

ID=66432572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017219779A Pending JP2019091257A (ja) 2017-11-15 2017-11-15 情報処理装置、情報処理方法及びプログラム

Country Status (2)

Country Link
US (1) US20190149419A1 (ja)
JP (1) JP2019091257A (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10230603B2 (en) 2012-05-21 2019-03-12 Thousandeyes, Inc. Cross-layer troubleshooting of application delivery
US10659325B2 (en) 2016-06-15 2020-05-19 Thousandeyes, Inc. Monitoring enterprise networks with endpoint agents
US10671520B1 (en) 2016-06-15 2020-06-02 Thousandeyes, Inc. Scheduled tests for endpoint agents
US10848402B1 (en) 2018-10-24 2020-11-24 Thousandeyes, Inc. Application aware device monitoring correlation and visualization
US11032124B1 (en) 2018-10-24 2021-06-08 Thousandeyes Llc Application aware device monitoring
US10567249B1 (en) * 2019-03-18 2020-02-18 Thousandeyes, Inc. Network path visualization using node grouping and pagination

Family Cites Families (17)

* 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
EP0781007B1 (de) * 1995-12-21 2003-03-12 Siemens Aktiengesellschaft Verfahren zum Bilden von Leitweginformation in einem ATM-Kommunikationsnetz
US6016307A (en) * 1996-10-31 2000-01-18 Connect One, Inc. Multi-protocol telecommunications routing optimization
US7327683B2 (en) * 2000-03-16 2008-02-05 Sri International Method and apparatus for disseminating topology information and for discovering new neighboring nodes
US20030026268A1 (en) * 2000-11-28 2003-02-06 Siemens Technology-To-Business Center, Llc Characteristic routing
US8064446B2 (en) * 2007-08-24 2011-11-22 At&T Intellectual Property I, L.P. Multicast with adaptive dual-state
JP5487987B2 (ja) * 2010-01-15 2014-05-14 富士通株式会社 判定装置、プログラム、判定方法及び判定システム
JP5136585B2 (ja) * 2010-03-30 2013-02-06 ブラザー工業株式会社 情報通信システム、ノード装置、情報処理方法、及び情報処理プログラム
CN104756445A (zh) * 2012-11-06 2015-07-01 惠普发展公司,有限责任合伙企业 增强的图遍历
US9565027B2 (en) * 2013-08-23 2017-02-07 Futurewei Technologies, Inc. Multi-destination traffic control in multi-level networks
US9247417B2 (en) * 2014-01-15 2016-01-26 Abb Inc. Encapsulating received multicast traffic in unicast IP packets to support distribution of multicast traffic through a mesh network
US10172068B2 (en) * 2014-01-22 2019-01-01 Cisco Technology, Inc. Service-oriented routing in software-defined MANETs
US10491479B2 (en) * 2015-07-08 2019-11-26 Fedex Corporate Services, Inc. Systems, apparatus, and methods of time gap related monitoring for an event candidate related to an ID node within a wireless node network
CN108141648B (zh) * 2015-10-13 2021-10-26 富士通株式会社 控制系统和控制方法
US9509617B1 (en) * 2016-02-09 2016-11-29 Grubhub Holdings Inc. Auto load transfer in geographically distributed systems
EP3941106B1 (en) * 2016-03-18 2023-05-03 Plume Design, Inc. Cloud-based control of a wi-fi network
JP6904127B2 (ja) * 2017-07-19 2021-07-14 富士通株式会社 中継ノード決定プログラム、中継ノード決定方法および並列処理装置

Also Published As

Publication number Publication date
US20190149419A1 (en) 2019-05-16

Similar Documents

Publication Publication Date Title
JP2019091257A (ja) 情報処理装置、情報処理方法及びプログラム
US11797534B2 (en) Efficient SQL-based graph random walk
JP5950285B2 (ja) 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
JP5427640B2 (ja) 決定木生成装置、決定木生成方法、及びプログラム
CN103778251B (zh) 面向大规模rdf图数据的sparql并行查询方法
CN115335823A (zh) 用于最短路径图搜索的向量化的队列
CN103514229A (zh) 用于在分布式数据库系统中处理数据库数据的方法和装置
US11126611B2 (en) Code dictionary generation based on non-blocking operations
CN116822422A (zh) 数字逻辑电路的分析优化方法及相关设备
CN102946410A (zh) 网络同步方法和装置
CN105426375A (zh) 一种关系网络的计算方法及装置
CN108090125A (zh) 一种非查询式的重复数据删除方法及装置
CN104503868B (zh) 数据同步方法、装置以及系统
CN103778222A (zh) 一种分布式文件系统存储文件的方法及系统
CN103729427B (zh) 一种基于自定义多级流表增量更新的流表转换方法
CN113868434A (zh) 图数据库的数据处理方法、设备和存储介质
US10884982B2 (en) Hash-based mount point lookup in virtual file systems
JP2021166072A (ja) 大きなデータをより小さな表現に変換する、およびより小さな表現を当初の大きなデータに戻して再変換するためのシステムおよび方法
CN104283966A (zh) 云存储系统的数据分布算法及其装置
CN109656898A (zh) 基于节点度的分布式大规模复杂社团探测方法及装置
CN107977310B (zh) 一种遍历测试命令生成方法及装置
CN111176704B (zh) 一种差分包文件生成方法、中断恢复方法和相关装置
US10511531B1 (en) Enhanced lens distribution
CN113868254B (zh) 图数据库中的实体节点去重方法、设备和存储介质
CN108121807A (zh) Hadoop环境下多维索引结构OBF-Index的实现方法