Pojem matching (párování) znáš z [L0.6] Párování a perfektní párování — množina hran, žádné dvě nesdílejí vrchol. Tehdy jsme slíbili, že výpočet přijde v K4. Dnes ten slib plníme pro maximum cardinality matching (párování s největším počtem hran) v bipartitním grafu: stačí síť postavit z vrstev jako v [L4.5] a pustit Ford-Fulkersona [L4.3]. Cestou potřebuješ reziduální graf [L4.2] a na závěr řez jako certifikát [L4.4].
Matching is the set of arcs $P \subseteq E(G)$ in undirected graph $G$, such that the endpoints are all different (no arcs from $P$ are incident with the same node). When all nodes of $G$ are incident with some arc in $P$, we call $P$ a perfect matching.
Problems:
These problems can be solved in polynomial time.
Dnes řešíme b) — kardinalitu v bipartitním grafu, přes max flow. Problémy c) a d) (váhy, assignment) počkají na minimum cost flow: nejdřív si ho postavíme v [L4.10], pak jím v [L4.12] vyřešíme assignment. Maďarský (Hungarian) algoritmus je ze zkoušky vyloučen — assignment se u zkoušky řeší výhradně přes MCF.
Celou lekci odpracujeme na jednom bipartitním grafu (vlastní instance — přiznáno): $X = \{x_1, x_2, x_3, x_4\}$, $Y = \{y_1, y_2, y_3\}$, hrany podle obrázku.
Největší párování má 3 hrany, např. $M = \{x_1\text{–}y_2,\ x_2\text{–}y_1,\ x_4\text{–}y_3\}$. Hladový postup ale snadno uvázne na dvou: vezmeš $x_1$–$y_1$, pak třeba $x_4$–$y_2$ — a konec. $x_2$ umí jen $y_1$ (obsazeno), $x_3$ jen $y_2$ (obsazeno), $y_3$ by chtělo jen $x_4$ (obsazeno). Žádnou hranu už přidat nejde, a přesto párování není největší — muselo by se přepojit. Tomuhle rozdílu se říká maximal (nerozšiřitelné) vs. maximum (největší) — a přesně na přepojování máme v téhle kapitole nástroj: zpětné hrany reziduálního grafu [L4.2].
Defs: Let $G$ be an undirected graph (bipartite or not), and let $M$ be a matching. A path $P$ is an M-alternating path if $E(P) \setminus M$ is a matching. An $M$-alternating path is M-augmenting if its endpoints are not in $M$.
Theorem: Let $G$ be an undirected graph (bipartite or not) with some matching $M$. Then $M$ is maximum if and only if there is no $M$-augmenting path.
Algorithm: Find the arbitrary matching. Find the $M$-augmenting path (i.e., $M$-alternating path with uncovered endpoints). Exchange (i.e. augment) the matching along the path. Repeat as long as such a path does exist.
Cesta $x_2 - y_1 - x_1 - y_2$: hrany střídavě mimo $M$ ($x_2$–$y_1$), v $M$ ($y_1$–$x_1$), mimo $M$ ($x_1$–$y_2$) — to je M-alternating — a oba konce $x_2$, $y_2$ jsou nepokryté → M-augmenting. Přehození = hrany mimo $M$ do párování přidej, hrany v $M$ vyhoď: nové $M = \{x_2\text{–}y_1,\ x_1\text{–}y_2\}$. Cesta má lichý počet hran, krajních „mimo $M$“ je o jednu víc než vnitřních „v $M$“ — párování se zvětší přesně o 1. A věta ze slidu říká, že tohle je jediné, co kdy potřebuješ: když M-augmentující cesta neexistuje, $M$ už je maximum.
Je to slovo od slova Ford-Fulkerson [L4.3]: augmentující cesta v reziduálním grafu, augmentace, opakuj, dokud cesta existuje — a kritérium maximality „žádná augmentující cesta“ je totéž tvrzení jako věta ze slidu 39. To není náhoda: za chvíli uvidíš, že po převodu na tok M-augmentující cesta = augmentující cesta v $G_f$, včetně přehazování přes zpětné hrany. Stačí tedy umět ten převod.
„Vrchol $x_i$ smí být nejvýš v jedné hraně párování“ = „do $x_i$ smí přitéct nejvýš jednotka“. Tak mu ji přiveď jedinou hranou $s \to x_i$ s kapacitou 1 — Kirchhoff [L4.1] pak zaručí, že z $x_i$ odteče nejvýš 1, tedy nejvýš jedna hrana z $x_i$ ponese tok. Symetricky vpravo: hrana $y_j \to t$ s kapacitou 1 hlídá, že do $y_j$ vstoupí nejvýš jedna párovací hrana. Hrany grafu zorientuješ $X \to Y$. Žádné dolní meze nepotřebuješ — $l \equiv 0$.
Can be transformed to the maximum flow problem:
Půlka hrany v párování nedává smysl — frakční tok párování není. Zachraňuje nás Integral Flow Theorem (Dantzig-Fulkerson, slide 17 — citovaný v [L4.5]): kapacity jsou celé (samé jedničky), takže existuje celočíselný maximální tok, a Ford-Fulkerson ho rovnou najde (startuje z $f \equiv 0$ a každé $\gamma$ je celé, tady vždy $\gamma = 1$). Celočíselný tok s kapacitami 1 je 0/1 tok — každá hrana buď nese jednotku, nebo nic. U zkoušky tuhle větu vždy zmiň: bez ní jsi vyřešil jen LP relaxaci.
Kdyby dvě hrany $M$ sdílely vrchol $x_i$, odtékaly by z $x_i$ aspoň 2 jednotky — ale přitéct může jen 1 (jediná hrana $s \to x_i$, kapacita 1), spor s Kirchhoffem. Symetricky pro $y_j$ přes hranu $y_j \to t$. Takže $M$ je párování. A velikost: $|f| = \sum_i f(s \to x_i)$ = počet vrcholů $X$ s protékající jednotkou = počet hran s $f = 1$ = $|M|$. Funguje to i obráceně — každé párování $M$ vyrobí přípustný 0/1 tok s $|f| = |M|$ (pusť jednotku po $s \to x_i \to y_j \to t$ pro každou hranu $M$). Tudíž max tok = max párování, ne jen nerovnost.
Dolní meze jsou nulové, takže — na rozdíl od [L4.7] a [L4.8] — je start zadarmo: $f \equiv 0$ je přípustný. Sleduj v běhu iteraci ②: cesta projde zpětnou hranou $y_1 \to x_1$ (existuje, protože $f(x_1 \to y_1) = 1 > 0$, [L4.2]) — to je přesně přehození párovací hrany $x_1$–$y_1$ z M-augmentující cesty: tok po ní klesne na 0, hrana z párování vypadne a oba její konce se přepojí jinam.
Vrcholy $X$ nelze spárovat všechny, takže párování pokrývající všechny vrcholy ($X$ i $Y$) — perfect matching [L0.6] — neexistuje (tady ostatně ani nemůže: $|X| \ne |Y|$; ale nejde spárovat ani celé $X$). Certifikátem je minimální řez [L4.4]: $A = \{s, x_1, x_2, x_3, y_1, y_2\}$ má kapacitu $C(A) = u(s \to x_4) + u(y_1 \to t) + u(y_2 \to t) = 3 = |f|$, takže víc než 3 párovací hrany být nemohou. Řez má i čitelnou interpretaci: $x_1, x_2, x_3$ se umí napojit jen na $\{y_1, y_2\}$ — tři vrcholy se „mačkají“ o dva sousedy, jeden z nich zůstane vždy nespárovaný.
1) „Nerozšiřitelné párování = největší párování.“ Ne — maximal (nejde přidat hrana) není maximum (největší počet hran); hladové přidávání uvázne (viz první try). Zvětšit párování často znamená přepojit ho M-augmentující cestou — v toku to obstará zpětná hrana. 2) Frakční tok není párování. Odpověď „pustím max flow“ je úplná až s větou o celočíselnosti (Integral Flow Theorem — kapacity jsou celé, tedy existuje celočíselný max tok a F-F ho najde). U zkoušky nevynechávej. 3) M-augmentující cesta musí mít OBA konce nepokryté. Střídavá cesta končící v pokrytém vrcholu párování nezvětší — přehozením velikost zachováš, nebo dokonce porušíš párovost. 4) Hrany se orientují, kapacita 1 všude, $l = 0$. Neorientovaný graf nech za sebou: v síti vede vše $s \to X \to Y \to t$. A žádné dolní meze — nepleť s [L4.8], tady start $f \equiv 0$ funguje. 5) Maďarský algoritmus u zkoušky nepoužívej — je vyloučen; vážené verze (assignment) se řeší přes minimum cost flow ([L4.10] → [L4.12]).
Given a bipartite graph $G = (X \cup Y, E)$, formulate the maximum-cardinality matching problem as a maximum-flow problem. Define the source, sink, arc orientations, capacities, and explain how to read the matching from an integral maximum flow.
Formulační úloha — přesně obsah téhle lekce. Chtějí po tobě konstrukci sítě (zdroj, stok, orientace, kapacity) a čtení výsledku z celočíselného max toku. Slovo „integral“ v zadání je nápověda, že k plné odpovědi patří i zdůvodnění celočíselnosti.
Odevzdej čtyři věci jako u každé tokové formulace: uzly, hrany s orientací, kapacity, čtení výsledku — a navíc dvě zdůvodňovací věty: (i) proč kapacita 1 u $s$/$t$ vynutí párovost (Kirchhoff), (ii) proč se smíš spolehnout na celočíselný tok. Bonusová věta o rovnosti $|f_{max}| = |M_{max}|$ (oba směry převodu) z odpovědi dělá důkaz, ne jen recept.
Konstrukce. K bipartitnímu grafu $G = (X \cup Y, E)$ přidej zdroj $s$ a hranu $(s, i)$ pro všechna $i \in X$, stok $t$ a hranu $(j, t)$ pro všechna $j \in Y$. Hrany zorientuj od $s$ do $X$, z $X$ do $Y$ a z $Y$ do $t$. Horní mez všech hran je $u = 1$, dolní $l = 0$. Řeš maximální tok z $s$ do $t$.
Proč tok kóduje párování. Do $x_i$ vede jediná hrana s kapacitou 1, takže (Kirchhoff) z $x_i$ odteče nejvýš jednotka — nejvýš jedna hrana z $x_i$ nese tok; symetricky $y_j \to t$ hlídá vrcholy $Y$. Naopak každé párování $M$ definuje přípustný tok: jednotka po $s \to x_i \to y_j \to t$ pro každou $(i, j) \in M$, tedy $|f| = |M|$. Hodnoty max toku a max párování se proto rovnají.
Celočíselnost. Kapacity jsou celočíselné, takže existuje celočíselný maximální tok (Integral Flow Theorem, Dantzig-Fulkerson; F-F ho přímo najde, neboť startuje z $f \equiv 0$ a augmentuje o celá $\gamma$). Celočíselný tok s $u = 1$ je 0/1.
Čtení párování. $M = \{(i, j) \in E:\ f(x_i \to y_j) = 1\}$ — vnitřní hrany nesoucí jednotku; $|M| = |f|$ je maximální kardinalita.
A chessboard consists of $n^2$ squares arranged in $n$ rows and $n$ columns. A domino is a wooden or plastic piece consisting of two squares joined on a side. The goal is to fully cover (i.e., some domino covers each square) the chessboard with dominos (i.e., each domino covers two squares of the board, and no two dominos overlap). A pruned board is a chessboard with some squares removed.
Suppose that we want to know whether it is possible to fully cover a pruned board and if not, to find the maximum number of dominos we can place on the pruned board so that each domino covers two squares of the board and no two dominos overlap. Formulate this problem as an appropriate matching problem.
Figure: Pruned chessboard and a solution. (Obrázek v originále nedochován v přepisu; níže vlastní malá instance — přiznáno.)
Modelovací úloha: šachovnice s vynechanými políčky, dominová kostka kryje dvě stranově sousedící políčka. Otázky: jde pokrýt všechno? A když ne, kolik kostek se vejde maximálně? Máš to „formulate as an appropriate matching problem“ — tedy najít správný graf a říct, který párovací problém na něm řešíš (a ten už umíš spočítat přes max flow).
① Co je „vrchol“ a co „hrana“? Kostka spojuje dvě sousední políčka — políčka budou vrcholy, možné pozice kostky hrany. ② Proč je graf bipartitní? Vybarvi šachovnici jako šachovnici: kostka kryje vždy jedno bílé a jedno černé políčko. ③ Přelož otázky ze zadání: „fully cover“ = jaké párování? „maximum number of dominos“ = jaký problém z této lekce?
Graf. Vrcholy = nevyřazená políčka prořezané šachovnice. Hrana spojuje dvě políčka, právě když spolu stranově sousedí (= sem lze položit domino). Políčka obarvi šachovnicově (políčko $(i, j)$ je bílé pro $i + j$ sudé, černé pro liché): každá hrana spojuje bílé s černým, takže graf je bipartitní s partitami $X$ = bílá políčka, $Y$ = černá políčka.
Překlad otázek. Rozmístění kostek bez překryvu = množina hran, kde žádná dvě nesdílejí políčko = párování. Maximální počet kostek = maximum cardinality matching in a bipartite graph (problém b) ze slidu 38) — spočteš přes max flow konstrukcí z této lekce: $s \to$ bílá $\to$ černá $\to t$, všechny kapacity 1, $|f_{max}|$ = max počet kostek. Plné pokrytí existuje $\iff$ párování je perfektní, tj. $|f_{max}| = \tfrac{\#\text{políček}}{2}$ (nutně musí být počet políček sudý a #bílých = #černých — jinak rovnou NE).
Instance z obrázku (šachovnice $3 \times 3$ bez prostředního políčka): bílá = 4 rohy, černá = 4 hranová políčka, sousedství tvoří kružnici o 8 vrcholech. Max flow v odpovídající síti má hodnotu 4 = perfektní párování, např. $\{11\text{–}12,\ 13\text{–}23,\ 33\text{–}32,\ 31\text{–}21\}$ — deska jde plně pokrýt 4 kostkami.