22
Magyar módszer Magyar módszer Táblázatra és gráfra Táblázatra és gráfra Papp Róbert, Blaskovics Viktor, Hantos Papp Róbert, Blaskovics Viktor, Hantos Norbert Norbert

Magyar módszer

  • Upload
    finna

  • View
    68

  • Download
    1

Embed Size (px)

DESCRIPTION

Magyar módszer. Táblázatra és gráfra. Papp Róbert, Blaskovics Viktor, Hantos Norbert. A probléma. - PowerPoint PPT Presentation

Citation preview

Page 1: Magyar módszer

Magyar módszerMagyar módszerTáblázatra és gráfraTáblázatra és gráfra

Papp Róbert, Blaskovics Viktor, Hantos NorbertPapp Róbert, Blaskovics Viktor, Hantos Norbert

Page 2: Magyar módszer

A problémaA probléma

Egy gyakorlati probléma: adott N darab gép, és N munkás. Minden Egy gyakorlati probléma: adott N darab gép, és N munkás. Minden munkás tudja kezelni az összes gépet, de más-más költséggel. munkás tudja kezelni az összes gépet, de más-más költséggel. Melyik munkás melyik géphez kerüljön, hogy az összköltség Melyik munkás melyik géphez kerüljön, hogy az összköltség minimális legyen?minimális legyen?

12

3 45

6 78 9

1 2 3

1 2 3

Munkások

Gépek

Munkadíjak

Page 3: Magyar módszer

A probléma definiálásaA probléma definiálása

Gráf - minimális súlyú párosításGráf - minimális súlyú párosítás

Adott G = (V,E,s) egyszerű Adott G = (V,E,s) egyszerű (irányítatlan) teljes páros (irányítatlan) teljes páros (|V|/2-reguláris) élsúlyozott (|V|/2-reguláris) élsúlyozott gráf, aholgráf, ahol

s: E->s: E->RR függvény, az éleket függvény, az éleket súlyozza.súlyozza.

V = A U F alsó és felső pontok V = A U F alsó és felső pontok (diszjunkt) halmaza.(diszjunkt) halmaza.

|A| = |F| = N|A| = |F| = N

Keressünk a gráfban minimális Keressünk a gráfban minimális összsúlyú teljes párosítást!összsúlyú teljes párosítást!

Mátrix - hozzárendelési feladatMátrix - hozzárendelési feladat

Adott egy N*N-es (négyzetes) Adott egy N*N-es (négyzetes) valós számokból álló mátrix.valós számokból álló mátrix.

Jelöljünk ki a mátrixban N darab Jelöljünk ki a mátrixban N darab számot úgy, hogy minden számot úgy, hogy minden sorban és oszlopban pontosan sorban és oszlopban pontosan egy ilyen kijelölt szám legyen, egy ilyen kijelölt szám legyen, és a számok összértéke és a számok összértéke minimális legyen!minimális legyen!

Page 4: Magyar módszer

EkvivalenciaEkvivalencia

A mátrixot tekinthetjük a gráf szomszédsági mátrixának: a mátrix egy aA mátrixot tekinthetjük a gráf szomszédsági mátrixának: a mátrix egy a ijij eleme a eleme a

gráf i. A-beli és j. F-beli pontok által meghatározott él súlya.gráf i. A-beli és j. F-beli pontok által meghatározott él súlya.

A két probléma ekkor ekvivalens: a mátrix egy kijelölt (független) számhalmaza A két probléma ekkor ekvivalens: a mátrix egy kijelölt (független) számhalmaza által reprezentált élek a gráfban párosítást alkotnak, és viszont.által reprezentált élek a gráfban párosítást alkotnak, és viszont.

11 22 33

11 11 22 33

22 44 55 66

33 77 88 99

12

3 45

6 78 9

1 2 3

1 2 3

Page 5: Magyar módszer

A Magyar módszerA Magyar módszer

Kombinatorikai optimalizálási eljárásKombinatorikai optimalizálási eljárás Kőnig Dénes és Egerváry Jenő nyomán Harold Kuhn, 1955Kőnig Dénes és Egerváry Jenő nyomán Harold Kuhn, 1955 Módosítva: James Munkres, 1957Módosítva: James Munkres, 1957

A program párhuzamosan mutatja a a magyar módszer lépéseit mind a A program párhuzamosan mutatja a a magyar módszer lépéseit mind a mátrixos, mind a gráfos értelmezésében.mátrixos, mind a gráfos értelmezésében.

Az egyszerűség kedvéért feltételezhetjük, hogy csak egész számokon Az egyszerűség kedvéért feltételezhetjük, hogy csak egész számokon dolgozunk.dolgozunk.

Page 6: Magyar módszer

InicializálásInicializálás

GráfGráf

Minden A-beli pontból kiinduló Minden A-beli pontból kiinduló élek súlyát csökkentjük az A-élek súlyát csökkentjük az A-szerinti élsúlyminimummal, szerinti élsúlyminimummal, majd minden F-beli pontból majd minden F-beli pontból kiinduló élek súlyát kiinduló élek súlyát csökkentjük az F-szerinti csökkentjük az F-szerinti élsúlyminimummal.élsúlyminimummal.

