~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 7AAABAE760D7189884F1A144100162EF__1667811360 ✰
Заголовок документа оригинал.:
✰ Dynamic Markov compression - Wikipedia ✰
Заголовок документа перевод.:
✰ Динамическое марковское сжатие — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Dynamic_Markov_compression ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/7a/ef/7aaabae760d7189884f1a144100162ef.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/7a/ef/7aaabae760d7189884f1a144100162ef__translat.html ✰
Дата и время сохранения документа:
✰ 18.06.2024 18:00:01 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 7 November 2022, at 11:56 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Динамическое марковское сжатие — Википедия Jump to content

Динамическое марковское сжатие

Из Википедии, бесплатной энциклопедии

Динамическое марковское сжатие ( DMC ) — это сжатия данных алгоритм без потерь , разработанный Гордоном Кормаком и Найджелом Хорспулом . [1] Он использует прогнозирующее арифметическое кодирование, аналогичное прогнозированию путем частичного сопоставления (PPM), за исключением того, что входные данные прогнозируются по одному биту за раз (а не по одному байту за раз). DMC имеет хорошую степень сжатия и умеренную скорость, аналогичен PPM, но требует несколько больше памяти и не получил широкого распространения. Некоторые недавние реализации включают в себя экспериментальную программу сжатия от Нании Франческо Антонио, ocamyd от Фрэнка Швеллингера и подмодель в paq8l от Мэтта Махони. Они основаны на 1993 года реализации Гордона Кормака на языке C .

Алгоритм [ править ]

DMC прогнозирует и кодирует по одному биту за раз. Он отличается от PPM тем, что кодирует биты, а не байты, и от алгоритмов смешивания контекстов , таких как PAQ, тем, что для каждого прогноза используется только один контекст. Прогнозируемый бит затем кодируется с использованием арифметического кодирования .

Арифметическое кодирование [ править ]

Побитовый арифметический кодер, такой как DMC, состоит из двух компонентов: предиктора и арифметического кодера. Предиктор принимает n -битную входную строку x = x 1 x 2 ... x n и присваивает ей вероятность p ( x ), выраженную как произведение серии предсказаний, p ( x 1 ) p ( x 2 | Икс 1 ) п ( Икс 3 | Икс 1 Икс 2 ) ... п ( Икс п | Икс 1 Икс 2 ... Икс п –1 ). Арифметический кодер поддерживает два двоичных числа высокой точности, p low и p high , представляющие возможный диапазон общей вероятности, которую модель присвоит всем строкам, лексикографически меньшим, чем x , с учетом битов x , замеченных до сих пор. Сжатый код для x — это p x , кратчайшая битовая строка, представляющая число между p low и p high . Всегда можно найти число в этом диапазоне не более чем на один бит длиннее предела Шеннона , log 2 1 / p ( x ). Одно такое число можно получить из p high , отбросив все конечные биты после первого бита, который отличается от p low .

Сжатие происходит следующим образом. Начальный диапазон установлен на p low = 0, p high = 1. Для каждого бита предиктор оценивает p 0 = p ( x i = 0 | x 1 x 2 ... x i –1 ) и p 1 = 1. − p 0 , вероятность 0 или 1 соответственно. Затем арифметический кодер делит текущий диапазон ( p low , p high ) на две части пропорционально p 0 и p 1 . Тогда поддиапазон, соответствующий следующему биту x i, становится новым диапазоном.

При декомпрессии предиктор делает идентичную серию прогнозов, учитывая уже распакованные биты. Арифметический кодер выполняет идентичную серию разбиений диапазона, затем выбирает диапазон, содержащий p x , и выводит бит x i , соответствующий этому поддиапазону.

На практике нет необходимости сохранять в памяти p low и p high с высокой точностью. По мере сужения диапазона ведущие биты обоих чисел будут одинаковыми и могут быть выведены немедленно.

Модель DMC [ править ]

