H A S H E L É S M Ű V E L E T E I N Y Í L T C Í M Z É S S E L S L I D E 01 HASHELÉS MŰVELETEI NYÍLT CÍMZÉSSEL Készítette Juhász Zoltán Gyakorlatvezető.

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

Sor láncolt ábrázolással
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Kvantitatív Módszerek
Vállalat kínálati magatartása
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
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.
Táblázat kezelő programok
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Algoritmus és adatszerkezet Tavaszi félév Tóth Norbert1.
Algoritmusok és adatszerkezetek 2 Újvári Zsuzsanna.
Készítette Schlezák Márton
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.
Bevezetés a Java programozásba
Függvények, mutatók Csernoch Mária.
Elpusztult és Pusztuló Falvakért Egyesület A helyi önkormányzatok a következő elpusztult települések emlékére állítottak tanújeleket az Egyesület részvételével.
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Számítógépes képelemzés 2007/08 I. félév Előadó:Dr. Gácsi Zoltán Gyakorlatvezető:Póliska Csaba Koncz-Horváth Dániel.
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ő:
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,...,
Leszámoló rendezés Készítette: Várkonyi Tibor Zoltán VATNABI.ELTE
16. Verem műveletei Kaszab Gábor.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Edényrendezés - RADIX „vissza” - bináris számokra
Az autizmusról É l e t e m a s p e r g e r - s z i n d r ó m á v a l.
Készítette: Bukhár Máté.  Elemzésem alapján bemutatni az uniós tagországok gázolaj árait.  Azokhoz képest megállapítani, hogy a magyar gázolaj drága-e.
Sárgarépa piaca hasonlóságelemzéssel Gazdaság- és Társadalomtudományi kar Gazdasági és vidékfejlesztési agrármérnök I. évfolyam Fekete AlexanderKozma Richárd.
2011/2012. Iskolatípusok  Gimnázium 5 évfolyamos- nyelvi előkészítő 4 évfolyamos – hagyományos  Szakközépiskola 5 évfolyamos- nyelvi előkészítő 4 évfolyamos.
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ő:
Fekete László Született: Csillagjegye: Vízöntő
1 Informatikai Szakképzési Portál Adatbázis kezelés DML – Adat manipuláló nyelv.
Dr. Balogh Péter Gazdaságelemzési és Statisztika Tanszék DE-AMTC-GVK
Exponenciális egyenletek
Karakterláncok Páll Boglárka.
Karakterláncok Páll Boglárka. Karakterláncok Karakterlánc olyan karakterek sorozata amelyek az ASCII táblázatban találhatók. Maximális hossza rögzített,
Kvantitatív módszerek
Rendezések és szövegkezelő függvények
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Brute Force algoritmus
Készítette: Hanics Anikó. Az algoritmus elve: Kezdetben legyen n db kék fa, azaz a gráf minden csúcsa egy-egy (egy pontból álló) kék fa, és legyen minden.
Határozatlan integrál
Előadó: Nagy Sára Mesterséges intelligencia Kereső rendszerek.
Egyenesvonalú (lineáris) adatszerkezetek
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Elektronikus tananyag
Az informatika logikai alapjai
Kvantitatív módszerek
Középiskolai továbbtanulás 2012/13 Készítette: Simon Zoltán ig.h.
Példa kettő-három fa felépítésére - törlés művelet Készítette : Krizsai Petra
Táblázatkezelés KÉPLETEK.
Mikroökonómia gyakorlat
2005. Információelmélet Nagy Szilvia 3. Forráskódolási módszerek.
Függvények.
Útkeresések.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
Algoritmizálás, adatmodellezés
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
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.
Karakterek, bekezdések formázása
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
 Adatbázis:  Valamilyen szempont szerint rendszerezett adathalmaz.  Adatbázis kezelés:  Adatok tárolása  Műveletek végzése az adatbázison; (Adatok.
Példa. Az ábrázolás szemléltetése.  = ({stack, elem },{ create :  stack; push : stack elem  stack}),  = ( {vector, nat, elem}, { create c :  vector.
Mediánok és rendezett minták
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

H A S H E L É S M Ű V E L E T E I N Y Í L T C Í M Z É S S E L S L I D E 01 HASHELÉS MŰVELETEI NYÍLT CÍMZÉSSEL Készítette Juhász Zoltán Gyakorlatvezető Nagy Tibor

H A S H E L É S, M I N T T Í P U S S L I D E 02 k4 k3 k1 k2 k5 U (kulcsuniverzum) K (aktuális kulcsok halmaza) T [0] T [m-1] h : U {0, 1, …, m-1}

N Y Í L T C Í M Z É S Ű H A S H E L É S | K U L C S – Ü T K Ö Z É S E K S L I D E 03 k4 k3 k1 k2 k5 U (kulcsuniverzum) K (aktuális kulcsok halmaza) T [0] T [m-1] h : U {0, 1, …, m-1} h(k3) = h(k4)

N Y Í L T C Í M Z É S Ű H A S H E L É S | K U L C S – Ü T K Ö Z É S E K S L I D E 04 k4 k3 k1 k2 k5 U (kulcsuniverzum) K (aktuális kulcsok halmaza) T [0] T [m-1] h’( 1, h(k3) ) != h’( 0, h(k3) ) h’( 0, h(k3) ) = h’( 0, h(k4) ) h : U {0, 1, …, m-1} h’ : {0, 1, …, m-1} x U {0, 1, …, m-1}  k1, k2 : h(k1) = h(k2)  k1 != k2 Lineáris kipróbálás: h’ ( i, k ) := ( i + h(k) ) mod m i = (0, 1, …, m-1 ) - Négyzetes kipróbálás - Szorzásos hasítás - Dupla hasítás

N Y Í L T C Í M Z É S Ű H A S H E L É S | T Ö R L É S I & K E R E S É S I P R O B L É M Á K S L I D E 05 T [0] T [m-1] Delete / Törlés T [0] T [m-1] 5429 Ekkor a Search / Keresés például abnormálisan viselkedik. Hisz a h( i, k ) függvény, idő előtt megakad.

N Y Í L T C Í M Z É S Ű H A S H E L É S | M E G O L D Á S : G R A V E S T O N E A V A G Y S Í R K Ő S L I D E 06 T [0] T [m-1] Delete / Törlés T [0] T [m-1] 5429 GraveStone Ekkor a Search / Keresés „tudja”, hogy elem volt eltárolva az adott helyen.

N Y Í L T C Í M Z É S Ű H A S H E L É S M Ű V E L E T E I | Ú J H A S H T Ö M B K R E Á L Á S A S L I D E 07 T [0] T [m-1] Empty(T) T := [NIL, …, NIL] NE := 0 New(GraveStone) GraveStone NE: Number of Elements A T tömbben tárolt elemek száma GaveStone: Sírkő. Törölt elem jelzésére szolgáló objektum. Empty() műveletigénye: O(1) vagy O(n) a tömb kitöltésének műveletigényétől függően.

N Y Í L T C Í M Z É S Ű H A S H E L É S M Ű V E L E T E I | Ú J E L E M B E S Z Ú R Á S A S L I D E 08 GraveStone 24 T [0] T [m-1] h(0, 6) GraveStone 24 T [0] T [m-1] 8 GraveStone 24 T [0] T [m-1] 68 a, b, a 2, b 2 h(2, 6) h(0, 6) h(2, 6)

N Y Í L T C Í M Z É S Ű H A S H E L É S M Ű V E L E T E I | Ú J E L E M B E S Z Ú R Á S A S L I D E 09 Insert(T, k) i := 0 IsFull(T) j := h(i,k) T[j] != NIL  T[j] != GraveStone ++i, j := h(i,k) T[j] := k, ++NE ERRORERROR Insert(T, k): jelen esetben, egy elem többször is bekerülhet a tömbbe. Ezt megakadályozandó, szúrjunk be egy Search(T, k) feltételű elágazást a telítettségi vizsgálat elé. Insert(T,k) műveletigénye: Legjobb esetben O(1), de legrosszabb esetben is O(n)-s. Általános esetben, nagyban függ a használt h(i,k) függvénytől és a T tömb kitöltöttségi mutatójától, de nagyságrendileg így is 0(n) marad.

N Y Í L T C Í M Z É S Ű H A S H E L É S M Ű V E L E T E I | E L E M K E R E S É S E S L I D E 10 Search(T, k) i := 0 IsEmpty(T) j := h(i,k) T[j] != NIL  i < m  T[j] != k ++i j := h(i,k) T[j] = k Return ( j ) Return ( -1 ) R e t u r n (-1) Search(T, k) műveletigénye: Legjobb esetben O(1), de legrosszabb esetben is O(n)-s. Általános esetben, nagyban függ a használt h(i,k) függvénytől és a T tömb kitöltöttségi mutatójától, de nagyságrendileg így is 0(n) marad. (Bővebben Új Algoritmusok) Search(T, k): visszaadja a keresett elem indexét, -1 -t különben.

N Y Í L T C Í M Z É S Ű H A S H E L É S M Ű V E L E T E I | E L E M T Ö R L É S E S L I D E 11 Delete(T, k) j := Search(T,k) j = -1 T[j] := GraveStone --NE ERROR T [0] T [m-1] 264 Delete(T,4) T [0] T [m-1] 26 GraveStone Delete(T, k): a Search(T, k) függvényhívás miatt megegyezik a Search(T, k) műveletigényével.

N Y Í L T C Í M Z É S Ű H A S H E L É S M Ű V E L E T E I | Ü R E S – E & T E L E – E ? S L I D E 12 IsFull(T) NE = m Return(FALSE) Return(TRUE) IsFull(T) és az is IsEmpty(T) 0(1) műveletigénnyel rendelkeznek. IsEmpty(T) NE = 0 Return(FALSE) Return(TRUE)

V E R S E N Y F E L A D A T E G Y M E G O L D Á S A S L I D E 13 VERSENYFELADAT EGY MEGOLDÁSA Készítette Juhász Zoltán Gyakorlatvezető Nagy Tibor

V E R S E N Y F E L A D A T E G Y M E G O L D Á S A | A F E L A D A T S L I D E 14 Egyenletes hash függvény keresése: Adott egyedi nevet tartalmazó szövegfájl. Képezzük le [0..996] hosszúságú tömbbe, minél egyenletesebben. 1. verseny: az átlagtól (16,5095) való eltérések abszolút értékének az átlaga legyen a legkisebb, ahol az x i az i. slot-ba eső elemek száma, x = 16, verseny: 16 és 17 db elemet tartalmazó slot-ok száma legyen a legnagyobb. _

V E R S E N Y F E L A D A T E G Y M E G O L D Á S A | A S T R A T É G I A S L I D E 15 Sikertelen próbálkozások: - MD5 hash függvény felhasználása az egyenletes kulcsok kreálására - Egy kulcs készítő függvény alkalmazása a teljes névsorra A stratégia: - A neveket 11 halmazba rendezzük, melyek páronként diszjunktak. Az elrendezés a nevek kezdőbetűjének azonosságára épít. - Az egyes halmazokra ugyan az a kulcs készítő függvényt alkalmazzuk, csak adott halmazra optimalizált paraméterekkel - A kulcsokat a szorzásos módszerrel szétosztani a 997 slot / cella között

V E R S E N Y F E L A D A T E G Y M E G O L D Á S A | A K U L C S K É S Z Í T É S S L I D E 16 A kulcsok készítésének elve: h1 h2 h11 F és G betűvel Kezdődő nevek UniqKey TempKeyName Friss Tamás Frivalszki Tamás Frohner Ákos Frucht Éva Katalin Frész Róbert

V E R S E N Y F E L A D A T E G Y M E G O L D Á S A | A K U L C S K É S Z Í T É S S L I D E 17 A kulcsok készítésének elve: F r o h n e r _ Á k o s ASCII kódja: TempKey számítása: n a név hossza spaccel, x i a betű ASCII kódja: 1026

V E R S E N Y F E L A D A T E G Y M E G O L D Á S A | A K U L C S K É S Z Í T É S S L I D E 18 UniqKey számítása: ASCII[]: Az adott névhez tartozó ASCII kódok tömbje. MD5key[]: Az adott névhez tartozó MD5 szám 16. helyi értékén álló karakter ASCII kódja. (0,..., 9, A,..., E) vAsciiSecond() UniqKey := TempKey j := 1 j < ASCII[].size() UniqKey := UniqKey + ASCII[j+2] * MD5key[16] ++j UniqKey: 64353

V E R S E N Y F E L A D A T E G Y M E G O L D Á S A | A H A S H F Ü G G V É N Y S L I D E 19 A HASH függvény: A Hash függvény a szorzásos módszert épít. Beszorozzuk a k kulcsot valamely A (0 < A < 1) állandóval, majd vesszük a kA törtrészét. Legvégül beszorozzuk a slotok / cellák számával (m). Jelen esetben: k = m = 86A  = …

V E R S E N Y F E L A D A T E G Y M E G O L D Á S A | A H A S H F Ü G G V É N Y S L I D E 20 Jelen esetben: k = m = 86A  = … Az m azért csak 86 és nem 997, mert nem csak a neveket osztottuk fel 11 részre, hanem cellákat is rendeltünk ehhez a halmazhoz. A 2. halmazhoz például 86-t. Az A állandó elvileg minden értékre működik, de egyes értékekre különösen jó eredményeket kapunk. pl 0.5-re olyannyira nem hatékony, hogy 0 db slot van, esetén is csupán 199 optimális slot van. Knuth szerint a … állandó, valószínűleg jól fog működni.

V E R S E N Y F E L A D A T E G Y M E G O L D Á S A | A Z E R E D M É N Y S L I D E 21 Eredmény: