Архивирование и размер данных
В задачах на архивирование нужно различать исходный объём данных, размер архива, степень или коэффициент сжатия и процент сжатия. Удобный алгоритм всегда один: привести величины к одинаковым единицам, выбрать нужную формулу, выполнить вычисления и проверить, что архив не стал больше исходных данных без причины.
Основные понятия и единицы измерения
Архивирование — это упаковка одного или нескольких файлов в архив, часто с уменьшением их общего размера. Сжатие бывает без потерь и с потерями. В школьных задачах обычно предполагается, что после распаковки данные полностью восстанавливаются, а размер архива задан прямо или вычисляется по формуле.
Размер файла или набора файлов — объём памяти, который требуется для их хранения. Если в условии сказано, что файл занимает \(N\) байт, то это уже исходный размер данных. Размер нескольких файлов находят сложением их размеров.
В некоторых задачах используются десятичные единицы: \(1\) КБ \(=1000\) байт, \(1\) МБ \(=1000\) КБ. Основание системы указывается в условии или подразумевается контекстом. Если сказано «\(1\) Кбайт \(=1024\) байта», применяйте двоичное соотношение на всех шагах.
Чтобы найти размер набора файлов, сложите размеры всех файлов. Если размеры заданы в разных единицах, сначала переведите их в одну единицу.
При решении задач удобно пользоваться страницами размер набора файлов и сложение размеров файлов. Если требуется определить, какие файлы считать, сначала применяют отбор файлов по расширению.
Степень, коэффициент и процент сжатия
Пусть \(S\) — исходный размер данных, а \(A\) — размер архива. Важно не перепутать два похожих показателя. Степень сжатия показывает, во сколько раз исходные данные больше архива. Коэффициент сжатия иногда определяют как долю размера архива от исходного. В конкретной задаче всегда ориентируйтесь на данное в условии определение.
Здесь \(k\) — степень сжатия. Например, \(k=4\) означает, что архив в четыре раза меньше исходных данных.
Здесь \(q\) — коэффициент сжатия как доля исходного размера. Если \(q=0{,}25\), архив занимает четверть исходного объёма.
Процент сжатия показывает, на сколько процентов размер уменьшился. Эта величина связана со страницей процент сжатия. Если нужно найти размер архива по проценту сжатия \(p\), сначала замените процент десятичной дробью.
Степень сжатия: \(k=S/A\). Доля размера архива: \(q=A/S\). Процент уменьшения: \(p=(S-A)/S\cdot100\%\). В формулах \(S\) — исходный размер, \(A\) — архивный.
Исходный объём данных равен 80 Мбайт, архив занимает 20 Мбайт. Чему равна степень сжатия?
Алгоритм решения задач
- Выпишите, что известно: исходный размер \(S\), архивный размер \(A\), степень \(k\), коэффициент \(q\) или процент \(p\).
- Определите, что требуется найти.
- Приведите все размеры к одной единице: байтам, Кбайтам или Мбайтам.
- Выберите формулу и выразите неизвестную величину.
- Подставьте числа, вычислите результат и укажите единицу измерения.
- Проверьте ответ: архив при сжатии должен быть меньше исходных данных, поэтому обычно \(A<S\), \(k>1\), а \(0<q<1\).
Если архив содержит несколько файлов, сначала найдите их общий размер. Если каждый файл сжимается одинаково с коэффициентом \(q\), то можно применить формулу к сумме. Если для разных файлов заданы разные коэффициенты, размеры архивных частей вычисляются отдельно и затем складываются.
Для текстовых файлов исходный объём иногда приходится вычислять по числу символов и размеру одного символа. В таких задачах пригодится страница кодирование символов в файле. Количество файлов в папке, если оно дано или его нужно подсчитать, рассматривается на странице количество файлов в папке.
Разобранный пример
Набор файлов имеет размер 240 Мбайт. После архивирования его размер уменьшился на 35%. Найдите размер архива и степень сжатия.
Ответ: архив занимает \(156\) Мбайт, степень сжатия примерно \(1{,}54\). Проверка: \(156<240\), а степень сжатия больше единицы, значит результат согласуется со смыслом сжатия.
Обратные задачи и смешанные данные
Если известны архивный размер и степень сжатия, исходный объём находят из формулы \(k=S/A\): \(S=kA\). Если известен коэффициент \(q\), то \(S=A/q\). Если известен процент сжатия, размер архива вычисляют формулой \(A=S(1-p/100)\).
| Дано | Что найти | Формула |
|---|---|---|
| \(S\) и \(A\) | степень сжатия | \(k=S/A\) |
| \(S\) и \(A\) | процент сжатия | \(p=(S-A)/S\cdot100\%\) |
| \(S\) и \(p\) | архивный размер | \(A=S(1-p/100)\) |
| \(A\) и \(k\) | исходный размер | \(S=kA\) |
| \(A\) и \(q\) | исходный размер | \(S=A/q\) |
Не смешивайте размер архива с размером папки: в архив могут добавляться служебные данные, а при упаковке нескольких файлов результат зависит от способа архивации. В школьном условии используйте только те зависимости, которые явно заданы.
1. Делят \(A\) на \(S\) и называют результат степенью сжатия, хотя это коэффициент-доля. 2. Вычитают 35% не от исходного размера, а от уже уменьшенного. 3. Складывают мегабайты и килобайты без перевода единиц. 4. Забывают, что 20% сжатия означает сохранение 80% размера. 5. Округляют промежуточные результаты слишком рано. 6. Путают биты и байты: в одном байте 8 бит.
Если архив стал в \(r\) раз меньше, то \(A=S/r\), а процент сжатия равен \((1-1/r)\cdot100\%\). Например, при уменьшении в 5 раз архив составляет 20% исходного размера, а сжатие равно 80%.
Как проверить решение
- Все размеры записаны в одинаковых единицах.
- Процент переведён в дробь: \(15\%=0{,}15\).
- При сжатии архив не больше исходного набора.
- Степень сжатия вычислена как исходный размер, делённый на архивный.
- В ответе есть число и единица измерения либо процент.
Итоговая проверка
Главное
- Общий исходный размер набора равен сумме размеров входящих файлов.
- Степень сжатия \(k=S/A\) показывает, во сколько раз исходные данные больше архива.
- Процент сжатия равен \((S-A)/S\cdot100\%\), а архивный размер при известном проценте — \(A=S(1-p/100)\).
- Перед вычислениями переводите все размеры в одинаковые единицы и не путайте биты с байтами.
- После решения проверьте порядок величин: при обычном сжатии \(A<S\) и \(k>1\).