【问题标题】:How can I compute the betweenness centrality of a single node in NetworkX?如何计算 NetworkX 中单个节点的中介中心性?
【发布时间】:2019-04-08 08:59:25
【问题描述】:

我正在尝试为一个非常大的图表中的几个节点计算中间中心性。我一直在使用 NetworkX。问题是它不会让我选择我需要中心性的节点。我尝试修改源代码,但它给了我错误。这是我所做的:

betweenness = dict.fromkeys(G, 0.0)  # b[v]=0 for v in G
if k is None:
    nodes = G
    #nodes = nx.Graph()
    #for indx in range(0, G.size()):
        #if indx in subset:
            #nodes.add_node(allNodes[indx])
else:
    random.seed(seed)
    nodes = random.sample(G.nodes(), k)
for s in nodes:
    n = nodes.nodes().index(s)
    if n in subset:
        # single source shortest paths
        if weight is None:  # use BFS
            S, P, sigma = _single_source_shortest_path_basic(G, s)
        else:  # use Dijkstra's algorithm
            S, P, sigma = _single_source_dijkstra_path_basic(G, s, weight)
            # accumulation
            if endpoints:
                betweenness = _accumulate_endpoints(betweenness, S, P, sigma, s)
            else:
                betweenness = _accumulate_basic(betweenness, S, P, sigma, s)
# rescaling
betweenness = _rescale(betweenness, len(interCommNodes),
                       normalized=normalized,
                       directed=G.is_directed(),
                       k=k)
return betweenness

子集包含原始图中的所有节点索引。虽然“索引”似乎是一个无效函数,但我找不到获取它的方法。

有人可以看看这个吗?

谢谢!

【问题讨论】:

    标签: python networkx


    【解决方案1】:

    恐怕这不会直接解决您的问题。

    您尝试进行此计算的原因可能是为了加快计算速度,因为中间中心性计算速度很慢 (Networkx never finishes calculating Betweenness centrality for 2 mil nodes)。

    让它变慢的部分是它必须找到每对节点之间的最短路径,然后查看通过每个节点的分数是多少。因此,即使您只想知道几个节点的这一点,您仍然必须找到所有最短路径,这是迄今为止计算中最昂贵的部分。因此,提供选项来完成所有这些工作然后只报告几个节点的中心性并没有多大意义。

    如果您确实需要加快计算速度,有一种方法可以进行近似计算。与其获取每一对节点并找到它们之间的最短路径,不如获取所有节点的样本并查看它们之间的最短路径。详情见这个答案:https://stackoverflow.com/a/32468942/2966723

    【讨论】:

    • 如果您真的只对一个值而不是所有值感兴趣怎么办?如何从输出字典中知道哪个值对应哪个节点?
    • 输出字典的键是节点。所以如果你返回的字典是centralities,你想要的节点是my_node,那么它的中心性是centralities[my_node]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多