Научная статья на тему 'Применение системы интегрируемых функций для генерации вспомогательного ряда, используемого в алгоритме архивации данных'

Применение системы интегрируемых функций для генерации вспомогательного ряда, используемого в алгоритме архивации данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
176
108
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Применение системы интегрируемых функций для генерации вспомогательного ряда, используемого в алгоритме архивации данных»

УДК

Применение Системы Итерируемых Функций для генерации вспомогательного ряда, используемого в алгоритме архивации данных Поддубный А.П Юрков Н.К., Андреев А.Н.

Введение

Целью архивации файлов является не только экономия места на диске, но и более надежная и быстрая передача данных по ЛВС. Сжатие основано на утверждении что большинство типов данных обладают той или иной степенью избыточности. На устранении избыточности информации, содержащейся в исходных данных, направлены все существующие алгоритмы сжатия. Примером избыточности является повторение в файле фрагментов (например, однотонные области в графическом файле). Также считается, что данных, не обладающих свойством избыточности (например, случайный сигнал или шум, зашифрованная информация), невозможно сжать без потерь [1].

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

Для решения проблемы связанной с неэффективной работой архиваторов, со сложно-определённой структурой файла. Этот подход основывается на использовании дополнительной хаотичной дополнительной генерируемой последовательности с помощью, которой происходит сжатие данных. Данный подход позволяет использовать в качестве словаря, на который опирается процесс архивации, заранее генерируемую последовательность.

Как один из возможных вариантов в качестве такой последовательности может быть использован набор псевдослучайных чисел. Причём он должен быть восстановим, иначе декомпрессия данных будет невозможна. В качестве такой последовательности может быть использован фрактал, а точнее координаты его точек, который способен предоставить для компрессии достаточно хаотичную последовательность. Для построения фрактала предлагается использовать системы итерируемых функций (СИФ).

СИФ и её преимущества для создания псевдослучайной

последовательности

Согласно [2] итерация - это результат повторного применения какой-либо математической операции. Так, если у = f (x) ° f1(x) есть некоторая функция от х, то функции f2(x)= f [f1(x)], f3(x)= f [f2(x)],..., fn (x)= f [fn-1(x)] называется соответственно второй, третьей, ... , n-й итерациями функции f (x). Системы итерируемых функций позволяют за одну итерацию получить значения функции, которые будут участвовать при расчёте новых значений на следующей итерации.

Метод "Систем Итерируемых Функций" появился в середине 80-х годов как наиболее простое средство получения фрактальных структур.

СИФ представляет собой систему функций из некоторого фиксированного класса функций, отображающих одно многомерное множество на другое. Наиболее простая СИФ состоит из аффинных преобразований плоскости:

X = x ■ a + y ■ b + e У = x ■ c + y ■ d + f

Где

a = cos(a) ■ scale _ x b = sin(a) ■ scale _ x c = sin(a) ■ scale _ y d = cos(a) ■ scale _ y e = move _ x f = move _ y

где

scale _ x - масштабирование по оси X; яшк _ y - масштабирование по оси Y; a - угол поворота;

move _x - параллельный перенос по оси X; move _ y - параллельный перенос по оси Y.

СИФ раньше уже применялись для сжатия данных, а точнее для сжатия изображений. Впервые возможность применения теории систем итерируемых функций к проблеме сжатия изображения была исследована Майклом Барнсли и Аланом Слоуном. Они запатентовали свою идею в 1990 и 1991 гг. Спустя год Арнауд Джеквин при защите диссертации описал практический алгоритм фрактального кодирования, в котором используются системы доменных и ранговых блоков изображения, блоков квадратной формы, покрывающих все изображение. Этот подход стал основой для большинства методов фрактального

кодирования, применяемых сегодня. Он был усовершенствован Ювалом Фишером, который использовалось разложение изображения в квадродерево, а также оптимизировал алгоритм поиска.

В рассматриваемом в проекте архиваторе, СИФ применяется не для подбора подобных исходному значению последовательностей, а для создания последовательности псевдо случайных значений. Существует несколько преимуществ использования СИФ и фрактальной алгебры в качестве метода создания псевдослучайной последовательности:

Фракталы позволяют создать псевдо хаотичную последовательность;

В системах с динамическим хаосом детерминированные уравнения приводят к хаотическим решениям, хаотическим в том смысле, что в них экспоненциально быстро расходятся близлежащие первоначально траектории и возникает неустойчивость. При этом оказалось, что фракталы, как геометрические объекты, могут быть успешно применены при описании траекторий хаотических систем [3].

Вычисляя координаты точек и записывая, соответствующим способом, в последовательность можно создать псевдо хаотичный ряд.

СИФ позволяет создать разные последовательности меняя несколько коэффициентов;

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

СИФ позволяет восстановить последовательность при известных коэффициентах и формуле расчёта;

Так как последовательность создана с использованием итераций, начиная с первого шага, то её (последовательность) можно восстановить, зная начальные координаты функции, значения коэффициентов и число итераций. Восстановленная последовательность (ряд) по заданным параметрам

используется в восстановлении сжатых данных.

