Cím: Optimalizálási feladatok dualitása
Szerző(k):  Vízvári Béla 
Füzet: 1998/február, 76 - 88. oldal  PDF  |  MathML 
Témakör(ök): Szakmai cikkek

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

 
 
Egy geometriai feladatpár
 
 

Legyen adva az S síkon három pont, A, B és C, melyek egy hegyesszögű háromszöget alkotnak. A pontokkal kapcsolatban két feladatot fogalmazunk meg, és célunk a két feladat kapcsolatának vizsgálata.
1. feladat: Keresendő az a D pont, amelynek össztávolsága az adott pontoktól, azaz az AD¯+BD¯+CD¯ összeg, minimális. A feladat formálisan az alábbi módon írható le:
minDSAD¯+BD¯+CD¯.(1)

2. feladat: Fektessünk át az A, B, C pontokon egy-egy egyenest úgy, hogy a keletkező A'B'C' háromszög szabályos legyen. Keresendő az összes ilyen háromszög közül az, amelyiknek legnagyobb a magassága. Jelölje h(A'B'C') a háromszög magasságát. Ekkor a feladat formálisan felírva a következő:
maxA'B'C' szabályosh(A'B'C').(2)

Megjegyezzük, hogy nem teljesen nyilvánvaló, hogy a feladatoknak van optimális megoldása, azaz van olyan D pont, illetve A'B'C' háromszög, amelyre a keresett magasság maximális, illetve minimális, de az optimális megoldások létezését be fogjuk bizonyítani.
Tegyük fel, hogy az ABC legkisebb szöge, ha több ilyen is van, akkor az egyik ilyen, a B csúcsnál van. Vegyünk fel az A ponton keresztül egy olyan e egyenest, amelynek B és C ugyanazon az oldalán fekszik. Ez lesz az A'B'C' első oldalegyenese. Ekkor egyértelműen meghatározott az a két, e1 és e2 egyenes, amely keresztül megy a B ponton, és az e egyenessel 60 fokos szöget zár be. Azt állítjuk, hogy az A és C pont a két egyenes közül legalább az egyik esetében az egyenes ugyanazon oldalán fekszik, megengedve azt is, hogy A és C rajta legyen az egyenesen. Ha ugyanis nem így volna, akkor A és C az e1 és e2 által alkotott két csúcsszögpár egyikének két különböző szögtartományának belsejében volna, ami azt jelenti, hogy az ABC szög nagyobb 60 foknál, ami lehetetlen, hiszen így az ABC szögeinek összege nagyobb volna 180 foknál (1. ábra). A keresett A'B'C' második oldalegyenesének e1 és e2 közül azt választjuk tehát, amelynek ugyanazon oldalán fekszik A és C. Ekkor a háromszög harmadik, C-n keresztül menő egyenese egyértelműen meghatározott. Mivel a kiindulásul szolgáló e egyenest végtelen sokféleképpen lehet felvenni, ezért a (2) feladatban a maximumot egy végtelen halmazon keressük.
Az ABC oldalegyenesei hét részre osztják fel az S síkot. A háromszög maga egy ezek közül, három egy-egy szöge csúcsszögének szögtartománya, míg további három szögeinek szögtartományából az a rész, amely a háromszögön kívül fekszik. Tegyük fel, hogy a D pont az A csúcsnál fekvő szög csúcsszögének tartományában van (2. ábra). Ekkor a BAD szög legalább akkora, mint a BAC szög kiegészítő szöge, tehát a BAD szög tompa szög. Innen az adódik, hogy a BAD BD oldala nagyobb, mint a BA oldal. Hasonlóképp a CAD háromszögben CA rövidebb, mint CD. Tehát a D pont helyett előnyösebb az A pontot választani, hiszen AA¯+BA¯+CA¯ = BA¯+CA¯ < AD¯+BD¯+CD¯. Tegyük most fel, hogy a D pont az A csúcsnál fekvő szög szögtartományának a háromszögön kívül eső részében van. Legyen E az AD szakasz metszéspontja a BC oldallal. Az AEB és AEC szögek közül az egyik legalább derékszög. Az általánosság megszorítása nélkül feltehetjük, hogy ez az AEB szög. Tehát a CED szög is legalább derékszög, így a CED leghosszabb oldala CD. Innen már megmutatható, hogy az E pont jobb választás, mint D. Ugyanis AD¯+BD¯+CD¯ = AE¯+ED¯+BD¯+CD¯ > AE¯+ED¯+BD¯+CE¯ > AE¯+EB¯+CE¯. Az utolsó lépésben az EBD-re vonatkozó -egyenlőtlenséget használtuk fel. Tehát az 1. feladathoz tartozó optimális D pontot az ABC-ben kell keresni.
Az alábbiakban bebizonyítunk két tételt a feladatpárra vonatkozóan. A tételek tipikusak abban az értelemben, hogy valahányszor dualitásról beszélünk valamely feladatpár esetén, akkor ugyanilyen szerkezetű tételeket igyekszünk bizonyítani.
1. tétel: Legyen az ABC hegyesszögű, és ennek egy tetszőleges pontja D. Legyen A'B'C' egy tetszőleges olyan szabályos háromszög, amelynek oldalegyenesei átmennek az A, B és C pontokon. Jelölje h(A'B'C') a háromszög magasságát. Ekkor
h(A'B'C')AD¯+BD¯+CD¯.(3)

 
Bizonyítás:  Tegyük fel, hogy az A, B, C pontok rendre a B'C', C'A' és A'B' oldalakon vannak.
A szabályos háromszög területét egyértelműen meghatározza a magassága, minél nagyobb a magasság, annál nagyobb a terület. Az A'B'C'-et a D pont az A'B'D, B'C'D és C'A'D háromszögekre bontja, tehát az előbbi területe az utóbbiak területeinek összege. A DC, DA és DB szakaszok legalább akkorák, mint az utóbbi háromszögek magasságai. Felhasználva, hogy az A'B'C' szabályos, területére a következő becslést kapjuk.
TA'B'C'=12A'B'¯h(A'B'C')12A'B'¯(AD¯+BD¯+CD¯).
Innen A'B'¯-vel való osztás útján adódik az állítás.
2. tétel: Legyen az ABC hegyesszögű az S síkon. Legyen A'B'C' egy tetszőleges olyan szabályos háromszög, amelynek oldalegyenesei átmennek az A, B és C pontokon. Jelölje h(A'B'C') a háromszög magasságát. Ekkor
maxA'B'C'  szabályosh(A'B'C')=minDSAD¯+BD¯+CD¯.(4)

 
Bizonyítás:  A fentiek szerint elegendő csak a háromszögbe eső D pontokat vizsgálni. Az előző tételből következik, hogy ha találunk egy D^ pontból és egy A^'B^'C^'-ből álló párt, amelyre h(A^'B^'C^')=AD^¯+BD^¯+CD^¯ teljesül, akkor a D^ pont az 1. feladatnak, az A^'B^'C^' háromszög a 2. feladatnak optimális megoldása. Ugyanis a (3) egyenlőtlenséget alkalmazva az adott esetre azt kapjuk, hogy bárhogy is válasszuk meg a D^ pontot és az A^'B^'C^' háromszöget, a háromszög magassága nem lehet nagyobb, mint AD^¯+BD^¯+CD^¯. Tehát ha egyenlő vele, akkor a lehető legnagyobb, azaz maximális. Hasonlóan okoskodva az AD^¯+BD^¯+CD^¯ összeg esetében azt kapjuk, hogy ha az egyenlőség teljesül, akkor az összeg értéke a lehető legkisebb, azaz minimális. Ilyen pár pedig létezik, válasszuk ugyanis a D^ pontnak azt, ahonnan az ABC mindhárom oldala 120 fok alatt látszik. (Ez a pont megkapható, mint az AB és AC oldalak fölé írt megfelelő látókörök metszéspontja.) Az A'B'C'-et pedig azok az egyenesek alkotják, amelyek az AD, BD, CD szakaszokra rendre az A, B, C pontokban merőlegesek. Ezért felhasználva a háromszög szabályos voltát nyerjük, hogy
TA'B'C'=12(A'B'¯×CD¯+B'C'¯×AD¯+C'A'¯×BD¯)=12A'B'¯(CD¯+AD¯+BD¯).
Másfelől tudjuk, hogy
TA'B'C'=12A'B'¯h(A'B'C').
A két egyenlőtlenséget egybevetve azonnal adódik a kivánt állítás.
 
 
Duális feladatpárok általában
 
 

