电阻距离#

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

如果给定 nodeAnodeB,则返回 nodeAnodeB 之间的电阻距离。如果未指定 nodeAnodeB(默认情况),则返回一个字典,其中节点作为键,电阻距离作为值。

抛出:
NetworkXNotImplemented

如果 G 是一个有向图。

NetworkXError

如果 G 不连通,或不包含任何节点,或 nodeA 不在 G 中,或 nodeB 不在 G 中。

注意

此实现基于 [2] 中的定理 A。忽略自环。多条边合并为一条边,其权重等于这些边权重的调和和。

参考

[1]

维基百科 “电阻距离。” https://en.wikipedia.org/wiki/Resistance_distance

[2] (1,2)

D. J. Klein and M. Randic. Resistance distance. J. of Math. Chem. 12:81-95, 1993.

示例

>>> 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