Hashtable Nedir?

Bilgisayar biliminde, bir karma tablo, dizi adı verilen ve karşılık gelen bir değerler listesiyle eşleştirilen bir değer listesinden oluşan verilerin depolanması için bir veri yapısıdır. Örneğin, bir işletme adı adresi ile eşlenebilir. Tipik olarak, dizideki her değer, karma olarak adlandırılan bir konum numarasına sahiptir. Karma işlevi, genellikle işletme adını adresini, telefon numarasını ve işletme kategorisini bağlayan her anahtar değeri bir karmaya eşleyen bir talimatlar kümesi veya bir algoritmadır. Karma işlevinin amacı, her anahtarı dizideki benzersiz bir karşılık gelen değere atamaktır; Bu genellikle karma olarak adlandırılır. Karma işlevlerinin düzgün çalışması için karma işlevlerinin düzgün biçimde biçimlendirilmesi gerekir.

Bir veri grubundaki bir veri tablosunun performansı, veri fonksiyonunun etkinliğine bağlıdır. İyi bir karma işlevi tipik olarak tek bir tuşların aranmasını ve karşılık gelen dizide eşlemelerin eşit dağılımını sağlar. İki anahtar aynı değere atandığında, bir karmaşa oluşur. Bir karma çarpışma gerçekleştiğinde, karma işlevi genellikle benzersiz bir karşılık gelen değer bulunana kadar tekrar yürütülür; bu genellikle daha uzun karışma sürelerine neden olur. Bir karma tablodaki anahtarların sayısı genellikle sabit olsa da, bazen yinelenen anahtarlar olabilir. Buna rağmen, iyi tasarlanmış bir karma tablo, her bir anahtarı dizideki benzersiz bir karşılık gelen değerle eşleyen etkin karma işlevlerine sahiptir.

Bazen, bir karma tablodaki verimsiz karma işlevleri de bir dizi eşleme üretebilir. Bir karma işlevi mevcut anahtarlar için bir eşleme kümesi oluşturursa, bu karşılık gelen değerlerin aranması için gereken süreyi artırabilir. Çoğu karma işlevi genellikle dizideki bir sonraki kullanılabilir konumu aradığı için bu, gelecekteki anahtarlar için karma değerini yavaşlatabilir. Büyük bir değer kümesi zaten atanmışsa, yeni bir anahtar için atanmamış bir değer aramak genellikle daha uzun sürer.

Yük faktörü, bir karma fonksiyonunun etkinliği ile ilgili başka bir kavramdır; yük faktörü, bir karma tablodaki karşılık gelen dizinin toplam büyüklüğüne ilişkin halihazırda mevcut karma değerinin miktarıdır. Genellikle önceden atanmış anahtarların sayısını karşılık gelen dizinin boyutuna 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ümeleri koruyacaktır. Çoğu zaman bu eşik, bir karma fonksiyonunun belirli sayıda tuş ile ne kadar verimli olduğunu ve yeni bir karma fonksiyonuna ne zaman ihtiyaç duyulabileceğini belirlemek için kullanılabilir.

Birçok bilgisayar bilimi araştırmacıları, artan yük faktörü verilen hiçbir çarpışma veya küme üretmeyen mükemmel karma işlevini üretme çabasındadır. Teoride, kusursuz bir karma değer üretmenin anahtarı, mükemmel bir karma işlev üretmektir. Genel olarak, araştırmacılar mükemmel bir karma fonksiyonunun artan bir yük faktörü ile sürekli performansa (çarpışma ve küme sayısı) sahip olması gerektiğine inanmaktadır. En kötü durum senaryolarında, mükemmel bir karma işlevi hala bir eşiğe ulaşmadan sürekli karma yapmayı sağlar.