首页 > 解决方案 > 我想要一个 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

标签: pythonnetwork-programmingnetworkxgraphene-pythonpagerank

解决方案


推荐阅读