A fentiekben egy minimalizálási és egy maximalizálási feladatból álló párt láttunk. Összefoglaló néven mindkettő optimalizálási feladat. Egy optimalizálási feladat mindig valamilyen matematikai objektumokra vonatkozik. Ezek az 1. feladat esetében pontok, a 2. feladatnál háromszögek voltak. Az optimalizálási feladat két részből áll: egyrészt feltételekből, amelyeket a feladatban szereplő objektumoknak ki kell elégíteni, másrészt egy célfüggvényből, amely értékeli az objektumokat. A feladat abban áll, hogy a feltételeket kielégítő objektumok közül a célfüggvény szerinti legjobbat találjuk meg, ha ilyen egyáltalán létezik, és legalább egyet, ha több legjobb is létezik. Az utóbbi esetben természetesen mindegyik legjobbhoz ugyanaz a célfüggvényérték tartozik. A feltételeket kielégítő objektumokat megengedett megoldásoknak, a legjobbakat pedig optimális megoldásoknak nevezzük. Az 1. feladat esetén a megengedett megoldások azok a pontok voltak, amelyek az ABC-gel egy síkban fekszenek, a 2. feladatban pedig azok a háromszögek, amelyek szabályosak, és oldalegyeneseik átmennek az A, B, C pontokon. Az optimális megoldás az 1. feladat esetén az a pont, amelynek az össztávolsága az A, B, C pontoktól a legkisebb, a 2. feladatban pedig az a háromszög, amelynek magassága a legnagyobb.
Első tételünk azt mondta ki, hogy a minimalizálási feladat bármely megengedett megoldásához tartozó ezen feladatbeli célfüggvényérték legalább akkora, mint a maximalizálási feladat bármely megengedett megoldásához tartozó célfüggvényérték az utóbbi feladatban. Ha egy maximalizálási-minimalizálási feladatpárra egy ilyen állítás teljesül, akkor a maximalizálási feladatot primál, feladatnak, a minimalizálásit pedig a duálisának mondjuk, a tételt pedig gyenge dualitási tételnek nevezzük. Innen természetesen azonnal következik, hogy a minimalizálási feladat célfüggvénye legalább akkora, mint a maximalizálási feladaté. Erős dualitási tételről akkor beszélünk, ha azt is sikerül bebizonyítani, hogy az optimális célfüggvényértékek egyenlők. Esetünkben ez volt a 2. tétel. Ha egy feladatpárra csak a gyenge dualitási tétel igaz, de az erős nem, azaz van olyan eset, amikor a minimalizálási feladat célfüggvénye határozottan nagyobb, mint a maximalizálási feladaté, akkor dualitási gyepűről beszélünk. Az alábbiakban mindkettőre látunk példát.
 
 
A lineáris programozás esete
 
 
Egy vándorköszörűs járja az utcákat, ahol munkája akad, ott megáll és elvégzi azt. Így óránként 200 forintos keresetre tesz szert átlagosan, meglehetősen nagy biztonsággal. Egyszer odamegy hozzá egy ember, és azt mondja, hogy bérbe veszi a köszörűt. Alkudozni kezdenek a bérleti díjon. A köszörűsnek nyilván nem éri meg kevesebbért kiadni a szerszámát, mint 200Ft óránként, hiszen akkor jövedelme csökkenne. 200 forintnál többért természetesen megéri neki, hiszen úgy még több jövedelemre tesz szert, mint eddig. De még 200 forintért is megéri, hiszen a jövedelme akkor nem nő, hanem ugyanannyi marad, de magának nem kell dolgoznia. A bérlő viszont minél olcsóbban szeretné a köszörűt bérbevenni. Azt nem tudjuk, hogy milyen módszerrel akarja a szerszámot felhasználni, de bárhogy is tegye, a tényleges jövedelme, feltéve, hogy egyéb kiadása nincs, a bevétel és a bérleti díj különbsége lesz. Csak akkor tud valódi haszonra szert tenni, ha ügyesebb, mint a köszörűsünk, és többet keres óránként 200 forintnál. Azt látjuk tehát, hogy a 200Ft-os bérleti díj az, amin az üzlet megköttetik, ha megköttetik, mert a bérlő viszont lealkudhatja ennyire az árat, a köszörűsnek viszont legalább ennyit kell kérnie, de ennyiért még mindig megéri bérbeadni a szerszámot.
Nézzük meg a bérbeadás kérdését most egy bonyolultabb helyzetben. Egy gyár optimális gyártási tervét kell meghatározni egy bizonyos időszakra. Tegyük fel, hogy a gyárban összesen m gép van. Ismert a gyár ezen gépeinek kapacitása az adott időszakban, pontosabban szólva az az időtartam, amennyit legfeljebb dolgozhatnak. Ez gépenként különböző lehet, mert egyes gépeket különböző ideig kell karbantartani, hogy a meghibásodást megelőzzék, más gépeknek a személyzete szabadságra megy, stb. Jelölje az 1, 2, ..., m gépek kapacitását b1, b2, ..., bm. Tegyük fel továbbá, hogy a gyárban n terméket állítanak elő. A gépek és a termékek kapcsolatát az fejezi ki, hogy egy termék egy egységének gyártása az egyes gépeken mennyi ideig tart. Az 1, 2, ..., n termékek esetén jelölje a11, a12, ..., a1n azt az időtartamot, amit egységnyi termék gyártása az első gépen igényel. A második gép esetében ugyanezeket a mennyiségeket jelölje a21, a22, ..., a2m, és így tovább, az m-edik gép esetén legyenek ezek az időtartamok am1, am2, ..., amn. Végezetül feltesszük, hogy ismert, hogy az 1, 2, ..., n termékek egy egységén mennyi a haszon, melyet rendre c1, c2, ..., cn jelöl. Feladatunk meghatározni, hogy mit gyártson az üzem úgy, hogy minden gép el tudja látni a rá váró feladatokat, azaz a legyártandó termékek ne kívánjanak több időt tölteni rajta összesen, mint a kapacitása az adott időszakban, és a vállalat haszna maximális legyen. Az egyes temékekből gyártandó, egyelőre még ismeretlen, mennyiségek legyenek x1, x2, ..., xn. Ez azt jelenti például, hogy az első termékből legyártandó teljes mennyiség a harmadik gépen a31x1 időt fog eltölteni. Ha a harmadik gépre az összes ilyen mennyiséget összegezzük, akkor kapjuk meg, hogy a termelési terv szerint a harmadik gépnek mennyit kellene dolgoznia, és ez nem lehet több, mint a gép kapacitása. Természetesen ennek nemcsak a harmadik gépre kell teljesülnie, hanem valamennyi gépre. Így a következő feltételekhez jutunk:
a11x1+a12x2+...+a1nxnb1a21x1+a22x2+...+a2nxnb2...am1x1+am2x2+...+amnxnbm.(5)
A változók értéke negatív nem lehet, mert ez azt jelentené, hogy valamelyik terméket nem gyártjuk, hanem vásároljuk. Ezt formálisan kifejezve kapjuk, hogy
x10,x20,...xn0.(6)
Mivel a második termék egy egységén c2 a nyereségünk, ezért, ha a gyártott mennyiség x2, akkor ezen a terméken a nyereség c2x2 lesz, a teljes nyereség pedig az ilyen tagok összege. Tehát a célfüggvényünk
max(c1x1+c2x2+...+cnxn)(7)
lesz.
Az a feladat, amely az (5) és (6) feltételek mellett a (7) célfüggvény optimalizálását jelenti, egy lineáris programozási probléma.
Valaki ajánlatot tesz a gyár tulajdonosának, hogy bérbe veszi az üzemet. Hogy létrejön-e az üzlet, még nem tudjuk, de egy dolog biztos: a tulajdonos vagy minden gépet bérbe ad vagy egyet sem. Az alku most akörül folyik, hogy az egyes gépek bérleti díja mennyi legyen. Tegyük fel, hogy az egyelőre még ismeretlen bérleti díjak az 1, 2, ..., m gépek esetén időegységenként y1, y2, ..., ym.
A tulajdonosnak akkor éri meg bérbe adni az üzemet, ha olyan bérleti díjakat kap, hogy ezzel jobban jár, mintha akármelyik termékét gyártaná. Nézzük például az első terméket. Ennek egy egységén c1 a haszon, és ennek legyártásához a11, a21, ..., am1 egységnyi időket használ fel, melyekért rendre a11y1, a21y2, ..., am1ym bérleti díjakat kap. Tehát az utóbbiak összegének legalább akkorának kell lennie, mint c1. Hasonló igaz a többi gépre is. Innen az
a11y1+a21y2+...+am1ymc1a12y1+a22y2+...+am2ymc2...a1ny1+a2ny2+...+amnymcn(8)
feltételeket kapjuk. A változók most sem lehetnek negatívak, hiszen ez azt jelentené, hogy valamelyik gép kölcsönzéséért nemhogy nem kap a tulajdonos pénzt, hanem egyenesen neki kell fizetnie:
y10,y20,...ym0.(9)
(8) és (9) a bérbeadás feltétele. A bérlő nem tud a maga szempontjából jobb díjat elérni, mintha ezen feltételek mellett minimalizálja az összdíjat, azaz megkeresi a
min(b1y1+b2y2+...+bmym)(10)
célfüggvény optimális értékét, tehát neki akkor éri meg bérbevenni a gyárat, ha azt olyan ügyesen tudja felhasználni, hogy ennél nagyobb hasznot tud elérni.
A (8)‐(10) feladat ismét egy lineáris programozási feladat. Ezt nevezzük az (5)‐(7) feladat duáljának. Magának az (5)‐(7) problémának primál feladat a neve. Vegyük szemügyre a két feladatot formálisan. Az (5) egyenlőtlenségrendszer baloldán az együtthatókat soronként felírva az alábbi, úgynevezett mátrixot kapjuk:
(a11a12...a1na21a22...a2n...am1am2...amn).(11)
Ebből úgy kapjuk meg a (8) feltételrendszer baloldalának mátrixát, hogy tükrözzük a főátlóra, azaz a bal felső sarokból induló azon ,,vonalra", amely azokból az együtthatókból áll, melyek két indexe egyenlő:
(a11a21...am1a12a22...am2...a1na2n...amn).(12)
Ami a primál feladatban a célfüggvény volt, az a duáljában az egyenlőtlenségek jobboldala és viszont. Amikor az (5)‐(7) feladatot bevezettük, akkor az aij együttható jelentése az volt, hogy a j termék egy egysége mennyi időt tölt az i gépen. Természetes volna tehát azt gondolni, hogy az ilyen együtthatók nem lehetnek negatívak. Hasonló vonatkozik a bi, cj mennyiségekre is, hiszen például mi értelme volna egy olyan terméket gyártani, amin negatív nyereség, magyarul veszteség keletkezik. Mi azonban most eltekintünk ezektől a megfontolásoktól, és megengedjük, hogy a feladatokban szereplő mennyiségek tetszőleges valós számok legyenek. Még ebben az esetben is igaz azonban mind a gyenge, mind az erős dualitási tétel:
3. tétel: Tegyük fel, hogy az x1, x2, ..., xn értékek kielégítik az (5) és (6) feltételeket, hasonlóképpen az y1, y2, ..., ym értékek pedig a (8) és (9) egyenlőtlenségeket. Ekkor
c1x1+c2x2+...+cnxnb1y1+b2y2+...+bmym.(13)

 
Bizonyítás:  Mivel az y1, y2, ..., ym nem lehetnek negatívak, ezért szabad velük az (5) egyenlőtlenségeket rendre beszorozni, majd az így kapott egyenlőtlenségeket összeadni. Így azt kapjuk, hogy
y1(a11x1+...+a1nxn)+...+ym(am1x1+...+amnxn)==i=1myij=1naijxj=i=1mj=1naijxjyib1y1+b2y2+...+bmym.(14)

