7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.
|
|
- Karola Orosz
- 5 évvel ezelőtt
- Látták:
Átírás
1 7. előadás, rendezés lineáris lépésszámmal Adatszerkezetek és algoritmusok előadás március 6.,, és Debreceni Egyetem Informatikai Kar 7.1
2 Általános tudnivalók Ajánlott irodalom: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Új algoritmusok, Scolar Informatika, Donald E. Knuth: A számítógépprogramozás művészete 1. (Alapvető algoritmusok), Műszaki Könyvkiadó, Donald E. Knuth: A számítógépprogramozás művészete 3. (Keresés és rendezés), Műszaki Könyvkiadó, Seymour Lipschutz: Adatszerkezetek, Panem-McGraw-Hill, Budapest, Rónyai Lajos, Ivanyos Gábor, Szabó Réka: Algoritmusok, Typotex, Budapest, Félév teljesítésének feltételei: Gyakorlati aláírás 2 ZH Írásbeli vizsga, aminek az értékelésébe... További részletek:
3 , az összefésülő rendezéshez hasonlóan az oszd- meg-és-uralkodj elven alapszik. Felosztás: Az A[p.. r] tömböt két (esetleg üres) A[p.. q 1] és A[q r] résztömbre osztjuk úgy, hogy az A[p.. q 1] minden eleme kisebb vagy egyenlő A[q]-nál, ez utóbbi elem viszont kisebb vagy egyenlő A[q r] minden eleménél. A q index kiszámítása része ennek a felosztó eljárásnak. Uralkodás: Az A[p.. q 1] és A[q+1.. r] résztömböket a gyorsrendezés rekurzív hívásával rendezzük. Összevonás: Mivel a két résztömböt helyben rendeztük, nincs szükség egyesítésre: az egész A[p.. r] tömb rendezett. 7.3
4 egy algoritmusa procedure GYORS_RENDEZ(A, p, r) 1: if p < r then 2: q FELOSZT(A, p, r) 3: GYORS_RENDEZ(A, p, q 1) 4: GYORS_RENDEZ(A, q + 1, r) 5: end if end procedure function FELOSZT(A, p, r) 1: x A[r] 2: i p 1 3: for j p to r 1 do 4: if A[j] x then 5: i i + 1 6: A[i] és A[j] felcserélése 7: end if 8: end for 9: A[i + 1] és A[r] felcserélése 10: return i + 1 end function A 3 6. sorokban levő ciklus minden iterációjának kezdetén a k tömbindexre fennáll: 1. Ha p k i, akkor A[k] x. 2. Ha i < k < j, akkor A[k] > x. 3. Ha k = r, akkor A[k] = x. 4. Ha j k < r, akkor A[k]??? 7.4
5 egy algoritmusa procedure GYORS_RENDEZ(A, p, r) 1: if p < r then 2: q FELOSZT(A, p, r) 3: GYORS_RENDEZ(A, p, q 1) 4: GYORS_RENDEZ(A, q + 1, r) 5: end if end procedure function FELOSZT(A, p, r) 1: x A[r] 2: i p 1 3: for j p to r 1 do 4: if A[j] x then 5: i i + 1 6: A[i] és A[j] felcserélése 7: end if 8: end for 9: A[i + 1] és A[r] felcserélése 10: return i + 1 end function A 3 6. sorokban levő ciklus minden iterációjának kezdetén a k tömbindexre fennáll: 1. Ha p k i, akkor A[k] x. 2. Ha i < k < j, akkor A[k] > x. 3. Ha k = r, akkor A[k] = x. 4. Ha j k < r, akkor A[k]??? 7.4
6 egy algoritmusa procedure GYORS_RENDEZ(A, p, r) 1: if p < r then 2: q FELOSZT(A, p, r) 3: GYORS_RENDEZ(A, p, q 1) 4: GYORS_RENDEZ(A, q + 1, r) 5: end if end procedure function FELOSZT(A, p, r) 1: x A[r] 2: i p 1 3: for j p to r 1 do 4: if A[j] x then 5: i i + 1 6: A[i] és A[j] felcserélése 7: end if 8: end for 9: A[i + 1] és A[r] felcserélése 10: return i + 1 end function A 3 6. sorokban levő ciklus minden iterációjának kezdetén a k tömbindexre fennáll: 1. Ha p k i, akkor A[k] x. 2. Ha i < k < j, akkor A[k] > x. 3. Ha k = r, akkor A[k] = x. 4. Ha j k < r, akkor A[k]??? 7.4
7 A FELOSZT algoritmus működése 7.5
8 A FELOSZT algoritmus működése 7.6
9 Elemzés Teljesül: A ciklus első iterációja előtt i = p 1 és j = p. Mivel egyetlen elem sincs p és i között, sem pedig i + 1 és j - 1 között, a ciklusinvariáns első két feltétele triviálisan igaz. Az 1. sor értékadása miatt a harmadik feltétel is igaz. Megmarad: Amikor A[ j] > x, akkor csupán a j értékét kell növelni. Amikor j értéke megnő, a második feltétel A[ j 1]-re igaz, míg a többi elem változatlan marad. Amikor A[ j] x, akkor i megnő, A[i] és A[ j] felcserélődik, majd j megnő. A csere miatt most A[i] x, és az 1. feltétel teljesül. Mivel a ciklusinvariáns miatt az az elem, amely az A[ j 1]-be került nagyobb, mint x: A[ j 1] > x. Befejeződik: Befejezéskor j = r, ezért a tömb minden eleme az invariáns által leírt valamelyik halmazban van. A tömb elemeit három halmazba tettük: az elsőben x-nél kisebbek vagy vele egyenlők vannak, a másodikban x-nél nagyobbak, és a harmadikban csak az x. 7.7
10 Legrosszabb felosztás legrosszabb esete az, amikor a felosztó eljárás az eredeti tömböt egy n 1 és egy 0 elemű tömbre osztja. A felosztási idő Θ(n). A rekurzív hívás egy 0 nagyságú tömbre nem csinál egyebet, éppen csak visszatér, ezért T (0) = Θ(1), és a gyorsrendezés futási idejének rekurzív képlete: T (n) = T (n 1) + T (0) + Θ(n) = T (n 1) + Θ(n). Intuitív módon, egy számtani sorhoz jutunk, aminek az összege alapján azt várhatjuk: T (n) = Θ(n 2 ). Ezt pl. a helyettesítő módszerrel könnyű ellenőrizni. 7.8
11 Legjobb felosztás A legjobb felosztásnál a FELOSZT eljárás két, n/2 eleműnél nem nagyobb tömböt hoz létre, mivel az egyik n/2, a másik pedig n/2 1 elemű. A futási idő rekurzív képlete T (n) 2T ( n 2 ) + Θ(n), amelynek megoldása a mester tétel második esete alapján T (n) = Θ(nlgn), így ez a legjobb felosztás aszimptotikusan gyorsabb algoritmust eredményez. 7.9
12 Mester módszer Theorem (Mester tétel) Legyenek a 1, b > 1 állandók, f (n) egy függvény, T (n) pedig a nemnegatív egészeken a ( n ) T (n) = at + f (n) b rekurzív egyenlettel definiált függvény, ahol n/b jelentheti akár az n/b egészrészt, akár az n/b egészrészt. Ekkor: 1 Ha f (n) = O ( n log b a ɛ), egy ɛ > 0 állandóval, akkor T (n) = Θ ( n log b a). 2 Ha f (n) = Θ ( n log b a), akkor T (n) = Θ ( n log b a lg n ) (= Θ (f (n) lg n)). 3 Ha f (n) = Ω ( n log b a+ɛ) és a f (n/b) c f (n) valamely ɛ > 0 és c < 1 állandóra és elég nagy n-re, akkor T (n) = Θ (f (n)). 7.10
13 Kiegyensúlyozott felosztás Tételezzük fel, hogy a felosztó eljárás mindig 9 az 1-hez felosztást ad, amely kiegyensúlyozatlan felosztásnak tűnik. Ekkor a gyorsrendezés futási idejének rekurzív képlete ( ) 9n ( n T (n) T + T + cn, 10 10) ahol expliciten kiírtuk a Θ(n)-ben rejlő c állandót. A rekurziós fa pedig: 7.11
14 Kiegyensúlyozott felosztás Tételezzük fel, hogy a felosztó eljárás mindig 9 az 1-hez felosztást ad, amely kiegyensúlyozatlan felosztásnak tűnik. Ekkor a gyorsrendezés futási idejének rekurzív képlete ( ) 9n ( n T (n) T + T + cn, 10 10) ahol expliciten kiírtuk a Θ(n)-ben rejlő c állandót. A rekurziós fa pedig: Minden állandó arányú felosztáskor a rekurziós fa mélysége Θ(lg n), és minden szinten a költség O(n). A futási idő tehát O(n lg n). 7.11
15 Az átlagos viselkedés megsejtése Ahhoz, hogy a gyorsrendezés átlagos viselkedését pontosan meghatározhassuk, egy feltevést kell megfogalmaznunk a bemenő tömbök gyakoriságáról. viselkedése nem a bemenő elemektől, hanem azoknak az egymáshoz viszonyított helyétől függ. A legnyilvánvalóbb feltételezés az, hogy a bemeneti elemek minden permutációja ugyanolyan eséllyel fordulhat elő. Amikor a gyorsrendezés véletlen bemenetekre fut, nem valószínű, hogy a felosztás minden szinten egyformán történik. Várható, hogy bizonyos felosztások kiegyensúlyozottak lesznek, mások pedig nem. Például, bizonyítható, hogy a FELOSZT eljárás 80% körül 9:1 aránynál kiegyensúlyozottabb, míg 20% körül legfeljebb ennyire kiegyensúlyozott felosztást ad. Általában a FELOSZT eljárás a jó és rossz felosztások keverékét adja. Egy rossz és utána egy jó felosztás három résztömböt hoz létre T (n) T ( 9n 10 ) + T ( n 10 ) + 2cn = Θ(n lg n). 7.12
16 7.13
17 A véletlenítés egyik módszere lehetne, ha permutálnánk a bemenetet. Egy másik változat, a véletlen mintavétel nevezetű, egyszerűbb elemzést biztosít. (És gyorsabban kivitelezhető.) Őrszemnek nem mindig az A[r] elemet tekintjük, hanem helyette az A[p.. r] résztömb egy véletlenszerűen kiválasztott elemét. Ezt úgy oldjuk meg egyszerűen, hogy az A[r] elemet felcseréljük az A[p.. r] résztömb egy véletlenszerűen választott elemével. Ez a módosítás biztosítja, hogy az x = A[r] őrszem ugyanolyan valószínűséggel lehet az A[p.. r] résztömb bármelyik eleme. Mivel az őrszemet véletlenszerűen választjuk ki, az átlagos viselkedésben a felosztás várhatóan jól kiegyensúlyozott lesz. function VÉLETLEN_FELOSZT(A, p, r) 1: i VÉLETLEN(p, r) 2: A[r] és A[i] cseréje 3: return FELOSZT(A,p,r) end function 7.14
18 A véletlenítés egyik módszere lehetne, ha permutálnánk a bemenetet. Egy másik változat, a véletlen mintavétel nevezetű, egyszerűbb elemzést biztosít. (És gyorsabban kivitelezhető.) Őrszemnek nem mindig az A[r] elemet tekintjük, hanem helyette az A[p.. r] résztömb egy véletlenszerűen kiválasztott elemét. Ezt úgy oldjuk meg egyszerűen, hogy az A[r] elemet felcseréljük az A[p.. r] résztömb egy véletlenszerűen választott elemével. Ez a módosítás biztosítja, hogy az x = A[r] őrszem ugyanolyan valószínűséggel lehet az A[p.. r] résztömb bármelyik eleme. Mivel az őrszemet véletlenszerűen választjuk ki, az átlagos viselkedésben a felosztás várhatóan jól kiegyensúlyozott lesz. function VÉLETLEN_FELOSZT(A, p, r) 1: i VÉLETLEN(p, r) 2: A[r] és A[i] cseréje 3: return FELOSZT(A,p,r) end function 7.14
19 A várható futási idő Lemma (Tankönyvben: 7.1. lemma) Legyen X a GYORSRENDEZÉS egész futási ideje alatt a FELOSZT 4. sorában végrehajtott összehasonlítások száma, ha n elemű tömböt rendezünk. Ekkor a GYORSRENDEZÉS futási ideje O(n + X). Bizonyítás. A FELOSZT eljárást legfeljebb n-szer hívjuk meg, ennek futási ideje egy állandó, amelyhez hozzáadódik a for ciklus végrehajtásából adódó idő. A for minden iterációjakor végrehajtjuk a 4. sort is. Célunk, hogy kiszámítsuk X-et, az összehasonlítások számát a FELOSZT összes hívásában. Nem fogjuk megszámolni, hogy a FELOSZT egy-egy híváskor hány összehasonlítást végez, hanem inkább egy felső korlátot adunk az összehasonlítások összértékére. 7.15
20 A várható futási idő Lemma (Tankönyvben: 7.1. lemma) Legyen X a GYORSRENDEZÉS egész futási ideje alatt a FELOSZT 4. sorában végrehajtott összehasonlítások száma, ha n elemű tömböt rendezünk. Ekkor a GYORSRENDEZÉS futási ideje O(n + X). Bizonyítás. A FELOSZT eljárást legfeljebb n-szer hívjuk meg, ennek futási ideje egy állandó, amelyhez hozzáadódik a for ciklus végrehajtásából adódó idő. A for minden iterációjakor végrehajtjuk a 4. sort is. Célunk, hogy kiszámítsuk X-et, az összehasonlítások számát a FELOSZT összes hívásában. Nem fogjuk megszámolni, hogy a FELOSZT egy-egy híváskor hány összehasonlítást végez, hanem inkább egy felső korlátot adunk az összehasonlítások összértékére. 7.15
21 A várható futási idő Az elemzés megkönnyítéséért nevezzük át az A tömb elemeit, legyenek ezek z 1, z 2,..., z n, ahol z i az i-edik legkisebb elem. Ugyancsak értelmezzük a Z ij = {z i, z i+1,..., z j } halmazt, amely a z i és z j közötti elemeket tartalmazza, ezekkel bezárólag. (És tegyük fel, hogy minden elem eltérő értékű.) Legyen X ij = I {z i összehasonlítása z j -vel}, ( { ) 1 ha z i és z j össze lesznek hasonlítva valamikor, = 0 egyébként (I=indikátor) Mikor hasonlítja össze az algoritmus a z i és z j elemeket? Hogy megválaszolhassuk a kérdést, vegyük észre, hogy bármely két számpárt legfeljebb egyszer hasonlítjuk össze. Miért? Az elemeket csak az őrszemmel hasonlítjuk össze, és a FELOSZT egy hívása után az abban használt őrszemet többé már nem használjuk összehasonlításra. 7.16
22 A várható futási idő Az elemzés megkönnyítéséért nevezzük át az A tömb elemeit, legyenek ezek z 1, z 2,..., z n, ahol z i az i-edik legkisebb elem. Ugyancsak értelmezzük a Z ij = {z i, z i+1,..., z j } halmazt, amely a z i és z j közötti elemeket tartalmazza, ezekkel bezárólag. (És tegyük fel, hogy minden elem eltérő értékű.) Legyen X ij = I {z i összehasonlítása z j -vel}, ( { ) 1 ha z i és z j össze lesznek hasonlítva valamikor, = 0 egyébként (I=indikátor) Mikor hasonlítja össze az algoritmus a z i és z j elemeket? Hogy megválaszolhassuk a kérdést, vegyük észre, hogy bármely két számpárt legfeljebb egyszer hasonlítjuk össze. Miért? Az elemeket csak az őrszemmel hasonlítjuk össze, és a FELOSZT egy hívása után az abban használt őrszemet többé már nem használjuk összehasonlításra. 7.16
23 A várható futási idő Innen az összehasonlítások száma: Ennek várható értéke: n 1 E [X] = E = = n 1 X = i=1 j=i+1 i=1 j=i+1 n 1 i=1 j=i+1 n n 1 n X ij. i=1 j=i+1 X ij n E [X ij ] n Pr {z i összehasonlítása z j -vel} Ha az x őrszemet úgy választjuk meg, hogy z i < x < z j, akkor z i és z j sem most, sem később nem lesznek összehasonlítva. Ellenben, ha x = z i vagy x = z j, akkor most lesznek összehasonlítva. 7.17
24 A várható futási idő Ennek alapján: Pr {z i összehasonlítása z j -vel} = Pr {z i vagy z j az első őrszem Z ij -ből} Innen: n k=1 1 k lg n i=0 E [X] = 2 i 1 j=0 n 1 = Pr {z i az első őrszem Z ij -ből} + Pr {z j az első őrszem Z ij -ből} = n i=1 j=i+1 n 1 n i = i=1 k=1 1 j i j i + 1 = 2 j i j i + 1 n 1 2 k + 1 < n i i=1 k=1 n 1 = O(lg n) = O(n lg n) i=1 1 2 i + j lg n i=0 2 i 1 j=0 2 k lg n 1 2 i = i=0 1 lg n
25 Az eddig tárgyalt rendező algoritmusoknak van egy érdekes, közös tulajdonságuk: a rendezéshez csak a bemeneti elemek összehasonlítását használják. (Az a i és a j elemek esetén az a i < a j, a i a j, a i = a j, a i a j vagy a i > a j összehasonlítások egyikét végezzük el, hogy megtudjuk a két elem egymáshoz viszonyított sorrendjét.) Éppen ezért ezeket az algoritmusokat összehasonlító nek nevezzük. A következőkben megmutatjuk, hogy bármely összehasonlító algoritmusnak a legrosszabb esetben Ω(n lg n) összehasonlításra van szüksége n elem rendezéséhez. Következésképpen az összefésüléses rendezés és a kupacrendezés aszimptotikusan optimális, és minden összehasonlító rendezés legfeljebb egy állandó szorzóval lehet gyorsabb ezeknél. (Továbbiakban feltételezzük, hogy minden elem eltérő értékű: a i a j, így csak a i a j -t fogunk használunk.) 7.19
26 Az összehasonlító et tekinthetjük döntési fáknak: A döntési fában: Minden belső csúcsot egy i : j számpárral jelölünk, ahol 1 i, j n, n pedig a bemenet elemeinek a száma. Minden levél egy π(1), π(2),..., π(n) permutációval jelölhető. A rendezési algoritmus végrehajtása megfelel a döntési fában a gyökértől valamely levélig vezető út bejárásának. 7.20
27 Mivel minden helyes rendezési algoritmusnak elő kell tudni állítania a bemeneti elemek összes permutációját, ezért a helyes rendezés szükséges feltétele, hogy az n elem összes n! permutációjának meg kell jelennie a döntési fa levelei között, és ezen levelek mindegyikének elérhetőnek kell lennie a gyökérből egy összehasonlító rendezéshez tartozó úttal. Vagyis csak olyan döntési fákat tekintünk, ahol minden permutáció megjelenik egy elérhető levélként. 7.21
28 Theorem (Tankönyv: 8.1. tétel.) Bármely összehasonlító rendezőalgoritmus a legrosszabb esetben Ω(n lg n) összehasonlítást végez. Bizonyítás. Vegyünk egy n elemet rendező döntési fát, amelynek magassága h, elérhető leveleinek száma pedig l. Mivel a bemenet összes n! permutációja meg kell jelenjen levélként, ezért n! l. Mivel egy h mélységű bináris fa leveleinek a száma nem lehet nagyobb, mint 2 h, ezért n! l 2 h, ahonnan mindkét oldal logaritmusát véve h lg(n!) (a logaritmusfüggvény monoton növekvő) = Ω(n lg n) (Stirling-formula alapján). 7.22
29 A következőkben tárgyalandó algoritmusok nem az összehasonlítást használják a rendezéshez, így az Ω(n lg n) alsó korlát rájuk nem vonatkozik. 7.23
30 A leszámláló rendezésnél feltételezzük, hogy az n bemeneti elem mindegyike 0 és k közötti egész szám, ahol k egy ismert egész. Ha k = O(n), a rendezés futási ideje Θ(n). A leszámláló rendezés alapötlete az, hogy minden egyes x bemeneti elemre meghatározza azoknak az elemeknek a számát, amelyek kisebbek, mint az x. Ezzel az információval az x elemet közvetlenül a saját pozíciójába tudjuk helyezni a kimeneti tömbben. Ha például 17 olyan elem van, amelyik kisebb, mint az x, akkor az x elem a 18. helyen lesz a kimeneti tömbben. Ez a séma valamelyest megváltozik abban az esetben, amikor néhány elem egyenlő, hiszen nem akarjuk mindet ugyanabba a pozícióba helyezni. 7.24
31 A[1..n], B[1..n], C[0..k] procedure LESZÁMLÁLÓ_RENDEZÉS(A, B, k) 1: for i 0 to k do 2: C[i] 0 3: end for 4: for j 1 to méret(a) do 5: C[A[j]] C[A[j]]+1 6: end for 7: for i 1 to k do 8: C[i] C[i]+C[i-1] 9: end for 10: for j méret(a) downto 1 do 11: B[C[A[j]]] A[j] 12: C[A[j]] C[A[j]]-1 13: end for end procedure Könnyű belátni, hogy: T (n) = Θ(n+k) 7.25
32 A[1..n], B[1..n], C[0..k] procedure LESZÁMLÁLÓ_RENDEZÉS(A, B, k) 1: for i 0 to k do 2: C[i] 0 3: end for 4: for j 1 to méret(a) do 5: C[A[j]] C[A[j]]+1 6: end for 7: for i 1 to k do 8: C[i] C[i]+C[i-1] 9: end for 10: for j méret(a) downto 1 do 11: B[C[A[j]]] A[j] 12: C[A[j]] C[A[j]]-1 13: end for end procedure Könnyű belátni, hogy: T (n) = Θ(n+k) 7.25
33 A leszámláló rendezés egy fontos tulajdonsága az, hogy stabil: az azonos értékű elemek ugyanabban a sorrendben jelennek meg a kimeneti tömbben, mint ahogyan a bemeneti tömbben szerepeltek. Azaz két azonos értékű szám között a kapcsolat megmarad azon szabály szerint, hogy amelyikük először jelenik meg a bemeneti tömbben, az jelenik meg először a kimeneti tömbben is. Általában a stabilitás csak akkor fontos tulajdonság, amikor a rendezendő elemek mellett kísérő adatok is vannak. A leszámláló rendezés stabilitása egy másik szempontból is fontos: a leszámláló rendezést gyakran felhasználjuk a számjegyes rendezés eljárásaként. Ahogyan ez a következő alfejezetben kiderül, a leszámláló rendezés stabilitása életbevágó a számjegyes rendezés helyes működéséhez. 7.26
34 A számjegyes rendezés másképpen: radix rendezés kódja értelemszerű. A következő eljárás feltételezi, hogy az n elemű A tömb minden egyes eleme d jegyű, ahol az első számjegy a legalacsonyabb helyértékű számjegy és a d-edik számjegy a legmagasabb helyértékű számjegy. procedure SZÁMJEGYES_RENDEZÉS(A, d) 1: for i 1 to d do 2: stabil algoritmussal rendezzük az A tömböt az i-edik számjegy szerint. 3: end for end procedure 7.27
35 Lemma (Tankönyv: 8.3. lemma.) Legyen adott n darab d jegyből álló szám, ahol a számjegyek legfeljebb k értéket vehetnek fel. Ekkor a SZÁMJEGYES-RENDEZÉS Θ(d (n + k)) rendezi helyesen ezeket a számokat. Bizonyítás. A számjegyes rendezés helyessége a rendezendő oszlopon végzett indukcióból következik. Ha minden számjegy 0 és k 1 között van (azaz k lehetséges értéket vehet fel), és k nem túl nagy, a leszámláló rendezés a kézenfekvő választás a használandó stabil algoritmusra. Így n darab d számjegyű szám esetén egy lépés Θ(n + k) időt igényel. Mivel d lépésünk van, a számjegyes rendezés teljes időigénye Θ(d (n + k)). Ha d állandó és k = O(n), a számjegyes rendezés lineáris idejű. Általánosabb esetben, a kulcsokat bizonyos rugalmassággal bonthatjuk számjegyekre. 7.28
36 Lemma (Tankönyvben: 8.4. lemma.) Legyen adott n darab b bites szám és egy tetszőleges 1 r b pozitív egész. Ekkor a SZÁMJEGYES-RENDEZÉS Θ((b/r) (n + 2 r )) rendezi helyesen ezeket a számokat. Bizonyítás. Egy r b értékre minden kulcs d = b/r darab egyenként r bites számjegyként tekinthető. Minden számjegy egy 0 és 2 r 1 közötti egész, ezért alkalmazhatjuk a leszámláló rendezést a k = 2 r 1 paraméterrel. A leszámláló rendezés minden lépése Θ(n + k) = Θ(n + 2 r ) ideig tart, így a d lépés megtételéhez szükséges teljes idő Θ(d (n + 2 r )) = Θ((b/r) (n + 2 r )). (Egy 32 bites szót tekinthetünk például 4 darab 8 bites számjegynek, azaz b = 32, r = 8, k = 2 r 1 = 255 és d = b/r = 4 és így (b/r) (n + 2 r ) = 4 (n + 256) = 4n ) 7.29
37 Az edényrendezés szokták vödör rendezésnek is hívni várható futási ideje lineáris, amennyiben a bemenet egyenletes eloszlásból származik. Éppúgy, mint a leszámláló rendezés, az edényrendezés is azért lehet gyors, mert feltesz valamit a bemenetről. Míg a leszámláló rendezés azt feltételezi, hogy a bemenet olyan egészekből áll, amelyek egy kis intervallumba tartoznak, addig az edényrendezés azt, hogy a bemenetet egy olyan véletlen folyamat generálja, amelyik egyenletesen osztja el az elemeket a [0, 1) intervallumon. 7.30
38 Az edényrendezés alábbi kódja feltételezi, hogy a bemenet egy n elemű A tömb, és a tömb minden egyes A[i] elemére teljesül, hogy 0 A[i] < 1. A kódban szükség van továbbá egy, a láncolt listák (edények vödrök) B[0.. n 1] segédtömbjére, és feltesszük, hogy az ilyen listák kezeléséhez szükséges eljárások is rendelkezésünkre állnak. procedure EDÉNY_RENDEZÉS(A) 1: n méret(a) 2: for i 1 to n do 3: szúrjuk be az A[i] elemet a B[ na[i] ] listába. 4: end for 5: for i 0 to n-1 do 6: rendezzük a B[i] listát beszúrásos rendezéssel. 7: end for 8: sorban összefűzzük a B[0], B[1],..., B[n 1] listákat. end procedure 7.31
39 Egy példa 7.32
40 Helyesség Ahhoz, hogy lássuk az algoritmus helyes működését, tekintsünk két elemet, A[i]-t és A[ j]-t. Tegyük fel az általánosság megszorítása nélkül, hogy A[i] A[ j]. Mivel ilyenkor na[i] na[ j] is teljesül, az A[i] elem vagy ugyanabba az edénybe kerül, mint az A[ j], vagy egy kisebb indexű edénybe. Ha A[i] és A[ j] ugyanabba az edénybe került, akkor a 4 5. sorban található for ciklus a helyes sorrendbe állítja őket. Ha A[i] és A[ j] különböző edényekbe kerültek, akkor a 6. sor állítja a helyes sorrendbe őket. Tehát az edényrendezés helyesen működik. 7.33
41 Hatékonyság A futási időt vizsgálva észrevehetjük, hogy az 5. sort kivéve az összes sor időigénye legrosszabb esetben O(n). Marad még az 5. sorban levő n i elem beszúrásos rendezése időigényének az elemzése n 1 T (n) = Θ(n) + O(ni 2 ) Ennek várható értéke: [ ] n 1 E [T (n)] = E Θ(n) + O(ni 2 ) i=0 n 1 = Θ(n) + E [ O(ni 2 ) ] i=0 n 1 = Θ(n) + O(E [ ni 2 i=0 i=0 (a várható érték linearitása miatt) ] ) (nem bizonyított tétel alapján) n 1 = Θ(n) + O(2 1 ) (lásd a tankönyv 8.4 fejezetben) n i=0 7.34
42 Hatékonyság Még ha a bemenet nem is egyenletes eloszlásból származik, az edényrendezés futhat lineáris. Amíg a bemenet rendelkezik azzal a tulajdonsággal, hogy az edényméretek négyzeteinek összege lineáris a teljes elemszámban, addig az edényrendezés futási ideje lineáris lesz. 7.35
43 Most akkor melyik rendezést használjuk? 7.36
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
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
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
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
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
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
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
Programozás II. előadás
Nem összehasonlító rendezések Nem összehasonlító rendezések Programozás II. előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Programozás II. 2 Rendezés
Programozási módszertan. Függvények rekurzív megadása "Oszd meg és uralkodj" elv, helyettesítő módszer, rekurziós fa módszer, mester módszer
PM-03 p. 1/13 Programozási módszertan Függvények rekurzív megadása "Oszd meg és uralkodj" elv, helyettesítő módszer, rekurziós fa módszer, mester módszer Werner Ágnes Villamosmérnöki és Információs Rendszerek
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
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
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
14. Mediánok és rendezett minták
14. Mediánok és rendezett minták Kiválasztási probléma Bemenet: Azonos típusú (különböző) elemek H = {a 1,...,a n } halmaza, amelyeken értelmezett egy lineáris rendezési reláció és egy i (1 i n) index.
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),
1. előadás. számításokban. Adatszerkezetek és algoritmusok előadás február 12. Kósa Márk, Pánovics János, Szathmáry László és Halász Gábor
1. előadás mint Adatszerkezetek és algoritmusok előadás 2019. február 12. fogalma megadása építőelemei mint helyessége elemzés,, és Debreceni Egyetem Informatikai Kar 1.1 Általános tudnivalók Ajánlott
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,
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
Függvények növekedési korlátainak jellemzése
17 Függvények növekedési korlátainak jellemzése A jellemzés jól bevált eszközei az Ω, O, Θ, o és ω jelölések. Mivel az igények általában nemnegatívak, ezért az alábbi meghatározásokban mindenütt feltesszük,
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
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
9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat
. előadás ról általában, soros, önátrendező, rendezett és kulcstranszformációs Adatszerkezetek és algoritmusok előadás 0. április. ról általában,, és Debreceni Egyetem Informatikai Kar. Általános tudnivalók
Ö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,
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:
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,
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)
Algoritmusok vektorokkal keresések 1
Algoritmusok vektorokkal keresések 1 function TELJES_KERES1(A, érték) - - teljes keresés while ciklussal 1. i 1 2. while i méret(a) és A[i] érték do 3. i i + 1 4. end while 5. if i > méret(a) then 6. KIVÉTEL
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
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
2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)
A Név: l 2017.04.06 Neptun kód: Gyakorlat vezet : HG BP l 1. Az A vektor tartalmát az alábbi KUPACOL eljárással rendezzük át maximum kupaccá. A={28, 87, 96, 65, 55, 32, 51, 69} Mi lesz az értéke az A vektor
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.
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,...,
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
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,
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
Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12
Módosítható Prioritási sor Binomiális kupaccal modosit(x,k) {! if (k>x.kulcs) {!! x.kulcs=k ;!! y=x!! z=x.apa ;!! while(z!=nil and y.kulcs
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
Felvételi vizsga mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív
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 Név: l 2014.04.09 Neptun kód: Gyakorlat vezető: HG BP MN l 1. Adott egy (12 nem nulla értékû elemmel rendelkezõ) 6x7 méretû ritka mátrix hiányos 4+2 soros reprezentációja. SOR: 1 1 2 2 2 3 3 4 4 5 6
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.
Adatszerkezet - műveletek
Adatszerkezet - műveletek adatszerkezet létrehozása adat felvétele adat keresése adat módosítása adat törlése elemszám visszaadása minden adat törlése (üresít) adatszerkezet felszámolása (megszüntet) +
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
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.
Eötvös Loránd Tudományegyetem Természettudományi Kar. Péter Zsófia. Véletlenített algoritmusok és alkalmazásaik. Matematika BSc Szakdolgozat
Eötvös Loránd Tudományegyetem Természettudományi Kar Péter Zsófia Véletlenített algoritmusok és alkalmazásaik Matematika BSc Szakdolgozat Témavezető: Dr. Fekete István Számítógéptudományi Tanszék Budapest,
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
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
Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy
Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj Divide & Conquer (,,Oszd meg és uralkodj ) paradigma Divide: Osszuk fel az adott problémát kisebb problémákra. Conquer: Oldjuk meg a kisebb
Adatbázis rendszerek Gy: Algoritmusok C-ben
Adatbázis rendszerek 1. 1. Gy: Algoritmusok C-ben 53/1 B ITv: MAN 2015.09.08 Alapalgoritmusok Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés Összefésülés Szétválogatás Gyorsrendezés 53/2 Összegzés
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
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
Adatszerkezetek 1. előadás
Adatszerkezetek 1. előadás Irodalom: Lipschutz: Adatszerkezetek Morvay, Sebők: Számítógépes adatkezelés Cormen, Leiserson, Rives, Stein: Új algoritmusok http://it.inf.unideb.hu/~halasz http://it.inf.unideb.hu/adatszerk
Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések
Algortmusok és adatszerkezetek gyakorlat 09 Rendezések Néhány órával ezelőtt megsmerkedtünk már a Merge Sort rendező algortmussal. A Merge Sort-ról tuduk, hogy a legrosszabb eset dőgénye O(n log n). Tetszőleges
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
Az optimális megoldást adó algoritmusok
Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.
15. A VERSENYRENDEZÉS
15. A VERSENYRENDEZÉS A versenyrendezés (tournament sort) a maximum-kiválasztó rendezések közé tartozik, ugyanis az elemek közül újra és újra kiválasztja (eltávolítja és kiírja) a legnagyobbat. Az eljárás
Á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
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)
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
8. Mohó algoritmusok. 8.1. Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete
8. Mohó algoritmusok Optimalizálási probléma megoldására szolgáló algoritmus gyakran olyan lépések sorozatából áll, ahol minden lépésben adott halmazból választhatunk. Sok optimalizálási probléma esetén
Elemi adatszerkezetek
2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu
Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE
Algoritmusokfelülnézetből 1. ELŐADÁS Sapientia-EMTE 2015-16 Algoritmus Az algoritmus kifejezés a bagdadi arab tudós, al-hvárizmi(780-845) nevének eltorzított, rosszul latinra fordított változatából ered.
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,...
RSA algoritmus 1. Vegyünk véletlenszerűen két különböző nagy prímszámot, p-t és q-t. 2. Legyen n = pq. 3. Vegyünk egy olyan kis páratlan e számot, amely relatív prím φ(n) = (p 1)(q 1)-hez. 4. Keressünk
Felvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
Dr. Schuster György február / 32
Algoritmusok és magvalósítások Dr. Schuster György OE-KVK-MAI schuster.gyorgy@kvk.uni-obuda.hu 2015. február 10. 2015. február 10. 1 / 32 Algoritmus Alapfogalmak Algoritmus Definíció Algoritmuson olyan
BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) 1. (5p) Tekintsük a következő alprogramot: Alprogram f(a): Ha a!= 0, akkor visszatérít: a + f(a - 1) különben visszatérít
Mohó algoritmusok. Példa:
Mohó algoritmusok Optimalizálási probléma megoldására szolgáló algoritmus sokszor olyan lépések sorozatából áll, ahol minden lépésben adott halmazból választhatunk. Ezt gyakran dinamikus programozás alapján
B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.
B-fa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar B-fa Felépítése Beszúrás művelete Törlés
Algoritmuselmélet 6. előadás
Algoritmuselmélet 6. 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 4. ALGORITMUSELMÉLET 6. ELŐADÁS 1 Hash-elés
Adatszerkezetek 2. Dr. Iványi Péter
Adatszerkezetek 2. Dr. Iványi Péter 1 Hash tábla A bináris fáknál O(log n) a legjobb eset a keresésre. Ha valamilyen közvetlen címzést használunk, akkor akár O(1) is elérhető. A hash tábla a tömb általánosításaként
Tuesday, March 6, 12. Hasító táblázatok
Hasító táblázatok Halmaz adattípus U (kulcsuniverzum) K (aktuális kulcsok) Függvény adattípus U (univerzum) ÉT (értelmezési tartomány) ÉK (érték készlet) Milyen az univerzum? Közvetlen címzésű táblázatok
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
Algoritmizálás, adatmodellezés tanítása 7. előadás
Algoritmizálás, adatmodellezés tanítása 7. előadás Oszd meg és uralkodj! Több részfeladatra bontás, amelyek hasonlóan oldhatók meg, lépései: a triviális eset (amikor nincs rekurzív hívás) felosztás (megadjuk
Rekurzív algoritmusok
Rekurzív algoritmusok 11. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. november 14. Sergyán (OE NIK) AAO 11 2011. november 14. 1 / 32 Rekurzív
Programozás alapjai. 8. előadás
8. előadás Wagner György Általános Informatikai Tanszék Azonosítók érvényességi köre Kiindulási alap: a blokkszerkezetű programozási nyelvek (C, FORTRAN, PASCAL, ) Egy program szerkezete: Fejléc Deklarációsrész
A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória
Oktatási Hivatal A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai 1. feladat: Repülők (20 pont) INFORMATIKA II. (programozás) kategória Ismerünk városok közötti repülőjáratokat.
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
1000 forintos adósságunkat, de csak 600 forintunk van. Egyetlen lehetőségünk, hogy a
A merész játékok stratégiája A következő problémával foglalkozunk: Tegyük fel, hogy feltétlenül ki kell fizetnünk 000 forintos adósságunkat, de csak 600 forintunk van. Egyetlen lehetőségünk, hogy a még
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
A 2015/2016. tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló MATEMATIKA III. KATEGÓRIA (a speciális tanterv szerint haladó gimnazisták)
A 205/206. tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló MATEMATIKA III. KATEGÓRIA a speciális tanterv szerint haladó gimnazisták Javítási-értékelési útmutató. feladat Az {,2,...,n} halmaz
Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu
Programozás I. 3. előadás Tömbök a C#-ban Metódusok C#-ban Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Szoftvertechnológia
Dinamikus programozás - Szerelőszalag ütemezése
Dinamikus programozás - Szerelőszalag ütemezése A dinamikus programozás minden egyes részfeladatot és annak minden részfeladatát pontosan egyszer oldja meg, az eredményt egy táblázatban tárolja, és ezáltal
Algoritmusok helyességének bizonyítása. A Floyd-módszer
Algoritmusok helyességének bizonyítása A Floyd-módszer Algoritmusok végrehajtása Egy A algoritmus esetében a változókat három változótípusról beszélhetünk, melyeket az X, Y és Z vektorokba csoportosítjuk
BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli
BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli A versenyzők figyelmébe: 1. Minden tömböt 1-től kezdődően indexelünk. 2. A rácstesztekre (A rész)
Pontműveletek. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar február 20.
Pontműveletek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2012. február 20. Sergyán (OE NIK) Pontműveletek 2012. február 20. 1 / 40 Felhasznált irodalom
Egészrészes feladatok
Kitűzött feladatok Egészrészes feladatok Győry Ákos Miskolc, Földes Ferenc Gimnázium 1. feladat. Oldjuk meg a valós számok halmazán a { } 3x 1 x+1 7 egyenletet!. feladat. Bizonyítsuk be, hogy tetszőleges
Adatszerkezetek II. 10. előadás
Adatszerkezetek II. 10. előadás Kombinatorikai algoritmusok A kombinatorika: egy véges halmaz elemeinek valamilyen szabály alapján történő csoportosításával, kiválasztásával, sorrendbe rakásával foglalkozik
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
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
INFORMATIKA javítókulcs 2016
INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.
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
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
11. előadás. Párhuzamosság. Több szálon futó algoritmusok, logikai párhuzamosság. Adatszerkezetek és algoritmusok előadás április 30.
11. előadás Több szálon futó algoritmusok, logikai párhuzamosság Adatszerkezetek és algoritmusok előadás 2019. április 30.,, és Debreceni Egyetem Informatikai Kar 11.1 Általános tudnivalók Ajánlott irodalom:
Programozási módszertan. Dinamikus programozás: szerelőszalag ütemezése Mátrixok véges sorozatainak szorzása
PM-06 p. 1/28 Programozási módszertan Dinamikus programozás: szerelőszalag ütemezése Mátrixok véges sorozatainak szorzása Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu
A következő feladat célja az, hogy egyszerű módon konstruáljunk Poisson folyamatokat.
Poisson folyamatok, exponenciális eloszlások Azt mondjuk, hogy a ξ valószínűségi változó Poisson eloszlású λ, 0 < λ
Feladatok és megoldások a 8. hétre Építőkari Matematika A3
Feladatok és megoldások a 8. hétre Építőkari Matematika A3 1. Oldjuk meg a következő differenciálegyenlet rendszert: x + 2y 3x + 4y = 2 sin t 2x + y + 2x y = cos t. (1 2. Oldjuk meg a következő differenciálegyenlet
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. Hashelé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 Hashelés 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 9. előadás
Önszervező bináris keresőfák
Önszervező bináris keresőfák Vágható-egyesíthető halmaz adattípus H={2,5,7,11,23,45,75} Vag(H,23) Egyesit(H1,H2) H1= {2,5,7,11} H2= {23,45,75} Vágás A keresési útvonal mentén feldaraboljuk a fát, majd
6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok
6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 1. feladat: Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR). Írjon C programokat az alábbi kérdések
Optimalizációs stratégiák 1.
Optimalizációs stratégiák 1. Nyers erő, Oszd meg és uralkodj, Feljegyzéses, Dinamikus, Mohó előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János
Nagy Gábor compalg.inf.elte.hu/ nagy ősz
Diszkrét matematika 1. középszint 2016. ősz 1. Diszkrét matematika 1. középszint 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján Komputeralgebra