vers = input() file_text = "text.txt" with open(file_text, 'r') as f: content = f.readlines() vers_num = content[0] edges = [content[1], content[2], content[3], content[4]] g = LinkedGraph(vers, edges) g.print() G = nx.DiGraph() G.add_edges_from([(1, 2), (2, 3), (2, 4), (3, 4)])不用库函数计算G介数中心性
时间: 2023-12-22 10:04:55 浏览: 281
以下是一个计算 G 图介数中心性的示例代码:
```python
# 定义 G 图
G = {
1: [2],
2: [3, 4],
3: [4],
4: []
}
# 计算节点的介数中心性
n = len(G)
bc = {i: 0 for i in G}
for s in G:
# 初始化距离和路径数量
dist = {v: -1 for v in G}
paths = {v: 0 for v in G}
dist[s] = 0
paths[s] = 1
# 计算最短路径和路径数量
queue = [s]
while queue:
v = queue.pop(0)
for w in G[v]:
if dist[w] == -1:
dist[w] = dist[v] + 1
queue.append(w)
if dist[w] == dist[v] + 1:
paths[w] += paths[v]
# 计算节点的介数中心性
for t in G:
if t != s:
if dist[t] == 2:
bc[s] += paths[t]
elif dist[t] > 2:
bc[s] += paths[t] / 2.0
# 输出结果
for node, value in bc.items():
print(f"Node {node}: {value}")
```
在上述示例中,我们使用邻接表表示 G 图,遍历所有节点,以每个节点为源节点计算其介数中心性。计算介数中心性的过程中,我们使用 BFS 算法计算每个节点与其他节点之间的最短路径和路径数量。最后,我们根据节点与其他节点之间的距离和路径数量计算节点的介数中心性。
阅读全文