stringtranslate.com

Теория кодирования

Двумерная визуализация расстояния Хэмминга , критической меры в теории кодирования

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

Существует четыре типа кодирования: [1]

  1. Сжатие данных (или кодирование источника )
  2. Контроль ошибок (или канальное кодирование )
  3. Криптографическое кодирование
  4. Линейное кодирование

Сжатие данных пытается удалить нежелательную избыточность из данных источника, чтобы передавать их более эффективно. Например, сжатие данных 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 .

Исходное кодирование

Целью исходного кодирования является уменьшение размера исходных данных.

Определение

Данные можно рассматривать как случайную величину , которая появляется с вероятностью .

Данные кодируются строками (словами) по алфавиту .

Код — это функция.

(или если пустая строка не является частью алфавита).

— это кодовое слово, связанное с .

Длина кодового слова записывается как

Ожидаемая длина кода составляет

Конкатенация кодовых слов .

Кодовое слово пустой строки — это сама пустая строка:

Характеристики

  1. неединствен , если инъективен .
  2. однозначно декодируется, если инъективен.
  3. происходит мгновенно , если не является собственным префиксом (и наоборот).

Принцип

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

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

Различные методы, используемые схемами кодирования источника, пытаются достичь предела энтропии источника. C ( x ) ≥ H ( x ), где H ( x ) — энтропия источника (битрейт), а C ( x ) — битрейт после сжатия. В частности, ни одна схема кодирования источника не может быть лучше энтропии источника.

Пример

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

Кодирование каналов

Цель теории канального кодирования — найти коды, которые передаются быстро, содержат много допустимых кодовых слов и могут исправить или, по крайней мере, обнаружить много ошибок. Хотя это не является взаимоисключающим, производительность в этих областях является компромиссом. Таким образом, разные коды оптимальны для разных приложений. Необходимые свойства этого кода в основном зависят от вероятности ошибок, возникающих во время передачи. В типичном CD ухудшение в основном связано с пылью или царапинами.

Для распределения данных по диску компакт-диски используют перекрестное кодирование Рида-Соломона . [3]

Хотя это не очень хороший код, простой код повтора может служить понятным примером. Предположим, мы берем блок битов данных (представляющих звук) и отправляем его три раза. На приемнике мы будем изучать три повтора по битам и принимать решение большинством голосов. Суть в том, что мы не просто отправляем биты по порядку. Мы чередуем их. Блок битов данных сначала делится на 4 меньших блока. Затем мы циклически проходим по блоку и отправляем один бит из первого, затем второй и т. д. Это делается три раза, чтобы распределить данные по поверхности диска. В контексте простого кода повтора это может показаться неэффективным. Однако известны более мощные коды, которые очень эффективны для исправления «всплеска» ошибки царапины или пятна пыли при использовании этой техники чередования.

Другие коды больше подходят для различных приложений. Связь в дальнем космосе ограничена тепловым шумом приемника, который имеет скорее непрерывный характер, чем прерывистый. Аналогично, узкополосные модемы ограничены шумом, присутствующим в телефонной сети, а также лучше моделируются как непрерывное возмущение. [ необходима цитата ] Сотовые телефоны подвержены быстрому затуханию . Используемые высокие частоты могут вызывать быстрое затухание сигнала, даже если приемник переместить на несколько дюймов. Опять же, есть класс канальных кодов, которые предназначены для борьбы с затуханием. [ необходима цитата ]

Линейные коды

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

Алгебраическая теория кодирования в основном делится на два основных типа кодов: [ необходима ссылка ]

В нем анализируются следующие три свойства кода – в основном: [ необходима ссылка ]

Линейные блочные коды

Линейные блочные коды обладают свойством линейности , то есть сумма любых двух кодовых слов также является кодовым словом, и они применяются к исходным битам в блоках, отсюда и название линейные блочные коды. Существуют блочные коды, которые не являются линейными, но трудно доказать, что код является хорошим без этого свойства. [4]

Линейные блочные коды суммируются по их символьным алфавитам (например, двоичным или троичным) и параметрам ( n , m , d min ) [5] , где

  1. n — длина кодового слова в символах,
  2. m — количество исходных символов, которые будут использоваться для кодирования одновременно,
  3. d min — минимальное расстояние Хэмминга для кода.

Существует много типов линейных блочных кодов, таких как

  1. Циклические коды (например, коды Хэмминга )
  2. Коды повторения
  3. Коды четности
  4. Полиномиальные коды (например, коды БЧХ )
  5. Коды Рида–Соломона
  6. Алгебро-геометрические коды
  7. Коды Рида-Мюллера
  8. Идеальные коды
  9. Локально восстанавливаемые коды

