Algoritmusok és adatszerkezetek I. 5. előadás

Hasonló dokumentumok
Adatszerkezetek I. 6. előadás

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

Algoritmusok és adatszerkezetek I. 3. előadás

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

Táblázatok fontosabb műveletei 1

Algoritmusok és adatszerkezetek 2.

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

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 4. 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

Adatszerkezetek 2. Dr. Iványi Péter

Algoritmusok és adatszerkezetek I. 1. előadás

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Algoritmusok és adatszerkezetek I. 4. előadás

Hatékonyság 1. előadás

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek 1. előadás

10. előadás Speciális többágú fák

Algoritmuselmélet 6. előadás

Egyirányban láncolt lista

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

Programozás alapjai. 8. előadás

Adatszerkezetek 1. Dr. Iványi Péter

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

17. A 2-3 fák és B-fák. 2-3 fák

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

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

Adatszerkezetek I. 1. előadás

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Adatbáziskezelés. Indexek, normalizálás NZS 1

Web-programozó Web-programozó

Struktúra nélküli adatszerkezetek

Adatszerkezetek 7a. Dr. IványiPéter

Algoritmusok és adatszerkezetek I. 2. előadás

Algoritmizálás és adatmodellezés tanítása 6. előadás

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Algoritmizálás, adatmodellezés 1. előadás

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

Adatszerkezetek II. 10. előadás

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Önszervező bináris keresőfák

Multihalmaz, intervallumhalmaz

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

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

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Programozás II. előadás

Haladó rendezések. PPT 2007/2008 tavasz.

ELEMI PROGRAMOZÁSI TÉTELEK

Kulcs transzformációs táblázat

19. Hasításos technikák (hash-elés)

Láncolt listák Témakörök. Lista alapfogalmak

Algoritmusok és adatszerkezetek I. 2. előadás

Tuesday, March 6, 12. Hasító táblázatok

Algoritmizálás és adatmodellezés tanítása 2. előadás

Algoritmusok és adatszerkezetek gyakorlat 07

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Algoritmizálás, adatmodellezés tanítása 1. előadás

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Algoritmuselmélet 2. előadás

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon

Adatszerkezetek II. 1. előadás

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Rendezések. Összehasonlító rendezések

Visszalépéses kiválogatás

Adatszerkezetek 2. Dr. Iványi Péter

Programozási segédlet

Algoritmizálás és adatmodellezés 2. előadás

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Hierarchikus adatszerkezetek

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Térinformatikai algoritmusok Elemi algoritmusok

Informatika szigorlat 9-es tétel: Az adatbázis-kezelő rendszerek fogalmai

Algoritmizálás és adatmodellezés tanítása 1. előadás

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Halmaz típus Értékhalmaz:

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Adatszerkezetek I. 9. előadás

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

HÁZI FELADAT PROGRAMOZÁS I. évf. Fizikus BSc. 2009/2010. I. félév

Egyszerű programozási tételek

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

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

14. Mediánok és rendezett minták

Térinformatikai algoritmusok Elemi algoritmusok

Programozás alapjai II. (7. ea) C++

Kombinatorikai algoritmusok. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

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

Átírá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á: Üres: Táblázat Beilleszt(Táblázat,Elem): Táblázat {NemDef} Töröl(Táblázat,Kulcs): Táblázat {NemDef} Keres(Táblázat,Kulcs,Logikai,Elem): Elem Ez tulajdonképpen sorozatnak is felfogható lenne, ha nem sorszámmal, hanem kulccsal indexelnénk de nincs sorrend, nincs következőre lépési lehetőség. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 2/37

Táblázat A műveletek specifikációja: Üres(T): ef:, uf: T={} Beilleszt(T,e): ef: T=S és e S, uf: T=S {e} Töröl(T,k): ef: T=S és e S és e.kulcs=k, uf: T=S-{e} Keres(T,k,van,e): ef: T=S, uf: van=( e S és e.kulcs=k) és T=S és van e S és e.kulcs=k Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 3/37

Táblázat Kitérő: Keresési idők különböző módszerekre Módszer Sorozatféle Speciális Hasonlítás-szám T L F s F d feltétel sikeres sikertelen Lineáris keresés I I I I N/2 N Lineáris kiválasztás I I I I a keresett N/2 Lineáris keresés I I I I gyakoriság szerint rendezve (N+2)/3 N Logaritmikus keresés I N N I rendezettség [log 2 (N)]-1 [log 2 (N)]+1 Fibonacci keresés I N N I rendezettség <[log 2 (N)]-1 >[log 2 (N)]+1 Interpolációs keresés I N N I rendezettség log 2 (log 2 (N)) log 2 (N) T=Tömb; L=Lista; F s =Szekvenciális file; F d =Direkt file Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 4/37

