當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。