Guguk karmalamanın dinamik mükemmel karma işlemeye göre avantajları nelerdir?


12

Dinamik mükemmel karma tablolar ve guguklu karma tablolar , en kötü durum O (1) aramalarını ve beklenen O (1) zamanlı ekleme ve silme işlemlerini destekleyen iki farklı veri yapısıdır. Her ikisi de O (n) yardımcı alan ve işlemleri için karma fonksiyon ailelerine erişim gerektirir.

Bu veri yapılarının her ikisinin de kendi başına güzel ve parlak olduğunu düşünüyorum, ancak bunlardan birinin diğerine nasıl ve ne zaman tercih edileceğini göremiyorum.

Bu veri yapılarından birinin diğerine göre belirgin bir avantajı olduğu belirli bağlamlar var mı? Yoksa çoğunlukla değiştirilebilir mi?


Bu tekniklerin herhangi birinin aslında pratikte kullanılıp kullanılmadığından emin değilim. Genellikle en iyi asimptotik sınırlar sunan bu tür veri yapıları genellikle araştırma ilgisidir , çünkü genellikle notasyonunda gizli büyük bir sabit vardır. Uygulamada, gerçekten büyük bir sabiti olan daha karmaşık bir tekniğine göre çok küçük bir sabitle tekniğini uygulamak daha basit, daha kolay olabilir . O ( log n ) O ( 1 )OO(logn)O(1)
Tom van der Zanden

@TomvanderZanden Bu kesinlikle doğru. Ayrıca, bir yaklaşımın diğerine göre teorik avantajlarıyla da ilgileniyorum - her yaklaşımın diğerine sunduğu güzel teorik özellikler var mı?
templatetypedef

@templatetypedef, bunu soruya eklemenizi tavsiye ederim. İnsanlar sorunuzu anlamak için yorumları okumak zorunda olmamalıdır - yorumlar geçicidir ve herhangi bir zamanda kaybolabilir.
DW

Evet, bu teknikler aslında pratikte, genellikle niş alanlarda kullanılır.
Takma isim

1
Guguklu hashinin bir avantajı, anlaşılması ve uygulanmasının kolay olmasıdır. Ayrıca, imho, analizi mükemmel dinamik karma daha çok daha kolaydır.
A.Schulz

Yanıtlar:


3

Dietzfelbinger ve ark. sadece 2 bağımsız hashete ihtiyaç duyar . Bükülmüş tabuasyon karma ve "Gıcırtı ile Guguk Hashing için Açık ve Verimli Hash Aileleri Yetiştirme" gibi guguklu karma tabloları için basit karma konusunda bazı sonuçlar olsa da, orijinal dinamik mükemmel karma bir anlamda daha sağlamdır.


OP'nin açıklayıcı yorumuna bakın: "Bir yaklaşımın diğerine karşı teorik avantajlarıyla da ilgileniyorum - her yaklaşımın diğerine sunabileceği hoş teorik özellikler var mı?"
jbapple

3

Guguklu hashinde, aramalar paralel olarak gerçekleştirilebilirken, Dietzfelbinger ve arkadaşlarının orijinal dinamik mükemmel hash şemasında, aramalar, ikinci erişimin birinciden alınan bilgileri kullandığı iki zincirli bellek erişimi gerektirir.


1

Her bir yuvanın birden fazla eşya tutmasına izin vererek guguklu hashinin alan verimliliğini arttırmak nispeten kolaydır. 4 boyutlu yuvalar için alan verimliliği% 95 gibi bir şeydir. Diğer bir deyişle, öğeler yalnızca öğelerin gidebileceği yerler değil, öğeleri tutmak için tablodaki alanın% 95'i kullanılana kadar eklenebilir.

Diğer yandan, Dietzfelbinger ve ark. Dinamik mükemmel karma kağıt sadece tablo% 3'ten fazla dolu olmadığı sürece ekleme işlemlerinin devam edebileceğini kanıtlar.


İki cevabınızı bir araya getirmek isteyebilirsiniz. :-)
templatetypedef

0

Cuckoo hashing , herhangi bir zamanda bellek bloklarını kullanır ve belleği nadiren serbest bırakması veya yeniden tahsis etmesi gerekir. Dietzfelbinger anlamında dinamik mükemmel karma, bellek bloklarını kullanır ve hem iç hem de dış parçalamada daha fazla alan kullanır. Bundan kaçınmanın yolları vardır, ancak algoritmaya karmaşıklık katarlar.O ( n )O(1)O(n)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.