Bipartitní grafy a párování v grafech. - Atrey
Bipartitní grafy a párování v grafech. - Atrey Bipartitní grafy a párování v grafech. - Atrey
Kdy je barvení jednoduché? Párování TGH10 - Algoritmy pro zamilované Jan Bˇrezina Technical University of Liberec 7. května 2010
- Page 2 and 3: Kdy je barvení jednoduché? Párov
- Page 4 and 5: Kdy je barvení jednoduché? Párov
- Page 6 and 7: Kdy je barvení jednoduché? Párov
- Page 8 and 9: Kdy je barvení jednoduché? Párov
- Page 10 and 11: Kdy je barvení jednoduché? Párov
- Page 12: Kdy je barvení jednoduché? Párov
Kdy je barvení jednoduché? Párování<br />
TGH10 - Algoritmy pro zamilované<br />
Jan Bˇrezina<br />
Technical University of Liberec<br />
7. května 2010
Kdy je barvení jednoduché? Párování<br />
Selhání barvících heuristik<br />
• jednoduch´y hladov´y algoritmus<br />
• uspoˇrádání podle stupně<br />
• DeSatur - funkční pro bipartitní <strong>grafy</strong>
Kdy je barvení jednoduché? Párování<br />
<strong>Bipartitní</strong> <strong>grafy</strong><br />
<strong>Bipartitní</strong> graf - je obarviteln´y dvěma barvami.<br />
Tj. V lze rozělit na disjunktní mnoˇziny U a W ,<br />
tak ˇze pro kaˇzdou hranu (u, w) je u ∈ U a w ∈ W .<br />
Algoritmus: Určení zda graf je bipartitní.<br />
1. Procházej graf DF S nebo BF S.<br />
2. Do U dávej liché vrstvy do W dávej sudé vrstvy.<br />
3. Pokud dorazíˇs do jiˇz navˇstíveného vrcholu zkontroluj zda souhlasí<br />
parita vrstev, pokud ne ⇒ cyklus liché délky.
Kdy je barvení jednoduché? Párování<br />
Správnost algoritmu<br />
Lemma<br />
Graf je bipartitiní právě tehdy, pokud neobsahuje cykly liché délky.<br />
D˚ukaz:<br />
⇒ : V cyklu se musí stˇrídat dvě barvy vrchol˚u, takˇze má sudou délku.<br />
⇐ : Cyklus liché délky není 2-obarviteln´y, tedy ani ˇzádn´y jeho nad-graf<br />
pˇríklady bipartitních<br />
• stromy<br />
• cykly sudé délky<br />
• (netriviální) rovinn´y graf jehoˇz dualní graf má vrcholy sudého stupně<br />
tj. stěny mají sud´y počet hran<br />
tj. graf má pouze cykly sudé délky
Kdy je barvení jednoduché? Párování<br />
Párování<br />
Dvě hrany sousedí pokud mají společn´y vrchol.<br />
Párování grafu (V, E) je mnoˇzina nesousedících hran M.<br />
Maximální <strong>párování</strong> = nelze pˇridat dalˇsí hranu.<br />
Největˇsí/nejpočetnějˇsí <strong>párování</strong> = má maximální moˇzn´y počet hran.<br />
Perfektní <strong>párování</strong> = pokr´yvá vˇsechny vrcholy.<br />
Pˇríklady.<br />
Platí:<br />
perfektní ⇒ největˇsí ⇒ maximální<br />
Pro ohodnocené hrany: nejdraˇzˇsí perfektní <strong>párování</strong>, nejlevnějˇsí perfektní<br />
<strong>párování</strong> (pˇreveditelné na nejdraˇzˇsí)
Kdy je barvení jednoduché? Párování<br />
Pˇríklady úloh<br />
Pˇriˇrazování úkol˚u n lidí n úkol˚u, w(člověk, úkol) je potˇrebn´y čas (kaˇzd´y<br />
umí něco jiného), optimalizace<br />
- nejlevnějˇsí perfektní <strong>párování</strong> v bipartitním grafu.<br />
ˇZenitba Kaˇzdá z mnoˇziny ˇzen i ∈ Z má mnoˇzinu Mi ⊂ M<br />
potencionálních ˇzenich˚u. Muˇz je ochoten se oˇzenit pokud o něj ˇzena stojí.<br />
Kolik m˚uˇze b´yt max. sňatk˚u? M˚uˇzou mít vˇsichni svatbu?<br />
Největˇsí popˇr. perfektní <strong>párování</strong> v bipartitním grafu.
Kdy je barvení jednoduché? Párování<br />
Párovací algoritmy<br />
Maximální <strong>párování</strong> : hladov´y algoritmus.<br />
Největˇsí <strong>párování</strong> - bipartitní <strong>grafy</strong>: Pˇrevod na problém maximálního toku.<br />
Pˇridání vstupu a v´ystupu, kapacity hran 1. Obrázek.<br />
Největˇsí, obecn´y graf - Edmond˚uv algoritmus Dán graf G a <strong>párování</strong> P .<br />
Exponovan´y vrchol = vrchol nepokryt´y P .<br />
Alternující cesta = stˇrídá hrany z P a E \ P .<br />
Zlepˇsijící cesta = alternující cesta končící v exponovan´ych vrcholech.<br />
1. Najdi zlepˇsující cestu.<br />
2. Prohod’ její hrany mezi P a E \ P .<br />
3. Pokud existuje zlepˇsující cesta, jdi na 1)<br />
4. Jinak - největˇsí <strong>párování</strong>
Kdy je barvení jednoduché? Párování<br />
Správnost algoritmu.<br />
Theorem<br />
Párování je největˇsí pokud neexistuje zlepˇsující cesta.<br />
D˚ukaz:<br />
⇒ - pokud by existovala zlepˇsující, není <strong>párování</strong> největˇsí.<br />
⇐ - Necht’ P není největˇsí. P ′ je největˇsí a neexistuje zlepˇsující cesta.<br />
• Graf s hranami P ∪ P ′ má stupeň vrchol˚u nejv´yˇse 2.<br />
• Komponenty - cesty a cykly.<br />
• Bud’ totoˇzné v P a P ′ nebo se stˇrídav´ymi hranami z P a P ′ .<br />
• Stˇrídavá, sudá délka ⇒ stejn´y počet hran P a P ′ .<br />
• Stˇrídavá, lichá délka ⇒ zlepˇsující cesta pro P nebo P ′ , spor.
Kdy je barvení jednoduché? Párování<br />
Hledání zlepˇsující cesty I.<br />
• Procházením do ˇsíˇrky vytváˇríme les s koˇreny v exponovan´ych<br />
vrcholech.<br />
• Kaˇzd´y vrchol v lesa zná pˇredka, tj. i koˇren v.<br />
• Vzdálenost od koˇrene - lich´y/sud´y vrchol.<br />
Květ je cyklus délky 2k + 1, kde k hran je z P .<br />
• Kontrahujeme do bodu a pokračujeme hledáním zlepˇsující cesty na<br />
kontrahovaném grafu.<br />
• Po nalezení ZC na kontrahovaném, expandujeme květ a doplníme<br />
cestu projitím květem jednou nebo druhou stranou. Obrázek.
Kdy je barvení jednoduché? Párování<br />
Hledání zlepˇsující cesty II.<br />
function Zlepˇsující cesta(graf G, <strong>párování</strong> P )<br />
Z exponovan´ych vrchol˚u vytvoˇr les F ;<br />
while v je nezpracovan´y sud´y vrchol v F do<br />
while e = (v, w) je nezpracovaná hrana do<br />
if w /∈ F then<br />
while (w, x) ∈ P do<br />
pˇridej (v, w), (w, x) do F ;<br />
(w, x) je zpracovaná;<br />
else if w ∈ F je lich´y then zahod’ hranu (v, w);<br />
else if koˇren v = koˇren w then<br />
return C =zlepˇsující cesta: (koˇren v,. . . , v,w,. . . ,koˇren w);<br />
else<br />
kontrahuj květ → G ′ , P ′ ;<br />
C ′ =Zlepˇsující cesta(G ′ , P ′ );<br />
return C =expanduj květ(C ′ , G);<br />
(v, w) je zpracovaná;<br />
v je zpracovan´y;
Kdy je barvení jednoduché? Párování<br />
Hranové pokrytí
Kdy je barvení jednoduché? Párování<br />
Vrcholové pokrytí