Algoritmusok bonyolultsága



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

Gráf csúcsainak színezése. The Four-Color Theorem 4 szín tétel Appel és Haken bebizonyították, hogy minden térkép legfeljebb 4 színnel kiszínezhető.

Algoritmusok bonyolultsága

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

Diszkrét matematika II. gyakorlat

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

Diszkrét matematika 2.C szakirány

Programozási módszertan. Mohó algoritmusok

2. Visszalépéses keresés

Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat

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

Gráfelméleti feladatok. c f

Diszkrét matematika 2.

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.

2. Visszalépéses stratégia

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

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

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. 12.

Diszkrét matematika 2.

Approximációs algoritmusok

Az optimális megoldást adó algoritmusok

Bonyolultságelmélet. Monday 10 th October, 2016, 17:44

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

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

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

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

Programozási módszertan. Dinamikus programozás: A leghosszabb közös részsorozat

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2015/ Szegedi Tudományegyetem Informatikai Tanszékcsoport

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..

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a

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

Algoritmusok és adatszerkezetek gyakorlat 07

Nagyordó, Omega, Theta, Kisordó

Logika és számításelmélet. 11. előadás

Programozási segédlet

Gráfszínezési problémák és ütemezési alkalmazásaik

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

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

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

Diszkrét matematika 1.

Síkbarajzolható gráfok, duális gráf

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

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Gráfelméleti alapfogalmak

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

SzA X/XI. gyakorlat, november 14/19.

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

Adatbányászati szemelvények MapReduce környezetben

Ramsey-féle problémák

Számjegyes vagy radix rendezés

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

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Algoritmuselmélet 2. előadás

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

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

Gráfalgoritmusok ismétlés ősz

1. ábra. Számláló rendezés

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

Algoritmuselmélet 18. előadás

Algoritmuselmélet 1. előadás

OKTV 2005/2006 döntő forduló

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:

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

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

Készítette: Fegyverneki Sándor

Optimalizálási eljárások MSc hallgatók számára. 11. Előadás

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

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

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

Döntéselőkészítés. VII. előadás. Döntéselőkészítés. Egyszerű Kőnig-feladat (házasság feladat)

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Felvételi tematika INFORMATIKA

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

Programozási módszertan. Dinamikus programozás: szerelőszalag ütemezése Mátrixok véges sorozatainak szorzása

Gyakorlatok. P (n) = P (n 1) + 2P (n 2) + P (n 3) ha n 4, (utolsó lépésként l, hl, u, hu-t léphetünk).

INFORMATIKAI ALAPISMERETEK

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

Korlátozás és szétválasztás elve. ADAGOLO adattípus

Ütemezési feladatok. Az ütemezési feladatok vizsgálata az 50-es évek elején kezdődött, majd

Adatszerkezetek 2. Dr. Iványi Péter

Dr. Schuster György február / 32

Diszkrét matematika 2.C szakirány

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

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

Számláló rendezés. Példa

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

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

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

Tuesday, March 6, 12. Hasító táblázatok

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

Diszkrét matematika 2.C szakirány

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

Eötvös Loránd Tudományegyetem Természettudományi Kar. Gráfok színezése. BSc Szakdolgozat

Struktúra nélküli adatszerkezetek

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

Síkgráfok (négyszín-tétel, Kuratowski-tétel, Euler-formula)

Síkbarajzolható gráfok Április 26.

Átírás:

Algoritmusok bonyolultsága 9. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 18

Közelítő algoritmusok ládapakolás (bin packing) Adott n tárgy (s i tömeggel) és végtelen sok 1 kapacitású láda (doboz). Helyezzük el a tárgyakat minél kevesebb ládába! S = (s 1, s 2,..., s n ) úgy, hogy 1 s 1 s 2 s n > 0. Eredmény: B = (B 1, B 2,..., B n ): a B i halmaz tartalmazza az i-edik ládába került tárgyak indexét. LÁDAPAKOLÁS(S) 1. for i := 1 to n 2. do B i = // az i-edik láda tárgyainak indexhalmaza 3. b i := 0 // mennyire van megtelve az i-edik láda 4. for t := 1 to n 5. do j := 1 6. while b j + s t > 1 7. do j := j + 1 8. B j := B j {t} 9. b j := b j + s t 11. return B 2 / 18

