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

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

Dinamikus programozás

Dinamikus programozás

Dinamikus programozás II.

Fibonacci számok. Dinamikus programozással


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

Egyszerű algoritmusok

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

Adatszerkezetek II. 10. előadás

8. Programozási tételek felsoroló típusokra

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Adatszerkezetek II. 6. előadás

Adatsorok jellegadó értékei

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

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



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

Visszalépéses maximumkiválasztás

Kombinatorikai algoritmusok

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

Visszalépéses kiválogatás












Periodikus figyelésű készletezési modell megoldása általános feltételek mellett

Kvantum-tömörítés II.

ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK

Ciklikusan változó igényűkészletezési modell megoldása dinamikus programozással

Intelligens Rendszerek Elmélete

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













Másolásra épülő algoritmusok

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

A sokaság/minta eloszlásának jellemzése

/11 Változtatások joga fenntartva. Kezelési útmutató. UltraGas kondenzációs gázkazán. Az energia megőrzése környezetünk védelme

Programozási módszertan. Mohó algoritmusok

Informatikai tehetséggondozás:

Statisztikai. Statisztika Sportszervező BSc képzés (levelező tagozat) Témakörök. Statisztikai alapfogalmak. Statisztika fogalma. Statisztika fogalma

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

4 Approximációs algoritmusok szorzatalakú hálózatok esetén

Multihalmaz, intervallumhalmaz

Döntéstámogató módszerek segédlet

Példák ekvivalencia relációra (TÉTELként kell tudni ezeket zárthelyin, vizsgán):

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek


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

Dinamukus programozás

Adatszerkezetek II. 3. előadás

Előző óra összefoglalása. Programozás alapjai C nyelv 3. gyakorlat. Karakter típus (char) Karakter konstansok. Karaktersorozatot lezáró nulla

Integrált rendszerek n é v; dátum

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

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

4 2 lapultsági együttható =

Adatszerkezetek I. 4. előadás

Relációk. Vázlat. Példák direkt szorzatra

INFORMATIKA javítókulcs 2016

A mágneses tér energiája, állandó mágnesek, erőhatások, veszteségek

Variancia-analízis (ANOVA) Mekkora a tévedés esélye? A tévedés esélye Miért nem csinálunk kétmintás t-próbákat?

Vázlat. Relációk. Példák direkt szorzatra

I. A közlekedési hálózatok jellemzői II. A közlekedési szükségletek jellemzői III. Analitikus forgalom-előrebecslési modell

Algoritmusok és adatszerkezetek 2.

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

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

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


Informatikai tehetséggondozás:

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

Statisztikai próbák. Ugyanazon problémára sokszor megvan mindkét eljárás.

Algoritmusok, adatszerkezetek I.

A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.

KÖZBESZERZÉSI ADATBÁZIS

Egy negyedrendű rekurzív sorozatcsaládról

Közismereti informatika I. 4. előadás

Tartalom. Programozási alapismeretek. 11. előadás

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

A 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Mohó algoritmusok. Példa:

Átírás:

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

Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyekkel kfzethető-e F fornt? Megoldás: Tegyük fel, hogy F P P... P... m! 1 2 m 1 Ekkor F P P P P......, azaz az adott m 1 2 m 1 1 m részproblémának megoldása a megoldás megfelelő részlete. Ezek alapján számoljuk k V(,) értékeket, ahol V(,) gaz, az összeg kfzethető az első pénzjeggyel! Az előadás Horváth Gyula tananyaga felsználásával készült. Szláv Péter, Zsakó László: Adatszerkezetek I. 2/31

Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyekkel kfzethető-e F fornt? Megoldás: Három esetet vzsgálunk: az összeg megegyezk az -edk pénzjeggyel; az -edk pénzjegyet nem sználjuk fel; az -edk pénzjegyet felsználjuk: V P, gaz 1 és V, 1 x 1 és P és V P, 1 Szláv Péter, Zsakó László: Adatszerkezetek I. 3/31

Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyekkel kfzethető-e F fornt? Megoldás: V(,): V:==P() vagy >1 és V(,-1) vagy >1 és P() és V(-P(),-1) Függvény vége. A megoldás: V(F,N) kszámolása. Probléma: a futás dő O(2 N ) Szláv Péter, Zsakó László: Adatszerkezetek I. 4/31

