Статья Автор: Деникина Н.В., Деникин А.В.

1. Объем информации

Кодирование информации · Блок 2§5
SilverTests.ru · Подготовка к ИТМОТеория + паттерны + задания
Объём информации

Формулы, типы задач и олимпиадные паттерны ИТМО


1Фундамент: формула Хартли

Центральная формула всей темы. Если есть N равновероятных вариантов, минимальное число бит для кодирования одного варианта:

i = ⌈log₂N⌉
⌈ ⌉ — потолок (округление вверх до целого)
Ловушка «на единицу»: при N = 64 ответ K = 6, НЕ 7. Потому что log₂(64) = 6 — целое. Потолок от целого числа — оно само. Максимум различных кодов при i бит = 2i.
примеры
N = 2    → i = 1 бит    // да/нет
N = 5    → i = 3 бита   // ⌈2.32⌉ = 3
N = 256  → i = 8 бит    // ровно 1 байт
N = 3232 → i = 12 бит   // ⌈11.66⌉ = 12

На ИТМО чаще записывают I = log₂(N), подразумевая потолок при хранении кода.


2Кодирование текста
Vтекст = L × ⌈log₂(A)⌉ бит
L — число символов, A — мощность алфавита

Что нужно помнить

Параметр Типичные значения
Мощность алфавита ASCII — 256 (8 бит), Unicode — 65536 (16 бит = 2 байта)
Перевод единиц 1 байт = 8 бит, 1 КБ = 1024 Б, 1 МБ = 1024 КБ
«Минимально возможное одинаковое кол-во бит» = ⌈log₂(A)⌉ — стандартная формулировка ИТМО

Паттерн ИТМО: кодовая таблица + коды

Часто файл состоит из двух частей:

структура
V_файл   = V_таблица + V_коды
V_таблица = M × 16 бит          // M символов, каждый — 2-байтный Unicode
V_коды    = L × ⌈log₂(M)⌉ бит  // L символов текста

Типовая задача финала ИТМО: «Петя и Вася используют одинаковый метод, но у Пети алфавит 4M, а у Васи — M. Разница — X байт. Найти M.»


3Кодирование изображений
Vизобр = W × H × i бит
W × H — размер в пикселях, i = ⌈log₂(Colors)⌉ — глубина цвета

Типовые глубины цвета

i (бит) Цветов Название
1 2 Ч/Б
4 16 EGA
8 256 Индексированный
16 65536 High Color
24 16 777 216 True Color (RGB по 8 бит)

Паттерн ИТМО: метод А vs метод Б (блочный код)

финал 2023
// Ч/Б изображение 1024 × 768

Метод А: 1 бит на пиксель
V_A = 1024 × 768 × 1 = 786 432 бит

Метод Б: блоки 4×4, в каждом ровно 8 чёрных
Число блоков: (1024/4) × (768/4) = 256 × 192 = 49 152
Различных блоков 4×4 с 8 чёрными: C(16,8) = 12870
Бит на блок: ⌈log₂(12870)⌉ = 14
V_Б = 49 152 × 14 = 688 128 бит

Экономия: 786432 − 688128 = 98 304 бит = 12 288 байт

Ключ: комбинаторный подсчёт числа состояний блока → потолок логарифма. Это «визитная карточка» задачи 2 финала ИТМО.


4Кодирование звука
Vзвук = f × b × t × i бит
f — частота (Гц), b — разрядность (бит), t — время (с), k — каналы
Параметр Типичные значения
Частота дискретизации f 8000, 22050, 44100, 48000 Гц
Глубина кодирования b 8, 16, 24 бит
Каналы k 1 (моно), 2 (стерео), 4 (квадро), 8
пример
// Стерео, 48 кГц, 16 бит, 2 мин
V = 48000 × 16 × 120 × 2 = 184 320 000 бит
  = 23 040 000 байт ≈ 21,97 МБ

На ИТМО звук встречается реже. Главное — не перепутать кГц и Гц, не забыть каналы.


5Комбинаторный подсчёт (ключевая идея ИТМО)

На ИТМО не просто дают число цветов — его нужно вычислить через комбинаторику.

Формулы, которые нужны

формулы
// Сочетания (без повторений, порядок не важен)
C(n,k) = n! / (k! × (n−k)!)

// Размещения (порядок важен)
A(n,k) = n! / (n−k)!

// Перестановки
P(n) = n!

// Размещения с повторениями
nk    // k позиций, n вариантов на каждую

Типовые сюжеты ИТМО

Сюжет Формула подсчёта Затем
Блок 4×4 с 8 чёрными из 16 C(16,8) = 12870 ⌈log₂(12870)⌉ = 14 бит
Блок 3×3, не менее 5 чёрных C(9,5)+C(9,6)+C(9,7)+C(9,8)+C(9,9) ⌈log₂(…)⌉
Слово длины L из алфавита A AL ⌈log₂(AL)⌉ = L × ⌈log₂(A)⌉
Палитра из N цветов, RGB по r бит (2r)³ = 23r i = ⌈log₂(N)⌉ на пиксель

Лайфхак: C(n,k) для маленьких n считай через треугольник Паскаля (держи в голове до n=16).


