Hintergrund & Theorie
Bipartites Matching verbindet Knoten aus zwei disjunkten Mengen — L (Bewerber) und R (Stellen) — mit Kanten, die nur zwischen diesen Mengen verlaufen. Ein Matching ist eine Menge von Kanten ohne gemeinsame Endpunkte; das Ziel ist ein Matching von maximaler Größe zu finden.
Augmentierende Pfade
Ein augmentierender Pfad beginnt und endet an nicht zugeordneten Knoten und alterniert: nicht zugeordnete Kante, zugeordnete Kante, nicht zugeordnete Kante, … Da er mit einer nicht zugeordneten Kante beginnt und endet, hat er immer genau eine nicht zugeordnete Kante mehr als zugeordnete.
Warum das Umschalten hilft
Das Umschalten des Zustands zugeordnet/nicht zugeordnet für jede Kante auf dem augmentierenden Pfad verwandelt beide Endpunkte in zugeordnete Knoten, während jeder innere Knoten zugeordnet bleibt (nur mit einem anderen Nachbarn). Der Nettoeffekt ist +1 zur Matching-Größe. Ein Matching ist genau dann maximal, wenn kein augmentierender Pfad mehr existiert — dies ist das Lemma von Berge.
Komplexität von Hopcroft–Karp
Die Suche nach einem einzigen augmentierenden Pfad mit einem DFS von jedem nicht zugeordneten Knoten kostet O(E), und es können bis zu V Suchen nötig sein, was insgesamt O(V·E) ergibt. Hopcroft–Karp findet stattdessen pro Phase eine maximale Menge kürzester, knotendisjunkter augmentierender Pfade (ein BFS zur Bestimmung der kürzesten Pfadlänge, dann DFS zur Extraktion disjunkter Pfade), wodurch nur O(√V) Phasen nötig sind — insgesamt O(E√V).
Satz von König
In jedem bipartiten Graphen entspricht die Größe des maximalen Matchings der Größe der minimalen Knotenüberdeckung (der kleinsten Knotenmenge, die jede Kante berührt). Diese Dualität, bekannt als Satz von König, verbindet Matching und Überdeckung direkt und liegt vielen Ergebnissen der kombinatorischen Optimierung zugrunde.