Предиктор DMC представляет собой таблицу, которая отображает (побитово) контексты в пару счетчиков n 0 и n 1 , представляющих количество нулей и единиц, ранее наблюдавшихся в этом контексте. Таким образом, он предсказывает, что следующим битом будет 0 с вероятностью p 0 = n 0 / n = n 0 / ( n 0 + n 1 ) и 1 с вероятностью p 1 = 1 − p 0 = n 1 / n . Кроме того, каждая запись таблицы имеет пару указателей на контексты, полученные добавлением 0 или 1 справа от текущего контекста (и, возможно, удалением битов слева). Таким образом, нет необходимости искать текущий контекст в таблице; достаточно поддерживать указатель на текущий контекст и переходить по ссылкам.

В исходной реализации DMC исходная таблица представляет собой набор всех контекстов длиной от 8 до 15 бит, начинающихся на границе байта. Исходное состояние — это любой из 8-битных контекстов. Счетчики представляют собой числа с плавающей запятой, инициализированные небольшой ненулевой константой, например 0,2. Счетчики не инициализируются нулевым значением, чтобы можно было кодировать значения, даже если они ранее не встречались в текущем контексте.

Моделирование одинаково для сжатия и распаковки. Для каждого бита p 0 и p 1 вычисляются , бит xi xi кодируется или декодируется, модель обновляется путем добавления 1 к счетчику, соответствующему , и следующий контекст находится путем прохождения ссылки, xi соответствующей .


Добавление новых контекстов [ править ]

DMC, как описано выше, эквивалентен контекстной модели первого порядка. Однако добавление более длинных контекстов для улучшения сжатия является нормальным явлением. Если текущий контекст — A, а следующий контекст B отбросит биты слева, то DMC может добавить (клонировать) новый контекст C из B. C представляет тот же контекст, что и A, после добавления одного бита справа, как и в случае с B. , но без отбрасывания каких-либо битов слева. Таким образом, ссылка из A будет перемещена из B, чтобы указывать на C. B и C сделают один и тот же прогноз, и оба будут указывать на одну и ту же пару следующих состояний. Общий счет n = n 0 + n 1 для C будет равен счету n x для A (для входного бита x ), и этот счетчик будет вычтен из B.

Например, предположим, что состояние A представляет контекст 11111. При входном бите 0 оно переходит в состояние B, представляющее контекст 110, полученное путем удаления 3 битов слева. В контексте А было 4 нулевых бита и некоторое количество единиц. В контексте B было 3 нуля и 7 единиц ( n = 10), что предсказывает p 1 = 0,7.

Состояние п 0 1 следующий 0 следующий 1
А = 11111 4 Б
Б = 110 3 7 И Ф

C клонируется из B. Он представляет контекст 111110. И B, и C предсказывают p 1 = 0,7, и оба переходят в одни и те же следующие состояния, E и F. Счет для C равен n = 4, что равно n 0 для A. Это оставляет n = 6 для B.

Состояние п 0 1 следующий 0 следующий 1
А = 11111 4 С
Б = 110 1.8 4.2 И Ф
С = 111110 1.2 2.8 И Ф

Состояния клонируются непосредственно перед переходом к ним. В оригинальном DMC условием клонирования состояния является то, что переход от A к B равен как минимум 2, а счетчик для B как минимум на 2 больше этого. (Когда второй порог больше 0, это гарантирует, что другие состояния все равно перейдут в B после клонирования). Некоторые реализации, такие как перехватчик, позволяют устанавливать эти пороговые значения в качестве параметров. В paq8l эти пороговые значения увеличиваются по мере использования памяти для замедления скорости роста новых состояний. В большинстве реализаций, когда память исчерпана, модель отбрасывается и повторно инициализируется обратно к исходной модели побайтового порядка 1.

Ссылки [ править ]

  1. ^ Гордон Кормак и Найджел Хорспул, «Сжатие данных с использованием динамического марковского моделирования», Computer Journal 30:6 (декабрь 1987 г.)

Внешние ссылки [ править ]


Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 7AAABAE760D7189884F1A144100162EF__1667811360
URL1:https://en.wikipedia.org/wiki/Dynamic_Markov_compression
Заголовок, (Title) документа по адресу, URL1:
Dynamic Markov compression - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)