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

Hasonló dokumentumok
Programozás II. 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

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

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

Algoritmusok és adatszerkezetek 2.

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

Adatszerkezetek I. 6. előadás

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

Táblázatok fontosabb műveletei 1

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

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Adatszerkezetek 2. Dr. Iványi Péter

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 1. 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

Egyszerű programozási tételek

Visszalépéses keresés

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

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

Egyirányban láncolt lista

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

Önszervező bináris keresőfák

Összetett programozási tételek

Láncolt listák. PPT 2007/2008 tavasz.

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

Programozási technológia

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

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

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

Generikus osztályok, gyűjtemények és algoritmusok

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

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

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

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

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

Programozási segédlet

Optimalizációs stratégiák 2.

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

A félév során előkerülő témakörök

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

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

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

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Optimalizációs stratégiák 1.

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Web-programozó Web-programozó

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Fák 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

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

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

Struktúra nélküli adatszerkezetek

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

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

Bevezetés az informatikába

Algoritmusok és adatszerkezetek gyakorlat 07

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

ELEMI PROGRAMOZÁSI TÉTELEK

Felvételi tematika INFORMATIKA

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

Gráfok. Programozás II. előadás. Szénási Sándor.

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

Interfészek. PPT 2007/2008 tavasz.

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

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

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

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

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

Kiegészítő előadás. Vizsgabemutató VBA. Dr. Kallós Gábor, Fehérvári Arnold, Pusztai Pál Krankovits Melinda. Széchenyi István Egyetem

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

Oktatási Hivatal. A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. II. (programozás) kategória

Algoritmusok bonyolultsága

8. gyakorlat Pointerek, dinamikus memóriakezelés

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Rekurzív algoritmusok

Már megismert fogalmak áttekintése

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

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

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

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

Programozási tételek. PPT 2007/2008 tavasz.

Véletlenszám generátorok és tesztelésük. Tossenberger Tamás

Amortizációs költségelemzés

A d m i n i s z t r á c i ó s f e l a d a t o k a I n t e g r á l t K ö n y v t á r i R e n d s z e r b e n

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

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

6. LISTÁK ábra. A lista absztrakt adatszerkezet (ADS)

Algoritmuselmélet 6. előadás

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Rekurzió. Dr. Iványi Péter

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

Bevezetés a programozásba. 5. Előadás: Tömbök

Adatszerkezetek 1. Dr. Iványi Péter

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

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

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Elemi algoritmusok ismerete

Interfészek. Programozás II. előadás. Szénási Sándor.

Objektumorientált Programozás VI.

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Átírás:

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 Tipikus hasító függvények További megfontolások Kulcsütközés kezelése Hasító táblázatok

Közvetlen címzés szenasi.sandor@nik.uni-obuda.hu 3 Amennyiben az elemek kulcsai a {0..m-1} tartományból valók, és m nem túl nagy, alkalmazhatjuk a közvetlen címzést Minden elemet egy m elemű A (kivételesen 0-tól indexelt) tömbben tárolunk el, és minden elem tömbbeli indexe egyenlő a kulcsával Pl. beszúrás algoritmusa eljárás Beszúrás(címsz. A, kulcs, érték) A[kulcs] érték eljárás vége Hasonlóan egyszerű a törlés és a kulcs szerinti keresés is Bejárás ebben az esetben nem, vagy nehezen értelmezhető A fenti műveletek lépésszáma: Ο(1) Közvetlen címzés általában nem valósítható meg A kulcshalmaz nagy mérete kezelhetetlen méretű tárkapacitást igényelne Pl. kulcs születési dátum: ~ 20M Az aktuálisan tárolt elemek száma a -hoz képest kicsi lenne Pl. fenti példából hány valós születési dátum, név?

