Хочу немного приоткрыть завесу тайны над этими магическими действиями, превращающими большое в маленькое. Любопытные люди будут спать спокойнее
1. Сжатие без потерь.
Принципы.
Для начала : что же такое сжатие информации вообще ?
Рассмотрим простенький пример. У нас есть такой текст, глупый и бессмысленный :
Исходный код
sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd
Его размер = 150 букв (150 байт по-компьютерному).
Самый простой способ - написать каждое слово и указать его количество
Исходный код
sacd*40
Размер результата = 7 букв, это сжатие в 21 раз !
Примерно такой способ иногда применяется для сжатия картинок BMP, называетсяя RLE (Run Length Encoding).
Более сложный вариант (и реальный , так как на практике редко встречаются одинаковые повторяющиеся слова/данные).
Заменим все слова "sacd" на букву "a", и напишем в начале, что на что заменено, получим
Исходный код
a=sacd;a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
Размер такого текста 68 букв, текст сжат в 2.2 раза ! А для получения исходного текста надо заменить все буквы а на sacd.
Усложним немного :
Исходный код
dvd-audio sacd sacd dvd-audio sacd sacd sacd sacd dvd-audio sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd dvd-audio dvd-audio sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd sacd
Размер = 200 букв. Сделаем две замены.
Исходный код
a=sacd;b=dvd-audio;a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
получилось 80 байт, сжатие в 2.5 раза.
Степень сжатия зависит от содержания.
Чем сложнее текст (любые исходные данные), тем хуже он будет сжиматься :
Исходный код
dvd-audio dvd-audio sacd dvd-audio музыка Включить музыка музыка смайлы sacd подпись уведомление Включить dvd-audio уведомление
Размер = 131
В сжатом виде получаем
Исходный код
a=dvd-audio;b=sacd;c=музыка;d=Включить;e=смайлы;f=подпись;g=уведомление;a a b a c d b b e b f g d a g
Результат = 103 слова, сжатие всего в 1.27 раза.
Этот пример показывает, что разные данные сжимаются по-разному.
Можно усложнять алгоритмы (способы) если не бесконечно, то очень долго, до такой степени, что компютер будет крепко задумываться при сжатии данных даже самого маленького размера. Бытовые архиваторы (программы для сжатия файлов) используют оптимальные по соотношению результат/затраты алгоритмы.
Дальше - самое интересное - сжатие звука "с потерями".