Блочные коды связаны с проблемой упаковки сфер , которая привлекала некоторое внимание на протяжении многих лет. В двух измерениях это легко визуализировать. Возьмите кучу пенни, положите их на стол и сдвиньте вместе. В результате получится шестиугольный узор, похожий на пчелиное гнездо. Но блочные коды полагаются на большее количество измерений, которые нелегко визуализировать. Мощный код Голея (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] ошибки в сигналах, которые посылаются по всему мозгу и более широкой нервной системе.

Смотрите также

Примечания

  1. ^ Джеймс Ирвин; Дэвид Харл (2002). "2.4.4 Типы кодирования". Передача данных и сети. John Wiley & Sons. стр. 18. ISBN 9780471808725. Существует четыре типа кодирования.
  2. ^ Насир Ахмед . «Как я придумал дискретное косинусное преобразование». Цифровая обработка сигналов, т. 1, вып. 1, 1991, стр. 4-5.
  3. ^ Тодд Кэмпбелл. «Answer Geek: Компакт-диски с правилами исправления ошибок».
  4. ^ ab Terras, Audrey (1999). Анализ Фурье на конечных группах и приложения . Cambridge University Press . стр. 195. ISBN 978-0-521-45718-7.
  5. ^ ab Blahut, Richard E. (2003). Алгебраические коды для передачи данных. Cambridge University Press. ISBN 978-0-521-55374-2.
  6. ^ ab Christian Schlegel; Lance Pérez (2004). Треллис и турбокодирование. Wiley-IEEE. стр. 73. ISBN 978-0-471-22755-7.
  7. ^ Forney, GD Jr. (март 1992 г.). «Формирование решетки». Труды IEEE по теории информации . 38 (2 Pt 2): 281–300. doi :10.1109/18.119687. S2CID  37984132.
  8. ^ Ривест, Рональд Л. (1990). «Криптология». В J. Van Leeuwen (ред.). Справочник по теоретической информатике . Т. 1. Elsevier.
  9. ^ Белларе, Михир; Рогауэй, Филипп (21 сентября 2005 г.). "Введение". Введение в современную криптографию . п. 10.
  10. ^ Менезес, А. Дж.; ван Ооршот, П. К.; Ванстоун, С. А. (1997). Справочник по прикладной криптографии . Тейлор и Фрэнсис. ISBN 978-0-8493-8523-0.
  11. ^ Дорфман, Роберт (1943). «Обнаружение дефектных членов больших популяций». Annals of Mathematical Statistics . 14 (4): 436–440. doi : 10.1214/aoms/1177731363 .
  12. ^ Чен, Брайан; Уорнелл, Грегори В. (июль 1998 г.). «Аналоговые коды исправления ошибок на основе хаотических динамических систем» (PDF) . IEEE Transactions on Communications . 46 (7): 881–890. CiteSeerX 10.1.1.30.4093 . doi :10.1109/26.701312. Архивировано из оригинала (PDF) 27-09-2001 . Получено 30-06-2013 . 
  13. ^ Новак, Франк; Хвала, Боян; Клавжар, Санди (1999). "Об анализе аналоговой сигнатуры". Труды конференции по проектированию, автоматизации и тестированию в Европе . CiteSeerX 10.1.1.142.5853 . ISBN  1-58113-121-6.
  14. ^ Шуцзюнь Ли; Чэнцин Ли; Квок-Тунг Ло; Гуаньронг Чен (апрель 2008 г.). «Криптоанализ схемы шифрования на основе слепого разделения источников» (PDF) . Труды IEEE по схемам и системам I. 55 ( 4): 1055–63. arXiv : cs/0608024 . doi :10.1109/TCSI.2008.916540. S2CID  2224947.
  15. ^ Brown EN, Kass RE, Mitra PP (май 2004 г.). «Анализ данных множественных нейронных импульсов: современное состояние и будущие проблемы» (PDF) . Nature Neuroscience . 7 (5): 456–461. doi :10.1038/nn1228. PMID  15114358. S2CID  562815.
  16. ^ Thorpe, SJ (1990). "Время прибытия спайков: высокоэффективная схема кодирования для нейронных сетей" (PDF) . В Eckmiller, R.; Hartmann, G.; Hauske, G. (ред.). Параллельная обработка в нейронных системах и компьютерах (PDF) . North-Holland. стр. 91–94. ISBN 978-0-444-88390-2. Получено 30 июня 2013 г.
  17. ^ Гедеон, Т.; Паркер, А.Е.; Димитров, А.Г. (весна 2002 г.). «Искажение информации и нейронное кодирование». Canadian Applied Mathematics Quarterly . 10 (1): 10. CiteSeerX 10.1.1.5.6365 . Архивировано из оригинала 17.11.2016 . Получено 30.06.2013 . 
  18. ^ Stiber, M. (июль 2005 г.). «Точность синхронизации спайков и коррекция ошибок нейронов: локальное поведение». Neural Computation . 17 (7): 1577–1601. arXiv : q-bio/0501021 . doi :10.1162/0899766053723069. PMID  15901408. S2CID  2064645.

Ссылки