szenasi.sandor@nik.uni-obuda.hu 4 Hasító táblázat A hasító táblázat hasonló elveken alapul, azonban bevezetünk még egy új függvényt, ami a kulcsokat leképezi tömb indexekre Kulcshalmaz ( ): a lehetséges kulcsok halmaza (minden kulcs egyedi) Legyen n = Indexhalmaz ( ): a lehetséges indexek halmaza Legyen m =, és legyen = {0..m-1} 0 Kulcstranszformációs-függvény: h: Egy leképezés, amely a kulcs alapján megadja az indexet Az elemeket fizikailag egy m méretű tömbben tároljuk (A). Példáinkban ezt 0..m-1 között indexelhetőnek tekintjük A tárolandó elem felépítése: THasítóElem = Struktúra(kulcs, tartalom) Kulcsokkal kapcsolatos megjegyzések El kell tárolnunk a kulcsot is, hiszen több is leképződhet ugyanoda Célszerű a kulcs egy speciális értékével ( ) jelölni, ha egy hely még szabad

Példa nevek leképezésére szenasi.sandor@nik.uni-obuda.hu 5 Aladár Cecil Dénes Ferenc h h(aladár) h(cecil) h(dénes) h(ferenc) A 0 Aladár... 1... 2 Cecil... 3 Dénes... 4... 5 Ferenc... : nevek halmaza I : egész számok halmaza (0... abc mérete - 1) h : név első karakterének helye az abc-ben - 1

Tökéletes hasító táblázat alapműveletei Tökéletes: nincs benne kulcsütközés (ez ritkán érhető el) Beszúrás eljárás Beszúrás(címsz. A, h, kulcs, érték) Keresés Törlés A[h(kulcs)].kulcs kulcs A[h(kulcs)].tart érték eljárás vége függvény Keresés(A, h, kulcs) ha A[h(kulcs)].kulcs vissza A[h(kulcs)].tart különben hiba nincs ilyen kulcs elágazás vége eljárás vége eljárás Törlés(címsz. A, h, kulcs) A[h(kulcs)].kulcs eljárás vége akkor szenasi.sandor@nik.uni-obuda.hu 6

szenasi.sandor@nik.uni-obuda.hu 7 Hasító táblázat elemzése Előnye Nagy méretű kulcshalmaz esetén is használható lehet Ha a tényleges elemszám kisebb mint a kulcshalmaz mérete, akkor is hatékony memóriafoglalás érhető el vele Hátránya Fennáll a lehetőség, hogy két (egyébként különböző) kulcs ugyanoda képződik le, tehát foglalkoznunk kell az esetleges ütközésekkel is Nehéz megtalálni a tökéletes hasítófüggvényt A választott hasítófüggvénynek mindig az adott feladatnak megfelelőnek kell lennie, általános megoldásunk nincs Azonban megadható néhány általános szabály Egyenletesen ossza szét a kulcsokat Véletlenszerűen ossza szét a hasonló kulcsokat Kevés ütközés produkáljon Egyszerűen kiszámolható legyen

Felépítése Tipikus hasító függvények További megfontolások Kulcsütközés kezelése Hasító táblázatok

szenasi.sandor@nik.uni-obuda.hu 9 Osztó módszer A választott hasító függvény: h(k) : k mod m ahol k a kulcs, ami csak pozitív egész szám lehet m tetszőleges pozitív egész szám Az m értelemszerűen az A tömb mérete is egyben Az egyenletes szétszórás az m megválasztásától függ Tipikusan nem ajánlott 2 vagy 10 hatványait választani, mivel akkor az eredmény csak az utolsó néhány helyiértéktől függ Célszerű m-nek prímszámot választani

szenasi.sandor@nik.uni-obuda.hu 10 Szorzó módszer A választott hasító függvény: h(k) : Közepe M (Y * k) ahol k a kulcs, ami csak pozitív egész szám lehet Y egy tetszőleges pozitív egész szám Közepe M (x) függvény visszaadja az x középső M darab számjegyét A paramétert itt is célszerű prímnek választani Nevezetes megoldás a négyzetközép módszer h(k) : Közepe M (k * k)

szenasi.sandor@nik.uni-obuda.hu 11 Számjegyes módszer A választott hasító függvény: h(k) : Helyiérték i (k) mod m ahol k a kulcs, ami csak pozitív egész szám lehet m tetszőleges pozitív egész szám (tömb mérete is egyben) Helyiérték i (x) visszaadja az x szám i. számjegyét Hátránya, hogy érzéketlen a számjegyek cseréjére, amely bizonyos kulcsok esetén ütközésekhez vezethet Emiatt célszerű lehet súlyozni a helyiértékeket h(k) : Súlyi * Helyiértéki(k) mod m ahol k a kulcs, ami csak pozitív egész szám lehet m tetszőleges pozitív egész szám (tömb mérete is egyben) Súly i az i. számjegyhez tartozó súlyozó tényező (pozitív egész szám) Helyiérték i (x) visszaadja az x szám i. számjegyét

