We present an algorithm that finds a maximum cardinality $f$-matching of a simple graph in time $O(n^{2/3} m)$. Here $f:V\to \mathbb{N}$ is a given function, and an $f$-matching is a subgraph wherein each vertex $v\in V$ has degree $\le f(v)$. This result generalizes a string of algorithms, concentrating on simple bipartite graphs. The bipartite case is based on the notion of level graph, introduced by Dinic for network flow. For general graphs the ``level'' of a vertex is unclear: A given vertex can occur on many different levels in augmenting trails. In fact there does not seem to be a unique level graph, our notion of level graph depends on the trails being analyzed. Our analysis presents new properties of blossoms of shortest augmenting trails. Our algorithm, unmodified, is also efficient on multigraphs, achieving time $O(\min \{\sqrt {f(V)}, n\}\,m)$, for $f(V)=\sum_vf(v)$.
翻译:我们提出一种算法,可在$O(n^{2/3}m)$时间内找到简单图的最大基数$f$-匹配。其中$f:V\to \mathbb{N}$为给定函数,$f$-匹配是每个顶点$v\in V$度数均不超过$f(v)$的子图。该结果推广了一系列专注于简单二部图的算法。二部图情形基于由Dinic引入网络流的分层图概念。对于一般图,顶点的"层次"定义并不明确:给定顶点在增广迹中可能出现在多个不同层次。实际上不存在唯一的分层图——我们的分层图概念取决于所分析的迹。本文分析揭示了最短增广迹花结构的新性质。该算法无需修改即可高效处理多重图,当$f(V)=\sum_vf(v)$时,时间复杂度为$O(\min \{\sqrt {f(V)}, n\}\,m)$。