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

Hasonló dokumentumok
Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Algoritmuselmélet 6. előadás

Algoritmusok és adatszerkezetek 2.

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.

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

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Algoritmuselmélet 2. előadás

Diszkrét matematika I.

Waldhauser Tamás december 1.

Számelméleti alapfogalmak

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

SzA XIII. gyakorlat, december. 3/5.

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek I. 6. előadás

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Nagy Gábor compalg.inf.elte.hu/ nagy

Táblázatok fontosabb műveletei 1

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

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Algoritmuselmélet 18. előadás

A számítástudomány alapjai

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

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 12.

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

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

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

Felvételi tematika INFORMATIKA

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

Nagy Gábor compalg.inf.elte.hu/ nagy

Diszkrét matematika I.

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

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

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

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

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

Önszervező bináris keresőfák

Adatbázisok elmélete

1. Részcsoportok (1) C + R + Q + Z +. (2) C R Q. (3) Q nem részcsoportja C + -nak, mert más a művelet!

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

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

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

Univerzális hasítás. Kézér Tamás Gábor

Bevezetés az algebrába az egész számok 2

Számelmélet (2017. február 8.) Bogya Norbert, Kátai-Urbán Kamilla

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Csima Judit október 24.

Algebra es sz amelm elet 3 el oad as Nevezetes sz amelm eleti probl em ak Waldhauser Tam as 2014 oszi f el ev

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

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

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

4: Az IP Prefix Lookup Probléma Bináris keresés hosszosztályok alapján. HálózatokII, 2007

2018, Diszkre t matematika. 10. elo ada s

Adatszerkezetek 1. előadás

Prímtesztelés, Nyilvános kulcsú titkosítás

illetve a n 3 illetve a 2n 5

Adatbázisok elmélete 12. előadá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

Programozás II. előadás

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

Data Security: Public key

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

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmusok és adatszerkezetek gyakorlat 07

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

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

2016, Diszkrét matematika

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

II. Két speciális Fibonacci sorozat, szinguláris elemek, természetes indexelés

Diszkrét matematika 2.

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

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

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

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

OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.

6. előadás Faktorizációs technikák közepes méretű osztókra

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

Adaptív dinamikus szegmentálás idősorok indexeléséhez

6. előadás Faktorizációs technikák közepes méretű osztókra

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Algoritmuselmélet 7. előadás

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

Nagy Gábor compalg.inf.elte.hu/ nagy

SZÁMÍTÁSOK A TÁBLÁZATBAN

Javítókulcs, Válogató Nov. 25.

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

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

Adatbázisok elmélete

Gyakori elemhalmazok kinyerése

Diszkrét matematika 2.C szakirány

Algoritmuselmélet gyakorlat (MMN111G)

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Tartalom. Algebrai és transzcendens számok

Dicsőségtabló Beadós programozási feladatok

Véletlenszám generátorok és tesztelésük HORVÁTH BÁLINT

Átírá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 9. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 1 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszerű megvalósítását teszi lehetővé. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszerű megvalósítását teszi lehetővé. Nincs rendezés = nincs MIN, MAX,... Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszerű megvalósítását teszi lehetővé. Nincs rendezés = nincs MIN, MAX,... Cél: S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti műveletek átlagos értelemben hatékonyak legyenek. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszerű megvalósítását teszi lehetővé. Nincs rendezés = nincs MIN, MAX,... Cél: S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti műveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyű személyi szám Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszerű megvalósítását teszi lehetővé. Nincs rendezés = nincs MIN, MAX,... Cél: S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti műveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyű személyi szám Lehetséges személyi számok: 4 10 2 12 31 10 3 148 millió darab. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszerű megvalósítását teszi lehetővé. Nincs rendezés = nincs MIN, MAX,... Cél: S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti műveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyű személyi szám Lehetséges személyi számok: 4 10 2 12 31 10 3 148 millió darab. Elég lefoglalni 11 millió rekordnak helyet. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszerű megvalósítását teszi lehetővé. Nincs rendezés = nincs MIN, MAX,... Cél: S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti műveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyű személyi szám Lehetséges személyi számok: 4 10 2 12 31 10 3 148 millió darab. Elég lefoglalni 11 millió rekordnak helyet. Olyan h függvény kell, ami minden személyi számhoz rendel egy egészet a [0, 12 10 6 1] intervallumból. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszerű megvalósítását teszi lehetővé. Nincs rendezés = nincs MIN, MAX,... Cél: S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti műveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyű személyi szám Lehetséges személyi számok: 4 10 2 12 31 10 3 148 millió darab. Elég lefoglalni 11 millió rekordnak helyet. Olyan h függvény kell, ami minden személyi számhoz rendel egy egészet a [0, 12 10 6 1] intervallumból. Jó lenne ha, K K esetén h(k ) h(k ) teljesülne, de ez nem lehetséges. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszerű megvalósítását teszi lehetővé. Nincs rendezés = nincs MIN, MAX,... Cél: S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti műveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyű személyi szám Lehetséges személyi számok: 4 10 2 12 31 10 3 148 millió darab. Elég lefoglalni 11 millió rekordnak helyet. Olyan h függvény kell, ami minden személyi számhoz rendel egy egészet a [0, 12 10 6 1] intervallumból. Jó lenne ha, K K esetén h(k ) h(k ) teljesülne, de ez nem lehetséges. = ütközések elkerülhetetlenek Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 2 / 20

