ИННОВАЦИИ БИЗНЕСУ

ПОДРОБНАЯ ИНФОРМАЦИЯ

Заявку на получение дополнительной информации по этому проекту можно заполнить здесь.

Номер

19-029-03

Наименование проекта

Постфиксное RLE-кодирование

Назначение

Сжатие цепочек повторяющихся кодов

Рекомендуемая область применения

Программно-аппаратные средства компрессии цифровой информации

Описание

Результат выполнения научно-исследовательской работы.

Один из наиболее простых методов сжатия -rle(runlengthsencoding) - предполагает кодирование цепочки повторяющихся кодов записью кода и счетчика числа его повторений. При этом требуется расширение исходного кодового множества для представления кодов счетчиков повторений. Предлагается простой и эффективный в реализации вариант алгоритмаrle, основанный на постфиксной записи кодов числа повторений.

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

Анализ:Допустим в последовательности имеется строк повторов длины . Общая её длина . Длина строк повторов после кодирования составит , а общая длина: . Относительное сокращение длины последовательности:

,

где - вероятность цепочки повторов длины .

В большинстве случаев при кодировании обычных текстов и текстов после bw (burrows, wheeler) - преобразования наилучшие результаты наблюдались при и почти линейно ухудшались с его увеличением.

Реализация:

program rle; {postfixes rle algorithm. copyright (c) yuri a.gadzhiev, 2003.

all rights reserved.}

const k=2;

var stdin,stdout:text;

rep:longint;

c,l:char;

{================Кодирование================}

procedure encode;

begin

while not eof(stdin) do begin

read(stdin,c);

if (c=l) and (rep<256) then="">

inc(rep);

if rep < k="" then="">

write(stdout,c);

end

end

else begin

if rep > k-2 then begin

write(stdout,char(byte(rep+1-k)));

rep:=0;

end;

write(stdout,c);

l:=c;

end

end

end;

{============Декодирование=============}

procedure decode;

var check:boolean;

begin

check:=true;

while not eof(stdin) do begin

read(stdin,c);

write(stdout,c);

if check and (c=l) then inc(rep);

if rep=k-1 then begin

read(stdin,c); rep:=byte(c);

while rep>0 do begin

write(stdout,l);

dec(rep);

end;

check:=false;

end

else check:=true;

l:=c;

end;

end;

\

Преимущества перед известными аналогами

Низкая вычислительная сложность алгоритма

Стадия освоения

Проверено в лабораторных условиях

Результаты испытаний

Соответствуют технической характеристике

Технико-экономический эффект

Снижение затрат памяти и времени центрального процессора ЭВМ на 1200 рублей на 1 ГГб емкости.

Возможность передачи за рубеж

Возможна передача за рубеж

Дата поступления материала

24.03.2003

Инновации и люди

У павильонов Уральской выставки «ИННОВАЦИИ 2010» (г. Екатеринбург, 2010 г.)

Мероприятия на выставке "Инновации и инвестиции - 2008" (Югра, 2008 г.)

Открытие выставки "Малый бизнес. Инновации. Инвестиции" (г. Магнитогорск, 2007 г.)

Демонстрация разработок на выставке "Малый бизнес. Инновации. Инвестиции" (г. Магнитогорск, 2007 г.)