Táblázat Kérdés: Lehet olyan keresés, amelynek az ideje konstans? Válasz: Igen, ha tudjuk, hogy hol van a keresett elem! A probléma: honnan tudhatnánk? Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 5/37

A megvalósítás ötlete: Táblázat vegyünk egy tömböt a táblázat elemei tárolásához, a tömb elemei rekordok, amelynek egyik mezője a rekordot egyértelműen azonosító kulcs (de lehetne kulcsot kiszámító függvény is); kell egy ún. kulcstranszformációs függvény, ami a lehetséges kulcsértékeket leképezi a tömb indextartományára; ennek a függvénynek egyértelműnek kellene lennie (azaz különböző kulcsokhoz különböző indexet rendeljen)! Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 6/37

Táblázat Születésnap-paradoxon: ha 23 ember összegyűlik ünnepelni, akkor ~0,5073 annak az esélye, hogy lesz közöttük legalább kettő, aki azonos napon született. (Pl. az 1999-es informatika tanári évfolyam-létszámmal, a 103-mal: ~0,999 999 884,, azaz kémikusul mondva 6 kilences pontossággal biztos esemény!) Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 7/37

Táblázat Kulcstranszformációs (index-/hash-/hasító/tördelő) függvény: h: K I ahol K = kulcshalmaz (ahova képez a kulcsfüggvény, ami az egyes elemekhez hozzárendeli azt az információt - a kulcsot -, amely alapján kikereshető a táblázatból). I = indexhalmaz (amellyel a reprezentációbeli tömböt indexelni fogjuk). Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 8/37

Táblázat Az elvárások gyengítése a kulcstranszformációs függvénnyel szemben: legyen K a lehetséges kulcsok halmaza, értékkészlete a teljes I={0..M 1} halmaz, véletlenszerűen szórja szét (még a közel azonos) kulcsokat is (egyenletesség), kevés ütközést produkáljon, egyszerűen kiszámolható legyen! Lemondunk az egyértelműség mindenáron teljesítéséről. A nem egyértelműség következménye: a kulcsütközés! Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 9/37

Táblázat Kulcstranszformációs függvény variációk: a) Osztó módszer h(k):=k Mod M {h(k):=k Div M???} b) Szorzó módszer h(k):=közepe m (A*k) (a középső m számjegy) c) Számjegyes módszer h k n 1 i 0 Súly i Helyiérték i k mod M d) Jel-kód módszerek h hossz( k ) k Karakterkód k, i i 1 Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 10/37

Táblázat A kulcsütközés megoldási módszerei: Túlcsordulási terület módszere Láncolt altáblák módszere Lineárisan szétszórt altáblák vagy nyílt címzés módszer Másodlagos kulccsal, más néven kettős hash-eléssel Hierarchikus módszer Blokkolt altáblák, láncolt blokkokkal Ezekből az első hármat fogjuk vizsgálni! Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 11/37

Táblázat A táblázat típus megvalósítási lehetőségei: Táblázattípus=Tömb(0..Méret-1: TElem) Elemtípus=Rekord(kulcs: Kulcstípus, egyéb:???) Függvény Kulcs: Elemtípus Kulcstípus Függvény Hash: Kulcstípus 0..Méret-1 Megjegyzés: a TElem típus megvalósítás-függő, de biztosan van benne Elemtípus típusú rész. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 12/37

Táblázat típus: túlcsordulási terület módszere Konstans TúlcsMéret, Méret: Egész Típus TJellemző=(üres,foglalt,törölt) TElem=Rekord(elem: Elemtípus, attr:tjellemző) TTábla=Tömb(0..Méret-1:TElem) TTulcsTer=Tömb(0..TúlcsMéret-1:Elemtípus) Változó ft: TTábla, tt: TTulcsTer [ fő -, túlcsordulási tábla] db: Egész hiba: Logikai Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 13/37

Táblázat típus: túlcsordulási terület módszere Üres(t): Ciklus kk=0-tól Méret-1-ig t.ft(kk).attr:=üres Ciklus vége Eljárás vége. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 14/37

Táblázat típus: túlcsordulási terület módszere A beillesztés elve: Ha a kiszámolt hely üres, betehető oda. Ha foglalt és nem ő van ott, akkor a túlcsordulási területre teendő: Ha a túlcsordulási területen nincs még, akkor a végére tehető. Ha már ott van, akkor az hiba! Ha foglalt és ő van ott, az hiba! Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 15/37

