Усиление степени сжатия текста: различия между версиями

Перейти к навигации Перейти к поиску
Строка 21: Строка 21:


== Основные результаты ==
== Основные результаты ==
Нотация. Эмпирическая энтропия
'''Нотация. Эмпирическая энтропия'''




Пусть s – строка над алфавитом S = {a1, ..., ah}. Обозначим для каждого ai 2 S за ni количество вхождений ai в s. Эмпирическая энтропия нулевого порядка строки s определяется как H0(s) = - £?=1(M,7|S|) log(ni/jsj), где все алгоритмы берутся по основанияю 2, а 0 log 0 = 0. Хорошо известно, что H0 представляет собой максимальный уровень сжатия, которого можно достичь при использовании уникального декодируемого кода, в котором каждому символу алфавита назначается уникальное кодовое слово. Более высокой степени сжатия можно достичь, если кодовое слово символа зависит от k символов, следующих за ним (то есть от его контекста).2 Определим ws как строку единичных символов, непосредственно предшествующих вхождениям w в s. Например, для s = bcabcabdca получим cas = bbd. Значение
Пусть s – строка над алфавитом <math>\Sigma = \{ a_1, ..., a_h \} \;</math>. Обозначим для каждого <math>a_i \in \Sigma \;</math> за <math>n_i \;</math> количество вхождений <math>a_i \;</math> в s. ''Эмпирическая энтропия нулевого порядка'' строки s определяется как <math>H_0(s) = - \sum^h_{i = 1} (n_i / |s|) \; log (n_i / |s|)</math>, где все алгоритмы берутся по основанияю 2, а 0 log 0 = 0. Хорошо известно, что <math>H_0 \;</math> представляет собой максимальный уровень сжатия, которого можно достичь при использовании уникального декодируемого кода, в котором каждому символу алфавита назначается уникальное кодовое слово. Более высокой степени сжатия можно достичь, если кодовое слово символа зависит от k символов, следующих за ним (то есть от его ''контекста''). [''Большинство алгоритмов сжатия данных обычно рассматривают контекст, '''предшествующий''' кодируемым символам. В данном описании используется нестандартный «прямой» контекст для упрощения нотации в последующих разделах. Работа с «прямым» контекстом эквивалентна работе с традиционным «обратным» контекстом для обращенной строки s (подробнее см. в [3]).''] Определим <math>w_s \;</math> как строку единичных символов, непосредственно предшествующих вхождениям w в s. Например, для s = bcabcabdca получим <math>ca_s = bbd \;</math>. Значение
 
(1) <math>H_k(s) = \frac{1}{|s|} \sum_{w \in \Sigma^k} |w_s| \; H_0(w_s)</math>


(1)
= 1  X  jwsjH0(w
w2
представляет эмпирическую энтропию k-го порядка для s и является нижней границей степени сжатия, которой можно достичь при использовании кодовых слов, которые зависят только от k символов, непоследственно следующих за кодируемым.
представляет эмпирическую энтропию k-го порядка для s и является нижней границей степени сжатия, которой можно достичь при использовании кодовых слов, которые зависят только от k символов, непоследственно следующих за кодируемым.
2 Большинство алгоритмов сжатия данных обычно рассматривают контекст, предшествующий кодируемым символам. В данном описании используется нестандартный «прямой» контекст для упрощения нотации в последующих разделах. Работа с «прямым» контекстом эквивалентна работе с традиционным «обратным» контекстом для обращенной строки s (подробнее см. в [3]).




4551

правка

Навигация