Hashing - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

Hashing

Description:

Title: binary search tree Author: taicl Last modified by: M Created Date: 9/13/2005 2:58:53 PM Document presentation format: On-screen Show Company – PowerPoint PPT presentation

Number of Views:56
Avg rating:3.0/5.0
Slides: 26
Provided by: tai127
Category:
Tags: binary | hashing | tree

less

Transcript and Presenter's Notes

Title: Hashing


1
HashingÇirpi, kirpma, özetleme, adresleme
2
Hash tablosu
  • Asagidaki operasyonlari destekler
  • Bul
  • Ekle
  • Sil. (Bazi uygulamalarda silme gereksiz
    olabilir.)
  • Ikili arama agacinda, AVL agacinda ve
    B-agacindan oldugu gibi asagidaki islemler
    yapilamaz
  • Minimum ve Maksimum
  • Halef ve selef
  • Belirli bir araliktaki verinin listelenmesi
  • Verinin siralanmis olarak listelenmesi

3
Realistik olmayan Çözüm
  • Her hücre (slot) anahtarlar arasindan bir
    anahtara denk gelir.
  • Tk, k anahtarli bir elemana karsilik gelir.
  • Eger kümede k anahtarli eleman olmazsa, TkNULL

4
Realistik olmayan Çözüm
  • Ekle, sil ve bul islemlerinin hepsi O(1)dir (En
    kötü durum)
  • Problem
  • Depolanacak olan elemanlarin sayisi göz önüne
    alindiginda, eger uzay çok büyük ise bu yapi çok
    fazla yer israf eder.
  • Örnek. Ögrenci numaralari 8-rakamli olsun.
    Dolayisi ile uzay 108 ,olacak, ancak biz sadece
    32000 ögrenciye sahibiz.

5
Hashing
Genellikle, m ltlt N. h(Ki) 0, , m-1 bir
tamsayidir ve Ki nin hash degeri olarak
isimlendirilir
6
Örnek Uygulamalar
  • Derleyiciler tanimlanan degiskenleri takip etmek
    için hash tablolari (symbol table) kullanir.
  • On-line kelime imlasi kontrolü. Bütün sözlügü
    hash ettikten sonra, herbir kelime sabit bir
    zamanda kontrol edilebilir ve hatali yazilan
    kelimeler için öneriler verilebilir.
  • Giris anahtarlari sirali bir sekilde gelen
    uygulamalarda kullanislidir. Ikili arama agaci
    için bu kötü bir durumdur. AVL ve B agaçlari
    için gerçeklestirilmesi zordur ve etkili
    degildir.

7
Hashing
  • Hashing ile, k anahtarinin bir elemani Th(k)
    içerisinde depolanmistir.
  • h hash fonksiyonu
  • U anahtar kümesini bir hash tablosunun hash table
    T0,1,...,m-1 içerisindeki bölmelere eslestirir.
  • k anahtarinin bir elemani bölme h(k) ya hash
    eder.
  • h(k) , k anahtarinin hash degeridir

8
Hashing
  • Problem collision (çarpisma - ihtilaf)
  • Iki anahtar ayni bölmeyi hash edebilir
  • Iki farkli anahtarin farkli hücreleri
    kullanmasini saglayabilir miyiz?
  • Hayir, eger Ugtm, m hash tablosunun boyutu
  • Iyi bir hash fonksiyonu tasarla
  • hesaplanmasi hizli olan ve
  • çarpismalarin sayisini minimize edebilen.
  • Meydana geldikleri zaman çarpismalari çözebilecek
    bir metot gelistir.

9
Hash Fonksiyonu
  • Bölme metodu
  • h(k) k mod m
  • örnek m12, k100, h(k)4
  • sadece tekbir bölme islemi gerektirir
    (oldukça hizli)
  • m in bazi degerlerinden kaçinilabilinir.
  • örnek eger m2p, öyleyse h(k) k nin en düsük p
    bitine karsilik gelir, hash bagli olmaz.
  • Benzer sekilde, eger anahtarlar ondalikli sayi
    ise mi 10 un kuvveti seklinde ayarlamamaliyiz.
  • m degerini asal sayi olarak ayarlama en iyi
    yoldur.
  • m için iyi degerler 2nin katlarina çok yakin
    olmayan asal sayi seçimi
  • örnek 2000 sayi tutacak bir hash tablosu, ve
    herbir hücrede ortalama olarak 3 eleman
    tutulacaksa
  • m701 olarak seçilebilir.