Ugyanígy beszorozhatjuk a (8) egyenlőtlenségeket rendre a x1, x2, ..., xn menyiségekkel és a keletkező egyenlőtlenségeket összegezhetjük:
x1(a11y1+...+am1ym)+...+xn(a1ny1+...+amnym)==j=1nxji=1maijyi=i=1mj=1naijxjyic1x1+c2x2+...+cnxn.(15)
Innen a kívánt egyenlőtlenség azért következik, mivel (14) és (15) baloldala megegyezik.
Köztudott*l. pl.: Prékopa András: Lineáris programozás, KÖMAL, 1998/1. sz., hogy egy lineáris programozási feladat három osztályba eshet: (i) egyáltalán nincs megengedett megoldása, (ii) van megengedett megoldása, de a célfüggvénye nemkorlátos, azaz ha x jelöli az x1, x2, ..., xn értékekből álló n-est, akkor létezik megengedett megoldásoknak egy olyan {x1, x2, ...} végtelen sorozata, hogy limkj=1ncjxjk=, (iii) a feladatnak van optimális megoldása. A gyenge dualitási tételből következik, hogy amennyiben a primál feladat nemkorlátos, akkor a duál feladatnak nem lehet megengedett megoldása. Ha ugyanis volna, akkor a célfüggvény ehhez tartozó értéke köteles volna legalább akkora lenni, mint az előbb említett határértékbeli sorozat valamennyi tagja, az pedig lehetetlen. Az erős dualitási tétel csak a (iii) esetre vonatkozhat, és a következőt állítja:
4. tétel: Ha a primál feladatnak van optimális megoldása, akkor van optimális megoldása a duál feladatnak is, és a két feladat optimális célfüggvényértékei egyenlők.
A tétel bizonyítása túllépi a jelen dolgozat kereteit, ezért elhagyjuk.
 
 
A kritikus út módszere
 
 
A lineáris programozás dualitási tételeinek nagyon sok fontos speciális esete van. Ezek közül több anélkül bizonyítható, hogy hivatkozni kellene a lineáris programozásra. Egy ilyen, építő vállalatok, nagy berendézeseket (pl. hajó, vonat, daru) gyártó üzemek napi gyakorlatában használt feladatról lesz szó.
Egy ház építését vesszük példának. Ez számos különböző tevékenységből áll. Ezek közül egyeseknek meg kell előzni másokat. Nyilvánvaló, hogy az alapok kiásása megelőzi például a falak felhúzását, a vízvezetékek szerelését. A tevékenységek halmazát jelölje V. Ha a és b két tevékenység, azaz a, bV, akkor három eset lehetséges: (i) az a tevékenységnek már be kell fejeződnie, amikor a b tevékenységhez hozzákezdünk, másképpen kifejezve a megelőzi b-t, (ii) az a és b tevékenység nincs hatással egymásra, (iii) b megelőzi a-t.
Persze például az alapok kiásása és a vízvezeték szerelése között számos tevékenység van, amit szintén el kell végezni. Azt mondjuk, hogy az a tevékenység közvetlenül megelőzi a b-t, ha nincsen olyan c tevékenység, amit a megelőz, és ami viszont megelőzi b-t. Jelölje N azon rendezett (a,b) párok halmazát, ahol a közvetlenül megelőzi b-t. Ekkor a az előzmény, b az ,,utózmány''. Célunk az, hogy a ház a lehető legrövidebb idő alatt elkészüljön. Ehhez természetesen ismerni kell az egyes tevékenységek elvégzéséhez szükséges időt, amit az a tevékenység esetén ca jelöl.
1. példa: Különösen családi ház építésénél fordul elő, hogy az egész ház elkészítését részfeladatokra bontják fel, és a leendő tulajdonos mindig azt a már elvégezhető részfeladatot csináltatja meg, amire pénze van. Tekintsük most egy ilyen részfeladatot, nevezetesen a gáz bevezetését az utca alatt található csőből egy kisebb átmérőjű, föld alatt vezetett csövön keresztül a házba. Az egyszerűség kedvéért tegyük fel, hogy ez a részfeladat mindössze a következő tevékenységekből áll: előkészítés (s), a cső elhelyezéséhez szükséges árok kiásása (a), a cső szerelése (c), szigetelés (g), a cső leeresztése az árokba (l), a vezeték bekötése (k), a vezeték próbája (p), az árok befedése (b). Zárójelben mindenütt az a betű áll, amivel az alábbiakban az adott tevékenységre hivatkozunk. A tevékenységek elvégzéséhez szükséges időket, az egyes tevékenységek közvetlen előzményeit és az egyes tevékenységek megkezdésének ütemezését az alábbi táblázat foglalja össze. A tevékenységek ütemezését alább elemezzük.
  tevékenység    elvégzés ideje    előzmény    kezdet időpontja    befejezés időpontja    s    1    -    0    1    a    10    s    1    11    c    3    s    1    4    g    4    c    4    8    l    2    a,g    11    13    k    1    l    13    14    p    1    k    14    15    b    2    p    15    17  
