Теория кодирования — это изучение свойств кодов и их соответствующей пригодности для конкретных приложений. Коды используются для сжатия данных , криптографии , обнаружения и исправления ошибок , передачи и хранения данных . Коды изучаются различными научными дисциплинами, такими как теория информации , электротехника , математика , лингвистика и информатика , с целью разработки эффективных и надежных методов передачи данных . Обычно это включает в себя удаление избыточности и исправление или обнаружение ошибок в передаваемых данных.
Существует четыре типа кодирования: [1]
Сжатие данных пытается удалить нежелательную избыточность из данных источника, чтобы передавать их более эффективно. Например, сжатие данных DEFLATE уменьшает файлы, например, для уменьшения интернет-трафика. Сжатие данных и исправление ошибок можно изучать в сочетании .
Исправление ошибок добавляет полезную избыточность к данным из источника, чтобы сделать передачу более устойчивой к помехам, присутствующим на канале передачи. Обычный пользователь может не знать о многих приложениях, использующих исправление ошибок. Типичный музыкальный компакт-диск (CD) использует код Рида-Соломона для исправления царапин и пыли. В этом приложении каналом передачи является сам CD. Сотовые телефоны также используют методы кодирования для исправления затухания и шума высокочастотной радиопередачи. Модемы данных, телефонные передачи и NASA Deep Space Network используют методы канального кодирования для передачи битов, например, турбокод и коды LDPC .
Решающим событием, которое создало дисциплину теории информации и немедленно привлекло к ней внимание всего мира, стала публикация классической статьи Клода Э. Шеннона « Математическая теория связи » в журнале Bell System Technical Journal в июле и октябре 1948 года.
В этой революционной и новаторской статье, работа над которой Шеннон в основном завершил в Bell Labs к концу 1944 года, Шеннон впервые представил качественную и количественную модель коммуникации как статистического процесса, лежащего в основе теории информации, начав с утверждения, что
Вместе с этим пришли и идеи
В 1948 году Клод Шеннон опубликовал « Математическая теория коммуникации », статью в двух частях в июльском и октябрьском выпусках Bell System Technical Journal . Эта работа фокусируется на проблеме наилучшего кодирования информации, которую отправитель хочет передать. В этой фундаментальной работе он использовал инструменты теории вероятностей, разработанные Норбертом Винером , которые в то время находились на начальной стадии применения к теории коммуникации. Шеннон разработал информационную энтропию как меру неопределенности в сообщении, по сути, изобретя область теории информации .
Двоичный код Голея был разработан в 1949 году. Это код с исправлением ошибок, способный исправлять до трех ошибок в каждом 24-битном слове и обнаруживать четвертую.
Ричард Хэмминг получил премию Тьюринга в 1968 году за свою работу в Bell Labs в области численных методов, систем автоматического кодирования и кодов обнаружения и исправления ошибок. Он изобрел концепции, известные как коды Хэмминга , окна Хэмминга , числа Хэмминга и расстояние Хэмминга .
В 1972 году Насир Ахмед предложил дискретное косинусное преобразование (ДКП), которое он разработал совместно с Т. Натараджаном и К. Р. Рао в 1973 году. [2] ДКП является наиболее широко используемым алгоритмом сжатия с потерями , основой для таких мультимедийных форматов, как JPEG , MPEG и MP3 .
Целью исходного кодирования является уменьшение размера исходных данных.
Данные можно рассматривать как случайную величину , которая появляется с вероятностью .
Данные кодируются строками (словами) по алфавиту .
Код — это функция.
— это кодовое слово, связанное с .
Длина кодового слова записывается как
Ожидаемая длина кода составляет
Конкатенация кодовых слов .
Кодовое слово пустой строки — это сама пустая строка:
Энтропия источника — это мера информации. По сути, исходные коды пытаются уменьшить избыточность, присутствующую в источнике, и представляют источник с меньшим количеством битов, которые несут больше информации.
Сжатие данных, которое явно пытается минимизировать среднюю длину сообщений в соответствии с определенной предполагаемой моделью вероятности, называется энтропийным кодированием .
Различные методы, используемые схемами кодирования источника, пытаются достичь предела энтропии источника. C ( x ) ≥ H ( x ), где H ( x ) — энтропия источника (битрейт), а C ( x ) — битрейт после сжатия. В частности, ни одна схема кодирования источника не может быть лучше энтропии источника.
Факсимильная передача использует простой код длины серии . Исходное кодирование удаляет все данные, лишние для нужд передатчика, уменьшая полосу пропускания, необходимую для передачи.
Цель теории канального кодирования — найти коды, которые передаются быстро, содержат много допустимых кодовых слов и могут исправить или, по крайней мере, обнаружить много ошибок. Хотя это не является взаимоисключающим, производительность в этих областях является компромиссом. Таким образом, разные коды оптимальны для разных приложений. Необходимые свойства этого кода в основном зависят от вероятности ошибок, возникающих во время передачи. В типичном CD ухудшение в основном связано с пылью или царапинами.
Для распределения данных по диску компакт-диски используют перекрестное кодирование Рида-Соломона . [3]
Хотя это не очень хороший код, простой код повтора может служить понятным примером. Предположим, мы берем блок битов данных (представляющих звук) и отправляем его три раза. На приемнике мы будем изучать три повтора по битам и принимать решение большинством голосов. Суть в том, что мы не просто отправляем биты по порядку. Мы чередуем их. Блок битов данных сначала делится на 4 меньших блока. Затем мы циклически проходим по блоку и отправляем один бит из первого, затем второй и т. д. Это делается три раза, чтобы распределить данные по поверхности диска. В контексте простого кода повтора это может показаться неэффективным. Однако известны более мощные коды, которые очень эффективны для исправления «всплеска» ошибки царапины или пятна пыли при использовании этой техники чередования.
Другие коды больше подходят для различных приложений. Связь в дальнем космосе ограничена тепловым шумом приемника, который имеет скорее непрерывный характер, чем прерывистый. Аналогично, узкополосные модемы ограничены шумом, присутствующим в телефонной сети, а также лучше моделируются как непрерывное возмущение. [ необходима цитата ] Сотовые телефоны подвержены быстрому затуханию . Используемые высокие частоты могут вызывать быстрое затухание сигнала, даже если приемник переместить на несколько дюймов. Опять же, есть класс канальных кодов, которые предназначены для борьбы с затуханием. [ необходима цитата ]
Термин «алгебраическая теория кодирования» обозначает подраздел теории кодирования, в котором свойства кодов выражаются в алгебраических терминах, а затем подвергаются дальнейшему исследованию. [ необходима ссылка ]
Алгебраическая теория кодирования в основном делится на два основных типа кодов: [ необходима ссылка ]
В нем анализируются следующие три свойства кода – в основном: [ необходима ссылка ]
Линейные блочные коды обладают свойством линейности , то есть сумма любых двух кодовых слов также является кодовым словом, и они применяются к исходным битам в блоках, отсюда и название линейные блочные коды. Существуют блочные коды, которые не являются линейными, но трудно доказать, что код является хорошим без этого свойства. [4]
Линейные блочные коды суммируются по их символьным алфавитам (например, двоичным или троичным) и параметрам ( n , m , d min ) [5] , где
Существует много типов линейных блочных кодов, таких как
Блочные коды связаны с проблемой упаковки сфер , которая привлекала некоторое внимание на протяжении многих лет. В двух измерениях это легко визуализировать. Возьмите кучу пенни, положите их на стол и сдвиньте вместе. В результате получится шестиугольный узор, похожий на пчелиное гнездо. Но блочные коды полагаются на большее количество измерений, которые нелегко визуализировать. Мощный код Голея (24,12) , используемый в дальних космических коммуникациях, использует 24 измерения. Если он используется как двоичный код (что обычно и происходит), измерения относятся к длине кодового слова, как определено выше.
Теория кодирования использует модель N -мерной сферы. Например, сколько пенни можно упаковать в круг на столешнице, или в 3-мерном пространстве, сколько шариков можно упаковать в глобус. Другие соображения влияют на выбор кода. Например, упаковка шестиугольника в ограничение прямоугольной коробки оставит пустое пространство по углам. По мере увеличения размеров процент пустого пространства уменьшается. Но при определенных размерах упаковка использует все пространство, и эти коды являются так называемыми «идеальными» кодами. Единственными нетривиальными и полезными идеальными кодами являются коды Хэмминга с расстоянием 3 и параметрами, удовлетворяющими (2 r – 1, 2 r – 1 – r , 3), а также двоичные коды Голея [23,12,7] и троичные коды Голея [11,6,5]. [4] [5]
Другим свойством кода является количество соседей, которое может иметь одно кодовое слово. [6] Опять же, рассмотрим пенни в качестве примера. Сначала мы упаковываем пенни в прямоугольную сетку. У каждого пенни будет 4 близких соседа (и 4 в углах, которые находятся дальше). В шестиугольнике у каждого пенни будет 6 близких соседей. Когда мы увеличиваем размеры, количество близких соседей увеличивается очень быстро. В результате количество способов, которыми шум может заставить приемник выбрать соседа (следовательно, ошибку), также растет. Это фундаментальное ограничение блочных кодов, и, по сути, всех кодов. Может быть сложнее вызвать ошибку у одного соседа, но количество соседей может быть достаточно большим, поэтому общая вероятность ошибки фактически страдает. [6]
Свойства линейных блочных кодов используются во многих приложениях. Например, свойство уникальности синдром-класса линейных блочных кодов используется в решетчатом формировании [7] , одном из самых известных кодов формирования .
Идея сверточного кода заключается в том, чтобы сделать каждый символ кодового слова взвешенной суммой различных символов входного сообщения. Это похоже на свертку, используемую в системах LTI для нахождения выхода системы, когда вы знаете вход и импульсную характеристику.
Таким образом, мы обычно находим выходной сигнал системного сверточного кодера, который представляет собой свертку входного бита с состояниями регистров сверточного кодера.
По сути, сверточные коды не обеспечивают большей защиты от шума, чем эквивалентный блочный код. Во многих случаях они, как правило, обеспечивают большую простоту реализации по сравнению с блочным кодом равной мощности. Кодер обычно представляет собой простую схему с памятью состояний и некоторой логикой обратной связи, обычно вентилями XOR . Декодер может быть реализован в программном обеспечении или прошивке.
Алгоритм Витерби — оптимальный алгоритм, используемый для декодирования сверточных кодов. Существуют упрощения для снижения вычислительной нагрузки. Они основаны на поиске только наиболее вероятных путей. Хотя они и не оптимальны, они, как правило, дают хорошие результаты в условиях низкого уровня шума.
Сверточные коды используются в модемах голосового диапазона (V.32, V.17, V.34) и в мобильных телефонах GSM, а также в спутниковых и военных устройствах связи.
Криптография или криптографическое кодирование — это практика и изучение методов безопасной связи в присутствии третьих лиц (называемых противниками ). [8] В более общем смысле, это касается построения и анализа протоколов , которые блокируют противников; [9] различные аспекты информационной безопасности, такие как конфиденциальность данных , целостность данных , аутентификация и неотказуемость [10], являются центральными для современной криптографии. Современная криптография существует на стыке дисциплин математики , информатики и электротехники . Приложения криптографии включают карты банкоматов , компьютерные пароли и электронную коммерцию .
Криптография до современной эпохи была фактически синонимом шифрования , преобразования информации из читаемого состояния в кажущуюся бессмыслицу . Создатель зашифрованного сообщения делился техникой декодирования, необходимой для восстановления исходной информации, только с предполагаемыми получателями, тем самым исключая возможность нежелательных лиц делать то же самое. Со времени Первой мировой войны и появления компьютера методы , используемые для осуществления криптографии, становились все более сложными, а ее применение все более распространенным.
Современная криптография в значительной степени основана на математической теории и практике компьютерной науки; криптографические алгоритмы разрабатываются на основе предположений о вычислительной сложности , что делает такие алгоритмы трудно поддающимися взлому на практике любым противником. Теоретически возможно взломать такую систему, но это невозможно сделать любыми известными практическими способами. Поэтому эти схемы называются вычислительно безопасными; теоретические достижения, например, усовершенствования алгоритмов факторизации целых чисел , и более быстрые вычислительные технологии требуют постоянной адаптации этих решений. Существуют информационно-теоретически безопасные схемы, которые, как доказано, не могут быть взломаны даже при неограниченной вычислительной мощности — примером является одноразовый блокнот — но эти схемы сложнее реализовать, чем лучшие теоретически взламываемые, но вычислительно безопасные механизмы.
Линейный код (также называемый цифровой модуляцией основной полосы или методом цифровой передачи основной полосы ) — это код , выбранный для использования в системе связи для целей передачи основной полосы . Линейное кодирование часто используется для цифровой передачи данных.
Линейное кодирование состоит из представления цифрового сигнала, который должен быть передан, с помощью амплитудно- и временно-дискретного сигнала, который оптимально настроен для конкретных свойств физического канала (и приемного оборудования). Шаблон формы волны напряжения или тока, используемый для представления единиц и нулей цифровых данных в канале передачи, называется линейным кодированием . Распространенными типами линейного кодирования являются униполярное , полярное , биполярное и манчестерское кодирование .
Другая проблема теории кодирования — разработка кодов, которые помогают синхронизации . Код может быть разработан таким образом, чтобы сдвиг фазы можно было легко обнаружить и исправить, и чтобы несколько сигналов могли быть отправлены по одному и тому же каналу. [ необходима цитата ]
Другим применением кодов, используемых в некоторых системах мобильной связи, является множественный доступ с кодовым разделением каналов (CDMA). Каждому телефону назначается кодовая последовательность, которая приблизительно не коррелирует с кодами других телефонов. [ необходима цитата ] При передаче кодовое слово используется для модуляции битов данных, представляющих голосовое сообщение. На приемнике выполняется процесс демодуляции для восстановления данных. Свойства этого класса кодов позволяют многим пользователям (с разными кодами) использовать один и тот же радиоканал в одно и то же время. Для приемника сигналы других пользователей будут отображаться демодулятору только как низкоуровневый шум. [ необходима цитата ]
Другим общим классом кодов являются коды автоматического запроса на повтор (ARQ). В этих кодах отправитель добавляет избыточность к каждому сообщению для проверки ошибок, обычно путем добавления контрольных битов. Если контрольные биты не соответствуют остальной части сообщения при его получении, получатель попросит отправителя повторно передать сообщение. Все, кроме самых простых протоколов глобальной сети, используют ARQ. Распространенные протоколы включают SDLC (IBM), TCP (Internet), X.25 (International) и многие другие. Существует обширная область исследований по этой теме из-за проблемы сопоставления отклоненного пакета с новым пакетом. Это новый пакет или это повторная передача? Обычно используются схемы нумерации, как в TCP. "RFC793". RFCS . Internet Engineering Task Force (IETF). Сентябрь 1981 г.
Групповое тестирование использует коды другим способом. Рассмотрим большую группу предметов, в которой очень немногие отличаются определенным образом (например, дефектные продукты или инфицированные испытуемые). Идея группового тестирования заключается в том, чтобы определить, какие предметы «отличаются», используя как можно меньше тестов. Истоки проблемы уходят корнями во Вторую мировую войну , когда Военно-воздушным силам США нужно было проверить своих солдат на сифилис . [11]
Информация кодируется аналогично в нейронных сетях мозга , в аналоговой обработке сигналов и аналоговой электронике . Аспекты аналогового кодирования включают аналоговую коррекцию ошибок, [12] аналоговое сжатие данных [ 13] и аналоговое шифрование. [14]
Нейронное кодирование — это связанная с нейронаукой область, изучающая , как сенсорная и другая информация представлена в мозге сетями нейронов . Основная цель изучения нейронного кодирования — охарактеризовать связь между стимулом и индивидуальными или ансамблевыми нейронными реакциями, а также связь между электрической активностью нейронов в ансамбле. [ 15] Считается, что нейроны могут кодировать как цифровую , так и аналоговую информацию, [16] и что нейроны следуют принципам теории информации и сжимают информацию, [17] а также обнаруживают и исправляют [18] ошибки в сигналах, которые посылаются по всему мозгу и более широкой нервной системе.
Существует четыре типа кодирования.