Я пытаюсь реализовать алгоритм ранга страницы в R, используя следующие шаги:страница реализации ранга алго в R
Загрузить образец графа, как этот один:
0 1 0 2 0 3 1 2 1 5 2 0 2 4 3 1 3 0 3 4 4 1 4 5 5 2 5 3
Создать матрица смежности из этого графика
- Создание цепи Маркова (матрица перехода)
- Найти стационарное распределение и нормализовать это
Ниже приведен код, который выполнить все эти шаги:
g = read.graph(x)
a = get.adjacency(g)
markov = a/rowSums(a)
e = eigen(t(markov))
v <- e$vec[,1]
normalized <- v/sum(v)
, когда я сравнить вектор из нормализованного объекта к вектору производимого page.rank (г) для данного конкретного графа они в значительной степени совпадают с незначительными различиями. Однако, когда я пробую это на этом графике:
0 1
0 2
0 3
1 2
1 5
2 0
2 4
3 1
3 0
3 4
4 1
4 5
5 2
5 3
6 1
6 2
6 5
6 0
7 3
7 4
7 6
7 7
7 1
8 2
8 5
9 8
9 7
9 1
9 5
10 2
10 3
10 9
Разница огромная!
Каждый имеет объяснение этому, или альтернативную реализацию для этого алгоритма в R.