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

Hasonló dokumentumok
Dinamikus programozás II.

Adatszerkezetek II. 6. előadás

Mohó stratégia. Feladat: Megoldás:

Informatikai tehetséggondozás:

Programozási módszertan. Mohó algoritmusok

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

Problémamegoldási stratégiák

Mohó algoritmusok. Példa:

angolul: greedy algorithms, románul: algoritmi greedy

Algoritmusok és adatszerkezetek I. 7. előadás

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

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

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

Adatszerkezetek II. 10. előadás

Fibonacci számok. Dinamikus programozással

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Optimalizációs stratégiák 1.

Multihalmaz, intervallumhalmaz

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.

Ü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

Kombinatorikai algoritmusok. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Optimalizációs stratégiák 2.

Visszalépéses keresés

Kombinatorikai algoritmusok

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

Algoritmizálás, adatmodellezés 1. előadás

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

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

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

2017/ Szegedi Tudományegyetem Informatikai Intézet

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

Az optimális megoldást adó algoritmusok

Programozási tételek. Dr. Iványi Péter

Számítógép és programozás 2

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

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Általános algoritmustervezési módszerek

Visszalépéses kiválogatás

Algoritmusok és adatszerkezetek I. 10. előadás

Algoritmuselmélet 2. előadás

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Algoritmizálás, adatmodellezés tanítása 11. előadás. (Horváth Gyula előadása alapján)

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

Az B sorozatban a pontok helyes preorder sorrendben vannak. A preorder bejárásban p k -t közvetlenül q m követi.

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.

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

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

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

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

Informatikai tehetséggondozás:

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Algoritmuselmélet 18. előadás

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

Dinamikus programozás vagy Oszd meg, és uralkodj!

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

PROGRAMOZÁSI TÉTELEK

Nem-lineáris programozási feladatok

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

A 2008/2009 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Számítógépes döntéstámogatás. Genetikus algoritmusok

Számítógép és programozás 2

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

A 2011/2012 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

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

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.

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Felvételi tematika INFORMATIKA

Operációkutatás. Vaik Zsuzsanna. Budapest október 10. First Prev Next Last Go Back Full Screen Close Quit

Algoritmizálás és adatmodellezés 2. előadás

A gráffogalom fejlődése

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

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

Összetett programozási tételek

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Struktúra nélküli adatszerkezetek

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

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

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet

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.

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

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

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

A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Egyszerű programozási tételek

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

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Gyakorlatok. P (n) = P (n 1) + 2P (n 2) + P (n 3) ha n 4, (utolsó lépésként l, hl, u, hu-t léphetünk).

Algoritmusok bonyolultsága

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

Diszkrét matematika 2. estis képzés

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

Mohó stratégia. A mohó stratégia elemei

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

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

2. Visszalépéses keresés

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

A 2007/2008 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. II. (programozás) kategória

Visszalépéses maximumkiválasztás

Átírás:

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

Elágazás és korlátozás A backtrack alkalmas-e optimális megoldás keresésére? Van költség, és a legkisebb költségű megoldást szeretnénk előállítani. Van egy induló költségkorlát (felső becslés). Ennél a költségkorlátnál nem költségesebb megoldást keresünk. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 2/31

Elágazás és korlátozás Az aktuális pontot tetszőlegesen választhatjuk az aktív pontok közül. A lényeg, hogy a választott aktuális pontból elérhető összes pontot generáljuk, és ha lehetséges megoldás, akkor betesszük az aktív pontok halmazába. Tehát az algoritmus egy, az aktív pontokat tartalmazó adagolót használ az aktív pontok tárolására. A visszalépéses stratégia esetén elég volt egy pontot, az aktuális pontot tárolni, mert a következő aktív pont mindig ennek fia, testvére, vagy apja. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 3/31