Felépítése Tipikus hasító függvények További megfontolások Kulcsütközés kezelése Hasító táblázatok

szenasi.sandor@nik.uni-obuda.hu 13 Szöveges típusú kulcsok Az eddigi módszerek mind egész szám típusú kulcsot feltételeztek, ez azonban nem mindig elég (pl. kulcsként személyi igazolvány) Ha a kulcs karakter típus, valamilyen számot kell hozzárendelni (pl. ASCII, UniCode, stb.): h(k) : Karakterkód(k) ahol k a kulcs, ami egy karakter Ha nem csak egy karakter, hanem több karakterből álló szöveg, akkor pedig: h(k) : Karakterkód(k i ) ahol k a kulcs, ami egy szöveg k i a kulcs i. karaktere Előre definiált kulcsok esetén (pl. természetes nyelv szavai) gyakran ismert a karakterek eloszlása, ilyenkor súlyozással lehet finomítani

szenasi.sandor@nik.uni-obuda.hu 14 Univerzális hasítási technika Az előzőleg megismert módszerek esetén, ha a paraméter előre rögzített, akkor könnyen megállapíthatók olyan kulcsok, amelyek mind ugyanoda képződnek le (véletlenül, vagy szándékosan) Hatásos módszer, ha a hasító függvényt a kulcsoktól független módon véletlenül választjuk ki Ez általános esetben kielégítő eredményt ad, és elkerüli a legrosszabb esetet Gyakorlatban jól használatható, ha a hasító függvény paramétereit választjuk meg véletlenszerűen (pl. a súlyozási paramétereket tartalmazó függvények esetén a különböző súly értékeket)

szenasi.sandor@nik.uni-obuda.hu 15 Összetett kulcsok Összetett kulcs egy személy esetén pl. a személy neve és a születési dátuma együttesen Összetett kulcsok esetén általánosan jól használható módszer nem állapítható meg Általában célszerű az összetett kulcsot megfelelő byte-méretű darabokra vágni, majd ezeket a darabokat számként kezelve valamelyik előzőleg ismert transzformációt alkalmazni Amennyiben ismert a kulcs felépítése (vagy tapasztalati úton megállapítható) célszerű lehet súlyozni az egyes darabokat

Felépítése Tipikus hasító függvények További megfontolások Kulcsütközés kezelése Hasító táblázatok

szenasi.sandor@nik.uni-obuda.hu 17 Kulcsütközés Kulcsütközésnek tekintjük, ha a kulcstranszformációs-függvény két különböző kulcsú elemet azonos indexhalmazbeli elemre képez A kulcstranszformációs-függvényt próbáljuk úgy megvalósítani, hogy minél kevesebb kulcsütközést okozzon, de nyilvánvaló, hogy ha a kulcshalmaz nagyobb, mint az indexhalmaz, akkor az ütközés elkerülhetetlen Ez tehát nem hiba, hanem a hasító táblázat velejárója, amit kezelnünk kell h(aladár) 0 Aladár... 1 - - Aladár h(cecil) 2 Cecil... 3 Dénes... Cecil h(dénes) Dénes 4 - - 5 h(dalma) - - Dalma

szenasi.sandor@nik.uni-obuda.hu 18 Kulcsütközések kezelése Túlcsordulási területtel A hasítótáblázat addig megismert alapvető szerkezetét kiegészítjük egy további memóriaterülettel A kulcsütközés miatt az alap szerkezetbe nem férő elemeket ezen a túlcsordulási területen tároljuk Láncolt listával A hasító táblázatban nem magukat az elemeket, hanem csak egy-egy láncolt lista fejet tárolunk Ezek a láncolt listák tárolják a megadott hasító értékhez tartozó elemeket Nyílt címzéssel A hasító táblázat felépítése itt teljesen megfelel az eddigieknek A hasító függvényt azonban kiegészítjük egy további paraméterrel, ami lehetőséget ad az elemek elcsúsztatására Ennek megfelelően többszöri próbálkozással más-más helyre próbáljuk meg elhelyezni az elemet Értelemszerűen a keresést és törlést is ehhez kell igazítani Egyéb megoldások