Tegyük fel, hogy a tevékenységeket megkezdésük után megszakítás nélkül folyamatosan végezzük. Ütemezzük az s tevékenységet a képzeletbeli 0 időpontra, így s az 1 időpontban fejező-dik be. Ennél előbb sem a, sem c nem kezdődhet el. Ha mindkettőt valóban megkezdjük ekkor, úgy a a 11, c a 4 időpontban fejeződik be. A 4 időpontban azonnal hozzáfoghatunk a g tevékenységhez, és az a 8 időpontban ér véget. Ekkor azonban a még hátralévő tevékenységek, azaz l, k, p, b, egyike sem kezdődhet el, mert mindegyiknek van egy-egy olyan előzménye, ami még nem készült el. Ez a helyzet a 11 időpontban változik, amikor a elkészül, és így hozzáfoghatunk l-hez. A továbbiakat a táblázatunk tartalmazza, amiből kiderül, hogy a teljes szereléshez 17 időegység szükséges.
A gyakorlatban egy ház felépítése vagy egy nagyobb szerelési munka sok száz vagy ezer tevékenységből állhat, és ennek a nyomonkövetése kézzel már igen nehézkes. Ezért célunk egy olyan módszer kifejlesztése, amely számítógéppel végezhető.
Az a1, a2, ..., ak tevékenységeket útnak mondjuk, ha (a1,a2), (a2,a3), ..., (ak-1,ak)N. Ha a1, a2, ..., ak út, és még az is teljesül, hogy a1=ak, akkor az utat körnek nevezzük. Első megállapításunk éppen az, hogy tevékenységekből nem lehet kört alkotni. Hiszen ekkor a2-t nem lehet elkezdeni amíg a1-et be nem fejeztük, a3-at, amíg a2-t be nem fejeztük, és így tovább, egészen addig, hogy ak=a1-et sem lehet elkezdeni addig, amíg ak-1 nincs kész, azaz a tevékenységek körben várnának egymásra, semelyikhez sem lehetne hozzákezdeni.
Feltesszük továbbá, hogy létezik egy s kezdeti tevékenység, egy első kapavágás, aminek minden más tevékenységet meg kell előznie, és egy t befejező tevékenység, a kulcsátadás, aminek minden más tevékenységet követnie kell.
Ütemezni fogjuk a tevékenységek megkezdését. Az s kezdeti tevékenységet a képzeletbeli 0 időpontra tesszük. Általában az a tevékenység megkezdésének időpontját μ(a) jelöli. Ha a közvetlenül megelőzi b-t, akkor b megkezdését csak olyan időpontra lehet ütemezni a megkezdéséhez viszonyítva, hogy legyen elegendő idő a teljes elvégzésére. Így az alábbi feltételeket kapjuk:
μ(s)=0(16)
  minden  (a,b)N  esetén  μ(a)+caμ(b).(17)
