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)$.
翻译:暂无翻译