Maximális párosítás keresése, K ˝ onig tétel, Hall feltétel
Papp László
BME
2021. november 12.
Emlékeztet ˝o: Páros gráfok
Definíció:EgyGgráfpáros gráf, haV(G)felosztható két részre,A-ra ésB-re úgy, hogyA-n ésB-n belül nem vezetnek élek.Ekkor aGgráfot úgy is jelölhetjük, hogyG= (A,B;E).
Példa:Hetero Tinder: Csúcsok az emberek, élek a matchek, A={Férfiak},B={N ˝ok}.
A
B
Emlékeztet ˝o: Párosítás
Definíció:EgyGgráfbanE(G)egyMrészhalmazát párosításnakvagy másnévenfüggetlen élek halmazának nevezzük, haMsemelyik két elemének nincs közös végpontja.
Példa páros gráf estén:
A B
M
Nem páros gráfban is van párosítás!Példa:
M
Emlékeztet ˝o: Maximális vs tovább nem b ˝ovíthet ˝o párosítás A magyar nyelv a maximális szót két különböz ˝o fogalomra is használja:
I EgyAhalmaz maximális ha a mérete nagyobb értéket nem vehet fel. (In English: maximum)
I EgyBhalmaz maximális ha tovább nem b ˝ovíthet ˝o. (In English: maximal)
A kett ˝o nem ugyan az, az alábbi gráfbanMtovább nem b ˝ovíthet ˝o, de van nála több élet tartalmazó párostásN:
M N
Definíció:AGgráfmaximális párosításánegy olyan párosítást értünk aminek a lehet ˝o legtöbb éle van.
Példán azNilyen, viszont azMnem!
Hogyan keressünk maximális párosítást páros gráfban?
Úgynevezett javító utakkal.
Definíció:LegyenMegy párosítás egyGpáros gráfban.
Ekkor egyP utatalternáló útnaknevezzük haP felváltva tartalmazM-beli és nemM-beli éleket. Egy alternáló utatjavító útnak nevezünkha az út párosítatlan csúcsból indul és
párosítatlan csúcsban ér véget.
Miért jók ezek? Mert a javítóút párosításba tartozó éleit a párosításból kidobva és a javítóút többi élét hozzáadva eggyel nagyobb párosítást kapok. Ez m ˝uködik tovább nem b ˝ovíthet ˝o de nem maximális párosítások esetén is.
Max párosítás keresés javítóutas algoritmussal Input: EgyGpáros gráf.
0. LegyenM =∅.
1. Ha van olyan éleG-nek, aminek nincs közös végpontja semelyikM-beli éllel, akkor ezt az élet hozzáadomM-hez és az 1-es lépést újra próbálom. Különben a 2-es lépéssel folytatom.
2. Javító utat keresek. Ha nincs akkor OutputMés STOP, különben a 3-as lépéssel folytatom.
3. LegyenX a javítóút éleinek azon része amelyekM-ben szerepelnek ésY pedig azM-ben nem szerepl ˝o élei.
M := (M\X)∪Y és a 2. lépésre ugrok.
Max párosítás keresés javítóutas algoritmussal Input: EgyGpáros gráf.
0. LegyenM =∅.
1. Ha van olyan éleG-nek, aminek nincs közös végpontja semelyikM-beli éllel, akkor ezt az élet hozzáadomM-hez és az 1-es lépést újra próbálom. Különben a 2-es lépéssel folytatom.
2. Javító utat keresek. Ha nincs akkor OutputMés STOP, különben a 3-as lépéssel folytatom.
3. LegyenX a javítóút éleinek azon része amelyekM-ben szerepelnek ésY pedig azM-ben nem szerepl ˝o élei.
M := (M\X)∪Y és a 2. lépésre ugrok.
Max párosítás keresés javítóutas algoritmussal Input: EgyGpáros gráf.
0. LegyenM =∅.
1. Ha van olyan éleG-nek, aminek nincs közös végpontja semelyikM-beli éllel, akkor ezt az élet hozzáadomM-hez és az 1-es lépést újra próbálom. Különben a 2-es lépéssel folytatom.
2. Javító utat keresek. Ha nincs akkor OutputMés STOP, különben a 3-as lépéssel folytatom.
3. LegyenX a javítóút éleinek azon része amelyekM-ben szerepelnek ésY pedig azM-ben nem szerepl ˝o élei.
M := (M\X)∪Y és a 2. lépésre ugrok.
Max párosítás keresés javítóutas algoritmussal Input: EgyGpáros gráf.
0. LegyenM =∅.
1. Ha van olyan éleG-nek, aminek nincs közös végpontja semelyikM-beli éllel, akkor ezt az élet hozzáadomM-hez és az 1-es lépést újra próbálom. Különben a 2-es lépéssel folytatom.
2. Javító utat keresek. Ha nincs akkor OutputMés STOP, különben a 3-as lépéssel folytatom.
3. LegyenX a javítóút éleinek azon része amelyekM-ben szerepelnek ésY pedig azM-ben nem szerepl ˝o élei.
M := (M\X)∪Y és a 2. lépésre ugrok.
Max párosítás keresés javítóutas algoritmussal Input: EgyGpáros gráf.
0. LegyenM =∅.
1. Ha van olyan éleG-nek, aminek nincs közös végpontja semelyikM-beli éllel, akkor ezt az élet hozzáadomM-hez és az 1-es lépést újra próbálom. Különben a 2-es lépéssel folytatom.
2. Javító utat keresek. Ha nincs akkor OutputMés STOP, különben a 3-as lépéssel folytatom.
3. LegyenX a javítóút éleinek azon része amelyekM-ben szerepelnek ésY pedig azM-ben nem szerepl ˝o élei.
M := (M\X)∪Y és a 2. lépésre ugrok.
Max párosítás keresés javítóutas algoritmussal Input: EgyGpáros gráf.
0. LegyenM =∅.
1. Ha van olyan éleG-nek, aminek nincs közös végpontja semelyikM-beli éllel, akkor ezt az élet hozzáadomM-hez és az 1-es lépést újra próbálom. Különben a 2-es lépéssel folytatom.
2. Javító utat keresek. Ha nincs akkor OutputMés STOP, különben a 3-as lépéssel folytatom.
3. LegyenX a javítóút éleinek azon része amelyekM-ben szerepelnek ésY pedig azM-ben nem szerepl ˝o élei.
M := (M\X)∪Y és a 2. lépésre ugrok.
Hogyan találjunk javító utat páros gráfban?
Használhatjuk a BFS algoritmus:
Irányítsuk meg azMpárosítás beli éleketAfelé, a többi élet pedigBfelé.
A
B
Az így kapott irányított gráfban indítsuk el a BFS algoritmust mindenA-beliM által le nem fedett csúcsból.
Ha valamelyik bejárási fában van olyanB-beli levél amit nem fed leM, akkor van egy egyértelm ˝u út ezen csúcs és egyA-beli fedetlen csúcs között (ahonnan az adott BFS indult), ráadásul ez az út egy javító út. Ha semelyik bejárási fában nincsB-beli levél amit nem fed leM, akkor javítóút sincs.
Hogyan találjunk javító utat páros gráfban?
Használhatjuk a BFS algoritmus:
Irányítsuk meg azMpárosítás beli éleketAfelé, a többi élet pedigBfelé.
A
B
Az így kapott irányított gráfban indítsuk el a BFS algoritmust mindenA-beliM által le nem fedett csúcsból.
Ha valamelyik bejárási fában van olyanB-beli levél amit nem fed leM, akkor van egy egyértelm ˝u út ezen csúcs és egyA-beli fedetlen csúcs között (ahonnan az adott BFS indult), ráadásul ez az út egy javító út. Ha semelyik bejárási fában nincsB-beli levél amit nem fed leM, akkor javítóút sincs.
Hogyan találjunk javító utat páros gráfban?
Használhatjuk a BFS algoritmus:
Irányítsuk meg azMpárosítás beli éleketAfelé, a többi élet pedigBfelé.
A
B
Az így kapott irányított gráfban indítsuk el a BFS algoritmust mindenA-beliM által le nem fedett csúcsból.
Ha valamelyik bejárási fában van olyanB-beli levél amit nem fed leM, akkor van egy egyértelm ˝u út ezen csúcs és egyA-beli fedetlen csúcs között (ahonnan az adott BFS indult), ráadásul ez az út egy javító út. Ha semelyik bejárási fában nincsB-beli levél amit nem fed leM, akkor javítóút sincs.
Hogyan találjunk javító utat páros gráfban?
Használhatjuk a BFS algoritmus:
Irányítsuk meg azMpárosítás beli éleketAfelé, a többi élet pedigBfelé.
A
B
Az így kapott irányított gráfban indítsuk el a BFS algoritmust mindenA-beliM által le nem fedett csúcsból.
Ha valamelyik bejárási fában van olyanB-beli levél amit nem fed leM, akkor van egy egyértelm ˝u út ezen csúcs és egyA-beli fedetlen csúcs között (ahonnan az adott BFS indult), ráadásul ez az út egy javító út. Ha semelyik bejárási fában nincsB-beli levél amit nem fed leM, akkor javítóút sincs.
Hogyan találjunk javító utat páros gráfban?
Használhatjuk a BFS algoritmus:
Irányítsuk meg azMpárosítás beli éleketAfelé, a többi élet pedigBfelé.
A
B
Az így kapott irányított gráfban indítsuk el a BFS algoritmust mindenA-beliM által le nem fedett csúcsból.
Ha valamelyik bejárási fában van olyanB-beli levél amit nem fed leM, akkor van egy egyértelm ˝u út ezen csúcs és egyA-beli fedetlen csúcs között (ahonnan az adott BFS indult), ráadásul ez az út egy javító út. Ha semelyik bejárási fában nincsB-beli levél amit nem fed leM, akkor javítóút sincs.
Hogyan találjunk javító utat páros gráfban?
Használhatjuk a BFS algoritmus:
Irányítsuk meg azMpárosítás beli éleketAfelé, a többi élet pedigBfelé.
A
B
Az így kapott irányított gráfban indítsuk el a BFS algoritmust mindenA-beliM által le nem fedett csúcsból.
Ha valamelyik bejárási fában van olyanB-beli levél amit nem fed leM, akkor van egy egyértelm ˝u út ezen csúcs és egyA-beli fedetlen csúcs között (ahonnan az adott BFS indult), ráadásul ez az út egy javító út. Ha semelyik bejárási fában nincsB-beli levél amit nem fed leM, akkor javítóút sincs.
Hogyan találjunk javító utat páros gráfban?
Használhatjuk a BFS algoritmus:
Irányítsuk meg azMpárosítás beli éleketAfelé, a többi élet pedigBfelé.
A
B
Az így kapott irányított gráfban indítsuk el a BFS algoritmust mindenA-beliM által le nem fedett csúcsból.
Ha valamelyik bejárási fában van olyanB-beli levél amit nem fed leM, akkor van egy egyértelm ˝u út ezen csúcs és egyA-beli fedetlen csúcs között (ahonnan az adott BFS indult), ráadásul ez az út egy javító út. Ha semelyik bejárási fában nincsB-beli levél amit nem fed leM, akkor javítóút sincs.
Hogyan találjunk javító utat páros gráfban?
Használhatjuk a BFS algoritmus:
Irányítsuk meg azMpárosítás beli éleketAfelé, a többi élet pedigBfelé.
A
B
Az így kapott irányított gráfban indítsuk el a BFS algoritmust mindenA-beliM által le nem fedett csúcsból.
Ha valamelyik bejárási fában van olyanB-beli levél amit nem fed leM, akkor van egy egyértelm ˝u út ezen csúcs és egyA-beli fedetlen csúcs között (ahonnan az adott BFS indult), ráadásul ez az út egy javító út. Ha semelyik bejárási fában nincsB-beli levél amit nem fed leM, akkor javítóút sincs.
Miért m ˝uködik a javítóutas algoritmus?
Állítás:Ha aG(nem feltétlenül páros) gráfban lév ˝oM párosítás nem maximális, akkor van hozzá javítóút.
Bizonyítás:LegyenN egy maximális párosítás.|N|>|M|.
Nézzük a G azon részgráfját aminek az élhalmazaM∪N.
M
N javito
egy ut
Ebben minden csúcs foka legfeljebb 2, emiatt minden összefügg ˝o komponense kör vagy út. Mivel|N|>|M|, ezért van olyan komponens ami több élet tartalmazN-b ˝ol mintM-b ˝ol. Ez a komponens mindenképpen út, aminek kezd ˝o és
végpontját nem fogja leMés az élei felváltva találhatóakN-ben ésM-ben. Tehát ez egy javítóútM-hez.
Miért m ˝uködik a javítóutas algoritmus?
Állítás:Ha aG(nem feltétlenül páros) gráfban lév ˝oM párosítás nem maximális, akkor van hozzá javítóút.
Bizonyítás:LegyenN egy maximális párosítás.|N|>|M|.
Nézzük a G azon részgráfját aminek az élhalmazaM∪N.
M N
egy javito
ut
Ebben minden csúcs foka legfeljebb 2, emiatt minden összefügg ˝o komponense kör vagy út.
Mivel|N|>|M|, ezért van olyan komponens ami több élet tartalmazN-b ˝ol mintM-b ˝ol. Ez a komponens mindenképpen út, aminek kezd ˝o és
végpontját nem fogja leMés az élei felváltva találhatóakN-ben ésM-ben. Tehát ez egy javítóútM-hez.
Miért m ˝uködik a javítóutas algoritmus?
Állítás:Ha aG(nem feltétlenül páros) gráfban lév ˝oM párosítás nem maximális, akkor van hozzá javítóút.
Bizonyítás:LegyenN egy maximális párosítás.|N|>|M|.
Nézzük a G azon részgráfját aminek az élhalmazaM∪N.
M N
egy ut javito
Ebben minden csúcs foka legfeljebb 2, emiatt minden összefügg ˝o komponense kör vagy út. Mivel|N|>|M|, ezért van olyan komponens ami több élet tartalmazN-b ˝ol mintM-b ˝ol.
Ez a komponens mindenképpen út, aminek kezd ˝o és
végpontját nem fogja leMés az élei felváltva találhatóakN-ben ésM-ben. Tehát ez egy javítóútM-hez.
Miért m ˝uködik a javítóutas algoritmus?
Állítás:Ha aG(nem feltétlenül páros) gráfban lév ˝oM párosítás nem maximális, akkor van hozzá javítóút.
Bizonyítás:LegyenN egy maximális párosítás.|N|>|M|.
Nézzük a G azon részgráfját aminek az élhalmazaM∪N.
M N
ut javito egy
Ebben minden csúcs foka legfeljebb 2, emiatt minden összefügg ˝o komponense kör vagy út. Mivel|N|>|M|, ezért van olyan komponens ami több élet tartalmazN-b ˝ol mintM-b ˝ol.
Ez a komponens mindenképpen út, aminek kezd ˝o és
végpontját nem fogja leMés az élei felváltva találhatóakN-ben ésM-ben. Tehát ez egy javítóútM-hez.
Gráfparaméterek páros gráfok esetén K ˝onig tétel
HaGgráf páros gráf, akkorν(G) =τ(G).
Állítás
HaGgráf páros gráf és nincs izolált pontja, akkorα(G) =ρ(G). Bizonyítás:K ˝onig szerintν(G) =τ(G). Mivel a gráf páros ezért nem lehet benne hurokél, és feltevésünk szerint nincs izolált pontja sem. Úgyhogy alkalmazhatjuk Gallai tételeit:
n−ρ(G) =ν(G) =τ(G) =n−α(G) ρ(G) =α(G)
Gráfparaméterek páros gráfok esetén K ˝onig tétel
HaGgráf páros gráf, akkorν(G) =τ(G).
Állítás
HaGgráf páros gráf és nincs izolált pontja, akkorα(G) =ρ(G).
Bizonyítás:K ˝onig szerintν(G) =τ(G). Mivel a gráf páros ezért nem lehet benne hurokél, és feltevésünk szerint nincs izolált pontja sem. Úgyhogy alkalmazhatjuk Gallai tételeit:
n−ρ(G) =ν(G) =τ(G) =n−α(G) ρ(G) =α(G)
K ˝onig tétel bizonyítása:
LegyenM egy maximális párosítás aGpáros gráfban és legyenFAazAszínosztályban azM által fedetlen csúcsok halmaza. AzM FA-ból alternáló úton elérhet ˝o éleinek válasszuk ki aB-be es ˝o végpontjait. AzM többi élének válasszuk ki az A-ba tartozó végpontjait. Jelölje a kiválasztott pontokatT.
A
B
M F
AT
EkkorT lefog minden élet, hiszen ha lenne egyT által le nem fogott él, akkor annak azAbeli végpontja elérhet ˝o alternáló útonFA-ból. Ekkor viszont aBbeli végpontja is elérhet ˝oFA-ból alternáló úton, amitMnem fedT választása miatt. Viszont ez az alternáló út javítóút lenne, ami nincs mertMmaximális. EmiattT lefogó ponthalmaz és ígyτ(G)≤ |T|=|M|=ν(G). Aτ(G)≥ν(G)egyenl ˝otlenség pedig minden gráfra igaz.
K ˝onig tétel bizonyítása:
LegyenM egy maximális párosítás aGpáros gráfban és legyenFAazAszínosztályban azM által fedetlen csúcsok halmaza. AzM FA-ból alternáló úton elérhet ˝o éleinek válasszuk ki aB-be es ˝o végpontjait. AzM többi élének válasszuk ki az A-ba tartozó végpontjait. Jelölje a kiválasztott pontokatT.
A
B
M F
AT
EkkorT lefog minden élet, hiszen ha lenne egyT által le nem fogott él, akkor annak azAbeli végpontja elérhet ˝o alternáló útonFA-ból. Ekkor viszont aBbeli végpontja is elérhet ˝oFA-ból alternáló úton, amitMnem fedT választása miatt. Viszont ez az alternáló út javítóút lenne, ami nincs mertMmaximális.
EmiattT lefogó ponthalmaz és ígyτ(G)≤ |T|=|M|=ν(G).
Aτ(G)≥ν(G)egyenl ˝otlenség pedig minden gráfra igaz.
Teljes párosítás, A-t fed ˝o párosítás
Definíció:AGgráfnakMegyteljes párosítása, haM párosítás ésGminden csúcsára illeszkedik egyMbeli él.
M
DefinícióEgyGgráfban legyenAa csúcsok egy részhalmaza.
EkkorNegyA-t fed ˝o párosításhaAminden elemére illeszkedik egyN beli él.
N
A
Párosítás páros gráfban
Definíció:LegyenX aGgráf csúcsainak egy részhalmaza.
EkkorN(X)-szel jelöljük azX szomszédainak halmazát.
X
N(X)
Hall feltétel
Legyen aGpáros gráf két színosztályaAésB, azaz
G= (A,B;E). Ekkor aGgráfnak pontosan akkor vanA-t fed ˝o párosítása, amikor azAmindenX részhalmazára igaz, hogy
|N(X)| ≥ |X|.
A szükségesség triviális (3 férfi nem tud feleségül venni összesen 2 n ˝ot), az elégségesség bizonyítása pedig most jön.
Hall feltétel bizonyítása:
Az elégségességet bizonyítjuk csak, a szükségessék triviális.
Tegyük fel tehát, hogy|N(X)| ≥ |X|mindenX ⊆A-ra! Azt fogjuk megmutatni, hogyν(G)≥ |A|ami igazolja, hogy vanA-t fed ˝o párosítás.
A B
T T
AT
BLegyenT egy minimális lefogó ponthalmazG-ben. Legyen TA:=T ∩AésTB :=T ∩B. MivelT lefogja azA\TA-ból kiinduló éleket ezért,N(A\TA)⊆TB. Így:
|A|=|TA|+|A\TA| ≤ |TA|+|N(A\TA)| ≤ |TA|+|TB|=τ(G) =ν(G) Az utolsó egyenl ˝oségnél a K ˝onig tételt használtuk fel. .
Hall feltétel bizonyítása:
Az elégségességet bizonyítjuk csak, a szükségessék triviális.
Tegyük fel tehát, hogy|N(X)| ≥ |X|mindenX ⊆A-ra! Azt fogjuk megmutatni, hogyν(G)≥ |A|ami igazolja, hogy vanA-t fed ˝o párosítás.
A B
T T
AT
BLegyenT egy minimális lefogó ponthalmazG-ben. Legyen TA:=T ∩AésTB :=T ∩B. MivelT lefogja azA\TA-ból kiinduló éleket ezért,N(A\TA)⊆TB.
Így:
|A|=|TA|+|A\TA| ≤ |TA|+|N(A\TA)| ≤ |TA|+|TB|=τ(G) =ν(G) Az utolsó egyenl ˝oségnél a K ˝onig tételt használtuk fel. .
Hall feltétel bizonyítása:
Az elégségességet bizonyítjuk csak, a szükségessék triviális.
Tegyük fel tehát, hogy|N(X)| ≥ |X|mindenX ⊆A-ra! Azt fogjuk megmutatni, hogyν(G)≥ |A|ami igazolja, hogy vanA-t fed ˝o párosítás.
A B
T T
AT
BLegyenT egy minimális lefogó ponthalmazG-ben. Legyen TA:=T ∩AésTB :=T ∩B. MivelT lefogja azA\TA-ból kiinduló éleket ezért,N(A\TA)⊆TB. Így:
|A|=|TA|+|A\TA| ≤ |TA|+|N(A\TA)| ≤ |TA|+|TB|=τ(G) =ν(G) Az utolsó egyenl ˝oségnél a K ˝onig tételt használtuk fel. .
Teljes párosítás létezése páros gráfban Frobenius tétel
LegyenG= (A,B;E)páros gráf. EkkorG-ben pontosan akkor van teljes párosítás ha|A|=|B|és ha azAmindenX
részhalmazára igaz, hogy|N(X)| ≥ |X|.
Bizonyítás:Vegyük észre, hogy a Frobénius tétel feltétele a Hall-feltétel plusz az, hogy azAésBmérete megegyezik.
Van TP =⇒ feltételek:
Ha a gráfban van teljes párosítás, akkor annak minden éle pontosan egyAés egyBbeli csúcsra illeszkedik és minden csúcsra illeszkedik pontosan egy él. Emiatt|A|=|B|. Illetve a teljes párosítás egyben egyA-t fed ˝o párosítás is amire a Hall-feltételnek teljesülnie kell.
Feltételek =⇒ van TP:
Ha a Hall-feltétel teljesül, akkor a gráfban vanA-t fed ˝o
párosítás. Mivel|A|=|B|ezért ez a párosítás egybenB-t fed ˝o párosítás is, ami miatt teljes párosítás.