4. Előadás: A mohó algoritmus Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus 4. Előadás: A mohó algoritmus
Az eddig tanult algoritmus tipúsok nem alkalmazhatók: Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Bevezetés Az eddig tanult algoritmus tipúsok nem alkalmazhatók: A valós problémák nem tiszta klasszikus problémák A problémák dimenziói nagyok, vagy nagyon nagyok Problémák több célfüggvényesek Gyakoriak a homályos megfogalmazások Nagyon sok számítási időre van szükség.
Keresés a mogoldások terében Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Keresés a mogoldások terében Probléma: max {c*x | x ε S } ahol S a megoldások tere, x egy elem ebből a térből x S c*x egy valos érték , méri az x minőségét Definíció: x pont környezete: V(x) = { x | dist ( x - x) <= r, x ε S, r ε R } Példa: V(x) = { x | xj = xj - 1, xj, xj + 1, j=1,...,n} Lokális keresés: cx’ = { max c*x │ x ε S V(x) }
Klasszikus szuboptimális módszerek (nem optimális de polinomiális) Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Klasszikus szuboptimális módszerek (nem optimális de polinomiális) - Mohó (Greedy) algoritmusok - Divide et Impera, (oszd meg és uralkodj) - Heurisztikák
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda. IRT. 4 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus MOHÓ algoritmusok Optimalizálási problémák megoldásakor használjuk. Olyan lépések sorozatából áll, ahol minden lépésben egy adott halmazból választhatunk. Mindig az adott lépésben optimálisnak látszó választást tesszük. Lokális optimumot választjuk, annak a reményében hogy eljutunk a globális optimumhoz.
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda. IRT. 4 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Általánosan öt pillérre támaszkodik: egy halmazból veszi a jelölteket, amelyekkel felállítja a megoldáshalmazt egy kiválasztó függvény, amely a legjobb jelöltet választja ki a megoldás reményében egy lehetőségvizsgáló függvény, amely megnézi, hogy egy jelölt alkalmas-e a megoldásra egy célfüggvény, amely egy értéket megoldásnak, vagy részleges megoldásnak jelöl egy megoldásfüggvény, amely jelzi, ha megtaláltuk a teljes megoldást. Forrás: http://hu.wikipedia.org/wiki/Mohó_algoritmus
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda. IRT. 4 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Pénzvisszaadási algoritmus: Hogyan adjunk vissza egy nagyobb pénzből, vásárlás után, hogy minél kevesebb címletet használjunk. A legnagyobb címletből, amennyit lehet, utána a következő legnagyobb címletből, amennyit lehet, stb... Vissza kell adnunk 367 RON-t. 1 db 200 RON-os 1 db 100 RON-os 1 db 50 RON-os 3 db 5 RON-os 2 db 1 RON
01 02 03 04 05 06 07 08 1 2 3 4 5 6 7 8 9 Bal-felső sarokból a jobb alsó sarokba szeretnénk eljutni úgy, hogy csak lefele vagy jobbra lehet lépni. Mohó útvonal a sárga, legrövidebb útvonal a piros + az utolsó 2 sárga.
vi – az i-edik dolog térfogata hi – az i-edik dolog hasznossága Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus A hátizsák probléma mohó megoldása. Van egy hátizsákunk. A zsák térfogata V. Vannak hasznos dolgaink, amelyeket be szeretnénk rakni a zsákba. Nem fér bele a zsákba minden. Mit pakoljunk bele a zsákba, hogy minél nagyobb legyen a hasznunk? Jelölések: V- a zsák térfogata vi – az i-edik dolog térfogata hi – az i-edik dolog hasznossága Definiálunk egy relatív hasznosságot, vagy hasznossági sűrűséget. Ez az érték, az egységnyi térfogatra eső hasznosság mértéke lesz. si=hi/vi – az i-edik dolog hasznossági sűrűsége
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda. IRT. 4 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus A dolgainkat a relatív hasznosság szerint csökkenő sorrendbe rakjuk. A legnagyobb értékűt pakoljuk be először. Addíg pakoljuk a zsákot, amíg fér bele. Ha nem fér a nagyobb hasznosságú dolog, vesszük sorba a következőt, amelyik belefér. Egyenlő relatív hasznosság esetén vagy aleatorikusan pakoljuk a hátizsákot vagy valamilyen lexikografikus sorrendben. Beolvas n, V, v[2][n] //n-a dolgok száma, V hátizsák térfogata, v[1][n] tartalmazza a dolgok térfogatait v[2][n] tartalmazza a dolgok hasznosságát Kiszámol és sorbarak. Berak a hátizsákba, amíg lehet 4. Vége
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda. IRT. 4 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Név Matrac Arany Víz Zokni Pokróc Alsó vi 300 50 100 30 200 60 hi 500 1000 20 40 hi/vi 1.66 0.2 1.33 0.5 0.33 Dolog Hasznos Térfogat Össztérf Arany 1000 50 Matrac 500 300 350 Zokni 40 30 380 Pokróc 100 200 580 Alsó 20 60 440 Viz 540 V=500 dm3 Tömeg???????
• Definíciók és jelölések E – egy véges sokaság Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus MOHÓ algoritmusok • Definíciók és jelölések E – egy véges sokaság W: E R – egy súlyfüggvény W(S) = ∑w(e), e ε S, S E F(E) – egy az E alsokaságok családja
Elméleti alapok (Matroidok , Grafoidok) Matroid: Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Elméleti alapok (Matroidok , Grafoidok) Matroid: Definíció: (E,F) egy matroid ha ε F bármelyik S és S’ esetében{S’ S ha F S’ F} bármelyik S , S1 , S2 esetében { S1 , S2 maximális független alhalmazai az S nek |S1 |=|S2 |}
• 1. Kiválasztunk egy e1 E elemet úgy hogy Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus • MOHÓ Algoritmus • 1. Kiválasztunk egy e1 E elemet úgy hogy S1 := { e1 } F(P) es w(e1 )= max{w(e) : { e } F(P)} • 2. Választunk egy másik elemet e2 E-S1 úgy hogy S2 := S1 { e2 } = { e1, e2 } F(P) , és W(e2 ) = max { w(e) : e E-S1 es S1 { e } F(P)} • 3. Folytatjuk a folyamat végéig Hogy mikor vezet egy mohó algoritmus az optimális megoldáshoz a követekező tétel adja meg.
A greedy módszer célja; hamar könnyen jó megoldásokhoz jutni Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Tétel: Ha (E,F) egy matroid akkor a mohó algoritmus az optimális megoldáshoz vezet. A greedy módszer célja; hamar könnyen jó megoldásokhoz jutni
Alkalmazási princípiumok Más módszerekkel való összehasonlítás: Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Alkalmazási princípiumok Az elemek sorbarakása a súlyozás szerint Az elemek kiválasztása A megszorítások ellenőrzése A celfüggvény ellenőrzése Más módszerekkel való összehasonlítás: A mohó algoritmus hamar vezet elég jó megoldásokhoz de nem feltétlenül az optimálishoz
A minimális feszítőfa probléma Huzalozási problémának is nevezzük, mivel n pont között próbál meghatározni egy olyan fát, amelyikben a gráf minden csúcspontja egyszer benne van. Lényeges, hogy a költség minél kisebb legyen (minél kisebb hosszúságú vezetékszál) Összefüggő, irányítatlan G=(V,E) gráf segítségével modellezük, ahol V-beli csúcsok az áramkör pontjai, E élei az összeköthető pontpárokat jelölik (u,v)E él rendelkezik egy w(u,v) súllyal, amelyik az u és v összekötési költségét adják meg Létező mohó algoritmusok (amelyek optimálisak) Kruskal algoritmus Prím algoritmusa
Kruskal algoritmusa a b i h g c f e d 1 7 4 8 9 11 6 2 14 10 a b i h g
Kruskal algoritmusa -2 a b i h g c f e d 1 7 4 8 9 11 6 2 14 10 a b i
Kruskal algoritmusa -3 a b i h g c f e d 1 7 4 8 9 11 6 2 14 10 a b i h g c f e d 1 7 4 8 9 11 6 2 14 10 a b i h g c f e d 1 7 4 8 9 11 6 2 14 10 Minden lépésben megkeresi a GA=(V,A) erdő két tetszőleges komponensét összekötő élek közül a legkisebb súlyú (u,v) él, és ezt veszi hozzá az egyre bővülő erdőhöz. A Kruskal algoritmus mohó algoritmus, mert minden lépésben a lehetséges legkisebb súlyú élet adja hozzá az erdőhöz
Divide et Impera, (oszd meg és uralkodj) Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Divide et Impera, (oszd meg és uralkodj) Példa: Adva van egy vektor a=(a1,a2,…,an), a feldolgozása lehetséges két részben I=1,.., k És I=k+1,…,n ig. Majd az eredményeket kombinálva az “a” vektor feldolgozását kapjuk Pocedure divimp (p.q, ) If q-p then call feldolg (p.q, ) else call div (p,q,m) call div (p,m, ) call divimp( m+1,q, ) call komb(, , ) endif return end
Heurisztikus módszerek Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Heurisztikus módszerek Definíció: Egy algoritmust heurisztikusnak mondunk, ha: Nincs elméleti alapja, Könnyű implementálni Gyorsan elég jó megoldásokat ad Különböző esetek A feltételek könnyen vagy nehezen teljesíthetők, az optimalitás könnyen vagy nehezen elérhető
Sorbarakás egy gépen, előkészítési idővel Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus Sorbarakás egy gépen, előkészítési idővel 0 2 5 6 3 1 1 0 4 3 7 5 3 3 0 5 2 4 4 3 2 0 1 5 7 2 5 2 0 4 2 4 3 4 3 0 0 2 5 6 3 1 1 0 4 3 7 5 3 3 0 5 2 4 4 3 2 0 1 5 7 2 5 2 0 4 2 4 3 4 3 0 T= F=1+3+2+2+3=11 B A C F E D
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda. IRT. 4 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 4. kurzus 0 2 5 6 3 1 1 0 4 3 7 5 3 3 0 5 2 4 4 3 2 0 1 5 7 2 5 2 0 4 2 4 3 4 3 0 1-esből indulva: 1-6-3-5-2-4 K=1+3+2+2+3=11 2-esből indulva: 2-1-6-3-5-4 K=1+1+3+2+2=9 3-asból indulva 3-5-2-1-6-4 K=2+2+1+1+4=10 4-esből indulva: 4-5-2-1-6-3 K=1+2+1+1+3=8 5-ösből indulva 5-2-1-6-3-4 K=2+1+1+3+5=12 6-osból indulva 6-1-2-4-5-3 K=2+2+3+1+5=13