You are on page 1of 35

Párosítások páros gráfokban

Definíció
Adott G = (V, E) gráfban független élek halmazát párosításnak
hívjuk (azaz olyan élek, amiknek nincs közös csúcsúk).

Fedett (párosított) csúcsok, akik a párosítás valamely élének


végpontjai. A többi csúcsot fedetlennek (párosítatlannak)
hívjuk.
Definíció
A független élek maximális számát, vagyis a legnagyobb
párosítás elemszámát jelöle ν(G).
Egy párosítás teljes, ha a gráf összes csúcsát lefedi.
Teljes párosítást szokás 1-faktornak is hívni. (k-faktor
olyan részgráf, ami fed minden csúcsot, és minden
fokszáma k).
Definíció
A G gráfban jelölje τ (G) az éleket lefogó minimális pontok
számát.

ábra: Példa lefogó ponthalmazra

Páros gráf: olyan gráf, ahol a csúcsok két osztályra oszthatók,


hogy az osztályon belül nem megy él, jelölés G = (A, B; E).

Tétel (Kőnig)
Tetszőleges G = (A, B; E) páros gráfban ν(G) = τ (G).
Definíció
A G gráfban jelölje τ (G) az éleket lefogó minimális pontok
számát.

ábra: Példa lefogó ponthalmazra

Páros gráf: olyan gráf, ahol a csúcsok két osztályra oszthatók,


hogy az osztályon belül nem megy él, jelölés G = (A, B; E).

Tétel (Kőnig)
Tetszőleges G = (A, B; E) páros gráfban ν(G) = τ (G).
Definíció
A G gráfban jelölje τ (G) az éleket lefogó minimális pontok
számát.

ábra: Példa lefogó ponthalmazra

Páros gráf: olyan gráf, ahol a csúcsok két osztályra oszthatók,


hogy az osztályon belül nem megy él, jelölés G = (A, B; E).

Tétel (Kőnig)
Tetszőleges G = (A, B; E) páros gráfban ν(G) = τ (G).
Bizonyítás:
Triviális irány: ν ≤ τ , hiszen a maximális elemszámú
párosítás minden élének legalább egyik csúcsát le kell
fogni.
Algoritmikusan konstruálunk egy M párosítást és egy L
lefogó halmazt melyekre |M | = |L|. Ez bizonyítja, hogy
τ ≤ ν.
Adott M párosítás, ez kezdetben üres. Irányítsuk M éleit B-ből
A-ba (fölfelé), a többi élt pedig A-ból B-be (lefelé):

Legyen RA ⊆ A és RB ⊆ B rendre az M által fedetlenül


hagyott pontok halmaza, Z pedig az RA -ból irányított úton
elérhető pontok halmaza.

Z
RA
A

B RB
Adott M párosítás, ez kezdetben üres. Irányítsuk M éleit B-ből
A-ba (fölfelé), a többi élt pedig A-ból B-be (lefelé):

Legyen RA ⊆ A és RB ⊆ B rendre az M által fedetlenül


hagyott pontok halmaza, Z pedig az RA -ból irányított úton
elérhető pontok halmaza.

Z
RA
A

B RB
Ha Z ∩ RB nem üres, akkor létezik egy RA -ból RB -be vezető
alternáló P út, amely minden második éle M -beli. Vegyük M
és P szimmetrikus differenciáját, M 0 -t. M 0 -ben P pontosan
azon élei vannak benne, amik M -ben nincsenek.

A RA

B RB
P

Könnyen látszik, hogy M 0 is párosítás, és több éle van, mint


M -nek (P -nek páratlan sok éle van, kevesebb éle van M -ben,
mint M -en kívül).

Az új M 0 párosításhoz is elkészítjük az irányított segédgráfot az


előbbi módon.
Ha Z ∩ RB nem üres, akkor létezik egy RA -ból RB -be vezető
alternáló P út, amely minden második éle M -beli. Vegyük M
és P szimmetrikus differenciáját, M 0 -t. M 0 -ben P pontosan
azon élei vannak benne, amik M -ben nincsenek.

A RA

B RB
P

Könnyen látszik, hogy M 0 is párosítás, és több éle van, mint


M -nek (P -nek páratlan sok éle van, kevesebb éle van M -ben,
mint M -en kívül).

Az új M 0 párosításhoz is elkészítjük az irányított segédgráfot az


előbbi módon.
Előfordulhat, hogy az aktuális M párosításra Z és RB
diszjunktak.

A RA

B RB

Ekkor viszont Z ∩ A és B − Z között nem megy él:


