hashing rp k rpma zetleme adresleme
Download
Skip this Video
Download Presentation
Hashing Çırpı, kırpma, özetleme, adresleme

Loading in 2 Seconds...

play fullscreen
1 / 25

Hashing Çırpı, kırpma, özetleme, adresleme - PowerPoint PPT Presentation


  • 197 Views
  • Uploaded on

Hashing Çırpı, kırpma, özetleme, adresleme. Hash tablosu. Aşağıdaki operasyonları destekler Bul Ekle Sil . ( Bazı uygulamalarda silme gereksiz olabilir. ) İkili arama ağacında, AVL ağacında ve B+-ağacından olduğu gibi aşağıdaki işlemler yapılamaz : Minimum ve Maksimum Halef ve selef

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Hashing Çırpı, kırpma, özetleme, adresleme' - knox


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
hash tablosu
Hash tablosu
  • Aşağıdaki operasyonları destekler
    • Bul
    • Ekle
    • Sil. (Bazı uygulamalarda silme gereksiz olabilir.)
  • İkili arama ağacında, AVL ağacında ve B+-ağacından olduğu gibi aşağıdaki işlemler yapılamaz:
    • Minimum ve Maksimum
    • Halef ve selef
    • Belirli bir aralıktaki verinin listelenmesi
    • Verinin sıralanmış olarak listelenmesi
realistik olmayan z m
Realistik olmayan Çözüm
  • Her hücre (slot) anahtarlar arasından bir anahtara denk gelir.
    • T[k], k anahtarlı bir elemana karşılık gelir.
    • Eğer kümede k anahtarlı eleman olmazsa, T[k]=NULL
realistik olmayan z m1
Realistik olmayan Çözüm
  • Ekle, sil ve bul işlemlerinin hepsi O(1)’dir (En kötü durum)
  • Problem:
    • Depolanacak olan elemanların sayısı göz önüne alındığında, eğer uzay çok büyük ise bu yapı çok fazla yer israf eder.
      • Örnek. Öğrenci numaraları 8-rakamlı olsun. Dolayısı ile uzay 108,olacak, ancak biz sadece 32000 öğrenciye sahibiz.
hashing
Hashing

Genellikle, m << N.

h(Ki) = [0, …, m-1] bir tamsayıdır ve Kinin hash değeri olarak isimlendirilir

rnek uygulamalar
Örnek Uygulamalar
  • Derleyiciler tanımlanan değişkenleri takip etmek için hash tabloları (symbol table) kullanır.
  • On-line kelime imlası kontrolü. Bütün sözlüğü hash ettikten sonra, herbir kelime sabit bir zamanda kontrol edilebilir ve hatalı yazılan kelimeler için öneriler verilebilir.
  • Giriş anahtarları sıralı bir şekilde gelen uygulamalarda kullanışlıdır. İkili arama ağacı için bu kötü bir durumdur. AVL ve B+ ağaçları için gerçekleştirilmesi zordur ve etkili değildir.
hashing1
Hashing
  • Hashing ile, k anahtarının bir elemanı T[h(k)] içerisinde depolanmıştır.
  • h: hash fonksiyonu
    • U anahtar kümesini bir hash tablosunun hash table T[0,1,...,m-1] içerisindeki bölmelere eşleştirir.
    • k anahtarının bir elemanı bölme h(k)’ ya hash eder.
    • h(k) , k anahtarının hash değeridir
hashing2
Hashing
  • Problem: collision (çarpışma - ihtilaf)
    • İki anahtar aynı bölmeyi hash edebilir
    • İki farklı anahtarın farklı hücreleri kullanmasını sağlayabilir miyiz?
      • Hayır, eğer |U|>m, m hash tablosunun boyutu
  • İyi bir hash fonksiyonu tasarla
    • hesaplanması hızlı olan ve
    • çarpışmaların sayısını minimize edebilen.
  • Meydana geldikleri zaman çarpışmaları çözebilecek bir metot geliştir.
hash fonksiyonu
Hash Fonksiyonu
  • Bölme metodu
    • h(k) = k mod m
    • örnek m=12, k=100, h(k)=4