Amikor a t tevékenységhez hozzákezdünk a μ(t) időpontban, akkor már minden más tevékenységnek be kellett fejeződnie. Tehát a ház a kulcsátadás befejezésével, a μ(t)+ct időpontban ér véget. Ez az érték nem más, mint az úgynevezett teljes átfutási idő, vagyis az az idő, ami az építés megkezdésétől annak teljes befejezéséig eltelik. Célunk tehát ennek minimalizálása. Így a célfüggvény
minμ(t)+ct(18)
lesz. A ct érték konstans, ezért elhagyható volna, hiszen az optimális megoldást nem befolyásolja, de a későbbiekben szükségünk lesz rá. Most egy minimalizálási feladatot fogalmaztunk meg, ami az eddigiek szerint a duális feladat. Meg kell adni tehát a primál feladatot is.
Tegyük fel, hogy P egy, a fenti értelemben vett út, amely az a1, a2, ..., ak tevékenységekből áll. A P út hosszának a γ(P)=ca1+ca2+...+cak mennyiséget nevezzük. A primál feladat a leghosszabb s-ből t-be vezető út megkeresése. Formálisan
maxγ(P)P={a1,a2,...,ak}  út  s=a1  és  t=ak.(19)

5. tétel: Legyen μ egy tetszőleges ütemezés, amely eleget tesz a (16)‐(17) feltételeknek, P={s=a1,a2,...,ak=t} pedig egy s-ből t-be vezető út. Ekkor
γ(P)μ(t)+ct.(20)

 
Bizonyítás:  Mivel a1=s, ezért μ(a1)=0. Így a (17) feltételből következik, hogy μ(a2)ca1, hiszen a1 megelőzi a2-t. Hasonlóképpen a2 megelőzi a3-at, ezért μ(a3)μ(a2)+ca2ca1+ca2. A gondolatmenetet így folytatva kapjuk, hogy μ(t)=μ(ak)ca1+ca2+...+cak-1. Itt mindkét oldalhoz hozzáadva a ct mennyiséget, azonnal adódik a kívánt állítás.
Ez tehát a gyenge dualitási tétel. Az erős dualitási tétel bizonyítása azonnal megadja azt az eljárást, amivel az optimális ütemezést meg lehet határozni.
6. tétel: Létezik egy olyan P¯ út s-ből t-be és egy μ¯ ütemezés, hogy γ(P¯)=μ¯(t)+ct.
 
