Adatszerkezetek II. 6. előadás

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

Informatikai tehetséggondozás:

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

Mohó stratégia. Az előadás Horváth Gyula tananyagai felhasználásával készült. Mohó stratégia :20 2/80

Mohó stratégia. Az előadás Horváth Gyula tananyagai felhasználásával készült. Mohó stratégia

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

A 2012/2013 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 2012/2013 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. II. (programozás) kategória

Adatszerkezetek II. 10. előadás

Mohó stratégia 2. előadás

Informatikai tehetséggondozás:

Informatikai tehetséggondozás:

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

Kombinatorikai algoritmusok

A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny döntő fordulójának megoldása. II. (programozás) kategória

Programozási segédlet

angolul: greedy algorithms, románul: algoritmi greedy

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

A 2016/2017 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

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

Adatszerkezetek II. 7. előadás

Informatikai tehetséggondozás:

Programozási módszertan. Mohó algoritmusok

PROGRAMOZÁSI NYELVEK (GYAKORLAT)

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

Adatszerkezetek II. 2. előadás

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

PROGRAMOZÁSI TÉTELEK

Mohó algoritmusok. Példa:

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

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

O k t a t á si Hivatal

Informatikai tehetséggondozás:

Programozási tételek. Jegyzet. Összeállította: Faludi Anita 2012.

Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny 2-3. korcsoport. Maximális növekedés

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

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

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

Visszalépéses kiválogatás

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

A 2012/2013 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának megoldása. informatika II. (programozás) kategória

RENDEZÉSEK, TOVÁBBI PROGRAMOZÁSI TÉTELEK

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

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

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

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

Ü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

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

A rész (30 pont) A.1. Vajon mit csinál? (5 pont) A generál(n) algoritmus egy n természetes számot dolgoz fel (0 < n < 100).

Felvételi tematika INFORMATIKA

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

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

Hatékonyság 1. előadás

Multihalmaz, intervallumhalmaz

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

Táblázatos adatok használata

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

5. MODUL ADATBÁZIS-KEZELÉS

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

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Operációkutatás vizsga





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

Az optimális megoldást adó algoritmusok

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Oktatási Hivatal. A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. II. (programozás) kategória

2) Írja fel az alábbi lineáris függvény grafikonjának egyenletét! (3pont)

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

1. Ábrázolja az f(x)= x-4 függvényt a [ 2;10 ] intervallumon! (2 pont) 2. Írja fel az alábbi lineáris függvény grafikonjának egyenletét!

ELEMI PROGRAMOZÁSI TÉTELEK

1. a. Vegye fel az alábbi táblázatban szereplő adatokat! Ügyeljen a táblázatban szereplő

10. Szimultán kiválasztások

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

HALMAZOK TULAJDONSÁGAI,

OKTV 2005/2006 döntő forduló

Matematika alapjai; Feladatok

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

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

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

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és 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)}

Approximációs algoritmusok

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.

Térinformatikai algoritmusok Elemi algoritmusok

7. Számelmélet. 1. Lehet-e négyzetszám az a pozitív egész szám, amelynek tízes számrendszerbeli alakjában 510 darab 1-es és valahány 0 szerepel?

Visszalépéses maximumkiválasztás

Mátrixjátékok tiszta nyeregponttal

Online migrációs ütemezési modellek

Web-programozó Web-programozó

Térinformatikai algoritmusok Elemi algoritmusok

A valós számok halmaza

Gráfelmélet Megoldások

[Biomatematika 2] Orvosi biometria

Általános algoritmustervezési módszerek

Átírás:

Adatszerkezetek II. 6. előadás

Feladat: Egy kábelhálózat különböző csatornáin N filmet játszanak. Ismerjük mindegyik film kezdési és végidejét. Egyszerre csak 1 filmet tudunk nézni. Add meg, hogy maximum hány filmet nézhetünk végig! Megoldás: A megoldás egy N elemű halmaz legnagyobb, adott tulajdonsággal rendelkező részhalmazának kiválasztása. Probléma: egy N elemű halmaznak 2 N részhalmaza van. Az előadás Horváth Gyula tananyagai felhasználásával készült. 2014.03.26. 2

Ötlet: Rendezzük sorba a filmeket befejezési idejük szerint növekvő sorrendbe! Ha a leghamarabb befejeződőt választjuk, akkor lesz a legtöbb lehetőségünk a többi közül választani. 2014.03.26. 3

Megoldás-1: Filmek (események) száma: N. Kezdőidők: K i. Végidők: V i. Eredeti (rendezés előtti) sorszám: S i. Kiválogatás(N,K,V,Db,X): Rendezés(N,K,V,S) DB:=1; X(Db):=S(1); j:=1 Ciklus i=2-től N-ig Ha K(i) V(j) akkor Db:=Db+1; X(Db):=S(i) j:=i Ciklus vége Eljárás vége. 2014.03.26. 4

