特許第6240108号(P6240108)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特許6240108リオーダリング装置、リオーダリング方法およびリオーダリングプログラム
<>
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000014
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000015
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000016
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000017
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000018
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000019
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000020
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000021
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000022
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000023
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000024
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000025
  • 特許6240108-リオーダリング装置、リオーダリング方法およびリオーダリングプログラム 図000026
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6240108
(24)【登録日】2017年11月10日
(45)【発行日】2017年11月29日
(54)【発明の名称】リオーダリング装置、リオーダリング方法およびリオーダリングプログラム
(51)【国際特許分類】
   G06F 17/30 20060101AFI20171120BHJP
【FI】
   G06F17/30 419B
【請求項の数】5
【全頁数】16
(21)【出願番号】特願2015-30999(P2015-30999)
(22)【出願日】2015年2月19日
(65)【公開番号】特開2016-152031(P2016-152031A)
(43)【公開日】2016年8月22日
【審査請求日】2016年12月8日
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】新井 淳也
(72)【発明者】
【氏名】塩川 浩昭
【審査官】 吉田 誠
(56)【参考文献】
【文献】 白山 晋,大規模ネットワーク計算法に関して,第10回NEシンポ合宿 予稿集 [USB],2013年 9月 3日,1−152ページ
【文献】 片瀬 弘晶,LittleWeb:類似ノード集約によるWebグラフ圧縮手法,第2回データ工学と情報マネジメントに関するフォーラム−DEIM 2010−論文集,日本,電子情報通信学会データ工学研究専門委員会,2010年 5月25日,1−8ページ
【文献】 飯田 恭弘,企業におけるAI研究の最前線,人工知能,日本,(一社)人工知能学会,2014年 9月 1日,第29巻 第5号,472−479ページ
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
頂点と頂点との結合状態を隣接行列で表すグラフの頂点の集合から、頂点と頂点との前記結合状態に基づいて階層構造をなすクラスタを抽出する抽出部と、
抽出された前記各クラスタ内の頂点に連続した頂点IDを付与し、該頂点IDを用いて前記グラフの隣接行列を構成する構成部と、
を備えることを特徴とするリオーダリング装置。
【請求項2】
前記抽出部は、クラスタ内の頂点間の結合性を示す指標を最適化する塩川法を用いて前記クラスタを抽出することを特徴とする請求項1に記載のリオーダリング装置。
【請求項3】
前記抽出部は、前記クラスタを全頂点の集合を根とした多分木構造とみなし、親としての前記クラスタから該クラスタに含まれる子としての前記クラスタの順に、頂点を1つ含む前記クラスタまで抽出することを特徴とする請求項1または2に記載のリオーダリング装置。
【請求項4】
リオーダリング装置が実行するリオーダリング方法であって、
抽出部が、頂点と頂点との結合状態を隣接行列で表すグラフの頂点の集合から、頂点と頂点との前記結合状態に基づいて階層構造をなすクラスタを抽出する抽出工程と、
構成部が、抽出された前記各クラスタ内の頂点に連続した頂点IDを付与し、該頂点IDを用いて前記グラフの隣接行列を構成する構成工程と、
を含んだことを特徴とするリオーダリング方法。
【請求項5】
頂点と頂点との結合状態を隣接行列で表すグラフの頂点の集合から、頂点と頂点との前記結合状態に基づいて階層構造をなすクラスタを抽出する抽出ステップと、
抽出された前記各クラスタ内の頂点に連続した頂点IDを付与し、該頂点IDを用いて前記グラフの隣接行列を構成する構成ステップと、
をコンピュータに実行させるためのリオーダリングプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リオーダリング装置、リオーダリング方法およびリオーダリングプログラムに関する。
【背景技術】
【0002】
情報検索や推薦、広告等の様々な場面で、ソーシャルグラフ、Webグラフ等のグラフを分析して有用な知識を発見している。一方、グラフの大規模化に伴って、分析に要する時間が増大するため、分析処理の高速化が求められている。
【0003】
従来、ソーシャルグラフ、Webグラフなどの分析には、PageRank、Personalized PageRank(PPR)、Random Walk with Restart、HITS(Hyperlink-Induced Topic Search)などの手法が知られている。これらの分析手法では、疎行列と密ベクトルとの乗算(以下、SpMV(Sparse Matrix-Vector multiplication)と称する。)が繰り返し実行される。
【0004】
例えば、PPRは、グラフの重み付き隣接行列Wおよび各頂点への重みを表す列ベクトルqから各頂点の重要度xを求める分析手法である。xは、次式(1)を収束するまで繰り返し計算することにより求められる。
【0005】
【数1】
【0006】
ここで、一般に減衰比cは0.85である。また、一般に隣接行列は疎行列となるため、WxはSpMVである。上記の他の分析手法においても同様に、SpMVが繰り返されるため、分析処理の高速化にはSpMVの高速化が重要である。
【0007】
情報処理装置のCPU(Central Processing Unit)がSpMVを実行する際、局所性の低いメモリアクセスを行うことが知られている。例えば、次式(2)に示すn×n疎行列Aに対するSpMVであるAk+1=Axの計算方法において、N(i)は疎であることから、x[j]に対するアクセスの局所性は低い。
【0008】
【数2】
【0009】
このような局所性の低いメモリアクセスパターンではキャッシュヒット率が低く、レイテンシの大きいメインメモリへのアクセスが頻発するため、処理速度が低下しやすい。また、今日一般的に使われているマルチコアCPUでは、複数のコアが1つのメモリ帯域を共有するため、メモリアクセスが頻発すると、並列処理時に共有するメモリ帯域が飽和してスケーラビリティが低下する。そこで、SpMVのメモリアクセスの局所性を向上させる技術が期待されている。
【0010】
SpMVのメモリアクセスの局所性を向上させるため、リオーダリングを行うことが効果的であることが知られている。リオーダリングとは、疎行列の行と列とを並べ替えてバンド幅を削減することを意味する。ここで、バンド幅を削減するとは、疎行列のi行目に存在する非零要素の分布をi列目付近に集中させることを意味する。この場合、上記式(2)においてi行目とその近傍のi’行目との間でxに対する重複アクセスが増加して局所性が高まる。ここで重複アクセスは次式(3)で表される。
【0011】
【数3】
【0012】
また、リオーダリングとは、隣接行列Aをもつグラフにおいて、頂点IDがiである頂点に隣接する頂点に、iに近い頂点IDを振り直すことに相当する。このリオーダリングによって隣接する頂点のデータをメモリ上で近傍に配置し直すと、幅優先探索(BFS(Breadth First Search))等のSpMVを含まないグラフ処理でも局所性が向上することが確認されている。
【0013】
ところで、ソーシャルグラフやWebグラフ等の実世界のグラフは、互いに密に接続し合った頂点の集合であるクラスタを多数内包し、高いクラスタ性を示すことが知られている。
【0014】
ここで、グラフのエッジは隣接行列において非零要素で表されるので、クラスタ内の頂点に連続した頂点IDを与えると、疎行列の対角線上に密な非零要素の領域を作り出すことができる。例えば、グラフから抽出された2つのクラスタC,Cのそれぞれに含まれる頂点に連続した頂点IDを与えた場合、クラスタ内のエッジすなわち非零要素は密である一方、クラスタ間のエッジである非零要素は疎である。したがって、非零要素の分布は、図11に例示するように、非零要素が密である対角線に沿った濃色領域と、それ以外の非零要素が疎である白色領域とで表される。
【0015】
このように疎行列の対角線上に密に非零要素を分布させれば、メモリアクセスの局所性を向上させることができる。そこで、グラフからクラスタを抽出する方法(CNM法、非特許文献1参照)によって抽出されたそれぞれのクラスタについて、クラスタに含まれる頂点に連続した頂点IDを与えるリオーダリング方法(COM、非特許文献2参照)が知られている。
【0016】
また、実世界のグラフは階層的なクラスタ構造を持つことが知られている。例えば、図12にソーシャルグラフを可視化して例示するように、丸で囲んで示すクラスタ内でもエッジの粗密に差がある。このように、階層的なクラスタ構造を持つ場合、クラスタの中からさらにクラスタを抽出することができる(塩川法、非特許文献3参照)。
【0017】
そこで、クラスタ内のクラスタが内包する頂点に連続した頂点IDを付与すれば、非零要素を疎行列の対角線上により密に分布させることができ、メモリアクセスの局所性を向上させることができる。例えば、図13に例示するように、クラスタCに内包されるサブクラスタC11、C12およびC13と、クラスタCに内包されるサブクラスタC21およびC22とが、図11のクラスタCおよびCに比較して、疎行列の対角線上により密に分布していることがわかる。
【先行技術文献】
【非特許文献】
【0018】
【非特許文献1】A.Prat-Perez, D.Dominguez-Sal, and J.L.Larriba-Pey、"Social Based Layouts for the Increase of Locality in Graph Operations."、In Proceedings of the 16th International Conference on Database Systems for Advanced Applications Volume Part I, DASFAA 2011、Springer-Verlag Berlin Heidelberg 2011、2011年、p.558-569
【非特許文献2】A.Clauset, M.E.J.Newman, and C.Moore、"Finding community structure in very large networks"、Physical Review E、2004年、70(6):66111
【非特許文献3】H.Shiokawa, Y.Fujiwara, and M.Onizuka、"Fast Algorithm for Modularity-Based Graph Clustering"、In Proceedings of the Twenty-Seventh AAAI Conference on Articial Intelligence (AAAI 2013)、2013年、p.1170-1176
【発明の概要】
【発明が解決しようとする課題】
【0019】
しかしながら、従来のリオーダリング方法では、階層的なクラスタ構造が考慮されておらず、メモリアクセスの局所性の向上に限界があった。
【0020】
また、従来のリオーダリング方法に用いられるCNM法は、十分な処理速度が得られず大規模なグラフへの適用が困難である。例えば、CNM法によれば、約8000万エッジ程度の規模のグラフからクラスタを抽出する処理が1日で完了できなかったとの報告例がある(非特許文献3参照)。
【0021】
本発明は、上記に鑑みてなされたものであって、大規模なグラフの隣接行列のリオーダリングを行うことを目的とする。
【課題を解決するための手段】
【0022】
上述した課題を解決し、目的を達成するために、本発明に係るリオーダリング装置は、頂点と頂点との結合状態を隣接行列で表すグラフの頂点の集合から、階層構造をなすクラスタを抽出する抽出部と、抽出された前記各クラスタを代表する頂点に連続した頂点IDを付与し、該頂点IDを用いて前記グラフの隣接行列を構成する構成部と、を備えることを特徴とする。
【発明の効果】
【0023】
本発明によれば、大規模なグラフの隣接行列のリオーダリングを行うことができる。
【図面の簡単な説明】
【0024】
図1図1は、本発明の一実施形態に係るリオーダリング装置の概略構成を示す模式図である。
図2図2は、本実施形態の階層的クラスタリング処理を説明するための図である。
図3図3は、本実施形態の頂点ID生成処理手順を例示する説明図である。
図4図4は、本実施形態の頂点ID生成処理手順を例示するフローチャートである。
図5図5は、本実施形態の塩川法が適用された階層的クラスタリング処理手順を例示する説明図である。
図6図6は、本実施形態の塩川法が適用された階層的クラスタリング処理手順を例示するフローチャートである。
図7図7は、本実施形態の頂点の集約処理手順を例示する説明図である。
図8図8は、本実施形態の頂点の集約処理手順を例示するフローチャートである。
図9図9は、塩川法が適用された階層的クラスタリング処理における集約を説明するための説明図である。
図10図10は、リオーダリングプログラムを実行するコンピュータを示す図である。
図11図11は、クラスタ内の頂点に連続した頂点IDを与えた場合の非零要素の分布を説明するための説明図である。
図12図12は、階層的なクラスタ構造を例示する模式図である。
図13図13は、クラスタ内の頂点に連続した頂点IDを与えた場合の非零要素の分布を説明するための説明図である。
【発明を実施するための形態】
【0025】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0026】
[リオーダリング装置の構成]
まず、図1を参照して、本実施形態のリオーダリング装置の構成について説明する。リオーダリング装置1は、ワークステーションやパソコン等の汎用コンピュータで実現され、入力部2と、出力部3と、記憶部4と、制御部5とを備える。
【0027】
入力部2は、電源スイッチおよび入力キーなどの入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部5に対して各種指示情報を入力する。
【0028】
出力部3は、液晶ディスプレイなどの表示装置、プリンターなどの印刷装置、情報通信装置などによって実現される。
【0029】
記憶部4は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現され、グラフデータ41とリオーダリング結果42とを格納する。グラフデータ41は、リオーダリング装置1のリオーダリング処理の対象となるグラフの頂点の集合等の情報である。リオーダリング結果42は、リオーダリング処理により出力される、例えばグラフの隣接行列等の情報である。なお、記憶部4は、LANやインターネットなどの電気通信回線を介して制御部5と通信する構成でもよい。
【0030】
制御部5は、処理プログラム等を記憶したメモリおよび処理プログラムを実行するCPU等を用いて実現され、抽出部51および構成部52として機能する。抽出部51は、頂点と頂点との結合状態を隣接行列で表すグラフの頂点の集合から、階層構造をなすクラスタを抽出し、構成部52が、抽出された各クラスタ内の頂点に連続した頂点IDを付与し、該頂点IDを用いてグラフの隣接行列を構成する。以下に、各構成部によるリオーダリング処理について詳細に説明する。
【0031】
[リオーダリング処理]
本実施形態のリオーダリング処理では、グラフデータ41から抽出されるグラフGが入力される。なお、説明の簡略化のため、連結なグラフのみを対象とする。非連結なグラフについては、連結な部分ごとにリオーダリング処理対象とすればよい。また、リオーダリング処理では、グラフの頂点に新たな頂点IDを付与する写像σが出力される。写像σは次式(4)で表すことができる。
【0032】
【数4】
【0033】
本実施形態のリオーダリング処理は、初期化処理と、階層的クラスタリング処理と、頂点ID付与処理とで構成される。初期化処理は、メモリアクセス関係を表現するグラフを作成する処理である。階層的クラスタリング処理は、階層的クラスタ構造からクラスタを抽出する処理である。頂点ID付与処理は、抽出された全階層の全クラスタに連続した頂点IDを与える処理である。
【0034】
[初期化処理]
構成部52は、頂点間で発生するデータの参照回数すなわちメモリアクセス回数を、エッジの重みで表現する重み付き無向グラフGを生成する。ここで、頂点IDがvである頂点が頂点IDがuである頂点のデータを参照するとは、上記式(2)において、xk+1[v]の算出にx[u]の値を必要とすること、すなわち、u∈N(v)を意味する。Gは、次式(5)で表される。
【0035】
【数5】
【0036】
入力されたGの隣接行列をn×n行列A=(Aij)とする。この場合、Gの隣接行列Mは次式(6)〜(8)で定義される。
【0037】
【数6】
【0038】
ここで、Gのエッジの重みとは関係なく、エッジが存在すればデータ参照が発生するため、BOOL関数によって隣接行列Mを二値行列に変換する。また、クラスタリング処理によって抽出されるクラスタの品質は、有向グラフより無向グラフの方がよいことが知られている。そこで、BOOL(A)+BOOL(A)によりGを無向グラフ化する。さらに、自己ループAiiの非零要素は、常に対角線上にあってリオーダリングの際に考慮する必要がないことから、ノイズとならないようにNODIAGによって除去される。
【0039】
[階層的クラスタリング処理]
抽出部51は、階層的クラスタリング処理により、図2に例示するように、階層nの入れ子状のクラスタ構造を抽出する。ここで、階層はnが大きくなるほど階層が低くなるものとする。最も低い階層のクラスタは頂点を1つだけ含む。
【0040】
階層的クラスタリング処理により、以下の情報が得られる。まず、次式(9)で表される、トップレベルすなわちn=1の階層に存在するクラスタの集合が得られる。
【0041】
【数7】
【0042】
また、次式(10)で表される、階層nのi番目のクラスタを構成するサブクラスタの集合が得られる。
【0043】
【数8】
【0044】
また、次式(11)、(12)に示す定義により、階層的クラスタ構造は、図2に例示するように、階層0のクラスタC(0)を根、階層nのi番目のクラスタを親、階層nのi番目のクラスタのサブクラスタを子とする多分木構造となる。
【0045】
【数9】
【0046】
なお、階層的クラスタリング処理には、具体的に、前述したCNM法、塩川法の他、Multi-level Label Propagation等の周知の方法のいずれを適用してもよい。塩川法を適用した具体例については後述する。
【0047】
[頂点ID付与処理]
構成部52は、階層的クラスタリング処理により得られた階層0のクラスタC(0)と上記式(10)で得られるサブクラスタとを用いて、頂点に新しいIDを与える写像σを求める。この写像σにより全階層の全クラスタの頂点が連続した頂点IDとなるように頂点IDが与えられる。この場合、次式(13)が成り立つ。
【0048】
【数10】
【0049】
上記式(13)を満たす写像σは、例えば、図3に例示するアルゴリズム1で定義される。図4は、図3に示すアルゴリズム1を制御部5が実行する場合の処理手順を示すフローチャートである。アルゴリズム1は、ASSIGN関数の定義(図3の1〜9行目、図4のステップS1〜S6)とその呼び出し(図3の10行目)とで構成される。
【0050】
ASSIGN関数は、階層nのi番目のクラスタC(n)とそのクラスタに含まれる頂点に与える最小の頂点ID番号を与えられる。内部では、階層nのi番目のクラスタC(n)を根とする多分木に対して深さ優先探索を行いつつ、クラスタに含まれる頂点への頂点IDの割り当てを行う。最後に、クラスタ内の頂点へ与えた頂点IDのうち、最大のものに1を足した値を戻り値として返却する。
【0051】
具体的に、まず階層nのi番目のクラスタC(n)が、葉すなわち頂点を1つだけ含むクラスタであるか否かを判定し(図3の2行目、図4のステップS1)、もし葉であれば(ステップS1,Yes)、内包される唯一の頂点の頂点IDとして、最小の頂点IDを付与する(図3の3行目、図4のステップS2)。そして、内包される頂点に与えた頂点IDのうち最大のものに1を足して返却する(図3の4行目、図4のステップS3)。
【0052】
階層nのi番目のクラスタC(n)が、葉でない場合には(ステップS1,No)、最小の頂点IDを一時変数sとして保存して(図3の6行目)、階層nのi番目のクラスタC(n)の子要素に対して再帰的にASSIGN関数を適用する(図3の7〜8行目、図4のステップS4〜S5)。最初の子要素に対するASSIGN関数の呼び出しの際に一時変数sを与え、その戻り値を一時変数sに保存して次の子要素に与える。これにより、クラスタ間で重複なく連続した頂点IDが割り当てられる。
【0053】
そして、一時変数sを返却して(図3の9行目、図4のステップS6)、ASSIGN関数を抜けるように定義される。このように定義されたASSGIN関数の呼び出し(図3の10行目)では、全頂点に対して頂点IDを付与するため、第1引数として多分木の根である階層0のクラスタC(0)が与えられる。また、全頂点の中で最小の頂点IDは0であることから、第2引数に0が与えられる。以上の処理により、上記式(13)を満たす頂点IDが付与される。
【0054】
最後に、構成部52は、写像σにより付与された頂点IDを用いてグラフGのリオーダリングされた隣接行列を構成し、リオーダリング結果42に格納する。なお、リオーダリング結果42には、生成された写像σが格納されてもよい。
【0055】
[階層的クラスタリング処理の具体例]
本実施形態では、階層的クラスタリング処理に塩川法が適用される。塩川法は、Modularityの最適化を行うクラスタリング方法のうち、現在最も高速なアルゴリズムの1つである。ここで、Modularityとは、クラスタリング結果を示す指標であって、クラスタリング結果が良いほど、すなわちクラスタ内の頂点間の結合性が高くクラスタが明確に分離可能であるほど高い値となる。頂点u,vを1つのクラスタに分類して2頂点からなるクラスタを作った場合、すなわちこの2頂点を集約した場合、Modularityの上昇量ΔQ(u,v)は、次式(14)で定義される。
【0056】
【数11】
【0057】
塩川法では、まず、頂点を逐次集約することにより、分析処理の高速化が図られている。すなわち、Modularityを最も上昇させる隣接頂点へ、各頂点を貪欲に集約させることにより、グラフの規模を徐々に縮小させる。ここで集約された頂点が1つのクラスタを代表する頂点となる。
【0058】
また、塩川法では、上記の逐次集約を次数の小さい頂点から順に行うことにより、分析処理の高速化が図られている。逐次集約によってグラフの規模が小さくなるため、当初は高次数だった頂点も集約が進むにつれ次数が低下する。したがって、次数の小さい頂点から順に集約すれば、エッジの参照回数が減少し、分析処理が高速化する。
【0059】
[塩川法が適用されたリオーダリング処理]
図5は、階層的クラスタリング処理に塩川法が適用されたリオーダリング処理のアルゴリズムであるアルゴリズム2を示す図である。また、図6は、制御部5が実行するアルゴリズム2の処理手順を示すフローチャートである。このアルゴリズム2は、初期化処理(図5の1〜2行目、図6のステップS11〜S12)、階層的クラスタリング処理(図5の3〜11行目、図6のステップS13〜S20)、および頂点ID生成処理(図5の12〜17行目、図6のステップS21〜S26)とで構成される。本実施形態では、階層的クラスタリング処理に、一部(図5の8〜9行目、図6のステップS18〜S19)を除いて塩川法が適用されている。
【0060】
初期化処理では、変数の初期化と上記式(3)によるグラフの変換とが行われる。階層的クラスタリング処理では、塩川法を実行しつつ頂点集約履歴情報が収集される。まず、次数順に頂点uが選択され(図5の3〜4行目、図6のステップS13〜S14)、Modularityの上昇量ΔQ(u,v)が最大となる隣接頂点vの探索が行われる(図5の5行目、図6のステップS15)。
【0061】
Modularityが上昇する場合(図5の6行目、図6のステップS16,Yes)には、頂点u,vは同一クラスタに分類される。その場合、頂点の集約(図5の7行目、図6のステップS17)、クラスタのメンバ頂点数μの更新(図5の8行目、図6のステップS18)、および頂点集約履歴リストの更新(図5の9行目、図6のステップS19)が行われる。
【0062】
一方、Modularityが上昇しない場合(図5の10行目、図6のステップS16,No)には、頂点uが階層1のトップレベルのクラスタ集合に追加される(図5の11行目、図6のステップS20)。
【0063】
ここで、頂点の集約は、図7に例示する塩川法の定義に従ったアルゴリズム3により実行される。図8は、抽出部51が実行する図7のアルゴリズム3の処理手順を示すフローチャートである。まず、頂点uと接続されているエッジの端点をvへつなぎ替え(図7の1行目、図8のステップS31)、つなぎ替えにより重複するエッジの重みの和をとる(図7の3行目、図8のステップS33)。ここで、SUBSTuv(e)は、エッジの端点として出現するuをvに置き換えたエッジを意味する。
【0064】
図9は、塩川法の定義に従った頂点の集約の過程を例示する図である。図9において、最も低い階層(a)は、各クラスタがただ1つの頂点を含む初期状態を示す。階層(b)では、頂点の集約が進むにつれ、次数が小さい順に頂点v,v,v,v,vが残ったとする。ここで、最初に頂点vが集約の対象となり、Modularityの上昇量が最も大きい隣接頂点を探索する。それがvであったとすると、vはvに集約される。階層(c)において、頂点vも同様に、頂点vに集約される。
【0065】
階層(d)において、vの集約先を探索するも、Modularityを上昇させる隣接頂点が見つからなかったとする。その場合、vは集約されずトップレベルのクラスタに分類される。その後、階層(e),(f)にて頂点v,vに対して集約がなされる。最終的に、次式(15)で表される頂点集約履歴リスト、次式(16)で表されるトップレベルのクラスタ集合、および図5に例示される各クラスタのメンバ頂点数μが得られる。
【0066】
【数12】
【0067】
図5および図6に戻る。頂点ID生成処理では、頂点集約履歴リストを利用して、頂点と新しい頂点IDとの写像σが生成される。ここで、アルゴリズム2中のσ[v]は、vによって代表されるクラスタに含まれる頂点に割り当てられる予定の頂点IDのうち最小の頂点IDを意味する。σは、図9の階層(g)に示すトップレベルにあるクラスタについて最初に設定される(図5の12〜14行目、図6のステップS21〜S23)。
【0068】
次に、頂点集約履歴リストを逆にたどり、図9の階層(f)から階層(a)まで順に、集約された頂点を分解しつつσの値を更新する(図5の15〜17行目、図6のステップS24〜S26)。これにより、図9の階層(a)に示すように、各頂点が1つのクラスタになる初期状態まで分解され、σが各頂点と新しい頂点IDとの対応を表す写像となる。
【0069】
以上、説明したように、本実施形態のリオーダリング装置1では、抽出部51が、頂点と頂点との結合状態を隣接行列で表すグラフの頂点の集合から、階層構造をなすクラスタを抽出し、構成部52が、抽出された各クラスタ内の頂点に連続した頂点IDを付与し、該頂点IDを用いてグラフの隣接行列を構成する。
【0070】
これにより、大規模なグラフの隣接行列について、行列バンド幅の削減率が高いリオーダリングを行うことができる。したがって、後続するグラフ処理やSpMVにおけるメモリアクセスの局所性が向上し、キャッシュヒット率が向上する。その結果、分析処理の処理速度が向上する。また、キャッシュヒット率向上の結果、メインメモリへのアクセス頻度が減少し、メモリ間帯域の飽和が緩和され、並列処理のスケーラビリティが向上する。また、塩川法を適用して高速に階層的クラスタリング処理を行うので、リオーダリング処理全体の処理時間が短縮される。したがって、本実施形態のリオーダリング装置1のリオーダリング処理によれば、大規模なグラフの隣接行列のリオーダリングを行って、大規模なグラフの分析処理におけるメモリアクセスの局所性を向上させることができる。
【0071】
[他の実施形態]
[プログラム]
上記実施形態に係るリオーダリング装置1が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、係るプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、リオーダリング装置1と同様の機能を実現するリオーダリングプログラムを実行するコンピュータの一例を説明する。
【0072】
図10に示すように、リオーダリングプログラムを実行するコンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0073】
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1061が接続される。
【0074】
ここで、図10に示すように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ1031やメモリ1010に記憶される。
【0075】
また、リオーダリングプログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明したリオーダリング装置1が実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ1031に記憶される。
【0076】
また、リオーダリングプログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
【0077】
なお、リオーダリングプログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、リオーダリングプログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0078】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0079】
1 リオーダリング装置
2 入力部
3 出力部
4 記憶部
5 制御部
51 抽出部
52 構成部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13