Bizonyítás:  Legyen μ egy tetszőleges ütemezés. Azt mondjuk, hogy az (a,b)N pár a μ ütemezés szerint kritikus, ha μ(b)=μ(a)+ca. Tegyük fel, hogy a1, a2, ..., ak a tevékenységeknek egy olyan sorozata, hogy az (a1,a2), (a2,a3), ..., (ak-1,ak) párok mind kritikusak. Ezért
μ(ak)=μ(ak-1)+cak-1=μ(ak-2)+cak-2+cak-1=...=μ(a1)+ca1+ca2+...+cak-1.(21)
Az {a1,a2,...,ak} utat egy a1-ből ak-ba vezető kritikus útnak nevezzük.
Megadunk egy módszert, ami lépésenként szerkeszti meg az optimális μ¯ ütemezést. Az eljárás feltételezi, hogy létezik a tevékenységeknek egy olyan S halmaza, amelynek az s kezdeti tevékenység eleme, és S minden a elemére teljesül, hogy létezik egy olyan s-ből a-ba vezető út, hogy az ebben az útban szereplő összes tevékenység S eleme, és ez az út egyben μ¯ szerint kritikus. A módszer minden egyes lépése kibővíti az S halmazt egy további tevékenységgel.
Kezdetben az S halmaz álljon egyedül az s kezdeti tevékenységből, és (16) szerint legyen μ¯(s)=0. Ekkor az S halmazra a mondott követelmények teljesülnek. Jelölje T most azokat a tevékenységeket, amelyek nem tartoznak bele az S halmazba. Azt állítjuk, hogy a T-beli tevékenységek között van olyan, amelynek minden előzménye az S halmazban található. Ha ugyanis ez nem igaz, akkor minden T-beli b tevékenységnek létezik egy T-beli a előzménye. Válasszunk egy tetszőleges T-beli b0 tevékenységet. Tehát ennek van egy T-beli b1 előzménye. Hasonlóképpen az utóbbinak van egy T-beli b2 előzménye, és így folytathatjuk a sort a végtelenségig. Mivel azonban csak véges sok tevékenység van a T halmazban, ezért ebben a sorozatban legalább egy tevékenység ismételten fellép. Ez azonban azt jelenti, hogy a fenti értelemben létezik egy kör, ami ellentmondás.
Legyen most már bT az a tevékenység, amelynek minden előzménye az S halmazban található. Jelölje E ezen előzmények halmazát. Legyen
μ¯(b)=max{μ¯(a)+caaE}.(22)
Legyen a¯ egy olyan tevékenység, amire a (22) egyenlet jobboldalán maximumot kapunk. Ekkor μ¯(b)=μ¯(a¯)+ca¯, azaz az (a¯,b) pár kritikus. Továbbá létezik s-ből a¯-ba vezető kritikus út. Legyen ez s=a1, a2, ..., ak=a¯. Ekkor s=a1, a2, ..., ak=a¯, b egy s-ből b-be vezető kritikus út. (21) szerint
μ¯(b)=μ¯(s)+ca1+ca2+...+cak=ca1+ca2+...+cak.(23)
vagyis a b tevékenységet arra az időpontra ütemeztük, amely megegyezik az s-ből a b-be vezető kritikus út hosszával.
Mindezen műveletek elvégzése után a b tevékenység a T halmazból átkerül az S halmazba. Ez az eljárás nem folytatható akármeddig, mert elfogynak az S halmazon kívüli tevékenységek, azaz végül maga a t befejező tevékenység is az S halmazba fog tartozni. Ekkor μ¯(t) az s-ből t-be vezető kritikus út hossza lesz tehát, ami ekvivalens az állítással.
Könnyen ellenőrizhető, hogy a 1. példa számítási módszere azonos a bizonyításban közölt módszerrel. Egyes tevékenységek esetleg később is kezdhetők a számítottnál anélkül, hogy az átfutási idő meghosszabodna. Ilyen volt a példában a c tevékenység. De evvel a módszerrel mindig a lehetséges legkorábbi kezdési időket kapjuk meg. A lehetséges legkésőbbi kezdési időket, amikor az átfutási idő még mindig minimális, akkor kapjuk, ha a módszert a befejező tevékenységből visszafelé haladva fordított irányban végezzük el.
 
 
A Lagrange duál feladat
 
 