Hashelés alapvető ötelete Veszünk egy alkalmas h hash-függvényt, elsőnek a K kulcsú elemet a h(k ) cellába próbáljuk illeszteni. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 3 / 20

Hashelés alapvető ötelete Veszünk egy alkalmas h hash-függvényt, elsőnek a K kulcsú elemet a h(k ) cellába próbáljuk illeszteni. Ha később érkezik egy K elem, amire h(k ) = h(k ), akkor ütközés van. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 3 / 20

Hashelés alapvető ötelete Veszünk egy alkalmas h hash-függvényt, elsőnek a K kulcsú elemet a h(k ) cellába próbáljuk illeszteni. Ha később érkezik egy K elem, amire h(k ) = h(k ), akkor ütközés van. Az ütközések feloldására több módszer is van, próbálunk más helyet találni K -nek. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 3 / 20

Hashelés alapvető ötelete Veszünk egy alkalmas h hash-függvényt, elsőnek a K kulcsú elemet a h(k ) cellába próbáljuk illeszteni. Ha később érkezik egy K elem, amire h(k ) = h(k ), akkor ütközés van. Az ütközések feloldására több módszer is van, próbálunk más helyet találni K -nek. Fontos kérdés a megfelelő hash függvény kiválasztása is, pl. h(k ) = konst. nyilván nem praktikus. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 3 / 20

Vödrös hashelés Főleg külső táron tárolt, nagy állományok kezelésére. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 4 / 20

Vödrös hashelés Főleg külső táron tárolt, nagy állományok kezelésére. Minden elemet, amelyre h(k ) = i beteszünk V (i)-be, ha több ilyen is van, láncolt listaként. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 4 / 20

Vödrös hashelés Főleg külső táron tárolt, nagy állományok kezelésére. Minden elemet, amelyre h(k ) = i beteszünk V (i)-be, ha több ilyen is van, láncolt listaként. V [0 : M 1] vödörkatalógus, V [i] mutató egy vödörbe, amiben az elemek listái (lapláncai) vannak. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 4 / 20

Vödrös hashelés Főleg külső táron tárolt, nagy állományok kezelésére. Minden elemet, amelyre h(k ) = i beteszünk V (i)-be, ha több ilyen is van, láncolt listaként. V [0 : M 1] vödörkatalógus, V [i] mutató egy vödörbe, amiben az elemek listái (lapláncai) vannak. A vödrök mérete általában kicsi. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 4 / 20

Vödrös hashelés Főleg külső táron tárolt, nagy állományok kezelésére. Minden elemet, amelyre h(k ) = i beteszünk V (i)-be, ha több ilyen is van, láncolt listaként. V [0 : M 1] vödörkatalógus, V [i] mutató egy vödörbe, amiben az elemek listái (lapláncai) vannak. A vödrök mérete általában kicsi. 0 K h(k ) K egy vödör lapjai M 1 V Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 4 / 20

Kulcsok a vödörben Hogyan helyezzük az új kulcsot a vödörbe? Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 5 / 20

Kulcsok a vödörben Hogyan helyezzük az új kulcsot a vödörbe? Az első szabad helyre tesszük, ha kell, új lappal bővítünk (az elején). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 5 / 20

Kulcsok a vödörben Hogyan helyezzük az új kulcsot a vödörbe? Az első szabad helyre tesszük, ha kell, új lappal bővítünk (az elején). Kulcs szerint rendezve vannak, beszúráskor a helyére tesszük. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 5 / 20

Kulcsok a vödörben Hogyan helyezzük az új kulcsot a vödörbe? Az első szabad helyre tesszük, ha kell, új lappal bővítünk (az elején). Kulcs szerint rendezve vannak, beszúráskor a helyére tesszük. Keresés a hash-táblában Kiszámítjuk h(k )-t. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 5 / 20

Kulcsok a vödörben Hogyan helyezzük az új kulcsot a vödörbe? Az első szabad helyre tesszük, ha kell, új lappal bővítünk (az elején). Kulcs szerint rendezve vannak, beszúráskor a helyére tesszük. Keresés a hash-táblában Kiszámítjuk h(k )-t. A V [h(k )] vödörben keresünk szekvenciálisan, addig megyünk, amíg megtaláljuk, vagy véget ér. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 5 / 20

