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