Ládapakolás példa 0.5 0.4 0.3 0.2 0.2 0.2 0.2 közelítő algoritmus eredménye: 0.4 0.5 0.2 0.2 0.2 0.3 0.2 optimális megoldás: 0.2 0.3 0.5 0.2 0.2 0.2 0.4 3 / 18

Ládapakolás elemzés Az algoritmus négyzetes (a két egymásba ágyazott ciklus miatt): Θ(n 2 ). Tétel A LÁDAPAKOLÁS algoritmus 2-közelítő algoritmus. Legyen az optimális megoldás C láda, és az algoritmus eredménye C láda (nyilván C C.) Két egymás melletti láda esetében nem fordulhat elő, hogy mindkettő csak legfeljebb félig legyen megtöltve, hisz ekkor a második láda tartalma belefért volna az elsőbe. Tehát legalább C 1 láda felénél jobban meg van töltve. Azaz n s i > C 1 n 2, de s i < C, innen pedig C 1 < 2C, i=1 azaz C 2C. i=1 4 / 18

Közelítő sémák hátizsákfeladat (knapsack) Adott n tárgy (s i tömeggel) és egy K kapacitású hátizsák. Töltsük meg minél jobban a zsákot! S = (s 1, s 2,..., s n ) úgy, hogy s 1 s 2 s n. HÁTIZSÁK k (S, K ) 1. H := ; max := 0 2. for {1, 2,..., n} minden legfeljebb k elemű T részhalmazára 3. do sum := i T s i 4. for i := 1 to n 5. do if (j T ) and (sum + s j K ) 6. then sum := sum + s j 7. T := T {j} 8. if max < sum 9. then max := sum 10. H := T 11. return H 5 / 18

Hátizsákfeladat példa S=(50,42,32,26,20,19,6,3), K=100 Optimális megoldás: 42, 32, 26 összeg: 100 HÁTIZSÁK 0 : 50, 42, 6 összeg: 98 HÁTIZSÁK 1 : 32, 50, 19 összeg: 99 HÁTIZSÁK 2 : 42, 32, 26 összeg: 100 6 / 18

Hátizsákfeladat elemzés ( ) n Az {1, 2,..., n} halmaznak darab i elemű részhalmaza van. i k ( ) n Az algoritmus 3 10. sorait -szer végezzük el. i ( ) ( ) i=0 n n De = 1 és n i, ezért 0 i k i=0 ( ) n 1 + kn k i A ciklus belsejét legfeljebb n-szer végezzük el, ezért az algoritmus bonyolultsága: ( O n + kn k+1) (, azaz O kn k+1). 7 / 18

Hátizsákfeladat elemzés Tétel A HÁTIZSÁK k közelítő algoritmus esetében az optimális megoldás C tömegösszege és az algoritmus által adott C tömegösszeg aránya 1 + 1 k (Az. algoritmus ( 1 + 1 ) ) k -közelítő algoritmus. Bizonyítás: Legyen s 1 s 2 s n. Az optimális megoldás s i1 s i2... s ip. Ekkor C = p j=1 s i j. Innen: Ha 1 j p, akkor s ij C j. és ha k + 1 j p, akkor s ij C k+1. Ha p k, akkor C = C. Ha p > k, akkor legyen s q az első tömeg, amelyik nincs benne az optimális megoldásban. Ekkor C + s q > K, innen C C + sq C > K C 1. Innen C C + 1 k+1 > 1 és C C > k C k+1 vagy C < 1 + 1 k. 8 / 18

Részletösszeg-feladat (változat a hátizsákfeladatra) CLRS Adott S={s 1, s 2,..., s n }, ahol minden s i > 0, és adott K > 0. A feladat: létezik-e X S úgy, hogy x = K? NP-teljes feladat x X Gyakorlatban: keressük azt az X S részhalmazt, amelyre x K, és az összeg a lehető legnagyobb. x X Lista: L =< s 1, s 2,..., s k >, ahol s 1 s 2... s k. Ekkor L + x =< s 1 + x, s 2 + x,..., s k + x >. 9 / 18