sadece tekbir bölme işlemi gerektirir (oldukça hızlı)

  • m ‘ in bazı değerlerinden kaçınılabilinir.
    • örnekeğer m=2p, öyleyse h(k) k nın en düşük p bitine karşılık gelir, hash bağlı olmaz.
    • Benzer şekilde, eğer anahtarlar ondalıklı sayı ise m’i 10 un kuvveti şeklinde ayarlamamalıyız.
  • m değerini asal sayı olarak ayarlama en iyi yoldur.
  • m için iyi değerler: 2’nin katlarına çok yakın olmayan asal sayı seçimi
    • örnek2000 sayı tutacak bir hash tablosu, ve herbir hücrede ortalama olarak 3 eleman tutulacaksa
      • m=701 olarak seçilebilir.
hash fonsiyonu
Hash Fonsiyonu...
  • Anahtarlar string olabilirmi?
  • Hash fonksiyonlarının çoğu anahtarların doğal sayılar olduğunu varsayar.
    • Eğer anahtarlar doğal sayı değilse, bu değerlerin doğal sayı olarak değerlendirilmesi için bir yol bulunmalıdır.
  • Metot 1
    • Stringteki karakterlerin ASCII değerlerini topla.
    • Problemler:
      • Aynı karakterlerin farklı permutasyonları aynı hash değerlerine sahip olacaktır.
      • Eğer tablo boyutu büyükse, anahtarlar düzgün dağılmayacaktır.
hash fonksiyonu1
Hash Fonksiyonu...
  • Metot 2
    • Eğer ilk 3 karakter random ise ve tablo boyutu 10,0007 ise => güzel bir dağılım vardır demektir.
    • Problem
      • İngilizce / Türkçe random değildir.
      • Sadece tablonun %28’i gerçekten hash edilebilir. (tablo boyutunun 10,007 olduğu varsayımı var)
  • Metot 3
    • Hesapla
    • Anahtardaki bütün karakterleri içerir ve düzgün bir dağılım olması beklenir.

a,…,z ve boşluk

272

arp ma daresi 1 ayr zincirleme
Çarpışma İdaresi: (1) Ayrı Zincirleme
  • Hash tabloları yerine, bağlantılı liste tablosu kullanılır.-
  • Aynı değere hash eden anahtarları bağlantılı liste ile tut.

h(K) = K mod 10

ayr zincirleme
Ayrı Zincirleme
  • K anahtarını ekleme
    • Hangi listeyi gezmeyi belirlemek için h(K) yi hesapla
    • Eğer T[h(K)] null pointer içeriyorsa, sadece K değerini içerecek olan bağlantılı listeye bu girişi ilklendir
    • Eğer T[h(K)] dolu bir liste ise, bu listenin en başına K yı ekleriz.
  • K anahtarını silmek için
    • h(K) hesapla , T[h(K)] daki liste için de K anahtarını ara. Eğer bulunduysa K anahtarını sil.
ayr zincirleme1
Ayrı Zincirleme
  • n anahtar depolayacağımızı varsayalım.Öyleyse m i bir sonraki en büyük asal sayı yapmalıyız. Eğer hash fonksiyonu, herbir bağlantılı listedeki anahtar sayısı küçük bir sabit olacaktır.
  • Böylece, Herbir arama, ekleme, ve silme işleminin sabit zamanda yapılacağını bekleriz.
  • Dezavantajı: Bağlantılı listedeki hafıza yer ayırma işlemi programı yavaşlatacaktır.
  • Avantaj: silme kolaydır.
arp ma daresi 2 a k adresleme
Çarpışma İdaresi:(2) Açık Adresleme
  • Açık adresleme:
    • Eğer eklenecek K anahtarı varolan bir anahtar ile çarpışırsa K anahtarının yerini tekrar hesapla. Yani, K anahtarını T[h(K)]’ dan farklı bir yerde tutarız.
  • İki soru vardır.
    • Tekrar yer bulma işlemi nasıl olacak?
    • K değerini daha sonra nasıl arayacağız?
  • Açık adreslemedeki çarpışmaları çözmek için üç bilinen yöntem vardır.
    • Doğrusal araştırma - Linear probing
    • Karesel araştırma - Quadratic probing
    • Çift hashing - Double hashing
