max_weight_matching#

max_weight_matching(G, maxcardinality=False, weight='weight')[源代码]#

计算G的最大加权匹配。

匹配是边缘的子集,其中没有节点出现多次。匹配的权重是其边的权重之和。最大匹配不能添加更多的边,并且仍然是匹配的。匹配的基数是匹配的边数。

参数
G网络X图表

无向图

maxcardinality: bool, optional (default=False)

如果MaxCardinality为True,则计算所有最大基数匹配中权重最大的最大基数匹配。

weight: string, optional (default='weight')

与边权重对应的边数据关键点。如果找不到关键点,则使用1作为权重。

返回
matching设置

图的最大匹配。

笔记

如果G有带权重属性的边,则将边数据用作权重值,否则假定权重为1。

此功能需要时间o(节点数**3)。

如果所有边权重都是整数,则算法只使用整数计算。如果使用浮点权重,由于数值精度错误,该算法可能返回稍微次优的匹配。

这种方法是基于杰克·埃德蒙兹发明的寻找增广路径的“花”法和寻找最大权值匹配的“原始-对偶”方法。 [1].

也可以使用中存在的函数来匹配二部图。 networkx.algorithms.bipartite.matching .

工具书类

1

“寻找图形中最大匹配的有效算法”,Zvi Galil,ACM计算调查,1986年。