Exponenciális idejű, pontos algoritmus Csak a részletösszeget határozza meg. Az ÖSSZEFÉSÜL két listát egybefésül, kihagyva az ismétlődő elemeket. PONTOS-RÉSZLETÖSSZEG(S, K ) 1. n := S 2. L 0 :=< 0 > 3. for i := 1 to n 4. do L i := ÖSSZEFÉSÜL(L i 1, L i 1 + s i ) 5. töröljük L i -ből a K -nál nagyobb elemeket 6. return L n legnagyobb eleme Példa: S = {1, 2, 4, 6}, K = 9 L 0 =< 0 > L 1 =< 0, 1 > L 2 =< 0, 1, 2, 3 > L 3 =< 0, 1, 2, 3, 4, 5, 6 > L 4 =< 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 > 10 / 18

Polinomiális közelítő séma Legyen 0 < δ < 1, és ha y 1 + δ z y, akkor y-t kitöröljük a listából, z az y képviselője az új listában. Ez a művelet a ritkítás. Ha δ = 0, 1, akkor L =< 10, 11, 12, 15, 20, 21, 22, 23, 24, 29 > 24 ritkítása: L =< 10, 12, 15, 20, 23, 29 >, mert pl. 1,1 < 23 < 24. 11 / 18

L =< y 1, y 2,..., y m > elemei növekvő sorrendbe vannak RITKÍT(L, δ) 1. m := L 2. L :=< y 1 > 3. last := y 1 4. for i := 2 to m 5. do if y i > last (1 + δ) 6. then tegyük y i -t L végére 7. last := y i 8. return L 12 / 18

KÖZELÍTŐ-RÉSZLETÖSSZEG(S, K, ε) 1. n := S 2. L 0 :=< 0 > 3. for i := 2 to n 4. do ÖSSZEFÉSÜL(L i 1, L i 1 + s i ) 5. L i := RITKÍT(L i, ε/2n) 6. töröljük L i -ből a K -nál nagyobb elemeket 7. return L n legnagyobb eleme 13 / 18

Példa S =< 104, 102, 201, 101 >, K = 308, ε = 0, 40, ekkor ε/8 = 0, 05 Eredmény: 302 Az optimális megoldás: 307= 104+102+101. 14 / 18

Gráfszínezés Feladat: minimális számú színnel kifesteni a gráf elemeit (csúcsok, élek, tartományok) úgy, hogy két szomszédos elem nem legyen ugyanolyan színű. síkgráfok tartományainak színezése négyszínprobléma, 1976-ban megoldották (K. Appel és W. Haken) 15 / 18

Csúcsok színezése NP-teljes feladat Közelítő algoritmus Adott a G = (V, E) gráf, ahol V = {v 1, v 2,..., v n }. Az algoritmus hozzárendel minden v i csúcshoz egy c i színt. Eredmény a C = (c 1, c 2,..., c n ) vektor. SZEKVENCIÁLIS_SZÍNEZÉS(G) 1. for i = 1 to n 2. do s := 1 3. while N(v i )-ben van s színű csúcs 4. do s := s + 1 5. c i := s színezzük ki v i -t az s színnel 6. return C 16 / 18

Példa Eredmény: C = (1, 2, 3, 1, 2). Kromatikus szám: Az a legkisebb c, amennyi színnel ki lehet színezni a gráf csúcsait. Jelölése: χ(g). Fenti példában χ(g) = 3, mivel kevesebb színnel nem lehet kiszínezni, ugyanis v 2 szomszédai egy úton vannak, tehát két szín szükséges a kiszínezésükre, így v 2 már csak egy harmadik színnel színezhető. 17 / 18

Az algoritmus polinomiális, O(n 2 ) bonyolultságú. Eredményessége azonban függ a csúcsok sorrendjétől. Például, { legyen G = }(V, E), ahol V = {a 1, b 1, a 2, b 2,..., a n, b n }, E = {a i, b j } i j. A közelítő algoritmus eredménye: 2, ha a csúcsok sorrendje a 1, a 2,..., a n, b 1, b 2,..., b n, n, ha a csúcsok sorrendje a 1, b 1, a 2, b 2,..., a n, b n. 18 / 18