Z ∩ A-ból nem léphet ki él B − Z-be Z definíciója miatt
B − Z-ből sem léphet él A ∩ Z-be, mert annak M -beli
élnek kéne lennie, de a végpont csak ezen az M -beli élen
érhető el.

B
Előfordulhat, hogy az aktuális M párosításra Z és RB
diszjunktak.

A RA

B RB

Ekkor viszont Z ∩ A és B − Z között nem megy él:


Z ∩ A-ból nem léphet ki él B − Z-be Z definíciója miatt
B − Z-ből sem léphet él A ∩ Z-be, mert annak M -beli
élnek kéne lennie, de a végpont csak ezen az M -beli élen
érhető el.

B
L = (B ∩ Z) ∪ (A − Z) lefogó ponthalmaz
1 A − Z lefog minden nem Z-beli élt (mert B − Z és A ∩ Z
között nincs él).
2 B ∩ Z lefog minden Z-beli élt, mert Z összefüggő.

M minden élének legfeljebb az egyik csúcsa van L-ben,


mert ha a kezdőpont L-ben van, Z definíciója miatt nem
lenne L-ben a végpont.
Minden L-beli csúcs rajta van M egyik élén.
Így |L| ≤ |M |
Adjunk lépésszám becslést az algoritmusra:
1 Egy fázis lépésszáma: Élek megirányítása, Z
megkeresése, RB ∩ Z meghatározásam, javító út mentén
javítás. Mind elvégezhető O(m) időben. (m a fokszám).
2 Minden fázisban 1-gyel nő M . A fázisok száma O(n) (n a
kisebb csúcsosztály elemszáma).
3 Összesített lépésszám: O(mn).
Teljes párosítások

Az N (X) jelölés az X halmaz szomszédai. Azaz az olyan


csúcsok halmaza, akiknek van közös élük X-szel.
Tétel (Frobenius)
A G = (A, B; E) páros gráfban akkor és csak akkor létezik
teljes párosítás, ha |A| = |B| és minden X ⊆ A : |N (X)| ≥ |X|.

Megjegyzés
∀X ⊆ A : |N (X)| ≥ |X| feltételt Hall-feltételnek hívjuk.

Tétel (Hall)
A G = (A, B; E) páros gráfban akkor és csak akkor létezik A-t
fedő párosítás, ha A-ra teljesül a Hall-feltétel (azaz minden
X ⊆ A : |N (X)| ≥ |X|).
Bizonyítás (Hall-tétel):
Egyfelől a Hall-feltétel szükséges. Hiszen ha egy X ⊆ A
halmazra |X| > |N (X)|, akkor már X-et sem lehet
bepárosítani.
Másfelől tegyük fel, hogy a feltétel igaz. Legyen L minimális
lefogó ponthalmaz. X = A − L halmazra teljesül a Hall-feltétel,
ezért |X| ≤ |N (X)|. L lefogó, ezért N (X) ⊆ B ∩ L és így
|N (X)| ≤ |B ∩ L|.
|A| = |A ∩ L| + |X| ≤ |A ∩ L| + |B ∩ L| = |L| = τ (G) = ν(G).
Tehát létezik A-t lefogó teljes párosítás.

N(X)
B
L
A X
Tétel (Kőnig)
Ha a G = (A, B; E) páros gráfban |A| = |B| és minden csúcs
foka r > 0 (azaz G r-reguláris), akkor G-ben létezik teljes
párosítás.

Bizonyítás(Kőnig tétel):
Bebizonyítjuk, hogy reguláris gráf esetén teljesül a Hall-feltétel.
Ebből már következik, hogy van a gráfban teljes párosítás.
Legyen X ⊂ A tetszőleges. Ekkor X-ből összesen r|X| él lép
ki. Mivel B minden csúcsába legfeljebb r él léphet be, így
összesen legalább r|X|/r = |X| csúcsba mindenképpen megy
él. Ezt akartuk belátni.
Tétel (Kőnig)
Ha a G = (A, B; E) páros gráfban |A| = |B| és minden csúcs
foka r > 0 (azaz G r-reguláris), akkor G-ben létezik teljes
párosítás.

Bizonyítás(Kőnig tétel):
Bebizonyítjuk, hogy reguláris gráf esetén teljesül a Hall-feltétel.
Ebből már következik, hogy van a gráfban teljes párosítás.
Legyen X ⊂ A tetszőleges. Ekkor X-ből összesen r|X| él lép
ki. Mivel B minden csúcsába legfeljebb r él léphet be, így
összesen legalább r|X|/r = |X| csúcsba mindenképpen megy
él. Ezt akartuk belátni.
A Hall-tételt erősebb alakban is kimondhatjuk.
Tétel (Ore)
Legyen G = (A, B; E) páros gráf. Ekkor