Bonyolultabb problémák esetén egy primál feladathoz több különböző duális feladatot is be lehet vezetni. Az egyik leggyakrabban használt típust nevezik Lagrange duál feladatnak.
Ha a primál feladatot valamilyen oknál fogva nehéz megoldani, viszont a duál feladatot magát megoldani vagy egy megengedett megoldását megtalálni könnyű, akkor a duál feladat bevezetésével azt nyerjük, hogy kapunk egy könnyen számítható felső korlátot a primál feladat optimális célfüggvényértékére. Éppen ez a helyzet a hátizsák feladat*A hátizsák feladatot tárgyalja a "Mit tegyünk a hátizsákba, hogyan váltsunk fel pénzt?" c. cikk a KÖMAL 1996/7. és 8. számában. esetében. Legyen n, b, a1, a2, ..., an,   c1, c2, ..., cn pozitív egész. Ekkor a hátizsák feladat
maxc1x1+c2x2+...+cnxna1x1+a2x2+...+anxnbx1,x2,...,xn = 0  vagy  1.(24)
Legyen λ egy tetszőleges, rögzített nemnegatív valós szám. Tekintsük a
max(c1-λa1)x1+(c2-λa2)x2+...+(cn-λan)xn+λbx1,x2,...,xn=0  vagy  1.(25)
feladatot. Az utóbbi feladat optimális célfüggvényértéke mindig legalább akkora, mint a hátizsák feladaté, ugyanis
(c1-λa1)x1+(c2-λa2)x2+...+(cn-λan)xn+λb==(c1x1+c2x2+...+cnxn)+λ(b-a1x1-a2x2-...-anxn).
Ha az x1, x2, ..., xn értékek kielégítik a hátizsák feladat feltételeit, akkor itt az egyenlőség jobboldalának második tagja két nemnegatív szám szorzata, tehát a teljes kifejezés legalább akkora, mint (c1x1+c2x2+...+cnxn), vagyis a hátizsák feladat célfüggvényének értéke az x1, x2, ..., xn értékek mellett.
A (25) feladatot nagyon egyszerű megoldani, mivel a változók nincsenek közvetlen hatással egymásra, ezért mindegyik értéke úgy választható meg a többitől függetlenül, hogy az a célfüggvény szempontjából a lehető legjobb legyen, vagyis az optimális megoldást a következő képlet adja:
x¯j={0ha  cj-λaj<00  vagy  1ha  cj-λaj=01ha  cj-λaj>0(26)
Ez vezet oda, hogy más esetekben is érdemes lehet valamely primál feladat helyett a (25) feladat megfelelő változatát megoldani. Most ezt megfogalmazzuk általánosan.
Legyen m és n pozitív egész. Az f és g1, g2, ..., gm legyenek az x1, x2, ..., xn változók valós függvényei. Az S halmaz elemei legyenek rendezett szám n-esek. Végül legyen b1, b2, ..., bm rögzített valós szám. Primál feladatunk a következő:
maxf(x1,x2,...,xn)g1(x1,x2,...,xn)b1g2(x1,x2,...,xn)b2...gm(x1,x2,...,xn)bm(x1,x2,...,xn)S.(27)
Mind a lineáris programozási, mind a hátizsák feladat szerkezete beleillik ebbe az általános keretbe. A lineáris programozási feladat esetén az S halmaz az összes nemnegatív komponensekből álló szám n-es volt. A hátizsák feladatnál pedig az összes olyan, amelyben csak 0 és 1 szerepel. (Az, hogy S rendezett szám n-eseket tartalmaz, a következő példával magyarázható el. Tegyük fel, hogy n=3, és (1,2,3)S de (3,2,1)S. Ekkor az x1=1, x2=2, x3=3 értékek a feladat egy megengedett megoldását adják, feltéve, hogy ezeket behelyettesítve az egyenlőtlenségekbe, azokat kielégítik. Azonban az x1=3, x2=2, x3=1 értékek akkor sem adnak megengedett megoldást, ha velük az egyenlőtlenségek teljesülnek, mivel ez az értékrendszer nincs benne az S halmazban, vagyis amikor x1=3, akkor nem lehet x2=2 és egyidejűleg x3=1.)
7. tétel: Legyen λ1, λ2, ..., λm0 rögzített valós szám. Ekkor
maxf(x1,x2,...,xn)max(f(x1,x2,...,xn)+i=1mλi(bi-gi(x1,x2,...,xn))g1(x1,x2,...,xn)b1g(x1,x2,...,xn)b2(x1,x2,...,xn)S...gm(x1,x2,...,xn)bm(x1,x2,...,xn)S.(28)

Megjegyzés: A tétel azt állítja, hogy a primál feladat optimális célfüggvényértéke nem lehet nagyobb, mint egy másik feladaté, amiben az egyetlen feltétel az, hogy (x1,x2,...,xn) szám n-es az S halmaz eleme. A λ1, λ2, ..., λm mennyiségek a Lagrange-szorzók, a jobboldali feladat pedig a (rögzített szorzók melletti) Lagrange-feladat.
 
Bizonyítás:  Ha az x1, x2, ..., xn értékek kielégítik a primál feladat feltételeit, akkor a jobboldali feladat célfüggvényének második tagja nem lehet negatív, tehát ennek értéke legalább akkora, mint a primál feladat célfüggvényéé.
Innen a következő, úgynevezett Lagrange-duál feladatot lehet kitűzni:
minmax(f(x1,x2,...,xn)+i=1mλi(bi-gi(x1,x2,...,xn))(λ1,λ2,...,λm):(x1,x2,...,xn):λ1,λ2,...,λm0(x1,x2,...,xn)S.(29)
A λ1, λ2, ..., λm számokat szokás Lagrange-szorzóknak nevezni. A 7. tétel szerint ez a feladat kielégíti azt a követelményt, amit egy duál feladatnak kell. Így a tétel maga nem volt más, mint a gyenge dualitási tétel. A (29) feladat tulajdonképpen az adott módszerrel megkapható legpontosabb, azaz legkisebb, tehát a legjobb felső korlátot határozza meg.
Itt azonban az erős dualitási tétel már nem igaz. Erre példa az alábbi feladat.
max6x1+5x2+3x2x1+x2+x32x1+x2-x31x1x2x3 = 0 vagy 1.
Mivel mindhárom változó külön-külön csak két értéket vehet fel, ezért összesen nyolc eset lehetséges. Ebből a nyolcból az első egyenlőtlenség csak azt az esetet zárja ki, amikor mindhárom változó 1, a második meg csak azt, amikor x1=x2=1, x3=0. Innen könnyen látható, hogy az optimális megoldás x1=1, x2=0, x3=1. Az ehhez tartozó célfüggvényérték 9. A megfelelő Lagrange-feladat rögzített λ1 és λ2 mellett
max(6-λ1-λ2)x1+(5-λ1-λ2)x2+(3-λ1+λ2)x3+2λ1+λ2x1,x2,x3=0  vagy  1.(30)
Itt λ1 és λ2 valamilyen nemnegatív számok. Ezért a célfüggvényben x1 együtthatója biztosan nagyobb, mint x2-é. Ezért a Lagrange-feladatnak semmilyen λ1 és λ2 sem lehet olyan optimális megoldása, amelyben x1=0 és x2=1. Így összesen hat különböző optimális megoldás lehetséges. Ezeket egyenként végigvizsgálva látható, hogy a feladat célfüggvénye soha nem kisebb, mint 10, azaz fellép a dualitási gyepű. Mi most a hat lehetséges eset közül azt vizsgáljuk meg, amikor x1=x2=x3=1. Ekkor
6-λ1-λ20,5-λ1-λ20,3-λ1+λ20.
Az első egyenlőtlenség következik a másodikból, így ezzel külön nem kell foglalkozni. Az x értékek helyére behelyettesítve 1-et, a célfüggvény értéke 14-λ1 lesz. Tehát ahhoz, hogy a célfüggvény a lehető legkisebb legyen, λ1-et a lehető legnagyobbra kell választani. Azonban a második és harmadik egyenlőtlenséget összeadva és egyszerűsítve azt kapjuk, hogy λ14. Tehát ebben az esetben a célfüggvény értéke legalább 10. Hasonlóan elemezhető a további öt eset. Mindig azt kapjuk, hogy a Lagrange-feladat optimális célfüggvényértéke legalább 10. Tehát a Lagrange-duál feladatéé is, amely nem más, mint megkeresni λ1 és λ2 azon értékét, amire a (30) feladat optimális célfüggvényértéke minimális.
Megjegyezzük, hogy egyes esetekben, például amikor a (27) probléma egy lineáris programozási feladat, igaz az erős dualitási tétel is.
Vizvári Béla Eötvös Loránd Tudományegyetem, Operációkutatási Tanszék

 

 

**

***