Általános algoritmustervezési módszerek



Hasonló dokumentumok
Az optimális megoldást adó algoritmusok

álló algoritmusosztályok. Approximációs algoritmusoknak egy olyan algoritmust. Minden algoritmusnak polinomiális idejűnek kell

Ütemezési feladatok. Az ütemezési feladatok vizsgálata az 50-es évek elején kezdődött, majd

Korlátozás és szétválasztás elve. ADAGOLO adattípus

Ütemezési modellek. Az ütemezési problémák osztályozása

Approximációs algoritmusok

Online migrációs ütemezési modellek

Partíció probléma rekurzíómemorizálással

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Korlátozás és szétválasztás módszere Holló Csaba 2

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2018/

A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2017/

Függvények növekedési korlátainak jellemzése

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Programozási módszertan. Mohó algoritmusok

Ütemezési problémák. Kis Tamás 1. ELTE Problémamegoldó Szeminárium, ősz 1 MTA SZTAKI. valamint ELTE, Operációkutatási Tanszék

i=1 i+3n = n(2n+1). j=1 2 j < 4 2 i+2 16 k, azaz az algoritmus valóban konstans versenyképes.

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Mohó algoritmusok. Példa:

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Adaptív dinamikus szegmentálás idősorok indexeléséhez

Optimalizálás alapfeladata Legmeredekebb lejtő Lagrange függvény Log-barrier módszer Büntetőfüggvény módszer 2017/

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Példa. Job shop ütemezés

definiálunk. Legyen egy konfiguráció, ahol és. A következő három esetet különböztetjük meg. 1. Ha, akkor 2. Ha, akkor, ahol, ha, és egyébként.

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Dinamikus programozás - Szerelőszalag ütemezése

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Algoritmusok és adatszerkezetek gyakorlat 07

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

Az online algoritmusok k-szerver probléma

Fibonacci számok. Dinamikus programozással

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Algoritmizálás, adatmodellezés tanítása 8. előadás

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

1/ gyakorlat. Hiperbolikus programozási feladat megoldása. Pécsi Tudományegyetem PTI

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Véges automaták, reguláris nyelvek

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

Sorozatok I. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma)

MŰSZAKKIOSZTÁSI PROBLÉMÁK A KÖZÖSSÉGI KÖZLEKEDÉSBEN

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

E-tananyag Matematika 9. évfolyam Függvények

Analízis előadás és gyakorlat vázlat

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

KOVÁCS BÉLA, MATEMATIKA I.

Amortizációs költségelemzés

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 12.

KOVÁCS BÉLA, MATEMATIKA I.

2010. október 12. Dr. Vincze Szilvia

15. A VERSENYRENDEZÉS

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

Konjugált gradiens módszer

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Struktúra nélküli adatszerkezetek

A félév során előkerülő témakörök

Gauss-Seidel iteráció

Követelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet

Vektorterek. Több esetben találkozhattunk olyan struktúrával, ahol az. szabadvektorok esetében, vagy a függvények körében, vagy a. vektortér fogalma.

Követelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Adatszerkezet - műveletek

1. A k-szerver probléma

V. DISZKRÉT OPTIMALIZÁCIÓ

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

2017/ Szegedi Tudományegyetem Informatikai Intézet

p j p l = m ( p j ) 1

Számítógép hálózatok, osztott rendszerek 2009

A lineáris programozás alapjai

A digitális számítás elmélete

Sorozatok, sorok, függvények határértéke és folytonossága Leindler Schipp - Analízis I. könyve + jegyzetek, kidolgozások alapján

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Analízis I. Vizsgatételsor

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

Az online algoritmusok k-szerver probléma

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Algoritmuselmélet 2. előadás

EuroOffice Optimalizáló (Solver)

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

15. LINEÁRIS EGYENLETRENDSZEREK

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

Információs Technológia

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