Táblázat típus: túlcsordulási terület módszere Beilleszt(t,e): kk:=hash(e.kulcs) Ha t.ft(kk).attr {üres,törölt} akkor t.ft(kk):=(e,foglalt) * különben ha t.ft(kk).elem.kulcs e.kulcs akkor Keresés(t.tt,e.kulcs,van,melyik) Ha van vagy t.db=tulcsméret-1 akkor t.hiba:=igaz különben t.tt(t.db):=e; t.db:=t.db+1 különben t.hiba:=igaz Eljárás vége. *: ellenőrizni lehetne, hogy a túlcsordulási területen van-e. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 16/37

A törlés elve: Táblázat típus: túlcsordulási terület módszere Ha a kiszámolt hely üres, akkor a főtáblában és a túlcsordulási területen sem lehet, a törlés hibás. Ha foglalt és ő van ott, akkor törölhető. Ha törölt vagy nem ő van ott, akkor jön a túlcsordulási terület: Ha ott van, törölhető (az utolsó a helyére tehető). Ha nincs ott, akkor az hiba! Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 17/37

Táblázat típus: túlcsordulási terület módszere Töröl(t,k): kk:=hash(k) Ha t.ft(kk).attr üres akkor Ha t.ft(kk).attr=foglalt és t.ft(kk).elem.kulcs=k akkor t.ft(kk).attr:=törölt különben Keresés(t.tt,k,van,melyik) Ha van akkor t.db:=t.db-1 t.tt(melyik):=t.tt(t.db) különben t.hiba:=igaz különben t.hiba:=igaz Eljárás vége. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 18/37

A keresés elve: Táblázat típus: túlcsordulási terület módszere Ha a kiszámolt hely üres, akkor a főtáblában és a túlcsordulási területen sem lehet, nem találtuk meg. Ha foglalt és ő van ott, akkor megtaláltuk. Ha törölt vagy nem ő van ott, akkor jön a túlcsordulási terület: Ha ott van, akkor megtaláltuk. Ha nincs ott, akkor nem találtuk meg. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 19/37

Táblázat típus: túlcsordulási terület módszere Keres(t,k,van,e): kk:=hash(k) Ha t.ft(kk).attr=üres akkor van:=hamis különben ha t.ft(kk).attr=foglalt és t.ft(kk).elem.kulcs=k akkor van:=igaz; e:=t.ft(kk).elem különben Keresés(t.tt,k,van,melyik) Ha van akkor e:=t.tt(melyik) Eljárás vége. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 20/37

Táblázat típus: láncolt altáblák módszere Konstans Méret: Egész Típus TTábla=Tömb(0..Méret-1: Lista(Elemtípus)) Változó tab: TTábla hiba: Logikai Üres(t): Ciklus i=0-tól Méret-1-ig Üres(t.tab(i)) Ciklus vége Eljárás vége. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 21/37

A keresés elve: Táblázat típus: láncolt altáblák módszere Ha a kiszámolt hely üres, akkor a táblában nem lehet, nem találtuk meg. Ha nem üres, akkor megkeressük a listában. Ha ott van, akkor megtaláltuk. Ha nincs ott, akkor nem találtuk meg. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 22/37

Táblázat típus: láncolt altáblák módszere Keres(t,k,van,e): kk:=hash(k); van:=hamis Ha nem üres?(t.tab(kk)) akkor Elsőre(t.tab(kk)) Ciklus amíg nem utolsó?(t.tab(kk)) és Érték(t.tab(kk)).kulcs k Következőre(t.tab(kk)) Ciklus vége Ha Érték(t.tab(kk)).kulcs=k akkor van:=igaz; e:=érték(t.tab(kk)) Eljárás vége. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 23/37

A beillesztés elve: Táblázat típus: láncolt altáblák módszere Ha a kiszámolt hely egy lista, amibe az elemet be kell szúrni! Beilleszt(t,e): kk:=hash(e.kulcs) BeszúrElejére(t.tab(kk),e) Eljárás vége. Megjegyzés: ellenőrizni lehetne, hogy az új elem szerepel-e már az adott listában, mert akkor nem szúrjuk be még egyszer. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 24/37

A törlés elve: Táblázat típus: láncolt altáblák módszere Ha a kiszámolt hely üres, akkor a táblában nem lehet, a törlés hibás. Ha nem üres, akkor meg kell keresni az adott listában Ha ott van, törölhető. Ha nincs ott, akkor az hiba! Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 25/37

Táblázat típus: láncolt altáblák módszere Töröl(t,k): kk:=hash(k) Ha üres?(t.tab(kk)) akkor t.hiba:=igaz különben Elsőre(t.tab(kk)) Ciklus amíg nem utolsó?(t.tab(kk)) és Érték(t.tab(kk)).kulcs k Következőre(t.tab(kk)) Ciklus vége Ha Érték(t.tab(kk)).kulcs=k akkor Kihagy(t.tab(kk)) különben t.hiba:=igaz Eljárás vége. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 26/37