6Паттерн ИТМО: «Петя vs Вася»

Это стержневой паттерн задачи 2 финала и отбора:

структура задачи
1. Дан объект (текст, изображение, звук)
2. Петя кодирует методом А → объём V_A
3. Вася кодирует методом Б → объём V_Б
4. Дана разница: V_A − V_Б = Δ байт (или бит)
5. Найти: параметр (мощность алфавита, размер блока…)

Алгоритм решения

метод
Шаг 1. Записать V_A через параметры.
Шаг 2. Записать V_Б через параметры (здесь «фишка»).
Шаг 3. Подставить V_A − V_Б = Δ.
Шаг 4. Решить уравнение (часто с ⌈log₂(x)⌉ — перебор по x).
Шаг 5. Проверить единицы: бит/байт/КБ.
Главная ловушка: ⌈log₂(x)⌉ — кусочно-постоянная функция. Уравнение с ней НЕ решается алгебраически — нужно подбирать x. Приём: перебери k = 1,2,3,… — это число бит. При каждом k определи диапазон x: 2k−1 < x ≤ 2k. Подставь и проверь.

7RLE и блочное кодирование

RLE (Run-Length Encoding)

Текст разбивается на серии одинаковых символов. Каждая серия — пара (длина, символ):

формула
V_RLE = S × (b_len + b_sym) бит

// S — количество серий в тексте
// b_sym = ⌈log₂(A)⌉ — бит на код символа
// b_len = ⌈log₂(M)⌉ — бит на длину серии
// M — максимальная длина серии

Тонкость ИТМО: два варианта b_len

финал 2022
// Вася: b_len по максимальной длине серии M
b_len = ⌈log₂(M)⌉

// Таня: b_len по числу РАЗЛИЧНЫХ длин D
b_len = ⌈log₂(D)⌉
// D может быть намного меньше M
// → два разных объёма → система из двух уравнений

Блочное кодирование

формула
V_блок = (W/n × H/n) × ⌈log₂(D)⌉ бит

// D — число различных допустимых блоков
// Без ограничений: D = 2^(n²)
// С ограничением «ровно k чёрных»: D = C(n², k)

8Энтропия Шеннона (теоретический предел)

Формула Хартли работает, когда все N вариантов равновероятны. Если символы встречаются с разной частотой, минимальная средняя длина кода определяется энтропией Шеннона:

H = −∑ pi log₂ pi
pi — вероятность i-го символа; H измеряется в битах на символ

Что даёт эта формула

H — это нижняя граница средней длины кода. Ни один код (даже Хаффман) не может дать среднюю длину меньше H. При этом Хаффман всегда укладывается в H + 1.

пример
// Частоты: A = 1/2, B = 1/4, C = 1/8, D = 1/8

H = −(1/2·log₂(1/2) + 1/4·log₂(1/4) + 1/8·log₂(1/8) + 1/8·log₂(1/8))
  = −(1/2·(−1) + 1/4·(−2) + 1/8·(−3) + 1/8·(−3))
  = −(−0.5 − 0.5 − 0.375 − 0.375)
  = 1.75 бит/символ

// Хаффман для этих частот даёт ровно 1.75 — совпадение!
// Так бывает, когда все pᵢ — степени двойки.
когда не совпадает
// Частоты: A = 1/3, B = 1/3, C = 1/3

H = −3 × (1/3 · log₂(1/3)) = log₂(3) ≈ 1.585 бит/символ

// Хаффман: A=0, B=10, C=11 → средняя длина:
// 1/3·1 + 1/3·2 + 1/3·2 = 5/3 ≈ 1.667
// 1.667 > 1.585, но 1.667 < 1.585 + 1 ✓

Частные случаи

Распределение H Комментарий
Все N равновероятны: p = 1/N log₂ N Совпадает с Хартли
Один символ p = 1 0 Нет неопределённости
Два символа: p, 1−p −p log₂ p − (1−p) log₂(1−p) Макс. при p = 1/2 → H = 1
На ИТМО: Шеннон появляется в задачах вида «оценить минимальный средний объём на символ» или «доказать, что код Хаффмана оптимален». Считать H обычно не просят — но понимание нужно, чтобы не путать Хартли (равновероятные) и Шеннона (произвольные частоты).

9Чек-лист формул
Что кодируем Формула
Бит на символ K = ⌈log₂(A)⌉
Текст V = L × ⌈log₂(A)⌉
Текст + кодовая таблица V = M × 16 + L × ⌈log₂(M)⌉
Растровое изображение V = W × H × ⌈log₂(Colors)⌉
Изображение блоками V = (W/n × H/n) × ⌈log₂(D)⌉
Звук V = f × b × t × k
RLE V = S × (⌈log₂(M)⌉ + ⌈log₂(A)⌉)
Энтропия Шеннона H = −∑ pᵢ log₂ pᵢ (нижняя граница ср. длины)
Сочетания C(n,k) = n! / (k!(n−k)!)
Единицы 1 Б = 8 бит, 1 КБ = 1024 Б, 1 МБ = 1024 КБ

Проверь себя8 заданий
 
 
1 / 8
© SilverTests.ru · Кодирование информации · §5 Объём информации
Печать