resistance_distance#

resistance_distance(G, nodeA=None, nodeB=None, weight=None, invert_weight=True)[source]#

返回图 G 中节点对之间的电阻距离。

图的两个节点之间的电阻距离类似于将图视为一个电阻器网格,其电阻等于提供的权重 [1], [2]

如果没有提供权重,则所有边的权重为 1。

如果两个节点相同,则电阻距离为零。

Parameters:
GNetworkX 图

一个图

nodeA节点或 None, 可选 (默认=None)

图 G 中的一个节点。 如果为 None,则使用所有节点作为源节点计算电阻距离。

nodeB节点或 None, 可选 (默认=None)

图 G 中的一个节点。 如果为 None,则使用所有节点作为目标节点计算电阻距离。

weight字符串或 None, 可选 (默认=None)

用于计算电阻距离的边数据键。 如果为 None,则每条边的权重为 1。

invert_weight布尔值 (默认=True)

正确计算电阻距离需要使用权重的倒数构建拉普拉斯矩阵。如果权重已经倒数,则不需要。权重不能为零。

Returns:
rd字典或浮点数

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

Raises:
NetworkXNotImplemented

如果 G 是有向图。

NetworkXError

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

Notes

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

References

[1]

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

[2] (1,2)

D. J. Klein 和 M. Randic。 “电阻距离” J. Math. Chem. 12:81-95, 1993.

Examples

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