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

Hasonló dokumentumok
Adatszerkezetek II. 7. előadá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

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

Adatszerkezetek II. 6. előadás

Informatikai tehetséggondozás:

Mohó algoritmusok. Példa:

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

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

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

angolul: greedy algorithms, románul: algoritmi greedy

Dinamikus programozás II.

Programozási módszertan. Mohó algoritmusok

OKTV 2005/2006 döntő forduló

Algoritmuselmélet 18. előadás

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

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

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

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

Felvételi tematika INFORMATIKA

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

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

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

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

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

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

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

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

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

OKTV 2007/2008 Informatika II. kategória döntő forduló Feladatlap. Oktatási Hivatal

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

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

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

Visszalépéses kiválogatás

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

Rekurziók, algoritmusok 5-8. osztályban már bőven el lehet kezdeni. Erdős Gábor

44. ORSZÁGOS TIT KALMÁR LÁSZLÓ MATEMATIKAVERSENY. Megyei forduló április mal, így a számjegyeinek összege is osztható 3-mal.

Informatikai tehetséggondozás:

Informatikai tehetséggondozás:

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

Nagy Gábor compalg.inf.elte.hu/ nagy

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL

2014. évi Bolyai János Megyei Matematikaverseny MEGOLDÁSI ÉS ÉRTÉKELÉSI ÚTMUTATÓ 9. osztály

43. ORSZÁGOS TIT KALMÁR LÁSZLÓ MATEMATIKAVERSENY MEGYEI FORDULÓ HATODIK OSZTÁLY JAVÍTÁSI ÚTMUTATÓ

Algoritmusok bonyolultsága

Adatszerkezetek II. 10. előadás

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

Kombinatorikai algoritmusok

Ü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

2017/ Szegedi Tudományegyetem Informatikai Intézet

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

A 2014/2015 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

Diszkrét matematika 2.

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

2. forduló. MEGOLDÁSOK Pontszerző Matematikaverseny 2014/2015 tanév. 1. Számkeresztrejtvény:

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

GYÜMÖLCSÖK GYŰJTÉSE ÉS VÁLOGATÁSA

Diszkrét matematika 1.

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

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

file://c:\coeditor\data\local\course410\tmp.xml

Informatikai tehetséggondozás:

Adatbázis rendszerek Gy: Algoritmusok C-ben

KÖZÚTI ÉS LÉGI KÖZLEKEDÉSI, SZÁLLÍTMÁNYOZÁSI ÉS LOGISZTIKAI ISMERETEK EMELT SZINTŰ ÍRÁSBELI VIZSGA MINTAFELADATOK

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

Osztott algoritmusok

Válogatott versenyfeladatok programozásból

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Adatszerkezetek II. 2. előadás

1992. évi verseny, 2. nap. legkisebb d szám, amelyre igaz, hogy bárhogyan veszünk fel öt pontot

Az optimális megoldást adó algoritmusok

Elemi matematika szakkör

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

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?

Gyakorló feladatok ZH-ra

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása

148 feladat ) + ( > ) ( ) =?

Operációkutatás. 4. konzultáció: Szállítási feladat. A feladat LP modellje

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

SOROZATOK (SZÁMTANI SOROZAT)

Gyakorló feladatok Alkalmazott Operációkutatás vizsgára. További. 1. Oldja meg grafikusan az alábbi feladatokat mindhárom célfüggvény esetén!

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Gráfelmélet II. Gráfok végigjárása

Visszalépéses maximumkiválasztás

Általános algoritmustervezési módszerek

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Írd le, a megoldások gondolatmenetét, indoklását is!

Informatikai tehetséggondozás:

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

SOROZATOK- MÉRTANI SOROZAT

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

Informatikai tehetséggondozás:

Diszkrét matematika 2.C szakirány

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

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

KOMBINATORIKA Permutáció

A 2009/2010 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 2014/2015 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

Átírás:

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

Mohó stratégia 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. 2/39

Hátizsák Mohó stratégia Hátizsák probléma N-féle anyagot kell egy hátizsákba pakolni (darabolni is lehet), V i az anyag értéke, W i a súlya, a hátizsákba H súly fér, a lehető legnagyobb értéket kell elvinni. Rendezzük az anyagokat V i /W i relatív érték szerint! Lássuk be, hogy e sorrend szerint folyamatosan kell vennünk, amíg lehet, esetleg az utolsónak csak egy részét! 3/39