Megoldás-2: Filmek (események) száma: N. Kezdőidők: K i. Végidők: V i. Kezd j : a j-ben végződő, legkésőbb kezdődő film kezdete, 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. 2014.03.26. 5

Megoldás-2: 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. 2014.03.26. 6

Feladat: Egy vállalkozó 1 napos munkákat vállal. Ismerjük mindegyik munka határidejét. N napot dolgozik, N igényt kapott. Egy nap csak 1 munkát végezhet. Add meg, hogy maximum hány munkát vállalhat el! Megoldás: A megoldás egy N elemű halmaz legnagyobb, adott tulajdonsággal rendelkező részhalmazának kiválasztása. Probléma: egy N elemű halmaznak 2 N részhalmaza van. 2014.03.26. 7

Ötlet: Tegyünk minden munkát a legutolsó napra, amikor még elvégezhető! Ezzel a lehető legkevesebb másik munka elvállalását akadályozzuk meg. Megoldás 1 : Vegyük sorra a munkákat és mindegyiknek keressük meg a határideje előtt utolsó szabad napot! 2014.03.26. 8

Megoldás-1: Kiválogatás(N,H,Db,Nap): DB:=0; Nap():=(0,,0) Ciklus i=1-től N-ig Ciklus amíg H(i)>0 és Nap(H(i))>0 H(i):=H(i)-1 Ciklus vége Ha H(i)>0 akkor Db:=Db+1; Nap(H(i)):=i Ciklus vége Eljárás vége. Futási idő: O(N 2 ) 2014.03.26. 9

Megoldás-2: Rendezzük sorba a munkákat H(i) szerint! Egy munka elvégezhető a határidejére, ha kevesebbet választottunk ki előtte, mint a határideje. Tegyük a munkát az első szabad napra! Kiválogatás(N,H,Db,Nap): Rendezés(N,H,S) DB:=1; Nap(Db):=S(1) Ciklus i=2-től N-ig Ha Db<H(i) akkor Db:=Db+1; Nap(Db):=S(i) Ciklus vége Eljárás vége. Futási idő: O(N) 2014.03.26. 10

Feladat: Egy vállalkozó 1 napos munkákat vállal. Ismerjük mindegyik munka határidejét. Egy nap csak 1 munkát végezhet. Az egyes munkákért különböző bért kaphat. Add meg, hogy maximum mennyit kereshet! Megoldás: A megoldás egy N elemű halmaz legnagyobb értékű, adott tulajdonsággal rendelkező részhalmazának kiválasztása. Probléma: egy N elemű halmaznak 2 N részhalmaza van. 2014.03.26. 11

Ötlet: Rendezzük sorba a munkákat az összeg szerint csökkenő sorrendbe! Tegyünk minden munkát a legutolsó napra, amikor még elvégezhető! Ezzel a lehető legkevesebb másik munka elvállalását akadályozzuk meg és csak nála olcsóbbakat. Megoldás: Vegyük sorra a munkákat és mindegyiknek keressük meg a határideje előtt utolsó szabad napot! 2014.03.26. 12

Megoldás: Kiválogatás(N,H,Ár,Db,Nap): Rendezés(N,H,Ár,S) DB:=0; Nap():=(0,,0) Ciklus i=1-től N-ig Ciklus amíg H(i)>0 és Nap(H(i))>0 H(i):=H(i)-1 Ciklus vége Ha H(i)>0 akkor Db:=Db+1; Nap(H(i)):=S(i) Ciklus vége Eljárás vége. Futási idő: O(N 2 ) 2014.03.26. 13

Feladat: Egy rendezvényre N vendég érkezik. Ismerjük mindegyiknek az érkezési és a távozási idejét. A résztvevőket fényképeken szeretnénk megörökíteni. Add meg, hogy minimum hányszor kell fényképet készíteni! Megoldás: A megoldás a lehetséges időpontok halmaza legkisebb, adott tulajdonsággal rendelkező részhalmazának kiválasztása. Probléma: egy N elemű halmaznak 2 N részhalmaza van. 2014.03.26. 14

Megoldás: Akkor fényképezzünk, amikor feltétlenül szükséges! Ez azt jelenti, hogy amikor elmenne az első ember, aki még nem volt rajta egy fényképen sem, akkor fényképeznünk kell. 2014.03.26. 15

Megoldás: Emberek (események) száma: N. Érkezési idők: E i. Távozási idők: T i. Eredeti (rendezés előtti) sorszám: S i. Kiválogatás(N,E,T,Db,X): Rendezés(N,E,T,S) DB:=1; X(Db):=S(1); j:=1 Ciklus i=2-től N-ig Ha E(i) T(j) akkor Db:=Db+1; X(Db):=S(i) j:=i Ciklus vége Eljárás vége. A megoldás szó szerint azonos a filmes feladat megoldásával! 2014.03.26. 16

