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

atrey.karlin.mff.cuni.cz
from atrey.karlin.mff.cuni.cz More from this publisher
30.06.2013 Views

Kdy je barvení jednoduché? Párování TGH10 - Algoritmy pro zamilované Jan Bˇrezina Technical University of Liberec 7. května 2010

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í

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!