Kulcsok a vödörben Hogyan helyezzük az új kulcsot a vödörbe? Az első szabad helyre tesszük, ha kell, új lappal bővítünk (az elején). Kulcs szerint rendezve vannak, beszúráskor a helyére tesszük. Keresés a hash-táblában Kiszámítjuk h(k )-t. A V [h(k )] vödörben keresünk szekvenciálisan, addig megyünk, amíg megtaláljuk, vagy véget ér. Törlés ugyanígy. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 5 / 20

Hashelés költsége Külső táras szerkezet = lapelérések száma. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 6 / 20

Hashelés költsége Külső táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/m lap kerül = átlagos lánchossz: l/m Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 6 / 20

Hashelés költsége Külső táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/m lap kerül = átlagos lánchossz: l/m = Sikeres keresés átlagos lépésszáma: 1 + l/2m Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 6 / 20

Hashelés költsége Külső táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/m lap kerül = átlagos lánchossz: l/m = Sikeres keresés átlagos lépésszáma: 1 + l/2m = Sikertelen keresés átlagos lépésszáma: 1 + l/m Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 6 / 20

Hashelés költsége Külső táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/m lap kerül = átlagos lánchossz: l/m = Sikeres keresés átlagos lépésszáma: 1 + l/2m = Sikertelen keresés átlagos lépésszáma: 1 + l/m Hogyan válasszuk meg M-et? Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 6 / 20

Hashelés költsége Külső táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/m lap kerül = átlagos lánchossz: l/m = Sikeres keresés átlagos lépésszáma: 1 + l/2m = Sikertelen keresés átlagos lépésszáma: 1 + l/m Hogyan válasszuk meg M-et? l/m legyen kb. 1, de hagyjunk rá 20%-ot. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 6 / 20

Hashelés költsége Külső táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/m lap kerül = átlagos lánchossz: l/m = Sikeres keresés átlagos lépésszáma: 1 + l/2m = Sikertelen keresés átlagos lépésszáma: 1 + l/m Hogyan válasszuk meg M-et? l/m legyen kb. 1, de hagyjunk rá 20%-ot. Példa: 1 000 000 rekordból álló állományt szeretnénk láncolásos módszerrel kezelni, egy lapon 5 rekord fér el. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 6 / 20

Hashelés költsége Külső táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/m lap kerül = átlagos lánchossz: l/m = Sikeres keresés átlagos lépésszáma: 1 + l/2m = Sikertelen keresés átlagos lépésszáma: 1 + l/m Hogyan válasszuk meg M-et? l/m legyen kb. 1, de hagyjunk rá 20%-ot. Példa: 1 000 000 rekordból álló állományt szeretnénk láncolásos módszerrel kezelni, egy lapon 5 rekord fér el. Ekkor l = 1 000 000/5 = 200 000 = M 220 000 240 000 = keresés átlagos költsége valamivel 2 lapelérés alatt marad. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 6 / 20

Hashelés nyitott címzéssel Csak belső memóriás módszerként hasznosak. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 7 / 20

Hashelés nyitott címzéssel Csak belső memóriás módszerként hasznosak. Fő ötlet: ha h(k ) már foglalt, keresünk egy üreset valamilyen módszerrel. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 7 / 20

Hashelés nyitott címzéssel Csak belső memóriás módszerként hasznosak. Fő ötlet: ha h(k ) már foglalt, keresünk egy üreset valamilyen módszerrel. Legyen 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) a 0, 1,..., M 1 számok egy permutációja. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 7 / 20

Hashelés nyitott címzéssel Csak belső memóriás módszerként hasznosak. Fő ötlet: ha h(k ) már foglalt, keresünk egy üreset valamilyen módszerrel. Legyen 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) a 0, 1,..., M 1 számok egy permutációja. = Végigpróbálgatjuk a h(k ) + h i (K ) (mod M) sorszámú cellákat (i = 0, 1,..., M 1) az első üres helyig, ahol a rekordot elhelyezzük. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 7 / 20

Hashelés nyitott címzéssel Csak belső memóriás módszerként hasznosak. Fő ötlet: ha h(k ) már foglalt, keresünk egy üreset valamilyen módszerrel. Legyen 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) a 0, 1,..., M 1 számok egy permutációja. = Végigpróbálgatjuk a h(k ) + h i (K ) (mod M) sorszámú cellákat (i = 0, 1,..., M 1) az első üres helyig, ahol a rekordot elhelyezzük. = Ha nincs üres, a tábla betelt. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 7 / 20

