【发布时间】:2021-05-25 18:52:01
【问题描述】:
我最近开始使用网络 X 并遇到以下问题。
我有一个加权图:
- 节点的大小不同,因为它们代表在办公室工作的人数。
- 办公室通过加权边相互关联,加权边表示办公室之间的距离(从一个部门到另一个部门需要多长时间)。
我想知道,复印机应该放在哪个办公室(哪个节点)。为此,我想使用中介中心性和接近中心性的网络指标。
问题: 应用这些指标并不困难。但是,它们只考虑边缘的重量(距离),而不考虑在办公室工作的人数。这当然是要考虑的,否则复印机会放在一个办公室里,这个办公室离其他办公室很近,而且有很多最短的路径,但是所有出行的人的总距离会太远。
作为一种解决方案,我想将办公室节点细分为代表员工的节点。因此,在同一个办公室工作的人与一个权重为零的边链接(他们基本上是堆叠的),而每个员工也与其他办公室的员工有链接。基于这个新图表,我现在可以计算指标。
但我不确定这在数学上是否正确,以及我现在如何将员工网络指标转换回办公室网络指标。
感谢您的帮助!
请在下面找到带有代码的示例:
Concept这里可以看到括号内有5个不同权重的节点。
import networkx as nx
#Generate example graph with 5 nodes
G = nx.Graph()
G.add_nodes_from([11,21,31,41,51])
#Office-graph
G.add_edge(11,21, weight =3)
G.add_edge(21,31, weight =2)
G.add_edge(31,51, weight =4)
G.add_edge(21,41, weight =1)
G.add_edge(41,51, weight =5)
nx.draw_networkx(G)
#Calculate the weighted closeness centrality,
CCW = nx.closeness_centrality(G, u=None, distance='weight', wf_improved=True)
CCW
#devide nodes into subnodes with weight of 1
G.add_node(22)
G.add_node(23)
G.add_node(24)
G.add_node(32)
G.add_node(52)
#add respective edges
G.add_edge(22,23, weight =0)
G.add_edge(22,24, weight =0)
G.add_edge(23,24, weight =0)
G.add_edge(31,32, weight =0)
G.add_edge(51,52, weight =0)
G.add_edge(21,22, weight =3)
G.add_edge(21,23, weight =3)
G.add_edge(21,24, weight =3)
G.add_edge(21,31, weight =2)
G.add_edge(22,31, weight =2)
G.add_edge(23,31, weight =2)
G.add_edge(24,31, weight =2)
G.add_edge(21,32, weight =2)
G.add_edge(22,32, weight =2)
G.add_edge(23,32, weight =2)
G.add_edge(24,32, weight =2)
G.add_edge(31,51, weight =4)
G.add_edge(32,51, weight =4)
G.add_edge(31,52, weight =4)
G.add_edge(32,52, weight =4)
G.add_edge(21,41, weight =1)
G.add_edge(41,51, weight =5)
G.add_edge(41,52, weight =5)
nx.draw_networkx(G)
#Calculate the weighted closeness centrality,
CCW_new = nx.closeness_centrality(G, u=None, distance='weight', wf_improved=True)
CCW1_new
【问题讨论】:
-
鉴于图的大小可能适中,我不会费心破解接近中心度指标。相反,我会暴力破解一个最小化总行驶距离的解决方案(假设复印机使用相同)。顺便说一句,喜欢你的用户名。
标签: networking jupyter-notebook networkx network-analysis