Hátizsák Mohó stratégia Bizonyítás Tegyük fel, hogy az első anyagból 1 kg-mal kevesebbet teszünk a hátizsákba! Ekkor az össz-érték V 1 /W 1 gyel csökken. Ha bármely későbbiből veszünk 1 kg-ot, akkor az össz-érték V i /W i vel nő, de mivel V 1 /W 1 V i /W i, ezért az össz-érték így nem lehet nagyobb! 4/39

Hátizsák Mohó stratégia Hátizsák probléma Ha az egyes anyagok nem darabolhatók, akkor a feladat mohó stratégiával nem oldható meg. Ellenpélda a mohó stratégiára: W 1 =10, V 1 =60, V 1 /W 1 =6 W 2 =20, V 2 =100, V 2 /W 2 =5 W 3 =30, V 3 =120, V 3 /W 3 =4 Hátizsák kapacitás: 50 Ekkor a mohó megoldás: (1 és 2) 160, pedig a jó megoldás (2 és 3) 220. 5/39

Benzinkút Mohó stratégia Benzinkút probléma Egy útvonalon N benzinkút található. Ismerjük az egyes benzinkutak távolságát, valamint azt, hogy tele tankkal az autónk hány kilométert tud megtenni (K)! Számold ki, hogy minimum hány helyen kell tankolnunk, s mondd is meg, hogy mely benzinkutaknál! 6/39

Benzinkút Mohó stratégia A megoldás a benzinkutak halmazának egy B 1,,B k részhalmaza, ahol Táv(B i+1 )-Táv(B i ) K és Táv(N)-Táv(B k ) K. Ami nem kérdés: a kezdőpontban (azaz az 1. benzinkútnál) tankolni kell, azaz B 1 =1. Ami szintén nem kérdéses: a célpontban már nem kell tankolni! Mohó választás: Mindig a lehető legkésőbb tankoljunk, azaz B 2 legyen az a benzinkút, amelyre Táv(B 2 )-Táv(B 1 ) K, de Táv(B 2 +1)-Táv(B 1 )>K. 7/39

Benzinkút Mohó stratégia Bizonyítás: Ha korábban (valamely j sorszámú benzinkútnál) tankolnánk, akkor 2 lehetőség van: Táv(B 3 )-Táv(j) K ugyanolyan számú tankolással célba érhetünk. Táv(B 3 )-Táv(j)>K másodszor is hamarabb kell tankolnunk, ekkor a megoldás a további tankolási helyektől függ, Azaz ha nem mohó módon választunk, akkor a tankolások száma vagy nem változik, vagy nagyobb lesz! 8/39

Benzinkút Mohó stratégia Benzinkút(N,Táv,db,B): db:=1; B(db):=1 Ciklus i=2-től N-1-ig Ha Táv(i+1)-Táv(B(db))>K akkor db:=db+1; B(db):=i Eljárás vége. Megjegyzés: Ha Táv(N)-Táv(B(db))>K, akkor nincs megoldás. 9/39

Staféta Mohó stratégia Staféta Az olimpiai lángot egy kiindulási városból a cél városba kell eljuttatni. A két város távolsága K kilométer. A szervezők meghirdették, hogy olyan futók jelentkezését várják, akik pontosan H kilométert futnak az olimpiai lánggal. Sok futó jelentkezett, mindegyik megadta, hogy hányadik kilométertől vállalja a futást. A szervezők ki akarják választani a jelentkezők közül a lehető legkevesebb futót, akik végigviszik a lángot. 10/39

Staféta Mohó stratégia Ha egy futó az x kilométertől fut, akkor minden olyan futó át tudja venni tőle a lángot, aki olyan z kilométertől vállalja a futást, hogy z x+h. A kiindulási városból biztosan indulni kell egy futónak. A megoldás a futók egy olyan F 1,,F k részhalmaza, amikor minden futó a lehető legkésőbb adja át a lángot a következő futónak. Ha sorba rendezzük a futókat az indulási hely szerint, akkor a feladat megoldása azonos a benzinkutas feladat megoldásával. 11/39

