Пусть заданы алфавиты
и функция
, где
– некоторое множество слов в алфавите
,
. Функция
называется кодированием, элементы множества
– сообщениями, а элементы
– кодами соответствующих сообщений. Обратная функция
(если она существует) называется декодированием.
Если
, то
называется
–ичным кодирование. Наиболее распространен случай
– двоичное кодирование. Именно этот случай рассматривается в дальнейшем.
Типичная задача теории кодирования формулируется следующим образом: при заданных алфавитах
,
и множестве сообщений
найти такое кодирование
, которое обладает определенными свойствами и оптимально в некотором смысле.
Свойства, которые требуются от кодирования, бывают самой разной природы:
· существование декодирования – естественное свойство, однако даже оно требуется не всегда. Например, трансляция программы на языке высокого уровня в машинные коды – это кодирование, для которого не требуется декодирования;
· помехоустойчивость, или исправление ошибок: функция декодирования
обладает таким свойством, что
, если
в определенном смысле близко к
;
· заданная сложность (или простота) кодирования и декодирования. Например, в криптографии изучаются такие способы кодирования, при которых имеется просто вычисляемая функция
, но определение функции
требует очень сложных вычислений.