Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структуры данных / Си структуры данных2.doc
Скачиваний:
107
Добавлен:
23.02.2015
Размер:
1.36 Mб
Скачать

9.5. Моделирование и энтропия

Одним из наиболее важных достижений в теории сжатия за последнее десятиле­тие явилась идея разделения процесса на две части: на кодирование, при котором непосредственно производится сжатый поток битов, и на модели­рование, которое поставляет информацию кодированию. Эти две раздельные части названы кодированием и моделированием. Моделирование присваивает вероятности символам, а кодирование переводит эти вероятности в последовательность битов. К сожалению, последнее понятие нетрудно спутать, поскольку "кодирование" часто используют в широком смысле для обозначения всего процесса сжатия (включая моделирование). Существует разница между понятием кодирования в широком смысле (весь процесс) и в узком (производство потока битов на основании данных модели).

Связь между вероятностями и кодами установлена в теореме Шеннона кодирова­ния истоточника, которая показывает, что символ, ожидаемая вероятность по­явления которого есть p, лучше всего представить -log p битами. Поэтому сим­вол с высокой вероятностью кодируется несколькими битами, тогда как маловеро­ятный требует многих битов. Мы можем получить ожидаемую длину кода посредством усреднения всех возможных символов, даваемого формулой:

H=-∑ p(i) log p(i) .

Это значение называется энтропией распределения вероятности, т.к. это мера ко­личества порядка (или беспорядка) в символах.

Задачей моделирования является оценка вероятности для каждого символа. Из этих вероятностей может быть вычислена энтропия. Очень важно отметить, что эн­тропия есть свойство модели. В данной модели оцениваемая вероятность символа иногда называется кодовым пространством, выделяемым символу, и соответствует распределению интервала (0,1) между символами, и чем больше вероятность симво­ла, тем больше такого "пространства" отбирается у других символов.

Наилучшая средняя длина кода достигается моделями, в которых оценки веро­ятности как можно более точны. Точность оценок зависит от широты использования контекстуальных знаний. Например, вероятность нахождения буквы "о" в тексте, о котором известно только то, что он на английском языке, может быть оценена на основании того, что в случайно выбранных образцах английских текстов 6% си­мволов являются буквами "о". Это сводится к коду для "о", длиной 4.17. Для ко­нтраста, если мы имеем фразу "to be or not t", то оценка вероятности появления буквы "о" будет составлять 99% и ее можно закодировать через 0.014 бита. Боль­шего можно достичь, формируя более точные модели текста. Практические модели лежат между двумя крайностями этих примеров.

Модель по существу есть набор вероятностей распределения, по одному на каждый контекст, на основании которого символ может быть закодирован. Контекс­ты называются классами условий, т.к. они определяют оценки вероятности. Нетри­виальная модель может содержать тысячи классов условий.

9.6. Адаптированные и неадаптированные модели

В порядке функционального соответствия декодировщик должен иметь доступ к той же модели, что и кодировщик. Для достижения этого есть три способа моделирования: статичное, полуадаптированное и адаптированное.

Статичное моделирование использует для всех текстов одну и ту же модель. Она задается при запуске кодировщика, возможно на основании образцов типа ожи­даемого текста. Такая же копия модели хранится вместе с декодировщиком. Недо­статок состоит в том, что схема будет давать неограниченно плохое сжатие вся­кий раз, когда кодируемый текст не вписывается в выбранную модель, поэтому статичное моделирование используют только тогда, когда важны в первую очередь скорость и простота реализации.

Полуадаптированное моделирование решает эту проблему, используя для каждо­го текста свою модель, которая строится еще до самого сжатия на основании ре­зультатов предварительного просмотра текста (или его образца). Перед тем как окончено формирование сжатого текста, модель должна быть передана pаскодиpов­щику. Несмотря на дополнительные затраты по передаче модели, эта стратегия в общем случае окупается благодаря лучшему соответствию модели тексту.

Адаптированное (или динамическое) моделирование уходит от связанных с этой передачей расходов. Первоначально и кодировщик, и раскодировщик присваивают себе некоторую пустую модель, как если бы символы все были равновероятными. Кодировщик использует эту модель для сжатия очередного символа, а раскодировщик - для его разворачивания. Затем они оба изменяют свои модели одинаковым образом (например, наращивая вероятность рассматриваемого символа). Следующий символ кодируется и достается на основании новой модели, а затем снова изменя­ет модель. Кодирование продолжается аналогичным раскодированию образом, которое поддерживает идентичную модель за счет применения такого же алгоритма ее изменения, обеспечивает отсутствие ошибок во время кодирования. Используемая модель, которую к тому же не нужно передавать явно, будет хорошо соответство­вать сжатому тексту.

Адаптированные модели представляют собой элегантную и эффективную технику и обеспечивают сжатие, по крайней мере не худшее производимого неадаптированны­ми схемами. Оно может быть значительно лучше, чем у плохо соответствующих тек­стам статичных моделей. Адаптированные модели, в отличие от полуадаптиpо­ванных, не производят их предварительного просмотра, являясь поэтому более привлекательными и с лучшим сжатием. Т.о. алгоритмы, описываемые в дальнейшем, при кодировании и декодировании будут выполняться одинаково. Модель никогда не передается явно, поэтому сбой происходит только в случае нехватки под нее памяти.