to_vertex_cover#
- to_vertex_cover(G, matching, top_nodes=None)[source]#
返回与给定的二分图
G的最大匹配相对应的最小顶点覆盖。- Parameters:
- GNetworkX 图
无向二分图
- matching字典
一个字典,其键是
G中的顶点,其值是构成G的最大匹配的不同邻居,例如由maximum_matching()返回。该字典 必须 表示最大匹配。- top_nodes容器
包含一个二分节点集中所有节点的容器。如果未提供,将进行计算。但如果存在多个解决方案,将引发异常。
- Returns:
- vertex_cover
set G中的最小顶点覆盖。
- vertex_cover
- Raises:
- AmbiguousSolution
如果输入的二分图是不连通的,并且没有提供包含一个二分集所有节点的容器,则会引发此异常。在确定每个二分集中的节点时,如果输入图是不连通的,可能存在多个有效解决方案。
Notes
此函数使用 Konig 定理 保证的过程实现,该定理证明了二分图中最大匹配和最小顶点覆盖之间的等价性。
由于任何图的最小顶点覆盖是其最大独立集的补集,因此可以通过以下方式计算二分图的最大独立集:
>>> 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 文档。