当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX to_vertex_cover用法及代码示例


本文简要介绍 networkx.algorithms.bipartite.matching.to_vertex_cover 的用法。

用法:

to_vertex_cover(G, matching, top_nodes=None)

返回与二分图 G 的给定最大匹配对应的最小顶点覆盖。

参数

GNetworkX 图

无向二部图

matching字典

一个字典,其键是 G 中的顶点,其值是不同的邻居,包括 G 的最大匹配,例如由 maximum_matching() 返回。字典must 表示最大匹配。

top_nodes容器

一个二分节点集中所有节点的容器。如果没有提供,它将被计算。但如果存在多个解决方案,则会引发异常。

返回

vertex_coverset

G 中的最小顶点覆盖。

抛出

AmbiguousSolution

如果输入二分图断开连接并且没有提供包含一个二分集中所有节点的容器,则引发。在确定每个二分集中的节点时,如果输入图断开连接,则可能有多个有效解决方案。

注意

这个函数是使用 Konig’s theorem 保证的过程实现的,它证明了二分图中最大匹配和最小顶点覆盖之间的等价性。

由于最小顶点覆盖是任何图的最大独立集的补集,因此可以这样计算二分图的最大独立集:

>>> G = nx.complete_bipartite_graph(2, 3)
>>> matching = nx.bipartite.maximum_matching(G)
>>> vertex_cover = nx.bipartite.to_vertex_cover(G, matching)
>>> independent_set = set(G) - vertex_cover
>>> print(list(independent_set))
[2, 3, 4]

有关如何在 NetworkX 中处理二分图的更多详细信息,请参阅 bipartite documentation

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.bipartite.matching.to_vertex_cover。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。