Hashelés nyitott címzéssel Csak belső memóriás módszerként hasznosak. Fő ötlet: ha h(k ) már foglalt, keresünk egy üreset valamilyen módszerrel. Legyen 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) a 0, 1,..., M 1 számok egy permutációja. = Végigpróbálgatjuk a h(k ) + h i (K ) (mod M) sorszámú cellákat (i = 0, 1,..., M 1) az első üres helyig, ahol a rekordot elhelyezzük. = Ha nincs üres, a tábla betelt. K 0 h(k ) h(k ) + h 1 (K ) h(k ) + h 2 (K ) h(k ) + h 3 (K ) M 1 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 7 / 20

Lineáris próbálás h i (K ) := i Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 8 / 20

Lineáris próbálás h i (K ) := i Visszafelé lépkedünk egyesével h(k )-tól indulva az első üres helyig. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 8 / 20

Lineáris próbálás h i (K ) := i Visszafelé lépkedünk egyesével h(k )-tól indulva az első üres helyig. Sikeres keresés átlagos költsége: C N = 1 2 ( 1 + 1 ) 1 α Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 8 / 20

Lineáris próbálás h i (K ) := i Visszafelé lépkedünk egyesével h(k )-tól indulva az első üres helyig. Sikeres keresés átlagos költsége: C N = 1 2 ( 1 + 1 ) 1 α Sikertelen keresés átlagos költsége: ( C N = 1 ( ) ) 1 2 1 + 2 1 α ahol α = N/M a telítettségi (betöltöttségi) tényező, N a táblában levő rekordok száma, M a tábla celláinak száma. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 8 / 20

Lineáris próbálás h i (K ) := i Visszafelé lépkedünk egyesével h(k )-tól indulva az első üres helyig. Sikeres keresés átlagos költsége: C N = 1 2 ( 1 + 1 ) 1 α Sikertelen keresés átlagos költsége: ( C N = 1 ( ) ) 1 2 1 + 2 1 α ahol α = N/M a telítettségi (betöltöttségi) tényező, N a táblában levő rekordok száma, M a tábla celláinak száma. α 2/3 0, 8 0, 9 C N 2 3 5, 5 C N 5 13 50, 5 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 8 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 3 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 3 11 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 9 3 11 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 4 9 3 11 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 10 4 9 3 11 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 10 4 9 3 11 Ha most töröljük a 9-et, akkor később nem találnánk meg a 4-et. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 10 4 9 3 11 Ha most töröljük a 9-et, akkor később nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. = Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 10 4 9 3 11 Ha most töröljük a 9-et, akkor később nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. = 0 1 2 3 4 5 6 10 4 3 11 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 10 4 9 3 11 Ha most töröljük a 9-et, akkor később nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. = 0 1 2 3 4 5 6 10 4 3 11 Lineáris próba hátránya: Ha már sok cella tele van, kialakulnak egybefüggő csomók, megnő a keresési, beillesztési út. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 10 4 9 3 11 Ha most töröljük a 9-et, akkor később nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. = 0 1 2 3 4 5 6 10 4 3 11 Lineáris próba hátránya: Ha már sok cella tele van, kialakulnak egybefüggő csomók, megnő a keresési, beillesztési út. = elsődleges csomósodás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Lineáris próbálás Példa: M = 7, h(k ) := K (mod 7), lineáris próba, beillesztendő: 3, 11, 9, 4, 10. 0 1 2 3 4 5 6 10 4 9 3 11 Ha most töröljük a 9-et, akkor később nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. = 0 1 2 3 4 5 6 10 4 3 11 Lineáris próba hátránya: Ha már sok cella tele van, kialakulnak egybefüggő csomók, megnő a keresési, beillesztési út. = elsődleges csomósodás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 9 / 20

Hashelés álvéletlen próbával A 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) próbasorozat a 0, 1,..., M 1 számoknak egy a K kulcstól független álvéletlen permutációja. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 10 / 20

Hashelés álvéletlen próbával A 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) próbasorozat a 0, 1,..., M 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie, ezért nem lehet valódi véletlent használni. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 10 / 20

Hashelés álvéletlen próbával A 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) próbasorozat a 0, 1,..., M 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie, ezért nem lehet valódi véletlent használni. Ha h(k ) = h(l), akkor a K és L kulcsok teljes próbasorozata is megegyezik. = másodlagos csomósodás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 10 / 20

Hashelés álvéletlen próbával A 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) próbasorozat a 0, 1,..., M 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie, ezért nem lehet valódi véletlent használni. Ha h(k ) = h(l), akkor a K és L kulcsok teljes próbasorozata is megegyezik. = másodlagos csomósodás Kvadratikus maradék próba Legyen M egy 4k + 3 alakú prímszám, ahol k egy egész. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 10 / 20

