正则二分图构造完美匹配
具体流程如下:
- 随机找一个左部未匹配点 \(x\)。
- 随机找到一个右部没有与 \(x\) 匹配的点 \(v\)。
- 令 \(x\) 跳到 \(v\) 的匹配左部点。
- 如果 \(x\) 第一次出现,则不管,否则维护一个路径序列,删掉中间的环。
- 最后类似匈牙利算法一样依次更改路径上每个右部点的匹配点。
可以证明,该算法在过程中期望下复杂度是 \(O(n \ln n)\) 的,与边数并无关系。
注意如果 \(d = 2^k\) 则可以用确定性的欧拉回路解决该问题,但是感觉不如这个牛。

浙公网安备 33010602011771号