Расчет PageRanks для редкого направленного графа с высоким процентом долков
-
01-10-2019 - |
Вопрос
Я аспирант в области компьютерных наук в Университете Индиана Блумингтон. Для одного из моих исследовательских проектов я работаю над расчетом PageRanks для направленного графика, который очень редкий и имеет высокий процент домиков.
Потяжек я имею в виду узлы, которые имеют ноль прерывания. Иногда, в графе с большим количеством заболеваний, могут возникнуть ловушки паука. В любом случае, проблема, которую мне интересует, вы узнаете PageRanks в этом сценарии.
И я использую Jung (Java Universal Graph Network) для расчета PageRanks.
Когда я использую нормальную процедуру,
Graph<String, String> jungGraph = new DirectedSparseGraph<String, String>();
PageRank<String, String> pagerank = new PageRank<String,String>(jungGraph, 0.2);
pagerank.setMaxIterations(20);
pagerank.setTolerance(0.000001);
pagerank.evaluate();
Я получаю более или менее те же значения PageRank для всех узлов, когда я четко знаю, что не должно быть так. Поскольку некоторые узлы на графике имеют большое количество исходящих узлов и сильно взаимосвязаны.
Какой предложенный подход в этом случае. Я знаю, что есть этот класс PagerankwithPriors. Должен ли я сначала извлечь сеть бездействующих, рассчитайте их PageRanks для них, а затем распространять свой ранг до смертных знаков, пока они не сходится. В последнем случае все узлы в пониженной сети (прерывают! = 0) будут установлены своими приорами, тогда как поэтапники не будут.
Я здесь ничего не пропускаю?
Решение
Я не думаю PageRankWithPriors
это то, что вы хотите.
Какая версия PageRank
ты используешь? Класс edu.uci.ics.jung.algorithms.importance.PageRank
или edu.uci.ics.jung.algorithms.scoring.PageRank
? Первый был устарел в пользу последнего в бета-версии Юнга 2.0.
Кажется, они по-разному относятся к прерыванию 0 узлов, что может быть вашим вопросом. Первый спецификация говорит:
Вероятность перехода от узла U на узел V равно (1-альфа)1 / readegree (u)] + альфа(1 / | V |)
Если у вас нет по краям в исходном графике, то 0 используется вместо 1 / прерыванного (V).
Это, кажется, неправильно, так как это приводит к потере вероятности (общая вероятность выхода из некоторых методом должна равняться 1, и это не). Последнее делает это по-другому:
Если вершина не имеет исходящих краев, то вероятность получения случайного скачка из этой вершины (по умолчанию) эффективно 1
Это должно сохранить вероятность, которая вы хотите.