Hashelés álvéletlen próbával A 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) próbasorozat a 0, 1,..., M 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie, ezért nem lehet valódi véletlent használni. Ha h(k ) = h(l), akkor a K és L kulcsok teljes próbasorozata is megegyezik. = másodlagos csomósodás Kvadratikus maradék próba Legyen M egy 4k + 3 alakú prímszám, ahol k egy egész. Ekkor a próbasorozat legyen ( ) M 1 2 ( ) M 1 2 0, 1 2, (1 2 ), 2 2, (2 2 ),...,,. 2 2 Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 10 / 20

Hashelés álvéletlen próbával A 0, h 1 (K ), h 2 (K ),..., h M 1 (K ) próbasorozat a 0, 1,..., M 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie, ezért nem lehet valódi véletlent használni. Ha h(k ) = h(l), akkor a K és L kulcsok teljes próbasorozata is megegyezik. = másodlagos csomósodás Kvadratikus maradék próba Legyen M egy 4k + 3 alakú prímszám, ahol k egy egész. Ekkor a próbasorozat legyen ( ) M 1 2 ( ) M 1 2 0, 1 2, (1 2 ), 2 2, (2 2 ),...,,. 2 2 Belátjuk, hogy ez tényleg permutáció. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 10 / 20

Hashelés kvadratikus próbával Lemma Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n 2 1 (mod M). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 11 / 20

Hashelés kvadratikus próbával Lemma Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n 2 1 (mod M). Bizonyítás. Indirekt tegyük fel, hogy n egy egész szám és n 2 1 (mod M). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 11 / 20

Hashelés kvadratikus próbával Lemma Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n 2 1 (mod M). Bizonyítás. Indirekt tegyük fel, hogy n egy egész szám és n 2 1 (mod M). = 1 = ( 1) M 1 2 n 2 M 1 2 = n M 1 = n ϕ(m) 1 (mod M). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 11 / 20

Hashelés kvadratikus próbával Lemma Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n 2 1 (mod M). Bizonyítás. Indirekt tegyük fel, hogy n egy egész szám és n 2 1 (mod M). = 1 = ( 1) M 1 2 n 2 M 1 2 = n M 1 = n ϕ(m) 1 (mod M). Az utolsó lépésnél az Euler-Fermat-tételt használtuk. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 11 / 20

Hashelés kvadratikus próbával Lemma Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n 2 1 (mod M). Bizonyítás. Indirekt tegyük fel, hogy n egy egész szám és n 2 1 (mod M). = 1 = ( 1) M 1 2 n 2 M 1 2 = n M 1 = n ϕ(m) 1 (mod M). Az utolsó lépésnél az Euler-Fermat-tételt használtuk. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 11 / 20

Hashelés kvadratikus próbával Ha 0 i < j M 1 2, akkor i2 j 2 (mod M). = j 2 i 2 = (j i)(j + i) felbontás egyik tényezője sem lehet osztható M-mel, tehát a szorzatuk sem. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 12 / 20

Hashelés kvadratikus próbával Ha 0 i < j M 1 2, akkor i2 j 2 (mod M). = j 2 i 2 = (j i)(j + i) felbontás egyik tényezője sem lehet osztható M-mel, tehát a szorzatuk sem. Ugyanígy = i 2 j 2 (mod M). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 12 / 20

Hashelés kvadratikus próbával Ha 0 i < j M 1 2, akkor i2 j 2 (mod M). = j 2 i 2 = (j i)(j + i) felbontás egyik tényezője sem lehet osztható M-mel, tehát a szorzatuk sem. Ugyanígy = i 2 j 2 (mod M). A lemma miatt (ij 1 ) 2 1 (mod M), ahol j 1 a j elem inverze a (mod M) maradékosztályok csoportjában a szorzásra nézve. = i 2 j 2 (mod M) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 12 / 20

Hashelés kvadratikus próbával Sikeres keresés költsége: Sikertelen keresés költsége: C N 1 log(1 α) α 2 C N 1 α log(1 α) (1 α) Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 13 / 20

Hashelés kvadratikus próbával Sikeres keresés költsége: Sikertelen keresés költsége: C N 1 log(1 α) α 2 C N 1 α log(1 α) (1 α) Ezek az összefüggések valamivel általánosabban érvényesek az olyan módszerekre, amelyekre h i (K ) = f i (h(k )), vagyis ahol a h(k ) érték már az egész próbasorozatot meghatározza. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 13 / 20

Kettős hashelés G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 14 / 20

Kettős hashelés G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk de azt csak a próbasorozat előállításához. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 14 / 20

Kettős hashelés G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk de azt csak a próbasorozat előállításához. A h (K ) értékek relatív prímek legyenek az M táblamérethez. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 14 / 20

