• Nem Talált Eredményt

A mohó algoritmus

In document Diszkrét optimalizálás (Pldal 95-99)

2.5. Matroid-algoritmusok és -poliéderek

2.5.2. A mohó algoritmus

Tegyük fel, hogy az M matroid S alaphalmazán adott egy c : S → R súlyfüggvény (vagy költségfüggvény). Készítsünk algoritmust maximális össz-súlyú bázis keresésére. Megjegyezzük, hogy egy ilyen algoritmus segítségével maximális súlyú független halmaz már könnyen kereshető. Valóban, hac nem-negatív, akkor egy maximális súlyú bázis automatikusan maximális súlyú füg-getlen, hiszen egy független halmaz mindig kibővíthető bázissá. Amennyiben

vannak negatív súlyú elemek, úgy ezeket töröljük el a matroidból, és a kelet-kező részmatroidnak keressük meg egy maximális súlyú bázisát. Ez nyilván az eredeti matroid maximális súlyú független halmaza lesz.

A maximális súlyú bázis előállításához a mohó algoritmus egymás után választ elemeket a következő szabály szerint. Az első lépésben kiválasztja az egyik maximális súlyú elemet, amely nem hurok. Az általános lépésben az addig kiválasztott F független halmazról eldönti, hogy bázis-e. Ha igen, az eljárás a kapott bázis kiadásával véget ér. Ha nem, akkor megnöveli F-et egy olyan maximális súlyú x ∈ S−F elemmel, amelyre F +x független.

Amennyiben itt több (azonos súlyú) elem is rendelkezére áll, bármelyiket választhatjuk. Figyeljük meg, hogy az (I3) függetlenségi axióma pontosan azt mondja ki, hogy a mohó algoritmus minden(0−1) értékű súlyfüggvény esetén maximális súlyú bázist ad.

2.5.1. Tétel. A fenti mohó algoritmus maximális súlyú bázist szolgáltat.

Bizonyítás. JelöljeBmo az algoritmus által konstruált bázist. LegyenBmax egy olyan maximális súlyú bázis, amelynekBmo-val maximális sok közös ele-me van. Készen vagyunk, haBmo=Bmax, ezért feltehetjük, hogy nem ez a helyzet. Tegyük fel, hogy az algoritmus a Bmo elemeit az f1, f2, . . . , fr sor-rendben találta meg, és legyenfk az első olyan elem, amely nincsBmax-ban.

A 2.4.2 tétel szerint létezik olyane∈Bmax−Bmo, amely kölcsönösen ki-cserélhetőfk-val. Ami azt jelenti egyrészt, hogy{f1, . . . , fk−1, e}független, és így a mohó algoritmus előírása szerintc(e)≤c(fk). Másrészt,Bmax maxima-litása miattc(e)≥c(fk). Ezértc(e) =c(fk), és ígyBmax−e+fkis maximális súlyú bázis, aminek eggyel több közös eleme vanBmo-val, ellentmondásban Bmax választásával.

A mohó algoritmus tényleges végrehajtásához először rendezzük nagyság szerint csökkenő sorrendbe az elemeket, azaz feltehető, hogy az elemek úgy vannak indexelve, hogy c(v1) ≥c(v2)≥ . . . ≥ c(vn), ahol n = |S|. Azonos súlyú elemek egymás közti sorrendje tetszőleges lehet. Ebben a sorrendben végighaladva az elemeken mindegyikről eldöntjük, hogy kiválasztjuk-e vagy sem : az éppen aktuális elemet akkor választjuk ki, ha a már kiválasztott elemekhez véve még mindig független halmazt kapunk.

Következik, hogy az optimális bázis nem annyira a súlyozás tényleges érté-keitől függ, hanem csupán az elemeknek súlyok által meghatározott sorrend-jétől. Vagyis ha például két (vagy több) súlyfüggvényhez ugyanaz a csökkenő sorrend tartozik, akkor létezik olyan bázis, amely szimultán mindegyik súly-függvényre nézve maximális súlyú.

63. Feladat. Igazoljuk, hogy tetszőleges maximális súlyú bázis megkapható a mohó algoritmus alkalmazásával(abban az értelemben, hogy amikor a mohó algoritmus futása során több elem közül is választhatunk, úgy ezt alkalmasan tesszük).

2.5. Matroid-algoritmusok és -poliéderek 89 Természetesen a mohó algoritmus minimális súlyú bázis megkeresésére is jó, hiszen ez ekvivalens a −c súlyozásra vonatkozó maximális bázis problé-mával. Ilyenkor tehát minden lépésben a legkisebb súlyú elemet választjuk ki, amely a már kiválasztottakkal együtt független halmazt alkot.

A mohó algoritmust először a körmatroidra vonatkozó speciális esetben írták le, amikor is egy összefüggő gráfban kellett maximális súlyú feszítő fát keresni. Ismert e feladatnak a következő alternatív megoldása is, amely egy-fajta „óvatos” algoritmusnak tekinthető. Tekintsük a gráf éleit növekvő súly szerinti sorrendben, és egy élt dobjunk ki, ha a maradék gráf még mindig összefüggő lesz. Végül egy feszítő fát kapunk, amelyről belátható, hogy ma-ximális súlyú. Ez az algoritmus is kiterjeszhető matroidokra. Itt csökkenő súlyok szerint megyünk végig az elemeken, az aktuálisat akkor dobva ki, ha a megmaradó matroid még tartalmazza az eredetinek egy bázisát. Az algo-ritmus akkor fejeződik be, amikor már csak egy bázis maradt.

