#matching #graph #edge #general #weighted #compute #undirected

mwmatching

最大权重匹配:在给定的 'edges' 的通用无向加权图中计算最大权重匹配

2 个版本

使用旧的 Rust 2015

0.1.1 2018年7月11日
0.1.0 2018年6月28日

493科学

Download history 63/week @ 2024-03-06 76/week @ 2024-03-13 57/week @ 2024-03-20 62/week @ 2024-03-27 71/week @ 2024-04-03 37/week @ 2024-04-10 30/week @ 2024-04-17 48/week @ 2024-04-24 156/week @ 2024-05-01 85/week @ 2024-05-08 43/week @ 2024-05-15 34/week @ 2024-05-22 29/week @ 2024-05-29 51/week @ 2024-06-05 72/week @ 2024-06-12 29/week @ 2024-06-19

187 每月下载量

MIT 许可证

53KB
780

mwmatching

通用图中的加权最大匹配。

这是 Joris van Rantwijk 的一个 Python 程序的 Rust 重实现。大部分注释都是直接从那个版本取的。对于原始代码,请访问 http://jorisvr.nl/article/maximum-matching.

在给定的 "edges" 的通用无向加权图中计算最大权重匹配。
通用用法

  let mates = Matching::new(edges).solve();

  let mates = Matching::new(edges).max_cardinality().solve();

如果使用 "max_cardinality()",则只考虑最大基数匹配作为解决方案。

Edges 是一个表示顶点 i 和顶点 j 之间无向边(权重 wt)的元组序列 (i, j, wt)。目前,wt 必须是 i32。任何两个顶点之间最多有一条边;没有顶点有指向自身的边。顶点由连续的非负整数(usize)标识。

返回一个列表 "mates",如果顶点 i 匹配到顶点 j,则 mates[i] == j;如果顶点 i 未匹配,则 mates[i] == SENTINEL,其中 SENTINEL 是 usize::max_value()。

无运行时依赖