Kettős hashelés G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk de azt csak a próbasorozat előállításához. A h (K ) értékek relatív prímek legyenek az M táblamérethez. A K kulcs próbasorozata: h i (K ) := i h (K ). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 14 / 20

Kettős hashelés G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk de azt csak a próbasorozat előállításához. A h (K ) értékek relatív prímek legyenek az M táblamérethez. A K kulcs próbasorozata: h i (K ) := i h (K ). Ha M és h (K ) relatív prímek = 0, h (K ), 2h (K ),..., (M 1)h (K ) sorozat elemei mind különbözők modulo M. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 14 / 20

Kettős hashelés G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk de azt csak a próbasorozat előállításához. A h (K ) értékek relatív prímek legyenek az M táblamérethez. A K kulcs próbasorozata: h i (K ) := i h (K ). Ha M és h (K ) relatív prímek = 0, h (K ), 2h (K ),..., (M 1)h (K ) sorozat elemei mind különbözők modulo M. Fontos sajátossága: különböző K és K kulcsok próbasorozatai jó eséllyel akkor is különbözők lesznek, ha h(k ) = h(k ). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 14 / 20

Kettős hashelés A legjobb ismert implementációk időigénye (empirikus adatok alapján) C N 1 α log 1 (1 α) és C N 1 1 α. A kettős hashelés kiküszöböli mindkétféle csomósodást. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 15 / 20

Kettős hashelés A legjobb ismert implementációk időigénye (empirikus adatok alapján) C N 1 α log 1 (1 α) és C N 1 1 α. A kettős hashelés kiküszöböli mindkétféle csomósodást. Sikertelen keresés esetén minden érdekes α-ra gyorsabb, mint a lineáris próbálás. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 15 / 20

Kettős hashelés A legjobb ismert implementációk időigénye (empirikus adatok alapján) C N 1 α log 1 (1 α) és C N 1 1 α. A kettős hashelés kiküszöböli mindkétféle csomósodást. Sikertelen keresés esetén minden érdekes α-ra gyorsabb, mint a lineáris próbálás. Sikeres kereséskor csak az α 0, 8 tartományban lesz gyorsabb a lineáris próbálásnál. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 15 / 20

Hash-függvények Legyen könnyen (gyorsan) számítható, Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 16 / 20

Hash-függvények Legyen könnyen (gyorsan) számítható, és minél kevesebb ütközést okozzon. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 16 / 20

Hash-függvények Legyen könnyen (gyorsan) számítható, és minél kevesebb ütközést okozzon. A második követelmény elég nehezen megfogható, mert a gyakorlatban előforduló kulcshalmazok egyáltalán nem véletlenszerűek. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 16 / 20

Hash-függvények Legyen könnyen (gyorsan) számítható, és minél kevesebb ütközést okozzon. A második követelmény elég nehezen megfogható, mert a gyakorlatban előforduló kulcshalmazok egyáltalán nem véletlenszerűek. Hasznos tanácsok: h(k ) értéke lehetőleg a K kulcs minden bitjétől függjön Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 16 / 20

Hash-függvények Legyen könnyen (gyorsan) számítható, és minél kevesebb ütközést okozzon. A második követelmény elég nehezen megfogható, mert a gyakorlatban előforduló kulcshalmazok egyáltalán nem véletlenszerűek. Hasznos tanácsok: h(k ) értéke lehetőleg a K kulcs minden bitjétől függjön és a h értékkészlete a teljes [0, M 1] címtartomány legyen. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 16 / 20

Hash-függvények Legyen könnyen (gyorsan) számítható, és minél kevesebb ütközést okozzon. A második követelmény elég nehezen megfogható, mert a gyakorlatban előforduló kulcshalmazok egyáltalán nem véletlenszerűek. Hasznos tanácsok: h(k ) értéke lehetőleg a K kulcs minden bitjétől függjön és a h értékkészlete a teljes [0, M 1] címtartomány legyen. Két gyakran használt módszer hash-függvény előállítására az osztóés a szorzómódszer. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 16 / 20

Osztómódszer Legyen h(k ) := K (mod M), ahol M a tábla vagy a vödörkatalógus mérete. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 17 / 20

Osztómódszer Legyen h(k ) := K (mod M), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 17 / 20

Osztómódszer Legyen h(k ) := K (mod M), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(k ) számítása gyors és egyszerű. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 17 / 20

Osztómódszer Legyen h(k ) := K (mod M), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(k ) számítása gyors és egyszerű. A tábla mérete sem teljesen közömbös. Például ha M a 2 egy hatványa, akkor h(k ) csak a kulcs utolsó néhány bitjétől függ. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 17 / 20

