. elo ada s Moho algoritmusok Sergya n Szabolcs sergyan.szabolcs@nik.uni-obuda.hu O budai Egyetem Neumann Ja nos Informatikai Kar Alkalmazott Informatikai Inte zet / 6
Tartalom Pe nzkifizete s 0- ha tizsa k proble ma Moho algoritmusok a dinamikus programoza ssal szemben Moho strate gia 5 U temeze si feladatok Eseme ny kiva laszta si proble ma Eseme ny elku lo nı te si proble ma U temeze s ke se s minimaliza la ssal / 6
Tartalom Pe nzkifizete s 0- ha tizsa k proble ma Moho algoritmusok a dinamikus programoza ssal szemben Moho strate gia 5 U temeze si feladatok Eseme ny kiva laszta si proble ma Eseme ny elku lo nı te si proble ma U temeze s ke se s minimaliza la ssal / 6
Postai pe nzta ros Feladat Egy nyugdı jas elmegy a posta ra, hogy felvegye 79.85 Ft-os nyugdı ja t. Hogyan tudja a postai pe nzta ros kifizetni neki ezt az o sszeget u gy, hogy a kifizete shez a leheto legkevesebb darab cı mletet haszna lja? Megjegyze sek Rendelkeze sre a llo cı mletek: 0.000, 0.000, 5.000,.000,.000, 500, 00, 00, 50, 0, 0 e s 5 Ft-os. Tegyu k fel, hogy minden cı mletbo l korla tlan mennyise g van a posta n. Az nem tekintheto megolda snak, ha a nyugdı jasnak vissza kell adnia. (Pl.: a pe nzta ros ad 80.000 Ft-ot db 0.000 Ft-os cı mlettel, majd a nyugdı jas visszaad 55 Ft-ot.) / 6
Postai pe nzta ros Megolda s A pe nzta ros az ala bbi cı mleteket fogja adni: db 0.000 Ft-os = 60.000 Ft db 0.000 Ft-os = 0.000 Ft db 5.000 Ft-os = 5.000 Ft db.000 Ft-os =.000 Ft db 500 Ft-os = 500 Ft db 00 Ft-os = 00 Ft db 00 Ft-os = 00Ft db 0 Ft-os = 0 Ft db 5 Ft-os = 5 Ft 79.85 Ft Ez o sszesen db papı r pe nzt, illetve pe nze rme t jelent. 5 / 6
Postai pe nzta ros Ke rde s Megoldhato a feladat kevesebb cı mlettel is? Va lasz Nem. (Ezt nem fogjuk pontosan bizonyı tani, de az eddigi tapasztalataink alapja n tudjuk, hogy egy optima lis megolda st adtunk meg.) 6 / 6
Pe nzkifizete s Pszudoko d Bemenet: x ege sz, c ege sz rendezett to mb, n ege sz Kimenet: db ege sz to mb fu ggve ny Pe nzkifizete s(x, c, n) db Le trehoz(ege sz)[n] ciklus i -to l n-ig db[i] 0 ciklus ve ge j n ciklus amı g x > 0 ciklus amı g c[j] > x j j ciklus ve ge db[j] db[j] + x x c[j] ciklus ve ge vissza db fu ggve ny ve ge 7 / 6
Postai pe nzta ros A bemutatott algoritmus egy moho algoritmus, mert mindig a legnagyobb va laszthato cı mletet va lasztja ki. A moho algoritmus ebben a pe lda ban optima lis megolda st ad. 8 / 6
Leve lfelada s Feladat Nyugdı jasunk szeretne feladni egy levelet, mely 00 Ft-ba keru l. Hogyan lehet ezt megtenni, ha a leheto legkevesebb sza mu be lyeget szeretne nk a borı te kra tenni. Megjegyze s Rendelkeze sre a llo be lyegcı mletek:.500 Ft.000 Ft 700 Ft 0 Ft 0 Ft 00 Ft 0 Ft 9 / 6
Leve lfelada s Megolda s Ha a moho algoritmust haszna ljuk oly mo don, hogy mindig a leheto legnagyobb cı mletu be lyeget ragasztjuk fel, akkor az ala bbi megolda st kapjuk: 0 db.500 Ft-os = 0 Ft db.000 Ft-os =.000 Ft 0 db 700 Ft-os = 0 Ft db 0 Ft-os = 0 Ft 0 db 0 Ft-os = 0 Ft 0 db 00 Ft-os = 0 Ft 6 db 0 Ft-os = 60 Ft.00 Ft-os Az algoritmus szerint 8 db be lyegre van szu kse gu nk. 0 / 6
Leve lfelada s Megolda s elemze se Ko nnyen la thato, hogy a moho algoritmus a ltal adott megolda s most nem optima lis. Az optima lis megolda s db 700 Ft-os be lyeg va laszta sa lenne. / 6
Tartalom Pe nzkifizete s 0- ha tizsa k proble ma Moho algoritmusok a dinamikus programoza ssal szemben Moho strate gia 5 U temeze si feladatok Eseme ny kiva laszta si proble ma Eseme ny elku lo nı te si proble ma U temeze s ke se s minimaliza la ssal / 6
0- ha tizsa k proble ma Vizsga ljuk meg, hogy a dinamikus programoza sna l megismert 0- ha tizsa k proble ma megoldhato -e moho strate gia val. A proble ma megfogalmaza sa Adott n darab ta rgy Az i-edik ta rgy e rte ke: pi Az i-edik ta rgy su lya: wi Kiva lasztando a ta rgyak olyan re szhalmaza, melyek e rte ke nek o sszege a leheto legnagyobb, miko zben a su lyuk o sszege nem haladja meg a ha tizsa k c kapacita sa t. / 6
0- ha tizsa k proble ma Megolda s moho algoritmussal Elso ko rben el kell do ntenu nk, hogy milyen jellemzo alapja n akarunk moho strate gia t folytatni: E rte k alapja n Su ly alapja n E rte k/su ly ara ny alapja n Tekintsu k pl. az e rte k/su ly ara ny alapu megko zelı te st. Legyenek a ta rgyak e rte k/su ly ara ny alapja n cso kkeno mo don rendezettek, azaz p pn p.... w w wn / 6
0- ha tizsa k proble ma Pszeudoko d Bemenet: p ege sz to mb, w ege sz to mb, n ege sz (to mb me rete), c ege sz Kimenet: S ege sz halmaz fu ggve ny Moho 0-Ha tizsa k(p, w, n, c) S i ciklus amı g (c > 0) (i n) ha w [i] c akkor S S {i} c c w [i] ela gaza s ve ge i i + ciklus ve ge vissza S fu ggve ny ve ge 5 / 6
0- ha tizsa k proble ma Optima lis megolda st ad a moho strate gia? Tekintsu k az ala bbi pe lda t: Ha rom ta rgyunk van: p = 60, w = 0; p = 00, w = 0; p = 0, w = 0. A ha tizsa kunk me rete c = 50 egyse gnyi. A moho strate gia alapja n az. e s. ta rgyat fogjuk kiva lasztani, ı gy tele rakjuk a zsa kot e s o sszesen 60 e rte ku ta rgyat viszu nk el. Ha viszont a. e s. vagy aka r az. e s. va lasztottuk volna, akkor a zsa kunkba azok is befe rne nek, de nagyobb lenne az elvitt e rte k. A moho strate gia itt nem ad optima lis megolda st! 6 / 6
Tartalom Pe nzkifizete s 0- ha tizsa k proble ma Moho algoritmusok a dinamikus programoza ssal szemben Moho strate gia 5 U temeze si feladatok Eseme ny kiva laszta si proble ma Eseme ny elku lo nı te si proble ma U temeze s ke se s minimaliza la ssal 7 / 6
Kincsek begyu jte se Feladat Egy te glalap ege sz koordina ta ju ra cspontjaiban ku lo nbo zo e rte ku kincsek vannak elhelyezve. Menju nk el a bal also ra cspontbo l a jobb felso ra cspontba u gy, hogy ko zben a leheto legto bb kincset gyu jtju k be! Beja ra sunk sora n csak jobbra e s felfele haladhatunk. 5 6 5 6 0 0 9 8 8 / 6
Megolda s dinamikus programoza ssal Egy mezo ig o sszegyu jtheto kincsek maxima lis e rte ke C [i, j], ha i = e s j F [i, j ] + C [i, j], ha i = e s j F [i, j] = F [i, j] + C [i, j], ha i e s j max {F [i, j], F [i, j ]} + C [i, j], ha i e s j 5 6 9 9 55 6 5 8 0 5 5 6 0 0 9 7 7 7 6 8 8 6 C =,, =,. F 9 / 6
O sszegyu jto tt kincsek o sszege (Dinamikus programoza s) Pszeudoko d Bemenet: C ege sz to mb, m ege sz (C sorainak sza ma), n ege sz (C oszlopainak sza ma) Kimenet: F ege sz to mb fu ggve ny KincsO sszeg(c, m, n) F Le trehoz(ege sz)[m, n] F [, ] = C [, ] ciklus j -to l n-ig F [, j] = F [, j ] + C [i, j] ciklus ve ge ciklus i -to l m-ig F [i, ] = F [i, ] + C [i, j] ciklus ve ge ciklus i -to l m-ig ciklus j -to l n-ig F [i, j] = max (F [i, j], F [i, j ]) + C [i, j] ciklus ve ge ciklus ve ge vissza F fu ggve ny ve ge 0 / 6
Beja ra si u t kiolvasa sa Pszeudoko d Bemenet: F ege sz to mb, m ege sz (F sorainak sza ma), n ege sz (F oszlopainak sza ma) Kimenet: P ege sz to mb fu ggve ny Beja ra siu tkiolvas(f, m, n) P Le trehoz(ege sz)[m + n ] i m; j n; k m + n ciklus amı g (i ) (j ) P[k] (i, j); k k ha F [i, j] > F [i, j ] akkor i i ku lo nben j j ela gaza s ve ge ciklus ve ge ciklus amı g i P[k] (i, j); k k ; i i ciklus ve ge ciklus amı g j P[k] (i, j); k k ; j j ciklus ve ge P[] (, ) vissza P fu ggve ny ve ge / 6
Beja ra si u t Egy optima lis beja ra si u t dinamikus programoza ssal 5 6 9 9 55 6 9 9 55 6 5 8 0 5 5 8 0 5 5 6 0 0 9 7 7 7 6 7 7 7 6 8 8 6 8 6 C F F / 6
Megolda s moho algoritmussal O tlet Elindulunk a bal also sarokbo l. Megvizsga ljuk, hogy a jobb- vagy a felso szomsze d e rte ke nagyobb-e, e s arra megyu nk tova bb. / 6
Megolda s moho algoritmussal Pszeudoko d Bemenet: C ege sz to mb, m ege sz (C sorainak sza ma), n ege sz (C oszlopainak sza ma) Kimenet: P ege sz to mb fu ggve ny Moho KincsGyu jte s(c, m, n) P Le trehoz(ege sz)[m + n ] i ; j ; k 0 ciklus amı g (i < m) (j < n) k k + ; P[k] (i, j) ha C [i +, j] > C [i, j + ] akkor i i + ku lo nben j j + ela gaza s ve ge ciklus ve ge ciklus amı g i < m k k + ; P[k] (i, j); i i + ciklus ve ge ciklus amı g j < n k k + ; P[k] (i, j); j j + ciklus ve ge k k + ; P[k] (i, j) vissza P fu ggve ny ve ge / 6
Beja ra s moho algoritmussal Eredme ny 5 6 5 6 0 0 9 8 5 / 6
Lehetse ges beja ra si u tvonalak (, ) (, ) (, ) (, ) (, ) (, ) (, ) (, ) (, ) (, ) (, ) (, ) (, ) (, ) (, ) (, ) 6 / 6
Tartalom Pe nzkifizete s 0- ha tizsa k proble ma Moho algoritmusok a dinamikus programoza ssal szemben Moho strate gia 5 U temeze si feladatok Eseme ny kiva laszta si proble ma Eseme ny elku lo nı te si proble ma U temeze s ke se s minimaliza la ssal 7 / 6
Moho strate gia A moho algoritmus egy proble ma optima lis megolda sa t u gy alkotja meg, hogy va laszta sok sorozata t hajtja ve gre. Minden do nte si pontban azt az esetet va lasztja az algoritmus, mely az adott pillanatban e ppen optima lisnak tu nik. Ke t fontos alkoto eleme van az olyan proble ma knak, melyek moho algoritmussal megoldhato k: Moho -va laszta si tulajdonsa g Optima lis re szstruktu ra k tulajdonsa g 8 / 6
Moho -va laszta si tulajdonsa g Globa lis optima lis tulajdonsa g ele rheto loka lis optimum va laszta sa val Itt van ku lo nbse g a moho algoritmusok e s a dinamikus programoza s ko zo tt Dinamikus programoza sna l minden le pe sben va lasztunk, de a va laszta s fu gg(het) a re szproble ma k megolda sa to l. Moho esetben viszont az adott pillanatban legjobbnak tu no va laszta st hajtjuk ve gre, majd uta na oldjuk meg a va laszta s hata sa ra felle po re szproble ma kat. A dinamikus programoza s alulro l-felfele haladva ad megolda st, a moho strate gia viszont felu lfo l-lefele halad, ı gy egyma s uta n ve grehajt moho va laszta sokat, melyekkel folyamatosan reduka lja a proble ma me rete t. 9 / 6
Optima lis re szstruktu ra k tulajdonsa g Egy proble ma teljesı ti az optima lis re szstruktu ra tulajdonsa got, ha az optima lis megolda s fele pı theto a re szproble ma k optima lis megolda sa bo l. Ez az alkoto elem kulcsfontossa gu, mind a dinamikus programoza s, mind a moho strate gia alkalmazhato sa ga nak vizsga lata na l. 0 / 6
Tartalom Pe nzkifizete s 0- ha tizsa k proble ma Moho algoritmusok a dinamikus programoza ssal szemben Moho strate gia 5 U temeze si feladatok Eseme ny kiva laszta si proble ma Eseme ny elku lo nı te si proble ma U temeze s ke se s minimaliza la ssal / 6
Tartalom Pe nzkifizete s 0- ha tizsa k proble ma Moho algoritmusok a dinamikus programoza ssal szemben Moho strate gia 5 U temeze si feladatok Eseme ny kiva laszta si proble ma Eseme ny elku lo nı te si proble ma U temeze s ke se s minimaliza la ssal / 6
Eseme ny kiva laszta si proble ma Ero forra s u temeze st szeretne nk megvalo sı tani egyma ssal versengo feladatok ko zo tt. Feladat megfogalmaza sa Adott eseme nyek egy S = {,,..., n} halmaza, amelyek egy ko zo s ero forra st kı va nnak haszna lni Minden eseme nyre ismert a kezdo ido pontja: si a befejezo ido pontja: fi (ahol si fi ) Ha az i eseme nyt kiva lasztjuk, az eseme ny az [si, fi [ intervallumot foglalja el Az i e s j eseme nyek kompatibilisek, ha az [si, fi [ e s [sj, fj [ intervallumok nem fedik egyma st, azaz si fj vagy sj fi Kiva lasztando ko lcso no sen kompatibilis eseme nyeknek egy legnagyobb elemsza mu halmaza / 6
Eseme ny kiva laszta si proble ma Megolda s Tegyu k fel, hogy az eseme nyek a befejezo ido pontjaik szerint rendezettek, azaz f f... fn Bemenet: s ido to mb, f ido rendezett to mb, n ege sz (to mbo k me rete) Kimenet: A ege sz halmaz fu ggve ny Eseme nykiva laszta s(s, f, n) A {} utolso ciklus i -to l n-ig ha s[i] f [utolso ] akkor A A {i} utolso i ela gaza s ve ge ciklus ve ge vissza A fu ggve ny ve ge / 6
Eseme ny kiva laszta si proble ma Pe lda 5 6 7 8 9 0 0 5 6 7 8 9 0 5 / 6
Eseme ny kiva laszta si proble ma Pe lda megolda sa 5 6 7 8 9 0 0 5 6 7 8 9 0 6 / 6
Eseme ny kiva laszta si proble ma Optima lis megolda st ad a moho algoritmus? A moho algoritmus kiva lasztja az eseme nyt. Ez az eseme ny biztos benne van az optima lis megolda sban is? Tegyu k fel, hogy A S egy optima lis megolda s, e s legyenek az A-beli eseme nyek a befejeze si ido szerint rendezettek. Tegyu k fel, hogy A-ban az elso eseme ny k. Ha k =, akkor A a moho va laszta ssal kezdo dik. Ha k 6=, akkor legyen B = (A \ {k}) {}. Mivel f fk, ı gy a B-beli eseme nyek nem a tfedo k, e s B ugyanannyi elemet tartalmaz, mint A, ı gy B is optima lis. Teha t mindig le tezik olyan optima lis u temeze s, mely a moho va laszta ssal kezdo dik. 7 / 6
Eseme ny kiva laszta si proble ma Optima lis megolda st ad a moho algoritmus? Az eseme ny moho va laszta sa uta n a proble ma reduka lo dik azon eseme ny kiva laszta si proble ma ra, amely az S halmaz azon elemeit tartalmazza, amelyek kompatibilisek az eseme nnyel. Ke rde s, hogy A0 = A \ {} optima lis megolda sa-e az S 0 = {i S : si f } eseme nyeket tartalmazo proble ma nak. Ha tala lna nk olyan B 0 megolda sa t az S 0 proble ma nak, amely to bb eseme nyt tartalmazna, mint A0, akkor az eseme nyt hozza adva B 0 -ho z az S proble ma olyan B megolda sa hoz jutna nk, amely to bb eseme nyt tartalmaz, mint A. Ez viszont ellentmond A optimalita sa nak. Teha t minden moho va laszta s uta n olyan proble ma nk marad, mint amilyen az eredeti is volt. 8 / 6
Tartalom Pe nzkifizete s 0- ha tizsa k proble ma Moho algoritmusok a dinamikus programoza ssal szemben Moho strate gia 5 U temeze si feladatok Eseme ny kiva laszta si proble ma Eseme ny elku lo nı te si proble ma U temeze s ke se s minimaliza la ssal 9 / 6
Eseme ny elku lo nı te si proble ma Feladat megfogalmaza sa Adott n darab eseme ny, melyeknek ismerju k a kezde si e s befejeze si ido pontja t. (Az i-edik eseme ny kezdo ido pontja: si, befejeze si ido pontja pedig: fi.) Ku lo nı tsu k el az eseme nyeket oly mo don elo ado termekbe, hogy az egy elo ado terembe tartozo eseme nyek kompatibilisek legyenek egyma ssal, viszont a leheto legkevesebb elo ado termet haszna ljuk. 0 / 6
Eseme ny elku lo nı te si proble ma Egy pe lda 5 0 7 8 9 9:0 6 0 0:0 :0 :0 :0 9 :0 5 5:0 6 6:0 6 6:0 Kevesebb elo ado terem is ele g lenne 5 8 9 9:0 7 6 0 0:0 :0 :0 :0 0 9 :0 5 5:0 / 6
Eseme ny elku lo nı te si proble ma Algoritmus Tegyu k fel, hogy az eseme nyek a kezdo ido pontjaik szerint rendezettek, azaz s s... sn. Bemenet: s ido rendezett to mb, f ido to mb, n ege sz (to mbo k me rete) Kimenet: A ege sz to mb fu ggve ny Eseme nyelku lo nı te s(s, f, n) A Le trehoz(ege sz)[n] utolso 0 ciklus i -to l n-ig j ciklus amı g (j utolso ) KompatiblisEseme nyero forra ssal(a, s, f, i, j) j j + ciklus ve ge ha j utolso akkor A[i] j ku lo nben utolso utolso + A[i] utolso ela gaza s ve ge ciklus ve ge vissza A fu ggve ny ve ge / 6
Tartalom Pe nzkifizete s 0- ha tizsa k proble ma Moho algoritmusok a dinamikus programoza ssal szemben Moho strate gia 5 U temeze si feladatok Eseme ny kiva laszta si proble ma Eseme ny elku lo nı te si proble ma U temeze s ke se s minimaliza la ssal / 6
U temeze s ke se s minimaliza la ssal Feladat Adottak egyetlen ero forra st ige nylo feladatok Ismerju k az i-edik feladat elve gze se hez szu kse ges ti ido t, illetve a feladat di hata rideje t Az i-edik feladat ke se se: li = max{0, fi di } Ce l: minimaliza lni a ke se sek maximuma t, azaz minimaliza lni a max{li }i=,...,n kifejeze st Pe lda ti di 6 8 9 9 5 6 5 ke se s = d = 9 0 d = 8 d6 = 5 d = 6 5 6 ke se s = 0 max ke se s = 6 d5 = 7 8 9 0 d = 9 5 / 6
U temeze s ke se s minimaliza la ssal Algoritmus Tegyu k fel, hogy az eseme nyek a hata rideju k szerint rendezettek, azaz d d... dn Bemenet: d ido rendezett to mb, t ido to mb, n ege sz (to mbo k me rete) Kimenet: s ido to mb, f ido to mb fu ggve ny Ke se sminimaliza la s(d, t, n) s Le trehoz(ido )[n] f Le trehoz(ido )[n] utolso 0 ciklus i -to l n-ig s[i] utolso f [i] s[i] + t[i] utolso f [i] ciklus ve ge vissza (s, f ) fu ggve ny ve ge Megolda s max ke se s = d = 9 0 d = 8 d = 9 5 d = 9 6 7 8 d5 = 9 0 d6 = 5 5 5 / 6
Felhaszna lt irodalom T.H. Cormen, C.E. Leiserson, R.L. Rivest: Algoritmusok. Mu szaki Ko nyvkiado, 999 J. Kleinberg, E. Tardos: Algorithm Design. (Elo ada s prezenta cio k) 6 / 6