64. Feladat. Igazoljuk, hogy a fenti óvatos algoritmus maximális súlyú bázist szolgáltat !

A feladatot a mohó algoritmus igazolásánál használtakhoz hasonló esz-közökkel lehet belátni. Ez tehát itt kijön. Látni fogjuk azonban, hogy ennek mélyebb oka is van, és valójában az óvatos algoritmus interpretálható egy má-sik matroidon, az úgynevezett duális matroidon dolgozó mohó algoritmusként is : lásd a 2.6.1 tétel utáni megjegyzést.

65. Feladat. Igazoljuk, hogy ha a súlyok páronként különbözőek, akkor a maximális súlyú bázis egyértelmű !

66. Feladat. Tegyük fel, hogy két súlyozásunk is adott : c1 és c2. Hogyan lehet a matroidnak olyan bázisát megtalálni, amely a c1-re nézve maximális súlyú, és ezen belül a c2-re nézve maximális súlyú ? Mi a helyzet, ha kettő helyettk≥3súlyozásunk van ?

Hasznos lesz a maximális súlyú bázisok alábbi jellemzése.

2.5.2. Tétel. Egy B bázis akkor és csak akkor maximális súlyú, ha minden y∈S−B ésx∈C(B, y)elemrec(y)≤c(x).

Bizonyítás. Haxbenne van azyalapkörében, akkorB−x+yis bázis, tehát haB maximális súlyú, akkorc(x)≥c(y).

Megfordítva, tegyük fel, hogyB0 egy maximális súlyú bázis. Alkalmazzuk a 2.4.3 tételt a B1 = B és B2 = B0 szereposztással. A hipotézis szerint c(f(x)) ≤ c(x) minden x ∈ B −B0 esetén. Ebből adódik, hogy c(B0) ≤

≤c(B). MivelB0maximális súlyú volt, ígyc(B)≤c(B0), azazBis maximális súlyú.

67. Feladat. Igazoljuk az előző tételt a2.4.2 tétel felhasználásával !

2.5.3. Tétel. EgyF független halmaz akkor és csak akkor maximális súlyú, ha minden elemének súlya nemnegatív,c(y)≤0fennáll minden olyany∈S−

−Felemre, amelyreF+yfüggetlen, továbbác(y)≤c(x)fennáll, valahányszor F+y függő ésx∈C(F, y).

Bizonyítás. A feltételek nyilván szükségesek. Az elegendőségük igazolásához legyenS0 a (szigorúan) pozitív súlyú elemek halmaza, és legyen F0 :=S0

∩F. Mivel F minden elemének súlya nemnegatív, c(F0) = c(F), és így F akkor és csak akkor maximális súlyú, ha F0 maximális súlyú független az M0:=M|S0 matroidban, ami azzal ekvivalens (mivelS0 minden eleme pozi-tív), hogyF0 maximális súlyú bázisaM0-nek. AzF-re tett feltételek nyomán a 2.5.2 tételbeli feltételek teljesülnek, ígyF0 valóban maximális súlyú bázisa M0-nek, tehátF maximális súlyú függetlenM-ben.

Feladatok

68. Feladat. Készítsünk algoritmust annak eldöntésére, hogy egy adott füg-getlen halmaz kiegészíthető-e maximális súlyú bázissá.

69. Feladat. Készítsünk algoritmust annak eldöntésére, hogy létezik-e olyan bázis, amely előre adottc1, . . . , ck súlyfüggvények mindegyikére nézve szimul-tán maximális súlyú.

70. Feladat. Igazoljuk, hogy bármely csúlyozásra a maximális súlyú bázisok kielégítik a bázisaxiómákat.

71. Feladat. Igazoljuk, hogy ha egy G= (X, Y;E) páros gráfban pontosan egy teljes párosítás létezik, akkor mind azX, mind az Y elemei úgy sorba-rendezhetők, hogy az azonos indexű elemek szomszédosak G-ben (és így az egyértelmű teljes párosítást adják), továbbá kisebb indexű x∈X elem soha-sem szomszédos nagyobb indexűy∈Y elemmel.

72. Feladat. Legyen F egy matroid független halmaza,X ⊆F ésY ⊆S−

−F azonos elemszámú halmazok. Legyen G = (X, Y;E) az a páros gráf, amelyben amelybenxy pontosan akkor él, hax∈C(F, y), vagyis ha aF+y nem független, deF+y−xaz. Igazoljuk, hogy amennyiben G-nek pontosan egy teljes párosítása létezik, úgyF∪Y −X független.

73. Feladat. Legyen B egy maximális súlyú bázis a c súlyfüggvényre néz-ve. Tegyük fel, hogy az x1, x2, . . . , xk bázisbeli elemek és az y1, y2, . . . , yk

bázison kívüli elemek olyanok, hogy xi ∈ C(B, yi) és c(xi) = c(yi) min-den i = 1, . . . , k-ra, és h > j, c(xh) = c(yj) esetén xh 6∈ C(B, yj). Ekkor B0:=B− {x1. . . , xk} ∪ {y1, . . . , yk}maximális súlyú bázis.

2.5. Matroid-algoritmusok és -poliéderek 91

In document Diszkrét optimalizálás (Pldal 95-99)