Átírás:

Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás elve ütemezési feladatok megoldására. Dinamikus programozás A dinamikus programozás lényege, hogy az optimális megoldás célfüggvényértékét kisebb részfeladatok célfüggvényértékei alapján határozzuk meg, és az aktuális részfeladatok célfüggvényértékeit is rendre rekurzív módon mindig kisebb részfeladatok alapján kapjuk meg. Az eljárás lényegében felfogható mint egy táblázat soronkénti kitöltése. Az algoritmus általában egy rekurzív reláción alapul, amely megadja, hogy miként kapjuk meg a bonyolultabb részfeladatok megoldásait az egyszerűbb részfeladatok megoldásai alapján. Az eljáráshoz szükséges még a kezdeti feltételek megadása, amelyek a legegyszerűbb részfeladatok (általában triviális) megoldásait adják meg. Nem részletezzük a dinamikus programozási eljárás ismertetését, a részletek megtalálhatóak a legtöbb bevezető algoritmuselméleti könyvben (pl [1]). Két dinamikus programozási algoritmust ismertetünk mindkettőt az 1 h j (C j ) problémára (egy gépünk van, a célfüggvény a h j (C j ) függvény minimalizálása, ahol h j egy monoton függvény minden j-re). A célfüggvény reguláris (monoton a befejezési időkben), így csak olyan ütemezéseket kell vizsgálnunk, amelyekben a gép folyamatosan dolgozik. Előre építő algoritmus 1 h j (C j ) Legyen J egy részhalmaza a munkáknak és tegyük fel, hogy elsőként a J-beli munkákat hajtjuk végre! Legyen V (J) az optimális j J h j (C j ) érték, amely a J halmaz ütemezésével elérhető! Ekkor a dinamikus programozási eljárás a következő kezdeti feltételeken és a következő rekurzív reláción alapul. Kezdeti feltételek: V ({j}) = h j (p j ), Rekurzív reláció: j = 1,..., n 1

V (J) = min {V (J \ {j}) + h j( p k )}. j J k J Az eljárás minden iterációs részben meghatározza egy adott halmazára a munkáknak az optimális ütemezési sorrendnek a költségét. Kezdetben az 1- elemű halmazokra ezt az értéket a kezdeti feltételek adják meg. Ezt követően amennyiben az összes l-elemű halmazra ismert az optimális érték a rekurzív reláció alapján meghatározzuk az l + 1-elemű munkahalmazokra is. Az optimális ütemezés költségét a teljes halmazra kapott érték adja meg. Amennyiben az eljárás során minden halmazra megjegyezzük, hogy a rekurzív reláció során mely j munka esetén kaptuk a minimális értéket, (azaz mely munkát kell utoljára ütemezni a részhalmaz optimális ütemezéséhez) akkor, ezen információ alapján egyből megkapjuk az optimális ütemezést is. Vizsgáljuk most meg az eljárás időigényét! A V (J) értéket ki kell számítanunk minden J részhalmazára a munkáknak, a függvényérték kiszámítható lineáris időben. Mivel egy n elemű halmaz részhalmazainak száma 2 n, ezért az eljárás időigénye O(n2 n ). Hátra építő algoritmus 1 h j (C j ) A hátrafele építő algoritmus az ütemezést az utolsó munkákból kiindulva építi fel. Ismét J a munkák egy részhalmaza és feltesszük, hogy utolsóként a J-beli munkákat hajtjuk végre. A J C halmaz a J halmaz komplementere, azaz azon munkák amelyeket az ütemezés elején hajtunk majd végre. A dinamikus programozással kiszámított függvény V (J) a minimális költsége a J halmazbeli munkáknak, azaz a minimális j J h j (C j ) érték azon feltételek mellett, hogy a J halmaz munkáit ütemezzük az ütemezés végén. Ekkor a dinamikus programozási eljárás a következő kezdeti feltételeken és a következő rekurzív reláción alapul. Kezdeti feltételek: V ({1,..., j 1, j + 1,..., n}) = h j ( n i=1 p i ), Rekurzív reláció: V (J) = min j J {V (J \ {j}) + h j( k J C {j} j = 1,..., n p k )}. Az eljárás hasonló az előző részben megadott eljáráshoz. Az eljárás minden iterációs részben meghatározza egy adott halmazára a munkáknak 2

