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