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

Hasonló dokumentumok
angolul: greedy algorithms, románul: algoritmi greedy

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

Programozási módszertan. Mohó algoritmusok

Algoritmusok bonyolultsága

A számítástudomány alapjai

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

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

Algoritmuselmélet 18. előadás

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

Gráfelméleti feladatok. c f

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális

Diszkrét matematika 2. estis képzés

Diszkrét Irányítások tervezése. Heurisztika Dr. Bécsi Tamás

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Diszkrét matematika 2.C szakirány

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

Diszkrét matematika 2.C szakirány

2017/ Szegedi Tudományegyetem Informatikai Intézet

Approximációs algoritmusok

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

17. előadás: Vektorok a térben

Algoritmusok bonyolultsága

Adatszerkezetek 2. Dr. Iványi Péter

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

Diszkrét matematika 2. estis képzés

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Számítógép és programozás 2

Számítógép és programozás 2

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Mohó algoritmusok. Példa:

2. Visszalépéses keresés

értékel függvény: rátermettségi függvény (tness function)

Számelméleti alapfogalmak

Az optimális megoldást adó algoritmusok

Geometriai valo szí nű se g

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

A lineáris programozás alapjai

Navigáci. stervezés. Algoritmusok és alkalmazásaik. Osváth Róbert Sorbán Sámuel

Gráfalgoritmusok ismétlés ősz

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Hálózati folyamok. Tétel: A maximális folyam értéke megegyezik a minimális vágás értékével.

2. Visszalépéses stratégia

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

Programozási segédlet

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

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

ELTE IK Esti képzés tavaszi félév. Tartalom

Algoritmuselmélet 11. előadás

JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

HAMILTON ÚT: minden csúcson PONTOSAN egyszer áthaladó út

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

A Szállítási feladat megoldása

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

Algoritmuselmélet 1. előadás

Diszkrét matematika 2.C szakirány

Mesterséges Intelligencia I. (I602, IB602)

Ü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

Hálózatszámítási modellek

Matematikai problémák vizsgálata a Maple programcsomag segítségével

Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1

Felvételi tematika INFORMATIKA

Gauss-Seidel iteráció

A gráffogalom fejlődése

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

Közösség detektálás gráfokban

Sorozatok. 5. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Sorozatok p. 1/2

Diszkrét matematika 2.C szakirány

Dijkstra algoritmusa

Korlátozás és szétválasztás módszere Holló Csaba 2

Számításelmélet. Második előadás

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

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

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

22. GRÁFOK ÁBRÁZOLÁSA

10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

értékel függvény: rátermettségi függvény (tness function)

Adatszerkezetek II. 2. előadás

Online migrációs ütemezési modellek

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Diszkrét matematika II., 8. előadás. Vektorterek

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

Metrikus terek, többváltozós függvények

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

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

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írás:

Csíkszereda IRT-. kurzus 3. Előadás: A mohó algoritmus 1

Csíkszereda IRT. 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.

Csíkszereda IRT. 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 x j = x j - 1, x j, x j + 1, j=1,...,n} Lokális keresés: cx = { max c*x x ε S V(x) } 3

Csíkszereda IRT. kurzus Klasszikus szuboptimális módszerek (nem optimális de polinomiális) - Mohó (Greedy) algoritmusok - Divide et Impera, (oszd meg és uralkodj) - Heurisztikák

Csíkszereda IRT. 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. 5

Csíkszereda IRT. kurzus Általánosan öt pillérre támaszkodik: 1. 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 3. egy lehetőségvizsgáló függvény, amely megnézi, hogy egy jelölt alkalmase a megoldásra. egy célfüggvény, amely egy értéket megoldásnak, vagy részleges megoldásnak jelöl 5. egy megoldásfüggvény, amely jelzi, ha megtaláltuk a teljes megoldást. Forrás: http://hu.wikipedia.org/wiki/mohó_algoritmus 6

Csíkszereda IRT. 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 36 RON-t. 1 db 00 RON-os 1 db 100 RON-os 1 db 50 RON-os 1 db 10 RON-os, 1 db 5 RON db 1 RON

