Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Методи стиску інформації

Реферат Методи стиску інформації





[1] .00. 01.00.01101400P [4]=P [2] .10. 01.00.011.015011P [5]=P [1] .10. 01.00. 011.01 [0] - порожній рядок. Символом «. »(Точка) позначається операція об'єднання (конкатенації).

Формуємо пари рядків, кожен з яких має вигляд (AB). Кожна пара утворює нову фразу і містить ідентифікатор попередньої фрази і біт, що приєднується до цієї фрази. Об'єднання всіх цих пар являє остаточний результат стиснення С. P [1]=P [0] .0 дає (00.0), P [2]=P [1] .0 дає (01.0) і т.д. Схема перетворення відображена в таблиці нижче.


ФормулыP[1]=P[0].0P[2]=P[1].1P[3]=P[1].0P[4]=P[2].1P[5]=P[1].1Пары00.0=00001.1=01101.0=01010.1=10101.1=011С000.011.010.101.011 =000011010101011

Всі формули, що містять P [0] зовсім не дають стиснення. Очевидно, що С длиннее U, але це виходить для короткої вихідної послідовності. У разі матеріалу більшого обсягу буде отримано реальне стиснення вихідної послідовності.


Локально адаптивний алгоритм стиснення


Цей алгоритм використовується для кодування (L, I), де L рядок довжиною N, а I - індекс. Це кодування містить у собі кілька етапів.

. Спочатку кодується кожен символ L з використанням локально адаптивного алгоритму для кожного із символів індивідуально. Визначається вектор цілих чисел R [0], ..., R [N - 1], який являє собою коди для символів L [0], ..., L [N - 1]. Ініціалізується список символів Y, який містить в собі кожен символ з алфавіту Х тільки один раз. Для кожного i=0, ..., N - 1 встановлюється R [i] дорівнює кількості символів, що передують символу L [i] зі списку Y. Взявши Y=[a, b, c, r] в якості вихідного і L=caraab, обчислюємо вектор R: (2 1 3 1 0 3).

. Застосовуємо алгоритм Хафмана або інший аналогічний алгоритм стиснення до елементів R, розглядаючи кожен елемент як об'єкт для стиснення. У результаті виходить код OUT і індекс I.

Розглянемо процедуру декодування отриманого стислого тексту (OUT, I).

Тут на основі (OUT, I) необхідно обчислити (L, I). Передбачається, що список Y відомий.

1. Спочатку обчислюється вектор R, що містить N чисел: (2 1 3 1 0 3).

2. Далі обчислюється рядок L, що містить N символів, що дає значення R [0], ..., R [N - 1]. Якщо необхідно, инициализируется список Y, що містить символи алфавіту X (як і при процедурі кодування). Для кожного i=0, ..., N - 1 послідовно встановлюється значення L [i], рівне символу в положенні R [i] зі списку Y (нумерується, починаючи з 0), потім символ зсувається до початку Y. Результуюча рядок L являє собою останню колонку матриці M. Результатом роботи алгоритму буде (L, I). Взявши Y=[a, b, c, r] обчислюємо рядок L=caraab.

Найбільш важливим фактором, що визначає швидкість стиснення, є час, необхідний для сортування обертань у вхідному блоці. Найбільш швидкий спосіб вирішення проблеми полягає в сортуванні пов'язаних рядків по суффиксам.

Для того щоб стиснути рядок S, спочатку сформуємо рядок S, яка є об'єднанням S c EOF, новим символом, який не зустрічається в S. Після цього використовується стандартний алгоритм до рядка S. Так як EOF відрізняється від інших символів в S, суфікси S сортуються в тому ж порядку, як і обертання S. Це може бути зроблено шляхом побудови дерева суфіксів, яке може бути потім обійдено в лексикографічному порядку для сортування суфіксів. Для цієї мети може бути використаний алгоритм формування дерева суфіксів Мак-Крейгта. Його швидкодія становить 40% від найбільш швидкої методики в разі роботи з текстами. Алгоритм роботи з деревом суфіксів вимагає більше чотирьох слів на кожен вихідний символ. Манбер і Майерс запропонували простий алгоритм сортування суфіксів рядка. Цей алгоритм вимагає тільки двох слів на кожен вхідний символ. Алгоритм працює спочатку з першими i символами суфікса а за тим, використовуючи положення суфіксів в сортованому масиві, робить сортування для перших 2i символів. На жаль цей алгоритм працює помітно повільніше.


Стиснення даних з використанням перетворення Барроуза-Вилера


Майкл Барроуз і Давид Вілер (Burrows-Wheeler) в 1994 році запропонували свій алгоритм перетворення (BWT). Цей алгоритм працює з блоками даних і забезпечує ефективне стиснення без втрати інформації. У результаті перетворення блок даних має ту ж довжину, але інший порядок розташування символів. Алгоритм тим ефективніше, чим більший блок даних перетвориться (наприклад, 256-512 Кбайт).

Послідовність S, що містить N символів ({S (0), ... S (N - 1)}), піддається N циклічним зрушенням (обертання), лексикографічної сортуванню, а останній символ при кожному обертанні витягується. З цих символів формується рядок L, де i-ий символ є останнім символом ...


Назад | сторінка 5 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Алгоритм сортування масивів
  • Реферат на тему: Алгоритм побудови електронного програми бази даних
  • Реферат на тему: Розробка програми, що реалізує алгоритм, який використовує z-буфер
  • Реферат на тему: Алгоритм створення бази даних &Значення коефіцієнта і показників ступеня у ...
  • Реферат на тему: Блочно-часової алгоритм фільтрації геолокаційні даних