Elágazás és korlátozás Adott a C(X) valós értékű célfüggvény, és olyan X megoldást keresünk, amelyre a célfüggvény C(X) értéke minimális. A megoldáskezdeményekre meg tudunk adni olyan AK(X) alsó korlát függvényt, amelyekre teljesül az alábbi egyenlőtlenség. Az Y megoldás bármely X részmegoldására: AK(X) C(Y) Ekkor az adagoló lehet az AK szerinti minimumos prioritási sor, tehát az aktív pontok közül mindig a legkisebb alsó korlátú pontot választjuk aktuálisnak. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 4/31

Elágazás és korlátozás Korlátozás(F): Minért:=+ ; Betesz(A,F) Ciklus amíg nem üres?(a) Kivesz(A,F) Ciklus p=f-ből kapható megoldáslépések Ha Megoldás(p) akkor Ha C(p)<Minért akkor Minért:=C(p) Min:=p különben ha AK(p)<Minért akkor Betesz(A,p) Ciklus vége Ciklus vége Eljárás vége. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 5/31

Elágazás és korlátozás Ha a megoldáskezdeményekre meg tudunk adni felső korlátot is, akkor az adagoló lehet a felső korlát szerinti minimumos prioritási sor. Felső korlát olyan FK(X) függvény, amelyre teljesül, hogy minden Y megoldás minden X részmegoldására: C(Y) FK(X). Azaz egy részmegoldásnál járva tudjuk, hogy az ebből kiinduló megoldásoknak mi a felső korlátja. Mindig a legkisebb felső korlátú ágat válasszuk! 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 6/31

Mohó stratégia Az optimalizálási probléma megoldására szolgáló algoritmus sokszor olyan lépések sorozatából áll, ahol minden lépésben adott halmazból választhatunk. A mohó algoritmus mindig az adott lépésben optimálisnak látszót választja: a lokális optimumot választja, feltételezve, hogy ez globális optimumhoz fog majd vezetni. Ez nem mindig ad optimális megoldást, azonban sok probléma megoldható mohó algoritmussal. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 7/31

Mohó stratégia Adott az L halmaz és egy T tulajdonság az L részhalmazaira (igaz vagy hamis). Keresünk egy optimális M részhalmazt kiválogatás programozási tétellel. Mohó(L,Van,M): M:= Ciklus amíg M nem megoldás és L Válasszuk ki L-ből a legjobb x elemet L:=L\{x} Ha T(M {x}) akkor M := M {x} Ciklus vége Van:=M megoldás Eljárás vége. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 8/31

Mohó stratégia Egy esemény-kiválasztási feladat Bemenet: E={1..n} esemény egy erőforrásért. Minden esemény ideje: [k i,v i ). i,j kompatibilisek [k i,v i ) [k j,v j )= Kimenet: M={e 1,e 2 e Db } e i E M maximális elemszámú e i -k páronként kompatibilisek 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 9/31

Mohó stratégia Egy esemény-kiválasztási feladat Eseményenként döntsünk arról, hogy bevesszük vagy nem! Bevehető, ha kompatibilis az eddigiekkel. Válasszunk az események közül úgy, hogy a legtöbb lehetőség maradjon a továbbiak számára! Az az optimális, amelyik leghamarabb ér véget. Ehhez szükséges a végidőpontok szerinti rendezés. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 10/31

Mohó stratégia Egy esemény-kiválasztási feladat Mohó(N,K,V,Db,X): Rendezés V szerint; Db:=1; X(1):=1 Ciklus i=2-től N-ig Ha K(i) V(X(Db)) akkor Db:=Db+1; X(Db):=i Ciklus vége Eljárás vége. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 11/31

Mohó stratégia Egy esemény-kiválasztási feladat Kezd j : a j-ben végződő, legkésőbb kezdődő intervallum, S j a sorszáma. 1 K i,v i M. Kiválogatás(N,K,V,Db,X): DB:=0; idő:=0; Kezdetek(N,K,V,Kezd,S) Ciklus i=1-től M-ig Ha S(i) 0 és idő Kezd(i) akkor Db:=Db+1; X(Db):=S(i); idő:=i Ciklus vége Eljárás vége. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 12/31

