JP2015215826A - グラフデータ演算方法、グラフデータ演算システムおよびグラフデータ演算プログラム - Google Patents
グラフデータ演算方法、グラフデータ演算システムおよびグラフデータ演算プログラム Download PDFInfo
- Publication number
- JP2015215826A JP2015215826A JP2014099423A JP2014099423A JP2015215826A JP 2015215826 A JP2015215826 A JP 2015215826A JP 2014099423 A JP2014099423 A JP 2014099423A JP 2014099423 A JP2014099423 A JP 2014099423A JP 2015215826 A JP2015215826 A JP 2015215826A
- Authority
- JP
- Japan
- Prior art keywords
- vertex
- information
- edge
- vertices
- feature value
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】構造が変化する有向グラフの各点の特徴値を、分散計算環境下で、隣接行列Gに重み行列Cを再帰的に作用させて求める際、各コンピュータ間の通信量を低減し、高速に処理するグラフデータ演算方法を提供する。【解決手段】複数のバーテックスの各々に付与される特徴値を、バーテックス間を結ぶエッジの向きとエッジに付与される重みに関する情報を含む重み行列を用いて計算するグラフデータ演算方法が開示される。重み行列は、第1のエッジの終点のバーテックスである宛先バーテックスと第1のエッジに付与されている重みと第1のエッジの始点付与された特徴値に関する第1の情報と、第2のエッジの始点である参照元バーテックスと第2のエッジに付与されている重みと参照元バーテックス付与された特徴値に関する第2の情報に分解され、バーテックスの数の変化に伴い、第1の情報および第2の情報を更新することを特徴とする。【選択図】図8
Description
本発明は、グラフデータ演算方法、グラフデータ演算システムおよびグラフデータ演算プログラムに関するものである。
有向グラフで表されるデータ構造において、各バーテックスにおける特徴値の計算を分散コンピューティング環境で行なうシステムが知られている。そのようなシステムとして、例えば、WEBページのリンク関係を有向辺で表し、各ページのランク付けの値を各点の特徴値として表した有向グラフにおいて、各ページのランク付けの値を分散コンピューティング環境で求めるものが知られている(たとえば、特許文献1、2)。
たとえば、N点からなるグラフの構造は、各バーテックスに付与された値を要素とするN×N行列の隣接行列Gで表すことができる。各バーテックスには特徴値が付与されている。特徴値は、隣接するバーテックスとの間を結ぶエッジに付与された特徴値や隣接点に付与された特徴値と関連する。各エッジは重みを持っており、これらを各バーテックスの特徴値を計算するための行列C(以下、重み行列と呼ぶことがある)として表す。たとえば、バーテックスAとバーテックスBを結ぶエッジには向きが付いていても良い。このようなエッジを有向辺と呼ぶことがある。有向辺では、たとえば、バーテックスAからバーテックスBに向かうときの重みと、バーテックスBからバーテックスAに向かうときの重みが異なり得る。
各バーテックスの特徴値の算出法としてべき乗法が用いられることがある。これは、初期値となるベクトルV0に対して重み行列Cを作用させてベクトルV1を求め、さらにベクトルV1に対して行列Cを作用させてV2を求める形で計算を行ない、ベクトルVnとベクトルVn−1とがほぼ同じ値となるまで再帰的に重み行列Cを作用させる。このように、各バーテックスの特徴値は、重み行列Cを用いて求めることができる(たとえば、非特許文献1)。
このような計算を複数のコンピュータを用いる分散計算機環境で算出することが行われている。たとえば、随時構造が変化する可能性がある有向辺と点からなる有向グラフ構造に対して各バーテックスの特徴値をHadoop等の分散計算機環境で算出する処理を取り扱うことが行われている(たとえば、特許文献3、4)。
U.Kang、H.Tong、J.Sun、C−Y.Lin、C.Faloutsos"GBASE:A Scalable General Graph Management System"、Knowledge Discovery and Data Mining KDD−2011、pp.1091−1099 (2011)
構造が変化する有向グラフの各バーテックスの特徴値を、分散計算環境下で、隣接行列Gに重み行列Cを再帰的に作用させて求める際、ベクトルVnを求めるために用いるベクトルVn−1のデータとして、対応する列の全ての値が必要である。つまり、各コンピュータの処理対象としてベクトルVの特定の行を当てはめるだけでは処理ができない。したがって、各コンピュータは計算後の値を他のコンピュータに知らせる必要がある。このため、分散計算機環境での各コンピュータ間の通信量が膨大となってしまい、計算が高速に実行できないという問題がある。
よって、一つの側面として、本発明は、構造が変化する有向グラフの各点の特徴値を、分散計算環境下で、隣接行列Gに重み行列Cを再帰的に作用させて求める際、各コンピュータ間の通信量を低減するグラフデータ演算方法、システムおよびプログラムを提供することを目的とする。
複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算方法が提示される。前記重み行列を、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックスに付与された前記特徴値とに関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックスに付与された前記特徴値とに関する第2の情報に分解することと、前記複数のバーテックスの個数が変化したとき、前記第1の情報および前記第2の情報を更新し、更新された第1の情報および更新された第2の情報を得ることと、前記第1の計算機ノードが、第1のバーテックスに付与された前記特徴値を更新するために、前記更新された第2の情報を参照して演算を行い、更新された第1のバーテックスに付与された特徴値を求めることと、前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新された第1のバーテックスに付与された前記特徴値を前記第2の計算機ノードに送ること、を含むことを特徴とする。
構造が変化する有向グラフの各点の特徴値を、分散計算環境下で、隣接行列Gに重み行列Cを再帰的に作用させて求める際、各コンピュータ間の通信量を低減することができる。
以下、図面を参照して、実施形態について説明する。以下で説明する実施形態は、構造が変化するような有向グラフの各点の特徴値を分散計算機環境で算出する処理を取り扱うグラフデータ演算方法、システムおよびプログラムに関する。特に分散計算機環境での計算機間通信量を低く抑えながら高速に実行するグラフデータ演算方法、システムおよびプログラムに関する。
まず、本明細書中で用いる用語の定義について簡単に説明する。
<定義>
図1は、有向グラフの例を示す図である。
<定義>
図1は、有向グラフの例を示す図である。
有向グラフGは、図1では数字を丸で囲まれているバーテックス(単に点とも呼ぶ)と、バーテックス間を結ぶ向き付きのエッジ(単に辺とも呼ぶ)を含んでいる。バーテックスに記載された数字は、バーテックスを指定する識別子(ID)であり得る。例えば、識別子“i”(iは正整数とする)を有するバーテックスを単に、バーテックスiと呼ぶことがある。
図1に示されている有向グラフGは、3つのバーテックス1、2、3と3つのエッジa、b、cを含んでいる。図1に示されている有向グラフGに含まれるバーテックスの集合をV={1,2,3}と表すことがある。また、図1に示されている有向グラフGに含まれるエッジの集合をE={a,b,c}と表すことがある。バーテックスiからバーテックスjに向かうエッジxをx=aji=i→jと表すことがある。図1に示されている有向グラフGのエッジの集合Eは、E={a,b,c}={1→2,1→3,3→1}と表される。
一般にN個のバーテックスとM個のエッジを含むグラフ構造は、隣接行列Pと接続行列Qを用いて表すことができる。
一般にN個のバーテックスとM個のエッジを含むグラフ構造の隣接行列Pは、N×N行列である。隣接行列Pは、
として、バーテックスiからバーテックスjにエッジが存在するならばaj i=1、そうでなければaj i=0である行列として定義する。
一般にN個のバーテックスとM個のエッジを含むグラフ構造の接続行列Qは、N×M行列である。接続行列Qは、
として、エッジxがバーテックスiから出るときkix=1、エッジxがバーテックスiへ入るときkix=−1である行列として定義する。エッジxがバーテックスiから出るとき、バーテックスiを出力点と呼ぶ。「出力点」は「始点」または「参照元」と呼ばれることもある。エッジxがバーテックスiへ入るとき、バーテックスiを入力点と呼ぶ。「入力点」は、「終点」や「宛先」と呼ばれることもある。
図2Aは、各バーテックスに特徴値(P)と各エッジに辺重み(r)が付与された有向グラフの例を示す図、図2Bは、図2Aに示された有向グラフの各エッジに付与された辺重みの例を示す図、そして、図2Cは、図2Aに示された有向グラフの各バーテックスに付与された特徴値の例を示す図である。
各バーテックスに付与される特徴値は、一般に隣接するバーテックスとの間を結ぶエッジに付与された特徴値や、隣接するバーテックスと特徴値と所定の関係を有することがある。この関係は、N個のバーテックスを含むグラフの場合、N×N行列で表される。
図2Aに示されている例では、たとえば、図2Bに示されているようにバーテックス1に付与される特徴値は0.14であり、これを“P[1]=0.14”と表す。同様に、バーテックス2、3についても、P[2]=0.11、P[3]=0.11である。
また、図2Aに示されている例では、たとえば、図2Cに示されているようにエッジa=1→2に付与される辺重みは1/2であり、これを“r(a)=a21=1/2”と表す。同様に、エッジb、cについても、r(b)=a31=1/2、r(c)=a13=1である。
図2A〜2Cに示されている例では、バーテックスはウェブページを表し、特徴値はそのウェブページのページランク(登録商標)であり得る。ページランクは、そのウェブページの重要度を示す指数である。ページランクは、「多くの良質なページからリンクされているページは、やはり良質なページである」 という再帰的な関係に基づいている。勿論、特徴値はページランクに限定されず、実施形態は、有向グラフ表示が有効なあらゆる例に適用可能である。
図2A〜2Cに示されているグラフを用いて特徴値の算出に用いる関係式について説明する。
各バーテックスv∈Vに対して、バーテックスvを出力点とするエッジe1、e2、…、があったとして、それぞれのエッジの入力点をw1、w2、…、とする。このとき、バーテックスvの特徴値P(v)は、
として求められ得る。上式で、|V|はバーテックスの総数、dは定数で、たとえば、d=0.85である。
また、P[1]、P[2]、…、P[|V|]をまとめてベクトルPで表すこととする。さらに、接続行列Qの各要素に、辺重みを掛け合わせて定義される重み行列Cを導入する。例えば、図2A〜2Cに示されている例では、重み行列Cを、
とする。すると、ベクトルPは、
と書くことができる。ここで、bは要素が定数であるベクトル、dは定数のスカラーである。図2A〜2Cに示されている例では、定数ベクトルbは、
と書くことが出来る。
特徴値P[1]、P[2]、…、P[|V|](またはベクトルP)を算出する方法の一つとして、冪乗法が知られている。
以下では、冪乗法を用いて特徴値を算出する例を示すが、算出方法は冪乗法に限定されない。分散環境下で特徴値P[1]、P[2]、…、P[|V|](またはベクトルP)が計算できる方法であれば、任意の方法を用いることが出来る。
冪乗法では、まず、第1ステップで、
を計算する。同様にP2、P3、…と計算し、第mステップでは、
によってPmを求める。そして、上記の処理を、ベクトルPm−1とベクトルPmの差が所定の条件を満たすほどに小さくなるまで繰り返す。ベクトルPm−1とベクトルPmの差としては、要素ごとに比べたとき、差が最も大きいものをベクトルPm−1とベクトルPmの差としても良いし、ベクトルPm−1とベクトルPmの各要素の差の2乗の和をベクトルPm−1とベクトルPmの差としても良い。
たとえば、重み行列Cが
であり、bt=(0.05,0.05,0.05)(tは転置を表す)、d=0.85として、初期値P0が、
の場合、Pt 1=(0.05,0.48,0.48)、Pt 2=(0.45,0.07,0.07)であり、Pt 17=(0.14,0.11,0.11)、Pt 18=(0.14,0.11,0.11)となり収束したとみなされる。
上記のように、演算を多数回行なって特徴値を算出する処理を複数個の計算機(計算ノード)で行うことを考える。たとえば、N個のバーテックスの特徴値を表すN要素のベクトルがm個に分割され、m個の計算機で実行されるような場合が考えられる。
以下「バーテックス」はグラフの節点を表し,「ノード」は計算機を表すものとする。また、ノードを計算機ノードと呼ぶことがある。
分割した特徴値ベクトルの各部分を各計算機ノードで実行し、結果を他のノードに転送する方法では、次のような処理を行う。
以下では、X[i;j]を、行列Xの第i行目から第j行目までを表すこととする。Xがベクトルの場合、X[i;j]は、第i要素から第j要素を表す。
このように、有向グラフで表されるデータ構造において、各バーテックスにおける特徴値の計算を分散コンピューティング環境で行なう場合、密に結合するバーテックス同士を同一の計算機ノードに担当させ、計算機ノード間の転送を減らすなどの工夫がされ得る。
しかしながら、上記のようなアルゴリズムでは、構造が変化する有向グラフで表されるデータ構造において、各バーテックスにおける特徴値の計算を分散コンピューティング環境で行なうとき、構造が変化するたび、および計算のたびに計算結果を他の全ての計算機ノードに転送する。これは、各計算機ノードが、自身が担当するバーテックスがとのバーテックスと隣接しているかに関して、不完全な情報しか持たないためである。
また、密に結合する部分グラフを探す計算はNP困難問題として知られており、計算コストが高い。
<グラフデータ演算システム>
以下で説明するグラフデータ演算システムでは、構造が変化するような有向グラフの各点の特徴値を、分散計算環境下で、隣接行列Gに重み行列Cを再帰的に作用させて求める際、重み行列Cに相当する情報を、接続行列Qに相当する情報に変換し、エッジに付与される重みを付加したデータ構造を用い、接続行列Qの形式のデータに対する演算アルゴリズムを用いて、各計算機ノードに送るデータを必要最低限に抑えることができる。
以下で説明するグラフデータ演算システムでは、構造が変化するような有向グラフの各点の特徴値を、分散計算環境下で、隣接行列Gに重み行列Cを再帰的に作用させて求める際、重み行列Cに相当する情報を、接続行列Qに相当する情報に変換し、エッジに付与される重みを付加したデータ構造を用い、接続行列Qの形式のデータに対する演算アルゴリズムを用いて、各計算機ノードに送るデータを必要最低限に抑えることができる。
このような構成を採用することによって、各計算機ノード(以下、単にノードと呼ぶこともある)には、計算に値が必要となる値のみを伝播することができる。このため、システム全体で必要とするメモリ量は従来の方法と同程度に抑えたまま、必要最低限の計算機ノード間通信のみを行う演算を実現できる。後述の、変換配備機構により、グラフ構造の密結合部分を探すことなく通信量削減可能なデータ分散配置を行うことができ、時間コストを削減することができる。またその際、変換配備機構により一般的でよく知られた行列形式の算出方法表記をそのまま流用して演算を行えるため、従来法と同じ作業量で準備して演算を行うことができるといった効果を得ることができる。
本実施形態では、特徴値P[1]、P[2]、…、P[|V|](またはベクトルP)の計算に上述の冪乗法を用いるが、特徴値P[1]、P[2]、…、P[|V|](またはベクトルP)を計算する別の方法を用いても、計算機ノード間通信を最小限にすることができる。
図3Aは有向グラフの構造の変化の例を示す図である。
図3Aに示されている例では、図1に示されている有向グラフに新たにバーテックス4が加わり、バーテックス1からバーテックス4に向かうエッジa41が追加されている。
図3Aに示されている例では、図1に示されている有向グラフに新たにバーテックス4が加わり、バーテックス1からバーテックス4に向かうエッジa41が追加されている。
図3Bは有向グラフの構造の変化の別の例を示す図である。
図3Bに示されている例では、図1に示されている有向グラフから、バーテックス3からバーテックス1に向かうエッジa31が減っている。
図3Bに示されている例では、図1に示されている有向グラフから、バーテックス3からバーテックス1に向かうエッジa31が減っている。
図3Cは有向グラフの構造の変化のさらに別の例を示す図である。
図3Cに示されている例では、図1に示されている有向グラフから、バーテックス3が減り、さらに、バーテックス3が減るに伴い、バーテックス1からバーテックス3に向かうエッジa31と、バーテックス3からバーテックス1に向かうエッジa13も減っている。
図3Cに示されている例では、図1に示されている有向グラフから、バーテックス3が減り、さらに、バーテックス3が減るに伴い、バーテックス1からバーテックス3に向かうエッジa31と、バーテックス3からバーテックス1に向かうエッジa13も減っている。
図3Dは、有向グラフの構造の変化のさらに別の例を示す図である。
図3Dに示されている例では、図1に示されている有向グラフに、バーテックス4が加わっている。しかし、図3Dに示されている例では、既存のバーテックス1、2、3からバーテックス4に向かうエッジは加わっていないし、バーテックス4を始点とし、既存のバーテックス1、2、3のいずれかに向かうエッジも加わっていない。
図3Dに示されている例では、図1に示されている有向グラフに、バーテックス4が加わっている。しかし、図3Dに示されている例では、既存のバーテックス1、2、3からバーテックス4に向かうエッジは加わっていないし、バーテックス4を始点とし、既存のバーテックス1、2、3のいずれかに向かうエッジも加わっていない。
図4は、実施形態のグラフデータ演算システム10の概略を示す図である。
グラフデータ演算システム10は、変換配備機構100、計算機ノード(演算用ノード)300、350、360を含んでいる。
グラフデータ演算システム10は、変換配備機構100、計算機ノード(演算用ノード)300、350、360を含んでいる。
また、計算機ノード(演算用ノード)300は、演算機構302、宛先パラメタ集合データベース(DB)304、参照元パラメタ集合DB306、固定値パラメタDB308、他バーテックス演算前情報DB310、自バーテックス演算前情報DB312、自バーテックス演算後情報DB314、受信機構316、伝播機構318、パラメタ計算機構1302、パラメタ一時蓄積機構1314、パラメタ受信機構1316、パラメタ伝播機構1318を含んでいる。計算機ノード(演算用ノード)350、360も、計算機ノード(演算用ノード)300と同一または類似の構成であり得る。
変換配備機構100は、計算機ノード(演算用ノード)300、350、360とは異なる計算機であり得る。
変換配備機構100には、算出方法を表すデータ102が入力される。算出方法を表すデータ102には、重み行列C、バーテックスの総数|V|、定数dが含まれる。
計算機ノード(演算用ノード)300、350、360には、パラメタ計算アルゴリズム104が入力される。パラメタ計算アルゴリズムの例は、図9、10に示されているような更新式を含む。すなわち、パラメタ計算アルゴリズムは、図3A〜3Dに示されているような有向グラフの構造変化があった場合の、エッジ重みの更新の方法を規定するものであり、図9、10に示されているものに限定されない。
また、計算機ノード(演算用ノード)300、350、360には、グラフ構造変化通知機構106が接続されている。グラフ構造変化通知機構106は、有向グラフの構造変化の有無を検知し、計算機ノード(演算用ノード)300、350、360に通知する。
図7、8を参照して、実施形態のグラフデータ演算システム10の変換配備機構100について説明する。
図7は、エッジが増える前の有向グラフの構造の例を示す図、図8は、実施形態のグラフデータ演算システムの各計算機ノードにおけるデータの例を示す図である。
今、図7に示されているような有向グラフ構造を考える。すなわち、バーテックス1、2、3が存在する。各バーテックスi(i=1、2、3)には、特徴値P[i]が付与されている。さらに、バーテックス1からバーテックス2に向かうエッジa21、バーテックス1からバーテックス3に向かうエッジa31、バーテックス3からバーテックス1に向かうエッジa13が存在する。各エッジには、エッジ重みが付与されているが、たとえば、エッジaijに付与されたエッジ重みをaijで表すことがある。
グラフデータ演算システム10の変換配備機構100は、入力された算出方法を表すデータ102に含まれる重み行列Cから宛先とパラメタの対の集合である宛先集合パラメタ集合202と参照元とパラメタの対の集合である参照元パラメタ集合204を出力する。宛先パラメタ集合202と参照元パラメタ集合204は、各計算機ノードに対して定義され、各計算機ノードが必要とする最小限のデータである。
たとえば、重み行列Cが、
で表される図1、2に示されている有向グラフでは、バーテックス1からはバーテックス2、3に向かうエッジが存在し、バーテックス3からはバーテックス1に向かうエッジが存在する。バーテックス2が出力点となるエッジは存在しない。
この場合、図7に示されているように、宛先とパラメタの対の集合である宛先パラメタ集合202は、次のような要素を含む:バーテックス1を出力点とする集合Ldst(1)={(2,(a21,P[2]))、(3,(a31,P[3]))}、バーテックス2を出力点とする集合はLdst(2)={ }、すなわち空集合である。バーテックス3を出力点とする集合Ldst(3)={(1,(a13,P[1]))}。すなわち、宛先パラメタ集合202は、Ldst(i)={(バーテックスiを始点とするエッジの終点のバーテックスj,(バーテックスiから終点のバーテックスjに向かうエッジのエッジ重み,終点jに付与された特徴値))}である。バーテックスiから終点のバーテックスjに向かうエッジのエッジ重み、および/または終点jに付与された特徴値をパラメタと呼ぶことがある。
ここでバーテックス1は計算機ノード1が計算を担当し、バーテックス2は計算機ノード2が計算を担当し、バーテックス3は計算機ノード3が計算を担当するものとする。バーテックスi(i=1、2、3)に付与される特徴値をP[i]とする。図8に示されている段階では、P[1]=1、P[2]=P[3]=0であるとする。
また、バーテックス1に入ってくるエッジは、図7に示されているようにバーテックス3からのものが存在する。そのエッジに付与される重みはr(c)=a13=1である。このように、図8に示されているように、参照元パラメタ集合204は、バーテックス1を入力点とする参照元とパラメタ(エッジに付与される重みと参照元バーテックスの特徴値P[3])の集合Lsrc(1)={(3,(a13,P[3]))}={(3,(1,0))}、バーテックス2を入力点とする参照元とパラメタ(エッジに付与される重み)の集合Lsrc(2)={(1,(a21,P[1]))}={(1,(1/2,1))}、バーテックス3を入力点とする参照元とパラメタ(エッジに付与される重み)の集合Lsrc(3)={(1,(a31,P[1]))}={(1,(1/2,1)}から構成される。
すなわち、参照元パラメタ集合204は、Lsrc(i)={(バーテックスiを終点とするエッジの始点のバーテックスj,(バーテックスjを始点としバーテックスiを終点とするエッジに付与される重み,始点のバーテックスjに付与された特徴値P[j]))}である。バーテックスiを終点とするエッジに付与される重み、および/または始点のバーテックスjの特徴値P[j]をパラメタと呼ぶことがある。
また、グラフデータ演算システム10の変換配備機構100は、たとえば、エッジに付与されたエッジ重みの更新も行う。
パラメタ計算機構1302は、参照元パラメタ集合DB306に含まれる情報を参照して、グラフのトポロジーが変化したときに、新パラメタ1315を計算する。
図9は、実施形態のグラフデータ演算システムの各計算機ノードにおいて、バーテックスsからバーテックスdに向かうエッジが増えるときのエッジ重みの計算式の例を示す図である。ここで、「outgoingEdgeCount(j)」は、バーテックスjから出るエッジの数である。「t(j)」は、バーテックスjから出るエッジそれぞれに付与される重みの値の算術和である。
図10は、実施形態のグラフデータ演算システムの各計算機ノードにおいて、バーテックスsからバーテックスdに向かうエッジが減るときのエッジ重みの計算式の例を示す図である。
グラフデータ演算システム10の変換配備機構100は、有向グラフの構造変化が、たとえば図3Aに示されているようにエッジの増加を伴うものなのか、たとえば図3Bに示されているようにエッジの減少を伴うものなのかによって、図9または図10の計算式を用いて、エッジ重み(パラメタ)を更新する。
図3Cに示されているようにバーテックスが減る場合、バーテックスの減少は、そのバーテックスを入力点または出力点とする、一般に複数本のエッジの減少を伴う。この場合グラフデータ演算システム10の変換配備機構100は、複数本のエッジの減少を、1本のエッジの削除を伴うグラフ構造の変化が連続して順次生じるとみなして扱っても良い。
図3Dに示されているように、バーテックスのみが増加し、エッジの増減がない場合は、エッジの増減がなければ、ただ孤立したバーテックスが生じただけなので、エッジが増えるまでパラメタ(エッジ重み)の更新を行わなくても良い。
このように以下では、有向グラフにエッジが1本加わる場合について説明するが、その他の場合、たとえばエッジが1本減る、バーテックスが減るような場合にも、類似の方法が適用可能であり、その方法の記載は省略する。
分散計算環境では、パラメタの再計算のみならず、再計算の結果として得られた更新されたパラメタを、担当するバーテックスに付与された特徴値の更新の際に必要とする計算機ノードに伝播する必要がある。
図4に示されているように、変換配備機構100で生成された宛先パラメタ集合202と参照元パラメタ集合204は、各計算機ノード300、350、360に送られる。
たとえば、計算機ノード300では、宛先パラメタ集合202と参照元パラメタ集合204はそれぞれ、宛先パラメタ集合データベース(DB)304と参照元パラメタデータベース(DB)306に格納される。
図11は、実施形態のグラフデータ演算システム10の各計算機ノードにおけるデータの例を示す図である。
図11ではエッジごとに、重み行列Cから宛先パラメタ集合202と参照元パラメタ集合204に変換する。
たとえば、計算機ノード1が担当するバーテックス1から計算機ノード2が担当するバーテックス2に向かうエッジa21の重みは1/2である。そこで、変換配備機構100は、バーテックス1担当の演算用ノードの記憶領域の宛先集合データベース(DB)304にLdst(1)に(2,(a21,P[2])=(2,(1/2,0)を追加する。また、変換配備機構100は、バーテックス1担当の演算用ノードの記憶領域の参照元パラメタデータベース(DB)306に、Lsrc(2)に(1,(a21,P[1])=(1,(1/2,1))を追加する。
計算機ノード1が担当するバーテックス1から計算機ノード3が担当するバーテックス3に向かうエッジa31の重みは1/2である。そこで、変換配備機構100は、バーテックス1担当の演算用ノードの記憶領域の宛先パラメタ集合データベース(DB)304にLdst(1)に(3,(a31,P[3]))=(3,(1/2,0)を追加する。また、変換配備機構100は、バーテックス3担当の演算用ノードの記憶領域の参照元パラメタデータベース(DB)306に、Lsrc(3)に(3,(a31,P[1]))=(1,(1/2,1))を追加する。
計算機ノード3が担当するバーテックス3から計算機ノード1が担当するバーテックス1に向かうエッジa13の重みは1である。そこで、変換配備機構100は、バーテックス1担当の演算用ノードの記憶領域の参照元パラメタデータベース(DB)306に、Lsrc(1)に(3,(a13,P[3]))=(3,(1,0))を追加する。また、変換配備機構100は、バーテックス3担当の演算用ノードの記憶領域の宛先集合データベース(DB)304にLdst(3)に{(1,(a13,P[1])}={(1,(1/2,1)}を追加する。
したがって、図11に示されているように、バーテックス1担当の演算用ノードの記憶領域の宛先パラメタ集合データベース(DB)304にLdst(1)={(2,(1/2,0),(3,(1/2,0))}が、参照元パラメタデータベース(DB)306にはLsrc(1)={(3,(1,0))}が格納される。バーテックス2担当の演算用ノードの記憶領域の宛先パラメタ集合データベース(DB)304にLdst(2)={}が、参照元パラメタデータベース(DB)306にはLsrc(2)={(1,(1/2,1)}が格納される。バーテックス3担当の演算用ノードの記憶領域の宛先パラメタ集合データベース(DB)304にLdst(3)=(1,(1,1))が、参照元パラメタデータベース(DB)306にはLsrc(3)={(1,(1/2,1))}が格納される。
図12は、バーテックス1からバーテックス4に向かうエッジが増えたときのバーテックス1担当の演算用ノードにおけるパラメタ計算の例を示す図である。
ここで、「処理タプル」とあるのは、Ldst(i)なら、(バーテックスiを出力点とするエッジの終点のバーテックスj,(バーテックスiからバーテックスjに向かうエッジのエッジ重み,終点バーテックスjに付与された特徴値P[j]))の組、Lsrc(i)なら(参照元のバーテックスj,(バーテックスjからバーテックスiに向かうエッジに付与される重み,参照元のバーテックスjの特徴値P[j]))の組を指す。
まず、バーテックス1担当の演算用ノードのパラメタ計算機構1302は、(2,(a21,P[2]))=(2,(1/2,0))について処理をする。エッジ(辺)パラメタr’は、図12のようにr’=1/3と計算される。計算結果は、パラメタ一時蓄積機構1314に蓄積される。そして、ToDoリストLに(2,(1/3,0))を追加する。
ToDoリストLに格納される要素は、有向グラフの構造変化によって発生する新たなタプルである。
次に、バーテックス1担当の演算用ノードのパラメタ計算機構1302は、(3,(a31,P[3])))=(3,(1/2,0))について処理をする。エッジ(辺)パラメタr’は、図12のようにr’=1/3と更新される。そして、ToDoリストLに(3,(1/3,0))を追加する。この時点で、ToDoリストLには、(2,(1/3,0))と(3,(1/3,0))が含まれている。
最後に、バーテックス1担当の演算用ノードのパラメタ計算機構1302は、(4,(∞,P[4])))=(4,(∞,0))について処理をする。ここで、「∞」は任意の数を意味しても良い。エッジ(辺)パラメタr’は、図12のようにr’=1/3と計算される。そして、ToDoリストLに(4,(1/3,0))を追加する。この時点で、ToDoリストLには、(2,(1/3,0))と(3,(1/3,0))と(4,(1/3,0))が含まれている。
図13は、実施形態のグラフデータ演算システムの各計算機ノードにおけるデータの例を示す図である。なお、図11から値の変化がないデータは省略してある。図13では、図3Aのように、バーテックス1から4の辺が増えた場合を説明する。
タプル(2,(1/3,0))の処理では、バーテックス1担当の演算用ノードの変換配備機構100は、Ldst(1)中の(2,(1/2,0))を(2,(1/3,0))と変更する。また、バーテックス2担当の演算用ノードのパラメタ計算機構1302は、Lsrc(2)中の(1,(1/2,1))を用いて新たなパラメタ(1,(1/3,1))を得る。計算結果は、パラメタ一時蓄積機構1314に蓄積される。
タプル(3,(1/3,0))の処理では、バーテックス1担当の演算用ノードの変換配備機構100は、Ldst(1)を{(2,(1/3,0))、(3,(1/3,0))}と変更する。また、バーテックス3担当の演算用ノードのパラメタ計算機構1302は、Lsrc(3)に対する新たなパラメタ{(3,(1/3,1))}を得る。計算結果は、パラメタ一時蓄積機構1314に蓄積される。
タプル(4,(1/3,0))の処理では、バーテックス1担当の演算用ノードのパラメタ計算機構1302は、Ldst(1)を{(2,(1/3,0))、(3,(1/3,0))、(4,(1/3,0))}と変更する。また、バーテックス4担当の演算用ノードのパラメタ計算機構1302は、Lsrc(4)に(4,(1/3,1))を追加する。
最終結果である新パラメタ1315は、パラメタ伝播機構1318によって、他のノードに送られ得る。
図14は、図13に示されている処理を終了した時点における、実施形態のグラフデータ演算システムの各計算機ノードにおけるデータの例を示す図である。
図14に示されている例では、バーテックス1、2を計算機ノードAが担当し、バーテックス3、4を計算機ノードBが担当している。よって、ノードAの「宛先とパラメタの集合Ldst」には、(src,dst,パラメタ)=(1,2,(1/3,0))、(1,3,(1/3,0))。(1,4,(1/3,0))が格納される。また、ノードAの「参照元とパラメタの集合Lsrc」には、(dst,src,パラメタ)=(2,1,(1/3,1))、(1,3,(1,0))が格納される。またノードBの「宛先とパラメタの集合Ldst」には、(src,dst,パラメタ)=(3,1,(1,1))が、「参照元とパラメタの集合Lsrc」には、(dst,src,パラメタ)=(3,1,(1/3,1))、(4,1,(1/3,1))が格納される。
算出方法を現すデータ102に含まれるバーテックスの総数|V|、定数dは、固定値パラメタデータベース(DB)に格納される。
各計算機ノードには、別の計算機ノードで計算された特徴値に関する情報も入力される。図4では更新情報320は、計算機ノード(演算用ノード)350で計算された特徴値に関する結果で計算機ノード(演算用ノード)300に入力されるものである。更新情報322は、計算機ノード(演算用ノード)300で計算された特徴値に関する情報で計算機ノード(演算用ノード)360に入力されるものである。
また、各計算機ノードには、別の計算機ノードで計算されたパラメタも入力される。図4では、別の計算機ノード350で計算されたパラメタ更新情報1320は、計算機ノード(演算用ノード)300に入力される。また、パラメタ更新情報1322は、計算機ノード(演算用ノード)300で計算されたパラメタで、計算機ノード(演算用ノード)360に入力されるものである。
計算機ノード300では、受信機構316が計算機ノード350から更新情報320を受ける。受信機構316が受けた更新情報320に関するデータは、他バーテックス演算前情報データベース(DB)310に格納される。
自バーテックス演算前情報データベース(DB)312は、計算機ノード300で直前に計算された特徴値P[1]、P[2]、…、P[|V|](またはベクトルP)の値が格納されている。
演算機構302は、参照元パラメタデータベース(DB)306に格納されているデータ、他バーテックス演算前情報データベース(DB)310に格納されているデータ、および自バーテックス演算前情報データベース(DB)312に格納されているデータを用いて、特徴値P[1]、P[2]、…、P[|V|](またはベクトルP)の値を更新する。たとえば、演算機構302は、直前の計算の結果である特徴値P[1]、P[2]、…、P[|V|](またはベクトルP)の値をPoとすると、
によって新たな特徴値Pを計算することができる。定数ベクトルb、定数dは、参照元パラメタデータベース(DB)306に格納されているデータである。
図15に示されているように、直前の計算結果である特徴値P[1]、P[2]、…、P[|V|](またはベクトルP)の値をPoとし、新たな特徴値をPとする。
X[i]で、ベクトルXのi番目の値を示すものとする。
たとえば、演算機構302において、バーテックス1の特徴値P[1]は、
で計算される。このとき、「Po[3]」の“3”は、Lsrc(1)={(3、(1、0))}中の“3”であり、「Po[3]×1」の“1”は、Lsrc(1)={(3、(1、0))}中の“1”である。演算機構302は、このような処理をLsrc(i)が要素として持つ全てのタプル(j,r)について実行する。ここで、r=(エッジに付与される重みaij,参照元のバーテックスの特徴値P[j])である。
たとえば、演算機構302において、バーテックス1の特徴値P[1]は、
例えば、図7に示される有向グラフ構造の、バーテックス3を担当する計算機ノードのデータ構造の変化を、図15を参照して説明する。
図15は、実施形態のグラフデータ演算システムの各計算機ノードにおけるデータの例を示す図である。
まず、1回目の計算の実施直前では、バーテックス3を担当する計算機ノードには、宛先パラメタの集合は Ldst(3)={(1,(1,1))}、参照元パラメタ集合Lsrc(3)={ (1,(1/2,1)) }、担当するバーテックスの前回演算後の特徴値Po[3]=0、演算で必要となる点の前回演算後のLsrc(3)内に格納した特徴値Po[1]=1が格納されている。
1回目の計算では、P[3]=b[3]+d×Po[1]×a31=0.05+0.85×1×(1/2)=0.475が計算される。よって、1回目の計算の実施後では、担当するバーテックスの今回演算後の特徴値P[3]=0.475となる。
1回目の伝播実施後、担当する点の前回演算後の特徴値はPo[3]=0.475であり、演算で必要となる点の前回演算後のLsrc(3)内に格納した特徴値はPo[1]=0.05となる。演算結果は各バーテックスを担当する演算用ノードの他バーテックス演算前情報データベース(DB)310、または自バーテックス演算前情報データベース(DB)312に分散して格納、保持される。
これを繰り返すと、2回目の計算の実施後では、担当するバーテックスの今回演算後の特徴値P[3]=0.071となる。
図4に戻って、演算機構302で計算された新たな特徴値Pは、自バーテックス演算後情報データベース(DB)314に格納される。
伝播機構318では、演算機構302で計算された新たな特徴値Pを必要な計算機ノードに伝播する。
伝播機構318は、演算機構302で新たに特徴値が計算されたバーテックスjの特徴値P[j]が、前の計算結果である特徴値Poと異なるときのみ、処理を行う。
たとえば伝播機構318は、演算機構302で新たに特徴値が計算されたバーテックスjが自分自身が担当するバーテックスではなく、自身の参照元パラメタデータベース(DB)306に格納されている集合Lsrc(i)の要素(j,r)に含まれる場合、バーテックスj担当の計算機ノードに更新情報として特徴値P[j]を送る。そして伝播機構318は、バーテックスj担当の計算機ノードの他バーテックス演算前情報データベース(DB)310に格納されているバーテックスjの特徴値をP[j]に変更させる。
たとえば伝播機構318は、演算機構302で新たに特徴値が計算されたバーテックスjは自分自身が担当するバーテックスではなく、自身の宛先集合データベース(DB)304に格納されているLdst(i)の要素(j,r)に含まれるならば、バーテックスj担当の計算機ノードに更新情報として特徴値P[j]を送る。そして伝播機構318は、バーテックスj担当の計算機ノードに自身の他バーテックス演算前情報データベース(DB)310に格納されているバーテックスjの特徴値をP[j]に変更させる。
また伝播機構318は、演算機構302で新たに特徴値が計算されたバーテックスjの特徴値P[j]について、自身がバーテックスj担当の計算機ノードであり、この値がPo[j]とは異なるならば、自身の自バーテックス演算前データベース312に格納されている値をP[j]に更新する。
演算機構302と受信機構316と伝播機構318は組み合わされて、演算・伝播・受信機構330を構成する。
図4に示されているように、計算機ノード300の伝播機構318から送られた新たな特徴値は、更新情報322として、適切な計算機ノード300に送られる。
このように、複数のバーテックスの各々に付与される特徴値P[1]、…、P[n]を要素とするベクトルである特徴値ベクトルPを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列Cを用いて、少なくとも第1の計算機ノード300および第2の計算機ノード350、360を含む複数の計算機ノードによって計算するグラフデータ演算システムは、変換配備機100、演算機構302、伝播機構318を含む。
変換配備機100は、重み行列Cを、複数のバーテックスの一つである第1のバーテックスjから出ている第1のエッジaijの終点のバーテックスiである宛先バーテックスと第1のエッジに付与されている重みaijと前記第1のバーテックスjに付与された前記特徴値P[j]とに関する第1の情報「宛先とパラメタの対の集合Ldst」と、複数のバーテックスの一つである第2のバーテックスkに入ってくる第2のエッジaklの始点のバーテックスlである参照元バーテックスと第2のエッジに付与されている重みaklと参照元バーテックスlに付与された特徴値P[l]とに関する第2の情報「参照元とパラメタの対の集合Lsrc」に分解する。
グラフ構造変化通知機構106は、複数のバーテックスの個数が変化したとき、第1の情報および第2の情報を更新し、更新された第1の情報および更新された第2の情報を得る。
演算機構302は、グラフ構造変化通知機構106が得た更新された第1の情報および更新された第2の情報を用いて、第1の計算機ノードが、第1のバーテックスに付与された特徴値を更新するために、更新された第2の情報「参照元とパラメタの対の集合Lsrc」を参照して演算を行い、更新された第1のバーテックスに付与された特徴値を求める。この際、パラメタ受信機構1316で受けたパラメタ更新情報1320が格納されている参照元パラメタ集合DB306に含まれる情報を参照し得る。
パラメタ伝播機構1318は、第1の情報「宛先とパラメタの対の集合の集合Ldst」に第2の計算機ノードが担当する第2のバーテックスが含まれている場合、第1の計算機ノードは、更新された第1のバーテックスに付与された特徴値を第2の計算機ノードに送る。
実施形態のグラフデータ演算システムでは、上記のようなアルゴリズムでは、構造が変化する有向グラフで表されるデータ構造において、各バーテックスにおける特徴値の計算を分散コンピューティング環境で行なうとき、計算のたびに計算結果を、その計算結果を必要とする計算機ノードにのみ転送する。
このように各コンピュータに割り当てられた計算に必要な値のみをコンピュータ間に伝播させることによって、有向グラフの各点の特徴値を、分散計算環境下で、隣接行列Gに重み行列Cを再帰的に作用させて求める際、各コンピュータ間の通信量を低減し、高速に処理することができる。
図5Aは実施形態のグラフデータ演算システム11の構成の例を示す図である。
グラフデータ演算システム11では、1台の変換配備用ノード120に変換配備機構100およびグラフ構造変化通知機構106が含まれている。
グラフデータ演算システム11では、1台の変換配備用ノード120に変換配備機構100およびグラフ構造変化通知機構106が含まれている。
変換配備用ノード120には、有向グラフ構造データストア(配信サーバとも呼ばれる)110から、有向グラフの構造に関する情報が入力される。たとえば有向グラフの構造に関する情報には、隣接行列P、接続行列Qなどが含まれ得る。
また、グラフの各バーテックスを担当する演算用ノード(計算機ノード)の割り当てを演算用ノードディレクトリサーバ130で管理する。演算用ノードディレクトリサーバ130は、グラフの各バーテックスと、バーテックスを担当する演算用ノード(計算機ノード)の対応に関する情報を含むバーテックス・ノード対応表132を含む。
演算用ノードディレクトリサーバ130は、ノードのIDとIPアドレスの対応表142を含むDNSサーバ140を必要に応じて参照する。
演算用ノード300、350、360のそれぞれは、演算・伝播・受信機構330を含む。演算用ノード300、350、360のそれぞれは、演算用ノードディレクトリサーバ130を参照して、受信、計算、伝播を繰り返す。
図5Bは、実施形態のシステム12の構成の例を示す図である。
グラフデータ演算システム12では、1台の変換配備用ノード122に変換配備機構100、バーテックスID・ノードID変換機構132、グラフ構造変化通知機構106が含まれている。
グラフデータ演算システム12では、1台の変換配備用ノード122に変換配備機構100、バーテックスID・ノードID変換機構132、グラフ構造変化通知機構106が含まれている。
また、演算用ノード400、350、360のそれぞれは、演算・伝播・受信機構330とバーテックスID・ノードID変換機構340を含む。
バーテックスID・ノードID変換機構124、340は、グラフの各バーテックスを担当する演算用ノードの割り当ての際、バーテックスIDからノードIDへの変換を行う。
グラフデータ演算システム12では、図4に示されているグラフデータ演算システム11の演算用ノードディレクトリサーバ130、DNSサーバ140は存在せず、その代わり、各計算機ノードはバーテックスID・ノードID変換機構124、340を含んでいる。
図5Cは、実施形態のグラフデータ演算システム13の構成の例を示す図である。
グラフデータ演算システム13では、複数の計算機ノード500、502、504で変換配備を担当する。演算用ノードと1対1で対応する変換配備ノードに変換配備処理が割り振られている。
グラフデータ演算システム13では、複数の計算機ノード500、502、504で変換配備を担当する。演算用ノードと1対1で対応する変換配備ノードに変換配備処理が割り振られている。
また、変換配備を複数の計算機ノード500、502、504に振り分けるために、振り分け用ノード126が複数の計算機ノード600、602、604に接続されている。
振り分け用ノード126は、エッジの両端のバーテックスの担当演算ノードと直結する変換配備ノード2箇所に処理を振る。
たとえば、変換配備用ノード502は、演算用ノード602と1対1に対応する。変換配備用ノード502は、変換配備機構100とグラフ構造変化通知機構106を含み、演算用ノード02は演算・伝播・受信機構330を含む。変換配備用ノード602の変換配備機構100は、1つのエッジの変換につきLsrc、Ldstいずれか一方の要素追加を指示する。
演算用ノード700、702、704のそれぞれは、対になる変換配備用ノードと一体に構成しても良い。
図5Dは、実施形態のグラフデータ演算システム14の構成の例を示す図である。
グラフデータ演算システム14では、複数の計算機ノード506、508、510で変換配備を担当する。演算用ノードと多対多で接続する変換配備ノードに変換配備処理が割り振られる。
グラフデータ演算システム14では、複数の計算機ノード506、508、510で変換配備を担当する。演算用ノードと多対多で接続する変換配備ノードに変換配備処理が割り振られる。
グラフデータ演算システム14の振り分け用ノード126は、ラウンドロビンで処理を分配する。グラフデータ演算システム14は、図6に示されているグラフデータ演算システム13で演算用ノードと変換配備ノードが1対1で対応していたものを、多対多に変更したものである。変換配備用ノード506、508、510の変換配備機構100は、1つのエッジの変換につきLsrc、Ldstを担当する各ノードに要素追加を指示する。
図16はグラフデータ演算システムを構成する計算機、たとえば、変換配備用ノード、演算用ノード、演算用ノードディレクトリサーバ、DNSサーバ、配信用サーバ等の構成の例を示す図である。
このコンピュータ800は、Central Processing Unit(CPU)802、Read Only Memory(ROM)804、及びRandom Access Memory(RAM)806を備えている。コンピュータ800は、さらに、ハードディスク装置808、入力装置810、表示装置812、インタフェース装置814、及び記録媒体駆動装置816を備えている。なお、これらの構成要素はバスライン818を介して接続されており、CPU802の管理の下で各種のデータを相互に授受することができる。
Central Processing Unit(CPU)802は、このコンピュータ800全体の動作を制御する演算処理装置であり、コンピュータ800の制御処理部として機能する。
Read Only Memory(ROM)804は、所定の基本制御プログラムが予め記録されている読み出し専用半導体メモリである。CPU802は、この基本制御プログラムをコンピュータ800の起動時に読み出して実行することにより、このコンピュータ800の各構成要素の動作制御が可能になる。
Random Access Memory(RAM)806は、CPU802が各種の制御プログラムを実行する際に、必要に応じて作業用記憶領域として使用する、随時書き込み読み出し可能な半導体メモリである。
ハードディスク装置808は、CPU802によって実行される各種の制御プログラムや各種のデータを記憶しておく記憶装置である。CPU802は、ハードディスク装置808に記憶されている所定の制御プログラムを読み出して実行することにより、後述する各種の制御処理を行えるようになる。
入力装置810は、例えばマウス装置やキーボード装置であり、情報処理装置のユーザにより操作されると、その操作内容に対応付けられている各種情報の入力を取得し、取得した入力情報をCPU802に送付する。
表示装置812は例えば液晶ディスプレイであり、CPU802から送付される表示データに応じて各種のテキストや画像を表示する。
インタフェース装置814は、このコンピュータ800に接続される各種機器との間での各種情報の授受の管理を行う。
記録媒体駆動装置816は、可搬型記録媒体818に記録されている各種の制御プログラムやデータの読み出しを行う装置である。CPU802は、可搬型記録媒体118に記録されている所定の制御プログラムを、記録媒体駆動装置816を介して読み出して実行することによって、後述する各種の制御処理を行うようにすることもできる。なお、可搬型記録媒体118としては、例えばUSB(Universal Serial Bus)規格のコネクタが備えられているフラッシュメモリ、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disc Read Only Memory)などがある。
このようなコンピュータ800を用いて情報処理装置を構成するには、例えば、上述の各処理部における処理をCPU802に行わせるための制御プログラムを作成する。作成された制御プログラムはハードディスク装置808若しくは可搬型記録媒体820に予め格納しておく。そして、CPU802に所定の指示を与えてこの制御プログラムを読み出させて実行させる。こうすることで、情報処理装置が備えている機能がCPU802により提供される。
<グラフデータ演算処理>
図17〜26を参照して、グラフデータ演算処理について説明する。
図17〜26を参照して、グラフデータ演算処理について説明する。
また、グラフデータ演算システムを構成する計算機が図16に示されているような汎用コンピュータ800である場合には、下記の説明は、そのような処理を行う制御プログラムを定義する。すなわち、以下では、下記に説明する処理を汎用コンピュータに行わせる制御プログラムの説明でもある。
処理を開始すると、S100で変換配備機構100は、変換配備処理を行う。
変換配備処置を図18を参照して説明する。
変換配備処置を図18を参照して説明する。
S200で変換配備機構100は、ダミー変数i、jをリセットする。たとえば、i=j=0とする。
S202で変換配備機構100は、ダミー変数i、jを更新する。たとえば、ダミー変数i、jのいずれかの値を1増やしても良い。ダミー変数i、jは、バーテックスの数を|V|として、共に|V|以下の整数である。
S204で変換配備機構100は、重み行列Cのi行j列の要素をaijで表したときの、aijは非ゼロであるか否かを判定する。もしこの判定の結果が“Yes”、すなわちaijは非ゼロである場合には、処理はS206に進む。もしこの判定の結果が“No”、すなわちaijは非ゼロではない場合には、処理はS202に戻る。
S206で変換配備機構100は、本計算機ノードはバーテックスjの変換を担当しているか否かを判断する。もしこの判定の結果が“Yes”、すなわち本計算機ノードはバーテックスjの変換を担当している場合には、処理はS208に進む。もしこの判定の結果が“No”、すなわち本計算機ノードはバーテックスjの変換を担当していない場合には、処理はS212に進む。
S208で変換配備機構100は、バーテックスjの計算を担当する計算機ノードnjの特定処理を行う。
計算機ノードnjの特定処理について、図19、20を参照して説明する。
図19はノードの特定処理の流れの例を示す図であり、図20はノードの特定処理の流れの別の例を示す図である。
図19はノードの特定処理の流れの例を示す図であり、図20はノードの特定処理の流れの別の例を示す図である。
図19に示されているように、処理が開始されるとS300で変換配備機構100は、演算用ノードディレクトリに問い合わせるなどして、バーテックスの識別子(ID)と担当するノードの識別子(ID)の対応表から、バーテックスiを担当するノードの識別子(ID)とさらに対応するノードのIPアドレスを取得する。
図20に示されているノードの特定処理の流れの別の例では、S400で変換配備機構100は、((「バーテックスの識別子(ID)」−1) mod m)+1を計算する。
次のS402で変換配備機構100は、計算結果をノードの識別子(ID)とし、同時にDNSサーバ等に問い合わせてノードIDとIPアドレスの対応表からノードのIPアドレスを取得する。
図18に戻って、S208の次のS210で変換配備機構100は、計算機ノードnjに対し集合Ldst(j)に(i,(aij,P[i]))を追加するよう指示をする。計算機ノードnjはこれを実施する。処理が終了するとS212に進む。
S212で変換配備機構100は、本計算機ノードはバーテックスiの変換を担当しているか否かを判断する。もしこの判定の結果が“Yes”、すなわち本計算機ノードはバーテックスiの変換を担当している場合には、処理はS214に進む。もしこの判定の結果が“No”、すなわち本計算機ノードはバーテックスiの変換を担当していない場合には、処理はS218に進む。
S214で変換配備機構100は、バーテックスiの計算を担当する計算機ノードniの特定処理を行う。計算機ノードniの特定処理については、図19、20に示されている。
S216で変換配備機構100は、計算機ノードniに対し集合Lsrc(i)に(j,(aij,P[i]))を追加するよう指示をする。計算機ノードniはこれを実施する。処理が終了するとS218に進む。
S218で変換配備機構100は、全てのダミー変数i、jについて計算したか否かを判定する。もしこの判定の結果が“Yes”、すなわち全てのダミー変数i、jについて計算した場合には、処理を終了する。もしこの判定の結果が“No”、すなわち全てのダミー変数i、jについて計算していない場合には、処理はS202に戻る。ダミー変数i、jは、バーテックスの数を|V|として、共に|V|以下の整数である。
図17に戻って、S100の次のS102で変換配備機構100は、各計算機ノードに演算で必要な固定値パラメタを配備する。図3に示されているシステム10では、算出方法を表すデータ102を、たとえば、計算機ノード300の固定値パラメタDB308に送る。
S102の次のS104で変換配備機構100は、演算の指示が来るまで待つ。演算の指示が来たらS105に進む。
S106で変換配備機構100は、有向グラフ構造が変化したかどうかを判定する。もしこの判定の結果が“Yes”、すなわち有向グラフ構造が変化した場合には、処理はS110に進む。もしこの判定の結果が“No”、すなわち有向グラフ構造が変化していない場合には、処理はS108に進む。
S108でパラメタ計算機構1302は、パラメタ計算処理を行う。本処理が終了すると、処理はS110に進む。
パラメタ計算処理について、図21を参照して説明する。
図21は、バーテックスsからバーテックスdに向かうエッジが増えた場合の処理の例である。図3A〜3Dに示されているような有向グラフの構造の変化に対しても、同様に処理を行うことができる。
図21は、バーテックスsからバーテックスdに向かうエッジが増えた場合の処理の例である。図3A〜3Dに示されているような有向グラフの構造の変化に対しても、同様に処理を行うことができる。
パラメタ計算処理が開始されるとパラメタ計算機構1302は、S500でバーテックスsの計算を担当する計算機ノードnsの特定処理を行う。
S500の処理は、計算機ノードnsの特定処理については、図19、20に示されている。
S500の次のS502で計算機ノードnsのパラメタ計算機構1302は、ダミー変数iをリセットする。たとえばi=0とする。ここでのダミー変数iの値は0以上の整数であり、最大値は集合Ldst(s)∪{(e,(∞,P[d]))}の要素数である。本ステップの処理を終えると、処理はS504に進む。
S504でパラメタ計算機構1302は、ダミー変数iを更新する。たとえば、iの値を一つ増やす。本ステップの処理を終えると、処理はS506に進む。
S506で計算機ノードnsのパラメタ計算機構1302は、ノードnsで集合Ldst(s)∪{(e、(∞、P[d]))}の第i番目要素タプル(e,(r,q))について、エッジパラメタを計算して新エッジパラメタ値r’を得る。ここで、rは更新前のエッジaesに付与されたエッジ重みである。これらの処理は、図8〜13を参照して説明したのでここでは繰り返さない。本ステップの処理を終えると、処理はS508に進む。
S508でパラメタ計算機構1302は、更新されたパラメタr’が更新前のパラメタrと異なっているか(r’≠r)どうかを判定する。もしこの判定の結果が“Yes”、すなわちパラメタ値が変化した場合には、処理はS510に進む。もしこの判定の結果が“No”、すなわちパラメタ値が変化していない場合には、処理はS512に進む。
S510で計算機ノードnsのパラメタ計算機構1302は、ToDoリストLにタプル(e,(r’ ,q))を追加する。本ステップの処理を終えると、処理はS512に進む。
S512で計算機ノードnsのパラメタ計算機構1302は、集合Ldst(s)∪{(e,(∞,P[d]))}のすべての要素タプル(e,(r,q))について処理したか、つまり全てのiについて処理をしたかどうかを判定する。もしこの判定の結果が“Yes”、すなわちTodoリストLの全ての要素について処理した場合には、処理S514に進む。もしこの判定の結果が“No”、すなわち集合Ldst(s)∪{(e,(∞,P[d]))}の全ての要素タプルについて処理していない場合には、処理はS504に戻る。
S514で計算機ノードnsのパラメタ計算機構1302は、ダミー変数iをリセットする。たとえばi=0とする。ここでのダミー変数iは直前の同名のダミー変数iとは異なり、バーテックスの数を|V|として、|V|以下の整数である。本ステップの処理を終えると、処理はS516に進む。
S516で計算機ノードnsのパラメタ計算機構1302は、ダミー変数iを更新する。たとえば、iの値を一つ増やす。
S516の次のS518で計算機ノードnsのパラメタ計算機構1302は、ToDoリストLのi番目の要素タプルの第一要素を「e」としたときLdst(s)内に第1要素が「e」のタプル(e,(r,q))があるかどうかを判定する。もしこの判定の結果が“Yes”、すなわちToDoリストLのi番目の要素タプルと第一要素が同一のタプルがLdst(s)内にある場合には、処理はS520に進む。もしこの判定の結果が“No”、すなわちToDoリストLのi番目の要素タプルと第一要素が同一のタプルがLdst(s)内にない場合には、処理はS524に進む。
S520で計算機ノードnsのパラメタ計算機構1302は、Ldst(s)中のタプル(e,(r,q))をタプル(e,(r’ ,q))に変更する。本ステップの処理を終えると、処理はS522に進む。
S522で計算機ノードnsのパラメタ計算機構1302は、自身のパラメタ伝播機構1318に、ノードeを担当するノードneに対して、更新情報としてタプル(s,(r’ ,q))を伝え、変更されたパラメタr’をノードneのLsrcに反映させる。
本ステップの処理を図25〜26を参照してより詳細に説明する。
図25はパラメタ伝播処理の流れの例を示す図である。
図25はパラメタ伝播処理の流れの例を示す図である。
処理が開始されると、S900でパラメタ伝播機構1318は、点eを担当するノードneを特定する。本ステップの処理が終了すると、処理はS902に進む。
S902でパラメタ伝播機構1318は、点eを担当するノードneが現在処理中のノードであるか否かを判定する。もし、判定の結果が“YES”、すなわち点eを担当するノードneが現在処理中のノードである場合には、処理はS904に進む。もし、判定の結果が“NO”、すなわち点eを担当するノードneが現在処理中のノードではない場合は、処理はS906に進む。
S904ではタプル(s,(e,r’))による更新処理を行う。
本処理について、図26を参照して説明する。
本処理について、図26を参照して説明する。
図26は、タプル(s,(e,r’))による更新処理の流れの例を示す図である。
処理が開始されるとS1002でパラメタ伝播機構1318は、Lsrc(e)に第1要素がsであるタプル((s,(e,r))があれば削除する。
処理が開始されるとS1002でパラメタ伝播機構1318は、Lsrc(e)に第1要素がsであるタプル((s,(e,r))があれば削除する。
次のS1004でパラメタ伝播機構1318は、Lsrc(e)に(s,(e,r’))を追加する。本ステップの処理が終了すると、図25に戻り、パラメタ伝播処理は終了する。
図25に戻り、S906でパラメタ伝播機構1318は、ノードneにパラメタ更新情報として(s,(e,r’))を送る。
次のS908でノードneのパラメタ伝播機構1318は、タプル(s,(e,r’))による更新処理を行う。この処理の例は図26に示されており、既に説明したのでここでは繰り返さない。本処理が終了すると、パラメタ伝播処理は終了する。
S522の処理を終えると、処理はS524に進む。
S524で計算機ノードnsのパラメタ計算機構1302は、TodoリストLの全ての要素について処理したか、つまり全てのiについて処理をしたかどうかを判定する。もしこの判定の結果が“Yes”、すなわちTodoリストLの全ての要素について処理した場合には、処理を終了しS112に進む。もしこの判定の結果が“No”、すなわちTodoリストLの全ての要素について処理していない場合には、処理はS516に戻る。
S524で計算機ノードnsのパラメタ計算機構1302は、TodoリストLの全ての要素について処理したか、つまり全てのiについて処理をしたかどうかを判定する。もしこの判定の結果が“Yes”、すなわちTodoリストLの全ての要素について処理した場合には、処理を終了しS112に進む。もしこの判定の結果が“No”、すなわちTodoリストLの全ての要素について処理していない場合には、処理はS516に戻る。
図17に戻って、S110で計算ノードの演算機構、たとえば計算機ノード300の演算機構302は、各計算機ノードに割り当てられた計算を行う計算処理と、計算結果の伝播を行う伝播処理を含むノード処理を実行する。本ステップの処理が終わると、処理はS112に進む。
図22は、ノード処理の流れの例を示す図である。
図22に示されているように、処理が開始されるとS600で演算機構302は計算処理を行う。
図22に示されているように、処理が開始されるとS600で演算機構302は計算処理を行う。
計算処理について、図23を参照して説明する。
図23は計算処理の流れの例を示す図である。
図23は計算処理の流れの例を示す図である。
処理が開始されるとS700で演算機構302は、ダミー変数iをリセットする。たとえば、i=0とする。ダミー変数iは、バーテックスの数を|V|として、|V|以下の整数である。
次のS702で演算機構302は、ダミー変数iを更新する。たとえば、ダミー変数iの値を1増やしても良い。
次のS704で演算機構302は、バーテックスiの特徴値P[i]に、定数b[i]を代入する。
次のS706で演算機構302は、ダミー変数jをリセットする。たとえばj=0とする。jは0以上の整数であり、最大値はLsrc(i)の要素数である。
次のS708で演算機構302は、jを更新する。例えばダミー変数jの値を1増やしても良い。本ステップの処理を終了すると、処理はS710に進む。
S712で演算機構302は、Lsrc(i)が要素として持つタプルの全てについて処理をしたかを判定する。もしこの判定の結果が“Yes”、すなわちLsrc(i)の全ての要素について処理をした場合には、S714に進む。もしこの判定の結果が“No”、すなわちLsrc(i)の全ての要素について処理をしていない場合には、処理はS708に戻る。
S714で演算機構302は、全てのiについて処理をしたかを判定する。もしこの判定の結果が“Yes”、すなわち全てのiについて処理をした場合には、処理を終了する。もしこの判定の結果が“No”、すなわち全てのiについて処理をしていない場合には、処理はS702に戻る。
図22に戻って、S600の計算処理が終了すると、S602で伝播機構318は、伝播処理を行う。
伝播処理について図24〜図26を参照して説明する。
図24は、伝播処理の流れの例を示す図である。
図24は、伝播処理の流れの例を示す図である。
処理が開始されると、S800で伝播機構318は、ダミー変数jをリセットする。たとえば、j=0とする。ダミー変数jはバーテックスの数を|V|として、|V|以下の整数である。
次のS802で伝播機構318は、ダミー変数jを更新する。たとえば、ダミー変数jの値を1増やしても良い。
S804で伝播機構318は、バーテックスjにおいて、P[j]≠Po[j]かどうかを判定する。もしこの判定の結果が“Yes”、すなわちP[j]≠Po[j]の場合には、処理はS806に進む。もしこの判定の結果が“No”、すなわちP[j]≠Po[j]ではない場合には、処理はS802に戻る。
以降、P[j]の値をvnewで表して参照する。
S806で伝播機構318は、直前の計算結果であるPo[j]をP[j]=vnewに更新する。本ステップの処理を終了すると、処理はS808に進む。
S806で伝播機構318は、直前の計算結果であるPo[j]をP[j]=vnewに更新する。本ステップの処理を終了すると、処理はS808に進む。
S808で伝播機構318は、Lsrcの要素(j、r)のrにバーテックス特徴値P[j]が含まれるか否かを判定する。もしこの判定の結果が“Yes”、すなわちLsrcの要素(j、r)のrにバーテックス特徴値P[j]が含まれる場合には、処理はS810に進む。もしこの判定の結果が“No”、すなわちLsrcの要素(j、r)のrにバーテックス特徴値P[j]が含まれない場合には、処理はS824に進む。
S810で伝播機構318は、ダミー変数kをリセットする。
次のS812で伝播機構318は、kを更新する。たとえば、kの値を1つ増やす。Ldst(j)のk番目の要素をタプル(i,r’)で表す。
次のS812で伝播機構318は、kを更新する。たとえば、kの値を1つ増やす。Ldst(j)のk番目の要素をタプル(i,r’)で表す。
次のS814で伝播機構318は、バーテックスiの計算を担当する計算機ノードniの特定処理を行う。計算機ノードniの特定処理については、図19、20に示されているので、ここでは繰り返さない。本ステップの処理を終了すると、処理はS816に進む。
S816で伝播機構318は、計算機ノードniは自ノードかどうかを判定する。もしこの判定の結果が“Yes”、すなわち計算機ノードniは自ノードである場合には、処理はS818に進む。もしこの判定の結果が“No”、すなわち計算機ノードniは自ノードではない場合には、処理はS820に進む。
S818で伝播機構318は、Lsrc(i)の要素(j,r)のrに含まれるバーテックス特徴値P[j]、たとえば、自バーテックス演算前情報DBに格納されている値をvnewに更新する。本ステップの処理を終了すると、処理はS822に進む。
S820で伝播機構318は、計算機ノードniに更新情報としてjの値とvnewを送る。そして、計算機ノードniは、Lsrc(i)の要素(j,、r)のrに含まれるバーテックス特徴値P[j]、たとえば計算機ノードniの他バーテックス演算前情報DBに格納されている値をvnewに更新する。本ステップの処理を終了すると、処理はS822に進む。
S822で伝播機構318は、全てのkについて処理をしたか否かを判定する。この判定の結果が“Yes”、すなわちLdst(j)の全ての要素について処理をした場合には、処理はS824に進む。もしこの判定の結果が“No”、すなわちLdst(j)の全ての要素について処理をしていない場合には、処理はS812に進む。
S824で伝播機構318は、S808〜S822における「Lsrc」と「Ldst」を入れ替えた処理を行う。本ステップの処理を終了すると、処理はS826に進む。
S822で伝播機構318は、全てのjについて処理をしたか否かを判定する。この判定の結果が“Yes”、すなわち全てのjについて処理をした場合には、処理を終了する。もしこの判定の結果が“No”、すなわち全てのjについて処理をしていない場合には、処理はS802に戻る。
図17に戻ってS110の処理が終了すると、処理はS112に進む。
S112で演算機構302は、特徴値の計算状況が終了条件に合致するか否かを判定する。たとえば、特徴値を冪乗法で計算する場合、終了条件は、ベクトルPm−1とベクトルPmの差が所定の条件を満たすことであっても良い。また、繰り返しによって特徴値を計算する方法を用いる場合、所定の繰り返し回数を行う、という終了条件であっても良い。この判定の結果が”YES”、すなわち特徴値の計算状況が終了条件に合致する場合は、S114に進む。また、の判定の結果が”NO”、すなわち特徴値の計算状況が終了条件に合致しない場合は、S110に戻る。
S112で演算機構302は、特徴値の計算状況が終了条件に合致するか否かを判定する。たとえば、特徴値を冪乗法で計算する場合、終了条件は、ベクトルPm−1とベクトルPmの差が所定の条件を満たすことであっても良い。また、繰り返しによって特徴値を計算する方法を用いる場合、所定の繰り返し回数を行う、という終了条件であっても良い。この判定の結果が”YES”、すなわち特徴値の計算状況が終了条件に合致する場合は、S114に進む。また、の判定の結果が”NO”、すなわち特徴値の計算状況が終了条件に合致しない場合は、S110に戻る。
S114で演算機構302は、外部から終了の指示があるか否かを判定する。この判定の結果が”YES”、すなわち外部から終了の指示がある場合は、処理を終了する。また、の判定の結果が”NO”、すなわち外部から終了の指示がない場合は、S106に戻る。
上記のような処理を行うことで、重み行列Cに相当する情報を、接続行列Qに相当する情報に変換し、エッジの属性値を付加したデータ構造を用い、接続行列Qの形式のデータに対する演算アルゴリズムを用いて、各計算機ノードに送るデータを必要最低限に抑えることができる。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算方法であって、
前記重み行列を、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックス付与された前記特徴値に関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックス付与された前記特徴値に関する第2の情報に分解することと、
前記複数のバーテックスの個数が変化したとき、前記第1の情報および前記第2の情報を更新し、更新された第1の情報および更新された第2の情報を得ることと、
前記第1の計算機ノードが、前記更新された第2の情報を参照して演算を行い、第1のバーテックスに付与された特徴値の更新値を求めることと、
前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新値を前記第2の計算機ノードに送ること、
を含むグラフデータ演算方法。
(付記2)
前記重み行列を分解することは、第1の計算機ノードにおいて、前記第1の計算機ノードが担当するバーテックスを始点とする第3のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第3の情報と、前記第1の計算機ノードが担当するバーテックスに入ってくる第4のエッジの始点である前記複数のバーテックスの一つである参照元バーテックスと前記第2のエッジに付与されている重みと前記第2のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第4の情報に分解する、付記1に記載のグラフデータ演算方法。
(付記3)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスと前記複数の計算機ノードの対応を示す表を参照して特定すること、
を含む付記1または2に記載のグラフデータ演算方法。
(付記4)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスの識別子と前記複数の計算機ノードの対応を示す表を参照して特定すること、
を含む付記1または2に記載のグラフデータ演算方法。
(付記5)
複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算システムであって、
前記重み行列を、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックス付与された前記特徴値に関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックス付与された前記特徴値に関する第2の情報に分解する変換配備機構と、
前記複数のバーテックスの個数が変化したとき、前記第1の情報および前記第2の情報を更新し、更新された第1の情報および更新された第2の情報を得るグラフ構造変化通知機構と、
前記グラフ構造変化通知機構が得た前記更新された第1の情報および前記更新された第2の情報を用いて、前記第1の計算機ノードが、第1のバーテックスに付与された前記特徴値を更新するために、前記更新された第2の情報を参照して演算を行い、更新された第1のバーテックスに付与された特徴値を求める演算機構と、
前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新された第1のバーテックスに付与された前記特徴値を前記第2の計算機ノードに送る伝播機構、
を含むグラフデータ演算システム。
(付記6)
前記変換配備機構は、第1の計算機ノードにおいて、前記第1の計算機ノードが担当するバーテックスを始点とする第3のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第3の情報と、前記第1の計算機ノードが担当するバーテックスに入ってくる第4のエッジの始点である前記複数のバーテックスの一つである参照元バーテックスと前記第2のエッジに付与されている重みと前記第2のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第4の情報に分解する、付記5に記載のグラフデータ演算システム。
(付記7)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスと前記複数の計算機ノードの対応を示す表を参照して特定する演算用ノードディレクトリサーバ、
を含む付記5または6に記載のグラフデータ演算システム。
(付記8)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスの識別子と前記複数の計算機ノードの対応を示す表を参照して特定するDNSサーバ、
を含む付記1または2に記載のグラフデータ演算システム。
(付記9)
複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算プログラムであって、
前記重み行列を、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックス付与された前記特徴値に関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックス付与された前記特徴値に関する第2の情報に分解させ、
前記複数のバーテックスの個数が変化したとき、前記第1の情報および前記第2の情報を更新し、更新された第1の情報および更新された第2の情報を得させと、
前記第1の計算機ノードが、第1のバーテックスに付与された前記特徴値を更新するために、前記更新された第2の情報を参照して演算を行い、更新された第1のバーテックスに付与された特徴値を求めさせと、
前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新された第1のバーテックスに付与された前記特徴値を前記第2の計算機ノードに送らせること、
処理をコンピュータに実行させることを特徴とするグラフデータ演算プログラム。
(付記10)
前記重み行列を分解することは、第1の計算機ノードにおいて、前記第1の計算機ノードが担当するバーテックスを始点とする第3のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第3の情報と、前記第1の計算機ノードが担当するバーテックスに入ってくる第4のエッジの始点である前記複数のバーテックスの一つである参照元バーテックスと前記第2のエッジに付与されている重みと前記第2のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第4の情報に分解する処理をコンピュータに実行させることを特徴とする、付記9に記載のグラフデータ演算プログラム。
(付記11)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスと前記複数の計算機ノードの対応を示す表を参照して特定させる、
処理をコンピュータに実行させることを特徴とする、付記9または10に記載のグラフデータ演算プログラム。
(付記12)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスの識別子と前記複数の計算機ノードの対応を示す表を参照して特定させる、
処理をコンピュータに実行させることを特徴とする、付記9または10に記載のグラフデータ演算プログラム。
(付記1)
複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算方法であって、
前記重み行列を、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックス付与された前記特徴値に関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックス付与された前記特徴値に関する第2の情報に分解することと、
前記複数のバーテックスの個数が変化したとき、前記第1の情報および前記第2の情報を更新し、更新された第1の情報および更新された第2の情報を得ることと、
前記第1の計算機ノードが、前記更新された第2の情報を参照して演算を行い、第1のバーテックスに付与された特徴値の更新値を求めることと、
前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新値を前記第2の計算機ノードに送ること、
を含むグラフデータ演算方法。
(付記2)
前記重み行列を分解することは、第1の計算機ノードにおいて、前記第1の計算機ノードが担当するバーテックスを始点とする第3のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第3の情報と、前記第1の計算機ノードが担当するバーテックスに入ってくる第4のエッジの始点である前記複数のバーテックスの一つである参照元バーテックスと前記第2のエッジに付与されている重みと前記第2のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第4の情報に分解する、付記1に記載のグラフデータ演算方法。
(付記3)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスと前記複数の計算機ノードの対応を示す表を参照して特定すること、
を含む付記1または2に記載のグラフデータ演算方法。
(付記4)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスの識別子と前記複数の計算機ノードの対応を示す表を参照して特定すること、
を含む付記1または2に記載のグラフデータ演算方法。
(付記5)
複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算システムであって、
前記重み行列を、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックス付与された前記特徴値に関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックス付与された前記特徴値に関する第2の情報に分解する変換配備機構と、
前記複数のバーテックスの個数が変化したとき、前記第1の情報および前記第2の情報を更新し、更新された第1の情報および更新された第2の情報を得るグラフ構造変化通知機構と、
前記グラフ構造変化通知機構が得た前記更新された第1の情報および前記更新された第2の情報を用いて、前記第1の計算機ノードが、第1のバーテックスに付与された前記特徴値を更新するために、前記更新された第2の情報を参照して演算を行い、更新された第1のバーテックスに付与された特徴値を求める演算機構と、
前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新された第1のバーテックスに付与された前記特徴値を前記第2の計算機ノードに送る伝播機構、
を含むグラフデータ演算システム。
(付記6)
前記変換配備機構は、第1の計算機ノードにおいて、前記第1の計算機ノードが担当するバーテックスを始点とする第3のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第3の情報と、前記第1の計算機ノードが担当するバーテックスに入ってくる第4のエッジの始点である前記複数のバーテックスの一つである参照元バーテックスと前記第2のエッジに付与されている重みと前記第2のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第4の情報に分解する、付記5に記載のグラフデータ演算システム。
(付記7)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスと前記複数の計算機ノードの対応を示す表を参照して特定する演算用ノードディレクトリサーバ、
を含む付記5または6に記載のグラフデータ演算システム。
(付記8)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスの識別子と前記複数の計算機ノードの対応を示す表を参照して特定するDNSサーバ、
を含む付記1または2に記載のグラフデータ演算システム。
(付記9)
複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算プログラムであって、
前記重み行列を、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックス付与された前記特徴値に関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックス付与された前記特徴値に関する第2の情報に分解させ、
前記複数のバーテックスの個数が変化したとき、前記第1の情報および前記第2の情報を更新し、更新された第1の情報および更新された第2の情報を得させと、
前記第1の計算機ノードが、第1のバーテックスに付与された前記特徴値を更新するために、前記更新された第2の情報を参照して演算を行い、更新された第1のバーテックスに付与された特徴値を求めさせと、
前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新された第1のバーテックスに付与された前記特徴値を前記第2の計算機ノードに送らせること、
処理をコンピュータに実行させることを特徴とするグラフデータ演算プログラム。
(付記10)
前記重み行列を分解することは、第1の計算機ノードにおいて、前記第1の計算機ノードが担当するバーテックスを始点とする第3のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第3の情報と、前記第1の計算機ノードが担当するバーテックスに入ってくる第4のエッジの始点である前記複数のバーテックスの一つである参照元バーテックスと前記第2のエッジに付与されている重みと前記第2のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第4の情報に分解する処理をコンピュータに実行させることを特徴とする、付記9に記載のグラフデータ演算プログラム。
(付記11)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスと前記複数の計算機ノードの対応を示す表を参照して特定させる、
処理をコンピュータに実行させることを特徴とする、付記9または10に記載のグラフデータ演算プログラム。
(付記12)
さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスの識別子と前記複数の計算機ノードの対応を示す表を参照して特定させる、
処理をコンピュータに実行させることを特徴とする、付記9または10に記載のグラフデータ演算プログラム。
100 変換配備機構
300、350、360 計算機ノード(演算用ノード)
302 演算機構
316 受信機構
318 伝播機構
300、350、360 計算機ノード(演算用ノード)
302 演算機構
316 受信機構
318 伝播機構
Claims (6)
- 複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算方法であって、
前記重み行列を、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックス付与された前記特徴値に関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックス付与された前記特徴値に関する第2の情報に分解することと、
前記複数のバーテックスの個数が変化したとき、前記第1の情報および前記第2の情報を更新し、更新された第1の情報および更新された第2の情報を得ることと、
前記第1の計算機ノードが、第1のバーテックスに付与された前記特徴値を更新するために、前記更新された第2の情報を参照して演算を行い、更新された第1のバーテックスに付与された特徴値を求めることと、
前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新された第1のバーテックスに付与された前記特徴値を前記第2の計算機ノードに送ること、
を含むグラフデータ演算方法。 - 前記重み行列を分解することは、第1の計算機ノードにおいて、前記第1の計算機ノードが担当するバーテックスを始点とする第3のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第3の情報と、前記第1の計算機ノードが担当するバーテックスに入ってくる第4のエッジの始点である前記複数のバーテックスの一つである参照元バーテックスと前記第2のエッジに付与されている重みと前記第2のエッジの始点である前記複数のバーテックスの一つ付与された前記特徴値に関する第4の情報に分解する、請求項1に記載のグラフデータ演算方法。
- さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスと前記複数の計算機ノードの対応を示す表を参照して特定すること、
を含む請求項1または2に記載のグラフデータ演算方法。 - さらに、
前記複数のバーテックスの一つを担当する前記複数の計算機ノードの一つを、前記複数のバーテックスの識別子と前記複数の計算機ノードの対応を示す表を参照して特定すること、
を含む請求項1または2に記載のグラフデータ演算方法。 - 複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算システムであって、
前記複数のバーテックスの個数が変化したとき、前記重み行列から得られる、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックス付与された前記特徴値に関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックス付与された前記特徴値に関する第2の情報を更新し、更新された第1の情報および更新された第2の情報を得るグラフ構造変化通知機構と、
前記グラフ構造変化通知機構が得た前記更新された第1の情報および前記更新された第2の情報を用いて、前記第1の計算機ノードが、第1のバーテックスに付与された前記特徴値を更新するために、前記更新された第2の情報を参照して演算を行い、更新された第1のバーテックスに付与された特徴値を求める演算機構と、
前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新された第1のバーテックスに付与された前記特徴値を前記第2の計算機ノードに送る伝播機構、
を含むグラフデータ演算システム。 - 複数のバーテックスの各々に付与される特徴値を要素とするベクトルである特徴値ベクトルを、バーテックス間を結ぶエッジの向きと前記エッジに付与される重みに関する情報を含む重み行列を用いて、少なくとも第1の計算機ノードおよび第2の計算機ノードを含む複数の計算機ノードによって計算するグラフデータ演算プログラムであって、
前記重み行列を、前記複数のバーテックスの一つである第1のバーテックスから出ている第1のエッジの終点のバーテックスである宛先バーテックスと前記第1のエッジに付与されている重みと前記第1のバーテックス付与された前記特徴値に関する第1の情報と、前記複数のバーテックスの一つである第2のバーテックスに入ってくる第2のエッジの始点のバーテックスである参照元バーテックスと前記第2のエッジに付与されている重みと前記参照元バーテックス付与された前記特徴値に関する第2の情報に分解させ、
前記複数のバーテックスの個数が変化したとき、前記第1の情報および前記第2の情報を更新し、更新された第1の情報および更新された第2の情報を得させと、
前記第1の計算機ノードが、第1のバーテックスに付与された前記特徴値を更新するために、前記更新された第2の情報を参照して演算を行い、更新された第1のバーテックスに付与された特徴値を求めさせと、
前記更新された第1の情報に前記第2の計算機ノードが担当する第2のバーテックスが含まれている場合、前記第1の計算機ノードが、前記更新された第1のバーテックスに付与された前記特徴値を前記第2の計算機ノードに送らせること、
処理をコンピュータに実行させることを特徴とするグラフデータ演算プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014099423A JP2015215826A (ja) | 2014-05-13 | 2014-05-13 | グラフデータ演算方法、グラフデータ演算システムおよびグラフデータ演算プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014099423A JP2015215826A (ja) | 2014-05-13 | 2014-05-13 | グラフデータ演算方法、グラフデータ演算システムおよびグラフデータ演算プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015215826A true JP2015215826A (ja) | 2015-12-03 |
Family
ID=54752636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014099423A Pending JP2015215826A (ja) | 2014-05-13 | 2014-05-13 | グラフデータ演算方法、グラフデータ演算システムおよびグラフデータ演算プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015215826A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180077717A (ko) * | 2016-12-29 | 2018-07-09 | 서울대학교산학협력단 | 정점 분류 장치 및 정점 분류 방법 |
EP3664374A1 (en) * | 2018-12-06 | 2020-06-10 | Fujitsu Limited | Data stream processing method and data stream processing system |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013145001A1 (ja) * | 2012-03-28 | 2013-10-03 | 株式会社日立製作所 | 情報処理システムおよびグラフ処理方法 |
-
2014
- 2014-05-13 JP JP2014099423A patent/JP2015215826A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013145001A1 (ja) * | 2012-03-28 | 2013-10-03 | 株式会社日立製作所 | 情報処理システムおよびグラフ処理方法 |
Non-Patent Citations (1)
Title |
---|
雁瀬 優 他: "インクリメンタル大規模グラフストリーム処理系の実装と評価", 情報処理学会 シンポジウム 先進的計算基盤システムシンポジウム(SACSIS) 2012, JPN6017043882, 9 May 2012 (2012-05-09), JP, pages 323〜332 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180077717A (ko) * | 2016-12-29 | 2018-07-09 | 서울대학교산학협력단 | 정점 분류 장치 및 정점 분류 방법 |
KR101924832B1 (ko) * | 2016-12-29 | 2018-12-05 | 서울대학교 산학협력단 | 정점 분류 장치 및 정점 분류 방법 |
EP3664374A1 (en) * | 2018-12-06 | 2020-06-10 | Fujitsu Limited | Data stream processing method and data stream processing system |
US11294717B2 (en) | 2018-12-06 | 2022-04-05 | Fujitsu Limited | Multiple stage data stream processing method and data stream processing system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9922051B2 (en) | Image-based faceted system and method | |
EP2849099B1 (en) | A computer-implemented method for designing an industrial product modeled with a binary tree. | |
WO2017117951A1 (zh) | 一种虚拟映射方法及装置 | |
JP6508661B2 (ja) | データ処理システム、計算ノードおよびデータ処理方法 | |
Regis | Multi-objective constrained black-box optimization using radial basis function surrogates | |
CN112513886B (zh) | 信息处理方法、信息处理装置和信息处理程序 | |
KR20220054861A (ko) | 신경망 모델의 트레이닝 방법 및 관련 제품 | |
WO2017076296A1 (zh) | 处理图数据的方法和装置 | |
US20210124860A1 (en) | High-throughput computational material simulation optimisation method and apparatus based on time prediction | |
WO2023045149A1 (zh) | 图像融合方法、装置、电子设备和存储介质 | |
JP6558374B2 (ja) | スケール数推定装置、スケール数管理システム、スケール数推定方法、スケール数管理方法、および、コンピュータ・プログラム | |
US20190229997A1 (en) | Network Distance Prediction Method and Apparatus | |
Fischer et al. | Generating virtual network embedding problems with guaranteed solutions | |
JP2013110699A (ja) | ネットワーク設計装置 | |
Mali et al. | Shortest path evaluation in wireless network using fuzzy logic | |
Mishra et al. | Mathematical analysis of schema survival for genetic algorithms having dual mutation | |
JP2015215826A (ja) | グラフデータ演算方法、グラフデータ演算システムおよびグラフデータ演算プログラム | |
JP2009284271A (ja) | ネットワーク経路選択方法および通信システム | |
JP5249904B2 (ja) | マルチエージェントシステムを用いた候補トポロジ生成方法とトポロジ生成方法およびトポロジ生成システムならびにプログラム | |
CN108924053B (zh) | 用于多路径路由的多条部分不相交最短路径快速寻找方法 | |
Kasabova et al. | On modeling the psychology of wireless node interactions in the context of internet of things | |
JP6992688B2 (ja) | 処理装置、方法、及びプログラム | |
CN110609744B (zh) | 处理计算任务的方法、设备和计算机程序产品 | |
Li et al. | Identifying highly influential nodes in multilayer networks based on global propagation | |
JP2015106374A (ja) | グラフデータ演算方法、システムおよびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171115 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20171121 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20180911 |