Osztómódszer Legyen h(k ) := K (mod M), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(k ) számítása gyors és egyszerű. A tábla mérete sem teljesen közömbös. Például ha M a 2 egy hatványa, akkor h(k ) csak a kulcs utolsó néhány bitjétől függ. A jó M értékeket illetően van egy széles körben elfogadott recept: D. E. Knuth javaslata: M-et prímnek választjuk, úgy, hogy M nem osztja r k +a-t, ahol r a karakterkészlet elemszáma (pl. 128, vagy 256) és a, k kicsi" egészek. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 17 / 20

Osztómódszer Legyen h(k ) := K (mod M), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(k ) számítása gyors és egyszerű. A tábla mérete sem teljesen közömbös. Például ha M a 2 egy hatványa, akkor h(k ) csak a kulcs utolsó néhány bitjétől függ. A jó M értékeket illetően van egy széles körben elfogadott recept: D. E. Knuth javaslata: M-et prímnek választjuk, úgy, hogy M nem osztja r k +a-t, ahol r a karakterkészlet elemszáma (pl. 128, vagy 256) és a, k kicsi" egészek. M prím: Lényeges feltétel a kvadratikus maradék próbánál. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 17 / 20

Osztómódszer Legyen h(k ) := K (mod M), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(k ) számítása gyors és egyszerű. A tábla mérete sem teljesen közömbös. Például ha M a 2 egy hatványa, akkor h(k ) csak a kulcs utolsó néhány bitjétől függ. A jó M értékeket illetően van egy széles körben elfogadott recept: D. E. Knuth javaslata: M-et prímnek választjuk, úgy, hogy M nem osztja r k +a-t, ahol r a karakterkészlet elemszáma (pl. 128, vagy 256) és a, k kicsi" egészek. M prím: Lényeges feltétel a kvadratikus maradék próbánál. Kettős hashelésnél könnyű hozzájuk relatív prím számot találni. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 17 / 20

Szorzómódszer β egy rögzített paraméter. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 18 / 20

Szorzómódszer β egy rögzített paraméter. h(k ) := M {βk }. {x} jelöli az x valós szám törtrészét. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 18 / 20

Szorzómódszer β egy rögzített paraméter. h(k ) := M {βk }. {x} jelöli az x valós szám törtrészét. Szemléletesen: {βk } kiszámításával a K kulcsot véletlenszerűen" belőjük a [0, 1) intervallumba, majd az eredményt felskálázzuk a címtartományba. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 18 / 20

Szorzómódszer β egy rögzített paraméter. h(k ) := M {βk }. {x} jelöli az x valós szám törtrészét. Szemléletesen: {βk } kiszámításával a K kulcsot véletlenszerűen" belőjük a [0, 1) intervallumba, majd az eredményt felskálázzuk a címtartományba. Hatékonyan számítható speciális eset: M = 2 t, w = 2 32, és legyen A egy a w-hez relatív prím egész. Ekkor β = A w választás mellett h(k ) igen jól számolható. A számok bináris ábrázolásával dolgozva lényegében egy szorzást és egy eltolást kell elvégezni. A szorzómódszer jól viselkedik számtani sorozatokon. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 18 / 20

Szorzómódszer β egy rögzített paraméter. h(k ) := M {βk }. {x} jelöli az x valós szám törtrészét. Szemléletesen: {βk } kiszámításával a K kulcsot véletlenszerűen" belőjük a [0, 1) intervallumba, majd az eredményt felskálázzuk a címtartományba. Hatékonyan számítható speciális eset: M = 2 t, w = 2 32, és legyen A egy a w-hez relatív prím egész. Ekkor β = A w választás mellett h(k ) igen jól számolható. A számok bináris ábrázolásával dolgozva lényegében egy szorzást és egy eltolást kell elvégezni. A szorzómódszer jól viselkedik számtani sorozatokon. pl. termék1, termék2, termék3,... esetében. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 18 / 20

Szorzómódszer β egy rögzített paraméter. h(k ) := M {βk }. {x} jelöli az x valós szám törtrészét. Szemléletesen: {βk } kiszámításával a K kulcsot véletlenszerűen" belőjük a [0, 1) intervallumba, majd az eredményt felskálázzuk a címtartományba. Hatékonyan számítható speciális eset: M = 2 t, w = 2 32, és legyen A egy a w-hez relatív prím egész. Ekkor β = A w választás mellett h(k ) igen jól számolható. A számok bináris ábrázolásával dolgozva lényegében egy szorzást és egy eltolást kell elvégezni. A szorzómódszer jól viselkedik számtani sorozatokon. pl. termék1, termék2, termék3,... esetében. Megmutatható, hogy a h(k ), h(k + d), h(k + 2d)... sorozat közelítőleg számtani sorozat lesz, azaz h jól szétdobja" a kulcsok számtani sorozatait. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 18 / 20