Данный способ отвечает всем необходимым условиям, создания псевдослучайной последовательности для компрессии и декомпрессии данных. Он позволяет генерировать псевдослучайный ряд, имея минимальный набор входных параметров, а также восстановить его (ряд) при таком же наборе параметров.

В частном случае, в качестве вспомогательной последовательности, может выступать любой мультимедийный файл, имеющий хаотичную структуру. Единственное условие поставленное файлу, его размер должен быть не меньше минимальной длины необходимой для работы программы. В случае если файл больше этой длины, то для компрессии используется его часть. Использование Множества Мандельброта

В программной реализации алгоритма для создания вспомогательной последовательности используется Множество Мандельброта, а точнее его СИФ которая отвечает за расчет координат точек построения фрактала.

Впервые множество Мандельброта было описано в 1905 году Пьером Фату (Pierre Fatou), французским математиком, работавшим в области аналитической динамики комплексных чисел. Фату изучал рекурсивные процессы вида

Z —> Z2 + с

Начав с точки Z0 на комплексной плоскости, можно получить новые

точки, последовательно применяя к ним эту формулу. Такая последовательность

2

точек называется орбитой z0 при преобразовании z z + с

Фату нашел, что орбита z0 = 0 при этом преобразовании показывает достаточно сложное и интересное поведение. Существует бесконечное множество таких преобразований — своё для каждого значения с.

В математике множество Мандельброта — это фрактал, определённый как множество точек на комплексной плоскости, для которых итеративная последовательность [4]

Z0 = 0 Z1

Z2 + с Z

02

:Z1 + C,...Zn+1 - Zl + С ;

не уходит в бесконечность. (не является расходящийся).

Если представить с как координаты точки на комплексной плоскости с = х +1 • у и раскрыть последовательность для каждой точки, то получится:

^0 = 0;

Z j= Z02 + c = x + iy;

Z 2= Zj + c = (x + iy)2 + x + iy = x2 + 2ixy - y2 + x + iy = x2 - y2 + x + (2xy + y)i;

Z3 = Z22 + c = (x2 - y2 + x + (2xy + y)i)2 + x + iy;

и так далее.

Преобразовав эти выражения в виде итеративной последовательности

значений координат комплексной плоскости x и y, т. е. заменив Zn на xn +i' Уп , а c = р +1 • q, мы получим:

xn+1 = xn - Уп + Р

y n+i = 2 xnyn + q

Также было доказано [4], что как только модуль Zn окажется больше 2

(или в терминах действительной и мнимой частей + > 2),

последовательность станет стремиться к бесконечности.

Принимая во внимание эти ограничения, в программной реализации были поставлены необходимые условия на вычисление вспомогательной по следовательно сти.

Для использования в программе координаты надо перевести в подобающий вид, то есть генерируемая последовательность должна быть представлена тем же форматом что и исходные данные. В разрабатываемой реализации алгоритма используется байтовое 16-тиричное представление данных, каждый байт данных может быть представлен как число от 00 до FF (что сопоставимо в 10-ричной системе от 0 до 255).Опытным путём было выявлено, что координаты представляются дробными числами, в которых хаотичность после каждой итерации заметна только в дробной части числа, в то время как целая часть довольно стабильна.

После каждой итерации полученные значения преобразовываются в необходимый формат и записываются в последовательность одним из 3х способов:

первый способ преобразования основан на принципе хранения данных в области памяти компьютера;

второй применяет встроенные функции языка программирования и использует двойное преобразование числа в строку и обратно;

третий основан на представлении данных, полученных после вычисления СИФ, в матричном виде, простейшим преобразовании матриц и записи

значений из них во вспомогательную последовательность [5,6].

Вывод

У каждого из этих способов есть свои преимущества и недостатки, в частности первый даёт малый показатель хаотичности значений по сравнению с последующими, однако он же является самым быстрым в вычислении. Однако, хочется заметить что в данном случае в предлагаемом алгоритме архивации последовательность генерируется один раз перед процессом архивации и процессом восстановления, поэтому даже использование матричного способа создания последовательности незначительно увеличит время на архивацию и восстановление данных, тем более по сравнению с процессом поиска и замены, который занимает большую часть всего времени на архивацию.

Литература

[1] Сэломон Д.. Сжатие данных, изображения и звука. — М.: Техносфера,

2004. — С. 368.

[2] Коллатц Л., Функциональный анализ и вычислительная математика, пер. с нем., М., 1969.

[3] http://multifractal.narod.ru/9chaos/9chaos.htm

[4] Мандельброт Б. Б. “Фракталы и хаос. Множество Мандельброта и другие чудеса” РХД 2009 г. 400 стр.

[5] Лидовский В.В. “Основы теории информации и криптографии”. Учебный курс. INTUIT.ru.

[6] Поддубный А.П., Холуев М.А., Галактионов Н.С. Использование файла в качестве избыточного словаря для препроцессинга данных на основе словарных методов сжатия. Известия высших учебных заведений. Поволжский регион. Технические науки. 2010, № 4, с. 47-54.

Поддубный Александр Петрович, аспирант Юрков Николай Кондратьевич, д.т.н., профессор Андреев Александр Николаевич к.т.н., профессор

i Надоели баннеры? Вы всегда можете отключить рекламу.