Huffman kodunu zaman içinde hesaplamak için en kötü durum optimal algoritmasının olduğu iyi bilinmektedir . Bu iki dikey şekilde geliştirildi:
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.
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].
STACS 2006 DAN SONUÇ yanlış olmazmış gibi , 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şlemleri
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ır, dışbükey gövdenin kaplamasının bir kenarının benzeşimini kullanarak sembollerini kapsayan bir kod uzunluğunu .
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:
- İçin , ve
- yani günlük sıralama düzeni değişmez
- ancak üç koddan iki kodu bitten daha iyidir.
Bir başka ilginç soru, büyük olduğunda karmaşıklığı azaltmaktır , yani tüm kodların farklı uzunlukları vardır:
- ö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 .