Frekanslar benzer olduğunda optimum öneksiz kodları hesaplamanın karmaşıklığı nedir?


13

Huffman kodunu zaman içinde hesaplamak için en kötü durum optimal algoritmasının olduğu iyi bilinmektedir θ(nlgn) . Bu iki dikey şekilde geliştirildi:

  1. Farklı frekanslar kümesi küçükse (örn. boyutunda ) en uygun önek serbest kodları daha hızlı hesaplanabilir : frekansları [Munro ve Spira, 1976] kullanarak küçük σ değerinden yararlanmak ve Huffman'ı hesaplamak için sıralayın sıralanan frekanslardan doğrusal zamanda ağaç. Bu O ( n lg σ ) içinde bir çözelti verir.σσO(nlgσ)

  2. Eşdeğer kodları hesaplamak için bir algoritması vardır; burada k , farklı kod kelime uzunluklarının sayısıdır [Belal ve Elmasry].O(n16k)k

O(nmin{16k,lgσ})


STACS 2006 DAN SONUÇ yanlış olmazmış gibiO(nk) , elmasry 2010 yılında arXiv yayınlanan (http://arxiv.org/abs/cs/0509015) duyuran bir sürümü - sıralanmamış girişi operasyonları ve - girişte işlemleriO(16kn)O(9klog2k1n)


  1. Düzlemsel dışbükey gövdeyi hesaplamanın karmaşıklığına sahip bir benzetme görüyorum, burada (sıralama temelli, Huffman'ın kodu için algoritması) ve (hediye) sarma), Kirkpatrick ve Seidel'in algoritması tarafından yerine geçmiştir (daha sonra formunun karmaşıklığı ile en uygun örnek olduğu kanıtlanmıştır ). ve karşılaştırması ve hatta karmaşıklığına sahip bir algoritma olasılığını gösterir; burada uzunluktaki şifre sayısıdırO(nlgn)O(nlgn)O(nh)O(nlgh)O(nH(n1,,nk)O(nlgn)O(nk)O(nlgk)O(nH(n1,,nk)nii, dışbükey gövdenin kaplamasının bir kenarının benzeşimini kullanarak sembollerini kapsayan bir kod uzunluğunu .nini

  2. Basit bir örnek, frekansların (yuvarlatılmış) logaritmik değerlerinin ( sözcük RAM modelinde doğrusal zamanda) sıralamanın doğrusal zamanda optimal öneksiz serbest kod vermediğini gösterir: θ(lgn)

    • İçin , ven=3f1=1/2εf2=f3=1/4+ε
    • lgfi=2 yani günlük sıralama düzeni değişmez
    • ancak üç koddan iki kodu bitten daha iyidir.n/4
  3. Bir başka ilginç soru, büyük olduğunda karmaşıklığı azaltmaktır , yani tüm kodların farklı uzunlukları vardır:k

    • örneğin, olduğunda , frekansların hepsi ayrı log değeridir. Bu durumda, frekansları kelime RAM'ında doğrusal zamanda sıralayabilir ve Huffman kodunu doğrusal zamanda hesaplayabilir (çünkü değerlerini sıralamak için günlük değerlerini sıralamak yeterlidir), toplam doğrusal zamanla sonuçlanır Belal ve Elmasry algoritmasından çok daha iyi .k=nθ(lgn)n2

Yanıtlar:


1

Birkaç yıl sürdü (beş!), Ancak soruya kısmi bir cevap var:

http://arxiv.org/abs/1602.00023

Kısmi Sıralama ile Optimal Önek Ücretsiz Kodlar Jérémy Barbay (Ekleyen 29 Oca 2016)

O (n (1 + lgα)) ⊆O (nlgn) içinde zaman içinde sıralanmamış n pozitif ağırlıklar için optimal önek içermeyen bir kod hesaplayan bir algoritmayı açıklıyoruz; burada α∈ [1..n − 1] değişimi, hesaplama için gerekli sıralama. Bu asimptotik karmaşıklık, cebirsel karar ağacı hesaplama modelinde, en kötü durumda, tüm boyut n ve a değişimi örneklerinde optimalin sabit bir faktörü içerisindedir. Bu sonuçlar, aynı hesaplama modelinde n boyutu, 1952'den beri sıkıştırma ve kodlamada bir dönüm noktası olan van u (nlgn) 'nin en gelişmiş önekini, en uygun öneki hesaplamak için van Leeuwen'in algoritmasının tek kombinasyonu ile geliştirir. (1976'dan beri bilinen) sıralı ağırlıklardan gelen ücretsiz kodlar, Ertelenmiş Veri Yapıları, üzerinde bulunan sorgulara bağlı olarak (1988'den beri bilinir) bir çoklu kümesi kısmen sıralamak için kullanılır.

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.