作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 networkx找到 maximum cardinality matching的二分图。
匹配的边对于特定图不是唯一的。
有没有办法找到所有的最大匹配?
对于下面的例子,下面的所有边都可以是最大匹配:
{1: 2, 2: 1}
或 {1: 3, 3: 1}
或 {1: 4, 4: 1}
import networkx as nx
import matplotlib.pyplot as plt
G = nx.MultiDiGraph()
edges = [(1,3), (1,4), (1,2)]
nx.is_bipartite(G)
True
nx.draw(G, with_labels=True)
plt.show()
不幸的是,
nx.bipartite.maximum_matching(G)
只返回
{1: 2, 2: 1}
有没有办法让我也获得其他组合?
最佳答案
Takeaki Uno 的论文“Algorithms for Enumerating All Perfect, Maximum and Maximal Matchings in Bipartite Graphs”有这方面的算法。 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107.8179&rep=rep1&type=pdf
定理 2 说“二分图中的最大匹配可以在 O(mn^1/2+nNm) 时间和 O(m) 空间,其中 Nm 是 G 中最大匹配的数量。"
关于python - 二分图所有可能的最大匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144423/
我正在尝试编写一个程序,在名为 items 的数组中进行顺序搜索和二分搜索,该数组具有 10000 个已排序的随机 int 值。第二个名为 targets 的数组加载了 1000 个 int 值(50
当我尝试使用图表并为其编写一些代码但没有成功时,我遇到了一个问题:/!! 我想创建一些东西来获取图形数据并检查它是否:1- 连接2-二分法3-有循环4-是一棵树 所以我想知道,例如,是否可以将其写入以
我是一名优秀的程序员,十分优秀!