Networkx PageRank — одинаковые рейтинги с разным весом

У меня есть вопрос о PageRank, который может показать, что я плохо его понимаю. Если у меня есть граф с двумя узлами «A» и «B» и ссылка A -> B имеет вес 1,0 и B -> вес A 2,0, не должен ли A ранжироваться выше, потому что его веса в степени выше?

Кажется, что это не тот случай, когда я пробую PageRank из networkx, но я не знаю, почему.

>>> from networkx import nx 
>>> DG = nx.DiGraph()
>>> DG.add_weighted_edges_from([("A", "B", 1.0),("B", "A",2.0)])
>>> pr = nx.pagerank(DG)
>>> pr
{'A': 0.5, 'B': 0.5}

person Sabba    schedule 12.04.2013    source источник


Ответы (1)


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

В вашем примере у случайного пользователя в каждом узле есть только 1 ссылка, по которой нужно перейти, чтобы перейти к другой, поэтому независимо от того, какой вес вы присвоите этим 2 ссылкам, PageRank всегда будет давать (0,5,0,5).

person Moses Xu    schedule 02.07.2013