01 0 03 0 05 06 0 0 01 1 3 5 6 0 9 6 5 03 1 9 5 1 9 0 1 1 3 6 9 05 1 9 6 9 06 1 9 9 9 9 3 9 0 1 1 9 0 1 1 1 1 1 1 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ó sárga.

Csíkszereda IRT. 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 v i az i-edik dolog térfogata h i 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. s i =h i /v i az i-edik dolog hasznossági sűrűsége 9

Csíkszereda IRT. 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. 1. Beolvas n, V, v[][n] //n-a dolgok száma, V hátizsák térfogata, v[1][n] tartalmazza a dolgok térfogatait v[][n] tartalmazza a dolgok hasznosságát. Kiszámol és sorbarak. 3. Berak a hátizsákba, amíg lehet. Vége 10

Csíkszereda IRT. kurzus Név Matrac Arany Víz Zokni Pokróc Alsó v i 300 50 100 30 00 60 hi 500 1000 0 0 100 0 h i /v i 1.66 0 0. 1.33 0.5 0.33 Dolog Hasznos Térfogat Össztérf Arany 1000 50 50 Matrac 500 300 350 Zokni 0 30 30 Pokróc 100 00 50 Alsó 0 60 0 Viz 0 100 50 V=500 dm 3 Tömeg??????? 11

Csíkszereda IRT. 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 1

Csíkszereda IRT. 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, S 1, S esetében { S 1, S maximális független alhalmazai az S nek S 1 = S } 13

Csíkszereda IRT. kurzus MOHÓ Algoritmus 1. Kiválasztunk egy e 1 E elemet úgy hogy S 1 := { e 1 } F(P) es w(e )= 1 max{w(e) : { e } F(P)}. Választunk egy másik elemet e E-S 1 úgy hogy S := S 1 { e } = { e 1, e } F(P), és W(e ) = max { w(e) : e E-S 1 es S 1 { 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. 1

Csíkszereda IRT. 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 15

Csíkszereda IRT. 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 16

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 1

Kruskal algoritmusa a b i h g c f e d 1 9 11 6 1 10 a b i h g c f e d 1 9 11 6 1 10 1 a b i h g c f e d 1 9 11 6 1 10 a b i h g c f e d 1 9 11 6 1 10

Kruskal algoritmusa - a b i h g c f e d 1 9 11 6 1 10 a b i h g c f e d 1 9 11 6 1 10 19 a b i h g c f e d 1 9 11 6 1 10 a b i h g c f e d 1 9 11 6 1 10

Kruskal algoritmusa -3 a 11 b i 6 c d 1 9 e a 11 b i 6 c d 1 9 e h g f 10 h g f 10 1 Minden lépésben megkeresi a G A =(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 1 b c d 9 11 i 1 6 e h g f 10 A Kruskal algoritmus mohó algoritmus, mert minden lépésben a lehetséges legkisebb súlyú élet adja hozzá az erdőhöz 1 0

Csíkszereda IRT. kurzus Divide et Impera, (oszd meg és uralkodj) Példa: Adva van egy vektor a=(a1,a,,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 1

Csíkszereda IRT. 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ő

Csíkszereda IRT. kurzus Sorbarakás egy gépen, előkészítési idővel T= 0 5 6 3 1 1 0 3 5 3 3 0 5 3 0 1 5 5 0 3 3 0 A 0 5 6 3 1 1 0 3 5 3 3 0 5 3 0 1 5 5 0 3 3 0 F=1+3+++3=11 B F C E D 3

Csíkszereda IRT. kurzus 0 5 6 3 1 1 0 3 5 3 3 0 5 3 0 1 5 5 0 3 3 0 1-esből indulva: 1-6-3-5-- K=1+3+++3=11 -esből indulva: -1-6-3-5- K=1+1+3++=9 3-asból indulva 3-5--1-6- K=++1+1+=10 -esből indulva: -5--1-6-3 K=1++1+1+3= 5-ösből indulva 5--1-6-3- K=+1+1+3+5=1 6-osból indulva 6-1---5-3 K=++3+1+5=13