Algoritmusok és adatszerkezetek II. Útmutatások a tanuláshoz, Tematika (2016)
|
|
- Tamás Rudolf Kelemen
- 8 évvel ezelőtt
- Látták:
Átírás
1 Algoritmusok és adatszerkezetek II. Útmutatások a tanuláshoz, Tematika (2016) Kedves Hallgatók! A vizsgára való készülésben els sorban az el adásokon és a gyakorlatokon készített jegyzeteikre támaszkodhatnak. További ajánlott források: Hivatkozások [1] Ásványi Tibor, Algoritmusok és adatszerkezetek II. Útmutatások a tanuláshoz, Tematika (2016) asvanyi/ad/ad2programok.pdf [2] Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C., magyarul: Új Algoritmusok, Scolar Kiadó, Budapest, ISBN angolul: Introduction to Algorithms (Third Edititon), The MIT Press, [3] Fekete István, Algoritmusok jegyzet [4] Rónyai Lajos Ivanyos Gábor Szabó Réka, Algoritmusok, T ypot E X Kiadó, ISBN [5] Weiss, Mark Allen, Data Structures and Algorithm Analysis, Addison-Wesley, 1995, 1997, 2007, 2012, A vizsgákon az elméleti kérdések egy-egy tétel bizonyos részleteire vonatkoznak. Lesznek még megoldandó feladatok, amik részben a tanult algoritmusok m ködésének szemléltetését, bemutatását, részben a szerzett ismeretek kreatív felhasználását kérik számon. Egy algoritmus, program, m velet bemutatásának mindig része a m veletigény elemzése. Az el adások els sorban a CLRS könyv [2] (ld. alább) angol eredetijének harmadik kiadását követik. (Az érintett fejezetekben a magyar és az angol változat között leginkább csak néhány jelölésbeli különbséget találtunk.) 1
2 Ez a jegyzet egyenl re jó esetben is csak az el adások vázlatát és a legfontosabb struktogramokat tartalmazza. Az egyes témák részletes kidolgozása a hivatkozott szakoirodalomban, els sorban [2]-ben található. Az egyes struktogramokat általában nem dolgozzuk ki az értékadó utasítások szintjéig. Az olyan implementációs részleteket, mint a listák és egyéb adatszerkezetek, adattípusok m veleteinek pontos kódja, a dinamikusan allokált objektumok deallokálása stb. az Olvasóra hagyjuk, hiszen ezekkel az el z félévben foglalkoztunk. Használni fogunk olyan absztrakt fogalmakat, mint a véges halmazok, sorozatok. A struktogramokban a for ciklusok (illetve a for each ciklusok) mintájára alkalmazni fogunk a ciklusfeltételek helyén pl. v V alakú kifejezéseket, ami azt jelenti, hogy a ciklusmagot a V halmaz minden v elemére végre kell hajtani. A fentiek szerint az egyszer bb programrészletek helyén gyakran szerepelnek majd magyar nyelv utasítások, amiknek részletes átgondolását, esetleges kidolgozását, a korábban tanuktak alapján, szintén az Olvasóra bízzuk. Az ilyen, formailag általában felszólító mondatok végér l a felkiáltójelet elhagyjuk. 2
3 Tematika Minden tételhez: Hivatkozások: például a [2] 8.2, 8.3, 8.4 jelentése: a [2] sorszámú szakirodalom adott (al)fejezetei. 1. Rendezés lineáris id ben ([2] 8.2). Edényrendezés (Bucket-Sort, [2] 8.4, [3] 21). A stabil rendezés fogalma ([2] 8.2). Leszámláló rendezés (Counting-Sort, [2] 8.2). Radix rendezés (Radix-Sort) tömbökre ([2] 8.3) és láncolt listákra ([3] 21; a láncolt eset struktogramja a gyakorlaton). Gyakorlat: Rendezés bináris számok tömbjén, el re és vissza ([3] 21). 2. Hasító táblák ([2] 11). Direkt címzés (direct-address tables). Hasító táblák (hash tables). A hasító függvény fogalma (hash functions). Kulcsütközések (collisions). Kulcsütközések feloldása láncolással (collision resolution by chaining); keresés, beszúrás, törlés (search and update operations); kitöltöttségi arány (load factor); egyszer egyenletes hasítás (simple uniform hashing); átlagos keresési id (average-case time of search: a tételek bizonyítás nélkül). Jó hash függvények (good hash functions), egy egyszer hash függvény (kulcsok a [0, 1) intervallumon), az osztó módszer (the division method), a szorzó módszer (the multiplication method). Nyílt címzés (open addressing); próba sorozat (probe sequence); keresés, beszúrás, törlés (search and update operations); üres és törölt rések (empty and deleted slots); a lineáris próba, els dleges csomósodás (linear probing, primary clustering); négyzetes próba, másodlagos csomósodás (quadratic probing, secondary clustering), a 11-3 problémával együtt; kett s hash-elés (double hashing); az egyenletes hasítás (uniform hashing) fogalma; a keresés próba sorozata várható hosszának fels becslései egyenletes hasítást feltételezve. 3. Elemi gráf algoritmusok ([2] 22). Gráf ábrázolások (representations of graphs). A szélességi gráfkeresés (breadth-rst search: BFS). A szélességi gráfkeresés futási ideje (the run-time analysis of BFS). A legrövidebb utak (shortest paths). A szélességi feszít fa (breadth-rst tree). HF: A szélességi gráfkeresés megvalósítása a klasszikus gráf ábrázolások esetén; hatékonyság. A mélységi gráfkeresés (depth-rst search: DFS). Mélységi feszít erd (depth-rst forest). A gráf csúcsainak szín és id pont címkéi (colors and timestamps of vertexes). Az élek osztályozása (classication of edges, its connections with the colors and timestamps of the vertexes). A mélységi gráfkeresés futási ideje (the run-time analysis of DFS). Topologikus rendezés 3
4 (topological sort). Er sen összefügg komponensek (strongly connected components). HF: A mélységi gráfkeresés és a topologikus rendezés megvalósítása a klasszikus gráf ábrázolások esetén; hatékonyság. 4. Minimális feszít fák (Minimum Spanning Trees: MSTs). Egy általános algoritmus (A general algorithm). Egy tétel a biztonságos élekr l és a minimális feszít fákról (A theorem on safe edges and MSTs). Prim és Kruskal algoritmusai (The algorithms of Kruskal and Prim). A futási id k elemzése (Their run-time analysis). HF: A Prim algoritmus implementációja a két f gráfábrázolás és a szükséges prioritásos sor különböz megvalósításai esetén (The implementations of the algorithm of Prim with respect to the main graph representations and representations of the priority queue). 5. Legrövidebb utak egy forrásból (Single-Source Shortest Paths). A legrövidebb utak fája (Shortest-paths tree). Negatív körök (Negative cycles). Közelítés (Relaxation). A szélességi vagy sor-alapú (Queue-based) Bellman-Ford algoritmus. A menet (pass) fogalma. Futási id elemzése. Helyessége. A legrövidebb út kinyomtatása. Legrövidebb utak egy forrásból, körmentes irányított gráfokra. (DAG shortest paths.) Futási id elemzése. Helyessége. Dikstra algoritmusa. Helyessége. Fontosabb implementációi a két f gráfábrázolás és a szükséges prioritásos sor különböz megvalósításai esetén. A futási id k elemzése. 6. Legrövidebb utak minden csúcspárra (All-Pairs Shortest Paths). A megoldás ábrázolása a (D, Π) mátrix-párral. HF: Adott csúcspárra a legrövidebb út kinyomtatása. A Floyd-Warshall algoritmus és a (D (k), Π (k) ) mátrix párok. A futási id elemzése. Összehasonlítás a Dijkstra algoritmus, illetve (HF:) a sor-alapú Bellman-Ford algoritmus G.V -szeri végrehajtásával. Irányított gráf tranzitív lezártja (Transitive closure of a directed graph) és a T (k) mátrixok. Az algoritmus és futási ideje. HF: összehasonlítás a szélességi keresés G.V -szeri végrehajtásával. 7. Mintaillesztés (String Matching). Egy egyszer mintailleszt algoritmus (The naive string-matching algorithm). A futási id elemzése. A Rabin-Karp algoritmus. Inicializálása. A futási id elemzése. A Knuth-Morris-Pratt algoritmus. Inicializálása. A futási id elemzése. A Quick Search algoritmus. Inicializálása. A futási id elemzése. 4
5 8. Adattömörítés (Data Compression) [4]. Karakterenkénti tömörítés állandó kódhosszal. Prex kód. A Human kód. A Human fa. A Human kód visszafejtése. A Human kód optimalitása. Ez a legjobb megoldás? A LempelZivWelch (LZW) módszer. Kódolás szótárépítéssel. Dekódolás a szótár rekonstruálásával. A módszer el nyei. 5
6 1. Rendezés lineáris id ben ([2] 8) Alapvet en nem kulcsösszehasonlítással rendezünk ([2] 8.2), így ezekre az algoritmusokra nem vonatkozik az öszehasonlító rendezések alaptétele ([2] 8.1 tétel) Edényrendezés (Bucket-Sort, [2] 8.4, [3] 21) Feltesszük, hogy a rendezend elemek kulcsai a [0, 1) valós intervallum elemei. (Ha a kulcs egész vagy valós szám típusú, vagy azzá konvertálható, továbbá tudunk a kulcsok számértékeire alsó és fels határt mondani, akkor a kulcsok számértékei nyilván normálhatók a [0, 1) valós intervallumra.) Az alábbi algoritmus akkor lesz hatékony, ha az input kulcsai a [0, 1) valós intervallumon egyenletesen oszlanak el. bucket_sort(a[1..n]) Hozzuk létre a B[0..n 1] edényeket j := 0..n 1 Legyen B[j] üres lista i := 1..n Szúrjuk be az A[i] elemet a B[ n (A[i].kulcs) ] listába j := 0..n 1 Rendezzük monoton növekv en a B[j] listát F zzük össze sorban a B[0], B[1],..., B[n 1] listákat az L listába Másoljuk vissza az L lista tartalmát sorban az A[1..n] tömbbe mt (n) Θ(n). A fenti egyenletes eloszlást feltételezve AT (n) Θ(n). M T (n) attól függ, hogy a B[j] listákat milyen módszerrel rendezzük. Pl. egyszer beszúró rendezést használva MT (n) Θ(n 2 ), (vegyes) összefésül rendezéssel viszont MT (n) Θ(n lg n). A fenti séma természetesen könnyen átírható láncolt listák rendezésére. Ebben az esetben megtakaríthatjuk a listaelemek allokálását és deallokálását is, ami, ha aszimptotikusan nem is, a gyakorlatban mégis gyorsabb programot eredményez. Legyen például adott az L egyszer láncolt lista: 6
7 bucket_sort(&l) n := L hossza Hozzuk létre a B[0..n 1] edényeket j := 0..n 1 Legyen B[j] üres lista L F zzük ki L els elemét Szúrjuk be ezt az elemet a kulcsa (k) szerint a B[ nk ] listába j := 0..n 1 Rendezzük monoton növekv en a B[j] listát F zzük össze sorban a B[0], B[1],..., B[n 1] listákat az L listába HF: Részletezzük az elemi utasítások szintjéig ez utóbbi kódot! 1.2. Leszámláló rendezés (Counting-Sort, [2] 8.2) A stabil rendezés fogalma ([2] 8.2). Feladat: Adottak A[1..n]:T tömb, k O(n) pozitív egész, ϕ : T 0..k kulcsfüggvény. Rendezzük az A[1..n]:T tömböt lineáris id ben stabil rendezéssel úgy, hogy az eredmény a B[1..n]:T tömbben keletkezzék! counting_sort(a[1..n], k, ϕ, B[1..n]) Hozzuk létre a C[0..k]:N tömböt j := 0..k C[j] := 0 i := 1..n C[ϕ(A[i])] + + j := 1..k C[j]+ = C[j 1] i := n..1 ( 1) j := ϕ(a[i]) B[C[j]] := A[i] C[j] 7
8 A m veletigény Θ(n + k). Feltételezve, hogy k O(n), Θ(n + k) = Θ(n), azaz T (n) Θ(n) Radix rendezés (Radix-Sort) tömbökre ([2] 8.3) A rendezend tömb kulcsai k + 1 alapú számrendszerben felírt, d-jegy nemnegatív egész számok. A jobbról els számjegy helyiértéke a legkisebb, míg a d-ediké a legmagasabb. 1 radix_sort(a[1..n], d) i := 1..d Rendezzük az A tömböt az elemek kulcsainak jobbról i-edik számjegye szerint stabil rendezéssel Ha a stabil rendezés a leszámláló rendezés, akkor a m veletigény Θ(d(n+k)), mivel a teljes rendezés d leszámláló rendezésb l áll. Feltételezve, hogy d konstans és k O(n), Θ(d(n + k)) = Θ(n), azaz T (n) Θ(n). Ha pl. a kulcsok négy bájtos nemnegatív egészek, választhatjuk számjegyeknek a számok bájtjait, így d = 4 és k = 255, mindkett n-t l független konstans, tehát a feltételek teljesülnek, és a rendezés lineáris id ben lefut. Az i-edik számjegy, azaz bájt kinyerése egyszer és hatékony. Ha key a kulcs, akkor pl. C++-ban (key >> (8 (i 1)))&255 az i-edik számjegye 2. Ld. még [2] 8.3-ban, hogy n rendezend adat, b bites természetes szám kulcsok és r bites számjegyek esetén, a radix rendezésben, b és n függvényében, hogyan érdemes r-et megválasztani! HF: Részletezzük a radix-sort fenti, absztrakt programját úgy, hogy a stabil rendezéshez leszámláló rendezést használunk, és a számjegyek a teljes b bites kulcs r bites szakaszai! Vegyük gyelembe, hogy ett l a paraméterezés is változik, és hogy érdemes felváltva hol az eredeti A[1..n] tömbb l a B[1..n] segédtömbbe, hol a B[1..n]-b l az A[1..n]-be végezni a leszámláló rendezést! 1 Általánosítva, a kulcs felbontható d kulcs direkt szozatára, ahol a jobbról els leglevésbé szignikáns, míg a d-edik a leglényegesebb. Pl. ha a kulcs dátum, akkor el ször a napok, majd a hónapok és végül az évek szerint alkalmazunk stabil rendezést. Ez azért jó, mert a stabilitás miatt amikor a hónapok szerint rendezünk, az azonos hónapba es elemek a napok szerint rendezettek maradnak, és amikor az évek szerint rendezünk, az azonos évbe es elemek hónapok és ezen belül napok szerint szintén sorban maradnak. 2 ami tovább egyszer södik, ha a programban i helyett az eltolás mértékét tartjuk nyilván (ez persze egyenl 8 (i 1)-gyel) 8
9 1.4. Radix rendezés láncolt listákra ([3] 21) Példa: (legyen k = 1 (bináris számok) és d = 3 (három számjegy): Az eredeti lista (szimbolikus jelöléssel): L = <101,001,100,111,110,010,000,011> Els menet: A[0] = <100,110,010,000> A[1] = <101,001,111,011> L = <100,110,010,000,101,001,111,011> Második menet: A[0] = <100,000,101,001> A[1] = <110,010,111,011> L = <100,000,101,001,110,010,111,011> Harmadik menet: A[0] = <000,001,010,011> A[1] = <100,101,110,111> L = <000,001,010,011,100,101,110,111> A láncolt esetet a struktogrammal együtt a gyakorlatokon tárgyaljuk Gyakorlat: Rendezés bináris számok tömbjén, el re és vissza ([3] 21) 9
10 2. Hasító táblák ([2] 11) A mindennapi programozási gyakorlatban sokszor van szükségünk ún. szótárakra, amelyek m veletei: (1) adat beszúrása a szótárba, (2) kulcs alapján a szótárban a hozzá tartozó adat megkeresése, (3) a szótárból adott kulcsú, vagy egy korábbi keresés által lokalizált adat törlése. Az AVL fák, B+ fák és egyéb kiegyensúlyozott keres fák mellett a szótárakat gyakran hasító táblákkal valósítják meg, feltéve, hogy a m veleteknek nem a maximális, hanem az átlagos futási idejét szeretnék minimalizálni. Hasító táblát használva ugyanis a fenti m veletekre elérhet az ideális, Θ(1) átlagos futási id azon az áron, hogy a maximális m veletigény általában Θ(n). Jelölések: m : a hasító tábla mérete T [0..m 1] : a hasító tábla T [0], T [1],..., T [m 1] : a hasító tábla rései (slot-jai) : üres rés a hasító táblában (NIL) : törölt rés a hasító táblában (nyílt címzésnél) n : a hasító táblában tárolt adatok száma α = n/m : a hasító tábla kitöltöttségi aránya U : a kulcsok univerzuma; k, k, k i U h : U 0..m 1 : hasító függvény h : U 0..m 1 0..m 1 : hasító próba (nyílt címzésnél) h(k, 0), h(k, 1),..., h(k, m 1) : próba sorozat (nyílt címzésnél) Feltesszük, hogy h(k) illetve h(k, i) Θ(1) id ben számolható Direkt címzés (direct-address tables) Feltesszük, hogy U = 0..m 1, ahol m n, de m nem túl nagy. A T [0..m 1] hasító tábla rései ponterek, p a beszúrandó/törlend rekordra mutat. A hasító táblát pointerekkel inicializáljuk. keres(t, k) = T [k] beszúr(t, p) : T [p kulcs] := p töröl(t, p) : T [p kulcs] := Mindhárom m velet futási ideje Θ(1). 10
11 2.2. Hasító táblák (hash tables) Hasító függvény (hash function): Ha U >> n, a direkt címzés nem alkalmazható, vagy nem gazdaságos, ezért h : U 0..m 1 hasító függvényt alkalmazunk, ahol tipikusan U >> m. A k kulcsú adatot a T [0..m 1] hasító tábla T [h(k)] résében tároljuk (próbáljuk tárolni). Kulcsütközések (collisions): Ha két adat k 1, k 2 kulcsára h(k 1 ) = h(k 2 ), kulcsütközésr l beszélünk. Mivel U >> m, a kulcsütközést kezelni kell. Az egyszer ség kedvéért a Cormen könyvet [2] követve feltesszük, hogy a beszúrandó adat kulcsa még nem szerepel a táblázatban (vagy ha úgy tetszik, nem foglalkozunk a duplikált kulcsokkal) Kulcsütközések feloldása láncolással (collision resolution by chaining) Keresés, beszúrás, törlés (search and update operations); kitöltöttségi arány (load factor); egyszer egyenletes hasítás (simple uniform hashing); átlagos keresési id (average-case time of search: a tételek bizonyítás nélkül) Jó hash függvények (good hash functions) Egy egyszer hash függvény (kulcsok a [0, 1) intervallumon), az osztó módszer (the division method), a szorzó módszer (the multiplication method) Nyílt címzés (open addressing) Feltesszük, hogy az adatrekordok közvetlenül a résekben vannak. Az üres rés egy speciális rekordot tartalmaz, amit -lel jelölünk. Szükségünk lesz még egy másik speciális rekordra, amit az ún. törölt rések tartalmaznak, és amit -lel jelölünk. Az üres és a törölt réseket együtt szabad réseknek nevezzük. A többi rés foglalt. Feltesszük, hogy a szabad rések kulcs mez i nem elemei U-nak. Egyetlen hasító függvény helyett m darab hasító függvényünk van: h(, i) : U 0..m 1 (i 0..m 1) A beszúrásnál például el ször a h(k, 0) réssel próbálkozunk. Ha ez foglalt, folytatjuk a h(k, 1)-gyel stb., míg szabad rést találunk, és ebbe tesszük az adatot, vagy kimerítjük az összes lehetséges próbát, de nem találunk szabad rést, és így sikertelen lesz a beszúrás. A h(k, 0), h(k, 1),..., h(k, m 1) sorozatot ezért próba sorozatnak nevezzük. A próba sorozattal szemben megköveteljük, hogy a 0, 1,..., m 1 egy permutációja legyen, azaz, hogy 11
12 az egész hasító táblát lefedje (és így ne hivatkozzon kétszer vagy többször ugyanarra a résre). A keresésnél is a fenti próba sorozatot követjük, de itt átlépjük a törölt réseket, és csak akkor állunk meg, ha megtaláltuk a keresett kulcsú elemet (sikeres keresés), üres rést találunk vagy kimerítjük a próba sorozatot (sikertelen keresés). Ha a keresés a h(k, i 1) próbánál áll meg, akkor (és csak akkor) a keresés hossza i. A törlés egy sikeres keresést követ en a megtalált i rés törölt-re állításából áll (T [i] := ). Itt T [i] := helytelen lenne, mert ha például feltesszük, hogy a k kulcsú adatot kulcsütközés miatt a h(k, 1) helyre tettük, majd töröltük a h(k, 0) helyen lev adatot, akkor egy ezt követ keresés nem találná meg a k kulcsú adatot. Ha elég sokáig használunk egy nyílt címzés hasító táblát, így elszaporodnak a törölt rések, és elfogynak az üres rések, holott a tábla esetleg közel sincs tele. Ez azt jelenti, hogy a sikertelen keresések az egész táblát végig fogják nézni. Ez ellen a tábla id nkénti frissítésével védekezhetünk, ami azt jelenti, hogy kimásoljuk egy temporális területre az adatokat, üresre inicializáljuk a táblát, majd a kimentett adatokat egyesével újra beszúrjuk. Egy próba sorozat ideális esetben a 0, 1,..., m 1 sorozatnak mind az m! permutációját azonos valószín séggel állítja el. Ilyenkor egyenletes hasításról beszélünk. Amennyiben a táblában nincsenek törölt rések, egyenletes hasítást és a hasító tábla 0 < α < 1 kitöltöttségét feltételezve egy sikertelen keresés illetve egy beszúrás várható hossza legfeljebb 1 1 α míg egy sikeres keresés várható hossza legfeljebb 1 α ln 1 1 α Ez azt jelenti, hogy egyenletes hasítást feltételezve pl. 50%-os kitöltöttség mellett egy sikertelen keresés illetve egy beszúrás várható hossza legfeljebb 2, míg egy sikeres keresésé kisebb, mint 1,387; 90%-os kitöltöttség mellett pedig egy sikertelen keresés illetve egy beszúrás várható hossza legfeljebb 10, míg egy sikeres keresésé kisebb, mint 2,559 [2] Lineáris próba h(k, i) = (h (k) + i) mod m (i 0..m 1) 12
13 ahol h : U 0..m 1 hasító függvény. Könny implementálni, de összesen csak m különböz próba sorozat van, az egyenletes hasításhoz szükséges m! próba sorozathoz képest, hiszen ha két kulcsra h(k 1, 0) = h(k 2, 0), akkor az egész próba sorozatuk megegyezik. Ráadásul a különböz próba sorozatok összekapcsolódásával foglalt rések hosszú, összefügg sorozatai alakulhatnak ki, megnövelve a várható keresési id t. Ezt a jelenséget els dleges csomósodásnak nevezzük. Minél hoszabb egy ilyen csomó, annál valószín bb, hogy a következ beszúráskor a hossza tovább fog növekedni. Ha pl. egy szabad rés el tt (ciklikusan értve) i foglalt rés van, akkor (i + 1)/m a valószín sége, hogy a következ beszúrásnál ez is foglalttá válik. Ez az egyszer módszer csak akkor használható, ha a kulcsütközés valószín sége elenyész en kicsi Négyzetes próba h(k, i) = (h (k) + c 1 i + c 2 i 2 ) mod m (i 0..m 1) ahol h : U 0..m 1 hasító függvény, c 1, c 2 > 0. A különböz próba sorozatok nem kapcsolódnak össze, de itt is csak m különböz próba sorozat van, az egyenletes hasításhoz szükséges m! próba sorozathoz képest, hiszen ha két kulcsra h(k 1, 0) = h(k 2, 0), akkor az egész próba sorozatuk itt is megegyezik. Ezt a jelenséget másodlagos csomósodásnak nevezzük. Annak érdekében, hogy a próba sorozat az egész táblát lefedje, a c 1, c 2 konstansokat körültekint en kell megválasztani. Ha például a tábla m mérete kett hatvány, akkor c 1 = c 2 = 1/2 jó választás. Ráadásul ilyenkor h(k, i) = (h (k) + i + ) i2 mod m (i 0..m 1) 2 Ezért ( (i + 1) + (i + 1) 2 (h(k, i + 1) h(k, i)) mod m = 2 i + ) i2 2 mod m = azaz (i + 1) mod m h(k, i + 1) = (h(k, i) + i + 1) mod m Innét a beszúrás és a keresés programjai (x a beszúrandó adat, k a keresett kulcs; a sikertelen m veletet a 1 visszadásával jelezzük): 13
14 fv beszúr(t [0..m 1], x) i := 0 ; j := h (k) i < m T [j] {, } T [j] := x return j i + + SKIP j := (j + i) mod m return 1 fv keres(t [0..m 1], k) i := 0 ; j := h (k) ; b := igaz b T [j].kulcs = k return j SKIP i + + b := (T [j] i < m) j := (j + i) mod m return 1 HF: Alakítsuk át a beszúrás struktogramját úgy, hogy egyenl kulcsú adatok felvitelét ne engedje! Kett s hasítás h(k, i) = (h 1 (k) + ih 2 (k)) mod m (i 0..m 1) ahol h 1 : U 0..m 1 és h 2 : U 1..m 1 hasító függvények. A próba sorozat pontosan akkor fedi le az egész hasító táblát, ha h 2 (k) és m relatív prímek. Ezt a legegyszer bb úgy biztosítani, ha a m kett hatvány és h 2 (k) minden lehetséges kulcsra páratlan szám, vagy m prímszám. Például ha m prímszám és m kicsit kisebb (mondjuk m = m 1 vagy m = m 2) akkor h 1 (k) = k mod m h 2 (k) = 1 + (k mod m ) egy lehetséges választás. A kett s hasításnál minden különböz (h 1 (k), h 2 (k)) pároshoz különböz próbasorozat tartozik. Ezért itt Θ(m 2 ) különböz próbasorozat lehetséges. A kett s hasítás, bár próbasorozatainak száma messze van az ideális m! számú próbasorozattól, úgy t nik, hogy jól közelíti annak m ködését. 14
15 3. Elemi gráf algoritmusok ([2] 22) 3.1. Gráf ábrázolások 3.2. A szélességi gráfkeresés A legrövidebb utak. A szélességi gráfkeresés (BFS) algoritmusa és futási ideje. A szélességi feszít fa. HF: A szélességi gráfkeresés megvalósítása a klasszikus gráf ábrázolások esetén; hatékonyság A mélységi gráfkeresés A mélységi gráfkeresés (DFS). Mélységi feszít erd. A gráf csúcsainak szín és id pont címkéi. Az élek osztályozása. A mélységi gráfkeresés futási ideje A topologikus rendezés HF: A mélységi gráfkeresés és a topologikus rendezés megvalósítása a klasszikus gráf ábrázolások esetén; hatékonyság Er sen összefügg komponensek 15
16 4. Minimális feszít fák ([2] 23) A minimális feszít fa (MST) fogalma Egy általános algoritmus Vágás, vágást keresztez él, élhalmazt elkerül vágás, könny él. Egy tétel a biztonságos élekr l és a minimális feszít fákról Prim algoritmusa Prim algoritmusa, mint az általános algoritmus megvalósítása. A futási id elemzése. HF: A Prim algoritmus implementációja a két f gráfábrázolás és a szükséges prioritásos sor különböz megvalósításai esetén Kruskal algoritmusa Kruskal algoritmusa, mint az általános algoritmus megvalósítása. A futási id elemzése. 16
Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések.
Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések. Ásványi Tibor asvanyi@inf.elte.hu 2017. július 4. Az eljárásokat és függvényeket megfelel en elnevezett és paraméterezett struktogramok segítségével
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
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
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 8. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás
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
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 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
Algoritmusok és adatszerkezetek I. régebbi vizsgakérdések.
Algoritmusok és adatszerkezetek I. régebbi vizsgakérdések. Ásványi Tibor asvanyi@inf.elte.hu 2019. június 22. A vizsgákon természetesen olyan kérdések is szerepelhetnek, amelyek a régebbi vizsgákon nem
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
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
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
Algoritmusok és adatszerkezetek 2.
Algoritmusok és adatszerkezetek 2. Varga Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Nyílt címzéses hash-elés A nyílt címzésű hash táblákban a láncolással ellentétben egy indexen
Ö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
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
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. Ö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
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),
Algoritmusok és adatszerkezetek II.
Szegedi Tudományegyetem - Természettudományi és Informatikai Kar - Informatikai Tanszékcsoport - Számítógépes Algoritmusok és Mesterséges Intelligencia Tanszék - Németh Tamás Algoritmusok és adatszerkezetek
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
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
Algoritmusok és adatszerkezetek I. el adásjegyzet
Algoritmusok és adatszerkezetek I. el adásjegyzet Ásványi Tibor asvanyi@inf.elte.hu 2019. február 10. Tartalomjegyzék 1. Bevezetés 5 2. Tematika 7 3. Néhány alapvet jelölés és elméleti háttere 8 3.1. Tömbök..............................
Algoritmusok és adatszerkezetek II. el adásjegyzet (részletek)
Algoritmusok és adatszerkezetek II. el adásjegyzet (részletek) Ásványi Tibor asvanyi@inf.elte.u 19. február 4. Tartalomjegyzék 1. Bevezetés, Ajánlott irodalom 3. Tematika 6 3. AVL fák 8 3.1. AVL fák: beszúrás........................
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,
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,
Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök
Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet
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
Programozás alapjai II. (7. ea) C++
Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1
Adatszerkezetek Hasító táblák. Dr. Iványi Péter
Adatszerkezetek Hasító táblák 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
Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek
Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1
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
7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.
7. előadás, rendezés lineáris lépésszámmal Adatszerkezetek és algoritmusok előadás 2018. március 6.,, és Debreceni Egyetem Informatikai Kar 7.1 Általános tudnivalók Ajánlott irodalom: Thomas H. Cormen,
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
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
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
Bevezetés. 1. fejezet. Algebrai feladatok. Feladatok
. fejezet Bevezetés Algebrai feladatok J. A számok gyakran használt halmazaira a következ jelöléseket vezetjük be: N a nemnegatív egész számok, N + a pozitív egész számok, Z az egész számok, Q a racionális
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
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
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
Hasító táblázatok. Hasító függvények, kulcsütközés kezelése. Programozás II. előadás. Szénási Sándor
Hasító táblázatok Hasító függvények, kulcsütközés kezelése 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 Felépítése
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
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
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
Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák
Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák Gelle Kitti 2017. 10. 25. Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák 2017. 10. 25. 1 / 20 Hasítótáblák T 0 h(k 2)
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
4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Elemi algoritmusok ismerete
A TANTÁRGY ADATLAPJA 1. A képzési program adatai 1.1 Felsőoktatási intézmény Babeș-Bolyai Tudományegyetem 1.2 Kar Matematika és Informatika 1.3 Intézet Magyar Matematika és Informatika 1.4 Szakterület
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
Adatszerkezetek I. 6. előadás
Adatszerkezetek I. 6. előadás Táblázat A táblázat olyan halmazféleség, amelyben az elemeket kulcsértékkel azonosítjuk. A szokásos halmazműveletekből azonban csak néhányat definiálunk rá: Üres: Táblázat
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
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
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
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
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
file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html
1 / 6 2018.01.20. 23:23 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 tananyagának
Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból
ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév
Algoritmusok II. gyakorló feladatok (2016)
Algoritmusok II. gyakorló feladatok (2016) Rendezés lineáris id ben 1.1. Rendezzük számjegypozíciós listarendezéssel a 013, 200, 010, 321, 213, 201 négyes számrendszerbeli számok egyszer láncolt listáját!
Algoritmusok II. gyakorló feladatok
Algoritmusok II. gyakorló feladatok Ásványi Tibor 2019. március 15. Mj.: Az alábbi anyagban M S az algoritmusok maximális munkatárigényére vonatkozik. Ez nem tartalmazza az input
Gráfelméleti feladatok programozóknak
Gráfelméleti feladatok programozóknak Nagy-György Judit 1. Lehet-e egy gráf fokszámsorozata 3, 3, 3, 3, 5, 6, 6, 6, 6, 6, 6? 2. Lehet-e egyszer gráf fokszámsorozata (a) 3, 3, 4, 4, 6? (b) 0, 1, 2, 2, 2,
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)
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:,
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
4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Feladatok kijelentéseinek megértése
A TANTÁRGY ADATLAPJA 1. A képzési program adatai 1.1 Felsőoktatási intézmény Babeș Bolyai Tudományegyetem 1.2 Kar Matematika és Informatika 1.3 Intézet Magyar Matematika és Informatika 1.4 Szakterület
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ú
Algoritmusok és adatszerkezetek I. el adásjegyzet
Algoritmusok és adatszerkezetek I. el adásjegyzet Ásványi Tibor asvanyi@inf.elte.hu 2018. október 27. Tartalomjegyzék 1. Bevezetés 4 2. Tematika 6 3. Néhány alapvet jelölés és elméleti háttere 7 3.1. Tömbök..............................
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
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
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
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,
Táblázatok fontosabb műveletei 1
Táblázatok fontosabb műveletei 1 - - Soros táblázat procedure BESZÚR1(TÁBLA, újelem) - - beszúrás soros táblázatba - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok
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
Permutációk véges halmazon (el adásvázlat, február 12.)
Permutációk véges halmazon el adásvázlat 2008 február 12 Maróti Miklós Ennek az el adásnak a megértéséhez a következ fogalmakat kell tudni: ismétlés nélküli variáció leképezés indulási és érkezési halmaz
Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17
Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 17 SQL nyelv Structured Query Language Struktúrált lekérdez
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
A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai
A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási
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
Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása
1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június
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
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) +
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
Mintaillesztő algoritmusok. Ölvedi Tibor OLTQAAI.ELTE
Mintaillesztő algoritmusok Ölvedi Tibor OLTQAAI.ELTE Mintaillesztő algoritmusok Amiről szó lesz: Bruteforce algoritmus Knuth-Morris-Pratt algoritmus Rabin-Karp algoritmus Boyer-Moore algoritmus Boyer-Moore-Horspool
5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás
Elemi programok Definíció Az S A A program elemi, ha a A : S(a) { a, a, a, a,..., a, b b a}. A definíció alapján könnyen látható, hogy egy elemi program tényleg program. Speciális elemi programok a kövekezők:
GRÁFOK ÉS ALGORITMUSOK ELMÉLETE VIZSGAKÉRDÉSEK Matematika BSc Elemző szakirány II. év 1. félév
GRÁFOK ÉS ALGORITMUSOK ELMÉLETE VIZSGAKÉRDÉSEK Matematika BSc Elemző szakirány II. év 1. félév Az írásbeli vizsgán öt kérdést kell kidolgozni, A kérdések az alábbiak közül kerülnek kiválasztásra, a műfaji
Egyváltozós függvények 1.
Egyváltozós függvények 1. Filip Ferdinánd filip.ferdinand@bgk.uni-obuda.hu siva.banki.hu/jegyzetek 015 szeptember 1. Filip Ferdinánd 015 szeptember 1. Egyváltozós függvények 1. 1 / 5 Az el adás vázlata
Bevezetés a programozásba I.
Bevezetés a programozásba I. 3. gyakorlat Tömbök, programozási tételek Surányi Márton PPKE-ITK 2010.09.21. ZH! PlanG-ból papír alapú zárthelyit írunk el reláthatólag október 5-én! Tömbök Tömbök Eddig egy-egy
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:
1.előadás Tornai Kálmán
1.előadás Tornai Kálmán tornai.kalman@itk.ppke.hu Általános tudnivalók Előadás: 2 óra (Labor)gyakorlat: 3 óra Előismeretek: Kötelező: Bevezetés a programozásba I-II. Algebra és diszkrét matematika I. II.
1. tétel - Gráfok alapfogalmai
1. tétel - Gráfok alapfogalmai 1. irányítatlan gráf fogalma A G (irányítatlan) gráf egy (Φ, E, V) hátmas, ahol E az élek halmaza, V a csúcsok (pontok) halmaza, Φ: E {V-beli rendezetlen párok} illeszkedési
OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.
Osztók és többszörösök 1783. A megadott számok elsõ tíz többszöröse: 3: 3 6 9 12 15 18 21 24 27 30 4: 4 8 12 16 20 24 28 32 36 40 5: 5 10 15 20 25 30 35 40 45 50 6: 6 12 18 24 30 36 42 48 54 60 1784. :
Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.
Online algoritmusok Algoritmusok és bonyolultságuk Horváth Bálint 2018. március 30. Horváth Bálint Online algoritmusok 2018. március 30. 1 / 28 Motiváció Gyakran el fordul, hogy a bemenetet csak részenként
Adatszerkezetek és algoritmusok
2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók
Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor
Láncolt listák Egyszerű, rendezett és speciális láncolt listák 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 Láncolt
Algoritmusok és adatszerkezetek I. 5. előadás
Algoritmusok és adatszerkezetek I. 5. előadás Táblázat A táblázat olyan halmazféleség, amelyben az elemeket kulcsértékkel azonosítjuk. A szokásos halmazműveletekből azonban csak néhányat definiálunk rá:
1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007
Hálózatok II 2007 1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok 1 Az előadáshoz Előadás: Szerda 17:00 18:30 Gyakorlat: nincs Vizsga írásbeli Honlap: http://people.inf.elte.hu/lukovszki/courses/g/07nwii
2018, Diszkre t matematika. 10. elo ada s
Diszkre t matematika 10. elo ada s MA RTON Gyo ngyve r mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tansze k Marosva sa rhely, Roma nia 2018, o szi fe le v MA RTON Gyo ngyve r 2018,
Nagy Gábor compalg.inf.elte.hu/ nagy ősz
Diszkrét matematika 1. középszint 2017. ősz 1. Diszkrét matematika 1. középszint 9. 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
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
Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:
Buborékrendezés: For ciklussal: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábr.: ha p egy mutató típusú változó akkor p^ az általa mutatott adatelem, p^.adat;p^.mut. A semmibe mutató ponter a NIL.Szabad
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