Dnamkus programozás V(,) kszámításához mely V() értékekre lehet szükség? Az ábra alapján V értéke alulról felfelé, azon belül balról jobbra számoltók. Szláv Péter, Zsakó László: Adatszerkezetek I. 5/31

Dnamkus programozás (Lehet): V(1..F,1):=ms Ha P(1) F akkor V(P(1),1):=gaz Cklus =2-től N-g Cklus =1-től F-g V(,):==P() vagy V(,-1) vagy P() és V(-P(),-1) Cklus vége Cklus vége Lehet:=V(F,N) Függvény vége. A futás dő O(N*F) Memóragény: N*F Szláv Péter, Zsakó László: Adatszerkezetek I. 6/31

Dnamkus programozás Memóragény csökkentés: elég egyetlen sort tároln a V mátrxból, és az első feltétel s megtakaríttó. (Lehet): W(1..F):=ms; W(0):=gaz Ha P(1) F akkor W(P(1)):=gaz Cklus =2-től N-g Cklus =F-től 1-g -1-esével W():=W() vagy P() és W(-P()) Cklus vége Cklus vége Lehet:=W(F) Függvény vége. A futás dő O(N*F) Memóragény: F Szláv Péter, Zsakó László: Adatszerkezetek I. 7/31

Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyek közül melyekkel fzethető k F fornt? Megoldás: Legyen V(,) a legutolsó olyan k ndex, amelyre gaz, hogy P k előfordul felváltásában! Legyen V(,)=N+1, nem válttó fel az első pénzjeggyel! Szláv Péter, Zsakó László: Adatszerkezetek I. 8/31

Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyek közül melyekkel fzethető k F fornt? Megoldás: V N 1, V, 1 V, 1 N 0 1 egyébként 0 0 P N és és V P, 1 0 N Szláv Péter, Zsakó László: Adatszerkezetek I. 9/31

Dnamkus programozás : V(1..F,0):=N+1; V(0,0):=0 Cklus =1-től N-g V(0,):=0 Cklus =1-től F-g Ha V(,-1) N akkor V(,):=V(,-1) különben P() és V(-P(),-1) N akkor V(,):= különben V(,):=N+1 Cklus vége Cklus vége A V mátrx kszámolása. Szláv Péter, Zsakó László: Adatszerkezetek I. 10/31

Dnamkus programozás Csak akkor van megoldás, V(F,N) N. Ekkor k=v(f,n) olyan pénz ndexe, hogy F-P(k) felválttó az első k-1 pénzzel. Tehát a V(F-P(k),k-1) probléma megoldásával kell folytatnunk, mndaddg, amíg a maradék pénz 0 nem lesz. Szláv Péter, Zsakó László: Adatszerkezetek I. 11/31

Dnamkus programozás Db:=0; :=F; :=N Ha V(F,N) N akkor Cklus :=V(x,) Db:=Db+1; A(Db):= :=-P() :=-1 amíg 0 Cklus vége Eljárás vége. A megoldás előállítása. Szláv Péter, Zsakó László: Adatszerkezetek I. 12/31

Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyek közül a lehető legkevesebbet sználva mennyvel fzethető k F fornt? Megoldás: Tegyük fel, hogy F P P P... optmáls m... 1 1 2 felbontás! Ekkor F P P P... P... m s optmáls, azaz m 1 2 m 1 1 az adott részproblémának megoldása a megoldás megfelelő részlete. m Szláv Péter, Zsakó László: Adatszerkezetek I. 13/31

Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyek közül a lehető legkevesebbet sználva mennyvel fzethető k F fornt? Megoldás: O, mn O N 1 0 O, 1, 1,1 O P, 1 0 0 0 0 és és és 0 P P Szláv Péter, Zsakó László: Adatszerkezetek I. 14/31