Mohó stratégia Egy esemény-kiválasztási feladat Kezd j előállítása: Kezdetek(N,K,V,Kezd,S): Kezd:=(0,,0) Ciklus i=1-től N-ig Ha K(i)>Kezd(V(i)) akkor Kezd(V(i)):=K(i); S(V(i)):=i Ciklus vége Eljárás vége. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 13/31

Mohó stratégia Egy intervallum lefedési feladat Bemenet: E={1..n} intervallum, [A,B] lefedendő intervallum. Minden intervallum kezdete és hossza: [k i,h i ). i,j kompatibilisek k i +h i k j, de k i +h i <k j+1 Kimenet: M={e 1,e 2 e Db } e i E A szomszédos e i -k páronként kompatibilisek M minimális elemszámú k 1 =A, k Db +h Db B 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 14/31

Mohó stratégia Egy intervallum lefedési feladat Intervallumonként döntsünk arról, hogy bevesszük vagy nem! Bevehető, ha kompatibilis az eddigiekkel kompatibilis, ha átfedi az előzőt. Optimális, ha a kompatibilisek közül a legnagyobb a végpontja. Adott elemig akkor ismerjük az optimálist, ha az azt követő már nem kompatibilis. Ehhez szükséges a kezdőidőpontok szerinti rendezés. Tegyük fel, hogy van megoldás! 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 15/31

Mohó stratégia Egy intervallum lefedési feladat Mohó(N,K,H,Db,X): Rendezés K szerint; Db:=1; X(1):=1; max:=1 Ciklus i=2-től N-ig Ha K(i)+H(i)>K(max)+H(max) akkor max:=i Ha K(i+1)>K(X(Db))+H(X(Db)) akkor Db:=Db+1; X(Db):=max Ciklus vége Eljárás vége. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 16/31

Mohó stratégia Egy erőforrás kiosztási feladat N folyamat igényel egy erőforrást, különböző időintervallumokban. Az erőforrásból minimális mennyire van szükség, hogy minden igényt kielégíthessünk? Rendezzük sorba az igényeket kezdési idő szerint! Vegyük sorra őket és rendeljük hozzájuk az első szabad erőforrást! Ha mindegyik erőforrás foglalt, akkor új erőforrást kell üzembe állítanunk! 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 17/31

Mohó stratégia Egy erőforrás kiosztási feladat Mohó(N,K,V,Db,X): Rendezés K szerint Db:=1; X(1):=1; U(1):=V(1) Ciklus i=2-től N-ig j:=1 Ciklus amíg j Db és K(i)<U(j) j:=j+1 Ciklus vége Ha j Db akkor X(i):=j; U(j):=V(i) különben Db:=Db+1; X(i):=Db; U(Db):=V(i) Ciklus vége Eljárás vége. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 18/31

Mohó stratégia A mohó megoldó stratégia elemei Fogalmazzuk meg az optimalizációs feladatot úgy, hogy minden egyes választás hatására egy megoldandó részprobléma keletkezzen! Bizonyítsuk be, hogy mindig van olyan optimális megoldása az eredeti problémának, amely tartalmazza a mohó választást, tehát a mohó választás mindig biztonságos! Mutassuk meg, hogy a mohó választással olyan részprobléma keletkezik, amelynek egy optimális megoldásához hozzávéve a mohó választást, az eredeti probléma egy optimális megoldását kapjuk! 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 19/31

Mohó stratégia Néhány további klasszikus feladat: Huffman-kódolás Minimális költségű feszítőfa Darabolási feladat Pénzváltási feladat Töredékes hátizsák feladat Ütemezési feladat 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 20/31

