我想要一个LeaderRank算法的实现

有没有实施LeaderRank的人?我尝试用Python对其进行编程,但没有结果-有人可以帮助我吗?

这是我尝试的代码:

def leaderrank(G):

    # Nombre de nœuds
    num_nodes = G.number_of_nodes()
    nodes = G.nodes()
    # Ajouter le nœuds au réseau et se connecter à tous les nœuds
    G.add_node(0)
    for node in nodes:
        G.add_edge(0, node)
    # Initialisation de la valeur LR
    LR = dict.fromkeys(nodes, 1.0)
    LR[0] = 0.0
    # Itération pour que la condition d'arrêt soit remplie
    while True:
        tempLR = {}
        for node1 in G.nodes():
            s = 0.0
            for node2 in G.nodes():
                if node2 in G.neighbors(node1):
                    s += 1.0 / G.degree([node2])[node2] * LR[node2]
            tempLR[node1] = s
        # Conditions de résiliation : pas de changement de la valeur du LR
        error = 0.0
        for n in tempLR.keys():
            error += abs(tempLR[n] - LR[n])

        if error == 0.0:

            break
        LR = tempLR
    # La valeur LR du nœud g est divisée en parts égales entre les autres nœuds et le nœud est supprimé.
    avg = LR[0] / num_nodes
    LR.pop(0)
    for k in LR.keys():
        LR[k] += avg

    return LR
评论