求二分图所有最大匹配共有的边,Tamir Tassa算法是否有Sage实现?
关于Sage中是否实现Tamir Tassa算法的解答
首先得明确说:目前Sage的官方核心库以及常见的社区贡献模块里,没有直接实现Tamir Tassa在《Finding all maximally-matchable edges in a bipartite graph》中提出的专门算法。
不过你可以基于Sage已有的二分图工具,自己搭建逻辑来实现类似功能,或者用更基础的方法找出那些在所有最大匹配中都存在的边(这类边也常被称为“强制匹配边”或“essential edges”):
- 第一步,用Sage的
bipartite_graph类创建你的二分图,调用maximum_matching()方法得到一个最大匹配,记录其大小max_size。 - 第二步,遍历图中的每条边:
- 临时移除这条边,检查新图的最大匹配大小是否仍等于
max_size——如果移除后最大匹配变小,说明这条边是所有最大匹配都必须包含的;反之则不是。 - 如果你追求更高效率,可以结合二分图的交替路径、强连通分量分析来优化,这部分思路和Tassa算法的核心逻辑有重叠,但需要自己编码实现。
- 临时移除这条边,检查新图的最大匹配大小是否仍等于
另外,你可以去Sage的官方邮件列表、GitHub仓库的issue区或者社区论坛搜一搜,有没有其他用户提过类似需求或者分享过自定义实现——目前公开可查的资源里,还没看到现成的开箱即用版本。如果你的实现比较完善,也可以考虑提交到Sage的社区贡献模块里,帮助其他有同样需求的用户。
内容的提问来源于stack exchange,提问作者Rupesh Kasture
相关产品推荐
相关产品推荐

