egeszerteku programozas

353
Tamas 2014-04-05 11:25:40 Eg´ esz´ ert´ ek˝ uprogramoz´as www.interkonyv.hu © Vizvári Béla © Typotex Kiadó

Upload: tommy900

Post on 18-Jan-2016

32 views

Category:

Documents


1 download

DESCRIPTION

programming

TRANSCRIPT

Page 1: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Egeszerteku programozas

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 2: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Alkalmazott matematika

A sorozat kotetei:

Koczy T. Laszlo – Tikk Domonkos: Fuzzy rendszerek (2000)Elliott, J. R. – Kopp, P. E.: Penzpiacok matematikaja (2000)Michelberger – Szeidl – Varlaki: Alkalmazott folyamatstatisztika

es idosor-analızis (2000)Gomori Andras: Informacio es interakcio (2001)Baxter, M. – Rennie, A.: Penzugyi kalkulus (2002)Karsai Janos: Impulzıv jelensegek modelljei (2002)Simonovits Andras: Nyugdıjrendszerek: Tenyek es modellek (2002)Medvegyev Peter: Sztochasztikus analızis (2004)Szirtes Tamas: Alkalmazott dimenzioanalızis (2006)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 3: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Vizvari Bela

EGESZERTEKUPROGRAMOZAS

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 4: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

A konyv elektronikus kiadasaa Nemzeti Kulturalis Alap tamogatasaval jelent meg.www.nka.hu

c© Vizvari Bela, Typotex, 2006, 2013Az Elte Matematikai Doktori Iskola tamogatasaval megjelent,2006-os elso kiadas elektronikus valtozatac© Typotex, 2013

Engedely nelkul semmilyen formaban nem masolhato!

Lektoralta: Vaik Zsuzsanna

ISBN 978 963 9664 29 6ISSN 1586-4413

Temakor: alkalmazott matematika

Kedves Olvaso!Koszonjuk, hogy kınalatunkbol valasztott olvasnivalot!

Ujabb kiadvanyainkrol es akcioinkrola www.typotex.hu es a facebook.com/typotexkiadooldalakon ertesulhet.

Kiadja a Typotex Elektronikus Kiado Kft.Felelos vezeto: Votisky ZsuzsaA kotetet gondozta: Gerner Jozsef

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 5: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Tartalom

Jelölések 9

I. rész Az egészértékű programozás alapjai 11

1. Bevezetés 13

1.1. Az egészértékű programozás tárgya 13

1.2. Feladatok és modellek 14

1.3. A feladatok osztályozása 22

1.4. Megjegyzések és irodalom 24

2. Az egészértékű programozás matematikai alapjai 25

2.1. A feladatok megoldhatósága 25

2.2. Hilbert-bázisok 36

2.3. Poliéderben fekvő rácspontok konvex burkának bonyolultsága 41

2.4. Sperner-rendszerek 44

2.5. Egyenletekkel definiált diszkrét ponthalmazok 49

2.6. Egyenlőtlenségekkel definiált bináris ponthalmazok 54

2.7. Egyetlen egyenlőtlenséggel jellemzett bináris ponthalmazok 68

2.8. Bináris fák 82

2.9. Megjegyzések és irodalom 87

3. Két alapvető elv 91

3.1. A relaxációs elv 91

3.2. Az egészértékű programozási feladatok egy gráfelméleti mo-dellje 92

5

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 6: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6 Tartalom

II. rész A matematikai programozás általános módszereinekalkalmazása az egészértékű programozásban 101

4. Vágás típusú módszerek 105

4.1. A Gomory-módszer 106

4.2. Egyéb Gomory-vágások 117

4.3. Általános vágások 124

4.4. Egy konvex vágás 127

4.5. Megjegyzések és irodalom 131

5. Dinamikus programozás 133

5.1. A Bellman-elv 133

5.2. Gráfban legrövidebb utat kereső algoritmusok 135

5.3. Lineáris diofantoszi egyenlet megoldhatósága 142

5.4. Felső korlátos változókat tartalmazó hátizsák feladat megol-dása 151

5.5. A hátizsák feladat megoldása explicit felső korlátok nélküli fel-adat esetén 158

5.6. A dinamikus programozás alkalmazása több feltételt tartal-mazó feladatok esetén 165

5.7. Megjegyzések és irodalom 167

6. A korlátozás és szétválasztás 169

6.1. A módszer elméleti váza 169

6.2. Korlátos egész változókat tartalmazó feladat megoldása a kor-látozás és szétválasztás módszerével 174

6.3. Az adatszerkezet 186

6.4. Megjegyzések és irodalom 190

7. A Balas-féle korlátozás és vágás módszere 193

7.1. Merőleges vetítés és szekvenciális konvexifikáció 193

7.2. Néhány szó a diszjunktív programozásról 199

7.3. Normalizáció 202

7.4. Az algoritmus egy véges változata 204

7.5. A bázis inverzéből kapható vágások 206

7.6. A korlátozás és vágás elve 208

7.7. A vágások felemelése 210

7.8. Megjegyzések és irodalom 212

8. Lagrange-szorzók 215

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 7: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Tartalom 7

8.1. A Lagrange-szorzók használata a matematikai programozás-ban – néhány alapvető eredmény 215

8.2. Módszerek a szorzók megválasztására 220

8.3. Egy további optimalitási kritérium 232

8.4. Egészértékű programozási feladatok méretének redukciója 235

8.5. Dekompozíció Lagrange-szorzók segítségével 239

8.6. Megjegyzések és irodalom 250

9. Lokális keresés – egy általános heurisztikus módszer 251

9.1. A módszer általános váza 251

9.2. A módszer alkalmazása az egészértékű programozásban 253

9.3. A módszer termodinamikai változata, a szimulált lehűlés 257

9.4. A tabukeresés 259

9.5. Megjegyzések és irodalom 259

10. A mohó módszer 261

10.1. A módszer általános alakja 261

10.2. A belső pontos mohó eljárások néhány általános tulajdonsága 266

10.3. A mohó módszer néhány tulajdonsága hátizsák feladat esetén 275

10.4. Megjegyzések és irodalom 290

III. rész Az egészértékű programozás speciális módszerei 293

11. A leszámlálási algoritmus 295

11.1. A leszámlálási algoritmusok alapvető struktúrája 295

11.2. Tesztek a lineáris egészértékű programozási feladat esetében 304

11.3. Az algoritmus részletei a lineáris egészértékű programozási fel-adat esetén 311

11.4. Megjegyzések és irodalom 320

12. A csoportelméleti módszer 321

12.1. A csoportfeladat 321

12.2. A mátrixok Smith-féle normálalakja 323

12.3. A csoportfeladat előállítása a Smith-féle normálforma segítsé-gével 331

12.4. A csoportfeladat megoldása dinamikus programozással 332

12.5. A csoportfeladat optimális megoldásának néhány tulajdonsága 338

12.6. A csoportelméleti módszer beágyazása a korlátozás és szétvá-lasztás algoritmusába 340

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 8: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8 Tartalom

12.7. Megjegyzések és irodalom 345

Irodalom 347

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 9: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Jelölések

IR a valós számok halmazaZZ az egész számok halmazaIN a pozitív egészek halmazaIR+ a nemnegatív valós számok halmazaZZ+ a nemnegatív egészek halmazaIRn az n-dimenziós euklideszi térZZn az n-dimenziós egész vektorok halmazaINn a pozitív egészekből álló n-dimenziós vektorok halmazaIRn

+ a nemnegatív ortánsZZn

+ a nemnegatív ortánsba eső egész vektorok halmazaA,B, ... halmazokconv(S) az S halmaz konvex burka⌊x⌋ az a legnagyobb egész, amely nem nagyobb az x valós számnál⌈x⌉ az a legkisebb egész, amely nem kisebb az x valós számnála,b, ... vektorokα, β, ... görög betűkkel jelölt vektorokaT ,bT , ... az a,b, ... vektorok transzponáltjaia ≤ b az a vektor valamennyi komponense kisebb vagy egyenlő, mint

a b vektor megfelelő komponense, és a két vektor azonos is lehet

a<

6= b az a vektor valamennyi komponense kisebb vagy egyenlő, minta b vektor megfelelő komponense, és a két vektor nem lehet azonos

a < b az a vektor valamennyi komponense kisebb, mint a b vektormegfelelő komponense

A,B, ... mátrixokI az egységmátrix

Egy mátrix elemeit, illetve egy vektor komponenseit a mátrixszal, illetvevektorral azonos, de nem félkövér, görög betű esetén pedig aláhúzás nélkülibetűvel és megfelelő indexekkel, illetve indexszel jelöljük. Ha A,B halmazok,akkor az

A ⊂ Breláció megengedi, hogy A tetszőleges részhalmaza legyen B-nek, beleértveaz üres halmazt és magát B is.

9

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 10: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 11: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

I. rész

Az egészértékűprogramozás alapjai

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 12: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 13: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

1. fejezet

Bevezetés

1.1. Az egészértékű programozás tárgyaAz egészértékű programozás célja bizonyos optimalizálási feladatok megol-dása, azaz az egészértékű programozás a feladatok egy csoportját jelenti.A vizsgálat tárgyát képezi egyben az összes olyan módszer is, amely ezenfeladatok valamelyikének a megoldására alkalmas.

Az egészértékű programozás a

max f(x)

x ∈ S

alakú feladatokkal foglalkozik, ahol S megszámlálható halmaz. Ebbe a na-gyon általános formába beletartozik a kombinatorika számos problémája is.Ezekkel a kombinatorikus vagy diszkrét optimalizálás foglalkozik külön. Azegészértékű programozás tárgyát a kevésbé struktúrált, azaz általánosabb fel-adatok képezik. Az első nagyobb csoportot azok a feladatok alkotják, ame-lyek formailag nagyon hasonlítanak a lineáris programozás feladatához, de azalgebrai feltételeken, azaz az egyenleteken és egyenlőtlenségeken túl a nem-negativitás mellett bizonyos egészértékűségi feltételeket is kirovunk, melyekhárom leggyakoribb alakja egy x változó esetén:

x = 0 vagy 1, (1.1)

0 ≤ x ≤ d, x egész, (1.2)

0 ≤ x, egész, (1.3)

ahol d rögzített pozitív egész. A vizsgált feladatok zöme olyan, hogy vala-mennyi változóra azonos előírást teszünk. Az alkalmazások többsége szem-pontjából ez nem jelent megszorítást. Ha egy feladaton belül a típusok keve-rednek, a legnehezebben kezelhető típusnak megfelelően kell eljárni.

13

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 14: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

14 1. Bevezetés

Az (1.1) típusba tartozókat döntési változóknak fogjuk nevezni, mert aztfejezik ki, hogy két lehetőség közül melyiket válasszuk, például megvalósít-sunk-e egy beruházást vagy sem.

Azonnal látszik, hogy az (1.1) típus a (1.2) speciális esete. Azonban (1.2)is visszavezethető (1.3)-ra. Vezessünk be ugyanis x mellé egy y változót,valamint az

x + y = d (1.4)

feltételt. Nyilvánvaló, hogy ha mind x-re, mind y-ra az (1.3) típusú feltételtrójuk ki, akkor egyikük értéke sem haladhatja meg d-t. Így érthető, hogyazok a módszerek, amelyeket az (1.3) típusra dolgoztak ki, az előző kettőnélis alkalmazhatók, míg fordítva nem, és a sokat vizsgált (1.1) típushoz sajátosmódszereket kerestek és találtak.

Az eddigiek az ún. tiszta egészértékű feladatok, vagyis az olyanok, ame-lyekben valamennyi változóra van egészértékűségi követelmény. A feladatokmásik nagy körét a vegyes feladatok képezik, amelyekben a változók egy részebizonyos határok között folytonosan változhat.

1.2. Feladatok és modellekAz alábbiakban a legfontosabb feladatokat soroljuk fel. A sorrend némilegjelzi a feladatok bonyolultságát és számítástechnikai nehézségét. Az utóbbitgyakorlati szempontból azzal mérjük, hogy mi a még numerikusan megold-ható feladatokban a változók száma. Természetesen ez függ az alkalmazhatószámítógép kapacitásától. Másfelől azonban a méret jelentősen befolyásolja amegoldható gyakorlati problémák körét. A feladatok alábbi felosztása azértkeletkezett, mert valójában mind bizonyos mértékig eltérő módszereket igé-nyelnek. Az általános módszerek természetesen valamennyi feladatot megtudják oldani, de a speciálisakra sok olyant dolgoztak ki, amelyek ügyesenhasználják fel az adott feladat struktúráját, és így jelentősen kitolják a meg-oldhatóság határát.

1.2.1. A hátizsák feladat és variánsai

Operációkutatásban több feladatot is egy-egy történeten keresztül szokás be-vezetni. Íme a hátizsák feladaté: Egy turista különböző tárgyakat vihet ma-gával az útra. A tárgyak száma n. Adott minden j tárgy súlya, amit aj-vel,és értéke, amit cj-vel jelölünk. Érték alatt itt nem a tárgy árát, hanem azta hasznot avagy örömöt értjük, amit a tárgy a túra alkalmával hajt, illetveokoz. A turista egy bizonyos, előre adott és b-vel jelölt súlykorlátnál többetnem akar magával vinni. Úgy akarja az elviendő tárgyakat kiválogatni, hogyazok együttes értéke maximális legyen, miközben együttes súlyuk a korlátotnem haladja meg. Feltételezzük, hogy (i) a tárgyak értéke függetlenek egy-

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 15: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

1.2. Feladatok és modellek 15

mástól, (ii) az összsúlyt, illetve összértéket úgy kapjuk, hogy a tárgyak súlyait,illetve értékeit összegezzük.

Minden tárgy esetében két választási lehetőségünk van: elvisszük vagynem visszük el. Ezért minden j tárgyhoz bevezetünk egy xj döntési változót,amelynek 1 értéke azt jelenti, hogy a tárgyat elvisszük, 0 értéke pedig azt,hogy nem.

Vegyük szemügyre az ajxj szorzatot:

ajxj =

{

aj ha xj = 10 ha xj = 0

=

{

aj ha elvisszük a tárgyat,0 ha nem visszük el a tárgyat.

(1.5)

Tehát mindkét esetben a szorzat akkora, amekkora súllyal a túra alatt a tárgya hátizsákban húzza a turista vállát. a cjxj szorzat azt a hasznot fejezi ki,amit a tárgy a túra alkalmával hajt. Ezért a turistának a következő feladatotkell megoldania:

max∑n

j=1 cjxj∑n

j=1 ajxj ≤ b

xj ∈ {0, 1} j = 1, ..., n.

(1.6)

Az eddigi megfogalmazásból nyilvánvaló, hogy hallgatólagosan feltettük, atárgyak súlya és értéke pozitív. Azonban formálisan nem kötöttük ki, ugyaniskönnyen belátható, hogy ez a feltételezés nem jelenti az általánosság megszo-rítását. Hatását. Ha aj = cj = 0, akkor teljesen mindegy, hogy a változóértéke 0 vagy 1. Ha aj ≤ 0 és cj ≥ 0, akkor van olyan x∗ optimális megoldás,amelyben x∗

j = 1, és ha pedig cj ≤ 0, akkor olyan x∗ optimális megoldásvan, hogy x∗

j = 0. Egyetlen eset maradt, amikor aj , cj < 0. Vezessük be xj

helyett a komplementer változóját:

xj = 1 − xj .

Ezt behelyettesítve a feladatba, xj mindkét együtthatója pozitív lesz.A hátizsák feladattal több gyakorlati probléma is modellezhető. Tegyük

fel, hogy egy pénzintézet n befektetési lehetőség közül választhat. Ismertmindegyik esetben az igényelt pénzösszeg (aj) és a befektetés által ígérthaszon (cj), valamint a felhasználható tőke nagysága (b). Feltéve, hogy aberuházások függetlenek egymástól, a maximális hasznot hozó befektetésekkiválasztását éppen a fenti (1.6) feladat írja le. Ha a javasolt projektek bi-zonytalanok, de becslésünk van arról, hogy milyen valószínűséggel mekkorahasznot hoznak, akkor a célfüggvényben a haszon várható értékét kell szere-peltetni. Például a legegyszerűbb esetben egy projekt pj valószínűséggel va-lósul meg, de akkor a teljes beígért hasznot hozza, míg 1− pj valószínűséggela teljes befektetett tőke elvész, akkor a célfüggvényben xj együtthatójánakcj helyett pjcj-nek kell lennie.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 16: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

16 1. Bevezetés

Teljesen hasonló a helyzet akkor is, ha pályázati pénzek szétosztásáról vanszó. Ekkor is a szétosztható keret lesz b, az egyes pályázatok által igényeltösszeg aj , míg a célfüggvény-együttható a pályázat eszmei értéke, például abírálók által adott pontszámok összege.

A hátizsák feladatnak két fő jellemzője van: egyetlen algebrai feltétel sze-repel benne, és minden együttható nemnegatív. Ezért általában valamilyenjelzővel ellátott hátizsák feladatról beszélnek akkor is, ha e két tulajdonságegyike teljesül.

Ilyen feladat a pénzváltási probléma, amelyről a 9. fejezetben lesz részle-tesen szó. Ekkor egy meghatározott pénzösszeget akarunk pontosan kifizetniegy adott pénzrendszer címleteivel úgy, hogy minimális számú pénzdarabothasználunk fel. Ez a probléma merül fel például akkor, ha a dolgozók járan-dóságát készpénzben fizetjük ki, borítékolva kinek-kinek a magáét, vagy haa pénztárgépnek automatikusan kell visszaadni az aprópénzt. Feltételezzük,hogy bármelyik címletből tetszőleges számú példányt felhasználhatunk. Le-gyen n a címletek száma, melyek értékei a1, a2, ..., an, a kifizetendő összegpedig b. Ekkor a

min∑n

j=1 xj∑n

j=1 ajxj = b

xj ∈ ZZ+, j = 1, ..., n

(1.7)

speciális hátizsák feladatot kell megoldani.A hátizsák feladat egy fontos változata az, amikor ún. általánosított felső

korlátok vannak. A gyakorlatnak erre a változatra akkor van szüksége, ami-kor például egy szűk keresztmetszetet jelentő gépen n munkát kell elvégezni,és mindegyik munka esetében több technológia közül választhatunk, melyeka költségben és a végrehajtásukhoz szükséges időben különböznek egymástól.Legyen a j munka technológiáinak száma mj , a j munka i technológiájánakműveleti ideje, illetve költsége pedig aij , illetve cij . Legyen továbbá a gépteljes felhasználható kapacitása b. Ekkor tehát az összköltséget kell minima-lizálni azon feltételek mellett, hogy (a) a gép kapacitását nem léphetjük túl,és (b) minden munkához ki kell választani pontosan egy technológiai variánst.Ezért xij változókat vezetünk be, ahol

xij =

{

1 ha a j munkát az i technológia szerint gyártjuk le,0 különben.

Ekkor a megoldandó feladat:

min

n∑

j=1

mi∑

i=1

cijxij (1.8)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 17: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

1.2. Feladatok és modellek 17

n∑

j=1

mi∑

i=1

aijxij ≤ b (1.9)

mi∑

i=1

xij = 1 j = 1, ..., n (1.10)

xij ∈ { 0, 1 } j = 1, ..., n. (1.11)

A (1.10) feltételek (1.11) segítségével biztosítják, hogy minden munkára pon-tosan egy technológiát válasszunk ki.

1.2.2. A halmazfedési feladat és társai

A feladat eredetileg az amerikai légitársaságoknál, a személyzet szolgálatravezénylése kapcsán merült fel, de használható mozdonyvezetők esetében, vagykórházi ügyeleti rend meghatározására, és még sok más helyen. Mi a feladatota légitársaság példáján mutatjuk be.

Adott a menetrend, ami nem más, mint sok járat összessége. Egy járatotjellemző adatok a következők: az indulás és a megérkezés helye és időpontja.A társaság célja, hogy a bérköltségek minimalizálása érdekében a járatokatminél kevesebb személyzettel lássa el. Egy személyzet egy nap általábantöbb járatot is kiszolgálhat. Azt, hogy melyek lehetnek ezek, néhány egy-szerű praktikus és szakmai (jogi) szabály mondja meg. Az előbbire példa,hogy a személyzetnek azon a repülőtéren kell lenni, ahonnan a kiszolgálandójárat indul, az utóbbira pedig az, hogy a leszállás után egy bizonyos időtmindenképpen a földön kell tölteniük, nem repülhetnek azonnal tovább. Azutóbbira, a kötelező pihenésre, másutt is van példa. A mozdonyvezetők semindulnak azonnal tovább, a kórházban is két 24 órás szolgálat között egynapnak el kell telnie.

Nevezzük tervnek a járatok egy olyan részhalmazát, amit egy személyzet kitud szolgálni. Számos ilyen terv létezik. Egyes gyakorlati problémák esetébenmég a tervek számának nagyságrendjét is nehéz megbecsülni. Ha ismernénkaz összes tervet, akkor a vállalat problémáját teljes egzaktsággal meg tudnánkoldani. Általában azonban csak arra van lehetőség, hogy néhány ezer vagytízezer tervet állítsunk elő. Legyen S a járatok halmaza, n az összes ismerttervek száma, az egyes tervek pedig Tj (j = 1, ..., n). Tudjuk tehát, hogy

Tj ⊂ S, j = 1, ..., n.

A vállalat feladata ekkor így fogalmazható meg:

min | I |I ⊂ { 1, 2, ... , n }

j∈I Tj = S.(1.12)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 18: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

18 1. Bevezetés

Ez az alak azonban nem kényelmes optimalizáló eljárások számára, ezért afeladatot átírjuk egy ekvivalens alakba. Mivel a Tj terv az S halmaz rész-halmaza, ezért egyértelműen jellemezhető az S-re vonatkozó karakterisztikusvektorával. Az egyszerűség kedvéért tegyük fel, hogy S = { 1, ..., m }. EkkorTj karakterisztikus vektora aj , ahol

aij =

{

1 ha i ∈ Tj ,0 ha i 6∈ Tj .

Legyen továbbá xj az a döntési változó, amelyik azt mondja meg, hogy a Tj

tervet kiválasztjuk-e, vagy sem, azaz

xj =

{

1 ha a Tj tervet kiválasztjuk,0 ha a Tj tervet nem választjuk ki.

A kiválasztott tervek számát az xj változók összege adja meg. Az (1.12)feladat ekvivalens alakja ekkor

min∑n

j=1 xj∑n

j=1 aijxj ≥ 1 i = 1, ...,m

xj ∈ { 0, 1 } j = 1, ..., n.

(1.13)

Az (1.13) problémát nevezzük halmazfedési feldatnak, hiszen ez épp (1.12)-velekvivalens, amely azt jelenti, hogy lefedünk egy véges alaphalmazt a részhal-mazaival. Idővel ugyanezzel a névvel illették mindazon feladatokat, amelyek-ben mind a célfüggvényben, mind a jobb oldalon egynél nagyobb egészek iselőfordulhatnak, de a balodalon minden együttható vagy 0, vagy 1.

Az (1.13) és vele együtt az (1.12) feladat az eredeti szolgálatra való vezény-lés problémája felől egy ponton kritizálható. Mindkettő megengedi ugyanis,hogy az alaphalmaz egy elemét többszörösen is lefedjük. Egy járatot azonbancsak egy személyzet szolgálhat ki. Erre a felvetésre kétféle válasz adható. Azegyik, hogy meghagyjuk a feltételek ilyen lazaságát, hogy az egyenlőtlenségekengedte nagyobb szabadságot kihasználva minél jobb optimumértéket érjünkel, és az esetleges többszörös fedés kérdését esetileg kezeljük. Például lehet,hogy elegendő az egyik tervből egyszerűen kihagyni a kérdéses járatot. Amásik, hogy matematikai feltételként írjuk elő a pontos egyenlőséget, ami az(1.12) feladat nyelvén azt jelenti, hogy még megköveteljük:

Tj1 ∩ Tj2 = ∅, j1, j2 ∈ I, j1 6= j2.

Ez csak annyi változást okoz az (1.13) feladatban, hogy az egyenlőtlenségetegyenlőségre kell cserélni, azaz a feladat alakja

min∑n

j=1 xj∑n

j=1 aijxj = 1 i = 1, ...,m

xj ∈ { 0, 1 } j = 1, ..., n.

(1.14)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 19: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

1.2. Feladatok és modellek 19

Itt valójában nem lefedjük az alaphalmazt, hanem részekre bontjuk, ezért(1.14)-et halmazfelbontási feladatnak hívjuk.

A feladatcsalád harmadik tagja a halmazkitöltési feladat, amelynek eseté-ben egy véges alaphalmazba egy előre adott készletből minél több részhal-mazát akarjuk beletenni. Ha mind a halmazfedési, mind a halmazkitöltésifeladat esetében az általánosabb esetet tekintjük, amikor az egyes elemektöbbszörös felhasználása is megengedett, akkor a két feladat ekvivalens egy-mással, ami egyszerűen úgy látható be, hogy bármelyik feladatból indulunkis ki, véve az összes változó komplementerét, ami a feladat egy ekvivalensátalakítása, a másik feladathoz jutunk.

1.2.3. Általános lineáris egészértékű programozási feladatok

Egyes esetekben előfordulhat, hogy a vizsgált probléma természetéből adódó-an az együtthatók között negatívak is vannak, vagy nem indokolt valamennyiváltozó esetében az egészértékűség feltételezése. Az első esetben általánostiszta egészértékű feladatról beszélünk. Alakja a következő:

max

n∑

j=1

cjxj (1.15)

n∑

j=1

aijxj ≤ bi i = 1, ...,m (1.16)

xj (1.1) vagy (1.2) vagy (1.3) típusú j = 1, ..., n.

Itt már az együtthatók előjelére és értékére semmiféle megszorítást nem te-szünk. Ilyen feladathoz jutunk az (1.1) típusú változók mellett, ha egymássalösszefüggő beruházások sorsáról kell dönteni. Ekkor az xj változó 1 értéke aj beruházás megvalósítását, 0 értéke elejtését írja elő. A beruházások együttis csak korlátos mennyiséget használhatnak az erőforrásokból. Az utóbbiak-ból rendelkezésre álló mennyiségeket a bi számok adják meg. A j beruházásigénye az i erőforrásból aij . Ha aij < 0, akkor a j beruházás termeli az ierőforrást.

Egy másik probléma, ami ilyen feladatra vezet, egy rövid sorozatokatgyártó üzem optimális termékösszetételének meghatározása. Itt egy változóegy termékre mondja meg, hogy hány darabot kell belőle gyártani, így (1.2)típusú lesz. A feltételek ismét az erőforrásokra vonatkoznak. (Itt erőforrása fontosabb berendezések kapacitása, a beszerezhető alapanyag mennyiségestb.)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 20: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

20 1. Bevezetés

Ha bizonyos változók tetszőleges nemnegatív értéket vehetnek fel, akkor afeladat alakja:

max∑n

j=1 cjxj +∑p

k=1 dkyk∑n

j=1 aijxj +∑p

k=1 hikyk ≤ bi i = 1, ...,m

yk ≥ 0 k = 1, ..., pxj (1.1) vagy (1.2) vagy (1.3) típusú j = 1, ..., n,

ahol tehát az xj-kkel ellentétben az yk-k folytonosan változnak. Az ilyenproblémákat nevezik vegyes egészértékű feladatoknak.

Például az energiarendszer irányításakor a meghatározandó mennyiségekközé tartozik egy-egy erőművi berendezés által előállított energia. Egy gépvagy egyáltalán nem termel áramot, vagy az általa előállított energia egypozitív alsó és felső korlát közé esik, vagyis a termelt energia

{ 0 } ∪ { l, u }

halmazba esik, ahol 0 < l < u. Ennek a viszonynak a leírására két változóravan szükségünk. Az első, x, egy 0 − 1 változó, amely azt mondja meg, hogyegyáltalán működik-e a berendezés, a második, y pedig azt, hogy mennyi azáltala termelt energia. Ezt a következő feltételekkel érhetjük el:

y ≥ lx, y ≤ ux, x ∈ { 0, 1 }.

Mind a tiszta, mind a vegyes egészértékű programozási feladat előfordulegyenlőség típusú feltételek mellett is.

1.2.4. Az utazó ügynök feladat és alkalmazásai

Adott n város. Jelöljön ezek közül tetszőleges két különbözőt i és j. Ismertezek cij távolsága. Egy kereskedelmi ügynöknek kell egy adott városból ki-indulva valamennyit bejárni úgy, hogy mindegyiket pontosan egyszer keressefel, és útját az induló pontban fejezze be, a megtett távolság pedig minimálislegyen.

A feladatnak rendkívül különböző területeken számos alkalmazása ismert.Elsőként kell említeni a közvetlen szállítási problémákat. Ha egy járműnektöbb címet is fel kell keresnie, akkor optimális útvonalának meghatározásátéppen az utazó ügynök feladata írja le.

Ha egy numerikusan vezérelt megmunkáló gép több lyukat is fúr ugyan-abba a munkadarabba, akkor a gép lyukak közti mozgásának idejét, ami bi-zonyos értelemben veszteségidő, célszerű minimalizálni. Hasonlóképp a chip-gyártásban a szilíciumdarabkát lézersugárral munkálják meg (égetik ki). Egylapocskán akár több millió pont is lehet, amit a sugárnak fel kell keresnie.Nem mindegy, hogy ezt mekkora távolság megtételével teszi meg, mert ettőlfügg a gyártás hatékonysága.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 21: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

1.2. Feladatok és modellek 21

Egy még absztraktabb, de a gyakorlatban gyakran előforduló alkalmazása következő. Egy gépen különböző munkadarabokat gyártunk. Az egyesmunkadarabok között a gépet át kell állítani az új típus gyártására. Az eh-hez szükséges időt, illetve költséget nevezik átszerszámozási időnek, illetveköltségnek. Az átszerszámozási idő ugyanúgy veszteség, mint a fúrógép át-haladása egyik pontról a másikra. Ezért az idők összegét minimalizálni kell.

A fenti példák rávilágítanak arra, hogy az alkalmazások során nem mindegy,hogy a távolságot miben mérjük. Vegyük először a gépkocsi esetét. Tegyükfel, hogy az valamilyen terméket szállít egy nagyvárosban. Vannak olyandolgok, amiket hajnalban szállítanunk, amikor az utcák még üresek. Ilyenpéldául az újság. Ekkor két pontnak a városi úthálózat megszabta geometriaitávolsága és az ezen út megtételéhez szükséges idő igen erős korrelációban vanegymással, gyakorlatilag mindegy, hogy miben mérünk. Más termékek szál-lítása azonban szükségképpen napközben történik ezért a zsúfolt szakaszokmegtételéhez szükséges idő nem arányos a geometriai távolsággal.

Más összefüggésre világít rá a chipgyártás és a fúrógép összehasonlítása. Alézersugár esetében két pont között a távolság az a szög, amennyit a sugárnakel kell fordulnia ahhoz, hogy az egyik pontból a másikba jusson. Ez a fajtatávolság rendelkezik a megszokott geometriai tulajdonságokkal, mint a szim-metricitás és a háromszög-egyenlőtlenség. Az utóbbi nem feltétlenül igaz afúrógép esetében. Itt ugyanis az egyik pontból a másik pontba való átmenethárom részből áll: először a frissen elkészült lyukból ki kell húzni függőlegesena fúrót, méghozzá olyan magasra, hogy a fúró a felület fölött biztonságosanelmehessen, ezután megy a másik pont fölé, majd ott leereszkedik. Mivel afelület gépalkatrészek esetében nem egyetlen sík, ezért a függőleges mozgásokpontpárról pontpárra változnak, ami elrontja a háromszög-egyenlőtlenséget.Az átszerszámozási idők esetében még a szimmetricitás sem lesz igaz. Pél-dául, ha egy A munkadarabhoz szükséges valamennyi szerszám kell a B mun-kadarabhoz is, de fordítva nem, akkor a BA átszerszámozási idő 0 lesz, mígaz AB pozitív. A feladat számítástechnikai nehézsége függ attól, hogy azismert geometriai tulajdonságok fennállnak-e.

Az alapmodellt több különböző módon is kiegészítették további feltételek-kel.

A gyakorlatban fontos eset az, amikor egyetlen telephelyről szállítunk kinagyobb mennyiségű árut. A nagyobb mennyiség azt jelenti, hogy az összesszállítandó mennyiség meghaladja a használt gépkocsi kapacitását. Fel kelltehát osztani a műveletet kis körutakra. Legyen g a gépkocsi kapacitása,az érintendő pontok, vagyis a városok { 0, 1, ..., n }, ahol 0 az a telephely,ahonnan a kiszállítás történik, qj a j városba szállítandó mennyiség, m akörjáratok száma, P1, ...,Pm pedig a körjáratokhoz tartozó városok halmaza.Végül jelölje a Pi halmazon az utazó ügynök feladat optimális megoldásánakértékét t(Pi). Feltételezve, hogy a szokásos geometriai tulajdonságok telje-

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 22: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

22 1. Bevezetés

sülnek, és minden j esetén az oda szállítandó áru mennyisége nem haladjameg a gépkocsi kapacitását, azaz

qj ≤ g j = 1, ..., n,

minden várost elegendő egyszer felkeresni. Ezért megkövetelhetjük a

∀ 1 ≤ i < k ≤ m : Pi ∩ Pk = { 0 } (1.17)

feltételt. Minden várost fel kell keresnünk, tehát teljesülnie kell az

m⋃

i=1

Pi = { 0, 1, ... ,m } (1.18)

egyenlőségnek. A megoldandó feladat tehát az (1.17) és (1.18) feltétel melletta

min

m∑

i=1

t(Pi) (1.19)

célfüggvény optimalizálása.

1.3. A feladatok osztályozásaA fentiekben a lineáris tiszta egészértékű feladatok hat alapesetét különböz-tettük meg részint a változók három, részint a feltételek két típusa (egyenletés egyenlőtlenség) szerint. Egész együtthatókat feltételezve leírjuk a hat fel-adat feladat kapcsolatát.

EgyaT x = b

alakú egyenlet a változók típusától és a többi feltételtől függetlenül mindighelyettesíthető a következő két egyenlőtlenséggel:

aT x ≤ b−aT x ≥ −b.

Az (1.1) típusú változók az (1.2) típusúak speciális esetei. Érdekes azonbanaz, hogy az utóbbiak is visszavezethetők az előbbiekre. Ha egy x változótólazt követeljük meg, hogy 0 és d > 0 közé essék, akkor x helyettesíthető néhánybináris változóval. Legyen ugyanis

k = ⌊log2 d⌋.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 23: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

1.3. A feladatok osztályozása 23

Ekkor írjuk fel x-et kettes számrendszerben, és a számjegyei legyenek azismeretlenek, tehát az

x =k

p=0

2pyp

helyettesítést végezzük el. Meg kell követelni természetesen a

k∑

p=0

2p (1.20)

feltételeket.Most már könnyen beláthatjuk, hogy az egyenlőtlenségek visszavezethetők

egyenletekre. Tekintsük az

aT x ≤ b

feltételt. Egy új y nemnegatív egész változó bevezetésével nyerjük az

aT x + y = b (1.21)

egyenletet. Ezzel az (1.3) esetben a visszavezetés meg is történt. Az (1.2)esetben ehhez azt kell még észrevenni, hogy az aT x lehetséges értékei korlátoshalmazt alkotnak, így az (1.21) megoldásaiban y értékei is szükségképpenkorlátosak. Az (1.1) esetben is hasonlóan járunk el, csak az így bevezetett yváltozót még bináris változókkal ki kell váltani.

Tehát azt kaptuk, hogy bármely nemkorlátos változókat tartalmazó fela-datra visszavezethető mind a négy korlátos változókat tartalmazó feladat. Azutóbbiak pedig egymás közt tetszőlegesen transzformálhatók. A visszavezetésértelme, hogy ha van módszerünk egy olyan feladat megoldására, amire avisszavezetés történt, akkor ez a módszer felhasználható a visszavezetés előttifeladat megoldására is.

A gyakorlatban általában ezeket a transzformációkat nem érdemes elvé-gezni. Ennek két oka van. Az egyik, hogy a feladat mérete jelentősen meg-nőhet, ami megnehezíti mind a feladat tárolását, mind a megoldását. Egyextrém példa: induljunk ki (1.2) típusú változókat tartalmazó, egyenletekkelkorlátozott feladatból, és vezessük vissza bináris változós, egyenlőtlenségek-kel leírt feladattá. Az első lépésben a feltételek száma megduplázódik, mertminden egyenletet két egyenlőtlenséggel helyettesítünk. Ezután be kell vezet-nünk a további (1.20) alakú feltételeket és az ezekben szereplő új változókat.Ha eredetileg m feltételünk és n változónk volt és minden változó korlátjacsak 2 vagy 3, akkor is a transzformált feladat mérete

(2m + n) × 2n.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 24: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

24 1. Bevezetés

A másik ok, ami miatt a visszavezetéseket nem célszerű végrehajtani, hogyaz egyenlőtlenségekkel, illetve egyenletekkel leírt, a bináris, illetve nemcsakbináris vektorokat tartalmazó halmazoknak más és más matematikai tulaj-donságaik vannak. Ezen eltérések leírására a következő fejezetben részletesenvisszatérünk. Az egyes alapfeladatokra kifejlesztett módszerek – többnyireimplicit módon – felhasználják a stratégiájuk meghatározásánál ezeket a tu-lajdonságokat abban az értelemben, hogy bizonyos helyzetek hatékony ke-zelésére felkészülnek. A transzformált feladatok esetében azonban éppen azeltérő jellegzetességek miatt ez a hatékonyság nem tud érvényesülni.

1.4. Megjegyzések és irodalomAz egészértékű programozásban a szóhasználat eltérően alakult a lineáris pro-gramozáshoz viszonyítva. Itt megoldás alatt azokat a vektorokat értjük, me-lyek a megfelelő egészértékűségi követelménynek eleget tesznek, függetlenülattól, hogy az algebrai feltételeket kielégítik-e vagy sem. Ennek megfelelőenaz (1.1), illetve az (1.2) típusú változóknál az összes megoldások száma

2n, illetven

j=1

(dj + 1).

A megengedett megoldás kifejezéssel azokat a vektorokat illetjük, amelyekmind az egészértékűségi, mind az algebrai követelményeket kielégítik.

Az egészértékű programozás irodalma beláthatatlanul széles. Dantzig, aszimplex módszer megtalálója, már 1957-ben írt ilyen feladatokról [24]. Ahazai irodalomban az első két öszefoglaló mű [35] és [56]. Az ütemezésel-méletet is tárgyalja [93]. Az utazó ügynök feladatának önmagában is igennagy irodalma van. Jó összefoglalás [59]. Egyetlen árunak több körjárattaltörténő kiszállítása először a [12] dolgozatban merült fel a Dagens Nyhetersvéd napilap stockholmi kiszállítása kapcsán. Később ugyanez a feladat a bu-dapesti sörszállítás optimalizálása során is előjött. Az utazó ügynök feladatilyen irányú felhasználása annyira elterjedt, hogy már a nem operációkuta-tási szakirodalom is ezt ajánlja (ld. pl. [47]). A berlini mozgássérültekszállításának optimalizálásában is felhasználták a feladatot.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 25: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2. fejezet

Az egészértékű programozásmatematikai alapjai

2.1. A feladatok megoldhatóságaElég természetesnek tűnik az alábbi hibás gondolatmenet. Vizsgáljuk az(1.15), (1.16), (1.3) feladatot. Ha (1.3) helyett a nála gyengébb

x ≥ 0

feltételt vesszük, akkor egy lineáris programozási feladathoz jutunk. Az ere-deti egészértékű programozási feladat megengedett megoldásai azok az egészvektorok, melyek az utóbbi feladat megengedett tartományába, egy konvexpoliéderbe esnek. Ha vesszük a konvex burkukat, akkor a korábbinál szűkebbpoliéderhez jutunk. Ezen szűkebb poliéderre alkalmazva a szimplex módszertel tudjuk dönteni, hogy a következő három eset közül melyik következik be:

(i) nincs megengedett megoldás,(ii) a feladat nemkorlátos,(iii) van optimális megoldás.Az első két esetben ugyanilyen az egészértékű programozási feladat is, a

harmadik esetben pedig a két optimális megoldás egybeesik. Az okoskodáshelytelenségét az alábbi egyszerű példa szemlélteti:

max√

5x1 − x2√5x1 − x2 ≤ 0

− x2 ≤ −1x1, x2 ≥ 0, x1, x2 egész.

(2.1)

Azonnal látszik, hogy 0 a célfüggvény felső korlátja, és ez az érték tetszőlege-sen megközelíthető, de sohasem érhető el. A fenti három esetet ki kell tehátegészíteni a következővel:

(iv) van megengedett megoldás, a célfüggvény korlátos, de nincs optimálismegoldás.

Ez az ellenpélda azon alapul, hogy egy poliéderbe eső rácspontok konvexburka nem feltétlenül poliéder. A poliéder ugyanis véges sok féltér metszete,így szükségképpen csak véges sok lapja lehet (ld. Motzkin-tétel). A (2.1)

25

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 26: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

26 2. Az egészértékű programozás matematikai alapjai

példa megengedett megoldásai konvex burkának azonban végtelen sok lapjavan, melyek egyre jobban megközelítik az x2 =

√5x1 egyenest (ld. 2.1. ábra).

Ez azonban csak egyetlen rácsponton megy át, az origón, tehát a lapok magátaz egyenest sem érhetik el.

0-

6

¢¢¢

(1,3)

(4,9)

ss¢¢

¢¢s (8,18)

s

¯¯¯¯¯¯¯¯¯¯¯¯¯

(21,47)conv{x ∈ ZZ2|x1 ≥ 1,√

5x1 − x2 ≤ 0} ¯¯

2.1. ábra: Példa olyan egészértékű programozási feladatra, amelyben acélfüggvény (max

√5x1 − x2) korlátos, de nincs optimális megoldás. A meg-

engedett megoldások konvex burkának végtelen sok lapja van. A feltüntetettpontok a halmaz extremális pontjai.

Az alábbiakban olyan feltételt keresünk, amely mellett a (iv) eset nemfordulhat elő. A problémát mind a tiszta diszkrét, mind a vegyes feladatokkörében megvizsgáljuk, ezért az egészértékű programozási feladatot a

max cT x + dT y

Gx + Hy = b

x ∈ ZZp+

y ∈ IRq+

(2.2)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 27: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.1. A feladatok megoldhatósága 27

alakban írjuk fel, ahol b, c és d rendre m, p és q dimenziós vektorok, G m×p-es, H pedig m × q-as mátrix. (Megjegyzendő, hogy a (2.2) alak tartalmazzaazt az esetet is, amikor a feltételek egyenlőtlenség alakban vannak, merttovábbi nemnegatív változók segítségével ilyen alakra hozhatók, illetve azt azesetet, ha csak egész változók vannak, mert akkor q = 0.)

A jelen szakasz célja az alábbi általános tétel bizonyítása, ami tartalmazminden gyakorlati szempontból fontos esetet. A bizonyításhoz több segéd-eszközre lesz szükség, így arra csak a szakasz végén térünk vissza.2.1.1. tétel: Tegyük fel, hogy legalább egy teljesül az alábbi feltételek közül:

(a) az S = {x ∈ ZZp+ | ∃y ∈ IRq

+, Gx + Hy = b } halmaz elemeinekszáma véges,

(b) tiszta diszkrét feladatról van szó, vagyis q = 0,(c) a G és H mátrix elemei racionális számok.

Ekkor a (2.2) feladat esetében a (iv) eset nem léphet fel.A 2.1.2. tétel jelentősége abban áll, hogy ez biztosítja számunkra, hogy

lineáris célfüggvény mellett léteznek az optimális megoldást megtaláló és an-nak optimalitását bizonyító algoritmusok. Ha a tétel vagy valamilyen azzalegyenértékű állítás nem volna igaz, akkor legfeljebb közelítő módszerekrőlbeszélhetnénk.

A (2.1) feladat esetében a fenti három feltétel egyike sem teljesült. Afeladatnak végtelen sok megengedett megoldása van, így az (a)-beli S halmaznem véges. Mivel a feltételek egyenlőtlenség alakúak, ezért a (2.2) alakratörténő átalakítás után H egy 2×2-es egységmátrix lesz, tehát (b) sem állfenn. Végezetül

√5 irracionalitása miatt elesik (c) is.

A következőkben tárgyalandó 2.1.2. és 2.1.3. tétel a (b), a 2.1.4.–2.1.7.tételek pedig a (c) eset előkészítését szolgálják.2.1.2. tétel: Tetszőleges G mátrix és megfelelő méretű b vektor mellettlegyen

S = {x ∈ ZZp+ | Gx = b }.

Ekkor aconv(S)

halmaznak véges sok extremális pontja van.

Bizonyítás: A bizonyítást p-szerinti teljes indukcióval végezzük el. Ha p =1, akkor három lehetőség van: S vagy üres, vagy egyetlen pontot tartalmaz,vagy a nemnegatív félegyenes egész pontjaiból áll. A tétel állítása mindháromesetben igaz.

A továbbiakban tegyük fel, hogy az állítást már minden j ≤ p − 1 eseténbizonyítottuk. Indirekt módon tételezzük fel, hogy az állítás nem igaz. Ekkorlétezik extremális pontoknak egy végtelen

x0, x1, ...

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 28: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

28 2. Az egészértékű programozás matematikai alapjai

sorozata. Legyenyk = xk − x0 k = 1, 2, ...

továbbáIk = { i | x0i + 2yki < 0 } k = 1, 2, ...

Nyilván yk ∈ ZZp teljesül minden k-ra. Az Ik halmaz nem lehet üres egyetlenesetben sem, mert különben

x0 + 2yk ∈ S,

és így1

2(x0 + (x0 + 2yk)) = xk,

ami azt jelenti, hogy xk nem extremális pont. Ha pedig az x0 − xk vekto-rokat vizsgáljuk, akkor hasonló gondolatmenettel látható, hogy Ik elemeinekszáma legfeljebb p − 1. Mivel csak véges sok különböző Ik halmaz lehet te-kintettel arra, hogy valamennyi ugyanannak a véges indexhalmaznak a része,ezért létezik végtelen sok olyan k index, hogy Ik = I valamely alkalmas Ihalmazra. Az általánosság megszorítása nélkül feltehető, hogy

I = { 1, 2, ..., t },

ahol t rögzített, p-nél kisebb egész. A továbbiakban csak azon k indexekvizsgálatára szorítkozunk, ahol Ik = I, és ezek halmazát K jelöli.

Tekintettel arra, hogy

x0 + yk = xk ≥ 0

és yk első t komponense negatív, kapjuk, hogy

1 ≤ −ykj ≤ x0j j = 1, ..., t.

Így az első t komponensben csak véges sok különböző értéket vehet fel azyk vektor. Ebből adódik, hogy a K halmaznak létezik olyan végtelen Lrészhalmaza és ehhez egy alkalmas y ∈ ZZt

+ vektor, hogy

ykj = yj j = 1, ..., t, k ∈ L.

Osszuk fel a G mátrixotG = (G1, G2)

alakba, ahol G1 az első t oszlopot tartalmazza. Legyen u ∈ ZZt+ az a vektor,

amelynek komponenseire

uj = x0j + yj j = 1, ..., t

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 29: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.1. A feladatok megoldhatósága 29

teljesül. Jelölje továbbá V és T a következő két halmazt:

V ={

v ∈ ZZp−t+ | G2v = b − G1u

}

,

T = {u } × V,

ahol × a Descartes-szorzatot jelöli. Nyilván T ⊂ S teljesül. Így S mindenextremális pontja, ami T -nek is eleme, egyben T -nek is extremális pontja.Tehát k ∈ L esetén xk extremális pontja T -nek. Legyen

zk ∈ ZZp−t+

az a vektor, amelyrexT

k = (uT , zTk ) k ∈ L

teljesül. Ekkor a zk (k ∈ L) vektor szükségképpen extremális pontja a V hal-maznak. Ekkor azonban | L |= ∞, ami ellentmond az indukciós feltevésnek.Q.E.D.

2.1.3. tétel: Legyen ismét

S = {x ∈ ZZp+ | Gx = b }.

Legyenek S extremális pontjai az xj (j = 1, ..., n) vektorok. Jelölje L a követ-kező halmazt:

L ={

x ∈ IRp+ | Gx = 0, x racionális

}

.

Legyen y ∈ S egy tetszőleges pont. Ekkor létezik olyan (λ, r) vektorpár,amely kielégíti az alábbi feltételeket:

λ ∈ IRn+,

n∑

j=1

λj = 1,

r ∈ L,

y =

n∑

j=1

λjxj + r. (2.3)

Bizonyítás: Ha a (2.3) alakú előállítás nem létezik, akkor nincs megoldásaa

Dλ ≥ 0, eT λ = 1, λ ≥ 0 (2.4)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 30: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

30 2. Az egészértékű programozás matematikai alapjai

feltételrendszernek, ahol a D mátrix j-edik oszlopa y − xj és eT = (1, ..., 1).Ugyanis, ha van megoldása a (2.4) rendszernek, akkor az együtthatók racio-nalitásából adódik, hogy a megfelelő poliéder extremális pontjai racionálisak,és így létezik racionális megoldás is. A (2.4) rendszer egy ekvivalens alakja akövetkező:

Dλ − Iδ = 0

eT λ = 1λ ≥ 0, δ ≥ 0.

Ha ennek nincs megoldása, akkor a Farkas-lemma szerint van megoldása az

αT D + βe ≥ 0T

−αT I ≥ 0T

β < 0

rendszernek. Itt β < 0 miatt adódik, hogy

αT D > 0.

Így µ = −α választás mellett kapjuk, hogy

µT D < 0T , (2.5)

µ ≥ 0. (2.6)

Itt feltehető, hogy (2.6)-ban szigorú egyenlőtlenség áll, azaz

µ > 0. (2.7)

Ugyanis a µ vektor komponenseit elegendően kicsi, pozitív ǫ-ra változtatva(2.5) továbbra is igaz marad. A skaláris szorzat folytonossága miatt feltehetőtovábbá, hogy a µ vektor racionális. Így az

S ′ = {x ∈ S | ∀y ∈ S µT x ≤ µT y }

véges, nem üres halmaz, mert x ∈ ZZp+ esetén µT x csak véges sok z értéket

vehet fel 0 és µT y között, és egy

µT x = z

szintvonalon a pozitív ortánsban csak véges sok egész vektor feküdhet (2.7)miatt. Így S ′-nek van extremális pontja, legyen egy ilyen x∗. Azt állítjuk,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 31: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.1. A feladatok megoldhatósága 31

hogy x∗ egyben az S halmaz extremális pontja is. Tegyük fel az ellenkezőjét.Ekkor léteznek olyan y1,y2 ∈ S vektorok és γ ∈ [0, 1] valós szám, hogy

x∗ = γy1 + (1 − γ)y2

teljesül. Itt µ-vel való skaláris szorzás után x∗ ∈ S ′-ra való tekintettel kapjuk,hogy

µT x∗ = µT y1 = µT y2.

Ebből azonnal következik, hogy y1,y2 ∈ S ′. Ekkor viszont x∗ választásamiatt y1 = y2 = x∗.

Felhasználva, hogy x∗ az S halmaznak is extremális pontja, a (2.5) egyen-lőtlenségből adódik, hogy

µT x∗ > µT y.

Ez azonban ellentmond x∗ választásának. Így a (2.5), (2.7) rendszer nemoldható meg, ezért a Farkas-lemma szerint (2.4)-nek van megoldása. Q.E.D.

2.1.4. tétel: Legyen D m × p-es mátrix, d m-dimenziós vektor. Ekkor a

T = {x ∈ ZZp+ | Dx ≤ d }

halmaznak véges sok extremális pontja van, ha D mátrix racionális.Mielőtt rátérnénk a tétel bizonyítására, vizsgáljuk meg a (2.1) feladatot

abban az esetben, ha√

5 értékét egy racionális számmal közelítjük, hiszen ek-kor a feladat kielégíti a tétel feltételeit. Könnyen látható, hogy ha a közelítőérték 2.25, akkor csak két extremális pont van, (1, 3)T és (4, 9)T . Ha köze-lítésnek a pontosabb 2.24 számot vesszük, akkor ezekhez további extremálispontként (25, 56)T csatlakozik.Bizonyítás: Legyen k olyan egész, hogy az

A = kD

mátrix egészekből áll. Jelölje g azt a vektort, amelynek a komponenseit a

gi = ⌊kdi⌋ ; i = 1, ...,m

egyenletek határozzák meg. Ekkor

T = {x ∈ ZZp+ | Ax ≤ g }.

Legyen

U =

{(

x

s

)

∈ ZZp+m+ | Ax + s = g

}

.

Ekkor 2.1.2. tétel szerint U-nak véges sok extremális pontja van, következés-képp T -nek is. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 32: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

32 2. Az egészértékű programozás matematikai alapjai

A továbbiakban a vegyes változós eset előkészítését végezzük, ezért a kö-vetkező jelöléseket vezetjük be:

S =

{(

x

y

)

| Gx + Hy = b; x ∈ ZZp+; y ∈ IRq

+

}

,

C = conv(S),

Ly =

{(

x

y

)

| x = 0; Hy = 0; y ∈ IRq+

}

,

továbbá B a H mátrix oszlopvektorai által kifeszített térben a H oszlopai-ból alkotott bázisainak halmazát jelöli. B ∈ B esetén B egyszerre jelöli avektorok halmazát és a belőlük alkotott mátrixot, továbbá yB és yNB az y

vektornak a B bázisba eső, illetve azon kívüli része. Végül legyen

S(B) =

{(

x

y

)

∈ S | yNB = 0

}

.

2.1.5. tétel: Minden z ∈ C esetén z = z1 + z2, ahol

z1 ∈ conv

(

B∈B

S(B)

)

és z2 ∈ Ly.

Bizonyítás: A korábbi jelölések mellett zT = (xT ,yT ). Innen

Hy = b − Gx.

A Motzkin-tételt alkalmazva az

{y ∈ IRq+ | Hy = b − Gx }

poliéderre azonnal adódik a tétel állítása. Q.E.D.

2.1.6. tétel: Ha a G és a B ∈ B mátrix racionális, akkor a conv(S(B))halmaz poliéder.

Bizonyítás: Elsőként azt az esetet vizsgáljuk meg, amikor a B mátrix négy-zetes. Ekkor azt bizonyítjuk be először, hogy a conv(S(B)) halmaznak végessok extremális pontja van. Ekkor

S(B) =

{(

x

y

)

∈ S | yB = B−1b − B−1Gx; yNB = 0

}

.

Legyen zT = (xT , yT ) egy tetszőleges vektor. Most z ∈ S(B) akkor és csakakkor, ha x eleme az

S(B,x) = {x ∈ ZZp+ | B−1b − B−1Gx ≥ 0 }

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 33: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.1. A feladatok megoldhatósága 33

halmaznak ésyB = B−1b − Gx és yNB = 0.

Vegyük észre, hogy x rögzítése esetén y egyértelműen meghatározható, fel-téve, hogy z ∈ S(B). Ha z extremális pontja S(B)-nek, akkor x ugyancsakextremális pontja S(B,x)-nek. A 2.1.4. tétel alapján azonban az utóbbinakvéges sok extremális pontja van, így S(B)-nek is.

A 2.1.3. tétel alapján a C és B halmazok racionalitásából következik, hogya conv(S(B,x)) halmaz az összege az extremális pontjai konvex burkának ésaz

L(B) = {x ∈ IRp+ | B−1Gx ≤ 0; x racionális }

halmaz konvex burkának. Így az utóbbiról kell megmutatni, hogy poliéder.Legyenek a wi (i = 1, ..., k) vektorok az

{x ∈ IRp+ | B−1Gx ≤ 0; x ≤ e }

halmaz extremális pontjai, ahol e valamennyi komponense 1. Ekkor

conv(L(B)) =

{

x | x =

k∑

i=1

wizi; z ∈ IRk+

}

.

Ugyanis x ∈ L(B) esetén x a jobb oldali halmazban is benne van, és ígyugyanez igaz conv(L(B))-re is. Másfelől, ha

x =

k∑

i=1

wizi; z ∈ IRk+,

akkor alkalmas h egészre

h >

k∑

i=1

zi.

Legyen

λ0 = 1 −k

i=1

zi

h> 0.

Ekkor

x = λ00 +k

i=1

zi

h(hwi) ∈ conv(L(B)).

Tehát conv(S(B,x)) poliéder, mert két poliéder összege. Ezért conv(S(B))is poliéder.

Ha a B bázis nem négyzetes, akkor válasszuk ki a B egy olyan nem szingu-láris részét, amelynek mérete B elemeinek számával egyezik meg. A csak ezt

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 34: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

34 2. Az egészértékű programozás matematikai alapjai

a részt tartalmazó egyenletekre alkalmazzuk az előbbi bizonyítást. A többiegyenlet automatikusan teljesülni fog, mint az B bázis voltából következik.Q.E.D.

2.1.7. tétel: Ha a G és H mátrix racionális, akkor C poliéder.

Bizonyítás: A 2.1.5. tétel szerint

C ⊂ conv

(

B∈B

S(B)

)

+ Ly.

Azonban minden B ∈ B esetén

S(B) + Ly ⊂ S.

Nyilván

conv

(

B∈B

S(B) + Ly

)

= conv

(

B∈B

S(B)

)

+ Ly.

Másfelől

conv

(

B∈B

S(B) + Ly

)

⊂ C,

mert a bal oldalon álló két halmazra külön-külön igaz a reláció. Ezért

C = conv

(

B∈B

S(B)

)

+ Ly = conv

(

B∈B

conv(S(B))

)

+ Ly.

A 2.1.6. tétel szerint conv(S(B)) poliéder, így C két poliéder összege, vagyismaga is poliéder. Q.E.D.

A 2.1.1. tétel bizonyítása: A bizonyítást a három feltételre végezzük el.(a) eset: Ha az S halmaz üres, akkor az (i) esetről van szó. Ha S nem üres,akkor minden x ∈ S esetén oldjuk meg a következő lineáris programozásifeladatot:

z(x) = cT x + max dT y

Hy = b − Gx

y ≥ 0.(2.8)

Ha ezen feladatok között van nemkorlátos, akkor ugyanez a helyzet a (2.2)feladat esetében. Ha valamennyi (2.8) feladat korlátos, akkor a (2.2) feladatoptimumértéke

maxx∈S

z(x).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 35: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.1. A feladatok megoldhatósága 35

(b) eset: Most tehát a feladatban csak egészértékű változók szerepelnek. Haa (2.2) feladatnak nincs megengedett megoldása vagy a megengedett megol-dásai nemkorlátosak, akkor az (i), illetve (ii) eset áll fenn. Tegyük tehát fel,hogy S 6= ∅, és létezik olyan w szám, hogy

∀x ∈ S esetén cT x ≤ w.

A 2.1.2. tétel alapján tudjuk, hogy a conv(S) halmaznak véges sok extremálispontja van. Legyenek ezek x1, ...,xn. Abból, hogy a célfüggvény korlátos,következik, hogy r ∈ L esetén cT r ≤ 0. Az u számot válasszuk meg úgy,hogy

u = max1≤j≤n

cT xj

teljesüljön. Egy tetszőleges y ∈ S vektorra alkalmazzuk a 2.1.3. tételt.Ekkor létezik egy (λ, r) vektorpár úgy, hogy

λ ∈ IRn+;

n∑

j=1

= 1; r ∈ L

és

y =n

j=1

λjxj + r.

A fentieket figyelembe véve innen adódik, hogy

cT y =

n∑

j=1

λjcT xj + cT r ≤

n∑

j=1

λjcT xj ≤

n∑

j=1

λju = u.

Tehát az az xk extremális pont lesz az optimális megoldás, amire az u =cT xk egyenlőség fennáll.(c) eset: Az előbbi gondolatmenethez hasonlóan járunk el. A C halmaz akkorés csak akkor nem üres, ha az S halmaz sem üres. Tegyük tehát fel, hogyC 6= ∅. Tekintsük a

max cT x + dT y(

x

y

)

∈ C (2.9)

lineáris programozási feladatot. Ha itt a célfüggvény nem korlátos, akkorlétezik olyan

(xT , yT )

extremális irány, hogy

Gx + Hy = 0 és cT x + dT y > 0.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 36: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

36 2. Az egészértékű programozás matematikai alapjai

Erről az irányról feltehetjük, hogy egész komponensekből áll, mert különbena C halmaz nem volna zárt. Ekkor azonban a (2.2) feladat sem korlátos. Haa (2.9) feladatnak létezik optimális megoldása, akkor egy extremális pont isoptimális lesz, ez pedig S-ben fekszik, tehát ott is optimális. Q.E.D.

Mint arra már a fenti példa kapcsán rámutattunk, a 2.1.1. tétel különbsé-get tesz a tiszta egészértékű feladatok körében az egyenletekkel és egyenlőtlen-ségekkel megadottak között. Az előbbiek esetében az együtthatók esetlegesirracionális voltától függetlenül nem fordulhat elő a (iv) eset. Ha azonbana feltételeket egyenlőtlenségek formájában adtuk meg, akkor a tétel alkal-mazhatósága érdekében ezeket előbb egyenletekké kell alakítani kiegészítőváltozók bevezetésével. Mivel ezek együtthatói az egységmátrixot adják ki,ezért a tétel csak akkor zárja ki a nemkívánatos eset fellépését, ha az eredetiegyütthatók racionálisak voltak.

Ezen elvi megfontolások ellenére minden gyakorlati esetben a tétel biz-tosítja az optimális megoldás létezését, ha van megengedett megoldás és acélfüggvény korlátos, azon egyszerű oknál fogva, hogy számítógépen csak ra-cionális számokat tudunk tárolni.

2.2. Hilbert-bázisokMielőtt a poliéderek rácspontjai konvex burkát tovább vizsgálnánk, megis-merkedünk egy fontos, Hilberttől származó fogalommal.

Legyen K ⊂ IRn egy polédrikus kúp. Emlékeztetünk arra, hogy Weyl ide-vágó tétele szerint K két, egymással ekvivalens alakban adható meg. Létezikegy ai ∈ IRn (i = 1, ..., p) és egy bk ∈ IRn (k = 1, ..., q) vektorrendszer,hogy

K = {x ∈ IRn | aTi x ≤ 0, i = 1, ..., p} = {x ∈ IRn | ∃λ ∈ IRq

+, x =

q∑

k=1

bkλk}.

Megjegyezzük továbbá, hogy ha az egyik rendszer csupa racionális vek-torból áll, akkor a másik elemei is választhatók ilyennek. A racionalitásbólviszont azonnal következik megfelelő egész vektorok létezése is.

Arra keresünk választ, hogy hogyan állíthatók elő a K∩ZZn halmaz elemeia vektorösszeadás (mint művelet) segítségével ugyanennek a halmaznak azelemeiből. Hilbert bizonyította, hogy igaz a2.2.1. tétel: Tegyük fel, hogy a K kúp esetén bk ∈ ZZn (k = 1, ..., q). Ekkorlétezik olyan U = {u1, ...,ur } ⊂ K∩ZZn véges vektorrendszer, hogy mindenv ∈ K ∩ ZZn vektorhoz található olyan y ∈ ZZr

+ vektor, hogy teljesül a

v =r

i=1

uiyi

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 37: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.2. Hilbert-bázisok 37

egyenlőség.

Bizonyítás: Legyen t a K kúp dimenziója, azaz a bk (k = 1, ..., q) vek-torrendszer bázisainak elemszáma. Ekkor Carathéodory nevezetes, a kú-pokra vonatkozó tétele azt állítja, hogy minden v ∈ K vektorhoz létezikegy { c1, ..., ct } ⊂ {b1, ...,bq } halmaz, hogy v előáll

v =

t∑

i=1

cizi z ∈ IRt+

alakban. Jelölje P (c1, ..., ct) a c1, ..., ct vektorok által kifeszített, balról zárt,jobbról nyílt paralelepipedont, azaz

P (c1, ..., ct) = {x ∈ IRn | ∃w ∈ IRt+, x =

t∑

i=1

ciwi; 0 ≤ wi < 1, i = 1, ..., t}.

Ha v ∈ K ∩ ZZn, akkor nyilván

t∑

i=1

ci (zi − ⌊zi⌋) ∈ P (c1, ..., ct) ∩ ZZn.

Így a v vektor előáll, mint véges sok K-beli egész vektor, nevezetesen c1, ..., ct

és P (c1, ..., ct)∩ZZn egy eleme, nemnegatív egész lineáris kombinációja. Te-hát az állításban szereplő U halmaz egy alkalmas választása

U =⋃

(c1,...,ct)

(P (c1, ..., ct) ∩ ZZn) ∪ {b1, ...,bq },

ahol az első unió végigfut az összes lehetséges paralellepipedonon. Mivel ezekszáma, valamint a bennük fekvő egész pontoké véges, így az U halmaz is végeslesz. Q.E.D.

A tétel röviden azt mondja ki, hogy egy racionális poliedrikus kúpba esőrácspontok nemnegatív egész súlyok mellett is végesen generáltak. Az előzőszakasz bevezető példája mutatja, hogy a tétel feltételei között a racionalitáslényeges. A

K ∩ ZZn \ {0 }halmaz extremális pontjainak ugyanis mindenképpen benne kell lenniük U-ban. A fenti példa éppen azt mutatja, hogy irracionális együtthatók eseténezek az extremális pontok végtelen sokan lehetnek.

A tétel feljogosít bennünket a következő fogalom bevezetésére.2.2.1. definíció: Legyen K egy tetszőleges poliedrikus kúp racionális extre-mális irányokkal. Ha az U halmaz véges és

U ⊂ K ∩ ZZn,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 38: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

38 2. Az egészértékű programozás matematikai alapjai

továbbá minden v ∈ K ∩ ZZn vektor előáll

v =∑

u∈U

uzu

alakban, ahol a zu számok nemnegatív egészek, akkor az U halmazt a K kúpHilbert-bázisának nevezzük.

Legyen K egy tetszőleges, nem feltétlenül poliedrikus kúp. Ekkor az origónkívül nem lehet K-nak más extremális pontja. Akkor és csak akkor nincs K-nak extremális pontja, ha K tartalmaz egyenest.2.2.2. definíció: Azon poliedrikus kúpok, amelyeknek van extremális pontja,a csúcsos kúpok.

Mielőtt megmutatnánk a csúcsos kúpok Hilbert-bázisainak egy fontos tu-lajdonságát, bebizonyítunk egy segédtételt, amire még a későbbiekben isszükségünk lesz.2.2.2. tétel: Legyenek a b1, ...,bq ∈ IRn tetszőleges vektorok. A

bTk x > 0 k = 1, ..., q (2.10)

rendszer akkor és csak akkor megoldhatatlan, ha létezik olyan y ∈ IRq+ vektor,

melyre

q∑

k=1

bkyk = 0 és y 6= 0. (2.11)

Bizonyítás: A (2.10) feltételrendszer akkor és csak akkor megoldható, halétezik olyan pozitív ǫ szám, hogy az

bTk x ≥ ǫ k = 1, ..., q

egyenlőtlenségrendszer megoldható. Az utóbbi állítás úgy is fogalmazható,létezik olyan pozitív ǫ szám, amire a

min 0T x

bTk x ≥ ǫ k = 1, ..., q

feladatnak van optimális megoldása. Itt minden megengedett megoldás op-timális is, hiszen a célfüggvény értéke mindig 0. A lineáris programozás dua-litástételét alkalmazva azt kapjuk, hogy a (2.10) feltételrendszernek akkor éscsak akkor van megoldása, ha valamely alkalmas pozitív ǫ-ra a

max ǫT y∑q

k=1 bkyk = 0

y ∈ IRq+

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 39: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.2. Hilbert-bázisok 39

feladat optimális célfüggvényértéke 0. Ez azonban csak úgy lehetséges, haaz egyetlen megengedett megoldás a nullvektor, mert minden más esetbena célfüggvény pozitív volna. Tehát a (2.10) rendszer akkor és csak akkormegoldható, ha (2.11) megoldhatatlan. Q.E.D.

Az állítás átfogalmazásából adódik, hogy igaz a2.2.1. következmény: A

K = {x ∈ IRn | ∃λ ∈ IRq+, x =

q∑

k=1

bkλk }

poliedrikus kúpnak akkor és csak akkor van extremális pontja, ha létezik olyanb ∈ IRn vektor, hogy

∀v ∈ K esetén bT v > 0.

Q.E.D.

A következő tétel azt mondja ki, hogy csúcsos kúpok esetén létezik egyminimális Hilbert-bázis.2.2.3. tétel: Legyen K ⊂ IRn egy csúcsos kúp racionális extremális irá-nyokkal. Ekkor létezik K-nak egy olyan V Hilbert-bázisa, hogy bármely UHilbert-bázis esetén V ⊂ U .

A bizonyítás előtt megmutatjuk, hogy a tétel csak csúcsos kúpokra igaz.A nemnegatív félegyenesnek mint 1-dimenziós kúpnak minden Hilbert-bázisatartalmazza az 1 számot, ami önmagában is Hilbert-bázist alkot. A teljesegyenesnek azonban minden {−p, q} egész számpár a Hilbert-bázisa, aholp, q > 0 és lnko(p, q) = 1.Bizonyítás: Az előbbi következmény szerint most létezik egy olyan b vek-tor, hogy minden v ∈ K esetén bT v > 0. A skaláris szorzás folytonosságábólfeltehető, hogy b racionális. Egy alkalmas egésszel való szorzás útján elér-hető, hogy b egész legyen.

Minden Hilbert-bázisban benne kell lennie mindazon K∩ZZn-beli vektorok-nak, amelyek nem állnak elő tőlük különböző ugyanilyen vektorok nemnegatívegész lineáris kombinációjaként. Legyen a Hilbert-bázisok ezen kötelező közösrésze V. Most megszerkesztjük V-t.

A bT v függvény értékkészlete a K∩ZZn \{0} halmazon pozitív egészekbőláll. Legyenek ezek a számok w1 < w2 < ... Minden m = 1, 2, ... esetén az

Lm = {v ∈ K ∩ ZZn | bT v = wm }

halmaz véges. Különben a conv(Lm) ⊂ K halmazban volna ugyanis olyan v0

irány, hogy bT v0 = 0 és v0 ∈ K volna, ami mind b, mind wm definíciójávalellenkezik. Ha valamely v, u1, ..., ut ∈ K ∩ ZZn vektorokra (v 6= ui, i =

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 40: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

40 2. Az egészértékű programozás matematikai alapjai

1, ..., t) és z1, ..., zt pozitív egészekre igaz, hogy

v =t

i=1

uizi,

akkor nyilvánt

i=1

zi > 1.

Így

bT v =

t∑

i=1

bT uizi > bT uk,

ahol k tetszőleges, 1 és t közé eső index. Ezért v ∈ Lm esetén v előállításábancsak az L1, ...,Lm−1 halmazok elemei szerepelhetnek.

Most rekurzív módon megadjuk a H1,H2, ... halmazrendszert úgy, hogy

V =

∞⋃

i=1

Hi

teljesülni fog. LegyenH1 = L1,

hiszen a fentiek alapján azonnal látható, hogy az L1-beli vektorok nem állít-hatók elő más K ∩ ZZn-beli vektorok pozitív lineáris kombinációjaként. Te-gyük fel, hogy már megkonstruáltuk a H1, ...,Ht halmazokat. Ht+1 álljonazon Lt+1-beli vektorokból, amelyeknek nincs megfelelő előállítása az

t⋃

i=1

Hi

halmazba eső vektorokkal. Az előbbiekből adódik, hogy

Ht+1 ⊂ V.

Mivel K-nak most létezik Hilbert-bázisa, és ez véges halmaz, ezért V is az,így

∞⋃

i=1

Hi

elemeinek száma is véges. Ez maga után vonja, hogy egy t0 küszöb utánHt = ∅, t > t0 és v ∈ Lt esetén v megfelelő módon előállítható. Így

t0⋃

i=1

Hi

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 41: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.3. Poliéderben fekvő rácspontok konvex burkának bonyolultsága41

Hilbert-bázis, ezért tartalmazza a V halmazt, ez azonban csak úgy lehetséges,ha azonos vele. Q.E.D.

b x=2T

Tb x=3

Tb x=7

Tb x=10

: a Hilbert−bázis eleme

: a kúp pontja

: a kúpon kívüli egész pont

2.2. ábra: Egy kúp Hilbert-bázisa.

2.3. Poliéderben fekvő rácspontok konvexburkának bonyolultsága

A 2.1. szakaszban már foglalkoztunk a rácspontok konvex burkával, és azttaláltuk, hogy a gyakorlat szempontjából fontos esetekben, vagyis amikoraz együtthatók racionálisak, akkor ez a halmaz maga is poliéder. Most aracionalitást feltételezve a konvex burok bonyolultságát vizsgáljuk.

A szimplex eljárás számos diszkrét programozási algoritmusnak is az alapja.Ismeretes, hogy a módszer numerikusan nem stabil, mert igen érzékeny a ke-rekítési hibák felgyülemlésére. A bizonyítandó tétel azt mutatja, hogy ugyan-ezek a hibák az egészértékű programozási feladatok esetében is zavart okoz-hatnak.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 42: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

42 2. Az egészértékű programozás matematikai alapjai

Mielőtt magát a bizonyítandó tételt kimondanánk, emlékeztetünk a 2.1.szakasz példájára. Ebben a

H =

{(

1√5

)

y1 +

(

01

)

y2 +

(

1√5

)

| y1, y2 ≥ 0

}

halmazba eső rácspontok konvex burkát vizsgáltuk. Amikor√

5-öt egy rracionális számmal közelítettük, akkor a

Hr =

{(

1r

)

y1 +

(

01

)

y2 +

(

1r

)

| y1, y2 ≥ 0

}

halmaznak véges sok extremális pontja volt. Az a furcsa helyzet állt elő, hogyminél pontosabb volt a közelítés, annál több extremális pont adódott. Egyehhez hasonló helyzetet ír le a2.3.1. tétel: Legyen ε > 0 tetszőleges szám, és k tetszőleges, rögzítettpozitív egész. Legyenek továbbá a1, ...,an ∈ IRm (m ≥ 2) racionális vektorok,K pedig az általuk kifeszített kúp. Tegyük fel, hogy a1 extremális iránya K-nak, és dim(K) ≥ 2. Ekkor létezik egy olyan (a,

1,b) vektorpár, hogy(i) a

,1,b ∈ IRm racionálisak,

(ii) || a1 − a,1 ||< ε, || b ||< ε,

(iii) a

conv

x ∈ ZZm | ∃λ ∈ IRm+ , x = a

,1λ1 +

n∑

j=2

ajλj + b

halmaznak legalább k extremális pontja van.

Bizonyítás: Mivel K dimenziója legalább kettő, és a1 extremális iránya K-nak, ezért létezik egy további extremális iránya K-nak, például a2, úgy, hogyK-nak egy kétdimenziós L lapja az (a1,a2) síkba esik. Legyen ez a sík S.Minden változtatás, amit elvégzünk, ebben a síkban fog történni, így a poli-édernek mindig lesz egy L′ lapja S-ben, és L′ valamennyi extremális pontjaegyben a vizsgált poliéder extremális pontja is lesz.

Tekintsük az origón átmenő e1 és e2 egyeneseket, melyek irányvek-tora a1 és a2. Komponenseik racionalitásából adódik, hogy az egyenesekenvégtelen sok rácspont fekszik. Amikor az e1 helyett egy másik, e,

1 egyenestválasztunk, akkor ezt a tulajdonságot továbbra is fenn akarjuk tartani. Azazonban már nem lesz feltétlenül igaz, hogy e,

1 és e2 metszéspontja rácspontmarad. Ezt a lépést többször megismételjük. Az alábbiakban a jelölések egyilyen többszöri iteráció utáni helyzethez alkalmazkodnak.

Legyen δ > 0 rögzített valós szám. Ehhez végezzük el az alábbikonstrukciót. Az e1 és e2 metszéspontja legyen P0 = Q0. A két egyenesen

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 43: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.3. Poliéderben fekvő rácspontok konvex burkának bonyolultsága43

fekvő rácspontokat jelölje Pj , illetve Qj (j = ±1,±2, ...) úgy, hogy e1-en P0-tól (e2-n Q0-tól) a1 (a2) irányban pozitívak legyenek az indexek, és egyesévelnövekedjenek, az ellenkező irányban pedig negatívak legyenek, és csökkenje-nek. A conv(L ∩ ZZm) extremális pontja vagy egyedül P0, vagy P1 és Q1 ésmég néhány további, a szögtartomány belsejébe eső pont.

Forgassuk meg az e1 egyenest az S síkban a P2 pont körül egykicsiny, alkalmas α szöggel. Ügyeljünk arra, hogy az eredményül kapott e3

egyenes teljesítse a következőket: (a) e3-n végtelen sok rácspont található, (b)az e2 egyenest e3 a Q−1Q0 szakasz egy belső B pontjában messe, (c) a BP0P2

háromszög a P1 ponton és a csúcsain kívül, ha azok olyanok, más rácspontotne tartalmazzon, (d) az e3 egyenes a irányvektorára teljesüljön az || a−a1 ||<δ egyenlőtlenség, (e) a BP0 szakasz hossza δ-nál kisebb legyen. Nyilvánvaló,(a) akkor és csak akkor teljesül, ha a racionális. Továbbá az is látszik, hogya B pontnak P0-hoz elegendően közeli megválasztásával elérhető, hogy (b),(d) és (e) teljesüljön. Legyen e az S síkban az e1-gyel párhuzamos első olyanegyenes e1 oldalán, ami teljes egészében az L szögtartományon kívül fekszik.Ha ennek e2-vel vett metszéspontja C, és B a CP0 szakasznak is a belsejébenfekszik, akkor a (c) követelményt is kielégítettük.

Végezetül B megválasztható úgy, hogy (a) is igaz legyen, mert atöbbi követelmény szerint B egy pozitív hosszúságú szakasz bármely pontjalehet.

Jelölje L∗ a BP2 és BQ1 félegyenesek által meghatározott szög-tartományt. A conv(L∗ ∩ ZZm) halmaznak pontosan eggyel több extremálispontja van, mint conv(L∩ZZm)-nek. Hiszen az utóbbi valamennyi extremálispontja egyben az előbbié is, és ezekhez járul még a P2 pont.

Végezzük el ezt a szerkesztést egymást követőleg a

δ =ε

2ii = 1, ..., k

értékekre. Eredményül kapjuk az e,1 = ek+2 egyenest az a

,1 irányvektorral. A

b vektor az e,1 és e2 metszéspontjának a helyvektora lesz. Ekkor a háromszög-

egyenlőtlenségből következik, hogy fennáll (ii), a fenti gondolatmenet pedigmutatja, hogy (iii) is teljesül. Q.E.D.

Most rámutatunk a bizonyításban szereplő forgatások egy kísérőjelenségére. Tegyük fel, hogy n = m. Legyen r egy olyan pozitív egész, hogyaz ra,

1 vektor komponensei egészek. Jelölje P az ra,1,a2, ...,am vektorok által

kifeszített, balról zárt, jobbról nyílt paralellepipedont, azaz

P =

ra,1x1 +

m∑

j=2

ajxj : 0 ≤ xj < 1, j = 1, ...,m

.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 44: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

44 2. Az egészértékű programozás matematikai alapjai

Ennek térfogatára a számelméletből ismert az alábbi két egyenlőség:

vol(P) = | det(ra,1,a2, ...,am) | = | P ∩ ZZm | .

Mivel legalább k extremális pontunk van, melyek közül legfeljebb m lehet azéleken, így

| (b + P) ∩ ZZm | ≥ k − m.

Viszonylag egyszerűen bizonyítható a vektorok egészértékűségéből, hogy

| (b + P) ∩ ZZm | = | P ∩ ZZm | .

Így| det(ra,

1,a2, ...,am) | ≥ k − m,

vagyis a determináns abszolút értéke nagy lesz, ha k nagy.

P2

P1

P−1Q

Q−1

e1e3

e2

B

1

P =Q0 0

2.3. ábra: Egy kúpba eső rácspontok konvex burka.

2.4. Sperner-rendszerekAz egészértékű programozás kapcsolata a kombinatorika többi ágával általá-ban nem kidolgozott. Kevés az olyan fogalom, amely mindkét helyen szerepetjátszana a kutatás jelenlegi állása mellett. Ezek egyike a Sperner-rendszer,melyet az alábbiakban ismertetünk.2.4.1. definíció: Az x,y ∈ IRn vektorok összehasonlíthatatlanok, ha azx ≤ y és y ≤ x relációk egyike sem teljesül.2.4.2. definíció: Legyen K ⊂ { 0, 1 }n. Ekkor K egy Sperner-rendszer, hapáronként összehasonlíthatatlan vektorokat tartalmaz.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 45: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.4. Sperner-rendszerek 45

Most két nevezetes tételt ismertetünk a Sperner-rendszerekre vonatkozóan,felfedezésük időbeli sorrendjében. Meg fogjuk mutatni, hogy az első a máso-diknak egyszerű következménye.2.4.1. tétel (Sperner-lemma): Legyen K ⊂ { 0, 1 }n egy Sperner-rendszer.Ekkor

| K | ≤(

n⌊

n2

)

.

2.4.2. tétel (LYM-egyenlőtlenség): Legyen K ⊂ { 0, 1 }n egy Sperner-rendszer. Továbbá minden x ∈ K esetén legyen

| x | =

n∑

j=1

xj .

Ekkor

n∑

x∈K

1(

n| x |

) ≤ 1. (2.12)

Megjegyzés: Átfogalmazhatjuk |x| jelentését tekintve, hogy most csak bi-náris vektorokat vizsgálunk, ezért |x| az x vektor azon komponenseinek szá-mával egyenlő, amelyek értéke 1.Bizonyítás: Vizsgáljuk az olyan bináris vektorokból álló, n + 1 hosszúsorozatokat, amelyekre

y0

<

6= y1

<

6= ...<

6= yn. (2.13)

Itt y0 minden komponense 0, míg yn csupa egyesből áll. Általában igaz,hogy

|yi| = i, i = 0, 1, ..., n.

Az összes (2.13) alakú sorozat száma nyilván n!.Számoljuk össze azokat a (2.13) alakú sorozatokat is, amelyek tartalmazzák

K valamelyik elemét. Ha x, z ∈ K (x 6= z), és egy sorozat mind x-et, mindz-t tartalmazná, az

x<

6= z vagy a z<

6= x

relációk közül pontosan egynek fenn kell állnia, ami ellentmond K definíció-jának. Tehát egy sorozatban K-nak legfeljebb egy eleme lehet.

Legyen x ∈ K. Ekkor azon részsorozatok száma, amelyeknek a kezdő-pontja a nullvektor, és a végpontja x, pontosan |x|!. Másrészt azon soroza-tok száma, amelyeknek kezdőpontja x, és végpontja az azonosan 1 vektor,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 46: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

46 2. Az egészértékű programozás matematikai alapjai

(n− |x|)!. Tehát az x vektort tartalmazó (2.13) alakú sorozatok száma pon-tosan

|x|!(n − |x|)!.A fentiek alapján igaz az alábbi egyenlőtlenség:

x∈K

|x|!(n − |x|)! ≤ n!.

Innen n!-sal való osztással kapjuk a kívánt állítást. Q.E.D.

A Sperner-lemma bizonyítása: A (2.12) egyenlőtlenség bal oldalán egyösszeg áll. Az összeg egyes tagjainak alsó korlátja

1(

n⌊

n2

) .

Innen azonnal adódik, hogy az összegnek legfeljebb(

n⌊

n2

)

tagja lehet. Kérdés, hogy van-e olyan K Sperner-rendszer, amelyben a vek-torok száma ennyi. A válasz igen, nevezetesen K álljon azon n-dimenziósbináris vektorokból, amelyekben pontosan

⌊n

2

komponens értéke 1, a többié pedig 0. Q.E.D.

Hasonlítsuk össze egy Sperner-rendszer elemeinek számát az összes binárisvektor számával. Az első legfeljebb

(

n⌊

n2

)

,

a második pedig 2n. Megmutatjuk, hogy a

f(n) =

(

n⌊

n2

)

2n

hányados 0-hoz tart, ha n tart a végtelenhez. Az analízisből ismert az ún.Stirling-formula, amely n! értékére a

√2πnn+ 1

2 e−n

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 47: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.4. Sperner-rendszerek 47

aszimptotikus becslést adja. Ezt felhasználva nyerhetjük a

(

n⌊

n2

)

≈ 2n

√2πn

közelítést. Tehát

f(n) ≈ 1√2πn

.

Innen láthatjuk, hogy a kívánt konvergencia teljesül. Ez annyit jelent, hogynagy n esetén egy Sperner-rendszer elemeinek száma az összes bináris vektorszámához képest kicsi.

Most megmutatjuk a Sperner-rendszerek néhány olyan tulajdonságát, ame-lyekre az egészértékű programozási feladatok megengedett megoldási tarto-mányának vizsgálatakor lesz szükségünk.2.4.3. definíció: Legyen K ⊂ { 0, 1 }n egy tetszőleges halmaz. Az x pont

K-ban maximális, ha y ∈ { 0, 1 }n, és x<

6= y esetén y 6∈ K.Értelemszerűen hasonlóan definiáljuk, hogy egy pont mikor minimális egy

halmazban.2.4.3. tétel: Legyen K ⊂ { 0, 1 }n tetszőleges nem üres halmaz. A K-banmaximális (minimális) pontok Sperner-rendszert alkotnak.

Bizonyítás: Mivel K véges halmaz, van benne maximális (minimális) pont.Legyen M ⊂ K ezek halmaza; tehát M 6= ∅. Ha M egyetlen pontból áll,akkor Sperner-rendszer. Ha M nem Sperner-rendszer, akkor van benne kétolyan x, y pont, hogy a

x<

6= y, y<

6= x

egyenlőtlenségek közül pontosan egy teljesül. Ez azt jelenti, hogy x, és yközül az egyik nem lehet maximális (minimális). Q.E.D.

2.4.4. definíció: A Z Sperner-rendszer telített, ha bármely x ∈ { 0, 1 }n\Zvektor esetén a Z ∪ {x } halmaz nem Sperner-rendszer.

A definíció azt is jelenti, hogy ha Z telített Sperner-rendszer, akkor mindenx bináris vektor esetén x összehasonlítható legalább egy Z-beli ponttal. El-lenkező esetben ugyanis Z kiegészíthető volna az x vektorral, és még mindigSperner-rendszer volna. Megfordítva, ha minden x bináris vektor összeha-sonlítható Z legalább egy elemével, akkor Z telített.2.4.4. tétel: Legyen K egy nem üres Sperner-rendszer. Ekkor létezik egyM ⊂ { 0, 1 }n halmaz, hogy(i) M ∩ K = ∅.(ii) A Z = M ∪ K telített Sperner-rendszer.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 48: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

48 2. Az egészértékű programozás matematikai alapjai

(iii) Ha egy tetszőleges x ∈ { 0, 1 }n esetén van olyan l ∈ M, hogy x<

6= l,

akkor van olyan K-beli k vektor is, amelyre x<

6= k.

Bizonyítás: Ha K telített Sperner-rendszer, akkor készen vagyunk, hiszenekkor M = ∅ mellett (i)–(iii) teljesül. Különben jelölje T azon binárisvektorok halmazát, amelyek egyetlen K-beli ponttal sem összehasonlíthatók.Nyilván T nem üres, különben K telített lenne.

Tekintve, hogy az összes bináris vektor halmaza véges, egy tetszőlegesN ⊂ { 0, 1 }n halmazra és annak bármely x elemére az alábbi két állításközül pontosan egy igaz:(a) x minimális N -ben,

(b) ∃m ∈ N , m minimális N -ben és m<

6= x.Legyen M a T -ben lévő minimális vektorok halmaza. A 2.4.3. tétel miatt

M egy Sperner-rendszer. Nyilván

K ∩ M = ∅.

Vizsgáljuk meg a Z = M ∪ K halmazt. Tekintsünk egy tetszőleges x ∈{ 0, 1 }n pontot. Ekkor vagy x 6∈ T , és akkor összehasonlítható valamelyikK-beli elemmel, vagy x ∈ T . Az utóbbi esetben x vagy minimális T -ben,tehát M-beli, vagy összehasonlítható M valamelyik elemével. Azt kapjuktehát, hogy bármely x vektor összehasonlítható a Z rendszer legalább egyelemével. Z összehasonlíthatatlan elemeket tartalmaz, mert a K-beliek ésaz M-beliek egymás közt összehasonlíthatatlanok, továbbá M definíciójaszerint az M-beliek összehasonlíthatatlanok a K-beliekkel. Így Z telítettSperner-rendszer.

Most már csak a (iii) tulajdonságot kell igazolni. Legyen egy tetszőleges

x ∈ { 0, 1 }n pont olyan, hogy ∃ l ∈ M, hogy x<

6= l. Ekkor x biztosanösszehasonlítható egy K-belivel, ugyanis ellenkező esetben x ∈ T volna, amiellentmond annak, hogy l minimális T -ben. Legyen tehát k ∈ K olyan, hogyx összehasonlítható k-val. Most

k ≤ x

nem állhat, mert akkor

k<

6= l

is igaz volna, ami lehetetlen. Tehát

x<

6= k.

Ezzel állításunkat igazoltuk. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 49: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.5. Egyenletekkel definiált diszkrét ponthalmazok 49

2.5. Egyenletekkel definiált diszkrétponthalmazok

Tekintsünk egy tetszőleges A mátrixot, melynek m sora és n oszlopa van,valamint egy ugyancsak tetszőleges m-dimenziós b vektort. Legyen

K = {x | Ax = b, x ∈ { 0, 1 }n }. (2.14)

2.5.1. tétel: Jelölje H a

H = {x | Ax = 0, x ∈ { 0, 1 }n }

halmazt. HaH = {0 },

akkor K Sperner-rendszer.

Bizonyítás: Tegyük fel, hogy K nem Sperner-rendszer. Azt kell megmu-tatnunk, hogy H-nak a nullvektoron kívül is van eleme. Az indirekt feltevésszerint létezik olyan x, y ∈ K vektorpár, amelyre

x<

6= y.

InnenAx = Ay,

ahonnan átrendezésselAy − Ax = 0.

Legyen z = y−x. A fentiek alapján z ≥ 0. Azt kell csak még megmutatni,hogy z bináris vektor. Tetszőleges zj komponensére

zj = yj − xj ,

ahonnan azonnal látszik, hogy zj 1-nél nagyobb nem lehet, 0-nál kisebb sema nemnegativitás miatt, tehát z ∈ H. Q.E.D.

A tétel feltétele könnyen teljesülhet (például minden együttható pozitív).Ilyen esetben – az előző szakasz végén mondottak szerint – az egyenletrend-szert csak relatívan kevés vektor elégítheti ki.

Általában is az a helyzet, hogy a homogén rendszer kielégítése sokkal ne-hezebb, mint a folytonos esetben. Sőt, ha a homogén rendszernek van null-vektortól különböző megoldása, akkor ez még nem jelent garanciát arra, hogylesznek összehasonlítható pontok a halmazban.

Egy fontos probléma a következő. Tegyük fel, hogy egy K halmaz előállvalamely alkalmas A mátrixszal és b vektorral a (2.14) alakban. Kérdés,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 50: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

50 2. Az egészértékű programozás matematikai alapjai

hogy mennyire jellemző K-ra a felhasznált egyenletek száma. Bradley egészenáltalános feltételek mellett megmutatta, hogy egy egészértékű – tehát nemfeltétlenül bináris – változókon értelmezett egyenletrendszer helyettesíthetőegyetlen egyenlettel.2.5.1. definíció: Legyen f(x) az n-dimenziós vektorokon értelmezett valósfüggvény. Jelöljön H ⊂ IRn egy rögzített halmazt. Azt mondjuk, hogy fegészértékű a H halmazon, ha minden x ∈ H esetén f(x) ∈ ZZ.

Legyen f(x) és g(x) két egészértékű függvény valamely H halmazon. Azta kérdést fogjuk vizsgálni, hogy az

f(x) = 0, g(x) = 0

egyenletrendszer helyettesíthető-e a H halmazon egyetlen egyenlettel. Pon-tosabban szólva, léteznek-e olyan u,w szorzók, hogy

R = {x | f(x) = 0; g(x) = 0; x ∈ H}

és

Z(u,w) = {x | uf(x) + wg(x) = 0; x ∈ H}

mellett az

R = Z(u,w)

egyenlőség fennálljon.Szükségünk lesz az alábbi mennyiségekre. Előrebocsájtjuk, hogy minde-

gyik egy függvény bizonyos halmazon vett szuprémumaként vagy infimuma-ként áll elő, sőt az infimumok a szuprémumokkal párba rendezhetők úgy, hogyaz egy párba tartozók ugyanannak a függvénynek ugyanazon a halmazon vettinfimuma, illetve szuprémuma. Az adott mennyiséget definíció szerint nullá-nak tekintjük, ha ez a szuprémum (infimum) zérusnál kisebb (nagyobb).

Legyen tehát

S1 = sup g(x) I1 = inf g(x)x ∈ H, sgn(w)f(x) ≤ −|w|

S2 = sup g(x) I2 = inf g(x)x ∈ H, sgn(w)f(x) ≥ |w|

S3 = sup f(x) I3 = inf f(x)x ∈ H, sgn(u)g(x) ≥ |u|

S4 = sup f(x) I4 = inf f(x)x ∈ H, sgn(u)g(x) ≤ −|u| .

Most már megfogalmazhatjuk alapvető tételünket.2.5.2. tétel (Bradley-tétel): Tegyük fel, hogy f és g egészértékű függvénya H halmazon; u és w relatív prím egészek. Ha igaz legalább egy a következőegyenlőtlenségek közül:

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 51: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.5. Egyenletekkel definiált diszkrét ponthalmazok 51

A1: u > S1A2: u < I1A3: −w > S3A4: −w < I3

és legalább egy az alábbiak közül is:

B1: −u > S2B2: −u < I2B3: w > S4B4: w < I4

– akkor igaz az

R = Z(u,w) (2.15)

egyenlőség.

Bizonyítás: Nyilvánvaló, hogy

R ⊂ Z(u,w).

Ezért, ha Z(u,w) üres, akkor (2.15) fennáll. Tegyük tehát fel, hogy valamelyy ∈ H vektorra

uf(y) + wg(y) = 0.

Most létezik olyan t egész szám, hogy

uf(y) = t és wg(y) = −t.

Mivel u, f(y), w, g(y) és t egészek, ezért u és w osztója t-nek. Ők magukazonban relatív prímek, tehát van olyan r egész, hogy

t = uwr.

Innen

f(y) = wr (2.16)

és

g(y) = −ur. (2.17)

Azt kell most belátnunk, hogy r = 0. Ez annak folyománya, hogy az A1–A4feltételek mindegyikének következménye az

r ≥ 0

egyenlőtlenség, míg a B1–B4 feltételek esetében az

r ≤ 0

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 52: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

52 2. Az egészértékű programozás matematikai alapjai

követelményt kapjuk.Az r előjelére vonatkozó állításunkat példaként az A2 feltételre igazoljuk.

A többi esetben a bizonyítás teljesen hasonlóan megy.Indirekt módon tegyük fel, hogy

r < 0.

Tehát r negatív egész. A (2.16) képlet alapján f(y) a

−w, −2w, −3w, ...

értékek valamelyikével egyenlő.Ha w = 0, akkor ezzel be is bizonyítottuk, hogy

y ∈ R.

Ezért a továbbiakban csak a w 6= 0 esetet vizsgáljuk. Ha w pozitív, akkorez azt jelenti, hogy

f(y) ≤ −w,

ami az adott esetbensgn(w)f(y) ≤ − | w |

alakban is írható. Ha w negatív, akkor

f(y) ≥ −w.

Most sgn(w) = −1. Ezért −1-gyel végigszorova az egyenlőtlenséget ismét a

sgn(w)f(y) ≤ − | w |

alakot kapjuk.Az I1 definíciójából és A2 fennállásából következik, hogy u negatív. Az

előbbiekből pedig kapjuk, hogy

u < inf{ g(x) | sgn(w)f(x) ≤ − | w |; x ∈ H} ≤ g(y) = −ur.

Tehátu < −ur,

ahonnan1 > −r.

Figyelembe véve r egész voltát,

r ≥ 0,

ami ellentmond indirekt feltevésünknek. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 53: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.5. Egyenletekkel definiált diszkrét ponthalmazok 53

2.5.3. tétel: Legyen A egészekből alkotott m×n-es mátrix, b, illetve d pedigm-, illetve n-dimenziós vektor egész komponensekkel; ezenkívül d nemnegatív.Jelölje K a

K = {x | Ax = b; x ∈ ZZn+; x ≤ d }

halmazt. Ekkor létezik egy n-dimenziós a vektor és egy c szám, hogy a

L = {x | aT x = c; x ∈ ZZn+; x ≤ d }

halmazraL = K.

Bizonyítás: Első állításként bebizonyítjuk, hogy az adott feltételek mellettaz

Ax = b

egyenletrendszer bármely két tagja helyettesíthető egyetlen egyenlettel. Je-lölje ugyanis ai az A mátrix i-edik sorának elemeiből alkotott oszlopvektort.Vizsgáljuk az

aTi x = bi

aTk x = bk

egyenleteket, ahol i 6= k. Most az

f(x) = aTi x − bi, g(x) = aT

k x − bk

függvények egészértékűek a

H = {x ∈ ZZn+ | x ≤ d }

halmazon. Legyen u = 1 és w olyan egész, hogy

w > maxx∈H

| f(x) | .

Most azf(x) = 0 és g(x) = 0

egyenletek helyettesíthetők az

uf(x) + wg(x) = 0

egyenlettel, mert teljesül a Bradley-tétel A1 és B2 feltétele. Ezzel első állítá-sunkat igazoltuk.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 54: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

54 2. Az egészértékű programozás matematikai alapjai

Ha az előbbieket iteratív módon alkalmazzuk, akkor minden lépésbeneggyel csökken a K halmaz definiálásához szükséges egyenletek száma, egé-szen addig, amíg számuk egyre nem csökken. Ekkor megkaptuk a kívánt avektort és c számot. Q.E.D.

Példaként tekintsük a bináris változókon értelmezett

f(x) = x1 + x2 − 1 = 0

ésg(x) = x1 − x2 − 1 = 0

egyenleteket. Legyen u = 1, és határozzuk meg w értékét úgy, hogy pozitívlegyen. Ekkor az A4 és a B3 feltételeket kell teljesítenünk. Ezek közül az elsőautomatikusan teljesül, mert nincs olyan bináris vektor, ami a

sgn(u)g(x) ≥ | u | , azaz x1 − x2 − 1 ≥ 1

feltételt teljesítené, és így I3=0. B3 teljesüléséhez az

S4 = max x1 + x2 − 1x1 − x2 ≤ 0x1, x2 ∈ { 0, 1 }

értéket kell meghatározni, ami 1. Ebből w ≥ 2. Valóban az u = 1 és w = 2értékek mellett a

3x1 − x2 = 3

összevont egyenlet adódik, amit csak az (1, 0) pont elégít ki, akárcsak azeredeti két egyenletet.

A bizonyításból látszik, hogy a szorzók igen nagyok is lehetnek, ezért azegyütthatók abszolút értéke jelentősen megnőhet, ami számítástechnikai ne-hézséget okozhat.

2.6. Egyenlőtlenségekkel definiált binárisponthalmazok

Ebben a szakaszban több egyenlőtlenséggel definiált ponthalmazok tulajdon-ságait vizsgáljuk meg. Egy általános tétel kivételével a bináris esetet tárgyal-juk.2.6.1. tétel: Legyen K ⊂ { 0, 1 }n egy tetszőleges halmaz. Ekkor létezik egyA mátrix és egy megfelelő b vektor úgy, hogy

K = {x ∈ { 0, 1 }n | Ax ≤ b }.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 55: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.6. Egyenlőtlenségekkel definiált bináris ponthalmazok 55

Bizonyítás: Legyen y egy tetszőleges nem K-beli pont. Jelölje N az összesindex halmazát, azaz

N = { 1, 2, ..., n }.Vezessük be még az I és J indexhalmazokat oly módon, hogy

I = { j ∈ N | yj = 1 } és J = { j ∈ N | yj = 0 }.

Ekkor az I ∩ J = ∅, N = I ∪ J relációk nyilvánvalóan teljesülnek.Tekintsük a következő lineáris egyenlőtlenséget:

j∈I

xj −∑

j∈J

xj ≤ |I| − 1. (2.18)

Nyilvánvalóan y nem elégíti ki (2.18)-at, mert behelyettesítve a bal oldalon|I|-t kapunk. Másrészt minden y-tól különböző bináris vektor teljesíti (2.18)-at. Ha

z<

6= y,

akkor j ∈ J esetén zj = 0, és van olyan p ∈ I, hogy zp = 0. Mindez aztjelenti, hogy z-et behelyettesítve (2.18)-ba, legfeljebb |I| − 1-et kapunk a baloldalon. Az

y<

6= z

feltétel maga után vonja, hogy j ∈ I esetén zj = 1, és van olyan p ∈ J ,hogy zp = 1. Tehát

j∈I

zj = |I| és∑

j∈J

zj ≥ 1,

ami ismét azt jelenti, hogy (2.18) igaz. Végül, ha z nem összehasonlíthatóy-nal, akkor van p ∈ I, hogy zp = 0, és van q ∈ J , hogy zq = 1. Ezért

j∈I

zj ≤ |I| − 1 és∑

j∈J

zj ≥ 1,

tehát (2.18) bal oldala legfeljebb |I| − 2.Ha minden nem K-beli pontra felírtuk a (2.18) feltételt, akkor a baloldali

együtthatókból kapjuk az A mátrixot, a megfelő jobb oldalakból pedig a bvektort. Q.E.D.

A tétel bármennyire egyszerű, igen jelentős. Eszerint ugyanis a lineárisegyenlőtlenségekkel jellemzett bináris ponthalmazoknak nincsenek speciálistulajdonságai.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 56: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

56 2. Az egészértékű programozás matematikai alapjai

0 1 22.4. ábra: A { 0, 2 } halmazt tartalmazó félegyenesek tartalmazzák az 1

számot is.

Az állítás nem marad igaz, ha bináris vektorok helyett például felső kor-látos egész vektorokra térünk át. Az elképzelhető legkisebb ellenpélda: adimenzió 1, a felső korlát 2. Valóban a { 0, 1, 2 } halmazból a { 0, 2 } halmaznem választható ki lineáris egyenlőtlenségekkel, ugyanis az ezeket kielégítő(valós) számok mind félegyeneseket alkotnak. Mindazon félegyenesek, ame-lyek mind a 0, mind a 2 számot tartalmazzák, a konvexitásból következőentartalmazzák az 1 számot is. A bináris vektorok azonban mind a konvexburkuk – az egységkocka – egy-egy csúcsát adják, így a fentihez hasonló el-lenpélda nem képzelhető el.

u u

u u

¡¡

¡¡

¡¡

¡¡

@@

@@

@@

@@ @@R

¡¡ª

¡¡

¡¡

¡¡

¡¡

@@

@@

@@

@@@

@I¡

¡µ

2.5. ábra: Az egységnégyzet csúcsainak lemetszése félsíkokkal.

A 2.5.1. tételhez hasonló állítás nem mondható ki. Abból ugyanis, hogyy, z ∈ K, még nem következtethetünk az

Ay − Az

vektor előjelére. Álljon K az azonosan 1 vektor kivételével az összes 0 − 1vektorból. Az egyetlen feltétel, amit fel kell írni

n∑

j=1

xj ≤ n − 1.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 57: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.6. Egyenlőtlenségekkel definiált bináris ponthalmazok 57

A megfelelő homogén egyenlőtlenséget csak a 0 vektor elégíti ki, mely K-nakis eleme. Éppen ezért n ≥ 2 esetén K nem Sperner-rendszer.

Mivel a tételben a K halmaz tetszőlegesen adható meg, ezért a lineárisegyenlőtlenségekkel definiált feladatok esetében a megengedett megoldásokszámának aránya az összes megoldások számához (2n) képest nem is tarthat0-hoz.

A tétel nem jelenti azt, hogy bármilyen más módon, például bonyolult al-gebrai és/vagy logikai feltételek útján megadott halmazt le kellene írni előbblineáris egyenlőtlenségekkel, mielőtt a rajta értelmezett optimalizálási fela-datot megoldanánk. Ez az átírás általában nagyobb számítási erőfeszítéstigényelne, mint megoldani magát a feladatot. Mi itt csupán a tétel elvi je-lentőségét hangsúlyozzuk.

A Bradley-tételhez hasonló állítás nem igazolható, azaz egy tetszőleges bi-náris vektorhalmaz nem írható le egyetlen egyenlőtlenséggel. Ezt a kérdéskörta következő szakaszban vizsgáljuk meg részletesebben.

Az ilyen típusú tételek az egészértékű programozás szempontjából azt je-lentik, hogy egy feladat olyan ekvivalens alakját keressük, amelyben a meg-engedett megoldások halmaza pontosan megegyezik az eredeti feladatéval. Akövetkezőkben elvetjük ezt a szigorú követelményt, és csak arra törekszünk,hogy az optimális megoldások halmaza legyen ugyanaz.2.6.2. tétel: Legyen a Z egy n-dimenziós telített Sperner-rendszer, és ennekegy tetszőleges particiója

Z = K ∪ L, K ∩ L = ∅, K 6= ∅.

Ekkor létezik egy r pozitív egész szám és hozzá egy r × n-es, nemnegatívkomponensekből álló A mátrix és egy b r-dimenziós vektor, hogy ha

M = {x ∈ { 0, 1 }n | Ax ≤ b },

akkor igazak a következők:(i) k ∈ K esetén k ∈ M,

(ii) nincs olyan m ∈ M, amelyre létezne k ∈ K, hogy k<

6= m,(iii) ∀ l ∈ L esetén l 6∈ M,

(iv) ∀ l ∈ L és ∀m<

6= l esetén m ∈ M.

Bizonyítás: Minden s ∈ Z esetén megadunk egy

a(s)T x ≤ b(s) (2.19)

alakú lineáris egyenlőtlenséget, ahol a(s) n-dimenziós vektor, és minden együtt-ható nemnegatív. Az M halmazt pedig az

M = {x ∈ { 0, 1 }n | a(s)T x ≤ b(s) }

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 58: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

58 2. Az egészértékű programozás matematikai alapjai

feltétellel definiáljuk. Így r = |Z| és az A mátrix sorait az a(s)T vektorok,a b komponenseit a b(s) értékek adják meg.

Legyen

ε =1

n + 1.

Jelölje sj az s vektor j-edik komponensét (j = 1, 2, ..., n).1. Először a K-beli pontokra adjuk meg a (2.19) alakú egyenlőtlenséget.

Legyen tehát s ∈ K. Az a(s) vektor komponenseit az

aj(s) =

{

1 ha sj = 1ε ha sj = 0

formula szolgáltatja; továbbá

b(s) =

n∑

j=1

sj .

Most a (2.19) feltételt megsérti minden w ∈ { 0, 1 }n pont, ha s<

6= w.Viszont kielégíti a feltételt s és minden, a parciális rendezésben nála kisebbés vele összehasonlíthatatlan vektor. Ugyanis

a(s)T s = b(s). (2.20)

A (2.19) feltétel együtthatóinak nemnegativitása miatt w<

6= s esetén

a(s)T w ≤ b(s) − 1 < b(s).

Végül ha w és s összehasonlíthatatlan, akkor

a(s)T (s − w) =n

j=1

aj(s)(sj − wj) =∑

sj = 1wj = 0

1 −∑

sj = 0wj = 1

ε.

Itt az első tagot 1-gyel alulról, a másodikat (n − 1)ε-nal felülről becsülvekapjuk, hogy

a(s)T (s − w) ≥ 1 − n − 1

n + 1> 0,

ami (2.20) alapján azt jelenti, hogy w kielégíti (2.19)-t.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 59: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.6. Egyenlőtlenségekkel definiált bináris ponthalmazok 59

2. Most megadjuk az L-beli pontokra a megfelelő (2.19) alakú egyenlőt-lenséget. Legyen s ∈ L. Az a(s) vektor ugyanaz, mint az előbb, azaz

aj(s) =

{

1 ha sj = 1ε ha sj = 0,

legyen továbbá

b(s) =

n∑

j=1

sj − ε.

Tehát csak annyi a különbség az előző esethez képest, hogy a jobb oldal ε-nalkevesebb s függvényében.

Mivel feltettük, hogy K 6= ∅, ezért 0 6∈ L, így b(s) > 0.Most a (2.19) feltételt megsérti s és minden, a parciális rendezésben nála

nagyobb pont. A fentiekhez hasonlóan megmutatható, hogy az egyenlőtlenségnem zárja ki az s-nél kisebb és az s-sel összehasonlíthatatlan vektorokat.

Tételünk bizonyításához már csak a (iv) követelmény fennállását kell iga-

zolnunk. Legyen s ∈ L. Tekintsünk egy tetszőleges m<

6= s vektort.Ekkor léteznek olyan Z-beli pontok, amelyekkel m összehasonlítható, mivelZ telített. Nyilván maga s is ilyen. Ha egy további v ∈ Z vektorral isösszehasonlítható m, akkor

v ≤ m

nem állhat, mert akkor

v<

6= s

is igaz, ami lehetetlen, lévén Z Sperner-rendszer. Tehát csak az

m<

6= v

reláció lehet igaz. Így valamennyi (2.19) alakú feltétel esetében m vagyösszehasonlíthatatlan a feltételt definiáló ponttal vagy kisebb annál. Azon-ban (2.19) ezek egyikét sem zárja ki, vagyis m ki fogja elégíteni az összesilyen egyenlőtlenséget. Q.E.D.

A diszkrét ponthalmazok általában csak implicit módon vannak definiálva.Ilyen esetekben a bizonyítás nem ad módot az A mátrix és a b vektor megha-tározására. A fejezet végén adunk egy éles felső korlátot a szükséges feltételekszámára.

Az alábbiakban egy egzisztenciatételt fogunk igazolni. Ennek lényege,hogy a 2.6.2. tétel állításában szereplő A mátrix speciális alakú lehet, kom-ponensei a 0 és 1 értékek közül kerülnek ki. Erre ugyancsak vonatkoznak a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 60: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

60 2. Az egészértékű programozás matematikai alapjai

fenti megjegyzések. Előbb szükségünk lesz egy Balastól és Jeroslow-tól szár-mazó tételre. Mindenekelőtt vezessük be a következő jelöléseket. Vizsgáljuka bináris xj változókon értelmezett

n∑

j=1

ajxj ≤ b (2.21)

egyenlőtlenséget, ahol minden aj együttható nemnegatív. LegyenS ⊂ { 1, ..., n } olyan, hogy

j∈S

aj > b. (2.22)

Azokra az x vektorokra, amelyek kielégítik (2.21)-et, nyilván fennáll, hogy∑

j∈S

xj ≤ | S | − 1. (2.23)

Legyen Z azon S indexhalmazok halmaza, amelyekre (2.22) fennáll, de sem-milyen valódi részhalmazukra ez az egyenlőtlenség nem igaz, azaz

Z = { S |∑

j∈S

aj > b; ∀ T ⊂ S, T 6= S,∑

j∈S

aj ≤ b }.

Ezután már megfogalmazhatjuk az alábbi állítást.2.6.3. tétel: Egy x vektor akkor és csak akkor elégíti ki a (2.21) egyenlőt-lenséget, ha minden S ∈ Z estén kielégíti (2.23)-at is.

Bizonyítás: Ha x megsérti a (2.21) feltételt, akkor a (2.23) egyenlőtlenségetki nem elégítő vektorok E halmaza nem üres. Ezért van olyan y ∈ E vektor,mely E-ben minimális, és y ≤ x. Legyen

S = { j | yj = 1 }.

Az y pont definíciójából következik, hogy S ∈ Z. Másrészt viszont az y ≤ x

egyenlőtlenségből következik, hogy j ∈ S esetén xj = 1, tehát x erre az y-ramegsérti a (2.23) feltételt is.

Megfordítva, ha x valamely Z-beli S-re megsérti (2.23)-at, akkor

n∑

j=1

ajxj ≥∑

j∈S

aj > b,

így a (2.21) egyenlőtlenséget sem elégíti ki. Q.E.D.

Láttuk tehát, hogy egy bináris változókon értelmezett, nemnegatív együtt-hatókat tartalmazó egyenlőtlenség ekvivalens egy olyan egyenlőtlenség-rend-szerrel, ahol a jobb oldalaktól eltekintve minden együttható 0 vagy 1. Az

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 61: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.6. Egyenlőtlenségekkel definiált bináris ponthalmazok 61

ekvivalencia abban a szigorúbb értelemben igaz, hogy a két feltételrendszertpontosan ugyanazok a pontok elégítik ki. Felhívjuk a figyelmet arra, hogymost egyetlen nemnegatív együtthatós egyenlőtlenséget egyenlőtlenségek egycsoportjával helyettesítünk, mint azt az alábbi példa is mutatja. Az

5x1 + 4x2 + 3x3 + 2x4 ≤ 9

feltétel eseténZ = { {1, 2, 4}, {1, 3, 4}, {1, 2, 3} }.

Így meg kell követelnünk az

x1 + x2 + x4 ≤ 2x1 + x3 + x4 ≤ 2x1 + x2 + x3 ≤ 2

egyenlőtlenségek teljesülését. Szükség is van mind a háromra, mert bárme-lyiket elhagyva az elhagyott egyenlőtlenséget definiáló pont kielégíti a másikkét feltételt.

Most rátérünk egy másik ekvivalencia vizsgálatára. Nem fogjuk megköve-telni a halmazok azonosságát, hanem csak annyit, hogy a rajtuk értelmezettlineáris célfüggvényű egészértékű programozási feladatoknak legyen közös op-timális megoldása.2.6.4. tétel: Egy M ⊂ { 0, 1 }n tetszőleges nem üres halmaz. Ekkorlétezik olyan p pozitív egész szám és hozzá egy nullákból és egyesekből alkotottB p × n-es mátrix, valamint egy d ≥ 0 p-dimenziós vektor, hogy az

E = {x ∈ { 0, 1 }n | Bx ≤ d }

halmaz maximális pontjai pontosan megegyeznek az M halmaz maximálispontjaival.

Bizonyítás: Jelölje K az M halmaz maximális pontjaiból alkotott halmazt.Ekkor K Sperner-rendszer, ezért alkalmazható rá a 2.4.4. tétel, vagyis létezikegy tőle diszjunkt L Sperner-rendszer, hogy a

Z = K ∪ L

telített. Erre alkalmazható a 2.6.2. tétel. Ez egy nemnegatív elemeket tar-talmazó A mátrix és egy megfelelő dimenziós b vektor létezését biztosítja,amelyre az

E = {x ∈ { 0, 1 }n | Ax ≤ d }halmaz maximális pontjai a K-beli vektorok. Az

Ax ≤ b

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 62: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

62 2. Az egészértékű programozás matematikai alapjai

feltételrendszer minden egyenlőtlenségére alkalmazva a 2.6.3. tételt, a kívántállítást kapjuk. A d vektor nemnegativitását az biztosítja, hogy M nem üres,ezért az E halmazon kívüli pontok legalább egy egyest tartalmaznak, így a(2.23) típusú egyenlőtlenségek jobb oldala legalább 0 lesz. Q.E.D.

HaS ⊂ T ⊂ { 1, ... , n },

akkor a bináris változókon a∑

j∈T

xj ≤| T | − 1

egyenlőtlenség következménye a∑

j∈S

xj ≤| S | − 1

feltételnek. Innen látható, hogy a bizonyításban szereplő konstrukció során,amikor minden egyenlőtlenségre külön-külön akalmaztuk a 2.6.3. tételt, fe-leslegesen sok feltételt vezettünk be. Jelölje P az E halmazba nem tartozókközül a minimálisak halmazát. Nyilván

L ⊂ P,

és P Sperner-rendszer. A P halmaz a

W = { S | ∃x ∈ P, S = { j | xj = 1 }}

rendszer elemeinek karakterisztikus vektorait tartalmazza. A fentiek alapjána (2.23) típusú egyenlőtlenséget elég csak a W-beli indexhalmazokra megkö-vetelni.

Így az okvetlenül szükséges feltételek számára most, amikor csak a maxi-mális pontok egyezését kívánjuk meg, ugyancsak az

(

n⌊

n2

)

triviális felső becslés adódik, akárcsak abban az esetben, amikor a feltételek-ben tetszőleges nemnegatív együtthatókat megengedtünk.

Legyen c ∈ IRn egy tetszőleges vektor, és M ⊂ { 0, 1 }n tetszőlegeshalmaz. Tekintsük a

max { cT x | x ∈ M} (2.24)

egészértékű programozási feladatot. Legyen

J = { j | cj < 0 }.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 63: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.6. Egyenlőtlenségekkel definiált bináris ponthalmazok 63

Definiáljuk a d vektort és az E halmazt úgy, hogy

dj = |cj | j = 1, ..., n

és

E = {x ∈ {0, 1}n | ∃y ∈ M : (∀j ∈ J : xj = 1 − yj és ∀j 6∈ J : xj = yj)}.

Nyilvánvaló, hogy (2.24) ekvivalens a

max {dT x | x ∈ E } (2.25)

feladattal abban az értelemben, hogy a megengedett megoldások kölcsönösenegyértelműen egymáshoz rendelhetők, továbbá, ha y1, y2 ∈ M és a nekikmegfelelő x1, x2 ∈ E vektorok esetén

cT y1 ≤ cT y2 ⇐⇒ dT x1 ≤ dT x2.

Tehát mindkét feladatban az optimális megoldások egymás megfelelői. Másszavakkal, az általánosság megszorítása nélkül lineáris célfüggvény és binárisváltozók esetén feltehetjük, hogy a célfüggvény vektora nemnegatív.2.6.5. lemma: Legyen M ⊂ { 0, 1 }n tetszőleges, rögzített halmaz. Ekkorminden c ∈ IRn

+ vektor esetén a

max { cT x | x ∈ M}

feladatnak van olyan optimális megoldása, amely maximális M-ben, továbbác > 0 esetén minden optimális pont egyben maximális is. Q.E.D.

A bizonyítás igen egyszerű, ezért elhagyjuk. A lemma azonban lehetővéteszi a következő fogalom bevezetését.2.6.1. definíció: Az E , M ⊂ { 0, 1 }n halmazokat egészértékű programo-zási szempontból ekvivalensnek nevezzük, ha bármely c ∈ IRn

+ vektor eseténa

max { cT x | x ∈ E } és max { cT x | x ∈ M}

feladatoknak van közös optimális megoldása.Nyilván E és M akkor és csak akkor lesz egészértékű programozási szem-

pontból ekvivalens, ha a maximális pontjai megegyeznek. Ellenkező esetbenugyanis E \M és M\ E közül legalább az egyik nem üres. Tegyük fel, hogylétezik egy m ∈ E \M maximális pont. Ekkor a

max {mT x | x ∈ E } és max {mT x | x ∈ M}

feladatok közül az elsőnek m az egyetlen optimális megoldása, míg ez a pontnem megengedett a másodikban.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 64: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

64 2. Az egészértékű programozás matematikai alapjai

A 2.6.2. és 2.6.4. tétel olyan ekvivalensek létezését állították, amelyekbennincsenek „lyukak”, azaz ha x megengedett volt, akkor minden y ≤ x is meg-engedett. Ez egy jól kihasználható tulajdonság. Ebben az esetben ugyanisigen egyszerű maximális megengedett pontot keresni. Induljunk ki a 0 vek-torból. Ha ez nem megengedett, akkor egyáltalán nem létezik megengedettmegoldás. Különben valamelyik komponensét változtassuk 0-ról 1-re, és eztismételjük meg mindaddig, amíg még megengedett megoldáshoz jutunk:

2.6.1. algoritmus

1. k := 0;

2. x0 := 0;

3. while { j | xk + ej ∈ M} 6= ∅ do

4. begin

5. válasszuk ki p-t a { j | xk + ej ∈ M} halmazból;

6. xk+1 := xk + ep;

7. k := k + 1;

8. end.

A vizsgált esetben az eredményül kapott pont garantáltan maximális leszM-ben. Máskülönben nem ez a helyzet, hiszen beleütközhetünk valamely„lyuk” aljába. Az eljárás jelentőségét az adja, hogy a 2.6.5. lemma szerintelsősorban a maximális pontok esélyesek arra, hogy optimálisak legyenek. A2.6.1. algoritmus az ún. mohó módszer, amit a 10. fejezetben vizsgálunkmeg részletesen.

Most pedig következzék a bevezetőben említett, az általános esetre vonat-kozó tétel.2.6.6. tétel: Legyen n és m két rögzített pozitív egész, továbbá a1,a2, ...,am ∈IRn, b1, b2, ..., bm ∈ IR rögzített vektor, illetve valós szám. Ha az

aT1 x ≤ b1, aT

2 x ≤ b2, ..., aTmx ≤ bm (2.26)

egyenlőtlenség-rendszernek nincs egész megoldása, akkor van (2.26) egyenlőt-lenségei között legfeljebb 2n, hogy azoknak sincs együttesen egész megoldásuk.

Bizonyítás: Tegyük fel, hogy nincs (2.26)-nak egész megoldása. Ekkor azáltalánosság megszorítása nélkül feltehető, hogy (2.26) erre a tulajdonságranézvést minimális, azaz bármely egyenlőtlensége elhagyása esetén a maradékrendszernek már van egész megoldása. Legyen az i-edik feltétel elhagyásamellett kapott megoldás xi. Tehát ∀ j 6= i : aT

j xi ≤ bi és aTi xi > bi. Tegyük

fel, hogy m > 2n.Legyen

Z = ZZn ∩ conv({x1, ...,xm }).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 65: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.6. Egyenlőtlenségekkel definiált bináris ponthalmazok 65

A Z halmaz nyilvánvalóan véges.Tekintsük az alábbi optimalizálási feladatot:

maxm

i=1

ui (2.27)

ui ≥ min{aTi z | z ∈ Z, aT

i z > bi } (2.28)

6 ∃ z ∈ Z : aT1 z < u1, aT

2 z, < u2, ...,aTmz < um. (2.29)

Meg kell mutatni, hogy a feladatnak van optimális megoldása. A feladatminden változója egyenként felülről korlátos, hiszen minden i index eseténkövetkezik (2.28)-ból és (2.29)-ből, hogy ui < aT

i xi. Következésképpen a(2.27) célfüggvény is korlátos. A (2.29) feltétel által meghatározott halmazkomplementere nyílt, mivel nyílt halmazok uniója, ugyanis nem más, mint

z∈Z

{u | ∀ i : ui > aTi z }.

Tehát a megengedett tartomány zárt. Ebből és a célfüggvény korlátosságábólés folytonosságából következik az optimális megoldás léte.

Legyen az optimális megoldás u∗. Az optimalitásból következik, hogyminden i index esetén létezik egy yi ∈ Z vektor, hogy u∗

i = aTi yi és j 6= i

esetén u∗j > aT

j yi. Ha ugyanis ilyen nem volna, akkor u∗i értékét meg lehetne

növelni anélkül, hogy megsértenénk a (2.29) feltételt, (2.28) pedig növelésmellett továbbra is teljesül. Mivel az y vektorok egészek, és m > 2n, ezértlétezik legalább egy pár közöttük, amelyik komponensenként mod 2 azonos,azaz létezik egy k, l indexpár k 6= l, hogy

ykp ≡ ylp (mod 2) p = 1, ..., n.

Innen következik, hogy

z =1

2yk +

1

2yl ∈ Z,

ésaT

1 z < u1, aT2 z < u2, ...,aT

mz < um,

ami ellentmond (2.29)-nek. Q.E.D.

A korlát éles, ugyanis ha az egységkocka csúcsait egyenként hasítjuk le,például a (2.18) típusú egyenlőtlenségekkel, akkor pontosan 2n feltételünkvan, nincs egész megoldás, de bármelyik egyenlőtlenséget elhagyva lesz egészmegengedett pont.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 66: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

66 2. Az egészértékű programozás matematikai alapjai

A továbbiakban néhány lemma segítségével egy tételt bizonyítunk, ami éleskorlátot ad bináris vektorok egy tetszőleges halmazának leírásához szükségeslineáris egyenlőtlenségek számára.2.6.2. definíció: Két IRn-beli x és y vektor ℓ1 távolságán a

n∑

j=1

| xj − yj |

mennyiséget értjük. Bináris vektorok esetén az ℓ1 távolságot Hamming-távol-ságnak nevezzük és h(x,y)-nal jelöljük. Két bináris vektort szomszédosnaknevezünk, ha Hamming-távolságuk 1.

A Hamming-távolság nem más, mint a különböző komponensek száma.Kitüntetett szerepet fognak játszani a bináris vektorok azon halmazai, me-

lyek pontjainak Hamming-távolsága legalább 2, azaz ha T ⊂ { 0, 1 }n, akkor

∀u, v ∈ T : u 6= v =⇒ h(u,v) ≥ 2. (P )

2.6.7. lemma: Ha egy T ⊂ { 0, 1 }n halmaz (P) tulajdonságú, akkor

| T | ≤ | { 0, 1 }n \ T | .

Bizonyítás: Minden bináris vektornak n szomszédja van. Ezért T elemeiszomszédjainak száma multiplicitással együtt n|T |. Itt minden szomszédotlegfeljebb n-szer számoltunk. A (P) tulajdonság miatt minden szomszéd Tkomplementerében van, ahonnan azonnal adódik az állítás. Q.E.D.

2.6.8. lemma: Ha egy T ⊂ { 0, 1 }n halmaz (P) tulajdonságú, akkor ele-meinek száma legfeljebb 2n−1, és ez a korlát éles.

Bizonyítás: Maga a korlát azonnal adódik az előző lemmából. Az élességbizonyításához vegyük észre, hogy ha u,v ∈ { 0, 1 }n, u 6= v, és

n∑

j=1

uj =n

j=1

vj ,

akkor h(u,v) ≥ 2. Legyen k = 0, 1, ..., n esetén

Tk = {u |n

j=1

uj = k }.

Ekkor aT = T0 ∪ T2 ∪ T4 ∪ ...

halmaz (P) tulajdonságú, és elemeinek száma éppen 2n−1. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 67: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.6. Egyenlőtlenségekkel definiált bináris ponthalmazok 67

2.6.3. definíció: Egy U ⊂ { 0, 1 }n halmaz összefüggő, ha létezik olyana ∈ IRn vektor és b ∈ IR szám, hogy

∀x ∈ { 0, 1 }n : aT x > b ⇐⇒ x ∈ U .

2.6.9. lemma: Tegyük fel, hogy az U ⊂ { 0, 1 }n halmaznak létezik egyolyan u pontja, hogy minden v ∈ U , v 6= u esetén h(v,u) ≥ 2. Ekkor azU halmaz nem összefüggő.

Bizonyítás: Legyen w ∈ U olyan pont, amelynek Hamming-távolsága u-tólminimális az U-beli vektorok közül. Ekkor van olyan p index, hogy up 6= wp.Az általánosság megszorítása nélkül feltehető, hogy up = 1 és wp = 0. Legyenep szokásos módon a p-edik egységvektor. Ekkor w választása miatt semu− ep, sem w + ep nem eleme U-nak. Ha a keresett (a, b) pár létezik, akkorfenn kell állnia a

aT u =

n∑

j=1

ajuj > b ≥ aT (u − ep) =

n∑

j=1

ajuj − ap, (2.30)

ahonnanap > 0.

(2.30)-hoz hasonlóan

aT w =n

j=1

ajwj > b ≥ aT (w + ep) =n

j=1

ajwj + ap,

ahonnanap < 0,

ami ellentmondás. Q.E.D.

2.6.10. tétel: Tegyük fel, hogy n ≥ 2 és U ⊂ { 0, 1 }n egy rögzített halmaz.Ekkor létezik egy m lineáris egyenlőtlenségből álló

aT1 x ≤ b1, aT

2 x ≤ b2, ...,aTmx ≤ bm

rendszer úgy, hogy

m ≤ 2n−1, (2.31)

ésU = {x ∈ { 0, 1 }n | aT

i x ≤ bi i = 1, ...,m }.A (2.31) korlát éles.Bizonyítás: Legyen S = { 0, 1 }n \ S. Legyen T ⊂ S egy maximális(P) tulajdonságú részhalmaza. Ha t ∈ T , akkor jelölje t(j) a j komponens

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 68: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

68 2. Az egészértékű programozás matematikai alapjai

szerinti szomszédját (j = 1, ..., n), és ehhez rendelünk egy y(j) pontot akövetkezőképpen:

y(j) =

t(j) ha t(j) ∈ St(j) + 1

2ej ha t(j) 6∈ S és tj = 0t(j) − 1

2ej ha t(j) 6∈ S és tj = 1.

Az y(1), ..., y(n) vektorok lineárisan függetlenek. Tekintsük azt a hipersíkot,amelyik átmegy ezeken a pontokon. Ennek az egyenlete

1 1 ... 1x y(1) ... y(n)

= 0. (2.32)

Tegyük fel, hogy (2.32)-t kifejtve az

aT x = b

egyenletet kapjuk. Itt az előjeleket úgy választjuk meg, hogy az

aT t > b

reláció teljesüljön. A (2.32) determináns elemeinek törtrésze vagy 0, vagy12 . Ezért a (2.32) egyenlet minden együtthatójának törtrésze vagy 0, vagylegalább 1

2n . Ezért az

aT x = b − 1

2n+1

egyenlet nem teljesülhet egész vektorra. Tehát az

aT x > b − 1

2n+1

egyenlőtlenség pontosan a t vektort és szomszédait vágja le. A korlát éles-sége onnan következik, hogy pontosan ennyi lehet maximálisan T elemeinekszáma. Q.E.D.

2.7. Egyetlen egyenlőtlenséggel jellemzettbináris ponthalmazok

Az előző szakaszban már jeleztük, hogy a Bradley-tételhez hasonló állításegyenlőtlenségek esetében nem igazolható. A 2.6.1. tétel szerint bármelybináris vektorrendszer leírható egyenlőtlenségekkel. Legyen

K =

{(

10

)

,

(

01

)}

.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 69: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.7. Egyetlen egyenlőtlenséggel jellemzett bináris ponthalmazok 69

Ha létezne olyan

ax1 + bx2 ≤ c (2.33)

egyenlőtlenség, ami pontosan K elemeit választaná ki, akkor ezeket behelyet-tesítve kapnánk, hogy

a ≤ c és b ≤ c. (2.34)

Másfelől a {0, 0}T és az {1, 1}T pontok nem megengedettek, ezért ezeknekmeg kell sérteniük (2.33)-at, azaz

0 > c és a + b > c. (2.35)

Ha (2.34) és (2.35) két-két egyenlőtlenségét külön-külön összeadjuk, akkor

a + b ≤ 2c,

illetvea + b > 2c

adódik, ami ellentmondás.Felmerül tehát a kérdés, hogy mi a szükséges és elegendő feltétele annak,hogy egy halmazt egyetlen egyenlőtlenséggel le lehessen írni. A választ álta-lánosan, tetszőleges véges A ⊂ ZZn alaphalmazra vonatkozóan adjuk meg.A továbbiakban S mindig A-nak egy tetszőleges részhalmazát, S pedig ennekA-ra vett komplementerét jelöli.2.7.1. definíció: Legyen k ≥ 2 rögzített egész. Az S halmaz k-szummálható,ha léteznek olyan, egymástól nem feltétlenül különböző w1, ...,wk ∈ S ésugyancsak egymástól nem feltétlenül különböző u1, ...,uk ∈ S vektorok, hogy

k∑

i=1

wi =

k∑

i=1

ui.

Az S halmaz aszummálható, ha semmilyen k-ra sem szummálható.2.7.1. tétel: Tetszőleges véges A ⊂ ZZn alaphalmaz és ennek bármely Srészhalmaza esetén az alábbi két állítás ekvivalens:(i) az S halmaz aszummálható,(ii) létezik olyan a ∈ IRn vektor és b ∈ IR szám, hogy

S = {x ∈ A | aT x ≤ b }.

Bizonyítás: Ha a (ii) állításban szereplő a vektor és b szám létezik, akkorminden (w, u) vektorpár (w ∈ S és u ∈ S) esetén

aT w ≤ b < aT u. (2.36)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 70: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

70 2. Az egészértékű programozás matematikai alapjai

Legyenek w1, ...,wk ∈ S és u1, ...,uk ∈ S egymástól nem feltétlenül külön-böző vektorok. Ekkor (2.36) alapján azonnal következik, hogy

aT

(

k∑

i=1

wi −k

i=1

ui

)

< 0. (2.37)

Így szükségképpen

k∑

i=1

wi 6=k

i=1

ui

adódik, hiszen különben (2.37) bal oldalának értéke 0 lenne.Megfordítva ugyancsak (2.36) alapján adódik, hogy ha a kívánt egyenlőt-

lenség nem létezik, akkor az

∀w ∈ S, ∀u ∈ S : aT (w − u) < 0 (2.38)

egyenlőtlenség-rendszer az a változókban megoldhatatlan. A végessége miatt(2.38) csak véges sok egyenlőtlenséget tartalmaz. A 2.2.2. tétel alapjánléteznek olyan nem mind zérus λwu valós számok, hogy

w∈S

u∈S

(w − u)λwu = 0.

Mivel (2.38) együtthatói egészek, ezért a lineáris programozás elmélete alap-ján feltehető a λwu számokról, hogy racionálisak, ekkor pedig az egyenlőtlen-ségek homogenitása miatt az is, hogy egészek. Ez azonban azt jelenti, hogyaz S halmaz a

k =∑

w∈S

u∈S

λwu

értékre szummálható. Q.E.D.

e u

u e

¡¡

¡¡

¡¡

@@

@@

@@ uP

(0,0) (1,0)

(1,1)(0,1)

2.6. ábra: Az S = {(0, 0), (1, 1)} halmaz 2-szummálható: S és S súly-pontja P .

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 71: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.7. Egyetlen egyenlőtlenséggel jellemzett bináris ponthalmazok 71

A tétel szemléletes jelentése: az S halmaz akkor és csak akkor írható leegyetlen egyenlőtlenséggel, ha bárhogyan is osztunk szét racionális darabok-ban egységnyi súlyt S pontjai között, és hasonló módon egy másik egységnyitaz S között, a súlypontok nem esnek egybe.

A továbbiakban csak bináris ponthalmazokra szorítkozunk.Jelölések: 1. Legyen I ⊂ N = { 1, 2 ..., n } egy k elemű indexhalmaz(1 ≤ k ≤ n). A { 0, 1 }I halmaz olyan k komponensű vektorokból áll, ame-lyeknek indexei befutják az I halmazt. Ha u ∈ { 0, 1 }I és v ∈ { 0, 1 }N\I ,akkor (uT , vT )T az az n-dimenziós bináris vektor, amelynek komponenseimegegyeznek a megfelelő indexű u-beli, illetve v-beli komponenssel.2. Legyen S ⊂ { 0, 1 }n egy tetszőleges halmaz. Bármely I ⊂ N , I 6= ∅ ésu ∈ { 0, 1 }I esetén

S |N\I (u)

jelentse a következő halmazt:

S |N\I (u) = {v ∈ { 0, 1 }N\I | (uT ,vT )T ∈ S }.

3. Tetszőleges I indexhalmaz és u ∈ { 0, 1 }I vektor esetén az u vektorkomplementere az az u ∈ { 0, 1 }I vektor, melyre ∀ i ∈ I : ui = 1 − ui.2.7.2. definíció: Az S ⊂ { 0, 1 }n halmaz teljesen monoton, ha bármelynem üres I ⊂ N indexhalmaz és bármely u ∈ { 0, 1 }I vektor esetén az

S |N\I (u) ⊂ S |N\I (u) és S |N\I (u) ⊃ S |N\I (u) (2.39)

relációk közül legalább egy fennáll.A szakasz elején lévő példában szereplő K = {(1, 0)T , (0, 1)T } halmaz nem

teljesen monoton. Legyen például I = {1} és u1 = 1. Ekkor

K |{2} (1) = {0} és K |{2} (0) = {1},

hiszen az első komponensben található 1-et csak 0-val lehet a második kom-ponensben úgy kiegészíteni, hogy K-beli pontot kapjunk, míg az első kompo-nensben található 0-át csak 1-gyel. Tehát a két nem üres halmaz diszjunkt,így nem tartalmazhatják egymást. Vegyük észre továbbá, hogy ha egy Shalmaz teljesen monoton, akkor annak S komplementere is az. Igaz ugyanisbármely I és u esetén az

S |N\I (u) = { 0, 1 }N\I \ S |N\I (u)

egyenlőség, hiszen a bal oldal azokat a vektorokat tartalmazza, amelyekkelu-t kiegészítve nem S-beli vektorokat kapunk, azonban pontosan az

S |N\I (u) ⊂ S |N\I (u)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 72: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

72 2. Az egészértékű programozás matematikai alapjai

relációból következik, hogy

S |N\I (u) ⊃ S |N\I (u),

vagyis S esetén is fenn fog állni a megfelelő (2.39) relációk közül legalábbegy. Így tehát a teljes monotonitás szempontjából elég az (S,S) pár egyikétmegvizsgálni.

Térjünk vissza a kétdimenziós bináris vektorokhoz. Mivel ezekből összesen4 van, ezért 16 halmaz képezhető belőlük, tehát 8 pár vizsgálható a monoto-nitás szempontjából. Ezek közül hét, az üres halmazt, az egyelemű halmazokvalamelyikét tartalmazó párok, valamint az a két pár, ahol egy-egy halmaza négy bináris vektor által meghatározott négyzet egy oldalán fekvő ponto-kat tartalmazza, teljesen monoton, és egyben a pár két eleme szétválaszthatóegyetlen lineáris egyenlőtlenséggel. Az egyetlen pár, amelynek elemeire egyiktulajdonság sem teljesül, éppen (K, K). Alább, a 2.7.3. tételben megmutat-juk, hogy bizonyos értelemben ez az egyetlen lehetőség arra, hogy egy halmazne legyen teljesen monoton, míg a tételt követő példa az egyetlen lineárisegyenlőtlenséggel való leírhatóság esetében ennek az ellenkezőjét illusztrálja.2.7.2. tétel: Ha az S ⊂ { 0, 1 }n halmaz esetén létezik olyan a ∈ IRn

vektor és b ∈ IR szám, hogy

S = {x ∈ { 0, 1 }n | aT x ≤ b },

akkor az S halmaz teljesen monoton.

Bizonyítás: Tételezzük fel a megfelelő a vektor és a b szám létezését. LegyenI ⊂ N (I 6= ∅) egy tetszőleges indexhalmaz, és u a { 0, 1 }I halmaz egytetszőleges eleme. Ha

i∈I

aiui ≤∑

i∈I

aiui, (2.40)

akkorS |N\I (u) ⊃ S |N\I (u),

ugyanis v ∈ S |N\I (u) esetén

b ≥∑

i∈I

aiui +∑

i∈N\I

aivi ≥∑

i∈I

aiui +∑

i∈N\I

aivi.

Ha a (2.40)-ben szereplő két mennyiség között ellenkező irányú reláció állfenn, akkor hasonlóan adódik, hogy

S |N\I (u) ⊂ S |N\I (u).

Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 73: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.7. Egyetlen egyenlőtlenséggel jellemzett bináris ponthalmazok 73

Könnyen lehetne azt gondolni, hogy a monotonitás elégséges is az egyetlenfeltétellel való leírhatósághoz. Alkalmazzuk például a tételt az I = { i, j }indexhalmazokon azon u vektor mellett, amelynél ui = 1 és uj = 0. Ha

S |N\I (u) ⊂ S |N\I (u), (2.41)

és a megfelelő, S-t leíró egyenlőtlenség létezik, akkor

ai ≥ aj .

Hasonlóképp az I = { i } indexhalmazok és ui = 1 esetén (2.41) magávalvonja, hogy ai ≤ 0, míg ha a tartalmazási reláció fordított irányban teljesül,akkor ai ≥ 0. Tehát a monotonitás alapján az esetlegesen létező a vektorokkomponenseinek előjelét és nagyság szerinti sorrendjét is meghatározhatjuk.2.7.3. tétel: Egy S ⊂ { 0, 1 }n halmaz akkor és csak akkor teljesen mono-ton, ha nem 2-szummálható.

Bizonyítás: Először tegyük fel, hogy S 2-szummálható. Ekkor léteznekolyan x1,x2 ∈ S és y1,y2 ∈ { 0, 1 }n \ S vektorok, hogy

x1 + x2 = y1 + y2.

Ha valamely i index esetén x1i + x2i ∈ { 0, 2 }, akkor x1i = x2i = y1i = y2i.Így a vektorokat a következő indexhalmazok szerint bonthatjuk fel:

I = { i | x1i = y1i = 1 − x2i = 1 − y2i },J = { i | x1i = y2i = 1 − x2i = 1 − y1i },

K = { i | x1i = x2i = y1i = y2i }.

Sem I, sem J nem lehet üres, mert például I = ∅ esetén x1 = y2, amilehetetlen, mert egy vektor nem lehet egyszerre egy halmazban és a komp-lementerében. Legyen w,v ∈ { 0, 1 }N\I az a két vektor, amelyekben min-den i komponensre teljesül a wi = x1i, illetve vi = x2i egyenlőség, továbbáu ∈ { 0, 1 }I az a pont, hogy minden i-re ui = x1i. Ekkor

w ∈ S |N\I (u) és w 6∈ S |N\I (u). (2.42)

Az előbbi azért, mert x1 ∈ S, az utóbbi pedig azért, mert különben y2 ∈ Svolna. Hasonlóképp:

v 6∈ S |N\I (u) és v ∈ S |N\I (u). (2.43)

Így (2.39)-ben szereplő egyik reláció sem állhat fenn ezen I indexhalmaz ésu vektor esetén.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 74: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

74 2. Az egészértékű programozás matematikai alapjai

Megfordítva, ha S nem teljesen monoton, akkor létezik egy I indexhalmaz,ehhez egy u ∈ { 0, 1 }I vektor úgy, hogy található két olyan w,v vektor,amire (2.42), illetve (2.43) teljesül. Ekkor

(

u

w

)

,

(

u

v

)

∈ S és

(

u

v

)

,

(

u

w

)

6∈ S.

Azonban(

u

w

)

+

(

u

v

)

=

(

u

v

)

+

(

u

w

)

,

így S 2-szummálható. Q.E.D.

A tétel szerint tehát a teljes monotonitás csak akkor volna az egyetlenlineáris egyenlőtlenséggel való leírhatóságra is elegendő feltétel, ha egy nem2-szummálható halmaz egyben aszummálható is volna. Ez azonban, mint azvárható is, nincs így.

Legyen

a = (1

3,1

3− δ,

1

3+ δ,

1

3− δ2,

1

3− δ3,

1

3+ δ2 + δ3,

1

3+ δ2,

1

3+ δ + δ3,

1

3− δ − δ2 − δ3),

ahol δ egy olyan piciny pozitív szám, hogy a minden komponense pozitív éskülönböző legyen. Például δ = 0.1 egy ilyen választás. Azonnal látható, hogy

ai + ai+3 + ai+6 = 1, i = 1, 2, 3,ai + ai+1 + ai+2 = 1, i = 1, 4, 7.

(2.44)

LegyenyT

1 = (1, 1, 1, 0, 0, 0, 0, 0, 0),

yT2 = (0, 0, 0, 1, 1, 1, 0, 0, 0),

yT3 = (0, 0, 0, 0, 0, 0, 1, 1, 1),

továbbáS = {x ∈ { 0, 1 }9 | aT x ≤ 1 } \ {y1, y2, y3 }.

Az S halmaz 3-szummálhatósága azonnal adódik (2.44)-ből. Tegyük fel, hogyS 2-szummálható is, azaz léteznek olyan x1,x2 ∈ S és z1, z2 ∈ {0, 1}9 \ Svektorok, hogy

x1 + x2 = z1 + z2.

Ebből azonban adódik, hogy

aT (x1 + x2) = aT (z1 + z2). (2.45)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 75: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.7. Egyetlen egyenlőtlenséggel jellemzett bináris ponthalmazok 75

Tekintve, hogy minden x ∈ S, illetve z ∈ {0, 1}n \ S esetén

aT x ≤ 1, illetve aT z ≥ 1,

így (2.45)-ben csak úgy teljesülhet egyenlőség, ha

aT x1 = aT x2 = aT z1 = aT z2 = 1.

Mivel az összes ilyen vektort (2.44) írja le, és ezek között a kívánt egyenlőségnem áll fenn, így S nem 2-szummálható.

Megjegyezzük, bár nem bizonyítjuk, hogy 8-dimenzióig a nem 2-szummál-hatóság elegendő is az egyetlen feltétellel való leírhatóságra.2.7.3. definíció: Legyen S ⊂ { 0, 1 }n egy tetszőleges halmaz. Az S Chow-paraméterei alatt azt az egészekből alkotott p(S) = (p1(S), ..., pn(S); p0(S))(n+1)-est értjük, ahol

p0(S) = S elemeinek száma,

pi(S) = S azon elemeinek száma, melyekben xi = 1 (i = 1, ..., n).

Megjegyezzük, hogy a p1(S), ..., pn(S) által alkotott p vektor egyszerűena

p =∑

x∈S

x

képlettel fejezhető ki. A Chow-paraméterek az egyetlen lineáris egyenlőtlen-séggel leírható halmazokat egyértelműen jellemzik. Igaz ugyanis a2.7.4. tétel: Ha az S, T ⊂ { 0, 1 }n halmazokra p(S) = p(T ) teljesül,akkor vagy egyik sem írható le egyetlen lineáris feltétellel, vagy S = T .

Bizonyítás: A p(S) = p(T ) feltételből következik, hogy S és T elemeinekszáma azonos. Ezért vagy azonosak, vagy egyik sem tartalmazza a másikat.Vizsgáljuk meg az utóbbi esetet. A tétel kimondása előtt tett megjegyzésünkszerint a p(S) = p(T ) egyenlőségből következik, hogy

x∈S

x =∑

x∈T

x.

Innen∑

x∈S\T

x +∑

x∈S∩T

x =∑

x∈T \S

x +∑

x∈S∩T

,

ahonnan∑

x∈S\T

x =∑

x∈T \S

x.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 76: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

76 2. Az egészértékű programozás matematikai alapjai

Feltevéseink szerint mindkét oldalon a tagok száma azonos és nem nulla.Ezért k = |S \ T | választás mellett mind S, mind T k-szummálható, így a2.7.1. tétel szerint sem S, sem T nem írható le egyetlen lineáris egyenlőtlen-séggel. Q.E.D.

A továbbiakban egy olyan eredményt ismertetünk, ami rávilágít arra, hogyaz egyetlen feltétellel jellemezhető bináris ponthalmazok viszonylag milyenkevesen vannak. Legyen A = (aij) egy rögzített m× n-es mátrix, amelynekvalamennyi eleme 0 vagy 1, e pedig az az m-dimenziós vektor, amelynekminden komponense 1. Azt vizsgáljuk, hogy mikor létezik olyan egész, nemfeltétlenül bináris a vektor és b szám, hogy az

S = {x ∈ { 0, 1 }n | Ax ≤ e }

halmazraS = {x ∈ { 0, 1 }n | aT x ≤ b }

teljesül.Jelölje az A mátrix oszlopait w1, ..., wn. Nyilvánvaló, hogy akkor és csak

akkor létezik az S halmaznak olyan x eleme, amire xi = xj = 1 (i 6= j), ha

wTi wj = 0. (2.46)

Készítsük el a G(A) gráfot a következő módon. G(A) csúcsainak halmazalegyen N = {1, ..., n }. Az (i, j) élt pontosan akkor húzzuk be, ha (2.46)nem teljesül. Az így meghatározott élek halmazát M jelöli.

Szükségünk lesz a következő alapvető gráfelméleti fogalomra.2.7.4. definíció: Egy tetszőleges G = (V,E) gráf csúcsainak valamely T ⊂V halmazát függetlennek nevezzük, ha bármely u, v ∈ T esetén (u, v) 6∈ E.

A fenti jelölésekkel azonnal adódik a2.7.5. tétel: S azonos a G(A) gráf független halmazainak karakterisztikusvektoraival. Q.E.D.

2.7.5. definíció: Egy n szögpontú G gráfot küszöbgráfnak nevezünk, halétezik olyan a ∈ ZZn vektor és b ∈ ZZ szám, hogy a G gráf független halma-zainak karakterisztikus vektorai pontosan az

aT x ≤ b

egyenlőtlenséget kielégítő bináris vektorok.A küszöbgráf elnevezés a következő szemléletes képből ered. A gráf pont-

jainak bármely U halmazát jellemezhetjük annak xU karakterisztikus vekto-rával. A gráf i csúcsához egy ai súlyt rendelünk. Az U halmaz akkor és csakakkor lesz független, ha a hozzátartozó pontok összsúlya, vagyis aT xU , egyelőre adott küszöböt nem halad meg.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 77: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.7. Egyetlen egyenlőtlenséggel jellemzett bináris ponthalmazok 77

2.7.6. tétel: Ha G küszöbgráf, és független halmazai karakterisztikus vek-torainak halmazát S jelöli, akkor létezik olyan csupa pozitív egész komponensttartalmazó a vektor és b szám, hogy

S = {x ∈ { 0, 1 }n | aT x ≤ b }. (2.47)

Bizonyítás: Legyen a olyan vektor és b olyan szám, amivel (2.47) teljesül.Az üres halmaz független, ennek karakterisztikus vektora a nullvektor. Ezt(2.47) egyenlőtlenségébe behelyettesítve kapjuk, hogy b ≥ 0. Legyen j olyanindex, hogy aj < 0. Egy független halmaz minden részhalmaza is független.Legyen x tetszőleges olyan bináris vektor, amely S-beli és xj = 1. Legyenekkor x′ olyan, hogy x′

i = xi (i 6= j) és x′j = 0. Ekkor x′ szükségképpen

S-beli. Ezért ha az a vektor j-edik komponensét 0-ra változtatjuk, akkor azúj egyenlőtlenséget pontosan ugyanazoknak a vektoroknak kell kielégíteniük,mint (2.47) egyenlőtlenségét. Tegyük fel tehát, hogy az a vektor nemnega-tív és k számú 0 komponense van. Könnyen látható, hogy az az a′ vektor,amelyre

a′j =

{

(k + 1)aj ha aj > 01 ha aj = 0,

valamint a b′ = (k + 1)b + k szám együttesen ugyanazt az S halmazt írja le.Q.E.D.

A gráfelméletben szokásos módon jelölje 2K2, P4 és C4 a 2.7. ábrán talál-ható gráfokat.

e e

ee

2K2

e e

ee

P4

e e

ee

C4

2.7. ábra: A legegyszerűbb olyan gráfok, melyek nem küszöbgráfok.

2.7.7. tétel: A 2K2, P4 és C4 gráfok nem küszöbgráfok.

Bizonyítás: Vegyük észre, hogy mindhárom gráf tartalmazza az (1, 2) és(3, 4) élt, de nem tartalmazza az (1, 3) és (2, 4) élt. Indirekt módon tegyükfel, hogy létezik olyan

a1x1 + a2x2 + a3x3 + a4x4 ≤ b

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 78: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

78 2. Az egészértékű programozás matematikai alapjai

egyenlőtlenség, amely a fenti gráfok valamelyikének független halmazait le-írja. Ekkor azonban az előbb mondottak szerint igaznak kell lennie az

a1 + a2 ≤ b, a3 + a4 ≤ b (2.48)

egyenlőtlenségeknek, valamint az

a1 + a3 > b, a2 + a4 > b (2.49)

feltételeknek is. Most (2.48) alapján

a1 + a2 + a3 + a4 ≤ 2b,

míg (2.49) szerinta1 + a2 + a3 + a4 > 2b,

ami ellentmondás. Q.E.D.

2.7.6. definíció: Egy tetszőleges G = (V,E) gráf esetén a H = (W,F )gráfot a G feszített részgráfjának nevezzük, ha W ⊂ V és minden i, j ∈ Wesetén (i, j) ∈ F akkor és csak akkor, ha (i, j) ∈ E.2.7.8. tétel: Egy küszöbgráf valamennyi feszített részgráfja is küszöbgráf.

Bizonyítás: H független halmazai azonosak G azon független halmazaival,amelyek csak W -beli csúcsokat tartalmaznak. Legyen a G független halma-zait leíró egyenlőtlenség

aT x ≤ b.

Válasszuk meg a c ∈ ZZW vektort úgy, hogy

cj = aj j ∈ W.

Legyen y ∈ { 0, 1 }W . Ekkor a

cT y ≤ b

egyenlőtlenséget a fent mondottak szerint pontosan H független halmazainakkarakterisztikus vektorai elégítik ki. Q.E.D.

A tétel állításában fontos, hogy feszített részgráfról van szó. Tekintsükugyanis azt a négypontú gráfot, ami az (1,3) él kivételével az összes élt tar-talmazza. Ennek C4 részgráfja, de nem feszített részgráfja. A gráf függetlenhalmazai az üres halmaz, az egyelemű halmazok és az { 1, 3 } halmaz. Pon-tosan ezeket írja le az

x1 + 2x2 + x3 + 2x4 ≤ 2

egyenlőtlenség.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 79: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.7. Egyetlen egyenlőtlenséggel jellemzett bináris ponthalmazok 79

@@

@@

@@e e

ee

2.8. ábra.

2.7.7. definíció: Legyen G tetszőleges gráf. Ekkor G + K1 azt a gráfotjelenti, amelyet úgy kapunk G-ből, hogy egy új pontot hozzáveszünk, és aztG valamennyi pontjával összekötjük. Hasonlóképp a G ∪ K1 gráf G-ből egyúj pont hozzávételével keletkezik, de ekkor az új pontot G semelyik pontjávalsem kötjük össze.2.7.9. tétel: Ha G küszöbgráf, akkor G + K1 és G ∪ K1 is küszöbgráf.

Bizonyítás: Legyen a G független halmazait leíró egyenlőtlenség aT x ≤ b.A 2.7.6. tétel alapján feltehető, hogy a valamennyi komponense pozitív egész.A G + K1 gráf független halmazai egyrészt G független halmazai, másrésztaz egyedül az új pontból álló halmaz. Ezért a keresett egyenlőtlenség

n∑

j=1

ajxj + bxn+1 ≤ b.

A G∪K1 gráf esetében viszont G egy tetszőleges független halmazához hoz-závehetjük az új pontot a függetlenség elrontása nélkül. Így a

n∑

j=1

ajxj + 0xn+1 ≤ b

írja le ebben az esetben a független halmazokat. Q.E.D.

2.7.10. tétel: Legyen G = (V,E) egy tetszőleges gráf. Ekkor a következőhárom állítás ekvivalens:(i) Van G csúcsainak egy π(1), ..., π(n) permutációja, és a {π(2), ..., π(n)}halmaznak egy olyan (P,Q) partíciója, hogy(a) ∀π(j) ∈ P és ∀ i < j esetén (π(i), π(j)) ∈ E, és(b) ∀π(j) ∈ Q és ∀ i < j esetén (π(i), π(j)) 6∈ E,(ii) G küszöbgráf,(iii) G-nek nincs olyan feszített részgráfja, amely izomorf lenne a 2K2, P4 ésC4 gráfok valamelyikével.

Bizonyítás: Először megmutatjuk, hogy (i)-ből következik (ii). Építsük fel a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 80: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

80 2. Az egészértékű programozás matematikai alapjai

G gráfot úgy, hogy a π permutáció szerinti sorrendben vesszük fel a csúcsokatés a j-edik lépésben behúzzuk az összes lehetséges (π(i), π(j)) (i < j) alakúélt. Így kapjuk a G1, ..., Gn gráfokat. Nyilvánvalóan G = Gn. G1, amiegyetlen pontból áll, küszöbgráf. A 2.7.9. tétel szerint, ha Gj−1 küszöb-gráf volt, akkor Gj is az lesz. Ugyanis π(j) ∈ P esetén Gj = Gj−1 + K1,míg ha π(j) ∈ Q, akkor Gj = Gj−1 ∪ K1. Ezért G1, ..., Gn valamennyienküszöbgráfok.

A 2.7.7. és 2.7.8. tétel alapján (iii) azonnal következik (ii)-ből.Végezetül tegyük fel, hogy (iii) teljesül. Jelölje az i csúcs fokszámát di.

Tegyük fel, hogy a csúcsok a fokszámok szerinti csökkenő sorrendben állnak,azaz d1 ≥ d2 ≥ ... ≥ dn. A π permutációt a következő algoritmus segítségévelpróbáljuk meghatározni. A csúcsokat az indexek szerinti sorrendben vesszükelő, hol előlről, hol hátulról, és határozzuk meg, hogy a P vagy a Q halmazhoztartoznak, és hogy hol állnak a keresett permutációban. Az utóbbi úgy törté-nik, hogy az elhelyezett elemek a π egy befejező részsorozatát alkotják, és azúj elemet mindig ennek az elejére helyezzük. Az algoritmus egy pillanatnyiállásakor jelölje k a π-ben még el nem helyezett csúcsok számát, legyen u ezencsúcsok közül a legnagyobb, illetve v a legkisebb fokszámú. Ha a fenti módonjárunk el, és eddig a pontig biztosítani tudtuk a még hátralévők besorolásátólés elhelyezésétől függetlenül, hogy a P-beliek majd minden előttük állóval, aQ-beliek viszont egyetlen előttük állóval se legyenek összekötve, akkor fennkell állnia a

| P | + k − 1 ≥ du ≥ dv ≥ | P |összefüggésnek, ahol | P | az eddig a pillanatig a P-be soroltak számát jelöli.Mivel bármely w még elhelyezendő csúcs a már P-be soroltak elé fog kerülni,ezért w fokszáma legalább | P |. Hasonlóképp w csak a már P-beliekkel és amég be nem soroltakkal lehet összekötve, így fokszáma legfeljebb | P | +k−1.Ebből is látható, hogy a

du = | P | +k − 1 és dv = | P |

feltételek egyszerre nem teljesülhetnek, mert az első azt jelenti, hogy u azösszes be nem sorolttal össze van kötve, míg a második éppen ellenkezőleg, azttartalmazza, hogy v egyetlen még be nem sorolttal sem szomszédos. Éppenezért az első esetben u lesz a következő kiválasztott elem, és P-be soroljuk, amásodikban pedig v-t Q-ba. Vizsgáljuk most a

| P | + k − 1 > du ≥ dv > | P | (2.50)

esetet. Ekkor tehát minden még be nem sorolt csúcs szomszédos legalábbegy ilyennel, de semelyik sem az összessel. Innen és (2.50)-ből, mint alábbmegmutatjuk, könnyen látható, hogy k ≥ 4. (2.50) teljesüléséhez a bal-és jobb oldala különbségének legalább kettőnek kell lennie, amiből k ≥ 3.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 81: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.7. Egyetlen egyenlőtlenséggel jellemzett bináris ponthalmazok 81

Viszont k = 3 esetén legalább két élt be kell húznunk, hogy minden csúcsilleszkedjék élhez, amiből következik, hogy van csúcs, amiből két él indul ki abe nem soroltak által kifeszített részgráfban, azaz mindegyik be nem sorolttalössze van kötve.

Legyen u2 egy u-val szomszédos csúcs, u3 pedig olyan, amit nem köt összeél u-val. Négy esetet különböztetünk meg.

(1) u2 és u3 valamely választása esetén (u2, u3) ∈ E. Ekkor u2 fokszámalegalább | P | +2, így u is össze van kötve még legalább egy további u4

csúccsal a be nem soroltak közül. Meg kell tudnunk választani u4-et úgy, hogy(u2, u4) 6∈ E. Ellenkező esetben ugyanis u2 szomszédos mindazon csúcsokkal,amivel u, magával u-val és u3-mal, így fokszáma nagyobb u fokszámánál, amiu választása miatt lehetetlen. Így viszont az u, u2, u3, u4 által kifeszítettrészgráf P4 vagy C4 lesz aszerint, hogy (u3, u4) él-e, mivel ebben a kifeszítettrészgráfban az (u, u3) és (u2, u4) átlók nem szerepelnek.

A továbbiakban tehát feltehetjük, hogy léteznek olyan u2, u3 és u4 csúcsok,hogy (u, u2), (u3, u4) ∈ E, (u, u3), (u2, u3) 6∈ E, hiszen u3 is legalább egy,még be nem sorolt csúccsal össze van kötve.

(2) Ha nincs további él az u, u2, u3, u4 által kifeszített részgráfban, akkoraz 2K2.

(3) Tekintsük azt az esetet, amikor (u, u4) ∈ E. Ekkor az (1) esethezhasonlóan kell lennie olyan alkalmas csúcsnak, hogy (u2, u4) 6∈ E, különbenmost u4 fokszáma lenne nagyobb u fokszámánál. Ekkor az u, u2, u3, u4 általkifeszített részgráf P4.

(4) Ha (u, u4) 6∈ E, akkor az u, u2, u3, u4 által kifeszített részgráf aszerintP4 vagy 2K2, hogy az u2-t összeköti-e él u4-gyel vagy sem. Q.E.D.

A tétel bizonyos értelemben rávilágít arra, hogy mennyire kevés azon felté-telrendszerek száma, amelyek helyettesíthetők egyetlen egyenlőtlenséggel. Azösszes gráfok száma (az izomorfakat is különbözőnek véve, ha az izomorfiátnem az identikus leképezés írja le közöttük):

2

(

n

2

)

= O(

2n2

2

)

. (2.51)

A 2.7.10. tétel (i) feltétele lehetőséget ad a küszöbgráfok számának megha-tározására. A csúcsok lehetséges sorrendjeinek száma n!. Mivel π(1)-et semP, sem Q nem tartalmazza, ezért a csúcsok 2n−1-féleképpen oszthatók fel Pés Q halmazokra. Így

n!2n−1

a küszöbgráfok száma, ami sokkal kevesebb (2.51)-nél. Itt tehát egy lényegeselvi és gyakorlati különbséget látunk az egyenletekkel, illetve az egyenlőt-lenségekkel definiált bináris ponthalmazok között: míg az előbbiek mindig

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 82: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

82 2. Az egészértékű programozás matematikai alapjai

leírhatók egyetlen egyenlettel, addig az utóbbiak általában nem definiálha-tók egy egyenlőtlenséggel.

2.8. Bináris fákEnnek a szakasznak a tárgya egy kombinatorikus segédeszköz, amelyre egyeskorlátozási és szétválasztási (6. fejezet), valamint leszámlálási (11. fejezet)algoritmusok megértéséhez lesz szükségünk. Csupán néhány elemi gráfelmé-leti fogalmat, így például a fát, tételezzük fel előismeretként.2.8.1. definíció: Egy véges irányított gráfot bináris fának nevezünk, ha (i)az irányítástól eltekintve fa, (ii) minden egyes csúcsban a befutó élek számalegfeljebb egy, (iii) az egy csúcsból kifutó élek száma nulla vagy kettő.2.8.2. definíció: Egy irányított gráfban egy csúcsot gyökérpontnak ne-vezünk, ha nem fut bele él, ha pedig a csúcsból nem indul ki él, akkor vég-pontnak.2.8.1. tétel: Egy bináris fában pontosan egy gyökérpont van.

Bizonyítás: Tegyük fel, hogy a G gráfnak n csúcsa van. Ekkor a gráfelmé-letből jól ismert tétel szerint éleinek száma n−1, hiszen G az élek irányításátóleltekintve fa. Minden csúcsba 0 vagy 1 él fut be. Minden él befut egy csúcsbaígy n − 1 él fut be összesen a csúcsokba. Ez csak úgy lehetséges, ha n − 1csúcsba 1 él megy, egybe pedig 0. Q.E.D.

2.8.2. lemma: Egy G bináris fa gyökérpontjából minden csúcshoz vezetirányított út.

Bizonyítás: Indirekt módon tegyük fel, hogy a v gyökérpontból nem vezetirányított út a w csúcsba. Mivel G az élek irányításától eltekintve fa, ezértebben a fában van út v-től w-be. Az általánosság megszorítása nélkül felte-hető, hogy w ebben az útban az első olyan csúcs, amelyikbe nem vezet v-bőlirányított út. Legyen u az útban közvetlenül w előtt álló csúcs. Így tehát wválasztása miatt vezet irányított út v-ből u-ba. Ezért az u és w közötti élw-ből u-ba mutat, különben volna irányított út v-ből w-be. Az eddigiekbőlkövetkezik, hogy u nem lehet azonos v-vel, mert a v pontba futó élek száma0, míg az u-ba futóké pozitív. Ebből az is látható, hogy az u csúcsba lega-lább két élnek kell befutnia, egynek w felől, egynek pedig a v-ből u-ba haladóirányított útból. Ez azonban lehetetlen, mert G bináris fa. Q.E.D.

ve - e - r r r - eu we¾

2.9. ábra.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 83: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.8. Bináris fák 83

2.8.3. definíció: Legyen G bináris fa, és v a gyökérpontja, w pedig egytetszőleges további pontja. Azt mondjuk, hogy w a k. szinten van, ha v-bőlw-be k élből álló irányított út vezet. A v pont szintje 0.

A csúcsok szintjei egyértelműen meghatározottak. Ha ugyanis nem ezvolna a helyzet, akkor a G-nek megfelelő H irányítatlan gráf tartalmaznakört, ami nem lehetséges, lévén H fa.

Mindezek alapján úgy kell elképzelnünk egy bináris fát, hogy egy csúcsból– a gyökérpontból – kiindulva bizonyos pontokból további két kifelé mutatóélt húzunk be.2.8.4. definíció: Egy G bináris fát n-szintű teljes bináris fának nevezünk,ha minden végpontja az n szinten van.2.8.3. lemma: Az n-szintű teljes bináris fa csúcsainak száma

Vn = 2n+1 − 1,

éleinek számaEn = 2n+1 − 2.

Bizonyítás: Mivel fáról van szó, nyilván elég csak a csúcsokra vonatkozóállítást igazolni, hiszen minden fa éleinek száma eggyel kevesebb, mint acsúcsainak száma. Legyen 0 ≤ k < n. A k. és k + 1. szint között a csúcsokszáma megduplázódik, mert minden k. szinten lévő csúcsból két él megy ki,különben végpont lenne. Mivel a 0. szinten egy csúcs van, ezért a mértanisor összegképletét alkalmazva a csúcsok száma:

n∑

k=0

2k = 2n+1 − 1.

Q.E.D.

2.8.5. definíció: Legyen G olyan, nem egyetlen pontból álló bináris fa, hogybármely végpontjának szintje legfeljebb n (n ≥ 1). Legyen d az a nemnegatívegészekből álló n-dimenziós vektor, amelynek k. komponense, dk, azt mutatjameg, hogy G-nek hány végpontja van a k. szinten. Ekkor a d vektort a Gbináris fa stratégiájának nevezzük.2.8.4. tétel: Legyen d egy nemnegatív egészekből álló n-dimenziós vektor,egy G bináris fa stratégiája. Ekkor

n∑

k=1

2n−kdk = 2n.

Bizonyítás: Tekintsünk egy n-szintű teljes bináris fát és ennek egy olyanrészfáját, ami a d stratégiának felel meg. A teljes fa végpontjainak száma2n. Ebben a részfa k. szintű végpontjából mint gyökérpontból kiindul egy

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 84: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

84 2. Az egészértékű programozás matematikai alapjai

(n−k)-szintű teljes bináris fa. Az ebben lévő végpontok száma 2n−k. A teljesbináris fa minden végpontja a részfa valamelyik végpontja alatt van, ideértveazt az esetet is, amikor a kettő egybeesik. Ellenkező esetben ugyanis a részfavalamelyik csúcsából csak egy él indulna ki. Másrészt a teljes fa végpontjainem lehetnek több részfabeli végpont alatt, mert akkor a teljes bináris fatartalmazna kört. Ha összeszámláljuk, hogy a részfa végpontjai alatt a teljesfának hány végpontja van, adódik a kívánt egyenlőség. Q.E.D.

2.8.5. tétel: Legyen d egy n-dimenziós vektor, mely a G bináris fa straté-giája. Ekkor G csúcsainak száma

2

n∑

k=1

dk − 1.

Bizonyítás: Vegyünk ismét egy n-szintű teljes bináris fát, ebben G-velizomorf részgráfot. A részgráf egy a k. szinten lévő végpontja alatt a teljesfának 2n−k+1 − 2 csúcsa van. Ha ezt a számot a részgráf összes végpontjáralevonjuk a teljes bináris fa csúcsainak számából, akkor a

2n+1 − 1 −n

k=1

dk

(

2n−k+1 − 2)

mennyiséget nyerjük. Ide behelyettesítve az előző tételben bizonyított egyen-lőséget, kapjuk az állítást. Q.E.D.

2.8.6. tétel: Legyen d ∈ ZZn+, amelyre

n∑

k=1

2n−kdk = 2n (2.52)

teljesül. Ekkor van olyan bináris fa, amelynek d a stratégiája.

Bizonyítás: Megadunk egy konstrukciót, ami a kívánt tulajdonságú binárisfához vezet.

Vegyünk fel 2n szögpontot, amelyek eredetileg mind legyenek kék színűek.Ezek közül dn számút fessünk át piros színűre. A (2.52) egyenletből követke-zik, hogy 2 osztója dn-nek. Ezért megtehető, hogy további 2n−1 gyökérponthozzávételével 2n−1 darab 1-szintű teljes fát képezünk úgy, hogy egy-egyfában csak azonos színű végpontok vannak. A gyökérpontokat fessük a hoz-zájuk tartozó végpontokkal azonos színűre.

A konstrukció hasonló módon folytatódik. Tegyük fel, hogy már feljutot-tunk a k. szintig, azaz kék és piros (n− k)-szintű teljes bináris fáink vannak.Fessük át dk számú kék fa gyökérpontját pirosra. Egy fát aszerint tekintünkpirosnak vagy kéknek, hogy a gyökérpontja milyen. Két-két piros, illetve

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 85: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.8. Bináris fák 85

kék fa összekapcsolásával alkossunk ismét piros, illetve kék (n− k + 1)-szintűteljes fákat. Megmutatjuk, hogy a piros fák száma ismét páros volt, tehátvegyes színezésű fa nem keletkezik. Mivel eddig a szintig sikeresen végigvit-tük a konstrukciót, a következő megállapításokat tehetjük: a k. szinten lévővégpontok lefoglalnak dk számút, a k + 1. szinten lévők

dk+1

2

számút, stb. Tehát a piros (n − k)-szintű fák száma

n∑

j=k

dj

2j−k.

Ha ez páratlan volna, akkor 2n−k-val való szorzás után kapnánk, hogy 2n−k+1

nem osztaná an

j=k

2n−jdj

összeget. Ez azonban azt jelentené, hogy (2.52) bal oldala nem osztható2n−k+1-gyel, míg a jobb oldala igen, ami ellentmondás. A most keletkezettn−k +1 szinten lévő teljes bináris fák gyökérpontjait aszerint festjük pirosravagy kékre, hogy a fa milyen részfákból keletkezett.

A fenti konstrukció mindaddig folytatható, amíg az n-szintű teljes binárisfát fel nem építettük. Ekkor a benne pirosra festett pontok alkotják a kívánttulajdonságú bináris fát. Q.E.D.

A stratégia nem határozza meg egyértelműen a bináris fát. A 2.10. ábránlátható mindkét fa stratégiája (0,2,4), mégsem izomorfak.

A továbbiakban azt a kérdést vizsgáljuk, hogyan lehet a gyökérpontbólkiindulva fokozatosan felépíteni egy adott stratégiájú bináris fát. Megadunkegy általános algoritmikus keretet, amely lépésenként – azaz egy-egy csúcsbólinduló két él behúzásával – építi fel a nekünk kívánatos fát. Az algoritmusvégrehajtása során a már generált fa megfelel valamely, állandóan változóstratégiának. Ezt a pillanatnyi stratégiát fogjuk g-vel jelölni. Az a stratégia,amelyhez tartozó fát akarunk előállítani, legyen d 6= 0.

Bevezetjük minden k szinthez a tk mennyiséget. Ennek szemléletes je-lentése, hogy potenciálisan tk végpontot lehet létesíteni még a gráfban a kszinten, ha minden magasabb j (j < k) szinten létrehozunk összesen dj vég-pontot. Legyen tehát

tk =

k∑

j=1

(gj − dj)2k−j .

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 86: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

86 2. Az egészértékű programozás matematikai alapjai

Természetesen tk is csak a pillanatnyi állapotot tükrözi, az algoritmus egy-egylépése után változhat.

e e£

£££°

BBBBN

e e£

£££°

BBBBN

ee e

££

££°

BBBBN

ee

­­

­­À

JJ

JJ

e e£

£££°

BBBBN

e e£

£££°

BBBBN

ee e

££

££°

BBBBN

ee

­­

­­À

JJ

JJ

e e?

JJ

JJe e

££

££°

BBBBN

2.10. ábra: Példa azonos stratégiájú, de nem izomorf fákra.

2.8.7. tétel: Tekintsünk egy olyan algoritmust, amely bináris fát épít fel,és egy rögzített, a (2.52) egyenletet kielégítő d 6= 0 nemnegatív egészekből állón-dimenziós vektor mellett eleget tesz az alábbiaknak:(i) kezdetben g1 = 2, gj = 0 (j = 2, ..., n),(ii) minden lépésben egy csúcsból induló két élt húzunk be,(iii) csak olyan csúcsot bontunk ketté amelynek k. szintjére tk > 0,(iv) az eljárás csak akkor fejeződik be, ha mindazokra a k szintekre, amelyekretk > 0, a végpontok száma zérus.Ekkor az algoritmus eredményeként kapott bináris fa olyan, hogy nincs n-nélalacsonyabb szintű végpontja, és stratégiája éppen d.

Bizonyítás: A (ii) követelményből következik, hogy n-nél alacsonyabb szintűvégpontot csak úgy nyerhetünk, ha legalább egy n-szintű pontból kiinduló kétélt is behúzunk. Azonban (iii) szerint ehhez az kell, hogy valamikor tn > 0teljesüljön. Viszont

tn =

n∑

j=1

(gj − dj)2n−j =

n∑

j=1

gj2n−j −

n∑

j=1

dj2n−j .

A (2.52) egyenlőség alapján itt mindkét összeg értéke 2n, tehát tn értékebármely pillanatban nulla. Ebből azonnal következik az algoritmus végességeis, hiszen összesen is csak véges sok pontból induló két-két él behúzásáróldönthetünk.

Azt kell tehát belátnunk, hogy a végeredményül kapott bináris fa h stra-tégiája megegyezik d-vel.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 87: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.9. Megjegyzések és irodalom 87

Indirekt módon tegyük fel, hogy h és d nem azonos. Legyen p az a legki-sebb index, amelyikben különböznek. Tehát

hk = dk, k = 1, ..., p − 1 és hp 6= dp.

Ha hp > dp, akkor az algoritmus befejeztével

tp = hp − dp ≥ 1, (2.53)

amiből következik, hogy van p szinten végpont. Ekkor viszont (2.53) ellent-mond (iv)-nek.

Tehát csak a hp < dp eset fordulhat elő. Vizsgáljuk a bináris fát azu-tán, hogy utoljára p szinten lévő csúcspontból húztunk be éleket. Ezután alépés után, mint azt megmutatjuk, tp értéke már nem változott. A későbbiváltoztatások a bináris fán vagy a p szint alatt történtek, és ezek definíciószerint nem játszanak szerepet a tp érték meghatározásában, vagy a p szintfölött. Az utóbbi esetben, ha a változtatás egy k < p szintű csúcsból indulóélek behúzása volt, akkor gk+1 2-vel való növekedése, illetve gk 1-gyel valócsökkenése miatt tp változása:

2 · 2p−k−1 − 2p−k = 0.

Vizsgáljuk meg tp értékét az említett utolsó p-szintű változtatás után. Azelőbbieknek megfelelően, p kitüntetett szerepét felhasználva:

tp =

p∑

k=1

2p−k(hk − dk) = hp − dp < 0,

ami (iii) miatt lehetetlen. Q.E.D.

2.9. Megjegyzések és irodalomA jelen fejezet azokat az alapvető matematikai ismereteket tartalmazza, ame-lyek nélkül ugyan meg lehet érteni az egyes egészértékű programozási eljá-rásokat, de amelyek mélyebb bepillantást adnak a problémák szerkezetébe,rávilágítanak arra, hogy az egyes eljárások hatékonysága miért jó vagy rosszbizonyos esetekben.

Az optimális megoldások létezésével kapcsolatos alapvető kérdéseket a [67]dolgozat tárgyalja.

A Hilbert-bázisok, igaz egészen más, az akkori időknek megfelelő fogalmak-kal leírva, először a [49] cikkben jelentek meg. Pullyblanknek a DO’99 (Disc-rete Optimozation), a Rutgers Egyetem (New Jersey, USA) Operációkutatási

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 88: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

88 2. Az egészértékű programozás matematikai alapjai

Központja (RUTCOR) által szervezett konferencián tartott előadása szerintminden valószínűség szerint Jeroslow volt az, aki felfedezte Hilbert idevágóeredményeinek jelentőségét a modern problémák szempontjából. Ugyancsakő adta a fogalomnak a Hilbert-bázis elnevezést. A csúcsos kúpok egyértelműminimális Hilbert-bázisát Jeroslow és Schrijver egymástól függetlenül fedez-ték fel [53], [75]. A Hilbert-bázisokkal kapcsolatos néhány további fontoseredmény a [76] könyv 22. fejezetében található. Mi itt Jeroslow tárgyalásátkövettük.

Ugyancsak Jeroslow vette először észre a síkon, hogy egy szögtartományegyik oldalegyenesét kicsit elforgatva a tartományba eső rácspontok konvexburka igen bonyolult lehet [51]. Itt az ő eredményeit általánosítottuk. Halfintárgyalta a kérdést magasabb dimenzióban [48].

Sperner 1928-ban vezette be a később róla elnevezett rendszereket a [83]dolgozatban. Az itteni bizonyítás Lubelltől való [61]. Tegyük fel, hogy npáratlan. Ekkor a legtöbb halmazt tartalmazó Sperner-rendszer ⌊n/2⌋ vagy⌊n/2⌋+1 elemű részhalmazok. A feladat további vizsgálatából megállapíthatóazonban, hogy ha az ilyen elemszámú halmazok vegyesen fordulnak elő aSperner-rendszerben, akkor annak elemszáma kevesebb lesz, mint

(

n⌊

n2

)

.

Lubell eredményéről publikálása után kiderült, hogy másik két kutató is ha-sonló eredményre jutott [65], [96]. Ezért nevezik az állítást LYM-tételnek.

Csaknem egyidőben Bradley dolgozatának [14] megjelenésével, több szerzőis publikált hasonló eredményeket, de általánosságával mind közül kiemelke-dik Bradley-é. Ő ugyanis tetszőleges nemlineáris függvényeket is megenged,és a H halmaz is bármilyen lehet, nem kell rácspontokra szorítkoznunk. An-nak ellenére, hogy mint láttuk, az egészértékű programozás csak a 20. századötvenes éveiben született, így az egész változókra vonatkozó feltételek össze-vonása is csak ezután vált különösen fontossá, az ebben a kérdéskörben elértelső eredmények a 21. század utolsó éveiből származnak [64].

A Hilbert-bázisokkal együtt jó példa ez arra, hogy ugyanaz a kérdés,esetleg egymástól eltérő, de ekvivalens megfogalmazásokban, igen különbözőszempontokból válhat a kutatók számára fontossá.

Bináris vektorok rögzített halmazával egészértékű programozási szempont-ból ekvivalens, különböző típusú lineáris egyenlőtlenségekkel leírt halmazoklétezését tárgyalja [88]. A közben felhasznált 2.6.3. tétel eredetileg [3]-bentalálható. A bináris ponthalmazok leírásához szükséges lineáris egyenlőtlen-ségek számára vonatkozó éles felső korlát a [94] dolgozat eredménye.

A lineáris egyenlőtlenségek összevonhatóságának szükséges és elegendő fel-tételét, az aszummálhatóságot, két szerző egymástól függetlenül találta meg[21], [29]. Az utóbbi dolgozatban található az az eredmény is, hogy a teljesen

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 89: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

2.9. Megjegyzések és irodalom 89

monoton és a nem 2-szummálható halmazok osztálya azonos. Az a megál-lapítás, hogy 8-dimenzióig az utóbbi osztály megegyezik az aszummálhatóhalmazokkal a [69] dolgozatban jelent meg. A példa, mely azt mutatja, hogyez 9-dimenzióban már nem igaz, a [37] doktori értekezésben található.

Két szerző egymástól függetlenül felfedezte, hogy a Chow-paraméterekegyértelműen kiválasztják az egyetlen lineáris egyenlőtlenséggel leírható hal-mazokat [22], [85].

A küszöbgráfok karakterizációját a [23] cikk tartalmazza.Befejezésül megemlítünk két könyvet, melyek igen bő anyagot tartalmaz-

nak az egészértékű programozás matematikai alapjairól. A diszkrét ponthal-mazok leírhatóságának kérdéseit részletesen tárgyalja [68]. Az egészértékűprogramozással összefüggő kombinatorika eredményeinek szinte valamennyiterületét összefoglalja [76], ideértve a bonyolultságelmélet felépítését is.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 90: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 91: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

3. fejezet

Két alapvető elv

A matematikai alapok megismerése után az egészértékű programozás algorit-musai tárgyalásának előkészítéseként két olyan általános elvet mutatunk be,melyeket a későbbiekben ismételten hasznosítunk.

3.1. A relaxációs elvA matematikai programozás ágai közül elsőnek a lineáris programozás szü-letett meg. Természetesen adódott tehát a lehetőség, hogy a nehezebb fel-adatok megoldását erre vezessék vissza. A diszkrét programozás esetébenazonnal adódik egy kiindulási pont. Tekintsük ugyanis a

max cT x (3.1)

Ax = b (3.2)

x ≥ 0 (3.3)

x ∈ ZZn (3.4)

feladatot. Ha a (3.4) feltételt elhagyjuk, akkor a probléma a (3.1)–(3.3)lineáris programozási feladattá redukálódik. Ha ezt megoldjuk, és olyan sze-rencsénk van, hogy a kapott x∗ optimális megoldás teljesíti a (3.4) feltételt is,akkor természetesen x∗ optimális megoldása a (3.1)–(3.4) egészértékű progra-mozási feladatnak is. Ennek a gondolatmenetnek a mintájára fogalmazhatómeg aRelaxációs elv: Legyen S és T két tetszőleges halmaz úgy, hogy S ⊂ T ,továbbá f : T → IR tetszőleges függvény. Ha a

max { f(x) | x ∈ T } (3.5)

feladatnak van optimális megoldása, egy ilyen optimális megoldás y, és y ∈ S,akkor y egyben a

max { f(x) | x ∈ S } (3.6)

91

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 92: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

92 3. Két alapvető elv

feladatnak is optimális megoldása. Q.E.D.

A (3.5) relaxált feladat megoldása az eredeti, (3.6) feladat optimális cél-függvényértékére vonatkozó olyan felsőkorlát-számítási eljárásnak fogható feltehát, amelyik időnként meg is oldja az erdeti feladatot.

Legyen ez az elv – a kimondása után – bármennyire is triviális, látni fogjuk,hogy igen hatékony algoritmikus segédeszköz, a legkülönbözőbb eljárásokbanfogjuk felhasználni. Az elv alkalmazása a gyakorlatban akkor célszerű, ha arelaxált feladat sokkal gyorsabban oldható meg, mint az eredeti.

T

y S

T

S

y

(a) (b)

A relaxált feladat optimális megoldásának két lehetséges elhelyezkedése. Az (a) esetben az eredeti és a relaxált feladatoptimális megoldása egybeesik, a (b) esetben nem.

3.1. ábra: Az eredeti és a relaxált feladat viszonya.

3.2. Az egészértékű programozási feladatok egygráfelméleti modellje

Tekintsük a

min cT x (3.7)

Ax = b (3.8)

x ≤ d (3.9)

x ∈ ZZn+ (3.10)

feladatot, ahol A m×n-es mátrix, c és d n-dimenziós, b m-dimenziós vektor,feltesszük, hogy valamennyi együttható egész. Mikor lesz ennek egyáltalánmegengedett megodása? Nyilván ehhez szükséges, hogy

b ∈ F := {Ax | x ∈ ZZn+ }. (3.11)

Az F halmaz elemei a szokásos vektorösszeadásra nézvést egy kommutatívfélcsoportot alkotnak. F egyben részfélcsoportja ZZm-nek. A kommutativi-

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 93: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

3.2. Az egészértékű programozási feladatok gráfelméleti modellje 93

tás és az asszociativitás az említett művelet ezen tulajdonságaiból azonnaladódik. Csak annyit kell belátni, hogy a vektorösszeadás nem vezet ki F-ből.Legyen b1,b2 ∈ F két tetszőleges elem. Ekkor létezik olyan x1,x2 ∈ ZZn

+

vektor, hogy b1 = Ax1 és b2 = Ax2. Ekkor b1 + b2 = A(x1 + x2). Mivelx1 + x2 ∈ ZZn

+ is teljesül, ezért b1 + b2 ∈ F .F másik fontos tulajdonsága, hogy elemei között szerepel a 0 ∈ ZZm

vektor, ami a félcsoportbeli műveletre nézvést nullelem, és mint ilyen egyér-telműen meghatározott.

Jelölje az A mátrix oszlopait a1, a2, ..., an. Ezek generálják a félcsoportelemeit.

Egyelőre tekintsünk el a (3.9) feltételtől, tehát a (3.7), (3.8) és (3.10) fela-datot vizsgáljuk.

Az általánosság megszorítása nélkül feltehető, hogy az A mátrix oszlopaimind különbözők. Ha ugyanis ap = aq és cp < cq (p 6= q), akkor xq = 0minden optimális megoldásban. Legyen ugyanis x a feladat egy megengedettmegoldása, amelyben xq > 0. Tekintsük azt az y vektort, melyre

yj =

xj ha j 6= p, q0 ha j = qxp + xq ha j = p.

Nyilvánvalóan y is megengedett megoldás, és célfüggvényértéke (cp − cq)xq-val kevesebb x célfüggvényértékénél. Megjegyezzük továbbá, hogy a (3.9)feltétel elhagyása a feladatosztály bővítését jelenti, mint arra az 1. fejezet-ben rámutattunk. A feladat átalakítását és így méretének megnövekedésétazonban célszerű elkerülni, így erre az esetre a szakasz végén visszatérünk.

A továbbiakban csak F-nek már említett tulajdonságait használjuk fel,nevezetesen, hogy (i) kommutatív félcsoport, (ii) egyértelműen meghatározottnullelemet tartalmaz, (iii) F részfélcsoportja egy H csoportnak, (iv) végesengenerált. Az ezekkel az algebrai tulajdonságokkal rendelkező F halmazzalírunk fel egy optimalizálási feladatot a következő módon: minden aj elemhezhozzárendeltünk egy cj egész számot. Azzal is hangsúlyozni kívánjuk, hogycsak a felsorolt algebrai tulajdonságokat használjuk, hogy sem a generálóelemeket, sem H elemeit nem vektorként jelöljük. Ezen feltételek mellett azalábbi, ún. félcsoportfeladatot fogjuk vizsgálni:

min∑n

j=1 cjxj⊕n

j=1 ajxj = b

xj ∈ ZZ+, j = 1, ..., n,

(3.12)

ahol ⊕ a félcsoportbeli összeadást jelöli, ajxj pedig a szokásos módon azxj-szeres összeadást jelenti, végül a1, ..., an generálja F-et, és b ∈ H.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 94: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

94 3. Két alapvető elv

Készítsük el a következő, nem feltétlenül véges G irányított gráfot. Gcsúcsainak halmaza legyen H. Az élek halmazát az

E = { (u, v) | u ∈ H, ∃ 1 ≤ j ≤ n : v = u ⊕ aj } (3.13)

egyenlőség definiálja. Végezetül az (u, v) élhez rendelünk egy duv hosszt úgy,hogy

v = u ⊕ aj esetén duv = cj . (3.14)

Ezt a hosszfüggvényt D-vel jelöljük.3.2.1. definíció: A (3.12) félcsoport feladat gráfreprezentációján a G =(H, E , D) gráfot értjük.

A továbbiakban az út és a kör fogalmát a 2. fejezettől eltérően fogjuk hasz-nálni, ezért megadjuk ezek definícióját. Azért érezzük feljogosítva magunkaterre az eljárásra, mert sem a magyar, sem az angol nyelvű gráfelméleti szaki-rodalom szóhasználata nem egységes. Korábban út alatt élek olyan sorozatátértettük, amelyben sem él, sem él végpontja nem ismétlődik meg. Ezt olykoregyszerű útnak is nevezik. Most ettől a megkötéstől eltekintünk.3.2.2. definíció: Legyen valamely irányított gráf csúcsainak (u0, u1, ..., ut)egy tetszőleges, véges sorozata. Ha a bármely (uj , uj+1) pár (j = 0, ..., t − 1)éle a gráfnak, akkor a

P = ((u0, u1), (u1, u2), ..., (ut−1, ut))

élsorozat egy u0-ból ut-be vezető irányított út, mely irányított kör, ha u0 = ut.3.2.3. definíció: Legyen (u, v) a 3.2.1. definícióban szereplő G gráf egy éle.Ekkor az (u, v) émél típusa aj, ha v = u⊕ aj. Továbbá a gráf egy tetszőlegesP émútjának típusán azt az x ∈ ZZn

+ vektort értjük, amelynek xj komponensea P -beli aj típusú élek számát adja (j = 1, ..., n).

a1

6

(1)a2

³³³1

O

6

6

³³³1³³³1

³³³1³³³1³³³1

6³³³1

6b

(2)

6

6

6

6

6

6

6

6

³³³1³³³1³³³1³³³1³³³1³³³1³³³1³³³1³³³1

O

b

(3)3.2. ábra: (1): F két generáló eleme. (2): A 0-ból induló (2,3) típusú utakvégpontja b. (3): Az összes 0-ból induló (2,3) típusú utat tartalmazó gráf.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 95: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

3.2. Az egészértékű programozási feladatok gráfelméleti modellje 95

3.2.1. tétel: Jelölje O az F nullelemét. Az x ∈ ZZn vektor akkor és csakakkor megengedett megoldása a (3.12) félcsoportfeladatnak, ha van x típusúút G-ben O-ból b-be. Ekkor az út hossza cT x.

Bizonyítás: Legyen x (3.12) megengedett megoldása. Az általánosság meg-szorítása nélkül feltehető, hogy x nullától különböző komponenseinek index-halmaza { 1, ..., k } (1 ≤ k ≤ n). Ekkor a

{ (O, a1), (a1, 2a1), ..., ((x1 − 1)a1, x1a1), (x1a1, x1a1 ⊕ a2),

..., (⊕k−1

i=1 xiai ⊕ (xk − 1)ak,⊕k

i=1 xiai) }(3.15)

út O-ból b-be vezet. Megfordítva, ha a O-ból b-be vezető

( (O, u1), (u1, u2), ..., (ut−1, ut) )

út típusa x, akkor a kommutativitásból és az asszociativitásból azonnal adó-dik, hogy

n⊕

j=1

ajxj = b.

Az út hosszára vonatkozó állítás azonnal adódik az élek hosszának definíció-jából. Q.E.D.

A tétel mondanivalója az, hogy a félcsoportfeladat megoldása ekvivalensG-ben az O-ból b-be vezető legrövidebb út megkeresésével. Ezért bármilyenlegrövidebb út megkeresésére alkalmas algoritmusból származtatható egy egé-szértékű programozási algoritmus is, kérdés persze, hogy ez mennyire leszhatékony. Amennyiben a legrövidebb út megkeresése sikeres volt, illetve egy-általán találtunk utat O-ból b-be, akkor egyben arra a kérdésre is igenlőválaszt kaptunk, hogy b benne fekszik-e F-ben.

Másfelől az is fontos kérdés, hogy a célfüggvény mikor korlátos. Ebből aszempontból kitüntetett szerepet játszanak az ún. negatív körök G-ben, te-hát azok a körök, amelyek mentén az élek hosszait összeadva negatív számotkapunk. (Emlékeztetünk arra, hogy eddig semmiféle megkötést sem tettünka c vektor komponenseinek és így a D hosszfüggvény egyes elemeinek elője-lére.) Ugyanis, ha egy negatív K kör u pontjába el tudunk jutni O-ból, ésugyanennek a körnek egy v pontjából vezet út b-be, akkor nincs legrövidebbút O-ból b-be. Tekintsük ugyanis a következő utakat: O-ból elmegyünk u-ba,a K körön körbemegyünk p-szer (p = 1, 2, ...), K-n elmegyünk u-ból v-be,végül v-ből b-be. Mivel K negatív kör, ezért az út hossza p növekedtévelminden határon túl csökkenni fog. Körök létezésére ad szükséges és elegendőfeltételt a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 96: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

96 3. Két alapvető elv

3.2.2. tétel: A G gráfban akkor és csak van kör, ha az

S =

x ∈ ZZn+ |

n⊕

j=1

ajxj = O; x 6= 0

halmaz nem üres.

Bizonyítás: Tegyük fel, hogy x ∈ S. Tekintsük az ezzel felírt (3.15) alakúutat. Ez kör, mert a végpontja F nulleleme lesz x választása miatt. Megfor-dítva, legyen az

( (u0, u1), (u1, u2), ..., (ut−1, ut) )

út kör, azaz u0 = ut (t ≥ 1). Legyen ennek az útnak a típusa x. Nyilvánx 6= 0, továbbá a kommutativitásból és az asszociativitásból adódik, hogy

u0 ⊕n

j=1

ajxj = ut = u0.

A nullelem egyértelműségéből adódik, hogy

n⊕

j=1

ajxj = O. (3.16)

Q.E.D.

3.2.3. következmény: A G gráfban akkor és csak akkor van negatív kör,ha

inf

cT x | x ∈ ZZn+;

n⊕

j=1

ajxj = O

< 0.

Q.E.D.

A tétel bizonyításában egy tetszőleges x ∈ S vektor alapján (3.15) felhasz-nálásával olyan kört konstruáltunk, amely átment a nullelemen. A megfor-dításban egy tetszőleges körből kiindulva azt kaptuk (3.16)-ban, hogy ennekx típusa S-beli vektor. Erre az előbbi módon alkalmazva (3.15)-öt ismét anullelemen áthaladó kört kapunk. Igaz tehát a3.2.4. következmény: Legyen K egy tetszőleges kör G-ben, x pedig ennektípusa. Ekkor egy x típusú kör átmegy a nullelemen. Q.E.D.

Innen a 3.2.2. tételt megelőző megfontolásokból azonnal adódik a3.2.5. következmény: Ha a G gráfban bárhol létezik egy negatív kör,akkor a nullelemtől egyetlen másik pontba sem vezet legrövidebb út. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 97: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

3.2. Az egészértékű programozási feladatok gráfelméleti modellje 97

Most megmutatjuk, hogy eddigi megfontolásaink megfordítva is igazak,azaz, ha a célfüggvény nemkorlátos, akkor szükségképpen található G-bennegatív kör. Ehhez szükségünk lesz a következő állításra.3.2.6. lemma: Legyen T ⊂ ZZn

+ páronként összehasonlíthatatlan vektorokhalmaza. Ekkor T elemeinek száma véges.

Bizonyítás: Az állítás igazolását n-szerinti teljes indukcióval végezzük. n =1 esetén T legfeljebb egy elemet tartalmazhat, hiszen bármely két nemnegatívegész összehasonlítható egymással. Tegyük ezután fel, hogy a tételt mindenk < n dimenzióra már igazoltuk. Indirekt okoskodással járunk el, vagyisfeltesszük, hogy T -nek végtelen sok eleme van. Legyen ezek közül egy y. Mi-vel T csak y-nal összehasonlíthatatlan vektorokat tartalmaz, ezért T mindentovábbi eleme legalább 1 és legfeljebb n−1 komponensben kisebb értéket tar-talmaz, mint y. Így tehát T -nek az y-on kívüli elemeit véges sok osztálybasorolhatjuk aszerint, hogy mely komponensekben tartalmaznak y megfelelőértékeinél kisebb komponenseket, és ezeknek pontosan mi az értékük. Mivelfeltevésünk szerint T elemeinek száma végtelen, ezért legalább egy osztálybaugyancsak végtelen sok elem esik. Legyen ez az osztály C. Legyen továbbá azindexeknek P és Q egy felosztása úgy, hogy P ∪Q = { 1, ..., n }, P ∩Q = ∅,és minden i ∈ P és minden u,v ∈ C esetén ui = vi. Most tehát P, Q 6= ∅.C-ben összehasonlíthatatlan vektorok vannak. A 2.7. szakasz jelöléseit hasz-nálva azt mondhatjuk, hogy ez csak akkor lehetséges, ha a C |Q halmaz isösszehasonlíthatatlan vektorokat tartalmaz. Erre azonban alkalmazható azindukciós feltevés, azaz C |Q elemeinek száma – ami megegyezik C elemeinekszámával, hiszen közöttük kölcsönösen egyértelmű megfeleltetés létesíthető –véges. Ezzel ellentmondásra jutottunk. Q.E.D.

3.2.7. tétel: A félcsoportfeladat célfüggvénye akkor és csak akkor nemkor-látos, ha a G gráfban van negatív kör.

Bizonyítás: A 3.2.5. következmény szerint elég csak azzal az esettel foglal-koznunk, amikor a célfüggvény nemkorlátos. Ekkor szükségképpen létezik a(3.12) feladat megengedett megoldásainak egy olyan végtelen x1, x2, ... so-rozata, hogy

cT x1 > cT x2 > ... (3.17)

Innen azonnal adódik, hogy a sorozat tagjai nem lehetnek egyenlők egymás-sal. Tekintsük azt az x1-gyel kezdődő részsorozatot, amely összehasonlítha-tatlan vektorokból áll. Az előző lemma szerint ez véges részsorozat, így azáltalánosság megszorítása nélkül feltehető, hogy a teljes sorozat első t ele-méből áll, valamely alkalmasan választott t indexhatár mellett. Tehát haq > t, akkor xq legalább egy xp (1 ≤ p ≤ t) vektorral összehasonlítható.Mivel minden y ∈ ZZn

+ vektorhoz csak véges sok olyan x ∈ ZZn+ vektor van,

hogy y ≥ x, ezért szükségképpen adódik, hogy elegendően nagy q index ese-

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 98: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

98 3. Két alapvető elv

tén xq

>

6= xp reláció áll fenn. A félcsoport asszociativitását felhasználva aztkapjuk, hogy

b =

n⊕

j=1

ajxqj =

n⊕

j=1

ajxpj ⊕n

j=1

aj(xqj − xqj) = b ⊕n

j=1

aj(xqj − xqj).

Itt az utolsó kifejezésben az aj generáló elemek együtthatói nemnegatívak,ezért

n⊕

j=1

aj(xqj − xqj)

F egy eleme, következésképp a (ii) algebrai tulajdonság miatt nem lehet más,mint F nulleleme. Másfelől a q > t egyenlőtlenségből adódik, hogy

cT xp > cT xq = cT xp + cT (xq − xp),

ahonnancT (xq − xp) < 0.

Tehát xq − xp egy negatív kör típusa. Q.E.D.

Most röviden rátérünk arra az esetre, amikor a változókra explicit felsőkorlátok is szerepelnek a feltételek között, azaz a (3.7)–(3.10) feladatot vizs-gáljuk. Ebben az esetben már nem tehető fel, hogy az A mátrix oszlo-pai mind különbözőek. Egy változó elhagyásával ugyanis most megenge-dett megoldásokat is veszíthetünk. Annyit azonban megállapíthatunk, hogyap = aq, cp < cq (p 6= q) esetén xq értéke csak akkor lehet pozitív azoptimális megoldásban, ha xp = dp.

A (3.11)-ben definiált F halmazra tett megállapításaink természetesen to-vábbra is érvényben maradnak. Azonban a (3.11) reláció teljesülése már nemelegendő a megengedett megoldás létezéséhez. Legyen például

F = { b ∈ ZZ+ | ∃x1, x2 ∈ ZZ+, b = x1 + ax2},

ahol a tetszőleges pozitív egész. Nyilvánvaló, hogy F = ZZ+. Ugyanakkorbármilyen d1, d2 explicit véges felső korlátot is írunk elő a változókra, azmaga után vonja, hogy csak véges sok jobb oldal esetén lesz a feladatnakmegengedett megoldása.

Legyen ismét F egy tetszőleges, az (i)–(vi) tulajdonságokkal rendelkező fél-csoport, amelyet az a1, ..., an, egymástól nem feltétlenül különböző elemekgenerálnak, és ezekhez tartozzanak rendre a c1, ..., cn egészek mint egység-költségek; legyen H egy F-et tartalmazó félcsoport és b ∈ H. Ekkor b-takarjuk minimális költséggel előállítani úgy, hogy az aj generáló elemet az

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 99: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

3.2. Az egészértékű programozási feladatok gráfelméleti modellje 99

előállításban legfeljebb az előre adott dj multiplicitással használjuk fel. Tehátmost a félcsoportfeladat:

min∑n

j=1 cjxj⊕n

j=1 ajxj = b

x ≤ d

x ∈ ZZn+.

(3.18)

A gráfot változatlanul a (3.13) és (3.14) képletekkel határozzuk meg. Azon-ban mivel a generáló elemek között lehetnek egyenlők, ezért meg kell enged-nünk a többszörös éleket is. Ezek léte számos algoritmus esetében semmifélegondot nem okoz.3.2.4. definíció: A G = (H, E , D) gráfban egy P utat d-megengedettneknevezünk, ha P x típusa kielégíti az x ≤ d egyenlőtlenséget.

A 3.2.1. tétel mintájára bizonyítható a3.2.8. tétel: Az x vektor akkor és csak akkor megengedett megoldásaa (3.18) feladatnak, ha G-ben vezet O-ból b-be x típusú d-megengedett út.

Q.E.D.

3.2.9. következmény: A (3.18) feladat megoldása ekvivalens a G gráfbanO-ból b-be vezető minimális hosszú d-megengedett út keresésével. Q.E.D.

A nehézség abban áll, hogy hogyan tudjuk biztosítani a d-megengedettséget.Egy lehetőség a következő. Mivel az azonos típusú utak költségei azonosak,ezért megtehetjük azt, hogy először csak az a1 típusú éleket húzzuk be, leg-feljebb d1 darabot, azután az a2 típusúakat, legfeljebb d2 darabot, stb. Errefogunk majd példát látni a dinamikus programozás tárgyalásakor.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 100: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 101: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

II. rész

A matematikaiprogramozás általánosmódszereinekalkalmazása azegészértékűprogramozásban

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 102: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 103: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Bár már az 1950-es évek első felében is jelentek meg dolgozatok egyes spe-ciális egészértékű programozási feladatokról, mégis azt mondhatjuk, hogy azegészértékű programozás 1958 óta létezik a matematikai programozás önállóágaként. Ekkor jelent meg ugyanis Gomory híres dolgozata, amely az elsőolyan algoritmust tartalmazta, amely véges lépésszám mellett garantálta azoptimum elérését.

A felületes szemlélő számára az egészértékű programozás módszerei megle-hetősen eltérnek az optimalizálás egyéb eljárásaitól. Valójában erős kölcsön-hatásról beszélhetünk. A Gomory-módszer az ún. vágás típusú módszerekcsaládjába tartozik. Ezt az elvet később a nemlineáris programozásban isalkalmazták. Fordított a helyzet a korlátozás és szétválasztás módszerével.Ezt eredetileg éppen a nemlineáris programozási feladatok megoldására dol-gozták ki, de igazán hatékonynak az egészértékű programozásban bizonyult.A Belmann által 1957-ben javasolt dinamikus programozást mindkét terüle-ten sikeresen alkalmazták. A Lagrange-szorzók használatát Everett 1963-banmeglehetősen általános megfogalmazásban, de erős egészértékű programozásimotiváció mellett vetette fel. Az optimalizálás általános logikájából több,más-más területen működő algoritmus származott, amelyek felismerhető ro-konságot mutatnak, bár erre eddig nem sok figyelmet szenteltek.

103

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 104: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 105: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4. fejezet

Vágás típusú módszerek

A vágás típusú módszerek a 3.1. szakaszban tárgyalt relaxációs elven alapul-nak. Általános sémájuk a következő. Hagyjuk el a feladat feltételei közülaz egészértékűségi követelményt. Így a relaxált feladat egy lineáris progra-mozási probléma, amit már meg tudunk oldani. Ha az optimális megoldásnem egész, akkor vágjuk le egy alkalmas hipersíkkal ezt a pontot a poliéder-ből úgy, hogy semmilyen egész megengedett megoldást sem hagyunk el. Azígy kapott szűkebb poliéderen értelmezett feladat természetesen még mindigrelaxációja lesz az eredeti problémának, ezért erre ismét alkalmazhatjuk afentieket. Mindezt addig folytatjuk, amíg optimumhoz nem jutunk.

Az ilyen eljárások esetében a következő nehézségek merülnek fel: tudjuk-eaz eljárás végességét garantálni, a vágások mennyire ügyesek, azaz mennyiremélyen tudunk belevágni a poliéderbe, hány vágás kell az optimum eléréséig,a módszer mennyire lesz érzékeny a kerekítési hibákra.

pont elhagyása nékül lemetszik a folytonos optimumot.

Külöbözö vágások, amelyek diszkrét

(c)

(a)

(b)

y

4.1. ábra: Az optimalizálás során felhaszhálható vágások

105

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 106: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

106 4. Vágás típusú módszerek

4.1. A Gomory-módszer

Elsőként a Gomory által 1958-ban közölt eljárást tárgyaljuk, amely kiindu-lópontul szolgált az összes, ebben a fejezetben tárgyalandó módszer kifej-lesztéséhez. Az algoritmus megértéséhez szükség van a lexikografikus duálszimplex módszerrel, amelyet azonban mint lineáris programozáshoz tartozótémát ismertnek tételezünk fel.

Tekintsük tehát a

max cT x

Ax = b

x ∈ ZZn+

(4.1)

feladatot, ahol A m × n-mátrix, c és x n-dimenziós, b m-dimenziós vek-tor. Feltesszük, hogy valamennyi együttható egész, és A rangja megegyeziksorainak számával. Bevezetve az új

x0 = cT x (4.2)

változót, azt mondhatjuk tehát, hogy (4.1) minden megengedett megoldásamellett ez is egészértékű, azonban a többi változóval ellentétben lehet negatívis.

Oldjuk meg a (4.1) feladat lineáris programozási relaxációját. A továb-biakban mindig K jelöli az aktuális bázison kívüli változók halmazát x0-tóleltekintve, míg J = { 0, 1, ..., n } az összes index. Ekkor minden változókifejezhető

xi = di0 −∑

j∈K

dijxj ∀ i ∈ J (4.3)

alakban. Itt di0 az xi változónak az optimális bázis szerinti pillanatnyi értéke.Ha minden i ∈ J esetén di0 egész, akkor a (4.3)-ban adott x vektor optimálismegoldása (4.1)-nek is (a relaxációs elv szerint). Bennünket a nehezebb esetérdekel, vagyis amikor létezik olyan t index, hogy dt0 nem egész. Legyen fj

a dtj együttható törtrésze (j ∈ K ∪ {0}), azaz

fj = dtj − ⌊dtj⌋.Ezeket a mennyiségeket behelyettesítve (4.3) t-edik sorába kapjuk, hogy

xt = ⌊dt0⌋ + f0 −∑

j∈K

(⌊dtj⌋ + fj)xj .

Egy oldalra rendezve azokat a tagokat, amelyek megengedett megoldás eseténbiztosan egészértékűek, kapjuk, hogy

xt − ⌊dt0⌋ +∑

j∈K

⌊dtj⌋xj = f0 −∑

j∈K

fjxj .

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 107: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.1. A Gomory-módszer 107

Innen adódik, hogy

f0 ≡∑

j∈K

fjxj (mod 1).

Itt azonban az együtthatók 0 és 1 közé eső számok, a változók nemnegatívak,ezért kongruencia csak úgy állhat fenn, ha a jobb oldal értéke az { f0, f0 +1, f0 + 2, ... } halmazba esik. Tehát a (4.1) feladat minden megengedettmegoldása esetén teljesülnie kell a

j∈K

fjxj ≥ f0 (4.4)

egyenlőtlenségnek. Vegyük észre, hogy ezt a pillanatnyi bázismegoldás nemteljesíti, mert minden j ∈ K esetén xj = 0, viszont feltevéseink szerint0 < f0 < 1, vagyis a bal oldal 0, és így biztosan kisebb egy pozitív számnál.A (4.4) egyenlőtlenség a Gomory-vágás.

Azonban (4.3)-ból levezethető egy másik vágás is. Legyen ugyanis gj a dtj

szám felső törtrésze, azaz

gj = −dtj + ⌈dtj⌉ j ∈ K ∪ {0}.

Ekkor a fenti gondolatmenet megismétlésével kapjuk, hogy∑

j∈K

gjxj ≥ g0. (4.5)

Megkülönböztetésül (4.4)-et alsó, (4.5)-öt felső Gomory-vágásnak nevezzük.Tekintettel arra, hogy a feltételek (4.1)-ben egyenletek alakjában szere-

pelnek, ezért a vágást egy új, nemnegatív s változó bevezetésével egyenletformájában használjuk fel. Legyen

s = − f0 −∑

j∈K

(−fj)xj , illetve s = − g0 −∑

j∈K

(−gj)xj , (4.6)

attól függően, hogy az alsó vagy a felső Gomory-vágással dolgozunk. Ezta sort utolsóként csatoljuk a (4.3)-ban megadott megoldáshoz tartozó duálszimplex táblához. Az optimális megoldáshoz tartozó (4.3) megoldás primálés duál megengedett volt, azaz

∀ j ∈ J \ { 0 } esetén dj0 ≥ 0 (4.7)

és

∀ j ∈ K esetén d0j ≥ 0. (4.8)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 108: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

108 4. Vágás típusú módszerek

Az új sor hozzávételével a primál megengedettség elromlik, hiszen a táblalegalsó sorában a konstans tag −f0 vagy −g0 negatív. Azonban a duál meg-engedettség nem változik, mert a legelső sort nem változtattuk meg. Ezazt jelenti, hogy duál szimplex lépésekkel a tábla (primál) megengedettségéthelyre lehet állítani. Ha ez megtörtént, akkor ismét megvizsgáljuk, hogy azegészértékűségi követelmény teljesül-e, ha nem, akkor újabb Gomory-vágástgenerálunk, stb. A módszer pontosabb megfogalmazása a következő.

4.1. algoritmus

1. Begin

2. if (4.1) LP-relaxációjának nincs optimális megoldása then STOP;

3. L := { i ∈ J | dio 6∈ ZZ+ };4. while L 6= ∅ do

5. begin

6. t = min { i ∈ L};7. generáljuk a tábla t-edik sorából a (4.6) feltételt;

8. a tábla n + 1-edik sorába írjuk le (4.6)-ot;

9. if a lexikografikus duál szimplex módszerrel viszaállítható a táblaprimál megengedettsége

10. then L := { i ∈ J | dio 6∈ ZZ+ }11. else STOP;

12. end;

13. for i := 1 to xi := d0;

14. end;

Az algoritmussal kapcsolatban a következőkre hívjuk fel a figyelmet:2. sor: Mint az a 2.1. szakaszban szerepelt, ha (4.1) LP-relaxációjánaknincs optimális megoldása, akkor magának (4.1)-nek sem lehet.3. sor: A vágás nem lehet az alapja újabb vágásnak (n + 1 6∈ J ). Mint afentiekből kitűnt, s egész, ha megengedett megoldásunk van.6. sor: Az algoritmus végességének bizonyításakor lényegesen ki fogjukhasználni, hogy a vágást mindig a lehető legkisebb indexű sorból állítjukelő. Vonatkozik ez a célfüggvény x0 változójára is (lásd L definícióját a 3.sorban), mivel ennek is egészértékűnek kell lennie.8. sor: Mindig csak egy új sort veszünk a táblához, de úgy, hogy a táblamérete nem növekszik, vagyis az új vágást az előző helyére írjuk be. Nekünkelegendő az egészértékűséget csak az eredeti változókra megkövetelni.9. sor: Az alábbiakban részletesen elemezzük, hogy melyek azok az ese-tek, amikor a feltétel nem teljesül, és így az algoritmus azt bizonyítja, hogy

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 109: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.1. A Gomory-módszer 109

a feladatnak nincs megengedett megoldása. A lexikografikus duál szimplexmódszer elvégezhetőségének az a feltétele, hogy a duál szimplex tábla oszlo-pai lexikografikusan pozitívak legyenek. Pontosabban szólva elég, ha az elsőiteráció előtt ilyenek, mert ezt a tulajdonságot a módszer megőrzi. (4.8) mi-att az oszlopok első eleme kezdetben nemnegatív. Probléma csak ott lehet,ahol ez az elem 0. Legyen ekkor I = { j ∈ K | d0j = 0 }. A táblát a

j∈I

xj ≤ M (4.9)

feltétel bevezetésével és ennek, illetve a neki megfelelő kiegészítő (slack) vál-tozónak közvetlenül a célfüggvény alá írásával tehetjük lexikografikusan po-zitívvá, ahol M egy elegendően nagy szám ahhoz, hogy ez a feltétel ne vágjale az optimumot. A táblával kapcsolatban megjegyezzük még, hogy mindenváltozóra tartalmaz egy sort, ami a bázison kívüli változók esetében a

∀ j ∈ K xj = −(−xj)

triviális alakot ölti fel.13. sor: Itt történik az optimális megoldás kiolvasása a táblából.4.1.1. tétel: Tegyük fel, hogy a (4.1) feladat LP-relaxációjának van opti-mális megoldása, továbbá ismert egy w alsó korlát a (4.1) feladat optimáliscélfüggvényértékére, amennyiben az egyáltalán létezik. Az eljárás, amelyneksorán mindig a (4.4) alsó Gomory-vágást alkalmazzuk, lexikografikusan pozi-tív táblából indul. Ekkor a 4.1. algoritmus véges számú lépés után a következőhárom kimenetel egyikével véget ér:(i) megtalálja (4.1) optimális megoldását,(ii) a célfüggvény w alá csökken,(iii) valamely xt bázisváltozó esetén

∀ j ∈ K : dtj ≥ 0.

Megjegyzések: 1. Ha a c vektor valamennyi komponense nemnegatív,akkor w-t 0-nak választhatjuk. Hasonlóképp jó választás w-re a

w = min cT x

Ax = b

x ≥ 0,

amennyiben egyáltalán a minimum létezik. Mindkét esetben w olyan értéketvesz fel, hogy ha (4.1)-nek egyáltalán létezik megengedett megoldása, akkorannak célfüggvényértéke legalább w. Ha tehát a célfüggvény ezen érték alácsökken, akkor bizonyos, hogy nincs megengedett megoldás.2. A lexikografikus duál szimplex módszernél a pivot elem mindig negatív,hogy az adott sor nem-megengedettségét meg lehessen szüntetni. Tehát, ha

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 110: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

110 4. Vágás típusú módszerek

a (iii) eset fordul elő, akkor a változót nem lehet megengedetté tenni, azazaz éppen aktuális LP-relaxációnak nincs megengedett megoldása, következés-képp az egészértékű programozási feladatnak sem lehet.3. A lexikografikus duál szimplex módszer oszloptranszformációkat hajt végre:a pivot elem oszlopának konstansszorosait adja a többi oszlophoz úgy, hogyközben a pivotelem sorában a pivotelem kivételével valamennyi elem nulláváválik. Mivel a pivotelem sorában a transzformáció előtt a konstans tag ne-gatív, a tábla oszlopai, esetleg az első kivételével, lexikografikusan pozitívak,ezért a transzformáció során a legelső (a célfüggvény pillanatnyi értékét és akonstans tagokat tartalmazó) oszlop lexikografikusan mindig csökken. Teháta célfüggvény soha nem nő.4. Ha a feladat minimalizálás alakú, akkor nem a (4.4) alsó, hanem a (4.5)felső Gomory-vágást kell alkalmazni.Bizonyítás: Tegyük fel, hogy a (ii) eset nem áll elő. Megmutatjuk, hogyvéges számú lépés után (i) vagy (iii) szükségképpen bekövetkezik.

Valahányszor d00 törtértéket vesz fel, az algoritmus 6. sora szerint a vágásta 0. sorból kell előállítani. Legyen a vágás

s = −f0 −∑

j∈K

(−fj)xj .

Mivel a vágás bevezetése után ez az egyetlen sor, amelyben a konstans tagnegatív, ezért s fogja elhagyni a bázist. Legyen a pivotelem indexe p. Jelöljeaz (s, p) báziscsere után d00 értékét d

(1)00 . Ekkor

d(1)00 = d00 − f0

fpd0p.

A duál megengedettség miatt d0p ≥ 0, azonban a törtrésze, fp, pozitív,így maga d0p pozitív. Ebből azonnal adódik, hogy

d0p

fp≥ 1.

Innen

d(1)00 ≤ d00 − f0 = ⌊d00⌋.

Ezért a 0. sorból csak véges sokszor generálhatunk vágást, hiszen a belőleszármazó két vágást követő első szimplex iterációk között legalább 1-gyelcsökken az értéke, tehát az w alá csökkenne különben. Az is következiktovábbá, hogy véges számú lépésben változhat egyáltalán d00. A változásugyanis mindig csökkenést jelent. Tehát vagy már eleve valamilyen egésszelcsökken az értéke a szimplex iterációk során, vagy a csökkenés a 0. sorból

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 111: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.1. A Gomory-módszer 111

származó vágás nyomán lesz legalább 1. Mindenképpen az a helyzet, hogyha a változások száma nem korlátos, akkor szügségképpen bekövetkezik a (ii)eset.

Tegyük fel, hogy már az eljárásnak abba a fázisába jutottunk, amikor d00

állandó. Mivel a duál szimplex tábla első oszlopa lexikografikusan továbbrasem nőhet, ezért most d10 értéke nem nő. Az előbbihez hasonló gondolatme-nettel megmutatjuk, hogy véges számú lépés után d10 is állandó marad, vagybekövetkezik a (iii) eset. Tekintsünk most egy olyan vágást, ami d10 sorábólszármazik. Jelölje ismét

s = − f0 −∑

j∈K

(−fj)xj

az egyenlőtlenséghez bevezetett kiegészítő változót. Tegyük fel, hogy a pivotelem indexe p. Vizsgáljuk az fp, d1p és d0p értékeket. Mivel fp pozitív és d1p

törtrésze, ezért d1p 6= 0. Másrészt d0p ≥ 0. Ha azonban pozitív volna, akkora báziscsere során változna d00 értéke, amit már kizártunk. Így d0p = 0.Ekkor azonban az oszlop lexikografikusan pozitív voltából következik, hogyd1p > 0. Innen

d(1)10 = d10 − f0

fpd1p ≤ d10 − f0 = ⌊d10⌋.

Ebből már az előbbihez hasonló gondolatmenettel adódik, hogy ha d10 végesszámú lépés után nem marad állandó, akkor értéke szükségképpen negatívváválik. Vizsgáljuk meg ezt az esetet. A pillanatnyi helyzetben

x1 = d10 −∑

j∈K

d1jxj ,

ahol d10 < 0, tehát x1 értéke jelenleg nem megengedett. Ebből a sorbólazonban nem lehet pivotelemet választani. Ha ugyanis valamely p indexred1p < 0 volna, akkor ismét a p-edik oszlop lexikografikus pozitivitásábóld0p > 0 adódik. Ebben az esetben azonban megint az a helyzet, hogy azelső szimplex iteráció során d00 értéke csökkenne. Felhasználva a változóknemnegativitását azt kapjuk, hogy

x1 = d10 −∑

j∈K

d1jxj ≤ d10 < 0, (4.10)

ami a (iii) eset bekövetkeztét mutatja.Hasonló gondolatmenettel lehet bebizonyítani a tábla további soraira, hogy

véges számú lépés után vagy a konstans tag nem változik, vagy a (iii) esetkövetkezik be. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 112: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

112 4. Vágás típusú módszerek

Az előbb mondottak szerint, ha d00 értéke már nem változik, és d10 ne-gatívvá vált, akkor már semmilyen iterációval sem lehet felnövelni nemnega-tívvá. (4.10) csak annak részletes kifejtése volt, hogy ezt a helyzetet hogyanlehet felismerni.

Mielőtt továbbmennénk, illusztráljuk az eddig mondottakat egy példával.Tekintsük a

max 7x1 + 15x2 + 11x3

6x1 + 13x2 + 10x3 ≤ 23(4.11)

feladatot, ahol valamennyi változó nemnegatív egész. Ez csak annyibankülönbözik a (4.1)-ben meghatározott alaktól, hogy egyenlőtlenség szerepelbenne egyenlet helyett. Ezt az eltérést egy alkalmas x4 nemnegatív egészváltozó bevezetésével eltüntethetjük. Így nyerjük a

max 7x1 + 15x2 + 11x3 + 0x4

6x1 + 13x2 + 10x3 + x4 = 23

alakot. Mivel7

6>

15

13,

11

10,

0

1,

ezért az LP-relaxáció optimális megoldása

x1 =23

6, x2 = x3 = x4 = 0.

Ebből a célfüggvény és a feltétel transzformált alakja a következő:

x0 = 1616 − 1

6x2 − 46x3 − 7

6x4

x1 = 236 − 13

6 x2 − 106 x3 − 1

6x4.

Ennek megfelelően a duál szimplex táblára a következőt kapjuk:

x0 x2 x3 x4

x01616

16

46

76

x1236

136

106

16

x2 0 −1 0 0

x3 0 0 −1 0

x4 0 0 0 −1

Mivel az első oszlopban x0-nál találjuk az első nem egész értéket, ezért avágást innen kell generálni, alakja

5

6+ s1 =

1

6x2 +

4

6x3 +

1

6x4.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 113: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.1. A Gomory-módszer 113

Tehát azs1 − 5

6 − 16 − 4

6 − 16

sort kell a táblához csatolni, ami ekkor így alakul:x0 x2 x3 x4

x01616

16

46

76

x1236

136

106

16

x2 0 −1 0 0x3 0 0 −1 0x4 0 0 0 −1

s1 − 56 − 1

6 − 46 − 1

6

A lexikografikus pivotálási szabály szerint s1 hagyja el a bázist, és x3 kerülbe. (Most x2 és x3 közül választott a lexikografikus szabály.) A tábla ekkora következő alakot nyeri:

x0 x2 s1 x4

x0 26 0 1 1

x174

74

104 − 1

4

x2 0 −1 0 0

x354

14 − 6

414

x4 0 0 0 −1s1 0 0 −1 0

Figyeljük meg, hogy x2 oszlopa lexikografikusan pozitív maradt. Mivel azelső oszlopban csupa nemnegatív elem áll, ezért a tábla primál megengedett.Azonban az egészértékűségi követelmény nem teljesül, így x1 sorából kell akövetkező vágást előállítani, ami

3

4+ s2 =

3

4x2 +

2

4s1 +

3

4x4

lesz. Tehát s1 sora helyére

s2 − 34 − 3

4 − 24 − 3

4

írandó be. Azonnal látszik, hogy x2 kerül be a bázisba, mert ennek 0 acélfüggvényben az együtthatója. Így a báziscsere után az

x0 s2 s1 x4

x0 26 0 1 1

x1 0 73

43 −2

x2 1 − 43

23 1

x3 1 3 − 53 0

x4 0 0 0 −1

s2 0 −1 0 0

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 114: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

114 4. Vágás típusú módszerek

táblához jutunk, mely az

x∗1 = 0, x∗

2 = 1, x∗3 = 1

optimális megoldást tartalmazza.4.1.2. tétel: Egy adott bázishoz tartozó Gomory-vágások véges Abel-csoportot alkotnak a komponensenkénti (ém mod 1) összeadásra nézvést.

Bizonyítás: Vegyünk két, nem feltétlenül különböző feltételt, amiből vágásgenerálható:

xq = dq0 −∑

j∈K

dqjxj ,

xr = dr0 −∑

j∈K

drjxj .

Legyen a dqj , illetve drj (j ∈ K ∪ {0}) együtthatók törtrésze fqj , illetve frj .Ekkor azonnal adódik a két feltétel összeadásából átrendezéssel a

xq + xr − ⌊dq0⌋ − ⌊dr0⌋ +∑

j∈K (⌊dqj⌋ + ⌊drj⌋) xj =

fq0 + fr0 − ∑

j∈K(fqj + frj)xj .(4.12)

Itt a fentiekhez hasonlóan a balodal csupa egész tagból áll. Ezek azonbanmég továbbiakkal egészíthetők ki a jobb oldalból. A rövidség kedvéért jelöljük(4.12) bal oldalát y-nal. Ekkor

y − ⌊fq0 + fr0⌋ +∑

j∈K⌊fqj + frj⌋xj =

(fq0 + fr0 − ⌊fq0 + fr0⌋) − ∑

j∈K (fqj + frj − ⌊fqj + frj⌋) xj .(4.13)

Így a (4.13) alapján előállított vágás együtthatói

fqj + frj − ⌊fqj + frj⌋ j ∈ K ∪ { 0 }

alakúak. Mivel 0 ≤ fqj , frj < 1, ezért itt a mod 1 összeadásról van szó.Tehát az állításban megfogalmazott művelet nem vezet ki a Gomory-vágásokköréből. A fenti gondolatmenet egyben azt is bizonyítja (ismételt alkalmazás-sal), hogy egy vágást lehet úgy szorozni egy pozitív egésszel, hogy a kompo-nenseket mod 1 vesszük. A struktúra végességét az biztosítja, hogy a (4.13)rendszerben – és következésképp valamennyi vágásban is – az együtthatók

g

D

alakúak, ahol D az aktuális bázis determinánsának abszolút értéke. A vágá-sokban az együtthatók nemnegatívak is, így t = | K ∪ {0} | esetén Dt felsőbecslés a vágások számára.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 115: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.1. A Gomory-módszer 115

A csoport nulleleme az azonosan 0 vágás lesz, amely bármely vágásból D-szeri összeadással előáll. Legyenek egy tetszőleges vágásban a g/D alakbanfelírt együtthatók számlálói a gj , j ∈ K∪{0} számok, és h = lnko(D, gj : j ∈K∪{0}). Így a vágás inverze az a vágás lesz, amelyiket belőle (D/h−1)-szeriösszeadással nyerünk. Q.E.D.

A vágásokkal kapcsolatban még az a kérdés merül fel, hogy mikor lehetegy vágást élesíteni, azaz egy második vágást megadni, mely legalább annyitlevág a poliéderből, mint az első.4.1.1. definíció: Egy adott bázishoz tatozó f1, f2 vágások közül f1 valódierős élesítése f2-nek, ha

∀ j ∈ K esetén f1j ≤ f2

j

ésf10 ≥ f2

0 ,

továbbá a | K | +1 tag közül legalább egy esetben szigorú egyenlőtlenség telje-sül.

Ilyen vágást általában nehéz találni, ezért ha van lehetőség a választásrakülönböző vágások közül, akkor valamilyen heurisztikus elvet alkalmazunk.Így például azt a vágást választjuk, ahol (a) f0, (b) f0/

j∈K fj maximális.Megadunk egy olyan módszert, mely szintén igazi élesítésekhez vezet a

szónak abban az értelmében, hogy az élesítés többet vág le, de – formálisanlegalábbis – kevesebbet követelünk meg, mint az előbb.4.1.2. definíció: Egy adott bázishoz tatozó f1, f2 vágások közül f1 valódiélesítése f2-nek, ha létezik olyan λ > 0 szám, hogy

f10 = λf2

0

és∀ j ∈ K esetén f1

j ≤ λf2j ,

továbbá legalább egy esetben szigorú egyenlőtlenség teljesül.4.1.3. lemma: Legyen f egy tetszőleges vágás. Ennek minden f1 valódierős élesítése egyben valódi élesítése is f -nek.

Bizonyítás: A definícióban megkívánt λ = f10 /f0 ≥ 1. Q.E.D.

Nyilvánvaló, hogy a

λf20 ≤

j∈K

λf20 xj

feltétel pontosan ugyanazt vágja le a poliéderből, mint az eredeti

f20 ≤

j∈K

f20 xj

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 116: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

116 4. Vágás típusú módszerek

vágás. Ha azonban a jobb oldalon sikerül néhány együtthatót csökkenteni,akkor a megfelelő hipersík nagyobb darabot fog lehasítani (figyelembe véve aváltozók nemnegativitását).

A valódi erős élesítéshez képest az a nyereség is megvan, hogy igen egy-szerűen megvizsgálható, hogy egy adott f vágás élesíthető-e. Legyen ugyanist az a pozitív egész, melyre

tf0 < 1 ≤ (t + 1)f0.

Ha vesszük az f vágás kf többszöröseit, ahol 1 ≤ k ≤ t, akkor ezekben akonstans tag kf0 lesz, azaz k növekedtével arányosan növekszik. Más tagokazonban csökkenhetnek, ha valamely k-ra kfj ≥ 1. Ezt az eljárást aztánmegismételhetjük a (t + 1)f vágásra, stb.

4.2. algoritmus

1. Begin

2. p := 1; f0 := f1 := f ;

3. while fp 6= 0 do

4. begin

5. t := max { k | fp0 + kf0 < 1 };

6. if fp ⊕ (t ⊗ f) valódi élesítése f0-nak then

7. f0 := f ⊕ (t ⊗ f);

8. fp+1 := ((t + 1) ⊗ f);

9. p := p + 1;

10. end;

11. end;

Itt ⊕ a csoportművelet, ⊗ a csoportban az egész számmal való szorzás.Az eljárás végén f0-ban van f -nek az önmaga által generált ciklikus részcso-portban található egyik legjobb élesítése. Tekintsük ugyanis példaként az

f :3

11≤ 5

11x1 +

2

11x2 (4.14)

vágást. Ekkor 6 ⊗ f , illetve 7 ⊗ f

7

11≤ 8

11x1 +

1

11x2, illetve

10

11≤ 2

11x1 +

3

11x2, (4.15)

és ezek nem valódi élesítései egymásnak.Egy másik módszer mélyebb vágások előállítására annak a kongruenciának

a vizsgálatán alapul, melyből a vágás származik. Legyenek az f vágásban

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 117: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.2. Egyéb Gomory-vágások 117

szereplő együtthatók fj = gj/D (j ∈ K ∪ {0} alakúak, ahol D az aktuálisbázis determinánsának abszolút értéke. Így gj (j ∈ K ∪ {0}) nemnegatívegész. Nyilván a

j∈K

gj

Dxj ≡ g0

D(mod 1)

kongruencia ekvivalens azzal, hogy∑

j∈K

gjxj ≡ g0 (modD). (4.16)

Ha a kongruencia egyenlőséggel nem elégíthető ki, akkor (4.16)-ban a baloldal legalább g0 + D, és így az

f0 + 1 ≤∑

j∈K

fjxj

egyenlőtlenség sem vág le egyetlen megengedett rácspontot. Nem feltétlenülkell csak ennyivel beérnünk.4.1.3. definíció: Az f vágás rangja az a legkisebb nemnegatív egész k szám,melyre a

j∈K

gjxj = g0 + kD

egyenletnek van nemnegatív egész megoldása.Könnyen látható, hogy f rangja legalább 1, ha

∀ j ∈ K esetén f0 < fj .

Eddig éppen ezek a vágások voltak azok, amelyek a poliéderből a legkeveseb-bet hagyták el. A fenti példában a (4.14)-beli vágás rangja 1, míg a (4.15)-benszereplőké 0. Az így adódó

14

11≤ 5

11x1 +

2

11x2

vágás a fenti értelemben valódi élesítése 6 ⊗ f -nek, de nem valódi élesítése7 ⊗ f -nek. A vágások rangját dinamikus programozási algoritmussal lehetpontosan meghatározni, erre ott térünk vissza.

4.2. Egyéb Gomory-vágásokMint minden, a szimplex módszeren alapuló eljárás, a Gomory-módszer isérzékeny a kerekítési hibákra. Ezért felmerült a kérdés, hogy tekintettel arra,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 118: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

118 4. Vágás típusú módszerek

hogy mind az együtthatók, mind a változók egészek, nem lehetne-e az eljárástúgy módosítani, hogy a dij számok mindvégig egészek maradjanak.

Tehát tegyük fel, hogy a táblában csak egészek vannak. Nyilvánvalóanmindaddig, amíg a pivotelem −1 lesz, ez a tulajdonság megmarad. Ha azeljárás során végig ez a helyzet, akkor úgy jutunk el a folytonos optimumhoz,hogy az – az első oszlop állandóan fenntartott egészértékűsége miatt – egybenaz egészértékű programozási feladat optimális megoldása is lesz. Különbenpedig egy olyan helyzet áll elő, amikor még kell báziscserét végeznünk, dea pivotelem abszolút értéke nagyobb, mint 1. Ilyenkor báziscsere helyettegy alkalmas vágást állítunk elő, és innen folytatjuk a lexikografikus duálszimplex módszert mindaddig, amíg az előbb említett két eset valamelyikebe nem következik.

Kiindulópontként a következő helyzetet vizsgáljuk: (i) a tábla duál meg-engedett, (ii) a táblában szereplő valamennyi együttható egész, (iii) kell mégbáziscserét végezni, azaz van olyan t index, amelyre dt0 < 0, (iv) valamennyiszámításba jöhető pivotelem különbözik -1-től. Tekintsük ekkor az

xt = dt0 −∑

j∈K

dtjxj

feltételt. Legyen α > 0 egy paraméter, értékét később pontosan megválaszt-juk, és szorozzuk meg vele az egyenletet. Legyen továbbá

fj = αdtj − ⌊αdtj⌋ j ∈ K és f0 = α − ⌊α⌋.

Ezeket az értékeket behelyettesítve kapjuk, hogy

(⌊α⌋ + f0)xt = αdt0 −∑

j∈K

(⌊αdtj⌋ + fj)xj .

Innen átrendezéssel

⌊α⌋xt +∑

j∈K

⌊αdtj⌋xt + f0xt +∑

j∈K

fjxj = αdt0

nyerhető. A bal oldal első két tagja biztosan egész, a második két tag biztosannemnegatív. Így a bal oldalt semmiképp sem növeljük, ha az utóbbiakatelhagyjuk, azaz fennáll, hogy

⌊α⌋xt +∑

j∈K

⌊αdtj⌋xt ≤ αdt0.

Kihasználva, hogy a bal oldalon egészek állnak, az

⌊α⌋xt +∑

j∈K

⌊αdtj⌋xt ≤ ⌊αdt0⌋ (4.17)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 119: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.2. Egyéb Gomory-vágások 119

vágást kapjuk. Emlékeztetünk arra, hogy α > 0, dt0 < 0, vagyis a jobboldal legfeljebb -1. Ebben a formában (4.17) azért nem vehető hozzá a táb-lához, mert az ⌊α⌋xt tag is szerepel benne. Ez azonban a bal oldal növelésenélkül elhagyható, és ekkor az

s = ⌊αdt0⌋ −∑

j∈K

⌊αdtj⌋xt (4.18)

nemnegatív változót kell bevezetnünk, amely rögtön be is kerül majd a bá-zisba. A pivotelem azok közül kerül ki, melyek negatívak. Vegyük észre, hogy⌊αdtj⌋ akkor és csak akkor negatív, ha dtj negatív. Így ha

1

α≥ max {−dtj | dtj < −1 }, (4.19)

akkor valamennyi szóba jöhető pivotelem -1 lesz. További számítások árán α-t valamivel gondosabban is meg lehet választani. Ugyanis minél nagyobb lesz,az első báziscsere annál nagyobb változást okoz a célfüggvényben. Viszont a(4.19) képlet a reciprokát választja meg elég nagynak, így magát α-t kicsinek.Ennek részleteibe nem megyünk bele.

Ha a feladat

max cT x

Ax ≤ b

x ∈ ZZn+

(4.20)

alakú, ahol c komponensei negatívak, akkor b ≥ 0 esetén az x = 0 azoptimális megoldás. Különben bevezetve az y kiegészítő változókat, a feladata

max cT x + 0T y

Ax + Iy = b

x ∈ ZZn+, y ∈ ZZm

+

(4.21)

alakot nyeri. Itt a triviális indulóbázis, amelyhez az y vektor tartozik, duálmegengedett lesz, ezért azonnal megindulhat a fent vázolt eljárás. Nem kelltehát előbb az LP-relaxáció optimumát megkeresni.

4.3. algoritmus

1. Begin

2. Egészekből álló duál megengedett szimplex tábla előállítása;

3. while (∃ t dt0 < 0) do

4. if (∀ j ∈ K : dtj ≥ 0) then STOP

5. else

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 120: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

120 4. Vágás típusú módszerek

6. if PIVOTELEM = −1 then báziscsere

7. else

8. begin

9. α := 1/max {−dtj | dtj < −1 };10. (4.18) csatolása a táblához;

11. end;

12. end;

Ugyanezzel a technikával állítható elő egy ún. primál vágás is, vagyis egyprimál megengedett bázishoz egy olyan vágás, amely nem rontja el a pri-mál megengedettséget, és a pivotelem 1 lesz. Ezzel az a természetesebb esetválik kezelhetővé, amikor a (4.20) feladatban mind c, mind b nemnegatív.Ekkor (4.21)-ben a triviális induló bázis megengedett lesz, és a most vázo-landó módszerrel ezt a tulajdonságot és a tábla egészértékűségét is fenn lehettartani.

Legyen a bázist elhagyó változó xt, melynek egyenlete

xt = dt0 −∑

j∈K

dtjxj .

Legyen a pivotelem indexe p, és tegyük fel, hogy dtp > 0. Osszuk el ezzel azegyenletet. A törtrészeket a szokásos módon bevezetve, átrendezéssel kapjuk,hogy

xt

dtp+

j∈K

fjxj − f0 =

dt0

dtp

−∑

j∈K

dtj

dtp

xj .

A bal oldal valamennyi tagja −f0 kivételével nemnegatív. Tekintettel arra,hogy −1 < f0, ezért mindkét oldalon csak úgy kaphatunk egész értéket, haaz legalább 0. Innen tehát az

s =

dt0

dtp

−∑

j∈K

dtj

dtp

xj (4.22)

vágás adódik abban a formában felírva, ahogy azt a szimplex táblához kellcsatolni. Ha ez megtörtént, akkor ez azt jelenti, hogy s benne van a bázisban.Igen ám, de

dt0

dtp

≥ 0,

így a vágás primál megengedett, hiszen ennyi most s értéke. Másfelől (4.22)-ben xp együtthatója ⌊dtp/dtp⌋ = 1. Ha xp kerül be a bázisba, akkor s fogja

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 121: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.2. Egyéb Gomory-vágások 121

elhagyni azt, mert

⌊ dt0

dtp⌋

1≤ dt0

dtp= min { di0

dip| i ∈ I, dip > 0 },

ahol I a bázisbeliek indexeit jelöli. Vagyis a pivotelem 1 lesz, és így a bázis-csere után a tábla továbbra is egész számokat fog tartalmazni.

Mivel most primál szimplex módszerről van szó, ezért a bázisba valóbekerülésnek a feltétele d0p < 0. Az első báziscserénél a célfüggvény vál-tozása

−d0p

dt0

dtp

tekintettel arra, hogy a transzformációk egyebek mellett azt célozzák, hogys sorában a konstans tag 0 legyen. Amíg ez az érték pozitív, addig ciklizálásnem állhat fenn. Ha azonban dt0 < dtp, akkor ez már elvben előfordulhat.A ciklizálást elég bonyolult szabályok betartásával lehet leküzdeni, ezekre ittnem térünk ki.

A módszert a (4.11) példán szemléltetjük.

max 7x1 + 15x2 + 11x3 + 0x4

6x1 + 13x2 + 10x3 + x4 = 23x ∈ ZZ4

+.

Az x4 változóból álló bázis primál megengedett lesz. A célfüggvényt ismétx0-lal jelölve az első tábla a következő. Itt és a továbbiakban a pivotelemetmindig bekereteztük, és rögtön feltüntettük a vele generált vágást.

x0 x1 x2 x3

x0 0 -7 -15 -11x1 0 -1 0 0x2 0 0 -1 0x3 0 0 0 -1x4 23 6 13 10s1 1 0 1 0

Mint látható, annak ellenére, hogy a bázis primál megengedett, és ezt akarjukvégig megőrizni, a duál szimplex módszer tábláját alkalmazzuk. Mivel akülönféle táblák mind az egyenletek ekvivalens transzformációk utáni alakjaittartalmazzák, ezért ez elvi nehézséget nem jelent. Azért van szükségünk errea nagyméretű táblára, mert az egészértékű programozási feladatok esetébennem igaz, hogy a nullától különböző változók száma legfeljebb annyi volna,mint a lineárisan független egyenletek száma.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 122: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

122 4. Vágás típusú módszerek

A további táblák így alakulnak:

x0 x1 s1 x3 x0 x1 s1 s2

x0 15 -7 15 -11 x0 26 -7 -7 11x1 0 -1 0 0 x1 0 -1 0 0x2 1 0 1 0 x2 1 0 1 0x3 0 0 0 -1 x3 1 0 -2 1x4 10 6 -13 10 x4 0 6 7 -10s2 1 0 -2 1 s3 0 1 1 -2

x0 s3 s1 s2 x0 s3 s1 s4

x0 26 -7 0 -3 x0 26 16 0 3x1 0 1 1 -2 x1 0 7 1 2x2 1 0 1 0 x2 1 0 1 0x3 1 0 -2 1 x3 1 -3 -2 -1x4 0 -6 1 2 x4 0 6 7 -10s4 0 3 0 1

Észrevehetjük, hogy az optimális megoldást már a harmadik táblában el-értük, ennek ellenére még további két vágást kellett generálni a bizonyításhoz.Ez is utal a ciklizálás veszélyére.

Nem szóltunk még arról, hogy lehet-e a Gomory-módszer valamely változa-tával vegyes egészértékű feladatokat megoldani, olyanokat tehát, ahol csak aváltozók egy részének kell egésznek lenni. Ebben az esetben természetesennem lehet szó arról, hogy a tábla elemei egészek legyenek.

Tegyük fel, hogy az optimális lineáris programozási bázisban szerepel az xt

változó, amelynek értéke a követelmény ellenére nem egész. Ekkor szokásosjelöléseinkkel

xt − ⌊dt0⌋ = f0 −∑

j∈K

dtjxj .

Most két lehetőség van xt értékére az optimális megoldásban: vagy xt ≤⌊dt0⌋, vagy xt ≥ ⌊dt0⌋ + 1. Az első esetben azt kapjuk, hogy

0 ≥ f0 −∑

j∈K

dtjxj ,

míg a másodikban

1 ≤ f0 −∑

j∈K

dtjxj .

Egyik egyenlőtlenséget sem rontjuk el, ha a szummából elhagyjuk azokat atagokat, melyek az előjelüknél fogva nehezítik a feltétel kielégítését. Legyentehát

I = { j ∈ K | dtj > 0 }, J = { j ∈ K | dtj < 0 }.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 123: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.2. Egyéb Gomory-vágások 123

Így tehát annak is teljesülnie kell, hogy

− f0 ≥ −∑

j∈I

dtjxj (4.23)

és

f0 − 1 ≥∑

j∈J

dtjxj .

Az utóbbit f0/(1 − f0)-lal megszorozva a

− f0 ≥ −∑

j∈J

f0dtj

1 − f0xj (4.24)

alakot veszi fel. Mivel sem (4.23), sem (4.24) jobb oldala nem nagyobb anegatív −f0 számnál, így természetesen ez az összegükre is teljesül. Ezzel a

− f0 ≥∑

j∈J

f0dtj

1 − f0xj −

j∈I

dtjxj (4.25)

ún. vegyes vágást kaptuk. (Itt azért nem lehetett egyszerűen összegezni a(4.23) és (4.24) egyenlőtlenségeket, mert azoknak nem egyszerre kell fennáll-niuk, hanem csak legalább az egyiknek, azaz konjunkció helyett csak disz-junkciót követelünk meg.)

Ennek felhasználásával a módszer a tiszta egészértékű esethez hasonlóandolgozik, ezért az eljárást tovább nem részletezzük.

Érdemes azonban megjegyezni, hogy maga a (4.25) vágás élesíthető. Ve-zessük be az xk változó helyett az x′

k változót, melyet az

x′k = xk +

j∈E

µjxj (4.26)

egyenlet határoz meg, ahol E azon bázison kívüli változók halmaza, melyek-nek egészértékűeknek kell lenniük, a µj (j ∈ E) számok pedig később megvá-lasztandó rögzített egészek. Így x′

k, akárcsak xk, maga is egész. A bázisonkívüliekkel kifejezve kapjuk, hogy

x′k = dk0 −

j∈E

(dkj − µj)xj −∑

i∈K\E

dkjxj . (4.27)

Értéke pillanatnyilag dk0, de az optimális megoldásban vagy legfeljebb ⌊dk0⌋,vagy legalább ⌊dk0⌋ + 1. Tehát alkalmazható a (4.25) vágás. Az I és J

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 124: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

124 4. Vágás típusú módszerek

halmazt hasonló módon definiáljuk, mint előbb, de a (4.27) egyenlet együtt-hatóinak megfelelően, azaz

I = { j ∈ K \ E | dkj > 0 } ∪ { j ∈ E | dkj − µj > 0 },

J = { j ∈ K \ E | dkj < 0 } ∪ { j ∈ E | dkj − µj < 0 }.Ekkor a (4.25) vágás megfelelő alakja

− f0 ≥ −∑

I∩E

(dkj − µj)xj +∑

J∩E

f0

1 − f0(dkj − µj)xj

−∑

I\E

dkjxj +∑

I\E

f0

1 − f0dkjxj .

Válasszuk meg µj értékét úgy, hogy xj együtthatója minimális legyen. Ez aválasztás egyben azt is befolyásolja, hogy j az I vagy a J halmazhoz tarto-zik-e. Az előbbi esetben µj = ⌊dkj⌋ választás mellett xj együtthatójául−fj-t kapjuk. Az utóbbiban pedig µj = ⌊dkj⌋ + 1 esetén

f0

1 − f0(fj − 1)

a keletkező érték. A kettő közül kell a minimális abszolútértékűt választani,ami akkor és csak akkor fj , ha fj ≤ f0. Ennek alapján a

J\E

f0dkj

1 − f0xj −

I\E

dkjxj −∑

E: fj≤f0

fjxj −∑

E: fj>f0

f0(1 − fj)

1 − f0xj ≤ f0 (4.28)

feltételt nyerjük.

4.3. Általános vágásokEbben a szakaszban az a célunk, hogy jellemezzük az

M = {x ∈ ZZn+ | Ax = b } (4.29)

halmazhoz tartozó vágásokat, ahol A (m×n)-es mátrix, b m-dimenziós vek-tor, és valamennyi együttható egész. Fel fogjuk tenni továbbá, hogy M nemüres. Vágás alatt egész pontosan a következőt értjük:4.3.1. definíció: Az M-hez tartozó vágás minden olyan

cT x ≥ d

egyenlőtlenség, melyet M összes eleme kielégít.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 125: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.3. Általános vágások 125

A 4.1. szakaszhoz hasonlóan itt is vizsgáljuk a vágások élesítéseit.4.3.2. definíció: A cT

1 x ≥ d1 vágás élesítése a cT2 x ≥ d2 vágásnak, ha

c1 ≤ c2 és d1 ≥ d2.Ez a meghatározás két dologban különbözik a 4.1. szakasz definícióitól.

Egyrészt minden vágás önmaga élesítése, ezért nem szerepel benne a „va-lódi” szó. Másrészt nem különböztetjük meg az erős élesítést az élesítéstől.Itt ugyanis nem egy véges struktúrában gondolkodunk, mint ott a Gomory-vágások csoportjában, így itt a vágást végig lehet szorozni egy pozitív kons-tanssal, és ezáltal a két fogalom közötti különbség eltűnik.

Szükségünk lesz még egy fontos fogalomra.4.3.3. definíció: Legyen G egy tetszőleges kommutatív félcsoport. Aztmondjuk, hogy f : G → IR szubadditív függvény, ha bármely g1, g2 ∈ G páresetén

f(g1 + g2) ≤ f(g1) + f(g2).

Az alábbi tétel bizonyításához felhasználjuk a 3.2. szakasz konstrukcióját.Emlékeztetünk arra, hogy F mindazoknak a b jobb oldalaknak a félcsoportjátjelentette, melyekre az M halmaz nem üres. A félcsoportban a művelet aszokásos vektorösszeadás volt, és 0 ∈ ZZm a félcsoport nulleleme. Az A

mátrix oszlopait a1, ...,an jelöli.4.3.1. tétel: Ha A egész mátrix, és M 6= ∅, akkor igazak a következőállítások:(i) ha az f függvény szubadditív F-en, és f(0) = 0, akkor a

n∑

j=1

f(aj)xj ≥ f(b) (4.30)

egyenlőtlenség egy M-hez tartozó vágás,(ii) ha

n∑

j=1

cjxj ≥ d (4.31)

egy tetszőleges M-hez tartozó vágás, akkor van olyan szubadditív f függvényF-en, hogy f(0) = 0, és a vele felírt (4.30) vágás (4.31) élesítése.

Bizonyítás: Legyen f egy tetszőleges szubadditív függvény, amelyre f(0) =0, továbbá legyen x az M halmaz egy tetszőleges eleme. Jelölje I az x vektorpozitív komponenseinek indexhalmazát. Ekkor a szubadditivitást felhasz-nálva

f(b) = f(0 + Ax) = f(Ax) = f

j∈I

ajxj

≤∑

j∈I

f(ajxj) ≤∑

j∈I

f(aj)xj ,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 126: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

126 4. Vágás típusú módszerek

tehát (4.30) teljesül.Tekintsük most a (4.31) vágást. Legyen v ∈ F és f : F → IR

f(v) = min{ cT x | x ∈ ZZn+; Ax = v }.

Megmutatjuk, hogy f definíciója értelmes. Nyilvánvaló, hogy

d ≤ min{ cT x | x ∈ M} = f(b), (4.32)

mert különben (4.31) levágná M-nek legalább egy elemét, nevezetesen azf(b)-t meghatározó optimális x vektort. Ekkor a 3.2.7. tételből adódik, hogya 3.2. szakasz G gráfjában nincs negatív kör. Innen a 3.2.3. következményalapján f(0) = 0. A 3.2.5. következmény szerint minden v ∈ F esetén f(v)véges lesz. Az

f(aj) ≤ cj (4.33)

egyenlőtlenségek triviálisan adódnak f definíciójából. (4.32) és (4.33) együttazt jelenti, hogy (4.31)-nek (4.30) az élesítése. Az maradt hátra, hogy fszubadditivitását megmutassuk. Legyen u, v ∈ F két tetszőleges elem, y ész az f(u), illetve f(v) értékét meghatározó vektorok, azaz

f(u) = min{ cT x | x ∈ ZZn+, Ax = u } = cT y,

f(v) = min{ cT x | x ∈ ZZn+, Ax = v } = cT z.

Ekkoru + v = Ay + Az = A(y + z),

így

f(u+v) = min{ cT x | x ∈ ZZn+; Ax = u+v } ≤ cT y + cT z = f(u)+ f(v),

vagyis f valóban szubadditív. Q.E.D.

Az állításban A egészértékűségének az volt a szerepe, hogy F végesengenerált, nevezetesen A oszlopai által (v.ö. 2.1. szakasz).

Illusztrálásul megmutatjuk, hogy a Gomory-vágások is egy alkalmas szub-additív függvény alapján készültek. Ehhez szükségünk lesz a következő állí-tásokra.4.3.2. lemma: Legyen f : IR → IR szubadditív függvény, és h ∈ IRm

tetszőleges, rögzített vektor. Ekkor f(hT u) szubadditív IRm-en.

Bizonyítás: Legyen u, v ∈ IRm. Ekkor

f(hT (u + v)) = f(hT u + hT v) ≤ f(hT u) + f(hT v). Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 127: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.4. Egy konvex vágás 127

4.3.3. lemma: Legyen r > 0 rögzített valós szám. Az f : IR → IRfüggvényt definiálja az

f(x) = x −⌊x

r

r

egyenlőség. Ekkor f szubadditív IR-en.

Bizonyítás: Tetszőleges két valós x, y számra⌊

x + y

r

≥⌊x

r

+⌊y

r

.

Innen

x + y −⌊

x + y

r

r ≤ x −⌊x

r

r + y −⌊x

r

r. Q.E.D.

Vegyük észre, hogy r = 1 esetén a szokásos törtfüggvényt kapjuk.Emlékeztetünk arra, hogy a Gomory-vágásban csak a bázison kívüli elemek

szerepelhettek pozitív együtthatóval. A sor, amiből a feltételt előállítottuk,a szimplex tábla egy sora. Ez úgy keletkezik, hogy - feltételezve, hogy A

rangja sorainak számával egyezik meg - a bázis inverzének megfelelő sorávalszorozzuk meg az A mátrixot. Jelölje βT

ia B−1 mátrix i-edik sorát. Ekkor

βT

iaj =

1 ha i = j0 ha i 6= j és j 6∈ Kdij különben.

Legyen fj = {βT aj} (j = 0, ..., n). Azonnal látható, hogy valóban ezek aszámok adták a Gomory-vágás együtthatóit. (Itt {.} a törtfüggvényt jelöli.)A 4.3.3. lemma szerint {.} szubadditív, ezért a 4.3.2. lemma szerint {βT

iu}

szubadditív az egész IRm téren.

4.4. Egy konvex vágásEbben a szakaszban az eddigiektől eltérő és bizonyos értelemben általánosabbvágást ismertetünk.

Annyit itt is felteszünk, hogy a megengedett megoldások eleget tesznek az

x = d0 −∑

j∈K

djxj x ∈ IRn+ (4.34)

alakban felírt lineáris egyenletrendszernek, mely a szokásos módon egy adottbázishoz tartozik. Ez a forma azonban magára az egyenletrendszerre semmi-féle további megszorítást nem jelent. Ezenkívül még előírhatunk bármilyen

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 128: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

128 4. Vágás típusú módszerek

más követelményt is, amit a megengedett megoldásoknak, melyeknek halma-zát M jelöli, ki kell elégíteniük. Tehát

M ⊂ {x | x kilégíti (4.34)-et }

tetszőleges halmaz lehet. Olyan hipersíkot szeretnénk találni, mely levágjad0-t, függetlenül attól, hogy d0 eleme-e M-nek vagy sem, de amely nemvágja le M egyetlen további pontját sem. Az eddig látott módszerek ishasonlóan dolgoztak. Ekkor M-ben rácspontok voltak, d0 pedig a pillanatnyipoliéder azon csúcsát jelentette, amely a lineáris programozási optimum volt.Azért kellett d0 6∈ M esetén levágni, hogy a poliédert M konvex burkáhozközelítsük.4.4.1. tétel: Legyen T ⊂ IRn konvex halmaz. Tegyük fel, hogy d0 ∈T , int(T ) 6= ∅, és (int(T ) \ {d0 }) ∩ M = ∅. Legyenek továbbá wj > 0(j ∈ K) olyan számok, hogy

∀ j ∈ K : d0 − djwj ∈ T .

Ekkor minden x ∈ M \ {d0 } kielégíti a

j∈K

1

wjxj ≥ 1 (4.35)

egyenlőtlenséget.

Bizonyítás: Először tegyük fel, hogy d0 ∈ int(T ). Tekintsük azokat a pon-tokat, amelyek d0 és d0 − djwj (j ∈ K) konvex lineáris kombinációjakéntállnak elő. Legyenek tehát r0, rj (j ∈ K) olyan nemnegatív számok, melyek-nek összege 1. Ekkor a velük előállított x pontra igaz, hogy

x = r0d0 +∑

j∈K

rj(d0 − djwj) = d0 −∑

j∈K

dj(rjwj). (4.36)

Tehát x az a megoldása (4.34)-nek, ahol xj = rjwj minden j ∈ K esetén.A d0-ra tett feltevésből adódik, hogy

j∈K

rj < 1 (4.37)

esetén x ∈ int(T ), és így x 6∈ M \ {d0 }. Mivel

rj =xj

wj,

ezért ez azt jelenti, hogy∑

j∈K

xj

wj< 1. (4.38)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 129: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.4. Egy konvex vágás 129

Megfordítva, bárhogy adjunk is meg olyan nemnegatív xj számokat, ame-lyekre ez az egyenlőtlenség teljesül, a belőlük számított rj ≥ 0 (j ∈ K)számokra (4.37) igaz lesz, így az ezekből számított (4.36) konvex lineáriskombinációkból származó x vektor sem feküdhet M \ {d0 }-ban. TehátM \ {d0 } minden pontjának (4.38)-cal ellentétes irányú egyenlőtlenségetkell kielégítenie.

Hátra van még annak az esetnek a vizsgálata, amikor d0 a T halmazhatárán fekszik. Legyen ekkor

{yi }∞i=1 ⊂ int(T )

egy d0-hoz tartó pontsorozat, és

zij = min{wj , sup{zj > 0 | yi − djzj ∈ T } − ǫi },

ahol ǫi pozitív, 0-hoz tartó számsorozat. Ekkor szükségképpen teljesül, hogy

∀ j ∈ K esetén limi→∞

zij = wj ,

mert különben limsup zij < wj volna, és így az

[yi − djzij , d0 − djwj ]

szakaszok egy darabja nem feküdne T -ben, ami ellentmond T konvexitásá-nak. Minden i-re felírhatjuk a

j∈K

xj

zij≥ 1

egyenlőtlenséget, melynek minden x ∈ M \ {d0 } esetén teljesülnie kell.Innen határátmenettel kapjuk (4.35)-öt. Q.E.D.

Megjegyezzük, hogy ha minden wj > 0 esetén d0 − djwj ∈ T , akkor abizonyítás utolsó mozzanatához hasonlóan adódik, hogy xj együtthatója avágásban 0 lesz.

Minél bővebbre választjuk a T halmazt, annál nagyobbak lehetnek a wj

számok, és így annál erősebb lehet a (4.35) vágás. Egészértékű programo-zásban a következő három természetes választás adódik T -re. Tegyük fel,hogy d0 egyetlen komponense se egész. Jelölje ⌊d0⌋ a ⌊dj0⌋ számokból állóvektort, e pedig azt, amelyiknek minden komponense 1. Ekkor a lehetségesválasztások: (a) a d0 pontot körülvevő legszűkebb rácskocka, azaz

E =

{

x ∈ IRn | max

{

| xj − ⌊dj0⌋ −1

2|: j = 1, ..., n

}

≤ 1

2

}

,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 130: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

130 4. Vágás típusú módszerek

(b) az eköré a kocka köré írt gömb, azaz

S =

x ∈ IRn |n

j=1

(

xj − ⌊dj0⌋ −1

2

)2

≤ n

4

,

és (c) az a kocka, amelynek lapjait S belülről érinti E csúcsaiban, vagyis

D =

x ∈ IRn |n

j=1

| xj − ⌊dj0⌋ −1

2| ≤ n

2

.

Ha d0 komponense között egész is van, akkor több lehetőség is van E , és ígyaz őt tartalmazó S és D megválasztására. Ezek közül további megfontolásokszerint választhatunk, de figyelemmel kell lenni arra, hogy ez a számításiköltség növekedésével jár együtt.

Befejezésül azt mutatjuk meg, hogyan lehet egy poliéderből annak egynem degenerált csúcsát levágni úgy, hogy a metszősík a szomszédos csúcso-kon haladjon át. Erre akkor lehet szükség, ha egy nemlineáris, pl. konkávcélfüggvényt minimalizálunk egy poliéderen, és tudjuk, hogy az optimum apoliéder valamely csúcsában éretik el. A vágással ilyenkor az optimum esélyesprimál megengedett megoldásokat tudjuk kezelni.

¡¡

¡¡¡

@@

@@@

¡¡

¡¡¡

@@

@@@'

&

$

%dddd

dddd

dddd

dddd

qdj ES

D

4.2. ábra: A T halmaz néhány megválasztása konvex vágás esetén.

Legyen adva a poliéder ismét a

P = {x ∈ IRn+ | x = d0 −

j∈K

djxj }

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 131: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

4.5. Megjegyzések és irodalom 131

alakban. Ekkor

wj =

{

min{di0

dij| dij > 0 } ∃ i : dij > 0

∞ ∀ i : dij ≤ 0.

A lineáris programozás elméletéből jól ismert, hogy wj pontosan az az érték,ameddig a pillanatnyilag bázison kívüli xj változót meg lehet növelni a pri-mál megengedettség elrontása nélkül, vagyis egyszerűbben szólva egy olyanbáziscsere esetén, ahol xj lépne be a bázisba, xj értéke wj lenne, ha wj vé-ges, különben pedig xj tetszőleges nagyra növelhető. A bázis nem degenerált,azaz minden i-re di0 > 0, így wj > 0 is teljesül minden j-re. Ezért a

j∈K

xj

wj≥ 1

vágás értelmezve van. A báziscserére vonatkozó előbbi megfontolások aztmutatják, hogy ez valóban a d0-lal szomszédos csúcsokon halad át.

4.5. Megjegyzések és irodalomMár a Gomory-módszer előtt is jelentek meg olyan dolgozatok, amelyeket ma,utólag visszatekintve, az egészértékű programozáshoz sorolunk. Azonban aGomory-módszer volt az első olyan algoritmus, amely egy nagyobb feladat-osztály esetén garantálta az optimum elérését [44]. Ugyancsak Gomorytólszármazik a vegyes egészértékű feladatokra alkalmazható (4.25) vágás [45].Ezzel a módszer teljessé vált abban az értelemben, hogy bármilyen lineáris,egészértékű programozási feladatot meg lehet oldani vele, hiszen a feltételekközött a legnehezebb (1.3) alakú egészértékűségi követelmény szerepel. Eb-ben az elméleti értelemben a módszer mindmáig a legáltalánosabb is, merta későbbi fejezetekben ismertetendő eljárásoknál mindig valamilyen erősebbmegszorítást kell feltenni. A módszerhez szükséges lexikografikus szimplexmódszert tárgyalja például [72].

Hamar fény derült azonban arra, hogy a kerekítési hibákra érzékeny a mód-szer. Emlékeztetünk ezzel kapcsolatban a 2.3. szakasz eredményeire, amelyekpontosan ennek a jelenségnek az elméleti hátterét világítják meg. Emiatt akellemetlen jelenség miatt dolgozta ki még ugyancsak igen korán maga Go-mory a (4.18) tiszta egész vágást [46]. Ez a módszer hatékonyságát csakkorlátozottan javította, mert itt sokkal többször kell vágást generálni. Egytovábbi hátrány volt, hogy ha az eljárás bármilyen oknál fogva megszakadt,akkor nem maradt úgyszólván semmilyen használható eredmény a kezünk-ben, mert az első megengedett megoldás volt egyben az optimális is. Ennekelkerülésére dolgozták ki a (4.22) primál vágást [10].

Azonban csak később sikerült úgy módosítani az algoritmust, hogy az ga-rantáltan véges lépésben befejeződjék [97].

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 132: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

132 4. Vágás típusú módszerek

A konvex vágás Glover nevéhez fűződik [42]. Ebből a legkülönbözőbbesetekben vezethetők le vágások, többek között a 4.4. szakasz jelölései melletta T = E esetén a (4.25) is.

A vágás rangját a [71] dolgozat vezette be. A valódi erős élesítés fogalmá-ból kiindulva többen javasoltak heurisztikus módszereket annak eldöntésére,hogy egy adott táblából előállítható vágások közül melyik a legerősebb. A4.2. algoritmus, amely mélyen vágó valódi élesítést ad, a [91] dolgozatbólvaló.

A vágás típusú módszerekről jó összefoglalást ad a mindössze 41 éves ko-rában elhunyt Jeroslow két dolgozata [52] és [54].

Általában elmondható, hogy vágás típusú módszerek közvetlen alkalmazá-sát lehetőség szerint kerülni kell. Jó számítási tapasztalatokról akkor sikerültbeszámolni, ha az eredeti feladat mátrixának elemei 0 vagy 1 értékűek vol-tak. Ez a fentebb mondottak fényében nem tűnik meglepőnek. Nehéz esetekazonban itt is felléphetnek. Mint a 2.3. szakasz végén rámutattunk, bizo-nyos összefüggés van a bázisok determinánsainak nagysága és az extremálispontok száma között. Erfurth egy publikálatlan eredménye szerint egy csaknullákból és egyesekből álló négyzetes mátrix determinánsa exponenciálisannagy lehet. Ezt a nagyságrendet sikerült is elérni a [7] dolgozatban.

Másfelől azonban sikeresen alkalmaztak vágásokat egyéb – pl. korlátozásiés szétválasztási – módszerek felgyorsítására. Ilyen esetekben a vágás erős-ségének nagyobb jelentősége van. Különösen sikeresen működnek a vágásokegy speciális ilyen keretben, melyre a 7. fejezetben térünk vissza.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 133: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5. fejezet

Dinamikus programozás

Ha az optimalizálás matematikai elméletében egy terület nevének másodiktagja „programozás”, akkor valamilyen meghatározott tulajdonságú felada-tokkal foglalkozó részdiszciplináról van szó. Kivétel ezen szabály alól a di-namikus programozás, mely módszerek egy családját fogja össze. Az 5.1.szakaszban az összes ilyen eljárás alapját képező Belmann-elvet ismertetjük.Mivel ennek minden egészértékű programozási alkalmazása visszavezethetőirányított gráfokban legrövidebb út keresésére, ezért az erre szolgáló algorit-musokat tárgyaljuk az 5.2. szakaszban, és csak ezt követőleg térünk rá azegészértékű programozási feladatokra, elsősorban a hátizsák feladatra.

5.1. A Bellman-elvEl akarunk menni a legrövidebb úton A városból D városba. Tegyük fel, hogyezen legrövidebb úton A után először B, majd C következik, és csak végülD. Így az út három szakaszból áll, nevezetesen az A-tól B-ig tartó S1, a B-től C-ig tartó S2 és a C-től D-ig tartó S3 szakaszból. Bizonyosak lehetünkabban, hogy a B városból a C városba vezető legrövidebb út az S2 szakasz.Ha volna ugyanis olyan B-ből C-be vezető P út, ami rövidebb volna S2-nél,akkor az (S1, P, S3) út is A-ból D-be vezetne, de a hossza rövidebb lenne,mint az (S1, S2, S3) úté, így az utóbbi nem lehetne a legrövidebb. Hasonlóminimalitás teljesül természetesen az S1 és S3 szakaszra is.

Ezt a szemléletes tulajdonságot fogalmazza meg általánosabban a Bellman-elv.

Tegyük fel, hogy egy S rendszert irányítunk n perióduson keresztül. Sállapotát bizonyos paraméterek írják le, melyek pillanatnyi értékét az i pe-riódus előtt pi jelöli. Ennek ismeretében hozzuk meg a beavatkozásra vo-natkozó döntést, melyet az előbbiekkel nem feltétlenül megegyező paramé-terekkel írunk le, és amelyek értékét az i periódusban di jelöli. Ekkor kétdolog történik. Egyrészt pi és di egyértelmű függvényeként létrejön a rend-szer új pi+1 = pi+1(pi, di) állapota, és ugyancsak pi és di függvényében arendszer ri = ri(pi, di) mennyiségű terméket állít elő (használ fel), ahol ri

valós szám. A rendszert tehát a p paraméterek és a d döntések együtte-

133

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 134: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

134 5. Dinamikus programozás

sei, a p1 kezdeti állapot, a pi(., .) (i = 2, ..., n + 1) állapotfüggvények és azri(., .) (i = 2, ..., n + 1) termelési függvények írják le egyértelműen. Célunkolyan döntési sorozat megtalálása, amely mellett a

n∑

i=1

ri(pi, di) (5.1)

összeg maximális (minimális) lesz.Legyen 1 ≤ k ≤ n egy tetszőleges, rögzített egész. Tekintsük egy olyan T

rendszer irányításának problémáját n − k perióduson át, amelynek állapot-és termelési függvényeit S állapot- és termelési függvényeiből a

pj(., .) = pj+k(., .) j = 2, ..., n − k + 1

rj(., .) = rj+k(., .) j = 1, ..., n − k

egyenletekkel leírt módon nyerjük. Legyen a p1 kezdeti állapot mellett d1, ..., dn

az az optimális döntési sorozat, amely az (5.1) célfüggvényt maximalizálja(minimalizálja). A Bellman-elv azt a nyilvánvaló tényt fogalmazza meg, hogyT irányításának problémájában a

p1 = pk+1

kezdeti állapot esetén a

dj = dj+k j = 1, ..., n − k

döntési sorozat optimális.Visszatérve a fenti példához, amikor C városban döntenünk kell arról, hogy

melyik úton haladjunk tovább, akkor elfeledkezhetünk arról, hogy milyenmódon kerültünk ide, csak a pillanatnyi állapotunk – vagyis az, hogy C-benvagyunk – számít, és az innen továbbvezető legrövidebb utat kell kiválaszta-nunk.

Nézzünk egy másik példát, a hátizsák feladatot, amely még előfordul ebbena fejezetben. Itt tehát a cj értékű, aj súlyú (j = 1, ..., n) tárgyak közül úgyakarunk néhányat kiválasztani, hogy az értékük maximális legyen, miközbenösszsúlyuk egy b korlátot ne haladjon meg. Ezt is felfoghatjuk úgy, mint egyn periódusú irányítási problémát, melyben a periódusok az egyes tárgyakelviteléről vagy otthonhagyásáról szóló döntésnek felelnek meg. A rendszerállapota a még rendelkezésre álló szabad kapacitás, azaz

p1 = b,

pj+1 =

{

pj − aj ha a j tárgyat elvisszükpj különben,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 135: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.2. Gráfban legrövidebb utat kereső algoritmusok 135

és a termelési függvény

rj =

{

cj ha a j tárgyat elvisszük0 különben.

Tehát amikor a tárgyról döntünk, akkor elfeledkezhetünk arról, hogy konk-rétan mi van a hátizsákban, csak az számít, hogy az eddig betett tárgyakmekkora szabad kapacitást hagytak, és még mely tárgyakról kell döntenünk.

5.2. Gráfban legrövidebb utat keresőalgoritmusok

Adott egy G = (V, E , C) véges irányított gráf, ahol V a csúcsok, E az élekhalmaza, C pedig az egyes élek hosszát leíró E → IR függvény, melynekértékét minden (u, v) ∈ E esetében cuv jelöli. Legyen a, b, ∈ V a gráf kétkitüntetett csúcsa. A feladat: meghatározni G-ben az a-ból b-be vezető utakközül egy minimális hosszúságút. Hangsúlyozzuk, hogy út alatt itt is a 3.2.2.definícióban megadott fogalmat értjük.

Az alábbiakban csak egy keretet és néhány belőle származó algoritmustismertetünk, amelyeket az egészértékű programozási feladatok megoldásárafel is fogunk használni. Természetszerűleg itt nincs mód a legrövidebb utatkereső algoritmusok összes változatának feldolgozására. Az út, illetve élhosszára szinonimaként még a költség szót is alkalmazni fogjuk. Mivel abszt-rakt fogalmakkal dolgozunk, ezért nincs értelme arról beszélni, hogy ezt aköltséget miben (idő, geometriai hossz, viteldíj stb.) mérjük. Ez az egyedialkalmazásokban dől el.5.2.1. tétel: Tegyük fel, hogy a G gráfban nincs negatív és nulla hosszúságúkör. Legyen G egy rögzített csúcsa a. Rendeljünk G minden u csúcsához egyc(u) értéket úgy, hogy c(u) pontosan akkor véges, ha G-ben vezet irányítottút a-ból u-ba, különben pedig c(u) = +∞. Ekkor a következő két állításekvivalens:(i) minden u-ra, amelyre c(u) véges, c(u) megegyezik az a-ból u-ba vezetőlegrövidebb út hosszával,(ii) teljesülnek az alábbi egyenletek

c(a) = 0, (5.2)

∀u ∈ V \ { a } : c(u) = min{c(v) + cvu | ∀(v, u) ∈ E }. (5.3)

Bizonyítás: Először megmutatjuk, hogy a legrövidebb utak költségeinek kikell elégíteniük az (5.2) és (5.3) feltételeket. Mivel negatív és 0 hosszú kör

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 136: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

136 5. Dinamikus programozás

nincs a gráfban, az a-ba vezető utak közül biztosan a 0 élből álló a legrö-videbb, azaz (5.2) teljesül. (5.3) azonnal adódik a Bellman-elvből. Ugyanisbárhonnan is megyünk egy legrövidebb úton u-ba, oda is egy legrövidebbúton kellett mennünk.

Vizsgáljuk meg a fordított irányt. Tekintsük G-nek azt a H részgráfját,amelyet azok az (u, v) élek határoznak meg, amelyekre c(u), c(v) < +∞ ésc(v) = c(u) + cuv. Megjegyezzük, hogy ezen definíció szerint H-nak mindena-n kívüli csúcsába vezet legalább egy él. Legyen w és v két tetszőleges csúcs,úgy c(w), c(v) < +∞ (tehát mindkettő csúcsa H-nak), és vezet egy

P = (u0 = w, u1), (u1, u2), ..., (uk−1, uk = v)

út w-ből v-be H-ban. Ekkor

c(uj) = c(uj−1) + cuj−1ujj = 1, ..., k.

Ezeket az egyenleteket egymásba helyettesítve kapjuk, hogy

c(v) = c(w) +

k∑

j=1

cuj−1uj. (5.4)

A jobb oldal második tagja nem más, mint P hossza G-ben. Bebizonyítjuk,hogy H-ban minden csúcshoz vezet út a-ból. Indirekt módon tegyük fel, hogyv-be nem lehet eljutni a-ból. Ekkor létezik H-ban egy (u, v) él, mégpedig ott,ahol a min{c(u) + cuv | (u, v) ∈ E} minimum felvétetik. Következésképp u-ba sem vezet út a-ból, mert különben rajta keresztül elérnénk v-t. Ekkorazonban kell lennie egy (t, u) élnek is H-ban, és t-be ugyancsak nem vezetirányított út a-ból. Ezt a felsorolást bármeddig lehet folytatni. Mivel H-nakcsak véges sok csúcsa van, így szükségképpen kell körnek lennie. Ekkor azon-ban (5.4)-et felírva a kör bármely pontjára az adódik, hogy a körben szereplőélek hosszainak összege 0, ami feltevésünk szerint lehetetlen. Alkalmazzuk(5.4)-et w = a mellett egy tetszőleges H-beli v csúcsra. Azt kapjuk, hogyc(v) valamely a-ból v-be menő irányított út hossza, tehát legalább annyi,mint ezek közül a minimálisé.

Tegyük fel, hogy most már bebizonyítottuk, hogy c(v) egyenlő az a-bólv-be menő minimális út hosszával azon csúcsok esetén, amelyekbe vezető útk élből áll. Megjegyezzük, hogy k = 0 esetén csak a jön szóba, és rá (5.2)szerint azonnal adódik az állítás. Legyen u olyan csúcs, amelybe vezető leg-rövidebb út k + 1 csúcsból áll, és legyen v ezen útban az őt megelőző csúcs.Fentebb láttuk, hogy ekkor c(u) ≥ c(v) + cvu, mert most az indukciós felte-vés szerint c(v) megegyezik a v-be vezető legrövidebb út hosszával. Másrészt(5.3)-ból azonnal adódik az ellenkező irányú egyenlőtlenség is. Így a megkí-vánt tulajdonság u-ra is igaz lesz. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 137: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.2. Gráfban legrövidebb utat kereső algoritmusok 137

A bizonyítás melléktermékeként kaptuk a következó állítást is:5.2.2. lemma: Ha a G véges irányított gráfban nincs negatív és nullahosszúságú kör, akkor egy tetszőleges a csúcsból induló legrövidebb utak a Golyan H részgráfját alkotják, amely irányított kört nem tartalmaz, és H min-den csúcsába vezet irányított út a-ból. Továbbá, ha H minden csúcsába egyegyértelműen meghatározott legrövidebb út vezet G-ben a-ból, akkor H az élekirányításától eltekintve fa.

Bizonyítás: Az állításban szereplő részgráf megegyezik az 5.2.1. tétel bizonyí-tásában említett H részgráffal. Q.E.D.

Az 5.2.1. tételben kizártuk a negatív köröket, hiszen ha ilyen volna, akkornem lehetne legrövidebb útról beszélni. Ezen felül azonban a 0 hosszú köröklétezését sem engedtük meg. Vajon ezek valóban problémát okoznak?

a/0/0 b/5/ − 1 c/8/2

d/10/4

-d -d AA

AA

AA

AAK

d

¢¢

¢¢

¢¢¢®5 3

2-5

5.1. ábra: Példa arra, amikor 0 hosszú kör jelenléte esetén a Bellman-egyenletek teljesülnek, de a potenciálértékek nem azonosak a legrövidebb utakhosszával. A csúcs neve után először az a csúcsból hozzávezető legrövidebb úthossza áll, majd egy másik érték. Az utóbbiak szintén kielégítik a Bellman-

egyenleteket.

Az 5.1. ábrán a { b, c, d } csúcsok éppen 0 hosszú kört alkotnak. Az első„/” jel mögött az adott csúcsba vezető legrövidebb út hossza áll, a másodikmögött pedig egy másik értékrendszer, ami szintén kielégíti (5.2)-őt és (5.3)-at. Ezt úgy kaptuk, hogy a körben szereplő csúcsoknál mindenütt levontunka legrövidebb út hosszából 6-ot. Az utóbbi esetben H-t a háromszög éleialkotják, és H-ban nem vezet a-ból út a háromszög csúcsaihoz. Általábanminden 0 hosszúságú kör mentén a c(u)-t csökkenteni lehet tetszőleges, demindenütt azonos nagysággal, és (5.3) még továbbra is igaz marad, feltéve,hogy a nincs benne a körben. Ez az algoritmusok szempontjából annyit jelent,hogy ha a körben bármelyik csúcsnak meghatároztuk a c(u) értékét, akkorez automatikusan a többi csúcsét is jelenti. Ha például az egyik csúcs c(.)értéke megegyezik a hozzá vezető legrövidebb út hosszával, akkor – feltéve,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 138: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

138 5. Dinamikus programozás

hogy ezen az értéken már nem változtatunk – a kör többi csúcsáról is ugyanezmondható.

Tekintettel arra, hogy az (5.2) és (5.3) feltételek a Bellman-elvből szár-maznak, ezért ezeket a továbbiakban Bellman-egyenleteknek nevezzük.

Térjünk vissza a feladatunkhoz, amit úgy szokás megoldani, hogy nem-csak egy a-ból b-be vezető legrövidebb utat határozunk meg, hanem a-bólaz összes többi csúcsba, ahova egyáltalán vezet irányított út, keresünk egylegrövidebb utat, és akkor természetesen ott lesz ezek között a keresett is. Azalgoritmus úgy rendel számokat csúcsokhoz, hogy végül a Bellman-egyenletekteljesüljenek. A következő szemléletes kép adható az eljárásról. Az a csúcsbólelindulunk, és mindenütt, ahova megérkeztünk, feljegyezzük, hogy mekkoraköltséggel érkeztünk oda. Ezután kiválasztunk egy v csúcsot, ahol már jár-tunk – persze nem feltétlenül minimális költséggel. Haladjunk tovább a belőleinduló élek mentén. Nézzük meg, hogy valamelyik őt követő u csúcsba ígyrövidebb úton tudunk-e eljutni (azaz kell-e a Bellman-egyenletek kielégítéseérdekében a csúcsokhoz rendelt számokon változtatni). Ismételjük meg eztmindaddig, amíg bizonyossá nem válik, hogy javítás nem érhető el.

Az algoritmus során mindazokat a csúcsokat, amelyekből továbbhaladvajavulás várható, egy L listában tároljuk. A lista egyfajta rendezettséget isjelent. Egy új csúcsot ennek a rendezettségnek megfelelően helyezünk el alistában, és minden csúcsot csak egyszer tárolunk benne. Ennek megfelelőenaz L+u művelet azt jelenti, hogy ha u eddig nem volt benne a listában, akkormegkeressük a lehetséges helyét, és oda, a többi L-beli csúcs közé beillesztjük,ha azonban u már L-ben benne van valahol, akkor átrendezzük L-t úgy,hogy u a megváltozott paramétereinek megfelelő helyre kerüljön. Egy csúcskivételét a listáról L− u-val jelöljük. Nem feltétlenül megyünk tovább u-bólminden lehetséges irányba, azonban u-t a listáról csak akkor vesszük le, ha ezmár megtörtént. Az eddig mondottak úgy is felfoghatók, hogy az algoritmusfokozatosan kiépíti G-nek azt a H részgráfját, amely pontosan az a-ból indulólegrövidebb utakat tartalmazza. Éppen ezért azt mondjuk, hogy behúzzuka (v, u) élt, ha azt tapasztaljuk, hogy az u csúcsba rövidebb v-n keresztüleljutni, mint ahogy eddig tettük. Ezzel természetesen a korábban behúzott(w, u) élt töröljük.

További jelölések: c(u) az a legkisebb költség, amivel eddig u-ba jutottunk;m(u) az eddig talált legrövidebb útban az u előtti csúcs; N (u) azon csúcsok,amelyekbe vezet él u-ból; K ⊂ N (u) azon csúcsok halmaza, ahova egy adottpillanatban u-ból továbbmegyünk; S(u) azon csúcsok halmaza, ahova mégtovább kell mennünk.

5.1. algoritmus

1. Begin

2. L kezdeti megszerkesztése;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 139: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.2. Gráfban legrövidebb utat kereső algoritmusok 139

3. c(a) := 0;

4. ∀u ∈ V \ { a } : c(u) := +∞;

5. ∀u ∈ V : S(u) := N (u);

6. while L 6= ∅ do

7. begin

8. válasszuk ki v-t L-ből;

9. határozzuk meg K ⊂ S(v)-t;

10. S(v) := S(v) \ K;

11. if S(v) = ∅ then L − v else L + v;

12. for ∀u ∈ K do

13. if cvu + c(v) < c(u) then

14. begin

15. c(u) := cvu + c(v);

16. m(u) := v;

17. L := L + u;

18. S(u) := N (u);

19. end;

20. end;

21. end;

5.2.3. tétel: Ha a G gráfban nincs negatív kör, és az a kiindulási pontszerepel a kezdeti L listában, akkor az 5.1. algoritmus által kiszámított c(u)érték az a-ból az u csúcshoz vezető legrövidebb irányított út hossza, ha ilyenút egyáltalán létezik, különben pedig c(u) = +∞.

Bizonyítás: Az algoritmus az a-ból induló legrövidebb utakat szerkesztimeg, mert a 4. sor miatt a 13. sor feltétele addig nem teljesül, amíg a-telő nem vettük L-ből. A 13. sor szerint az algoritmus nem áll meg mind-addig, amíg a Bellman-egyenletek nem teljesülnek, ugyanis a 17. és 18. sorbiztosítja, hogy minden olyan helyet, ahol szigorú egyenlőtlenség léphet fel,ellenőrizzünk. Mivel a 15. sorban mindig csak egy u csúcshoz tartozó c(u)értéket változtatunk, így nem változtatjuk meg egyszerre egy 0 hosszúságúkör összes csúcsának a c(u) értékét, így minden pillanatban minden u eseténc(u) egy a-ból u-ba vezető út értéke, feltéve, hogy c(u) véges.

Végül tegyük fel, hogy létezik olyan d csúcs, hogy d-hez vezet út a-ból, deaz algoritmus nem talált utat a-ból d-be, azaz c(d) = +∞. Nyilván d 6= a,hiszen a feltételek szerint az inicializáláskor (3. sor) azonnal beállítjuk az

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 140: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

140 5. Dinamikus programozás

a-ba vezető legrövidebb út értékét. Az általánosság megszorítása nélkül fel-tehető, hogy van olyan u csúcs, hogy az algoritmus talált utat a-ból u-ba,és G-ben szerepel az (u, d) él. Ezért u valamikor benne volt az L listában.Az algoritmus 11. sora szerint csak akkor kerülhetett ki innen, ha már va-lamennyi (u,w) típusú élt megvizsgáltuk, ekkor azonban be kellett húznunkaz (u, d) élt, ami ellentmond (u, d) megválasztásának. Végezetül az ebbena bekezdésben található gondolatmenethez hasonlóval látható be, hogy azalgoritmus befejezése után a megtalált utak minimális hosszúak. Q.E.D.

Az algoritmus lépésszáma az L lista kezelésétől, vagyis a 2., 8., 9. sortólfügg, és nagyon eltérő lehet, így a részletekre nem térünk ki. Megjegyezzükazonban, hogy könnyű olyan változatot készíteni, ahol O(n3) a szükségesműveletek száma.

Kiegészítésként megmutatjuk, hogy hogyan lehet az eljárás lefutása után akívánt utat visszakeresni. Mivel előre nem lehet tudni, hogy az út hány élbőláll, ezért a szokásostól eltérő módon a legmagasabb indexnek 0-t választjuk.

5.2. algoritmus

1. Begin

2. P := ∅;3. u0 := b;

4. i := 0;

5. while m(ui) 6= a do

6. begin

7. P := ((m(ui), ui), P );

8. ui := m(ui);

9. i := i − 1;

10. end;

11. end;

A fenti dinamikus programozási eljárás több változatára lesz szükségünk.Ezek fő jellemzőit az alábbiakban vázoljuk a részletek teljes kidolgozása nél-kül azért, hogy a későbbiekben felismerhető legyen, hogy melyik egészértékűprogramozási algoritmusnak melyik legrövidebbút-keresési eljárás az alapja.1. változat: Általában K csak része S(v)-nek, és így többször végigvizs-gáljuk a gráf már elért csúcsait. Az L lista egyszeri feldolgozását nevezzükiterációnak. Az egy adott iterációban már vizsgált csúcsok (11. sor) és azoka csúcsok, amelyeknél javulást értünk el (17. sor), az L végére kerülnek, azadott iterációban még feldolgozandó csúcsok mögé, de nem feltétlenül beér-kezési sorrendben. Minden csúcs esetében az S(v) ugyanabban az iterációban

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 141: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.2. Gráfban legrövidebb utat kereső algoritmusok 141

válik üres halmazzá. Kezdetben L csak az a csúcsból áll. A 8. sorban a v-tmindig L első elemének választjuk.2. változat: Az L lista kezdetben az összes csúcsból áll, és a az első eleme.A 17. sorban úgy helyezünk el egy u csúcsot, hogy megőrizzük L-nek azta tulajdonságát, hogy a csúcsokat a c(u) értékek szerinti monoton növő sor-rendben tartalmazza. L-ből mindig az első elemet választjuk ki. K mindig ateljes N (v) lesz, így az egyszer már feldolgozott csúcshoz nem térünk vissza.(Ha v-t már kiválasztottuk, és valamennyi lépés után visszakerülne L-be, azcsak úgy volna lehetséges, hogy nála javítást értünk el, az pedig azt jelen-tené, hogy negatív kör van a gráfban.) Így tehát az L lista csak fogy, hozzánem kerül új csúcs. Ha L-ből olyan csúcsot kellene kiválasztanunk, ahol c(u)végtelen, akkor ezt elhagyjuk. Ez valójában azt jelenti, hogy az első ilyencsúcs esetében az egész L listát töröljük. Ezek a maradék csúcsok ugyanisnem érhetők el az a csúcsból.

A 3. változat megfogalmazásához szükségünk lesz a következő tételre.5.2.4. tétel: Ha az n csúcsból álló G = (V, E) irányított gráfban nincsirányított kör, akkor létezik G csúcsainak olyan (u1, ..., un) rendezése, hogyi > j esetén nem vezet él G-ben ui-ből uj-be.

Bizonyítás: Ha a gráfnak van olyan u csúcsa, amelyikbe nem fut be él, azazminden v ∈ V esetén (v, u) 6∈ E , akkor nyilvánvaló, hogy a kívánt sorrendbenu lehet az első csúcs. Az 5.2.1. tétel bizonyításában alkalmazott gondo-latmenethez hasonlóan látható, hogy ilyen csúcsnak léteznie kell. Ellenkezőesetben ugyanis bármelyik csúcsból kiindulva, az éleken visszafelé haladvautunkat bármeddig folytathatjuk, tehát a csúcsok végességéből következik,hogy létezik kör a gráfban. Ha azt az u csúcsot, amelyikbe nem fut be él, va-lamint a belőle kiinduló éleket elhagyjuk G-ből, akkor a keletkező gráf szinténkörmentes lesz. Rá alkalmazva az előbbi gondolatmenetet, megkapjuk a kí-vánt sorrend második elemét. Az eljárást addig folytatjuk, amíg valamennyicsúcsot el nem helyeztük a sorrendben. Q.E.D.

5.2.1. definíció: Egy irányított kört nem tartalmazó G irányított gráf csú-csainak bármely olyan (u1, ..., un) rendezését, ahol i > j esetén ui-ből nemmegy irányított él G-ben uj-be, a csúcsok topologikus rendezésének nevezzük.

Most már megfogalmazhatjuk az algoritmus kívánt verzióját.3. változat: Feltesszük, hogy G-ben nincs irányított kör. L kezdetben nemlesz más, mint a csúcsok egy topologikus rendezése abban a G′ gráfban, amitG-ből az a-ba mutató élek elhagyásával nyerünk, és amit például az 5.2.4.tétel bizonyításában adott algoritmussal szerkeszthetünk meg. A listáról akövetkező véges c(u) értékkel rendelkező csúcsot vesszük elő, az ezt megelőző+∞ értékűeket elhagyjuk, mert ezekbe nem vezet út a-ból. K mindig N (v)lesz.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 142: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

142 5. Dinamikus programozás

5.3. Lineáris diofantoszi egyenletmegoldhatósága

Legyenek a1, ..., an, b egész számok. A számelméletből jól ismert, hogy haa1, ..., an nem mind 0, akkor a

n∑

j=1

ajxj = b (5.5)

egyenletnek akkor és csak akkor van egész megoldása, ha

lnko(a1, ..., an) = lnko(a1, ..., an, b). (5.6)

Ebben a szakaszban azt a kérdést vizsgáljuk, hogy (5.5)-nek mikor van nemne-gatív, egész megoldása. Ehhez (5.6) csak szükséges, de nem elégséges feltétel.A kérdést arra az esetre szűkítjük le, amikor

aj > 0 j = 1, ..., n, és ai 6= aj (i 6= j). (5.7)

A válasz néhány algoritmus lesz. Mindegyik lényegesen több információtszolgáltat, mint hogy eldönti a feltett kérdést. Közös vonásuk továbbá, hogymindegyik az előző szakasz módszereinek valamilyen speciális alkalmazása.Az eljárások kidolgozásának menete a következő. Először megadunk egy mo-dellt, ami leírja a problémát. Ez minden esetben egy gráf lesz, amiben utatkell keresni. Kiválasztjuk a modellhez az 5.1. algoritmus megfelelő változatát,és az így adódó eljárást részletesen, a szokásos módon leírjuk.I. modell: A G = (V, E) gráf csúcsai legyenek a 0, 1, 2, ..., b számok. Azélek halmaza a következő

E = { (p, q) | p, q ∈ V; ∃ j p + aj = q }.

Nyilvánvaló, hogy (5.5)-nek akkor és csak akkor van nemnegatív, egész meg-oldása, ha G-ben van út 0-ból b-be. Most (5.7)-ből azonnal adódik, hogya (0, ..., b) sorrend a csúcsok topologikus rendezése, így alkalmazható az al-goritmus 3. változata. Az élek hosszai tetszés szerint megválaszthatók. Havalamennyi 0, akkor csak a megoldás létezését dönti el az eljárás. Ha va-lamennyi 1, akkor megtudjuk, hogy legalább mennyi a változók összege azösszes megoldásban.

Legyen a = min{aj | 1 ≤ j ≤ n}. Nyilvánvaló, hogy b− a < p ≤ b eseténp és b között, valamint 0 < p ≤ a esetén p és a között nem vezet él. Ezt atényt felhasználjuk az algoritmus leállási kritériumának megfogalmazásakor.A Bellman-egyenletek alakja ebben a modellben

c(q) = min { c(q − aj) + cq−aj ,q | 1 ≤ j ≤ n, q − aj ≥ 0 },

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 143: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.3. Lineáris diofantoszi egyenlet megoldhatósága 143

ahol q = a, ..., b, továbbá c(0) = 0 és 0 < q < a esetén c(q) = +∞.

5.3. algoritmus1. Begin

2. c(0) := 0;

3. for i := 1 to b do c(i) := ∞;

4. p := 0;

5. while p ≤ b − a do

6. begin

7. j := 1;

8. while j ≤ n and p + aj ≤ b do

9. begin

10. if cp,p+aj+ c(p) < c(p + aj) then

11. begin

12. c(p + aj) := cp,p+aj+ c(p);

13. m(p + aj) := p;

14. end;

15. j := j + 1;

16. end;

17. p := min { i | i > p, c(i) < +∞};18. end;

19. end;

0 p p + a1 p + a2 ... p + an b

® ©?

¾ »?

' $?

5.2. ábra: Az 5.3. algoritmus működési elve.

Az eljárásban az L listát implicit módon kezeljük a p változón keresztül.A 4., 5. és 17. helyett azért nem írtuk a

for p := 0 to b − a doutasítást, mert p értékében ugrások lehetnek (17. sor). Ha csak az előállít-hatóság tényére vagyunk kíváncsiak, akkor az 5. sor így is írható:

while p < b − a and c(b) = +∞ do

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 144: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

144 5. Dinamikus programozás

A 8. sorban kezeljük ugyancsak implicit módon S(p)-t A 13. sor arravolt jó, hogy segítségével egy megoldást is kaphassunk. Az 5.2. algoritmusmegfelelő alakja most ugyanis a következő:

5.4. algoritmus

1. Begin

2. x := 0;

3. p := b;

4. while p > 0 do

5. begin

6. if aj = p − m(p) then xj := xj + 1;

7. end;

8. end;

Az 5.3. algoritmus a kiegészítő lépésektől eltekintve két egymásba skatu-lyázott ciklusból áll, ezek határozzák meg a szükséges lépésszámot. A külsőaz 5. és 18. sorok között fut legfeljebb b − a + 1-szer. A belső a 8. és 16.sorok között található, és legfeljebb n-szer hajtódik végre a ciklusmag. Így alépésszám (b − a + 1)n-nel arányos, vagyis O(bn). A (b − a + 1)n mennyiségnagyságrendileg megegyezik a gráf éleinek a számával. Pontosabban szólva(b − a + 1)n valamivel több, mint az élek száma, mert itt úgy számolunk,mintha b − a + 1-ből is n él futna ki, pedig csak 1. Hasonlóképp visszafeléhaladva b + 1 − max{ aj | 1 ≤ j ≤ n }-ig a kiinduló élek száma mindigkevesebb, mint n. Az algoritmus viselkedésével kapcsolatos másik lényegeskérdés, hogy mekkora memóriaterületet igényel. Mivel két tömböt – c ésm – használunk, és mindkettő 0-tól b-ig futhat, ezért ezek összesen 2b + 2egész tárolását követelik meg, ehhez jönnek még az aj (j = 1, ..., n) számok,valamint p és j. Ha a megoldást vissza is keressük, akkor kell még az n-dimenziós x vektor. Ez összesen 2(b + n + 2). Ha nem valamilyen szempontszerinti legjobb megoldásra vagyunk kíváncsiak, hanem csak egy megoldásra,akkor c és m egyesítésével a c vektor megtakarítható, és ekkor a 13. sorelmarad, a 10.-ben a feltétel m(p + aj) = +∞ lesz, mindenütt máshol pedigc helyére m-et kell írni. Ekkor a visszakereséssel együtt a memóriaigényb + 2n + 3 egész tárolása.

Példaként ellenőrizzük, hogy van-e az

5x1 + 7x2 = 16

diofantoszi egyenletnek nemnegatív megoldása. Csak a megoldás létezésérevagyunk kíváncsiak, ezért minden él hossza 0. Az algoritmus menete a kö-vetkező táblázatban foglalható össze:

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 145: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.3. Lineáris diofantoszi egyenlet megoldhatósága 145

A gráf csúcsai0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

p A c vektor elemei0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞

0 0 ∞ ∞ ∞ ∞ 0 ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞5 0 ∞ ∞ ∞ ∞ 0 ∞ 0 ∞ ∞ 0 ∞ 0 ∞ ∞ ∞ ∞7 0 ∞ ∞ ∞ ∞ 0 ∞ 0 ∞ ∞ 0 ∞ 0 ∞ 0 ∞ ∞10 0 ∞ ∞ ∞ ∞ 0 ∞ 0 ∞ ∞ 0 ∞ 0 ∞ 0 0 ∞12

Mivel a = 5 és 12 + 5 > 16, így a keresett megoldás nem létezik.Mielőtt rátérnénk a következő modellre, szükséges rávilágítani némely

számelméleti összefüggésre. Elöljáróban megjegyezzük, hogy eredeti prob-lémánk szempontjából az általánosság megszorítása nélkül feltehető, hogy(5.6) mindkét oldalán 1 áll, vagyis a számok relatív prímek. Ha nem ígyvolna, akkor a legnagyobb közös osztóval (5.5) végigosztható, és a megol-dások nem változnak meg. Ezt mindenképpen célszerű megtenni, már csakazért is, mert így az előző algoritmus futási ideje és tárigénye a töredékérecsökken.5.3.1. tétel: Legyenek a1, ..., an relatív prím pozitív egészek, az F halmazpedig

F = { b ∈ ZZ+ | ∃xZZn+,

n∑

j=1

ajxj = b }.

Ekkor létezik egy olyan g0 egész, hogy minden g > g0, g egész esetén g ∈ F .

Bizonyítás: Mivel a1, ..., an relatív prím, ezért mindenképpen létezik olyan,nem feltétlenül nemnegatív y ∈ ZZn vektor, hogy

n∑

j=1

ajyj = 1.

Legyen

go =∑

j: yj<0

aj(−yj)(a1 − 1).

A g0 + k szám előállítása, ahol 0 ≤ k ≤ a1 − 1, a következő:

go + k =∑

j: yj<0

aj(−yj)(a1 − 1) + kn

j=1

ajyj =

j: yj<0

aj(kyj + yj − a1yj) +∑

j: yj≥0

ajyjk.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 146: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

146 5. Dinamikus programozás

Az egyenlőség jobb oldalának első összegében k és yj megválasztása miattkyj + yj − a1yj ≥ 0, így ez az előállítás nemnegatív. Azt kaptuk tehát, hogya1 egymást követő egész, nevezetesen g0, g0 +1, ..., g0 + a1 − 1 benne fekszikF-ben. Legyen most g tetszőleges egész, amely nagyobb, mint g0 + a1 − 1.Legyen k az a szám, amelyre teljesülnek az alábbiak:

g0 + k ≡ g (mod a1), 0 ≤ k < a1.

Legyen továbbág0 + k + la1 = g,

ahol természetesen l pozitív egész. Ha x nemnegatív egész vektor, melykielégíti a

n∑

j=1

aj xj = g0 + k

egyenletet, akkor

x′j =

{

xj + l j = 1xj j > 1

választás mellett x′ megoldása a

n∑

j=1

ajxj = g

egyenletnek. Q.E.D.

Frobenius 1917-ben vetette fel azt a problémát, hogy határozzuk meg azta legkisebb küszöbszámot, amivel a tétel állítása igaz. Ez a szám nem más,mint a legnagyobb olyan egész, ami nincs benne F-ben. A probléma abban azértelemben megoldatlan, hogy nem ismert olyan formula, amely minden n-reés tetszőleges, a tétel feltételeit kielégítő a1, ..., an számok mellett a feladatmegoldását szolgáltatná. Általános vélemény szerint ilyen nem is várható. Aprobléma azonban abban az értelemben megoldott, hogy ismert olyan algorit-mus, amely tetszőleges feladat esetén meghatározza ezt a legkisebb küszöböt.Minden ilyen algoritmus lényegében a következő tételen alapszik.5.3.2. tétel: Jelölje g(a1, ..., an) az a1, ..., an számok által meghatározottFrobenius-probléma megoldását. Legyen k (1 ≤ k ≤ n) tetszőleges, rögzítettindex, az F halmaz, mint fent. Minden p = 1, ..., ak − 1 esetén legyen

tp = min { b ∈ F | b ≡ p(mod ak) }. (5.8)

Ekkor

g(a1, ..., an) = max { tp | 1 ≤ p < ak } − ak. (5.9)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 147: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.3. Lineáris diofantoszi egyenlet megoldhatósága 147

Bizonyítás: Legyen g olyan egész, hogy

g > max { tp | 1 ≤ p < ak } − ak. (5.10)

Ha g többszöröse ak-nak, akkor nyilvánvalóan g ∈ F . Ezt az esetet kizárvategyük fel, hogy r az az 1 és ak − 1 közé eső egész, amelyre a

g ≡ r (mod ak) (5.11)

kongruencia teljesül. (5.10)-ből következik a

g > tr − ak

egyenlőtlenség, ami (5.11) miatt maga után vonja a

g ≥ tr

bekövetkezését is. Ebből azonnal adódik, hogy g ∈ F . Legyen q (1 ≤ q < ak)az az egész, amelyre az (5.9)-ban definiált számra teljesül, hogy

g(a1, ..., an) = tq − ak.

Ez nyilvánvalóan nem lehet F eleme, hiszen ez ellentmondana tq minimálistulajdonságának. Q.E.D.

Vegyük észre, hogy a tp számok, mint ahogy az a bizonyításból is kiderült,teljesen leírják az F halmaz szerkezetét, ugyanis bármely g esetén csak azalábbi két egymást kizáró eset lehetséges:

(i) g ≡ p(mod ak) és g ≥ tp, így g ∈ F ,

(ii) g ≡ p(mod ak) és g < tp, így g 6∈ F .

Az a kérdés, hogy az (5.5) diofantoszi egyenletnek van-e nemnegatív meg-oldása, átfogalmazható azzá, hogy a b ∈ F reláció teljesül-e. Így mindenalgoritmus, ami a Frobenius-problémát a tp értékek meghatározásával oldjameg, választ fog adni a mi kérdésünkre is.

Az általánosság megszorítása nélkül a továbbiakban mindig feltesszük,hogy

a1 < a2, a3, ..., an−1, an. (5.12)

II. modell: Célunk tehát most az (5.8)-ban adott tp számok meghatározásak = 1 választás mellett. A G gráf csúcsait alkossák a (mod a1) szerintimaradékosztályok, melyeket a 0, 1, ..., a1 − 1 számok jelölnek. A gráf éleitpedig az

E = {(p, q) | 0 ≤ p, q < a1; ∃ j (1 < j ≤ n), p + aj ≡ q(mod a1)}

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 148: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

148 5. Dinamikus programozás

halmaz alkossa. Egy (p, q) él hossza aj legyen, ha a p + aj ≡ q(mod a1)kongruencia teljesül. Eddig az (5.7) feltétel biztosította, hogy a gráfban nelegyenek többszörös élek, és így bármely két csúcs közötti távolság egyértelműlegyen. Az alábbiakban az (5.7)-nél szigorúbb

∀ i, j : 2 ≤ i < j ≤ n esetén ai 6≡ aj (mod a1) (5.13)

követelménnyel élünk. Vegyük észre azonban, hogy ez nem megy az általá-nosság megszorításának rovására. Ha

ai ≡ aj (mod a1) és ai < aj

teljesülne, akkor aj és vele az xj változó elhagyható, ezzel az F halmaz nemfog megváltozni, és így nem változik meg sem az eldöntési, sem a Frobeniusprobléma megoldása sem. (Legyen ugyanis k az a szám, amire aj = ai + ka1

igaz. Ekkor ajxj helyébe mindenütt aixj + a1kxj írható.) Ezen feltételekmellett minden 0-ból p-be vezető út a p maradékosztály azon elemének azelőállítását jelenti, amelyik éppen az út hosszával azonos. Így tp-t úgy kapjukmeg, hogy megkeressük a 0-ból p-be vezető legrövidebb utat. Vegyük észre,hogy most szükségünk van a 0-ból az összes többi csúcshoz vezető legrövidebbútra. Megoldási módszerül az 5.1. algoritmus 2. változatát választjuk. Aszokásos változókon és vektorokon túl kényelmi okokból bevezetjük c(−1)-et.A modulus szerinti összeadás és kivonás jele ⊕ és ⊖.

A Bellman-egyenletek ebben a speciális esetben az alábbi alakban írhatókfel:

c(q) = min{ c(q ⊖ aj) + aj | 1 ≤ j ≤ n },ahol q = 1, ..., a1 − 1 és c(0) = 0.

5.5. algoritmus

1. Begin

2. p := −1;

3. c(−1) := −1;

4. c(0) := 0;

5. for i := 1 to a1 − 1 do c(i) := +∞;

6. L := {0, 1, ..., a1 − 1};7. for q := 1 to a1 − 1 do

8. begin

9. az L lista alapján válasszuk ki azt az r indexet, amelyrec(r) = min{ c(i) | c(i) > c(p) } teljesül;

10. p := r;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 149: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.3. Lineáris diofantoszi egyenlet megoldhatósága 149

11. for i := 2 to n do

12. if c(p) + ai < c(p ⊕ ai) then

13. begin

14. c(p ⊕ ai) := c(p) + ai;

15. m(p ⊕ ai) := p;

16. L := L + (p ⊕ ai);

17. end;

18. end;

19. end;

0 1

2

a −1

a −21

1

1

p + a

p + a

p + a

2

pn

1

Az 5.5 Algoritmus müködési elve5.3. ábra.

Az algoritmus természetesen itt is két egymásba ágyazott ciklusból áll. Abelső a 11–17. sorokban található, míg a külső a 7. és 18. sor között. Eztaz utóbbit nyilván elég csak a1 − 1-szer lefuttatni, hiszen az utolsónak meg-maradó maradékosztályból már nem lehet javulást elérni a többinél. Ezértadtuk ezt meg for alakban az eddig szokásos while alak helyett. A 9. és 16.sor alapján végzett számítások mennyisége egymással ellentétes irányú ab-ban az értelemben, hogy minél könnyebb a 9. sor utasítását elvégezni, annáltöbb előkészítő munkát kell végezni a 16. sorban. Egy lehetséges stratégiaaz, hogy a 16. sorban nem változtatunk semmit. (Ez magyarázza, hogy a6. sor nem L := {0}.) Ekkor azonban a 9. sorban mindig végig kell néznivalamennyi maradékosztályt p = 0 kivételével. Így a 9. sor műveletigényefigyelembevéve, hogy ez a külső ciklusban fekszik, O((a1 − 1)2) = O(a2

1). A

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 150: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

150 5. Dinamikus programozás

belső ciklus egyszeri lefutása O(n), így összes lefutása O(a1n) művelet elvég-zését követeli meg. Tehát ebben a változatban az összes műveletek számaO(a2

1 + a1n) lesz. Eljárhatunk azonban úgy is, hogy L-t mindig átrendezzükaszerint, hogy benne a még nem vizsgált maradékosztályok a c(p) értékekszerinti monoton növő sorrendben legyenek. Ez úgy történhet, hogy amikora 14. sorban egy új értéket határozunk meg, akkor utána ezt az egy maradé-kosztályt a megváltozott értékének megfelelően helyezzük el L-ben. EzáltalL visszanyeri rendezettségét. Ismeretes, hogy ha az L lista hossza k, akkorezt O(⌈log2 k⌉) lépésben végre lehet hajtani. Mivel k ≤ a1 − 1, így a 16. sorutasítását O(log2 a1) művelettel el lehet intézni. Ekkor a belső ciklus összesvégrehajtásának nagyságrendje O(a1n log2 a1). Igenám, de ekkor a 9. sorbankijelölt tevékenység elvégzéséhez mindig csak konstans művelet kell, mert rés így p is mindig az L lista legelső eleme lesz. Tehát az algoritmus összesenO(a1n log2 a1) lépést igényel. Figyelemmel az alább bizonyítandó tételre, ezlényegesen jobb, mint O(a2

1 + a1n).5.3.3. tétel: Ha az a1, ..., an számok között nincs olyan, amelyik a többinemnegatív egész lineáris kombinációjaként előállna, akkor a1 ≥ n.

Bizonyítás: Tegyük fel, hogy n > a1. Nézzük az a1, ..., an számokat (moda1). Közöttük biztosan van két kongruens, hiszen a számuk nagyobb a ma-radékosztályok számánál. Legyen egy ilyen pár ai és aj . Ha ai ≤ aj , akkoralkalmas k ∈ ZZ+ számmal teljesül az aj = ai + ka1 egyenlőség. Q.E.D.

Visszatérve az algoritmus elemzéséhez, megállapíthatjuk, hogy a szükségestárterület O(a1), hiszen a c és m tömb külön-külön ilyen nagyságrendű. AzS(p) halmazokat itt is implicit módon kezeljük. Az eljárásban nem szerepel„L − p” típusú utasítás, mert ez a 9. sorban automatikusan megtörténik.

Nézzük az előbbi feladat megoldását az új eljárás segítségével.

a gráf csúcsai-1 0 1 2 3 4

q r a c vektor-1 0 ∞ ∞ ∞ ∞

1 0 -1 0 ∞ 7 ∞ ∞2 2 -1 0 ∞ 7 ∞ 143 4 -1 0 21 7 ∞ 144 1 -1 0 21 7 28 14

Mivel 16 ≡ 1(mod 5) és t1 = 21 > 16, ezért a diofantoszi egyenletnek nincsnemnegatív megoldása.

Befejezésül vegyük észre, hogy algoritmusunk explicit felső becslést ad aFrobenius-probléma megoldására.5.3.4. tétel: Ha a1 < a2, ..., an−1 < an, és lnko(a1, ..., an) = 1, akkor amegfelelő Frobenius-probléma megoldására igaz a

g(a1, ..., an) ≤ a1an − a1 − an (5.14)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 151: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.4. Felső korlátos változókat tartalmazó hátizsák feladat 151

egyenlőtlenség.

Bizonyítás: Legyen p egy tetszőleges maradékosztály, tp az (5.8)-ban defi-niált szám. Vegyük észre, hogy amikor az algoritmus 9. és 10. sorában p-tkiválasztjuk, akkor tp = c(p). Legyen most x ∈ ZZn

+ az az előállítása tp-nek,amit az algoritmus ad. Innen

tp =

n∑

j=1

ajxj .

Vizsgáljuk a

n∑

j=1

xj (5.15)

alakú összeget. Ha a 12. sorban javulást észlelünk, akkor p ⊕ ai aktuáliselőállítása, x′, a következővé válik:

x′j =

{

xj j 6= ixi + 1 j = i.

Így a változók összege csak eggyel nőtt. Igaz ez a külső ciklus minden lefu-tására. Ezért az (5.15) alakú összegek maximuma a1 − 1 lehet. A tp számraakkor kapjuk a lehető legnagyobb értéket, ha minden változó 0, kivéve azutolsót, és xn = a1 − 1. Ezért minden p-re

tp ≤ (a1 − 1)an.

Innen (5.9)-ből következik az állítás. Q.E.D.

5.4. Felső korlátos változókat tartalmazóhátizsák feladat megoldása

Ebben a szakaszban a

max

n∑

j=1

gjxj (5.16)

n∑

j=1

ajxj ≤ b (5.17)

xj ≤ dj , j = 1, ..., n (5.18)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 152: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

152 5. Dinamikus programozás

xj ∈ ZZ+, j = 1, ..., n (5.19)

feladat megoldásával foglalkozunk, ahol valamennyi együttható pozitív egész.Ez a megszorítás nem több, amint arra az 1.2.1. szakaszban rámutattunk,mint hogy minden együttható egész.

Próbáljuk meg kiválasztani, hogy az algoritmus mely változatát milyenmodellre kell alkalmazni. Az első problémát a célfüggvény okozza, hiszenmaximalizálunk az eddig megszokott minimalizálás helyett. Ez egyszerűenáthidalható, mert mint ismeretes, a célfüggvény maximalizálása ekvivalens(-1)-szeresének minimalizálásával, tehát vehetjük a

minn

j=1

(−gj)xj (5.20)

célfüggvényt. Itt azonban minden együttható negatív, ezért csak olyan mo-dellel dolgozhatunk, amiben nincsen kör, mert most minden kör negatívlenne. Így az előző szakasz II. modellje kiesik, a gráf csúcsai szükségképpena 0, 1, ..., b számok lesznek. Az 5.1. algoritmus 2. és 3. változata mindig egymár elért pontból halad tovább, valójában nem is tudja, hogyan jutott ide,tehát nem tudja garantálni az (5.18) feltételek betartását. (Ne tévesszen megbennünket, hogy az m tömbben feljegyeztük az utat. Ez a tömb az algorit-mus irányításában semmiféle szerepet nem játszott, a rá vonatkozó utasításokminden további nélkül elhagyhatók.) Így, ha egyáltalán létezik algoritmus,annak szükségképpen az első változattal kell dolgoznia. Egy lényeges továbbieltérés az előbbiektől, hogy a feltétel egyenlőtlenség formájában van meg-adva. Ez azt jelenti, hogy minden y (0 ≤ y < b) esetén a (5.20) célfüggvénymellett

c(y) ≥ c(z) z = y + 1, ..., b

-nek kell teljesülnie a gráfban.A feladat gráfelméleti modelljében, mint már megállapítottuk, a csúcsok

V halmaza a 0, 1, ..., b számokból áll. Meg fogunk engedni többszörös éleketis. Gráfunk éleinek halmaza

E = E0 + E1 + ... + En (5.21)

alakban áll elő, ahol

E0 = {(p, q) | 0 ≤ p < q ≤ b }

ésEj = {(p, p + waj) | 1 ≤ w ≤ dj ; p + waj ≤ b } j = 1, ..., n.

Azért nem az unió jelét írtuk (5.21)-ben, mert p és q közötti él több hal-mazban is előfordulhat, és ilyenkor ennek megfelelő számú példányban kell

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 153: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.4. Felső korlátos változókat tartalmazó hátizsák feladat 153

felvenni. Az E0-ba eső élek hossza 0. Az Ej-beli (p, p + waj) élhossza pedig−gjw.

A 3. fejezettől kicsit eltérve, valamennyi Ej-be eső élt aj típusúnak mon-dunk. Az egy útban elhelyezkedő aj típusú élek száma alatt pedig a megfelelőw értékek összegét értjük. Egy útban ennek kell kisebbnek lennie, mint dj

(j = 1, ..., n) ahhoz, hogy az d-megengedett legyen.A 0 hosszúságú E0-beli élek jelenléte biztosítja, hogy a p-be vezető legrövi-

debb út c(p) hossza p-ben monoton csökkenő. (Vigyázat, most az eredeticélfüggvény (-1)-szeresét minimalizáljuk!) Ezáltal válik lehetővé, hogy a há-tizsák feladat megengedett megoldásai és a d-megengedett utak kölcsönösenegyértelműen legyenek egymáshoz rendelhetők. Tekintsünk ugyanis a gráfbanegy 0-ból p-be vezető P utat. Szerkesszük meg azt a Q utat, amelyben az aj

típusú élek száma megegyezik a P -beliekével, de mind egymás után vannak,sőt 0-ból először az a1 típusúakon haladunk végig, majd az a2 típusúakonstb. Könnyen látható, hogy Q pontosan p-be vezet. Ezzel a konstrukcióvallényegében a 3.2.1. tétel bizonyításában, a (3.15) út felírásakor találkoztunk.Az elmondottakból már sejthető, hogy célunk az 5.1. algoritmus olyan ver-ziójának kidolgozása, ami képes d-megengedett utak keresésére. Az említettkonstrukció és az 1. változat pontosan összeillenek ebből a szempontból.Algoritmusunk most is, mint eddig mindig, egy külső és egy belső ciklusegyüttese lesz, a kezdeti lépéseket leszámítva. Ha a külső ciklus egyszerilefutása alatt a már elért pontokból csak az Ej-beli pontokat húzzuk be, ak-kor az aj típusú élek száma kézbentartható lesz. De mit jelent az, hogy akülső ciklus j-szer lefutott? Azt, hogy a j-edik lefutás után azokat a legjobbd-megengedett utakat határoztuk meg, amelyek csak a1, a2, ..., aj típusú éle-ket tartalmaznak. Átfogalmazva a hátizsák feladat nyelvére, azokat a lehetőlegjobb megengedett megoldásokat kaptuk a 0, 1, ..., b jobb oldalakra, ame-lyekben xj+1 = ... = xn = 0. Tehát, ha a j-nél magasabb indexű tagokatelhagynánk a feladatokból, akkor már most megtaláltuk volna az optimálismegoldást. Gondolatmenetünk a Bellman-egyenletek következő alakjához ve-zet, ahol cj(p) az első j iteráció után p-be vezető legjobb megtalált út hosszátjelöli:

cj(p) = min{ cj−1(p − waj) − wgj | 0 ≤ w ≤ dj ; p − waj ≥ 0 }. (5.22)

Ennek a formulának a belátásához csak annyit kell észrevenni, hogy p-be 0-tól különböző hosszú olyan él, amit a j-edik iterációban figyelembe veszünk,csak a p − waj (0 ≤ w ≤ dj ; p − waj ≥ 0) csúcsokból indul. Innen mégaz is látszik, hogy ha cj−1(p), mint p függvénye, monoton csökkenő volt,akkor ugyanilyen lesz cj(p) is anélkül, hogy az E0-beli éleket explicit módonfigyelembe kellene venni.

Nem tisztáztuk még, hogyan tudjuk biztosítani a d-megengedettség betar-tását. Tekintsük azt a rossz módszert, amikor a szokásos módon a listánkban

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 154: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

154 5. Dinamikus programozás

0-tól b felé haladva jegyezzük fel a javításokat a j-edik iterációban. A hibaabban rejlik, hogy így nem tudjuk kizárni azt az esetet, amikor az egymáshozkapcsolódó

(p − w1aj , p)(p, p + w2aj)

élpár segítségével mind p-nél, mind p+w2aj-nél javulást jegyeztünk fel, és bárw1, w2 ≤ dj , de w1+w2 > dj , így valójában p+w2aj-be dj-nél több aj típusúélen kell eljutnunk. A megoldás kulcsa az, hogy minden p csúcsba vezetőlegrövidebb út hosszát meg kell különböztetni aszerint, hogy a j-edik iterációelőtt vagy a j-edik iterációig bezárólag találtuk-e, mint ahogy azt az (5.22)képletben is tettük. Ez annyit jelent, mintha az L listánkat megkettőznénk,az első részben a csúcsokhoz a cj−1 értékeit, a másodikban a cj-ét tárolnánk.Egy csúcsot mindig a lista elejéről veszünk el. Az L első fele akkor fogy el,amikor a j-edik iterációt befejeztük. Ekkor újra megkettőzzük a listánkat, demost már az eddigi második fele kerül előre.

A hátizsák feladatnak az x = 0 vektor megengedett megoldása b > 0 miatt.Ez modellünkben úgy jelentkezik, hogy az E0-beli élek miatt minden csúcsbavezet 0-ból egy nulla hosszú út, tehát valamennyi c0(p) kezdeti értéket 0-raállíthatjuk be.

látjuk ( és )

p+a j

C j−1 jC

L j

L j+1

L j L j+1

az ábrán a listát két egymást követö iterációban

0 0bp p b

b0

Az L lista kezelése az 5.6 Algoritmus során;

5.4. ábra

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 155: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.4. Felső korlátos változókat tartalmazó hátizsák feladat 155

5.6. algoritmus

1. Begin

2. for p := 0 to b do c0(p) := 0;

3. for j := 1 to n do

4. begin

5. for p := 0 to b do cj(p) := cj−1(p);

6. for p := 0 to b − aj do

7. for w := 1 to min{ dj , ⌊(b − p)/aj⌋} do

8. if − gjw + cj−1(p) < cj(p + waj) then

9. begin

10. cj(p + waj) := −gjw + cj−1(p);

11. mj(p + waj) := w;

12. end;

13. end;

14. end;

Az egészértékű programozásban az a szokásos forma, hogy nem azt nézzükmeg, hogy egy adott csúcsból hova tudunk továbbmenni úgy, hogy javítsunk,hanem azt, hogy egy adott csúcsba honnan a legelőnyösebb érkezni. Ennek azaz előnye, hogy megtakarítható az 5. sorban lévő ciklus külön megszervezése,ez átkerül egyedi utasításként a 6. sor ciklusának magjába. Ekkor az eljárás5., 6., 7. és 8. sora az alábbiak szerint módosul (az eredeti sorszámozásfeltüntetésével):

5. for p := aj to b do

begin

6. cj(p) := cj−1(p);

7. for w := 1 to min{ dj , ⌊p/aj⌋} do

8. if − gjw + cj−1(p − waj) < cj(p) then

........end

Értelemszerűen ennek megfelelően módosul a 10. és 11. sor is. Ez a változatúgy magyarázható, hogy a kétrészes lista második felén haladunk végig.

A 7–12. sorokban lévő legbelső ciklus lépésszáma O(dj), ez egy iteráció-ban O(b)-szer fut le. Tehát egy iteráció műveletigénye O(bdj), így a teljesalgoritmusé

O

bn

j=1

dj

.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 156: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

156 5. Dinamikus programozás

A függvényértékek tárolására elég két (b+1) hosszú egész vektor, hiszen cj(p)kiszámításakor csak cj−1 értékei játszanak szerepet. Az optimális megoldásvisszakereséséhez azonban szükség van csaknem valamennyi mj tömb (j =1, ..., n) értékeire. Az eljárás igen egyszerű

5.7. algoritmus

1. Begin

2. y := b;

3. x∗n := mn(b);

4. for j := n − 1 to 1 do

5. begin

6. x∗j := mj(y − x∗

j+1aj+1);

7. y := y − x∗j+1aj+1;

8. end;

9. end;

Látható, hogy mn-ből csak az mn(b) értéket használtuk fel. Az összes többimj függvény esetében azonban bármelyik értékre szükség lehet. Valójábancn-ből is elég csak a cn(b) értéket kiszámolni. Ezzel azonban elvesztjük azalgoritmusunknak azt a jó tulajdonságát, hogy 0 és b között bármely jobboldalra megkaphatjuk az optimális megoldást. Ezért az az általános szabályfogalmazható meg, hogy ha a hátizsák feladatot bizonyosan csak egyetlenjobb oldal esetén kell megoldani, akkor a cn és mn függvényekből csak acn(b), mn(b) értékeket számítjuk ki, ha azonban ugyanazzal a célfüggvénnyelés ugyanazzal a bal oldallal több jobb oldal mellett is szükségünk van optimá-lis megoldásra, akkor a teljes cn, mn függvényeket meghatározzuk. Tipikusanaz utóbbi helyzet áll elő, ha fenti módszert egy a hátizsák feladatnál bonyo-lultabb feladat megoldása során részeljárásként használjuk fel. Ez az aprófinomítási lehetőség nem befolyásolja lényegesen sem a fent már elemzettlépéssszámot, sem a tárigényt, ami O(nb). A definiálandó tömbök összmé-rete a takarékosabb változat esetén (n + 1) × (b + 1), míg a másik esetben(n + 2) × (b + 1).

Az eljárást az eddig szokásos módon minimalizálási alakban adtuk meg.Természetesen semmi akadálya sincs annak, hogy a konkrét kivitelezésnél azeredeti célfüggvénnyel dolgozzunk. Ekkor a 8. és 10. sor így alakul:

8. if gjw + cj−1(p) > cj(p + waj) then

10. cj(p + waj) := gjw + cj−1(p);

A módszer egy-egy apró módosítással alkalmazható két másik feladatrais. Az első az, amikor (5.17)-ben egyenlőtlenség helyett egyenlőséget követe-lünk meg. Maga a modell, aminek alapján az algoritmus készült, annyiban

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 157: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.4. Felső korlátos változókat tartalmazó hátizsák feladat 157

változik, hogy elmaradnak az E0-beli élek. Ez az algoritmusra mindösszeannyi hatással van, mint az a fenti elemzésből kiderül, hogy a kezdeti érté-keket kell másképpen feltölteni, nevezetesen csak c0(0) lesz 0, minden p > 0esetén c0(p) = +∞. Ugyanez a módosítás szükséges akkor is, ha (5.17)-benegyenlőség áll, de emellett a nemnegatív együtthatós célfüggvényt nem maxi-malizálni, hanem minimalizálni akarjuk. Ekkor mind a 8., mind a 10. sorbana célfüggvény eredeti komponenseivel számolhatunk.

Alkalmazzuk a módszert az említett módosítások mellett amax 7x1 + 5x2 + 3x3

8x1 + 5x2 + 2x3 ≤ 20x1 ≤ 1, x2 ≤ 3, x3 ≤ 3

x1, x2, x3 ∈ ZZ+

feladatra. A számítási eredményeket a következő táblázat tartalmazza. Atáblázat kitöltésekor annyit változtattunk a fentebb mondottakon, hogy fel-tüntettük az alternatív optimumokat is. A megjelölt értékek mutatják az 5.7.algoritmus alapján visszakeresett optimális megoldásokat, melyek (0, 3, 2) és(1, 1, 3).

c0 c1 m1 c2 m2 c3 m3

0 0 0 0 0 0 0 01 0 0 0 0 0 0 02 0 0 0 0 0 3 13 0 0 0 0 0 3 14 0 0 0 0 0 6 25 0 0 0 5 1 6 26 0 0 0 5 1 9 37 0 0 0 5 1 9 38 0 7 1 7 0 9 39 0 7 1 7 0 11 2

10 0 7 1 10 2 11 211 0 7 1 10 2 14 312 0 7 1 10 2 14 313 0 7 1 12 1 14 314 0 7 1 12 1 16 2/315 0 7 1 15 3 16 2/316 0 7 1 15 3 19 317 0 7 1 15 3 19 318 0 7 1 17 2 19 319 0 7 1 17 2 21 2/320 0 7 1 17 2 21 2/3

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 158: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

158 5. Dinamikus programozás

5.5. A hátizsák feladat megoldása explicit felsőkorlátok nélküli feladat esetén

Az előző szakasz végén láttuk, hogy apró módosításokkal ugyanaz az algorit-mus alkalmazható a különböző alakú feladatok esetén. Ha ez a bonyolultabbesetben így volt, akkor várható, hogy a most tárgyalandó problémánál isígy marad. Ezért a feladatot a legrövidebb út kereséséhez legközelebb állóalakban tűzzük ki, azaz

minn

j=1

cjxj (5.23)

n∑

j=1

ajxj = b (5.24)

xj ∈ ZZ+ j = 1, ..., n (5.25)

megoldásához keresünk algoritmust, ahol a korábbiakhoz hasonlóan feltesszük,hogy minden együttható pozitív egész. Ebből rögtön következik, hogy azelőző szakasz algoritmusa alkalmazható, mert

dj =

b

aj

j = 1, ..., n

egy érvényes felső korlát az xj változóra. A vizsgálandó kérdés tehát a kö-vetkező: lehet-e a feladatot takarékosabban megoldani?

Most semmiképp sem áll az az érv, hogy „az élek együtthatói negatívaklesznek, így mindenképpen olyan modellt kell választanunk, amelyiknek agráfjában nincs kör, ezért a maradékosztályokon alapuló modell eleve kiesik”.Ezért elsőnek próbálkozzunk meg egy maradékosztályokon alapuló modellmegszerkesztésével.I. modell: Mindenekelőtt azt kell eldöntenünk, hogy melyik együttható sze-rint képezzünk maradékokat. Azonnal felmerül három logikus választás:

ap = min{ aj | 1 ≤ j ≤ n },cq = min{ cj | 1 ≤ j ≤ n },

cr

ar= min{ cj

aj| 1 ≤ j ≤ n },

ahol persze a p, q és r index nem feltétlenül különbözik egymástól. Az ap vá-lasztás mellett szól, hogy a számítás mennyisége a maradékosztályok számá-nak függvénye lesz, így igyekezni kell azt minél kisebb értéken tartani. Ezzel

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 159: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.5. A hátizsák feladat megoldása explicit felső korlátok. . . 159

szemben az aq vagy ar választás azt célozza, hogy az esetlegesen szükséges ésalább tárgyalandó korrekciós lépések esetén a célfüggvény változása minél ki-sebb legyen. Ne döntsük még el a kérdést, hanem tegyük fel, hogy a1 szerintképezzük a maradékosztályokat. Ekkor a G csúcsait a V = {0, ..., a1 − 1}számok adják. Többszörös éleket is megengedve, az élek halmaza

E = {(p, q) | p, q ∈ V; ∃ j : p ⊕ aj = q }

lesz, ahol a (p, q) él költsége cj .Mit fog jelenteni ebben a gráfban egy 0-ból p-be vezető legrövidebb út?

Egy olyan

n∑

j=1

aj xj (5.26)

összeget reprezentál, ahol valamennyi xj nemnegatív egész, továbbá

n∑

j=2

aj xj ≡ p(mod a1),

és az összes ilyen tulajdonságú összegek közül ez az, amelyikhez tartozó

n∑

j=2

cj xj

érték a legkisebb. Nézzük meg, hogy mit jelent ez a b jobb oldalra vonatko-zóan. Tegyük fel, hogy b ≡ p(mod a1). Ekkor az (5.26) összeg és b viszonyá-ban három eset lehetséges:

(i)n

j=2

aj xj = b,

(ii)

n∑

j=2

aj xj < b,

(iii)

n∑

j=2

aj xj > b.

Az (i) esetben megoldottuk a kitűzött feladatot, az optimális megoldásbanx1 = 0, a többi változó xj-vel lesz egyenlő (j = 2, ..., n).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 160: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

160 5. Dinamikus programozás

Ha (ii) áll fenn, akkor egyértelműen létezik egy x1 pozitív egész, hogyn

j=1

aj xj = b.

Így megengedett megoldáshoz jutottunk, melynek célfüggvényértéken

j=1

cj xj .

Ez a megoldás azonban nem feltétlenül optimális. Tekintsük példaként amin 3x1 + 7x2 + 13x3

5x1 + 7x2 + 9x3 = 19x1, x2, x3 ∈ ZZ+

feladatot. Itt mindhárom fenti kritérium szerint a (mod a1) maradékokatkell képezni. 19 ≡ 4(mod 5). A gráf egyes csúcsaiba vezető legrövidebbutak hosszai c(0) = 0, c(1) = 20, c(2) = 7, c(3) = 26, c(4) = 13. A c(4)-nek megfelelő megoldás x2 = 0, x3 = 1. Így 7x2 + 9x3 = 9, ezért x1 = 2komponenssel kell az x vektort kiegészíteni, hogy megengedett megoldáshozjussunk. A célfüggvény értéke ekkor 3x1 +13x3 = 19. Az optimális megoldásezzel szemben x∗

1 = 1, x∗2 = 2, x∗

3 = 0, és itt a célfüggvény értéke 17.Még kevesebbet tudunk meg a (iii) esetben. Csak annyi válik ismeretessé,

hogy ha egyáltalán létezik megengedett megoldás, akkor annak célfüggvényértéke a

n∑

j=2

cj xj

összegnél nagyobb. Az előbbi példát kicsit módosítva, amin 3x1 + 7x2 + 15x3

5x1 + 7x2 + 9x3 = 9x1, x2, x3 ∈ ZZ+

feladatban azonnal adódik, hogy x∗1 = x∗

2 = 0, x∗3 = 1 az optimális megoldás,

ami egyben az egyetlen megengedett x vektor. A jobb oldal ismét a 4 mara-dékosztályba esik, ahova vezető legrövidebb út hossza 14, az ehhez tartozó x

vektor: x1 = 0, x2 = 2, x3 = 0, így 7x2 = 14 > 9.Ez a modell eddig nem volt sikeres, mert bár sokat megtudhatunk a há-

tizsák feladatról, az optimális megoldás megtalálását nem tudjuk előre ga-rantálni. További vizsgálatáról most lemondunk, a csoportelméleti módszertárgyalásakor térünk rá vissza.

II. modell: Válasszuk most a G gráf csúcsainak a V = {0, ..., b} számokat,a gráf élei pedig

E = {(p, q) | p, q ∈ V, ∃ j : p + aj = q }

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 161: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.5. A hátizsák feladat megoldása explicit felső korlátok. . . 161

halmaz elemei lesznek. Egy (p, p+aj) él hossza cj . Megjegyezzük, hogy mostfeltehető, hogy i 6= j esetén ai 6= aj . Ugyanis ha ai = aj és ci < cj , akkor azoptimális megoldásban xj biztosan 0 lesz. Így a gráfban nem lesznek több-szörös élek. Vegyük észre, hogy ez a modell nem más, mint az 5.3. szakasz I.modellje abban az esetben, amikor a (p, p + aj) él cp,p+aj

költsége nem más,mint az (5.23)-beli cj együttható. Így minden további nélkül alkalmazhatóaz 5.3. algoritmus, a változók optimális értékeinek visszakeresésére pedig az5.4. algoritmus. Az eljárás kapacitásigényére az ott mondottak érvénybenmaradnak, nevezetesen a szükséges számítások mennyisége O(bn), a tárigényO(b + n).

Az 5.1. algoritmushoz, mely minden, a továbbiakban tárgyalt eljárásnakaz alapja, három változatot adtunk meg. Ezek közül az 5.3. algoritmusa harmadik egy speciális esete. Most alkalmazható volna a 2. változat is,amelynek lényege, hogy a csúcsokat a pillanatnyi c(p) értékek növekvő sor-rendjében vesszük elő. Mivel itt minden él hossza pozitív, ezért ha azoncsúcsok közül, amelyekből még nem mentünk tovább, p az, amelyikbe az ed-dig talált utak közül a legrövidebb vezet, akkor p-nek ez a tulajdonsága márnem romolhat el, mert ez az út a p-be vezető legrövidebb út. Ekkor az algo-ritmus 7. sorában előírtakat kell másképp végeznünk. Ehhez azonban a c(p)értékeket kell mindig rendeznünk, ami az eddigiekhez képest jelent többletet,ugyanis a csúcsoknak a (0, 1, ..., b) topologikus rendezése triviálisan adódott,és nem változik.

Az előző szakasz végén mondottakhoz hasonlóan az eljárás kis módosítá-sokkal felhasználható az alapfeladat más variánsainak megoldására is. Hamaximalizáljuk a cT x célfüggvényt, akkor a (p, p + aj) élnek az 5.3. algorit-musban cp,p+aj

-vel jelölt hossza −cj lesz. Ha (5.24)-ben nem „=” áll, hanem„≤” szerepel, akkor kezdetben valamennyi c(p) érték 0 lesz.

Az 5.3. algoritmus 17. sora, melyben ekkor a c(i) > 0 kritériumot kellalkalmazni, mint látható, megenged ugrásokat az indexben. Ezért most nemkövetkezik az, hogy a c(p) értékek p-ben monoton növők maradnának. Ezértvagy nem engedjük meg az ugrásokat a külső ciklusban, és ekkor az 5.3.algoritmus 17. sora elmarad, 5. sora pedig

for p := 0 to b − a do

lesz, vagy pedig eredeti alakjában (egyenlőséges feltétel mellett) alkalmazzukaz eljárást, és akkor a módszer végrehajtása után még ki kell keresni azt ajobb oldalt, amihez tartozó célfüggvényérték a legnagyobb. Az előző szakasz-ban mondottakhoz hasonlóan itt sincs akadálya annak, hogy maximalizálásesetén az eredeti célfüggvénnyel számoljunk, ekkor az eljárás 10. sora ennekmegfelelően értelemszerűen módosul.

Megjegyezzük, hogy a feladat egyik változatát sem szükséges igen nagyb értékek esetén megoldani. Az általánosság megszorítása nélkül tegyük fel,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 162: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

162 5. Dinamikus programozás

hogy

lnko(a1, ..., an) = 1 (5.27)

ésc1

a1≤ c2

a2≤ ... ≤ cn

an. (5.28)

5.5.1. tétel: Legyen g = g(a1, ..., an) az a1, ..., an számok által meghatáro-zott Frobenius-probléma megoldása. Tegyük fel, hogy

c1

a1<

c2

a2(5.29)

és

b ≥ (g + 2a1)cn

an− c1

a1

c2

a2− c1

a1

(5.30)

Ekkor az (5.23)–(5.25) feladat optimális megoldásában x1 ≥ 1.

Bizonyítás: Elsőnek azt mutatjuk meg, hogy ha b > g + a1, akkor létezika feladatnak olyan megengedett megoldása, amiben x1 ≥ 1. Legyen k = 1,és képezzük a (5.8)-ban megadott tp (p = 1, ..., a1 − 1) számokat. Ezek mindinkongruensek egymással (mod a1), és valamennyinek létezik

tp =

n∑

j=2

ajxj(p), xj(p) ∈ ZZ+ (j = 2, ..., n)

alakú előállítása, végül pedig

g + a1 = max{ tp | 1 ≤ p < a1 }.Így a tp + a1 (p = 1, ..., a1 − 1) számoknak, következésképp valamennyi g +a1 + 1 és g + 2a1 közötti egésznek, van olyan előállítása, amiben x1 pozitív.

Mivel az (5.30) jobb oldalán található hányados legalább 1, ezért b ≥g + 2a1. Legyen z az a pozitív egész, amivel

g < b − za1 ≤ g + a1

teljesül. A fentebb mondottak szerint b − za1-nek létezik valamilyen x nem-negatív előállítása. Tekintsük az (5.23)–(5.25) feladat azon megengedettmegoldását, amit úgy kapunk x-ből, hogy első komponensét megnöveljükz-vel. Ennek célfüggvényértékére úgy adódik egy felső becslés, ha azt té-telezzük fel, hogy b − za1-et a lehető legrosszabbul sikerül feltölteni, azazxj = 0 (j = 1, ..., n − 1), ahonnan a

(b − za1)cn

an+ zc1 = b

cn

an+ z

(

c1 −cn

ana1

)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 163: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.5. A hátizsák feladat megoldása explicit felső korlátok. . . 163

felső korláthoz jutunk. Itt z szorzója negatív szám, tehát a becslést továbbnöveljük, ha z helyére nála nem nagyobb számot, nevezetesen (b−g−a1)/a1-et írunk. Innen azt kapjuk, hogy

bc1

a1+ (g + a1)

(

cn

an− c1

a1

)

(5.31)

felső becslés a megengedett megoldásunk célfüggvényértékére.Ha viszont csak azokat a megengedett megoldásokat tekintjük, ahol x1 = 0,

akkor a célfüggvény elméleti alsó értéke

bc2

a2. (5.32)

Ha (5.30)-at a nevezővel megszorozzuk, és az egyenlőtlenséget átrendezzük,akkor adódik, hogy (5.32) nagyobb (5.31)-nél. Q.E.D.

Az (5.30)-ban szereplő g szám meghatározására használhatjuk az 5.5. al-goritmust vagy bármilyen felső becslést, például azt, amit az 5.3.4. tétel admeg.

Hasonló gondolatmenettel, de lényegesen egyszerűbben lehet ugyanilyenjellegű korlátot mondani a jobb oldalra a hátizsák feladat leggyakrabbanelőforduló esetében.5.5.2. tétel: Tegyük fel, hogy aj , cj (j = 1, ..., n), b pozitív egészek, fennáll(5.28),

cn−1

an−1<

cn

an

és

b ≥ cncn

an− cn−1

an−1

. (5.33)

Ekkor a

max∑n

j=1 cjxj∑n

j=1 ajxj ≤ b

xj ∈ ZZ+ j = 1, ..., n

feladat megoldásában xn értéke pozitív.

Bizonyítás: A feladat egy megengedett megoldása x1 = ... = xn−1 = 0,

xn =

b

an

.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 164: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

164 5. Dinamikus programozás

Ha történetesen a b/an hányados egész, akkor függetlenül b nagyságától ezaz optimális megoldás. Különben pedig igaz a

cn

b

an

> cn

(

b

an− 1

)

= bcn

an− cn. (5.34)

Ha egy megengedett megoldásban xn értéke nulla, akkor a célfüggvény leg-feljebb

bcn−1

an−1

lehet. (5.33)-ból a nevezővel való felszorzással és átrendezéssel adódik, hogyaz utóbbi nem lehet nagyobb (5.34) jobb oldalánál. Q.E.D.

E tételek azt jelentik, hogy rögzített célfüggvény és bal oldal mellett ahátizsák feladat megoldásához szükséges idő és memóriaterület nem nő bnövekedtével akármeddig, hanem egy bizonyos érték elérése után lényegébenkonstans marad.

Alkalmazzuk a mondottakat a

max x1 + 2x2 + 5x3

2x1 + 3x2 + 5x3 ≤ 732x1, x2, x3 ∈ ZZ+

(5.35)

feladatra. Azonnal szembetűnik, hogy az indexek sorrendje megegyezik (5.28)-cal. Az (5.33)-ban alsó korlát értéke 5/(1 − 2/3) = 15. Így mindaddig nö-velhetjük x3 értékét, amíg a redukált jobb oldal 15 alá nem esik. Mivel 732= 720 + 12 = 144·5 + 12, ezért (5.35) optimális megoldásában x3 legalább144. Erre való tekintettel elég csak a

max x1 + 2x2 + 5x3

2x1 + 3x2 + 5x3 ≤ 12x1, x2, x3 ∈ ZZ+

(5.36)

feladattal foglalkoznunk. Az algoritmus menetét az alábbi táblázat mutatja.Az eljárásban a célfüggvény eredeti alakját használtuk fel egyenlőséges felté-telek mellett.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 165: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.6. Dinamikus programozás több feltétel mellett 165

p a jobb oldalak0 1 2 3 4 5 6 7 8 9 10 11 12

0 c 0 0 1 2 0 5 0 0 0 0 0 0 0m - - 0 0 - 0 - - - - - - -

2 c 0 0 1 2 2 5 0 6 0 0 0 0 0m - - 0 0 2 0 - 2 - - - - -

3 c 0 0 1 2 2 5 4 6 7 0 0 0 0m - - 0 0 2 0 3 2 3 - - - -

4 c 0 0 1 2 2 5 4 6 7 7 0 0 0m - - 0 0 2 0 3 2 3 4 - - -

5 c 0 0 1 2 2 5 4 6 7 7 10 0 0m - - 0 0 2 0 3 2 3 4 5 - -

6 c 0 0 1 2 2 5 4 6 7 7 10 9 0m - - 0 0 2 0 3 2 3 4 5 6 -

7 c 0 0 1 2 2 5 4 6 7 7 10 9 11m - - 0 0 2 0 3 2 3 4 5 6 7

A táblázat hátralévő részét elhagytuk, mert a c és m vektor elemei már nemváltoznak. A legnagyobb célfüggvényérték b = 12 esetén éretik el. Az m

vektorból 12-nek a 12 = 5 + 5 + 2 optimális előállítása olvasható ki, ami-ből megoldásként (1,0,2) adódik, tehát (5.35) optimális x vektora (1,0,146).Ha itt a feltételt szigorítanánk, és a jobb oldal értékét 731-re csökkentenénk,akkor (5.36)-ban is csökkenne a jobboldal. A fenti táblázatból ekkor is ki-olvasható a legjobb megoldás. Mivel azonban a 10 jobb oldalhoz nagyobbcélfüggvényérték tartozik, mint 11-hez, ezért a 10 előállítását kell kikeresni,ami (0,0,2). Most tehát nem tudjuk teljesen kihasználni a rendelkezésre állójobb oldalt. A változók visszakeresése kényelmesebb, ha nem az előző jobboldal értékét, hanem a megfelelő változó indexét tároljuk. Például p = 7esetén az m vektor így

(−,−, 1, 2, 1, 3, 2, 3, 3, 3, 3, 3, 3)

lesz.

5.6. A dinamikus programozás alkalmazásatöbb feltételt tartalmazó feladatok esetén

A dinamikus programozást felhasználó algoritmusaink eddig minden esetbenirányított gráfban való legrövidebb út keresésén alapultak. Erre az utóbbifeladatra akkor volt véges eljárásunk, ha maga a gráf véges volt, és nemtartalmazott negatív kört. Mindkét előző szakaszban feltettük az együtthatóknemnegativitását. Ha a változók korlátosak, akkor ez nem jelent megszorítástmagára a hátizsák feladatra, hiszen a feladat olyan alakra hozható, hogy a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 166: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

166 5. Dinamikus programozás

neki megfelelő gráf a fenti tulajdonságokkal már rendelkezik. Ha például a

min −3x1 + 2x2

3x1 − 3x2 ≤ 0x1, x2 ∈ { 0, 1 }

feladatot nézzük, akkor megfelelő gráfban (0,3),(3,0) negatív kör. Az a tényazonban, hogy az optimális megoldásban mind x1, mind x2 értékét meg tud-juk mondani, előzetesen kiszűri a gráfból ezeket a rossz struktúrájú részeket.Némileg hasonló elemzés elvégezhető nemkorlátos változók esetén is. Itt ne-gatív együtthatók esetén nyilvánvalóan veszélybe kerül a gráf végessége is,hiszen ekkor bármilyen negatív balodal is előfordulhat, tehát ezeknek a gráfcsúcsai között szerepelniük kell.

Ebben a szakaszban végig feltesszük az együtthatók nemnegativitását afenti két tulajdonság érdekében. Ez most már ténylegesen erős megszorítástjelent a módszer alkalmazhatósága szempontjából. Csak a legegyszerűbbesetet, vagyis az előző szakasz II. modelljének általánosítását dolgozzuk ki, atöbbi eljárás ennek mintájára készíthető el. Tehát tekintsük a

min∑n

j=1 gjxj∑n

j=1 ajxj = b

xj ∈ j = 1, ..., n

(5.37)

feladatot, ahol aj (j = 1, ..., n), b ∈ IRt és minden i, j index esetén aij , bi, gj ∈IN. A szokásos módon azt a modellt keressük, amelyben a legrövidebbút-ke-reső eljárást alkalmazva megoldjuk az (5.37) feladatot. Ez elég természetesenadódik az eddigiekből. A G = (V, E) gráfot az

V = {y ∈ ZZt+ | y ≤ b }, (5.38)

E = {(y,y + aj) | y ∈ V; y + aj ≤ b, j = 1, ..., n } (5.39)

egyenletekkel definiáljuk, továbbá az (y,y + aj) él hossza gj . Azonnal adó-dik, hogy egy G-ben a 0-ból b-be vezető út típusa (5.37) egy megengedettmegoldása. A Bellman-egyenletek alakja ebben az esetben

c(y) = min{c(y − aj) + gj | 1 ≤ j ≤ n; y − aj ≥ 0 }.

Mindebből látható, hogy az 5.3. algoritmus mintájára készíthető egy eljárás.Legyen

d =t

i=1

(bi + 1), (5.40)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 167: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

5.7. Megjegyzések és irodalom 167

ami a V halmaz elemeinek száma. G-ben nincs kör, ezért létezik csúcsainakegy topologikus rendezése. Mivel ezek az elemek vektorok, így például alexikografikusan növekvő sorrendjük a kívánt tulajdonságú. Mindenesetre atovábbiakban feltesszük, hogy egy ilyen rendezés szerint megtörtént és y1 =0.

5.8. algoritmus

1. Begin

2. c(0) := 0;

3. for i := 2 to d do c(yi) := ∞;

4. for i := 1 to d do

5. if c(yi) < ∞ then

6. for j := 1 to n do

7. if yi + aj ≤ b and gj + c(yi) < c(yi + aj) then

8. begin

9. c(yi + aj) := gj + c(yi);

10. m(yi + aj) := j;

11. end;

12. end;

Itt tehát az alapeljárás 3. változatát alkalmaztuk. Az eljárás teljesenaz 5.3. algoritmus mintájára készült. Kimaradt azonban az ottani 5. sorfeltétele, mert az itt nehezen értelmezhető, valamint az ottani 17. sor feltételeitt az 5. sorban található.

Mekkora lesz a lépésszám és a szükséges tárterület? Eljárásunk külső cik-lusát a 4. sorban szerveztük meg, összesen d-szer fut le, a belső (6. sor) pedign-szer, így a műveletek száma O(dn) lesz. A c és m valójában t-változós függ-vények, értékkészletük d elemből áll. Mivel az aj vektorokat explicit módonhasználjuk, így a tárigény O(d+ tn) lesz. Mint (5.40)-ből könnyen látható, dértéke exponenciálisan növekszik a feltételek számának növekedtével. Ezérta módszer nagyobb feladatokra csak nagyon korlátozottan használható.

5.7. Megjegyzések és irodalomDinamikus programozásról lényegében Bellman könyvének [9] megjelenéseóta beszélhetünk. A Bellman-elv itt felhasznált alakjában azoknak az elvek-nek a diszkrét megfelelője, amelyeket a variációszámítás használ. A dinami-kus programozás az Amerikai Egyesült Államokban, az optimális folyamatokelmélete (Pontrjágin-elmélet) az akkori Szovjetunióban az 1950-es években arakéták irányításához kifejlesztett matematikai elmélet volt.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 168: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

168 5. Dinamikus programozás

A legrövidebb utat kereső algoritmusok mind megmaradnak a Dijkstraáltal megszabott keretek között [25], csak az egyes lépések végrehajtási le-hetőségeit variálják. A különböző módszerek jó összefoglalását adja [28] és[58].

A hátizsák feladatnak dinamikus programozással való megoldhatósága márDantzignál felmerül [24].

Az egészértékű programozás szempontjából a dinamikus programozási el-járásoknak az a nagy hátrányuk, hogy igen kevés feltételt tudnak kezelni.Ezt a hátrányt igen ritkán enyhíti az a tény, hogy igen sok, csak a jobb ol-dalban különböző feladatot oldunk meg egyszerre, mert általában ezt nemlehet kihasználni. Egy ellenkező esetre látunk még példát a csoportelméletimódszert tárgyaló fejezetben. Frobenius vetette fel a később róla elnevezettproblémát, amit az 5.3. szakaszban érintettünk. Az ő motivációja az volt,hogy ezen a feladaton keresztül lehet azt a kérdést vizsgálni, hogy egy csupanemnegatív elemből álló mátrixnak mikor van olyan hatványa, amiben min-den elem pozitív. Ez a kérdés a Markov-folyamatok szempontjából is fontos,mert egy folyamat pontosan akkor ergodikus, ha az átmenet-valószínűségekmátrixának van ilyen hatványa. Az 5.3.4. tételt Schur találta 1935-ben, decsak Brauer publikálta – természetesen Schur nevével – 1942-ben [15]. Brauernem volt tisztában azzal, hogy Schur már 1941-ben meghalt. Az itt közöltfelső korlát volt az egyik legelső eredmény a Frobenius-problémával kapcso-latban.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 169: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6. fejezet

A korlátozás és szétválasztás

A címben szereplő módszer valójában egy igen bő keret egzakt algoritmusokmegszerkesztésére, a legkülönbözőbb bonyolult feladatok esetén. Úgyszólvánminden NP-teljes optimalizálási problémánál ez a megoldás egyik járhatóútja. A „bő” jelző nemcsak a feladatok, hanem az algoritmusok sokféleségétis jelenti. A módszer hatékonyságát egy-egy konkrét algoritmus, illetve számí-tógépes program készítőjének ügyessége igen megnövelheti. Annak ellenére,hogy a lineáris egészértékű programozási feladatok esetén részeljárásként fel-használható benne a nagyon hatékony szimplex módszer, mindig alkalmaz-kodni tud a feladat diszkrét szerkezetéhez. Így érthető, ez az egészértékűprogramozás egyik legelterjedtebb módszere.

6.1. A módszer elméleti vázaA módszer egyik alapja a már többször említett relaxációs elv. A relaxáltfeladat számunkra fontos két tulajdonsága: (i) minimalizálás (maximalizá-lás) esetén a relaxált feladat optimumértéke egzakt alsó (felső) korlát az ere-deti feladat optimumértékére, (ii) ha az optimális feladat kielégíti az eredetifeladat feltételeit, akkor abban optimális. Másképp fogalmazva egy optima-lizálási feladat helyett egy relaxáltjának megoldását az optimális célfüggvé-nyértékre vonatkozó olyan korlátszámítási eljárásnak gondolhatjuk, amelyikegyes esetekben meg is oldja a feladatot.

Módszerünk nevének másik tagja, a „szétválasztás” pedig a megengedettmegoldások halmazának felbontása részfeladatokra. Ez az eredeti és a rela-xált feladatnál párhuzamosan történik. Legyen a megoldandó feladat

max f(x)x ∈ S,

(6.1)

és ennek relaxáltja

max f(x)x ∈ T ,

(6.2)

169

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 170: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

170 6. A korlátozás és szétválasztás

ahol tehát S ⊂ T . Az S halmaz felosztása p részre azt jelenti, hogy valamilyenmódon meghatározzuk p darab S1, ...,Sp részhalmazát úgy, hogy

S = S1 ∪ ... ∪ Sp (6.3)

teljesüljön. Ezzel a (6.1) feladatot szétvágjuk p számú részfeladatra, hiszen

max{ f(x) | x ∈ S } = max{ max{ f(x) | x ∈ Si } | 1 ≤ i ≤ p }.

Mivel általában az S halmazt nem ismerjük explicit módon, ezért az Si halma-zokat sem közvetlenül definiáljuk, hanem a (6.2) relaxált feladat segítségével.Olyan T1, ...,Tp részhalmazokat jelölünk ki, amelyekre az

S ⊂ T1 ∪ ... ∪ Tp (6.4)

reláció teljesül, és ekkor az Si halmazt az

Si = S ∩ Ti (6.5)

egyenlőség által adjuk meg implicit módon, vagyis a

max{ f(x) | x ∈ Si } (6.6)

feladat helyett annak

max{ f(x) | x ∈ Ti } (6.7)

relaxáltját oldjuk meg. A Ti halmazokról a (6.4) feltételen kívül azt követeljükmeg, hogy

Ti ∩ Tj = ∅ (i 6= j) (6.8)

és

T1 ∪ ... ∪ Tp ⊂ T (6.9)

teljesüljön. A következő szakaszban ismertetendő algoritmus esetében (6.9)-ben egyetlen szétvágás esetén se fog egyenlőség állni.

A (6.4) felbontással így (6.9) alapján a (6.2) helyett a

max{ max{ f(x) | x ∈ Ti } | 1 ≤ i ≤ p } (6.10)

felső korlátot kapjuk. Ha (6.9)-ben nem teljesül egyenlőség, akkor ez kisebb,azaz pontosabb lehet, mint (6.2).

Vizsgáljuk meg most azt az esetet, amikor valamely j index esetén (6.7)optimális megoldása (6.6)-nak is optimuma. Jelölje zi (i = 1, ..., p) a (6.7)-ből származó becsléseket. Ekkor tehát zj a megoldandó (6.1) feladat egy

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 171: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.1. A módszer elméleti váza 171

ismert megengedett megoldásához tartozó célfüggvényérték. Nyilván teljesenfelesleges azokat az Si halmazokat vizsgálni, amelyek esetében

zi ≤ zj , (6.11)

hiszen ezekben biztosan nem található jobb megengedett megoldás a márismertnél. Ezért ezek a halmazok minden további vizsgálatból kizárhatók.

Mindezek alapján a korlátozás és szétválasztás módszere a következőkép-pen foglalható össze röviden:(i) a megengedett megoldások halmazát, illetve ennek az eljárás során kelet-kező részhalmazait felbontjuk részekre,(ii) minden újonnan keletkező részhalmazon kiszámítjuk a célfüggvény felsőkorlátját,(iii) elhagyjuk azokat a részhalmazokat, amelyek a korlát alapján bizonyít-hatóan nem tartalmaznak jobb megengedett megoldást a már ismertnél,(iv) az (i)–(iii) lépéseket mindaddig folytatjuk, amíg valamennyi, az eljárássorán keletkező részhalmazt el nem hagytunk.

Természetes, hogy a (iv) lépés leállási kritériumának teljesülése maga utánvonja, hogy az eljárás során megtalált legjobb megengedett megoldás opti-mális.

Az algoritmus pontos megfogalmazásához a fentieken túl szükségünk vana következő jelölésekre:

zaz eddig talált legjobb megengedett megoldáshoz tartozó célfüggvény-érték

La megengedett megoldások részhalmazainak még felbontásra váró lis-tája

t az eddig előállított részhalmazok számaS0 az összes megengedett megoldás halmazar az éppen felbontásra kerülő halmaz indexep(r) az Sr halmazt ennyi részre osztjuk felxi a Ti halmazon értelmezett relaxált feladat optimális megoldásazi az Si halmazon a célfüggvény felső korlátjaL + Si az Si halmaz hozzávétele az L listáhozL − Si az Si halmaz törlése az L listából

6.1. algoritmus

1. Begin

2. z := −∞;

3. L := { S0 };4. t := 0;

5. while L 6= ∅ do

6. begin

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 172: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

172 6. A korlátozás és szétválasztás

7. r meghatározása;

8. L := L − Sr;

9. p(r) meghatározása;

10. az Sr ⊂ T1 ∪ ... ∪ Tp(r) lefedés meghatározása;

11. for i := 1 to p(r) do

12. begin

13. St+i := Sr ∩ Ti;

14. (xt+i, zt+i) meghatározása;

15. if zt+i > z then

16. begin

17. if xt+i ∈ S then z := zt+i

18. else L := L + St+i;

19. end;

20. end;

21. t := t + p(r);

22. for i := 1 to t do

23. if zi ≤ z then L := L − Si;

24. end;

25. end;

Az eljárás valójában csak egy keret. A 7., 9., 10. és 14. sorban megadott„utasítások” az éppen megoldandó feladat természetétől függően nyerik el akonkrét formájukat. A 22. és 23. sorban megadott ciklust implicit módon iselvégezhetjük úgy, hogy amikor a 7. sor szerint r-t meghatározzuk, ha zr ≤ z,akkor új r értéket választunk. Ez a módszer csökkenti a számítás mennyisé-gét, de növeli az L lista hosszát. Itt megtalálni az ésszerű kompromisszumotés a fent említett „utasításoknak” a feladathoz legjobban illeszkedő alakjátalkalmazni, mind-mind az algoritmus készítőjének a gondja, akinek így tágtere van ügyessége kihasználására.

Nem érintettük még a végesség kérdését. Ez nem minden esetben biztosít-ható. Önmagában az sem elegendő, ha az S halmaz véges. Ha nem járunk elelég gondosan, és valamely Sr és a belőle származó St+1, ...,St+p(r) halmazokés egy alkalmas i index esetén az a helyzet, hogy

St+i = Sr, St+1 = ... = St+i−1 = St+i+1 = ... = St+p(r) = ∅, (6.12)

és ez a helyzet St+i felbontásakor megismétlődhet, ilyenkor az eljárás cikli-zálhat.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 173: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.1. A módszer elméleti váza 173

Sok különböző feltétel adható, ami biztosítja az eljárás végességét. Mimost egy olyat tárgyalunk, amely a kombinatorikus feladatok szerkezetéhezalkalmazkodik. Mivel az S halmazt és részhalmazait csak implicit módontudjuk kezelni, ezért az eljárás során sohasem fogjuk tudni felismerni, hogymikor állítottunk elő egy tényleges felbontást, vagyis mikor nem a (6.12) hely-zettel van dolgunk. A szituációt áttekinthetővé teszi az, ha az S halmazt ésígy annak részhalmazait is bele tudjuk foglalni egy explicit módon kezelhetővéges U halmazba, illetve annak részhalmazaiba.6.1.1. tétel: Tételezzük fel az alábbiakat:(i) Az S halmaz véges.(ii) Létezik egy U véges halmaz, és teljesülnek az alábbiak. Az algoritmussorán keletkező bármely S részhalmazhoz tartozik egy U részhalmaz úgy, hogyS ⊂ U . Legyen S (6.4), (6.8), (6.9) alakú lefedése S ⊂ T1 ∪ ...∪ Tp. Ekkor Uis lefedhető U = U1 ∪ ... ∪ Up alakban úgy, hogy Ui ∩ Uj = ∅ (i 6= j) és

S ∩ Tj ⊂ Uj ,

továbbá

1 ≤| Uj |<| U | j = 1, ..., p. (6.13)

(iii) Ha egy tetszőleges S halmazhoz tartozó U halmaznak csak egy eleme van,akkor a (6.7) feladat megoldásával megoldjuk (6.6)-ot is.Ekkor a 6.1. algoritmus véges számú lépés után véget ér, és z értéke −∞, hanincs megengedett megoldás, különben pedig az optimális megoldás célfüggvé-nyértéke.

Bizonyítás: Indirekt módon tegyük fel, hogy az eljárás végtelen sok lépésttesz meg. Ekkor az S halmaz végességéből következik, hogy létezik egy Sr

halmaz, amire végtelen sokszor a (6.12) helyzet áll fenn. Tehát létezik azindexeknek egy r0 = r < r1 < ... sorozata, hogy Sr = Srj

, j = 0, 1, ..., ésmind az őt a sorozatban közvetlenül megelőző halmaz felbontásából keletke-zett. Azonban a megfelelő Urj

halmazokra (6.13)-ból nyerjük, hogy

| Ur0| > | Ur1

| > ... > | Urj| > ... ≥ 1,

ami lehetetlen, mert ezek véges halmazok.S véges halmaz, ezért akkor és csak akkor létezik optimális megoldás, ha

van megengedett megoldás, azaz S nem üres. Mivel z-ba csak megengedettmegoldás célfüggvényértéke kerülhet (ld. 17. sor), ha az állítás másodikfele nem igaz, akkor z kisebb, mint az optimális megoldás célfüggvényértéke.Ez csak úgy lehetséges, ha vagy elhagytuk az optimális megoldást tartal-mazó részhalmazt, vagy nem oldottuk meg az ennek megfelelő (6.6) típusúfeladatot. Megmutatjuk, hogy egyik eset sem lehetséges. Legyen Sr az a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 174: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

174 6. A korlátozás és szétválasztás

legmagasabb indexű halmaz, amely még tartalmazta az optimális megoldást,és benne volt az L listában. Sr nem kerülhetett ki semmikor felbontás nélkülaz L listából (22–23. sor), mert most zr > z az eljárás során bármikor.Az Sr halmazzal képzett (6.6) feladatot nem oldottuk meg, hiszen különbenz megegyezne az optimális megoldás célfüggvényértékével. Így az optimálismegoldás Sr egy alkalmas St+i leszármazottjában lesz benne, és a gondo-latmenet r = t + i mellett megismételhető. Azonban a (ii) feltétel szerint| Ur |> | Ut+i |. Így szükségképpen el kell jutnunk egy olyan helyzethez,amikor | Sr |= | Ur |= 1. Ekkor azonban (iii) miatt megoldjuk a megfelelő(6.6) feladatot. Így tehát ellentmondásra jutottunk. Q.E.D.

Ha az U halmaz szerepét a tétel előtt mondottaknak megfelelően képzeljük,azaz U elemei expliciten jól kezelhetők, akkor a tétel (iii) feltétele elég termé-szetes. Hiszen ekkor könnyen megállapítható, hogy S csak bizonyos pontottartalmazhat, amiről viszont könnyen eldönthető, hogy S-hez tartozik-e. Hakorlátos egészértékű változókról van szó, azaz az (1.1) vagy (1.2) típusúakról,akkor U az egészértékűségi követelményeknek eleget tevő vektorok halmazalesz. Több, itt tárgyalható ütemezési feladat esetén pedig U = T .

6.2. Korlátos egész változókat tartalmazófeladat megoldása a korlátozás ésszétválasztás módszerével

Jelölje I az { 1, 2, ..., n } halmaz egy részhalmazát. A megoldandó feladat

max cT x (6.14)

Ax ≤ b (6.15)

x ∈ IRn+ (6.16)

0 ≤ xj ≤ gj j ∈ I (6.17)

xj ∈ ZZ j ∈ I, (6.18)

ahol A (m × n)-es mátrix, c n-dimenziós, b m-dimenziós vektor, gj (j ∈ I)pedig pozitív egész. Feltesszük, hogy valamennyi együttható racionális.

Két kérdésre kell felelnünk: (i) hogyan relaxáljuk a feladatot, (ii) hogyantörténjen a megengedett megoldások halmazának felbontása.

Természetes gondolat, hogy a (6.18) feltétel elhagyásával keletkező (6.14)–(6.17) lineáris programozási feladatot használjuk fel becslésként. A hatékony

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 175: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.2. Korlátos egész változókat tartalmazó feladat megoldása. . . 175

szimplex módszer ugyanis rendelkezésünkre áll, és remélhető, hogy a kaphatóbecslés nem lesz túl rossz.

A továbbiakban mindvégig feltesszük, hogy a (6.14)–(6.17) feladatnak vanoptimális megoldása, hiszen ellenkező esetben az egészértékű programozásifeladatnak sem lehet optimuma.

A megengedett megoldások halmazát mindig valamely egész változó érté-kei szerint fogjuk felbontani. Erre két természetes módszer kínálkozik. Azegyik az, hogy ha az eljárást xj szerint végezzük, akkor gj + 1 részhalmaztképezünk xj lehetséges gj +1 különböző értéke szerint. Ez azonban még nemtúl nagy változó szám esetén is igen sok ág létrehozását igényli. Elméleti-leg sem indokolt valamennyi ág megszerkesztése, de ennek részleteire itt nemtérünk ki.

Ezért a következő módszert választjuk: Legyen a felső becslést adó opti-mális szimplex tábla egy sora

xk = dk0 −∑

j∈NB

dkjxj (k ∈ I ∩ B), (6.19)

ahol B a bázisbeli, NB a bázison kívüli változók indexeinek halmaza. Haminden k ∈ I mellett dk0 egész, akkor a folytonos és a diszkrét optimum egy-beesik, azaz a megfelelő részfeladatot megoldottuk. Számunkra az ellenkezőeset az érdekes, amikor dk0 = ⌊dk0⌋ + fk és 0 < fk < 1. Ekkor a halmaztkét részre osztjuk az xk változó értékei szerint. A két ágat az xk ≤ ⌊dk0⌋és xk ≥ ⌊dk0⌋ + 1 egyenlőtlenségek határozzák meg, amelyeket az új rész-feladatok becslésének kiszámításakor csatolunk a feladat feltételeihez. Haegy részhalmaz többszörös felbontás útján keletkezett, akkor természetesentöbb ilyen feltétel is szerepelni fog, még az sincs kizárva, hogy ugyanarra aváltozóra vonatkozók is, de az utóbbiak természetesen nem lehetnek ellent-mondásban egymással. A keletkező két részhalmaz közül az elsőt alsó ágnak,a másodikat felső ágnak fogjuk nevezni.

Mielőtt a módszer további részleteit kidolgoznánk, megmutatjuk, hogya 6.1.1. tétel feltételei egy alkalmasan választott U halmazzal teljesülnek,így a módszer véges, és megtalálja az optimumot, ha az egyáltalán létezik.Legyenek az xj (j ∈ I) rögzített számok, melyek eleget tesznek a (6.17),(6.18) követelménynek. Tekintsük a

max cT x

Ax ≤ b

x ≥ 0

xj = xj j ∈ I(6.20)

feladatot. Ennek megengedett megoldásai alkotják a vizsgált egészértékűprogramozási feladat összes olyan megengedett megoldását, ahol xj = xj

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 176: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

176 6. A korlátozás és szétválasztás

(j ∈ I). A (6.20) lineáris programozási feladatnak vagy van optimális megol-dása, vagy egyáltalán nincs megengedett megoldása. A nemkorlátosság esetenem fordulhat elő, mert ezt korábban azzal zártuk ki, hogy feltettük, hogya (6.14)–(6.17) feladatnak van optimuma. Nyilvánvaló, hogy az egészértékűprogramozási feladat megoldása során a (6.20) megengedett, de nem optimá-lis megoldásait figyelmen kívül hagyhatjuk, és az optimális megoldások közülis elegendő csak egyet számba venni. Ez természetesen automatikusan megis történik, ha a részfeladatoknál a becslést a szimplex módszerrel számoljuk.Azt kaptuk tehát, hogy a (6.14)–(6.18) feladat megengedett megoldásainakhalmaza egy véges halmazra redukálódik, ahol a vektorokat egyértelműenmeghatározzák az I-beli komponenseik. Jelölje xI az x vektorból képzettazon vektort, amely a nem I-beli komponensek elhagyásával keletkezett. Le-gyen

U = {xI | 0 ≤ xj ≤ gj ; xj ∈ ZZ }.Ekkor U véges halmaz. A fenti felbontás U-ra párhuzamosan végezhető. Azalsó ágon

Ua = {xI | xk ≤ ⌊dk0⌋},a felső ágon pedig

Uf = {xI | xk ≥ ⌊dk0⌋ + 1 }.Azonnal látható, hogy a 6.1.1. tétel (i) és (ii) követelménye teljesül. Azelőbbi gondolatmenet szerint (iii) is igaz, hiszen ekkor a megoldandó lineárisprogramozási feladat egy alkalmas (6.20) feladat lesz.

Most pedig rátérünk a (6.19) sor további vizsgálatára. Célunk a 4. fejezet-ben tárgyalt Gomory-vágások elméletének alkalmazásával gyorsan számíthatóbecslést adni az egyes ágakra. Jelölje J−(J +) a következő indexhalmazt:

J−(J +) = { j ∈ NB | dkj < 0 (dkj > 0)}.

Az alsó ágon a csatolandó feltétel

xk − ⌊dk0⌋ = fk −∑

j∈NB

dkjxj ≤ 0

lesz. Bevezetve a megfelelő s ≥ 0 mesterséges változót az

s = −fk −∑

j∈J−

(−dkj)xj −∑

j∈J+

(−dkj)xj

sort kapjuk. Ezt hozzávehetjük a szimplex táblához. A Gomory-módszernéllátottakhoz hasonlóan a szimplex tábla duál megengedettsége megmarad,azonban a primál megengedettség elromlik, hiszen most s értéke −fk, ami ne-gatív. Ezért duál lépésekkel kell az optimumhoz eljutni. Az első báziscserénél

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 177: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.2. Korlátos egész változókat tartalmazó feladat megoldása. . . 177

a célfüggvény változása

Pak = minj∈J+

d0j

dkjfk. (6.21)

Hasonló módon járhatunk el a felső ágon. Itt az

xk − ⌊dk0⌋ = fk −∑

j∈NB

dkjxj ≥ 1

feltételből kell kiindulnunk. A szimplex táblához csatolandó sor

s = (fk − 1) −∑

j∈J−

dkjxj −∑

j∈J+

dkjxj

lesz. Az első báziscserénél a célfüggvény csökkenésére a

Pfk = minj∈J−

d0j

dkj(fk − 1) (6.22)

érték adódik. A Pak és Pfk mennyiségek kiszámításával két dolgot nyertünk.Egyrészt a szimplex módszer teljes apparátusának bevetése nélkül kaptunkegy-egy felső korlátot a két új részhalmaz esetében, hiszen, ha a felbontat-lan részhalmazon z volt a korlát, akkor az alsó ágon z − Pak, a felső ágonpedig z − Pfk lesz. Másfelől azonban magán a felbontatlan részhalmazon ispontosítottuk a korlátot, az új érték

max { z − Pak, z − Pfk }. (6.23)

Ha az eddig talált legjobb megengedett megoldás célfüggvényértéke z, és a

z ≥ z − Pak, z ≥ z − Pfk, z ≥ max { z − Pak, z − Pfk }

egyenlőtlenségek valamelyike teljesül, akkor a megfelelő ág elhagyható. A(6.23) becslés javítható a (4.28) vágás segítségével. Ebből a célfüggvény vál-tozására a

P = minj∈NB

d0jfk

dkj

(6.24)

becslést kapjuk, ahol

dkj =

dkj ha j ∈ J + \ Ifkdkj

fk−1 ha j ∈ J− \ Ifkj ha fkj ≤ fk, j ∈ Ifk(fkj−1)

fk−1 hafkj ≥ fk, j ∈ I,

(6.25)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 178: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

178 6. A korlátozás és szétválasztás

és fkj a dkj elem törtrészét jelöli. Legyen j ∈ J +. Megmutatjuk, hogy

d0jfk

dkj

≥ d0jfk

dkj, (6.26)

vagyis, ha az xj változó kerül be a bázisba, akkor nagyobb lesz a célfüggvénycsökkenése, ha a (6.24) alapját képező feltétel alapján végezzük a báziscserét,mintha a (6.21) szerint dolgoznánk. Mivel itt a számlálók azonosak, ezért elégcsak a nevezőkkel foglalkozni. Ha j 6∈ I, akkor dkj = dkj . Vizsgáljuk a j ∈ Iesetet. Mindenképpen igaz, hogy

fkj ≤ dkj .

Ez biztosítja (6.26) teljesülését, ha dkj értéke (6.25) harmadik sorából szár-mazik.

A másik esetben azonban azt kapjuk, hogy

fk(fkj − 1)

fk − 1≤ fk ≤ fkj ≤ dkj ,

tehát ismét (6.26) jobb oldalának a nevezője nagyobb. Hasonló módon vet-hetjük össze (6.22) és (6.26) tagjait. Így mindenképpen igaz, hogy

Pk ≥ min{Pak, Pfk }.

A módszerrel azonban az alsó és felső ág becslését is javíthatjuk, ha xk helyettaz alkalmasan választott, (4.26)-ban definiált x′

k változó szerint ágazunk el.Emlékeztetünk arra, hogy a P értéket adó (4.28) vágás (4.25) javítása volt.Az utóbbi két különböző vágás egyesítéséből származott, pontosan abból akettőből, amely a Pak, illetve Pfk értéket adta. Végezzük el ezekre külön-külön a megfelelő javítást. A feladathoz való csatolásuk után belőlük Pak,illetve Pfk helyett a következő értékeket kapjuk:

P ′ak = min

j∈J+

d0jfk

dkj

, P ′fk = min

j∈J−

d0jfk

dkj

.

A fentiek alapján nyilvánvaló, hogy

P ′ak ≥ Pak és P ′

fk ≥ Pfk.

Az eddig mondottak még nem elégségesek a 6.1. algoritmus megfelelőváltozatának megszerkesztéséhez, mert két kérdést nem döntöttünk el, neve-zetesen, hogy melyik legyen a felbontandó csúcs, és ott melyik változó szerintágazzunk el. Ezekre a kérdésekre nem lehet matematikai egyértelműséggel

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 179: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.2. Korlátos egész változókat tartalmazó feladat megoldása. . . 179

felelni, azaz nincsen olyan választási szabály, amely valamilyen egzakt krité-rium alapján minden esetben jobb volna a többinél. Ezért mindkét problé-mára ismertetünk néhány, a gyakorlatban alkalmazott módszert.

A felbontandó csúcs kiválasztásának szabályai1. A LIFO-szabály

A LIFO betűszó az angol „last in first out” (ami magyar fordításban annyitjelent, hogy „utolsónak jön, elsőnek megy”) kezdőbetűiből származik. Ez egyigen általános szabály, a legkülönbözőbb kombinatorikus algoritmusokban ke-rül alkalmazásra, lényege, hogy az utolsónak keletkező objektumot dolgozzuktovább fel. Esetünkben ez azt jelenti, hogy az utolsó olyan ágat bontjukfel, amelynek a felső korlátját a (duál) szimplex módszerrel kiszámítottuk. Akeletkező két ág közül természetesen az egyiket tárolni kell, a másikkal dolgoz-hatunk tovább. Tárolni azt az ágat fogjuk, amelyiknek az előre kiszámítottbecslése rosszabb, vagyis azt, amelyikhez a P ′

ak és P ′fk (vagy Pak és Pfk) ér-

tékek közül a nagyobbik tartozik. A kiválasztott ágat leíró feltételt azonnalcsatoljuk a szimplex táblához, amely így duál, de nem primál megengedettlesz, és duál szimplex módszerrel megkereshető az optimális bázismegoldásés a hozzá tartozó tábla. A szabály előnye, hogy amíg előre haladunk, azazelágazunk, addig a duál szimplex módszernek mindig csak a második fázisáravan szükségünk. A szigorúan vett LIFO-szabály azt is tartalmazza, hogy haegy ágon a munkát befejeztük, akár azért, mert a folytonos optimum egészér-tékű volt, akár azért mert a becslés z alá esett, akkor az utolsónak keletkezett,még felbontatlan ág vizsgálatával kell folytatni a munkát. Ez a stratégia mi-nimalizálni igyekszik a felbontatlan ágak számát, ami egyetlen pillanatbansem lesz nagyobb, mint

j∈I

gj + 1.

Ez kétség kívül előny, hiszen a korlátozás és szétválasztás egyik legnagyobbgyakorlati problémája az ágak tárolása. Másfelől azonban hátrányokkal isjár, mert különösen nagy, sok egészértékű változót tartalmazó feladat ese-tén a z − P ′

ak és z − P ′fk felső korlátok nem adnak elég pontos tájékoztatást

az ágban található egészértékű megengedett megoldások célfüggvényértékére.Ehhez járul még, hogy ha az elágazást meghatározó változót ügyesen sike-rült megválasztani (ld. alább), akkor kicsi az esély arra, hogy az eltároltágban találjuk meg az optimumot, pedig most erre az ágra hamar rákerülheta sor. Mindez oda vezet, hogy nagy feladatok esetén a LIFO-szabály alkal-mazása mellett az optimális megoldásra gyakran csak későn találunk rá, amimindenképpen lassítja a módszert. Ezért dolgoztak ki egyéb szabályokat is.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 180: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

180 6. A korlátozás és szétválasztás

2. A legjobb korlát szerinti választásA módszer alapgondolatából természetesen adódik az a szabály, hogy min-

dig azt az ágat bontsuk tovább, amelyiknél a felső korlát a legnagyobb. Azelső szabály tárgyalása végén mondottakat azzal egészíthetjük ki, hogy mi-nél több elágazás vezet egy ághoz, vagyis az ág által reprezentált részfeladatminél kisebb, annál inkább várható, hogy a becslés pontos legyen. Így enneka szabálynak a merev alkalmazása esetén olyan helyzet állhat elő, hogy afelbontatlan ágak nagyjából azonos mélységben vannak (azaz mindegyikheznagyjából azonos számú elágazás vezet), és így számuk igen megszaporodhat.Így ez és a következő szabály értelmezhető úgy is, hogy amíg előrehaladunk,addig a LIFO-szabályt alkalmazzuk, de amikor ágat kell cserélni, akkor amásik szabályt.

3. A becslésen alapuló szabályA becslés itt hétköznapi értelemben vett becslést jelent, olyan értéket te-

hát, amely sem nem alsó, sem nem felső korlátja a függvénynek. Az egyikhasználatos becslés az egészre való kerekítés hatásainak összege, azaz

zr −∑

k∈I

min{P ′ak, P ′

fk},

ahol P ′ak = P ′

fk = 0, ha xk egész. Itt mindegyik tagot egy minimumképzésselkapjuk meg. Egyszerűbben számítható becslés a

zr − λ∑

k∈I

min{fk, 1 − fk}.

Itt λ értékét kell megválasztani. Ennek egy szokásos módja:

λ = (z0 − z)/s0,

ahol s0 az S0 halmazon számított∑

k∈I

min{fk, 1 − fk}

érték. Mindkét becslés azt méri, hogy a jelenlegi folytonos optimumban ta-lálható nem-egészértékűség kijavítása még mekkora romlást fog okozni. Amásodik ezt a már elért megengedett megoldás célfüggvényértékéhez és ajelenlegi felső korláthoz viszonyítja. Ezért ezt újra kell számolni, ha jobbmegengedett megoldást kapunk.

Szokásos még a 2. és 3. szabály olyan összekapcsolása, hogy a legjobbfelső korláttal rendelkező részhalmazt választjuk ki azok közül, amelyeknél abecslés nem süllyed egy adott korlát alá.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 181: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.2. Korlátos egész változókat tartalmazó feladat megoldása. . . 181

A felbontást meghatározó változó kiválasztásának szabályaiElágazni mindig olyan változó szerint fogunk, amelynek egésznek kell len-

nie, de értéke a pillanatnyi bázismegoldásban nem az.

1. A törtrész nagyságán alapuló szabályJelölje J az egészértékű változók közül azokat, amelyeknek értéke a pil-

lanatnyi bázismegoldásban nem egész. Az elágazást meghatározó változóindexe az a k ∈ J , amelyre

min{fk, 1 − fk} = max{min{fj , 1 − fj} | j ∈ J }teljesül. A szabály mögötti gondolat az, hogy a legkevésbé egész változóegészre való kerekítése okozza a legnagyobb változást. A gyakorlatban aza vélemény alakult ki róla, hogy csak túlságosan lokális információt veszfigyelembe, és ezért nem hatékony.

2. A korlátokon alapuló szabályokItt szabályok egy olyan családjáról van szó, ahol az elágazást a célfügg-

vény változásáról szerzett ismereteink alapján határozzuk meg. Jelölje z afelbontandó csúcsban a folytonos optimumot, jelentse J ismét azt a halmazt,mint fent, k pedig a kiválasztott változó indexe legyen.

Tekintsük a következő öt kiválasztási módot:(i) max{ z − P ′

ak, z − P ′fk } = maxj∈J max{ z − P ′

aj , z − P ′fj }

(ii) max{ z − P ′ak, z − P ′

fk } = minj∈J max{ z − P ′aj , z − P ′

fj }(iii) min{ z − P ′

ak, z − P ′fk } = maxj∈J min{ z − P ′

aj , z − P ′fj }

(iv) min{ z − P ′ak, z − P ′

fk } = minj∈J min{ z − P ′aj , z − P ′

fj }(v) | P ′

ak − P ′fk | = maxj∈J | P ′

aj − P ′fj |.

Első pillanatra úgy tűnik, mintha az (i) szabály volna a legjobb, hiszen ittmarad a legnagyobb a felső korlát. Vegyük észre azonban, hogy bárhogyanosszuk is két részre a halmazunkat, a két részbe együttesen ugyanazok az egé-szértékű pontok fognak tartozni, nevezetesen a felbontandó halmaz elemei.Így valójában (i) nem a legjobb, hanem a legpontatlanabb korlát szerinti vá-lasztást jelenti. Ugyanez a gondolatmenet azt is mutatja, hogy (ii) a legpon-tosabb korlátot adó változót részesíti előnyben. A célfüggvény szempontjából(iii) a lehető legegyenletesebben osztja szét a megengedett megoldásokat: haa korlátok pontosak volnának, akkor mindkét ágban közel azonos célfüggvé-nyértékű megengedett megoldások volnának. Ez nem előnyös, mert szintebizonyosan mindkét ágat fel kell bontani. A (iv) és (v) szabály éppen ellen-kezőleg azt célozza, hogy „összegyűjtse”az egyik halmazba a jó megengedettmegoldásokat, és így a másik halmaz felbontását megtakaríthassuk. Hasonlószabályok alkalmazhatók még a becslések alapján is.

3. Prioritási szabálySzámos programrendszer megengedi, hogy a felhasználó előre meghatároz-

hassa az egészértékű változók fontossági sorrendjét, és az eljárás az ebben a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 182: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

182 6. A korlátozás és szétválasztás

sorrendben az első olyan változó szerint történik, amelynek értéke a pillanat-nyi bázismegoldásban nem egész. Ezen szabály alkalmazhatóságának feltételetermészetesen az, hogy előzetes információval rendelkezzünk a változók fon-tosságáról, ekkor azonban igen hatékony lehet.

* * *Alkalmazzuk a módszert a következő feladatra:

max x0 = 2x1 + x2

3x1 − 5x2 ≤ 03x1 + 5x2 ≤ 15

x1, x2 ∈ ZZ+.

(6.27)

Vezessük be a két feltételhez az x3, illetve x4 nemnegatív, kiegészítő válto-zókat, amelyek segítségével egyenlőtlenségekből egyenleteket kapunk. Ezektermészetesen szintén egészértékűek. Az így módosított feladat optimálisfolytonos megoldásához tartozó duál szimplex tábla:

-x3 -x4

x0 13/2 7/30 13/30x1 5/2 1/6 1/6x2 3/2 -1/10 1/10x3 0 -1 0x4 0 0 -1

Itt mind x1, mind x2 értéke tört. Az x1 változó sorában nincs negatívegyüttható, így Pf1 sem számítható a (6.22) képlet alapján. Ennek az azoka, hogy éppen a negatív együtthatók hiányából következően x1 lehetségesmaximális értéke éppen 5/2. Éppen ezért az x1 ≤ 2 és x1 ≥ 3 ágak közül azutóbbi üres. Viszont Pa1 számítható, és ez f1 = 1/2 miatt nem más, mint

1

2min{ 7

5,

13

5} =

7

10.

Így a célfüggvényre ebben az ágban 5.8 felső korlát adódik, ami valójában 5,hiszen a célfüggvény egészértékű.

Más a helyzet az x2 változó esetében, hiszen itt mind az x2 ≤ 1, mind azx2 ≥ 2 ág létezik, az előbbi egyszerű módon egyik sem szűrhető ki. Itt isf2 = 1/2.

Pa2 =1

2· 13

10· 10 =

13

6, Pf2 =

1

2· 7

30· 10 =

7

6.

Így az alsó ágban a felső becslés 4 13 , míg a felső ágban 5 1

3 . Megjegyezzük,hogy

P ′a1 = Pa1, P ′

a2 = Pa2, P ′f2 = Pf2,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 183: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.2. Korlátos egész változókat tartalmazó feladat megoldása. . . 183

mivel az ezek meghatározásában szereplő együtthatók abszolút értéke azonosa törtrészükkel.

Érdemes tehát az x1 változó szerint elágazni. Ez most nem jelent ténylegeselágazást, hiszen az egyik ágról tudjuk, hogy üres. Az x1 ≤ 2 feltételt az x5

nemnegatív változó bevezetésével

x1 + x5 = 2

alakban írjuk. Innen

x5 = −1

2− 1

6(−x3) − 1

6(−x4).

Ezt a sort csatoljuk a szimplex táblához. Az első báziscserénél x5 megy ki abázisból, és helyette x3 jön be. Ekkor a tábla

-x5 -x4

x0 29/5 7/5 1/5x1 2 1 0x2 9/5 -3/5 1/5x3 3 -6 1x4 0 0 -1x5 0 -1 0

Most csak az x2 változó szerint ágazhatunk el. Jelenleg f2 értéke 4/5. Így

Pa2 =4

5, Pf2 =

7

15.

Mivel a felső ágban kapjuk a jobb becslést, itt folytatjuk a munkát. Az x2 ≥ 2feltételhez bevezetjük a megfelelő x6 változót, amelynek a bázison kívüliekkelvaló előállítása

x6 = −1

5− 3

5(−x5) +

1

5(−x4).

Ezt csatolva a táblához az első báziscsere után az a következő lesz:-x6 -x4

x0 16/3 7/3 2/3x1 5/3 5/3 1/3x2 2 -1 0x3 5 -10 -1x4 0 0 -1x5 1/3 -5/3 -1/3x6 0 -1 0

Itt x1 és a szintén egészértékű x5 változó szerint is el lehet ágazni. Azonbanaz első elágazáshoz hasonlóan az x1-ből származó felső és az x5-ből származóalsó ág üres. Azért ágazunk el x1 szerint, mert az a feladat eredeti változója.Ekkor

Pa1 =2

3min{ 7

5, 2 } =

14

15,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 184: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

184 6. A korlátozás és szétválasztás

ahol a d16 = 5/3 értékkel számoltunk, és így felmerül a lehetősége, hogy P ′a1

jobb becslést ad. Valóban

P ′a1 =

2

3min{7

2, 2 } =

4

3.

Ennek meghatározásakor nem x1-től követeltük meg, hogy értéke az 1-et nehaladja meg, hanem x1 + x6-tól. Ezért a bevezetendő x7 új mesterségesváltozóval felírt egyenlet

x1 + x6 + x7 = 1

lesz. Innen

x7 = −2

3− 2

3(−x6) − 1

3(−x4).

A báziscsere után a szimplex tábla

-x6 -x7

x0 4 1 2x1 1 1 1x2 2 -1 0x3 7 -8 -3x4 2 2 -3x5 1 -1 -1x6 0 -1 0x7 0 0 -1

Ez az x1 = 1, x2 = 2 egészértékű megoldást tartalmazza. Egyetlen felbon-tásra váró részhalmazunk van, mely az x1 ≤ 2 és x2 ≤ 1 feltételek hozzávé-telével adódott. Most az utóbbihoz kell bevezetni az x6 változót, melynekértéke a második szimplex tábla alapján

x6 = −4

5+

3

5(−x5) − 1

5(−x4).

A megfelelő folytonos optimum eléréséhez két báziscserét kell végeznünk. Azezt tartalmazó tábla:

-x3 -x6

x0 13/3 2/3 13/3x1 5/3 1/3 5/3x2 1 0 1x3 5 -1 0x4 5 -1 -10x5 1/3 -1/3 -5/3x6 0 0 -1

Ez még nem egészértékű megoldás. Azonban a becslés 13/3, azaz 5 alásüllyedt. Mivel egy 4 célfüggvényértékkel rendelkező megengedett megoldást

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 185: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.3. Az adatszerkezet 185

ismerünk, és ebben az ágban sem lehet jobb megengedett megoldást találni,így az eljárást befejezhetjük.

x1 = 1x2 = 2megoldás

&%'$

64

4/3

­­

­­

­­&%'$

55 1/3

7/15

x1 = 1

JJ

JJ

JJ

x2 ≥ 2

JJ

JJ

JJ

&%'$

7 −∞

x1 = 2

­­

­­

­­

&%'$

44 1/3

4/5

x2 ≤ 1

­­

­­

­­

&%'$

25 4/5

7/10

x1 ≤ 2

&%'$

16 1/2

JJ

JJ

JJ

&%'$

3 −∞

x1 ≥ 3

6.1. ábra: A példa megoldásának menete. A körök felső felében a büntetés,az alsó felében pedig a felső becslés szerepel.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 186: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

186 6. A korlátozás és szétválasztás

6.3. Az adatszerkezetAz előző szakaszban a példa menetét egy fán szemléltettük. A statikus ábránnem látszik, de a fa az eljárás során állandóan változott. A fával kapcsolat-ban három lényeges műveletet végeztünk: (i) új ágakat illesztettünk hozzá,vagyis építettük, (ii) már bejárt részeit töröltük, (iii) egyik végpontjáról átug-rottunk egy másikra. Felmerül a kérdés, hogyan lehet számítógépen belül fátúgy tárolni, hogy mindez ott is elvégezhető legyen. Kívánalmunkat megtold-hatjuk azzal, hogy a tárolást gazdaságosan, vagyis a felhasznált memóriávaltakarékoskodva valósítsuk meg.

Két ellentétes megoldás kínálkozik. Vagy minden ágról minden informá-ciót tárolunk, vagy minden ágról csak a keletkezését és a vele történteketleíró legszükségesebb adatokat. Az előbbi általában maga után vonja, hogyminden ág leírásához nagy memóriaterületet kell lefoglalni, amit csak töre-dékében tudunk ténylegesen kihasználni. Különösen akkor, ha a fa mélységenagyobb, számolhatunk azzal a jelenséggel, hogy egyes ágakból számos to-vábbi ág származott, ezért a kezdeti értékadásokat igen sokszor kell teljesenfeleslegesen tárolni.

Az alább vázlatosan ismertetendő második megoldás kidolgozását elsősor-ban magasabb szintű nyelvek támogatják.

Most a 6.1. algoritmus egyes lépéseit dolgozzuk ki részletesebben. Azegyszerűség kedvéért azt az esetet tárgyaljuk, amikor minden ág valamelyváltozó rögzítésével jön létre. A felbontandó ág pedig az utódok közül vala-melyik vagy, ha ilyenek nincsenek, akkor a legjobb felső korláttal rendelkezőág.

Ennek megfelelően a 6.1. algoritmus 9. sorában p(r) értékét úgy kapjukmeg, hogy ki kell választani a felbontást meghatározó változót, és p(r) ezenváltozó lehetséges értékeinek száma lesz. Így a 10. sorban a fedést úgy kapjukmeg, hogy a Tr halmazt p(r) részre bontjuk a változó különböző értékeinekmegfelelően. Az új ágak formálisan az algoritmus 13. sorában keletkeznek.Egy-egy ágat az alábbi adatstruktúrával jellemzünk:

record Ágbegin

Ős : Ág;Korlát : integer;Változó : integer;Érték : integer;Felbontás : boolean;Utódok : boolean;suc : Ág

end;

Itt az Ős változó egy mutató, amely a memóriának arra a részére mutat(annak a résznek a kezdőcímét tartalmazza), ahol az adott ág közvetlen ősét

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 187: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.3. Az adatszerkezet 187

jellemző ugyanilyen adatstruktúra található. A mutató különleges értéke anone, amikor az ős nem létezik. Ez csak egyetlenegy feladat, az S0 esetébenfordul elő. A következő három egész változó jelentése:Korlát: az adott ághoz kiszámított felső korlát,Változó: annak a változónak az indexe, amelyik különböző értékei szerinti

felbontás útján keletkezett az adott ág a közvetlen őséből,Érték: az előbbi változó értéke az adott ágban.

A két Boole-változó értéke csak igaz (true) vagy hamis (false) lehet. Azigaz értéket a következő esetben veszik fel:Felbontás: az adott ág felbontásra került,Utódok: az ágnak van még nem feltétlenül közvetlen, felbontásra váró

utóda.A suc változó használatára később térünk vissza.Az Ág record csak egy adatstruktúrát jelent, más szóval egyfajta vál-

tozót, amelyből létrehozhatunk konkrét példányokat ugyanúgy, mint ahogyaz integer (egész) vagy a real (valós) is csak a változók egy típusát jelöli.Igazi egész vagy valós változókhoz úgy jutunk, hogy integer vagy real típusúváltozókat deklarálunk. Tegyük fel, hogy programunk deklarációs részébenszerepel a

Csúcs: Ág;sor. Ez azt jelenti, hogy a Csúcs egy Ág típusú változó, amelynek létezikmindazon attribútuma, ami az Ág record leírásában szerepel. Ha a Csúcsváltozó ősére vagy korlátjára akarunk hivatkozni, akkor azt a Csúcs.Ős, illetveCsúcs.Korlát leírásával érhetjük el.

A 6.1. algoritmusban leírttól kissé eltérő módon nemcsak a felbontatlanágakat tároljuk egy listában, hanem valamennyit. Ennek a listának a neveFa lesz, használatára még visszatérünk.

Az Ág record csak az utolsó felbontásra vonatkozó adatokat tartalmazza.Ezért a korlát meghatározásakor (az algoritmus 14. sora) rekonstruálni kellaz ághoz vezető összes értékadást. Ezt szolgálja az alábbi programrészlet,amely egyben az Ág típusú változók használatát is bemutatja. Feltesszük,hogy x a változók vektora, és kezdetben a Csúcs nevű, Ág típusú változótartalmazza azt az ágat, amelyet rekonstruálni kell:while Csúcs 6=none dobegin

x[Csúcs.Változó]:=Csúcs.Érték;...

Csúcs:=Csúcs.Ős;end;Itt a harmadik sorban állítjuk be a Csúcs.Változó indexű változót az adottágat jellemző Csúcs.Érték értékre. Majd esetleges további műveletek elvég-zése után a Csúcs nevű változó értéke önmaga őse lesz, ilyeténképpen hala-

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 188: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

188 6. A korlátozás és szétválasztás

dunk visszafelé a fában. Mindezt addig kell tenni, amíg valamennyi elágazástfel nem dolgoztuk, azaz az S0-hoz vissza nem érkeztünk.

A lista úgy képzelendő el, hogy minden y elemének van egy rákövetkezője,melyet y.suc-kal jelölünk. Az utolsó elem rákövetkezője none. A lista elsőeleme pedig a lista fejének rákövetkezője lesz. Az alábbi programrészlet a Falista végigolvasását mutatja be, esetleges további tevékenységekkel együtt:Csúcs:=Fa.suc;while Csúcs 6=none dobegin

...Csúcs:=Csúcs.suc;

end;Az új ágaknak a listába való felvételét akkor végezhetjük el a legegysze-

rűbben, ha azokat mindig a lista elejére tesszük. Tegyük fel, hogy egy Pontnevű, Ág típusú változót kell a Fa listához csatolnunk. Ekkor a következőkét utasítást kell kiadnunk:Pont.suc:=Fa.suc;Fa.suc:=Pont;Ezekkel a Pont változót Fa és rákövetkezője közé illesztettük, hiszen Fa rá-következője Pont lesz, a Pont rákövetkezője pedig Fa korábbi rákövetkezője.

Most pedig bemutatjuk, hogyan lehet a listában csak azokat az ágakatmegtartani, amelyekre még szükség van. Ezek a felbontásra váró ágak ésezek ősei. Az utóbbiak azért kellenek, hogy az ág felbontásakor rekonstruálnitudjuk az ágat meghatározó feltételeket.

A feladatot három lépésben végezzük el. Először valamennyi ág Utódoknevű változóját false értékre állítjuk, és a második lépésben ezt akkor éscsak akkor változtatjuk true-ra, ha van még felbontásra váró utóda. Vé-gül a harmadik lépésben a felesleges ágakat töröljük. Itt feltételezzük, hogyvan egy általános Out függvény, amely egy paraméterként megadott listábólannak ugyancsak paraméterként megadott elemét kiveszi, ami a rákövetke-zések megfelelő beállítását jelenti. Továbbá egy Free eljárással az elem általa memóriából lefoglalt helyet felszabadítjuk. Felhasználjuk a Pont nevű, Ágtípusú segédváltozót.

6.2. algoritmus1. Csúcs:=Fa.suc;

2. while Csúcs 6=none do

3. begin

4. Csúcs.Utódok:=false;

5. Csúcs:=Csúcs.suc;

6. end;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 189: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.4. Megjegyzések és irodalom 189

7. Csúcs:=Fa.suc;

8. while Csúcs 6=none do

9. begin

10. if not Csúcs.Felbontás and Csúcs.Becslés > z

11. then

12. begin

13. Pont:=Csúcs.Ős;

14. while Pont6=none do

15. begin

16. Pont.Utódok:=true;

17. Pont:=Pont.Ős;

18. end;

19. end;

20. Csúcs:=Csúcs.suc;

21. end;

22. Csúcs:=Fa.suc;

23. while Csúcs 6=none do

24. begin

25. Pont:=Csúcs.suc;

26. if (not Csúcs.Utódok and Csúcs.Felbontás) or Csúcs.Becslés ≤ z

27. then

28. begin

29. Out(Fa,Csúcs);

30. Free(Csúcs);

31. end;

32. Csúcs:=Pont;

33. end;

A blokkstruktúrált és egyéb nyelvekben mutató típusú változók dekralál-hatók, és így támogatják az Out és Free eljárásoknak megfelelő eszközökkifejlesztését. Más esetekben, amikor a listakezelést nem szolgáltatja auto-matikusan a nyelv, magunk is könnyen megoldhatjuk. Ilyenkor a listát egymegfelelő méretű tömbben helyezzük el, és egy paraméter alkalmas beállítá-sával (pl. az Ős értékét (-1)-re változtatjuk) jelezzük, hogy az adott oszlopújra felhasználható.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 190: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

190 6. A korlátozás és szétválasztás

6.4. Megjegyzések és irodalomA korlátozás és szétválasztás elve először az [57] dolgozatban bukkant fel.Ez tehát egyike a legkorábbi egészértékű programozási dolgozatoknak. Azebben megoldott feladat megegyezik a 6.2. szakasz feladatával. A korlátokszámítása itt még minden esetben a szimplex módszerrel történik. A vágá-sok alapján számított korlátokat a [8] és [86] dolgozatban vezették be. Akülönböző becslések jó összefoglalását adja [36].

A hátizsák feladat esetében igen könnyű megszerkeszteni a korlátozás ésszétválasztás módszerét, mert itt az LP-relaxáció optimális megoldása expli-cit módon megadható. Igaz ugyanis a következő6.4.1. tétel: Legyenek az aj , cj (j = 1, ..., n) és b pozitív számok úgy, hogy

cj

aj≥ cj+1

aj+1j = 1, ..., n − 1. (6.28)

Ekkor a

max∑n

j=1 cjxj∑n

j=1 ajxj ≤ b

0 ≤ xj ≤ 1 j = 1, ..., n

feladatnak van olyan x optimális megoldása, és ahhoz létezik egy p index úgy,hogy

(i) j < p esetén xj = 1,(ii) j > p esetén xj = 0,

továbbá

n∑

j=1

aj xj < b

akkor és csak akkor, han

j=1

aj < b. Q.E.D.

A tétel tehát azt mondja ki, hogy a folytonos hátizsák feladat lényegébena (6.28)-ban megkövetelt rendezéssel megoldható.

Példaként megemlítjük, hogy az utazó ügynök feladatra a hozzárendelésifeladat alapján vagy minimális kifeszítő fa keresésével szerkeszthető egzaktkorlátozás és szétválasztás típusú eljárás.

A módszert adaptálták több processzorral rendelkező gépre is [18], [74].Az utóbbi dolgozatban sikerült a párhuzamos működés lehetőségeit kihasz-nálva a nagyon nehéz, ún. kvadratikus hozzárendelési probléma esetében amegoldható méretet valamelyest növelni.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 191: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

6.4. Megjegyzések és irodalom 191

Felmerül még a lehetősége, hogy a korlátozás és szétválasztás módszerétmint közelítő algoritmust használjuk olyan módon, hogy egy ágat nemcsakakkor dobunk el, ha a korlátja rosszabb, mint a legjobb megengedett megol-dás célfüggvényértéke, hanem akkor is, ha az utóbbihoz képest egy rögzítetthibahatáron belül van. Az [50] dolgozat kimutatta, hogy vannak esetek, ami-kor ilyen módon többet kell számolnunk, mintha közvetlenül az optimálismegoldást keresnénk. Ennek oka, hogy az optimális megoldást tartalmazóágat eldobjuk, és ezért alacsony marad az ismert megengedett megoldáshoztartozó célfüggvényérték, és emiatt az eljárás későbbi fázisában kevés ágathagyhatunk el. Bizonyos feladatosztályoknál azonban a módszer hatékony-sága javul.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 192: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 193: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7. fejezet

A Balas-féle korlátozás ésvágás módszere

Az egészértékű programozás egy viszonylag új és hatékony módszere a Balas-féle korlátozás és vágás. Bár az elméleti alapötlet és az első algoritmikuskísérlet sem tőle való, ő tette a módszert hatékonnyá.

Ebben a fejezetben végig a következő jelöléseket alkalmazzuk. A feltételek,a változók és a bináris változók számát jelölje rendre m, n és p. Legyen A egym × n-es mátrix, b ∈ IRm, c ∈ IRn rögzített vektor. A megoldandó feladat

min cT x

Ax ≥ b

x ≥ 0

xj ∈ {0, 1}, j = 1, ..., p.

(7.1)

A módszer lényege, hogy a (7.1) feladat megengedett tartományának kon-vex burkát határozza meg közelítőleg, miközben a korlátozás és szétválasztásmódszeréhez hasonló leszámlálást végez.

7.1. Merőleges vetítés és szekvenciáliskonvexifikáció

A merőleges vetítés alatt a koordinátatengelyek síkjaira való vetítést értjük,amire az alábbi természetes meghatározást használjuk.7.1.1. definíció: Legyen m, s és t pozitív egész, D m × s, B m × tméretű valós mátrix, d ∈ IRm rögzített vektor. A P = {(x,y) ∈ IRs × IRt |Dx + By ≤ d} poliéder merőleges vetülete az x síkra:

Projx(P ) = {x ∈ IRs | ∃y ∈ IRt : (x,y) ∈ P}.7.1.1. lemma: Valamely x ∈ IRs pontra az x ∈ Projx(P ) reláció akkor éscsak akkor áll fenn, ha minden u ∈ W esetén uT Dx ≤ uT d, ahol W = {u ∈IRm | uT B = 0T ,u ≥ 0}.Bizonyítás: A Farkas-lemma megfelelő alakja1 szerint akkor és csak akkor

1 A Farkas-lemma mint homogén lineáris egyenlőtlenségekre vonatkozó alternatívatételszükséges alakja mindig levezethető a lineáris programozás dualitás tételéből. Az adott

193

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 194: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

194 7. A Balas-féle korlátozás és vágás módszere

nem létezik y ∈ IRt, hogy (x,y) ∈ P , ha van u ∈ IRm+ , hogy BT u = 0 és

(d − Dx)T u < 0. Q.E.D.

A (7.1) feladat lineáris programozási relaxációjának poliéderét K jelöli,azaz

K = {x ∈ IRn | x ≥ 0; Ax ≥ b; xj ≤ 1, j = 1, ..., p} . (7.2)

A lineáris egyenlőtlenségeket ekvivalens átalakítás után egy tömör formábaösszevonva az

Ax ≥ b

alakba írjuk, azazK = {x ∈ IRn | Ax ≥ b }.

Célunk a (7.1) feladat megengedett megoldásai konvex burkának meghatá-rozása. Ez a konvex burok a 2.1.1. tétel (a) esete szerint poliéder, hiszenminden változó csak a 0 vagy 1 értéket veheti fel, és természetesen része K-nak. Ehhez a szekvenciális konvexifikáción keresztül vezet az út. Ezen eljárásegy iterációja a következő lépésekből áll.

7.1. algoritmus1. j ∈ { 1, ..., p } index rögzítése

2. Az

(1 − xj)(

Ax − b)

≥ 0 (7.3)

xj

(

Ax − b)

≥ 0 (7.4)

egyenlőtlenségek képzése.

esetben akkor és csak akkor létezik y ∈ IRt, hogy (x,y) ∈ P , ha a

max0T y

By ≤ d − Dx

feladatnak van optimális megoldása. A feladat duálja

min(d − Dx)T u

BT u = 0

u ≥ 0.

Ezen duál feladat triviális megengedett megoldása az u = 0 vektor. A primálnak akkorés csak akkor létezik optimális megoldása, ha a duálnak is van optimális megoldása, ésa két optimális célfüggvényérték egyenlő. Mivel a primál feladat minden megengedettmegoldásának célfüggvényértéke 0, ez egyben az optimális érték is, ha optimális megoldásegyáltalán létezik. Tehát, ha a primálnak van optimális megoldása, akkor az u = 0 a duálfeladat optimális megoldása. Innen azt kapjuk, hogy akkor és csak akkor létezik y ∈ IRt,hogy (x,y) ∈ P , ha nem létezik u ∈ IRm, hogy BT u = 0 és (d − Dx)T u < 0.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 195: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.1. Merőleges vetítés és szekvenciális konvexifikáció 195

3. Linearizálás. Minden 1 ≤ i ≤ n, i 6= j esetén az xixj szorzatothelyettesítjük az yi változóval, továbbá az xj változót írjuk x2

j mindenelőfordulása helyébe. Így egy poliédert kapunk, amit Mj(K) jelöl.

4. Az Mj(K) poliédert vetítjük a x síkra, aminek eredményeként egy újabb,Pj(K)-val jelölt poliédert kapunk.

Ha x a (7.1) feladat megengedett megoldása, akkor a (7.3) és (7.4) felté-telek közül az egyik a semmitmondó 0 ≥ 0 lesz, míg a másik kiadja a K-tmeghatározó összes feltételt. Mivel xj bináris változó, ezért x2

j = xj .

7.1.2. tétel: A 3. lépés után a következő egyenlőtlenségek igazak:(1) ∀ i : yi ≥ 0,(2) ∀ i : yi ≤ xi,(3) ha 1 ≤ i ≤ p, akkor yi ≤ xj,(4) ha 1 ≤ i ≤ p, akkor yi ≥ xi + xj − 1.

Bizonyítás: Az (1) és (2) állítás nyilvánvaló. (3) ugyancsak azonnal követ-kezik az xi ≤ 1 egyenlőtlenségből, ha megszorozzuk xj-vel (0 ≤ xj ≤ 1).Végül ha ugyancsak az xi ≤ 1 egyenlőtlenséget megszorozzuk az xj − 1 ≤ 0számmal, akkor az xi(xj − 1) ≥ xj − 1 relációhoz jutunk, ahonnan átrende-zéssel xixj ≥ xi + xj − 1, ami yi definíciója szerint ekvivalens az állítással.

Q.E.D.

7.1.3. tétel:

Pj(K) = conv (K ∩ {x ∈ IRn | xj ∈ {0, 1}}) (7.5)

Bizonyítás: Először azt mutatjuk meg, hogy a (7.5) jobb oldalán álló hal-maz tartalmazza a bal oldalit. Három esetet különböztetünk meg. Előszöris tegyük fel, hogy K ∩ {x ∈ IRn | xj = 0} = ∅. Ekkor létezik olyanpozitív ε szám, hogy az xj − ε ≥ 0 egyenlőtlenséggel definiált féltér tartal-mazza a K halmazt. Ezért a (7.3)–(7.4) rendszert kielégítő pontok kielégítikaz (1 − xj)(xj − ε) ≥ 0 egyenlőtlenséget is. Innen

(1 − xj)(xj − ε) = xj − x2j + ε(xj − 1) = ε(xj − 1) ≥ 0.

A második egyenlőség onnan következik, hogy Mj(K) meghatározásához x2j -

et xj-vel kellett helyettesíteni. Tehát az xj ≥ 1 féltér szerepel az Mj(K)poliéder definíciójában, és így Pj(K) is ebben a féltérben van. Összeadva a(7.3) és (7.4) egyenlőtlenséget kapjuk, hogy Pj(K) elemei kielégítik a K po-liédert definiáló egyenlőtlenségeket, tehát Pj(K) ⊂ K. Innen viszont kapjuk,hogy Pj(K) ⊂ K ∩ {x ∈ IRn | xj = 1 } is teljesül.

A második eset az, amikor K ∩ {x ∈ IRn | xj = 1} = ∅, aminek bizonyí-tása hasonlóan történik.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 196: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

196 7. A Balas-féle korlátozás és vágás módszere

Végül a harmadik esetben azt tételezzük fel, hogy sem K ∩ {x ∈ IRn|xj =0}, sem K ∩ {x ∈ IRn|xj = 1} nem üres. Legyen

αT x ≥ β (7.6)

egy olyan félteret meghatározó egyenlőtlenség, mely féltér tartalmazza a K ∩{x ∈ IRn | xj ∈ { 0, 1 }} halmazt. Most két egyszerű állítást bizonyítunk.1. Állítás: Van olyan λ ≥ 0 szám, hogy minden x ∈ K esetén αT x+λxj ≥β.A

minαT x

x ∈ K

lineáris programozási feladat korlátos. Ha ugyanis nemkorlátos volna, akkorvolna egy félegyenes, aminek a mentén nem volna korlátos a célfüggvény.Azonban ekkor a nem üres K ∩ {x ∈ IRn | xj = 0} halmaz egy pontjábólindítva egy ezzel párhuzamos félegyenest, az szintén a feladat megengedetttartományához tartozna, és annak mentén a célfüggvény ismét nem lennekorlátos, ami ellentmond az (α, β) pár választásának. Legyenek z1, ..., zL aK poliéder extremális pontjai. Legyen továbbá λl ≥ 0 (l = 1, ..., L) olyanvalós szám, hogy αT zl + λlzlj ≥ β. Az (α, β) pár választásából tudjuk, hogyzlj = 0 esetén λl = 0 kielégíti az egyenlőtlenséget, különben pedig ilyen λl

nyilvánvalóan létezik. Legyen λ = max{λl | 1 ≤ l ≤ L}. Legyen x ∈ K egytetszőleges pont. Ekkor x előáll a Motzkin-tétel szerint

x =L

l=1

µlzl + w,L

l=1

µl = 1, ∀ l : µl ≥ 0

alakban, ahol w a K poliéder egy iránya, és a fentiek szerint αT w ≥ 0. Innen

αT x + λxj = αTL

l=1

µlzl + αT w +

L∑

l=1

λlzlj + +

L∑

l=1

(λ − λl)zlj

≥L

l=1

µl(αT zl + λlzlj) ≥ β.

2. Állítás: Van olyan µ ≥ 0 szám, hogy minden x ∈ K esetén αT x +µ(1 − xj) ≥ β. A bizonyítás ugyanúgy történik, mint az előbb, csak azt kellészrevenni, hogy K elemei esetében 1 − xj ≥ 0.

Innen azt kapjuk, hogy minden olyan x esetén, amely kielégíti a (7.3) és(7.4) egyenlőtlenségeket, fennáll, hogy

(1 − xj)(αT x + λxj − β) ≥ 0, xj(α

T x + µ(1 − xj) − β) ≥ 0.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 197: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.1. Merőleges vetítés és szekvenciális konvexifikáció 197

A két egyenlőtlenséget összeadva kapjuk, hogy

αT x + (λ + µ)(xj − x2j ) ≥ β.

Ez pedig azt jelenti, hogy Mj(K) összes eleme, következésképp Pj(K) összeseleme is kielégíti a (7.6) alakú, megfelelő dimenziós egyenlőtlenséget. Tehát aPj(K) konvex halmaz összes eleme kielégíti mindazon lineáris egyenlőtlensé-geket, amelyeket a conv (K ∩ {x ∈ IRn | xj ∈ {0, 1}} konvex halmaz összeseleme kielégít, így nem lehet bővebb, mint ezen utóbbi halmaz.

Nézzük most a fordított irányt. Legyen x ∈ K ∩ {x | xj ∈ {0, 1}} egytetszőleges elem. Legyen minden i 6= j esetén yi = xixj . Innen (x, y) ∈Mj(K) és egyben x ∈ Pj(K), mert xj = x2

j teljesül. Q.E.D.

Szükségünk lesz még két segédtételre.7.1.1. segédtétel: Legyen S ⊂ IRn egy tetszőleges halmaz, és H = {x ∈IRn|αT x = β} egy hipersík úgy, hogy minden x ∈ S esetén αT x ≥ β. Ekkor

H ∩ conv(S) = conv(H ∩ S).

Bizonyítás: Egy x pont akkor és csak akkor eleme a H∩conv(S) halmaznak,ha αT x = β, és létezik olyan pozitív egész L szám, és ennyi eleme az Shalmaznak, melyeket y1, ...,yL jelöl, és ezekhez olyan λ1, ..., λL ≥ 0 valósszámok, hogy

L∑

j=1

λj = 1 és x =

L∑

j=1

λjyj .

Ekkor

β = αTL

j=1

λjyj =L

j=1

λj

(

αT yj

)

≥L

j=1

λjβ,

ahol felhasználtuk, hogy minden j esetén αT yj ≥ β. Mindez csak úgy kép-zelhető el, ha minden j esetén αT yj = β. Q.E.D.

7.1.2. segédtétel: Legyen S, T ⊂ IRn két tetszőleges halmaz. Ekkor

conv(conv(S) ∪ conv(T )) = conv(S ∪ T ). (7.7)

Bizonyítás: Mivel conv(S) ∪ conv(T ) ⊃ S ∪ T , azonnal következik, hogy

conv(conv(S) ∪ conv(T )) ⊃ conv(S ∪ T ).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 198: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

198 7. A Balas-féle korlátozás és vágás módszere

A másik irányú tartalmazáshoz vegyük észre, hogy conv(S ∪ T ) ⊃ conv(S)∪conv(T ). Ha itt mindkét oldal konvex burkát vesszük, akkor a tartalmazásiránya megmarad, azaz conv(conv(S ∪ T )) = conv(S ∪ T ) ⊃ conv(conv(S) ∪conv(T )). Q.E.D.

0

1

1

6

-

K

¡¡

¡¡¡

¡¡

¡¡¡

0

1

1

6

-

P1

©©©©©©©©©©©©©©©©©©

0

1

1

6

-

P12

¡¡

¡¡

¡¡

¡¡¡

7.1. ábra: Az −x1 + x2 ≤ 12 és −x1 + x2 ≥ − 1

2 feltételeknek eleget tevőbináris pontok konvex burkának meghatározása.

7.1.2. definíció: Legyen t ≥ 2 rögzített pozitív egész, ik (k = 1, ..., t)indexek olyan rendszere, hogy minden k-ra 1 ≤ ik ≤ p, és 1 ≤ k, l ≤ t, k 6= lesetén ik 6= il. Ekkor

Pi1...it(K) = Pit

(Pit−1(· · · (Pi1(K)) · · · )).

7.1.4. tétel: Minden 2 ≤ t ≤ p és alkalmasan választott i1, ..., it index-rendszer esetén

Pi1...it= conv(K ∩ {x | xik

∈ {0, 1}, k = 1, ..., t}).

Bizonyítás: Az általánosság megszorítása nélkül tegyük fel, hogy {i1, ..., it}= {1, ..., t}. A bizonyításban t szerinti indukciót alkalmazunk. Az állítást = 1 esetén nyilvánvalóan igaz. Legyen Fq (1 ≤ q ≤ p) azon vektorokhalmaza, melyek első q koordinátája 0 vagy 1 értéken rögzített, azaz

Fq = {x | xj ∈ { 0, 1}, j = 1, ..., q }.

Ekkor

P1,...,q = Pq(conv(K∩Fq−1)) = conv(conv(K∩Fq−1)∩{x | xq ∈ { 0, 1 }) =

= conv((conv(K∩Fq−1)∩{x | xq = 0 })∪(conv(K∩Fq−1)∩{x | xq = 1 })).A 7.1.1. segédtétel alkalmazásával kapjuk, hogy

P1,...,q = conv(conv(K∩Fq−1∩{x | xq = 0})∪conv(K∩Fq−1∩{x | xq = 1})).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 199: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.2. Néhány szó a diszjunktív programozásról 199

Itt viszont a 7.1.2. segédtételt alkalmazzuk, amiből

P1,...,q = conv(K ∩ Fq−1 ∩ {x | xq ∈ { 0, 1 }}),

ami éppen az indukciós állítás. Q.E.D.

Eredményeink következménye az alábbi állítás, amit fontossága miatt tétel-ként fogalmazunk meg.7.1.5. tétel: P1,...,p = conv(K ∩ Fp). Q.E.D.

7.2. Néhány szó a diszjunktív programozásrólMost megszakítjuk a módszer tárgyalását, és röviden szólunk a diszjunktívprogramozásról, mert a módszer hátterében az áll.

Legyen Q egy véges indexhalmaz, és minden i ∈ Q esetén Πi egy poliéder,melyet egy alkalmasan választott Ai mátrix és bi vektor mellett a

Πi = {x ∈ IRn | Aix ≥ bi }

feltételrendszer ír le. Ezen jelölések mellett a diszjunktív programozás alap-feladata

max cT x

x ∈⋃

i∈Q

Πi

alakban adható meg, ahol c ∈ IRn rögzített vektor.7.2.1. tétel: Tegyük fel, hogy minden i ∈ Q esetén a Πi poliéder nem üres.Ekkor

conv

i∈Q

Πi

=

{

x ∈ IRn|∀i ∈ Q∃yi ∈ IRn, yi0 ∈ IR : x

=∑

i∈Q

yi,Aiyi ≥ biy

i0, yi

0 ≥ 0,∑

i∈Q

yi0 = 1

. (7.8)

Bizonyítás: Legyen x ∈ conv(

i∈Q Πi

)

. Ekkor x előáll véges sok⋃

i∈Q Πi-

beli pont konvex kombinációjaként. Vegyük észre, hogy minden Πi poliéder-ből elegendő csak egy pontot választani a konvex kombinációba. Ha a konvexkombináció egy Πi poliéderből nem tartalmaz pontot, akkor legyen yi = 0 és

yi0 = 0. Tehát conv

(

i∈Q Πi

)

részhalmaza a jobb oldali halmaznak.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 200: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

200 7. A Balas-féle korlátozás és vágás módszere

Megfordítva, tegyük fel, hogy

x =∑

i∈Q

yi, ahol Aiyi ≥ biy

i0, ∀ i : yi

0 ≥ 0,∑

i∈Q

yi0 = 1.

Legyen I = {i|yi0 > 0} és J = {i|yi

0 = 0}. Ekkor i ∈ I esetén

1

yi0

yi ∈ Πi,

és i ∈ J esetén yi a Πi poliéder egy iránya. Tehát az

x =∑

i∈I

yii

(

1

yi0

yi

)

+∑

i∈J

yi

előállításban az első összeg véges sok⋃

i∈Q Πi-beli pont konvex kombinációja,

a második összeg egy olyan irány, ami a conv(

i∈Q Πi

)

poliéder egy iránya

is. Q.E.D.

Könnyen látható, hogy az állítás igaz marad, ha megengedjük, hogy né-hány poliéder, de nem valamennyi, üres legyen, de esetleges irányaik a nemüres poliéderek irányaiból előállíthatók legyenek, azaz ha valamely k ∈ Qindexre Πk = ∅, akkor minden olyan yk vektorra, amire Aky

k ≥ 0 teljesül,legyen olyan Q∗ ⊂ Q indexhalmaz, hogy minden i ∈ Q∗ esetén Πi 6= ∅, éslétezik olyan yi irány, hogy Aiy

i ≥ 0 és

yk =∑

i∈Q∗

yi.

Ezt a feltételt regularitási feltételnek nevezzük.Itt említünk meg egy további tételt Pj(K) leírásáról, ami még fontos sze-

repet fog játszani.7.2.1. definíció: Legyen Π ⊂ IRn egy poliéder, α ∈ IRn egy tetszőlegesvektor, és β ∈ IR egy valós szám. Az (α, β) párt a Π poliéder vágásánakmondjuk, ha minden x ∈ Π esetén teljesül az αT x ≥ β egyenlőtlenség.

A vágás egy félteret határoz meg, amiben a poliéder teljes egészében bennevan. Ezen félterek metszete maga a poliéder. A következő tétel a konvexifiká-ció során fellépő Pj(K) poliédert fogja hasonló módon jellemezni. Azonbankönnyen általánosítható volna tetszőleges poliéderek esetére.7.2.2. tétel: Legyen j egy rögzített index, továbbá u és v megfelelő dimen-ziós, nem rögzített valós vektor, u0 és v0 pedig két ugyancsak nem rögzítettvalós szám. Ezek segítségével definiáljuk a következő halmazt:

M ={

(α, β)|α = ATu + eju0 = A

Tv + ejv0,

β = bTu = b

Tv + v0, u,v ≥ 0

}

. (7.9)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 201: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.2. Néhány szó a diszjunktív programozásról 201

Ekkor

Pj(K) ={

x ∈ IRn | αT x ≥ β, (α, β) ∈ M}

. (7.10)

Bizonyítás: Legyen

Π0 = K ∩ {x ∈ IRn | xj = 0} és Π1 = K ∩ {x ∈ IRn | xj = 1}.

Tudjuk, hogy Pj(K) = conv(Π0 ∪ Π1). Ezért Pj(K) azon félterek metszete,melyek mind a Π0, mind a Π1 poliédert tartalmazzák. Általánosságban egytetszőleges Π poliéder esetén az (α, β) pár akkor vágás, ha a

γ = min{αT x | x ∈ Π}

létező véges érték, és γ ≥ β. Ha a cél a Π poliéder meghatározása, akkornyilván elhagyhatók azok a vágások, amelyekre γ > β, hiszen azoknál létezikerősebb vágás is, azaz elegendő csak a (α, β = γ) vágásokra szorítkozni.

A Π0, illetve Π1 poliédereket meghatározó feltételrendszer

Ax ≥ b

eTj x = 0,

illetve

Ax ≥ b

eTj x = 1,

ahol természetesen ej a j-edik egységvektor. Ennek megfelelően az az (α, β)pár, amely egyszerre vágás mind Π0, mind Π1 számára, eleget kell tegyen akövetkező két feltételrendszernek:

β = min{αT x | Ax ≥ b, eTj x = 0} (7.11)

és

β = min{αT x | Ax ≥ b, eTj x = 1}. (7.12)

Itt mind (7.11), mind (7.12) lineáris programozási feladat, melyek duáljainakoptimális célfüggvényértéke azonos a primálével, azaz teljesülnie kell a

β = max{bTu | AT

u + eju0 = α, u ≥ 0} (7.13)

és a

β = max{bTv + v0 | AT

v + ejv0 = α, v ≥ 0} (7.14)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 202: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

202 7. A Balas-féle korlátozás és vágás módszere

egyenlőségeknek. Mivel vágás esetén (7.13) és (7.14) rendelkezik korlátosoptimummal, az optimális megoldások adják az M halmaz definíciójábanmegkívánt értékeket. Q.E.D.

Megjegyezzük, hogy a tétel akkor is igaz, ha Π0 és Π1 valamelyike üres,mert most a regularitási feltétel teljesül.

Fontos azt is észrevenni, hogy az M halmaz egy kúp. Amikor majd szük-ségünk lesz valamely elemére, akkor ezt a tényt figyelembe kell venni, nehogyugyanannak a pozitív vágásnak a konstansszorosain fussunk végig.

7.3. NormalizációFolytatjuk az előző szakasz utolsó gondolatát, és azt vizsgáljuk, hogy milyenfeltételeket kell kiszabni, hogy legyen valamilyen értelemben legjobb vágás,amit az eljárás során meg is tudunk határozni, és így fel is tudjuk használni.Az előző szakasz jelöléseit fogjuk alkalmazni.

Tegyük fel, hogy y ∈ K \Pj(K). Le szeretnénk vágni y-t a K poliéderbőlegy olyan (α, β) vágással, ami nem vág le semmit a Pj(K)-ból. Ekkor (α, β)-ta M halmazból kell választani.

Célszerű volna a lehető legmélyebb vágást használni, ami azt jelenti, hogyy euklideszi távolsága az αT x = β síktól a lehető legnagyobb legyen. Ez atávolság −αT x + β lesz, feltéve, hogy a sík normálvektora egységnyi hosszú,azaz αT α = 1, és a vágás αT x ≥ β alakú, ahogy az (7.10)-ben is szerepel.Ezért a legjobb vágás megkeresésére a

max−αT y + β (7.15)

(α, β) ∈ M (7.16)

αT α = 1 (7.17)

feladat adódik. Itt (7.17) nem lineáris, ami technikai nehézséget okoz.(7.17) tulajdonképpen egy normalizáció, ami azt biztosítja, hogy a vágást

egy korlátos halmazból válasszuk, tehát legyen optimum, és ne az M kúpegy félegyenese mentén haladjunk a vágás keresésekor kifelé.

1. normalizáció: a jobb oldal rögzítése. Természetes gondolat, hogya vágást meghatározó egyenlőtlenség valamelyik együtthatójának rögzítéseesetén a lehetőségek halmaza annyira leszűkül, hogy az optimalizálás elvégez-hető. Könnyen belátható, hogy ez nincs minden esetben így, mindazonáltala módszer a gyakorlatban számos esetben működik. Előnye, hogy mindösszeegyetlen egyszerű, lineáris feltétel bevezetésére van szükség, míg más nor-malizálás esetében, ahol a korlátosság matematikai értelemben is garantált,lényegesen meg kell növelni a feltételek számát, ahogy ezt látni fogjuk.

Az együtthatók közül az egyenlőtlenség jobb oldala játszik kitüntetett sze-repet, ezért ezt rögzítjük. Az azonban nem tudható mindig előre, hogy az

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 203: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.3. Normalizáció 203

előjelének pozitívnak vagy negatívnak kell lennie. Ezért mind a β = 1, minda β = −1 értéket ki kell próbálni, azaz két lineáris programozási feladatotkell majd megoldani.

A 7.2.2. tétel segítségével a (7.15)–(7.17) feladatot a következő alakra hoz-hatjuk, figyelembe véve, hogy β rögzített, így a célfüggvényből kihagyható:

minyT ATu + yju0 (7.18)

ATu − A

Tv + eju0 − ejv0 = 0 (7.19)

bTu = β (7.20)

bTv + v0 = β (7.21)

u, v ≥ 0, (7.22)

ahol β a rögzített 1 vagy −1 érték.

2. normalizáció: az α vektor l∞ normájának korlátozása. Az||α||∞ ≤ 1 feltételt írjuk elő, ami a

− 1 ≤ αi ≤ 1 i = 1, ..., n (7.23)

egyenlőtlenség-rendszer tömör alakja. A (7.23) követelmény korlátossá teszia (7.15), illetve a vele ekvivalens (7.18) célfüggvényt, mert β egyedül nemnőhet minden határon túl, mert akkor semmi sem elégíti ki az αT x ≥ βvágást.

3. normalizáció: az α vektor l1 normájának korlátozása. Az||α||1 ≤ 1 feltétellel szorítjuk az α vektort egy korlátos tartományba. Ez a

n∑

j=1

|αj | ≤ 1 (7.24)

egyenlőtlenséget takarja. Az abszolút érték okozta nemlinearitástól meg lehetszabadulni 2n új változó és n + 1 új feltétel bevezetése árán. Legyen α+

j ésα−

j (j = 1, ..., n) két nemnegatív változó, továbbá

αj = α+l − α−

l .

Ekkor (7.24) alakja

n∑

j=1

(α+l + α−

l ) ≤ 1.

Érdekes megjegyezni, hogy geometriailag az 1. normalizáció mindig az Mkúp egy extremális irányát adja. A 2. normalizáció esetében a kúpot egy

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 204: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

204 7. A Balas-féle korlátozás és vágás módszere

olyan poliéderrel metszük el, amelynek a kúptól független extremális pontjaivannak, emiatt általában nem a kúp egy extremális irányát kapjuk. Hasonlóa helyzet a 3. normalizáció esetében, de ekkor, ha M része valamelyik or-tánsnak, azaz M-en belül egy komponens előjele nem változik meg, akkor Mextremális irányát kapjuk.

7.4. Az algoritmus egy véges változataAz algoritmus végességét, éppen úgy, mint a Gomory-módszernél, csak bizo-nyos szabályok betartása mellett tudjuk igazolni. Ezekről lesz szó ebben aszakaszban.

Az algoritmus során az iteráció indexe t. Minden iterációban vagy egészoptimumhoz jutunk, és megállunk, vagy egy korábban tárgyalt vágással le-vágjuk a folytonos relaxáció xt optimális megoldását. A vágást mindig xt

egy olyan xtj (1 ≤ j ≤ p) komponense alapján állítjuk elő, amelynek bárvagy 0-nak, vagy 1-nek kellene lennie, értéke nem egész. Az ilyen vágást j-vágásnak nevezzük. Legyen Wtj a t iterációig bezárólag előállított j-vágásokhalmaza, V x

tj pedig az ezeket kielégítő vektorok halmaza, ami egy poliéder.Az algoritmusban fontos szerepet fognak játszani a Ktj poliéderek, amelye-ket úgy kapunk, hogy a K poliédert definiáló Ax ≥ b egyenlőtlenségekhezhozzávesszük a t iterációig kapott összes i-vágást, ahol 1 ≤ i ≤ j, azaz

Ktj = K ∩j

i=1

V x

it . (7.25)

Legyen P egy poliéder. Tegyük fel, hogy P -nek az {x ∈ IRn|xj = 0}és {x ∈ IRn|xj = 1} síkokkal vett metszeteinek a konvex burkát keressük.Ekkor a vágások 7.2.2. tétel szerinti kúpját M(P ) jelöli. Végül pedig ennek akúpnak valamely normalizációval megszorított része M(P )N . Az algoritmussorán mindvégig feltesszük, hogy a normalizáció eredményes, azaz a vágáskeresésekor a megoldandó lineáris programozási feladatnak véges optimumavan.

Az algoritmus megfogalmazása során feltesszük, hogy a (7.1) feladatnakvan optimális megoldása. Ha feladat célfüggvénye nem lenne korlátos, akkor(7.1) lineáris programozási relaxációjának célfüggvénye sem az, így ez az esetkönnyen kiszűrhető. Ha nincs egyáltalán megengedett megoldás, akkor az azalgoritmus során detektálható.

7.2. algoritmus

1. Begin

2. K0 := K;

3. t := 0;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 205: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.4. Az algoritmus egy véges változata 205

4. while TRUE do

5. begin

6. xt+1 := argmax{cT x |x ∈ Kt};7. if ∀ 1 ≤ j ≤ p : xt+1,j ∈ {0, 1} then STOP

8. else

9. begin

10. j := max{i|1 ≤ i ≤ p | 0 < xt+1,i < 1 };11. (αt, βt) := argmax{β − αT xt+1 | (α, β) ∈ M(Kt,j−1)N};12. Wtj := Wtj ∪ {(αt, βt)};13. V x

tj := V x

tj ∩ {x ∈ IRn |αtT x ≥ βt};

14. for i := 1 to p do

15. begin

16. Wt+1,i := Wti

17. V x

t+1,i := V x

ti

18. Kt+1,i = K ∩ ⋂ik=1 V x

tk;

19. end

20. Kt+1 := Kt ∩ {x ∈ IRn |αtT x ≥ βt};

21. t := t + 1;

22. end;

23. end;

24. end;

Az algoritmus leírásába beleértjük, hogy a 6. sorában előállított xt+1

vektor a Kt poliéder extremális pontja. Ez lényegében annyit jelent, hogy alineáris programozási feladatot a szimplex módszerrel oldjuk meg.

7.4.1. lemma: Az 7.2. algoritmus 11. sorában generált vágás levágjaxt+1-et.

Megjegyzés: Az állítás akkor lenne nyilvánvaló, ha az (αt, βt) vágást aM(Kt)N halmazon állítottuk volna elő. Azonban ez a tőle különbözőM(Kt,j−1)N halmazon történt.

Bizonyítás: Első lépésként azt mutatjuk meg, hogy xt+1 extremális pontjaa Ktj poliédernek. Azt tudjuk, hogy az algoritmus definíciója szerint xt+1

extremális pontja a Kt poliédernek. Ha j = p, akkor Kt = Ktp, így az ál-lítás igaz. Tegyük fel tehát, hogy j < p. Ekkor viszont xtp ∈ {0, 1}. Innenkövetkezik, hogy xt ∈ Kt,p−1 ∩ {x ∈ IRn |xp = xtp} ⊂ Pp(Kt,p−1). Ugyanak-kor Pp(Kt,p−1) ⊂ Ktp = Kt, hiszen a jobboldali halmazt definiáló feltételek

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 206: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

206 7. A Balas-féle korlátozás és vágás módszere

mind benne vannak a bal oldali halmazt definiáló feltételek között. Mivel egybővebb halmaz extremális pontja a szűkebb halmaznak is extremális pontja,ha az utóbbiban is benne van, és xt extremális pontja Kt-nek, így extremálispontja a Kt,p−1 ∩ {x ∈ IRn |xp = xtp} halmaznak is. Továbbá j választásamiatt xtk ∈ {0, 1} k = p, p − 1, ..., j + 1 esetén. Ezért az indukcióval lefeléhaladva azt kapjuk, hogy xt extremális pontja Ktj-nek is.

A fentiekhez hasonlóan Pj(Kt,j−1) ⊂ Ktj . Ezért xt ∈ Pj(Kt,j−1) esetén xt

a Pj(Kt,j−1) poliéder extremális pontja lenne, ami azonban lehetetlen, mertPj(Kt,j−1) minden extremális pontjának j-edik koordinátája vagy 0, vagy 1.Ezért az algoritmus 11. sorában generált vágást xt megsérti. Q.E.D.

7.4.2. lemma: A 7.2. algoritmus által előállított j-vágások száma végesbármely j (1 ≤ j ≤ p) mellett.

Bizonyítás: Mivel minden t-re Kt0 = K, ezért minden 1-vágás M(K)N egyextremális pontjához tartozik, melyekből csak véges sok van, mivel M(K)N

egy poliéder. Tehát az állítás j = 1 mellett igaz. Tegyük fel, hogy igazi = 1, ..., j − 1 mellett is. Az indukciós feltevés szerint az algoritmus futásasorán csak véges sok különböző Kt,j−1 van, hiszen Kt,j−1 csak az algoritmus18. sorában változhat, akkor is csak akkor, ha valamely 1 ≤ i ≤ j − 1 eseténgenerálunk vágást. Kt,j−1 bármely két szomszédos megváltozása között csakvéges sok j-vágás állítható elő, mert ezek M(Kt,j−1)N extremális pontjai,amelyből véges sok van. Ciklizáció, azaz az a helyzet, hogy egy j-vágásttöbbször állítunk elő, nem lehetséges, mert minden j-vágás levágja a korábbij-vágásokat kielégítő xt pontot, ahogy ezt az előző lemma megmutatta.

Q.E.D.

7.4.1. tétel: Ha a (7.1) feladatnak van optimális megoldása, akkor a 7.2.algoritmus azt véges sok lépésben megtalálja.

Bizonyítás: Az állítás közvetlenül következik a 7.4.2. lemmából. Q.E.D.

7.5. A bázis inverzéből kapható vágásokA 7.2. algoritmus a 6. és 11. sorában tartalmaz egy-egy optimalizálási fel-adatot. A hatékonyságot jelentősen növeli, ha az egyiket sikerül kiváltanivalamilyen egyszerűbb eljárással. A jelen szakasz éppen erről szól, nevezete-sen arról, hogy a 6. sor lineáris programozási feladatának optimális bázisábólhogyan lehet könnyen vágást kapni, kiváltva evvel a 11. sorban előírt opti-malizálást.

A 6. sor feladatának feltételrendszere legyen

Atx ≥ bt. (7.26)

A szimplex módszer használata esetén az egyenlőtlenségeket kiegészítő válto-zók bevezetésével egyenletekké alakítjuk. Emiatt az átalakítás miatt minden

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 207: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.5. A bázis inverzéből kapható vágások 207

egyenlet független a többitől. Tehát ha eredetileg m feltételünk volt, akkora bázis mátrixának mérete m × m. Tegyük fel, hogy k kiegészítő változóvan a bázisban. Ekkor m − k eredeti változó van a bázisban, és termé-szetesen m − k olyan sor van, amelyhez tartozó kiegészítő változó nincs abázisban. Ezen sorok és a bázisbeli eredeti változók oszlopainak metszetébenálló (m− k)× (m− k) méretű részmátrixot jelöljük Bt-vel. Ez invertálható,hiszen különben a bázis mátrixa se lenne invertálható. A (7.26) rendszer-nek Bt mátrix soraihoz tartozó része az optimális megoldásban egyenlőséggelteljesül:

Btxt+1 = bBt,

ahol bBt a jobb oldali vektornak a Bt soraihoz tartozó része. Ugyanekkor a7.2.2. tétel feltételrendszere a következő alakra redukálódik:

BTt (uB − vB) = (v0 − u0)ej

(uB − vB)T bBt = v0

uB , vB ≥ 0.

A Bt mátrix invertálhatósága miatt bármely rögzített z0 = v0 − u0 értékmellett a rendszernek a zB = uB − vB változóban egyértelmű megoldásavan. Ebből egyszerűen állítható elő egy olyan (uB ,vB) pár, hogy komponen-senként csak egyikük különbözik 0-tól, nevezetesen uB lesz zB pozitív része,vB pedig a negatív része. Legyen a Bt mátrix inverzének, azaz B−1

t -neki-edik sora mint oszlopvektor dti. Hasonlóképpen magának a Bt mátrixnakaz i-edik oszlopa legyen bti. Ekkor

uB = max{dtj ,0} (7.27)

vB = max{−dtj ,0} (7.28)

αti = max{dti,0}T bti, i = 1, ..., j − 1, j + 1, ...n (7.29)

αtj = max{dtj ,0}T btj + dTtjbBt − 1 (7.30)

β = max{dtj ,0}T bBt (7.31)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 208: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

208 7. A Balas-féle korlátozás és vágás módszere

7.6. A korlátozás és vágás elveA korlátozás és vágás algoritmusa alapötletében annyival több a korlátozás ésszétválasztásnál, hogy amikor a leszámlálási fa egy csúcsa által reprezentáltrészfeladat relaxációját megoldván azt tapasztaljuk, hogy az nem elégíti ki azegészértékűségi követelményeket, akkor nem feltétlenül bontjuk további rész-feladatokra, hanem az ebben a fejezetben kidolgozott vágások segítségével abecslést pontosítjuk, és természetesen így több esélyünk van arra is, hogymagát az egészértékű programozási részfeladatot megoldjuk. Természetesena módszer annyival kevesebb az általános korlátozás és szétválasztás módsze-rénél, hogy csak olyan feladatra alkalmazható, amelyben minden egészértékűváltozó 0–1-es, vagy ilyenre korábban visszavezettük.

Ennek megfelelően az algoritmus pontos megfogalmazásához a korlátozásés szétválasztás leírásához hasonló jelöléseket használunk:

z az eddig talált legjobb megengedett megoldáshoz tartozó célfüggvényértékL a megengedett megoldások részhalmazainak még felbontásra váró listájat az eddig előállított részhalmazok számaS0 az összes megengedett megoldás halmazar az éppen felbontásra kerülő halmaz indexexi a Ti halmazon értelmezett relaxált feladat optimális megoldásazi az Si halmazon a célfüggvény felső korlátjaL + Si az Si halmaz hozzávétele az L listáhozL − Si az Si halmaz törlése az L listábólloop egy Boole-segédváltozó

Felhasználunk továbbá két eljárást:

FOLYTAT egy Boole-eljárás, mely azt mondja meg, hogy az éppen vizsgáltág feltárását érdemes-e folytatni további vágások előállításával,

VÁGÁS egy új vágást generáló eljárás.

7.3. algoritmus

1. Begin

2. z := −∞;

3. L := { S0 };4. t := 0;

5. while L 6= ∅ do

6. begin

7. r meghatározása;

8. L := L − Sr;

9. jr kiválasztása;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 209: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.6. A korlátozás és vágás elve 209

10. for i := 1 to 2 do

11. begin

12. Tt+i := Tr ∩ {x | xjr= i − 1};

13. repeat

14. (xt+i, zt+i) meghatározása;

15. if zt+i > z then

16. begin

17. if x ∈ S then z := zt+i

18. else

19. begin

20. loop := FOLYTAT;

21. if loop then

22. begin

23. (α, β) := VÁGÁS;

24. Tt+i := Tt+i ∩ {x | αT x ≥ β};25. end

26. else L := L + St+i;

27. end

28. end

29. until ¬ loop

30. end

31. end

32. t := t + 2;

33. for i := 1 to t do

34. if zi ≤ z then L := L − Si;

35. end;

36. end

7.6.1. tétel: Tegyük fel, hogy a (7.1) feladat lineáris programozási relaxáci-ójának van optimális megoldása. Ekkor a 7.3. algoritmus véges sok lépésbenmegoldja a (7.1) feladatot.

Bizonyítás: Az állítás a 6.1.1. tétel közvetlen következménye, csak az aláb-biakat kell észrevenni. (a) Az, hogy vágásokat vezetünk be, nem változtatjameg a módszer korlátozás és szétválasztás jellegét, csupán a részfeladatokmegengedett megoldásait lefedő Ti halmazokat szűkítjük le, de ettől még

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 210: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

210 7. A Balas-féle korlátozás és vágás módszere

a fedések fedések maradnak. (b) A (7.1) feladat megengedett megoldása-inak halmaza egy véges halmazzal helyettesíthető, méghozzá úgy, hogy haδj ∈ {0, 1} (j = 1, ..., p) rögzített egész, akkor az xj = δj (j = 1, ..., p)rögzített értékekhez elegendő az xp+1, ..., xn változók egyetlen értékrendsze-rét rendelni, méghozzá egy olyat, ami az adott rögzítések mellett keletkezőrészfeladat optimális megoldása, ha van ilyen. Ha viszont a részfeladatnakoptimális megoldása nem létezik, az csak úgy lehetséges, hogy az adott rögzí-tések mellett nincs megengedett megoldása a részfeladatnak. Ezáltal a 6.1.1.tétel (i) feltétele teljesülni fog. Q.E.D.

A korlátozás és vágás módszerének előnye a 7.2. algoritmussal szemben,hogy nagyobb a rugalmassága. Általános tapasztalat a vágás típusú módsze-rekkel kapcsolatban, hogy az első sokat javít a célfüggvény értékének pon-tosságán, de ez a javulás gyorsan lecseng. Ekkor további vágások előállításahelyett hatékonyabb lehet a feladat felbontása részfeladatokra. Ezt irányítjaa FOLYTAT eljárás az algoritmuson belül.

Nyilvánvaló, hogy egy adott ágban előállított vágás csak arra az ágra ér-vényes. Sokat nyerhetnénk, ha valamilyen gyors módszerrel az így kapottvágást az egész feladatra érvényessé tehetnénk. Ezt tárgyaljuk a következőszakaszban.

7.7. A vágások felemeléseEbben a részben azzal foglalkozunk, hogy ha a leszámlálási fa egy ágán állí-tottunk elő egy vágást, akkor hogyan lehet azt úgy megváltoztatni, hogy azegész feladatra is érvényes maradjon.

Legyen R0, illetve R1 azon változók indexeinek halmaza, amelyeket azadott ágban, ahol a vágást előállítottuk, 0-ra, illetve 1-re rögzítettünk. Le-gyen továbbá S ugyanebben az ágban a szabad változók halmaza, tehát

S = { 1, 2, ..., n} \ (R0 ∪R1).

A korábbi jelöléseket alkalmazva a jelen helyzetre, a

K(R0,R1) = {x ∈ IRn | Ax ≥ b; ∀ j ∈ R0 : xj = 0; ∀ j ∈ R1 : xj = 1 }

poliédert vizsgáljuk. Végezetül legyen I ⊂ {1, ..., n} egy nem üres indexhal-maz. Ekkor az DI mátrix, illetve d ∈ IRn tetszőleges vektor esetén a dI

vektor azt a mátrixot, illetve vektort jelöli, amelyiket D mátrixból, illetve ad vektorból úgy kapunk, hogy a mátrix esetén azokat az oszlopokat, a vektoresetén azokat a komponenseket, melyek indexe nem tartozik az I halmazhoz,töröljük.

Ekkor a 7.2.2. tételből közvetlenül adódik az alábbi állítás:

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 211: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.7. A vágások felemelése 211

7.7.1. Következmény: Ha R1 = ∅, akkor az adott ágban a lehetségesvágások halmaza

MS ={

(αS , β)|αS =(

AS)T

uS + eSj u0 =(

AS)T

v + eSj v0, β =(

bS)T

u

=(

bS)T

vS + v0, uS ,vS ≥ 0

}

. (7.32)

Az adott ágban a lineáris programozási relaxáció a

min cT x

Ax ≥ b

x ≥ 0

∀ j ∈ R0 : xj = 0∀ j ∈ R1 : xj = 1

0 ≤ xj ≤ 1, j ∈ {1, ..., p} \ (R0 ∪R1)

(7.33)

feladat. Jelölje ennek optimális megoldását x. Tegyük fel, hogy x nem elé-gíti ki az egészértékűségi követelményt. Megmutatjuk, hogyan lehet kapniegy olyan (α, β) vágást, ami az adott ágban levágja a x vektort, és amit „fellehet emelni” úgy, az egész feladaton is levágja a x vektort. A (α, β) vá-gásban természetesen hiányoznak az α vektor R0 ∪R1 indexű komponensei,hiszen ezekben (7.33) megengedett megoldásai rögzítettek. A felemelés aztjelenti, hogy ismét az R1 = ∅ feltétel mellett megmutatjuk, hogyan lehet ahiányzó komponenseket úgy meghatározni, hogy a vágás továbbra is levágja ax vektort, de maga a vágás érvényes legyen a teljes feladaton. Megjegyzendő,hogy a R1 = ∅ feltétel nem jelenti az általánosság megszorítását, mert az R1-beli változók helyett azok komplementereit véve a feladat visszavezethető afeltételt kielégítő esetre.

Legyen az S indexhalmaz olyan, hogy tartalmazza az egészértékű változókközül azok indexeit, amelyek értéke az x vektorban nem egész, továbbá afolytonos változók közül azokat, amelyek nullától különbözők, azaz

S ⊃ {j | 0 < xj < 1, 1 ≤ j ≤ p} ∪ {j | xj > 0, p + 1 ≤ j ≤ n}. (7.34)

Jelölje N a normalizációnak eleget tevő vektorok halmazát.Legyen (α, β,u, u0,v, v0) az optimális megoldása a

maxβ −(

αS)T

xS (7.35)(

αS , β)

∈ MS (7.36)(

αS , β)

∈ N S (7.37)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 212: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

212 7. A Balas-féle korlátozás és vágás módszere

feladatnak. Legyen

α1 =(

AS)T

uS , α2 =(

AS)T

vS . (7.38)

Ezen jelölések mellett már megfogalmazható a vágások felemelését leírótétel.7.7.2. tétel: Ha az S halmazt a (7.34) szerint határozzuk meg, a segítségévelfelírt (7.35)–(7.37) feladat optimális megoldása (α, β,u, u0,v, v0), amiből a(7.38) képlet segítségével kapjuk az α1, α2 vektorokat, akkor az az (α, β) vágás,amit az

αi =

{

αi ha i ∈ Smax{α1

i , α2i } ha i 6∈ S és β = β (7.39)

egyenlőségek határoznak meg, levágja (7.33) feladat x optimális megoldását,és a vágás érvényes a (7.1) megengedett megoldásainak teljes halmazára.

Bizonyítás: Mivel i 6∈ S esetén xi = 0, ezért mindegy, hogy a hiányzókomponenseket milyen értékekkel pótoltuk ki, a vágás ismét levágja az x

pontot. Ezért elég annyit megmutatni, hogy a (7.39)-ben definiált (α, β)vágás a (7.9)-ben meghatározott M halmaz eleme. Ehhez az u és v változókatkell megfelelelően megválasztani. Az Ax ≥ b feltétel tulajdonképpen háromfeltételcsoportot fog össze, az Ax ≥ b, az −xk ≥ −1 (k = 1, ..., p) és a xk ≥0 (k = 1, ..., n) egyenlőtlenségeket. Ennek megfelelően oszthatjuk részekremind az u, mind a v vektort. Ezeket a részeket u1, u2, u3, illetve v1, v2, v3

jelöli. Az M halmaz leírásában k 6= j és k ≤ p esetén az

αk = aTk u1 − u2

k + u3k = aT

k v1 − v2k + v3

k,

k 6= j és k ≥ p + 1 esetén az

αk = aTk u1 + u3

k = aTk v1 + v3

k

egyenletek szerepelnek, ahol ak az A mátrix megfelelő oszlopa. Mivel k 6∈ Sesetén

αk = max{aTk u1,aT

k v1},ezért u2

k = v2k = 0 mellett u3

k és v3k megválasztható úgy, hogy az egyenlet

teljesüljön, hiszen ez a négy változó csak ebben az egy egyenletben szerepelnullától különböző együtthatóval. Q.E.D.

7.8. Megjegyzések és irodalomA módszer elméleti alapjait a [60] dolgozat fektette le, noha egyes elemei mára [82] cikkben megjelennek. A módszer első, teljes kifejtése [5]-ban található.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 213: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

7.8. Megjegyzések és irodalom 213

Balas és munkatársai azóta számos cikkben fejlesztették tovább és alkalmaz-ták új területeken a módszert. Ez volt a témája Balas Egonnak a MagyarTudományos Akadémián külső tagként 2004-ben tartott székfoglaló előadá-sának is. A fejezet témáját a külföldön autóbalesetben tragikusan fiatalonelhunyt Farkas Gyula szakdolgozata alapján dolgoztuk fel [31].

Érdekes tudni, hogy [4] eredményei alapján a vágások élesíthetők. Eddig azAx ≥ b feltételrendszer tartalmazta a nemnegativitási feltételeket is. Ezeketmost külön választjuk. Legyen az A mátrix és a b vektor olyan, hogy azAx ≥ b és az Ax ≥ b, x ≥ 0 feltételrendszerek ekvivalensek. Ekkor a(7.9) képletben definiált M halmazt a következő feltételeket kielégítő pontokképezik:

α − ATu − eju0 ≥ 0

α − ATv − ejv0 ≥ 0

bTu = β

bTv + v0 = βu, v ≥ 0

(7.40)

Az alábbiakban a következő jelölést is alkalmazzuk: egy képlettel kifejezetta vektor j-edik koordinátája (a)j . Legyen α1 és α2 az a két vektor, amelyre

α1k =

(ATu)k k 6= j

(ATu)j + u0 k = j,

α2k =

(ATv)k k 6= j

(ATu)j + v0 k = j.

(7.41)

Ekkor az αT x ≥ β típusú vágás együtthatóit az

αk = max {α1k, α2k }, β = bTu (7.42)

egyenletek határozzák meg.A továbbiakban feltesszük, hogy β 6= 0. Ekkor a vágás egyenlőtlenségét

végig lehet osztani a |β| értékkel, azaz az általánosság megszorítása nélkülfeltehető, hogy |β| = 1.

7.8.1. tétel: Feltesszük, hogy |β| = 1. Legyen

mk =α2k − α1k

u0 + v0, k = 1, ..., p.

Legyen továbbá

γk = min {α1k + u0⌈mk⌉, α2k − v0⌊mk⌋ }, (k = 1, ..., p)

γk = min {α1k, α2k }, (k = p + 1, ..., n).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 214: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

214 7. A Balas-féle korlátozás és vágás módszere

Ekkor a

γT x ≥ β (7.43)

vágás azαT x ≥ β

vágás élesítése. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 215: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8. fejezet

Lagrange-szorzók

A matematikai programozás egyik igen gyakran használt heurisztikus eljá-rása a Lagrange-szorzók használatára támaszkodik. Ugyenezen Lagrange-szorzókon alapul az egyik általános dualitáselmélet. Ebben a fejezetbencsak néhány fontos eredményt ismertetünk, mindenütt megmutatva, hogyazok hogyan specializálódnak a lineáris 0–1-es egészértékű programozási fel-adat esetében, továbbá néhány, kizárólag az utóbbi feladatokra vonatkozó, aLagrange-szorzók segítségével kifejlesztett eljárást tárgyalunk.

8.1. A Lagrange-szorzók használata amatematikai programozásban – néhányalapvető eredmény

Megoldandó feladatunk alakja

max f(x) (8.1)

g(x) ≤ b (8.2)

x ∈ S, (8.3)

ahol f : IRn → IR, g : IRn → IRm, b ∈ IRm, S ⊂ IRn. A feladat ilyenformában való megfogalmazásának az a jelentősége, hogy a feltételek egy cso-portját, a (8.2)-be tartozókat, algebrailag jól kezelhetőnek gondoljuk, míg atöbbit, azokat, amelyeket (8.3)-ba soroltunk, nem. A feladat megoldása soráne két csoportot szét akarjuk választani, hogy ezáltal a probléma nehézségétcsökkentsük.

Legyen λ ∈ IRm+ egy tetszőleges rögzített vektor. Tekintsük a

maxx∈S

(f(x) + λT (b − g(x)) (8.4)

215

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 216: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

216 8. Lagrange-szorzók

Lagrange-feladatot. Ebben a λT b tag állandó, így az optimális megoldástnem befolyásolja. Szerepeltetésének okára a (8.1)–(8.3) optimális célfügg-vényértékére adandó felső becsléskor térünk vissza. Egy rögzített (x, λ) pont-ban (8.4) célfüggvényértékét L(x, λ)-val jelöljük, azaz

L(x, λ) = f(x) + λT (b − g(x)).

8.1.1. tétel: Legyen (8.4) optimális megoldása valamely rögzített λ eseténx(λ). Ha

L(x(λ), λ) − f(x(λ)) = 0 (8.5)

és

b ≥ g(x(λ)), (8.6)

akkor x(λ) optimális megoldása a (8.1)–(8.3) feladatnak.

Bizonyítás: Azonnal látható L(x, λ) definíciójából, hogy (8.5) ekvivalens a

λT (b − g(x(λ))) = 0

egyenlőséggel. Legyen x ∈ S tetszőleges olyan vektor, ami kielégíti a (8.2)feltételt. Felhasználva még x(λ) optimális tulajdonságát, kapjuk, hogy

f(x(λ)) = L(x(λ), λ) ≥ L(x, λ) ≥ f(x).

Az utolsó reláció a λ és a b−g(x) vektorok nemnegativitásából adódik. Teháta (8.1)–(8.3) feladat egyetlen megengedett megoldása sem rendelkezhet jobbcélfüggvényértékkel, mint x(λ). A (8.6) feltétel szerint ebben a feladatbanx(λ) is megengedett, tehát x(λ) ennek is optimális megoldása. Q.E.D.

A fenti tételt 1. optimalitási kritériumnak fogjuk nevezni, mert arra ad ele-gendő feltételt, hogy egy Lagrange-szorzók segítségével generált pont mikorlesz az eredeti feladat optimális megoldása.

A Lagrange-feladattal azért érdemes foglalkozni, mert megoldása általábanlényegesen egyszerűbb, mint az eredeti feladaté, és egyes esetekben elvezetannak optimális megoldásához. Így van ez az egészértékű programozás ese-tében is. Tekintsük ugyanis a

max cT x (8.7)

Ax ≤ b (8.8)

0 ≤ x ≤ d (8.9)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 217: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.1. A Lagrange-szorzók a matematikai programozásban 217

x ∈ ZZn (8.10)

problémát, ahol c, x, d n-dimenziós vektorok, A (m × n)-es mátrix, b m-dimenziós vektor, és valamennyi együttható egész. Az S halmazt a (8.9)és (8.10) feltételeknek eleget tevő vektorok képezik. Ennek megfelelően aLagrange-feladat alakja

max(cT x − λT Ax + λT b)0 ≤ x ≤ d, x ∈ ZZn,

(8.11)

ahol λ ∈ IRm+ rögzített vektor. Kiemelve x-et az őt tartalmazó tagokból a

célfüggvény alakjamax((cT − λT A)x + λT b).

Innen azonnal látszik, hogy a Lagrange-feladat optimális megoldása

xj(λ) =

{

dj ha cj − λT aj > 0

0 ha cj − λT aj < 0,

ahol aj az A mátrix megfelelő oszlopvektora. Továbbá cj − λT aj = 0 eseténxj(λ) bármely 0 és dj közé eső egész értéket felvehet. A Lagrange-feladatmegoldásának számítási igénye O(mn). Ennyi művelet szükséges ugyanis acélfüggvény előállításához. Maga az optimalizálás azután már csak továbbiO(n) műveletet igényel, hiszen csupán a c − AT λ vektor komponenseinekelőjelét kell megvizsgálni.

Vajon mindig tudunk-e olyan Lagrange-szorzókat választani, hogy az 1.optimalitási kritériummal ki tudjuk mutatni a generált pont optimalitását?Sajnos nem. Ennek egyik oka, hogy egyes esetekben magát az optimálismegoldást sem tudjuk ilyen módon megkapni. Más esetekben pedig a krité-rium nem bizonyul elég erősnek. Mindez azt jelenti, hogy a Lagrange-szorzóseljárás csak egy heurisztikus módszer. Az emeli ki az egyéb hasonló eljá-rások közül, hogy alkalmazása során sok információt lehet nyerni az eredetifeladatról, az esetlegesen előállított megengedett megoldásokon túl is.

Rátérünk annak magyarázatára, hogy az 1. optimalitási kritérium miértnem működik minden esetben. Rövidesen, a 8.1.3. tétel után fogunk egyilyen jelenséggel találkozni.

Tekintsük az S halmaznak az IRm+1-be történő azon természetes leképe-zését, amelyben egy x ∈ S pontnak az

(

f(x)g(x)

)

∈ IRm+1

vektor felel meg. Jelölje T az S halmaz képét. Ebben az összefüggésbenIRm+1-et feltételi térnek fogjuk nevezni.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 218: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

218 8. Lagrange-szorzók

8.1.2. tétel: Legyen x(λ) egy rögzített λ ≥ 0 esetén a (8.4) feladat egyoptimális megoldása. Ekkor az

U =

{(

fg

)

∈ IRm+1 | L(x(λ), λ) − bT λ = f − λT g

}

halmaz T támaszsíkja a feltételi térben.

Bizonyítás: U valóban sík Rm+1-ben, hiszen az azt definiáló egyenlőség baloldala állandó. Azonnal látható, hogy x(λ) képe benne van U-ban, tehát Ués T metszete nem üres. Legyen

(

fg

)

a T halmaz egy tetszőleges pontja. Ekkor létezik egy x ∈ S pont, hogy(

fg

)

=

(

f(x)g(x)

)

.

Felhasználva x(λ) optimalitását, kapjuk, hogy

L(x(λ), λ) ≥ L(x, λ),

ami ekvivalens azzal, hogy

L(x(λ), λ) − bT λ ≥ f − λT g.

Azt kapjuk tehát, hogy T valamennyi pontja az U sík ugyanazon partjánfekszik. Q.E.D.

A fentiekből könnyen kaphatunk egy felső korlátot az eredeti feladat opti-mumértékére.8.1.3. tétel: Legyen x(λ) egy rögzített λ ≥ 0 esetén a (8.4) feladat egyoptimális megoldása. Ekkor a (8.1)–(8.3) probléma optimumértéke legfeljebbL(x(λ), λ).

Bizonyítás: Az előző tétel bizonyításában láttuk, hogy U támaszsíkja T -nek, és így minden T -beli pont esetén

L(x(λ), λ) − bT λ + λT g ≥ f.

Mivel λ nemnegatív, ezért a bal oldalt nem csökkentjük, ha g helyére a le-hetséges legnagyobb vektort írjuk be, ami a (8.1)–(8.3) feladat megengedettmegoldásai esetében éppen b. Innen azonnal adódik az állítás. Q.E.D.

A 8.1.2. tétel segítségével azt is megmagyarázhatjuk, hogy a Lagrange-szorzók használata miért különösen nulla-egyes feladatok esetében hatékony.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 219: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.1. A Lagrange-szorzók a matematikai programozásban 219

A „magyarázat” szó itt nem egzakt matematikai bizonyítást jelent, hanemcsak a jelenség indokolását. Először egy olyan példát adunk meg, ahol azoptimális megoldás nem állítható elő Lagrange-szorzók segítségévél.

Tekintsük a

max 5x1 + 6x2 (8.12)

5x1 + 7x2 ≤ 24 (8.13)

x1 ≤ 4, x2 ≤ 4 (8.14)

x1, x2 ∈ ZZ+ (8.15)

feladatot. Ennek optimális megoldása, mint az könnyen látható, x∗1 = x∗

2 = 2.Képezzék az S halmazt a (8.14) és (8.15) feltételeknek eleget tevő pontok. ALagrange-feladat

max(5 − 5λ)x1 + (6 − 7λ)x2 + 24λx1, x2 kielégíti (8.14)-et és (8.15)-öt.

(8.16)

Ennek optimális megoldására csak akkor kaphatjuk mind x1-re, mind x2-rea 2 értéket, ha a célfüggvényben az együtthatójuk 0. Azonban λ semmilyenválasztására sem lehet 5 − 5λ és 6 − 7λ egyszerre 0, tehát a (8.12)-(8.15)feladat optimális megoldását nem kaphatjuk meg ilyen módon. Ennek oka,hogy az optimális megoldás képe a feltételi térben, az S halmaz képe konvexburkának belsejében van, azaz nem lehet rajta egy támaszsíkon. Ugyanis a(4, 0)T pont képe (20, 20)T , a (0, 3)T ponté (18, 21)T , a (3, 2)T ponté pedig(27, 29)T , és igaz a

(

2224

)

=1

5

(

2224

)

+2

5

(

2224

)

+2

5

(

2224

)

egyenlőség. Az sem segít, ha a feltételek felosztását megváltoztatjuk, és az Shalmaz ZZ2

+ lesz, vagyis csak a (8.15)-öt kielégítő pontok. Ekkor a Lagrange-feladat

maxx∈ZZ2

+

(5 − 5λ − µ1)x1 + (6 − 7λ − µ2)x2 + 24λ + 4µ1 + 3µ2. (8.17)

Itt már elérhető, hogy mindkét változó célfüggvény-együtthatója 0 legyen,például

λ =6

7, µ1 =

5

7, µ2 = 0

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 220: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

220 8. Lagrange-szorzók

választással. Ekkor azonban ZZ2+ valamennyi pontja optimális megoldása

(8.17)-nek, tehát az eredmény semmitmondó. Egyszerű számítással ellen-őrizhető, hogy a 8.1.2. tételben szereplő U támaszsík tartalmazza ZZ2

+-nek afeltételi térben vett képét. Ha a (8.17) célfüggvényében valamelyik együtt-ható negatív, akkor az optimális megoldásban az x vektor megfelelő kompo-nense 0, ha pedig poztív, akkor nem létezik (8.17)-nek optimális megoldása,mert a célfüggvény nemkorlátos.

8.2. Módszerek a szorzók megválasztásáraAzt mondottuk, hogy a (8.4) feladatot egyszerűbb megoldani, mint a (8.1)–(8.3)-at, ezért az utóbbi helyett hajlandók vagyunk az előbbiek egy sorozatátmegoldani. Ennek megfelelően a Lagrange-szorzós eljárások általános alakjaa következő:

8.1. algoritmus

1. Begin

2. k := 0;

3. repeat

4. begin

5. k := k + 1;

6. válasszuk meg λk-t;

7. legyen xk a maxx∈S(f(x) + λTk (b − g(x))) feladat egy optimális

megoldása;

8. end

9. until LEÁLL;

10. end;

Itt tehát egy iterációs lépésben az eljárás eddigi menetétől függően választ-juk meg a szorzók új értékeit mindaddig, amíg valamely leállási kritériumnem teljesül. Az utóbbit a LEÁLL Boole-függvénnyel reprezentáltuk, amelytartalmazhat korlátot az iteráció számára, az 1. optimalitási kritérium vagyvalamely egyéb feltétel, pl. az alább tárgyalandó 2. optimalitási kritériumellenőrzését.

Először két általános módszert tekintünk át, majd pedig olyanokat, ame-lyek az egészértékű programozási feladatok egyes tulajdonságait használjákfel.

Elsőként az ún. szubgradiens módszert tárgyaljuk. Ha szemügyre vesszüka (8.4) feladatot, akkor azt állapíthatjuk meg, hogy a célfüggvény értékeebben annál nagyobb, minél nagyobb az f(x) érték, és minél kisebb a g(x)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 221: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.2. Módszerek a szorzók megválasztására 221

vektor. Tehát a Lagrange-feladat mögött az a heurisztikus gondolat van, hogyegyetlen menetben minél kisebb erőforrás-felhasználás mellett minél nagyobbhasznot ígérő pontot határozzunk meg. Természetesen előfordulhat, hogy azegyes feltételek súlyának arányait rosszul választottuk meg, vagy a feltételeksúlyait rosszul kalibráltuk a célfüggvényhez viszonyítva, hiszen az utóbbinakmindig 1 a súlya.

Tekintsünk most egyetlen feltételt, amelynek λi a súlya. Minél nagyobbλi értéke, annál inkább megéri a (8.4) feladat összevont célfüggvényével szá-molva olyan x pontot választani, amelynél gi(x) értéke kicsi lesz, még azonaz áron is, hogy f(x) értéke is kicsi; és fordítva, minél kisebb λi, annál inkábbolyan x pontot kell választani, amelyhez tartozó f(x) érték nagy, még úgyis, hogy gi(x) is nagy lesz. Ezek a megfontolások azt a heurisztikus elvetsugallják, hogy az algoritmus 6. lépésében úgy célszerű eljárnunk, hogy

λi értékét

növeljük ha gi(xk) > bi

csökkentjük ha gi(xk) < bi és λki > 0nem változtatjuk különben,

(8.18)

ahol λki a λk vektor i-edik komponense. Ennek a szabálynak sok különbözőválasztás is eleget képes tenni. Mi most egy olyan módszert ismertetünk,amelyik a (8.1)–(8.3) egy duálját oldja meg.

A továbbiakban L(x(λ), λ) értékét, ami már csak a λ szorzóktól függ, arövidség kedvéért L(λ)-val jelöljük.

A 8.1.3. tétel azt mondja ki, hogy bármely nemnegatív λ vektor eseténL(λ) felső korlát a (8.1)–(8.3) feladat optimumértékére. Érdemes tehát meg-határozni azt a λ∗ vektort, amely optimális megoldása a

minλ≥0

L(λ) (8.19)

feladatnak. A (8.19) problémát szokás a (8.1)–(8.3) feladat Lagrange-duáljánaknevezni. Fontos megjegyezni, hogy a lineáris programozással ellentétben itta duál feladat általában nem ugyanolyan természetű, mint a primál, hiszenmég tiszta egészértékű feladat esetén is valamennyi duál változó folytonos.Így tehát nincs értelme a duál duáljáról beszélni.

Módszerünk azon az alábbi tételben precízen megfogalmazott észrevételenalapszik, hogy a Lagrange-feladat megoldásával természetes módon nyerjükaz L(λ) függvény gráfjának egy olyan támaszsíkját, ami fölött helyezkedik elaz egész L(λ) függvény.8.2.1. tétel: Legyen λ1 és λ2 a (8.1)–(8.3) két tetszőleges szorzóvektora, aLagrange-feladat ezekhez tartozó egy-egy optimális megoldása pedig x(λ1) ésx(λ2). Ekkor

L(λ2) ≥ L(λ1) + (λ2 − λ1)T (b − g(x(λ1)). (8.20)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 222: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

222 8. Lagrange-szorzók

Bizonyítás: Az L(x, λ) függvény definíciójából kapjuk, hogy

L(x(λ1), λ2) =

f(x(λ1)) + λT2 (b − g(x(λ1))) =

f(x(λ1)) + λT1 (b − g(x(λ1))) + (λ2 − λ1)

T (b − g(x(λ1))) =L(λ1) + (λ2 − λ1)

T (b − g(x(λ1))).

Másfelől felhasználva x(λ2) optimalitását

L(x(λ1), λ2) ≤ L(x(λ2), λ2) = L(λ2). Q.E.D.

Az említett támaszsík normálvektora tehát b − g(x(λ)). Legyen λ1 egytetszőleges szorzóvektor. Ha ez nem optimális megoldása a (8.19) duál fela-datnak, akkor (8.20) alapján léteznie kell egy olyan másik λ2 szorzóvektornak,amelyre

(λ2 − λ1)T (b − g(x(λ1))) < 0 (8.21)

teljesül. Azonnal látszik, hogy a (8.18) módosítás mellett, ha legalább egykomponens értékét sikerül megváltoztatnunk, akkor (8.21) igaz lesz. Minda-zon vektorokat, amelyeket (8.20)-ban b − g(x(λ1)) helyére írva az egyenlőt-lenség tetszőleges nemnegatív λ2 vektor esetén igaz marad, az L(λ) függvényλ1 pontbeli szubgradiensének nevezik. Innen a módszer neve.

A szubgradiens módszer egyik változatánál a 8.1. algoritmus 6. sorában aλk vektor komponenseit egyenként határozzuk meg az alábbi szabály szerint:

λki = max{0, λk−1,i + αk(gi(x(λk−1)) − bi)}, (8.22)

ahol αk az ún. lépésnagyság. Felmerül a kérdés, hogy a módszer ezen válto-zata megoldja-e a Lagrange-duál feladatot. Nemlineáris programozási eszkö-zökkel bizonyítható a8.2.2. tétel: Ha a (8.22) képletben szereplő αk számok pozitívak, nulláhozkonvergálnak és

∞∑

k=1

αk = ∞,

akkor az L(λk) értékek a (8.19) feladat optimumértékéhez konvergálnak.Q.E.D.

A bizonyítást elhagyjuk, mert a szükséges nemlineáris programozási esz-közök túlmennek a jelen mű keretein.

A szorzók megválasztásának egy másik módszere abban az egészértékűprogramozásra jellemző esetben alkalmazható, amikor a (8.3) feltételben sze-replő S halmaz véges. Tegyük fel, hogy S elemeinek száma t, és jelölje őketx1, ...,xt. Tekintsük a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 223: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.2. Módszerek a szorzók megválasztására 223

max∑t

j=1 f(xj)uj

∑tj=1 g(xj)uj ≤ b

∑tj=1 uj = 1

u ∈ IRt+

(8.23)

feladatot. Ez a (8.1)–(8.3) probléma relaxációja, ugyanis ha itt még az u vek-tor egészértékűségét is megkövetelnénk, akkor valóban visszakapnánk a kiin-dulási problémánkat. Maga a (8.23) feladat annak az optimális valószínűség-eloszlásnak a kiválasztását írja le, amely eloszlás szerint véletlenszerűen vá-lasztva az x1, ...,xt vektorokat várható értékben valamennyi feltételt kielé-gítjük, míg a célfüggvény várható értéke maximális lesz.

Megmutatjuk, hogy (8.23) megoldása ekvivalens a Lagrange-duál feladatmegoldásával. Könnyen látható, hogy bármely λ esetén

L(λ) = min µµ ≥ bT λ + f(xj) − g(xj)

T λ j = 1, ..., t.

Ezért a Lagrange-duál feladat ekvivalens a

minµµ + (g(xj) − b)T λ ≥ f(xj) j = 1, ..., t

λ ∈ IRm+

feladattal. Ez egy lineáris programozási feladat, amelynek duálja éppen(8.23).

Mivel (8.23) egy lineáris programozási feladat, tehát minden további nélkülmeg tudnánk oldani például a szimplex módszerrel, ha egyáltalán fel tudnánkírni, de általában nem ez a helyzet, hiszen S elemeinek száma igen nagy lehet,például a sokszor említett bináris vektorok esetében éppen

2n.

Arról azonban lehet szó, hogy (8.23) olyan részfeladatát írjuk fel, amely ab-ban különbözik (8.23)-tól, hogy (sokkal) kevesebb változót tartalmaz. Azáltalánosság megszorítása nélkül tegyük fel tehát, hogy ismerjük az első k(k ≤ t) xj változót, és ezek határozzák meg a szóbanforgó részfeladatot:

max∑k

j=1 f(xj)uj

∑kj=1 g(xj)uj ≤ b

∑kj=1 uj = 1

u ∈ IRk+.

(8.24)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 224: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

224 8. Lagrange-szorzók

Azt a kérdést fogjuk vizsgálni, hogy (8.24) optimális megoldása mikor opti-mális az eredeti (8.23) feladatban is, ami úgy értendő, hogy a (8.24)-ben nemszereplő változók értéke 0. A két feladat lineáris programozási duálját

minbT λ + µ

µ + g(xj)T λ ≥ f(xj) j = 1, ..., q

λ ∈ IRm+

(8.25)

alakban adjuk meg, ahol q aszerint t vagy k, hogy (8.25) a (8.23)-nak vagy(8.24)-nek a duálja. Ennek megfelelően, ha hangsúlyozni kívánjuk, hogy me-lyikről van szó, (8.25(t))-t, illetve (8.25(k))-t írunk. Látszik, hogy rögzítettλ esetén µ értékét a

µ = max{ f(xj) − g(xj)T λ | j = 1, ..., q } (8.26)

egyenlőségnek megfelelően kell megválasztani, így (8.25)-nek mindenképpenvan megengedett megoldása. A lineáris programozás elméletéből tudjuk,hogy egy bázismegoldás akkor optimális, ha a duál változók vektorának ak-tuális értékével megszorozva az együtthatómátrix oszlopait és ebből levonvaa megfelelő célfüggvény-együtthatót sehol sem kapunk negatív értéket. Ese-tünkben ez a következőt jelenti. Legyen a (8.25(k)) feladat optimális megol-dása, ha ilyen létezik,

(λk, µk).

A (8.24) feladat optimális megoldása akkor lesz optimális (8.23)-ban is, ha

µk + g(xj)T λk ≥ f(xj) j = 1, ..., t (8.27)

teljesül. Ennek a feltételnek az ellenőrzését úgy végezhetjük el, hogy meg-oldjuk a

µ∗ = max{ f(x) − g(x)T λk | x ∈ S } (8.28)

Lagrange-feladatot. Ha ezután

µ∗ > µk

áll fenn, akkor (8.27) nem teljesült. A (8.26) egyenlet szerint ez csak úgylehetséges, ha a (8.28) maximum nem az x1, ...,xk vektorok valamelyikénéretik el. Ezt a maximumot meghatározó vektort fogjuk xk+1-nek választani,és k eggyel való növelése után írjuk fel újra a (8.24) feladatot.

Nyilvánvaló, hogy ha a (8.24) feladatnak van megengedett megoldása, ak-kor optimális megoldása is van, és így van optimális megoldása (8.25(k))-nakis. Továbbá, ha egyszer volt (8.24)-nek megengedett megoldása, akkor bár-mely további oszlopokkal kiegészítve az új feladatnak is lesz. Az azonban

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 225: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.2. Módszerek a szorzók megválasztására 225

nem igaz, hogy bárhogyan felírva egy (8.24) típusú részfeladatot, azonnallesz megengedett megoldás. Vizsgáljuk meg éppen ezért ezt az utóbbi esetet.Ekkor a duál, vagyis (8.25(k)) nemkorlátos, mivel mint említettük, van meg-engedett megoldása. Ez utóbbi úgy lehetséges, hogy létezik egy olyan (α, β)pár, hogy

α ∈ IRm+ , β ∈ IR,

és amelyre

g(xj)T α + β ≥ 0 j = 1, ..., k (8.29)

bT α + β < 0 (8.30)

teljesül. Ha a (8.29) feltételben szereplő egyenlőtlenség S valamennyi eleméreteljesül, akkor (8.25(t)) sem korlátos, következésképp a megoldandó (8.23)feladatnak sincs megengedett megoldása. Ha tehát

γ = max{−g(x)T α | x ∈ S } (8.31)

esetén

− γ + β ≥ 0 (8.32)

teljesül, akkor a (8.23) feladatnak nincs optimuma. A (8.31) probléma ka-rakterében hasonló a Lagrange-feladathoz, de nem azonos vele. Tekintsüka

max{φf(x) − g(x)T ψ + bT ψ | x ∈ S } (8.33)

feladatot, ahol φ rögzített nemnegatív valós szám, ψ pedig rögzített nemne-gatív vektor. Ebben az optimális megoldást nem változtatja meg, ha mindφ-t, mind ψ-t valamely pozitív számmal megszorozzuk. Tehát ha φ > 0,akkor

λ =1

φψ

választás mellett (8.33) ekvivalens a Lagrange-feladattal. Ha viszont φ = 0,akkor α = ψ esetén (8.33)-ból (8.31)-et nyerjük.

Az alább megfogalmazandó algoritmus minden iterációban egy új változó-val növeli a (8.24) méretét. Ha az előző iterációban volt már megengedett éskövetkezésképp optimális megoldásunk, akkor az utóbbi a jelen iterációban jóinduló megengedett megoldás lesz, következésképp a szimplex módszer elsőfázisa elmarad. Ha viszont (8.24)-nek nincs megengedett megoldása, akkor az

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 226: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

226 8. Lagrange-szorzók

első fázis végén megkapunk egy olyan irányt, ami mentén a (8.25(k)) feladatnemkorlátos. Legyen

I = { i | bi < 0 } és J = { i | bi ≥ 0 }.

A megfelelő kiegészítő és mesterséges változók bevezetése után a szimplexmódszernek (8.24)-re való alkalmazásakor az első fázisban a

max∑

i∈I(−yi) − y0

∑kj=1 gi(xj)uj + wi −yi = bi i ∈ I

∑kj=1 gi(xj)uj + wi = bi i ∈ J

∑kj=1 uj + y0 = 1

u ∈ IRk+; w ∈ IRm

+ ; yi ≥ 0 i ∈ I ∪ {0}

(8.34)

feladatot kell megoldani. Ennek duálja

minbT λ + µ (8.35)

g(xj)T λ + µ ≥ 0 j = 1, ..., k (8.36)

λ ≥ 0 (8.37)

− λi ≥ −1 i ∈ I (8.38)

µ ≥ −1. (8.39)

Ha az első fázis azt mutatja ki, hogy a (8.24) feladatnak nincs megengedettmegoldása, akkor (8.34) duálja, azaz (8.35)–(8.39), optimális célfüggvény-értéke negatív. Legyen az utóbbi optimális megoldása (α, β), akkor (8.36)megegyezik (8.29)-cel, a fentiek szerint (8.30) szintén teljesül, és természete-sen α nemnegatív vektor.

A (8.24) feladattal kapcsolatban végezetül megjegyezzük, hogy egy aprómódosítással elkerülhető, hogy mérete túlzottan megnövekedjék. Tegyük fel,hogy az előző iterációban volt már megengedett megoldása. Ha korábbanaz első fázist egy (8.34) alakú feladat megoldásával végeztük el, és az elsőmegengedett megoldás megtalálása után a következő iterációkban mindig azelőző iteráció optimális bázisából indultunk ki, akkor a bázis mindig m + 1elemű maradt. Értelmezzük ezután a (8.24) feladatot úgy, mintha eddigcsak az előző optimális bázisának m + 1 elemét és a most bevonandó vektort

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 227: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.2. Módszerek a szorzók megválasztására 227

ismertük volna meg. Így a feladat mátrixának mérete mindig (m+1)×(m+2)marad. Az egyes iterációkban a szimplex módszer többnyire csak egyetlenbáziscseréből fog állni. Ezzel szemben az iterációk száma megnőhet.

Az eddig mondottak alapján a módszert a következő algoritmusban fog-lalhatjuk össze.

8.2. algoritmus

1. Begin

2. k := 1;

3. legyen x1 ∈ S egy rögzített vektor;

4. repeat

5. begin

6. alkalmazzuk a szimplex módszert a (8.24) feladatra;

7. if ∃ optimális megoldása (8.24)-nek

8. then

9. begin

10. legyen (λk+1, µk+1) a (8.25(k)) feladat optimális megoldása;

11. φ := 1;

12. end

13. else

14. begin

15.legyen (λk+1, µk+1) egy olyan irány, amely mentén a (8.25(k))feladat nemkorlátos;

16. φ := 0;

17. end;

18. µ := φf(xk+1) − g(xk+1)T λk+1 := max{φf(x) − g(x)T λk+1 | x ∈

S};19. if 0 > −µ + µk then LEÁLL := false else LEÁLL := true;

20. k := k + 1;

21. end;

22. until LEÁLL;

23. end;

A fenti megfogalmazásban a LEÁLL nem tartalmaz korlátot az iterációkszámára. Ezért garantált, hogy ha az algoritmus leállásakor φ = 0, akkor a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 228: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

228 8. Lagrange-szorzók

(8.23) feladatnak nincs megengedett megoldása, míg φ = 1 esetén megoldot-tuk azt.

Végezetül megmutatjuk, hogy egy fontos egészértékű programozási eset-ben a Lagrange-duál feladat könnyen megoldható. Tekintsük a

max cT x

Ax ≤ b

x ∈ {0, 1}n(8.40)

problémát, ahol A (m × n)-es mátrix, b és c megfelelő méretű vektorok.Ennek lineáris programozási relaxációja

max cT x

Ax ≤ b

Ex ≤ e

x ∈ IRn+,

(8.41)

ahol E az (n×n)-es egységmátrix, e pedig az az n dimenziós vektor, melynekminden komponense 1. A (8.41) feladat lineáris programozási duálja

min bT λ + eT νAT λ + Eν ≥ c

λ ∈ IRm+ , ν ∈ IRn

+.(8.42)

8.2.3. tétel: Legyen (λ∗, ν∗) a (8.42) feladat optimális megoldása. Ekkorλ∗ optimális megoldása a (8.40) probléma Lagrange-duáljának.

Bizonyítás: Az A mátrix oszlopai legyenek a1, ...,an. Jelölje |y|+ az y valósszám pozitív részét, azaz |y|+ = max{0, y}. Legyen λ ∈ IRm

+ egy tetszőlegesvektor. Tekintsük a (8.40) problémának a λ vektorhoz tartozó Lagrange-feladatát:

L(λ) = max{bT λ +

n∑

j=1

(cj − aTj λ)xj | x ∈ {0, 1}n} =

bT λ +

n∑

j=1

|cj − aTj λ|+.

Mivel a (8.42) feladat célfüggvényében valamennyi νj változó pozitív együtt-hatóval szerepel, és minimalizálunk, ezért úgy kell megválasztani őket, hogyértékük a lehető legkisebb legyen. Rögzített λ esetén ez azt jelenti, hogy

νj =

{

0 ha aTj λ ≥ cj

cj − aTj λ ha aT

j λ < cj .(8.43)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 229: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.2. Módszerek a szorzók megválasztására 229

Tehát rögzített λ esetén (8.42) feladatban elérhető legjobb célfüggvényértékugyancsak

bT λ +

n∑

j=1

|cj − aTj λ|+.

Az állítás igazolásához annyit kell még észrevenni, hogy a Lagrange-duál fela-datban és a (8.42) problémában ugyanazon λ vektorokon kell minimalizálástelvégezni. Az előbbiben ez a halmaz triviális módon az m-dimenziós térpozitív ortánsa, az utóbbiban pedig éppen (8.43) bizonyítja, hogy bármelynemnegatív λ vektor esetén van olyan ν vektor, hogy (λ, ν) (8.42) megenge-dett megoldása. Q.E.D.

Annak ellenére, hogy ebben az esetben a Lagrange-duál feladat a szimp-lex módszerrel megoldható, nem kell lemondanunk arról, hogy a Lagrange-feladatot más szorzók esetén is megoldjuk. Ennek egyik oka az, hogy nincsbiztosíték arra, hogy a (8.1)–(8.3) feladat (8.19) Lagrange-duáljának optimá-lis megoldásával felírt (8.4) Lagrange-feladat megoldása optimális vagy akár-csak megengedett volna az eredeti feladatban. Ez világosan kitetszik abbólis, hogy amikor S véges, akkor a Lagrange-duál feladat megoldása ekvivalensaz eredeti feladat (8.23) relaxációjának megoldásával. De nemcsak általábanvan ez így, hanem konkrétan a (8.40) feladat esetén is. Tekintsük ugyanis akövetkező példát:

max 19x1 + 10x2 + 30x3

x1 + x2 + 2x3 ≤ 32x1 − x2 + 3x3 ≤ 4

x1, x2, x3 ∈ { 0, 1 }.(8.44)

Ennek a (0, 1, 1) vektor az optimális megoldása. Ha a feltételektől függetlenülnézzük az x vektor összes lehetséges értékét, akkor a legnagyobb célfüggvény-értéket az (1, 1, 1) pontnál, a második legnagyobbat az (1, 0, 1) vektornál ésa harmadik legnagyobbat pedig (0, 1, 1)-nél kapjuk. Ezek közül az elsőt azelső, a másodikat a második feltétel zárja ki, míg a harmadik megengedett,tehát egyben optimális is. Ha megoldjuk a (8.44) lineáris programozási rela-xációját, akkor a duál változók optimális értékének a (12, 2) vektor adódik.Az ezzel felírt Lagrange-duál feladat:

max{44 + 3x1 | x1, x2, x3 ∈ {0, 1}}.Az optimális célfüggvényérték itt 47. A feladatnak négy optimális megol-dása van, de valamennyiben x1 értéke 1, így egyik sem optimális (8.44)-ben.Ugyanakkor a (0,1,1) vektor megkapható a (0,39/4) szorzókkal. A megfelelőLagrange-feladat

max{39 − 1

2x1 +

79

4x2 +

3

4x3 | x1, x2, x3 ∈ {0, 1} }.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 230: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

230 8. Lagrange-szorzók

Ennek egyetlen optimális megoldása a kívánt vektor, az ehhez tartozó cél-függvényérték elég magas, 119/2.

A példa azt mutatja, hogy a Lagrange-feladatot érdemes algoritmikus esz-közként felfogni, aminek az a célja, hogy jó megengedett megoldásokat állít-sunk elő a segítségével – hiszen nagyon könnyen megoldható – és az optimáliscélfüggvényérték belőle kapott becslését csak pluszinformációként kell kezelni.

Ha a (8.33) feladatra gondolunk, akkor látszik, hogy a szorzók jó megválasz-tása két dolgot jelent: részint helyesen kell beállítani az egyes feltételek sú-lyának arányait, részint pedig ezeket a súlyokat együttesen jól kell kalibrálnia célfüggvény 1 súlyához képest. Most megmutatjuk, hogy a (8.40) egészér-tékű programozási feladat esetében mit jelent ez a kalibráció, és egyben azt istisztázzuk, hogy a megfelelő Lagrange-feladat megoldása a (8.40) problémamilyen közelítő megoldását jelenti.

Legyen λ a Lagrange-szorzók egy tetszőleges, rögzített vektora. Ezzel nem-csak a Lagrange-feladatot írhatjuk fel, hanem (8.40) következő relaxációjátis:

max cT x

λT Ax ≤ λT b

x ∈ { 0, 1 }n.(8.45)

A továbbiakban az általánosság megszorítása nélkül feltesszük, hogy

c ∈ IRn+.

Használni fogjuk továbbá az A oszlopainak korábban bevezetett jelölését. A(8.45) probléma egy hátizsák feladat, amelynek van olyan optimális megol-dása, amelyben

λT aj ≤ 0

esetén az xj változó értéke 1, és ugyanez vonatkozik (8.45) lineáris progra-mozási relaxációjára is, amelynek optimális megoldását a 6.4.1. tétel írja le.Az általánosság megszorítása nélkül az indexekre vonatkozóan tegyük fel akövetkezőket:

∃ t : 0 ≤ t ≤ n :, λT aj ≤ 0, j = 1, ..., t ésλT aj > 0, j = t + 1, ..., n,

(8.46)

továbbá

cj

λT aj

≥ cj+1

λT aj+1

j = t + 1, ..., n − 1. (8.47)

Ekkor a 6.4.1. tétel állítása úgy fogalmazható, hogy a (8.45) problémábólnyert folytonos hátizsák feladat egy optimális megoldását olyan módon nyer-hetjük, hogy a λT aj súlyú tárgyakat az indexek sorrendjében rakjuk be a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 231: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.2. Módszerek a szorzók megválasztására 231

hátizsákba mindaddig, amíg azok elfogynak, vagy színültig ki nem töltik ahátizsákot. (A folytonosság miatt itt megengedjük, hogy az utolsónak betetttárgyat akkorára „szabjuk le”, hogy a hátizsák pontosan tele legyen.)

Bevezetünk a szorzókhoz egy w > 0 kalibráló tényezőt. Így a Lagrange-feladat alakja

max{(cT − wλT A)x | x ∈ {0, 1}n} (8.48)

lesz. A most kimondandó tétel azt fogalmazza meg, hogy bizonyos értelembena w tényező változtatásával a változóknak ugyanazt a sorrendjét határozhat-juk meg, amit a (8.46) és (8.47) feltételben leírtunk.8.2.4. tétel: Jelölje (8.48) egy optimális megoldását x(w). Ennek xj(w)komponenseire igaz, hogy

xj(w) =

1 ha 1 ≤ j ≤ t és cj > 0 vagy λT aj < 01 ha t + 1 ≤ j ≤ n és w <

cj

λT aj

0 vagy 1 ha 1 ≤ j ≤ t és cj = λT aj = 00 vagy 1 ha t + 1 ≤ j ≤ n és w =

cj

λT aj

0 ha t + 1 ≤ j ≤ n és w >cj

λT aj.

(8.49)

Bizonyítás: xj(w) értéke biztosan 1, ha cj −wλT aj > 0. Ehhez 1 ≤ j ≤ t

esetén az kell, hogy vagy cj > 0, vagy λT aj < 0 teljesüljön. Ha t+1 ≤ j ≤ n,akkor

cj − wλT aj > 0

ekvivalens a

w <cj

λT aj

egyenlőtlenséggel. Akkor veheti fel xj(w) akár a 0, akár az 1 értéket, hacj − wλT aj = 0. Ha t + 1 ≤ j ≤ n, akkor teljesülnie kell a

w =cj

λT aj

egyenlőségnek. Végül xj(w) csak a 0 értéket veheti fel, ha cj − wλT aj < 0.Ekkor viszont j biztosan t + 1 és n közé esik, és innen azt kapjuk, hogy

w >cj

λT aj

. Q.E.D.

8.2.5. következmény: Tegyük fel, hogy valamely rögzített λ esetén azindexek sorrendjét a (8.46) és (8.47) feltételek írják le. Legyen p egy olyanindex, melyre t ≤ p ≤ n. Legyen y a (8.45) feladatnak az

yj = 1, j = 1, ..., p; yj = 0, j = p + 1, ..., n

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 232: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

232 8. Lagrange-szorzók

egyenletekkel meghatározott közelítő megoldása. Ekkor létezik a Lagrange-szorzóknak egy olyan µ vektora, hogy y a megfelelő Lagrange-feladat optimálismegoldása.

Bizonyítás: A µ vektor választását a következőképpen végezhetjük:

µ =

λ ha t = p = nct+1

λT at+1λ ha t = p < n

cp

λT apλ ha t < p ≤ n.

(8.50)

Q.E.D.

A λ vektor rögzítése és a (8.46) és (8.47) feltételekben leírt sorrend meghatá-rozása után tehát úgy járhatunk el, hogy az indexek sorrendjében úgy töltjükfel egyesekkel a vektorunkat, hogy az még a (8.45) relaxált feladatban meg-engedett legyen, hiszen ez szükséges ahhoz, hogy az eredeti feladatban ismegengedett megoldáshoz jussunk. Az így előállított vektort a (8.50) képlet-ben megadott Lagrange-szorzók állítják elő, így rendelkezik az ilyen pontokösszes tulajdonságával.

8.3. Egy további optimalitási kritériumTérjünk vissza a (8.44) példához. Eddig azt láttuk, hogy a Lagrange-duál fel-adat optimális megoldásaként adódó szorzók nem generálják (8.44) optimálismegoldását, habár az más szorzók segítségével előállítható. Egy további fon-tos tulajdonsága a példának, hogy bármilyen Lagrange-szorzókkal állítsuk iselő az optimális megoldást, annak optimalitását a a 8.1.1. tételben megfo-galmazott 1. optimalitási kritérium nem tudja kimutatni. Legyen ugyanis λa szorzók egy tetszőleges vektora, amely előállítja a (0,1,1) pontot. A (8.5)feltétel ekvivalens a

λT (b − g(x(λ))) = 0

egyenlettel. Ide behelyettesítve a jobb oldal (3,4)T és a (0,1,1) ponthoz tar-tozó baloldal (3,2)T vektorát, végül a

λ2 = 0

egyenletet nyerjük. Ezt felhasználva a (0,1,1) pontot generáló bármely Lagrange-feladat csak

max{ 3λ1 + (19 − λ1)x1 + (10 − λ1)x2 + (30 − 2λ1)x3 | x1, x2, x3 ∈ {0, 1} }alakú lehet. Ha ennek optimális megoldásában x1 = 0, vagyis 19 − λ1 ≤ 0,akkor x2 = 0, hiszen 10 − λ1 < 19 − λ1.

Egy optimalitási kritériumot természetesen csak akkor lehet alkalmazni, hamár van megengedett megoldásunk. Ezért a Lagrange-szorzók által generáltmegengedett megoldásokat fogjuk vizsgálni.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 233: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.3. Egy további optimalitási kritérium 233

8.3.1. tétel: Legyen valamely rögzített λ ∈ IRm+ vektor esetén a (8.4) feladat

optimális megoldása x(λ), mely kielégíti a (8.2) egyenlőtlenségeket. Ekkorx(λ) optimális megoldása a

max f(x)g(x) ≤ b

λT g(x) ≤ λT g(x(λ))x ∈ S

feladatnak is.

Bizonyítás: Az x(λ) vektor választása szerint bármely x ∈ S esetén igaz,az

f(x(λ)) + λT (b − g(x(λ))) ≥ f(x) + λT (b − g(x))

egyenlőtlenség. Innen átrendezéssel kapjuk, hogy

f(x(λ)) − f(x) ≥ λT (g(x(λ)) − g(x)).

Ezért x(λ) bizonyosan optimális ott, ahol a jobb oldal nemnegatív. Q.E.D.

A tétel feljogosít bennünket a következő fogalom bevezetésére.8.3.1. definíció: Tegyük fel, hogy a (8.4) feladat x(λ) optimális megoldásakielégíti a (8.2) feltételt. Ekkor a

H(x(λ), λ) = {x ∈ S | λT g(x(λ)) ≥ λT g(x) } (8.51)

halmazt az x(λ) pont optimalitási tartományának nevezzük.A H(x(λ), λ) jelölés azt sejteti, hogy a halmaz nemcsak az x(λ) ponttól,

hanem a λ vektortól is függ. Ez valóban így is van. A (8.44) optimális meg-oldását a (0,39/4) szorzókkal állítottuk elő. Így az optimalitási tartománytmeghatározó feltétel

78

4≥ 79

4x1 − 39

4x2 +

117

4x3 (8.52)

lesz. Könnyen ellenőrizhető, hogy a (3,8) szorzók ugyancsak a (0,1,1) pontotgenerálják. A megfelelő egyenlőtlenség ekkor

25 ≥ 19x1 − 5x2 + 30x3. (8.53)

Az (1,0,0) vektor kielégíti (8.53)-at, de megsérti (8.52)-t.A 2. optimalitási kritériumot az alábbi tétel adja meg.

8.3.2. tétel: Jelölje P a (8.2) és (8.3) feltételeknek eleget tevő pontokhalmazát. Tegyük fel, hogy az x1, ...,xr ∈ P pontok rendre a λ1, ..., λr ∈ IRm

+

vektorokhoz tartozó (8.4) feladatok optimális megoldásai. Ha

P ⊂r

k=1

H(xk, λk), (8.54)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 234: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

234 8. Lagrange-szorzók

akkor a (8.1)–(8.3) feladatnak optimális megoldása az az xs pont (1 ≤ s ≤ r),melyre

f(xs) = max{ f(xk) | 1 ≤ k ≤ r }. (8.55)

Bizonyítás: Az állítás azonnal adódik az előző tételből. Q.E.D.

Felmerül a kérdés: hogyan lehet kezelhető formában megadni a (8.54) fel-tételt? Legyen

H(xk, λk) = S \ H(xk, λk).

Ekkor (8.54) ekvivalens a

P ∩r

k=1

H(xk, λk), = ∅ (8.56)

egyenlőség teljesülésével. A bal oldal halmaza a

g(x) ≤ b

−λTk g(x) < −λT

k g(xk) k = 1, ..., rx ∈ S

(8.57)

feltételrendszerrel írható le. Nehézséget csak a szigorú egyenlőtlenségek okoz-hatnak. Számos esetben azonban ezek átalakíthatók egy alkalmasan válasz-tott ε > 0 szám segítségével

−λTk g(x) ≤ −λT

k g(xk) − ε

alakúakká. A lineáris egészértékű programozási feladatnál, ha mind a szor-zók, mind az együtthatók egészek, akkor ε = 1 megfelelő választás.8.3.3. tétel: Legyen a λ vektor által generált x(λ) pont olyan megengedettmegoldás, aminek optimalitását az 1. optimalitási kritérium kimutatja. Ek-kor x(λ) optimalitását a 2. optimalitási kritérium is bebizonyítja.

Bizonyítás: Ha x(λ) megengedett megoldás, akkor optimalitását az 1. op-timalitási kritérium akkor mutatja ki, ha

λT (b − g(x(λ))) = 0,

vagyisλT b = λT g(x(λ)).

Legyen x egy tetszőleges megengedett megoldás. Ekkor

λT (b − g(x)) ≥ 0,

mert a skaláris szorzatban szereplő mindkét vektor nemnegatív. Innen

λT b = λT g(x(λ)) ≥ λT g(x),

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 235: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.4. Egészértékű programozási feladatok méretének redukciója 235

vagyis x benne van a H(x(λ), λ) optimalitási tartományban. Q.E.D.

Tekintsük most a

max 5x1 + 3x2 + 6x3

x1 + x2 + x3 ≤ 2x1 − x2 + x3 ≤ 1

x1, x2, x3 ∈ { 0, 1 }(8.58)

feladatot. Ennek szerkezete nagyon hasonlít a (8.44) feladathoz, optimálismegoldása ugyanúgy a (0,1,1) pont, és ennek optimalitását az 1. optimali-tási kritérium ugyanúgy nem tudja kimutatni. Viszont az optimális megoldáselőáll a (11/4,11/4) szorzókkal. Ekkor az optimalitási tartomány komplemen-terét leíró feltétel:

11

2<

11

2x1 + 0x2 +

11

2x3.

Ezt csak olyan bináris vektorok elégítik ki, amelyekre teljesül, hogy x1 = x3 =1. Az ilyen pontok azonban nem elégítik ki a probléma feltételeit. Tehát ez apélda az utolsó tétellel együtt azt mutatja, hogy a 2. optimalitási kritériumerősebb, mint az 1. optimalitási kritérium.

8.4. Egészértékű programozási feladatokméretének redukciója

A Lagrange-szorzók alkalmazásának egyik érdekes példája az egészértékűprogramozási feladatok méretének redukciója. A módszer alapelvét általá-nosan fogalmazzuk meg, bár elsősorban a hátizsák feladatnál alkalmazható.Tekintsük tehát a

max cT x

Ax ≤ b

x ∈ { 0, 1 }n(8.59)

feladatot, ahol A (m × n)-es mátrix, b m-dimenziós vektor, c pedig n-dimenziós vektor nemnegatív komponensekkel.

Az ebben a szakaszban tárgyalandó módszer akkor alkalmazható, ha mármegismertük a (8.59) feladat egy megengedett megoldását. Tegyük fel, hogyennek célfüggvényértéke z. Mi tehát a továbbiakban csak olyan megengedettmegoldásokra vagyunk kíváncsiak, amelyek célfüggvényértéke ennél nagyobb.A most következő redukciós tétel segítségével egyértelműen megállapíthatjukegyes változók értékét ezekben a megoldásokban.8.4.1. tétel: Legyen λ ∈ IRm

+ egy rögzített vektor. Az A mátrix oszlopaitjelölje a1, ...,an. Legyen a (8.59) feladathoz tartozó Lagrange-feladat célfügg-vényértéke λ szorzók mellett L(λ). Legyen továbbá z ≥ L(λ) egy tetszőleges

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 236: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

236 8. Lagrange-szorzók

valós szám. Tegyük fel, hogy valamely j ∈ { 1, ..., n } indexre

z > L(λ) − |cj − λT aj |. (8.60)

Ekkor az xj változó értéke a (8.59) feladat minden olyan megengedett megol-dásában, melynek célfüggvényértéke legalább z

{

1 ha cj − λT aj > 0

0 ha cj − λT aj < 0,(8.61)

feltéve, hogy ilyen megoldás egyáltalán létezik.

Bizonyítás: Tudjuk, hogy L(λ) felső korlát a (8.59) feladat megengedettmegoldásai célfüggvényértékére. Vizsgáljuk azt a problémát, amit (8.59)-bőlaz xj = 0 kirovás hozzávételével nyerünk. Jelölje L0(λ) az ehhez az utóbbifeladathoz tartozó Lagrange-feladat optimális célfüggvényértékét ugyanazonszorzók mellett. Nyilván

L0(λ) =

{

L(λ) ha cj − λT aj < 0

L(λ) − |cj − λT aj | különben.(8.62)

Természetesen L0(λ) szintén felső korlát a megfelelő – azaz a (8.59) feladat-ból az xj = 0 megszorítással adódó – feladat megengedett megoldásainakcélfüggvényértékére. Ha (8.60) teljesült, akkor ez az xj = 0 megszorításvolt helytelen. Ezzel bebizonyítottuk a (8.61) képlet felső ágat. Az alsó ághasonlóan látható be. Q.E.D.

A tételben a λ vektorra semmilyen megkötést nem tettünk. Felmerül ép-pen ezért a kérdés: hogyan célszerű a szorzókat megválasztani? Az iroda-lomban általánosan elfogadott vélemény szerint az a legjobb választás, haL(λ) értéke minél kisebb, vagyis a legjobb szorzóvektor a Lagrange-duál fel-adat optimális megoldása, ami a 8.2.3. tétel szerint nem más, mint a feladatlineáris programozási relaxációjának optimális duál vektora.

A hátizsák feladat esetében egyetlen duál változóról van szó, melynek opti-mális értéke a 6.4.1. tétel szerint lényegében egy rendezéssel, tehát O(n log n)lépésszámú gyors algoritmussal határozható meg. A hátizsák feladatnak vanmég egy nagy előnye, nevezetesen, hogy biztosan és gyorsan előállítható meg-engedett megoldása. Erre a célra a 10. fejezetben részletesen tárgyalandó2.6.1. mohó algoritmust alkalmazhatjuk ugyanis akár az előbb említett ren-dezés után, akár attól függetlenül. Így könnyen hozzájuthatunk a fenti tételalkalmazásának másik feltételéhez, a célfüggvény alsó korlátjához.

Alkalmazzuk a tételt a (8.59) feladatra, és tegyük fel, hogy J azon változókindexeinek halmaza, melyek értéke kötelezően 1-nek adódott, míg I azoké,melyekre (8.60) nem teljesült. Tehát J ∪ I ⊂ { 1, ..., n }. Az eredményül

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 237: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.4. Egészértékű programozási feladatok méretének redukciója 237

kapott feladat tehát

w = max∑

j∈I cjxj +∑

j∈J cj∑

j∈I ajxj +∑

j∈J aj ≤ b

∀j ∈ I : xj ∈ {0, 1}.(8.63)

Az állításban szereplő z értékről nem követeltük meg, hogy az optimális cél-függvényérték valódi alsó korlátja legyen. Ezért próbálkozhatunk alsó korláthelyett becsült értékkel is. Ebben az esetben a redukció három különbözőeredményre vezethet:(i) Ha w ≥ z, akkor a becslés jogos volt, és w (8.59) optimális célfüggvényér-téke.(ii) A (8.63) feladatnak van megengedett és így persze optimális megoldásais, de w < z.(iii) A (8.63) feladatnak nincs megengedett megoldása.

Az utóbbi két eset egyikében sem volt jogos a redukció, a becslést (vagyisz értékét) csökkenteni kell, és így lehet a feladat redukciójával próbálkozni.Hogy ezek az esetek valóban előfordulhatnak, azt a

max 2x1 + (k − 1)x2

x1 + kx2 ≤ kx1, x2 ∈ {0, 1}

(8.64)

példával szemléltetjük, ahol k egész és legalább 4. Azonnal látható, hogy azoptimális megoldás (0, 1). Először a redukciót a

λ =k − 1

k, z = k

értékek mellett végezzük. Ekkor a megfelelő Lagrange-feladat

max

{

(1 +1

k)x1 + (k − 1) | x1, x2 ∈ { 0, 1

}

.

Az optimális megoldásban x1 = 1 és az ehhez tartozó célfüggvényérték:

k +1

k.

Most x2 esetében (8.60) nem teljesülhet, hiszen együtthatója 0, viszont x1

esetébenz = k > k − 1 = L(λ) − |c1 − a1|,

ezért értéke kötelezően 1. A redukált feladat pedig

2 + max (k − 1)x2

kx2 ≤ k − 1x2 ∈ { 0, 1 }.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 238: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

238 8. Lagrange-szorzók

Ebben az egyetlen megengedett megoldás x2 = 0, amiből az eredeti (8.64)feladatra az (1, 0) pontot kapjuk, ami azonban nem optimális. Ha a redukcióta

λ =k − 2

k, z = k

értékek mellett végezzük, akkor a Lagrange-feladat

max{(1 +2

k)x1 + x2 + (k − 2) | x1, x2 ∈ { 0, 1 },

aminek az optimális célfüggvényértéke

k +2

k,

amiből adódik, hogy mind x1, mind x2 kötelezően 1, de ez nem megengedettpont (8.64)-ben.

Ha z csak becsült érték, akkor gyakorlati szempontból meg kell különböz-tetnünk egy negyedik esetet is:(iv) A feladat mérete a redukció során csak kicsit csökkent.Ennek valószínű oka, hogy z értéke a valóságos optimumértéknél kisebb. Ek-kor érdemes z növelése után ismét megkísérelni a redukciót.

Vegyük észre, hogy a redukció általában O(mn), a hátizsák feladat ese-tében O(n) műveletet igényel, mely utóbbi kedvezőbb, mint a rendezéshezszükséges műveletek száma, ami O(n log n). Ezért úgy is eljárhatunk, hogytöbb redukciós lépést végzünk el, miközben z értékét az egyes lépések eredmé-nyétől függően korrigáljuk, azaz (ii) és (iii) esetében csökkentjük, (iv) eseténnöveljük. Ennek egy lehetséges variációját az alábbiakban foglaltuk össze.A leírásban szereplő za, illetve zf érték a korrekt becslésre vonatkozó alsó,illetve felső korlát. Értelemszerűen feltesszük az együtthatók nemnegativitá-sát.

8.3. algoritmus

1. Begin

2. za := 0;

3. zf :=∑n

j=1 cj ;

4. z := (b∑n

j=1 cj)/∑n

j=1 aj ;

5. while true do

6. begin

7. redukció;

8. if (iv) then if zf − z ≥ 2

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 239: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.5. Dekompozíció Lagrange-szorzók segítségével 239

9. then begin

10. za := z;

11. z := ⌈(z + zf )/2⌉;12. end

13. else STOP;

14. else if (i)

15. then STOP

16. else if z − za ≥ 2

17. then begin

18. zf := z;

19. z := ⌈(z + za)/2⌉;20. end

21. else STOP;

22. end;

23. end;

A kicsi, redukált feladat megoldására bármelyik alkalmas módszert, így azeddig megismertek közül akár a dinamikus programozást, akár a korlátozásés szétválasztást használhatjuk. A gyakorlatban olyan arányokkal kell szá-molnunk hátizsák feladat esetén, hogy sok ezer változó esetén is jó λ és zérték mellett legfeljebb néhány tíz marad meg a redukció után.

8.5. Dekompozíció Lagrange-szorzóksegítségével

Ha egy feladat szerkezete megengedi, hogy dekomponáljuk, úgy érdemes eztmegtenni, mert néhány kis feladatot könnyebb kezelni, mint egyetlen nagyot.Az alább tárgyalandó két probléma közül az első tekinthető az alapesetnek,míg a második egy bonyolultabb feladat, amely az ütemezéselméletből szár-mazik.

Először azt a feladatot vizsgáljuk, amelyben a feltételi mátrix szerkezetemegegyezik azzal, ami a lineáris programozásban a Dantzig–Wolfe-dekompozícióesetében volt ügyesen felhasználható. Legyenek m, k,m1, ...,mk, n1, ..., nk

pozitív egészek, Ai (m × ni)-es, Bi (mi × ni)-es mátrix (i = 1, ..., k), b

m-dimenziós, bi mi-dimenziós vektor (i = 1, ..., k), ci ni-dimenziós vektor(i = 1, ..., k). A megoldandó feladat

maxk

i=1

cTi xi (8.65)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 240: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

240 8. Lagrange-szorzók

k∑

i=1

Aixi ≤ b (8.66)

Bixi ≤ bi i = 1, ..., k (8.67)

xi ∈ { 0, 1 }ni i = 1, ..., k. (8.68)

A feladat szerkezetét 8.1. ábra szemlélteti.A (8.3) feltételben szereplő S halmazról matematikai értelemben nem tet-

tünk fel semmit. Hallgatólagosan mégis mindig azt gondoltuk, hogy az Shalmazt minden egyéb feltételtől függetlenül kizárólag azok a feltételek ha-tározzák meg, amelyek a változók egészértékűségét írják le. Most szakítunkezzel a hagyománnyal. Az S halmaz elemei a (8.67) és (8.68) feltételeketkielégítő vektorok lesznek. Így Lagrange-szorzókat csak a (8.66) egyenlőtlen-ségekhez kell rendelnünk. Legyen tehát

λ ∈ IRm+ .

Ekkor a Lagrange-feladat

max∑k

i=1(cTi − λT Ai)xi

Bixi ≤ bi i = 1, ..., kxi ∈ {0, 1}ni i = 1, ..., k.

(8.69)

Itt azonban 1 ≤ p < q ≤ k esetén xp és xq semmiféle hatással nincs egymásra,mert a célfüggvény szeparábilis, az xp-re és xq-ra vonatkozó feltételek pedigfüggetlenek. Ezért (8.69) megoldása ekvivalens a k számú

max (cTi − λT Ai)xi

Bixi ≤ bi

xi ∈ {0, 1}ni

(8.70)

feladat megoldásával. Így végül olyan pontot kapunk, ami biztosan kielégítia (8.67) és (8.68) feltételt és jó eséllyel a (8.66) egyenlőtlenségeket is.

A (8.70) feladatok persze még önmagukban is nehezek lehetnek. Ha azon-ban a Bi mátrix speciális szerkezetű, akkor ez nem feltétlenül van így. Kü-lönösen gyakori, hogy (8.67) valamennyi i esetén csak egyetlen, a változókösszegét korlátozó egyenlőséget tartalmaz, mely esetben (8.70) megoldásatriviális.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 241: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.5. Dekompozíció Lagrange-szorzók segítségével 241

cT1 cT

2 cTk

A1

B1

B2

A2 Ak b

b1

b2

Bk bTk

r r rr r r

r r r rrr

8.1. ábra: Az együtthatók szerkezete a (8.65)–(8.68) feladatban.

Most pedig rátérünk a második problémára. Ismeretes, hogy a kritikus útmódszerén (CPM) alapuló eljárások nem vesznek figyelembe erőforráskorlá-tokat, hanem azt feltételezik, hogy a szükséges erőforrás mindenkor rendel-kezésre áll. Ez azonban a gyakorlatban nincs mindig így, és különösen eza helyzet akkor, ha több, egymástól független hálóhoz tartozó tevékenysé-get is ugyanazokkal az erőforrásokkal kell kiszolgálni. Most egy ilyen esetetvizsgálunk.

Ahhoz, hogy a megfelelő matematikai feladatot felírhassuk, tisztázni kell,hogy az ütemezési problémát milyen körülmények határozzák meg. Az alábbifeltételekben valamennyi mennyiség nemnegatív egész.

1. Összesen m egymástól független projektet kell elvégeznünk a [0, t] időin-tervallumban. Feltesszük, hogy az egyes projektek külön-külön elvégez-hetők t idő alatt, ha a szükséges erőforrásokat rendelkezésre bocsájtjuk.Az i projekt ni tevékenységet tartalmaz, az i projekt j tevékenységé-nek (röviden az ij tevékenységnek) az elvégzési ideje pij (i = 1, ...,m,j = 1, ..., ni).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 242: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

242 8. Lagrange-szorzók

2. A tevékenységek elvégzése nem szakítható meg. Ezért, ha az ij tevé-kenység megkezdésének időpontját tij , befejezését pedig bij jelöli, akkortij + pij = bij (i = 1, ...,m, j = 1, ..., ni).

3. Az egyes projektekhez tartozó tevékenységek közötti megelőzési feltéte-leket egy irányított gráf írja le, mely irányított kört nem tartalmaz. Haaz ij tevékenység előzményeinek halmazát E(ij) jelöli, akkor bármely iesetén

tij ≥ bil ∀ il ∈ E(ij), j = 1, ..., ni. (8.71)

4. A projektek elvégzéséhez s különböző erőforrást kell felhasználnunk. A kerőforrásból a q időpontban gkq mennyiség áll rendelkezésre (k = 1, ..., s,q = 1, ..., t). Az ij tevékenység elvégzéséhez minden u időpillanatban,melyre tij ≤ u ≤ bij , a k erőforrásból rijk mennyiségre van szüksége. Hatehát M(q) jelöli az éppen folyó tevékenységeket, akkor

ij∈M(q)

rijk ≤ gkq k = 1, ..., s. (8.72)

5. Jelölje bi az i projekt befejezési idejét, ami

bi = max { bij | j = 1, ..., ni }.

Feltesszük, hogy a projekteknek a költségei függetlenek egymástól, azegyes projektek költsége pedig csak a befejezési idejétől függ. Tehát azi projekt költségét az fi(bi) függvény adja meg, és feltesszük továbbá,hogy az fi függvény monoton növő (i = 1, ...,m). Az összes költség tehát

m∑

i=1

fi(bi),

melynek minimalizálása a célunk.

8.5.1. definíció: Az i projekt ütemezésének nevezzük tij nemnegatív egé-szeket (j = 1, ..., ni), ha azok kielégítik a (8.71) feltételt, továbbá

bi ≤ t i = 1, ...,m (8.73)

is teljesül.Mivel a probléma valamennyi paramétere nemnegatív egész, ezért minde-

gyik projektnek csak véges sok ütemezése van, melyek számát jelöljük wi-vel(i = 1, ...,m).

Ha egy projekt ütemezését rögzítettük, akkor ezzel meghatároztuk végre-hajtásának teljes menetrendjét, így az erőforrások iránti igény időbeli elosz-lását is. Jelölje az i projekt valamely h ütemezése esetén (h = 1, ..., wi) a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 243: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.5. Dekompozíció Lagrange-szorzók segítségével 243

k erőforrás iránti igényt a q időpontban aihkq, a h ütemezés szerinti kezdésiidőpontokat tijh (j = 1, ..., ni), M(i, h, q) pedig a q időpontban a h ütemezésszerint folyó tevékenységeket, azaz

M(i, h, q) = { j | tijh < q ≤ tijh + pij }.Ekkor

aihkq =∑

j∈M(i,h,q)

rijk. (8.74)

Egy rögzített h ütemezés esetén ismert annak befejezési időpontja, így az5. pont szerint egyértelműen meghatározott annak költsége is, amit cih jelöl(i = 1, ...,m, h = 1, ..., wi).

Mindezek alapján a megoldandó feladat a következő:

minm

i=1

wi∑

h=1

cihxih (8.75)

m∑

i=1

wi∑

h=1

aihkqxih ≤ gkq k = 1, ..., s, q = 1, ..., t (8.76)

wi∑

h=1

xih = 1 i = 1, ...,m (8.77)

xih ∈ {0, 1} i = 1, ...,m, h = 1, ..., wi, (8.78)

ahol az xih változókon kívül az összes többi mennyiség ismert. Az xih változópedig aszerint 1 vagy 0, hogy az i projektet a h ütemezés szerint végezzük-eel vagy sem.

Vegyük észre, hogy a (8.75)–(8.78) feladat lényegében a (8.65)–(8.68) fel-adat speciális esete, a (8.76) egyenlőtlenségek felelnek meg a (8.66) összekötőfeltételeknek, a (8.67) feltételrendszernek pedig a (8.77) egyenletek (mindenegyenlet átalakítható ekvivalens módon két egyenlőtlenséggé). Az egyedülikülönbség, hogy a (8.75) célfüggvény minimalizációs alakban van megadva,ebből azonban (−1)-gyel való szorzással a (8.65)-nek megfelelő maximalizá-ciós alakot nyerhetjük. Ezért, ha csak a (8.66) feltételekhez vezetünk beLagrange-szorzókat, akkor a Lagrange-feladat (8.70) alakú problémák soro-zatára bomlik fel. Egy ilyen feladat az esetünkben rögzített i index és λkq ≥ 0(k = 1, ..., s, q = 1, ..., t) értékek mellett

min∑wi

h=1(cih +∑s

k=1

∑tq=1 aihkqλkq)xih

∑wi

h=1 xih = 1xih ∈ { 0, 1 } h = 1, ..., wi

(8.79)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 244: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

244 8. Lagrange-szorzók

alakú lesz. A (8.70) feladat célfüggvényében ugyan maximalizálás szerepel, deha elvégeznénk a fent említett (-1)-gyel való szorzást, akkor mind a cih, mindaz aihkq együttható (-1)-szerese szerepelne a célfüggvényben, ezt alakítottukvissza minimalizálássá.

A (8.70) feladat egyes speciális eseteiről, éppen azokról, amelyek közé a(8.79) is esik, vagyis azokról, ahol egyetlen feltétel van, ami a változók szá-mát korlátozza, azt mondottuk, hogy triviálisan megoldhatók. Úgy tűniktehát, hogy a vizsgált probléma Lagrange-feladata minden nehézség nélkülkezelhető. Ennek ellenére nagy a veszélye annak, hogy minden, amit eddigcsináltunk, csak tartalom nélküli formalista játék. Hol a hiba? A (8.65)–(8.68) feladatot hallgatólagosan mindig explicit módon felírható feladatnaktekintettük, következésképp (8.70) is ilyen volt. Az „explicit módon felírható”kifejezés alatt azt kell érteni, hogy ha az együtthatókat valahonnan ki is kellszámolni, ez a feladat megoldásának megkezdése előtt megtehető, és a to-vábbiakban megfeledkezhetünk az együtthatók származásáról, valamint azt,hogy azok tárolása az adott technikai körülmények között nem okoz nehézsé-get. Más a helyzet azonban a jelenlegi problémánál. Egy-egy projekt ugyanisviszonylag kevés adattal is leírható, de ennek a 8.5.1. definíció értelmébenvett ütemezései igen sokan lehetnek, úgyhogy ezek mindegyikének előállításareménytelenül sok számítást igényelhet. Az eddigi átalakításoknak csak ak-kor van tehát értelmük, ha a (8.79) feladatot annak explicit felírása nélkül, avizsgált probléma struktúráját jól kihasználó speciális eljárással meg tudjukoldani.

Mivel a (8.79) feladatban az i index rögzített érték, ezért ezt a jelölésegyszerűsítése érdekében elhagyjuk az alábbiakban.

Az egy projekthez tartozó háló irányított kört nem tartalmazhat, így az5.2.4. tétel szerint a háló pontjainak létezik topologikus rendezése. Esetünk-ben tehát feltételezhetjük, hogy a vizsgált projekt tevékenységeinek (1, ..., n)sorrendje olyan, hogy bármely két j, l tevékenység mellett l > j esetén az ltevékenységnek nem kell megelőznie j-t. Bevezetünk még két további jelölést.Tegyük fel, hogy a j tevékenységet a tj időpontra tettük valamely h üteme-zésben. Ekkor (8.79) célfüggvényében a kettős szummában a j tevékenység

uj(tj) =

s∑

k=1

rjk

bj∑

q=tj+1

λkq (8.80)

értékkel járul hozzá a megfelelő xb változó együtthatójához. A megelőzésifeltételek hálójában – a kritikus út módszerénél megszokott módon – legyena (j, l) él hossza pj . Jelölje vj a hálóban a j csúcsból induló leghosszabb úthosszát. Tehát ha a j tevékenységet a tj időpontra tettük, akkor a projekt a

tj + vj

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 245: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.5. Dekompozíció Lagrange-szorzók segítségével 245

időpontnál előbb nem fejeződik be.8.5.1. tétel: Legyen l (1 ≤ l ≤ n) egy rögzített index. Tegyük fel, hogy egyh ütemezésben az 1, 2, ..., l tevékenységet rendre a t1, t2, ..., tl időpontra tettük.Ekkor a megfelelő (8.79) típusú feladatban az xh változó együtthatója legalább

A(h, l) = max { f(tj + vj) | 1 ≤ j ≤ l } +

l∑

j=1

uj(tj). (8.81)

Bizonyítás: Az említett célfüggvényben xh együtthatója két tagból tevő-dik össze. A fent mondottakból következik, hogy ezek közül ch-t a (8.81)-belimaximum, a másodikat pedig az A(h, l)-ben lévő szumma becsli alulról.Q.E.D.

Ha l = n, akkor A(h, l) megegyezik magával az együtthatóval.Az alább megfogalmazandó algoritmusban olyan ütemezéseket határozunk

meg, amelyeknek esélyük van arra, hogy a (8.79) feladat optimális megoldásátadják úgy, hogy az említett (1, ..., n) topologikus sorrendben határozzuk mega tj kezdési időpontokat. Ezt a helyzetet feltételezve a következő tételbenegy módszert adunk arra, hogyan lehet kiszűrni egyes ütemezéseket, melyekviszont bizonyosan nem lehetnek optimálisak.8.5.2. definíció: Legyen 1 ≤ l ≤ n rögzített egész. Az

yT = (t1, ..., tl)

vektor l-hosszú részleges ütemezés, ha az alábbi két feltétel teljesül:

∀ e ∈ E(j) esetén te + pe ≤ tj j = 2, ..., l

éstj + vj ≤ t j = 1, ..., n.

Definíció szerint 0-hosszú részleges ütemezés az, ahol egyetlen időpont sincsmeghatározva.8.5.3. definíció: Az y l-hosszú részleges ütemezés befejezése a

zT = (tl+1, ..., tn)

vektor, ha (yT , zT ) egy ütemezés. Továbbá y optimális befejezése a befejezéseiközül az a z vektor, melynél az eredményül kapott h ütemezésre A(h, n) értékminimális.8.5.2. tétel: Legyen 1 ≤ l ≤ n rögzített egész- és y1, y2 két l-hosszú rész-leges ütemezés, melyek optimális befejezéseivel nyerjük a h1 és h2 ütemezést.Tegyük fel, hogy

t1j ≤ t2j j = 1, ..., l (8.82)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 246: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

246 8. Lagrange-szorzók

uj(t1j) ≤ uj(t2j) j = 1, ..., l. (8.83)

Ekkor

A(h1, n) ≤ A(h2, n). (8.84)

Bizonyítás: Jelölje yi optimális befejezését zi (i = 1, 2). A (8.82) feltétel-ből következik, hogy z2 befejezése y1-nek. Jelölje h3 az így nyert ütemezést.Megmutatjuk, hogy

A(h1, n) ≤ A(h3, n) ≤ A(h2, n).

Itt az első egyenlőtlenség h1 és h3 definíciójából következik, tehát elegendőcsak a másodikkal foglalkozni.

A(h3, n) =

l∑

j=1

uj(t1j) +

n∑

j=l+1

uj(t2j) +

max{max{f(t1j + vj) | 1 ≤ j ≤ l}, max{f(t2j + vj) | l + 1 ≤ j ≤ n} }.

Felhasználva a (8.83) feltételt és az f függvény monotonitását nyerjük, hogy

A(h3, n) ≤l

j=1

uj(t2j) +n

j=l+1

uj(t2j) +

max{max{f(t2j + vj) | 1 ≤ j ≤ l}, max{f(t2j + vj) | l + 1 ≤ j ≤ n} }= A(h2, n).

Q.E.D.

A tétel mondanivalója az, hogy ha a (8.82) és (8.83) feltétel teljesül, akkory2 befejezésével nyert ütemezések vizsgálata elhagyható.

Tegyük fel, hogy meghatároztunk már egy h1 ütemezést. Legyen B =A(h1, n). Nyilván csak olyan h ütemezéseket érdemes a továbbiakban keresni,amelyekre

A(h, n) < B.

8.5.3. tétel: Legyen 0 ≤ l ≤ n rögzített egész, valamint B ugyancsakrögzített, valós szám. Tekintsünk egy yT = {t1, ..., tl} l-hosszú részleges üte-mezést. Legyen T a legnagyobb egész, amelyre

l∑

j=1

uj(tj) + f(T ) < B (8.85)

teljesül. Ekkor minden h ütemezésben, amelyet y-ból egy alkalmas befejezésselnyertünk, és amelyre

A(h, l + 1) < B

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 247: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.5. Dekompozíció Lagrange-szorzók segítségével 247

teljesül, igaz, hogy

max{te + pe | e ∈ E(l + 1)} ≤ tl+1 ≤ min{t, T} − vl+1. (8.86)

Bizonyítás: Az első egyenlőtlenségnek azért kell teljesülnie (8.86)-ban,mert különben y-nak tl+1-gyel való kiegészítése nem vezetne ütemezéshez.Ugyancsak ez a helyzet, ha történetesen

tl+1 > t − vl+1

állna fenn. Végültl+1 > T − vl+1

esetén (8.85)-ből következik, hogy bármely olyan h ütemezésre, amelyet(yT , tl+1)-ből valamely befejezéssel nyertünk, igaz, hogy

A(h, n) ≥ A(h, l + 1) > B. Q.E.D.

Ha a (8.86) egyenlőtlenség semmilyen tl+1 értékre sem teljesülhet, mert

max{te + pe | e ∈ E(l + 1)} > min{t, T} − vl+1,

akkor nem kapható y-ból olyan h ütemezés, amelyre

A(h, n) < B

teljesülne. Ha E(l+1) üres halmaz, mint például l = 0 esetén, akkor célszerű(8.66) bal oldalát 0-ként értelmezni, hiszen tl+1 értéke nemnegatív.

Az utóbbi két tétel egybevetésével kapjuk, hogy igaz a8.5.4. következmény: Legyen 0 ≤ l < n rögzített egész, valamint Bugyancsak rögzített valós szám. Tekintsünk egy

yT = (t1, ..., tl)

l-hosszú részleges ütemezést. Legyen T a (8.85)-ben definiált egész. Tegyükfel, hogy

max{te + pe | e ∈ E(l + 1)} ≤ min{t, T} − vl+1,

és jelölje H ezen értékek közé eső egészek halmazát. Ha van y-nak olyanfolytatása, hogy az így kapott h ütemezés esetén

A(h, l + 1) < B,

akkor van olyan optimális folytatása is, amelyben tl+1 értéke a

P = {τ ∈ H | ∀θ ∈ H, θ < τ esetén ul+1(θ) > ul+1(τ)} (8.87)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 248: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

248 8. Lagrange-szorzók

halmazból kerül ki.

Bizonyítás: A 8.5.3. tétel szerint bármely optimális folytatásban tl+1 ∈ H.A 8.5.2. tétel azt mondja ki, hogy

θ < τ és ul+1(θ) ≤ u(τ)

esetén tl+1 értékeként elegendő csak θ-t vizsgálni. Q.E.D.

Az alábbi algoritmusban a fenti jelöléseket használjuk, vagyis:B - az optimális célfüggvényérték felső korlátja (az eddig talált legjobb üte-mezéshez tartozó célfüggvényérték),P - a (8.87) képletben definiált halmaz.

Maga az eljárás lényegében korlátozás és szétválasztás típusú módszer,ahol a megoldások egyes részhalmazait olyan ütemezések alkotják, amelyekugyanannak a részleges ütemezésnek a befejezésével állíthatók elő. Így egyrészhalmazt egyértelműen jellemez ez a részleges ütemezés, melynek alapjána (8.81) képletben számított érték a célfüggvény alsó korlátja a részhalmazon.Egy l-hosszú részleges ütemezéssel jellemzett részhalmaz további részhalma-zokra történő bontása úgy történik, hogy (l + 1)-hosszú részleges ütemezése-ket képezünk az l+1 tevékenység kezdési időpontjának meghatározásával. A8.5.4. következmény alapján a szétbontásban csak azokat az (l + 1)-hosszúrészleges ütemezéseket kell tekinteni, amelyekben tl+1 értéke a (8.87)-bendefiniált P halmazba esik. A 6.1. algoritmushoz hasonlóan:L – a még felbontásra váró részhalmazok listája.További jelölések:l(y) – az y részleges ütemezés hossza (0 ≤ l(y) ≤ n)argmin{µ(x) | x ∈ S} az S halmaz egy olyan eleme, amelyben az S-enértelmezett valós µ(x) függvény értéke minimális.

8.4. algoritmus

1. Begin

2. B := +∞;

3. L := {0 − hosszú részleges ütemezés};4. y := 0 − hosszú részleges ütemezés;

5. l := 0;

6. while L 6= ∅ do

7. begin

8. L := L − y;

9. képezzük a P halmazt;

10. if P = ∅

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 249: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

8.5. Dekompozíció Lagrange-szorzók segítségével 249

11. then

12. begin

13. if L 6= ∅14. then begin

15. y := argmin{A(z, l(z)) | z ∈ L};16. l := l(y);

17. end

18. end

19. else

20. begin

21. if l < n − 1

22. then

23. begin

24. ∀ τ ∈ P : L := L + (yT , τ);

25. tl+1 := argmin{A((yT , τ)T , l + 1) | τ ∈ P};26. l := l + 1;

27. end

28. else

29. begin

30. tn := argmin{A((yT , τ)T , n) | τ ∈ P};31. if A((yT , τ)T , n) < B

32. then B := A((yT , τ)T , n);

33. if L 6= ∅34. then

35. begin

36. y := argmin{A(z, l(z)) | z ∈ L};37. l := l(y);

38. end;

39. end;

40. end;

41. end;

42. end;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 250: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

250 8. Lagrange-szorzók

A fa építésénél itt azt a stratégiát követtük, hogy amíg lehet, egy újonnankeletkező részhalmazt vizsgálunk tovább. Ha ilyen nincs, mert felépítettünkegy teljes ütemezést (30–40. sor) vagy P halmaz üres lett (11–18. sor), akkoraz L listából a legjobb becsléssel rendelkező pontot választjuk ki. Ilyenkorellenőrizni kell, hogy L-ben van-e még legalább egy részleges ütemezés, elő-fordulhat ugyanis, hogy a while ciklus utolsó lefutásakor L-ben csak egyetlenelem volt, ami a ciklusmag első utasításának végrehajtásakor (8. sor) kikerültonnan.

A 8.4. algoritmus tehát nem az eredeti erőforrásra vonatkozó korlátokat istartalmazó feladatot oldja meg, hanem annak Lagrange-feladatát. Így azon-ban alsó korlátot nyerünk az eredeti feladat megoldását szolgáló további, pl.korlátozás és szétválasztás típusú eljárások számára. Ezen utóbbi eljárásokismertetése azonban már túlmegy a jelen fejezet keretein.

8.6. Megjegyzések és irodalomA Lagrange-szorzók használatának itt ismertetett módszerét Everett vetettefel a nagyon gondolatgazdag [30] dolgozatában. Ebben megtalálható lénye-gében a 8.1. szakasz tartalma, a szorzók választásának (8.18) heurisztikusszabálya néhány, itt nem szereplő tétellel indokolva. Érdekes azonban, hogya 8.1.1. tétel megfelelőjét egy kicsit gyengébb formában mondta ki, mert(8.6) helyett a b = g(x(λ)) egyenlőséget követelte meg. Ezért a tétel erősebbalakját egy másik dolgozatban adták meg [70]. További történeti érdekesség,hogy két szerző, félreértve az eredeti cikket, a módszert egzakt eljárásnakgondolta, és ezt egy ellenpélda megadásával kívánta cáfolni [20]. A szor-zók választásának szubgradiensen alapuló módszerét megtalálhatjuk példáula [34] dolgozatban. A szorzók keresésének lineáris programozásra való vissza-vezetését adja [16]. Módszert ad a primál és a duál feladat optimumértékeiközötti különbség eltüntetésére [6]. A 2. optimalitási kritériumot a [87] dolgo-zat tárgyalja, ami egyben a bináris változós lineáris egészértékű programozásifeladatnál foglalkozik a szorzók kalibrációjával is. A feladatok redukciójárólad jó áttekintést [32], míg a célfüggvény becslésén alapuló módszer [11]-bentalálható. A Dantzig–Wolfe-dekompozícióval megoldható feladatokhoz ha-sonló feladatok dekomponálásában a Lagrange-szorzók használata folklórnaktekinthető. Az erőforrásra vonatkozó korlátokat is tartalmazó ütemezési fel-adat megoldása a [33] dolgozatban található. A Lagrange-szorzóknak igennagy irodalma van. Ezekkel kapcsolatban érdemes valamely összefoglaló dol-gozatból tájékozódni, például jól használható [81].

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 251: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

9. fejezet

Lokális keresés – egyáltalános heurisztikusmódszer

A matematikában gyakran előfordul, hogy ugyanaz az alapötlet különböző te-rületeken felmerül, de annak konkrét formája éppen a területek eltérő sajátos-ságai miatt nagyon különböző lesz. Erre láttunk példát a Pontrjágin-elméletés a Bellman-elv esetében. Az alábbi heurisztikus eljárás hasonló értelembenszoros rokonságot mutat a nemlineáris programozás gradiens módszerével,ami általában szintén csak heurisztikus módszernek tekinthető. A matema-tikai programozási feladatok megoldása igen gyakran – a kétfázisú szimplexmódszerhez hasonlóan – két egymást követő részből áll: először egy megen-gedett megoldást keresünk, majd ebből kiindulva és többnyire a megengedetttartományon belül haladva bolyongásszerű mozgással még jobb pont eléré-sére teszünk kísérletet. A megoldás eme második részére példa a szimplexmódszernél a báziscserék sora, mert így bázismegoldásokon haladunk végig,a nemlineáris programozás esetében a gradiens módszer, az egészértékű prog-ramozás esetében pedig a lokális keresés. Ez a módszer nehezen választhatóel a következő fejezetben tárgyalandó mohó módszertől. A utóbbi úgy isfelfogható, mint az előbbi speciális esete. A 10. fejezet első szakaszában té-rünk vissza azokra a hallgatólagosan elfogadott ismertetőjegyekre, amelyekalapján a két módszert meg szokás kükönböztetni.

9.1. A módszer általános vázaEgy matematikai programozási feladat optimális megoldása a megengedettmegoldások körében egy kitüntetett tulajdonsággal bír, hiszen ennek a pont-nak a célfüggvényértéke a legnagyobb vagy legkisebb aszerint, hogy maxi-malizálunk vagy minimalizálunk. Nagyon sok más matematikai feladat semegyéb, mint egy adott halmaz valamely kitüntetett tulajdonságú elemének amegkeresése. Így például a gráfszínezési feladat a gráf színezései közül annakelőállítása, amelyik a legkevesebb színt használja fel. A Hamilton-kör létezé-sének eldöntése visszavezethető a gráf egyszerű körei közül egy leghosszabb-nak a megtalálására.

Az ismertetendő módszer egyben a problémák egy modelljét adja. A meg-oldandó feladatot abban a nagyon általános alakban tűzzük ki, hogy egy

251

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 252: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

252 9. Lokális keresés – egy általános heurisztikus módszer

véges M halmaz egy kitüntetett tulajdonságú elemét keressük. A megoldásimódszerhez két segédeszköz létezését feltételezzük:(i) Ismert egy g(x) függvény, ami valamilyen értelemben méri, hogy az x ∈ Mpont tulajdonságai mennyire közelítik meg a kívánt tulajdonságokat. Pon-tosabban szólva ez csak relatív mérést jelent, azaz x, y ∈ M és g(x) < g(y)esetén azt mondjuk, hogy y jobb, mint x.(ii) Minden x ∈ M esetén adott egy S(x) halmaz úgy, hogy

| S(x) | << | M |,

azaz S(x) sokkal kevesebb elemet tartalmaz, mint M. Az S(x) halmaz ele-meit x szomszédainak nevezzük.

Módszerünk a következőképp foglalható össze. Kiindulunk az M halmazegy tetszőleges eleméből, és a szomszédai közül átmegyünk egy olyanra, ame-lyik a g értékelő függvény szerint jobb nála, ha ilyen egyáltalán létezik. Majdezt az új pontra megismételjük mindaddig, amíg a szomszédok közül márnem található jobb pont.

9.1. algoritmus

1. Begin

2. válasszunk egy x0 ∈ M pontot;

3. k := 0;

4. while Gk := {x ∈ S(xk) | g(x) > g(xk)} 6= ∅ do

5. begin

6. válasszuk ki xk+1-et Gk-ból;

7. k := k + 1;

8. end;

9. end;

Ez az általános váz sok kérdést nyitva hagy, melyek közül a két legfon-tosabb, a g(x) értékelő függvény és az S(x) szomszédok megválasztása, amegoldandó feladat természetétől függ, ezért általánosan nem tárgyalható.Sok olyan probléma van, ahol érdemes több különböző, akár véletlenszerűenválasztott x0 kezdőpontra lefuttatni az eljárást. Az xk+1 pont kiválasztásárakét szélsőséges stratégia képzelhető el. Az egyikben valóban előállítjuk a Gk

halmaz összes elemét, és ezek közül a g értékelő függvény szerinti legjobbatválasztjuk, a másikban viszont xk+1 azon eleme lesz Gk-nak, amelyiket el-sőként találjuk meg. Az utóbbi stratégia alkalmazására akkor lehet szükség,ha S(xk) relatíve sokkal kevesebb elemet tartalmaz, mint M, de abszolútértékben még mindig elég sokat.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 253: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

9.2. A módszer alkalmazása az egészértékű programozásban 253

9.1. tétel: Ha az M alaphalmaz véges, akkor a 9.1. algoritmus végesszámú lépés után befejeződik.

Bizonyítás: Mivel az algoritmus 4. sorában a g értékelő függvény határozottnövekedését követeltük meg, ezért egyetlen xk pont sem ismétlődhet meg.

Q.E.D.

Megemlítünk egy példát arra, hogy az ismert algoritmusok is értelmez-hetők úgy, mint amelyek a 9.1. algoritmus szabta keretek között maradnak,tehát az utóbbi a feladatoknak egy igen általános tulajdonságát ragadja meg.A 9.1. algoritmus lényege azonban az, hogy a segítségével nehéz feladatokhozis lehet közelítő eljárásokat találni.

Tekintsük a lexikografikus szimplex módszert. Az egyszerűség kedvéért te-gyük fel, hogy a feladat m lineáris és független egyenletet és n(≥ m) változóttartalmaz. Tudjuk, hogy a lineáris programozási feladat optimális megoldá-sát a (megengedett) bázismegoldások között lehet keresni. A módszer egymegengedett bázismegoldásból indul ki, aminek megtalálása a 9.1. algorit-mus 2. sorának felel meg. Az algoritmus szomszédos bázismegoldásokonhalad végig, tehát olyanokon, amelyeket meghatározó bázisok egy-egy vek-tor cseréjével kaphatók egymásból. A módszer minden bevonandó vektorhozegyértelműen határozza meg a bázist elhagyó vektort. Az eljárás során bár-mely bázismegoldásból legfeljebb n−m másik bázismegoldásra mehetünk át,ami sokkal kevesebb az összes bázismegoldás számánál, ami

O

((

nm

))

.

A g függvény pedig a lineáris programozási feladat célfüggvénye.

9.2. A módszer alkalmazása az egészértékűprogramozásban

A lokális keresés felhasználható egészértékű programozási feladatok esetébenmegengedett megoldások keresésére. Az eljárást részletesen a bináris változókesetére dolgozzuk ki, de innen könnyen általánosítható.

Tehát a megoldandó feladat

max

n∑

j=1

cjxj (9.1)

n∑

j=1

aijxj ≤ bi i = 1, ...m (9.2)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 254: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

254 9. Lokális keresés – egy általános heurisztikus módszer

xj ∈ { 0, 1 } j = 1, ...n. (9.3)

Megengedett megoldáson az eddigi szóhasználatnak megfelelően azokat a bi-náris vektorokat értjük, anelyek a (9.2) feltételeket kielégítik. Az együttha-tókról annyit teszünk fel, cj ≥ 0 (j = 1, ..., n). Mint azt az 1. fejezetbenláttuk, ez nem jelenti az általánosság megszorítását.9.2.1. definíció: A w valós szám negatív részén

|w|− = min {w, 0 } (9.4)

számot értjük.A (9.1)–(9.3) feladathoz a g értékelő függvényt a következőképpen választ-

juk meg:

g(x) =

{

cT x ha x megengedett∑m

i=1 |bi −∑n

j=1 aijxj |− ha x nem megengedett (9.5)

Egy bináris vektor akkor és csak akkor nem megengedett, ha legalább egy(9.2)-beli egyenlőtlenséget megsért, azaz legalább egy alkalmas i-re

n∑

j=1

aijxj > bi,

ahonnan

|bi −n

j=1

aijxj |− < 0.

A bal oldal annak mértéke, hogy az x vektor mennyire sérti meg a feltételt.Ezért g(x) < 0, ha x nem megengedett. Ugyanakkor, ha x megengedett,akkor c ≥ 0 miatt g(x) ≥ 0. Tehát a (9.5) által definiált g(x) függvénybármely megengedett megoldást jobbnak értékel bármely nem megengedettmegoldásnál.

Egy x vektor r-edrendű szomszédainak az

Sr = {y ∈ { 0, 1 }n |n

j=1

|xj − yj | = r } (9.6)

halmaz elemeit nevezzük. Tehát x r-edrendű szomszédai azok a bináris vek-torok, amelyek pontosan r komponensben különböznek x-től. Rögzített resetén

|Sr| =

(

nr

)

<< 2n, (9.7)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 255: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

9.2. A módszer alkalmazása az egészértékű programozásban 255

azaz a vektoroknak sokkal kevesebb szomszédjuk van, mint amennyien össze-sen vannak. Egy futáson belül r mindig azonos marad. Már viszonylag kisn esetén is az r ≥ 3 értékek nem jöhetnek szóba, mert a szomszédok számatúl nagy lesz, így egy-egy iteráció túl hosszú ideig tart. A magasabb rendűszomszédok arra használhatók, hogy egy alacsonyabb rendű szomszédokkalnyert lokális optimumot tovább javítsunk nagyon korlátos számú iterációnkeresztül.

A 9.1. algoritmus 2. és 6. sorában felírt műveleteket nem definiáltuk mégpontosan. A kezdőpontot véletlenszerűen is választhatjuk, sőt a módszerttöbb kezdőpont esetén is lefuttathatjuk. Az xk+1 pont kiválasztására bármelykorábban említett stratégia felhasználható.

Az így definiált eljárás először arra törekszik, hogy megengedett megoldásttaláljon, majd pedig arra, hogy ezt még tovább javítsa.

Az eljárás kiválóan alkalmas olyan kombinatorikus optimalizálási felada-tok esetében jó megoldások előállítására, amelyeknél könnyű megengedettmegoldást találni, a nehézség az optimális megoldás megtalálásában és azoptimalitás bizonyításában rejlik. Számos ütemezési probléma tartozik ide.Ugyancsak ilyen az 1. fejezetben említett utazó ügynök feladat is, hiszen en-nek bármely Hamilton-kör megengedett megoldása. Ha rögzített az a város,amelyikből indulunk, akkor a többi n − 1 csúcs permutációi és a Hamilton-körök kölcsönösen egyértelműen megfeleltethetők egymásnak. Egy permutá-ciót előállítani pedig nem gond. Két különböző módot is mutatunk, ahogy alokális keresés felhasználható az utazó ügynök feladatnál. Mindkét esetben njelöli a városok számát, az i és j város távolságát pedig cij (i 6= j).

Az első esetben semmilyen tulajdonságot sem követelünk meg a távolsá-goktól. Viszont feltesszük, hogy a városok száma legalább 4, továbbá 2 ≤m ≤ n − 2 egy rögzített egész. Az m értéke a gyakorlatban nagy n esetén iskicsi lesz. Kiindulunk egy tetszőleges körútból, amiben a városok sorrendjétjelölje π1, π2, ..., πn. Tekintsünk a körútban m egymást követő csúcsot. Akörút többi részét változatlanul hagyva, rendezzük át ezt az m csúcsot mindenlehetséges módon, és válasszuk ki azt a permutációjukat, amely a körút többirészével együtt a legkisebb összköltséget adja. Például, ha m = 2, és az iindexre 2 ≤ i < n igaz, a két egymást követő csúcs πi és πi+1, akkor csak a(πi, πi+1) és (πi+1, πi) sorrendeket kell figyelembe venni. Az előbbi a jelenlegis a körútban lévő sorrend, a második pedig az a sorrend, amire a jelenlegitesetleg kicseréljük. Figyelembe véve a két csúcs kapcsolatát a többi csúccsal,a csere akkor történik meg, ha

cπi−1πi+ cπiπi+1

+ cπi+1πi+2> cπi−1πi+1

+ cπi+1πi+ cπiπi+2

.

Ha az m csúcs vizsgálata megtörtént, akkor a vizsgált szakaszt a kör menténegy pozícióval arrébb toljuk, mint egy ablakot. Az eljárás akkor ér véget,ha az ablak egyszer úgy körbement, hogy közben nem volt sehol javulás.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 256: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

256 9. Lokális keresés – egy általános heurisztikus módszer

Az ablaknak n különböző pozíciója van. Egy-egy pozícióban m! különbözősorrendet vizsgálunk meg, amelyek közül egy a jelenlegi sorrend. Ezért egykörútnak a Hamilton-körök között n × m!−n szomszédja van.

A másik alkalmazásban is feltesszük, hogy n ≥ 4. Itt először megkövetel-jük, hogy a távolságok szimmetrikusak legyenek, azaz 1 ≤ i < j ≤ n eseténcij = cji. A háromszög-egyenlőtlenségre nem lesz szükségünk. A pillanat-nyi körút két nem szomszédos éle legyen (πi, πi+1) és (πj , πj+1), ahol teháti− j 6≡ ±1(mod n), és ahol a csúcsokat az érintés sorrendjében tüntettük fel,feltéve, hogy πi-ből indulunk. Az utóbbi tehát azt jelenti, hogy πi+1 után egylegalább egy élből álló szakaszt kell megtennünk, hogy πj-be érjünk, és πj+1

után megint egy legalább egy élből álló szakasz vezet πi-be. Jelölje ezen kétszakaszt Si+1,j és Sj+1,i. Felmerül a kérdés, hogy nem járunk-e jobban, haπi-ből először πj-be megyünk, onnan az Si+1,j szakaszon visszafelé haladvaeljutunk πi+1-be, ezután πj+1-be, majd az Sj+1,i szakasz megtételével bezár-juk a kört. A most említett kör szimmetrikus távolságok esetén lényegébencsak abban különbözik az eredeti körúttól, hogy a (πi, πi+1), (πj , πj+1) élpárta (πi, πj), (πi+1, πj+1) élpárra cseréltük fel. Tehát az új körút akkor jobb, ha

cπiπi+1+ cπjπj+1

> cπiπj+ cπi+1πj+1

.

Most a lehetséges élpárok száma, ami egyben megadja a szomszédok számátis,

n(n − 3)

2.

A módszer akkor is alkalmazható, ha a távolságfüggvény nem szimmet-rikus, de akkor nem mindegy, hogy a két potenciális élen milyen iránybanhaladunk végig, és így az Si+1,j és Sj+1,i szakasz közül melyiket fordítjukmeg. Ekkor a javítás feltétele bonyolultabb, és több számítással jár.

A módszer működését ahhoz lehetne hasonlítani, mintha egy turistánakaz lenne a feladata, hogy térkép nélkül jusson fel egy hatalmas hegy legma-gasabb pontjára. Mivel nem látja be az egész hegyet, hanem mindig csak egyszűk környezetét, ezért a legokosabb, amit tehet, az, hogy pillanatnyi pozíci-ójához viszonyítva mindig felfelé halad – nem feltétlenül a legmeredekebben–, egészen addig, amíg egy csúcsra nem ér. A hegynek azonban több csúcsais lehet, ezért nem biztos, hogy a legmagasabbra ért fel. A hely, ahol áll,tehát a csúcs, az – matematikai kifejezéssel élve – általában csak lokális, denem globális optimum.

Két változatot is kidolgoztak arra, hogyan lehet kijutni egy lokális opti-mumból. Ezeket tárgyaljuk a következő két szakaszban.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 257: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

9.3. A módszer termodinamikai változata, a szimulált lehűlés 257

9.3. A módszer termodinamikai változata, aszimulált lehűlés

Ha egy gázt magára hagyunk, és hagyjuk fokozatosan kihűlni, akkor az egyesrészecskéinek az energiája átlagosan csökkenni fog. Mégis előfordulhat, hogyvéletlenszerűen egy részecske energiája az ütközések következtében növekszik.A fizikából ismert Boltzman-törvény azt mondja ki, hogy annak a valószínű-sége, hogy egy részecske energiája dE > 0 értékkel nőjön:

P (dE) = e−dE

kt , (9.8)

ahol k az ún. Boltzman-állandó, t pedig a rendszer abszolút hőmérséklete.Tekintsük a fizikai rendszer és a fenti algoritmus közötti azon analógiát,

amelyet a

részecske −→ az M halmaz elemeenergia −→ (-1)×értékelő függvényhőmérséklet −→ a k lépésszám egy nemkorlátos, szigorúan

monoton növő f(k) ≥ 0 függvénye

megfeleltetések határoznak meg. Ebben a felfogásban az y pontról továbbrais átlépünk bármely y ∈ S(x) pontra, ha g(y) < g(x). Azokat az x pontokat,amelyekre g(x) ≤ g(y) teljesül, nem feltétlenül utasítjuk el, hanem azokra azanalógia alapján a (9.8)-ból adódó

P (x → y) = e(g(x)−g(y))f(k) (9.9)

valószínűséggel lépünk át.Így módunk nyílik arra, hogy egy lokális, de nem globális optimumból is

továbbhaladjunk, igaz, először természetszerűleg csökkenő g(x) értékek men-tén haladva. Az f(k) függvény minden határon túl nő. Ezért rögzített d > 0szám esetén

limk→∞

e−df(k) = 0.

Tehát a lépésszám növekedtével 0-hoz tart annak valószínűsége, hogy a gfüggvény d-vel csökkenése esetén átlépünk a rosszabb pontra. Speciálisan, hag csak egész értéket vesz fel, akkor annak valószínűsége is nullához tart, hogyegyáltalán egy rosszabb pontra átlépünk.

Könnyű olyan eljárást szerkeszteni, amely megmondja, hogy egy y pont-ról átlépjünk-e a nála rosszabb x pontra. Ekkor g(x) − g(y) < 0, így (9.9)jobb oldala egy 0 és 1 közé eső szám. Úgyszólván minden magasabb szintűprogramnyelvben létezik 0 és 1 közé eső, egyenletes eloszlású véletlen számo-kat előállító függvény, amit az alábbiakban random jelöl. Ezt felhasználvakapjuk, hogy tetszőleges 0 < z ≤ 1 esetén

P (z > random) = z, (9.10)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 258: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

258 9. Lokális keresés – egy általános heurisztikus módszer

ahol random egyben a függvény által az adott kiértékeléskor előállított vélet-len szám is. Itt z helyébe (9.9) jobb oldalát írva kapjuk a kívánt valószínűségűeseményt.

Vizsgáljuk meg azt az esetet, amikor az y ponthoz egy olyan x pontot ta-lálunk, hogy g(y) = g(x). Ekkor tehát az értékelő függvényben javulás nemtörtént, így emiatt nem térnénk át x-re. Most viszont (9.9) jobb oldala 1, ígyerre az x pontra alkalmazva az átlépés véletlentől függő kritériumát biztosanátlépnénk x-re. Ha a szomszédsági viszony szimmetrikus, azaz x ∈ S(y) ak-kor és csak akkor, ha y ∈ S(x), akkor az ilyen esetekben az eljárás könnyenciklizálhatna. A ciklizálást néhány további állapotváltozó bevezetésével éshelyes beállításával el lehet kerülni. Annak érdekében azonban, hogy az algo-ritmust ne bonyolítsuk el, g(x) = g(y) esetén kizárjuk az átlépés lehetőségéty-ról x-re az alább megfogalmazandó eljárásban.

A 9.1. algoritmusban használt és az ebben a szakaszban már bevezetettjelölésekhez egyetlen új járul:

változás Boole-változó, értéke akkor igaz, ha átlépünkaz aktuális pont egy szomszédjára.

9.2. algoritmus

1. Begin

2. válasszunk egy x0 ∈ M pontot;

3. k := 0;

4. változás = true;

5. while változás do

6. begin

7. változás = false;

8. for x ∈ S(xk) do

9. begin

10. if g(x) 6= g(xk) then

11. begin

12. if g(x) > g(xk) or e(g(x)−g(xk))f(k) > random then

13. begin

14. xk+1 := x ;

15. k := k + 1;

16. változás = true;

17. end;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 259: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

9.5. Megjegyzések és irodalom 259

18. end;

19. end;

20. end;

21. end;

Sok olyan nehéz kombinatorikus feladat van, ahol az 1, 2, ..., n számok egyoptimális permutációját kell meghatározni. Egyebek mellett ilyen az utazóügynök feladata. Természetes gondolat, hogy egy π permutáció szomszédaitazok a ρ permutációk alkossák, amelyek π-ből két elem felcserélésével kelet-keztek, azaz valamely rögzített i és j esetén

ρ(k) =

π(k) ha k 6= i, jπ(j) ha k = iπ(i) ha k = j.

Az ilyen szomszédok száma éppen(

n2

)

.

Ahogy az előző szakaszban kifejtettük, ezek is elég sokan lehetnek. Ilyenesetben célszerűnek látszik, ha az algoritmus 8. sorában a ciklust nem azösszes szomszédra futtatjuk le, hanem előre meghatározott számú szomszédotállítunk elő véletlenszerűen.

9.4. A tabukeresésA módszer következő változata egy gyakorlati megfigyelésen alapul. Áttérniegy szomszédra tulajdonképpen azt jelenti, hogy a pillanatnyi megoldásonegy bizonyos irányú változtatást hajtunk végre. Sokszor előfordul, hogy né-hány iteráció után már célszerű ezt a változtatást visszacsinálni. Ha eztmegengedjük, akkor a pillanatnyi megoldások által bejárt pálya túl szűk kör-ben mozog, így nem jut el számos megengedett jó megoldás közelébe. Ezértegy ún. tabulistán szerepeltetjük azokat a változtatásokat, amelyeket nemlehet végrehajtani. A lista minden eleme csak meghatározott ideig szere-pel a listán, különben egy idő után nem lehetne semmilyen változtatást semelvégezni.

9.5. Megjegyzések és irodalomNehéz lenne bárkit is a módszer kitalálójaként megnevezni, az alapötlet azoperációkutatás folklórjához tartozik.

A módszer itt tárgyalt egészértékű programozásra való alkalmazása a [89]dolgozatban található. A termodinamikus változat alapgondolatát jól fejti

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 260: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

260 9. Lokális keresés – egy általános heurisztikus módszer

ki [17]. Ugyanezt a változatot az utazó ügynök feladatra alkalmazza [73]. Atabukeresés Glover nevéhez fűződik [43]. Bár maga a módszer régi, de csakkésőbb terjedt el. Mindhárom változatnak hatalmas irodalma van.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 261: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10. fejezet

A mohó módszer

A mohó módszer az előző fejezetben tárgyalt heurisztikus eljárás speciálisesete, tehát maga is heurisztikus eljárás. Önálló fejezetben való tárgyalásátaz indokolja, hogy a feladatok diszkrét tulajdonságait mélyebben használjafel, és nem is értelmezhető minden feladatra.

10.1. A módszer általános alakjaIgen nehéz olyan általános definíciót adni, amelyet az irodalomban mohó el-járásnak nevezett valamennyi algoritmus kielégít. Éppen ezért megelégszünkazzal, hogy egy általános képet adjunk arról, hogy milyen módszereket szokásezzel a névvel jelölni.

Legyen

D ⊂ ZZn+

egy rögzített halmaz, továbbá f(x) egy olyan valós értékű függvény, amely-nek értelmezési tartománya a D halmazt tartalmazza. Ekkor a megoldandófeladat

max(min) { f(x) | x ∈ D }. (10.1)

Mivel a mohó algoritmus a szomszédságfogalmon alapuló módszer speciálisesete, ezért meg kell adni, hogy (i) hogyan választunk kezdőpontot, (ii) egyadott pontnak mik legyenek a szomszédai, (iii) egy adott pont szomszédaiközül melyeket tekintünk jobbnak nála.

A kezdőpont minden esetben a 0 vektor. Egy x pont szomszédainak hal-maza

S(x) = {x + ej | j = 1, ..., n }, (10.2)

ahol ej szokásos módon a j-edik egységvektort jelöli. Tehát az algoritmus egylépésében mindig az aktuális pont egyetlen koordinátáját növeljük eggyel.

A (iii)-ban megfogalmazott kérdés megválaszolására rátérve feltesszük,hogy minden pontban adott a koordinátáknak egy az x ponttól függő (π(x, 1),

261

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 262: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

262 10. A mohó módszer

..., π(x, n)) permutációja. Legyen

J (x) = { j | ∃y ∈ D, x + eπ(x,j) ≤ y }. (10.3)

Ha J (x) 6= ∅ és

k = min { j ∈ J (x) }, (10.4)

akkor az x pontról az

x + eπ(x,k) (10.5)

pontra fogunk átugrani. Mint az alábbi példákból is kiderül majd, úgy lehetröviden az irány megválasztását összefoglalni, hogy minden pontban értékel-jük a koordináta-tengelyek irányait, és abba a legjobb irányba lépünk tovább,amely mentén nem hagyjuk magunk mögött véglegesen a D halmazt.

A (10.3) által definiált J (x) halmaz képzése természetesen teljes általános-ságban igen nehéz feladat. Így a módszer csak olyan problémák esetébenalkalmazható, amikor a probléma speciális szerkezetéből adódóan J (x) köny-nyen meghatározható. Ebből a szempontból a mohó módszerek két részrebomlanak. A többség az ún. belső pontos módszer. Ennél 0 ∈ D, és csakD pontjain haladunk végig, azaz ha az algoritmus során az x pontba jutot-tunk, akkor x ∈ D, és ha belőle továbblépünk, akkor a (10.5)-beli pont is Deleme lesz. A belső pontos módszerek általános tulajdonságait a következőszakaszban tárgyaljuk. Ritkábban előfordul az ún. külső pontos módszer is amohó eljárások között. Ekkor 0 6∈ D, sőt csak az algoritmus által előállítottutolsó pont lesz D eleme. Természetesen ekkor a feladat valamely különlegestulajdonságának kell garantálnia, hogy beletalálunk a D halmazba.

A mohó módszer általános kerete a következő:

10.1. algoritmus

1. Begin

2. x0 := 0;

3. t := 0;

4. J (x0) := { j | ∃y ∈ D, eπ(0,j) ≤ y };5. while J (xt) 6= ∅ do

6. begin

7. k := min { j ∈ J (xt) };8. xt+1 := xt + eπ(xt,k);

9. t := t + 1;

10. J (xt) := { j | ∃y ∈ D, xt + eπ(xt,j) ≤ y };

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 263: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.1. A módszer általános alakja 263

11. end;

12. end;

Ez természetesen valóban csak egy keret, hiszen semmit se szól a J (x)halmazzal kapcsolatos, fentebb jelzett problémákról.

Az alábbiakban a hátizsák feladat három különböző változatára alkalmaz-zuk a mohó módszert. Felhívjuk a figyelmet arra, hogy látni fogjuk, mindhá-rom feladatnál – mint általában a lineáris célfüggvényű feladatok esetében –a π(x) permutáció nem függ az x ponttól. Mindhárom feladatra vonatkozóanfeltesszük, hogy valamennyi együttható egész. A célfüggvénybeli együttható-kat c1, ..., cn, a feltétel bal oldalán állókat a1, ..., an, míg a jobb oldalt b jelöli.Feltesszük, hogy

cn ≥ 0, a1, ..., an, b > 0, (10.6)

és végül azt, hogy a változók indexsorrendje mellett

cj

aj≥ cj+1

aj+1j = 1, ..., n − 1. (10.7)

a) A hátizsák feladat eredeti megfogalmazásában

maxn

j=1

cjxj (10.8)

n∑

j=1

ajxj ≤ b (10.9)

xj ∈ { 0, 1 }, j = 1, ..., n (10.10)

alakú. Tekintsük ennek a lineáris programozási relaxációját, tehát azt afeladatot, amelyben a (10.8) célfüggvényt (10.9) és a

0 ≤ xj ≤ 1 j = 1, ..., n (10.11)

feltétel mellett kell maximalizálni. A (10.6) és (10.7) feltételek alapján a6.4.1. tételből tudjuk, hogy ennek az optimális megoldása

x∗1 = ... = x∗

p−1 = 1, x∗p+1 = ... = x∗

n = 0

alakú valamely alkalmas p indexre. Egyedül x∗p az, ami nem feltétlenül egész,

hanem 0 és 1 közé esik. Továbbá az is könnyen látható, hogy b növekedtével pis nő. Tehát a lineáris programozási relaxáció a (10.7) sorrendnek megfelelően

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 264: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

264 10. A mohó módszer

értékeli a változókat. Mi is ezt az értékelést fogadjuk el. Ez azonban nem függa jobb oldaltól. Nézzük meg, hogy mit csinál az algoritmus az első iterációban(vagyis a while ciklus első lefutása alkalmával). Ha egy tárgy betételévelmeghaladjuk a hátizsák kapacitását, akkor (10.6) miatt ezt további tárgyakbetételével sem tudjuk kijavítani. Ezért most t = 0 és így

x0 = 0 és J (0) = { j | aj ≤ b }.Következésképp, ha J (0) 6= ∅, akkor a k. tárgy az a legkisebb indexű tárgylesz, amely még befér a hátizsákba. A k-nál kisebb indexű tárgyak, amelyekolyan nagyok, hogy az üres hátizsákba sem fértek be, nyilván a későbbiekbensem tehetők bele. Ezért t = 1 esetén, mivel a k. tárgy újra nem tehető be ahátizsákba,

J (x1) = { j | ak + aj ≤ b, k 6= j } = { j | ak + aj ≤ b, k < j }.Tehát másodiknak az indexsorrendben következő első olyan tárgyat tesszükbe, amelyik még belefér a hátizsák még szabadon lévő kapacitásába. Ezt azokoskodást folytatva látszik, hogy a mohó módszer az

xmj =

{

1 ha b − ∑j−1i=1 aix

mi ≥ aj

0 különbenj = 1, ..., n (10.12)

pontot adja.A hátizsák feladat ezen alapváltozata esetében még egy mohó módszer

használatos. Ez az irányok (10.7) permutációja helyett azt a π permutá-ciót használja, amely a célfüggvénybeli együtthatók csökkenő sorrendjét adja,azaz

cπ(1) ≥ ... ≥ cπ(n). (10.13)

Természetesen ez a sorrend is független a jobb oldaltól. A mohó eljárásáltal szolgáltatott pont ekkor a fentiekhez hasonló megfontolások alapján

xmπ(j) =

{

1 ha b − ∑j−1i=1 aπ(i)x

mπ(i) ≥ aπ(j)

0 különbenj = 1, ..., n. (10.14)

Mind a (10.12)-ben, mind a (10.14)-ben definiált mohó módszer belső pon-tos eljárás, mert (10.9) miatt az induló pont, a 0 vektor, megengedett meg-oldás, és csak megengedett megoldásokon haladunk tovább.

b) A hátizsák feladat másik jellegzetes változata az, amelyik a változókraexplicit felső korlátot nem tartalmaz. Ennek a dinamikus programozássaltörténő egzakt megoldását az 5. fejezetben tárgyaltuk. Tegyük fel, hogy azindexsorrend ismét kielégíti (10.7)-et. A megoldandó feladat tehát:

max∑n

j=1 cjxj∑n

j=1 ajxj ≤ b

xj ∈ ZZ+ j = 1, ..., n.

(10.15)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 265: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.1. A módszer általános alakja 265

Most a folytonos relaxáció optimális megoldása

x∗1 = b/a1, x∗

2 = ... x∗n = 0.

Ha a feladatból elhagynánk az x1 változót, akkor x2 értéke lenne pozitív afolytonos relaxáció optimális megoldásában, és ezt a sort így folytathatnánktovább, azaz a folytonos relaxáció most is a (10.7) sorrendnek megfelelőenértékeli a változókat. Az előző feladathoz képest annyiban változott a helyzet,hogy ha egy bizonyos fajta tárgyból egy példányt berakunk a hátizsákba,akkor még felmerül a lehetősége annak, hogy abból a fajtából egy továbbipéldányt is berakjunk. Tehát egyfajta tárgyból annyi példányt kell beraknia hátizsákba, amennyi a még meglévő szabad kapacitásába belefér. Ezért afeladat mohó megoldása

xmj =

b − ∑j−1i=1 aix

mi

aj

j = 1, ..., n. (10.16)

Itt ugyancsak értelmezni lehet a (10.13) feltételben leírt π értékelési sorrendmelletti mohó eljárást, amely az

xmπ(j) =

b − ∑j−1i=1 aπ(i)x

mπ(i)

aπ(j)

j = 1, ..., n (10.17)

megoldást adja. Hasonlóképpen az előző esethez, mind a (10.16)-ban, minda (10.17)-ben definiált mohó módszer belső pontos eljárás.

c) Az előzőektől eltérő alakú a

min∑n

j=1 cjxj∑n

j=1 ajxj = b

xj ∈ ZZ+ j = 1, ..., n

(10.18)

hátizsák feladat. Itt az együtthatókra egy lényeges megszorítást teszünk,nevezetesen megköveteljük, hogy

a1 = 1 (10.19)

legyen. A fentiekhez hasonló megfontolásokból adódik, hogy most a lineárisprogramozási relaxáció a változókat a (10.7)-hez képest fordított sorrend-ben értékeli. Mivel most a jobb oldalt teljesen fel kell töltenünk, ezért a(10.16) előtt mondott megfontolások itt is érvényesek, vagyis egy tárgyatannyi példányban kell belerakni a hátizsákba, amennyiben belefér. Ez adjaa heurisztikus módszer mohó jellegét. A mohó megoldás tehát

xmj =

b − ∑ni=j+1 aix

mi

aj

j = n, n − 1, ..., 1. (10.20)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 266: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

266 10. A mohó módszer

Itt a mohó módszer külső pontos eljárás, hiszen a 0 vektor nem megengedettmegoldás, és valóban az utolsó lépésben áll csak be az egyenlőség, azaz csakakkor találunk bele a megengedett megoldások halmazába. A (10.19) az akülönleges feltétel, ami ezt biztosítja. Ugyanis

xm1 =

b − ∑ni=2 aix

mi

a1

=

b − ∑ni=2 aix

mi

1

= b −n

i=2

aixmi ,

és így bizonyosan igaz lesz a

n∑

j=1

ajxmj = b

egyenlőség.

10.2. A belső pontos mohó eljárások néhányáltalános tulajdonsága

A megoldandó feladatban, amelyre majd a mohó módszert alkalmazzuk, acélfüggvény ún. diszkrét konkáv függvény lesz. Ezért elsőként az ilyen függ-vények egyes tulajdonságait írjuk le.10.2.1. definíció: Legyen f : ZZn → IR egy tetszőleges függvény. Az f xj

szerinti parciális differenciája egy rögzített x pontban

∆jf(x) = f(x + ej) − f(x), (10.21)

ahol ej a j-edik egységvektor, továbbá xi és xj szerinti másodrendű parciálisdifferenciája ugyanott

∆ijf(x) = ∆i(∆jf(x)). (10.22)

10.2.1. lemma: Tetszőleges f : ZZn → IR függvény és bármely két i és jindex esetén

∆ijf(x) = ∆jif(x) = f(x + ei + ej) − f(x + ei) − f(x + ej) + f(x). (10.23)

Bizonyítás: A (10.22) képletből (10.21) ismételt felhasználásával kapjuk,hogy

∆ij = ∆i(f(x + ej) − f(x))

= f(x + ei + ej) − f(x + ei) − f(x + ej) + f(x).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 267: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.2. A belső pontos mohó eljárások néhány tulajdonsága 267

Mivel a formula nem változik meg, ha i-t és j-t felcseréljük, adódik az állítás.Q.E.D.

10.2.2. definíció: Egy f : ZZn → IRn függvény diszkrét konkáv, ha mindenx ∈ ZZn és tetszőleges 1 ≤ i, j ≤ n pár esetén

∆ijf(x) ≤ 0. (10.24)

Ha a differenciát a differenciálhányados analogonjának tekintjük, akkora folytonos függvények körében a konkáv függvények kielégítik a megfelelő(10.24)-gyel analóg összefüggést.10.2.2. tétel: Legyen x, y ∈ ZZn úgy, hogy x ≤ y, továbbá f diszkrétkonkáv függvény. Ekkor tetszőleges 1 ≤ i ≤ n index esetén

∆if(x) ≥ ∆if(y).

Bizonyítás: Nyilván elég megmutatni, hogy ha j az i-től független másikindex, akkor

∆if(x) ≥ ∆if(x + ej). (10.25)

A differenciák definícióját felhasználva nyerjük, hogy

∆if(x + ej) − ∆if(x) = f(x + ei + ej) − f(x + ej)

− f(x + ei) + f(x) = ∆ijf(x).

Mivel f diszkrét konkáv, innen azonnal adódik (10.25). Q.E.D.

10.2.3. tétel: Egy f függvény akkor és csak akkor diszkrét konkáv, habármely x, y ∈ ZZn, x ≤ y vektorpár esetén

f(y) − f(x) ≤n

j=1

(yj − xj)∆jf(x). (10.26)

Bizonyítás: Először tegyük fel, hogy f diszkrét konkáv. Tekintsük az

x, x + e1, ..., x + (y1 − x1)e1, x + (y1 − x1)e1 + e2, ...,

x + (y1 − x1)e1 + (y2 − x2)e2, ..., x +

n∑

j=1

(yj − xj)ej = y

sorozatot. Az f(y) − f(x) különbséget nyilvánvalóan megkapjuk, ha f diffe-renciáit ezen sorozat mentén összegezzük, azaz

f(y) − f(x) =

n∑

j=1

yj−xj−1∑

i=0

∆jf

(

x +

j−1∑

k=1

(yk − xk)ek + iej

)

.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 268: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

268 10. A mohó módszer

Felhasználva az előző tétel állítását, innen azt nyerjük, hogy

f(y) − f(x) ≤n

j=1

yj−xj−1∑

i=0

∆jf(x) =

n∑

j=1

(yj − xj)∆jf(x).

Megfordítva alkalmazzuk a (10.26) összefüggést y = x+ei +ej mellett, aholi és j két tetszőleges index. Tehát most

f(x+ei+ej) − f(x) ≤ ∆if(x) + ∆jf(x) = f(x+ei) + f(x+ei) − 2f(x).

Innen átrendezéssel azonnal adódik (10.24). Q.E.D.

10.2.3. definíció: Egy D ⊂ ZZn+ halmazt véges tömör halmaznak nevezünk,

ha(i) |D| < +∞,(ii) tetszőleges x, y ∈ ZZn

+, y ∈ D és x ≤ y esetén x ∈ D,(iii) 0 ∈ D.

A (ii) kritérium mellett (iii) feleslegesnek tűnhet, hiszen (ii) szerint, haD-nek van egyáltalán eleme, akkor 0 biztosan az. Ezért (iii) azt zárja ki,hogy D üres legyen. A véges tömör halmazról az a szemléletes kép adható,hogy annak bármely pontjából bármely úton visszatekintve az origóra, csakD pontjait látjuk (az egész koordinátájúak közül). Legyen A egy azonosan 0oszlopot nem tartalmazó, csupa nemnegatív elemekből álló p × n-es mátrix,b p-dimenziós nemnegatív vektor. Ekkor az

{x ∈ ZZn+ | Ax ≤ b }

halmaz véges tömör halmaz lesz.A feladat, amire a mohó algoritmust alkalmazni fogjuk, a következő lesz:

max { f(x) | x ∈ D }, (10.27)

ahol f(x) diszkrét konkáv függvény, D pedig véges tömör halmaz.Az algoritmus során minden pontban az irányokat az f(x) függvény diffe-

renciáinak csökkenő sorrendjében értékeljük, vagyis a D-ből ki nem vezetőirányok közül az f(x)-ben legnagyobb növekedést adó mentén lépünk tovább.Ennek megfelelően az algoritmust a következőkben foglaltuk össze, ahol afut nevű Boole-változó akkor igaz értékű, ha az előző iterációban sikerült acélfüggvényértéket növelni.

10.2. algoritmus

1. Begin

2. x0 := 0;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 269: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.2. A belső pontos mohó eljárások néhány tulajdonsága 269

3. t := 0;

4. fut := true;

5. while fut do

6. begin

7. fut := false;

8. J := { j | xt + ej ∈ D };9. if J 6= ∅ then

10. begin

11. p := argmax {∆jf(xt) | j ∈ J };12. if ∆pf(xt) > 0 then

13. begin

14. xt+1 := xt + ep;

15. t := t + 1;

16. fut := true;

17. end;

18. end;

19. end;

20. end;

Az algoritmus két esetben áll le. Vagy akkor, amikor xt a D halmaz maxi-mális pontja a (8. és 9. sor), vagy akkor, mikor egyik egységvektor menténsem javítható a célfüggvény (12. sor).10.2.4. tétel: Legyen f diszkrét konkáv függvény, D véges tömör halmaz.Legyen h a D halmaz ún. maximális magassága, azaz

h = max {n

j=1

xj | x ∈ D }.

Jelölje x∗ a 10.27 feladat optimális megoldását, xm pedig a 10.2 algoritmussalkapott pontot. Feltesszük, hogy x∗ 6= 0. Ekkor

f(x∗) − f(xm)

f(x∗) − f(0)≤ 1 − 1

h. (10.28)

Megjegyzés: Mielőtt a bizonyításra rátérnénk, értelmezzük a tétel állítását.A 0 pont a feladat megengedett megoldása. Az x∗ optimális megoldás ehhezképest hordoz valamekkora javulást. A tétel a mohó megoldás hibájának az

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 270: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

270 10. A mohó módszer

említett javuláshoz viszonyított relatív nagyságára ad felső korlátot, vagyisa hiba nem lehet tetszőlegesen nagy.

Bizonyítás: Bevezetjük az alábbi jelölést, amit a következő tétel bizonyítá-sában is használni fogunk. A mohó algoritmus iterációjának (while ciklusá-nak) a ciklusváltozó t értéke melletti lefutásakor legyen

∆t = ∆pf(xt). (10.29)

Mivel x∗ 6= 0, ezért a mohó eljárás iterációja is legalább egyszer lefut, így

f(xm) − f(0) ≥ f(x1) − f(0) = ∆0. (10.30)

A 10.2.3. tételt y = x∗ és x = 0 mellett alkalmazva kapjuk, hogy

f(x∗) − f(0) ≤n

j=1

x∗j∆jf(0).

Felhasználva sorrendben ∆0, majd h definícióját és végül a (10.30) egyenlőt-lenséget, a jobb oldal tovább becsülhető:

n∑

j=1

x∗j∆jf(0) ≤ ≤

n∑

j=1

x∗j∆

0 ≤ h∆0 ≤ h(f(xm) − f(0)).

Azt nyertük tehát, hogy

f(x∗) − f(0) ≤ h(f(xm) − f(0)).

Innenf(x∗) − hf(xm) ≤ (1 − h)f(0).

Adjunk mindkét oldalhoz (h− 1)f(x∗)-ot, és osszunk le h(f(x∗) − f(0))-lal.Így a megkívánt (10.28) egyenlőtlenséghez jutunk. Q.E.D.

Példaként gondoljuk meg, hogy mit mond a tétel az előző szakaszban vizs-gált b) típusú feladat esetén. Ekkor f(0) = 0, így ezt felhasználva (10.28)az

1

h≤ f(xm)

f(x∗)(10.31)

alakot nyeri. Első pillanatban úgy tűnik, hogy a tétel csak a (10.17)-benmegadott xm megoldásra alkalmazható. Legyen a = min {aj | 1 ≤ j ≤ n }.Ekkor

h =

b

a

. (10.32)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 271: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.2. A belső pontos mohó eljárások néhány tulajdonsága 271

Tehát a mohó megoldásnak a tétel által biztosított pontossága változatlanbal oldal és növekvő jobb oldal esetén 0-hoz tart.

A probléma alábbi transzformálása árán a tétel alkalmazható azonban a(10.16) által leírt xm mohó megoldásra is. Jelölje M a (10.15) feladat meg-engedett megoldásainak halmazát. Jelölje K az M halmaz pontjaiból az

x → (a1x1, ..., anxn)T (10.33)

transzformációval nyert vektorok halmazát. Nyilván M és K elemei kölcsö-nösen egyértelműen felelnek meg egymásnak. Végül legyen

D = {y ∈ ZZn+ | ∃z ∈ K, y ≤ z }. (10.34)

Ekkor (10.15) ekvivalens a

max

n∑

j=1

cj

ajyj | y ∈ D

(10.35)

feladattal. A (10.15) feladat mohó módszere úgy fordul le a (10.35) fel-adat mohó módszerére, hogy ha (10.15) x megengedett megoldásának xp

komponensét 1-gyel növeljük, akkor (10.35) x-nek megfelelő y megengedettmegoldásában az yp komponenst ap-vel növeljük. A (10.34)-ben megadott Dhalmaz h magasságára nyilván teljesül, hogy

b − a < h ≤ b, (10.36)

így a (10.16) képlettel megadott xm vektornak a 10.2.4. tétel által garantáltpontossága még rosszabb, mint xm-é.

Tekintsük a

max tx1 + (t + 1)x2

x1 + kx2 ≤ kx1, x2 ∈ ZZ+

(10.37)

feladatot, ahol k ≥ 2 rögzített pozitív egész, t ≥ 2 pedig egy paraméter.Alkalmazzuk erre a (10.17) képlettel megadott heurisztikus megoldást. Aztnyerjük, hogy

xm = ( 0, 1 )T .

A megengedett megoldások halmazának magassága az optimális

x∗ = ( k, 0 )T

megoldásból adódóan k. A mohó megoldás pontosságának (10.31) becslésemost az

1

k≤ t + 1

kt=

1

k+

1

kt

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 272: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

272 10. A mohó módszer

alakot nyeri. Ha t → ∞, akkor a jobb oldal a bal oldalhoz tart. Tehát a(10.28) becslés nem javítható.

Ha a célfüggvényről valamivel többet teszünk fel, akkor azonban a (10.28)becslés helyett egy másik adható, amely az esetek túlnyomó többségében erősjavulást jelent a hiba korlátjában.10.2.5. tétel: Legyen az f diszkrét konkáv, monoton növő függvény, Dvéges tömör halmaz. Legyen továbbá h D maximális magassága, l pedig Dún. minimális magassága, azaz

l = min

n∑

j=1

xj | x ∈ D, 6 ∃y ∈ D : x<

6= y

.

Jelölje x∗ a (10.27) feladat optimális megoldását, xm pedig a 10.2. algorit-mussal kapott pontot. Feltesszük, hogy x∗ 6= 0. Ekkor

f(x∗) − f(xm)

f(x∗) − f(0)≤

(

1 − 1

h

)l

. (10.38)

A tétel bizonyításához szükségünk lesz két segédtételre.10.2.6. segédtétel: Tegyük fel, hogy f tetszőleges, monoton növő, diszkrétkonkáv függvény. Legyen x, y ∈ ZZn két tetszőleges pont. Ekkor

f(y) − f(x) ≤∑

j:xj<yj

(yj − xj)∆jf(x).

Bizonyítás: Jelölje z azt a pontot, amelynek koordinátáit a

zj = max {xj , yj }

egyenlőség határozza meg. A 10.2.3. tétel alapján azonnal adódik, hogy

f(z) − f(x) ≤∑

j:xj<zj

(zj − xj)∆jf(x) =∑

j:xj<yj

(yj − xj)∆jf(x).

Az f függvény monotonitása miatt:

f(z) − f(y) ≥ 0.

A két egyenlőtlenséget kivonva egymásból az állításhoz jutunk. Q.E.D.

10.2.7. segédtétel: Legyen a ≥ 1 rögzített valós szám, m pedig ugyancsakrögzített nemnegatív egész. Ekkor a

min∑m

i=0 yi∑t−1

i=0 yi + ayt ≥ 1 t = 0, 1, ...,m(10.39)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 273: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.2. A belső pontos mohó eljárások néhány tulajdonsága 273

lineáris programozási feladat optimumértéke

1 −(

1 − 1

a

)m+1

.

Bizonyítás: A feladat duálja

max∑m

t=0 xt

axt +∑m

j=t+1 xj = 1 t = 0, ...,m

xt ≥ 0 t = 0, 1, ...,m.(10.40)

Itt az m+1 változóra m+1 lineárisan független egyenletünk van, tehát legfel-jebb egy megengedett megoldás lehet. A (10.40) feladat mátrixa háromszögalakú, ezért rövid számolás után adódik, hogy az egyetlen megoldás csak

xm−k =1

a

(

1 − 1

a

)k

k = 0, 1, ...,m

lehet. Ez a ≥ 1 esetén valóban megengedett lesz. A mértani sorozatösszegképlete alapján kapjuk, hogy hozzá a kívánt célfüggvényérték tarto-zik. Q.E.D.

A 10.2.5. tétel bizonyítása A 10.2.4. tétel bizonyításához hasonlóan ∆t a(10.29) képlettel megadott számot jelenti. A 10.2.6. segédtétel szerint a mohóalgoritmus minden olyan t-edik iterációjában, ahol a megoldást javítottuk

f(x∗) − f(xt) ≤∑

j:xtj<x∗

j

(x∗j − xtj)∆jf(xt) ≤ h∆t.

Innen az

f(xt) = f(0) +

t−1∑

i=0

∆i

összefüggés felhasználásával nyerjük, hogy

f(x∗) ≤ f(0) +

t−1∑

i=0

∆i + h∆t. (10.41)

Az f függvény monoton növekedéséből következik, hogy a mohó algoritmusiterációja legalább l-szer lefut, azaz (10.41) igaz lesz minden t ≤ l−1 esetén.Átrendezéssel kapjuk, hogy

t−1∑

i=0

∆i

f(x∗) − f(0)+

h∆t

f(x∗) − f(0)≥ 1 t = 0, 1, ..., l − 1.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 274: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

274 10. A mohó módszer

Vegyük észre, hogy a

∆i

f(x∗) − f(0)

számok a = h és m = l−1 mellett kielégítik a (10.39) feladat feltételeit, ezérta 10.2.7. segédtétel szerint

l−1∑

i=0

∆i

f(x∗) − f(0)≥ 1 −

(

1 − 1

h

)l

. (10.42)

Végezetül

f(x∗) − f(xm) ≤ f(x∗) − f(xl) = f(x∗) − f(0) −l−1∑

i=0

∆i.

Innen átrendezéssel

f(x∗) − f(xm)

f(x∗) − f(0)≤ 1 −

l−1∑

i=0

∆i

f(x∗) − f(0),

ahonnan átrendezéssel (10.42)-ből azonnal adódik az állítás. Q.E.D.

Elemezzük ismét, hogy a tétel a relatív hibára milyen korlátot ad a b)típusú hátizsák feladat esetén. Most (10.31) helyett az

1 −(

1 − 1

h

)l

≤ f(xm)

f(x∗)(10.43)

becsléshez jutunk. Legyen A = max { aj | 1 ≤ j ≤ n }. A (10.17)-ben mega-dott megoldás esetében h továbbra is a (10.32)-ben meghatározott mennyiséglesz. A minimális magasságra a hasonló

l =

b

A

értéket kapjuk. A becslés most változatlan bal oldal és minden határon túlnövekvő jobb oldal esetén nem 0-hoz tart, azaz a mohó megoldás célfüggvé-nyértéke az optimumérték bizonyos hányadát eléri. Ugyanis

O

(

(

1 − 1

h

)l)

=(

1 − a

b

)b/A

=

(

1 − A

b

a

A

)b/A

.

Itt a jobb oldal határértéke, ha b → ∞

e−a/A.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 275: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.3. A mohó módszer a hátizsák feladat esetén 275

Tehát ebben az esetben (10.43) bal oldalának értéke aszimptotikusan

1 − e−a/A. (10.44)

Térjünk át most a (10.16) képlet által leírt xm mohó megoldás vizsgálatára.Ismét a feladat (10.35) transzformált alakját tekintsük. Ebben

l ≥ b − a + 1.

Mivel h-ra (10.36) továbbra is fennáll, azt kapjuk, hogy

(

1 − 1

h

)l

≤(

1 − 1

b

)b−a+1

.

Ha b → ∞, akkor a jobb oldal határértéke

e−1.

Ezért ezen mohó megoldás célfüggvényértéke az optimumértéknek aszimpto-tikusan

1 − e−1 (10.45)

-szerese. Ez az érték legalább olyan nagy, mint (10.44).A tétel állításában szereplő becslés nem javítható. A (10.37) példa azt

mutatta, hogy a 10.2.4. tétel nem javítható. Mivel ebben a példában l = 1,ezért ez igaz a 10.2.5. tételre is.

Befejezésül megjegyezzük, hogy hasonló elemzések volnának adhatók aza) típusú hátizsák feladatra is. Azonban ennek a szakasznak a tételei nemalkalmazhatók a c) típusú feladat esetén, mert itt a mohó módszer külsőpontos eljárás.

10.3. A mohó módszer néhány tulajdonságahátizsák feladat esetén

Ebben a szakaszban a változókra explicit felső korlátot nem tartalmazó, azazaz előző szakaszokban b) és c) típusúként említett hátizsák feladatokkal fog-lalkozunk. Ezek egzakt megoldási módszerét tárgyalja az 5.5. szakasz.

A vizsgálatok során a változók célfüggvénybeli és feltételi együtthatóitmindig rögzítettnek képzeljük, míg a jobb oldalt paraméterként kezeljük. Azalábbi kérdéseket vetjük fel: (i) mikor ad a mohó módszer bármely jobboldal esetén optimális megoldást, (ii) öröklődik-e ez a tulajdonság akkor, haa feladatot egy új változóval kiegészítjük, (iii) ha nem, akkor mekkora leheta mohó módszer hibája?

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 276: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

276 10. A mohó módszer

A két feladatot egyszerre fogjuk tárgyalni, vagyis a tételeknek olyan for-máját adjuk meg, amely egyszerre vonatkozik mindkét feladatra. Ehhez ter-mészetesen egységes jelölésrendszerre van szükségünk.

Éppen ezért a feladatok együtthatóit is azonos módon jelöljük. A kétfeladat a következő:

max∑n

j=1 cjxj∑n

j=1 ajxj = b

xj ∈ ZZ+ j = 1, ..., n,

(10.46)

illetve

min∑n

j=1 cjxj∑n

j=1 ajxj = b

xj ∈ ZZ+ j = 1, ..., n.

(10.47)

Az együtthatókról még az alábbiakat tesszük fel mindkét feladat esetében

c1, ..., cn ∈ ZZ+, a1, ..., an, b ∈ IN, (10.48)

a1 = 1. (10.49)

A (10.49) feltétel azért szükséges, mert a feltétel a feladatban egyenlet alak-jában van kiróva, így, mint ezt a 10.1. szakaszban láttuk, ez biztosítja, hogybármely jobboldal esetén a mohó módszer szolgáltasson megengedett meg-oldást. Mint azt már említettük, a (10.47) feladat esetében ez megszorítástjelent. A (10.46) látszólag más, mint a (10.15). Az utóbbi azonban visszave-zethető (10.46)-ra egy olyan mesterséges változó bevezetésével, amelynek acélfüggvényben az együtthatója 0, a feltételben pedig 1.

Még egyszer hangsúlyozzuk, hogy (10.46) és (10.47) nem azonos együttha-tókkal felírt két feladat, hanem két teljesen független probléma, amelyeknekaz együtthatóit praktikus okokból azonos módon jelöltük. Éppen ezért a(10.46) feladat esetében azt feltételezzük, hogy

cj

aj≤ cj+1

aj+1j = 1, ..., n − 1, (10.50)

míg a (10.47) feladat esetében pedig azt, hogy

cj

aj≥ cj+1

aj+1j = 1, ..., n − 1. (10.51)

Az egységes tárgyalhatóság érdekében bevezetjük a ⊳ és ⊲ rendezési reláci-ókat, amelyek a következőt jelentik:

⊳ =

{

≥≤ , illetve ⊲ =

{

≤ a (10.46) feladat esetén≥ a (10.47) feladat esetén.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 277: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.3. A mohó módszer a hátizsák feladat esetén 277

A ⊲ relációt úgy választottuk meg, hogy ha a két oldalán a hátizsák fela-datban azonos jobb oldalhoz tartozó egy-egy megengedett megoldás áll, akkora relációjel jobb oldalán álló érték legalább olyan jó, mint a relációjel balo-dalán álló érték. Ezért u ⊲ v így olvasható: „u rontás v-hez képest”, u ⊳ vpedig úgy: „u javítás v-hez képest”.

Evvel a jelöléssel (10.50) és (10.51) a

cj

aj⊲

cj+1

aj+1j = 1, ..., n − 1 (10.52)

egységes keretbe foglalható.Ezen feltételezések mellett mindkét feladat mohó megoldása

xmj =

b − ∑ni=j+1 aix

mi

aj

j = n, n − 1, ..., 1. (10.53)

A bevezetőben említettük, hogy a jobb oldalt paraméterként kívánjuk ke-zelni. A (ii) kérdésfelvetésből látszik, hogy a feladatok változóinak a számátis változtatni kívánjuk. Ezért érthető, ha az optimális célfüggvényértéket,illetve a mohó megoldás célfüggvényértékét a változók rögzített együtthatóimellett a változók száma és a jobb oldal függvényének tekintjük, és f(n, b)-vel, illetve m(n, b)-vel jelöljük. Tehát

m(n, b) =

n∑

j=1

cjxmj .

A (10.53) képletből azonnal adódik, hogy

1 ≤ j < k ≤ n, aj ≥ ak esetén xmj = 0. (10.54)

Mivel mi azt vizsgáljuk, hogy a mohó módszer mikor ad optimális megoldást,feltételezhetjük, hogy a (10.54) helyzet nem áll fenn, azaz

a1 < a2 < ... < an. (10.55)

Az együtthatókra vonatkozó (10.48), (10.49), (10.52) és (10.55) feltételeketegyüttesen regularitási feltételeknek fogjuk nevezni.10.3.1. definíció: A (10.46) vagy (10.47) feladatot kellemesnek nevezzük,ha a mohó megoldás minden jobb oldal esetén optimális, azaz f(n, ·) mintegyváltozós függvény azonos m(n, ·)-nel.10.3.1. tétel: Tegyük fel, hogy egy adott feladat esetén a regularitásifeltételek teljesülnek. A feladat akkor és csak akkor kellemes, ha

∀ y ∈ ZZ : an−1 + 1 ≤ y ≤ an + an−1 − 1 esetén f(n, y) = m(n, y). (10.56)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 278: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

278 10. A mohó módszer

Bizonyítás: A (10.56) feltétel szükségessége triviális, ezért csak az elégsé-

gességével foglalkozunk. Feltesszük, hogy a feladat nem kellemes, és megmu-tatjuk, hogy ekkor a (10.56) feltétel megsérül. Legyen

g = min { y | f(n, y) 6= m(n, y) }. (10.57)

Jelölje a g-hez tartozó mohó megoldást xm, míg az optimális megoldást pedigx∗. Mind a mohó, mind az optimális előállítás estén igaz, hogy ha x valamelyjobb oldal esetén mohó, illetve optimális megoldás, és z ∈ ZZn

+, z ≤ x, akkora megfelelő jobb oldal mellett z is mohó, illetve optimális megoldás. Ezértg-nek (10.57) szerinti megválasztásából következik, hogy

xmj = 0 vagy x∗

j = 0 j = 1, ..., n. (10.58)

Legyen

k = max { j | xmj > 0 }. (10.59)

Innen azonnal következik, hogy

k < n esetén g < aj j = k + 1, ..., n,

ésx∗

j = 0 j = k, ..., n.

Mivel (10.57) alapján látszik, hogy g > 0, létezik egy i < k index, hogy

x∗i > 0.

Vizsgáljuk a g − ai számot. Az ehhez tartozó xm mohó megoldás g defi-níciója szerint optimális. Legyen a z vektor a következő:

zj =

{

xmj ha j 6= i

xmj + 1 ha j = i.

Innen

g = (g − ai) + ai =n

j=1

aj xmj + ai =

n∑

j=1

ajzj .

Az i index választásából következik, hogy z egy g-hez tartozó optimális meg-oldás. Ebből (10.58) és k választása alapján adódik, hogy

zk = xmk = 0.

Ezért xm mohó megoldás voltából nyerjük, hogy

g − ai < ak.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 279: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.3. A mohó módszer a hátizsák feladat esetén 279

Tehátg ≤ ak + ai − 1 ≤ an + an−1 − 1,

azaz g nem lehet nagyobb, mint a kívánt intervallum felső végpontja. Aregularitási feltételekből következik, hogy g 6= aj (1 ≤ j ≤ n). Ha

g < an−1

is teljesül, akkor

an−1 < an + g ≤ an + an−1 − 1,

ésf(n, g + an) 6= m(n, g + an).

Legyen ugyanis a g + an-hez tartozó mohó megoldás xm. Ekkor

xmn = 1, xm

n−1 = 0, xmj = xm

j j = 1, ..., n − 1.

Így xm-nek az első n − 1 komponensre eső része nem optimális. Q.E.D.

A tétel jelentősége abban áll, hogy az f(n, ·) ≡ m(n, ·) feltétel ellenőrzésétvéges sok esetre redukálja.

A 10.3.1. tétel éles, mint azt a következő, (10.47) alakú példa mutatja.Legyen n = 3, illetve n = 4, az együtthatók pedig c1 = 2, c2 = 2, c3 = 3,c4 = 5, a1 = 1, a2 = 2, a3 = 3, a4 = 6. Ha n = 3, akkor a3 + a2 − 1 = 4,és ha n = 4, akkor a3 + 1 = 4. Mindkét esetben m(3, 4) = m(4, 4) = 5 >f(3, 4) = f(4, 4) = 4, és ez az egyetlen jobb oldal az [an−1 +1, an +an−1 − 1]intervallumból, ahol a mohó megoldás nem optimális.10.3.2. tétel: Tegyük fel, hogy a regularitási feltételek teljesülnek. Legyeng és k a (10.57), illetve (10.59) egyenlettel meghatározott egész. Végül legyen

p = max { j | ∃x∗(n, g) : xj(n, g) > 0}.

Ekkor létezik két index, q és r, hogy

p ≥ q > r ≥ 1, xmr (p, ak) > 0,

és

g = aq +

p∑

j=q

ajxmj (p, ak). (10.60)

Bizonyítás: A 10.3.1. tétel bizonyításának elején mondottak természetesen

most is igazak, így p < k. Először megmutatjuk, hogy

g < ap + ap+1.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 280: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

280 10. A mohó módszer

Ellenkező esetben ugyanis a g − ap jobb oldalhoz tartozó mohó megoldásoptimális, és létezik olyan j > p index, hogy xm

j (n, g − ap) > 0. Így viszontegy olyan g-hez tartozó optimális megoldáshoz jutunk, amiben x∗

j > 0, amiellentmond p választásának. Innen

m(n, g − ap) = m(p, g − ap),

ahonnan

f(n, g − ap) = m(p, g − ap). (10.61)

Ha

xmj (p, g) ≥ xm

j (p, ak) j = 1, ..., p, (10.62)

akkor nyilvánvalóan

m(p, g) = m(p, g − ak) + m(p, ak).

Ha (10.62) nem igaz, akkor legyen

q = max { j | 1 ≤ j ≤ p : xmj (p, g) 6= xm

j (p, ak) }.

A regularitási feltételekből és k definíciójából következik, hogy

g > ak.

Innenxm

q (p, g) > xmq (p, ak).

Mivel (10.62) nem igaz, kell lennie egy r indexnek, hogy r < q és

0 ≤ xmr (p, g) < xm

r (p, ak).

A wkpq számot a következőképpen definiáljuk:

wkpq = aq +

p∑

j=q

ajxmj (p, ak). (10.63)

Innenak < wkpq ≤ g,

továbbá wkpq (10.63) szerinti reprezentációja egyúttal p-változós mohó meg-oldás is, azaz xm(p, wkpq), és

xmj (p, wkpq) ≤ xm

j (p, g) j = 1, ..., p.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 281: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.3. A mohó módszer a hátizsák feladat esetén 281

Innenm(p, g) = m(p, g − wkpq) + m(p, wkpq).

Megmutatjuk, hogy sem (10.62), sem g > wkpq nem állhat fenn. Ellenkezőesetben ugyanis lenne egy olyan w egész, amelyre

ak ≤ w < g (10.64)

és egyben

m(p, g) = m(p, g − w) + m(p, w) (10.65)

is teljesül. Ugyanakkor tetszőleges u egészre, amelyre 0 ≤ u < g, az

m(p, u) ⊲ m(k, u) = f(k, u) (10.66)

reláció teljesül. Sorrendben p definícióját, majd a (10.61) és (10.65) képlete-ket felhasználva, innen azt kapjuk, hogy

f(k, g) = f(p, g) = m(p, g) = m(p, g−w)+m(p, w) ⊲ f(p, g−w)+m(p, w).

Innen (10.64)-ből és (10.66)-ból, valamint g minimális tulajdonságából nyer-jük, hogy

f(k, g) ⊲ f(p, g − w) + m(p, w) ⊲ f(k, g − w) + m(k,w) =

= f(k, g − w) + m(k,w − ak) + ck = f(k, g − w) + f(k,w − ak) + ck

⊲ f(k, g − ak) + ck = m(k, g) ⊲ f(k, g).

Az utolsó reláció g definíciója szerint egyenlőséggel nem teljesülhet. Emiattellentmondásra jutottunk. Q.E.D.

A 10.3.2. tétel annyiban erősebb az előző tételnél, hogy a feladat kellemesvoltának vizsgálatát

(

n3

)

eset vizsgálatára szűkíti le, ami független az együtthatók nagyságától. Foly-tassuk az előző tétel utáni példát. Most n = 4. A (k, p, q) hármasra vonat-kozó szabály, hogy 1 < q ≤ p < k. Tehát most a következő kombinációklehetségesek: (4,3,3), (4,3,2), (4,2,2), (3,2,2). Egyszerű számolás után kapjuk,hogy w433 = 9, w432 = 8, w422 = 8, w322 = 4. A feladat lineáris programo-zási relaxációja alapján könnyű belátni, hogy az m(4, 9) = 8 és m(4, 8) = 7érték optimális, míg az m(4, 4) = 5 nem az, hiszen x∗(4, 4) = (0, 2, 0, 0)T ésf(4, 4) = 4.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 282: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

282 10. A mohó módszer

10.3.3. lemma: Ha a regularitási feltételek teljesülnek, és n ≤ 2, akkor afeladat kellemes.

Bizonyítás: Ha n = 1, akkor bármely jobb oldal esetén csak egyetlen meg-oldás van. Vizsgáljuk most az n = 2 esetet. Legyen xm a mohó megoldás ésx egy másik megoldás. Azt kell bizonyítanunk, hogy

c1x1 + c2x2 ⊲ c1xm1 + c2x

m2 . (10.67)

Most0 ≤ xm

1 < a2 és x2 ≤ xm2 .

Innen

x1 = xm1 + a2(x

m2 − x2). (10.68)

A (10.49) és (10.52) feltételekből adódik, hogy

c1a2 ⊲ c2. (10.69)

Helyettesítsük be (10.68)-at (10.67) bal oldalába. Ekkor felhasználva (10.69)-et kapjuk, hogy

c1x1 + c2x2 = c1xm1 + c1a2x

m2 + (c2 − c1a2)x2 =

= c1xm1 + c2x

m2 + (c1a2 − c2)(x

m2 − x2) ⊲ c1x

m1 + c2x

m2 . (Q.E.D.)

10.3.4. következmény: Tegyük fel, hogy n = 3, és a regularitási feltételekteljesülnek. Legyen s és t a következő két egész:

s =

a3

a2

, t = sa2 − a3.

A feladat akkor és csak akkor kellemes, ha

f(3, sa2) = m(3, sa2). (10.70)

Bizonyítás: A 10.3.1. tétel szerint elegendő az f(3, y) = m(3, y) feltétel

teljesülését azokra az y jobb oldalakra ellenőrizni, amelyekre a2 + 1 ≤ y ≤a3 + a2 − 1. Viszont a feltétel a2 + 1 ≤ y < a3 esetén a 10.3.3. lemmaalapján azonnal adódik. Tegyük fel először, hogy t > 0. Így elegendő aza3 + 1 és a3 + a2 − 1 közé eső jobb oldalakra szorítkoznunk. Ekkor bármelymegengedett megoldás esetében x3 értéke 0 vagy 1, továbbá, ha x3 = 1, ak-kor x2 = 0. Nekünk a mohó megoldást kell összehasonlítanunk a nem mohómegoldásokkal. Az utóbbiakban az eddigiek alapján x3 = 0, így közülük azm(2, y) értéket meghatározó lesz a legjobb. A 10.3.1. tétel bizonyításáhozhasonlóan szorítkozhatunk csak azokra a jobb oldalakra, amelyek esetében

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 283: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.3. A mohó módszer a hátizsák feladat esetén 283

az m(3, y) és az m(2, y) értéket meghatározó megoldások azonos indexű kom-ponensei egyszerre nem pozitívak. Ilyen azonban csak az sa2 az adott inter-vallumban, ugyanis minden más jobb oldal esetén mindkét megoldásban x1

pozitív lesz. Végül, ha t = 0, akkor (10.52)-ből következik, hogy c2s ⊲ c3,vagy másképpen

0 ⊲ c3 − c2s. (10.71)

Vegyünk egy olyan megoldást, amiben x2 ≥ s. Ekkor a

zT = (x1, x2 − s, x3 + 1)T

vektor is ugyanazt a jobb oldalt állítja elő. Adjuk hozzá a célfüggvény x-heztartozó értékét (10.71) mindkét oldalához. Így azt kapjuk, hogy

c1x1 + c2x2 + c3x3 ⊲ c1x1 + c2x2 − c2s + c3x3 + c3.

Itt a jobb oldal a célfüggvény értéke z-ben, amiből az adódik, hogy x2 értékét0 és s − 1 közé célszerű redukálni. Hasonlóan bizonyítható, hogy x1 értékét0 és a2 − 1 közé kell csökkenteni. Így azonban a mohó megoldáshoz jutunk.

Q.E.D.

Az alábbiakban látni fogjuk, hogy a (10.70) feltétel messzemenően általá-nosítható.

A továbbiakban mindig abból indulunk ki, hogy van egy n-változós kelle-mes feladatunk. Ezt egészítjük ki egy új változóval, melynek indexe n + 1,úgy, hogy a regularitási feltételek érvényben maradjanak, tehát

cn+1 ∈ ZZ+, an+1 ∈ IN,cn

an⊲

cn+1

an+1, an < an+1 (10.72)

teljesülését követeljük meg. Az így nyert n + 1 változós feladatot fogjukaztán vizsgálni. Először arra válaszolunk, hogy a feladat kellemes volta mikoröröklődik. Majd pedig azt elemezzük, hogy amikor ez nem történik meg,akkor mekkora lehet a módszer hibája.10.3.5. tétel: Tegyük fel, hogy a regularitási feltételek, beleértve (10.72)-tis, teljesülnek, továbbá f(n, ·) ≡ m(n, ·). Legyen s és t a következő két egész:

s =

an+1

an

, t = san − an+1.

Ekkor a következő két állítás ekvivalens:(i) f(n + 1, ·) ≡ m(n + 1, ·),(ii) cn+1 + m(n, t) ⊳ scn.

Bizonyítás: Azonnal látható, hogy

cn+1 + m(n, t) = m(n + 1, san).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 284: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

284 10. A mohó módszer

Ez akkor optimális, ha egyetlen más, ugyanehhez a jobb oldalhoz tartozó meg-engedett megoldás célfüggvényértékénél sem rosszabb. A (ii) jobb oldalán állószám viszont éppen ilyen érték, nevezetesen az x1 = ... = xn−1 = xn+1 = 0,xn = s megengedett megoldáshoz tartozik. Így (i) teljesüléséhez (ii) szüksé-gessége nyilvánvaló.

A fordított irányt igazolandó tegyük fel, hogy létezik egy y ∈ IN, amelyre

f(n + 1, y) 6= m(n + 1, y).

Ha y < an+1, akkor

f(n + 1, y) = f(n, y) = m(n, y) = m(n + 1, y).

Továbbá a regularitási feltételekből és (10.72)-ből azonnal adódik, hogy

f(n + 1, an+1) = m(n + 1, an+1) = cn+1.

Teháty > an+1.

Legyen w ≥ 0 egy tetszőleges olyan egész, hogy

y ≥ wan+1,

továbbá legyenp = y − wan+1,

és az ehhez tartozó n-változós mohó megoldás xm. Ekkor tehát

y =

n∑

j=1

ajxmj + wan+1. (10.73)

Jelölje y ezen előállításához tartozó célfüggvényértéket g(w), azaz

g(w) = m(n, p) + cn+1w.

Vizsgáljuk a g(w) − g(w−1) különbséget, feltéve, hogy w > 0. Felhasználvag(w) iménti definícióját kapjuk, hogy

g(w) − g(w − 1) = cn+1 + m(n, p) − m(n, p + an+1) =

cn+1 + m(n, t) − m(n, t) + m(n, p) − m(n, p + an+1).

Innen a (ii) feltétellel nyerjük, hogy

g(w) − g(w − 1) ⊳ scn − m(n, t) + m(n, p) − m(n, p + an+1). (10.74)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 285: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.3. A mohó módszer a hátizsák feladat esetén 285

Legyen b, c ∈ ZZ+ két tetszőleges szám, és a hozzájuk tartozó f(n, b) ésf(n, c) értékeket meghatározó két vektor u, illetve v. Nyilvánvalóan u + v ahátizsák feladat megengedett megoldása a b + c jobb oldal esetén, azonbannem feltétlenül optimális megoldása. Innen adódik, hogy

f(n, b) + f(n, c) ⊲ f(n, b + c).

Ezt az elvet, valamint az f(n, ·) ≡ m(n, ·) azonosságot felhasználva (10.74)-ből nyerjük, hogy

g(w) − g(w − 1) ⊳ scn + m(n, p) − m(n, p + an+1 + t). (10.75)

Az s és t számok definíciója alapján a jobb oldal utolsó tagja az előjeltőleltekintve

m(n, p + san).

A mohó módszer definíciója alapján

m(n, p + san) = scn + m(n, p).

Így tehát (10.75) ag(w) − g(w − 1) ⊳ 0

alakot nyeri. Így arra a következtetésre jutottunk, hogy y-nak (10.73) alakúelőállításai közül az a legjobb, amelyben w értéke a lehető legnagyobb, azaz

y

an+1

. (10.76)

Rögzítsük most w értékét, és tekintsünk egy tetszőleges

y =

n∑

j=1

ajxj + wan+1 (10.77)

megengedett megoldást. Hasonlítsuk össze az y (10.73) és (10.77) előállítá-saihoz tartozó célfüggvényértékeket, amelyek

n∑

j=1

cjxmj + cn+1w = m(n, p) + cn+1w,

illetve

n∑

j=1

cjxj + cn+1w.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 286: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

286 10. A mohó módszer

Mivel a mohó megoldás a tétel feltételei szerint n változó esetén optimális,így biztos, hogy

m(n, p) ⊳

n∑

j=1

cjxj .

Azt kaptuk tehát, hogy y legjobb előállításában xn+1 értékét (10.76)-nak kellvenni, a többi változót meg mohó módon kell megválasztani. Így azonban yegy n + 1-változós mohó előállításához jutunk. Q.E.D.

A tétel alapján beláthatjuk, hogy a magyar pénzrendszer rendelkezik azzala tulajdonsággal, hogy ha egy összeget pontosan akarunk kifizetni a lehetőlegkevesebb pénzdarab felhasználásával, akkor az összeget mohó módon kellfelbontani. A megoldandó feladat, ha b forintot kell kifizetnünk

min

n∑

j=1

xj

x1 + 2x2 + 5x3 + 10x4 + 20x5 + 50x6 + 100x7 + 200x8 +

+500x9 + 1000x10 + 2000x11 + 5000x12 + 10000x13 + 20000x14 = b

x1, ..., x14 ∈ ZZ+

A kívánt tulajdonság n = 2 esetén a 10.3.3. lemma alapján következik. Innentovább már a tétel segítségével bizonyíthatjuk. Mi a példa kedvéért két lépéstteszünk meg. A tételben szereplő s és t számok n = 2 esetén 3 és 1, hiszen5=3·2-1. Ekkor a (ii) követelmény az

1 + m(2, 1) ≤ 3

alakot ölti, ami teljesül, hiszen m(2, 1) = 1. Legyen most már n = 3. Ekkors = 2, t = 0. Így a mohó megoldás optimalitásához az

1 + m(3, 0) = 1 ≤ 2

egyenlőtlenségnek kell teljesülnie, ami természetesen igaz. El lehetne rontania rendszer eme szép tulajdonságát például egy 25 forintos érme bevezetésével.Ekkor ugyanis 40 forint mohó kifizetéséhez három pénz kell: 25+10+5=40,míg természetesen az optimális megoldás továbbra is 2·20. A tétel nyelvérefordítva a dolgot a 25 forintos címlet bevezetése után n = 5 esetén s = 2,t = 15 és1

1 + m(5, 15) = 3 > 2.

1 Lényegében a most vázolt példa zajlott le 1996-ban Törökországban. A régi angolpénzrendszernél, melyben volt guinea, font, korona, shilling és penny, ugyancsak többösszeg esetében nem a mohó megoldás az optimális.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 287: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.3. A mohó módszer a hátizsák feladat esetén 287

Most rátérünk annak vizsgálatára, hogy mekkora lehet a mohó módszerhibája, ha a feladat kellemes tulajdonsága nem öröklődik, azaz az előző té-telben a (ii) feltétel nem teljesül. Bevezetjük a következő jelölést:

hiba(y) = |f(n + 1, y) − m(n + 1, y)|.

Nyilván

hiba(y) =

{

f(n + 1, y) − m(n + 1, y) a (10.46) feladat eseténm(n + 1, y) − f(n + 1, y) a (10.47) feladat esetén.

10.3.6. lemma: Tegyük fel, hogy f(n, ·) ≡ m(n, ·). Ekkor minden y ∈ ZZ+

jobb oldalhoz létezik egy olyan z ∈ ZZ+ jobb oldal, hogy z ≤ y, hiba(y) =hiba(z), és egy z-hez tartozó optimális megoldásban xn+1 értéke 0.

Bizonyítás: Legyen x egy y-hoz tartozó (n+1)-változós optimális megoldás.Legyen

z = y − an+1xn+1.

Nyilván z ≥ 0, továbbá

m(n + 1, y) = cn+1xn+1 + m(n + 1, z),

f(n + 1, y) = cn+1xn+1 + f(n + 1, z).

A két egyenletet kivonva egymásból adódik az állítás. Q.E.D.

10.3.7. lemma: Tegyük fel, hogy f(n, ·) ≡ m(n, ·). Legyen i ∈ INtetszőleges egész, si ∈ IN pedig az a szám, amire

si =

ian+1

an

.

Legyen y ∈ IN olyan, melyre

ian+1 ≤ y < (i + 1)an+1,

és amelyhez tartozó valamely (n + 1)-változós optimális megoldásban xn+1

értéke 0. Ekkorhiba(sian) ≥ hiba(y).

Bizonyítás: Először azt az esetet vizsgáljuk meg, amikor

y ≥ sian.

Legyend = y − sian.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 288: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

288 10. A mohó módszer

A tétel feltételei szerint

f(n+1, y) = f(n, y) = m(n, y) = sicn +m(n, d) ⊲ f(n+1, sian)+f(n, d).

Legyengi = sian − ian+1.

Ekkor

m(n + 1, y) = icn+1 + m(n, gi + d) = icn+1 + f(n, gi + d) ⊳

⊳ icn+1 + f(n, gi) + f(n, d) = m(n + 1, sian) + f(n, d).

Összefoglalva az eddigi eredményeket

m(n + 1, y) ⊳ m(n + 1, sian) + f(n, d),

f(n + 1, sian) + f(n, d) ⊳ f(n + 1, y).

Kivonva egymásból a két egyenlőtlenséget kapjuk, hogy

f(n + 1, sian) − m(n + 1, sian) ⊳ f(n + 1, y) − m(n + 1, y),

ami figyelembe véve ⊳ és a hiba(·) függvény definícióját, a kívánt relációtjelenti.

Tegyük most fel, hogy y < sian. Legyen ekkor

h = sian − y, k = y − ian+1, d = y − (si − 1)an = an − h.

Vizsgáljuk a cn + f(n + 1, y) számot. Az si definíciója alapján adódik, hogyd ≥ 0. Felhasználva a tétel feltételeit

cn + f(n + 1, y) = cn + f(n, y) = cn + m(n, y) =

cnsi + f(n, d) ⊲ f(n, sian) + f(n, d).

Hasonlóképpen

cn + m(n + 1, y) = cn + icn+1 + f(n, k) = icn+1 + f(n, an + k) =

= icn+1 + f(n, h + k + d) ⊳ icn+1 + f(n, h + k) + f(n, d) =

= m(n + 1, sian) + f(n, d).

A két egyenlőtlenséget kivonva egymásból nyerjük a kívánt összefüggést.Q.E.D.

10.3.8. lemma: Legyen i, j ∈ IN, i < j. Tegyük fel, hogy

sian − ian+1 = sjan − jan+1. (10.78)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 289: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.3. A mohó módszer a hátizsák feladat esetén 289

Tegyük fel továbbá, hogy az an+1 és cn+1 együtthatókra vonatkozó (10.72)regularitási feltételek teljesülnek. Ekkor

icn+1 − sicn ⊲ jcn+1 − sjcn.

Bizonyítás: A (10.78) egyenlet átrendezésével kapjuk az

sj − si

j − i=

an+1

an

összefüggést. (10.72) alapján

an+1

an⊲

cn+1

cn,

tehát

sj − si

j − i⊲

cn+1

cn.

Ezt a relációt megszorozva (j − i)cn-nel és a tagokat átrendezve kapjuk azállítást. Q.E.D.

10.3.9. tétel: Tegyük fel, hogy f(n, ·) ≡ m(n, ·) és a regularitási feltételek,beleértve (10.72)-t is, teljesülnek. Legyen

d = l.n.k.o.(an, an+1),

δ =

{

1 a (10.46) feladat esetén−1 a (10.47) feladat esetén,

továbbá

si =

ian+1

an

, ti = sian − ian+1, i = 1, 2, ...

Ekkor

max{hiba(y)|y ∈ ZZ+}= max{δ(sicn − icn+1 − m(n, ti))|i = 1, ..., (an/d)}. (10.79)

Bizonyítás: A 10.3.6. és 10.3.7. lemmából együttesen következik, hogy

max {hiba(y) | y ∈ ZZ+ } = max {hiba(sian) | i = 1, ... }. (10.80)

A d és ti számok definíciójából következik, hogy

∀ i : ti ∈ { 0, d, 2d, ..., an − d },

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 290: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

290 10. A mohó módszer

és i = 1, ..., (an/d)− 1 esetén a ti számok befutják az itt szereplő halmaz 0-tól különböző elemeit. A regularitási feltételekből következik, hogy mindazoni indexek esetében, ahol

ian+1 = sian,

otthiba(sian) = 0.

Így a 10.3.8. lemmából és a (10.80) egyenlőségből nyerjük, hogy

max {hiba(y) | y ∈ ZZ+ } = max {hiba(sian) | i = 1, ..., (an/d) }.

Tekintsük most az f(n + 1, sian) értékeket meghatározó megoldásokat. Haezek valamelyikében xn+1 = 0, akkor a (10.52) feltétel alapján következik,hogy az

x1 = ... = xn−1 = xn+1 = 0, xn = si

vektor az sian jobb oldalhoz tartozó optimális megoldás. Tehát ekkor

hiba(sian) = δ(sicn − icn+1 − m(n, ti)). (10.81)

Ha az f(n+1, sian) értéket meghatározó megoldások mindegyikében xn+1 >0, akkor létezik egy 1 ≤ j < i index, hogy

y = sian − jan+1

mellett egy az f(n + 1, sian) értéket meghatározó megoldásban xn+1 értéke0. Innen

hiba(sian) = hiba(y) ≤ hiba(si−jan).

Ha történetesen az f(n+1, si−jan) értéket meghatározó megoldások legalábbegyikében nem lenne xn+1 értéke 0, akkor ezt a gondolatmenetet az si−jan

jobb oldalra megismételhetjük. Így végül azt kapjuk, hogy a

max {hiba(sian) | i = 1, ..., (an/d) }

legalább egy olyan k index mellett vétetik fel, hogy az f(n+1, si−jan) értéketmeghatározó megoldások legalább egyikében xn+1 értéke 0. Innen (10.81)alapján adódik az állítás. Q.E.D.

10.4. Megjegyzések és irodalomA mohó módszer, hasonlóan a szomszédságfogalmon alapuló heurisztikus eljá-ráshoz, nem köthető egyetlen ember nevéhez, az operációkutatás folklórjáhoztartozik. A belső pontos módszerek pontosságát sokan tanulmányozták. Azezzel kapcsolatos eredmények igen részletes összefoglalását adja [39]. Ez amű tartalmazza a 10.2. szakaszban tárgyaltakat.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 291: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

10.4. Megjegyzések és irodalom 291

Azon hátizsák feladatok osztályának meghatározása, ahol a mohó módszermindig optimális megoldást ad, egymástól függetlenül mind a számelmélet-ben, mind az operációkutatásban megtörtént. A számelméletben először az5. fejezetben említett Frobenius-problémával szoros kapcsolatban lévő, ún.postabélyeg probléma vizsgálata tette szükségessé. A postabélyeg problémaa következő. Egész címletű bélyegeink vannak, a legkisebb címlet 1. Min-den bélyeg mérete azonos. Keresendő az a legkisebb összeg, amit nem tudunkpontosan felragasztani egy borítékra, ha a borítékra h darab bélyeget ragaszt-hatunk. Legyen a címletek halmaza Ak = { 1, a2, ..., ak }. Az egyszerűségkedvéért feltesszük, hogy ak a legnagyobb Ak elemei közül. A keresett szám-nál 1-gyel kisebb egészt jelöli nh(Ak). Tehát 1 és nh(Ak) közé eső bármilyenegész összeget fel tudunk ragasztani a borítékra. Legyen

Ak = { ak, ak − 1, ak − 2, ..., ak − ak−1 }.

Ezen halmaz elemei relatív prímek, hiszen már a két első elem az. Így ér-telmezhető ezekkel az együtthatókkal egy Frobenius-probléma. Jelölje ennekmegoldását g(Ak). A [66] dolgozat bizonyította a következő alapvető tételt,amely a Frobenius- és a postabélyeg probléma kapcsolatát írja le:10.4.1. tétel: Létezik egy h1 egész, hogy minden h ≥ h1 egész esetén

nh(Ak) = hak − g(Ak) − 1.

Q.E.D.

Ha egy összeget két különböző módon ragasztunk fel a borítékra, akkora kettő közül az a jobb a vizsgált feladat szempontjából, amelyik kevesebbszámú bélyeget használ. Így érthető, hogy az ún. kellemes feladatok osz-tályával foglalkozó [26] és [27] dolgozatban a 10.3.4. tételt csak a (10.47)feladat azon speciális esetére találta meg a szerző, ahol c1 = ... = cn = 1.Az egészértékű programozás felől érkezőknek [62] cikkében ugyanez a megkö-tés természetesen nem szerepel. A tétel megfelelő alakját a (10.46) feladatraa Frobenius-probléma vizsgálata kapcsán Marstander találta meg a c1 = 0megszorítást feltételezve [63]. Az itt közölt bizonyítás ezen a dolgozaton alap-szik. A 10.3.1 tétel a [98] dolgozatban található. A hiba vizsgálatát csak [62]tartalmazza.

A 10.3.2. tétel forrása a (10.47) feladatra a ∀ j : cj = 1 megszorítás mel-lett [55]. A bizonyítást jelentősen leegyszerűsítette [77]. Hasonló eredményrejutott [19]. A témakör egységes tárgyalását adja [92]. Egyes magasabb di-menziós általánosításokat tárgyal [90].

A hátizsák feladat és a hozzá tartozó mohó módszer együtt egy olyan, mégviszonylag egyszerűbb helyzetet jelentenek, amikor az algoritmus átlagos vi-selkedése is leírható. Minden ilyen esetben valamilyen valószínűség-eloszlástkell feltételezni az együtthatókról, ideértve természetesen azt is, hogy az

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 292: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

292 10. A mohó módszer

együtthatók mint valószínűségi változók hogyan függnek össze. Ekkor le-het az optimális és a heurisztikus megoldás célfüggvényértékének várhatóértékéről, illetve a kettő egyenlőségének valószínűségéről beszélni. Tekintsüka (10.8)–(10.10) bináris hátizsák feladatot és annak (10.12)-ben megadottmohó megoldását. Az ehhez tartozó célfüggvényértéket jelölje z

(n)m , az opti-

mális megoldásét pedig z(n)opt . Ha az együtthatók valószínűségi változók, akkor

természetesen z(n)m és z

(n)opt is valószínűségi változó. A [84] dolgozatban bizo-

nyítottak egy általános tételt, amelynek az alábbiakban egy speciális esetétadjuk meg, hogy elkerüljük bonyolult formulák bevezetésének szükségességét.10.4.2. tétel: Tegyük fel, hogy cj és aj (j = 1, ..., n) egymástól köl-csönösen független, a (0, 1) intervallumon egyenletes eloszlású valószínűségiváltozó, b = O(

√n). Ekkor létezik egy olyan r(n) > 0 sorozat, amelynek a

határértéke 0, hogy

limn→∞

P (z(n)opt − z(n)

m < r(n)) = 1.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 293: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

III. rész

Az egészértékűprogramozás speciálismódszerei

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 294: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 295: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11. fejezet

A leszámlálási algoritmus

Ebben a részben olyan eljárásokat ismertetünk, amelyek annyira kihasználjákaz egészértékű programozási feladatok jellegzetes tulajdonságait, hogy márnem tekinthetők általános módszerek alkalmazásának ezen a területen.

A most tárgyalandó leszámlálási algoritmus bizonyos értelemben a kor-látozás és szétválasztás módszerének párja. Mindkettőben a (megengedett)megoldások részhalmazaiból a tartalmazás reláció alapján egy gráfelméleti ér-telemben vett (bináris) fát alkotunk. Ezért a kettőt szokták együttes névenfán kereső algoritmusoknak nevezni. Míg azonban a korlátozás és szétvá-lasztás módszere a feladatok egy széles skáláján volt alkalmazható, addig aleszámlálási algoritmus kevés kivételtől (pl. néhány ütemezéselméleti feladat-tól) eltekintve akkor alkalmazható, ha valamennyi változó bináris.

11.1. A leszámlálási algoritmusok alapvetőstruktúrája

Tekintsük egyelőre a

max { f(x) | x ∈ S } (11.1)

feladatot, ahol

S ⊂ { 0, 1 }n, (11.2)

és f(x) a bináris változókon értelmezett tetszőleges valós függvény. Ennek afeladatnak a megoldására azonnal adódik egy biztos és véges módszer: végigkell vizsgálni az összes bináris vektort, mindegyikről el kell dönteni, hogy azS halmaznak eleme-e, és ha igen, akkor ellenőrizni kell az f(x) értéket isabból a szempontból, hogy S eddig megtalált elemeinek célfüggvényértékénélnagyobb-e. Két dolog látható. Az egyik, hogy ebben a nagyon primitív mód-szerben a vektorok felsorolása a lényeg. A másik, hogy ennek az eljárásnakrendkívül korlátozott a hatóköre. Példaként tegyük fel, hogy 50 változónkvan:

250 ≈ 1015.

295

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 296: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

296 11. A leszámlálási algoritmus

Ennyi eset egyenkénti megvizsgálása ezen mű írásakor kívül esik a számí-tógépek nyújtotta lehetőségek határain. Az lesz tehát a célunk, hogy úgyszervezzünk meg egy ilyen minden esetet áttekintő módszert, hogy az esetektúlnyomó többségének a megvizsgálását megtakarítsuk.

De koncentráljunk egyelőre az összes eset végigvizsgálására. A 11.1. táb-lázat ezt n = 3 esetén három különböző változatban tartalmazza.

x1 x2 x3 x1 x2 x3 x1 x2 x3

1 0 0 0 0 0 0 0 1 02 0 0 1 0 1 0 0 1 13 0 1 0 1 0 0 1 1 04 0 1 1 1 1 0 1 1 15 1 0 0 0 0 1 0 0 06 1 0 1 0 1 1 1 0 07 1 1 0 1 0 1 0 0 18 1 1 1 1 1 1 1 0 1

11.1. táblázat

1µ´¶³2µ´¶³

3µ´¶³4µ´¶³

5µ´¶³6µ´¶³

7µ´¶³8µ´¶³

¹¸º·1,2

¤¤¤¤²

CCCCW

¹¸º·3,4

¤¤¤¤²

CCCCW

¹¸º·5,6

¤¤¤¤²

CCCCW

¹¸º·7,8

¤¤¤¤²

CCCCW

&%'$1,2,3,4

¤¤¤¤²

CCCCW

&%'$5,6,7,8

¤¤¤¤²

CCCCW

¢¢

¢¢

¢¢¢®

&%'$

1,2,3,4,5,6,

7,8AAAAAAAU

11.1. ábra: Három bináris változó lehetséges összes esetének leszámlálása.A körökben az adott részhalmazba tartozó vektoroknak a 11.1. táblázat

szerinti sorszáma található.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 297: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.1. A leszámlálási algoritmusok alapvető struktúrája 297

Hasonlítsuk össze a három változatot. Az első a legtermészetesebb. Itt azazonnal adódó indexsorrendben a változókkal a következőképpen jártunk el.Az elsőt, vagyis x1-et mindaddig 0 értéken tartottuk, míg a többi változóvalaz összes lehetséges esetet ki nem merítettük. Majd az első változó, vagyisx1 értékét 1-re változtattuk, és ismét leszámláltuk az összes lehetséges eseteta többi változóval. Ezen belül a többi változóval is hasonlóképpen jártunk el,nevezetesen x1 rögzített értéke mellett a sorrendben x1 után következő elsőváltozó, vagyis x2 értékét mindaddig 0 értéken tartottuk, míg a többi – x1-enés x2-ön felüli (bár már csak egy további változó volt) – összes lehetségesvariációt ki nem merítettük, ezután x2 értékét 1-re változtattuk, stb.

A második változat csak annyiban különbözik az elsőtől, hogy a változók-nak nem az (x1, x2, x3), hanem (x3, x1, x2) sorrendjét veszi figyelembe.

Az első kettőhöz képest a harmadik két újítást vezetett be. Az egyik, hogyaz eseteket nem a változók állandó sorrendje mellett számlálta le, hanem azesetek első felét az (x2, x1, x3), a második felét az (x2, x3, x1) sorrendnekmegfelelően. A másik újítás, hogy feladtuk azt a szabályt, hogy egy változóértéke először mindig 0, és csak ha az ilyen esetek kimerültek, akkor vál-toztatjuk 1-re. Ebben a példában x2 először 1 volt, és csak az ilyen esetekkimerültével változott 0-ra.

Nézzük meg most példaképpen az (1,0,0) vektor esetében, hogy mit kelltudnunk a leszámlálás állásáról akkor, amikor ezt a vektort előállítottuk. Aváltozók pillanatnyi sorrendjében:

1. változat: x1 másik értékéhez tartozó eseteket kimerítettük, x2 és x3

még felveheti a másik értékét is;2. változat: x3 még felveheti a másik értékét, x1 már nem, de x2 igen;3. változat: x2 másik értékéhez tartozó eseteket már kimerítettük, x3 még

felveheti a másik értékét, x1 már nem.Ezek az információk az adott sorrendnek megfelelően hierarchikusan értel-

mezendők. Tehát például a 2. esetben x1 volt már 0, a (0,0,1) és (0,1,1)vektornál, és majd még lehet újra 0, de csak akkor, ha már x3 értéke átváltottaz ellentettjére, mert ekkor a hierarchiában alárendelt, vagyis a sorrendbenhátrébb álló változókra vonatkozó információk megsemmisülnek.

A fenti eljárás a következőképpen is elmondható. A vektorok részhalma-zaiból a 2.8. szakaszhoz hasonlóan egy bináris fát építettünk fel. A fa gyökereaz összes vektorból álló halmaz volt. Ezt kettéosztottuk az egyik változó (aharmadik esetben x2) két értéke szerinti két részhalmazra. Az így keletkezettkét részhalmaz közül az egyiket időlegesen félretettük (a példában az x2 = 0feltétellel meghatározottat), míg a másikat egy újabb változóra vonatkozóértékadással (ez most x1 volt) továbbosztottuk ketté. Ezt a kettéosztástmindaddig folytattuk, amíg a halmaz egyetlen pontra le nem szűkült. Ekkorvisszatértünk a visszafelé haladva legelső be nem járt elágazásig, és a másikágon folytattuk tovább az előbbi eljárást. Az egész algoritmus akkor ért véget,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 298: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

298 11. A leszámlálási algoritmus

amikor már minden elágazást bejártunk. (A példában szereplő bináris fát a11.1. ábra mutatja.) Nyilvánvaló, hogy egy részhalmaznak a helyét a binárisfában az őt definiáló értékadások és azok sorrendje együttesen határozza meg.Ezt láttuk az (1,0,0) vektor helyének a három különböző variációban valóelemzésekor.

Tegyük fel még a példa kedvéért, hogy a (11.1) feladatban n = 3, ésvalahonnan a priori tudjuk, hogy az S halmazba csak olyan vektorok tartoz-hatnak, hogy x2 = 0 esetén x3 = 0 is teljesül. Ekkor a harmadik változatnálaz (1, 0, 0) vektor esetén nem a fentieket, hanem azt kell tudnunk, hogy

sem x2, sem x3, sem x1 már nem veheti fel a másik értékét.Ez pedig azt jelenti, hogy ebben az esetben az eljárás véget ért.

Nem tűnik különösebben nehéznek egy ilyen a priori információ megtalá-lása egy véges halmazról. Igen ám, de éppen a szakasz elején lévő n = 50melletti példánk mutatja, hogy az S halmazt általában csak implicit módon,azaz feltételekkel lehet megadni, így ezen információk beszerzése sem triviá-lis. Ennek részleteire a következő szakaszban térünk vissza. Itt csak annyitteszünk fel, hogy beszerzésük lehetséges.

A közvetlen célunk most az, hogy a fenti példában elemzett jelenségekpontos matematikai leírását megadjuk. Elszakadunk a (11.1) feladattól, éshelyette

soroljuk fel az implicit módon megadottS ⊂ { 0, 1 }n halmaz összes elemét

(11.3)

feladathoz keresünk algoritmust. Ezért a fentebb mondottakat annyiban mó-dosítjuk, hogy nem az összes bináris vektor részhalmazait képezzük az egyesváltozók értékeinek előírásával, hanem csak az S halmazét. Emiatt előfordul-hat, hogy egy újabb értékadással maga a halmaz nem változik meg.

Az (1,0,0) vektor helyének elemzésekor azt láttuk, hogy a következő négyinformációval kell rendelkeznünk: (1) mely változó értékét írtuk elő, (2) azegyes változókat mennyinek írtuk elő, (3) ezek az értékadások mely sorrend-ben történtek, (4) kell-e még vizsgálni a változó értéke szerinti másik ágat?

A korlátozás és szétválasztás algoritmusához hasonlóan építünk fel egy fát.Most egy részhalmazt mindig két részre bontunk fel egy változó két lehetségesértéke szerint. Ezért egy változó alapján csak legfeljebb egyszer ágazhatunkel. Egy ilyen elágazást rögzítésnek nevezünk, a már értéket kapott változókatrögzített változóknak, a többit pedig szabad változónak. Két esetben nem kellaz algoritmusnak egy ág párját a későbbiekben megvizsgálni: vagy ha aztmár korábban megvizsgálta, vagy ha a rögzítésnél kiderült, hogy az ág párjaüres. Az utóbbi esetben az így keletkező ágat az őt közvetlenül megelőző ágkövetkezményének nevezzük. A következmények kimutatására szolgáló eljá-rásokat, a teszteket, a következő szakaszban tárgyaljuk a lineáris egészértékűprobléma esetében. A változó rögzítését akkor, amikor a változó értéke sze-

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 299: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.1. A leszámlálási algoritmusok alapvető struktúrája 299

rinti másik ágat nem kell megvizsgálni, bármi legyen is az oka, lekötésneknevezzük. A fa egy ágát a következő adatrendszer írja le:

(i) k, a rögzített változók száma, ahol 0 ≤ k ≤ n,(ii) (i1, ..., ik), az { 1, ..., n } számokból képzett, ismétlést nem tartalmazó

részsorozat, a rögzített változók indexei a rögzítés sorrendjében,(iii) (δ1, ..., δk)T ∈ { 0, 1 }k, a rögzített változók olyan módon, hogy az

xij= δj j = 1, ..., k

értékadást írtuk elő,(iv) a Boole-változókból képzett k-dimenziós α vektor, ahol

αj =

igaz ha meg kell vizsgálniaz xij

szerinti másik ágathamis ha nem kell megvizsgálni.

Az ezzel az adatstruktúrával leírt ág tehát a

T = {x ∈ S | xij= δj , j = 1, ..., k }

halmazt reprezentálja. A szabad változók indexeinek halmaza most

{ 1, ..., n } \ (i1, ..., ik).

Tegyük fel, hogy U egy másik halmaz, amihez tartozó ágat a fenti sorrendbena

( p, ( l1, ..., lp ), (ε1, ..., εp ), (β1, ..., βp ))

adatok határozzák meg. Az utóbbi ág akkor és csak akkor keletkezett egyvagy több rögzítés útján az előbbiből, ha

p > k, lj = ij , εj = δj , βj = αj , j = 1, ..., k.

Továbbá akkor egy lekötés által, ha

p = k + 1 és βk+1 = hamis.

A korlátozás és szétválasztás módszerénél azt mondtuk, hogy elvben sem-miféle kötelező szabály nincs a felbontandó ág kiválasztására. A lehetségesstratégiák között szerepelt a LIFO-szabály, amelynél mindig az utoljára ke-letkezett ágat dolgoztuk fel. Most ezt a szabályt fogjuk alkalmazni.

Az alább megfogalmazandó algoritmusban a következő jelöléseket használ-juk:

k a rögzített változók száma,F a szabad változók indexeinek halmaza,P az a halmaz, amibe S explicit módon megismert

elemeit gyűjtjük.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 300: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

300 11. A leszámlálási algoritmus

Alkalmazunk továbbá öt eljárást, amelyek közül három Boole-eljárás, tehátönmaga is igaz vagy hamis (az alkalmazott ALGOL-szerű nyelvben true vagyfalse) értéket képvisel. Az eljárások a következők:

ÜRES-ÁG – Boole-eljárás, mely akkor igaz, ha kimutatta, hogy az ak-tuális ágban nincs eleme az S halmaznak. Különben az értéke hamis.

KÖVETKEZMÉNY(i, δ) – Boole-eljárás, mely akkor igaz, ha kimutatta,hogy az adott ágban egy változó leköthető. Ekkor a változó indexét azi, értékét pedig a δ paraméterben adja meg. Ha nem talált leköthetőváltozót, akkor az eljárás értéke hamis.

LEKÖTÉS(i, δ) – Az xi változót δ értéken leköti.

RÖGZÍTÉS – Kiválaszt egy xi szabad változót, és ahhoz 0 vagy 1 értéket,és xi-t ezen rögzíti, αk = igaz értékadás mellett.

ÁGCSERE – Boole-eljárás, amelynek értéke akkor igaz, ha a fábanvisszafelé haladva talál elágazást, azaz valamely j ≤ k esetén αj igazvolt. Ekkor az aktuális ágat felcseréli az így megtalált ággal, azaz a meg-felelő változót 1 − δj értéken leköti. Ha az eljárás elágazást nem talált,akkor az értéke hamis lesz.

Ae e..

......

@@@

e¡¡¡e

e........¡

¡¡e

eB

@@@

ee¡

¡¡@

@@

11.2. ábra: Az ÁGCSERE eljárás eredménye. Szaggatott vonal jelzi akorábban bejárt vagy kizárt ágakat. Az A ágról a B ágra lépünk át.

Értelemszerűen az utóbbi három eljárás kezeli a szabad változók halmazát,az első kettő a lefutásakor egy elemmel csökkenti, míg az ÁGCSERE eljárásszükség esetén növeli azt.

11.1. algoritmus

1. Begin

2. k := 0;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 301: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.1. A leszámlálási algoritmusok alapvető struktúrája 301

3. F := { 1, ..., n };4. P := ∅;5. while true do

6. begin

7. while F 6= ∅ do

8. begin

9. if not ÜRES-ÁG then

10. begin

11. while KÖVETKEZMÉNY(i, δ) do

12. LEKÖTÉS(i, δ);

13. if F 6= ∅ RÖGZÍTÉS;

14. end;

15. else if notÁGCSERE then stop;

16. end;

17. if x ∈ S then P := P ∪ {x };18. if not ÁGCSERE then stop;

19. end;

20. end;

11.1.1. tétel: A 11.1. algoritmus véges, és lefutása után P = S.

Bizonyítás: A végességet teljes indukcióval bizonyítjuk. Ha n = 1, akkoraz algoritmusnak a következő lefutásai lehetségesek:

(a) A 7–16. sorokban elhelyezkedő while ciklus első lefutásakor az ÜRES-ÁG eljárás rögtön igaz értéket vesz fel. Ekkor innen a 15. sorba kell ugrani,ahol az ÁGCSERE eljárás azonnal megállítja az algoritmus futását, hiszenmég egy változót sem rögzítettünk.

(b) Ha az ÜRES-ÁG nem ad igaz értéket, a KÖVETKEZMÉNY eljárása 11. sorban azonban igaz, akkor a 12. sorban az összes változót lekötjük,hiszen csak egy van. Ezért lefut a 7–16. sorokban elhelyezkedő while ciklus,és a 18. sorban az ÁGCSERE eljárás megállítja az algoritmus futását.

(c) Végül, ha az egyik előző eset sem következett be, akkor az említettwhile ciklus első lefutásakor a 13. sorban a RÖGZÍTÉS eljárás rögzíti azösszes (azaz az egyetlenegy) változót. Ennek következtében a 18. sorban azÁGCSERE eljárás tud cserélni, de szabad változó nem marad, hiszen mosta változó az ellenkező értéken lesz lekötve. Ezért a while ciklus másodszornem fut le, és a 18. sorban az ÁGCSERE eljárás másodszorra már leállítjaaz algoritmust.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 302: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

302 11. A leszámlálási algoritmus

Tegyük fel, hogy az eljárás n− 1 esetén véges. Ekkor n változó esetén kéteset lehetséges.

(d) Tegyük fel, hogy az első értékadás mindjárt lekötés volt. Ekkor azindukciós feltevés szerint a maradék n − 1 változós feladatot az algoritmusvéges sok lépés után megoldja. Ennek megtörténtével azonban nincs továbbiágcserére lehetőség, tehát az eljárás véget ért.

(e) A másik eset természetesen az, amikor az első értékadás rögzítés, denem lekötés. Az általánosság megszorítása nélkül feltehető, hogy az xn = 0rögzítés történt először. Ekkor ugyancsak az indukciós feltevés szerint azígy keletkező n − 1 változós részfeladatot az algoritmus véges sok lépés utánmegoldja. Következik az ágcsere, ami után azonban xn már az 1 értékenlekötött változó, és ezért a (d) esethez hasonlóan az eljárás véges.

A P halmazt, ami kezdetben üres, csak az algoritmus 17. sorában bővít-jük egy x elemmel az x ∈ S feltétel teljesülése esetén. Ezért az algoritmuslefutása után P ⊂ S. Indirekt módon tegyük fel, hogy létezik egy y ∈ S \Pelem. Bebizonyítjuk, hogy ekkor vagy az ÜRES-ÁG, vagy a KÖVETKEZ-MÉNY eljárásnak hibás eredményt kellett adnia. Az algoritmus indulásánakpillanatában S összes eleme benne van az S halmaznak a pillanatnyi ág ál-tal reprezentált részhalmazában, tehát y is. Tekintsük most az utolsó olyanágat az algoritmus lefutása során, amelyről az utóbbi kijelentés elmondható.Ekkor még kellett szabad változónak lennie, különben y az algoritmus 17.sora szerint belekerült volna a P halmazba. Nem következhetett rögzítés sema 13. sorban, mert akkor y legalább egy későbbi ág által reprezentált rész-halmazban benne lett volna. Azonban a 7–16. sorokban elhelyezkedő whileciklusnak még kellett futnia, mivel volt még szabad változó. Ezért vagy azÜRES-ÁG eljárás igaz értéke miatt hagytunk fel az ág vizsgálatával, vagy aKÖVETKEZMÉNY eljárás az y vektor megfelelő komponensével ellentéteslekötést mutatott ki. Mindkét utóbbi eredmény y léte miatt hibás. Q.E.D.

A továbbiakban a korlátozás és szétválasztás módszerének tárgyalásáhozhasonlóan az a célunk, hogy a fa tárolásához szükséges adatrendszert kidol-gozzuk. A fentiekben már megállapítottuk, hogy milyen információk táro-lására van szükség. Most megadjuk a kivitelezés egy módját. Továbbra ishasználjuk a fa pillanatnyi mélységét tartalmazó egészértékű k mutatót. Aváltozók pillanatnyi értékeit az x vektor tartalmazza. A fát pedig az i vektorsegítségével írjuk le. Elemei azonban előjeles egészek lesznek. Az továbbra isigaz marad, hogy

|ij | = a j-ediknek rögzített változó indexe.Az előjelet pedig a következő szabály szerint határozzuk meg:

ij =

{

> 0 ha a rögzítés nem lekötés< 0 ha a rögzítés lekötés.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 303: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.1. A leszámlálási algoritmusok alapvető struktúrája 303

Az F halmazt a karakterisztikus vektorával írjuk le, amit f -fel jelölünk. Tehát

fj =

{

1 ha xj szabad változó0 különben.

Ennek megfelelően az inicializáláskor az algoritmus 3. sora így alakul

1. for j := 1 to n do fj := 1;

A három eljárás a következő lesz:

1. procedure LEKÖTÉS(i, δ);

2. begin

3. fi := 0;

4. k := k + 1;

5. ik := −i;

6. xi := δ;

7. end;

1. procedure RÖGZÍTÉS;

2. begin

3. i ∈ F kiválasztása;

4. δi meghatározása;

5. fi := 0;

6. k := k + 1;

7. ik := i;

8. xi := δi;

9. end;

1. Boolean procedure ÁGCSERE;

2. begin

3. ÁGCSERE := false;

4. for j := k step − 1 to 1 do

5. if ij > 0 then

6. begin

7. ij := −ij ;

8. xij:= 1 − xij

;

9. k := j;

10. ÁGCSERE := true;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 304: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

304 11. A leszámlálási algoritmus

11. return;

12. end;

13. else

14. fij:= 1;

15. end;

11.2. Tesztek a lineáris egészértékűprogramozási feladat esetében

Az előző szakaszban tárgyalt algoritmusban két olyan eljárás van, az ÜRES-ÁG és a KÖVETKEZMÉNY, amelyek az S halmazról hivatottak informá-cióval szolgálni. A jelen szakasznak az a célja, hogy ezeket részletesen kidol-gozzuk arra az esetre, amikor az S halmazt az

S = {x | Ax ≤ b } ∩ { 0, 1 }n (11.4)

egyenlőséggel határozzuk meg, ahol A (m × n)-es mátrix, b m-dimenziósvektor.

A kidolgozandó eljárásokat összefoglaló néven teszteknek nevezzük. Ateszt egy számítástechnikai fogalom.11.2.1. definíció: A teszt egy meghatározott eldöntendő kérdésre választadó gyors eljárás, amely a következő két tulajdonsággal rendelkezik:

(i) igen válasz esetén nem téved,(ii) van olyan input, amelyre igen választ ad.Ezen definíció szerint tehát, ha a teszt a kérdésünkre „igen” választ ad,

akkor bizosak lehetünk benne, hogy ez korrekt válasz. Ha azonban a tesztválasza „nem” volt, akkor a helyes válasz akár „igen”, akár „nem” is lehet. A(ii) megszorítás nélkül az az eljárás is tesztnek számítana, amelyik mindenesetben „nem” választ adna. Nyilvánvalóan ezzel nem jutnánk semmire, bármaga az eljárás gyors volna.

11.2.1. Egyetlen feltétel vizsgálatán alapuló tesztek

Vizsgáljuk a

n∑

j=1

djxj ≤ f (11.5)

∀ j : xj ∈ { 0, 1 } (11.6)

feltételek által meghatározott T halmazt. A következő kérdést tesszük fel:

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 305: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.2. Tesztek a lineáris egészértékű feladatra 305

Igaz-e, hogy a T halmaz üres?Jelölje x a (11.6) feltételnek eleget tevő azon vektorok valamelyikét, amelyre

a (11.5) egyenlőtlenség bal oldala minimális. A feltett kérdésre a válasz nyil-vánvalóan akkor és csak akkor igaz, ha

n∑

j=1

dj xj > f. (11.7)

Egy megfelelő x vektor meghatározása könnyű, mert az

xj =

{

1 ha dj < 00 ha dj ≥ 0

(11.8)

egyenlőséggel definiált vektor éppen a kívánt tulajdonságú. Így a 9. fejezet-ben bevezetett jelöléssel (11.7) ekvivalens a

n∑

j=1

|dj |− > f (11.9)

reláció teljesülésével. Beláttuk tehát, hogy igaz a11.2.1. lemma: A (11.5) és (11.6) feltételekkel definiált T halmaz akkorés csak akkor üres, ha a (11.9) reláció teljesül. Q.E.D.

Tegyük most már fel, hogy (11.5) egyike a (11.4)-ben megadott S halmaztdefiniáló feltételeknek. Ekkor nyilvánvalóan

S ⊂ T .

Ha tehát T üres, azaz az S halmazt meghatározó egyenlőtlenségek egyikenem elégíthető ki, akkor természetesen S is üres. Azonban az, hogy (11.9)teljesül egy alkalmas feltételre, már csak elegendő, de nem szükséges ahhoz,hogy S üres legyen. Ezt mutatja a következő példa:

−x1 ≤ −1x1 ≤ 0.

Az első egyenlőtlenséget csak az 1, a másodikat csak a 0 elégíti ki.A (11.9) reláció teljesülése gyorsan ellenőrizhető, hiszen a bal oldal kiszá-

mításához legfeljebb n − 1 összeadás és n + 1 összehasonlítás kell. Az elsőtesztünk tehát (11.9) ellenőrzése valamely, az S halmazt leíró feltételre. Ezenteszt és valamennyi alább ismertetendő teszt alkalmazásának módjára a kö-vetkező szakaszban visszatérünk.

Ha (11.9) nem teljesül, akkor még mindig nyerhetünk további eredménye-ket a vizsgált feltételből. Legyen p egy rögzített index (1 ≤ p ≤ n). Akövetkező teszt kérdése így hangzik:

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 306: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

306 11. A leszámlálási algoritmus

Igaz-e, hogy a T halmaz valamennyi x elemében xp = 1?A kérdés természetesen átfogalmazható úgy, hogy igaz-e, hogy nincs olyan x

eleme a T halmaznak, amelyben xp = 0. Ebből látszik, hogy kérdésünketcsak olyan p index esetén érdemes feltenni, amelyre

dp < 0.

Ellenkező esetben ugyanis a (11.8) egyenlőséggel meghatározott x vektorbanxp = 0 és x ∈ T . A kérdésre tehát akkor és csak akkor „igen” a válasz,ha az xp = 0, és a (11.6) feltétel mellett véve (11.5) bal oldalának lehetségesminimális értékét, az meghaladja a jobb oldalt. Ez a fentiekhez hasonlóan a

n∑

j=1; j 6=p

|dj |− > f (11.10)

reláció teljesülését jelenti.A második tesztünkhöz hasonlóan vizsgálhatjuk valamely rögzített p index

esetén az alábbi kérdést is:Igaz-e, hogy a T halmaz valamennyi x elemében xp = 0?

Ekkor a fentiekhez teljesen analóg módon az xp = 1 lehetetlenségét kellkimutatni. Könnyen látható, hogy most a kérdést csak azokra az indexekreérdemes feltenni, amelyekre

dp > 0.

Ismét a bal oldal minimumát képezve az xp = 1 feltétel mellett a

n∑

j=1

|dj |− + dp > f (11.11)

reláció ellenőrzéséhez jutunk.Könnyen látható, hogy

n∑

j=1

|dj |− + |dp| > f (11.12)

közös alakja a (11.10) és (11.11) relációnak. Mivel ezek ellenőrzésének csak(11.9) ellenőrzése után van értelme, ezért itt a bal oldal első tagja, a szumma,már ismert, ehhez kell csak egyenként hozzáadni az együtthatók abszolút ér-tékét és az eredményt összehasonlítani f -fel. Így egy feltétel teljes tesztelése,amikor nemcsak a feltétel teljesíthetőségét, hanem a változók leköthetőségétis megvizsgáljuk, összesen nem igényel többet, mint 2n−1 összeadást és 2n+1összehasonlítást.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 307: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.2. Tesztek a lineáris egészértékű feladatra 307

11.2.2. Két feltételen alapuló teszt

Vizsgáljuk most a

n∑

j=1

djxj ≤ f (11.13)

n∑

j=1

gjxj ≤ h (11.14)

∀ j : xj ∈ { 0, 1 } (11.15)

feltételek által meghatározott T halmazt. Legyen

z = min

n∑

j=1

djxj , (11.16)

x kielégíti a (11.14) és (11.15) feltételt. (11.17)

Nyilvánvalóan a T halmaz akkor és csak akkor üres, ha

z > f.

A z szám ekvivalens alakjához jutunk a célfüggvény átalakításával, neveze-tesen

z = −max

n∑

j=1

(−dj)xj ,

x kielégíti a (11.14) és (11.15) feltételt.

A maximumot felülről, így a z számot alulról becsüljük, ha megengedjük,hogy a változók tetszőleges értéket felvegyenek 0 és 1 között. Így a

w = max∑n

j=1(−dj)xj∑n

j=1 gjxj ≤ h

∀ j : 0 ≤ xj ≤ 1

(11.18)

folytonos hátizsák feladathoz jutunk. Jelölje ennek optimális megoldását y.Az 1. fejezetben mondottak szerint redukálni lehet a feladatot a következő-képpen:

yj =

{

1 ha dj < 0, gj < 00 ha dj ≥ 0, gj ≥ 0.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 308: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

308 11. A leszámlálási algoritmus

Azon változók optimális értékét, amelyekre a két feltétel egyike sem teljesül,a 6.5.1. tétel segítségével határozhatjuk meg, amely előírja a

dj

gj

hányadosok rendezését.Tesztünk tehát a

− w > f (11.19)

reláció teljesülésének ellenőrzése lesz. Ellentétben az előzőleg ismertetett tesz-tekkel, ez csak elegendő, de nem szükséges feltétele annak, hogy a T halmazüres legyen.

Legyen δ ∈ { 0, 1 }, és jelölje w(j, δ) annak a feladatnak az optimáliscélfüggvényértékét, amit (11.18)-ből az

xj = δ

feltétel hozzávételével nyerünk. Ekkor

− w(j, δ) > f (11.20)

arra teszt, hogy az xj változónak kötelező-e az 1 − δ értéket felvennie.

11.2.3. Az egyesek számának becslése

Első lépésként vizsgáljuk ismét az egyetlen lineáris egyenlőtlenséggel leírtT halmazt, ami

T = {x ∈ { 0, 1 }n |n

j=1

djxj ≤ f }.

Kényelmi okokból feltesszük, hogy az együtthatók növekvő sorrendben ren-dezettek. Legyen r az utolsó negatív együttható indexe. Tehát

d1 ≤ d2 ≤ ... ≤ dr < 0 ≤ dr+1 ≤ ... ≤ dn.

(A teszt tényleges alkalmazásánál természetesen ezt a rendezést el kell vé-gezni.) Ha nincs negatív együttható, akkor r = 0.11.2.2. lemma: Legyen 1 ≤ j ≤ n egy tetszőleges index, és definiáljuk azI(j) indexhalmazt a következőképpen:

I(j) =

v | 0 ≤ v ≤ n; v 6= j;v

i=1;i6=j

di + dj ≤ f

. (11.21)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 309: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.2. Tesztek a lineáris egészértékű feladatra 309

Legyen továbbá

uj =

−1 ha I(j) = ∅max{k ∈ I(j)} + 1 ha I(j) 6= ∅ és max{k ∈ I(j)} < jmax{k ∈ I(j)} különben.

(11.22)

és

tj =

n + 1 ha I(j) = ∅min{k ∈ I(j)} + 1 ha I(j) 6= ∅ és min{k ∈ I(j)} < jmin{k ∈ I(j)} különben.

(11.23)

Ekkor bármely x ∈ T esetén, ha xj = 1, akkor

tj ≤n

k=1

xk ≤ uj . (11.24)

Bizonyítás: Tegyük fel, hogy x ∈ T , xj = 1, és létezik egy 1 ≤ p < q ≤n indexpár úgy, hogy

p, q 6= j, xp = 0 és xq = 1.

Az együtthatók rendezettsége miatt

n∑

k=1

dkxk + dp − dq ≤n

k=1

dkxk ≤ f.

Tehát az az y vektor, amit x-ből úgy kapunk, hogy

yk =

xk k 6= p, q1 k = p0 k = q,

T eleme lesz. Ezért minden x ∈ T vektorból tudunk készíteni egy olyany vektort, hogy a j. komponenstől eltekintve egy kezdő 1 és egy befejező 0sorozatból áll, és x-ben és y-ban az 1 értékű komponensek száma megegyezik.I(j) pontosan az ilyen kezdeti 1 sorozatok felső határának lehetséges értékeittartalmazza. Q.E.D.

Tegyük most már fel, hogy a (11.4) feladat valamennyi i feltétele esetébenmeghatároztuk a (11.22)-ben és (11.23)-ban definiált számokat. Jelölje ezeket

uij , tij j = 1, ..., n, i = 1, ...,m, (11.25)

ahol a változók egy egységes, az egyes feltételektől már nem függő sorrendjéthasználtuk. Ezekkel azonnal adódik a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 310: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

310 11. A leszámlálási algoritmus

11.2.3. lemma: Legyen x a (11.4) halmaz egy eleme, melyben xj = 1.Legyen

tj = max { tij | i = 1, ..., m } (11.26)

és

uj = min {uij | i = 1, ..., m }. (11.27)

Ekkor

tj ≤n

k=1

xk ≤ uj . Q.E.D.

Innen kapjuk, hogy ha

tj > uj (11.28)

valamely j indexre teljesül, akkor xj = 0 minden megengedett megoldásban.11.2.4. lemma: Legyen x a (11.4) halmaz egy tetszőleges eleme, továbbá

Jk = { j | uj ≥ k } k = 0, 1, ..., n.

Ekkorn

i=1

xi ≤ max { k : |Jk| ≥ k }. (11.29)

Bizonyítás: A Jk azon változók indexeit tartalmazza, amelyek értéke 1 le-het egy olyan megengedett megoldásban, amelyben az 1 értékű komponen-sek száma legalább k. Ezért csak akkor létezhet k számú 1 értékű kompe-nenst tartalmazó megengedett megoldás, ha Jk elemeinek száma legalább k.

Q.E.D.

A (11.29) egyenlőtlenség jobb oldala erősebb korlát a megengedett megol-dások egyeseinek számára mint a természetszerűleg adódó

max {uj | 1 ≤ j ≤ n }. (11.30)

Ezt illusztrálja a következő, két egyenlőtlenséget tartalmazó példa:

x1 + x2 + 2x3 ≤ 2x1 + 2x2 + x3 ≤ 2.

Ekkor

(t11, t12, t13) = (1, 1, 1), (t21, t22, t23) = (1, 1, 1),

(u11, u12, u13) = (2, 2, 1), (u21, u22, u23) = (2, 1, 2).

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 311: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.3. Az algoritmus részletei. . . 311

Innen

(t1, t2, t3) = (1, 1, 1),

(u1, u2, u3) = (2, 1, 1).

Ahonnan

J0 = J1 = { 1, 2, 3 }, J2 = { 1 }, J3 = ∅.

Így (11.29) alapján az 1 felső korlát adódik a (11.30)-ból származó 2 helyett.A 11.2.4. lemmához analóg módon kapjuk, hogy igaz a

11.2.5. lemma: Legyen x a (11.4) halmaz egy tetszőleges, a nullvektortólkülönböző eleme, továbbá

Kk = { j | tj ≤ k } k = 0, 1, ..., n.

Ekkor

n∑

i=1

xi ≥ min { k : |Kk| ≥ k }. (11.31)

Bizonyítás: tj arra ad alsó korlátot, hogy hány egyesnek kell lenni egy olyanx ∈ S vektorban, amiben xj = 1. Ha van p számú egyest tartalmazóeleme S-nek, akkor ez a korlát legalább p számú változó esetében a p-t nemhaladhatja meg. Q.E.D.

A nullák száma úgy becsülhető, hogy S-t kicseréljük arra az S halmazra,ami S elemeinek komplementereiből áll. Legyen e a csupa egyesből állóvektor. Ekkor

S = {x | A(e − x) ≤ b } ∩ { 0, 1 }n.

11.3. Az algoritmus részletei a lineárisegészértékű programozási feladat esetén

A megoldandó feladat alakja

max cT x

Ax ≤ b

x ∈ {0, 1}n,(11.32)

ahol a szokásos módon A (m × n)-es mátrix, c n-dimenziós, b m-dimenziósvektor. Feltesszük, hogy valamennyi együttható egész és c ≥ 0.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 312: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

312 11. A leszámlálási algoritmus

Mielőtt a 11.1. algoritmus lépéseit részletesen kidolgoznánk, bevezetünkkét feltételt, amelyek hasznos segédeszköznek fognak bizonyulni az eljárássorán.

A leszámlálás előrehaladása során ismertté válnak megengedett megoldá-sok. Nyilvánvalóan a még le nem számlált megoldások közül csak azokatérdemes megkeresni, amelyekhez tartozó célfüggvényérték jobb a már ismertlegjobb megengedett megoldásénál. Ha az utóbbit z0 jelöli, akkor az együtt-hatók egészértékűsége miatt

cT x ≥ z0 + 1 (11.33)

feltételhez jutunk, amit

− cT x ≤ −z0 − 1 (11.34)

alakban adunk a feladathoz a feltételek egységes alakja érdekében. A (11.34)egyenlőtlenséget célfüggvényfeltételnek nevezzük. Ezen szakaszban megenge-dett megoldáson olyan pontot értünk, ami (11.32) feltételeit is és a (11.34)egyenlőtlenséget is kielégíti. A célfüggvényfeltétel jobb oldala minden meg-engedett megoldás megtalálása után szigorúbbá válik. Úgy interpretálható(11.34), hogy egy bonyolult információt fejez ki a megoldandó feladatról,amihez csak az eljárás során jutunk hozzá. Látható, hogy amikor legalábbkét megengedett megoldást előállítottunk az eljárás folyamán, (11.34) nemalgebrai következménye a (11.32) feladat feltételeinek.

Ezzel ellentétben a másik bevezetendő feltétel pontosan ilyen algebraikövetkezmény. Legyen λ ≥ 0 egy tetszőleges m-dimenziós vektor. Ekkor

λT Ax ≤ λT b (11.35)

egyenlőtlenséget a (11.32) feladat s-feltételének nevezzük.1 Szerepe az lesz,hogy többnyire nem egyenként fogjuk tesztelni a (11.32) feltételeit a (11.9)és (11.12) teszttel, hanem csak (11.35)-öt. Így valójában a (11.32) feladathelyett annak

max cT x

λT Ax ≤ λT b

x ∈ {0, 1}n,(11.36)

relaxációját vizsgáljuk. Ez adja λ megválasztásához azt az ötletet, hogy(11.32) és (11.36) optimális célfüggvényértékei a lehető legközelebb legyenek,

1 Az elnevezés az angol „surrogate constraint” kifejezésből származik, és [56] vezette be.Az angol „surrogate constraint” nehezen fordítható le magyarra. Helyettesítő feltételt vagypótfeltételt kellene mondani helyette, ha szokvány magyar kifejezéssel akárnánk élni, deezek a kifejezések az adott szövegösszefüggésben szokatlanul hatnának.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 313: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.3. Az algoritmus részletei. . . 313

azaz a

min max cT x

λ x ∈ {0, 1}n λT Ax ≤ λT b(11.37)

ún. s-duál feladat optimális megoldásával írjuk fel az s-feltételt. Ennek egzaktmegoldásával itt nem foglalkozunk, csak egy heurisztikus eljárást ismertetünkröviden.

Ha y optimális megoldása a (11.36) feladatnak, és Ay ≤ b, akkor y opti-mális megoldása a (11.32) feladatnak is. Különben legyen y a (11.36) feladategy optimális megoldása. Ekkor

q = λT b − λT Ay ≥ 0.

Legyen v ≥ 0 egy olyan m-dimenziós vektor, amelyre

r = vT b − vT Ay < 0,

p pedig egy tetszőleges valós szám, amely nagyobb, mint

−q

r.

Tekintsük a

λ + pv (11.38)

súlyokkal felírt s-feltételt. Helyettesítsük ide be az y pontot. Azt kapjuk,hogy

(λ + pv)T Ay − (λ + pv)T b = −q − pr > 0,

tehát y megsérti a feltételt. Ha (11.36) optimális megoldása nem megengedett(11.32)-ben, akkor mindig tudunk találni egy megfelelő v vektort a következőmódon:

vi =

{

1 ha∑n

j=1 aijyj > bi

0 különben.

Bebizonyítottuk tehát, hogy igaz a11.3.1. lemma: Ha a (11.36) feladat y optimális megoldása nem meg-engedett (11.32)-ban, akkor mindig létezik egy (11.38) alakú szorzóvektor,amellyel felírt (11.36) feladatnak y nem megengedett megoldása. Q.E.D.

Az s-feltétel előállításának heurisztikus módszere tehát az lesz, hogy né-hány iteráción keresztül elvégezzük a következő két lépést:

megoldjuk a (11.36) feladatot;λ := λ + pv.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 314: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

314 11. A leszámlálási algoritmus

Ehhez természetesen rendelkeznünk kell hátizsák feladatot megoldó rutinnal.

Az s-feltételt a tesztelésre fogjuk használni. Ezért az is lehet a célunk,hogy a (11.9) és (11.12) tesztek szempontjából legyen minél erősebb. A cél-függvényfeltétel szorzója mindig 1 lesz. Így az s-feltétel valamely alkalmasλ ≥ 0 mellett

(λT A − cT )x ≤ λT b − z0 − 1. (11.39)

A (11.9) teszt akkor mutatja ki, hogy ez a feltétel nem teljesíthető, ha

− λT b + min {(λT A − cT )x | x ∈ { 0, 1 }n } > −z0 − 1. (11.40)

Innen tehát azt kapjuk, hogy az a legjobb (11.39) alakú feltétel, amelynél(11.40) bal oldala maximális, vagyis az, amit a

max{

−λT b + min{(λT A − cT )x | x ∈ { 0, 1 }n } | λ ≥ 0}

(11.41)

probléma optimális megoldásával képeztünk. Vegyük észre, hogy a minimumképzése egy kocka csúcsain történik. A lineáris programozás szerint az egészkockán vett minimum eléretik a kocka egyik csúcsában. Tehát, ha e jelöli aztaz n-dimenziós vektort, amelynek valamennyi komponense egy, akkor

min{(λT A − cT )x | x ∈ { 0, 1 }n } = min{(λT A − cT )x | 0 ≤ x ≤ e }.

A jobb oldal ekvivalens alakja és annak lineáris programozási duálja a követ-kező:

−max{(c − AT λ)T x | 0 ≤ x ≤ e} = −min{eT v | v ≥ c − AT λ, v ≥ 0} =

max{−eT v | v + AT λ ≥ c, v ≥ 0}.

Innen kapjuk, hogy igaz a

11.3.2. lemma: A (11.41) feladat ekvivalens a

max −bT λ − eT v

AT λ + v ≥ c

λ ≥ 0, v ≥ 0

(11.42)

lineáris programozási feladattal. Q.E.D.

Most rátérünk a tesztelés mikéntjére. F jelöli a szabad változók indexeinekhalmazát, a rögzített változókét pedig G. A korábbiaktól eltérően j ∈ Gesetén xj jelöli a változó pillanatnyi értékét. Ezen jelölések mellett (11.9)ekvivalens

j∈F

|aij |− > bi −∑

j∈G

aij xj (11.43)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 315: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.3. Az algoritmus részletei. . . 315

relációval. Hasonlóképpen (11.12) megfelelő alakja∑

j∈F

|aij |− + |aip| > bi −∑

j∈G

aij xj , (11.44)

ahol természetesen p ∈ F . A (11.18) feladat ekkor

max∑

j∈F (−dj)xj +∑

j∈G dj xj∑

j∈F gjxj ≤ h − ∑

j∈G gj xj

∀ j ∈ F : 0 ≤ xj ≤ 1.

(11.45)

Ennek analógiájára írható fel (11.20) ekvivalens alakja. Az uj , tj számok defi-níciója alapján a feltételrendszer az adott rögzítések mellett nem kielégíthető,ha a

j∈G

xj > min {uj | j ∈ G, xj = 1 } (11.46)

és a∑

j∈G

xj + |F| < max { tj | j ∈ G : xj = 1 } (11.47)

feltételek valamelyike teljesül. (11.46) és (11.47) egyszerűen általánosíthatóa szabad változók tetszőleges részhalmazára.

A (11.43) és (11.44) teszteket csak a célfüggvényfeltételre és az s-feltételre(vagy ezek mindegyikére, ha többet is előállítottunk) alkalmazzuk. Ettőlakkor érdemes eltérni, ha nagyon lecsökken a rögzített változók száma egyágcsere után. Ekkor ugyanis egészen más ágba kerülünk, így egyes feltételekis másképpen viselkedhetnek. Különben is, a feltételek egyedi tesztelése, minttöbbletszámítás, busásan megtérül akkor, ha valamelyik alapján bármilyenkövetkeztetést is le tudunk vonni.

A (11.45) teszt nem alkalmazható bármilyen feltételpárra, bár ennek ter-mészetszerűleg elvi akadálya nincs, de túl sok felesleges számítást igényelne.Ugyanis a teszthez szükségünk van rendezésre. A rendezési algoritmusokelméleti gyorsaságuk ellenére túl lassúak ahhoz, hogy a rendezést a tesztminden alkalmazásakor elvégezzük. Ezért ki kell választani valamely alkal-mas feltételpárt, például a célfüggvényfeltételt és az s-feltételt vagy két, kü-lönböző szorzókkal előállított s-feltételt, és a rendezést, ami nem változik aleszámlálás során – csak egyes elemek kimaradhatnak a rögzítések miatt –,egyetlenegyszer, az inicializáláskor kell elvégezni.

Hasonló a helyzet a (11.46) és (11.47) teszt alkalmazásával. Az uj és tjszámok itt is az inicializáláskor egyszer és mindenkorra megállapított mennyi-ségek. Így mind (11.46), mind (11.47) rendkívül egyszerűen ellenőrizhetőbármely ágban.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 316: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

316 11. A leszámlálási algoritmus

A 11.1. algoritmusnak még egy fontos, kidolgozatlan részlete van, az elá-gazást szolgáló rögzítések meghatározása. Jelölje i egy olyan feltétel indexét– lehet az a célfügvény vagy az s-feltétel is –, amelynek az aktuális bal oldalanegatív, azaz

bi −∑

j∈G

aij xj < 0.

Ezért ha valamennyi szabad változót a 0 értéken rögzítenénk, akkor nemjutnánk megengedett megoldáshoz. Legyen

J = { j | aij < 0 }. (11.48)

Nyilvánvaló, hogy legalább egy J -beli változót 1 szinten kell rögzíteni. Ezekközül csak azok jöhetnek számításba, amelyekre

uj ≥∑

j∈G

xj + 1

teljesül. Ha tehát a

{ j | aij < 0, uj >∑

j∈G

xj + 1 } (11.49)

halmaz üres, akkor az adott ágban nincs megengedett megoldás.

A tapasztalat szerint érdemes egyszerre több változót is rögzíteni. Amikora tesztek már nem tudnak következményeket kimutatni, egy változó rögzíté-sével nem feltétlenül változik meg annyira a helyzet, hogy ismét eredménye-sek legyenek. Ha viszont túl sok változót rögzítünk egyszerre, akkor egyeskövetkezményeket már korábban is kimutathattunk volna, és így ágakat ta-karíthattunk volna meg. Három változó egyszerre történő rögzítése közelítiaz ideális stratégiát.

A módszer jellegéből adódik, hogy könnyen beépíthetők más eljárások, kü-lönösen a heurisztikus algoritmusok. Ha ezek egyikével már az inicializálásfázisában találunk jó megengedett megoldást, akkor azonnal fel tudunk írnierős célfüggvényfeltételt, és ez felgyorsíthatja a leszámlálást. Ez történik azalábbi példában is:

max(15x1 + 12x2 + 10x3 + 9x4 + 7x5 + 4x6 + 3x7)4x1 + 4x2 + 3x3 + 2x4 + 2x5 + 2x6 + x7 ≤ 108x1 + 3x2 + 6x3 + 5x4 − 3x5 − 4x6 − 5x7 ≤ 2

x1, ..., x7 ∈ { 0, 1 }.(11.50)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 317: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.3. Az algoritmus részletei. . . 317

Könnyen belátható, hogy a megfelelő tij , uij értékek a következők:

t1 = (1, 1, 1, 1, 1, 1, 1),t2 = (3, 2, 2, 2, 1, 1, 1),t = (3, 2, 2, 2, 1, 1, 1),u1 = (4, 4, 5, 5, 5, 5, 5),u2 = (5, 6, 6, 6, 6, 6, 6),u = (4, 4, 5, 5, 5, 5, 5).

Alkalmazzuk a feladatra a 9. fejezet szomszédságfogalmon alapuló módszerét.Induljunk ki a 0 vektorból, és mindig a legnagyobb javulás irányába lépjünk.Mivel 0 maga is megengedett megoldás, így végig megengedett megoldáso-kon haladunk keresztül. A rövidség kedvéért a vektorokat a megfelelő egy-ségvektorok összegeként jelöljük, az aktuális jobb oldalt d-vel, a célfüggvénypillanatnyi értékét pedig z-vel.

x0 = 0, dT0 = (10, 2), z0 = 0;

x1 = e5, dT1 = (8, 5), z1 = 7;

x2 = e2 + e5, dT2 = (4, 2), z2 = 19;

x3 = e2 + e5 + e6, dT3 = (2, 6), z3 = 23;

x4 = e2 + e4 + e5 + e6, dT4 = (0, 1), z4 = 32.

Mivel az első feltétel jobb oldala kimerült, nem lehet további komponenseket1-re változtatni. Így a célfüggvényfeltétel

− 15x1 − 12x2 − 10x3 − 9x4 − 7x5 − 4x6 − 3x7 ≤ −33. (11.51)

Innen (1, 2, 1) súlyokkal az

5x1 − 2x2 + 5x3 + 3x4 − 11x5 − 10x6 − 12x7 ≤ −19

s-feltételt nyerjük. A (11.19) és (11.20) tesztek alkalmazásához szükséges(11.18) alakú feladat, ha a két feltételnek (11.50) két eredeti feltételét vesszük,a

max(−8x1 − 3x2 − 6x3 − 5x4 + 3x5 + 4x6 + 5x7)4x1 + 4x2 + 3x3 + 2x4 + 2x5 + 2x6 + x7 ≤ 10

0 ≤ xj ≤ 1, j = 1, ..., 7(11.52)

folytonos hátizsák feladatot kapjuk. A redukciós szabály szerint az optimálismegoldásban x1 = x2 = x3 = x4 = 0, hacsak a rögzítések másképp nemrendelkeznek. A másik három tárgy „hátizsákba való berakásának sorrendje”7, 6, 5.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 318: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

318 11. A leszámlálási algoritmus

x4 = 0 ex3 = 0

x2 = 0

x7 = 1

x1 = 1

eeee

e©©©©©© HHHHHH

x1 = 0ee

HHHHHHx2 = 1 x2 = 0

©©©©©©eeeeee

¡¡¡

x3 = 1

x7 = 1

x4 = 0

x5 = 1

x6 = 1

eHHHHHH

x3 = 0

x4 = 1

x5 = 1

x6 = 1

x7 = 1

eeeee

eeeee

x3 = 1

x4 = 1

x5 = 1

x6 = 1

x7 = 1

11.3. ábra: Az (11.50) feladathoz tartozó leszámlálási fa.

Kezdetben a feltételek tesztelése nem vezet eredményre, ezért el kell ágaznivalamelyik változó szerint. Legyen ez x1, és vizsgáljuk először az x1 = 1 ágat.Ekkor az s-feltétel aktuális jobb oldala −24, benne a negatív együtthatókösszege −35. Ezért a feltétel kielégíthető. A (11.12) teszt alkalmazásához aztkell megnézni, hogy a

−35 +

253

111012

?> −24

relációk közül melyik teljesül. Itt azt nyerjük, hogy x7 kötelezően 1. Alkal-mazzuk a (11.20) tesztet annak vizsgálatára, hogy az x2, x3 és x4 változókkötelezően a 0 értéket veszik-e fel. Vizsgálva az ellenkező értékadást, az elsőesetben, vagyis x2 = 1 mellett, a (11.52) feladat optimális megoldásában x6 =1/2, x3 = x4 = x5 = 0 a 6.5.1. tétel szerint. Az optimális célfüggvényértéktehát −4, így (11.20) teljesül. Ha x3 = 1, akkor a korábbi rögzítések utánaz optimális megoldásban x6 = 1, és a hátizsák pontosan fel van töltve, a

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 319: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

11.3. Az algoritmus részletei. . . 319

célfüggvényérték pedig −5. Így (11.20) ismét igaz, mert 5 > 2. Végül x4 = 1esetén még 3 egységnyi szabad hely maradt a hátizsákban, amit a hatodiktárggyal és az ötödik tárgy felével kell kitöltenünk, így a célfüggvény értéke−8−5+1.5+4+5 = −2.5, ezért (11.20) ismét teljesül. Ebben a pillanatbantehát a két szabad változó x5 és x6. A (11.51) célfüggvényfeltétel

−7x5 − 4x6 ≤ −15

alakú, ami nem teljesíthető, mint (11.9) alapján is látható.

Az ágcsere azonnal az x1 = 0 egyenlettel leírt megoldások halmazába viszbennünket. Itt a tesztek először nem mutatnak ki semmit, ezért először azx2, majd az x3 változót rögzítjük 1 értéken. Az s-feltétel alakja

3x4 − 11x5 − 10x6 − 12x7 ≤ −22.

Ennek tesztelésekor a

−33 +

3111012

?> −22

relációk az x7 = 1 lekötést adják. A (11.52) feladatból x4 = 1 mellett kapjuk,hogy az optimális megoldásban x5 = x6 = 0, a célfüggvényérték -4, tehát(11.20) teljesül. Ekkor az ágat az x1 = 0 lekötés, az x2 = 1 és x3 = 1rögzítés, valamint az x7 = 1 és x4 = 0 lekötés írja le, a megadott sorrendben.A célfüggvényfeltétel most

−7x5 − 4x6 ≤ −8.

Ekkor

−11 +74

?> −8

reláció mindkétszer teljesül, tehát x5 és x6 1 értéken lekötendő. Elfogytaka szabad változók. A kapott (0, 1, 1, 0, 1, 1, 1) pont nem megengedett, mertmegsérti (11.50) első feltételét. A feltételrendszernek az utolsó két lekötéselőtti ellentmondására rámutat a következő tény is. Mivel x2 értéke pillanat-nyilag megoldásban 1, és u2 = 4, ezért x5 és x6 közül legfeljebb az egyik lehet1, hiszen már x3 és x7 is az.

Az ágcsere az x1 = 0 lekötéssel, az x2 = 1 rögzítéssel (ami nem lekötés)és az x3 = 0 lekötéssel meghatározott ágba lép át. A célfüggvényfeltétel

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 320: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

320 11. A leszámlálási algoritmus

tesztelésekor

−23 +

9743

?> −21

relációk mindegyike teljesül, tehát x4, x5, x6, x7 kötelezően 1. Szabad változónincs. Az u2 értékére előbb mondottak ismét alkalmazhatók, tehát nem jut-hattunk megengedett megoldáshoz. Valóban, a pont ugyancsak (11.50) elsőegyenlőtlenségét sérti meg.

Az ágcsere után x1 és x2 kötelezően 0. A célfüggvényfeltétel tesztelése a

−33 +

109743

?> −33

relációk vizsgálatára vezet, amelyek teljesülnek, és így a (0, 0, 1, 1, 1, 1, 1) opti-mális megoldáshoz jutottunk el, melynek célfüggvényértéke 33. Mivel mindenágban minden változó lekötött, ezért az ágcsere kimutatja, hogy az eljárásvéget ért.

Mivel 7 változó van a feladatban, az összes esetek száma 128. A leszámlá-lási fának azonban csak 4 ága volt, mint azt a 10.3. ábra mutatja. Eztsok mellékszámítás (a tesztelések) árán értük el. Azonban ha minden esetetleszámláltunk volna, akkor ezek előállításával és a feltételek ellenőrzésévellettek volna mellékszámítások.

11.4. Megjegyzések és irodalom

A leszámlálási algoritmus a hatvanas években fejlődött ki, elsősorban Balas ésGlover nevéhez köthető [1, 2, 40]. Az utóbbi dolgozat vezeti be az s-feltételt.Az „s” az angol surrogate (magyarul helyettes, pótlék) szó rövidítése a ma-gyar irodalomban. Mint ahogy a 1. számú lábjegyzetben említettük, [56]vezette a magyar irodalomba ezt a kifejezést. Az s-feltételt előállító szorzókválasztásának a 11.3.1. lemmában leírt módszere Glover említett cikkébentalálható. Ugyancsak ő írta fel a (11.37) s-duál feladatot. A (11.41) elv a szor-zók választására a [38] dolgozatban található, természetesen a 11.3.2. lemmaeredményeivel együtt. Ezeknek és a szorzók megválasztása más módszereinekközös általánosítását adta [13].

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 321: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12. fejezet

A csoportelméleti módszer

Az ebben a fejezetben tárgyalandó módszer alapja az egészértékű progra-mozási feladatnak a 3.2. szakaszban vizsgált gráfelméleti modellje. Ott egynullelemet tartalmazó additív félcsoport elemei voltak az optimalizálási fel-adat együtthatói. Ez az ún. félcsoportfeladat ekvivalens volt egy megfelelőgráfban egy bizonyos legrövidebb út megkeresésével. A gráf csúcsai a fél-csoport elemei voltak, és a keresett út a nullelemtől az optimalitási feladatfeltételének jobb oldalán álló elemhez vezetett. Akkor nem létezett legrövi-debb út, ha a gráf tartalmazott negatív kört.

A következő kérdésekre kell válaszolnunk. Hogyan lehet visszavezetni azegészértékű programozási feladatot félcsoportfeladattá; el lehet-e kerülni anegatív körök létezését; hogyan realizálható az algoritmus?

12.1. A csoportfeladat

Az előző fejezettel ellentétben most nem bináris, hanem általános egész vál-tozókat tartalmazó feladattal foglalkozunk, vagyis a

min cT x (12.1)

Ax = b (12.2)

x ∈ ZZn+ (12.3)

problémával, ahol a szokásos módon feltesszük, hogy az együtthatók egészek,A (m × n)-es mátrix, b, c, x pedig megfelelő méretű vektor. Mindvégigfeltesszük, hogy A rangja megegyezik sorainak számával, és n ≥ m.

Tekintsük a feladat lineáris programozási relaxációját. Legyen az optimálisbázis B. Particionáljuk eszerint az A mátrixot, a célfüggvény és a változókvektorát:

A = (B,N)

321

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 322: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

322 12. A csoportelméleti módszer

c =

(

cB

cN

)

, x =

(

xB

xN

)

.

Ennek megfelelően a (12.2) egyenlet új alakja

BxB + NxN = b.

Mivel feltettük, hogy az A mátrix rangja megegyezik sorainak számával, ezérta B mátrix négyzetes, nem szinguláris, vagyis létezik az inverze. Ezzel balrólmegszorozva egyenletünket kapjuk, hogy

xB = B−1b − B−1NxN ,

amivel a változók egészértékűségétől függetlenül teljesülnie kell. Behelyette-sítve xB értékét a célfüggvénybe, a feladat következő ekvivalens alakjáhozjutunk:

min(cTN − cT

BB−1N)xN + cT B−1b (12.4)

xB = B−1b − B−1NxN (12.5)

xB ∈ IRm+ (12.6)

xB ∈ ZZm (12.7)

xN ∈ ZZn−m+ . (12.8)

Mielőtt további részletekbe belemennénk, megjegyezzük, hogy a lineáris prog-ramozás elméletéből következik, hogy a célfüggvény vektora nemnegatív, azaz

cTN − cT

BB−1N ≥ 0T . (12.9)

Ez ugyanis az optimalitási kritérium a szimplex módszernél, B pedig opti-mális bázis.

Eddig többnyire úgy készítettünk relaxációt egy feladatból, hogy a válto-zók egészértékűségének követelményét hagytuk el. Az xB változókra vonat-kozó (12.6) és (12.7) megszorítások ekvivalensek azzal, mintha azokat (12.5)jobb oldalára róttuk volna ki. Így (12.5)–(12.7) két feltétellé vonódik össze,és a feladatból kiesnek az xB változók. A relaxációt pedig úgy definiáljuk,hogy (12.6) feltételt hagyjuk el. Így a következő feladathoz jutunk, ahol azegyszerűség kedvéért a változók jelölésében az „N” indexet elhagytuk,

min (cTN − cT

BB−1N)x + cTBB−1b

B−1Nx ≡ B−1b (mod 1)x ∈ ZZn−m

+ .(12.10)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 323: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.2. A mátrixok Smith-féle normálalakja 323

Itt a kongruencia komponensenként értendő.

Az eredeti együtthatók egészértékűségéből következik, hogy a (12.10) fel-adat feltételében a változók együtthatói és a jobb oldal egy véges csoportelemei, amely csoportot a B−1 mátrix oszlopai generálnak a komponensen-kénti mod 1 összeadással mint művelettel. Ha

d = |det(B)|, (12.11)

akkor ennek a csoportnak a B−1 mátrix elemeit explicit módon megadó,ismert algebrai tétel következtében legfeljebb

dm

eleme lehet.

Hogy a csoport elemeit hogyan célszerű előállítani és a (12.1)–(12.3) feladat(12.10) relaxációját megoldani, azt a következő három szakaszban elemezzük.

12.2. A mátrixok Smith-féle normálalakja

Az ebben a szakaszban tárgyaltak az egészértékű programozástól független,algebrai és számelméleti ismeretek. Mégis az előző szakaszban bevezetettjelöléseket fogjuk alkalmazni. A szakasz fő mondanivalója az alábbi tétel,amelynek bizonyítását csak a szakasz végén adjuk meg.

12.2.1. tétel: Legyen B egy egészekből alkotott (m×m)-es, nem szingulárismátrix. Ekkor létezik olyan ugyancsak egészekből alkotott (m × m)-es P, Q

mátrixpár, hogy

(i) |det(P)| = |det(Q)| = 1,

(ii) léteznek olyan ε1, ..., εm egészek, hogy

PBQ =

ε1 0 ... 00 ε2 ... 0

...0 0 ... εm

, (12.12)

(iii) εi|εi+1, i = 1, ...,m − 1. Q.E.D.

A tétel azt mondja ki, hogy a (12.12) transzformáció olyan diagonál alakrahozza az A mátrixot, ahol a fődiagonálisban álló valamennyi elem többszöröseaz előzőnek. Ennek van egy érdekes következménye, ami hasznos a csoport-feladatnál.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 324: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

324 12. A csoportelméleti módszer

12.2.2. következmény: Legyen ismét d = |det(B)|. Legyen

pk

a d szám legmagasabb kitevős prímfaktora. Ekkor a (12.12) transzformáltalakban legfeljebb k számú εi lehet különböző a ±1 számok mindegyikétől.

Q.E.D.

A 12.2.1. tétel bizonyításának fő eszköze egy algoritmus, amelyre a cso-portfeladat felírásánál is szükségünk lesz, és amely a P és Q mátrixot, illetvemagát a (12.12) transzformált alakot előállítja. Az algoritmus a következőnégy elemi mátrixtranszformációt alkalmazza szisztematikusan: két sor (osz-lop) cseréjét, egy sor (oszlop) egész számú többszörösének valamely másiksorhoz (oszlophoz) való hozzáadását. Éppen ezért fontos tudni, hogy ezek azelemi transzformációk is megfelelnek egy-egy alkalmas mátrixszal való szor-zásnak.

12.2.3. lemma: Legyen i 6= j két rögzített index. A B mátrix i. ésj. sorának (oszlopának) felcserélése azonos a B mátrixnak az alábbi S(i, j)mátrixszal balról (jobbról) való megszorzásával. Legyen suv (1 ≤ u, v ≤ m)az S(i, j) mátrix egy tetszőleges eleme. Ekkor

suv =

1 ha u = v és u 6= i, j1 ha u = i és v = j vagy u = j és v = i0 különben.

Bizonyítás: Az állítás azonnal adódik a kijelölt mátrixszorzás elvégzéséből.Q.E.D.

12.2.4. lemma: Legyen i 6= j két rögzített index. A B mátrix i. sora(j. oszlopa) γ-szorosának hozzáadása a j. sorhoz (i. oszlophoz) azonos B

mátrixnak az alábbi T(i, j, γ) mátrixszal balról (jobbról) való megszorzásával.Legyen tuv (1 ≤ u, v ≤ m) a T(i, j, γ) mátrix egy tetszőleges eleme. Ekkor

tuv =

1 ha u = vγ ha u = j és v = i0 különben.

Bizonyítás: Az állítás azonnal adódik a kijelölt mátrixszorzás elvégzéséből.Q.E.D.

Most rátérünk az ígért algoritmus megfogalmazására. A lényege a követ-kező. A legnagyobb közös osztó meghatározására szolgáló euklideszi algorit-mus olyan általánosítását adjuk meg, ahol a fődiagonálisba mindig a bal alsó

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 325: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.2. A mátrixok Smith-féle normálalakja 325

sarokban lévő, megfelelő méretű négyzetes részmátrix elemeinek legnagyobbközös osztója kerül.

Az algoritmus leírása során a következő jelöléseket használjuk:

F a transzformált mátrix pillanatnyi értéke,fj az F mátrix j. oszlopa (j = 1, ..., m),gi az F mátrix i. sora (i = 1, ..., m),fij az F mátrix i. sorának és j. oszlopának

kereszteződésében álló elem (i, j = 1, ..., m).

12.1. algoritmus

1. Begin

2. F := B;

3. for i := 1 to m do

4. repeat

5. begin

6. sor- és oszlopcserékkel érjük el, hogy|fii| = min{|fpq| : i ≤ p, q ≤ m; |fpq| 6= 0};

7. for j := i + 1 to m do

8. begin

9. fj := fj − ⌊fij/fii⌋ fi;

10. gj := gj − ⌊fji/fii⌋gi;

11. end;

12. if (fij = fji = 0, j = i + 1, ...,m) and (∃(p, q) : (i < p, q ≤ m, fii 6|fpq))

13. then fi := fi + fq;

14. end;

15. until (∀(p, q) : (i ≤ p, q ≤ m, fii | fpq));

16. end;

Az algoritmus három egymásba skatulyázott ciklusból áll. Az első a 3. és15. sorok közötti for ciklus. Ennek ciklusmagja formálisan egyetlen utasí-tásból áll, mely nem más, mint a repeat ... until közötti ciklus. Az utóbbiúgy értemezendő, hogy futása minaddig tart, amíg az until alapszó mögöttmegadott feltétel nem teljesül. Mihelyst a feltétel kielégíttetik, a ciklus futásamegszakad. Ebből látható, hogy a ciklus legalább egyszer végrehajtódik. Aharmadik ciklus a 7–11. sorokban található for ciklus, amely néhány aritme-tikai művelet elvégzését írja elő.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 326: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

326 12. A csoportelméleti módszer

Természetesen felvetődik a kérdés, hogy véges-e az algoritmus, hiszen a re-peat ... until ciklus nem feltétlenül áll le, és ha az eljárás véges, akkor mi azeredménye. Mielőtt azonban ezeknek a megválaszolására rátérnénk, tisztáznikell, hogy az algoritmus 6. sorában előírt műveletek mindig elvégezhetők-e,hiszen elképzelhető volna, hogy a transzformációk során egy olyan helyzet-hez jutunk, amikor az alsó sarokban lévő négyzetes mátrix elemei mind 0értékűek.

12.2.5. lemma: Tegyük fel, hogy egy adott i mellett a repeat ... untilciklus éppen lefutott. Ekkor

fij = fji = 0 j = i + 1, ...,m. (12.13)

Bizonyítás: A 9. és 10. sorban leírt transzformációk elvégzése után

0 ≤ |fij |, |fji| < |fii|. (12.14)

Mivel |fii| osztója is ezen számoknak ezért (12.13) fennáll. Q.E.D.

12.2.6. következmény: Tegyük fel, hogy egy adott i mellett a repeat ...until ciklus éppen lefutott. Ekkor

fpq = 0 (p = 1, ..., i, q = p + 1, ...,m, és q = 1, ..., i, p = q + 1, ...,m). (12.15)

Bizonyítás: Végezzünk i szerinti indukciót. Az i = 1 esetben éppen az előzőlemma adja az eredményt. Tegyük fel, hogy az állítás i − 1 esetén igaz. Aztkell észrevenni, hogy az első i− 1 sorban, illetve oszlopban a kívánt helyzeteta transzformációk nem ronthatják el. Ugyanis az algoritmus 6. sorában előírtsor-, illetve oszlopcserék, ahol a felcserélt sorok, illetve oszlopok indexe lega-lább i, az első i− 1 oszlopban, illetve sorban, 0-k egymással való felcseréléséteredményezik. Hasonlóképpen a 9. és 10. sorban található oszlop, illetvesortranszformációk az első i − 1 sorban, illetve oszlopban lévő elemeket nemváltoztatják, mert a transzformáció 0-k összegzését írja elő. Végül (12.15)p, q = i esetén szintén az előző lemma miatt lesz igaz. Q.E.D.

12.2.7. lemma: Ha B nem szinguláris mátrix, akkor az eljárás során azalgoritmus 6. sorában kijelölt műveletek mindig elvégezhetők.

Bizonyítás: A 12.2.3. és 12.2.4. lemma szerint eljárás alatt mindig fennáll a

|det(B)| = |det(F)| (12.16)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 327: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.2. A mátrixok Smith-féle normálalakja 327

egyenlőség, hiszen az F mátrixon csak a két lemmában említett transzfor-mációkat végezzük. Tegyük fel, hogy a repeat ... until ciklus (i − 1)-szerlefutott. Jelölje di az F mátrix jobb alsó sarkában ekkor fekvő (m− i + 1)×(m− i+1)-es részmátrix determinánsát. Az előző következmény szerint most

det(F) = f11f22...fi−1,i−1di.

Ha az algoritmus 6. sorában kijelölt műveletek nem volnának elvégezhetők,akkor di = 0 volna, ami azonban (12.16) szerint lehetetlen. Q.E.D.

12.2.8. tétel: Tegyük fel, hogy a B mátrix nem szinguláris. Ekkor a 12.1.algoritmus véges, és lefutása után az F mátrix (12.12) jobb oldalával egyezikmeg úgy, hogy εi|εi+1, i = 1, ...,m − 1.

Bizonyítás: Mivel az algoritmus három ciklusa közül kettő meghatározottszámszor fut le, az algoritmus csak akkor nem véges, ha a repeat ... un-til ciklus valamely i esetén nem áll le. Tegyük fel, hogy ez a helyzet. Ha|fii| csökken, akkor legalább 1-gyel csökken. Tehát nem csökkenhet végtelensokszor, értéke egy adott pont után állandó marad. A 12.2.5. lemma bizo-nyításában láttuk, hogy (12.14) mindig igaz. Ezért, ha |fii| nem változik arepeat ... until ciklus magjának következő lefutásakor sem, akkor szükség-képpen (12.13) is igaz. Ekkor azonban végre kell hajtanunk az algoritmus 13.sorában előírt transzformációt – ha ugyanis a 12. sorbeli feltétel nem telje-sülne, akkor a ciklus befejeződne –, de ekkor a ciklusmag ismételt lefutásaután

0 < |fpi| < |fii|,ezért a későbbiekben |fii| csökkenni fog, ami ellentmondás.

Hogy az algoritmus valóban (12.12) jobb oldalát állítja elő, az a 12.2.6.következményből és abból adódik, hogy az algoritmus 15. sora szerint arepeat ... until ciklus leállításának kritériuma az, hogy fii osztója legyenaz alatta, a mátrix jobb alsó sarkában fekvő valamennyi elemnek. Az utóbbireláció fennállását a későbbi transzformációk sem rontják el. Q.E.D.

A 12.2.1. tétel bizonyítása: A 12.1. algoritmus az utolsó tétel szerint a(12.12) alakot állítja elő úgy, hogy a bizonyítandó tétel állításának (iii) részeis teljesül. Az algoritmus által használt sor-, illetve oszloptranszformációk egymegfelelő S(i, j) vagy T(i, j, γ) mátrixszal való balról, illetve jobbról történőbeszorzásnak felelnek meg. Tehát a tétel állításában szereplő P, illetve Q

mátrix azon mátrixok szorzata lesz, amelyekkel balról, illetve jobbról kellettszorozni. Így a tétel állításának (i) része akkor marad igaz, ha minden i, j ésγ (i, j = 1, ...,m, γ ∈ ZZ) esetén

|det(S(i, j))| = |det(T(i, j, γ))| = 1.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 328: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

328 12. A csoportelméleti módszer

Ez azonban azonnal következik abból, hogy a determinánsok kifejtésekor csakegyetlen tag lesz nullától különböző, és abban valamennyi tényező 1. Q.E.D.

Példaként tekintsük a

3 4 61 2 73 2 1

(12.17)

mátrixot. A legkisebb abszolút értékű elem 1. Az első és a második sorfelcserélésével azonnal a kívánt pozícióba kerül. Ezzel kezdjük meg a repeat... until ciklus végrehajtását i = 1 mellett. Az eredményül kapott mátrix

1 2 73 4 63 2 1

.

Ezután a 7. és 11. sor közötti for ciklus lefutása következik j = 2 és 3mellett. A mátrix rendre az alábbi módon transzformálódik:

1 0 73 −2 63 −4 1

1 0 70 −2 −153 −4 1

1 0 00 −2 −153 −4 −20

1 0 00 −2 −150 −4 −20

.

Ezután a 12. sorban a feltétek kiértékelése következik. Ennek első fele telje-sül, de a második nem, mert 1 minden egésznek osztója. Ezért nem változ-tatjuk meg a 13. sorban a mátrixot. A 15. sorban teljesül az until utánifeltétel, tehát a repeat ... until ciklus lefutott, így a külső for ciklusban iértéke 2 lesz. Azonnal látható, hogy a 6. sor végrehajtásakor nem kell semsor-, sem oszlopcserét végezni. A belső for ciklus most már csak a j = 3értékre fut le. A további transzformációk eredményeként a

1 0 00 −2 −10 −4 8

1 0 00 −2 −10 0 10

mátrixokat kapjuk. Most a 12. sor feltételének első fele nem teljesül, így amátrixot a 13. sorban most sem változtatjuk meg. A 15. sorban a feltételnem igaz, hiszen (−2) 6 | (−1). Így a repeat ... until ciklus magja ismétlefut. A 6. sor most előírja a 2. és 3. oszlop cseréjét, majd az ezt követőoszlop- és sortranszformáció eredménye

1 0 00 −1 −20 10 0

1 0 00 −1 00 10 −20

1 0 00 −1 00 0 −20

.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 329: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.2. A mátrixok Smith-féle normálalakja 329

Az utolsó mátrix a keresett Smith-féle normálforma.

Az egészértékű programozási algoritmushoz szükségünk lesz a P mátrixrais. Vegyük észre, hogy a 12.2.3., illetve a 12.2.4. lemmában megadott S(i, j),illetve T(i, j, γ) mátrix az egységmátrixból éppen az általuk leírt műveletútján keletkezett, azaz S(i, j) az i. és j. sor felcserélésével, T(i, j, γ) pedigaz i. sor γ-szorosának a j. sorhoz való hozzáadásával. Ezért, ha a 12.1.algoritmust kiegészítjük úgy, hogy egy (m×m)-es mátrixon, mely kezdetbenaz egységmátrix, elvégezzük a sorokon végrehajtott műveleteket – vagyis azalgoritmus 6. sorában idetartozókat és a 9. sorban előírtakat –, akkor azalgoritmus leállása után megkapjuk a P mátrixot. Jelölje H az eljárás soránfelhasznált segédmátrixot, sorai pedig legyenek hj (j = 1, ...,m). Ekkor a12.1. algoritmus a következő sorokkal egészül ki:

2.1. H := E;

6.1. a sorcseréket végezzük el a H mátrixon is;

10.1. hj := hj − ⌊fji/fii⌋hi;

A törtszám itt arra utal, hogy az új utasításokat melyek közé kell beilleszteni.

Természetesen szükség esetén a Q mátrix analóg módon határozható meg.Most nyomon követjük a P és Q mátrixok kialakulását a fenti példában. K

fogja jelölni a Q mátrix elődeit. Az eljárás az 1. és 2. sor cseréjével indult,tehát ekkor

H =

0 1 01 0 00 0 1

, K =

1 0 00 1 00 0 1

.

Ezután az 1. oszlop (-2)-szeresét adtuk a 2. oszlophoz és az 1. sor (-3)-szorosát a 2. sorhoz, tehát

H =

0 1 01 −3 00 0 1

, K =

1 −2 00 1 00 0 1

.

Következett az 1. oszlop (−7)-szeresének hozzáadása a 3. oszlophoz és az 1.sor (−3)-szorosának a 3. sorhoz:

H =

0 1 01 −3 00 −3 1

, K =

1 −2 −70 1 00 0 1

.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 330: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

330 12. A csoportelméleti módszer

Ezután a 2. oszlop (−7)-szeresét adtuk a 3. oszlophoz és a 2. sor (−2)-szeresét a 3. sorhoz:

H =

0 1 01 −3 0

−2 3 1

, K =

1 −2 70 1 −70 0 1

.

Felcseréltük a 2. és 3. oszlopot:

K =

1 7 −20 −7 10 1 0

.

Az utolsó két transzformáció a 2. oszlop (−2)-szeresének hozzáadása a 3.oszlophoz és a 2. sor 10-szeresének hozzáadása a 3. sorhoz:

P =

0 1 01 −3 08 −27 1

, Q =

1 7 −160 −7 150 1 −2

.

Az előző szakaszban a számítások során a B mátrix inverzét használtuk,ezért ezt meghatátozzuk az ebben a szakaszban bevezetett mátrixok segítsé-gével. Jelölje (12.12) jobb oldalát W. Azonnal látható, hogy

W−1 =

1/ε1 0 ... 00 1/ε2 ... 0

...0 0 ... 1/εm

.

Továbbá nyilvánvaló, hogy

PBQW−1 = E.

Az egyenletet balról P−1-gyel, jobbról P-vel szorozva kapjuk, hogy

BQW−1P = E.

Innen adódik, hogy

B−1 = QW−1P. (12.18)

Így a (12.17) mátrix inverze

1 7 −160 −7 150 1 −2

1 0 00 −1 00 0 − 1

20

0 1 01 −3 08 −27 1

=1

20

−12 8 1620 −15 −15−4 6 2

. (12.19)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 331: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.3. A csoportfeladat előállítása 331

12.3. A csoportfeladat előállítása a Smith-félenormálforma segítségével

Térjünk vissza a (12.1)–(12.3) feladathoz. Egyenértékű vele a (12.4)–(12.8)probléma. Ezen belül (12.5) az egyenleteknek ekvivalens átfogalmazását,(12.7) a bázisváltozók egészértékűségét és (12.6) a bázisváltozók nemnega-tivitását adja. Az utóbbi elhagyásával jutottunk a (12.10) relaxációhoz. Akét transzformált feladatot úgy kaptuk meg, hogy először meghatároztuk azoptimális lineáris programozási bázist, majd beszoroztunk a bázis mátrixá-nak inverzével. Az alábbiakban eltérünk ettől az eljárástól. Nem B−1-gyel,vagyis QW−1P-vel szorozzuk be az egyenleteket, hanem csak W−1P-vel.Mivel ez ugyancsak nem szinguláris mátrix, tehát így ismét ekvivalens mó-don alakítjuk át a feltételeket. A W−1P-vel való szorzás azonban a (12.18)képlet szerint azonos a Q−1B−1-gyel való szorzással. Tudjuk, hogy

|det(Q)| = |det(Q−1)| = 1,

így Q−1 is egész mátrix. Az alábbi segédtétel mutatja, hogy egy ilyen mátrix-szal való szorzás a (12.10) feladat kongruenciájának is ekvivalens átalakítása.

12.3.1. segédtétel: Legyen r és s két rögzített egész, Y tetszőleges r ×s méretű mátrix, u r-dimenziós vektor. Legyen továbbá V egy egészekbőlalkotott (r × r)-es mátrix, melyre |det(V)| = 1. Valamely x ∈ IRs esetén az

Yx ≡ u(mod 1) (12.20)

összefüggés akkor és csak akkor áll fenn, ha

VYx ≡ Vu(mod 1), (12.21)

ahol a kongurencia komponensenként értendő.

Bizonyítás: Ha (12.20) igaz, akkor létezik egy

z ∈ ZZr

vektor, hogyYx − u = z.

Ezt megszorozva balról a V mátrixszal kapjuk, hogy

VYx − Vu = Vz.

Mivel V egészekből áll, így itt a jobb oldal ismét egész vektor, vagyis (12.21)igaz. Megfordítva ugyanez a gondolatmenet mondható el, de most a szinténegész V−1 mátrixszal kell szorozni. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 332: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

332 12. A csoportelméleti módszer

A segédtétel szerint tehát

min(cTN − cT

BB−1N)x + cT B−1b (12.22)

W−1PNx ≡ W−1Pb(mod 1)

x ∈ ZZn−m+

ekvivalens a (12.10) feladattal. W−1 egy diagonális mátrix, ezért a velevaló szorzás annyit jelent, hogy az i-edik feltételt (1/εi)-vel szorozzuk meg(i = 1, ...,m). Mivel P, N és b egész számokból áll, így egész változókmellett a kongruencia teljesül, ha ε = ±1. Ezért van jelentősége, hogy a W

mátrix fődiagonálisában álló elemek egymás osztói, hiszen közöttük legfeljebbannyi egységtől különböző elem lehet, amennyi a d = |det(B)| prímtényezősfelbontásában a legmagasabb kitevő. De az előző szakasz végén bemutatottpélda jelzi, hogy ennél kevesebb is lehet. Általában tehát a (12.22) alakjelentősen redukálja a feltételek számát.

Jelölje pi a PN mátrix i-edik sorát, qi a Pb vektor i-edik komponensét.Ekkor (12.22) kongruenciái ekvivalensek a következőkkel, feltéve, hogy azutolsó r (0 ≤ r ≤ n) εi különbözik ±1-től:

pix ≡ qi (mod εi), i = n − r + 1, ..., n. (12.23)

Ebből látható, hogy a kongruenciarendszer bal oldalán legfeljebb d külön-böző vektor állhat, melyek a komponensenkénti (mod εi) összeadásra nézvecsoportot alkotnak, ami lényegesen jobb a csoport rendjére az előző szakaszvégén adott

dm

felső becslésnél.

12.4. A csoportfeladat megoldása dinamikusprogramozással

Ebben a szakaszban csak a véges Abel-csoporton értelmezett csoportfeladat-tal foglalkozunk, ezért a kényelem kedvéért bevezetjük a következő jelölése-ket: t = n − m; a csoport generáló elemei, vagyis a PN oszlopai α1, ..., αt;a jobb oldal, vagyis Pb = β; a csoportbeli összeadás a 3. és 5. fejezetekhezhasonlóan ⊕; a csoport nulleleme 0; a célfüggvény vektora γ, azaz

γT = cTN − cT

BB−1N. (12.24)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 333: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.4. A csoportfeladat megoldása dinamikus programozással 333

Feltételezzük továbbá az általánosság megszorítása nélkül, hogy αi 6= αj ,ha i 6= j. Így a csoportfeladat

min∑t

j=1 γjxj⊕t

j=1 αjxj = β

x ∈ ZZt+.

(12.25)

Ez a probléma a 3.2. szakaszban tárgyalt félcsoportfeladat speciális esete.

Jelölje G a generáló elemek által kifeszített részcsoport elemeinek halma-zát:

G =

t⊕

j=1

αjxj | x ∈ ZZt+

.

Ha zavart nem okoz, akkor G jelöli magát a csoportot is. Az előző szakaszvégén mondottak szerint G elemeinek száma legfeljebb d. G tehát nem azösszes r-dimenziós, komponensenként (mod εi) vett vektor additív csoportja,hanem ennek az a részcsoportja, amit az α1, ..., αt elemek kifeszítenek. Ígyelőfordulhat, hogy

β 6∈ G. (12.26)

Ebben az esetben a csoportfeladatnak nincs megengedett megoldása. Mivela csoportfeladat az egészértékű programozási feladat relaxációja volt, ezértmost ennek sem lehet megengedett megoldása.

Haβ ∈ G,

akkor a csoportfeladat megoldását a 3.2. szakaszban az alábbi legrövidebbút-keresési feladatra vezettük vissza. A gráf csúcsainak halmaza G, éleinek hal-maza pedig

E = {(µ, ν) | µ, ν ∈ G, ∃j : µ ⊕ αj = ν },ahol a (µ, µ⊕αj) él költsége γj . Keresendő 0-ból β-ba vezető legrövidebb út.A 3.2.7. tétel szerint a feladatnak akkor és csak akkor van véges optimuma, haa gráfban nincs negatív kör. Az 5.2.3. tétel szerint ugyanez a feltétele annak,hogy a dinamikus programozási eljárás megtaláljon egy legrövidebb utat. A3.2.3. következmény szerint a gráfban akkor és csak akkor van negatív kör,ha

inf

γT x | x ∈ ZZt+,

t⊕

j=1

αjxj = 0

< 0. (12.27)

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 334: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

334 12. A csoportelméleti módszer

Ezen a ponton jutottunk el ahhoz, hogy miért volt annak jelentősége, hogyaz optimális lineáris programozási bázisból indultunk ki. A figyelmes olvasóészrevehette ugyanis, hogy az eddigi átalakításokat bármely bázissal elvé-gezhettük volna. A lineáris programozás elméletéből tudjuk, hogy (12.24)módon definiált γ vektor optimális bázis esetén nemnegatív. Vizsgáljuk meg,hogy mi történne, ha ez nem teljesülne, vagyis létezne olyan j index, hogy

γj < 0

volna. Mivel G véges csoport, ezért minden elemének rendje véges. Tehátlétezik egy k > 0 egész, hogy

kαj = 0,

ígykγj < 0,

vagyis (12.27) teljesül.

Az eddig mondottak alapján nem nehéz egy elvileg jól működő algoritmustszerkeszteni a csoportfeladat megoldására az 5. fejezetben tárgyalt legrövi-debb utat kereső algoritmus alapján. Ami azonban a hatékonyságot illeti,a lényeg a részletekben rejlik, esetünkben abban, hogy a csoportelemekethogyan tudjuk kezelni. Az alábbi megoldás abból indul ki, hogy az eljárássorán a G csoport valamennyi eleméhez tartozó információkat a számítógépmemóriájában tudjuk tárolni egyidejűleg.

A csoportelemek a (12.23) képlet alapján egyértelműen jellemezhetők egyr-dimenziós vektorral. A rövidség kedvéért csak ezeket a komponenseketfogjuk kiírni. Egy α ∈ G elem tehát egy u vektorral írható le, ahol

u ∈ ZZr, 0 ≤ ui < εi, i = 1, ..., r.

Vegyük észre, hogy egy ilyen u vektor egyértelműen megfeleltethető egy 0és d − 1 közé eső egésznek az εi (i = 1, ..., r) alapszámokkal meghatározottáltalánosított számrendszerben a következő módon:

u −→r

i=1

ui

i−1∑

k=1

εi. (12.28)

Ezzel a leképezéssel a csoportelemeket sorrendbe raktuk, és 0-tól (d − 1)-ig indexeltük. Az egyértelműség kedvéért az eljárás leírásakor azonban acsoportelemet meg fogjuk különböztetni az indexétől.

Összhangban az 5. fejezettel, a következő jelöléseket fogjuk használni:

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 335: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.4. A csoportfeladat megoldása dinamikus programozással 335

δ(q) a q indexű csoportelem,c(ν) a ν csoportelemhez vezető eddig talált legrövidebb út hossza,c(q) a q indexű csoportelemhez vezető eddig talált legrövidebb út hossza,m(ν) a ν csoportelemhez vezető eddig talált legrövidebb út utolsó élének típusa,

azaz, ha az út utolsó éle (µ, µ ⊕ αj), akkor j,w(q) a δ(q) csoportelem állapotváltozója, értéke true, ha δ(q)-ból mint a gráf

csúcsából nem léptünk még tovább, különben pedig az értéke false,z valós értékű segédváltozó.

Az eljárás az 5. fejezet algoritmusaihoz hasonlóan a Bellman-egyenletekkielégítésére törekszik, amelyek alakja most

c(0) = 0,

c(ν) = min{ c(µ) + γj | µ ⊕ αj = ν }.Az 5.5. algoritmus mintájára mindig abból a legkisebb potenciálértékkel ren-delkező δ(q) csúcsból (azaz csoportelemből) lépünk tovább, amelyből ezt mégnem tettük meg. Az élek költségeinek nemnegativitása miatt ugyanis ebbena csúcsban már nem érhető el további javulás. Az eljárás végrehajtásáhozszükséges műveletek száma, mint azt alább látni fogjuk, O(d2 + dt).

12.2. algoritmus

1. Begin

2. c(0) := 0;

3. w(0) := true;

4. for k := 1 to d − 1 do

5. begin

6. c(k) := ∞;

7. w(k) := true;

8. end;

9. for k := 1 to d − 2 do

10. begin

11. z := ∞;

12. for j := 1 to d − 1 do

13. if c(j) < z and w(j) then

14. begin

15. q := j;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 336: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

336 12. A csoportelméleti módszer

16. z := c(j);

17. end;

18. w(q) := false;

19. for j := 1 to t do

20. begin

21. φ := δ(q) ⊕ αj ;

22. if c(φ) > c(q) + γj then

23. begin

24. c(φ) := c(q) + γj ;

25. m(φ) := j;

26. w(φ) := true;

27. end;

28. end;

29. end;

30. end;

Az algoritmus a 8. sorig tartó inicializáció után a 9. és 29. sorok közötthúzódó fő ciklusból, és ezen belül két egymást követő, a 12. és 17. sorokközötti, illetve a 19.-től a 28. sorig terjedő ciklusból áll. Az utóbbiak közülaz első feladata annak a csúcsnak a kiválasztása, amelyből a továbblépés tör-ténik, míg a második maga a továbblépés. Mivel a ciklusmaguk lefutásánakszáma rendre d− 1, d− 1 és t, így a szükséges műveletek számára az említettkorlátot kapjuk.

A legrövidebbút-keresési algoritmus után a csoportfeladat optimális meg-oldását a szokásos módon, az alábbi eljárás segítségével állíthatjuk elő.

12.3. algoritmus

1. δ := β;

2. while δ 6= 0 do

3. begin

4. xm(δ) := xm(δ) + 1;

5. δ := δ ⊖ αm(δ);

6. end;

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 337: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.4. A csoportfeladat megoldása dinamikus programozással 337

Tekintsük példaként a

min x1 + x2 + x3 + 2x4

3x1 + 4x2 + 6x3 + 4x4 = 75x1 + 2x2 + 7x3 + 3x4 = 55

3x1 + 2x2 + x3 + 2x4 = 39x1, x2, x3, x4 ∈ ZZ+

(12.29)

feladatot. Ebben az optimális lineáris programozási bázist az x1, x2, x3 vál-tozókhoz tartozó vektorok alkotják, melyek mátrixának Smith-féle normál-alakját meghatároztuk már a 2. szakasz végén. A bázis megengedett, hiszena bázismegoldás

x1 = 81

5, x2 = 4

1

2, x3 = 5

2

5, x4 = 0.

Optimalitását pedig a (12.19)-ben megadott inverz mátrix segítségével ellen-őrizhetjük:

2 − (1, 1, 1)1

20

−12 8 1620 −15 −15−4 6 2

432

= 2 − 19

20=

21

20> 0.

A (12.22) csoportfeladat kongruenciáit a W−1P mátrixszal való szorzás útjánállítjuk elő.

W−1P =

1 0 00 −1 00 0 − 1

20

0 1 01 −3 08 −27 1

=

0 1 0−1 3 0

− 820

2720 − 1

20

.

A korábban mondottaknak megfelelően, mivel itt csak egyetlen sorban van-nak törtszámok, ezért csak egyetlen kongruencia lesz, ami nem teljesül auto-matikusan, és ez a következő:

1

20(−8, 27,−1)

432

x4 ≡ 1

20(−8, 27,−1)

755539

(mod 1).

Elvégezve a műveleteket, kapjuk, hogy

47

20x4 ≡ 846

20(mod 1).

Innen a csoportfeladat

min 2120x4

7x4 ≡ 6 (mod 20)x4 ∈ ZZ+.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 338: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

338 12. A csoportelméleti módszer

Az optimális megoldás nyilvánvalóan az a legkisebb nemnegatív egész, amelyrea kongruencia teljesül, ez pedig nem más, mint

x∗4 = 18. (12.30)

A (12.5) képlet alapján számítjuk ki a bázisváltozóknak a (12.30)-hoz tartozóértékeit. Ha azok nemnegatívak, akkor az egészértékű programozási feladatoptimális megoldásához jutunk. Valóban

xB =1

20

−12 8 1620 −15 −15−4 6 2

755539

− 18

432

=

100

.

Tehát a (12.29) feladat optimális megoldása

x∗1 = 1, x∗

2 = 0, x∗3 = 0, x∗

4 = 18.

12.5. A csoportfeladat optimális megoldásánaknéhány tulajdonsága

Tekintsük ismét a (12.25) feladatot. Ebben bizonyos értelemben egyetlenfeltétel, a csoportelemeken értelmezett lineáris egyenlet van. A bal oldalα1, ..., αt elemeinek rendje a csoportban legyen v1, ..., vt.

12.5.1. tétel: A csoportfeladatnak van olyan x∗ optimális megoldása,melyre

x∗j ≤ vj − 1, j = 1, ..., t. (12.31)

Bizonyítás: Jelölje z∗ az x∗ ponthoz tartozó célfüggvényértéket. Tegyükfel indirekt módon, hogy x∗ valamely komponense megsérti a (12.31) egyen-lőtlenséget. Legyen ez a komponens x∗

k. Jelölje x azt a vektort, amelynekkomponenseire

xj =

{

x∗j j 6= k

x∗k − vk j = k.

Legyen z az ehhez tartozó célfüggvényérték. Ekkor x ≥ 0, és

t⊕

j=1

αj xj =

t⊕

j=1

αjx∗j ⊖ αkvk =

t⊕

j=1

αjx∗j = β,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 339: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.5. A csoportfeladat optimális megoldásai 339

tehát x kielégíti a csoportfeladat feltételeit. Továbbá

z∗ = z + vkγk ≥ z.

Az x∗ pont optimalitása miatt ez csak egyenlőséggel teljesülhet, és ekkor x

alternatív optimális megoldás. Q.E.D.

12.5.2. tétel: A csoportfeladatnak van olyan optimális megoldása, melyre

t∑

j=1

x∗j ≤ d − 1. (12.32)

Bizonyítás: Legyen x a csoportfeladat egy megengedett megoldása, melyre

t∑

j=1

xj ≥ d.

Ekkor a gráfban x-nek egy legalább d + 1 csúcsot érintő út felel meg, ígyszükségképpen tartalmaz kört. Az út hossza csökkenthető, ha a körbe tartozóéleket elhagyjuk, mivel az élek hossza nemnegatív. Q.E.D.

A fenti tételek azt fejezik ki, hogy a csoportfeladat optimális megoldásaiközött van olyan, amely – mint egész vektor – nem lehet túl nagy.

A csoportfeladat az egészértékű programozási feladat relaxációja, így nembiztos, hogy optimális megoldásából az utóbbi megengedett, egyben optimá-lis megoldásához jutunk. Adunk egy olyan esetet, amikor ez garantálható. Akövetkező szakaszban foglalkozunk azzal, hogy mit kell tenni akkor, amikor(12.6) megsérül.

12.5.3. tétel: Jelölje v az α1, ..., αt csoportelemek rendjeiből alkotott vek-tort, N pedig azt a mátrixot, amit a B−1N mátrixból úgy kapunk, hogy azutóbbi minden elemét annak abszolút értékével helyettesítjük. Legyen x∗ acsoportfeladat egy olyan optimális megoldása, amelyre (12.31) teljesül. Ha

B−1b ≥ N(v − e),

ahol e a csupa egyesből álló t-dimenziós vektor, akkor

B−1b − B−1Nx∗ ≥ 0.

Bizonyítás: Jelölje y a B−1Nx∗ vektor komponenseinek abszolút értékeibőlalkotott vektort. Ekkor B−1Nx∗ ≤ y ≤ N(v − e) ≤ B−1b. Q.E.D.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 340: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

340 12. A csoportelméleti módszer

12.5.4. következmény: Az előző tétel jelölései mellett, ha

B−1b ≥ N(d − 1)e,

akkorB−1b ≥ B−1Nx∗ ≥ 0.

Bizonyítás: Az állítás az előző tételből adódik v − e ≤ (d − 1)e miatt.Q.E.D.

12.6. A csoportelméleti módszer beágyazása akorlátozás és szétválasztás algoritmusába

Tulajdonképpen minden adott egy korlátozás és szétválasztás típusú módszer-hez: a csoportfeladat relaxációja az egészértékű programozási feladatnak, amegoldásul szolgáló és az előző szakaszokban ismertetett módszer gyors.

A csoportfeladatot meghatározó elemek rendjét továbbra is vj (j = 1, ..., t)jelöli, az ezekből alkotott vektor pedig v.

12.6.1. definíció: Legyen z ∈ ZZt+, y < v egy tetszőleges vektor. Ekkor

z ∈ ZZt+ az y vektor folytatása, ha

y<

6= z, (12.33)

z < v. (12.34)

(12.33) szerint y folytatásai nem azonosak vele. A definícióból következik,

hogy a 0 vektor folytatása bármely y egész vektor, melyre 0<

6= y < v.

Legyen 0 ≤ y < v egy tetszőleges egész vektor. Tekintsük a (12.25)csoportfeladatot azon további feltétel mellett, hogy x ≥ y. Legyen ennekoptimális megoldása x. Ekkor valójában a

min∑t

j=1 γjuj⊕t

j=1 αjuj = β ⊖ ⊕tj=1 αjyj

u ∈ ZZy+

(12.35)

feladatot kell megoldani, és ennek u∗ optimális megoldásából kapjuk, hogyx = u∗+y. Legyen most már y ≤ w ≤ x egy tetszőleges vektor. Nyilvánvaló,hogy ha a (12.25) feladatot az x ≥ w feltétellel szorítjuk meg, akkor az

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 341: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.6. A csoportelméleti módszer beágyazása. . . 341

optimális megoldás ismét csak x lesz. Erre a megjegyzésre alapozzuk azalábbi definíciót.

12.6.2. definíció: Legyen egy rögzített y vektor mellett a (12.35) feladatoptimális megoldása u∗. Ekkor egy 0 ≤ z < v, z ∈ ZZt vektor y közvetlenfolytatása, ha létezik olyan 1 ≤ k ≤ t index, hogy

zj =

{

yk + u∗k + 1 ha j = k

yj ha j 6= k.(12.36)

Tehát az y közvetlen folytatásai azok a parciális rendezésben minimálisfolytatásai, amelyek a (12.35) feladat által a csoportfeladatnak garantáltanmás megoldását jelölik ki, mint y. A (12.36) képletben megadott z vektort y

k-adik közvetlen folytatásának nevezzük. A k-adik közvetlen folytatás nemlétezik, ha

yk + u∗k ≥ vk − 1.

A közvetlen folytatások meghatározásához a (12.35) feladatot kell meg-oldani. Azonban ehhez nincs szükség a 12.2. algoritmus ismételt lefuttatá-sához, hiszen a dinamikus programozási eljárás valamennyi lehetséges jobboldalra megoldja a csoportfeladatot. Ezért a (12.35) optimális megoldásátegyszerűen csak ki kell olvasni a 12.3. algoritmus segítségével a korábbanelőállított táblázatból.

Az alábbi eljárásban a megoldások halmazait egy-egy y pont folytatásaiadják. Ezt a halmazt legfeljebb t részre bontjuk fel, az egyes részekben y

k-adik közvetlen folytatása (ha egyáltalán létezik) és ennek folytatásai talál-hatók.

Legyen S az a halmaz, melybe y és folytatásai tartoznak. Ekkor y-t az Shalmaz gyökérpontjának nevezzük.

Az algoritmusban a következő jelöléseket alkalmazzuk:

L a felbontandó halmazok listája, melyeket a gyökérpontjukkal jellemzünk,h(y) az y gyökérpontú halmazhoz tartozó becslés, vagyis a

(12.35) feladat optimális célfüggvényértéke,f az eddig talált legjobb megengedett megoldás célfüggvényértéke,g segédváltozó.

Az alábbiakban feltesszük, hogy a csoportfeladatot már megoldottuk a12.2. algoritmussal, és volt optimális megoldás, de ahhoz nem tartozott azegészértékű programozási feladatnak megengedett megoldása. Ezért a h(y)értékek és az ezeket előállító optimális megoldások meghatározásához nem

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 342: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

342 12. A csoportelméleti módszer

kell egy-egy csoportfeladatot megoldani, hiszen azok kiolvashatók a dinami-kus programozási eljárás táblázatából.

12.4. algoritmus

1. Begin

2. L := {0};3. while L 6= ∅ do

4. begin

5. kiválasztunk egy y elemet L-ből;

6. L := L − y;

7. megoldjuk a (12.35) feladatot;

8. if B−1b ≥ B−1N(y + u∗) then

9. begin

10. g := cTBB−1b + (cT

N − cTBB−1N)(y + u∗);

11. if g < f then f := g;

12. end

13. else

14. begin

15. for j := 1 to t do

16. begin

17. if (∃y k-adik közvetlen folytatása) then

18. z := y k-adik közvetlen folytatása;

19. if h(z) < f then L := L + z;

20. end;

21. end;

22. end;

23. end;

12.6.1. tétel: A 12.4. algoritmus véges.

Bizonyítás: Ha az algoritmus nem volna véges, akkor az L lista nem ürülneki, így végtelen sokszor kerülne bele egy-egy további elem. Minden, az L-bekerülő elem egy korábban az L-ben fekvő elemnek a folytatása. Kezdetbencsak a 0 vektor van L-ben, így minden később L-ben lévő elem a 0 vektornak

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 343: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.6. A csoportelméleti módszer beágyazása. . . 343

a folytatása. Ezért tehát léteznie kell egy egész vektorokból álló {yi} végtelensorozatnak úgy, hogy

0 = y1

<

6= y2

<

6= ... és yi < v i = 1, 2, ...,

ami lehetetlen, hiszen csak véges sok olyan ZZt+-beli vektor létezik, ami a v

vektornál kisebb. Q.E.D.

Mivel a korlátozás és szétválasztás módszere is valamilyen értelemben le-számlálja – explicit vagy implicit módon – az összes megoldást, fontos tud-nunk, hogy ezúttal sem marad ki egyetlen megoldás sem a leszámlálásból.Legyen w ∈ ZZt

+, w < v egy tetszőleges vektor. Tudjuk, hogy most nem w

fontos, hanem a vele felírt (12.35) feladatból származó w + u∗ pont. Akkorlesz teljes a megoldások számbavétele, ha ezek közül nem hagyunk el egyetsem.

12.6.2. tétel: A 12.4. algoritmus valamennyi w ∈ ZZt+, w < v vektorhoz

tartozó (12.35) feladat egy optimális megoldásából származó w + u∗ vektortmegvizsgál, feltéve, hogy a csoportfeladatnak van optimális megoldása.

Bizonyítás: Legyen x∗ a csoportfeladat egy optimális megoldása. Ekkor az

uj =

{

x∗j − wj + vj ha x∗

j < wj

x∗j − wj ha x∗

j ≥ wj

választással a (12.35) feladat egy megengedett megoldásához jutunk, így lé-tezik optimális megoldása is. Indirekt módon tegyük fel, hogy egy w vektoresetén egyetlen w + u∗ vektort sem vizsgáltunk meg. Ez csak úgy lehetsé-ges, ha w nem került be az L listába. Kezdetben az L listában a 0 vek-tor van, aminek w a folytatása. Jelölje y az L listából utolsónak kikerülőolyan vektort, amelynek w a folytatása. Ha w nem közvetlen folytatása azy vektornak, nem is folytatása y valamely közvetlen folytatásának, akkor akérdéses vektort az algoritmus 8. sorában vizsgáltuk meg akkor, amikor y

az y értéket vette fel. Ha pedig van y-nak egy olyan z közvetlen folytatása,amelyre z ≤ w teljesül. Mivel z nem került be az L listába, ezért az algorit-mus 18. sorában a feltétel nem teljesült, ami azt jelenti, hogy az z vektorralfelállított (12.35) feladat nem adhatott jobb megengedett megoldást az egé-szértékű programozási feladathoz annál, mint ami az eljárás során már ismertvolt. Q.E.D.

A (12.1)–(12.3) egészértékű programozási feladat megoldását tehát a kö-vetkező lépésekben végezzük.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 344: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

344 12. A csoportelméleti módszer

12.5. algoritmus

1. Begin

2. az egészértékű programozási feladat LP-relaxációjának megoldása;

3. a csoportfeladat felállítása;

4. if (∃ a csoportfeladatnak optimális megoldása)

5. then x := egy optimális megoldás;

6. if B−1b 6≥ B−1Nx then a 12.4. algoritmus lefuttatása;

7. end;

Példaként tekintsük azt, amikor a (12.29) feladatot az alábbi módon egytovábbi változóval kiegészítettük.

min x1 + x2 + x3 + 2x4 + 3x5

3x1 + 4x2 + 6x3 + 4x4 + 12x5 = 75x1 + 2x2 + 7x3 + 3x4 + 4x5 = 55

3x1 + 2x2 + x3 + 2x4 = 39x1, x2, x3, x4, x5 ∈ ZZ+

Az x1, x2, x3 változók által meghatározott bázis ismét optimális, ugyanis

3 − (1, 1, 1)1

20

−12 8 1620 −15 −15−4 6 2

1240

= 3 − 44

20=

16

20≥ 0.

Az új változónak megfelelő csoportelemet az alábbi skalárszorzat adja:

(−8, 27, −1)(12, 4, 0)T = 12.

Tehát a csoportfeladat-célfüggvény 20-szal való beszorozása után a következő:

min 21x4 + 16x5

7x4 + 12x5 ≡ 6(mod 20)x4, x5 ∈ ZZ+.

Ennek megoldásakor a 12.2. algoritmus segítségével a következő táblázatotnyerjük, aminek csak három sora van, de a sorokat megtörtük:

α 0 1 2 3 4 5 6 7 8 9c 0 63 106 69 32 95 58 21 64 127m - 4 4 4 5 4 4 4 5 4

α 10 11 12 13 14 15 16 17 18 19c 90 53 16 79 42 85 48 111 74 37m 4 4 5 4 4 4 5 5 4 4

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 345: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

12.7. Megjegyzések és irodalom 345

A 12.4. algoritmus futását az alábbi táblázat tartalmazza. Ebben az osz-lopok sorrendje: a megvizsgált pont (y); a módosított jobb oldal, azaz

β = β ⊖t

j=1

αjyj ;

a feladat megoldása (y+u∗); az x2 változónak az utóbbi vektorból számítottértéke, azért ez, mert minden esetben ez a változó akadályozza meg, hogy akapott megoldás megengedett legyen; a becslés az adott részhalmazon (h);az adott pont közvetlen folytatásai. Az eljárás során előfordul, hogy egypont több korábbinak is a folytatása. Ilyenkor azonban természetesen csakegyszer vizsgáljuk meg. Hasonlóképpen nem vizsgáltunk meg egy w pontot,ha vizsgálata automatikusan teljesült, azaz ha egy korábban megvizsgált y ≤w pont esetében y + u∗ ≥ w fennállt. Ezeket a pontokat *-gal jelöltük. Azα4 = 7 elem rendje 20, az α5 = 12 elemé pedig 5.

pont β megoldás x2 h folytatás(0,0) 6 (2,1) −5 58 (3,0), (0,2)(3,0) 5 (6,2) −15 158 (7,0), (3,3)(0,2) 2 (2,6) −35 138 (3,2)*(7,0) 17 (10,3) −25 258 (11,0), (7,4)(3,3) 9 (6,7) −60 238 (15,0)(11,0) 9 (14,4) −35 358 (15,0)(7,4) 9 (10,8) −57 338 (11,4)*(7,3) 1 (10,3) −25 258 (11,3)*, (7,4)*(15,0) 1 (18,0) 0 378 –

Ezen a ponton valamennyi részhalmaz vizsgálatát elvégeztük. Így a ko-rábbi számításokat felhasználva az optimális megoldás

x∗1 = 1, x∗

2 = 0, x∗3 = 0, x∗

4 = 18, x∗5 = 0.

12.7. Megjegyzések és irodalom

A csoport szerkezetére vonatkozó tételek bizonyításánál sehol sem használtukki, hogy a csoport az optimális lineáris programozási bázisból származik. Azállítások igazak tetszőleges bázis esetén is. A csoport eredeti alakjában (B−1

oszlopai által a komponensenként mod 1 vett összeadással mint művelettelgenerált csoport) szoros összefüggésben van a Gomory-vágások csoportjával.Az utóbbiban a művelet ugyanez volt, csak a csoportot nem B−1 oszlopai,hanem sorai generálták. Így azonnal adódik a 4. fejezetben említett, de nembizonyított állítás, hogy a Gomory-vágások csoportjának |det(B)| eleme van,

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 346: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

346 12. A csoportelméleti módszer

hiszen nincs lényegbe vágó különbség aközött, hogy a műveleteket sorokkalvagy oszlopokkal végezzük.

A módszer az 1960-as évek közepén született. Néhány fontosabb koraidolgozat a témában: [95], [41], [78], [79], [80]. Az utóbbi dolgozat azzal akérdéssel foglalkozik, hogy az optimális lineáris programozási bázis helyetthogyan lehet más bázist választani. Erre akkor lehet szükség, ha |det(B)| túlnagy, vagyis a csoport a mérete miatt kezelhetetlenné válik. Elvben bármelyduál megengedett bázis használható, hiszen ekkor a célfüggvény transzformáltalakja szintén csak nemnegatív együtthatókat tartalmaz. Ennek kapcsánemlékeztetünk a 4.5. szakaszban mondottakra, miszerint még 0-1 mátrixokdeterminánsa is exponenciálisan nagy lehet.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 347: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Irodalom

[1] Balas. E., An Additive Algorithm for Solving Linear Programs withZero-One Variables, Operations Research, 13(1965), 517–546.

[2] Balas. E., Discrete Programming by the Filter Method, Operations Re-search, 15(1967), 915–957.

[3] Balas, E., Jeroslow, R.G., Cannonical cuts on the unit hypercube, SIAMJournal on Applied Mathematics, 23(1972), 61–69.

[4] Balas, E., Jeroslow, R.G., Strengthening cuts for mixed integer pro-grams, European Journal of Operations Research, 4(1980), 224–234.

[5] Balas, E., Ceria, S., Cornuéjols, G., A lift-and-project cutting plane al-gorithm for mixed 0-1 programs, Mathematical Programming, 58(1993),295–324.

[6] Barcia, P., Constructive Dual Methods for Discrete Programming, Disc-rete Applied Mathematics, 18(1987), 107–117.

[7] Bautz, M., Piehler, J., Über Zirkulanten und Antizirkulanten, Wissen-schaftliche Zeitschrift TH Leuna-Merseburg, 25(1983), 287–293.

[8] Beale, E.M.L., Small, R.E., Mixed integer programming by a branch-and-bound technique, Proc. IFIP Cong., New York, May 1965 (W.A.Kalenich, ed.), 2, Spartan Books, Washington D.C., 450–451.

[9] Bellman, R.E., Dynamic Programming, Princeton University Press,Princeton, New Jersey, 1957.

[10] Ben-Israel, A., Charnes, A., On some problems in diophantine program-ming, Cahiers du Centre d’Études de Recherche Operationelle, 4(1962),215–280.

[11] Bíró, M., A bináris hátizsák feladat, Alkalmazott Matematikai Lapok,9(1983), 113–136.

[12] Björklund, B., Holmberg, G., Vehicle routing and scheduling for delive-ring newspapers in the Stockholm metropolitan area, in Second Euro-pean Congress on Operations Research (Stockholm, Sweden, November29–December 1, 1976), Preprints, (M. Roubens ed.), 45–48.

347

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 348: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

348 Irodalom

[13] Boros E., Egy új elv az s-feltételek meghatározására, Magyar Tudomá-nyos Akadémia Számítástechnikai és Automatizálási Intézet, workingpaper, MO/28, 1982.

[14] Bradley, G.H., Transformation of integer programs to knapsack prob-lems, Discrete Mathematics, 1(1971), 29–45.

[15] Brauer, A., On a Problem of Partitions, Amer. J. Math., 64(1942), 299–312.

[16] Brooks, R., Geoffrion, A., Finding Everett’s Lagrange Multipliers byLinear Programming, Operations Research, 14(1966), 1149–1153.

[17] Burkard, R.E., Rendl, F., A thermodynamically motivated simulationprocedure for combinatorial optimization problems, European Journalof Operations Research, 17(1984), 169–174.

[18] Burton, F.W., Huntbach, M.M., McKeown, G.P., Rayward-Smith, V.J.,Parallelism in branch and bound algorithms, Mathematical AlgorithmsGroup-2, Internal Report CSA/3, University of East Anglia, Norwich,1983.

[19] Chang, L., Korsch, J.F., Canonical Coin Changing and Greedy Solu-tions, Journal of ACM, 23(1976), 418–422.

[20] Charnes, A., Cooper, W.W., A Note on the ’Fail-Safe’ Propertiesof the Generalized Lagrange Multiplier Method, Operations Research,13(1965), 674–677.

[21] Chow, G.K., Boolean functions realizable with single threshold devices,Proc. of IRE, 49(1961), 370–371.

[22] Chow, G.K., On the characterization of threshold functions, IEEE Sym-posium on switching circuit theory and logical design, 1961., 34–38.

[23] Chvatal, V., Hammer, P.L., Aggregation of inequalities in integer pro-gramming, Annals of Discrete Mathematics, 1(1977), 145–162.

[24] Dantzig, G.B., Discrete-Variable Extremum Problems, Operations Re-search, 5(1957), 266–277.

[25] Dijkstra, E.W., A note on two problems in connection with graphs,Numer. Math., 1(1959), 269–271.

[26] Djawadi, M., Kennzeichnung von Mengen mit einer additiven Minimal-eigenschaft, Dissertation, Gutenberg Universität, Mainz, 1974.

[27] Djawadi, M., Kennzeichnung von Mengen mit einer additiven Minimal-eigenschaft, Journal für reine und angewandte Mathematik, 311/312(1979), 307–314.

[28] Dreyfus, S.E., An Appraisal of Some Shortest Path Algorithms, Opera-tions Research, 17(1969), 395–412.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 349: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Irodalom 349

[29] Elgot, C.C., Truth functions realizable by single threshold organs, IEEESynposium on Switching Circuit Theory and Logical Design, 1961, 225–245.

[30] Everett, H., Generalized Lagrange Multiplier Method for SolvingProblems of Optimum Allocation of Resources, Operations Research,11(1963), 399–417.

[31] Farkas Gyula, A Balas-féle elágazás és vágás algoritmus, szakdolgozat,ELTE Operációkutatási Tanszék, 1997.

[32] Fayard, D., Plateau, G., Resolution of 0-1 Knapsack Problem: Compa-rision of Methods, Mathematical Programming, 8(1975), 272–307.

[33] Fisher, M.L., Optimal Solution of Scheduling Problems Using LagrangeMultipliers: Part I, Operations Research, 21(1973), 1114–1127.

[34] Fisher, M.L., Northrup, W.D., Shapiro, J.F., Using Duality to SolveDiscrete Optimization Problems: Theory and Computational Experi-ence, Mathematical Programming Study, 3(1975), 56–94.

[35] Forgó F., Nemkonvex és diszkrét programozás, Közgazdasági és JogiKönykiadó, Budapest, 1978.

[36] Forrest, J.J.H., Hirst, J.P.H., Tomlin, J.A., Practical solution of largemixed integer programming problems with UMPIRE, Management Sci-ence, 20(1974), 736–773.

[37] Gabelman, I.J., The functional behaviour of majority elements, Depart-ment of Electrical Engineering, Syracuse University, New York, 1961.

[38] Geoffrion, A.M., An Improved Implicit Enumeration Approach for Inte-ger Programming, Operations Research, 17(1969), 437–454.

[39] Girlich, E., Kowaljow, M.M., Nichtlineare diskrete Optimierung,Akademie-Verlag, Berlin, 1981.

[40] Glover, F., A Multiphase-Dual Algorithm for Zero-One Integer Program-ming Problem, Operations Research, 13(1965), 879–919.

[41] Glover, F., An algorithm for solving the linear integer programming overa finite additive group with extensions to solving general linear and cer-tain nonlinear integer programs, University of California, OperationsResearch Center, Berkeley, CA, WP 27, 1966.

[42] Glover, F., Convexity cuts and cut search, Operations Research,21(1973), 123-134.

[43] Glover, F., Laguna M., Tabu search, Kluwer Academic Publisher, Nor-well (MA), 1997.

[44] Gomory, R.E., Outline of an algorithm for integer solutions to linearprograms, Bull. Amer. Math. Soc., 64(1958), 275–278.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 350: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

350 Irodalom

[45] Gomory, R.E., An algorithm for the mixed integer problem, RM-2597.,RAND Corp., Santa Monica, California, 1960.

[46] Gomory, R.E., All-integer integer programming algorithm, in IndustrialScheduling (J.F. Math and G.L. Thompson, ed.), Prentice-Hall, Engle-wood Cliffs, New Jersey, 1963, 193-206.

[47] Hajdú I., Lakner Z., Az élelmiszeripar gazdaságtana, MezőgazdaságiSzaktudás Kiadó, Budapest, 1999.

[48] Halfin, S., Arbitrary complex corner polyhedra are dense in Rn+, SIAM

Journal on Applied Mathematics, 23(1972), 109–116.

[49] Hilbert, D., Über die Theorie der algebrischen Formen, MathematischeAnnalen, 36(1890), 473–534.

[50] Ibaraki, T., Computational efficiency of approximate branch-and-boundalgorithms, Mathematics of Operations Research, 1(1976), 287–298.

[51] Jeroslow, R.G., Comments on integer hull of two linear constraints, Ope-rations Research, 19(1971), 1061–1069.

[52] Jeroslow, R.G., Cutting-plane theory: Disjunctive methods, Annals ofDiscrete Mathematics, 1(1977), 293–330.

[53] Jeroslow, R.G., Some basis theorems for integral monoids, Mathematicsof Operations Research, 3(1978), 145–154.

[54] Jeroslow, R.G., Cutting-plane theory: Algebraic methods, Discrete Ma-thematics, 23(1978), 121–150.

[55] Johnson, S.C., Kernighan, B.W., Making Change with a Minimum Num-ber of Coins, kézirat, Bell Laboratories, Murray Hill, év nélkül, publiká-latlan kézirat.

[56] Kovács L.B., A diszkrét programozás kombinatorikus módszerei, BolyaiJános Matematikai Társulat, Budapest, 1970.

[57] Land, A.H., Doig, A., An Automatic Method of Solving Discrete Pro-gramming Problems, Econometrica, 28(1960), 497–520.

[58] Lawler, E.L., Kombinatorikus optimalizálás: hálózatok és matroidok,Műszaki Könyvkiadó, Budapest, 1982. (az eredeti mű: E.L. Lawler,Combinatorial Optimization: Network Flows and Matroids, Holt Rie-nehardt & Winston, New York, 1976.

[59] Lawler, E.L., Lenstra, J.K., Rinooy Kan, A.H.G., Shmoys, D.B., TheTraveling Salesman Problem, John Wiley & Sons, New York, 1985.

[60] Lovász, L., Schrijver, A., Cones of matrices and set-functions and 0-1optimization, SIAM Journal on Optimization, 1(1991), 166–190.

[61] Lubell, D., A short proof of Sperner’s Lemma, J. Combinatorial Theory,1(1966), 299.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 351: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Irodalom 351

[62] Magazine, M.J., Nemhauser, G.,L., Trotter, L.E.Jr., When the GreedySolution Solves a Class of Knapsack Problems, Operations Research,24(1975), 207–217.

[63] Marstrander, O., On a Problem of Frobenius, Mathematica Scandina-vica, 58(1986), 161–175.

[64] Mathews, J.B., On the partition of numbers, Proc. of the London Mat-hematical Society, 28(1897), 486–490.

[65] Mesalkin, L.D., A véges halmazok részhalmazainak számára vonatkozóSperner-tétel általánosítása (oroszul), Teor. Verojatnost. i Primenen,8(1963), 219–220.

[66] Meures, G., Zusammenhang zwischen Reichweite und Frobeniuszahl, Gu-tenberg Egyetem, Mainz, 1977.

[67] Meyer, R.R., On the existence of optimal solutions to IP and MIP prob-lems, Mathematical Programming, 7(1974), 223–235.

[68] Muroga, S., Threshold Logic and its Applications, John Wliey & Sons,New York, 1971.

[69] Muroga, S., Tsuboi, T., Baugh, C.R., Enumeration of threshold func-tions of eight variables, IEEE Trans. on Computers, C-19(1970), 818–825.

[70] Nemhauser, G.L., Ullmann, Z., A Note on the Generalized LagrangeMultipliers Solution to an Integer Programming Problem, OperationsResearch, 16(1968), 450–453.

[71] Piehler, J., Einige Bemerkungen zum Schnittrang in der reinganzzahli-gen linearen Optimierung, Mathematische Operationsforschung und Sta-tistik, 6(1975), 523–533.

[72] Prékopa András, Lineáris Programozás, Bolyai Társulat, Budapest,1968.

[73] Rossier, Y., Troyon, M., Liebling, Th.M., Probabilistic exchange al-gorithms and Euclidean travelling salesman problems, OR Spektrum,8(1986), 151–164.

[74] Roucairol, C., A parallel branch and bound algorithm for the quadraticassignment problem, Discrete Applied Mathematics, 18(1987), 211–225.

[75] Schrijver, A., On total dual integrality, Linear Algebra and Its Applica-tions, 38(1981), 27–32.

[76] Schrijver, A., Theory of Linear and Integer Programming, John Wiley& Sons, Chichester, 1986.

[77] Selmer, E.S., The Local Postage Stamp Problem, Part I: General Theory,University of Bergen, Department of Pure Mathematics, 1986.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 352: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

352 Irodalom

[78] Shapiro, J.F., Dynamic programming algorithms for the integer pro-gramming problem. I: The integer programming problem viewed as aknapsack-type problem, Operations Research 16(1968), 103–121.

[79] Shapiro, J.F., Group theoretic algorithms for the integer programmingproblem. II: Extensions to a general algorithm, Operations Research16(1968), 928–947.

[80] Shapiro, J.F., Generalized Lagrange Multipliers in Integer programming,Operations Research 19(1971), 68–76.

[81] Shapiro, J.F., A Survey of Lagrangean Techniques for Discrete Optimi-zation, Annals of Discrete Mathematics, 5(1979), 113–138.

[82] Sherali, H.D., Adams, W.P., A hierarchy of relaxations between the con-tinuous and convex hull representations for zero-one programming prob-lems, SIAM Journal on Discrete Mathematics, 3(1990), 411–430.

[83] Sperner, E., Ein Satz über einer endlichen Menge, Mathematische Zeit-schrift, 27(1928), 544–548.

[84] Szkatula, K., Libura, M., On the probanilistic properties of greedy likealgorithms for the binary knapsack problem, in Stochastics in combinato-rial optimization, World Science Publishing, Singapore, 1987, 233–254.

[85] Tannenbaum, M., The establishment of a unique representation for alinearly separable function, Lockheed Technical Notes, No. 20., 1961.

[86] Tomlin, J.A., An improved branch-and-bound method for integer pro-gramming, Operations Research 19(1971), 1070–1075.

[87] Vizvári B., A Lagrange szorzók a diszkrét programozásban, AlkalmazottMatematikai Lapok, 2(1976), 413–425.

[88] Vizvári B., Diszkrét programozási feladatok optimális megoldásairól, Al-kalmazott Matematikai Lapok, 3(1977), 139–150.

[89] Vizvári B., The heuristic methods of discrete programming I: The me-thod of neighbourhood, MTA SZTAKI Tanulmányok 152/1983, 109–138.

[90] Vizvári B., On the Greedy Solution in Integer Linear Programming,Zeitschrift für Operations Research, 31(1987), A55–A68.

[91] Vizvári B., Two Algorithms to Get Strong Gomory Cuts, Optimization,20(1989), 117–126.

[92] Vizvári B., On the Optimality of Greedy Solutions of the General Knap-sack Problems, Optimization, 23(1992), 125–138.

[93] Vizvári B., Bevezetés a termelésirányítás matematikai elméletébe, egye-temi jegyzet, ELTE TTK, 1994.

[94] Vizvári B., On the number of inequalities describing a set of binary vec-tors, Rutgers Center of Operations Research, Rutgers University, RRR-52-2000.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó

Page 353: Egeszerteku Programozas

Tamas2014-04-05 11:25:40

Irodalom 353

[95] White, W.W., On a group theoretic approach to linear integer program-ming, University of California, Operations Research Center, Berkeley,CA, WP 27, 1966.

[96] Yamamoto, K., Logarithmic order of free distributive lattice, J. Mathe-matical Society of Japan, 6(1954), 343–353.

[97] Young, R.D., A simplified primal (all-integer) integer programming al-gorithm, Operations Research, 16(1968), 750–782.

[98] Zöllner, J., Über angenehmen Mengen, Mainzer Seminarberichte in ad-ditiver Zahlentheorie, 1(1983), 53–71.

www.interkonyv.hu © Vizvári Béla

© Typotex Kiadó