Staféta Mohó stratégia Staféta(N,E,H,db,B): db:=1; B(db):=1 Ciklus i=2-től N-1-ig Ha E(i+1)>E(B(db))+H akkor db:=db+1; B(db):=i Eljárás vége. Megjegyzés: Ha E(N)>E(B(db))+K, akkor nincs megoldás. 12/39

Staféta Mohó stratégia Staféta Az olimpiai lángot egy kiindulási városból a cél városba kell eljuttatni. A két város távolsága K kilométer. Sok futó jelentkezett, mindegyikről tudjuk, hogy hányadik kilométertől hányadik kilométerig vállalja a futást. A szervezők ki akarják választani a jelentkezők közül a lehető legkevesebb futót, akik végigviszik a lángot. 13/39

Staféta Mohó stratégia Ha egy futó az x kilométertől az y kilométerig vállalja a futást, akkor minden olyan futó át tudja venni tőle a lángot, aki olyan z kilométertől vállalja a futást, hogy x z y. A kiindulási városból biztosan indulni kell egy futónak. A megoldás a futók egy olyan F 1,,F k részhalmaza, amikor minden futó annak adja át a lángot, aki a lehető legtovább tudja vinni. 14/39

Staféta Mohó stratégia Az i-edik futó E(i) kilométertől V(i) kilométerig vállalja a láng vitelét. Rendezzük sorba a futókat az indulási hely szerint! Az utoljára kiválasztott futó érkezési helyéig válasszuk ki azt a futót, aki a legmesszebb vinné a lángot! Ha a következő futó már később indul, mint az aktuális futó befejezné a futást, akkor a leg-messzebb menőnek kell átadnia a lángot. 15/39

Staféta Mohó stratégia Staféta(N,E,V,db,B): db:=1; B(db):=1; lm:=1 Ciklus i=2-től N-1-ig Ha V(i)>V(lm) akkor lm:=i Ha E(i+1)>V(B(db)) akkor db:=db+1; B(db):=lm Eljárás vége. Megjegyzés: Ha E(N)>V(B(db)), akkor nincs megoldás. 16/39

Pakol mohó stratégia Feladat: Egy raktárban egyetlen hosszú sorban ládák vannak. Minden láda kocka alakú, de méretük különböző lehet. A ládák egymásra rakásával akarnak helyet felszabadítani. A biztonsági előírás szerint több ládát is lehet egymásra rakni, de minden ládát csak nála nagyobbra lehet helyezni. Az i-edik helyen lévő ládát csak akkor lehet rárakni a j-edik helyen lévő torony tetejére, ha az i-edik és j-edik helyek között már nincs láda (j lehet akár kisebb, akár nagyobb, mint i). Minden ládát legfeljebb egyszer lehet mozgatni. 17/39

Pakol mohó stratégia Megoldás: Haladjunk balról jobbra, amíg a láda méret növekszik. Ezek biztosan rátehetők arra, ameddig elértünk, de a tőle jobbra csökkenő sorrendben levők is (hacsak nincs két egyforma a két oldalon). Példa: 1 3 5 4 2 6 8 7 6 5 3 4 18/39

Pakol mohó stratégia Pakol(m): m:=0; i:=1; a[n+1]:=0 Ciklus b:=i Ciklus amíg i<n és a[i]<a[i+1] i:=i+1 bb:=i-1; j:=i+1; t:=a[i] Ciklus amíg b bb Ha a[j]<t és a[bb]<a[j] akkor t:=a[j]; j:=j+1 különben t:=a[bb]; bb:=bb-1 19/39

Pakol mohó stratégia Pakol(m): {maradtak jobbra} Ciklus amíg j n és t>a[j] t:=a[j]; j:=j+1 m:=m+1; i:=j amíg i n Eljárás vége. 20/39

Terem Mohó stratégia Feladat: Egy rendezvényen N előadást szeretnének tartani. Minden előadó megadta, hogy az előadását mettől meddig tartaná. Add meg, hogy minimum hány termet kell biztosítani az előadásoknak, hogy mindegyiket megtarthassák! Megoldás: Rendezzük sorba az előadásokat kezdési idő szerint! Vegyük sorra az előadásokat és tegyük be az első terembe, ahova betehetők! Ha mindegyik terem foglalt, akkor új termet kell kezdenünk! Megjegyzés: az első terem mohó stratégiával feltöltése hibás eredményt adna! 21/39

