Hashing rp k rpma zetleme adresleme
Download
1 / 25

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


  • 196 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
Hashing rp k rpma zetleme adresleme

HashingÇırpı, kırpma, özetleme, adresleme


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