Вимога кодування, що не має префікса, призводить до великих дерев через те, що дерево має бути повним. Чи є поріг, коли некодированное зберігання даних фіксованої довжини було б ефективніше, ніж кодування даних?
Вимога кодування, що не має префікса, призводить до великих дерев через те, що дерево має бути повним. Чи є поріг, коли некодированное зберігання даних фіксованої довжини було б ефективніше, ніж кодування даних?
Відповіді:
Ентропія H(A)
цієї проблеми є 1.998
. Як кодування Хаффмана, так і кодування фіксованої довжини для цієї проблеми має середню довжину кодового слова як 2
. І FYI кодування, яке ви отримали за допомогою кодування Huffman, є неправильним. Huffman Encoding також створює коди, подібні фіксованій довжині для цієї проблеми. Він використовує жадібний підхід. Таким a
чином, код не отримується як, 0
але натомість він отримує 00
. Переробіть дерево, яке ви генеруєте за допомогою кодування Huffman. Дерево, яке ви повинні отримати:
Кодування Хаффмана наближає розподіл населення з двома ймовірностями. Якщо справжній розподіл складається з потужностей з двома ймовірностями (а вхідні символи абсолютно некорельовані), кодування Хаффмана є оптимальним. Якщо ні, то можна краще зробити кодування діапазону. Однак оптимально серед усіх кодувань призначати конкретні набори бітів певним символам на вході.
Так, це завжди оптимально.
Ні, немає порогового значення, де б було використано менше місця для використання некодованих даних фіксованої довжини.
Я знайшов ряд доказів в Інтернеті, але є достатньо дискусій у статті Вікіпедії, що кодує Хаффмана .
Це стосується також інших методів, які досягають більш високої компресії (робота поза тим простором, для якого код Хаффмана є оптимальним).