Bölüm 12 · Simülasyon

Hash Tablosu Simülatörü

← Bölüm 12

Hash hesabı

hash(anahtar) = FNV tarzı kayan hash mod kapasite

İşlem adımları

  1. Henüz işlem yok.

Geçmiş

  1. Henüz işlem yok.

Hash Tablosu Simülatörü

Ayrı zincirleme kullanan hash tablosu: anahtar hash'lenerek bir kova indisine dönüştürülür ve her kova oraya düşen girdilerin zincirini (listesini) tutar.

Kullanım

  • Bir Anahtar ve Değer yazın. Ekle / Güncelle girdiyi ekler ya da var olan anahtarın değerini değiştirir; Ara ve Sil yalnızca anahtarı kullanır; Rastgele Ekle rastgele bir girdi ekler. En fazla 12 girdi sığar.
  • Kapasite, Temizle sonrasındaki başlangıç kova sayısını belirler. Otomatik büyütme, yük faktörü 0,75'i aştığında kapasiteyi iki katına çıkarır.
  • Örneği Yükle örnek tabloyu geri getirir; İptal çalışan işlemi durdurur ve tabloyu geri yükler.

Hash fonksiyonu

FNV-1a tarzı kayan hash: 2166136261'den başlanır; her karakterin kodu XOR'lanır ve sonuç 16777619 ile çarpılır (32 bit). Kova indisi hash mod kapasite olur.

Notlar

  • İki anahtar aynı kovaya düştüğünde çakışma olur; yeni girdi, anahtarı zincirde bulunmadığı anlaşıldıktan sonra zincirin sonuna eklenir.
  • Yük faktörü λ = öğe sayısı / kapasite, ortalama zincir uzunluğudur.
  • Büyütme her girdiyi yeniden hash'ler (rehashing), çünkü indis kapasiteye bağlıdır.

Karmaşıklık

Ekleme, arama ve silme ortalama O(1 + λ) sürer; tüm anahtarlar tek kovaya düşerse O(n)'ye kötüleşir. Büyütme O(n) tutar ama seyrek olur; bu yüzden ekleme amortize O(1) kalır.