RLE (Run Length Encoding) Часть 2 Паначёв Максим Александрович / ассистент кафедры вычислительной математики ИМКН / Солодушкин Святослав Игоревич / к. ф. -м. н. , доцент кафедры вычислительной математики ИМКН) /
RLE (Run Length Encoding) • RLE – один и самых популярных и простых вариантов кодирования информации. • Основная идея алгоритма – замена серии повторяющихся «символов» на её код: AAAAA 5 A • Идею данного алгоритма рассмотрим на примере текста. • Для удобства будем считать, что каждый символ текста занимает 1 байт.
Jump-кодирование • Способ RLE-кодирования, при котором кодируются не только серии подряд идущих одинаковых символов, но и произвольные группы символов. • Для произвольной группы символов, которую нельзя сократить по принципу «AAAAA 5 A» вводится особая метка, которая указывает на, то, что данная группа символов не была закодирована. • Декодер «перепрыгивает» эту группу символов, отправляя её в выходной поток без изменения.
Jump-кодирование: правила подстановки • Правило #1: k подряд идущих одинаковых символов заменяем на пару: (k), базовый символ.
Jump-кодирование: правила подстановки • Правило #2: несжимаемая цепочка из k символов представляется в виде: (F(k)), строка символов без изменения. • Функция F(x) подбирается таким образом, чтобы при декодировании по символу с кодом (n) однозначно определялась обратная подстановка.
Jump-кодирование: правила подстановки • На практике обычно используется следующая схема. – серия подряд идущих k символов кодируется в виде: (k), базовый символ; – несжимаемая цепочка из k символов кодируется как: (k + 128), цепочка без изменения; – k < 127.
Jump-кодирование: правила подстановки Пример № 1: AAAAABCDCDBBBB -> (5)A(133) BCDCD(4)B Пример № 2, "500 букв А": (127)А(127)А(119)А
Контрольные вопросы • Сжатие данных – это способ кодирования или способ шифрования? – сжатие данных – это способ кодирования информации; – сжатие данных – это вид шифрования информации. • Как будет выглядеть Jump-код для строки «ABBBB#A#B» ? – A(4)B(132)#A#B – A(1)B(132)#A#B – (1)A(4)B(132)#A#B