Каталог 398 МБ стискався лише до 393 МБ за допомогою стиснення 7Z та нормального ZIP. Це нормально? Якщо так, то чому люди продовжують використовувати ZIP у Windows?
Каталог 398 МБ стискався лише до 393 МБ за допомогою стиснення 7Z та нормального ZIP. Це нормально? Якщо так, то чому люди продовжують використовувати ZIP у Windows?
Відповіді:
Якщо ви стискаєте вже стиснуті речі (AVI, JPEG, MP3), ви не отримаєте нічого іншого, крім упаковки всього в один файл.
Стиснення працює, шукаючи повторювані візерунки всередині елементів для стискання. Крім того, що ви не хочете втрачати жодних даних під час стискання файлів, стиснення повинно бути без втрат (*).
Тепер, маючи це ззаду в голові, подумайте, як файли (елементи) зберігаються на комп'ютері. На найнижчому рівні всі вони лише купа 0-х та 1-х.
Таким чином, питання може бути перетворене на: " Як я можу представити купу 1 і 0 більш компактним способом, ніж оригінальне представлення? "
Тож давайте почнемо з початку, як можна ущільнити нормальне представлення одного біта (одиничного 1 або одиничного 0)?
Відповідь дійсно проста: ви не можете! ... один біт представлений максимально компактно.
Справедливо кажучи, давайте більш приклад, як би ви стиснули двійкову рядок, як 0111 0111 0100 0111 ?
Тому що ми вже знаємо, що дивлячись на окремі шматочки нам зовсім не допоможуть, ми знаємо, що нам потрібно дивитися в більшій масштабі. Наприклад, візьмемо одночасно 4 біти. Тепер ми бачимо, що двійковий рядок "0111" відбудеться у прикладі 3 рази, тож чому б ми не представили це одним бітом: 0? але це все ще залишає 0100 у темряві, тож давайте представляємо, що за допомогою "1"
ми знаємо, що стиснули оригінал до: "0010"
Це справді добре! Однак це лише основи "алгоритму кодування Хаффмана" , і в реальному світі це буде дещо складніше, ніж це (і вам також потрібно буде зберігати таблицю з кодуючою інформацією в ній, але це трохи до відповіді на це питання).
Тепер, щоб дійсно відповісти на ваше запитання: чому не можна так добре стиснути всі дані ?, давайте візьмемо інший приклад: "0001 0110 1000 1111", якщо ми використовуємо ту саму методику, що і вище, ми б не змогли стиснути дані (повторення не знайдено), і таким чином не було б користі від стиснення ...
(*) З цього, звичайно, є винятки. Найвідоміший приклад цього - стиснення, що використовується для MP3-файлів. тут деяка інформація про звуки втрачається під час перетворення їх із необробленого оригінального файлу у формат MP3, таким чином стискання втрачає . Інший приклад - формат .JPG для зображень
З розділу Обмеження статті Вікіпедії про стиснення без втрат :
Алгоритми стиснення даних без втрат не можуть гарантувати стиснення для всіх наборів даних. Іншими словами, для будь-якого (без втрат) алгоритму стиснення даних буде набір вхідних даних, який не зменшується при обробці алгоритмом. Це легко довести з елементарною математикою, використовуючи аргумент підрахунку. ...
В принципі, теоретично неможливо збивати всі можливі вхідні дані без втрат.
Це нормально?
Ні. Не із "нормальними" файлами. Які файли ти стискав? Якщо вони вже були стиснуті, наприклад, це JPG, GIF, PNG, відео або навіть інші поштові файли, вони не будуть сильно стискатися жодним алгоритмом. Якщо ви спробуєте стиснути файли Text, XML, нестиснений BMP, вихідний код тощо, zip забезпечить хорошу компресію, але, мабуть, не є абсолютною найкращою.
Чому люди продовжують використовувати ZIP у Windows?
Однією з причин є те, що в системі вбудовано приємне поштове звернення - ви можете клацнути правою кнопкою миші будь-де та створити новий поштовий файл, а потім запустити його до нього. Ви можете просто двічі клацнути поштовий файл, і він відкриється як папка. Ви можете скопіювати з нього речі, а іноді навіть використовувати їх на місці. Вам не потрібно встановлювати WinZip або 7z або будь-яку іншу програму. Я зазвичай рекомендую людям цього не робити.
У zip-архіві, що містить багато файлів, кожен файл стискається незалежно. Якщо між файлами існує велика схожість, то інший інструмент може забезпечити набагато кращу компресію.
Наприклад, tar.gz об'єднує файли разом, потім стискає результати. Так само "твердий" rar-файл використовує подібність між файлами.
Мінус tar.gz або солідного рару полягає в тому, що ви більше не можете витягувати один файл з великого архіву, не розпаковуючи архів аж до потрібного файлу.