Szorzómódszer β egy rögzített paraméter. h(k ) := M {βk }. {x} jelöli az x valós szám törtrészét. Szemléletesen: {βk } kiszámításával a K kulcsot véletlenszerűen" belőjük a [0, 1) intervallumba, majd az eredményt felskálázzuk a címtartományba. Hatékonyan számítható speciális eset: M = 2 t, w = 2 32, és legyen A egy a w-hez relatív prím egész. Ekkor β = A w választás mellett h(k ) igen jól számolható. A számok bináris ábrázolásával dolgozva lényegében egy szorzást és egy eltolást kell elvégezni. A szorzómódszer jól viselkedik számtani sorozatokon. pl. termék1, termék2, termék3,... esetében. Megmutatható, hogy a h(k ), h(k + d), h(k + 2d)... sorozat közelítőleg számtani sorozat lesz, azaz h jól szétdobja" a kulcsok számtani sorozatait. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 18 / 20

Szorzómódszer Tétel (T. Sós Vera, 1957) Legyen β irracionális szám, és nézzük a 0, {β}, {2β},..., {nβ} pontok által meghatározott n + 1 részintervallumot [0, 1)-ben. Ezek hosszai legfeljebb 3 különböző értéket vehetnek fel, és {(n + 1)β} a leghosszabbak egyikét fogja két részre vágni. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 19 / 20

Szorzómódszer Tétel (T. Sós Vera, 1957) Legyen β irracionális szám, és nézzük a 0, {β}, {2β},..., {nβ} pontok által meghatározott n + 1 részintervallumot [0, 1)-ben. Ezek hosszai legfeljebb 3 különböző értéket vehetnek fel, és {(n + 1)β} a leghosszabbak egyikét fogja két részre vágni. Következmény: A szorzómódszer esetén mindig elég egyenletesen lesznek szétszórva a hashértékek (ha a bemenet egy számtani sorozat). Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 19 / 20

Szorzómódszer Tétel (T. Sós Vera, 1957) Legyen β irracionális szám, és nézzük a 0, {β}, {2β},..., {nβ} pontok által meghatározott n + 1 részintervallumot [0, 1)-ben. Ezek hosszai legfeljebb 3 különböző értéket vehetnek fel, és {(n + 1)β} a leghosszabbak egyikét fogja két részre vágni. Következmény: A szorzómódszer esetén mindig elég egyenletesen lesznek szétszórva a hashértékek (ha a bemenet egy számtani sorozat). A [0, 1)-beli számok közül a legegyenletesebb eloszlást a β = φ 1 = 5 1 2 = 0.618033988... és a β = φ 2 = 1 φ 1 értékek adják. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 19 / 20

Szorzómódszer Tétel (T. Sós Vera, 1957) Legyen β irracionális szám, és nézzük a 0, {β}, {2β},..., {nβ} pontok által meghatározott n + 1 részintervallumot [0, 1)-ben. Ezek hosszai legfeljebb 3 különböző értéket vehetnek fel, és {(n + 1)β} a leghosszabbak egyikét fogja két részre vágni. Következmény: A szorzómódszer esetén mindig elég egyenletesen lesznek szétszórva a hashértékek (ha a bemenet egy számtani sorozat). A [0, 1)-beli számok közül a legegyenletesebb eloszlást a β = φ 1 = 5 1 2 = 0.618033988... és a β = φ 2 = 1 φ 1 értékek adják. = Érdemes a szorzómódszernél az A-t úgy választani, hogy A w közel legyen φ 1 -hez. = Fibonacci-hashelés Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 19 / 20

A kettős hashelés második függvénye Olyan h függvény kell, melynek értékei a [0, M 1] intervallumba esnek, és relatív prímek az M-hez. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 20 / 20

A kettős hashelés második függvénye Olyan h függvény kell, melynek értékei a [0, M 1] intervallumba esnek, és relatív prímek az M-hez. Ha M prím = h (K ) := K (mod M 1) + 1. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 20 / 20

A kettős hashelés második függvénye Olyan h függvény kell, melynek értékei a [0, M 1] intervallumba esnek, és relatív prímek az M-hez. Ha M prím = h (K ) := K (mod M 1) + 1. = h (K ) és M relatív prímek. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 20 / 20

A kettős hashelés második függvénye Olyan h függvény kell, melynek értékei a [0, M 1] intervallumba esnek, és relatív prímek az M-hez. Ha M prím = h (K ) := K (mod M 1) + 1. = h (K ) és M relatív prímek. Mivel h (K ) minden értéket felvesz 1 és M 1 között, ezért elég sok különböző próbasorozatot ad. Katona Gyula Y. (BME SZIT) Algoritmuselmélet 9. előadás 20 / 20