4.7.3 PageRankアルゴリズムの実行
PageRankは、グラフ内のそれぞれの頂点(ノード)について0
から1
の間のランク値を計算し、その値をdouble
プロパティに格納します。このため、アルゴリズムによって、出力に対してタイプdouble
の頂点プロパティが作成されます。
インメモリー・グラフ・サーバー(PGX)には、頂点プロパティとエッジ・プロパティの2つのタイプがあります。
-
永続プロパティ: データ・ソースからグラフとともにロードされ固定されたディスク上のデータのインメモリー・コピーであるため、永続となるプロパティ。永続プロパティは読取り専用のため変更できず、セッション間で共有されます。
-
一時プロパティ: 値が書き込めるのは一時プロパティのみで、これらはセッションに対してプライベートです。一時プロパティを作成するには、
PgxGraph
オブジェクトでcreateVertexProperty
およびcreateEdgeProperty
をコールするか、プロパティ・オブジェクトでclone()
を使用して既存のプロパティをコピーします。一時プロパティには、アルゴリズムによる計算結果が保持されます。たとえば、PageRankアルゴリズムでは、グラフ内の頂点ごとに0から1の間のランク値を計算し、これらの値を
pg_rank
という一時プロパティに格納します。一時プロパティは、アナリスト・オブジェクトが破棄されると破棄されます。
この例では、PageRank値が最も高い上位3つの頂点を取得します。タイプdouble
の一時頂点プロパティを使用して、計算したPageRank値を保持します。PageRankアルゴリズムでは入力パラメータに次のデフォルト値を使用します。エラー許容値 = 0.001、減衰係数 = 0.85および最大反復数 = 100です。
シェルを使用したPageRankの実行
opg4j> rank = analyst.pagerank(graph, 0.001, 0.85, 100); ==> ... opg4j> rank.getTopKValues(3) ==> 128=0.1402019732468347 ==> 333=0.12002296283541904 ==> 99=0.09708583862990475
Javaを使用したPageRankの実行
import java.util.Map.Entry; import oracle.pgx.api.*; Analyst analyst = session.createAnalyst(); VertexProperty<Integer, Double> rank = analyst.pagerank(graph, 0.001, 0.85, 100); for (Entry<Integer, Double> entry : rank.getTopKValues(3)) { System.out.println(entry.getKey() + "=" + entry.getValue()); }
親トピック: 組込みアルゴリズムの実行