Я разрабатываю семантическое веб-приложение и использую библиотеку Jung для применения некоторых вычислений графиков, таких как близость, междуность и т. Д. Я смог найти значение междоузлия для каждого узла в моем rdf и нормализованном это тоже. Однако, это не тот случай с ClosenessCentrality как я получил NaN (не число) оценка для некоторого nodes.Below мой код:Расчет центральной близости с помощью Jung
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 балла за некоторые узлы. Я чувствую, что есть ошибка в реализации алгоритма ClosenessCentrality, поскольку я получил NaN. Любые объяснения? Я делаю что-то неправильно ?
Спасибо за помощь
Вы проверяли значения близости до нормализации? NaN может быть возвращен, например, для 0/0. –
Спасибо @EyalSchneider, вы правы, но мое значение d, которое я использовал для вычисления нормализации, никогда не получало нулевого значения. Я сделал и все еще получил ту же проблему –