hledání zlepšující cesty 01ZTGB ~ Základy Teorie Grafů B Edmondsova metoda hledání zlepšující cesty Zdeněk Fikar 26.11.2010
Párování v grafech Def.: G = (V,E). Párování na G je podmnožina M množiny E(G) taková, že žádné dvě její hrany nemají společný vrchol. Def.: Vrchol v grafu G je M-saturován, existuje-li v M hrana, která je s ním incidentní. Def.: Párování M na G je maximální, pokud pro všechna M’ párování na G platí #M ≥ #M’.
Praktické aplikace párování 3 nejčastější typy úloh: Najít maximální párování Najít nejdražší maximální párování Najít nejlevnější maximální párování
M-střídající cesta Def.: M-střídající cesta vzhledem k párování M je taková neorientovaná cesta, jejíž hrany střídavě leží a neleží v M. Def.: M-střídající cesta, jejíž oba krajní vrcholy nejsou M-saturovány, se nazývá zlepšující cesta vzhledem k párování M. Věta: M je maximální párování v G <=> neexistuje zlepšující cesta vzhledem k M.
Zadání úkolu Policisté provádí pochůzky po dvojicích. V dané lokalitě se někteří policisté již znají (platí vzájemně). Sestavte dvojice pro pochůzky tak, aby počet “neznámých” dvojic byl minimální
Konkrétní příklad Mějme 12 policistů. Graf udává, kdo koho zná:
Řešení Hledáme maximální párování pomocí zlepšující cesty
Obecný předpis while existuje M-zlepšující cesta v grafu G begin z M vynecháme sudé hrany M-zlepšující cesty; do M přidáme liché hrany M-zlepšující cesty; end
Hledání M-zlepšující cesty Pro nalezení M-zlepšující cesty v grafu G použijeme Edmondsovu metodu
Edmondsova metoda Výchozí nastavení: Předpokládejme, že máme libovolné párování M v grafu G Všechny vrcholy a hrany budou na začátku neoznačené Označíme hrany zařazené do párování M Pro každý nesaturovaný vrchol grafu G vytvoříme samostatný strom F
Edmondsova metoda Výchozí nastavení:
Edmondsova metoda (A) Existuje neoznačený vrchol v v nějakém stromě F, jehož vzdálenost od kořene v je sudá? NE => Nalezené párování je již maximální ANO => Přejdi na podmínku (B)
Edmondsova metoda (B) Existuje neoznačená hrana e = {v,w} ? NE => Označ vrchol v a vrať se na podmínku (A) ANO => Přejdi na podmínku (C)
Edmondsova metoda
Edmondsova metoda
Edmondsova metoda (C) Je již w zařazeno ve stromě F ? NE => Najdi vrchol x, který je spárovaný s w v M a přidej hrany {v,w} a {w,x} do stromu, jehož kořenem je v; označ hranu e = {v,w} a vrať se na podmínku (B) ANO => Přejdi na podmínku (D)
Edmondsova metoda
Edmondsova metoda (B) Existuje neoznačená hrana e = {v,w} ? NE => Označ vrchol v a vrať se na podmínku (A) ANO => Přejdi na podmínku (C)
Edmondsova metoda
Edmondsova metoda (C) Je již w zařazeno ve stromě F ? NE => Najdi vrchol x, který je spárovaný s w v M a přidej hrany {v,w} a {w,x} do stromu, jehož kořenem je v; označ hranu e = {v,w} a vrať se na podmínku (B) ANO => Přejdi na podmínku (D)
Edmondsova metoda (D) Je vzdálenost w od kořene w sudá ? NE => Označ hranu e = {v,w} a vrať se na podmínku (B) ANO => Přejdi na podmínku (E)
Edmondsova metoda (E) Je kořen vrcholu w shodný s kořenem vrcholu v ? NE => P = [střídavá cesta Av (od kořene v k v)] sjednoceno [střídavá cesta Aw (od w ke kořeni w)]; RETURN P ANO => Sjednocení Av a Aw vytváří květ (střídavou kružnici)
Edmondsova metoda
Edmondsova metoda Květ se odřízne jak od grafu G, tak od párování M => G’, M’ Rekurzivně se hledá zlepšující cesta P’ na grafu G’ s výchozím párováním M’ Návrat ke grafu G a párování M RETURN P
Edmondsova metoda
Edmondsova metoda
Edmondsova metoda
Edmondsova metoda
Edmondsova metoda
Edmondsova metoda
Edmondsova metoda
Rozvoj redukovaných květů K2 – 4 – K3 – 12 K2 – 4 – 5 – 6 – 7 – 12 K1 – 9 – 3 – 4 – 5 – 6 – 7 – 12 1 – 2 – 8 – 9 – 3 – 4 – 5 – 6 – 7 - 12
Zlepšující cesta
Maximální párování
Nalezené řešení 1 2 3 4 5 6 7 12 8 9 10 11 Žádná dvojice nebude muset být vytvořena direktivně
Realizace v MATLABu
Realizace v MATLABu Knihovna 20 funkcí Materiály na webu: - čeština: chybné - angličtina: pouze zjednodušeně Nutnost vymyslet vlastní algoritmus pro zpětný rozvoj redukovaných květů
Děkuji za pozornost.