a k adresleme
Açık Adresleme
  • K anahtarını eklemek için, h0(K) hesapla. Eğer T[h0(K)] boşsa, oraya ekle. Eğer çarpışma olursa, alternatif hücre h1(K), h2(K), .... Ara, ta ki boş bir hücre bulunana kadar..
  • hi(K) = (hash(K) + f(i)) mod m, f(0) = 0 ile
    • f: çarpışma çözüm stratejisi
do rusal ara t rma
Doğrusal Araştırma
  • f(i) =i
    • Hücreler ard arda araştırılır. (with wraparound)
    • hi(K) = (hash(K) + i) mod m
  • Ekleme:
    • K eklenecek yeni bir anahtar olsun. hash(K) yı hesapla
    • For i = 0 to m-1
      • L = ( hash(K) + I ) mod m yı hesapla
      • T[L] boşsa, K yı ekle ve dur..
    • Eğer K yı ekleyecek boş bir yer bulunamazsa, tablo dolu demektir ve hata mesajı verilir.
do rusal ara t rm
Doğrusal Araştırm
  • hi(K) = (hash(K) + i) mod m
  • Örnek 89, 18, 49, 58, 69 anahtarlarını ekle, hash(K)=K mod 10 kullanarak

Ekle 58, araştır T[8], T[9], T[0], T[1]

Ekle 69, araştır T[9], T[0], T[1], T[2]

primary clustering
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.
karesel ara t rma
Karesel Araştırma
  • 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, araştır T[8], T[9], T[(8+4) mod 10]

ekle 69, araştır T[9], T[(9+1) mod 10], T[(9+4) mod 10]

karesel ara t rma1
Karesel Araştırma
  • Farklı başlangıç noktaları olan iki anahtar farklı araştırma sıralarına sahip olacaktır.
    • örnek m=101, h(k1)=30, h(k2)=29
    • K1 için araştırma sırası: 30,30+1, 30+4, 30+9
    • K2 için araştırma sırası : 29, 29+1, 29+4, 29+9
  • Eğer tablo boyutu asal ise, her zaman yeni bir anahtar eklenebilir, ancak ve ancak en az tablonun yarısı boş 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
ift hashing
Çift Hashing
  • Kümeleme problemlerinden kaçmak için, bir anahtarın araştırma sırası ilk pozisyonundan bağımsız olmalıdır. => iki hash fonksiyonu kullan: hash() ve hash2()
  • f(i) = i * hash2(K)
    • Örnek hash2(K) = R - (K mod R), R bir asal sayıdır ve m den küçüktür
ift hashing1
Ç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: m=10, R = 7 ve 89, 18, 49, 58, 69 anahtarlarını ekle

49 eklemek için , hash2(49)=7, ikinci araştırma T[(9+7) mod 10]

58 eklemek için, hash2(58)=5, 2. araştırma T[(8+5) mod 10]

69 eklemek için, hash2(69)=1, 2. araştırma T[(9+1) mod 10]

hash2 fonksiyonunun se imi
hash2() fonksiyonunun seçimi
  • Hash2() must never evaluate to zero
  • K anahtarı için, bağıl olarak tablo boyutu m ‘ e asal olmalıdır. Yoksa, aynı tablo girişleri üretilebilecektir.
    • Örnek, eğer hash(K) = 0 ve hash2(K) = m/2, sadece T[0], T[m/2], girişleri bulunacaktır başkası değil!
  • m asal yapmanın ve R değerini m’den küçük bir asal seçmenin bir yolu

hash2(K) = R + (K mod R)

  • Karesel araştırma, fakat, ikinci hash fonksiyonunun kullanılmasına ihtiyaç duymaz.
    • Praktikte daha hızlı ve basittir.
a k adreslemede silme
Açık Adreslemede Silme
  • Gerçek silme açık adresleme hash tablolarında gerçekleştirilemez.
    • Yoksa bu işlem araştırma sırasının bozulmasına yol açabilir.
  • Çözüm: Herbir bölmeye silinen elemanı göstermek için bir bayrak koy DELETED (tombstone)
ad