Dinamikus programozás Az optimalizálás alapelve: az optimális megoldás optimális részmegoldásokból épül fel. A dinamikus programozás feltétele: optimalizálási elv ne legyen mohó választás (akkor is lehetne, de nem érdemes) a részfeladatok között legyen sok azonos. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 21/31

Dinamikus programozás A dinamikus programozás lépései: a megoldás szerkezetének tanulmányozása részproblémákra bontás megsejtése részproblémákra és összetevőkre bontás részproblémák és paramétereik körvonalazása: a rekurzió előkészítése részproblémák megoldásának kifejezése rekurzívan az összetevők megoldásaiból formalizálás: függvény-definíció részproblémák megoldásának kiszámítása a táblaszámítás algoritmizálása 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 22/31

Dinamikus programozás A dinamikus programozás lépései: kiszámítási sorrend meghatározása: minden részprobléma minden összetevője előbb szerepeljen a felsorolásban az alulról-felfelé haladó számítás a megoldás előállítása a 4. lépésben előállított táblázat segítségével a megoldás algoritmizálása 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 23/31

Dinamikus programozás Toronyépítés: a legmagasabb torony Bemenet: n kocka, M i méretű, S i súlyú Feltétel: nagyobb kocka kisebbre nem tehető nehezebb kocka könnyebbre nem tehető Kimenet: H a torony magassága Db a felhasznált kockák száma K={k 1,...k Db } a felhasznált kockák 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 24/31

Dinamikus programozás Toronyépítés: a legmagasabb torony Ötlet: rendezzük a kockákat súly szerint csökkenő sorrendbe ekkor a kockasorozat egy részsorozata a megoldás Részproblémák: Mekkora torony építhető az első K kockából úgy, hogy a K- adik van legfelül? A K-adikat olyan toronyra tehetjük, ahol vagy az 1., vagy a 2.,... vagy a K-1. kocka volt legfelül. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 25/31

Dinamikus programozás Toronyépítés : a legmagasabb torony Torony(N,M,H,Db,K): Mag(1):=M(1); R(1):=0 Ciklus i=2-től N-ig Mag(i):=M(i); R(i):=0 Ciklus j=1-től i-1-ig Ha M(i) M(j) és Mag(j)+M(i)>Mag(i) akkor Mag(i):=Mag(j)+M(i); R(i):=j Ciklus vége Ciklus vége Megoldáskeresés(N,H,R,Db,K) Eljárás vége. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 26/31

Dinamikus programozás Mátrix bejárás: a legnagyobb haszon Bemenet: mátrix jutalomértékekkel (T(i,j) 0) Feltétel: a bal felső sarokból indulunk, a jobb alsó sarokba kell eljutnunk csak jobbra és lefelé léphetünk Kimenet: Max a maximálisan elérhető haszon K={k 1,...k N+M-2 } a lépések 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 27/31

Dinamikus programozás Mátrix bejárás: a legnagyobb haszon Részproblémák: Mekkora haszon érhető el az (i,j) pontig? Az (i,j) pontba az (i-1,j) vagy az (i,j-1) pontból léphetünk. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 28/31

Dinamikus programozás Mátrix bejárás: a legnagyobb haszon Haszon(N,M,T,Max,K): H(1,1):=T(1) Ciklus i=2-től N-ig H(i,1):=H(i-1,1)+T(i,1) Ciklus vége Ciklus j=2-től M-ig H(1,j):=H(1,j-1)+T(1,j) Ciklus vége... 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 29/31

Dinamikus programozás Mátrix bejárás: a legnagyobb haszon... Ciklus i=2-től N-ig Ciklus j=2-től M-ig Ha H(i-1,j)>H(i,j-1) akkor H(i,j):=H(i-1,j)+T(i,j) különben H(i,j):=H(i,j-1)+T(i,j) Ciklus vége Ciklus vége Max:=H(N,M); Megoldás(K) Eljárás vége. 2015.10.05. 15:05 Zsakó László: Algoritmizálás, adatmodellezés tanítása 30/31

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