Тема уроку: Світ у стиснутому вигляді
Мета уроку: Зрозуміти, чому дані займають місце, як працюють алгоритми стиснення та в чому різниця між ZIP-архівом і форматом JPEG.
Проблема: Один кадр нестисненого Full HD відео займає близько 6 МБ. У відео 24 кадри на секунду. Без стиснення 1 година фільму займала б ~500 ГБ. Жоден інтернет-канал цього б не витримав.
Питання до групи: Хто бачив «квадратики» на відео, коли інтернет поганий? Це і є робота алгоритмів стиснення, які намагаються врятувати ситуацію.
1. Навіщо нам стиснення?
Стиснення (компресія) — це процес перекодування даних з метою зменшення їх обсягу. Стиснення — це завжди компроміс між якістю, розміром та потужністю процесора (який витрачає час на розпакування).
2. Два головні типи стиснення
Все стиснення ділиться на два табори:
А. Стиснення без втрат (Lossless)
Після розпакування ми отримуємо ідентичну копію оригіналу. Жоден біт не зникає.
Б. Стиснення з втратами (Lossy)
Алгоритм відкидає частину інформації, яку людське око або вухо майже не помічає.
Увага: Повернути оригінальну якість після такого стиснення неможливо!
3. Як це працює? (Алгоритми «на пальцях»)
Метод RLE (Run-Length Encoding)
Найпростіший метод. Він шукає повтори.
Метод Хаффмана (Статистичний)
Алгоритм аналізує, які символи зустрічаються часто, а які — рідко.
Це схоже на азбуку Морзе, де найпопулярніша буква «Е» — це просто одна крапка.
4. Популярні формати та їх призначення
|
Тип даних |
Формати |
Тип стиснення |
|
Текст / Документи |
.zip, .rar, .7z |
Без втрат |
|
Зображення |
.jpeg, .webp |
З втратами |
|
Зображення (професійні) |
.png, .tiff |
Без втрат |
|
Звук |
.mp3, .aac |
З втратами |
|
Звук (high-end) |
.flac, .alac |
Без втрат |
5. Практичне завдання для студентів (Кейс)
Ситуація: У вас є 100 фотографій у форматі RAW (дуже великі) і текстовий звіт. Вам треба відправити це викладачу на пошту, де ліміт 20 МБ.
Питання:
Завдання для студентів (можна на дошці або в зошитах):
Стисніть наступний рядок за допомогою методу RLE та порахуйте коефіцієнт стиснення ($K$).
Рядок: WWWWWWWWBBWWWWWWRRRRRRRRRR (26 символів)
Рішення:
$$K = \frac{\text{Розмір оригіналу}}{\text{Розмір стисненого}} = \frac{26}{9} \approx 2.88$$
Висновок: Файл став майже в 3 рази меншим.
Чому не можна стискати вічно?
Поясніть студентам поняття інформаційної ентропії. Якщо файл уже максимально стиснений (як-от архів .rar або пісня .mp3), повторне стиснення не дасть результату, а іноді навіть збільшить розмір файлу через додавання заголовків архіву.