1 Hash-elés. 2 Mi a hash-elés? Gyorsan teszi lehetővé a keresést, törlést, beszúrást, módosítást Nem szükséges az elemek rendezettsége Nincsenek rendezéshez.

Slides:



Advertisements
Hasonló előadás
Koordináták, függvények
Advertisements

Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
Elemi algoritmusok Páll Boglárka.
Természetes számok 0, 1, 2, 3, ..., 24, 25, ..., 1231, 1232, ..., n, ...  = {0, 1, 2, 3, ..., n,...} a természetes számok halmaza Műveletek: összeadás.
Adatelemzés számítógéppel
Logaritmikus keresés Feladat: Adott egy 11 elemű, növekvően rendezett tömb számokkal feltöltve. Keressük meg a 17-es értéket! Ha van benne, hányadik eleme.
Programozási tételek, és „négyzetes” rendezések
A normalizálás az adatbázis-tervezés egyik módszere
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Adatbázis (alapfogalmak).
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.
MI 2003/ A következőkben más megközelítés: nem közvetlenül az eloszlásokból indulunk ki, hanem a diszkriminancia függvényeket keressük. Legegyszerűbb:
Műveletek logaritmussal
Prímtesztelés Témavezető: Kátai Imre Komputeralgebra Tanszék Nagy Gábor:
Euklidészi gyűrűk Definíció.
Egy f  R[x] polinom cS -beli helyettesítési értéke
Nyílt címzéses Hashelés Nyílt címzéssel, h(k)=k mod(11) hash-függvénnyel hash-eljük a következő sorozatot: 18,28,36,17,62,48,50 Rajzoljuk le a keletkezett.
Algebrai struktúrák 1.
Táblázat kezelő programok
Gyűrűk Definíció. Az (R, +, ·) algebrai struktúra gyűrű, ha + és · R-en binér műveletek, valamint I. (R, +) Abel-csoport, II. (R, ·) félcsoport, és III.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Adatbázis-kezelés.
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Algebra a matematika egy ága
Mutatók, tömbök, függvények
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
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ő:
AVL fák.
A digitális számítás elmélete
A digitális számítás elmélete
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
1.3 Relációk Def. (rendezett pár) (a1 , a2 ) := {{a1} , {a1 , a2 }} .
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,...,
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ő:
Microsoft Excel Függvények VI..
Excel Hivatkozások, függvények használata
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,
Az RSA algoritmus Fóti Marcell.
Adatszerkezetek 1. előadás
Lineáris programozás Elemi példa Alapfogalmak Általános vizsg.
Hernyák Zoltán Programozási Nyelvek II.
13. A zillmerezés, mint bruttó
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.
Vektorterek Definíció. Legyen V Abel-csoport, F test, továbbá
Nevezetes algoritmusok
Adatbázisok tervezése, megvalósítása és menedzselése
Dodekaéder Hamilton köre
Gráfok ábrázolása teljesen láncoltan
Valószínűségszámítás II.
Heltai Éva Eszter QG2CBR 1. előadásból.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
előadások, konzultációk
Bucket sort avagy lineáris idejű rendezés. Pszeudo kód n hosszú L listára for i = 1..n If B[L[i]] != üres Akkor [L[i] Beszúrásos rendezéssel B[L[i]]-be.
Programozási alapismeretek 11. előadás
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
Copyright, 1999 © Szlávi Péter Táblázat típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
Mediánok és rendezett minták
Algoritmusok és Adatszerkezetek I.
Adatbázis-kezelés 2. Relációs adatbázisok.
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Cache példák 2019 (IMSC).
Előadás másolata:

1 Hash-elés

2 Mi a hash-elés? Gyorsan teszi lehetővé a keresést, törlést, beszúrást, módosítást Nem szükséges az elemek rendezettsége Nincsenek rendezéshez kapcsolódó elérési igények Cél: egy kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti műveletek hatékonyak legyenek. Olyan helyeken használatos, ahol az átlagosan jó teljesítmény az igazán fontos, nem jelent gondot a ritkán előforduló hosszabb válaszidő

3 Példa Tegyük fel, hogy embereket szeretnénk sorrendbe rendezni. Azonosíthatók személyi számmal, amiből 1 jegy redundáns, illetve figyelembe véve a korlátozásokat: 2*10 2 *12*31*10 3 ≈74 millió, de nekünk csak 10 millió kulcsra van szükségünk. Legyünk optimisták: 11 millió rekord számára foglaljunk helyet Ekkor keressünk olyan h függvényt, ami a I = [0, 11* ] intervallumban lévő egészek az érték készlete, értelmezési tartománya pedig a kulcsok halmaza, azaz a személyi számok Jó volna, ha K≠K', ez azonban lehetetlen, mert a kulcsok halmaza jóval nagyobb, mint a logikai címek halmaza

4 Alapvető kérdések Kulcsütközés Először a K kulcsú elemet a h(K) címre tesszük Majd következik egy K' kulcsú elem, mely a h(K') címre kerülne, de h(K)=h(K'), vagyis kulcsütközés keletkezik Ezt az ütközést fel kell oldanunk. Megfelelő hash függvény találása Legyen könnyen kiszámítható Adott kulcshalmazon minél kevesebb ütközést okozzon

5 Vödrös hash-elés vagy láncolás (1) Van egy V[0;M-1] vödörkatalógusunk, amely egy h értékkészletének elemivel indexelt tömb, V elemei pedig mutatók V[i] vödörbe kerülnek azok az elemek, amelyre h(K)=i teljesül Tehát tegyük fel, hogy a K kulcsú rekordot szeretnénk beilleszteni. Ekkor kiszámítjuk a h(K)-t, majd a V[h(K)] bejegyzését tekintjük. Ez egy mutató arra a vödörre, melyben a h(K) kulcsú elemeket szeretnénk tárolni. Ebben elhelyezzük az elemet.

6 Vödrös hash-elés vagy láncolás (2) 0 M-1 Kh(K)

7 Vödrös hash-elés vagy láncolás (3) Vödörben való elhelyezés több módon is történhet Gyakori az első szabad helyre tevés Másik szokásos eljárás a kulcs szerint rendezés a vödörben A keresés ezek után egyértelmű K kulcsú elemet ezek után úgy keressük, hogy először kiszámítjuk a h(K)-t majd a V[h(k)]-hoz tartozó vödröt, ezek után a vödör lapjain lépkedve megkeressük az elemet. Ezek után a törlés és módosítás triviális Megj: ha a módosítás a kulcsot is érinti, akkor törlés és újboli beillesztés szükséges lehet.

8 Vödrös hash-elés vagy láncolás (4) A módszer költsége: Az időigényt a lapláncok hossza határozza meg Tegyük fel, hogy M vödör l lapnyi rekordot tárolunk Ekkor egy vödörbe kb. l/m lapnyi rekord kerül (Átlagos lánchossz) Átlagos keresés: 1+l/M, ha V[h(k)] beolvasása egy lapelérés és átlagosan szóródtak el a lapok. A módszer alkalmazása előtt fontos meghatározni M-et. Úgy kell meghatároznunk, hogy l/M közel legyen 1-hez. (l általáben ismert.) Pl rekord esetén, tegyük fel, hogy egy lapok 5 rekord fér el. Ekkor l= /5= vagyis M-t ezer körülinek érdemes választani.

9 Nyitott címzés (1) A rekordokat egy T[0;M-1] tömbben tároljuk, h értékkészlete [0;M-1] K kulcsú rekord helye T[h(k)], ha nem foglalt Ha foglalt új helyet keresünk a rekordnak A nyitott címzésű elemek a 0 … M-1 elemek egy h 1 (K)… h M-1 (K) permutációját használják, vagyis végigpróbáljuk a h(K)+h i (K) (mod M) elemeket az első üres helyig, ahol az elemet elhelyezzük

10 Nyitott címzés (2) h(K)h 1 (K)h 2 (K)M-10 K K

11 Nyitott címzés (3) Hatékonyságelemzéshez használt jelölések: – N : táblában lévő rekordok száma – M : tábla celláinak száma – α=N/M : telitettségi tényező – C N : Sikeres keresések során az átlagos cellavizsgálatok – C' N : Sikertelen keresések során az átlagos cellavizsgálatok

12 Nyitott címzés (4) Lineáris próbálás: – h i (k) = -i – Addig lépkedünk balra, amíg üres cellát nem találunk – C N =1/2*(1+1/(1-α)) – C' N =1/2*(1+(1/(1-α)) 2 )

13 Nyitott címzés (5) – 80%os telítettség esetén is már nagy a sikertelen keresések száma

14 Nyitott címzés (6) – Kereséshez szükséges bevezetni egy TÖRÖLT elemet, ami egy elemnek tekintendő keresés esetén – Magyarázat: Tegyük fel hogy egy 7 elemű tömbbe beszúrjuk a 11, 3, 9 elemeket, ezzel lefoglalva a T[4] T[3] T[2] cellákat. Ezek után beszúrjuk a 4-t a T[1]-be, mivel a T[4] T[3] T[2] cellák foglaltak. Ha ezek után töröljük a T[4]-ből a 11-t, úgy hogy oda NULL-t írunk, akkor a keresésnél azt hihetjük, hogy T[4]-ben még nem szerepelt semmi, ezért azt hihetjük hogy 4 még nem volt.

15 Nyitott címzés (7) – Lineáris próbálás hátrány a csomósodás, ezzel növelve a keresési és beillesztési időt (Elsődleges csomósodás) Álvéletlen próbálás – Cél: elkerülni az elsődleges csomósodást minél kisebb műveletigénnyel (h(K) legyen egyszerűen kiszámítható) – Ha h(K)=h(L), akkor K és L teljes próbasorozata megegyezik. Sok ilyen elem esetén a próbasorozatok mentén alakul ki a csomósodás (Másodlagos csomósodás)

16 Nyitott címzés (8) – Példa: kvadrikus maradék Legyen M= 4k+3, ahol k prím. Ekkor a próbasorozat legyen: 0, 1 2, -(1) 2, … ((M-1)/2) 2, -((M-1)/2) 2

17 Nyitott címzés (9) – Keresés költsége: C N ≈1-log(1-α)-α/2 C' N ≈1/(1-α)-α-log(1-α) Kettős hash-elés – h mellett egy h'-t is használunk – h'(K) értékek relatív prímek M értékéhez – K próbasorozata ekkor: h i (k)=-i*h'(K) 0, -1*h'(K), … -(M-1)h'(K) mind különböző (mod M) – Sajátosság: h(K)=h(K')-re nagy eséllyel különböző a póbasorozat

18 Nyitott címzés (10) – C N ≈1/α*log(1/(1-α)) – C' N ≈1/(1-α) – Mindkét -féle csomósodást kiküszöböl

19 Hash-függvények Két követelmény: – Gyorsan számolható – Minél kevesebb ütközést okozzon Két módszer: – Osztómódszer – Szorzómódszer

20 Osztómódszer Legyen h(K)=K (mod M) Gyorsaság: egy maradékos osztás gyors Nem közömbös M a használatakor – lényeges feltétel, hogy prím legyen a kvadratikus maradékpróbánál – Ha M 2 hatvány, akkor h(K) csak a K utolsó pár bitjétől függ

21 Szorzómódszer (1) Szükséges a rögzített β (є R) paraméter h(K)=└ M* {β * K } ┘ – {β * K} a β * K tört része, így {β * K} є [0,1), majd felskálázzuk M címtartományába Speciális eset: – M=2 t ; w pedig a szókapacitás, A relatív prím w-hez és egész, ekkor legyen β=A/w.

22 Szorzómódszer (2) Jól használható számtani sorozatokon, amik adódhatnak pl számozott termékek vagy dokumentumokból. – Ekkor a h(K), h(K+d)... sorozat közelítőleg számtani sorozat lesz.

23 Kettős hash-elés h' függvényre van szükség, ami értékei a [0,M-1] intervallumba esnek és relatív prímek M-hez Ha M prím akkor h'(K)= K (mod M-1)+1 jó Mivel K (mod M-1) 0 és M-2 közé esik ezért jó, mert így a h' 1 és M-1 közé esik Ebből következik, hogy h'(K) és M relatív prímek, és sok különböző sorozatot ad.