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

Bu blogdaki popüler yayınlar

İletişim Kutusu nedir?

Alan analizi nedir?

Adres Çubuğu nedir?