0

私はセマンティック Web アプリケーションを開発しており、Jung ライブラリを使用して、近さ、中間性などのグラフ計算を適用しています。rdf の各ノードの中間値を見つけて、それも正規化することができました。ただし、これは ClosenessCentrality には当てはまりません。一部のノードで NaN (数値ではない) スコアを取得したためです。以下は私のコードです。

int n =  graph.getVertexCount();// number of vertex 

double d = (double)(n-1)*(n-2)/2.0d; // this is to normalize the node value 

System.out.println("Applying ClosenessCentrality");

ClosenessCentrality<RDFNode, Statement> closeness = new ClosenessCentrality<RDFNode, Statement>(graph);

double[] closenessValues = new double[n];

Collection<RDFNode> closenessVertices = graph.getVertices();

int i = 0;

for (RDFNode vertex : closenessVertices)

closenessValues[i++] = closeness.getVertexScore(vertex) / d; // get the normalized score for each node

for (double score : closenessValues)

System.out.println(score);  // print all values.

そのため、前に述べたように、何らかの理由でいくつかのノードの NAN スコアを取得しました。NaN を取得したため、ClosenessCentrality アルゴリズムの実装にバグがあるように感じます。説明はありますか?私は何か間違っていますか?

助けてくれてありがとう

4

2 に答える 2

0

頂点から他のノードへのエッジがない場合、その頂点の近接中心性は 0 で除算されます。結果は NaN になります。これが、一部のベテックスの NaN を取得する理由です。

于 2014-10-16T15:35:25.237 に答える
0

コードを再確認する必要がありますが、問題の頂点が最短パス上に表示されない場合 (切断された頂点であるか、着信エッジがないため)、近さの中心性の値が何か奇妙なことをする可能性があると確信しています。最初にそれを確認します。

于 2013-12-26T06:55:35.197 に答える