电阻距离#
- resistance_distance(G, nodeA=None, nodeB=None, weight=None, invert_weight=True)[源代码]#
返回图 G 中节点对之间的电阻距离。
图中两个节点之间的电阻距离类似于将图视为一个电阻网格,其中每个电阻的电阻值等于提供的权重 [1], [2]。
如果未提供权重,则所有边的权重均使用 1。
如果两个节点相同,则电阻距离为零。
- 参数:
- GNetworkX 图
一个图
- nodeA节点或 None,可选(默认值=None)
图 G 中的一个节点。如果为 None,则使用所有节点作为源节点计算电阻距离。
- nodeB节点或 None,可选(默认值=None)
图 G 中的一个节点。如果为 None,则使用所有节点作为目标节点计算电阻距离。
- weight字符串或 None,可选(默认值=None)
用于计算电阻距离的边数据键。如果为 None,则每条边的权重为 1。
- invert_weight布尔值(默认值=True)
正确计算电阻距离需要使用权重的倒数构建拉普拉斯矩阵。如果权重已反转,则不需要。权重不能为零。
- 返回值:
- rddict 或 float
如果给定
nodeA
和nodeB
,则返回nodeA
和nodeB
之间的电阻距离。如果未指定nodeA
或nodeB
(默认情况),则返回一个字典,其中节点作为键,电阻距离作为值。
- 抛出:
- NetworkXNotImplemented
如果
G
是一个有向图。- NetworkXError
如果
G
不连通,或不包含任何节点,或nodeA
不在G
中,或nodeB
不在G
中。
注意
此实现基于 [2] 中的定理 A。忽略自环。多条边合并为一条边,其权重等于这些边权重的调和和。
参考
[1]维基百科 “电阻距离。” https://en.wikipedia.org/wiki/Resistance_distance
示例
>>> G = nx.Graph([(1, 2), (1, 3), (1, 4), (3, 4), (3, 5), (4, 5)]) >>> round(nx.resistance_distance(G, 1, 3), 10) 0.625