Algoritmusok és adatszerkezetek II.
|
|
- Éva Szekeresné
- 7 évvel ezelőtt
- Látták:
Átírás
1 Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar
2 5. Vágható-egyesíthető Halmaz adattípus megvalósítása önszervező bináris keresőfával Értékhalmaz: V EHalmaz = {{a 1,...,a n : a i E Műveletek: RHalmaz műveletek + H,H 1,H 2 : V EHalmaz, k : E {H = H Vag(H,k,H 1,H 2 ) {H = /0,H 1 = {x re(h) : x < k H 2 = {x re(h) : x k {max(h 1 ) min(h 2 ) Egyesit(H 1,H 2,H) {H 1 = /0,H 2 = /0,H = re(h 1 ) re(h 1 ) public interface VEHalmaz<E extends Comparable<E>> extends RHalmaz<E>{ public VEHalmaz<E> Vag(E k); public void Egyesit(VEHalmaz<E> H2);
3 A vágás művelet megvalósítható egy menetben felülről lefelé haladva a következő transzformációs lépésekkel. Minden lépésben a bemeneti fa egy részfáját átkapcsoljuk vagy az F 1 fa jobb sarkához, vagy az F 2 fa bal sarkához. A lépéseket addig kell ismételni, amíg a bemeneti fa elfogy.
4 a 1 a 2 1 b 1 2 a 3 1 b 2 3 b ábra. A K kulcshoz tartozó bővítőút.
5 a 1 a 2 1 b 1 2 a 3 1 b 2 3 b ábra. Az F fa K-nál kisebb gyökerű és K-nál nem kisebb gyökerű részfákra bontása.
6 a 1 F 1 a 2 1 b 1 F 2 2 a 3 1 b 2 3 b ábra. A részfák összekapcsolása F 1 és F 2 fává.
7 Transzformációs invariáns. A VAG művelet megvalósítása transzformációs lépések sorozatából áll. Minden lépésben három fa vesz részt (amelyek közül egy lépésben csak kettő változik), F 1,F,F 2, ahol F a még vágandó fa, F 1 a kiindulási fából eddig kivágott és a K kulcsnál < pontokat tartalmazó keresőfa, F 2 pedig a kiindulási fából eddig kivágott és a K kulcsnál pontokat tartalmazó keresőfa. A kezdő hármas:,f,. Az algoritmus helyességének bizonyítását transzformációs invariáns alkalmazásával végezzük. A transzformációs invariáns olyan tulajdonság (logikai kifejezés), amely ha teljesül egy F 1,F,F 2 F 1,F,F 2 transzformációs lépés előtt az F 1,F,F 2 hármasra, akkor a keletkező F 1,F,F 2 fa-hármasra ismét teljesülni fog. Transzformációs invariáns a T 1 és T 2 vágási transzformációkra: 1. Az F, F 1 és F 2 fa bináris keresőfa 2. max(f 1 ) < K min(f 2 ) ha F 1 és F 2 3. max(f 1 ) min(f) ha F 1 4. max(f) min(f 2 ) ha F 2 Megvalósítás
8 Elõtte F X F 1 F 2 JS BS Utána F F 1 F 2 X BS JS 4. ábra. A T 1 vágási transzformáció; feltétel: X < K
9 Előtte F X F 1 F 2 JS BS Utána F 1 F 2 F JS X BS 5. ábra. A T 2 vágási transzformáció; feltétel: K X
10 public BinKerFa<E> BKFaVag(E k){ BinKerFaont<E> Fej; BinFaont<E> BJSarok, JBSarok, p; Fej=new BinKerFaont<E>(); p=gyoker; BJSarok=JBSarok=Fej; while (p!=null){ if (k.compareto(p.elem)<=0 ){ JBSarok.bal=p; //(B, X<-, J) --> (B, a, J) p.apa=jbsarok; // / \ / JBSarok=p; // a b X p=p.bal; // \ else{ // b BJSarok.jobb=p; //(B, X<-, J) --> (B, b, J) p.apa=bjsarok; // / \ \ BJSarok=p; // a b X p=p.jobb; // / // a //while BJSarok.jobb=null; JBSarok.bal=null; gyoker=fej.jobb; if (gyoker!=null) gyoker.apa=null; if (Fej.bal!=null) Fej.bal.apa=null; return new BinKerFaA<E>(Fej.bal);
11 A BKFAVAG eljárás futási ideje legrosszabb esetben O(h(F)). Azonban a vágás során nem tartható fenn sem az AVL, sem a piros-fekete kiegyensúlyozottság a fa magasságával arányos időben Egyesítés A max(f 1 ) min(f 2 ) feltétel miatt a két fa egyszerűen összekapcsolható, akár F 2 -t F 1 jobbsarkához, akár F 1 -et F 2 bal-sarkához kapcsolva. Kevésbé elfajuló fát kapunk, ha először F F F 1 F 2 F 1 F 2 F 2 F 1 6. ábra. Két bináris keresőfa egyszerű egyesítése eltávolítjuk F 1 -ből a legnagyobb elemet tartalmazó pontot, majd az így kapott F 1 fát az eltávolított pont bal, és az F 2 fát jobb fiaként kapcsoljuk be (vagy fordítva).
12 F K F K F 1 F 2 F 1 F 2 F 1 F 2 7. ábra. Két bináris keresőfa egyesítése 5.2. Önszervező bináris keresőfák Tegyük fel, hogy van olyan Splay(F, K) műveletünk, amely átalakítja az F bináris keresőfát úgy, hogy a K kulcsú elem kerül a gyökérbe, ha van F-ben K kulcsú elem, egyébként olyan K kulcsú elem kerül a gyökérbe, amely vagy követője, vagy előzője K-nak. (Tehát SLAY(F,K) hatására a K-keresőút végén lévő pont kerül a gyökérbe.) Tehát Splay(F, K) végrehajtása után teljesül a Splay tulajdonság: 1. F bináris keresőfa 2. Adat(F) = K, ha K re(f) vagy Adat(F) = Max{Adat(x) : x re(f) Adat(x) < K, vagy Adat(F) = Min{Adat(x) : x re(f) Adat(x) > K ha K / re(f) Ilyen SLAY művelettel megvalósítható a KERES, BOVIT, TOROL, VAG és EGYESIT műveletek mindegyike. A keresés nyilvánvaló, SLAY(F, K) után ellenőrizni kell, hogy K kulcsú elem került-e a gyökérbe.
13 F Splay(F, K) F K K K K K (a) (b) 8. ábra. A BOVIT(F, K) művelet megvalósítása SLAY művelettel. (a) eset: K K, (b)eset: K > K.
14 F Splay(F, K) F K Splay(, K) K K 9. ábra. A TOROL(F, K) művelet megvalósítása SLAY művelettel.
15 F Splay(F, K) F K F 1 K F ábra. A VAG(F,K,F 1,F 2 ) művelet megvalósítása SLAY művelettel.
16 F 1 F 2 F 1 Splay(F 1,min(F 2 )) F 11. ábra. A EGYESIT(F 1,F 2,F) művelet megvalósítása SLAY művelettel.
17 Z R X Y Q δ Y Q X γ Z R γ δ 12. ábra. Alulról felfelé haladó transzformáció.
18 Z R Y X Q δ X Q Z R Y γ δ γ X R Y Z Q X R Z Q Y δ γ δ γ 13. ábra. Alulról felfelé haladó transzformáció.
19 A SLAY transzformáció megvalósítása felülről lefelé haladva. A BKFAVAG művelethez hasonlóan, a SLAY műveletet is transzformációs lépések sorozatával valósítjuk meg, amely az S5 összeépítő lépés végrehajtásával ér véget. Minden lépésben három fa vesz részt, a kezdő hármas:,f,. A transzformációs lépések mindegyikére a következő tulajdonság invariáns lesz. 1. Az F, F 1 és F 2 fa bináris keresőfa 2. max(f 1 ) K min(f 2 ) ha F 1 és F 2 3. max(f 1 ) min(f) ha F 1 4. max(f) min(f 2 ) ha F 2
20 Y F 1 F 2 X Q BJ γ JB Feltétel: K Y K X F 1 F 2 BJ X Q JB Y Feltétel: K Y K = X K X = γ X Q F 1 F 2 BJ Y JB γ 14. ábra. S1: Cikk-cikk transzformáció
21 Y F 1 F 2 X Q BJ γ JB Feltétel: K < Y K > X F 1 F 2 X Q Y BJ JB γ Feltétel: K < Y K = X K > X = X Q F 1 F 2 BJ Y JB γ 15. ábra. S2: Cikk-cakk transzformáció
22 X F 1 F 2 Y Q BJ JB γ Feltétel: K > X K < Y F 1 F 2 X Y Q BJ JB γ Feltétel: K > X K = Y K < Y = Y Q F 1 F 2 X γ JB BJ 16. ábra. S3: Cakk-cikk transzformáció
23 X F 1 F 2 Y Q BJ JB γ Feltétel: K > X K > Y γ F 1 γ F 2 Y Q JB X BJ Feltétel: K > X K = Y K > Y γ = Y Q F 1 F 2 X γ JB BJ 17. ábra. S4: Cakk-cakk transzformáció
24 X F 1 F 2 BJ JB Feltétel: X = K K < X = K > X = X F 1 F ábra. S5 : Összeépítő transzformáció
25 Mivel mindegyik transzformációs lépés teljesíti az invariánst, ezért a keletkező fára teljesül a Splay tulajdonság tétel. Ha a halmazok ábrázolására önszervező bináris keresőfát használunk, akkor minden 1,..., m műveletsor, ahol i {KERES, BOVIT, TOROL, VAG, EGYESIT összesített futási ideje O(m lg n), ahol n a BOVIT műveletek száma és a műveletsor előtt üres halmazzal indulunk.
26 private void Splay(E x){ BinKerFaont<E> BJSarok, JBSarok, p, q; BJSarok = Fej; JBSarok = Fej; Fej.bal = Fej.jobb = null; p = (BinKerFaont<E>)gyoker; for (;;) { if (x.compareto(p.elem) < 0) { q=(binkerfaont<e>)p.bal; if (q!=null && x.compareto(q.elem) < 0) {//a keresőút balra halad p.bal = q.jobb; if (q.jobb!=null) q.jobb.apa=p; q.jobb = p; p.apa=q; p = q; if (p.bal == null) break; JBSarok.bal = p; p.apa=jbsarok; JBSarok = p; p = (BinKerFaont<E>)p.bal; // jobbra forgat // jobbra kapcsol
27 else if (x.compareto(p.elem) > 0) {a keresőút jobbra halad q=(binkerfaont<e>)p.jobb; if (q!=null && x.compareto(q.elem) > 0) { p.jobb = q.bal; if (q.bal!=null) q.bal.apa=p; q.bal = p; p.apa=q; p = q; if (p.jobb == null) break; BJSarok.jobb = p; p.apa=bjsarok; BJSarok = p; p = (BinKerFaont<E>)p.jobb; else { break; // balra forgat // balra kapcsol
28 BinFaont<E> f1=p.bal; BinFaont<E> f2=p.jobb; BJSarok.jobb = f1; // összeépítés JBSarok.bal = f2; p.bal = Fej.jobb; p.jobb = Fej.bal; if (f1!=null && BJSarok!=Fej) f1.apa=bjsarok; if (f2!=null && JBSarok!=Fej) f2.apa=jbsarok; if (p.bal!=null) p.bal.apa=p; if (p.jobb!=null) p.jobb.apa=p; p.apa=null; gyoker = p;
29 public boolean Bovit(E x, boolean tobb){ int ken; if (gyoker == null) { gyoker = new BinKerFaont(x,null,null); return true; Splay(x); if (( ken = x.compareto(gyoker.elem)) == 0 &&!tobb) return false; BinKerFaont<E> ujpont = new BinKerFaont<E>(x,null,null); if (ken < 0) { ujpont.bal = gyoker.bal; if (gyoker.bal!=null) gyoker.bal.apa=ujpont; ujpont.jobb = gyoker; gyoker.bal = null; else { ujpont.jobb = gyoker.jobb; if (gyoker.jobb!=null) gyoker.jobb.apa=ujpont; ujpont.bal = gyoker; gyoker.jobb = null; gyoker.apa=ujpont; gyoker = ujpont; gyoker.apa=null; return true; //Bovit
30 public boolean Torol(E x){ if (gyoker==null) return false; BinKerFaont<E> f2; Splay(x); if (x.compareto(gyoker.elem)!= 0) return false; // a gyöker törlése f2 = (BinKerFaont<E>)gyoker.jobb; gyoker = gyoker.bal; if (gyoker!=null){ gyoker.apa=null; Splay(x); gyoker.jobb = f2; if (f2!=null) f2.apa=gyoker; else gyoker=f2; if (gyoker!=null) gyoker.apa=null; return true; //Torol
31 public BinKerFa<E> Vag(E x){ Splay(x); BinKerFaont<E> p2 = (BinKerFaont<E>)gyoker; if (x.compareto(gyoker.elem) <=0){ gyoker=p2.bal; if (p2.bal!=null) gyoker.apa=null; p2.bal=null; else{ p2=(binkerfaont<e>)gyoker.jobb; if (p2.bal!=null) gyoker.jobb=null; gyoker.apa=null; return new BinKerFaS<E>(p2);
32 public void Egyesit(BinKerFaS<E> f2){ if (gyoker==null){ gyoker=f2.gyoker; return; BinKerFaont<E> p2 = (BinKerFaont<E>)f2.gyoker; if (p2==null) return; BinKerFaont<E> p2m=(binkerfaont<e>)f2.min(); Splay(p2.elem); if (gyoker.elem.compareto(p2m.elem)>0 ) throw new RuntimeException("A két Halmaz nem erősen diszjunkt"); gyoker.jobb=p2; p2.apa=gyoker; f2.gyoker=null;
33 5.3. A VHHalmaz adattípus megvalósítása önszervező bináris keresőfával public class VEHalmazSFa<E extends Comparable<E>> extends RHalmazFa<E> implements VEHalmaz<E>{ // örökölt adattagok RHalmazFa<E>-ból: // protected BinKerFa<E><E> Fa; // protected int eszam; // private boolean multi=true; VEHalmazSFa(boolean multi){ super("splay", multi); Fa=new BinKerFaS<E>(); eszam=0; VEHalmazSFa(){ super("splay"); Fa=new BinKerFaS<E>(); eszam=0;
34 public VEHalmaz<E> Vag(E x){ BinKerFaS<E> F2=(BinKerFaS<E>)((BinKerFaS<E>)Fa).Vag(x); VEHalmazSFa<E> H2=new VEHalmazSFa<E>(); H2.Fa=F2; H2.eszam=Integer.MIN_VALUE; eszam=integer.min_value; return H2; public void Egyesit(VEHalmaz<E> H2){ if (H2 instanceof VEHalmazSFa){ ((BinKerFaS<E>)Fa).Egyesit( (BinKerFaS<E>)((VEHalmazSFa<E>)H2).Fa ) // eszam=elemszam()+h2.elemszam(); eszam=integer.min_value; else throw new RuntimeException("A két Halmaz nem azonos ábrázolású");
35 private int Bejar(BinFaont<E> p){ if (p==null) return 0; return 1+Bejar(p.bal)+Bejar(p.jobb); public int Elemszam(){ if (Fa.gyoker==null) eszam=0; else if (eszam<0){ eszam=bejar(fa.gyoker); return eszam;
Algoritmusok és adatszerkezetek II.
Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 3. Kiegyensúlyozott keresőfák A T tulajdonság magasság-egyensúlyozó
Algoritmusok és adatszerkezetek II.
Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 6. Ugrólista (Skiplist) Definíció. Olyan adatszerkezet, amelyre
Ö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
... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)
6. Fabejáró algoritmusok 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
Példa 30 14, 22 55,
Piros-Fekete fák 0 Példa 14, 22 55, 77 0 14 55 22 77 Piros-Fekete fák A piros-fekete fa olyan bináris keresőfa, amelynek minden pontja egy extra bit információt tartalmaz, ez a pont színe, amelynek értékei:
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
Rendezettminta-fa [2] [2]
Rendezettminta-fa Minden p ponthoz tároljuk a p gyökerű fa belső pontjainak számát (méretét) Adott elem rangja: az elem sorszáma (sorrendben hányadik az adatszekezetben) Adott rangú elem keresése - T[r]
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) +
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
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
Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan
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 és Adatszerkezetek II.
Algoritmusok és Adatszerkezetek II. előadás Felelős tanszék: Számítógépes algoritmusok és mesterséges intelligencia tanszék Nappali tagozaton: Előadás: heti 2 óra / 5 kredit. Teljesítés módja: Kollokvium.
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
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
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
ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA
ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA Tétel: Ha a halmazok ábrázolására önszervező bináris keresőfát használunk, akkor minden α 1,...,α m műveletsor, ahol i {1..m}: α i {keres;bovit;torol;vag;egyesit}
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
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.
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked
OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.
OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Szimuláljuk különféle élőlények túlélési versenyét. A lények egy pályán haladnak végig, ahol váltakozó viszonyok vannak. Egy lénynek
C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
Algoritmusok és Adatszerkezetek II. előadás
Algoritmusok és Adatszerkezetek II. előadás Felelős tanszék: Számítógépes algoritmusok és mesterséges intelligencia tanszék Nappali tagozaton: Előadás: heti 2 óra / 3 kredit. Teljesítés módja: Kollokvium.
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
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
3. Absztrakt adattípusok
3. Absztrakt adattípusok Az adatkezelés szintjei: 1. Probléma szintje. 2. Modell szintje. 3. Absztrakt adattípus szintje. 4. Absztrakt adatszerkezet szintje. 5. Adatszerkezet szintje. 6. Gépi szint. Absztrakt
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)
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
Bináris keresőfák. Adat : M Elemtip és Elemtip-on értelmezett egy lineáris rendezési reláció,
Bináris keresőfák Az F = (M,R,Adat) absztrakt adatszerkezetet bináris keresőfának nevezzük, ha F bináris fa, R = {bal, jobb, apa}, bal, jobb, apa : M M, Adat : M Elemtip és Elemtip-on értelmezett egy lineáris
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
10. Gráf absztrakt adattípus, gráfok ábrázolása
Gráf absztrakt adattípus, gráfok ábrázolása Definíciók Irányítatlan gráf:g = (V, E) 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 Multigráf: G
10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28.
10. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 2-3 fák Hatékony keresőfa-konstrukció. Ez is fa, de a binárisnál annyival bonyolultabb hogy egy nem-levél csúcsnak 2 vagy 3 fia
OOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
és az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.
Kiválasztás kupaccal 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.
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
Hierarchikus adatszerkezetek
5. előadás Hierarchikus adatszerkezetek A hierarchikus adatszerkezet olyan < A, R > rendezett pár, amelynél van egy kitüntetett r A gyökérelem úgy, hogy: 1. r nem lehet végpont, azaz a A esetén R(a,r)
Fák 2009.04.06. Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa
Fák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Témakörök 2 Fa (Tree): csomópontok
Egyesíthető prioritási sor
Egyesíthető prioritási sor Értékhalmaz: EPriSor = S E, E-n értelmezett a lineáris rendezési reláció. Műveletek: S,S 1,S 2 : EPriSor, x : E {Igaz} Letesit(S, ) {S = /0} {S = S} Megszuntet(S) {} {S = S}
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.
Generikus osztályok, gyűjtemények és algoritmusok
Programozási, gyűjtemények és algoritmusok bejárása Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 bejárása 2 bejárása 2 Java-ban és UML-ben bejárása Az UML-beli paraméteres osztályok a Java
Egyesíthető prioritási sor
Egyesíthető prioritási sor Értékhalmaz: EPriSor = S E, E-n értelmezett a lineáris rendezési reláció. Műveletek: S,S 1,S 2 : EPriSor, x : E {Igaz} Letesit(S, ) {S = /0} {S = S} Megszuntet(S) {} {S = S}
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
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
Algoritmusok és adatszerkezetek II.
Algoritmusok és adatszerkezetek II. előadás I404e-1 H[10-11:30] BE-002-3 minden héten Szegedi Tudományegyetem - Természettudományi és Informatikai Kar - Informatikai Tanszékcsoport - Számítógépes Algoritmusok
Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 7. Gráfalgoritmusok II. 7.1. Feladat: Útcaseprő A város utcáinak takarítását úgy szervezték
Információs Technológia
Információs Technológia Rekurzió, Fa adatszerkezet Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 18. Rekurzió Rekurzió
- Levelek: operandusok - Csomópontok: operátorok. Fenti kifejezés: (x+ (y 10)) * (6 / z) Bináris Keresőfa (BST) Példa bináris keresőfára.
Fák Fa definíciója Fa(Tree): csomópontok(nodes) halmaza, amelyeket élek(edges) kötnek össze, és teljesülnek az alábbi feltételek: - létezik egy kitűntetett csomópont: a gyökér (root) - a gyökértől különböző
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is
2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1
2. Rekurzió Egy objektum definícióját rekurzívnak nevezünk, ha a definíció tartalmazza a definiálandó objektumot. Egy P eljárást (vagy függvényt) rekurzívnak nevezünk, ha P utasításrészében előfordul magának
OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek
OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető
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
Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.
Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum
A Verem absztrakt adattípus
A Verem absztrakt adattípus Értékhalmaz: E Verem = [a 1,...,a n : a i E,i = 1,...,n,] Műveletek: V : Verem, x : E {Igaz} Letesit(V) {V = []} {V = V } Megszuntet(V) {Igaz} {V = V } Uresit(V) {V = []} {V
6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6.
6. előadás, AVL-fa, piros-fekete fa Adatszerkezetek és algoritmusok előadás 2018. március 6.,, és Debreceni Egyetem Informatikai Kar 6.1 Általános tudnivalók Ajánlott irodalom: Thomas H. Cormen, Charles
Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu
Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:
Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája
Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból
Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)
Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris
Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)
Adatszerkezetek I. 8. előadás (Horváth Gyula anyagai felhasználásával) Kereső- és rendezőfák Közös tulajdonságok: A gyökérelem (vagy kulcsértéke) nagyobb vagy egyenlő minden tőle balra levő elemnél. A
Objektumorientált programozás C# nyelven III.
Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és
List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error
Generics Egyszerűbb példák (java.util csomagból): public interface List { void add(e x); Iterator iterator(); public interface Iterator { E next(); boolean hasnext(); E - formális típusparaméter,
Bánsághi Anna 2014 Bánsághi Anna 1 of 68
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
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
Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése
Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése Készítette: Gregorics Tibor Szabóné Nacsa Rozália Alakítsunk át egy infix formájú aritmetikai kifejezést postfix
117. AA Megoldó Alfréd AA 117.
Programozás alapjai 2. (inf.) pót-pótzárthelyi 2011.05.26. gyak. hiányzás: kzhpont: MEG123 IB.028/117. NZH:0 PZH:n Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
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
Programozás II. ATM példa Dr. Iványi Péter
Programozás II. ATM példa Dr. Iványi Péter 1 ATM gép ATM=Automated Teller Machine Pénzkiadó automata Kezelő szoftvert szeretnénk írni Objektum-orientált módon 2 Követelmények Egyszerre csak egy embert
Rekurzió. Horváth Gyula. horvath@inf.elte.hu
1. ábra. Rekurzió Horváth Gyula horvath@inf.elte.hu 1. Feladat: Sorbaállítások száma Hány féleképpen lehet sorbaállítani az osztály tanulóit? Bemenet: a tanulók n száma. Kimenet: ahány félekeppen az n
PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19
PHP II. WEB technológiák Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 Tartalomjegyzék Objektum Orientált Programozás 1 Objektum Orientált Programozás Öröklődés 2 Fájlkezelés
Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor
Java Programozás 4. Gy: Java GUI Tipper, MVC kalkulátor 15/1 B ITv: MAN 2018.03.10 1. Feladat: Tipper Készítsük el a tippelős programunk grafikus változatát. Az üzleti logika kódja megvan, a felület pedig
A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.
Feladat Készítsen egy egész számokat tartalmazó zsák típust! A zsákot dinamikusan lefoglalt tömb segítségével ábrázolja! Implementálja a szokásos műveleteket (elem betevése, kivétele, üres-e a halmaz,
JAVA PROGRAMOZÁS 3.ELŐADÁS
Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 3.ELŐADÁS 2014-2015 tavasz Polimorfizmus, absztrakt osztályok, interfészek 2 Példa - Hengerprogram 3 Példa - Hengerprogram 4 Példa - Hengerprogram
Körkörös listák. fej. utolsó. utolsó. fej
Körkörös listák fej utolsó fej utolsó Példa. Kiszámolós játék. Körben áll n gyermek. k-asával kiszámoljuk őket. Minden k-adik kilép a körből. Az nyer, aki utolsónak marad. #include using namespace
10. előadás Speciális többágú fák
10. előadás Adatszerkezetek és algoritmusok előadás 2018. április 17., és Debreceni Egyetem Informatikai Kar 10.1 A többágú fák kezelésére nincsenek általános elvek, implementációjuk elsősorban alkalmazásfüggő.
Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész
Java Programozás 9. Gy: Java alapok Adatkezelő 5.rész 15/1 B ITv: MAN 2018.04.22 A Keresés funkció Programlogika: 1. A keresés az etm táblamodellben fog keresni, és a találat rekordokat átmásolja egy másik
OOP: Java 8.Gy: Gyakorlás
OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét
Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?
A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály
Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t
Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
Osztályok. 4. gyakorlat
Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum
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
Java Programozás 11. Ea: MVC modell
Java Programozás 11. Ea: MVC modell 20/1 B ITv: MAN 2018.03.02 MVC Model-View-Controller A modell-nézet-vezérlő a szoftvertervezésben használatos szerkezeti minta. Az MVC célja elválasztani az üzleti logikát
Programozási technológia
Programozási technológia Generikus osztályok Gyűjtemények Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Generikus osztályok Javaban az UML paraméteres osztályainak a generikus (sablon) osztályok felelnek
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
C# osztályok. Krizsán Zoltán
C# osztályok Krizsán Zoltán Fogalma Önálló hatáskőrrel rendelkező, absztrakt adattípus, amely több, különböző elemet tartalmazhat. Minden esetben a heap-en jön létre! A programozó hozza létre, de a GC
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
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
17. A 2-3 fák és B-fák. 2-3 fák
17. A 2-3 fák és B-fák 2-3 fák Fontos jelentősége, hogy belőlük fejlődtek ki a B-fák. Def.: Minden belső csúcsnak 2 vagy 3 gyermeke van. A levelek egy szinten helyezkednek el. Az adatrekordok/kulcsok csak
Abstract osztályok és interface-ek. 7-dik gyakorlat
Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:
Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o
Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform
abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {
Adatkezelés JDBC-vel 1 abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame { private JTabbedPane jtp; private JPanel dp,
Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN
Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.
Java II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
BME MOGI Gépészeti informatika 4.
BME MOGI Gépészeti informatika 4. 1. feladat önálló feladatmegoldás Generáljon két 1 és 10 közötti véletlen egész számot, majd kiírja ezekre a számokra a tízes szorzótáblákat! Ha az első generált szám
Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010
Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 Előadás tematika 1. Pascal ismétlés, kiegészítések 2. Objektum orientált programozás (OOP) 3. Delphi környezet 4. Komponensek bemutatása
Felhasználó által definiált adattípus
Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési
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