Csak a nulla súlyú éleken fogunk Csak a nulla súlyú éleken fogunk dolgozni.dolgozni.

MátrixMátrix

Minden sorból kivonjuk a Minden sorból kivonjuk a sorminimumokat, majd minden sorminimumokat, majd minden oszlopból kivonjuk az oszlopból kivonjuk az oszlopminimumokat.oszlopminimumokat.

Page 7: Magyar módszer

InicializálásInicializálás

Page 8: Magyar módszer

Nulladik iterációNulladik iteráció

GráfGráf

Az A-beli csúcsokon sorban Az A-beli csúcsokon sorban végighaladva mohón keresünk végighaladva mohón keresünk egy 0 súlyú párosítást. (barna egy 0 súlyú párosítást. (barna élek)élek)

MátrixMátrix

Oszlopfolytonosan kijelölünk egy Oszlopfolytonosan kijelölünk egy független 0-kból álló rendszert. független 0-kból álló rendszert. (0*)(0*)

Megjegyzés: mindegy, hogy milyen módszerrel történik a kezdeti párosítás, illetve a 0 Megjegyzés: mindegy, hogy milyen módszerrel történik a kezdeti párosítás, illetve a 0 független rendszer kiválasztása, akár az is lehet, hogy nem jelölünk ki semmit. független rendszer kiválasztása, akár az is lehet, hogy nem jelölünk ki semmit. Ebben az esetben természetesen az eljárás több iterációt igényel.Ebben az esetben természetesen az eljárás több iterációt igényel.

Page 9: Magyar módszer

Nulladik iterációNulladik iteráció

Page 10: Magyar módszer

1. lépés1. lépés

GráfGráf

Ha az aktuális párosításunk Ha az aktuális párosításunk maximális (N elemű), kész maximális (N elemű), kész vagyunk. A párosításunk az vagyunk. A párosításunk az eredeti gráfban minimális eredeti gráfban minimális összsúlyú párosítás.összsúlyú párosítás.

Különben 2. lépés.Különben 2. lépés.

MátrixMátrix

Ha az aktuális 0* független Ha az aktuális 0* független rendszerünk maximális (N rendszerünk maximális (N elemű), kész vagyunk. A 0*-gal elemű), kész vagyunk. A 0*-gal jelölt helyek az eredeti jelölt helyek az eredeti mátrixban az optimális mátrixban az optimális hozzárendelést adják meg.hozzárendelést adják meg.

Különben 2. lépés.Különben 2. lépés.

Page 11: Magyar módszer

1. lépés1. lépés

Page 12: Magyar módszer

2. lépés2. lépés

GráfGráf

Lekötjük a párosított F-beli pontokat Lekötjük a párosított F-beli pontokat (kék F-beli pontok), és sorba véve (kék F-beli pontok), és sorba véve a szabad A-beli pontokat, a szabad A-beli pontokat, megkeressük az első olyan élt, megkeressük az első olyan élt, amelyik szabad F-beli ponthoz amelyik szabad F-beli ponthoz tartozik.tartozik.

Ha nincs, 5. lépés.Ha nincs, 5. lépés.

Ha van, megszínezzük (szaggatott Ha van, megszínezzük (szaggatott piros él), és megnézzük, van-e az piros él), és megnézzük, van-e az A-beli pontjához már párosítás.A-beli pontjához már párosítás.

Ha nincs, 4. lépés.Ha nincs, 4. lépés.

Különben 3. lépés.Különben 3. lépés.

MátrixMátrix

Lekötjük a 0*-ok oszlopait (kék Lekötjük a 0*-ok oszlopait (kék oszlopok), és sorfolytonosan oszlopok), és sorfolytonosan keresünk egy szabad 0-t.keresünk egy szabad 0-t.

Ha nincs, 5. lépés.Ha nincs, 5. lépés.

Ha van, megvesszőzzük (0’), és Ha van, megvesszőzzük (0’), és megnézzük, van-e a sorában 0*.megnézzük, van-e a sorában 0*.

Ha nincs, 4. lépés.Ha nincs, 4. lépés.

Különben 3. lépés.Különben 3. lépés.

Page 13: Magyar módszer

2. lépés2. lépés

Page 14: Magyar módszer

3. lépés3. lépés

GráfGráf

A talált megszínezett él A-beli A talált megszínezett él A-beli pontját lekötjük (zöld A-beli pontját lekötjük (zöld A-beli pont), az ezen A-beli ponthoz pont), az ezen A-beli ponthoz tartozó párosítás F-beli pontját tartozó párosítás F-beli pontját felszabadítjuk.felszabadítjuk.

2. lépés.2. lépés.

MátrixMátrix

A talált 0’ sorát lekötjük (zöld sor), A talált 0’ sorát lekötjük (zöld sor), a sorában található 0* oszlopát a sorában található 0* oszlopát felszabadítjuk.felszabadítjuk.

2. lépés.2. lépés.

Page 15: Magyar módszer

3. lépés3. lépés

Page 16: Magyar módszer