max(|X| − |N (X)|) = |A| − ν(G).


X⊆A

Bizonyítás: Tetszőleges X ⊆ A-ra |X| − |N (X)| él biztosan


fedetlenül marad a párosításban, így
max(|X| − |N (X)| ≥ |A| − ν(G)
X⊆A
A másik irányhoz menjünk vissza a Kőnig-tétel bizonyításához,
amikor Z és RB diszjunktak. Tekintsük A ∩ Z-t. Ekkor

|A ∩ Z| − |N (A ∩ Z)| = |A ∩ Z| − |B ∩ Z| =
= |A ∩ Z| + |A − Z| − |A − Z| − |B ∩ Z| = |A| − τ (G) =
= |A| − ν(G)
A Hall-tételt erősebb alakban is kimondhatjuk.
Tétel (Ore)
Legyen G = (A, B; E) páros gráf. Ekkor

max(|X| − |N (X)|) = |A| − ν(G).


X⊆A

Bizonyítás: Tetszőleges X ⊆ A-ra |X| − |N (X)| él biztosan


fedetlenül marad a párosításban, így
max(|X| − |N (X)| ≥ |A| − ν(G)
X⊆A
A másik irányhoz menjünk vissza a Kőnig-tétel bizonyításához,
amikor Z és RB diszjunktak. Tekintsük A ∩ Z-t. Ekkor

|A ∩ Z| − |N (A ∩ Z)| = |A ∩ Z| − |B ∩ Z| =
= |A ∩ Z| + |A − Z| − |A − Z| − |B ∩ Z| = |A| − τ (G) =
= |A| − ν(G)
Tétel (Mendelsohn-Dulmage)
Legyen G = (A, B; E) páros gráf. Ha létezik X ⊂ A-t fedő
párosítás, és létezik Y ⊂ B-t fedő párosítás, akkor létezik
X ∪ Y -t fedő párosítás is.

Bizonyítás: Legyen MX párosítás, ami fedi X-et, és MY


párosítás, ami fedi Y -t. Vizsgáljuk meg MX ∪ MY -t:
1 él
2 alternáló kör (kör páros)
3 alternáló út
Tétel (Mendelsohn-Dulmage)
Legyen G = (A, B; E) páros gráf. Ha létezik X ⊂ A-t fedő
párosítás, és létezik Y ⊂ B-t fedő párosítás, akkor létezik
X ∪ Y -t fedő párosítás is.

Bizonyítás: Legyen MX párosítás, ami fedi X-et, és MY


párosítás, ami fedi Y -t. Vizsgáljuk meg MX ∪ MY -t:
1 él
2 alternáló kör (kör páros)
3 alternáló út
Készítünk egy M párosítást, ami lefedi X-et és Y -t:
1 Minden élt beletesszük M -be.
2 Alternáló kör MX -beli éleit (mivel a kör páros, ez lefedi a
kör összes csúcsát) tesszük M -be.
3 Páratlan hosszú út: A páratlanadik éleket tesszük M -be
(első, harmadik,...).
4 Páros hosszú út: ugyanott kezdődik mint végződik, tegyük
fel, hogy ez A. Az első és utolsó él közül valamelyik
MX -beli, a másik MY -beli. Az MY -beli nem végződhet
X-beli pontban. Innen számítva minden második élt
tegyünk M -be.
Hopcroft-Karp algoritmus: A Kőnig féle algoritmus futási ideje
O(mn). Ezen fogunk javítani. Az eredeti Kőnig algoritmus
egyszerre 1 út mentén javít. Itt egyszerre több diszjunkt,
alternáló úton keresztül történik a javítás.

1. Adott M párosításra megkonstruáljuk az irányított gráfot


Kőnig algoritmusa szerint.

A0 B0 C0 D0 E0 F0
A RA

B RB
A B C D E F
Hopcroft-Karp algoritmus: A Kőnig féle algoritmus futási ideje
O(mn). Ezen fogunk javítani. Az eredeti Kőnig algoritmus
egyszerre 1 út mentén javít. Itt egyszerre több diszjunkt,
alternáló úton keresztül történik a javítás.

1. Adott M párosításra megkonstruáljuk az irányított gráfot


Kőnig algoritmusa szerint.

A0 B0 C0 D0 E0 F0
A RA

B RB
A B C D E F
2. Felveszünk egy új csúcsot (forrást), s-t, és élt indítunk belőle
az összes RA -beli csúcsba. s-ből indítunk egy szélességi
keresést, és ez alapján beszintezzük a csúcsokat.

D0 C C0 B B0 D

s E0 F E

F0

3. Az irányított gráfból elhagyjuk azokat az éleket, amik nem


két szomszédos szint között vannak.
2. Felveszünk egy új csúcsot (forrást), s-t, és élt indítunk belőle
az összes RA -beli csúcsba. s-ből indítunk egy szélességi
keresést, és ez alapján beszintezzük a csúcsokat.

D0 C C0 B B0 D

s E0 F E

F0

3. Az irányított gráfból elhagyjuk azokat az éleket, amik nem


két szomszédos szint között vannak.
4. A végpontok közül egyesével kiválasztjuk azokat, amik
RB -ben vannak, majd az éleken addig haladunk visszafelé,
amíg eljutunk egy RA -beli csúcshoz. Az utat eltároljuk, és az
éleket (csúcsostúl) kitöröljük az irányított segédgráfból.
Kiválasztjuk E-t, visszafelé az út E, C 0 , C, D0 . Töröljük ezeket a
csúcsokat.
s E0 F B B0 D

F0

5. A maradékban D-ből már nem vezet vissza út, F -ből pedig


mondjuk F, F 0 .
6. Ezután választunk egy újabb végpontot, ami RB -ben van, és
elindulunk az éleken visszafelé. Előfordulhat, hogy időközben
egy út élei ki lettek törölve, ekkor továbblépünk a következő
végpontra.
4. A végpontok közül egyesével kiválasztjuk azokat, amik
RB -ben vannak, majd az éleken addig haladunk visszafelé,
amíg eljutunk egy RA -beli csúcshoz. Az utat eltároljuk, és az
éleket (csúcsostúl) kitöröljük az irányított segédgráfból.
Kiválasztjuk E-t, visszafelé az út E, C 0 , C, D0 . Töröljük ezeket a
csúcsokat.
s E0 F B B0 D

F0

5. A maradékban D-ből már nem vezet vissza út, F -ből pedig


mondjuk F, F 0 .
6. Ezután választunk egy újabb végpontot, ami RB -ben van, és
elindulunk az éleken visszafelé. Előfordulhat, hogy időközben
egy út élei ki lettek törölve, ekkor továbblépünk a következő
végpontra.
4. A végpontok közül egyesével kiválasztjuk azokat, amik
RB -ben vannak, majd az éleken addig haladunk visszafelé,
amíg eljutunk egy RA -beli csúcshoz. Az utat eltároljuk, és az
éleket (csúcsostúl) kitöröljük az irányított segédgráfból.
Kiválasztjuk E-t, visszafelé az út E, C 0 , C, D0 . Töröljük ezeket a
csúcsokat.
s E0 F B B0 D

F0

5. A maradékban D-ből már nem vezet vissza út, F -ből pedig


mondjuk F, F 0 .
6. Ezután választunk egy újabb végpontot, ami RB -ben van, és
elindulunk az éleken visszafelé. Előfordulhat, hogy időközben
egy út élei ki lettek törölve, ekkor továbblépünk a következő
végpontra.
A0 B0 C0 D0 E0 F0
A

B
A B C D E F

6. Ha bejártuk az összes végpontot, akkor az elmentett utakon


keresztül egyszerre javítunk.

A0 B0 C0 D0 E0 F0
A

B
A B C D E F
A0 B0 C0 D0 E0 F0
A

B
A B C D E F

6. Ha bejártuk az összes végpontot, akkor az elmentett utakon


keresztül egyszerre javítunk.

A0 B0 C0 D0 E0 F0
A

B
A B C D E F
Állítás
Ha egy fázis elején k hosszú volt a legrövidebb javítóút, akkor a
fázis végrehajtása után a legrövidebb javítóút legalább k + 2
hosszú lesz.

Tétel (Hopcroft-Karp)
p
Az algoritmus 2 ν(G) fázis után véget ér.
Egy fázis futásideje: A BFS lefut O(m) idő alatt. Amikor a
végpontokon keresztül visszafele haladunk, minden élen
maximum egyszer haladunk, ez is O(m). Végül a javítás
végrehajtható O(m) időben. Tehát O(m).

Fázisok száma: O( n).

Tehát az algoritmus futásideje O(m n).

You might also like