Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.
|
|
- Gréta Horváth
- 6 évvel ezelőtt
- Látták:
Átírás
1 Algoritmuselmélet Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 1. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 1 / 401
2 Algoritmus fogalma Egyelőre nem definiáljuk rendesen az algoritmus fogalmát. Eljárás, recept, módszer. Jól meghatározott lépések egymásutánja, amelyek már elég pontosan, egyértelműen megfogalmazottak ahhoz, hogy gépiesen végrehajthatók legyenek. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 2 / 401
3 A szó eredete Al Khvarizmi (Mohamed ibn Músza) bagdadi matematikus a IX. században könyvet írt az egészekkel való alapműveletek végzéséről. algoritmus számítógép program valós probléma = absztrakt modell = algoritmus = program Cél: feladatokra hatékony eljárás kidolgozása Hatékony = gyors, kevés memória, kevés tárhely Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 3 / 401
4 Milyen hatékony egy algoritmus? Legtöbbször csak a lépésszám nagyságrendje érdekes. Hogyan függ a lépésszám az input méretétől? Az input méretét legtöbbször n-nel jelöljük. A lépésszám ennek egy f függvénye, azaz ha n méretű az input, akkor az algoritmus f (n) lépést végez. Igazából az f függvény az érdekes. 100n vagy 101n, általában mindegy n 2 vagy n 3 már sokszor nagy különbség, de néha mindegy n 2 vagy 2 n már mindig nagy különbség Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 4 / 401
5 Például Kérdés Egy művelet/mp sebességű számítógép mennyi ideig dolgozik, ha f (n) műveletet kell végrehajtani n méretű bemenetre? f (n) n n n 2 log 10 n 2 n n! , , év 2.9, év , év 2, é , 1 3, 1 év mp sok év sok év Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 5 / 401
6 Függvények nagyságrendje Definíció Ha f (n) és g(n) az R + egy részhalmazán értelmezett, valós értékeket felvevő függvények, akkor f = O(g) jelöli azt a tényt, hogy vannak olyan c, n 0 > 0 állandók, hogy f (n) c g(n) teljesül, ha n n 0. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 6 / 401
7 Példák 100n = O(n) Biz: 100n n + n 101n cn, ha n 300, c = 101 5n 2 + 3n = O(n 2 ) Biz: 5n 2 + 3n 5n 2 + 3n 2 8n 2 cn 2, ha n 100, c = 8 n 4 + 5n 3 = O(n 5 ) Biz: n 4 + 5n 3 6n 4 n 5 cn 5, ha n 6, c = 1 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 7 / 401
8 Példák n 1000 = O(2 n ) Biz: Teljes indukcióval, legyen c = 1, n 0 = n = re igaz, mert (2 4 ) Tegyük fel, hogy k-ra igaz. ( Felhasználjuk, hogy ha k 10 6 akkor 1000 ) i 1000 i = i i i 1 = = (10 6 ) i 1 k i 1. (k + 1) 1000 = k ( ) 1000 i k 1000 i + k k i 1 k 1000 i + k k k k = 2 k+1, ha k log (n) = O(n) Biz: Mivel a logaritmus függvény monoton nő, vehetjük a fentiek logaritmusát. 2 n = O(n!) n! = O(n n ) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 8 / 401
9 Példák Igaz-e, hogy n 2 = O(n)? Nem. Biz: Indirekt, tegyük fel, hogy létezik olyan c, n 0, hogy n 2 cn teljesül minden n n 0 esetén. Ekkor n c teljesül minden n n 0 esetén, ami nyilván nem igaz, ha n > c. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 9 / 401
10 Függvények nagyságrendje Definíció Ha f (n) és g(n) az R + egy részhalmazán értelmezett, valós értékeket felvevő függvények, akkor f = Ω(g) jelöli azt a tényt, hogy vannak olyan c, n 0 > 0 állandók, hogy f (n) c g(n) teljesül, ha n n 0. Például: 100n 300 = Ω(n), hiszen n > 300, c = 99-re teljesülnek a feltételek 5n 2 3n = Ω(n 2 ) n 4 5n 3 = Ω(n 4 ) 2 n = Ω(n 1000 ) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 10 / 401
11 Függvények nagyságrendje Definíció Ha f = O(g) és f = Ω(g) is teljesül, akkor f = Θ(g). Például: 100n 300 = Θ(n) 5n 2 3n = Θ(n 2 ) n 4 5n 3 = Θ(n 4 ) n = Θ(2 n ) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 11 / 401
12 Függvények nagyságrendje Definíció Legyenek f (n) és g(n) a pozitív egészeken értelmezett, valós értékű függvények. Ekkor az f = o(g) jelöléssel rövidítjük azt, hogy f (n) 0, ha n. g(n) Például: 100n = o(n 2 ), hiszen 100n+300 n 2 5n 2 + 3n = o(n 3 ) n 4 + 5n 3 = o(n 4 log 2 n) n 1000 = o(2 n ) 0 ha n Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 12 / 401
13 Algoritmikus problémák megoldása Algoritmikus probléma A modell B program A: pontosítás, egyszerűsítés, absztrakció, lényegtelen elemek kiszűrése, a lényeg kihámozása Modell: sokféle lehet, elég tág, de elég egyszerű, formalizált, pontos B: hatékony algoritmus, bemenő adatok eredmény, érdemes foglalkozni a kapott algoritmus elemzésével, értékelésével, megvizsgálva, hogy a módszer mennyire hatékony Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 13 / 401
14 Arthur király civilizációs törekvései Arthur király fényes udvarában 150 lovag és 150 udvarhölgy él. A király, aki közismert civilizációs erőfeszítéseiről, elhatározza, hogy megházasítja jó lovagjait és szép udvarhölgyeit. Mindezt persze emberségesen szeretné tenni. Csak olyan párok egybekelését akarja, amelyek tagjai kölcsönösen vonzalmat éreznek egymás iránt. Hogyan fogjon hozzá? Természetesen pártfogójához, a nagyhatalmú varázslóhoz, Merlinhez fordul. Merlin rögvest felismeri, hogy itt is bináris szimmetrikus viszonyok ábrázolásáról van szó. Nagy darab pergament vesz elő, és nekilát egy páros gráfot rajzolni. A királyi parancs teljesítéséhez Merlinnek élek egy olyan rendszerét kell kiválasztania a gráf éleiből, hogy a kiválasztott élek közül a gráf minden pontjához pontosan egy csatlakozzon. A kiválasztott élek felelnek meg a tervezett házasságoknak. A gráfelmélet nyelvén teljes párosítást kell keresnie. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 14 / 401
15 Közlekedési lámpák ütemezése e d a b c lámpák: ac, ad, bc, bd, ec és ed állapot: lámpák {P, Z } Feladat: Mennyi a minimális számú állapot, ami biztonságos és nem okoz örök dugót? ac bc ec I. II. III. I. II. III. ad bd ed Gráfelméleti nyelven: Mennyi G kromatikus száma? Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 15 / 401
16 Mobiltelefon-átjátszók frekvencia kiosztása Egy adott átjátszóhoz egy adott frenkvenciát rendelnek. Egy telefon a közelben levő átjátszók közül választ. Közel levő átjátszók frekvenciája különbözzön. A A C C A B B A Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 16 / 401
17 Elágazás és korlátozás Legtöbbször van c n -es algoritmus, de nem mindegy mekkora c. Bontsunk esetekre, azokat alesetekre,... = fa Értékeljük az eseteket = bizonyos irányokba nem kell továbbmenni. = (korlátozó heurisztika) Pl. sakkállások Feladat: Keressünk maximális méretű független ponthalmazt egy adott G gráfban. Nyilvánvaló módszer: Minden részhalmazt végignézünk = O(2 n ) lépés Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 17 / 401
18 Jobb algoritmus Észrevétel: Ha G-ben minden pont foka legfeljebb kettő, akkor a feladat lineáris időben megoldható: G izolált pontok, utak és körök diszjunkt uniója. = komponensenként minden második" pontot bevesszük a halmazba. (izolált pontok) MF(G) 1. Ha G-ben minden pont foka 2, akkor MF(G) az előbbi eljárás által adott maximális független halmaz, és a munkát befejeztük. 2. Legyen x G, fok(x) 3. S 1 := MF(G \ {x}) S 2 := {x} MF(G \ {x és szomszédai}). 3. Legyen S az S 1 és S 2 közül a nagyobb méretű, illetve akármelyik, ha S 1 = S MF(G) := S. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 18 / 401
19 Legyen T (n) az MF(G)-n ( V (G) n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is. Tétel Van olyan c állandó, hogy T (n) cγ n, tetszőleges n természetes számra, ahol γ a γ 4 γ 3 1 = 0 egyenlet pozitív gyöke (γ 1, 381). Bizonyítás. Legyen t(n) := T (n) + 1. T (n) T (n 1) + T (n 4) + 1, ha n > 4. = t(n) t(n 1) + t(n 4), ha n > 4. Indukcióval: t(n) cγ n igazn < 5-re elég nagy c-vel = Ezután, ha n 5, indukciós feltevésből: t(n) t(n 1) + t(n 4) cγ n 1 + cγ n 4 = = cγ n 4 (γ 3 + 1) = cγ n 4 γ 4 = cγ n. Összköltség: O(n d T (n)) = O(n d γ n ) = O(1, 381 n ). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 19 / 401
20 3-színezés keresése Feladat: Adott G, keressünk egy 3-színezést. Minden lehetséges színezést végignézünk = O(3 n ) lépés Ötlet: Bizonyos csúcsokat kiszínezünk pirosra, a többiről polinom időben el tudjuk dönteni, hogy kiszínezhetők-e kékkel és sárgával. Összköltség: O(2 n n c ). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 20 / 401
21 Dinamikus programozás Optimum meghatározása kisebb részfeladatok optimumainak felhasználásával. Általában egy táblázat kitöltése, az új elemeket a korábban kitöltött elemekből számoljuk. Binomiális együtthatók kiszámítása ( 0 ( 0 0) 0) ( 1 ) ( 1 0 1) ( 2 ) ( 2 ) ( ) ( 3 ) ( 3 ) ( 3 ) ( ) ( 4 ) ( 4 ) ( 4 ) ( 4 ) ( ) ( 1 ) ( 1 0 1) ( 2 ) ( 2 ) ( ) ( 3 ) ( 3 ) ( 3 ) ( ) ( 4 ) ( 4 ) ( 4 ) ( 4 ) ( ) Tétel ( ) n = k ( ) n 1 + k 1 ( ) n 1 k Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 21 / 401
22 Hátizsák probléma Probléma Adottak az s 1,..., s m súlyok, a b súlykorlát és a v 1,..., v m értékek. (Minden érték pozitív egész.) Melyik az az I {1,..., m} részhalmaz, melyre teljesül, hogy i I s i b és i I v i maximális? Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 22 / 401
23 Először kisebb problémára oldjuk meg: v(i, a) a maximális elérhető érték az s 1,..., s i súlyokkal, v 1,..., v i értékekkel és a súlykorláttal megadott feladatra. Ekkor v(0, a) = v(i, 0) = 0 a, i-re cél v(m, b) 0 a b 0 i v(i, a) m keresett érték v(i, a) = max{v(i 1, a); v i + v(i 1, a s i )} = Soronként kitölthető = minden érték két felette levőből számolható. Összköltség: O(bL) b-től függ (nem log b-től!), ha b sokjegyű szám, ez sok idő Katona Gyula Y. (BME SZIT) Algoritmuselmélet 1. előadás 23 / 401
24 Algoritmuselmélet Gráfok megadása, szélességi bejárás, összefüggőség, párosítás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 2. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 24 / 401
25 Gráfalgoritmusok irányított gráfok: G = (V, E) irányított él, irányított út, irányított kör élsúlyok: c(e) lehetnek negatívak is J H G E K D F I C B A L Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 25 / 401
26 Adjacencia-mátrix Definíció A G = (V, E) gráf adjacencia-mátrixa (vagy szomszédossági mátrixa) a következő a V elemeivel indexelt n-szer n-es mátrix: { 0 ha (i, j) E, A[i, j] = 1 ha (i, j) E. Irányítatlan gráfok esetén a szomszédossági mátrix szimmetrikus lesz (azaz A[i, j] = A[j, i] teljesül minden i, j csúcspárra). v v 1 v 3 v A = v 4 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 26 / 401
27 Súlyozott adjacencia-mátrix Ha költségek is vannak = 0 ha i = j, C[i, j] = c(i, j) ha i j és (i, j) éle G-nek, különben. v v 1 v 3 v C = v 4 Hátránya: a mérete (n 2 tömbelem) teljesen független az élek számától. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 27 / 401
28 Éllistás megadás G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-ből kimenő éleket, és ha kell, ezek súlyát is. Az i listáján egy élnek a lista egy eleme (cellája) felel meg. 1 1-ből kimenő élek cellái i j c(i,j) egy tipikus cella n Az (i, j) élnek megfelelő cella tartalmazza a j sorszámot, a c(i, j) súlyt (ha van), egy mutatót a következő cellára, és esetleg még egyet az előzőre is. Tárigény: n + e cella, Irányítatlan gráfoknál: n + 2e cella Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 28 / 401
29 Szélességi bejárás BFS: Breadth First Search Meglátogatjuk az első csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, ahol még nem jártunk, és így tovább. megvalósítás: sor (FIFO-lista) Berakjuk az épp meglátogatott csúcsot, hogy majd a megfelelő időben a szomszédaira is sort keríthessünk. Általános lépés: vesszük a sor elején levő x csúcsot, töröljük a sorból, meglátogatjuk azokat az y szomszédait, amelyeket eddig még nem láttunk, majd ezeket az y csúcsokat a sor végére tesszük. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 29 / 401
30 Szélességi bejárás procedure szb (v: csúcs) ( szélességi bejárás egy komponensre ) var Q: csúcsokból álló sor; x, y: csúcsok; begin bejárva[v] := igaz; sorba(v, Q); while Q nem üres do begin x := első(q); (ez egyben törli is x-et a sorból) for minden x y E élre do if bejárva[y] = hamis then begin bejárva[y] := igaz; ( ) sorba(y, Q) end end end Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 30 / 401
31 Szélességi bejárás procedure bejár ( szélességi bejárás minden komponensre ) begin for v := 1 to n do bejárva[v] := hamis; for v := 1 to n do if bejárva[v] = hamis then szb(v) end Összköltség: O(n + e) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 31 / 401
32 1 Faél: megvizsgálásukkor még be nem járt pontba mutatnak faél ilyen nincs visszaél keresztél keresztél Irányítatlan esetben csak faél és keresztél lehet. faél 2 4 ilyen nincs 3 ilyen nincs 5 keresztél 7 keresztél Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 32 / 401
33 Összefüggőség eldöntése Kérdés Adott G gráf összefüggő-e? procedure Összefüggő begin öf:=igaz; tetszőleges v-re szb(v); for u := 1 to n do if bejárva[u] = hamis then öf:=hamis; return(öf); end Összköltség: O(n + e) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 33 / 401
34 Maximális párosítás keresése páros gráfban BSZ-ből tudjuk, hogy javító utakat kell keresnünk. Tétel Egy párosítás akkor és csak akkor maximális, ha nincs hozzá tartozó javítóút. Kérdés Hogyan döntjük el, hogy van-e javítóút? Hogyan keresünk javítóutat? Módosítjuk a szélességi keresést: Egy párosítatlan pontból indulunk Minden páratlan szinten a BFS lépéseit használjuk. Minden páros szinten a párosítás éleit használjuk. Ha olyan pontba érünk, aminek nincs párja, találtunk javítóutat Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 34 / 401
35 Maximális párosítás keresése páros gráfban Költség: Ha minden párosítatlan pontból építünk egy ilyen fát = alternáló erdő = O(e) Ezután eggyel növelhetjük a párok számát = O(n)-szer kell ismételni Összköltség: O(ne) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 35 / 401
36 Legrövidebb utak súlyozatlan gráfokban Ha minden él hossza egy = út hossza = élek száma Szélességi kereséssel: Jelentse D[v] a v csúcsnak az s-től való távolságát az s-gyökerű szélességi fában. Legyen kezdetben D[s] := 0 az szb eljárásba tegyük be a D[y] := D[x] + 1; utasítást, miután elértük y-t. Lépésszám: O(n + e) Tétel Az előzőek szerint módosított szélességi bejárás végeztével teljesülnek a következők: 1. Legyen s = x 1, x 2,..., x n a csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x 1 ] D[x 2 ]... D[x n ]. 2. Ha x y éle G-nek, akkor D[y] D[x] D[v] = d(s, v) teljesül minden v V csúcsra. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 36 / 401
37 Tétel 1. D[x 1 ] D[x 2 ]... D[x n ]. Bizonyítás. A csúcsok az s = x 1, x 2,..., x n sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból. Ha x s csúcs előbb van, mint y = apa(x) nem lehet később, mint apa(y), hiszen ha előbb lenne, y-hoz előbb eljutottunk volna. Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb. D[x i ] = D[apa(x i )] + 1 és D[x i+1 ] = D[apa(x i+1 )] + 1 = Ha a két apa különböző = D[apa(x i )] D[apa(x i+1 )] = D[x i ] D[x i+1 ]. Ha pedig az apák megegyeznek = D[x i ] = D[x i+1 ]. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 37 / 401
38 Tétel 2. Ha x y éle G-nek, akkor D[y] D[x] + 1 Bizonyítás. Nézzük, hogy mi történik, amikor x kikerül a Q sorból, és éppen az (x, y) élet vizsgáljuk. Ha bejárva[y] = hamis = y apja x, vagyis D[y] = D[x] + 1. Különben y-t már korábban láttuk = y apja előbb van, mint x = D[apa(y)] D[x] = D[y] = D[apa(y)] + 1 D[x] + 1. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 38 / 401
39 Tétel 3. D[v] = d(s, v) teljesül minden v V csúcsra. Bizonyítás. d(s, v) D[v] Legyen s = y 0, y 1,... y k = v egy minimális hosszúságú G-beli irányított út s-ből v-be. = az út éleire: D[y 1 ] D[s] + 1 = 1, majd D[y 2 ] D[y 1 ] D[v] = D[y k ] k = d(s, v) = Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. előadás 39 / 401
40 Algoritmuselmélet Legrövidebb utak, Bellmann-Ford, Dijkstra Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 3. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 40 / 401
41 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat Mekkora a legrövidebb út bármely két pont között? Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 41 / 401
42 A legrövidebb utak problémája A G gráf egy u-t v-vel összekötő (nem feltétlenül egyszerű) u v irányított útjának a hossza az úton szereplő élek súlyainak összege. Legrövidebb u v út: egy olyan u v út, melynek a hossza minimális a G-beli u v utak között. u és v csúcsok (G-beli) d(u, v) távolsága: 0, ha u = v;, ha nincs u v út egyébként pedig a legrövidebb u v út hossza. Vigyázat, itt u és v nem felcserélhető: ha az egyik csúcs valamilyen távol van a másiktól, akkor nem biztos, hogy a másik is ugyanolyan távol van az egyiktől! Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 42 / 401
43 A Bellman Ford-módszer Feladat Egy pontból induló legrövidebb utak (hosszának) meghatározására, ha bizonyos élsúlyok negatívak. De feltesszük, hogy G nem tartalmaz negatív összhosszúságú irányított kört. Ha van negatív összhosszúságú irányított kör = nincs legrövidebb út Legyen a G = (V, E) súlyozott élű irányított gráf a C szomszédossági mátrixával adott (az i, j helyzetű elem a c(i, j) élsúly, ha i j éle G-nek, a többi elem pedig ). Legyen V = {1, 2,..., n} és s = 1 = s-ből induló utakat keressük Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 43 / 401
44 Módszer: egy T [1 : n 1, 1 : n] táblázat sorról sorra haladó kitöltése = Dinamikus programozás a legrövidebb olyan 1 j irányított utak hossza, ( ) T [i, j] = melyek legfeljebb i élből állnak. = T [n 1, j] a legrövidebb 1 j utak hossza A T [1, j] sor kitöltése: T [1, j] = C[1, j] Tegyük fel ezután, hogy az i-edik sort már kitöltöttük = T [i, 1], T [i, 2],..., T [i, n] értékekre ( ) igaz. = ( ) T [i + 1, j] := min{t [i, j], min{t [i, k] + C[k, j]}} k j = Ugyanis egy legfeljebb i + 1 élből álló π = 1 j út kétféle lehet: (a) Az útnak kevesebb, mint i + 1 éle van. Ekkor ennek a hossza szerepel T [i, j]-ben. (b) Az út éppen i + 1 élből áll. Legyen l a π út utolsó előtti pontja. Ekkor a π út 1 l szakasza i élből áll, és minimális hosszúságú a legfeljebb i élű 1 l utak között = π hossza T [i, l] + C[l, j]. Lépésszám: Egy érték ( ) szerinti számítása n 1 összeadás és ugyanennyi összehasonlítás (minimumkeresés n elem közül) = O(n 3 ) művelet. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 44 / 401
45 Példa C[i, j] = v v v v 4 T [i, j] T [2, 2] = min(7, 0+7, 4+2, +3) = 6 T [2, 4] = min(, 0+, 7+, 4+5) = 9 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 45 / 401
46 Floyd módszere Feladat Miként lehet egy irányított gráfban az összes pontpár távolságát meghatározni? 0 élsúlyok = ha a Bellmann-Ford algoritmust minden csúcsra mint forrásra lefuttatjuk = no(n 3 ) = O(n 4 ) Van gyorsabb. Feladat Adott egy G = (V, E) irányított gráf és egy c : E R súlyfüggvény úgy, hogy a gráfban nincs negatív összsúlyú irányított kör. Határozzuk meg az összes v, w V rendezett pontpárra a d(v, w) távolságot. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 46 / 401
47 A G gráf a C szomszédossági mátrixával adott. Egy szintén n n-es F mátrixot fogunk használni a számításhoz. Kezdetben F 0 [i, j] := C[i, j]. ciklus = k-adik lefutása után F k [i, j] azon i j utak legrövidebbjeinek a hosszát tartalmazza, amelyek közbülső pontjai k-nál nem nagyobb sorszámúak. Az új F k [i, j] értékeket kiszámíthatjuk, ha ismerjük F k 1 [i, j]-t i, j-re. Egy legrövidebb i j út, melyen a közbülső pontok sorszáma legfeljebb k, vagy tartalmazza a k csúcsot vagy nem. igen = F k [i, j] := F k 1 [i, k] + F k 1 [k, j] i k j nem = F k [i, j] = F k 1 [i, j] Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 47 / 401
48 Floyd algoritmusa (1) for i := 1 to n do for j := 1 to n do F[i, j] := C[i, j] (2) for k := 1 to n do for i := 1 to n do for j := 1 to n do F[i, j] := min{f[i, j], F[i, k] + F[k, j]} Tétel F[i, j] a (2)-beli iteráció k-adik menete után azon legrövidebb i j utak hosszát tartalmazza, amelyek belső csúcsai 1, 2,..., k közül valók. k = n = F n [i, j] = d(i, j) Lépésszám: n-szer megyünk végig a táblázaton, minden helyen O(1) lépés = O(n 3 ) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 48 / 401
49 A legrövidebb utak nyomon-követése Menet közben karbantartunk egy n n-es P tömböt. Kezdetben P[i, j] := 0. Ha egy F[i, j] értéket megváltoztatunk, mert találtunk egy k-n átmenő rövidebb utat, akkor P[i, j] := k. = Végül P[i, j] egy legrövidebb i j út középső" csúcsát fogja tartalmazni. i j út összeállítása rekurzív = procedure legrövidebb út(i, j:csúcs); var k:csúcs; begin k := P[i, j]; if k = 0 then return; legrövidebb út(i, k); kiír(k); legrövidebb út(k, j) end; Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 49 / 401
50 Tranzitív lezárás Bemenet: G = (V, E) irányított gráf. Csak arra vagyunk kíváncsiak, hogy mely pontok között vezet irányított út. Floyd = ha a végén F[i, j], akkor van út, különben nincs. Kicsit egyszerűbb, korábbi algoritmus: S. Warshall Definíció [tranzitív lezárt] Legyen G = (V, E) egy irányított gráf, A a szomszédossági mátrixa. Legyen továbbá T a következő n n-es mátrix: { 1 ha i-ből j elérhető irányított úttal; T [i, j] = 0 különben. Ekkor a T mátrixot illetve az általa meghatározott gráfot az A mátrix illetve az általa meghatározott G gráf tranzitív lezártjának hívjuk. Feladat Adott a (Boole-mátrixként értelmezett) A szomszédossági mátrixával a G = (V, E) irányított gráf. Adjuk meg a G tranzitív lezártját. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 50 / 401
51 Warshall algoritmus (1) ciklusban a kezdőértékek beállítása helyett { 1 ha i = j vagy A[i, j] = 1, T 0 [i, j] := 0 különben. A (2) ciklusban F értékeinek változtatása helyett (ugyanazt megfogalmazva logikai műveletekkel) (+) T k [i, j] := T k 1 [i, j] (T k 1 [i, k] T k 1 [k, j]). Bizonyítás ugyanúgy. Lépésszám: O(n 3 ) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 51 / 401
52 Dijkstra módszere Feladat A legrövidebb utak problémája (egy forrásból): Adott egy G = (V, E) irányított gráf, a c : E R + nemnegatív értékű súlyfüggvény és egy s V csúcs (a forrás). Határozzuk meg minden v V -re a d(s, v) távolságot. D[ ]: Egy a G csúcsaival indexelt tömb az eljárás során addig megismert legrövidebb s v utak hossza Felső közelítése a keresett d(s, v) távolságnak A közelítést lépésről lépésre finomítjuk, végül d(s, v)-t érjük el. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 52 / 401
53 Dijkstra módszere Tegyük fel, hogy a G gráf az alábbi alakú C szomszédossági mátrixával adott: 0 ha v = w, C[v, w] = c(v, w) ha v w és (v, w) éle G-nek, különben. Kezdetben D[v] := C[s, v] minden v V csúcsra. Válasszuk ki ezután az s csúcs szomszédai közül a hozzá legközelebbit, vagyis egy olyan x V \ {s} csúcsot, melyre D[x] minimális. Biztos, hogy az egyetlen (s, x) élből álló út egy legrövidebb s x út (az élsúlyok nemnegatívak!). A KÉSZ halmaz azokat a csúcsokat tartalmazza, amelyeknek s-től való távolságát már tudjuk. = x-et betehetjük (s mellé) a KÉSZ halmazba. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 53 / 401
54 Dijkstra módszere Ezek után módosítsuk a többi csúcs D[w] értékét, ha az eddig ismertnél rövidebb úton el lehet érni oda x-en keresztül, azaz ha D[x] + C[x, w] < D[w]. s x C[x, w] w Újra válasszunk ki a v V \ KÉSZ csúcsok közül egy olyat, amelyre D[v] minimális. Ezen csúcs D[ ]-értéke már az s-től való távolságát tartalmazza. Majd megint a D[ ]-értékeket módosítjuk, és így tovább, míg minden csúcs be nem kerül a KÉSZ halmazba. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 54 / 401
55 Dijkstra algoritmusa szomszédossági mátrixszal (1) KÉSZ := {s} for minden v V csúcsra do D[v] := C[s, v] ( a d(s, v) távolság első közelítése ) (2) for i := 1 to n 1 do begin Válasszunk olyan x V \ KÉSZ csúcsot, melyre D[x] minimális. Tegyük x-et a KÉSZ-be. (3) for minden w V \ KÉSZ csúcsra do D[w] := min{d[w], D[x] + C[x, w]} ( d(s, w) új közelítése ) end Definíció különleges út: egy s z irányított út különleges, ha a z végpontot kivéve minden pontja a KÉSZ halmazban van. A különleges úttal elérhető pontok éppen a KÉSZ-ből egyetlen éllel elérhető pontok. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 55 / 401
56 Tétel A (2) ciklus minden iterációs lépése után érvényesek a következők: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza. (b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külső (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza. Bizonyítás. Indukcióval (2) előtt Tegyük fel, hogy igaz a j-edik iteráció után. Belátjuk, hogy igaz a j + 1-edik iteráció után is. Tegyük fel, hogy az algoritmus a j + 1. iterációs lépésben az x csúcsot választja a KÉSZ-be. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 56 / 401
57 s y x (a) Indirekt: mi van, ha D[x] nem a d(s, x) távolságot jelöli, azaz van ennél rövidebb s x út? Ezen út eleje" különleges, (c) miatt = D[y] d(x, s) < D[x] (b) Elég x-re = KÉSZ korábbi pontjaira az indukciós feltevésből Láttuk, hogy d(s, x) = D[x], ez egy különleges s x út hossza volt a j + 1. iteráció előtt (itt a (c)-re vonatkozó indukciós feltevést használtuk) annak végeztével az út minden pontja KÉSZ-beli lesz. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 57 / 401
58 x s w (c) A j + 1. iteráció előtt D[w] = min v KÉSZ\{x} {d(s, v) + C[v, w]}. Utána D[w] = min {d(s, v) + C[v, w]}. v KÉSZ = Elég megnézni, hogy D[w] vagy d(s, x) + C[x, w] nagyobb Lépészám: (2) ciklus O(n), ez lefut n 1-szer = O(n 2 ) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 58 / 401
59 Példa s 1 1 a 3 5 b 2 3 f 2 c 1 e 1 D a b c e f KÉSZ {s, a} {s, a, c} {s, a, c, e} {s, a, c, e, f } 5. 5 {s, a, c, e, f, b} Katona Gyula Y. (BME SZIT) Algoritmuselmélet 3. előadás 59 / 401
60 Algoritmuselmélet Kupac, Dijkstra kupaccal Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 4. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 60 / 401
61 Adatszerkezetek Definíció Egy adatszerkezet elemek egy halmazának tárolása, az elemek közötti kapcsolat módja és az elemek kezeléséhez tartozó műveletek összessége. Példák: Tömb Műveletek: szelekciós függvény Láncolt lista Műveletek: első, következő, keres, beszúr, beszúrmögé, töröl Sor Műveletek: első, sorba, sorból Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 61 / 401
62 Bináris fa adatszerkezet bal fiú jobb fiú x x x x x x x x x x x x Láncolt lista Bináris fa Műveletek: gyökér, bal-fiú, jobb-fiú, keres, beszúr, töröl Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 62 / 401
63 Kupac adatszerkezet Egész számok egy S véges részhalmazát szeretnénk tárolni, hogy a beszúrás és a minimális elem törlése (mintör) hatékony legyen. Alkalmazások: Jobok indítása Több rendezett halmaz összefésülése Gyors rendezési algoritmus gyökér Teljes bináris fa: levelek Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 63 / 401
64 Bináris fa ábrázolása tömbbel A fa csúcsai az A[1 : n] tömb elemei. Az A[i] csúcs bal fia A[2i], a jobb fia pedig A[2i + 1]. = A[j] csúcs apja A[ j/2 ] Kupac tulajdonság: apa < fia Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 64 / 401
65 Kupacépítés a c b kupacol(f ) { Ha min{a, b} < c, akkor min{a, b} és c helyet cserél Ha a c elem a-val cserélt helyet, akkor kupacol(f 1 ), ha b-vel, akkor kupacol(f 2 ) } f 1 f 2 f 1 és f 2 kupacok c addig megy lefelé, amíg sérti a kupac tulajdonságot. Lépésszám: Ha l a fa szintjeinek száma, akkor l 1 csere és 2(l 1) összehasonlítás kupacépítés(f ) { Az f fa v csúcsaira lentről felfelé, jobbról balra kupacol(v). } Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 65 / 401
66 Kupacépítés költsége n-csúcsú bináris fában: 1. szint: 1 csúcs 2. szint: 2 csúcs 3. szint: 2 2 csúcs. l 1. szint: 2 l 2 csúcs l-edik szint: 1 és 2 l 1 csúcs = n 1 + l 2 i=0 2i = 2 l 1 = l 1 + log 2 n Az i-edik szinten levő v csúcsra kupacol(v) költsége legfeljebb l i csere és legfeljebb 2(l i) összehasonlítás. A cserék száma ezért összesen legfeljebb l i=1 (l i)2i 1. j = l i (azaz i = l j) helyettesítéssel l 1 l 1 j2 l j 1 = 2 l 1 j/2 j j=0 j=1 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 66 / 401
67 Kupacépítés költsége 1/2 1/4 1/4 1/8 1/8 1/ l l l l 1 < 1 < 1/2 < 1/4 1 2 l 1 2 l 1 l 1 j/2 j < 2 l 2n. j=1 Tétel Kupacépítés költsége: O(n) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 67 / 401
68 MINTÖR A minimális elem az f gyökérben van, ezt töröljük. A f -be tesszük a fa utolsó szintjének jobb szélső elemét, majd kupacol(f ) Költség: O(l) = O(log 2 n) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 68 / 401
69 BESZÚR Új levelet adunk a fához (ügyelve a teljességre), ide tesszük az s elemet. Ezután s-et mozgatjuk felfelé, mindig összehasonlítjuk az apjával Költség: O(l) = O(log 2 n) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 69 / 401
70 Dijkstra algoritmusa éllistával Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. A kupacépítés O(n) költség, a (2) ciklusban minimumkeresést O(log n) költségű MINTÖR végrehajtásával számoljuk. A D[ ] értékek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédaira kell elvégezni. Minden csúcsot pontosan egyszer választunk ki, és a szomszédok számának összege e. = Összidőigény O((n + e) log n). Sűrű gráfokra: d-kupac. = O(n + nd log d n + e log d n) Ha n 1,5 e n 2 és legyen d = e/n = d n = log d n 2. = O(n+nd log d n+e log d n) = O(n+nd +e) = O(n+n e/n+e) = O(e). Dijkstra irányítatlan gráfokra is működik. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 70 / 401
71 A legrövidebb utak nyomon követése Minden pontra tárolunk és karbantartunk egy P[x] csúcsot is, ami megadja egy az eddig ismert hozzá vezető legrövidebb úton az utolsó előtti csúcsot. Kezdetben P[v] := s minden v V -re. A (3) ciklus belsejében, ha egy külső w csúcs D[w] értékét megváltoztatjuk, akkor P[w] := x. Lépésszám: O(n 2 ) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 4. előadás 71 / 401
72 Algoritmuselmélet Keresés, minimumkeresés Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 5. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 72 / 401
73 Rendezési reláció Legyen U egy halmaz, és < egy kétváltozós reláció U-n. Ha a, b U és a < b, akkor azt mondjuk, hogy a kisebb, mint b. A < reláció egy rendezés, ha teljesülnek a következők: 1. a a minden a U elemre (< irreflexív); 2. Ha a, b, c U, a < b, és b < c, akkor a < c (< tranzitív); 3. Tetszőleges a b U elemekre vagy a < b, vagy b < a fennáll (< teljes). Ha < egy rendezés U-n, akkor az (U, <) párt rendezett halmaznak nevezzük. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 73 / 401
74 Rendezési reláció Példák: Z az egész számok halmaza. A < rendezés a nagyság szerinti rendezés. Az abc betűinek Σ halmaza; a < rendezést az abc-sorrend adja. Az x betű kisebb, mint az y betű, ha x előbb szerepel az abc-sorrendben, mint y. A Σ betűiből alkotott szavak Σ halmaza a szótárszerű vagy lexikografikus rendezéssel. legyen X = x 1 x 2 x k és Y = y 1 y 2 y l két szó. Az X kisebb mint Y, ha vagy l > k és x i = y i ha minden i = 1, 2,..., k esetén; vagy pedig x j < y j teljesül a legkisebb olyan j indexre, melyre x j y j. Tehát például kar < karika és bor < bot. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 74 / 401
75 Keresés rendezetlen halmazban Feladat Adott az U halmaz véges S = {s 1, s 2,..., s n 1, s n } részhalmaza és s U. El akarjuk eldönteni, hogy igaz-e s S, és ha igen, akkor melyik i-re teljesül s i = s. Hány összehasonlítás kell? Itt összehasonlítás: Igaz-e, hogy s i = s? Válasz: Igen vagy nem. Legrosszabb esetben minden elemet végig kell nézni = n összehasonlítás kell legrosszabb esetben. n/2 összehasonlítás kell átlagosan. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 75 / 401
76 Keresés rendezett halmazban Barkochba játék: gondolok egy számot 1 és 100 között, hány eldöntendő kérdésből lehet kitalálni? Feladat Adott az (U, <) rendezett halmaz véges S = {s 1 < s 2 <... < s n 1 < s n } részhalmaza és s U. Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s S, és ha igen, akkor melyik i-re teljesül s i = s. Hány összehasonlítás kell? Itt összehasonlítás: Mi a viszonya s-nek és s i -nek? Válasz: s i = s vagy s i < s vagy s i > s. Lineáris keresés Sorban mindegyik elemmel összehasonlítjuk. Költség a legrosszabb esetben: n, mert lehet, hogy pont az utolsó volt. Költség átlagos esetben esetben: (n/2) + 1. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 76 / 401
77 Bináris keresés Oszd meg és uralkodj: először a középső s i -vel hasonlítunk. Hasonló feladatot kapunk egy S 1 halmazra, amire viszont S 1 S /2. És így tovább: S 2 S 4, S 3 S 2 3,... S k S 2 k Pl. keressük meg, benne van-e 21 az alábbi sorozatban! 15, 22, 25, 37, 48, 56, 70, 82 (1) 15, 22, 25, 37,48, 56, 70, 82 (2) 15, 22, 25, 37, 48, 56, 70, 82 (3) 15, 22, 25, 37, 48, 56, 70, 82 (4) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 77 / 401
78 Bináris keresés Addig kell csinálni, amíg S k = 1 lesz. Innen 1 = S k n 2 k. = 2 k n = k log 2 n Ez k + 1 összehasonlítás volt. = k + 1 log 2 n + 1 = log 2 (n + 1) Tétel Ez optimális, nincs olyan kereső algoritmus, ami minden esetben kevesebb mint log 2 (n + 1) kérdést használ. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 78 / 401
79 Bináris keresés Tétel Ez optimális, nincs olyan kereső algoritmus, ami minden esetben kevesebb mint log 2 (n + 1) kérdést használ. Bizonyítás. Az ellenség nem is gondol egy számra, csak mindig úgy válaszol, hogy minél többet kelljen kérdezni. Ha egy kérdést felteszek, és az igen válasz után mondjuk szóba jön x lehetőség, akkor a nem esetén szóba jön még n x 1 lehetőség. (A 1 az s = s i válasz miatt van). Az ellenség úgy válaszol, hogy minél több lehetőség maradjon, így el tudja érni, hogy legalább n 1 2 marad. = 2 kérdés után legalább n = n marad. 2 2 = k kérdés után is marad még n 1 2 k 2 1 lehetőség. 2 k n Tehát teljesülnie kell 1 2 k nek. 2 k Vagyis n 2 k + 2 k = 2 k+1 1. = log 2 (n + 1) 1 k. Ha még van egy lehetséges elem, akkor még +1 egy kérdés. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 79 / 401
80 Minimumkeresés Feladat Adott az (U, <) rendezett halmaz véges S = {s 1, s 2,..., s n 1, s n } részhalmaza. Összehasonlításokkal keressük meg az S minimális elemét, azaz egy olyan s i elemet, hogy minden i j esetén s i < s j. Hány összehasonlítás kell a legrosszabb esetben? Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 80 / 401
81 Minimumkeresés Tétel n elem közül a minimális kiválasztásához legrosszabb esetben n 1 összehasonlítás kell. Bizonyítás. n 1 összehasonlítás mindig elég: Rendezzünk kiesés versenyt, mindig a kisebb elemet megtartva egy-egy összehasonlítás után. Mivel mindenki pontosan egyszer kap ki a győztest kivéve, ez n 1 összehasonlítást igényel. n 1 összehasonlításnál kevesebb nem mindig elég: Legyenek az elemek egy gráf pontjai, ha kettőt összehasonlítottunk, húzzunk közöttük élet. Amíg a gráf nem összefüggő, bármely komponensében lehet a minimális elem. Ha a gráf már összefüggő, akkor legalább n 1 éle van, tehát kell ennyi összehasonlítás. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 5. előadás 81 / 401
82 Algoritmuselmélet Rendezés, buborék, beszúrásos, összefésüléses, kupacos, láda, radix Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 6. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 82 / 401
83 Rendezés Feladat Adott az (U, <) rendezett halmaz véges S = {s 1, s 2,..., s n 1, s n } részhalmaza. Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekvő sorrendbe, azaz keressünk olyan σ permutációt, hogy s σ(1) < s σ(2) < < s σ(n). Input: tömb, láncolt lista, (vagy bármi) Output: általában, mint az input Lépések: elemek mozgatása, cseréje, összehasonlítása A rendezés önmagában is előforduló feladat, de előjön, mint hasznos adatstruktúra is. Rendezett halmazban könnyebb keresni (pl. telefonkönyv). Hány összehasonlítás kell a legrosszabb esetben? Hány összehasonlítás kell átlagos esetben? Hány csere kell a legrosszabb esetben? Mennyi plusz tárhely szükséges? Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 83 / 401
84 Buborék-rendezés Input: A[1 : n] (rendezetlen) tömb Ha valamely i-re A[i] > A[i + 1], akkor a két cella tartalmát kicseréljük. A tömb elejéről indulva, közben cserélgetve eljutunk a tömb végéig. Ekkor a legnagyobb elem A[n]-ben van. Ismételjük ezt az A[1 : n 1] tömbre, majd az A[1 : n 2] tömbre, stb. procedure buborék (* az A[1 : n] tömböt növekvően (nem csökkenően) rendezi *) for (j = n 1, j > 0, j := j 1) do for (i = 1, i j, i := i + 1) do { ha A[i + 1] < A[i], akkor cseréljük ki őket.} összehasonlítások száma: n 1 + n = n(n 1) 2 cserék száma: n(n 1) 2 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 84 / 401
85 Beszúrásos rendezés Ha az A[1 : k] résztömb már rendezett, akkor szúrjuk be a következő elemet, A[k + 1]-et, lineáris vagy bináris kereséssel, majd a következőt ebbe, stb. összehasonlítás mozgatás átlagos összehasonlítás átlagos mozgatás lineáris n(n 1) 2 (n + 2)(n 1) 2 n(n 1) 4 n 2 4 bináris n 1 log 2 (k + 1) k=1 (n + 2)(n 1) 2 n 1 log 2 (n + 1) k=1 n 2 4 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 85 / 401
86 Bináris beszúrásos rendezés lépésszáma K := log log log 2 n n log 2 n Jobb becslés: használjuk fel, hogy log 2 k 1 + log 2 k K < n 1 + log log 2 n = n 1 + log 2 (n!) Felhasználva a Stirling formulát: n! (n/e) n 2πn kapjuk, hogy log 2 n! n(log 2 n log 2 e) log 2 n + log 2 2π n(log2 n 1, 442) Ezért K n(log 2 n 0, 442) elég nagy n-re. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 86 / 401
87 Alsó becslés összehasonlítás alapú rendezésre Ugyanaz, mintha barochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend. Kezdetben n! lehetséges sorrend jön szóba. Két elemet összehasonlítva a válasz két részre osztja a sorrendeket. Ha pl. azt kapjuk, hogy x < y, akkor az olyan sorrendek, amelyekben x hátrébb van y-nál, már nem jönnek szóba. Ha az ellenség megint úgy válaszol, hogy minél több sorrend maradjon meg, akkor k kérdés után még szóba jön n! 2 k sorrend. Ha n! 2 k > 1, nem tudjuk megadni a rendezést. = Tétel Minden összehasonlítás alapú rendező módszer n elem rendezésekor legalább log 2 (n!) összehasonlítást használ. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 87 / 401
88 Összefésüléses rendezés Összefésülés (MERGE): Két már rendezett sorozat (tömb, lista, stb.) tartalmának egy sorozatba való rendezése: A[1 : k] és B[1 : l] rendezett tömbök C[1 : k + l] rendezett tömb Nyilván C[1] = min{a[1], B[1]}, pl. A[1], ezt rakjuk át C-be és töröljük A-ból. C[2] = min{a[2], B[1]}, stb. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 88 / 401
89 Példa A B C 12, 15, 20, 31 13, 16, 18 15, 20, 31 13, 16, 18 12, 15, 20, 31 16, 18 12, 13 20, 31 16, 18 12, 13, 15 20, , 13, 15, 16 20, 31 12, 13, 15, 16, , 13, 15, 16, 18, 20 12, 13, 15, 16, 18, 20, 31 összehasonlítások száma: k + l 1, ahol k, l a két tömb hossza Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 89 / 401
90 Összefésüléses rendezés Alapötlet: Rendezzük külön a tömb első felét, majd a második felét, végül fésüljük össze. Ezt csináljuk rekurzívan. MSORT(A[1 : n]) := MERGE(MSORT(A[1 : n/2 ]), MSORT(A[ n/2 + 1 : n])). Hogy elvarrjuk a rekurzió alját, legyen MSORT(A[i, i]) az üres utasítás. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 90 / 401
91 Összehasonlítások száma Jelöljük T (n)-el a lépésszámot n hosszú tömb rendezésekor. Az egyszerűség kedvéért tegyük fel, hogy n = 2 k. T (n) n 1 + 2T (n/2), T (n) n 1 + 2(n/ T (n/4)) = n 1 + 2(n/2 1) + 4T (n/4). T (n) n 1+2(n/2 1)+4(n/4 1)+ +2 k 1 (n/2 k 1 1) n log 2 n. Felhasználva, hogy T (1) = 0. Az összefésüléses rendezés konstans szorzó erejéig optimális. Mozgatások száma: 2n log 2 n Tárigény: 2n cella (bonyolultabban megcsinálva elég n + konst.) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 91 / 401
92 Példa összefésüléses rendezésre Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 92 / 401
93 A kupacos rendezés Először kupacot építünk, utána n darab MINTÖR adja nem csökkenő sorrendben az elemeket. [J. W. J. Williams és R. W. Floyd, 1964] Költség: O(n) + O(n log 2 n) = O(n log 2 n) Legjobb ismert rendező algoritmus. Pontos implementációval: 2n log 2 n + 3n (összehasonlítások száma) és n log 2 n + 2, 5n (cserék száma). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 93 / 401
94 Gyorsrendezés [C. A. R. Hoare, 1960] oszd meg és uralkodj: véletlen s elem a tömbből PARTÍCIÓ(s) s-nél kisebb elemek s... s s-nél nagyobb elemek GYORSREND(A[1 : n]) 1. Válasszunk egy véletlen s elemet az A tömbből. 2. PARTÍCIÓ(s); az eredmény legyen az A[1 : k], A[k + 1 : l], A[l + 1 : n] felbontás. 3. GYORSREND(A[1 : k]); GYORSREND(A[l + 1 : n]). Véletlen elemnek választhatjuk mindig a tömb első helyén állót. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 94 / 401
95 A PARTÍCIÓ(s) működése Legyen i := 1, j := n, i-t növeljük, amíg A[i] < s teljesül j-t csökkentjük, amíg A[j] s = i j s-nél kisebb elemek s-nél nem kisebb elemek Ha mindkettő megáll (nem lehet továbblépni), és i < j, akkor A[i] s és A[j] < s = Kicseréljük A[i] és A[j] tartalmát, majd i := i + 1 és j := j 1. Ha a két mutató összeér (már nem teljesül i < j), akkor s előfordulásait a felső rész elejére mozgatjuk. PARTÍCIÓ lépésszáma: O(n) GYORSREND lépésszáma legrosszabb esetben: O(n 2 ) GYORSREND lépésszáma átlagos esetben: 1, 39n log 2 n + O(n) = O(n log n) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 95 / 401
96 Kulcsmanipulációs rendezések Nem csak összehasonlításokat használ. Pl. ismerjük az elemek számát, belső szerkezetét. Ládarendezés (binsort) Tudjuk, hogy A[1 : n] elemei egy m elemű U halmazból kerülnek ki, pl. {1,..., m} = Lefoglalunk egy U elemeivel indexelt B tömböt (m db ládát), először mind üres. Első fázis: végigolvassuk az A-t, és az s = A[i] elemet a B[s] lista végére fűzzük. = konzervatív rendezés, azaz az egyenlő elemek sorrendjét megtartja. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 96 / 401
97 Ládarendezés Példa: Tegyük fel, hogy a rendezendő A[1 : 7] tömb elemei 0 és 9 közötti egészek: A : B : Második fázis: elejétől a végéig növő sorrendben végigmegyünk B-n, és a B[i] listák tartalmát visszaírjuk A-ba. B : A : Lépésszám: B létrehozása O(m), első fázis O(n), második fázis O(n + m), összesen O(n + m). Ez gyorsabb, mint az általános alsó korlát, ha pl. m cn. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 97 / 401
98 Radix rendezés A kulcsok összetettek, több komponensből állnak, t 1... t k alakú szavak, ahol a t i komponens az L i rendezett típusból való, legyen L i = s i, a rendezés lexikografikus. Példa: Legyen (U, <) a huszadik századi dátumok összessége az időrendnek megfelelő rendezéssel. L 1 = {1900, 1901,..., 1999}, s 1 = 100. L 2 = {január, február,..., december}, s 2 = 12. L 3 = {1, 2,..., 31}, s 3 = 31. A dátumok rendezése éppen az L i típusokból származó lexikografikus rendezés lesz. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 98 / 401
99 Radix rendezés Rendezzük a sorozatot az utolsó, a k-adik komponens szerint ládarendezéssel. A kapottat rendezzük a k 1-edik komponens szerint ládarendezéssel. stb. Fontos, hogy a ládarendezésnél, az elemeket a ládában mindig a lista végére tettük. Így ha két azonos kulcsú elem közül az egyik megelőzi a másikat, akkor a rendezés után sem változik a sorrendjük. Az ilyen rendezést konzervatív rendezésnek nevezzük. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 99 / 401
100 Miért működik a radix jól? Ha X < Y, az első i 1 tag megegyezik, de x i < y i, akkor az i-edik komponens rendezésekor X előre kerül. A láderendezés konzervatív = később már nem változik a sorrendjük. Példa: Napok szerint rendezve: Hónapok szerint rendezve: Évek szerint rendezve: Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 100 / 401
101 Radix rendezés Lépésszám: k ládarendezés összköltsége: O(kn + k i=1 s i) Ez lehet gyorsabb az általános korlátnál c, k állandók és s i cn = O(kn + k i=1 cn) = O(k(c + 1)n) = O(n). pl. az [1, n 10 1] intervallumból való egészek rendezése k = log n, s i = 2 = O(n log n + 2 log n) = O(n log n). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 6. előadás 101 / 401
102 Algoritmuselmélet Keresőfák, piros-fekete 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 7. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 102 / 401
103 Keresőfák Tároljuk az U rendezett halmaz elemeit, hogy BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) hatékonyak legyenek. Bináris fa bejárása teljes fa (új def.): az alsó szint is tele van = l szintű, teljes fának 2 l 1 csúcsa van. Fa csúcsai elem(x), bal(x), jobb(x) esetleg apa(x) és reszfa(x) + Ha x a gyökér, y pedig a 9-es csúcs, akkor * bal(jobb(x)) = y, apa(apa(y)) = x, elem(bal(x)) =, reszfa(x) = 7. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 103 / 401
104 PREORDER, INORDER, POSTORDER pre(x) in(x) post(x) begin begin begin látogat(x); in(bal(x)); post(bal(x)); pre(bal(x)); látogat(x); post(jobb(x)); pre(jobb(x)) in(jobb(x)) látogat(x) end end end + * PREORDER: INORDER: POSTORDER: Lépésszám: O(n) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 104 / 401
105 Bináris keresőfa Definíció (Keresőfa-tulajdonság) Tetszőleges x csúcsra és az x baloldali részfájában levő y csúcsra igaz, hogy elem(y) elem(x). Hasonlóan, ha z egy csúcs az x jobb részfájából, akkor elem(x) elem(z) Házi feladat: Igazoljuk, hogy egy bináris keresőfa elemeit a fa inorder bejárása nemcsökkenő sorrendben látogatja meg. Egy kényelmes megállapodás: a továbbiakban feltesszük, hogy nincsenek ismétlődő elemek a keresőfában. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 105 / 401
106 Naiv algoritmusok 6 KERES(s,S): Összehasonlítjuk s-et S gyökerében tárolt s elemmel KERES(4, S) 9 Ha s = s, akkor megtaláltuk. Ha s < s, akkor balra megyünk tovább. Ha s > s, akkor jobbra megyünk. Ugyanezt az utat járjuk be a KERES(5, S) kapcsán, de azt nem találjuk meg. Lépésszám: O(l), ahol l a fa mélysége MIN: mindig balra lépünk, amíg lehet MAX: mindig jobbra lépünk, amíg lehet Lépésszám: O(l) TÓLIG(a, b, S): KERES(a, S) INORDER a-tól b-ig Lépésszám: O(l + k), ahol k az a és b között levő elemek száma Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 106 / 401
107 Naiv BESZÚR BESZÚR(s, S): KERES(s, S)-sel megkeressük, hova kerülne, és új levelet adunk hozzá, pl. BESZÚR(3, S): = Lépésszám: O(l) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 107 / 401
108 Naiv TÖRÖL TÖRÖL(s, S): Ha s levél, akkor triviális, pl. TÖRÖL(3, S): = 2 TÖRÖL(s, S): Ha s-nek egy fia van, akkor: s fiú(s), pl. TÖRÖL(4, S): = Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 108 / 401
109 Naiv TÖRÖL Vagy pl. TÖRÖL(8, S ): = TÖRÖL(s, S): Ha s-nek két fia van, akkor visszavezetjük az előző esetre. s helyére tegyük y := MAX(bal(s))-t és töröljük y-t. Pl. TÖRÖL(6, S ): = Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 109 / 401
110 Naiv TÖRÖL Állítás y := MAX(bal(s)) csúcsnak nem lehet két fia. Bizonyítás. Ha lenne két fia, akkor lenne egy y jobb fia is. De ekkor y > y. Lépésszám: O(l) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 110 / 401
111 Faépítés naiv beszúrásokkal Ha pl. az 1, 2,..., n sorozatból építünk fát így, akkor ezt kapjuk: Az építés költsége: (n 1) = O(n 2 ) Tétel n Ha egy véletlen sorozatból építünk fát naiv beszúrásokkal, akkor az építés költsége átlagosan O(n log 2 n). A kapott fa mélysége átlagosan O(log 2 n). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 111 / 401
112 Piros-fekete fák Olyan bináris keresőfa, melynek mélysége nem lehet nagy. BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) hatékonyak. Definíció A piros-fekete fa egy bináris keresőfa, melyre teljesülnek a következők: 1 Minden nem levél csúcsnak 2 fia van. 2 Elemeket belső csúcsokban tárolunk. 3 Teljesül a keresőfa tulajdonság. 4 A fa minden csúcsa piros vagy fekete. 5 A gyökér fekete. 6 A levelek feketék. 7 Minden piros csúcs mindkét gyereke fekete. 8 Minden v csúcsra igaz, hogy az összes v-ből levélbe vezető úton ugyanannyi fekete csúcs van. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 7. előadás 112 / 401
Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.
Algoritmuselmélet Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem
Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.
Algoritmuselmélet Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem
Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.
Algoritmuselmélet Gráfok megadása, szélességi bejárás, összefüggőség, párosítás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 2. előadás
Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.
Algoritmuselmélet Legrövidebb utak, Bellmann-Ford, Dijkstra Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 3. előadás Katona Gyula Y. (BME
Algoritmuselmélet 2. előadás
Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés
Algoritmuselmélet 1. előadás
Algoritmuselmélet 1. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 11. ALGORITMUSELMÉLET 1. ELŐADÁS 1 Források
Algoritmuselmélet 1. előadás
Algoritmuselmélet 1. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 11. ALGORITMUSELMÉLET 1. ELŐADÁS 1 Források
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
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 Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány
Algoritmuselmélet 7. előadás
Algoritmuselmélet 7. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 11. ALGORITMUSELMÉLET 7. ELŐADÁS 1 Múltkori
Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.
Algoritmuselmélet Mélységi keresés és alkalmazásai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 9. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet
Gráfalgoritmusok ismétlés ősz
Gráfalgoritmusok ismétlés 2017. ősz Gráfok ábrázolása Egy G = (V, E) gráf ábrázolására alapvetően két módszert szoktak használni: szomszédsági listákat, illetve szomszédsági mátrixot. A G = (V, E) gráf
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma
15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30.
15. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. Edényrendezés Tegyük fel, hogy tudjuk, hogy a bemenő elemek (A[1..n] elemei) egy m elemű U halmazból kerülnek ki, pl. " A[i]-re
Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat
9. Előadás Rendezések A rendezési probléma: Bemenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat Kimenet: a bemenő sorozat olyan (a 1, a 2,,a n ) permutációja, hogy a 1 a 2 a n 2 Rendezések Általánosabban:
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.
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. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás
Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.
Nagyságrendek Kiegészítő anyag az Algoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: Algoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 018. február 1. Az O, Ω, Θ jelölések Az algoritmusok
A számítástudomány alapjai
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 Legszélesebb utak Katona Gyula Y. (BME SZIT) A számítástudomány
Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.
Algoritmuselmélet Bonyolultságelmé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. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet
Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)
Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),
Algoritmuselmélet 11. előadás
Algoritmuselmélet 11. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 26. ALGORITMUSELMÉLET 11. ELŐADÁS 1 Kruskal
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.
Legrövidebb utak súlyozott gráfokban A feladat egy súlyozott gráfban egy adott pontból kiinduló legrövidebb utak megkeresése. Az input a súlyozott gráf és a kiindulási s pont. Outputként egy legrövidebb
Algoritmusok és adatszerkezetek gyakorlat 07
Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet
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.
Algoritmuselmélet NP-teljes problémák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 13. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet
Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor
Gráfok 2. Legrövidebb utak, feszítőfák előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok 2
22. GRÁFOK ÁBRÁZOLÁSA
22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is
Számláló rendezés. Példa
Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással való összehasonlítása alapján működik leírja egy bináris döntési fa. Az algoritmus által a
Algoritmusok bonyolultsága
Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,
Algoritmuselmélet 18. előadás
Algoritmuselmélet 18. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Május 7. ALGORITMUSELMÉLET 18. ELŐADÁS 1 Közelítő algoritmusok
7 7, ,22 13,22 13, ,28
Általános keresőfák 7 7,13 13 13 7 20 7 20,22 13,22 13,22 7 20 25 7 20 25,28 Általános keresőfa Az általános keresőfa olyan absztrakt adatszerkezet, amely fa és minden cellájában nem csak egy (adat), hanem
Dijkstra algoritmusa
Budapesti Fazekas és ELTE Operációkutatási Tanszék 201. július 1. Legrövidebb utak súlyozatlan esetben v 4 v 3 Feladat Hány élből áll a legrövidebb út ezen a gráfon az s és t csúcsok között? v v 6 v 7
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: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,
Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan
A félév során előkerülő témakörök
A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok
Rendezések. Összehasonlító rendezések
Rendezések Összehasonlító rendezések Remdezés - Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése - Feltételezzük: o A sorozat elemei olyanok, amelyekre a >, relációk
Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).
Edényrendezés Tegyük fel, hogy a rendezendő H = {a 1,...,a n } halmaz elemei a [0,1) intervallumba eső valós számok. Vegyünk m db vödröt, V [0],...,V [m 1] és osszuk szét a rendezendő halmaz elemeit a
Ö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.
Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,
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:
Gráfok, definíciók Irányítatlan gráf: G = (V,E), ahol E rendezetlen (a,b),a,b V párok halmaza. Irányított gráf: G = (V,E) E rendezett (a,b) párok halmaza; E V V. Címkézett (súlyozott) gráf: G = (V,E,C)
Gyakorló feladatok ZH-ra
Algoritmuselmélet Schlotter Ildi 2011. április 6. ildi@cs.bme.hu Gyakorló feladatok ZH-ra Nagyságrendek 1. Egy algoritmusról tudjuk, hogy a lépésszáma O(n 2 ). Lehetséges-e, hogy (a) minden páros n-re
Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]
Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.
Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
Keresés Rendezés Feladat Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. november 7. Farkas B., Fiala
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. 6.
Algorimuselméle Keresőfák, piros-fekee fák Kaona Gyula Y. Sámíásudományi és Információelmélei Tansék Budapesi Műsaki és Gadaságudományi Egyeem. előadás Kaona Gyula Y. (BME SZIT) Algorimuselméle. előadás
Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék
9. előadás Wagner György Általános Informatikai Tanszék Leszámoló rendezés Elve: a rendezett listában a j-ik kulcs pontosan j-1 kulcsnál lesz nagyobb. (Ezért ha egy kulcsról tudjuk, hogy 27 másiknál nagyobb,
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.
Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt kimeneti adatot
Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése
Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Dr. Kallós Gábor 2014 2015 1 Az Ordó jelölés Azt mondjuk, hogy az f(n) függvény eleme az Ordó(g(n)) halmaznak, ha van olyan c konstans (c
Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.
Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
Gyakori elemhalmazok kinyerése
Gyakori elemhalmazok kinyerése Balambér Dávid Budapesti M szaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Számítástudomány szakirány 2011 március 11. Balambér Dávid (BME) Gyakori
Haladó rendezések. PPT 2007/2008 tavasz.
Haladó rendezések szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Alapvető összehasonlító rendezések Shell rendezés Kupacrendezés Leszámláló rendezés Radix rendezés Edényrendezés
Adatszerkezetek 7a. Dr. IványiPéter
Adatszerkezetek 7a. Dr. IványiPéter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2 Bináris fák Azokat a
Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.
Bevezetés 1. Definíció. Az alsó egészrész függvény minden valós számhoz egy egész számot rendel hozzá, éppen azt, amely a tőle nem nagyobb egészek közül a legnagyobb. Az alsó egészrész függvény jele:,
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.
Legrövidebb utak súlyozott gráfokban A feladat egy súlyozott gráfban egy adott pontból kiinduló legrövidebb utak megkeresése. Az input a súlyozott gráf és a kiindulási s pont. Outputként egy legrövidebb
Számjegyes vagy radix rendezés
Számláló rendezés Amennyiben a rendezendő elemek által felvehető értékek halmazának számossága kicsi, akkor megadható lineáris időigényű algoritmus. A bemenet a rendezendő elemek egy n méretű A tömbben
Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}
Mélységi keresés Ez az algoritmus a gráf pontjait járja be, eredményképpen egy mélységi feszítőerdőt ad vissza az Apa függvény által. A pontok bejártságát színekkel kezeljük, fehér= érintetlen, szürke=meg-
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.
Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi
Programozási segédlet
Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen
A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:
A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.
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.
Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt kimeneti adatot
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.
Algoritmuselmélet NP-teljes problémák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 12. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet
Gráfelméleti feladatok. c f
Gráfelméleti feladatok d e c f a b gráf, csúcsok, élek séta: a, b, c, d, e, c, a, b, f vonal: c, d, e, c, b, a út: f, b, a, e, d (walk, lanţ) (trail, lanţ simplu) (path, lanţ elementar) 1 irányított gráf,
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:
Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás, rendezések 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok és programozási tételek
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.
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. Optimalis feszítőfák Egy összefüggő, irányítatlan
III. Gráfok. 1. Irányítatlan gráfok:
III. Gráfok 1. Irányítatlan gráfok: Jelölés: G=(X,U), X a csomópontok halmaza, U az élek halmaza X={1,2,3,4,5,6}, U={[1,2], [1,4], [1,6], [2,3], [2,5], [3,4], [3,5], [4,5],[5,6]} Értelmezések: 1. Fokszám:
Algoritmusok bonyolultsága
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
Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16.
Bevezetés a Számításelméletbe II. 6. előadás Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem Számítástudományi és Információelméleti Tsz. I. B. 7/b sali@cs.bme.hu 004 március 6. A kritikus út
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
Elmaradó óra A jövő heti, november 0-dikei óra elmarad. 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: C(T ) = (u,v)
Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.
10. Előadás Beszúró rendezés Használjuk a kupacokat rendezésre! Szúrd be az elemeket egy kupacba! Amíg a sor ki nem ürül, vedd ki a kupacból a maximális elemet, és tedd az eredmény (rendezett) sorba! 2
Diszkrét matematika 2.C szakirány
Diszkrét matematika 2.C szakirány 2015. ősz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2015.
GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus
GRÁFELMÉLET 7. előadás Javító utak, javító utak keresése, Edmonds-algoritmus Definíció: egy P utat javító útnak nevezünk egy M párosításra nézve, ha az út páratlan hosszú, kezdő- és végpontjai nem párosítottak,
Kupac adatszerkezet. 1. ábra.
Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.
2. Visszalépéses keresés
2. Visszalépéses keresés Visszalépéses keresés A visszalépéses keresés egy olyan KR, amely globális munkaterülete: egy út a startcsúcsból az aktuális csúcsba (az útról leágazó még ki nem próbált élekkel
30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK
30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK A gráfos alkalmazások között is találkozunk olyan problémákkal, amelyeket megoldását a részekre bontott gráfon határozzuk meg, majd ezeket alkalmas módon teljes megoldássá
Adatszerkezetek 2. Dr. Iványi Péter
Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat
Algoritmuselmélet 12. előadás
Algoritmuselmélet 12. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Április 9. ALGORITMUSELMÉLET 12. ELŐADÁS 1 Turing-gépek
Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)
Adatszerkezetek I. 8. előadás (Horváth Gyula anyagai felhasználásával) Kereső- és rendezőfák Közös tulajdonságok: A gyökérelem (vagy kulcsértéke) nagyobb vagy egyenlő minden tőle balra levő elemnél. A
Általános algoritmustervezési módszerek
Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás
Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?
Ugrólisták Ugrólisták Ugrólisták Ugrólisták RSL Insert Example insert(22) with 3 flips 13 8 29 20 10 23 19 11 2 13 22 8 29 20 10 23 19 11 2 Runtime? Ugrólisták Empirical analysis http://www.inf.u-szeged.hu/~tnemeth/alga2/eloadasok/skiplists.pdf
Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.
Rendezések 8. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. október 24. Sergyán (OE NIK) AAO 08 2011. október 24. 1 / 1 Felhasznált irodalom
1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás
Preorder ejárás Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban lévő adatokra.
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: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,
24. MINIMÁLIS KÖLTSÉGŰ UTAK I.
24. MINIMÁLIS KÖLTSÉGŰ UTAK I. Az útvonaltervezés az egyik leggyakrabban végrehajtott eljárása a gráfok alkalmazásai körében. A feladat például a közlekedésben jelentkezik. A gráfot itt az a térkép jelenti,
Diszkrét matematika 2.C szakirány
Diszkrét matematika 2.C szakirány 2017. ősz 1. Diszkrét matematika 2.C szakirány 2. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.
Adatszerkezetek és algoritmusok
2010. január 8. Bevezet El z órák anyagainak áttekintése Ismétlés Adatszerkezetek osztályozása Sor, Verem, Lengyelforma Statikus, tömbös reprezentáció Dinamikus, láncolt reprezentáció Láncolt lista Lassú
angolul: greedy algorithms, románul: algoritmi greedy
Mohó algoritmusok angolul: greedy algorithms, románul: algoritmi greedy 1. feladat. Gazdaságos telefonhálózat építése Bizonyos városok között lehet direkt telefonkapcsolatot kiépíteni, pl. x és y város
Diszkrét matematika 2. estis képzés
Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 10. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék
Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma
Készítette: Laczik Sándor János Gráfelmélet I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Definíció: a G=(V,E) párt egyszerű gráfnak nevezzük, (V elemeit a gráf csúcsainak/pontjainak,e elemeit
1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje
1. Alapfogalmak 1.1. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt
Információs Technológia
Információs Technológia Rekurzió, Fa adatszerkezet Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 18. Rekurzió Rekurzió
PROGRAMOZÁSI TÉTELEK
PROGRAMOZÁSI TÉTELEK Összegzés tétele Adott egy N elemű számsorozat: A(N). Számoljuk ki az elemek összegét! S:=0 Ciklus I=1-től N-ig S:=S+A(I) Megszámlálás tétele Adott egy N elemű sorozat és egy - a sorozat
Programozási módszertan. Mohó algoritmusok
PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás
1. ábra. Számláló rendezés
1:2 2:3 1:3 1,2,3 1:3 1,3,2 3,1,2 2,1,3 2:3 2,3,1 3,2,1 1. ábra. Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással
19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI
19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI Ebben a fejezetben aszimptotikus (nagyságrendi) alsó korlátot adunk az összehasonlításokat használó rendező eljárások lépésszámára. Pontosabban,
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus
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
Közösségek keresése nagy gráfokban
Közösségek keresése nagy gráfokban Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 2011. április 14. Katona Gyula Y. (BME SZIT) Közösségek
file:///d:/okt/ad/jegyzet/ad1/b+fa.html
1 / 5 2016. 11. 30. 12:58 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes
Amortizációs költségelemzés
Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük
Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás
Algoritmusok Tervezése 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás Mi az algoritmus? Lépések sorozata egy feladat elvégzéséhez (legáltalánosabban) Informálisan algoritmusnak nevezünk bármilyen jól definiált
Algoritmuselmélet zárthelyi (BSc képzés) április 24.
Algoritmuselmélet zárthelyi (BSc képzés) 009. április.. Tekintsük az f (n) = 009 n! és f (n) = 00 (n )! függvényeket. Igaz-e, hogy a) f = O(f ) b) f = O(f ) c) f = Ω(f ) d) f = Ω(f )?. Dijkstra-algoritmussal
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
Gráfok 1. Tárolási módok, bejárások előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Gráfok 1. Tárolási módok Szélességi
Tartalomjegyzék. Algoritmuselmélet előadás jegyzet
Tartalomjegyzék Bevezetés... 5 Erről a jegyzetről... 5 A tantárgyról... 5 Ajánlott irodalom... 5 Figyelmeztetés... 5 1. előadás... 6 A tárgyról röviden... 6 Témák... 6 Algoritmusok... 6 A problémamegoldás
10. előadás Speciális többágú fák
10. előadás Adatszerkezetek és algoritmusok előadás 2018. április 17., és Debreceni Egyetem Informatikai Kar 10.1 A többágú fák kezelésére nincsenek általános elvek, implementációjuk elsősorban alkalmazásfüggő.