Добре відомо, що існує найгірший варіант оптимального алгоритму для обчислення коду Хаффмана в часі . Це покращується двома ортогональними способами:
Оптимальні вільні коди префікса можуть бути обчислені швидше, якщо набір різних частот невеликий (наприклад, розмір ): сортуйте частоти за допомогою [Munro і Spira, 1976], щоб скористатися малим значенням та обчислити дерево Хаффмана в лінійний час від відсортованих частот. Це дає рішення в
Існує алгоритм для обчислення еквівалентних кодів, де - кількість різних кодових слів [Білал та Ельмасрі].
Чи є спосіб комбінувати ці методи, щоб покращити поточну найкращу складність ?
РЕЗУЛЬТАТ ВІД STACS 2006 SEEM бути неправим , Elmasry опубліковано Arxiv в 2010 році (http://arxiv.org/abs/cs/0509015) версія оголошуючи - операції на несортовані вході і - операції на впорядкованому вході
Я бачу аналогію зі складністю обчислення плоского опуклого корпусу, де алгоритми в (сортування на основі, як алгоритм для коду Хаффмана) і в (подарунок обгортання) були витіснені алгоритмом Кіркпатріка та Зейделя в (пізніше виявився оптимальним примірником за складністю форми ). проти передбачає можливість алгоритму зі складністю , або навіть де - кількість кодових слів довжини , використовуючи аналогію краю опуклого корпусу, що охоплює вказує на довжину коду, що охоплює символи.
Простий приклад показує, що сортування (округлих) логарифмічних значень частот (у лінійному часі в моделі оперативної пам'яті слова ) не дає оптимального вільного коду з префіксом у лінійному часі:
- Для , і
- тому сортування журналу не змінює порядок
- все ж два коди з трьох коштують біт більше, ніж оптимально.
Іншим цікавим питанням буде зменшення складності, коли великий, тобто всі коди мають різну довжину:
- наприклад, коли частоти є різними логічними значеннями. У цьому випадку можна сортувати частоти в лінійний час в оперативній пам'яті слова і обчислити код Хаффмана в лінійний час (оскільки для сортування їхніх журнальних значень достатньо для сортування значень), в результаті чого загальний лінійний час , набагато краще, ніж з алгоритму Белала та Ельмасрі.