Speciális Listák: Sor A sor adatszerkezet olyan speciális lista, amelyet a műveletei definiálnak. 1. ACCESS HEAD 3. POP itt GET-nek nevezzük 5. INJECT.

Slides:



Advertisements
Hasonló előadás
Sor láncolt ábrázolással
Advertisements

Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
ADATBÁZISOK.
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
C++ programozási nyelv Gyakorlat hét
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Adatszerkezetek Az adatokat két fő csoportra oszthatjuk: egyszerű és összetett adatok.  Az egyszerű adatot egy érték jellemez, tovább nem bontható. (szám,
MI 2003/9 - 1 Alakfelismerés alapproblémája: adott objektumok egy halmaza, továbbá osztályok (kategóriák) egy halmaza. Feladatunk: az objektumokat - valamilyen.
Műveletek logaritmussal
Illés Tibor – Hálózati folyamok
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Algoritmusok és adatszerkezetek 2 Újvári Zsuzsanna.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
MI 2003/7 - 1 Az egyesítési algoritmus Minden kapitalista kizsákmányoló. Mr. Smith kapitalista. Mr. Smith kizsákmányoló.
3. LOGIKAI ADATSZERKEZETEK
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
ADATBÁZISOK
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
6. SZÁMELMÉLET 6.1. Oszthatóság
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Figyelmeztetés! E program használata fokozottan
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Gráfok Készítette: Dr. Ábrahám István.
Gráf szélességi bejárása
Listák, Vermek és Várakozási Sorok. Vermek Def: Egy sajátos lista amelyben minden beszúrási illetve törlési művelet csak a lista egyik végén történik.
Listák, Vermek és Várakozási Sorok
Listák, Vermek és Várakozási Sorok. Listák Pl: Kirándulók listája Bevásárló lista Alma Kenyér Krumpli Szappan Mosópor Bevásárló lista.
TÖMBÖK Asszociatív adatszerkezetek Tömbök
Struktúra nélküli adatszerkezetek
Adatszerkezetek 1. előadás
Kulcstranszformációs táblázat
Egyirányban láncolt lista
Hierarchikus lista Kétféle értelemezése van:
Rendezések és szövegkezelő függvények
Brute Force algoritmus
Adatbázis kezelés. Az adatbázis tágabb értelemben egy olyan adathalmaz, amelynek elemei – egy meghatározott tulajdonságuk alapján – összetartozónak tekinthetők.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
A Helyes Zárójelezés Struktogramja
Határozatlan integrál
Egyenesvonalú (lineáris) adatszerkezetek
Objektum orientált programozás
1 Vektorok, mátrixok.
Webprogramozó tanfolyam
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Logikai programozás. ISMÉTLÉS Fibonacci sorozat: a/ fibonacci(1,1). fibonacci(2,1). fibonacci(N,F) :- N > 1, N1 is N - 1, N2 is N - 2, fibonacci(N1, F1),
Minuet: A Scalable Distributed Multiversion B-Tree Írta: Benjamin Sowell, Wojciech Golab, Mehul A. Shah Feldolgozta: Fokin Miklós, Hodosy Gábor, Tóth Tamás.
Nagy Szilvia 7. Lineáris blokk-kódok
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
C Programozási alapok.
Horváth Bettina VZSRA6.  Célja: Az eljárás célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben.
Gazdasági informatikus - Szövegszerkesztés 1 Bekezdések formázása 3.
előadások, konzultációk
Algoritmizálás, adatmodellezés
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
1.  Szerzői:  Panagiotis Bouros (University of Hong Kong),  Shen Ge (University of Hong Kong),  Nikos Mamoulis (University of Hong Kong)  Esemény:
Gráf szélességi bejárása. A szélességi bejárás elmélete Célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő.
Algoritmusok és adatszerkezetek
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Algoritmusok és Adatszerkezetek I.
Dinamikus adatszerkezetek
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Előadás másolata:

Speciális Listák: Sor A sor adatszerkezet olyan speciális lista, amelyet a műveletei definiálnak. 1. ACCESS HEAD 3. POP itt GET-nek nevezzük 5. INJECT itt PUT-nak nevezzük FIFO adatszerkezetnek is nevezik (First In First Out) Ennek megfelelően a sorba az elemek az érkezésnek megfelelő sorrendben kerülnek, az újak mindig a sor végére kerülnek (PUT művelettel). Feldolgozni a sor első elemét szokás (ACCESS HEAD vagy GET), ami legtöbbször egyben fizikai törlést is jelent (GET) 23:06:49

Speciális Listák: Sor Sorba történő írás művelete, PUT művelet, az olvasás (fizikai törlés) művelete a GET művelet. Logikai törlés nincs Rendezés nincs értelmezve Keresés nincs értelmezve Elérés: Csak az első elemet tudjuk elérni 23:06:49

Sorok ábrázolása Szétszórt ábrázolás : egyirányban láncolt listával, két segédmutatóval (fej és vége mutató) Feldolgozás a fejmutató által hivatkozott elemet Bővítés: az utolsó mutató után a mutatók átállításával adat2 adatn NIL Fej adat1 adat4 Vége adat3 23:06:49

Sorok ábrázolása Folytonos ábrázolás: Fix kezdetű sor Vándorló sor Folytonos reprezentációk mindegyike egy vektorban tárolja a sor elemeit Fontos a sor elejének és végének jelzése Fix kezdetű sor Vándorló sor Ciklikus sor 23:06:49

Sorok ábrázolása Fix kezdetű sor A sor első eleme a vektor első tárhelyén helyezkedik el, az utolsó elem mutatója v. Üres a sor: v=0 Tele van a sor: v=n Új elem beírása: v+1-edik helyre kerül, majd v eggyel megnő. Elem törlése: Nehézkes, sok adatmozgatással jár. A sor első elemét dolgozzuk fel, a sor eleje pedig mindig ugyanott kell, hogy legyen, ezért törlés után a többi elemet rámozgatjuk az előző pozícióra. v értéke pedig eggyel csökken. 23:06:49

Sorok ábrázolása Vándorló sor A sokszori adatmozgatást küszöböli ki Elvetjük azt a megszorítást, hogy az első elem az első helyen álljon. Megengedjük, hogy az első elem helye vándoroljon. Ehhez segédmutatók, e és a szokásos v szükséges Üres a sor: e=v=0 Tele a sor: e=1, v=n Új elem bekerülése: A v mutatót követő pozícióra kerül be, ha a sor nincsen tele. Bővítéskor (PUT-nál) előfordulhat, hogy a v az utolsón áll, de az e vándorlása miatt a sor nincs tele: ilyenkor (csak ilyenkor), adatmozgatást hajtunk végre: A legelső pozícióig toljuk a sort előre. 23:06:49

Sorok ábrázolása Ciklikus sor: Az adatmozgatást eddig még nem küszöböltük ki teljesen. A ciklikus sorban az elejét és végét jelző mutató vándorlását a határokon keresztül is megengedjük. Üres a sor: e=v=0 Tele a sor: e=1 és v=n, vagy e = v+1. Új elem: szabályokat figyelembe véve, ha a sor nincs tele, akkor a v+1-edik helyre kerül, (esetleg v visszaugrik az elejére). Törlés: e mutató által mutatott elem, majd e=e+1. POP PUT (2x) 1 2 3 e v n 1 2 3 e v 23:06:49

Műveletek sorokkal Létrehozás: Bővítés: Törlés: Az üres sort hozzuk létre Bővítés: Mindig a végén, a PUT művelettel Törlés: A sor első elemére vonatkozik (GET), az első elem elérése és törlése (ACCESS HEAD + POP) Csere, Rendezés, Elérés, Keresés, Bejárás Nincs, ill. nem értelmezett Feldolgozás Definíciója szerint 23:06:49

A sor adatszerkezet használata Sorok felhasználása az informatikában Pufferek megvalósítására (termelő – feldolgozó) A hierarchikus adatszerkezeteket a bejáráskor sorokba képezzük le 23:06:49

Speciális sorok Ezek sorokból képzettek. Megőrzik a sor tulajdonságait és továbbiakkal egészülnek ki Két végű sor Olyan sor, amelynél mind a hat speciális lista művelet megengedett Ez logikailag hasonlít két db aljánál összeragasztott veremre RPUT RGET GET PUT 23:06:49

Két végű sor A két végű sornak további származtatott szerkezetei léteznek Input korlátozott kétvégű sor: A hagyományos GET és PUT művelet mellett az RGET megengedett, de az RPUT nem. Output korlátozott kétvégű sor Az előző párja Olyan kétvégű sor, amelyben a GET és a PUT műveletek mellett az RPUT megengedett az RGET nem Ezen speciális sorok reprezentációja folytonos és szétszórt is lehet, de két irányban láncolt listával a legjobb megvalósítani őket 23:06:49

Prioritásos sor Prioritásos sor Olyan sor, amelyben az adatelemek egy részéhez prioritás értéket rendelünk (1…n), majd a sorban az adatelemek prioritás értékük szerinti növekvő sorrendben helyezkednek el. Feldolgozás: Először a legmagasabb prioritású (legkisebb prioritás érték) elemeket dolgozzuk fel, ezután jöhet a következő legmagasabb szint. A prioritás értékkel nem rendelkező elemek közül csak akkor dolgozhatunk fel, ha már nincs prioritással rendelkező elem a sorban. 23:06:49

Prioritásos sor Ugyanezt az eredményt adja, ha olyan sorok együttesére gondolunk, ahol minden sorhoz tartozik egy prioritás érték. Ugyanakkor minden adatelemhez is tartozik egy-egy prioritás érték. Az adatelemek mindig a nekik megfelelő prioritási sorban tartózkodnak. A jelöletlen sor: A prioritással nem rendelkező elemek sora. 1 2 : n 23:06:49

Sztring Ez egy szekvenciális adatszerkezet. Olyan lista, amelynek elemeit egy ABC szimbólumai alkotják. Olyan sztringekkel fogunk foglalkozni, melyek elemei karakterek lesznek. A sztringeken értelmezhetők a lista alapműveletei Bármely karakter elérése Részsztring képzés Konkatenáció (összefűzés) Sztringek lényeges jellemzője a hosszuk Feldolgozásuk során fontos az üres sztring fogalma 23:06:49

Sztring adatszerkezet műveletei Létrehozás Megadjuk (felsoroljuk) a sztring összes karakterét Bővítés Elején, végén, bármely két karakter között részsztring beillesztésével, majd konkatenálásával Törlés Részsztringet lehet törölni Csere Részsztringet részsztringgel Keresés Részsztring keresése (mintaillesztéssel) 23:06:49

Sztring reprezentációja Szétszórt és folytonos is lehet Szétszórt A listafejben található, a sztringre vonatkozó hossz információ és az alábbi technikák lehetségesek Egy-egy karakter egy listaelem (rossz helykihasználás, a mutató nagyobb tárhelyet használ, mint a karakter). Változó hosszúságú listaelemekkel. Egy-egy listaelem ilyenkor több karaktert tartalmaz (részsztringek). Ekkor a listafejben a részsztringek hosszáról is szükséges információ. Nehéz nagy részsztringeket kezelni, ezért inkább folytonosan szokták ábrázolni. 23:06:49

Sztring reprezentációja Folytonos Minden sztringet azonos hosszú tárterületen tárolunk. Ha szükséges, a ki nem használt tárterületeket speciális karakterrel töltve fel. Változó hosszon, minden sztring előtt megadva annak hosszát. A lefoglalt tárhelyek közül egy szám információ lesz az első. a l m k ö r t e f 4 a l m 5 k ö r t e 2 f 23:06:49

Sztring reprezentációja Folytonos Folyamatos tárolásnál a sztringek végén speciális karaktert (végjel) alkalmazunk. Folyamatosan, hosszúságinformáció és végjelek nélkül. Kiegészítésként használunk egy nyilvántartást a sztringek kezdőcímével és hosszával. a l m k ö r t e f 4 5 2 1 10 a l m k ö r t e f 23:06:49

Mintaillesztés Sztringek felhasználása: Formális nyelvek, formális rendszerek, szövegszerkesztő programok, hypertextek. Mindegyik területen fontos a részsztring keresés, vagyis a mintaillesztés. Alapsztring: A=a1a2a3…an Minta: P=p1…pm (általában n>>m, jobb lenne: n~m) Kérdés: a rövid minta a hosszú alapsztringben megtalálható-e, ha igen hol, hányszor, és azok hol. Több tucat, (több száz) mintaillesztési algoritmus létezik. 23:06:49

Brute Force mintaillesztés Mezítlábas, hétköznapi algoritmusok. Nem nagyon hatékonyak. Összehasonlítja az alapsztring első karakterét a minta első karakterével Ha egyezést talál, mindkét sztringben tovább lép és azokat hasonlítja össze (második karaktert a második karakterrel). addig, amíg el nem érte és össze nem hasonlította a P utolsó karakterét is, vagy pedig valahol eltérést nem talál. Ha P-t végig összehasonlította és egyezést tallt, akkor P benne volt az alapsztringben. 23:06:49

Brute Force mintaillesztés ↕ P 23:06:49

Brute Force mintaillesztés Az esetek többségében azonban valahol eltérést talál. Mit tegyünk ilyenkor? Visszaugrunk a minta első karakterére Az alapsztring legutóbbi összehasonlításának kezdő karakterét követő karakterrel újrakezdjük a folyamatot. A keresés véget érhet úgy is, hogy Addig-addig kezdjük újra a keresést, amíg el nem jutunk az alapsztring végére, és ott is eltérés van. Ekkor jeleznünk kell, hogy a minta nincs benne az alapsztringben. 23:06:49

Brute Force mintaillesztés ↕ P 23:06:49

Brute Force mintaillesztés ↕ P 23:06:49

Brute Force mintaillesztés ↕ P 23:06:49

Brute Force mintaillesztés ↕ P 23:06:49

Brute Force mintaillesztés ↕ P 23:06:49

Brute Force mintaillesztés ↕ P 23:06:49

Brute Force mintaillesztés ↕ P 23:06:49

Brute Force mintaillesztés ↕ P 23:06:49

Brute Force mintaillesztés Function MEZÍTLÁBAS (A,P) nhossz(A) mhossz(P) ij0 While i<n és j<m do If A [i+1]=P[j+1] then ii+1 jj+1 Else ii-j+1 j0 End if End while If j=m then Return i-m+1 Else Return 0 End function 23:06:49

Brute Force mintaillesztés Mezítlábas algoritmus a léptetés után elfelejt minden információt az előzőleg összehasolított karakterekről Így előfordulhat, hogy újra és újra összehasonlítja az első karakterét a minta sztring minden karakterével Ha megfelelően felhasználnánk a korábbi összehasonlításokból nyert információkat, soha nem kellene újra vizsgálni az alapsztring azon karaktereit, melyek már illeszkedtek a p minta egyik karakterére 23:06:49