Bir Hashtable nedir?
Olarak bilgisayar biliminin , birhashtable a, veri yapısı
değerlerinin bir listesini içerir verilerini depolamak için, değerlerin uygun
bir liste ile eşleştirilmiş olsun adı tuşları, bir dizi olarak adlandırılır.
Örneğin, bir işletme adı adresiyle eşleştirilebilir. Tipik olarak, dizideki her
bir değerin, hash olarak adlandırılan bir konum numarası vardır. Hash
fonksiyonu örneğin, kosgeb sıfır faizli kredionun
adresine, telefon numarası ve iş kategorisine işletme adını bağlayan -
genellikle talimatlar kümesi ya da karma her anahtar değeri eşleyen bir
algoritmadır. Karma işlevinin amacı, her anahtarı dizide benzersiz bir karşılık
gelen değere atamaktır; Bu genellikle karma olarak adlandırılır. Karma
işlevlerin düzgün çalışması için düzgün şekilde biçimlendirilmesi gerekir.
Bir veri setindeki bir hashtabın performansı, onun karma
fonksiyonunun verimliliğine bağlıdır. İyi bir karma işlevi, tipik olarak,
tekdüzen bir anahtar araması ve karşılık gelen dizide eşlemelerin eşit bir
dağılımını sağlar. İki anahtar aynı karşılık gelen değere atandığında karma bir
çarpışma meydana gelir. Karma çarpışma meydana geldiğinde, karşılık gelen bir
değer bulunana kadar karma işlevi genellikle tekrar yürütülür; Bu genellikle
daha uzun zamanlama ile sonuçlanır. Bir hashtab içindeki tuşların sayısı
genellikle sabit olsa da, bazen çift anahtarlar olabilir. Öyle olsa bile, iyi
tasarlanmış bir hash, her anahtarı, dizideki benzersiz bir karşılık gelen
değerle eşleştiren etkili karma işlevlere sahiptir.
Bazen, bir hashtada verimsiz hash işlevleri de bir grup küme
üretebilir. Bir karma işlevi mevcut anahtarlar için bir eşleme kümesi
oluşturuyorsa, bu, karşılık gelen değerleri aramak için gereken süreyi
artırabilir. Bu, çoğu karma işlevleri genellikle dizideki bir sonraki kullanılabilir
konumu aradığı için gelecekteki tuşlar için karmalamayı yavaşlatabilir. Büyük
bir değerler kümesinin önceden atanmış olması durumunda, yeni bir anahtar için
atanmamış bir değere bakmak genellikle çok daha uzun sürer.
Yük faktörü, bir karma fonksiyonunun verimliliği ile ilgili
başka bir kavramdır; yük faktörü, bir hashta karşılık gelen dizinin genel
büyüklüğüne göre halihazırda var olan miktarların miktarıdır. Genellikle,
önceden atanmış anahtarların sayısını karşılık gelen dizinin işkur hibe desteğiboyutuna bölerek
tanımlanır. Yük faktörü arttıkça, iyi bir karma işlevi normalde belirli bir
noktaya kadar sabit sayıda çarpışma ve kümeyi koruyacaktır. Çoğu zaman, bu
eşik, bir karma işlevinin belirli bir sayıda tuş ile ne kadar verimli olduğunu
ve yeni bir karma işlev gerekebileceğini belirlemek için kullanılabilir.
Birçok bilgisayar bilimi araştırmacısı, mükemmel bir karma
işlevi üretmeye gayret etmiştir - bu, artan bir yük faktörü verilen hiçbir
çarpışma ya da kümelenme üretmeyen biri. Teoride, mükemmel bir hashtabın
üretilmesinin anahtarı, mükemmel bir karma işlevi üretmektir. Genel olarak
araştırmacılar, mükemmel bir karma fonksiyonun, artan yük faktörüne sahip
sürekli performansa (çarpışmaların ve kümelerin sayısının) sahip olduğuna
inanırlar. En kötü senaryolarda, mükemmel bir karma fonksiyonu hala bir eşik
değerine ulaşmadan sabit bir karmaşaya izin verir.
Yorumlar
Yorum Gönder