Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

INFO Savaria'2005 Szlávi Péter ELTE IK

Hasonló előadás


Az előadások a következő témára: "INFO Savaria'2005 Szlávi Péter ELTE IK"— Előadás másolata:

1 INFO Savaria'2005 Szlávi Péter ELTE IK szlavip@elte.hu
2005. április Mohó algoritmusok Szlávi Péter ELTE IK Szlávi Péter: Tehetséggondozás - mohó algoritmusok

2 Megpróbáltatások „A mohóság dicsérete” – bevezetés
INFO Savaria'2005 Megpróbáltatások 2005. április „A mohóság dicsérete” – bevezetés Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” Első példázat a „zenekar”-ról Második példázat a „fényképeszkedés”-ről Harmadik példázat a „ültetés”-ről Konklúzió?  Komolytalan befejezés, ha még nem lenne elég a jókedv Kezelés: az oldalsó képre kattintva az előzőleg látott diához vissza, a bal-alsó sarokhoz közeli házikó fölé véve az egérkurzort: s tartalomjegyzékre… 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

3 „A mohóság dicsérete” – bevezetés
INFO Savaria'2005 „A mohóság dicsérete” – bevezetés 2005. április Optimalizációs problémák A „hagyományos” kereső módsze-rek (sőt: a backtrack és a dinamikus prog-ramozás is) hosszadalmasak Válasszuk mindig a legjobbnak tetszőt (a lokális optimumot) Lehet, hogy ez globális optimum? Be kell látni! egy kis kalandozás a Carpe diem! nyomán 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

4 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április Egy esemény-kiválasztási feladat Bemenet: E={1..n} esemény egy erőforrásért Minden esemény ideje: [ki,vi) i,j kompatibilisek  [ki,vi)[kj,vj)= Kimenet: M={e1,e2…eDb} eiE M maximális elemszámú ei-k páronként kompatibilisek k:kezdet, v:vég M:megoldás 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