10
Hash Fonsiyonu...
  • Anahtarlar string olabilirmi?
  • Hash fonksiyonlarinin çogu anahtarlarin dogal
    sayilar oldugunu varsayar.
  • Eger anahtarlar dogal sayi degilse, bu degerlerin
    dogal sayi olarak degerlendirilmesi için bir yol
    bulunmalidir.
  • Metot 1
  • Stringteki karakterlerin ASCII degerlerini topla.
  • Problemler
  • Ayni karakterlerin farkli permutasyonlari ayni
    hash degerlerine sahip olacaktir.
  • Eger tablo boyutu büyükse, anahtarlar düzgün
    dagilmayacaktir.

11
Hash Fonksiyonu...
  • Metot 2
  • Eger ilk 3 karakter random ise ve tablo boyutu
    10,0007 ise gt güzel bir dagilim vardir demektir.
  • Problem
  • Ingilizce / Türkçe random degildir.
  • Sadece tablonun 28i gerçekten hash edilebilir.
    (tablo boyutunun 10,007 oldugu varsayimi var)
  • Metot 3
  • Hesapla
  • Anahtardaki bütün karakterleri içerir ve düzgün
    bir dagilim olmasi beklenir.

272
a,,z ve bosluk
12
Çarpisma Idaresi (1) Ayri Zincirleme
  • Hash tablolari yerine, baglantili liste tablosu
    kullanilir.-
  • Ayni degere hash eden anahtarlari baglantili
    liste ile tut.

h(K) K mod 10
13
Ayri Zincirleme
  • K anahtarini ekleme
  • Hangi listeyi gezmeyi belirlemek için h(K) yi
    hesapla
  • Eger Th(K) null pointer içeriyorsa, sadece K
    degerini içerecek olan baglantili listeye bu
    girisi ilklendir
  • Eger Th(K) dolu bir liste ise, bu listenin en
    basina K yi ekleriz.
  • K anahtarini silmek için
  • h(K) hesapla , Th(K) daki liste için de K
    anahtarini ara. Eger bulunduysa K anahtarini sil.

14
Ayri Zincirleme
  • n anahtar depolayacagimizi varsayalim. Öyleyse m
    i bir sonraki en büyük asal sayi yapmaliyiz.
    Eger hash fonksiyonu, herbir baglantili listedeki
    anahtar sayisi küçük bir sabit olacaktir.
  • Böylece, Herbir arama, ekleme, ve silme isleminin
    sabit zamanda yapilacagini bekleriz.
  • Dezavantaji Baglantili listedeki hafiza yer
    ayirma islemi programi yavaslatacaktir.
  • Avantaj silme kolaydir.

15
Çarpisma Idaresi(2) Açik Adresleme
  • Açik adresleme
  • Eger eklenecek K anahtari varolan bir anahtar ile
    çarpisirsa K anahtarinin yerini tekrar hesapla.
    Yani, K anahtarini Th(K) dan farkli bir yerde
    tutariz.
  • Iki soru vardir.
  • Tekrar yer bulma islemi nasil olacak?
  • K degerini daha sonra nasil arayacagiz?
  • Açik adreslemedeki çarpismalari çözmek için üç
    bilinen yöntem vardir.
  • Dogrusal arastirma - Linear probing
  • Karesel arastirma - Quadratic probing
  • Çift hashing - Double hashing

16
Açik Adresleme
  • K anahtarini eklemek için, h0(K) hesapla. Eger
    Th0(K) bossa, oraya ekle. Eger çarpisma
    olursa, alternatif hücre h1(K), h2(K), .... Ara,
    ta ki bos bir hücre bulunana kadar..
  • hi(K) (hash(K) f(i)) mod m, f(0) 0 ile
  • f çarpisma çözüm stratejisi

17
Dogrusal Arastirma
  • f(i) i
  • Hücreler ard arda arastirilir. (with wraparound)
  • hi(K) (hash(K) i) mod m
  • Ekleme
  • K eklenecek yeni bir anahtar olsun. hash(K) yi
    hesapla
  • For i 0 to m-1
  • L ( hash(K) I ) mod m yi hesapla
  • TL bossa, K yi ekle ve dur..
  • Eger K yi ekleyecek bos bir yer bulunamazsa,
    tablo dolu demektir ve hata mesaji verilir.

