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

Равномерное кодирование. Алфавит.

Равномерное кодирование — это способ передачи информации, при котором каждая возможная символическая единица (например, буква или цифра) закодирована с использованием фиксированного количества битов. Это делает кодирование предсказуемым и упрощает процесс декодирования. Например, если мы хотим закодировать символы A, B, C и D с помощью равномерного кодирования, мы можем использовать 2 бита, чтобы закодировать каждый символ:

A = 00
B = 01
C = 10
D = 11

Такой подход полезен в различных областях, например, в компьютерных науках и телекоммуникациях, где важна надежность передачи данных.

Равномерное кодирование также является основой для более сложных кодировок, которые могут учитывать частоту появления символов для более эффективного использования пространства. Такой метод, как «Код Хаффмана», использует разные длины кодов для различных символов в зависимости от их частоты.

Однако равномерное кодирование имеет свои ограничения. Если символы передаются с разной вероятностью, фиксированная длина кодов может привести к неэффективному использованию пространства и увеличению объема передаваемых данных. Это можно исправить с помощью адаптивных методов или неравномерных кодов, но равномерное кодирование остается важным и простым методом в теории информации.
 

Почему кодирование выполняется в битах?

Бит (англ. binary digit) — минимальная единица информации в вычислительной технике, принимающая значение 0 или 1.
Компьютеры работают с двоичными данными, поэтому:

  • Любая информация (текст, числа, изображения) кодируется в битах.

  • Биты объединяются в байты (1 байт = 8 бит), которые являются минимальной адресуемой единицей памяти.

Пример:
Символ A в ASCII кодируется как 01000001 (8 бит = 1 байт).


Что такое алфавит в теории информации?

Алфавит — это конечный набор символов, используемых для кодирования информации.

  • Включает буквы, цифры, спецсимволы (например, A, B, ..., Z, 0, 1, ..., 9, !, ?).

  • Мощность алфавита (N) — количество символов в нём.

Примеры:

  • Английский алфавит: N = 26 (A–Z).

  • Алфавит из цифр и спецсимволов: N = 10 (цифры) + 20 (символы) = 30.


Как определить количество бит на символ?

Для равномерного кодирования:

Найти минимальное число бит (i), удовлетворяющее условию:

\(2^{i-1} < N \le2^i\), где N — мощность алфавита.
 

Количество бит для кодирования одного символа алфавита мощностью N

\(i = \lceil \log_2(\text{N}) \rceil\)

На языке Python: 
from math import log, ceil
i = ceil(log(N, 2))

ceil - функция, которая округляет число в скобках вверх (до ближайшего целого числа, не меньшего числа в скобках)


Пример:
Для алфавита из 1360 символов (цифры + спецсимволы):

\(2^{10}< 1360 <=2^{11}=2048\) ⇒ i=11 бит/символ 

Расчет объема памяти для хранения последовательности

Формула:

\(I = K ×i \),
где I (бит) - объем памяти, необходимый для хранения последовательности из K символов, i - количество бит, которым кодируется один символ из алфавита.

Пример задачи:

Дано:

Последовательность: 234 символа.
Алфавит: 1360 символов.

Найти:
Количество байт, необходимый для хранения последовательности символов, если известно, что последовательность занимает в памяти минимальное целое число байт.

Решение:
  1. i = 11 бит 

  2. Объем последовательности:

    \(234 ×11=2574\ бит =321.75\ байт\)
  3. Так как последовательность занимает в памяти минимальное целое число байт, то результат необходимо округлить до ближайшего целого числа, не меньшего данного. 
    Следовательно, ответ 322 байта

Решение на языке Python




Сравнение с неравномерным кодированием

Критерий Равномерное кодирование Неравномерное кодирование (Хаффман)
Длина кода Фиксированная для всех символов Зависит от частоты символов
Эффективность Неэффективно для редких символов Оптимально для частотного распределения
Сложность Простое декодирование Требует таблицы кодов

Пример:
Для текста AAAAABBC:

  • Равномерное: 2 бита/символ → 16 бит.

  • Хаффман: A=0B=10C=11 → 13 бит.


Применение равномерного кодирования

  1. Символьные кодировки: ASCII (7 бит), Extended ASCII (8 бит), UNICODE (16 бит).

  2. Цифровая обработка сигналов: PCM (импульсно-кодовая модуляция).

  3. Сетевые протоколы: Фиксированные заголовки пакетов.


Итог

  • Биты — фундаментальная единица кодирования в компьютерах.

  • Алфавит определяет набор символов и их количество (N).

  • Формула \(2^{i-1} < N \le2^i\) вычисляет минимальное количество бит, необходимое для кодирования одного символа из алфавита мощностью N.

  • Объем памяти считается через длину последовательности × бит на символ.

Печать