5 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április Próbálkozzunk egy példával! S egy kézenfekvő megoldás-ötlettel: a backtrack-kel! i ki vi 1 15 2 3 6 7 12 4 5 11 9 17 Rajzoljunk! [ ) [ ) [ ) [ ) ) [ 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

6 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április Választási lehetőségek: [1,15)  Db=1 [3,6)  [7,12)  Db=2  [9,17)  Db=2 [7,12) ilyen már volt  Db=1 [5,11)  Db=1 [9,17) ilyen már volt  Db=1 [ ) [ ) [ ) [ ) ) [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

7 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április Megoldás józanésszel1: Eseményenként döntsünk arról, hogy bevesszük vagy nem! Bevehető, ha „kompatibilis” az ed-digiekkel. Válasszunk az események közül úgy, hogy a legkevesebbet mu-lasszuk el! Az az optimális, amelyik leghama-rabb kezdődik. Nem nyert! 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

8 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április Megoldás józanésszel2: Eseményenként döntsünk arról, hogy bevesszük vagy nem! Bevehető, ha „kompatibilis” az ed-digiekkel. Válasszunk az események közül úgy, hogy a legtöbb lehetőség ma-radjon a továbbiak számára! Az az optimális, amelyik leghama-rabb ér véget. Lehetséges? 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

9 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április Próbáljuk ezt ki! A vég-szerinti sorrend: [ ) [ ) [ ) [ ) ) [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ? Mohó választással a megoldás: [ ) [ ) [ ) [ ) ) [ 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

10 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április Jó ez így általában is? Lássuk be! Tegyük föl, hogy M={e1,e2,…,eu}, ei<ei+1 megoldás is, optimális is! Rendezés  v1vi  {1,e2,…,eu} is…  az optimális megoldás kezdődhet a mohón választottal. Legyen E’={i | v1ki i=2..n} és M’ egy optimális megoldása az E’-vel jellemzett redukált problémának, ekkor {1}M’ megoldás is és optimális is.  így folytatható is. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

11 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április Mindez nem túl nagy ár (matematika) a hatékonyságért? A hatékonyságot vizsgáljuk meg: egy „naiv” megoldás egy backtrack megoldás, és egy mohó esetében. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

12 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A „naiv” változat („elmélet”): A megvizsgálandó esetek száma: Egy i eseményből álló kompatibilitá-sának vizsgálatához szükséges hasonlítások száma: i2-nel arányos. Összesen: A naiv alapja nem is annyira naiv, hiszen csak egy-egy feltételezett megoldáshosszhoz (1,2,…,n-1,n) a besorolt elemek egyetlen kombinációját (azaz egyetlen sorrendfüggetlen megoldáslehetőséget) vizsgálja. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

13 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A „naiv” változat („elmélet”): A megvizsgálandó esetek száma: Egy i eseményből álló kompatibilitá-sának vizsgálatához szükséges hasonlítások száma: i2-nel arányos. Összesen: (Pl. n=9-re és közötti!) A naiv alapja nem is annyira naiv, hiszen csak egy-egy feltételezett megoldáshosszhoz (1,2,…,n-1,n) a besorolt elemek egyetlen kombinációját (azaz egyetlen sorrendfüggetlen megoldáslehetőséget) vizsgálja. 2005. április Mohó algoritmusok 14/70 Szlávi Péter: Tehetséggondozás - mohó algoritmusok 14

14 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A backtrack-es változat (kódja): 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

15 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A backtrack-es változat (kódja): 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

16 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A backtrack-es változat (kódja): 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

17 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A backtrack-es változat („empirikusan”): Próbáljuk ki és következtessünk! Zip, exe. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

18 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A mohó változat (kódja): 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

19 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A mohó változat (kódja): 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

20 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A mohó változat („empirikusan”): Próbáljuk ki és következtessünk! Zip, exe. Kimond-hatjuk: megéri!!! 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

21 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse”
INFO Savaria'2005 Egy gondolatébresztő példa – a mohó algoritmusok „szókincse” 2005. április A mohó megoldás sablonja: Lépésekre bontjuk az eljárásunkat. Keresünk egy adott lépésnél eldönthető, lokálisan optimális kritériumot (mohó választás). belátjuk a mohóság működését: van-e optimális megoldás, ami mohó választással kezdődik? a mohó választást hozzávéve a redukált probléma optimális megoldásához, az eredeti probléma megoldását kapjuk? Algoritmizáljuk a mohó megoldást. „mohó választási tulajdonság” „optimális részproblémák tulajdonság” 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

22 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április A feladat: „Egy népszerű zenekar a következő 100 napra vonatkozó fellépéseit tervezi. Sok meghívása van fellépésre, ezek közül kell a zenekarnak válasz-tani, hogy melyeket fogadja el. Minden fellépés pontosan egy napot foglal el. Minden beérkezett meghívási igény egy (k, v) számpárral adott, ami azt jelenti, hogy az igénylő azt szeretné, hogy a zenekar olyan n sorszámú napon tartson nála koncertet, hogy knv. A zenekarnak az a célja, hogy a lehető legtöbb fellépést elvállaljon (termé-szetesen egy napon csak egyet). Készítsünk programot, amely kiszámítja, hogy mely meghívásokat fogadjunk el, hogy az összes fellépések száma a lehető legnagyobb legyen; a program adjon is meg egy beosztást!” 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

23 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április A megoldás: Lépésekre bontás – a fellépési ajánlatok közül egy (alkalmas) választása Mohó választás – kettős probléma: ajánlat-intervallum, intervallumbeli nap; stratégia: a leghamarabb lezáruló, legkorábbi napja… miért? L. példákat. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

24 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április A megoldás (folytatás): Belátás: Nap={1,…,NapDb} – a választható napok sor-számai Fl={1,…,FlDb} – a fellépések sorszámai ki,vi iFl – az i. fellépés kezdő, ill. végső nap-sorszáma NF={(n1,f1),…,(nDb,fDb)}, ninj, fifj (ij), ni[kfi,vfi], fiFl i,j=1..Db – a megoldás NF optimális megoldás 2005. április Mohó algoritmusok 27/70 Szlávi Péter: Tehetséggondozás - mohó algoritmusok 27

25 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április Def. (fellépések rendezése) f,f’Fl, f<ff’ (f „kisebb/előbbi”, mint f’), acsa vf<vf’ (előbb ér véget) vagy vf=vf’ és kf<kf’ (ha ugyanakkor végződik, akkor előbb kezdődik) Def. (mohó választás) SzNap „szabad” napok és Fl’ fellépések mellett (n*,f*) mohó választás, ha f*=Min<f {fFl’ | [kf..vf]Sz} – a „legko-rábbi” fellépés, amely még elvállalható n*=Min {nSz | n[kf*..vf*]Sz} – a „legko-rábbi” fellépés legkorábbi napján 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

26 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április Z1. Állítás (mohó választási tulajdonság): Ha NF optimális megoldás és (n*,f*) mohó választás, akkor NF* = {(n*,f*),(n2,f2),..,(nDb,fDb)} is op-timális megoldás. Bizonyítás: NF opt.mo. és (n*,f*) mohó választás, de (_,f*)NF  (ni,fi): ni=n* (különben ellentmondásra jutnánk NF optimalitásával) Helyettesítsük NF-ben (ni,fi)-t (n*,f*)-gal: NF’={(n1,f1),…,(ni-1,fi-1),(n*,f*),(ni+1,fi+1),…,(nDb,fDb)}  NF’ megoldás is és optimális is Sorszámozzuk újra az NF’-t f-szerinti sorrendben: NF*={(n*,f*),(n2,f2),..,(nDb,fDb)}  NF* megoldás; NF optimális és ║NF║=║NF*║  NF* optimális. … kicsit hosszadalmasabban a (_,f*)NF –re is… l. A jegyzetben a bizonyítás befejezését! 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

27 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április Z2. Állítás (optimális részproblémák tulaj-donság): Ha SzNap „szabad” napok, (n*,f*) mohó választás Sz mellett és NF* optimális megoldás Sz\{n*}-ra, akkor (n*,f*)NF* optimális megoldása az Sz-nek. Bizonyítás: megoldás? NF* (optimális) megoldás Sz\{n*}-ra  (ni,fi)NF* : n*ni  (n*,f*)NF* megoldása lesz az Sz-nek. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

28 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április (Bizonyítás folytatás): optimális? (indirekt) L. Db=║NF*║ Tfh. NF’ = {(n’1,f’1),..,(n’L,f’L)} optimális meg-oldás Sz-re, amelyre L>Db+1. A Z1. állításból következik, hogy NF” = {(n*,f*),(n’2,f’2),..,(n’L,f’L)} is optimális megol-dás. Világos, hogy az NF”-ből az (n*,f*)-t elhagyva egy megoldását kapjuk az Sz\{n*}-nak, ami jobb, mint az NF*, hiszen több (L–1>Db) elemet tartalmaz. Ez ellentmond az állítás 3. feltételének. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

29 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április A megvalósítás: ábrázolás Const MaxFellepes=100; {max. fellépésszám; Ef: <256} NapDb=255; {max. napszám, ami most nem is változik} Type TKeresett=Record igaz:Boolean; nap:Byte End; {lin.kereséshez} TFellepes=Record db:Byte; mely:Array [0..MaxFellepes] of Record k,v,s:Byte; end; {fellépés: kezdet/vég/sorsz.} End; TNapok=Set of Byte; {nap: melyik fellépés} TBeoszt=Array [1..MaxFellepes] of Byte; {beosztott fellépés indexek} Var{Globális} Fel:TFellepes; {fellépések} M:Byte; {beosztott fellépések száma} Beoszt:TBeoszt; {beosztott fellépések sorszáma} FoglNapok:TNapok; Az inputot, ill. az outputot meghatározó adatokat színekkel megkülönböztettük. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

30 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április A megvalósítás: a lényegi rész algoritmusa Procedure FellepestUtemez; Var i:Byte; OK:TKeresett; Begin{FellepestUtemez} Rendezes(Fel); FoglNapok:=[Fel[1].k]; M:=1; Beoszt[1]:=Fel[1].s; For i:=2 to Fel.db do Begin OK:=VallalhatoE(i); If OK.igaz then Begin FoglNapok:=FoglNapok+[OK.nap]; Inc(M); Beoszt[M]:=Fel[i].s; End{If}; End{For i} End;{FellepestUtemez} Function VallahatóE(Const i:Byte): TKeresett; Var j:Word; k:TKeresett; Begin j:=Fel[i].k; While (j<=Fel[i].v) and (j in FoglNap) do Inc(j); k.igaz:=j<=Fel[i].v; If k.igaz then k.nap:=j; VallalhatoE:=k End;{VallalhatoE} 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

31 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április A feladat egy variációja A feladatot módosítsuk úgy, hogy minden fellépés járjon valamennyi (hi) haszonnal. Természetesen ekkor a célfeladat úgy mó-dosul, hogy a lehető legtöbb haszonra kell törekedni. Ez az apró módosítás mennyiben érinti a megoldást? Az sejthető, hogy az eddigi törek-vés: minél több fellépést kell elvállalni, nem feltétlenül hozza a legtöbb hasznot. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

32 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április Egy ellen(?)példa: Az adatok: i tóli igi hi 1 4 3 2 5 [ ] [ ] [ ] [ ] ] [ 1 2 3 4 5 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

33 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április Mohón rendezve: i tóli igi hi 3 1 4 2 5 S így megoldva: [ ] [ ] A haszon: =10 … a „leghasznosabb” kimaradt!!! [ ] [ ] ] [ 1 2 3 4 5 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

34 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április i tóli igi hi 3 1 4 2 5 Pedig, ha a 2 helyett az 5-öt tennénk, a haszon: 1+2+3–4+5=11 lenne, sőt, ha az 1 helyett ten-nénk az 5-öt, a haszon: 1+2+3–3+5=12 lenne. [ ] [ ] [ ] [ ] ] [ 1 2 3 4 5 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

35 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április Legyen a mohóság szem-pontja a haszon! Rendez-zük így! i tóli igi hi 5 3 4 2 1 S így megoldva: ] [ [ ] Az előbbiek után becsült optimumot elértük! Igaz más módon. De tényleg optimum? [ ] [ ] [ ] 1 2 3 4 5 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

36 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április Sajnos nem!!! i tóli igi hi 5 3 4 2 1 Lásd az alábbi javítást: ] [ [ ] A javítás értéke: =14 Nem találtunk eddig jó mohó szempontot! [ ] Pedig van mohó megoldás! [ ] [ ] 1 2 3 4 5 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

37 Első példázat a „zenekar”-ról
INFO Savaria'2005 Első példázat a „zenekar”-ról 2005. április Jegyezzük föl az ütközés-számot! Haszonsorrend + napkiválasztás: a legkevésbé ütköző nap… Íme a végrehajtás menete: i tóli igi hi 5 3 4 2 1 Pedig van mohó megoldás! 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

38 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április A feladat: „Egy rendezvényre N vendéget hívtak meg. Minden vendég előre jelezte, hogy mettől meddig lesz jelen. A szervezők fényképeken akarják megörökíteni a rendez-vényen résztvevőket. Azt tervezik, hogy kiválasztanak néhány időpontot és minden kiválasztott időpontban az akkor éppen jelenlevőkről csoportképet készítenek. Az a céljuk, hogy a lehető legkevesebb képet kelljen készíteni, de mindenki rajta legyen legalább egy ké-pen. Írjunk programot, amely kiszámítja, hogy legkevesebb hány fényképet kell készíteni, és megadja azokat az időpontokat is amikor csoportképet kell készíteni!” 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

39 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április A megoldás: Lépésekre bontás – a vendégek közül egy (al-kalmas) választása Mohó választás – a legkorábban távozó ven-dég, aki a legutóbbi fényképezés óta érkezett Belátás: V = {v1,…,vvDb}, ahol vi = (tóli,igi) (i=1..vDb) – a vendégek ott tartózkodása FT = {ft1,…,ftftDb}, ahol fti<fti+1 (i=1..ftDb-1) – a megoldás FT optimális megoldás 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

40 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április Def. (vendégek rendezése) vi,vjV, vi ig vj („kisebb/előbbi”), acsa vi.igvj.ig (azaz előbb indul haza) Def. (mohó választás) W  V még le nem fényképezettek és ft utolsó fényképezés mellett ft* mohó választás, ha ft*=v.ig, amelyre v:=Minig {v  W | v.tól>ft} – az ft után érkezők közül a „legkorábban” távozó távozási ideje 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

41 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április F1. Állítás (mohó választási tulajdonság): Ha FT = {ft1,ft2,…,ftftDb} optimális megoldás és ft* mohó választás, akkor FT* = {ft*,ft2,...,ftftDb} is optimális megoldás. Bizonyítás: Ha ft1ft*, akkor ft*-ig nincs távozás  ft1 helyett ft* is jó Így FT megoldás volt  FT* megoldás volta FT optimalitása  FT* optimalitása. Az ft1>ft* nem lehetséges, mivel ekkor az első vendégről nem készülhetett fotó (ft*=v1.ig<ft1)  FT nem lehet megoldás, ami ellentmon-dás. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

42 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április Jelölés: FTW={ft1,…,ftk}, W-ben szereplő ven-dégekre optimális megoldás. F2. Állítás (optimális részproblémák tulaj-donság): Ha ft* mohó választás és FTW = {ft2,...,ftftDb} optimális megoldás a W={vi | vi.tól>ft*} esetén, akkor FTV = {ft*,ft2,..,ftftDb} optimális megoldás (azaz a teljes V esetén optimális megoldás). 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

43 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április Bizonyítás: FTV megoldás? FTW megoldás W-re  minden vendégről, aki ft* után érkezett (ft*<vi.tól), készült fénykép ft* értelmezése  ft*-ig érkezetteket ft*-kor fényképezték le 1. & 2.  FTV megoldás 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

44 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április (Bizonyítás folytatása) FTV optimális? (indirekt) Tfh FTV nem optimális megoldás, azaz FT”={ft”1,ft”2,..,ft”k} optimális …, amelyre k<ftDb. F1  FT*=(ft*,ft”2,...,ft”k) is optimális … Hagyjuk el, akik ft*-kor jelen voltak. Ezek alkotják éppen W-t. Mivel FT* megoldás során mindenkiről ké-szült fénykép, és ft*-kor a W-beliekről nem készülhetett, ezért róluk csak a későbbi időpontokban készülhetett.  (ft”2,...,ft”k) megoldás W mellett, vagyis jobb az optimális FTW-nél. Ez ellentmondás. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

45 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április A megvalósítás: ábrázolás Const MaxN=3000; {az intervallumok max. száma} MaxT=1000; {a megoldás időpontok max. száma} Var{Global} vDb :Word; {az intervallumok száma} Mettol:Array [1..MaxT] of Word; {az intervallumok: [Mettol[i],i), ha Mettol[i]>0} ftDB:Word; {a megoldás időpontok száma} FT:Array [1..MaxN] of Word; {a megoldás időpontok halmaza} A távozás előtt készüljön a fénykép! 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

46 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április A megvalósítás: a lényegi rész algoritmusa Procedure FotoUtemezes; {Globális Input: MaxT, Mettol Globális Output: ftDB, FT} Var i,t:Integer; Utolso:Integer; Begin{FotoUtemezes} Utolso:=0;{az utolsó beválasztott pont} ftDB:=0; {a beválasztott pontok száma} For t:=1 to MaxT Do Begin If (Mettol[t]>0)and(Utolso<Mettol[t]) Then Begin Utolso:=t; Inc(ftDB); FT[ftDB]:=Utolso; End; End{for t}; End{FotoUtemezes}; van távozó az utolsó fényképezés után jött 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

47 Második példázat a „fényké-peszkedés”-ről
INFO Savaria'2005 Második példázat a „fényké-peszkedés”-ről 2005. április a beolvasás algoritmusa Procedure Beolvas; {Globális Output: vDb, Mettol} Var Bef:Text; i,tol,ig:Word; Begin{Beolvas} For i:=1 to MaxT do Mettol[i]:=0; Assign(Bef,'fenykep.be'); Reset(Bef); ReadLn(Bef,vDb); For i:=1 to vDb do Begin ReadLn(Bef,tol,ig); If tol>Mettol[ig] then Mettol[ig]:=tol; End; Close(Bef); End{Beolvas}; Hatékonyság Hely – nem függ vDb-től; Idő – vDb-től lineárisan (nem négyzetesen, mint a rendezés) 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

48 Harmadik példázat a „ültetés”-ről
INFO Savaria'2005 Harmadik példázat a „ültetés”-ről 2005. április A feladat: „Egy rendezvényt olyan teremben tartanak, ahol M db ülőhely van. Az ülőhelyek 1-től M-ig sorszámozottak. A rendezvény szervezője megrendeléseket fogad. Minden megrendelés egy (A,B) számpárt tartalmaz, ami azt je-lenti, hogy a megrendelő olyan ülőhelyet szeretne kap-ni, amelynek S sorszáma A és B közé esik (ASB). Írjunk programot, amely kiszámítja, hogy a szervező a megrendelések alapján a legjobb esetben hány meg-rendelést tud kielégíteni és meg is ad egy olyan jegyki-osztást, amely kielégíti a megrendeléseket!” 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

49 Harmadik példázat a „ültetés”-ről
INFO Savaria'2005 Harmadik példázat a „ültetés”-ről 2005. április A megoldás: Észrevétel: nagyban emlékeztet az első fela-dat megoldására. Itt is, ott is egy interval-lum­halmazból kell minél többet kiválasztani úgy, hogy a belőlük kiválasztott „pont” más intervallumból vettel ne essen egybe. Ezért az elemzéstől most eltekinthetünk. 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

50 Harmadik példázat a „ültetés”-ről
INFO Savaria'2005 Harmadik példázat a „ültetés”-ről 2005. április A megvalósítás: adatleírás Const MaxN=1000; {a megrendelések max. száma} MaxM=10000; {az ülőhelyek max. száma} Type TMegrendeles=Array [1..MaxN] of Record k,v:Word End; {a szék intervallumok kezdő és vég-időpontjai} Var{Global} szekDb:Word; {az ülőhelyek száma} mrDb:Word; {a megrendelések száma} Mr:TMegrendeles; {a megrendelések} Hany:Integer; {kielégíthető megrendelők száma} Mo:Array [1..MaxM] of 0..MaxN; {a megoldás: az i-edik széket a Mo[i]-számú megrendelő kapja, ha ez nem 0} 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

51 Harmadik példázat a „ültetés”-ről
INFO Savaria'2005 Harmadik példázat a „ültetés”-ről 2005. április A megvalósítás: a lényegi rész algoritmusa rS index-tömb: hogy ne kelljen mozgatni Procedure Ultet; {Globális intput: szekDb,mrDb,Mr Globális output: Hany,Mo} Var rS:Array [1..MaxN] of 1..MaxN; i,ii,j:Word; Begin{Ultet} For i:=1 To mrDb Do rS[i]:=i; For i:=1 To szekDb Do Mo[i]:=0; Rendez{mrDb,rS,Mr}; Hany:=0; For i:=1 To mrDb Do Begin ii:=rS[i]; j:=Mr[ii].k; While (j<=Mr[ii].v) and (Mo[j]<>0) do Inc(j); If j<=Mr[ii].v then Begin Mo[j]:=ii; Inc(Hany); End; End{For i}; End{Ultet}; van még szabad hely számára? 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

52 Harmadik példázat a „ültetés”-ről
INFO Savaria'2005 Harmadik példázat a „ültetés”-ről 2005. április a rendezés algoritmusa egy hatékony Quicksort: Procedure Rendez; {Globális input: mrDb,rS,Mr Globális output: rS} Function Kisebb(i,j:Word):Boolean; Begin{Kisebb} … {Kisebb:=Mr[i] <v Mr[j]} End{Kisebb}; Function Feloszt(Bal,Jobb : Word): Word; Var j:Word; … Begin{Feloszt} … {rS-t szétválogatja a középsőnél kisebbekre és nem kisebbekre; a „középső” a j. helyre kerül} Feloszt:=j End{Feloszt}; 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

53 Harmadik példázat a „ültetés”-ről
INFO Savaria'2005 Harmadik példázat a „ültetés”-ről 2005. április a rendezés algoritmusa egy hatékony Quicksort: Procedure Rendez; {Globális input: mrDb,rS,Mr Globális output: rS} Function Kisebb(i,j:Word):Boolean; Begin{Kisebb} … {Kisebb:=Mr[i] <v Mr[j]} End{Kisebb}; Function Feloszt(Bal,Jobb : Word): Word; Var j:Word; … Begin{Feloszt} … {rS-t szétválogatja a középsőnél kisebbekre és nem kisebbekre; a „középső” a j. helyre kerül} Feloszt:=j End{Feloszt}; Procedure RendezR(Bal,Jobb : Integer); Var f : Word; Begin{RendezR} f:=Feloszt(Bal,Jobb); If f>Bal then RendezR(Bal,f); If f+1<Jobb then RendezR(f+1,Jobb) End{RendezR}; Begin{Rendez} RendezR(1,mrDb) End;{Rendez} 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

54 Harmadik példázat a „ültetés”-ről
INFO Savaria'2005 Harmadik példázat a „ültetés”-ről 2005. április A rendezés érdekessége – kérdések: Hány ízben kerül rá a sor? Ugyanazon adatsorozatot esetleg több szempontból is kell-e rendezni? Memóriaszűkösség 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

55 Harmadik példázat a „ültetés”-ről
INFO Savaria'2005 Harmadik példázat a „ültetés”-ről 2005. április A rendezés érdekessége – megfontolások: Csak egyszer, akkor egy „egyszerű” ren-dezés is megteszi. (Hatékonysága: (N2)). Többszörös sorrendbe állítás: az előzetes sorrend csak ha „muszáj”, változzon. Például: ha (kezdet,vég) kettősök soroza-tát már rendeztük kezdet-szerint, majd vég-szerint is kell, akkor azonos végűek között maradjon meg a kezdet-szerinti sorrend. (Stabil rendezés.) „Memóriabőség”, akkor a sebességnövelés érdekében segédtömbök. Például index-tömb közvetítését igénybe venni (l. előbb az rS). 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

56 INFO Savaria'2005 Konklúzió? 2005. április Néhány további klasszikus feladat, de most már részletes elemzés nélkül. Huffman-kódolás Darabolási feladat Pénzváltási feladat(ok) Kérdések: Vannak-e felismerhető jegyei a feladatoknak? Láttuk: sablon az van. De, milyen csapdák vannak? Példák: „Apró” módosítások – egy csipetnyi pénz a feltételek közé 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

57 Komolytalan befejezés, ha még nem lenne elég a jókedv
INFO Savaria'2005 Komolytalan befejezés, ha még nem lenne elég a jókedv 2005. április A jó kedvért és a mohósághoz néhány web-irodalmi adalék: „Ami az embert jóllakottá teszi, az nem a táplálék mennyisége, hanem a mohóság hiánya.” Bhagavad-Gita: Tizenhatodik fejezet [21] Tizennegyedik fejezet [17] „A jótulajdonságokat szeretjük – a rosszakba szerelmesek vagyunk.” Karinthy Frigyes 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok

58 Komolytalan befejezés, ha még nem lenne elég a jókedv
INFO Savaria'2005 Komolytalan befejezés, ha még nem lenne elég a jókedv 2005. április Vicc: „– Asszony! Fantasztikus ember ez az Oszkár. Minden kell neki, amit csak meglát. – Akkor bemutathatnád neki a lányunkat...” Kép: 2005. április Mohó algoritmusok Szlávi Péter: Tehetséggondozás - mohó algoritmusok


Letölteni ppt "INFO Savaria'2005 Szlávi Péter ELTE IK"

Hasonló előadás


Google Hirdetések