Dnamkus programozás (Mnmum): O(1..F,0):=N+1; O(0,0):=0 Cklus =1-től N-g O(0,):=0 Cklus =1-től F-g Ha <P() akkor O(,):=O(,-1) különben O(,):=mn(O(,-1), 1+O(-P(),-1)) Cklus vége Cklus vége Eljárás vége. Szláv Péter, Zsakó László: Adatszerkezetek I. 15/31

Dnamkus programozás Feladat: Adott P 1,P 2, P n pénzjegyek közül a lehető legkevesebbet sználva melyekkel fzethető k F fornt? Megoldás: Tegyük fel, hogy F P P P... optmáls m... 1 1 2 felbontás! Ekkor F P P P... P... m s optmáls, azaz m 1 2 m 1 1 az adott részproblémának megoldása a megoldás megfelelő részlete. m Szláv Péter, Zsakó László: Adatszerkezetek I. 16/31

Dnamkus programozás Szláv Péter, Zsakó László: Adatszerkezetek I. Feladat: Adott P 1,P 2, P n pénzjegyek közül a lehető legkevesebbet sználva melyekkel fzethető k F fornt? Megoldás: egyébként V P O O és P és N V 1, 1, 1 ), ( 0 0 0 0 1, 17/31

Dnamkus programozás (O,V): O(1..F):=N+1; O(0):=0; V(1..F,0):=N+1 Cklus =1-től N-g O(0):=0; V(0,):=0 Cklus =F-től 1-g -1-esével Ha P() akkor S:=O(-P())+1 különben S:=N+1 Ha S<O() akkor O():=S; V(,):= különben V(,):=V(,-1) Cklus vége Cklus vége Eljárás vége. Szláv Péter, Zsakó László: Adatszerkezetek I. 18/31

Dnamkus programozás Hátzsák feladat Feladat: Adott N tárgy (értékük F, súlyuk S ). Egy hátzsákba maxmum H súlyú tárgyat pakoltunk. Menny a maxmáls elszállíttó érték? Megoldás: Tegyük fel, hogy H S optmáls S... S... m 1 2 m 1 megoldás, azaz F maxmáls! F... F 1 2 m Ekkor H S s optmáls, azaz S S... S... m 1 2 m 1 1 m az adott részproblémának megoldása a megoldás megfelelő részlete. Szláv Péter, Zsakó László: Adatszerkezetek I. 19/31

Dnamkus programozás Hátzsák feladat Feladat: Adott N tárgy (értékük F, súlyuk S ). Egy hátzsákba maxmum H súlyú tárgyat pakoltunk. Menny a maxmáls elszállíttó érték? Megoldás: Jelölje E(,) a legnagyobb elszállíttó értéket, amely az első tárgyból egy kapactású hátzsákba bepakoltó. E, max E F 0 E, 1, 1, F E S, 1 1 egyébként 1 1 1 és és és S S S 1 1 Szláv Péter, Zsakó László: Adatszerkezetek I. 20/31

Dnamkus programozás Hátzsák(): E(0..S(1)-1,1):=0; E(S(1)..H,1):=F(1) Cklus =2-től N-g Cklus =0-tól H-g E(,):=E(,-1) Ha S() és E(,)<E(-S(),-1)+F() akkor E(,):=E(-S(),-1)+F() Cklus vége Cklus vége Kírás Eljárás vége. Szláv Péter, Zsakó László: Adatszerkezetek I. 21/31

Dnamkus programozás Kírás: :=N; :=H Cklus amíg E(,)>0 Cklus amíg >1 és E(,)=E(,-1) :=-1 Cklus vége K:, :=-S(); :=-1 Cklus vége Eljárás vége. Szláv Péter, Zsakó László: Adatszerkezetek I. 22/31

Dnamkus programozás Tükörszó Feladat: Egy szóba mnmálsan hány karaktert kell beszúrn, hogy tükörszó legyen belőle (azaz ugyanaz legyen balról-jobbra és jobbról balra olvasva s)! Megoldás: Tetszőleges S szóra az SS T szó bztos tükörszó, tehát a feladatnak kell legyen megoldása! Szláv Péter, Zsakó László: Adatszerkezetek I. 23/31

Dnamkus programozás Tükörszó Az egybetűs szavak bztosan tükörszavak. Az azonos kezdő- és végbetűjű szavak tükörszóvá alakításához elég a középső rész átalakítása. Ha az első és az utolsó betű különbözk, akkor két lehetőségünk van a tükörszóvá alakításra: az első betűt szúrjuk be a szó végére; az utolsó betűt szúrjuk be a szó elejére. M, j M 1, j 1 1 mn M 1, j, M, j 1 0 Probléma: a rekurzó nem tékony! j j j és és S S S S j j Szláv Péter, Zsakó László: Adatszerkezetek I. 24/31

Dnamkus programozás Tükörszó Jó sorrendű táblázatktöltés kell: Itt s elég egyetlen sort tároln a táblázatból (T(j)=M(,j))? 1, j 1 Egy sor és egy elem s elég a táblázatból. Szláv Péter, Zsakó László: Adatszerkezetek I. 25/31

Dnamkus programozás Tükörszó Tükörszó(S,M): M() kezdő feltöltése Cklus j=2-től N-g M(j,j):=0 Cklus =j-1-től 1-g -1-esével Ha S()=S(j) akkor M(,j):=M(+1,j-1) különben M(,j):=1+Mn(M(+1,j),M(,j-1)) Cklus vége Cklus vége Tükörszó:=M(1,N) Függvény vége. Szláv Péter, Zsakó László: Adatszerkezetek I. 26/31

Dnamkus programozás Tükörszó Tükörszó(S,T): T(1):=0 Cklus j=2-től N-g T(j):=0; Ment:=0 Cklus =j-1-től 1-g -1-esével Ment:=T() Ha S()=S(j) akkor T():=Ment különben T():=1+Mn(T(),T(+1)) Ment:=Ment Cklus vége Cklus vége Tükörszó:=T(1) Függvény vége. Ez a megoldás nem alkalmas magának a tükörszónak az előállítására! Szláv Péter, Zsakó László: Adatszerkezetek I. 27/31

Dnamkus programozás Tükörszó Tükörszó kírása: Ha Tükörszó(S,E) akkor :=1; j:=n Cklus amíg <j Ha S()=S(j) akkor :=+1; j:=j-1 különben Ha M(,j)=M(+1,j)+1 akkor {S() a j. betű mögé} különben {S(j) az. betű elé} Cklus vége Eljárás vége. Szláv Péter, Zsakó László: Adatszerkezetek I. 28/31

Dnamkus programozás stratégája A dnamkus programozás stratégája 1. Az [optmáls] megoldás szerkezetének tanulmányozása. 2. Részproblémákra és összetevőkre bontás úgy, hogy: az összetevőktől való függés körmentes legyen; mnden részprobléma [optmáls] megoldása kfejezhető legyen (rekurzívan) az összetevők [optmáls] megoldásaval. 3. Részproblémák [optmáls] megoldásának kfejezése (rekurzívan) az összetevők [optmáls] megoldásaból. Szláv Péter, Zsakó László: Adatszerkezetek I. 29/31

Dnamkus programozás stratégája 4. Részproblémák [optmáls] megoldásának kszámítása alulról-felfelé ladva: A részproblémák kszámítás sorrendjének megtározása. Olyan sorba kell rakn a részproblémákat, hogy mnden p részprobléma mnden összetevője ( van) előbb szerepeljen a felsorolásban, mnt p. A részproblémák kszámítása alulról-felfelé ladva, azaz táblázatktöltéssel. 5. Egy [optmáls] megoldás előállítása a 4. lépésben kszámított (és tárolt) nformácókból. Szláv Péter, Zsakó László: Adatszerkezetek I. 30/31

Algortmusok és adatszerkezetek I. 10. előadás vége