Feladat: Egy rendezvényre N vendég érkezik. Ismerjük mindegyiknek az érkezési és a távozási idejét. A résztvevőket fényképeken szeretnénk megörökíteni. A fényképészt K perces időintervallumokra fizetjük. Add meg, hogy minimum hány intervallumra kell fizetni! Megoldás: A megoldás a lehetséges időpontok halmaza legkisebb, adott tulajdonsággal rendelkező részhalmazának kiválasztása. 2014.03.26. 17

Megoldás: Akkor fényképezzünk, amikor feltétlenül szükséges! Ez azt jelenti, hogy amikor elmenne az első ember, aki még nem volt rajta egy fényképen sem, akkor kezdődik egy fényképezési intervallum. 2014.03.26. 18

Megoldás: Emberek (események) száma: N. Érkezési idők: E i. Távozási idők: T i. Eredeti (rendezés előtti) sorszám: S i. Kiválogatás(N,E,T,K,Db,X): Rendezés(N,E,T,S) DB:=1; X(Db):=S(1); j:=1 Ciklus i=2-től N-ig Ha E(i) T(j)+K akkor Db:=Db+1; X(Db):=S(i) j:=i Ciklus vége Eljárás vége. 2014.03.26. 19

Feladat: Egy rendezvényre N vendég érkezik. Ismerjük mindegyiknek az érkezési és a távozási idejét. A résztvevőket fényképeken szeretnénk megörökíteni, két feltétellel: 1. Minden képen pontosan két vendég legyen rajta. 2. Minden vendég legfeljebb egy képen szerepelhet. Add meg, hogy maximum hányan lehetnek rajta a képeken! 2014.03.26. 20

Megoldás: Rendezzük sorba távozási idő szerint az adatainkat. Ha valakinek még nincs párja a fényképezkedéshez, akkor válasszunk olyat párjának, aki ott van és a leghamarabb menne el! 2014.03.26. 21

Emberek (események) száma: N. Érkezési idők: E i. Távozási idők: T i. Eredeti (rendezés előtti) sorszám: S i. Kiválogatás(N,E,T,Db,Pár): Rendezés(N,E,T,S); Db:=0 Ciklus i=2-től N-ig j:=1 Ciklus amíg j<i és nem(pár(j)=0 és E(i)<T(j)) j:=j+1 Ciklus vége Ha j<i akkor Pár(j):=i; Pár(i):=j; Db:=Db+1 Ciklus vége Eljárás vége. 2014.03.26. 22

Feladat: N-féle pénzjegyünk van, P 1, P 2,, P n címletű (P i <P i+1 ). Add meg, hogy minimálisan melyek felhasználásával fizethető ki az F összeg! Feltehetjük, hogy minden pénzjegyből tetszőleges számú van. Megoldás: Vegyünk a legnagyobb címletű pénzjegyből, amennyi szükséges, majd a maradék összeget fizessük ki a nála kisebb pénzjegyekkel! 2014.03.26. 23

Pénzváltás(N,P,F,Db): i:=n Ciklus amíg F>0 és i>0 db(i):=f div P(i); F:=F mod P(i) i:=i-1 Ciklus vége Eljárás vége. Probléma: P=(1,3,4), F=6 esetén a megoldás (2,0,1), azaz 3 pénzjeggyel fizetnénk ki a 6 forintot, pedig 6=3+3! A helyes működés feltétele: 2*P(i) P(i+1). 2014.03.26. 24

Feladat: N darab pénzjegyünk van, P 1, P 2,, P n címletű (P i P i+1 ). Add meg, hogy minimálisan melyek felhasználásával fizethető ki az F összeg! Megoldás: Vegyünk a legnagyobb címletű pénzjegyből egyet, ha szükséges, majd a maradék összeget fizessük ki a nála kisebb pénzjegyekkel! 2014.03.26. 25

Pénzváltás(N,P,F,Kell): i:=n; Kell():=(hamis, hamis) Ciklus amíg F>0 és i>0 Ha F P(i) akkor Kell(i):=igaz; F:=F-P(i) i:=i-1 Ciklus vége Eljárás vége. Probléma: P=(1,1,3,3,4), F=6 esetén a megoldás (i,i,h,h,i), azaz 3 pénzjeggyel fizetnénk ki a 6 forintot, pedig 6=3+3! A helyes működés feltétele: P(i)=P(i+1) vagy 2*P(i) P(i+1). 2014.03.26. 26

A mohó stratégia elemei 1. Fogalmazzuk meg az optimalizációs feladatot úgy, hogy választások sorozatával építjük fel a megoldást! 2. Mohó választási tulajdonság: Mutassuk meg, hogy mindig van olyan megoldása az eredeti feladatnak, amely a mohó választással kezdődik! 3. Optimális részprobléma tulajdonság: Bizonyítsuk be, hogy a mohó választással olyan redukált problémát kapunk, amelynek optimális megoldásához hozzávéve a mohó választást, az eredeti probléma megoldását kapjuk! Az előadás Horváth Gyula tananyagai felhasználásával készült. 2014.03.26. 27

Adatszerkezetek II. 6. előadás vége