Блок-код
В теории кодирования блочные коды представляют собой большое и важное семейство кодов с исправлением ошибок , которые кодируют данные блоками.Существует огромное количество примеров блочных кодов, многие из которых имеют широкий спектр практического применения. Абстрактное определение блочных кодов концептуально полезно, поскольку оно позволяет теоретикам кодирования, математикам и ученым-компьютерщикам изучать ограничения всех единообразно блочных кодов.Такие ограничения часто принимают форму границ , которые связывают друг с другом различные параметры блочного кода, такие как его скорость и его способность обнаруживать и исправлять ошибки.
Примерами блочных кодов являются коды Рида-Соломона , коды Хэмминга , коды Адамара , коды Экспандера , коды Голея , коды Рида-Мюллера и полярные коды . Эти примеры также относятся к классу линейных кодов , поэтому их называют линейными блочными кодами . Более конкретно, эти коды известны как алгебраические блочные коды или циклические блочные коды, поскольку они могут быть сгенерированы с использованием булевых полиномов.
Алгебраические блочные коды обычно жестко декодируются с использованием алгебраических декодеров. [ жаргон ]
Термин «код блока» может также относиться к любому коду исправления ошибок, который действует на блок бит входных данных для создания биты выходных данных . Следовательно, блочный кодер является устройством без памяти . В соответствии с этим определением такие коды, как турбокоды , завершенные сверточные коды и другие итеративно декодируемые коды (турбоподобные коды), также будут считаться блочными кодами. Сверточный кодер без завершения может быть примером неблочного (без кадрирования) кода, который имеет память и вместо этого классифицируется как древовидный код .
В этой статье речь идет о «алгебраических блочных кодах».
Код блока и его параметры
[ редактировать ]Коды с исправлением ошибок используются для надежной передачи цифровых данных по ненадежным каналам связи, подверженным канальному шуму .Когда отправитель хочет передать, возможно, очень длинный поток данных, используя блочный код, он разбивает поток на части некоторого фиксированного размера. Каждая такая часть называется сообщением , и процедура, заданная блочным кодом, кодирует каждое сообщение индивидуально в кодовое слово, также называемое блоком в контексте блочных кодов. Затем отправитель передает все блоки получателю, который, в свою очередь, может использовать некоторый механизм декодирования для (надеюсь) восстановления исходных сообщений из возможно поврежденных полученных блоков.Производительность и успех общей передачи зависят от параметров канала и блочного кода.
Формально блочный код представляет собой инъективное отображение.
- .
Здесь, является конечным и непустым множеством и и являются целыми числами. Значение и значение этих трех параметров, а также других параметров, связанных с кодом, описаны ниже.
Алфавит С
[ редактировать ]Поток данных, подлежащий кодированию, моделируется как строка в некотором алфавите. . Размер алфавита часто записывается как . Если , то блочный код называется двоичным блочным кодом. Во многих приложениях полезно учитывать быть главной силой и идентифицировать с конечным полем .
Длина сообщения k
[ редактировать ]Сообщения — это элементы из , то есть строки длины .Отсюда число называется длиной сообщения или размерностью блочного кода.
Длина блока n
[ редактировать ]Длина блока блочного кода — это количество символов в блоке. Следовательно, элементы из представляют собой строки длины и соответствуют блокам, которые могут быть приняты получателем. Поэтому их еще называют полученными словами.Если для какого-то сообщения , затем называется кодовым словом .
Ставка R
[ редактировать ]Скорость : блочного кода определяется как отношение длины его сообщения к длине блока
- .
Большая скорость означает, что количество фактических сообщений на передаваемый блок велико. В этом смысле ставка измеряет скорость передачи и количество измеряет накладные расходы, возникающие из-за кодирования блочным кодом.Это простой теоретический факт, что скорость не может превышать поскольку данные, как правило, не могут быть сжаты без потерь. Формально это следует из того, что код является инъективным отображением.
Расстояние d
[ редактировать ]Расстояние относительное или минимальное расстояние d блочного кода — это минимальное количество позиций, в которых различаются любые два различных кодовых слова, а расстояние это дробь .Формально для полученных слов , позволять обозначим расстояние Хэмминга между и , то есть количество позиций, в которых и различаются.Тогда минимальное расстояние кода определяется как
- .
Поскольку любой код должен быть инъективным , любые два кодовых слова будут не согласовываться хотя бы в одной позиции, поэтому расстояние любого кода не менее . Кроме того, расстояние равно минимальному весу для линейных блочных кодов, потому что:
- .
Большее расстояние позволяет лучше исправлять и обнаруживать ошибки.Например, если мы рассматриваем только ошибки, которые могут изменять символы отправленного кодового слова, но никогда не стирают и не добавляют их, то количество ошибок — это количество позиций, в которых отправленное кодовое слово и полученное слово различаются.Код с расстоянием d позволяет приемнику обнаруживать до ошибки передачи с момента изменения позиции кодового слова никогда не могут случайно привести к другому кодовому слову. Кроме того, если не более возникают ошибки передачи, приемник может однозначно декодировать полученное слово в кодовое слово. Это связано с тем, что каждое принятое слово имеет не более одного кодового слова на расстоянии. . Если более чем возникают ошибки передачи, приемник не может однозначно декодировать полученное слово, поскольку возможных кодовых слов может быть несколько. Одним из способов справиться с этой ситуацией получателя является использование декодирования списка , при котором декодер выводит список всех кодовых слов в определенном радиусе.
Популярные обозначения
[ редактировать ]Обозначения описывает блочный код в алфавите размера , с длиной блока , длина сообщения и расстояние .Если блочный код является линейным блочным кодом, то квадратные скобки в обозначении используются для представления этого факта.Для двоичных кодов с , индекс иногда сбрасывается.Для кодов, разделяемых на максимальное расстояние , расстояние всегда равно , но иногда точное расстояние неизвестно, что нетривиально доказывать или утверждать или не требуется. В таких случаях -компонент может отсутствовать.
Иногда, особенно для неблочных кодов, обозначение используется для кодов, содержащих кодовые слова длины . Для блочных кодов с сообщениями длиной над алфавитом размера , это число будет .
Примеры
[ редактировать ]Как упоминалось выше, существует огромное количество кодов с исправлением ошибок, которые на самом деле являются блочными кодами.Первым кодом, исправляющим ошибки, был код Хэмминга (7,4) , разработанный Ричардом У. Хэммингом в 1950 году. Этот код преобразует сообщение, состоящее из 4 битов, в кодовое слово из 7 бит путем добавления 3 битов четности. Следовательно, этот код является блочным кодом. Оказывается, это также линейный код и его расстояние равно 3. В приведенных выше сокращенных обозначениях это означает, что код Хэмминга(7,4) является код.
Коды Рида–Соломона представляют собой семейство коды с и будучи высшей силой . Коды рангов представляют собой семейство коды с . Коды Адамара представляют собой семейство коды с и .
Свойства обнаружения и исправления ошибок
[ редактировать ]Кодовое слово можно рассматривать как точку в -пространство измерений и код является подмножеством . Код имеет расстояние означает, что нет другого кодового слова , в шаре Хэмминга с центром в точке с радиусом , который определяется как совокупность -размерные слова, расстояние Хэмминга до которых это не более чем . Сходным образом, с (минимальным) расстоянием имеет следующие свойства:
- может обнаружить ошибки: поскольку кодовое слово — единственное кодовое слово в шаре Хэмминга с центром в самом себе и радиусом , нет шаблона ошибок или меньше ошибок могут изменить одно кодовое слово на другое. Когда получатель обнаруживает, что полученный вектор не является кодовым словом , ошибки обнаружены (но нет гарантии их исправления).
- могу исправить ошибки. Потому что кодовое слово — единственное кодовое слово в шаре Хэмминга с центром в самом себе и радиусом , два шара Хэмминга с центрами в двух разных кодовых словах соответственно с обоими радиусами не перекрывать друг друга. Поэтому, если рассматривать исправление ошибок как поиск кодового слова, наиболее близкого к полученному слову , пока количество ошибок не превышает , в шаре Хэмминга есть только одно кодовое слово с центром в с радиусом , поэтому все ошибки можно исправить.
- Для декодирования при наличии более ошибок, декодирование списка или декодирование максимального правдоподобия . можно использовать
- могу исправить стирания . Под стиранием подразумевается, что положение стертого символа известно. Исправление может быть достигнуто путем -проходное декодирование: В прохождение стертой позиции заполняется символ и исправление ошибок. Должен быть один проход, чтобы количество ошибок было не более и поэтому подчистки можно было исправить.
Нижняя и верхняя границы блочных кодов
[ редактировать ]Семейство кодов
[ редактировать ]называется семейством кодов , где это код с монотонным возрастанием .
Скорость семейства кодов C определяется как
Относительное расстояние семейства кодов C определяется как
Чтобы изучить взаимоотношения между и , известен набор нижних и верхних границ блочных кодов.
Хэмминг связан
[ редактировать ]Синглтон связан
[ редактировать ]Граница Синглтона заключается в том, что сумма скорости и относительного расстояния блочного кода не может быть намного больше 1:
- .
Другими словами, каждый блочный код удовлетворяет неравенству . Коды Рида – Соломона являются нетривиальными примерами кодов, которые удовлетворяют одноэлементной границе с равенством.
Плоткин связан
[ редактировать ]Для , . Другими словами, .
В общем случае для любого с расстоянием d :
- Если
- Если
Для любого q -арного кода с расстоянием ,
Граница Гилберта–Варшамова
[ редактировать ], где , — q -арная функция энтропии.
Джонсон связан
[ редактировать ]Определять .
Позволять — максимальное количество кодовых слов в шаре Хэмминга радиуса e для любого кода. расстояния d .
Тогда у нас есть граница Джонсона : , если
Дорога Элиаса – Бассалиго
[ редактировать ]Сферические упаковки и решетки
[ редактировать ]Блочные коды связаны с проблемой упаковки сфер , которой на протяжении многих лет уделялось определенное внимание. В двух измерениях это легко представить. Возьмите пачку монет, положите их на стол и соедините их. В результате получается шестиугольный узор, похожий на пчелиное гнездо. Но блочные коды полагаются на большее количество измерений, которые нелегко визуализировать. Мощный код Голея , используемый в связи в дальнем космосе, использует 24 измерения. Если используется двоичный код (что обычно и происходит), размеры относятся к длине кодового слова, как определено выше.
Теория кодирования использует N -мерную сферную модель. Например, сколько монет можно упаковать в круг на столе или в трех измерениях, сколько шариков можно упаковать в глобус. Другие соображения влияют на выбор кода. Например, упаковка шестиугольника в ограничение прямоугольной коробки оставит пустое пространство в углах. По мере увеличения размеров процент пустого пространства уменьшается. Но при определенных размерах упаковка занимает все пространство, и эти коды являются так называемыми совершенными кодами. Таких кодов очень мало.
Еще одним свойством является количество соседей, которые может иметь одно кодовое слово. [1] Опять же, в качестве примера рассмотрим пенни. Сначала упаковываем монеты в прямоугольную сетку. У каждого пенни будет 4 ближайших соседа (и 4 в дальних углах). В шестиугольнике у каждой копейки будет 6 ближайших соседей. Соответственно, в трех и четырех измерениях максимальную упаковку дают 12-гранная и 24-ячеечная с 12 и 24 соседями соответственно. Когда мы увеличиваем размеры, число ближайших соседей увеличивается очень быстро. В общем, значение придают числам поцелуев .
В результате число способов заставить приемник выбирать шумсосед (следовательно, ошибка) тоже растет. Это фундаментальное ограничениекодов блоков, да и вообще всех кодов. Может быть сложнее вызвать ошибкуодин сосед, но число соседей может быть достаточно большим, чтобыобщая вероятность ошибки действительно страдает. [1]
См. также
[ редактировать ]- Пропускная способность канала
- Теорема Шеннона – Хартли
- Шумный канал
- Декодирование списка [1]
- Сферическая упаковка
Ссылки
[ редактировать ]- ^ Jump up to: а б с Кристиан Шлегель и Лэнс Перес (2004). Треллис и турбокодирование . Wiley-IEEE. п. 73. ИСБН 978-0-471-22755-7 .
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2008 г. ) |
- Дж. Х. ван Линт (1992). Введение в теорию кодирования . ГТМ . Том. 86 (2-е изд.). Спрингер-Верлаг. п. 31 . ISBN 3-540-54894-7 .
- Ф. Дж. МакВильямс ; НЯА Слоан (1977). Теория кодов, исправляющих ошибки . Северная Голландия. п. 35 . ISBN 0-444-85193-3 .
- В. Хаффман; В.Плесс (2003). Основы кодов, исправляющих ошибки . Издательство Кембриджского университета. ISBN 978-0-521-78280-7 .
- С. Лин; Диджей-младший Костелло (1983). Кодирование с контролем ошибок: основы и приложения . Прентис-Холл. ISBN 0-13-283796-Х .
Внешние ссылки
[ редактировать ]- Чаран Лэнгтон (2001) Концепции кодирования и блочное кодирование