加权匹配与图算法应用
1. 加权匹配复杂度分析
在简单实现中,对于每个顶点,我们维护一个包含非零变量的花(blossom)列表。通过这种方式,对于每条边 $(i, j)$,我们可以在 $O(|V|)$ 的时间复杂度内计算 $c_{ij} - u_i - u_j - \sum_{(i, j) \in \partial(S)} u_S$。由于在完全图中 $|E| = \binom{|V|}{2}$,所以确定 $\epsilon$ 的复杂度为 $O(|E||V|) = O(|V|^3)$。不过,这个复杂度仍然被 Edmonds 花算法的实现复杂度 $O(|V|^2|E|)$ 所主导。
为了改进复杂度,我们可以对收缩图的嵌套结构进行编码。具体而言,对于收缩图中的每条边,我们可以为其存储指向原始边的指针,以及指向其所在最外层花的指针。同时,我们可以为每个花及其边界上的每条边存储 $c_{ij} - u_i - u_j - \sum_{(i, j) \in \partial(S)} u_S$ 的当前值,这样就能在 $O(|E|)$ 的时间复杂度内计算 $\epsilon$。如果我们复用 Edmonds 花算法的标记,还可以将增广操作的成本降低到 $O(|V||E|)$,使得整个算法的复杂度与基数匹配算法相同。
上世纪 80 年代,人们提出了一些改进方法,目前已知的最佳复杂度界限为 $O(|V|(|E| + |V| \log |V|))$ 和 $O\left(\frac{|E| \log(|V|C)}{|V|\alpha(|E|, |V|) \log |V|}\right)$,其中 $C$ 是边权重绝对值的上界,$\alpha$ 是阿克曼函数的反函数。
超级会员免费看
订阅专栏 解锁全文
211

被折叠的 条评论
为什么被折叠?