Beszúrás hasító táblázatba (túlcsordulási területtel) szenasi.sandor@nik.uni-obuda.hu 19 A hasító tábla adatait tartalmazó tömb mellett lefoglalunk egy másik memóriaterületet (túlcsordulási terület). Műveleteit nem tárgyaljuk: TúlcsordulásiTerületBeszúr(kulcs, érték) TúlcsordulásiTerületKeres(kulcs) : Logikai TúlcsordulásiTerületTöröl(kulcs) Beszúrás művelete Ha az A tömb hasító függvény által megadott helye szabad, akkor ide helyezzük az új elemet Ha nem, akkor a túlcsordulási területre eljárás Beszúrás(címsz. A, h, kulcs, érték) i h(kulcs) ha A[i].kulcs = akkor A[i].kulcs kulcs A[i].tart érték különben TúlcsodulásiTerületBeszúr(kulcs,érték) elágazás vége eljárás vége

Keresés hasító táblázatban (túlcsordulási területtel) szenasi.sandor@nik.uni-obuda.hu 20 Keresés művelete Megnézzük, hogy az A tömbben van-e a keresett elem (a helyén ) Ha ott nincs, akkor megvizsgáljuk a túlcsordulási területet Ha egyik helyen sincs, akkor hibát jelzünk Keresés pszeudokódja függvény Keresés(A, h, kulcs) i h(kulcs) ha A[i].kulcs = kulcs akkor vissza A[i].tart különben ha TúlcsodulásiTerületKeres(kulcs) akkor elem TúlcsodulásiTerületOlvas(kulcs) vissza elem különben hiba Nincs ilyen kulcs elágazás vége elágazás vége eljárás vége

Törlés hasító táblázatból (túlcsordulási területtel) szenasi.sandor@nik.uni-obuda.hu 21 Törlés művelete Ha a keresett elem az A tömbben van, akkor töröljük Ha ott nincs, akkor ellenőrizzük a túlcsordulási terüeltet is. Ha ott van, akkor töröljük innen Ha egyik helyen sincs, akkor hibát jelzünk Törlés pszeudokódja eljárás Törlés(címsz. A, h, kulcs) i h(kulcs) ha A[i].kulcs = kulcs akkor A[i].kulcs különben ha TúlcsodulásiTerületKeres(kulcs) akkor TúlcsodulásiTerületTöröl(kulcs) elágazás vége elágazás vége eljárás vége

szenasi.sandor@nik.uni-obuda.hu 22 Láncolt altáblák Ebben az esetben az A tömb nem közvetlenül az eltárolni kívánt elemeket és kulcsokat tartalmazza, hanem csak láncolt listák fejeit Beszúrás művelete: A[h(kulcs)] kezdetű listába új elem beszúrása. Keresés művelete: A[h(kulcs)] kezdetű listában elem keresése. Törlés művelete: A[h(kulcs)] kezdetű listában elem törlése. 0 Aladár 1 2 Cecil 3 Dénes Dalma Célszerű lehet rendezni a láncolt listát hozzáférési gyakoriság szerint A szükséges műveletek a láncolt listáj témakörben tárgyaltuk

Nyílt címzés Egy előre definiált szisztematikus üres hely keresést végzünk Tehát ha egy kulcs hasító függvény által megadott helye nem szabad, akkor egy másik helyet keresünk neki (ugyanezt követjük keresés és törlés során) Ezek az úgynevezett kipróbálási stratégiák Ehhez bevezetünk egy kétparaméteres hasító függvényt, aminek első paramétere a kulcs, második pedig a próbálkozás száma: Lineáris próba: h(k, j) : (h(k) + zj) mod m Négyzetes próba: h(k, j) : (h(k) + z 1 j + z 2 j 2 ) mod m ahol k a hasítani kívánt kulcs j az aktuális próbálkozás száma h(k) egy már ismert hasító függvény m az osztó módszernél már megismert paraméter z illetve z 1,z 2 tetszőleges egész konstansok A különféle próbák különféle problémákkal járhatnak Lineáris próba: egy területen halmozódó kulcsok rontják a futásidőt Négyzetes próba: kihagyhat szabad helyeket Célszerűen bevezetünk az üres ( ) mellett egy törölt ( ) állapotot is szenasi.sandor@nik.uni-obuda.hu 23