Terem Mohó stratégia Rendezvény(N): Rendezés(N,K,V,S); db:=0 Ciklus i=1-től N-ig j:=1 Ciklus amíg j db és V(terem(j,tdb(j))) K(i) j:=j+1 Ha j db akkor tdb(j):=tdb(j)+1 különben db:=db+1; tdb(j):=1 terem(j,tdb(j)):=s(i) Eljárás vége. 22/39

Lift - Mohó stratégia Feladat: Egy N emeletes házban szokatlan módon üzemeltetik a liftet. A lift az első szintről indul és mindig felmegy a legfelső szintre, majd visszatér az első szintre. Menet közben megáll minden olyan szinten, amelyik úticélja valamelyik liftben tartózkodó utasnak. Olyan szinten is megáll, ahonnan utazni szándékozik valaki az aktuális irányban, feltéve, hogy még befér a liftbe (figyelembe véve az adott szinten kiszállókat). A liftben egyszerre K ember lehet. Legkevesebb hány menet (egyszer felmegy, majd lejön) szükséges ahhoz, hogy minden várakozó embert elszállítson a lift? 23/39

Lift mohó stratégia Legyen E(i,j) az i. szintről utazó j. ember célemelete (E(i,j)=0 az utolsó után)! Ezek alapján ki tudjuk számolni azt is, hogy az i. emeleten felfelé menő liftből hányan szállnának ki (CF(i)), illetve a lefelé menő liftből hányan szállnának ki (CL(i)). Ezekből azt is kiszámolhatjuk, hogy az i. emeletről hányan mennének felfelé (F(i)), illetve lefelé (L(i)). A mohó megoldás lényege: mindig a lehető legtöbb ember legyen a liftben! Menet max max i 1..n F i 1 div K 1 L i 1 div K 1 24/39

Lift mohó stratégia Lift: Menet:=0; F(0):=0 Ciklus i=1-től N-ig F(i):=F(i-1)-CF(i); j:=1 Ciklus amíg E(i,j)>0 Ha E(i,j)>i akkor F(i):=F(i)+1 j:=j+1 At:=(F(i)-1) div K+1 Ha At>Menet akkor Menet:=At 25/39

Lift mohó stratégia L(N+1):=0 Ciklus i=n-től 1-ig -1-esével L(i):=L(i+1)-CL(i); j:=1 Ciklus amíg E(i,j)>0 Ha E(i,j)<i akkor L(i):=L(i)+1 j:=j+1 At:=(L(i)-1) div K+1 Ha At>Menet akkor Menet:=At Eljárás vége. 26/39

Kemping - Mohó stratégia Feladat: A Napsugár Kemping K faházat üzemeltet az év L napján. Minden vendég ugyanannyi időre, pontosan M napra foglalhat le egy-egy faházat. A kemping a teljes évre előre összegyűjtötte az igényeket. Minden vendég igényként annak a napnak a sorszámát adta meg, amelytől kezdve (M napra) le akar foglalni egy faházat. A kemping maximálisan hány vendéget fogadhat? 27/39

Kemping - Mohó stratégia Számítsuk ki, hogy mely naptól kezdődően hány igény van: Kiszámít(N): Igény:=(0,...,0) Ciklus i=1-től N-ig Igény(Kezd(i)):=Igény(Kezd(i))+1 Eljárás vége. Ha az igényeket kezdőidő szerint elégítjük ki, akkor kapjuk a maximális vendégszámot. 28/39

Kemping - Mohó stratégia Nézzük végig a napokat és az igényeket, ha lehetséges, osszuk be! Legyen Ut(j) a j. ház utolsó foglalt napja! Beoszt(L): Db:=0; Ut:=(0,...,0) Ciklus i=1-től L-M+1-ig van:=igaz Ciklus amíg Igény(i)>0 és van Szabadház(i,j,van) Ha van akkor Db:=Db+1; Ut(j):=i+M-1 Igény(i):=Igény(i)-1 Eljárás vége. 29/39

Kemping - Mohó stratégia Szabadház(i,j,van): j:=1 Ciklus amíg j K és Ut(j) i j:=j+1 van:=(j K) Eljárás vége. 30/39

