Мне действительно нужна помощь с кодированием Хаффмана для сжатия без потерь. У меня приближается экзамен, и мне нужно понять это, знает ли кто-нибудь о простых учебниках, созданных для понимания этого, или может кто-нибудь объяснить.
Вопросы на экзамене, скорее всего, будут такими:
Предположим, что используется алфавит [A, B, C], а известное распределение вероятностей равно P(A)=0,6, P(B)=0,2 и P(C)=0,2. Для простоты также предположим, что и кодер, и декодер знают, что длина сообщений всегда равна 3, поэтому в терминаторе нет необходимости.
Сколько битов необходимо для кодирования сообщения ACB методом кодирования Хаффмана? Вам необходимо предоставить дерево Хаффмана и код Хаффмана для каждого символа. (3 балла)
Сколько битов необходимо для кодирования сообщения ACB с помощью арифметического кодирования? Вам необходимо предоставить подробную информацию о процессе кодирования. (3 балла)
Используя приведенные выше результаты, обсудите преимущество арифметического кодирования над кодированием Хаффмана. (1 балл)
Ответы:
Код Хаффмана: A - 1, B - 01, C - 00. Результат кодирования равен 10001, поэтому необходимо 5 бит. (3 балла)
Процесс кодирования арифметического кодирования: Символ Нижний верхний диапазон 0,0 1,0 1,0 A 0,0 0,6 0,6 C 0,48 0,6 0,12 B 0,552 0,576 0,024 Окончательное двоичное кодовое слово равно 0,1001, что равно 0,5625. Поэтому нужно 4 бита. (3 балла)
В кодировании Хаффмана длина кодового слова для каждого символа должна быть целым числом. Но оно может быть дробным в арифметическом кодировании. Поэтому арифметическое кодирование часто более эффективно, чем кодирование Хаффмана, как показано выше. (1 балл)