18
Dogrusal Arastirm
  • hi(K) (hash(K) i) mod m
  • Örnek 89, 18, 49, 58, 69 anahtarlarini ekle,
    hash(K)K mod 10 kullanarak

Ekle 58, arastir T8, T9, T0, T1
Ekle 69, arastir T9, T0, T1, T2
19
Primary Clustering
  • We call a block of contiguously occupied table
    entries a cluster
  • On the average, when we insert a new key K, we
    may hit the middle of a cluster. Therefore, the
    time to insert K would be proportional to half
    the size of a cluster. That is, the larger the
    cluster, the slower the performance.
  • Linear probing has the following disadvantages
  • Once h(K) falls into a cluster, this cluster will
    definitely grow in size by one. Thus, this may
    worsen the performance of insertion in the
    future.
  • If two cluster are only separated by one entry,
    then inserting one key into a cluster can merge
    the two clusters together. Thus, the cluster
    size can increase drastically by a single
    insertion. This means that the performance of
    insertion can deteriorate drastically after a
    single insertion.
  • Large clusters are easy targets for collisions.

20
Karesel Arastirma
  • f(i) i2
  • hi(K) ( hash(K) i2 ) mod m
  • Örnek., 89, 18, 49, 58, 69 ekle, hash(K) K mod
    10 kullanarak

ekle 58, arastir T8, T9, T(84) mod 10
ekle 69, arastir T9, T(91) mod 10, T(94)
mod 10
21
Karesel Arastirma
  • Farkli baslangiç noktalari olan iki anahtar
    farkli arastirma siralarina sahip olacaktir.
  • örnek m101, h(k1)30, h(k2)29
  • K1 için arastirma sirasi 30,301, 304, 309
  • K2 için arastirma sirasi 29, 291, 294, 299
  • Eger tablo boyutu asal ise, her zaman yeni bir
    anahtar eklenebilir, ancak ve ancak en az
    tablonun yarisi bos ise.
  • Secondary clustering
  • Keys that hash to the same home position will
    probe the same alternative cells
  • Simulation results suggest that it generally
    causes less than an extra half probe per search
  • To avoid secondary clustering, the probe sequence
    need to be a function of the original key value,
    not the home position

22
Çift Hashing
  • Kümeleme problemlerinden kaçmak için, bir
    anahtarin arastirma sirasi ilk pozisyonundan
    bagimsiz olmalidir. gt iki hash fonksiyonu
    kullan hash() ve hash2()
  • f(i) i hash2(K)
  • Örnek hash2(K) R - (K mod R), R bir asal
    sayidir ve m den küçüktür

23
Çift Hashing
  • hi(K) ( hash(K) f(i) ) mod m hash(K) K
    mod m
  • f(i) i hash2(K) hash2(K) R (K mod R),
  • Örnke m10, R 7 ve 89, 18, 49, 58, 69
    anahtarlarini ekle

49 eklemek için , hash2(49)7, ikinci arastirma
T(97) mod 10
58 eklemek için, hash2(58)5, 2. arastirma
T(85) mod 10
69 eklemek için, hash2(69)1, 2. arastirma
T(91) mod 10
24
hash2() fonksiyonunun seçimi
  • Hash2() must never evaluate to zero
  • K anahtari için, bagil olarak tablo boyutu m e
    asal olmalidir. Yoksa, ayni tablo girisleri
    üretilebilecektir.
  • Örnek, eger hash(K) 0 ve hash2(K) m/2, sadece
    T0, Tm/2, girisleri bulunacaktir baskasi
    degil!
  • m asal yapmanin ve R degerini mden küçük bir
    asal seçmenin bir yolu
  • hash2(K) R (K mod R)
  • Karesel arastirma, fakat, ikinci hash
    fonksiyonunun kullanilmasina ihtiyaç duymaz.
  • Praktikte daha hizli ve basittir.

25
Açik Adreslemede Silme
  • Gerçek silme açik adresleme hash tablolarinda
    gerçeklestirilemez.
  • Yoksa bu islem arastirma sirasinin bozulmasina
    yol açabilir.
  • Çözüm Herbir bölmeye silinen elemani göstermek
    için bir bayrak koy DELETED (tombstone)
Write a Comment
User Comments (0)
About PowerShow.com