Táblázat típus: lineárisan szétszórt altáblák módszere Konstans Méret: Egész Típus TJellemző=(üres,foglalt,törölt) TElem=Rekord(elem: Elemtípus, attr:tjellemző) TTábla=Tömb(0..Méret-1:TElem) Változó tab: TTábla hiba: Logikai Megjegyzés: feltesszük, hogy van üres elem a táblázatban. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 27/37

A keresés elve: Táblázat típus: lineárisan szétszórt altáblák módszere Ha a kiszámolt hely üres, akkor a táblában nem lehet, nem találtuk meg. Ha foglalt és ő van ott, akkor megtaláltuk. Ha törölt vagy nem ő van ott, akkor keresünk mögötte lineárisan az első üres helyig: Ha ott van, akkor megtaláltuk. Ha nincs ott, akkor nem találtuk meg. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 28/37

Táblázat típus: lineárisan szétszórt altáblák módszere Keres(t,k,van,e): kk:=hash(k) Ha t.tab(kk).attr=üres akkor van:=hamis különben Ciklus amíg t.tab(kk).attr üres és t.tab(kk).elem.kulcs k kk:=(kk+1) mod Méret Ciklus vége Ha t.tab(kk).elem.kulcs=k akkor van:=igaz; e:=t.tab(kk).elem különben van:=hamis Eljárás vége. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 29/37

A beillesztés elve: Táblázat típus: lineárisan szétszórt altáblák módszere Ha a kiszámolt hely üres vagy törölt, akkor betehető oda. Ha foglalt és nem ő van ott, akkor lineárisan keresünk helyet (üreset vagy töröltet). Megjegyzés: ellenőrizhetnénk, hogy benne volt-e a táblázatban. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 30/37

Táblázat típus: lineárisan szétszórt altáblák módszere Beilleszt(t,e): kk:=hash(e.kulcs) Ha t.tab(kk).attr {üres,törölt} akkor t.tab(kk):=(e,foglalt) különben kk:=(kk+1) mod Méret Ciklus amíg t.tab(kk).attr=foglalt kk:=(kk+1) mod Méret Ciklus vége t.tab(kk):=(e,foglalt) Eljárás vége. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 31/37

A törlés elve: Táblázat típus: lineárisan szétszórt altáblák módszere Ha a kiszámolt hely üres, akkor a táblában nem lehet, a törlés hibás. Ha foglalt és ő van ott, akkor törölhető. Ha törölt vagy nem ő van ott, akkor lineárisan megkeressük: Ha ott van, törölhető. Ha nincs ott, akkor az hiba! Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 32/37

Táblázat típus: lineárisan szétszórt altáblák módszere Töröl(t,k): kk:=hash(k) Ha t.tab(kk).attr üres akkor Ha Ciklus amíg t.tab(kk).attr üres és t.tab(kk).elem.kulcs k kk:=(kk+1) mod Méret Ciklus vége Ha t.tab(kk).elem.kulcs=k akkor t.tab(kk).attr:=törölt különben t.hiba:=igaz különben t.hiba:=igaz Eljárás vége. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 33/37

Probléma: Táblázat típus kiterjesztése A törölt elemek elszaporodása lassítja a műveleteket. A túlcsordulási terület módszerénél csak a fő táblában keletkezhetnek törölt elemek. A lineárisan szétszórt altáblák módszerénél bárhol keletkezhetnek. Megoldás: a táblázat időnkénti újraszervezése a tömb (tömbök) tetszőleges sorrendű bejárásával a megtalált elemeket beillesztjük egy új táblázatba. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 34/37

Táblázat típus kiterjesztése További problémák: Lehetne-e a táblázat elemeit sorban is bejárni? A hash függvény mindenképpen szétszórja az elemeket, azaz ehhez valami más ábrázolás kellene (pl. bináris fa kitaposott úttal). Lehet-e a táblázat halmaz helyett multihalmaz? Ilyenkor a keresés az elsőt találná az azonos kulcsú elemek közül meg és innen sorban kellene bejárni a többi vele azonos kulcsút. Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 35/37

Táblázat típus kiterjesztése További problémák: Használható-e a táblázattípus rendezésre? Ha a kulcstranszformációs függvény monoton, akkor a láncolt altáblák módszerénél csak az egyes láncok sorba rendezésére van szükség. Ha a kulcstranszformációs függvény monoton, akkor a lineárisan szétszór altáblák módszerénél olyan rendezésre van szükség, ami kihasználja, hogy az egyes elemek a végleges helyükhöz nagyon közel vannak. Rendezésnél persze ki kell hagyni az üres és a törölt elemeket! Szlávi Péter, Zsakó László: Adatszerkezetek I. 2016.03.11. 8:05 36/37

Algoritmusok és adatszerkezetek I. 5. előadás vége