az optimális sorrendben a költséget feltéve, hogy ez a halmaz helyezkedik el az ütemezésben a munkák sorrendjének a legvégén. Kezdetben az 1- elemű halmazokra ezt az értéket a kezdeti feltételek adják meg, az értékek azon észrevétel alapján adódnak, hogy az utolsó munka befejezési ideje a sorrendtől függetlenül n i=1 p i. Ezt követően amennyiben az összes l- elemű halmazra ismert az optimális érték, akkor a rekurzív reláció alapján meghatározzuk az l + 1-elemű munkahalmazokra is. Az optimális ütemezés költségét a teljes halmazra kapott érték adja meg. Amennyiben az eljárás során minden halmazra megjegyezzük, hogy a rekurzív reláció során, mely j munka esetén kaptuk a minimális értéket, (azaz mely munkát kell elsőként ütemezni a részhalmaz optimális ütemezéséhez) akkor ezen információ alapján egyből megkapjuk az optimális ütemezést is. Most bemutatunk egy dinamikus programozsi algoritmust a P m C max problmra, (m egyforma prhuzamos gp, a cl a maximlis befejezsi id minimalizlsa), amely algoritmusban felttelezzk, hogy egeszek a vgrehajtsi idk. A probléma egy gép esetén triviális bármely olyan ütemezésre, amelyben a gép folyamatosan dolgozik, (nem várunk a munkák elvégzése közben) a max{c j : 1 j m} érték megegyezik a végrehajtási idők összegével. Továbbá az is nyilvánvaló, hogy amennyiben minden munkát elvégzünk, akkor nem fejezhetjük be a munkákat ezen időpont előtt. Ha a gépek száma több, mint 1, akkor a feladat lényegesen nehezebb. Igazolást nyert, hogy n 2 esetén a probléma NP-nehéz. Másrészt ebben az esetben egy lehetséges ütemezést meghatározhatunk azáltal, hogy az egyes munkákat mely gépekhez rendeljük hozzá. Amennyiben minden gépre megkapjuk, hogy mi a géphez rendelt munkáknak a halmaza, akkor minden egyes gépre, az ott levő munkákat optimálisan úgy ütemezhetjük, hogy a a gép folyamatosan dolgozzon, és minden ilyen ütemezésre ugyanannyi lesz a gépen a maximális befejezési idő, a munkáknak a végrehajtási idejeinek az összege. Ezt az értéket a gép töltésének nevezzük. A fogalmat használjuk általánosabb értelemben is, gépek egy halmazának a töltésén a gépekhez rendelt munkák végrehajtási idejeinek az összegének és a gépek számának a hányadosát értjük. Legyen P = n j=1 p j. Definiáljuk az S i (K 1,..., K m 1 ), értékeket i = 0, 1,..., n a következőképpen. Legyen S i (K 1,..., K m 1 ) az a minimális töltés, amely elérhető az M m gépen az első i munka ütemezése során olyan ütemezéssel, amelyben az M j gépen a töltés legfeljebb K j minden j = 1,..., m 1-re. A függvény definíciója alapján S i (K 1,..., K m 1 ) =, ha K j < 0 valamely j-re, hiszen ekkor nincs a j-edik gép töltésére vonatkozó 3

