СПОСОБ КОДИРОВАНИЯ ИНФОРМАЦИИ
METHOD OF CODING INFORMATION

Изобретение относится к представлению кода последовательностью цифр и может быть использовано для сжатия информации без потерь.
Задачей заявляемого изобретения является создание способа кодирования информации, повышающего степень сжатия и обеспечивающего регулирование времени сжатия.
Указанный технический результат достигается тем, что способ кодирования информации заключается в считывании из массива начальных данных участка битов, представлении считанного участка битов в виде числа, кодировании числа в виде аргументов математической функции, при этом значения аргументов функции задают таблично или вычисляют. Записывают в массив конечных данных вид функции, длину считанного участка, аргументы функции. Затем считывают последующий участок битов и аналогичным образом его кодируют, пока не будет достигнут конец массива начальных данных. Процесс кодирования проводят повторно над массивом конечных данных.
При невозможности кодирования числа производят циклический сдвиг считанного участка битов, при этом в массив конечных данных дополнительно записывают номер старшего разряда в считанном участке. Также при невозможности кодирования числа уменьшают длину считанного участка битов или изменяют вид функции.
При невозможности кодирования в массив конечных данных записывают определенное значение вида функции, длину считанного участка и участок считанных битов.
у
На Фиг.1 представлена схема кодирования с использованием математической функции х, включающая массив начальных данных 1, считанный участок битов 2, представленный в виде числа, кодированный участок 3, содержащий вид функции f, длину считанного участка s, аргументы функции х и у, номер n старшего разряда в считанном участке 2, массив конечных данных 4.
На Фиг.2 представлен алгоритм кодирования, где НД - массив начальных данных, D(НД) - длина массива начальных данных, D0 - начальная длина, НЧ - начальное число, КД - массив конечных данных, D(КД) - длина массива конечных данных. После завершения одного этапа сжатия Р конечные данные (КД) превращаются в начальные данные (НД) следующего этапа. Если счетчик сжимаемости i=0, данные не сжимаются.
Способ кодирования информации осуществляется следующим образом.
Определяют виды функций f и их количество. Задают максимальное max(s) и минимальное min(s) значение длины s считываемого участка битов 2, а также длину соответствующих виду функции аргументов. Вычисляют или задают таблицы значений аргументов для соответствующих функций f.
Считывают из массива начальных данных 1 участок 2 длиной max(s) бит и представляют его в виде числа.
y
Кодируют число в виде аргументов х и у математической функции f, например степенной f=x.
При невозможности кодирования числа в виде аргументов первого вида функции f1 производят циклический сдвиг, например, влево считанного участка битов 2 и производят повторное кодирование, при этом в кодированный участок 3 записывают номер n старшего разряда в считанном участке 2.
При отсутствии возможности кодирования числа в виде заданной функции с применением циклического сдвига уменьшают длину считанного участка битов 2 и определяют возможность кодирования, при этом длина считанного участка 2 битов при его уменьшении не может быть менее длины кодированного участка 3.
При невозможности кодирования числа при уменьшении длины считанного участка изменяют вид математической функции и пробуют повторно закодировать число с применением циклического сдвига и уменьшении его длины.
В случае успешного кодирования в массив конечных данных 4 записывают кодированный участок 3, содержащий вид функции f, длину считанного участка s, аргументы функции х и у, номер n старшего разряда, при этом длина каждого параметра, например, 8 бит.
В случае невозможности кодирования числа в массив конечных данных 4 записывают вид функции f, равный 0, длину s участка и весь участок 2 первоначально считанных битов.
Далее считывают следующий участок битов и аналогичным образом его кодируют, пока не будет достигнут конец массива начальных данных 1.
Затем массив конечных данных 4 представляют в виде нового массива начальных данных и процесс кодирования проводят повторно по заданному количеству этапов сжатия Р, что позволяет регулировать время кодирования информации и определять объем конечных данных.
При декодировании массива конечных данных 4 считывают первый параметр - вид функции f из кодированного участка 3. В случае, если он не равен 0, считывают значение длины s ранее считанного участка 2, аргументы функции х и у, номер n старшего разряда. Определяют значение закодированного числа и записывают его в массив длиной s.
В случае, если вид функции f равен 0, переписывают весь участок длиной s.
Далее считывают следующий кодированный участок битов и аналогичным образом его декодируют, пока не будет достигнут конец массива конечных данных 4.
Таким образом, применение в способе кодирования циклического сдвига участка данных, уменьшение его длины, использование различных функций, а также повторное кодирование конечного массива позволило повысить вероятность представления числа в виде аргументов функций, тем самым увеличить степень сжатия.