В информатике и теории информации , Танстолы кодирование является формой энтропии кодирования используется для сжатия без потерь сжатия данных .
История [ править ]
Кодирование Tunstall было предметом докторской диссертации Брайана Паркера Танстолла в 1967 году, когда он работал в Технологическом институте Джорджии. Тема дипломной работы - «Синтез бесшумных кодов сжатия» [1].
Его конструкция является предшественницей Lempel – Ziv .
Свойства [ править ]
В отличие от кодов переменной длины , которые включают кодирование Хаффмана и Лемпеля – Зива, кодирование Tunstall - это код, который отображает исходные символы в фиксированное количество битов. [2]
И коды Танстолла, и коды Лемпеля – Зива представляют слова переменной длины кодами фиксированной длины. [3]
В отличие от типичного кодирования набора, кодирование Tunstall анализирует стохастический источник с кодовыми словами переменной длины.
Можно показать [4] , что для достаточно большого словаря, число битов в исходном письме может быть сколь угодно близко к , к энтропии источника.
Алгоритм [ править ]
Алгоритм требует в качестве входных данных алфавит , а также распределение вероятностей для каждого входного слова. Также требуется произвольная константа , которая является верхней границей размера словаря, который он будет вычислять. Рассматриваемый словарь,, построен как дерево вероятностей, в котором каждое ребро связано с буквой из входного алфавита. Алгоритм выглядит так:
D: = дерево из листьев, по одному на каждую букву в .Пока : Превратите наиболее вероятный лист в дерево с листьями.
Пример [ править ]
Эта статья может потребовать очистки, чтобы соответствовать стандартам качества Википедии . Конкретная проблема: неверные вероятности. ( Август 2014 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Представим, что мы хотим закодировать строку «hello, world». Далее предположим (несколько нереалистично), что входной алфавит содержит только символы из строки «hello, world» - то есть, 'h', 'e', 'l', ',', '', 'w', ' о ',' г ',' д '. Таким образом, мы можем вычислить вероятность каждого символа на основе его статистического появления во входной строке. Например, буква L встречается трижды в строке из 12 символов: вероятность равна .
Инициализируем дерево, начиная с дерева из листьев. Таким образом, каждое слово напрямую связано с буквой алфавита. 9 слов, которые мы получаем таким образом, можно закодировать в выходной бит фиксированного размера .
Затем мы берем лист с наибольшей вероятностью (здесь ) и преобразуем его в еще одно дерево листьев, по одному для каждого символа. Мы повторно вычисляем вероятности этих листьев. Например, последовательность из двух букв L встречается один раз. Учитывая, что существует три появления букв, за которыми следует L, результирующая вероятность равна .
Мы получаем 17 слов, каждое из которых можно закодировать в бит фиксированного размера .
Обратите внимание, что мы можем повторять и дальше, каждый раз увеличивая количество слов .
Ограничения [ править ]
Кодирование Tunstall требует, чтобы алгоритм знал до операции синтаксического анализа, каково распределение вероятностей для каждой буквы алфавита. Эта проблема характерна для кодирования Хаффмана .
Требование вывода блока фиксированной длины делает его меньше, чем у Lempel – Ziv , который имеет аналогичную структуру на основе словаря, но с выводом блока переменного размера. [ требуется разъяснение ]
Ссылки [ править ]
- ^ Танстолл, Брайан Паркер (сентябрь 1967). Синтез бесшумных кодов сжатия . Технологический институт Джорджии .
- ^ http://www.rle.mit.edu/rgallager/documents/notes1.pdf , Исследование алгоритма Tunstall в Массачусетском технологическом институте
- ^ "Адаптивное кодирование источника от переменной до фиксированной длины - кодирование Лемпеля-Зива".[1] [2]
- ^ [3] , Исследование алгоритма Танстолла изотдела теории информации EPFL.
Викискладе есть медиафайлы, связанные с кодированием Tunstall . |