Minibusz - Mohó stratégia Feladat: Egy vállalkozó N megálló között szállít utasokat minibusszal. A korlátozások előírták neki, hogy egy menetben mindig az 1. megállótól kell indulnia és az i-edik megállótól az i+1-edik megállóba kell mennie. Ismeri az utasok igényeit, tehát minden utasról tudja, hogy melyik megállótól melyik megállóig akar utazni. Legjobb esetben összesen hány utast tud egy menetben az utas igényének megfelelő helyre elszállítani? 31/39

Taxi - Mohó stratégia Minden állomáson legfeljebb K utas lehet a minibuszban. Ehhez minden állomáson adjuk meg a K hely kiszállási idejét! A minibuszba beszállásról a kiszállási idő pillanatában döntünk. Az i. állomáson kiszálló utas akkor szállhat be a minibuszba, ha van olyan hely a minibuszban, amiről az utolsó utas az ő beszállási ideje előtt szállt ki. Ha több ilyen is van, akkor azt kell választani, aki közülük a legkésőbb szállt ki! Rendezzük sorba a bemenetet kiszállási idő szerint növekvő sorrendbe, azon belül pedig beszállási idő szerint növekvőbe! 32/39

Taxi - Mohó stratégia Taxi: Rendezések; Hely:=(0,...,0) Ciklus i=1-től N-ig Ért:=0; Max:=0 Ciklus j=1-től K-ig Ha Hely(j) Be(i) akkor Ha Hely(j)>Ért akkor Ért:=Hely(j); Max:=j Ha Max>0 akkor Db:=Db+1; Hely(Max):=Ki(i) Eljárás vége. 33/39

Darabolás - Mohó stratégia Feladat: Adott egy fémrúd, amelyet megadott számú és hosszúságú darabokra kell felvágni. A darabok hosszát milliméterben kifejezett értékek adják meg. Olyan vágógéppel kell a feladatot megoldani, amely egyszerre csak egy vágást tud végezni. A vágások tetszőleges sorrendben elvégezhetőek. Egy vágás költsége megegyezik annak a darabnak a hosszával, amit éppen (két darabra) vágunk. A célunk optimalizálni a műveletsor teljes költséget. Példa: Rúdhossz=26, Darabok=(10,7,2,2,5) 34/39

Darabolás - Mohó stratégia Minden darabolás, így az optimális is leírható egy bináris fával. A fa levelei tartalmazzák a bemenetként kapott darabok hosszait, és minden belső pontja annak a darabnak a hosszát, amelyből vágással a két fiú-pontban lévő darab keletkezett, azaz a két fiának az összegét. Példánk esetén a fa a következőképpen néz ki. 35/39

Darabolás - Mohó stratégia A darabolás összköltsége is kifejezhető a fával, nevezetesen, az összköltség éppen a fa belső (nem levél) pontjaiban található számok összege. Fordítva is igaz, minden ilyen fa egy darabolást ír le. A fa költségén a fa belső pontjaiban lévő számok összegét értjük. Tehát keressük az optimális megoldást, mint egy darabolási fát, tehát azt, amelynek a költsége minimális. A darabolási fa költsége kifejezhető a következőképpen. Legyenek d 1,, d N a vágandó darabok hosszai és legyen m i a d i. darabot tartalmazó levélpont mélysége (a fa gyökerétől vett távolsága) a fában. Ezekkel a jelölésekkel a fa költsége: N i 1 m i * d i 36/39

Darabolás - Mohó stratégia Az optimális fára teljesül: A két legkisebb értéket tartalmazó levélpont mélysége a legnagyobb, és testvérek. A két legkisebbet elhagyva optimális megoldást kapunk arra a bemenetre, amiben a két legkisebb helyett az összegük szerepel. Építsük a darabolási fát úgy, hogy lépésenként a két legkisebb értéket tartalmazó pontot egy új pont két fiává tesszük, és az új pontba a két fiúban lévő érték összegét írjuk. 37/39

Darabolás - Mohó stratégia Darabol: Költség:=0; Ciklus i=1-től N-ig PrSorba(i); Fa(i).bal:=0; Fa(i).jobb:=0 Ciklus i=1-től N-1-ig PrSorból(x); PrSorból(y) z:=i+n; D(z):=D(x)+D(y); PrSorba(z) Fa(z).bal:=x; Fa(z).jobb:=y; Költség:=Költség+D(z) Eljárás vége. Hasonló feladat: Huffmann-kód. 38/39

Mohó stratégia 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! 39/39