2013-12-24 4 views
0

Я разрабатываю семантическое веб-приложение и использую библиотеку 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. Любые объяснения? Я делаю что-то неправильно ?

Спасибо за помощь

+1

Вы проверяли значения близости до нормализации? NaN может быть возвращен, например, для 0/0. –

+0

Спасибо @EyalSchneider, вы правы, но мое значение d, которое я использовал для вычисления нормализации, никогда не получало нулевого значения. Я сделал и все еще получил ту же проблему –

ответ

0

я бы перепроверить код, но я готов поспорить, что значение близости сосредоточенности может сделать что-то странное, если на каком-либо кратчайшем появляется вершина в вопросе (потому что это отключенное вершина или не имеет входящих краев). Сначала я проверил бы это.

+0

спасибо @Joshua O'Madadhain за ответ. Ну, это не так на моем графике. Мой построенный граф, который я использовал для вычисления близости, полностью подключен (вообще нет ОТКЛЮЧЕННОЙ вершины). я убедился при построении графика, что каждая вершина имеет по крайней мере одно ребро внутри и другое ребро. Таким образом, я жду вашего ответа по этому вопросу. Выше мой код, который я использовал для нахождения близости. FYI: один и тот же код работает просто отлично. –

0

Если нет никакого края ни одному другому узлу из вершины, то центральность близости этой вершины будет разделена на 0. И результат NaN. Вот почему вы получаете NaN для некоторого ветекса.

Смежные вопросы