4. lépés4. lépés

GráfGráf

A talált színezett élből kiindulva A talált színezett élből kiindulva láncot képzünk: színezett él láncot képzünk: színezett él esetén F felé, párosított él esetén F felé, párosított él esetén A felé haladunk. A lánc esetén A felé haladunk. A lánc mentén a színezést és a mentén a színezést és a párosítást kicseréljük.párosítást kicseréljük.

A párosítások kivételével minden A párosítások kivételével minden jelölést törlünk, új iterációba jelölést törlünk, új iterációba kezdünk. 1. lépés.kezdünk. 1. lépés.

MátrixMátrix

A talált 0’-ből kiindulva láncot A talált 0’-ből kiindulva láncot képzünk: 0’ esetén oszlop képzünk: 0’ esetén oszlop szerint 0*-ra, 0* esetén sor szerint 0*-ra, 0* esetén sor szerint 0’-re lépünk. A lánc szerint 0’-re lépünk. A lánc mentén 0’ és 0* jelöléseket mentén 0’ és 0* jelöléseket kicseréljük.kicseréljük.

A 0*-ok kivételével minden A 0*-ok kivételével minden jelölést törlünk, új iterációba jelölést törlünk, új iterációba kezdünk. 1. lépés.kezdünk. 1. lépés.

Page 17: Magyar módszer

4. lépés4. lépés

Page 18: Magyar módszer

5. lépés5. lépés

GráfGráf

T := a teljes gráfban a szabad T := a teljes gráfban a szabad élek súlyainak minimuma. A élek súlyainak minimuma. A teljes gráfban minden szabad teljes gráfban minden szabad él súlyát csökkentjük T-vel, és él súlyát csökkentjük T-vel, és minden duplán (A és F szerint) minden duplán (A és F szerint) kötött él súlyát növeljük T-vel.kötött él súlyát növeljük T-vel.

2. lépés.2. lépés.

Megjegyzés: ezután ismét csak a Megjegyzés: ezután ismét csak a 0 súlyú éleket vesszük 0 súlyú éleket vesszük figyelembe.figyelembe.

MátrixMátrix

T := a szabad elemek minimuma. T := a szabad elemek minimuma. A mátrixban minden szabad A mátrixban minden szabad elemet csökkentünk T-vel, és elemet csökkentünk T-vel, és minden duplán (sor és oszlop minden duplán (sor és oszlop szerint) kötött elemet növelünk szerint) kötött elemet növelünk T-vel.T-vel.

2. lépés.2. lépés.

Page 19: Magyar módszer

5. lépés5. lépés

Page 20: Magyar módszer

Optimális hatásfokú foglalkoztatásOptimális hatásfokú foglalkoztatás

Kőnig tételének egy fontos általánosításaKőnig tételének egy fontos általánosítása

G: (A U F) élsúlyozott teljes páros gráf, cG: (A U F) élsúlyozott teljes páros gráf, c ijij élsúlyokkal élsúlyokkal

A = aA = a11,…, a,…, ann

F = fF = f11,…, f,…, f11

P = {i,P(i)} független élrendszer: i és P(i) permutáltja közötti élek P = {i,P(i)} független élrendszer: i és P(i) permutáltja közötti élek halmaza, i = 1,…,nhalmaza, i = 1,…,n

c(P) a P független élrendszer értéke (élsúlyainak összege)c(P) a P független élrendszer értéke (élsúlyainak összege)

Page 21: Magyar módszer

Optimális hatásfokú foglalkoztatásOptimális hatásfokú foglalkoztatás

Csúcsokhoz f az éleket fedő súlyrendszer:Csúcsokhoz f az éleket fedő súlyrendszer:

f(af(aii) = ) = ssaaii ≥≥ 0, az a 0, az aii él súlya él súlya

f(bf(bjj) = ) = ssbbjj ≥≥ 0, a b 0, a bjj él súlya él súlya

ssaaii + + ssbbjj ≥ ≥ ccijij

ssaaii + + ssbbjj ≥ ≥ ccijij esetén az {a esetén az {aii, b, bjj} élt fedettnek nevezzük.} élt fedettnek nevezzük.

ssaaii + + ssbbjj = = ccijij esetén az {a esetén az {aii, b, bjj} élt pontosan fedettnek nevezzük.} élt pontosan fedettnek nevezzük.

ssaaii + + ssbbjj > > ccijij esetén az {a esetén az {aii, b, bjj} élt túlfedettnek nevezzük.} élt túlfedettnek nevezzük.

f súlyösszege: s(f) = f súlyösszege: s(f) = ssaaii összege = összege = ssbjbj összege összege

Page 22: Magyar módszer

Optimális hatásfokú foglalkoztatásOptimális hatásfokú foglalkoztatás

Világos, hogy :Világos, hogy :

maxmaxPP c(P) c(P) ≤≤ min minff s(f) s(f)

Kőnig tétele:Kőnig tétele:

maxmaxPP c(P) = min c(P) = minff s(f) s(f)

A bizonyítás a Magyar módszer helyességéből adódik.A bizonyítás a Magyar módszer helyességéből adódik.