MI-MPI, Přednáška č. 7 Karel Klouda karel.klouda@fit.cvut.cz c KTI, FIT, ČVUT v Praze 28. března, letní semestr 2010/2011
Bipartitní graf definice Definice Graf G = (W, E) se nazývá bipartitní / bipartite, jestliže W = V U, kde V a U jsou neprázdné a disjunktní a jestliže pro každou hranu platí, že jeden její vrchol je z U a druhý z V. Takový bipartitní graf značíme G = ((U, V ), E). Graf je tedy bipartitní, jestliže se dají jeho vrcholy rozdělit do dvou množin tak, že všechny hrany vedou mezi těmito množinami.
Bipartitní graf ukázka V U
Bipartitní graf ukázka V U
Bipartitní graf speciální případy Bud G = ((U, V ), E) bipartitní graf. G je úplný bipartitní graf, jestliže z každého vrcholu z V vedou hrany do všech vrcholů U. Značíme K n,m, kde n a m jsou počty vrcholů ve V, resp. v U. G je regulární (bipartitní) graf, jestliže všechny jeho vrcholy mají stejný stupeň. Věta Graf je bipartitní právě když všechny kružnice v něm jsou sudé délky.
(Stále málo) zřejmý fakt Tvrzení Bud G = ((U, V ), E) bipartitní graf. Označme a V (resp. a U ) průměrný stupeň vrcholu z V (resp. z U). Potom platí a V #V #U = a U. Důkaz. Jistě platí, díky bipartitnosti, že v V deg(v) = u U deg(u). Vydělíme číslem #V #U a máme hotovo a V #U = ( v V deg(v) #V ) 1 #U = ( u U deg(u) #U ) 1 #V = a U #V.
(Stále málo) zřejmý fakt důsledky Je-li G = ((U, V ), E) regulární, pak #U = #V. V průzkumech o promiskuitě se lže a/nebo je žen dvakrát až třikrát více než mužů.
Párování v grafu Definice Bud G = (W, E) graf. M E se nazývá párování / matching v grafu G, jestliže žádné dvě hrany z M nemají společný vrchol. M je maximální párování, jestliže žádné párování nemá více hran, vrchol je M-saturovaný / covered by M, jestliže je vrcholem nějaké hrany z M, M je perfektní párování, jestliže každý vrchol je M-saturovaný.
Párování v grafu ukázka
Párování v grafu ukázka
Maximální párování v bip. grafu Úkol: najít maximální párování v bipartitním grafu. Bipartitní grafy slouží často jako modely pro situace nabídka poptávka : jedna množina vrcholů reprezentuje zákazníky (klienty, žadatele o místo,... ) a druhá jimi poptávané zboží (servery, volná místa,... ), hrana pak znamená zákazník poptává toto zboží. Maximální párování pak znamená maximální možné uspokojení poptávky.
Maximální párování v bip. grafu pomocné pojmy Definice Bud M párování v grafu G = (W, E). Řekneme, že cesta P = v 0, e 1, v 1,..., e n, v n je M-střídající / M-alternating, jestliže každá hrana z M je následována hranou z E \ M a každá hrana z E \ M je následována hranou z M. M-zlepšující / M-augmenting, jestliže je M-střídající a vrcholy v 0 a v n nejsou M-saturované.
Maximální párování v bip. grafu pomocné pojmy párování
Maximální párování v bip. grafu pomocné pojmy alternující cesta
Maximální párování v bip. grafu pomocné pojmy zlepšující cesta
Zlepšování pomocí zlepšujících cest Definice Bud M párování v grafu G a P nějaká M-zlepšující cesta procházející hranami P(E) = {e 1,..., e n }. Potom klademe M P = (M \ P(E)) (P(E) \ M). Lemma M P je opět párování a obsahuje o jednu hranu více než M.
Zlepšování pomocí zlepšujících cest Lemma M P je opět párování a obsahuje o jednu hranu více než M. Důkaz. zlepšující cesta P
Zlepšování pomocí zlepšujících cest Lemma M P je opět párování a obsahuje o jednu hranu více než M. Důkaz. M \ P (E)
Zlepšování pomocí zlepšujících cest Lemma M P je opět párování a obsahuje o jednu hranu více než M. Důkaz. M \ P (E) P (E) \ M
Maximální párování v bip. grafu algoritmus? Návrh algoritmu: Algoritmus Začni z libovolného párování M (třeba prázdného) while existuje M-zlepšující cesta P M = M P return M
Maximální párování v bip. grafu algoritmus? Návrh algoritmu: Algoritmus Začni z libovolného párování M (třeba prázdného) while existuje M-zlepšující cesta P M = M P return M Víme, že v každém kroku párování zlepšíme o jednu hranu, ale najdeme maximální párování?
Správnost algoritmu Věta M je maximální párování v bipartitním grafu právě když v grafu neexistuje M-zlepšující cesta. Důkaz. Implikace ( ) je jasná. Pro důkaz druhé předpokládejme, že M nemá zlepšující cestu ale existuje max. párování M s více hranami. Položme Q = M M : v Q je více hran z M než z M, každý vrchol je vrcholem nejvýše jedné hrany z Q M a nejvýše jedné z Q M, Q je složeno z kružnic a cest, ve kterých se střídají hrany z M a M musí existovat alespoň jedna cesta s více hranami z M než z M (kružnice jsou sudé délky!) tato cesta je
Maximální párování v bip. grafu algoritmus navržený algoritmus lze implementovat s výslednou složitostí O(nm), kde n je počet vrcholů a m je počet hran, podrobnosti viz PDF na EDUXu.
Úplné párování v bip. grafu Definice Bud G = ((U, V ), E) bipartitní graf takový, že #U #V. Řekneme, že párování M je úplné, jestliže všechny vrcholy z U jsou M-saturované. úplné párování je vždy maximální, existuje ve všech bipartitních grafech úplné párování?
Úplné párování v bip. grafu ukázka
Úplné párování v bip. grafu ukázka
Hallova věta Definice Pro vrchol v grafu G = (W, E) definujeme množinu sousedů v takto: N(v) = {u W {v, u} E}. Pro množinu vrcholů S W pak klademe N(S) = u S N(u). Věta (Hallova) Bipartitní graf G = ((U, V ), E), #U #V, má úplné párování právě když pro všechny S podmnožiny U platí #S #N(S).
Hallova věta ilustrace S N(S)
Párování s preferencemi Marriage problem Situace: n zaměstnanců žádá o n volných míst. Každý zaměstnanec má seřazená všechna místa podle priority a stejně tak zaměstnavatelé mají každý seřazené všechny zaměstnance.
Párování s preferencemi Marriage problem Situace: n zaměstnanců žádá o n volných míst. Každý zaměstnanec má seřazená všechna místa podle priority a stejně tak zaměstnavatelé mají každý seřazené všechny zaměstnance. Jak najít nejlepší párování? A jak to nejlepší párování vůbec definovat?
Párování s preferencemi základní vlastnosti jedná se o párování v úplném bipartitním grafu K n,n, existuje tedy vždy perfektní párování (proč?!), dokonce jich existuje n!.
Stabilní párování Uvažujme opět množinu zaměstnanců Z a stejně velkou množinu pracovních míst P; všichni zaměstnanci i zaměstnavatelé mají své preferenční listy (seřazení podle priorit). Bud M nějaké perfektní párování. Řekneme, že pár (z, p), z Z, p P je nestabilní v M, jestliže z a p nejsou spárovaní v M, spárováním z a p by si polepšil jak zaměstnanec z, tak zaměstnavatel nabízející pozici p, M je stabilní, jestliže v M neexistuje nestabilní pár.
Stabilní párování v bipartitním grafu Stabilní párování vždy alespoň jedno existuje, ukážeme si algoritmus, jak jej najít, k popisu použijeme nematematický jazyk, abychom se vyhnuli zavádění zbytečně složitého formalismu, vše je převzato z Open kurzu z MIT (viz EDUX, sekce 5.2).
Stabilní párování v bipartitním grafu preference (1 = nejvyšší) z 1 2 1 p 1 1 2 z 2 2 1 1 2 p 2
Stabilní párování v bipartitním grafu preference (1 = nejvyšší) z 1 2 1 p 1 1 2 z 2 2 1 1 2 p 2
Stabilní párování v bipartitním grafu nestabilní párování z 1 a p 2 jsou nestabilní pár z 1 2 1 p 1 1 2 z 2 2 1 1 2 p 2
Stabilní párování v bipartitním grafu stabilní párování z 1 2 1 p 1 1 2 z 2 2 1 1 2 p 2
Popis problému Máme n žen a n mužů, každá žena i muž má svůj preferenční list, kde má seřazeny všechny osoby opačného pohlaví sestupně podle preference, úkolem je najít stabilní párovaní, tedy takové rozdělení do manželských dvojic, aby si novým sňatkem alespoň jeden z novomanželů pohoršil.
Algoritmus dvořící rituál Dokud není splněna ukončovací podmínka, probíhá každý den takto: Ráno: každá žena stojí na svém balkóně. Každý muž stojí pod balkónem ženy, která je nejvýše v jeho seznamu, a dvoří se jí. Muži s prázdným seznamem jsou doma. Odpoledne: každá žena, pod jejíž balkónem jsou alespoň dva muži, řekne tomu v seznamu nejvýše položenému, aby přišel zítra a ostatním, at už nechodí. Večer: každý odehnaný muž si škrtne ze svého seznamu ženu, která ho dnes odehnala. Ukončovací podmínka: každé ženě se dvoří nejvýš jeden muž.
Dvořící rituál je konečný Tvrzení Ukončovací podmínky je dosaženo nejpozději po n 2 dnech. Důkaz. Každý den si alespoň jeden muž škrtne ze svého seznamu jednu ženu. Maximální počet dní je tedy n = počet mužů krát n = počet žen na seznamu každého muže.
Dvořící rituál vede k perfektnímu párování Tvrzení Dvořící rituál vede k perfektnímu párování, tj. každý je zadaný. Důkaz plyne z následujícího triviálního lemmatu. Lemma Každý den dvořícího rituálu platí tento výrok P: jestliže je žena w vyškrtnutá ze seznamu muže m, pak se ženě dvoří muž, který je v jejím seznamu výše než m. Důkaz tvrzení. Kdyby muž m nebyl spárován v poslední den, pak postupně vyškrtal všechny ženy, ale to by znamenalo, že všechny mají nějakého muže v seznamu nad m, který se jim dvoří a to není možné (žádná bigamie!).
Dvořící rituál vede k perfektnímu párování Tvrzení Dvořící rituál vede ke stabilnímu párování. Důkaz. Bud m a z nespárovaná dvojice. Tato dvojice nemůže tvořit nestabilní pár, nebot : pokud není na konci rituálu žena z na seznamu m, pak to znamená (platí P!), že z byla sprárována s mužem, kterého má v seznamu nad m, pokud je na konci rituálu žena z na seznamu m, pak m zůstal pod balkónem ženy, kterou má v seznamu výše. V obou případech z a m nejsou nestabilní pár.
Dvořící rituál analýza Jelikož stabilní párování nemusí být jednoznačné, může některá osoba při jednom takovém párování dopadnout hůře než při jiném. Definice Pro každou osobu o definujeme možné stabilní partnery jako takové osoby, které tvoří s o pár při nějakém stabilním párování.
Dvořící rituál analýza Jelikož stabilní párování nemusí být jednoznačné, může některá osoba při jednom takovém párování dopadnout hůře než při jiném. Definice Pro každou osobu o definujeme možné stabilní partnery jako takové osoby, které tvoří s o pár při nějakém stabilním párování. Tvrzení Na konci dvořícího rituálu je každý muž spárován s nejlepší možnou ženou ze všech svých možných stabilních partnerů, je každá žena spárována s nejhorším možným mužem ze všech svých možných stabilních partnerů.
Stabilní párování poznámky Pro kompletní bipartitní grafy K n,n vždy alespoň jedno stabilní párování existuje, pro obecné grafy to ovšem neplatí, viz obrázek (dokažte neexistenci stabilního párování!). 3 1 2 3 2 1 3 2 1 1 3 2
Pravděpodobnostní důkazy V teorii grafů se někdy k důkazu existence grafu se speciálními vlastnostmi používají tzv. pravděpodobnostní důkazy. Ty mohou být víceméně dvojího druhu: ukážeme, že pravděpodobnost existence požadovaného útvaru je nenulová, ukážeme, že střední hodnota nějaké kvantifikované veličiny pro náhodný graf je vyšší, než požadovaná mez a tedy tato mez musí být dosažena pro nějaký graf.
Pravděpodobnostní důkazy V teorii grafů se někdy k důkazu existence grafu se speciálními vlastnostmi používají tzv. pravděpodobnostní důkazy. Ty mohou být víceméně dvojího druhu: ukážeme, že pravděpodobnost existence požadovaného útvaru je nenulová, ukážeme, že střední hodnota nějaké kvantifikované veličiny pro náhodný graf je vyšší, než požadovaná mez a tedy tato mez musí být dosažena pro nějaký graf. Analogie pro druhý bod: jestliže průměrná výška studentů je 170 cm, pak jistě existuje alespoň jeden student měřící více jak 169 cm.
Existence velkých bipartitních grafů Věta Bud G = (W, E) graf s 2n vrcholy a m > 0 hranami. Potom existují dvě disjunktní n-prvkové množiny vrcholů A a B tak, že mezi nimi vede více než m/2 hran. Příprava: vybereme náhodně n vrcholů = množina A. Položíme B = W \ A. Necht X označuje počet hran mezi A a B, potom X je náhodná veličina, nebot závisí na náhodném výběru A!!! Pro každou hranu e definujeme jev N e, který nastává, vede-li e mezi A a B. Položme { 1 pokud jev N e nastal, I Ne = 0 jinak, potom zřejmě X = I Ne. e E
Existence velkých bipartitních grafů důkaz Důkaz. Díky linearitě střední hodnoty platí E(X) = e E E(I Ne ) = e E P(N e ), poslední rovnost plyne z faktu: E(I Ne ) = 1 P(I Ne = 1) + 0 P(I Ne = 0) = P(N e ). Ukážeme-li, že P(N e ) > 1/2, je důkaz hotov. Bud e = {u, v}. Zajímá nás pravděp., že pro náhodnou volbu A je u A a v / A nebo naopak. Počet možných výběrů A je ( ) 2n n. Je-li u A a v / A, můžeme zbývajících n 1 prvků A zvolit ( ) 2n 2 n 1 způsoby.
Existence velkých bipartitních grafů důkaz Důkaz. Bud e = {u, v}. Zajímá nás pravděp., že pro náhodnou volbu A ( je u A a v / A nebo naopak. Počet možných výběrů A je 2n ) n. Je-li u A a v / A, můžeme zbývajících n 1 prvků A zvolit ( ) 2n 2 n 1 způsoby. Máme tedy (uvažujeme-li i symetrickou situaci u / A a v A):. P(N e ) = 2( ) 2n 2 n 1 ) = n 2n 1 > 1 2 ( 2n n
Planární grafy Definice Graf je planární, jestliže lze nakreslit tak, že se jeho hrany navzájem nekříží.
Planární grafy Definice Graf je planární, jestliže lze nakreslit tak, že se jeho hrany navzájem nekříží.
Planární grafy Úplný binární graf K 3,3 není planární:?
Eulerův vzorec Každé planární nakreslení grafu rozděluje rovinu na stěny: S 1 S 3 S 2 Věta Bud te n, m a s postupně počet vrcholů, hran a stěn planárního grafu. Potom n m + s = 2. Důsledkem je, že počet stěn nezávisí na způsobu nakreslení!!
Platónská tělesa Platónské těleso je konvexní mnohostěn v trojrozměrném prostoru (v R 3 ). Jeho stěny jsou tvořeny pravidelnými mnohoúhelníky. Úkol: zjistit, jaká Platonská tělesa mohou existovat.
Stereografická projekce Každému konvexnímu mnohostěnu můžeme přiřadit planární graf: konvexní mnohostěn vnoříme do koule a z jejího středu (uvnitř mnohostěnu) promítneme vrcholy a hrany mnohostěnu na povrch koule (stíny vržené žárovkou ve středu koule na stěnu koule) kouli položíme na rovinu R 2 tak, aby žádný z vrcholů na stěně neležel v nejvyšším bodě O koule (severní pól). Nyní promítneme body a hrany na stěně koule z bodu O na rovinu, na které koule leží (žárovka je nyní v bodě O). Výsledek je, díky konvexnosti, planární graf.
Existence platónských těles Označme počet vrcholů, hran a stěn postupně n, m a s (odpovídá počtu vrcholů, hran a stěn původního mnohostěnu). Bud dále d stupeň vrcholů a k počet vrcholů stěn (tato čísla musí být stejná a větší než 2, díky pravidelnosti mnohostěnu) Platí (první rovnost je známý vzorec pro součet stupňů a druhý je počet uspořádaných dvojic (hrana, stěna)): dn = 2m a ks = 2m. Po dosazení do Eulerova vzorce dostaneme 2 = n m + s = 2m d m + 2m k.
Existence platónských těles. dn = 2m a ks = 2m. Po dosazení do Eulerova vzorce dostaneme 2 = n m + s = 2m d m + 2m k. A tato rovnice má pouze 6 násl. řešení (viz cvičení): d k n m s 3 3 4 6 4 3 4 8 12 6 3 5 20 30 12 4 3 6 12 8 5 3 12 30 20
Úkoly Úkol č. 1: Najděte algoritmus, který najde všechna stabilní párování. Úkol č. 2: Najděte takové nastavení problému stabilního párovaní (pro 7 mužů a 7 žen), aby byl dvořící rituál co nejdelší. Úkol č. 3: Najít stabilní párování pro konkrétní situaci, která se objeví na EDUXu dnes ve 20:00. Úkol č. 4: Vyřešit úkol, který se objeví na EDUXu nejpozději do středy (soutěž o nejlepší nalezené řešení, která potrvá až do začátku zkouškového) Úkoly posílejte na můj email a sledujte EDUX (stránka přednášky č. 7)!
Literatura J. Kolář, Teoretická informatika, skriptum FEL všechny možné základní algoritmy, podrobný úvod J. Matoušek a J. Nešetřil, Kapitoly z diskrétní matematiky velmi čtivý úvod (nejen) do teorie grafů Mathematics for computer science, MIT OpenCourseWare http://ocw.mit.edu/ a také viz EDUX R. Montowani a P. Raghavan, Randomized algorithms pravděpodobnostní algoritmy nejen grafové