feltételt kielégítő ütemezés. Továbbá S 0 (K 1,..., K m 1 ) = 0 minden 0 K j P értékre. Egyszerű esetszétválasztás alapján (attl fggen, hol temezzk az utols munkt) adódik, hogy az S i függvényekre teljesül a következő rekurzió: ahol S i+1 (K 1,..., K m 1 ) = min{p i+1 + S i (K 1,..., K m 1 ), MIN}, MIN = min j {S i (K 1,..., K j 1, K j p i+1, K j+1,..., K m 1 }. A fenti észrevételek alapján könnyű felépíteni egy dinamikus programozási algoritmust, amely megoldja a P m C max problémát egész végrehajtási idők mellett. A kezdeti feltételek és a rekurzió alapján kiszámoljuk az S n (K 1,..., K m 1 ) értékeket, minden egész 0 K j P, j = 1,..., m 1 értékre. Ezt követően az optimális célfüggvényérték a minimális max{s n (K 1,..., K m 1 ), max 1 j m 1 K j } érték lesz. Másrészt ha az eljárás során (mint az dinamikus programozási algoritmusoknál szokásos) mindig megjegyezzük, hogy az aktuális S i+1 függvényértéket melyik S i érték alapján kapjuk, akkor az optimális célfüggvényértéket adó S n érték alapján visszafejthető az optimális ütemezés. Tehát a fentiekben bemutatott algoritmus megoldja a problémát. Vizsgáljuk a futási időt. Az eljárás során lényegében ki kell töltenünk n darab P n 1 méretű táblázatot (a lehetséges K 1,..., K n 1 értékek), minden érték kiszámítása m műveletet igényel, tehát a futási idő O(mnP m 1 ), azaz rögzített m mellett polinomiális n-ben és P = n j=1 p j -ben. A probléma az, hogy az input mérete nem P, hanem log P, mivel binárisan reprezentáljuk a számokat. Unáris reprezentálás mellett az algoritmus polinomiális lenne. (Érdemes megjegyeznünk, hogy az ilyen algoritmusokat pszeudopolinomiális algoritmusoknak nevezzük.) Korlátozás és szétválasztás elve A korlátozás és szétválasztás elvén alapuló eljárások rendkívül széles körben használtak optimalizálási problémák megoldására. Tekintsünk egy tetszőleges minimalizálási feladatot, ahol a z függvény minimumát keressük egy L halmazon. Az eljáráshoz két függvény szükséges. Az egyik a szétválasztási függvény, amely a lehetséges megoldások egy tetszőleges részhalmazához a halmaz egy valódi osztályozását rendeli 4

hozzá (bizonyos változatokban egy a lehetséges megoldásokat tartalmazó, bővebb, de jobb struktúrával rendelkező halmazra defináljuk a szétválasztási függvényt). A másik egy korlátozó függvény, amely egy tetszőleges L L halmazhoz az L halmazon felvett függvényértékek egy alsó korlátját rendeli hozzá. A korlátozás és szétválasztás elvének alapgondolata, hogy a lehetséges megoldásokat egy fa struktúra leveleiben reprezentáljuk, és utána ezt a struktúrát járjuk be. A fa struktúrát a szétválasztási függvény által kapjuk meg. A korlátozó függvény szerepe ott jön elő, hogy a korlátozó függvény segítségével levághatjuk bizonyos részfáit a lehetséges megoldásokat ábrázoló struktúrának. Amennyiben egy részfára tudjuk, hogy a benne szereplő lehetséges megoldások mindegyikére a célfüggvény értéke legalább C és van egy lehetséges megoldásunk, amelyre a célfüggvényérték C, akkor a részfát elhagyhatjuk, hisz nem találhatunk benne jobb megoldást a már ismertnél. Nem mutatjuk be a korlátozás és szétválasztás elvén alapuló eljárás formális és részletes leírását, nem ismertetjük az eljárás helyességének igazolását, a különböző változatokat. Mindezek a részletek megtalálhatóak a [2] egyetemi jegyzetben. 1 r j L max probléma Példaként az 1 r j L max problémát tekintjük (egy gép, r j érkezési és d j határidők, cél az L j = C j d j értékek maximumának minimalizálása). A szétválasztás elve itt azon alapul, hogy az ütemezést az időrendben első munkától kezdve építjük fel. A lehetséges munkasorrendeket tartalmazó fát a következőképpen konstruálhatjuk meg. A 0-adik szintben a gyökérben még egyetlen munka helyét sem fixáltuk az ütemezésben. Ezt követően az első szinten n csúcs van, minden egyes munkához a megfelelő részfa azokat a sorrendeket fogja tartalmazni, amelyben az adott munkát hajtjuk végre elsőként. Ezt követően a második szinten a sorrendben második munkát fixáljuk, tehát n(n 1) csúcs van a második szinten. Így folytatva az n- edik szinten a levelekben megkapjuk az összes lehetséges munkasorrendet. Az eljárásban nem kell minden esetben az összes lehetséges kezdeti sorrendet figyelembe vennünk. Ha a k 1-edik szinten a j 1, j 2,..., j k 1 munkákat már fixáltuk a sorrend elején, akkor csak azokat a j k munkákat kell figyelembe vennünk következő munkaként, amelyekre r jk < min l J {max(t, r l) + p l }, ahol J a még nem ütemezett munkák halmaza, és t a j k 1 munka befejezési 5

ideje. Azért elegendő a fenti feltételt kielégítő munkákat figyelembe venni, mert a fenti feltételt nem kielégítő munkák előtt még ütemezhetünk más munkát anélkül, hogy a tekintett munka kezdési idejét csökkentenénk. A következő korlátozó függvényt alkalmazzuk. A k 1-edik szinten a hátralevő munkákat ütemezzük megszakítást is megengedve. Az egyszerű elveknél használt bizonyításhoz hasonlóan igazolható, hogy ezt az ütemezési problémát az EDD szabály optimálisan megoldja. Amennyiben a korlátozó függvény kiszámítása során olyan lehetséges megoldást kapunk, amelyben nincsenek megszakítások, akkor egy újabb lehetséges megoldáshoz jutunk, és mindazon részfákat, amelyekhez nagyobb korlát tartozik, mint a kapott megoldáshoz elhagyhatjuk. References [1] T. H. Cormen, C. E. Leiserson, R. l. Rivest, Introduction to algorithms, MIT Press, 1990. [2] Imreh B., Kombinatorikus Optimalizálás, NOVODAT, 1999. 6