Beszúrás hasító táblázatba (nyílt címzéssel) szenasi.sandor@nik.uni-obuda.hu 24 Beszúrás művelete Első körben j = 0 értékkel vizsgáljuk meg, hogy szabad-e a hasító függvény által adott hely (tehát üres vagy törölt) Ha nem, akkor növeljük a j paraméter értékét, hátha találunk szabad helyet Ha találtunk szabad helyet, akkor oda felvesszük az új elemet Ha nem (m próbálkozás után ezt valószínűsítjük), akkor hibát jelzünk Beszúrás pszeudokódja eljárás Beszúrás(címsz. A, h, kulcs, érték) j 0 ciklus amíg j<m A[h(kulcs,j)].kulcs A[h(kulcs,j)].kulcs j j + 1 ciklus vége ha j < m akkor A[h(kulcs,j)].kulcs kulcs A[h(kulcs,j)].tart érték különben hiba "Nincs hely" elágazás vége eljárás vége

Keresés hasító táblázatban (nyílt címzéssel) szenasi.sandor@nik.uni-obuda.hu 25 Keresés művelete a beszúráshoz hasonló utat járjuk végig, amíg megtaláljuk a keresett kulcsot megvan a keresett elem üres helyre lépünk nincs ilyen kulcs törölt elemnél megyünk tovább, hiszen utána még lehet a keresett kulcs Keresés pszeudokódja függvény Keresés(A, h, kulcs) j 0 ciklus amíg j<m A[h(kulcs,j)].kulcs A[h(kulcs,j)].kulcs kulcs j j + 1 ciklus vége ha j < m A[h(kulcs,j)].kulcs akkor vissza A[h(kulcs,j)].tart különben hiba "Nincs ilyen kulcs" elágazás vége eljárás vége

Törlés hasító táblázatból (túlcsordulási területtel) szenasi.sandor@nik.uni-obuda.hu 26 Törlés művelete Az első ciklus azonos a keresésnél látottal (hiszen elsőként meg kell találnunk a törlendő elemet egy kereséssel) Ha a keresés eredményes volt, akkor a vizsgált elemet töröljük. Ez ebben az esetben csak a törölt tulajdonság beállítását jelenti Ha nem találtuk meg, akkor hibát jelzünk Törlés pszeudokódja eljárás Törlés(címsz. A, h, kulcs) j 0 ciklus amíg j<m A[h(kulcs,j)].kulcs A[h(kulcs,j)].kulcs kulcs j j + 1 ciklus vége ha j < m A[h(kulcs,j)].kulcs akkor A[h(kulcs,j)].kulcs különben hiba "Nincs ilyen kulcs" elágazás vége eljárás vége

szenasi.sandor@nik.uni-obuda.hu 27 Többszörös hasítás Használjunk két vagy akár több hasító függvényt (h 1, h 2,, h r )! Ezek lehetnek egymástól teljesen független hasítófüggvények hasonló függvények más-más paramtérekkel, például: h j (k) : Közepe M (Y * k * j * j) ahol k a kulcs, ami csak pozitív egész szám lehet j a hasítófüggvény száma Y, k, Közepe M a már ismert paraméterek Beszúrás: Ha a h i kulcstranszformációs függvény alkalmazásával kulcsütközés lépne fel, próbáljuk a h i+1 -el, ami máshova képez (i=1-től indulva) Keresés: A beszúráshoz hasonló utat járunk végig itt is Törlés: A fenti kereséssel megtalált elemet töröljük

szenasi.sandor@nik.uni-obuda.hu 28 Irodalomjegyzék Javasolt/felhasznált irodalom Cormen, Leiserson, Rivest: Algoritmusok, Műszaki Könyvkiadó, 1997 Pap, Szlávi, Zsakó: μlógia34 Módszeres programozás: Adattípusok, ELTE TTK, 1998 Szénási: Algoritmusok, adatszerkezetek II., Óbudai Egyetem, 2014