在python中如何计算特殊形式的中间性中心性

2024-09-27 18:07:00 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我使用NetworkX在python中表示图形。其次,this是NetworkX中预定义的中间性中心性。问题是,我们在没有分母的情况下定义了中间性中心性。所以,c_B(v)只是它们通过顶点v的所有短路路径的和。有没有办法修改预定义的介电中心度,这样我就可以得到中间性的“我们”定义了吗?我已经试过了load_centrality,但这个不太合适。在

谨致问候, 马提亚斯


Tags: 路径networkx图形定义情况loadthis中心
1条回答
网友
1楼 · 发布于 2024-09-27 18:07:00

我不认为有一种直接的方法可以从原始函数中获得中间性中心性(至少对我来说不是这样)。获得它的一个简单方法是自己实现一个函数。下面是一个例子。这个例子只有在你的图不是太大的情况下才是有效的(对于一个有120个顶点的图,计算需要大约9秒)。在

import networkx as nx

def bc(G):
    vertices = G.nodes()
    new_bc = {}
    paths = defaultdict(dict)

    # Get shortest paths between all pairs of vertices
    for i, vertex in enumerate(vertices[:-1]):
        for o_vertex in vertices[i+1:]:
            paths[vertex][o_vertex] = [path for path in
                                       nx.all_shortest_paths(G, vertex, o_vertex)]

    for vertex in vertices:
        counter = 0
        for i, vertex1 in enumerate(vertices[:-1]):
            for vertex2 in vertices[i+1:]:
                for path in paths[vertex1][vertex2]:
                    if vertex in path[1:-1]:
                        counter += 1
        new_bc[vertex] = counter

    return new_bc

其中bc[node]如果G中经过node的最短路径数。在

相关问题 更多 >

    热门问题