Головна » Реферати » Реферати 1 курс » Економічна інформатика |
Архівація даних
Вступ
Хотите править дрессированными животными мира postal? Игру postal 3 торрент скачать можно легко на высокой скорости без ограничений. Кроме того, арсенал игрока постал 3 невероятно широк, начиная с обычного пистолетика, и заканчивая переносной ядерной бомбой.
З розвитком комп'ютера стали збільшуватися й обсяги інформації збереженої в ньому, що у свою чергу привело до розвитку технологій по збереженню цієї інформації в стиснутому виді, тобто в архівах. Для цього була придумана безліч програм здійснюючих архівацію інформації.
Однак у роботі з цією інформацією іноді небажано розкривати повний архів, щоб взяти один чи два необхідних чи файли ж просто подивитися, що в архіві за інформація.
Програми-архіватори, за винятком одиниць, не надають зручних оболонок позволяющих просто, швидко й у наочній формі розібратися з вмістом архівів.
Архіватори -- це програми, що дозволяють створювати й обробляти архівні копії файлів. При цьому з архівні копії мають менший розмір, чим оригінали. За допомогою спеціальних алгоритмів стиску з файлів віддаляється вся надлишкова інформація, а при застосування зворотних алгоритмів розпакування архівна копія відновлюється в первісному виді.
Найбільш відомі программи-архіватори для MS-DOS: ARJ (розроблювач -- Robert K. Jung), pkzip (компанія PKWARE Inc.), lha (Haruyasu Yoshizaki), zoo (Rahul Dhesi). Безумовним лідером в усьому світі за останні 5 років став архіватор RAR. В даний час RAR активно витісняє ZIP як основну утиліту стиску FTP архівів у мережі INTERNET. RAR я є єдиною всесвітньо використовуваною програмою, створеної російським програмістом (за винятком TETRIS). Всі архіватори відрізняються використовуваними алгоритмами стиску, форматами архівних файлів, швидкістю роботи і т.д.
1. Ідея кодування з стисненням
Тепер давайте поміркуємо як же і на чому можливо економити місце при стисненні файлів. В деяких файлах зустрічаються досить довгі ланцюги однакових байтів.
Уявіть собі такий файл:
aaaaabbbccccccccccccccadddddddddddddddd {end of file}.
Файл займає на диску 39 байт. Зрозуміло, що інформація в файлі дещо надлишкова і зберігання файлу в такому вигляді недоцільне. Зовсім інша справа, якщо файл буде мати такий вигляд:
5a3b14ca16d {end of file}.
В такому випадку файл буде займати лише 11 байт. Слідуючи з цього файл можна записати більш економічно 39/11= 3.5 разів. На цьому ж прикладі можна описати ще один спосіб економії дискового місця. Як видно файл складається всього з чотирьох символів. Якщо спів ставити кожному з них пару бітів, то отримаємо:
a – "00",
b – "01",
c – "10",
d – "11".
Іншими словами файл можна закодувати таким чином, що кожен символ буде кодуватися не вісьмома, а двома бітами. І тоді економія буде чотирикратною (8/2=4). Слід зауважити, що цей варіант буде спільний і однаково ефективний навіть якщо в файлі немає жодного однакового ланцюга. Зауважте, що для застосування такого алгоритму кількісний склад представлений в файлі байт повинен бути неповним. Наприклад, якщо в файлі представлені 200 різних символів, то для однозначної ідентифікації кожного з них доведеться використати всі вісім біт ( семи не вистачить, так як комбінації з семи біт можуть приймати лише 128 значень), що не дозволить досягнути ніяких результатів при використанні цього способу стиснення.
Отже, якщо ви зрозуміли суть приведених прикладів, то вам в повинні бути зрозумілі ідеї, згідно яким проходить стиснення файлів. Зауважте, що знаючи, яким саме правилом користувались при стисненні, архіви можна буде розпаковувати і отримувати початкові файли. Це варіанти архівації без втрати якості.
З деяких пір користувачу стало недостатньо тільки текстів. І користувачі отримали можливість зберігати на своїх жорстких дисках музику, зображення, відео. Всі ці файли також зберігаються в вигляді послідовності байтів. І якщо в тексті втрата хоча б одної букви або знака може мати фатальні наслідки, то в зображенні чи в відео кліпі інформація інколи наскільки надлишкова, що неминуче видалення частини інформації ніяким чином не вплине на сприйняття людини (за рахунок обмежень, які накладаються зором и слухом). Звідси і ряд методів стиснення з втратою якості.
2. Алгоритм Хаффмана
Це алгоритм архівації без втрати якості. В розглянутих вище прикладах передбачувалось, що, або ж початковий файл складається в основному з однорідних ланцюгів байтів, або ж кількість використовуваних символів достатньо мала ( тобто файл складається з невеликої кількості елементів таблиці ASCII). Уявимо собі самий простий випадок, коли в файлі представлена більша частина таблиці ASCII і майже немає однорідних послідовностей. В такому випадку припустимий результат можливо отримати тільки якщо різні байти (символи) зустрічаються в даному файлі з різною частотою. Тоді найбільш часто трапляючись символи можуть бути закодовані меншим числом біт, а ті що зустрічаються досить рідко навпаки більшим числом біт. В результаті отриманий після кодування файл с більшою вірогідністю буде меншого об'єму, ніж початковий.
Перш ніж описати алгоритм перекодування, який дозволяє найбільш часто зустрічаємі символи (байти) кодувати не вісьмома, а набагато меншим числом біт, потрібно вказати на обмеження, який має кожен, навіть самий ефективний алгоритм без втрати якості.
Можна уявити, що всі файли – це тексти, написані на алфавіті, який складається з 256 літер (так воно власне і є). Розглянемо всю множину файлів, розмір не перевищує n байт (де n будь – яке число). І припустимо, що існує деякий алгоритм кодування, який любий файл стискує з "додатною" ефективністю. Тоді множина всіх їх архівів які входять в склад всіх файлів, розмір яких менше n байт. Згідно нашому припущенню існує відповідність між двома закінченими множинами, кількість елементів яких не співпадає. Звідси можливо зробити досить вагомі висновки: 1) не існує архіватора, який би однаково добре пакував будь-які файли, 2) для будь-якого архіватора знайдуться файли, в результаті стиснення яких будуть отримані архіви в кращому випадку не меншого розміру чим початкові файли.
Тепер почнемо описання алгоритму Хаффмана. Розглянемо його на прикладі наступного файлу:
cccacbcdaaabdcdcddcddccccccccccc {end of file}
Розпишемо частоти кожного з символів:
a – 4,
b – 2,
c – 19,
d – 7.
Весь файл займає 32 байта. Кожен з символів в початковому файлі кодується згідно таблиці ASCII вісьмома бітами:
a – 01100001,
b – 01100010,
c – 01100011,
d – 01100100,
Крок №1. Розмістимо ці чотири символи в порядку зменшення їх частот:
{(c,19),(d,7),(a,4),(b,2)}
Крок №2. На наступному рядку запишемо набір, отриманий з попереднього наступним чином: замість двох останніх символів з їх частотами запишемо новий елемент, котрий замість назви символу буде мати запис "Вершина #n", а замість частоти – сума частот останніх двох елементів попереднього набору;
відсортуємо отриманий набір по спаданню.
{(c,19),(d,7),( "Вершина #1", 6)}
Крок №3. Переходимо на крок №2до тих пір, поки набір не буде складатися тільки з одного елемента: ("Вершина #last_number", summa_vseh_chastot):
{(c,19), ("Вершина #2", 13)}
{( "Вершина #3", 32)} (візуальна ілюстрація див. Малюнок №1)
Що ж отримали? Розгляньте малюнок. Ви бачите дерево, яке росте з листків! Якщо з'єднати лінією кожен з елементів "вершина #x" з тими елементами попередніх наборів, сума частот яких зберігається в другій частині елемента "вершина #x", то ми отримаємо так би мовити дерево(в програмуванні подібні структури називаються бінарними деревами).
Суть цієї деревовидної структури в тому, щоб кожному з символів спів ставити різне число біт в залежності від його частоти (як вже казалося, в нетиснутому файлі символи зберігаються в виді груп по вісім біт). Якщо уважно придивитись в цей малюнок, ви побачите, що кожна з гілок відмічена або нулем або одиницею. Таким чином, якщо уявно пройтись по дереву від кореня до якої-небудь вершини, маючої символ, то послідовність нулів та одиниць, які зустрічаються на вашому шляху, буде комбінацією біт для цього символу. Наприклад, символ "с" як найбільш часто зустрічаємий буде кодуватися одним бітом "0", символ "d" двома бітами "10" і т.д. (див. Малюнок №2)
3. Архівація даних. Архіватор WinRar
a. видалення файлів після архівування;
Ця команда доступна як у режимі керування файлами, так і в режимі керування архівами. У режимі керування файлами вона видаляє виділені файли і папки в Кошик, тому випадково вилучені дані згодом можна буде відновити. Однак у режимі керування архівами виділені файли і папки віддаляються остаточно, тому ви повинні робити це обережно. Для запуску цієї команди використовуйте меню "Команди", кнопку панелі інструментів "Видалити", клавіші чи
Остаточно видаляти файли, не поміщаючи їх у Кошик, можна й у режимі керування файлами. Для цього замість клавіші