TGH11 - Maximální párování a související problémy Jan Březina Technical University of Liberec 30. dubna 2013
Bipartitní grafy Bipartitní graf - je obarvitelný dvěma barvami. Tj. V lze rozělit na disjunktní množiny U a W, tak že pro každou hranu (u, w) je u U a w W. Algoritmus: Určení zda graf je bipartitní. 1. Procházej graf DF S nebo BF S. 2. Do U dávej liché vrstvy do W dávej sudé vrstvy. 3. Pokud dorazíš do již navštíveného vrcholu zkontroluj zda souhlasí parita vrstev, pokud ne cyklus liché délky.
Správnost algoritmu Lemma Graf je bipartitiní právě tehdy, pokud neobsahuje cykly liché délky. Důkaz: : V cyklu se musí střídat dvě barvy vrcholů, takže má sudou délku. : Cyklus liché délky není 2-obarvitelný, tedy ani žádný jeho nad-graf příklady bipartitních stromy cykly sudé délky (netriviální) rovinný graf jehož dualní graf má vrcholy sudého stupně tj. stěny mají sudý počet hran tj. graf má pouze cykly sudé délky
Párování Dvě hrany sousedí pokud mají společný vrchol. Párování grafu (V, E) - množina nesousedících hran M. Maximální párování (maximal matching) - nelze přidat další hranu. Největší / nejpočetnější párování (maximum matching) - má maximální možný počet hran. Perfektní párování - pokrývá všechny vrcholy. Platí: perfektní největší maximální Pro ohodnocené hrany (zejména pro bipartitní grafy): nejdražší párování (maximum-weight matching), nejlevnější párování (minimum-weight matching)
Příklady jednoduchých párování Maximal matchings: Maximum matchings: perfect near perfect
Příklady úloh Přiřazování úkolů (assignment problem) n lidí m úkolů, w(i, j) - jak dlouho dělá člověk i úkol j, optimalizace času pro zvládnutí všech úkolů = najít nejlevnější párování v bipartitním grafu, vyhovění odborům (změstnat všechny) = najít největší párování (pro n = m i perfektní) Ženitba Každá z množiny žen i Z má množinu M i M potencionálních ženichů. Muž je ochoten se oženit pokud o něj žena stojí. Kolik může být max. sňatků? Můžou mít všichni svatbu? Největší popř. perfektní párování v bipartitním grafu.
Párovací algoritmy Maximální párování : hladový algoritmus. Nenajde největší párování. Největší párování - bipartitní grafy: Převod na problém maximálního toku. Přidání vstupu a výstupu, kapacity hran 1. 1 1 1 1 1 1 1
Párovací algoritmy Největší, obecný graf - Edmondův algoritmus Dán graf G a párování P. Exponovaný vrchol = vrchol nepokrytý párováním P. Alternující cesta = střídá hrany z párování P a jeho doplňku E \ P. Zlepšující cesta = alternující cesta končící v exponovaných vrcholech. 1. Najdi zlepšující cestu. 2. Prohod její hrany mezi P a E \ P. 3. Pokud existuje zlepšující cesta, jdi na 1) 4. Jinak - největší párování
Zlepšení párování pomocí zlepšující cesty
Správnost algoritmu. Theorem Párování je největší pokud neexistuje zlepšující cesta. Důkaz: - pokud by existovala zlepšující, není párování největší. - Necht P není největší, P je největší a pro obě neexistuje zlepšující cesta. Graf s hranami P P má stupeň vrcholů nejvýše 2. Jeho komponenty jsou cesty a cykly. Bud totožné v P a P (délky 1) nebo se střídavými hranami z P a P. Střídavá, sudá délka stejný počet hran P a P. Střídavá, lichá délka zlepšující cesta pro P nebo P, spor.
Hledání zlepšující cesty I. Procházením do šířky vytváříme les s kořeny v exponovaných vrcholech. Každý vrchol v lesa zná předka, tj. i kořen v. Vzdálenost od kořene - lichý/sudý vrchol. Květ je cyklus délky 2k + 1, kde k hran je z P. Kontrahujeme do bodu a pokračujeme hledáním zlepšující cesty na kontrahovaném grafu. Po nalezení ZC na kontrahovaném, expandujeme květ a doplníme cestu projitím květem jednou nebo druhou stranou. Obrázek.
Hledání zlepšující cesty II. function Zlepšující cesta(graf G, párování P ) Z exponovaných vrcholů vytvoř les F ; while v je nezpracovaný sudý vrchol v F do while e = (v, w) je nezpracovaná hrana do if w / F then while (w, x) P do přidej (v, w), (w, x) do F ; (w, x) je zpracovaná; else if w F je lichý then zahod hranu (v, w); else if kořen v kořen w then return C =zlepšující cesta: (kořen v,..., v,w,...,kořen w); else kontrahuj květ G, P ; C =Zlepšující cesta(g, P ); return C =expanduj květ(c, G); (v, w) je zpracovaná; v je zpracovaný;
Další úlohy Eulerova cesta na smíšených grafech 1. výpočet in-degree (deg + ) a out-degree (deg ) pro orientovanou část grafu 2. na zbylém grafu hledat maximální tok z vrcholů, kde deg > deg + do vrcholů, kde deg < deg +, podobně jako při hledání max. párování pro bipartitiní graf
Hranové pokrytí
Vrcholové pokrytí