Files
2026-07-13 13:35:51 +08:00

29 lines
627 B
Python

import dgl
import dgl.function as fn
import networkx as nx
import torch
N = 100
network = nx.erdos_renyi_graph(N, 0.05)
g = dgl.from_networkx(network)
DAMP = 0.85
K = 10
def compute_pagerank(g):
g.ndata["pv"] = torch.ones(N) / N
degrees = g.out_degrees(g.nodes()).type(torch.float32)
for k in range(K):
g.ndata["pv"] = g.ndata["pv"] / degrees
g.update_all(
message_func=fn.copy_u(u="pv", out="m"),
reduce_func=fn.sum(msg="m", out="pv"),
)
g.ndata["pv"] = (1 - DAMP) / N + DAMP * g.ndata["pv"]
return g.ndata["pv"]
pv = compute_pagerank(g)
print(pv)