Читайте также: |
|
й = г + ё = (и + е)+ё = и + (е + ё) (6.40)
Если правильно вычислили ошибку: ё = е, тогда оценка U совпадает с переданным кодовым словом U. С другой стороны, если оценка ошибки неверна, декодер неверно определит переданное кодовое слово и мы получим необнаружимую ошибку декодирования.
Пример 6.4. Исправление ошибок
Пусть передано кодовое слово U = 101110 из примера в разделе 6.4.3 и принят вектор г = 001110. Нужно показать, как декодер, используя таблицу соответствия синдромов (табл 6 2), может исправить ошибку.
Решение
Рассчитывается синдром г.
S= [001 1 10] Нг=[10 0]
С помощью табл. 6.2 оценивается модель ошибки, соответствующая приведенному выше синдрому.
ё= 1 0 0 0 0 0
Исправленный вектор равен следующему:
U = г+ё=
=00111 0+1 00000=.
= 10 1110 '
Поскольку оцененная модель ошибки в этом поимере совпадает с действительной моделью ошибки, процедура исправления ошибки дает U = U.
Можно видеть, что процесс декодирования искаженного кодового слова путем предварительного обнаружения и последующего исправления ошибки можно сравнить с аналогичной
б 4 Линрйныр блочный копы
медицинской процедурой. Пациент (потенциально искаженный вектор) приходит в медицинское учреждение (декодер). Врач проводит серию тестов (умножение на Нг), чтобы определить симптомы болезни (синдром). Допустим, врач нашел характерные пятна на рентгенограмме пациента. Опытный врач может непосредственно установить связь между симптомом и болезнью (моделью ошибки). Начинающий врач может обратиться к медицинскому справочнику (табл. 6.2) для определения соответствия между симптомом (синдромом) и болезнью (моделью ошибки). Последний шаг заключается в назначении соответствующего лечения, которое устранит болезнь (уравнение (6 40)). Продолжая аналогию двоичных кодов и медицины, можно сказать, что уравнение (6.40) — это несколько необычный способ лечения. Пациент излечивается в результате повторного заболевания той же болезнью.
6.4.9. Реализация декодера
Если код короткий, например рассмотренный ранее код (6, 3), декодер может быть реализован в виде довольно простой схемы. Рассмотрим шаги, которые должны быть предприняты декодером: (1) вычислить синдром, (2) локализовать модель ошибки и (3) осуществить сложение по модулю 2 модели ошибки и принятого вектора (что приводит к устранению ошибки). В примере 6.4, имея искаженный вектор, мы покажем, как с помощью последовательности этих шагов можно получить исправленное кодовое слово. Сейчас мы рассмотрим схему, показанную на рис. 6.12, где реализованы логические элементы исключающего ИЛИ и И, которые позволяют получить тот же результат для любой модели с одним ошибочным битом в коде (6, 3). Из табл. 6.2 и уравнения (6.39) можно записать все разряды синдрома через разряды принятых кодовых слов:
S = гНг,
и
■*1 = г\ + ГА + г6<
S2 = Г2+ Г4 + Г5, s S2 = r3 + r5 + Г5.
Мы используем эти выражения для синдромов при связывании схемы на рис. 6.12. Логический элемент “исключающее ИЛИ” — это и есть реализация той самой операции сложения (или вычитания) по модулю 2, поэтому он обозначен тем же символом Маленький кружок в конце каждой линии, входящей в элемент И, означает операцию логического дополнения сигнала.
Искаженный сигнал подается на декодер одновременно в верхней части схемы, где происходит вычисление синдрома, и в нижней, где синдром преобразуется в соответствующую модель ошибки. Ошибка устраняется путем повторного добавления ее к принятому вектору, что дает в итоге исправленное кодовое слово.
Заметим, что с методической точки зрения рис. 6.12 составлен так, чтобы выделить алгебраические этапы декодирования — вычисление синдрома и модели ошибки, а также выдачу исправленных выходных данных. В реальной ситуации код (/г, к) обычно выбирается систематическим.
Гпаой A /ouonuLiAQ ^гчтлгчгчиашла' ияГ'ТК 1
Декодеру не нужно выдавать полное кодовое слово; на выходе у него должны быть только биты данных. Поэтому схема на рис. 6.12 упрощается за счет удаления заштрихованных элементов. Для более длинных кодов такая реализация намного сложнее; более предпочтительной методикой декодирования является последовательная схема, а не рассмотренный здесь параллельный метод [4]. Важно также подчеркнуть, что схема на рис. 6.12 позволяет определять и исправлять только модели кода (6,3) с одним ошибочным битом. Исправление моделей с двумя ошибочными битами потребует дополнительной схемы.
6.4.9.1. Векторные обозначения
Выше кодовые слова, модели ошибок, принятые векторы и синдромы обозначались как векторы U, е, г и S. Для упрощения записи индексы, сопутствующие конкретному вектору, в основном, опускались. Хотя, если быть точным, каждый из векторов U, е, г и S должен записываться в следующем виде;
Xj= {хьх2,... }
Рассмотрим диапазон индексов j и i в контексте кода (6, 3), приведенного в табл. 6.1. Для кодового слова U, индекс j = 1,..., 2* показывает, что имеется 23 = 8 отдельных кодовых слов, а индекс i= 1,..., п демонстрирует, что каждое кодовое слово составлено из «= 6 бит. Для исправимой модели ошибки е, индекс j = 1,..., 2"'1 означает, что имеется 23 = 8 образующих элементов классов смежности (7 ненулевых исправимых моделей ошибки), а индекс i = 1,..., п указывает, что каждая модель ошибки составлена из п = 6 бит. Для принятого вектора г7 индекс j= 1,..., 2" показывает, что имеется 2б = 64 /1-кортежей, прием которых возможен, а индекс /'= 1,..., п указывает, что каждый принятый л-кортеж состоит из п = 6 бит. И наконец, для синдрома S, индекс j =
1,..., п- к означает, что каждый синдром состоит из п - к = 3 бит. В этой главе индексы часто опускаются, и векторы U,, ея г, и S, зачастую обозначаются как U, е, г и S. Читателю следует помнить, что для этих векторов индексы всегда подразумеваются, даже в тех случаях, когда они опущены для простоты записи.
ft Л Пмиоммио fSnnuwuio k-nm-j I >’»
6.5. Возможность обнаружения и исправления ошибок
6.5.1. Весовой коэффициент двоичных векторов и расстояние между ними
Конечно же, понятно, что правильно декодировать можно не все модели ошибки. Возможности кода для исправления ошибок в первую очередь определяются его структурой. Весовой коэффициент Хэмминга (Hamming weight) w(U) кодового слова U определяется как число ненулевых элементов в U. Для двоичного вектора это эквивалентно числу единиц в векторе. Например, если U=100101 101, то w(U) = 5. Расстояние Хэмминга (Hamming distance) между двумя кодовыми словами U и V, обозначаемое как d(U, V), определяется как количество элементов, в которых они отличаются.
U= 1 00101101 V=011110 100 d(U, V) = 6
Согласно свойствам сложения по модулю 2, можно отметить, что сумма двух двоичных векторов является другим двоичным вектором, двоичные единицы которого расположены на тех позициях, которыми эти векторы отличаются.
U +V=1 1 1 0 1 1001
Таким образом, можно видеть, что расстояние Хэмминга между двумя векторами равно весовому коэффициенту Хэмминга их суммы, т.е. d(U, V) = w(U + V). Также видно, что весовой коэффициент Хэмминга кодового слова равен его расстоянию Хэмминга до нулевого вектора.
6.5.2. Минимальное расстояние для линейного кода
Рассмотрим множество расстояний между всеми парами кодовых слов в пространстве V„. Наименьший элемент этого множества называется минимальным расстоянием кода и обозначается daш. Как вы думаете, почему нас интересует именно минимальное расстояние, а не максимальное? Минимальное расстояние подобно наиболее слабому звену в цепи, оно дает нам меру минимальных возможностей кода и, следовательно, характеризует его мощность.
Как обсуждалось ранее, сумма двух произвольных кодовых слов дает другой элемент кодовых слов подпространства. Это свойство линейных кодов формулируется просто: если U и V — кодовые слова, то и W = U + V тоже должно быть кодовым словом. Следовательно, расстояние между двумя кодовыми словами равно весовому коэффициенту третьего кодового слова, т.е. d(U, V) = w(U + V) = w(W). Таким образом, минимальное расстояние линейного кода можно определить, не прибегая к изучению расстояний между всеми комбинациями пар кодовых слов. Нам нужно лишь определить вес каждого кодового слова (за исключением нулевого вектора) в подпространстве; минимальный вес соответствует минимальному расстоянию dmm. Иными словами, dtмп соответствует наименьшему из множества расстояний между нулевым кодовым словом и всеми остальными кодовыми словами.
6.5.3. Обнаружение и исправление ошибок
Задача декодера после приема вектора г заключается в оценке переданного кодового слова U,. Оптимальная стратегия декодирования может быть выражена в терминах алгоритма максимального правдоподобия (см. приложение Б); считается, что передано было слово U„ если
Я(гIU.) = шах Р(г|U,). (6.41)
по всем U;
Поскольку для двоичного симметричного канала (binary symmetric channel — BSC) правдоподобие U, относительно г обратно пропорционально расстоянию между г и Ц, можно сказать, что передано было слово U,, если
rf(r|U,)= min d(r|U.). (6.42)
по всем U j
Другими словами, декодер определяет расстояние между г и всеми возможными переданными кодовыми словами U,, после чего выбирает наиболее правдоподобное U,, для которого
d(r,Ut) <d(r,Uj) для i,j = 1,..., М и i*j, (6.43)
где М = 2* — это размер множества кодовых слов. Если минимум не один, выбор между минимальными расстояниями является произвольным. Наше обсуждение метрики расстояний будет продолжено в главе 7.
На рис. 6.13 расстояние между двумя кодовыми словами U и V показано как расстояние Хэмминга. Каждая черная точка обозначает искаженное кодовое слово. На рис. 6.13, а проиллюстрирован прием вектора гь находящегося на расстоянии 1 от кодового слова U и на расстоянии 4 от кодового слова V. Декодер с коррекцией ошибок, следуя стратегии максимального правдоподобия, выберет при принятом векторе Г] кодовое слово U. Если г, получился в результате появления одного ошибочного бита в переданном векторе кода U, декодер успешно исправит ошибку. Но если же это произошло в результате 4-битовой ошибки в векторе кода V, декодирование будет ошибочным. Точно так же, как показано на рис. 6.13, б, двойная ошибка при передаче U может привести к тому, что в качестве принятого вектора будет ошибочно определен вектор г2, находящийся на расстоянии 2 от вектора U и на расстоянии 3 от вектора кода V. На рис. 6.13, в показана ситуация, когда в качестве принятого вектора ошибочно определен вектор г3, который является результатом тройной ошибки при передаче и находится на расстоянии 3 от вектора кода U и на расстоянии 2 от вектора V. Из рис. 6.13 видно, что если задача состоит только в обнаружении ошибок, а не в их исправлении, то можно определить искаженный вектор — изображенный черной точкой и представляющий одно-, двух-, трех- и четырехбитовую ошибку. В то же время пять ошибок при передаче могут привести к приему кодового слова V, когда в действительности было передано кодовое слово U; такую ошибку невозможно будет обнаружить.
Из рис. 6.13 можно видеть, что способность кода к обнаружению и исправлению ошибок связана с минимальным расстоянием между кодовыми словами. Линия решения на рисунке служит той же цели, что и в процессе демодуляции, — для разграничения областей решения.
б 5 Втмпжнппть пйнягл/жрния м ипппавления ошибок
Линия решений
|
б) |
Гз
В)
Рис. 6.13 Возможности определения и исправления ошибок: а) принятый вектор гь- б) принятый вектор г2; в) принятый вектор г3
В примере, приведенном на рис. 6.13, критерий принятия решения может быть следующим: выбрать U, если г попадает в область 1, и выбрать V, если г попадает в область 2. Выше показывалось, что такой код (при dnm = 5) может исправить две ошибки. Вообще, способность кода к исправлению ошибок t определяется, как максимальное число гарантированно исправимых ошибок на кодовое слово, и записывается следующим образом [4]:
(6.44)
Здесь bd означает наибольшее целое, не превышающее х. Часто код, который исправляет все искаженные символы, содержащие ошибку в t или меньшем числе бит, также может исправлять символы, содержащие t +1 ошибочных бит. Это можно увидеть на рис. 6.11. В этом случае dmm = 3, поэтому из уравнения (6.44) можно видеть, что исправимы все модели ошибки из t = 1 бит. Также исправима одиночная модель ошибки, содержащая /+1 (т.е. 2) ошибочных бит. Вообще, линейный код (и,к), способный исправлять все символы, содержащие t ошибочных бит, может исправить всего 2п~к моделей ошибок. Если блочный код с возможностью исправления символов, имеющих ошибки в t бит, применяется для исправления ошибок в двоичном симметричном канале с вероятностью перехода р, то вероятность ошибки сообщения Рм (вероятность того, что декодер совершит неправильное декодирование и и-битовый блок содержит ошибку) можно оценить сверху, используя уравнение (6.18):
(6.45)
Гпяпя R Кяняпкнпр тгиппиянир’ чягп, 1
Оценка переходит в равенство, если декодер исправляет все модели ошибок, содержащие до г ошибочных бит включительно, но не модели с числом ошибочных бит, большим г. Такие декодеры называются декодерами с ограниченным расстоянием. Вероятность ошибки в декодированном бите Рв зависит от конкретного кода и декодера. Приближенно ее можно выразить следующим образом [5]:
(6.46)
В блочном коде, прежде чем исправлять ошибки, необходимо их обнаружить. (Или же код может использоваться только для определения наличия ошибок.) Из рис. 6.13 видно, что любой полученный вектор, который изображается черной точкой (искаженное кодовое слово), можно определить как ошибку. Следовательно, возможность определения наличия ошибки дается следующим выражением:
(6.47)
Блочный код с минимальным расстоянием d„m гарантирует обнаружение всех моделй ошибок, содержащих dam - 1 или меньшее число ошибочных бит. Такой код также способен обнаружить и более длинную часть модели ошибки, содержащую dam или более ошибок. Фактически код (я, к) может обнаружить 2" - 2к моделей ошибок длины и. Объясняется это следующим образом. Всего в пространстве 2" л-кортежей существует 2" - 1 возможных ненулевых моделей ошибок. Даже правильное кодовое слово — это потенциальная модель ошибки. Поэтому всего существует 2к - 1 моделей ошибки, которые идентичны 2* — 1 ненулевым кодовым словам. При появлении любая из этих 24 — 1 моделей ошибки изменяет передаваемое кодовое слово U, на другое кодовое слово U,. Таким образом, принимается кодовое слово U,, и его синдром равен нулю. Декодер принимает U, за переданное кодовое слово, и поэтому декодирование дает неверный результат. Следовательно, существует 2к -1 необнаружимых моделей ошибки. Если модель ошибки не совпадает с одним из 2к кодовых слов, проверка вектора г с помощью синдромов дает ненулевой синдром и ошибка успешно обнаруживается. Отсюда следует, что существует ровно 2" - 2* выявляемых моделей ошибки. При больших и, когда 2к«2", необнаружи- мой будет только незначительная часть моделей ошибки.
6.5.3.1. Распределение весовых коэффициентов кодовых слов
Пусть Aj — количество кодовых слов с весовым коэффициентом j в линейном коде (л, к). Числа А0, Л,,..., Ап называются распределением весовых коэффициентов этого кода. Если код применяется только для обнаружения ошибок в двоичном симметричном канале, то вероятность того, что декодер не сможет определить ошибку, можно рассчитать, исходя из распределения весовых коэффициентов кода [5]:
(6.48)
где р — вероятность перехода в двоичном симметричном канале. Если минимальное расстояние кода равно dnml, значения от А, до Ан равны нулю.
mn 1
fi Ч Rn'iMH^unr'Tk п^иап\лк-оима \л мгппяппоииа гм ыЛ
Пример 6.5. Вероятность необнаруженной ошибки в коде
Пусть код (6, 3), введенный в разделе 6.4.3, используется только для обнаружения наличия ошибок. Рассчитайте вероятность необнаруженной ошибки, если применяется двоичный симметричный канал, а вероятность перехода равна 10_г.
Решение
Распределение весовых коэффициентов этого кода выглядит следующим образом: А0=1, А\ — Аг = 0, Ai = 4, А5 = О, А6 = 0. Следовательно, используя уравнение (6.48), можно записать следующее:
Р*& = 4рЧ 1 - Р? + Ър\ 1 -р)2.
Для р = 10“2 вероятность необнаруженной ошибки будет равна 3,9 х 10-6.
6.5.3.2. Одновременное обнаружение и исправление ошибок
Возможность исправления ошибок следует из гарантированного максимума (г), где t определяется уравнением (6.44), для одновременного обнаружения класса ошибок. Код можно использовать для одновременного исправления а и обнаружения (3 ошибок, причем а<(3, а минимальное расстояние кода дается следующим выражением [4]:
d„m S а + Р + 1. (6.49)
При появлении г или меньшего числа ошибок код способен обнаруживать и исправлять их. Если ошибок больше г, но меньше е+1, где е определяется уравнением (6.47), код может определять наличие ошибок, но исправить может только некоторые из них. Например, используя код с d„= 7, можно выполнить обнаружение и исправление со следующими значениями аир.
Обнаружение (Р) Исправление (а)
3 3
4 2
5 1
6 О
Заметим, что исправление ошибки подразумевает ее предварительное обнаружение. В приведенном выше примере (с тремя ошибками) все ошибки можно обнаружить и исправить. Если имеется пять ошибок, их можно обнаружить, но исправить можно только одну из них.
6.5.4. Визуализация пространства 6-кортежей
На рис. 6.14 визуально представлено восемь кодовых слов, фигурирующих в примере из раздела 6.4.3. Кодовые слова образованы посредством линейных комбинаций из трех независимых 6-кортежей, приведенных в уравнении (6.26); сами кодовые слова образуют трехмерное подпространство. На рисунке показано, что такое подпространство полностью занято восемью кодовыми словами (большие черные круги); координаты подпространства умышленно выбраны неортогональными. На рис. 6.14 предпринята попытка изобразить все пространство, содержащее шестьдесят четыре 6-кортежей, хотя точно нарисовать или составить такую модель невозможно. Каждое кодовое слово окружают сферические слои или оболочки. Радиус внутренних непересекающихся слоев — это расстояние Хэмминга, равное 1; радиус внешнего слоя — это расстояние Хэмминга, равное 2. Большие расстоя-
Гланя fi Кянялкнпр кплиппрянирг чяптк 1
ния в этом примере не рассматриваются. Для каждого кодового слова два показанных слоя заняты искаженными кодовыми словами. На каждой внутренней сфере существует шесть таких точек (всего 48 точек), представляющих шесть возможных однобитовых ошибок в векторах, соответствующих каждому кодовому слову. Эти кодовые слова с однобитовыми возмущениями могут быть соотнесены только с одним кодовым словом; следовательно, такие ошибки могут быть исправлены. Как видно из нормальной матрицы, приведенной на рис. 6.11, существует также одна двухбитовая модель ошибки, которая поддается исправлению. Всего существует ^ j = 15 разных двухбитовых моделей ошибки, которыми
может быть искажено любое кодовое слово, но исправить можно только одну из них (в нашем примере это модель ошибки 0 1 0 0 0 1). Остальные четырнадцать двухбитовых моделей ошибки описываются векторами, которые нельзя однозначно сопоставить с каким-либо одним кодовым словом; эти не поддающиеся исправлению модели ошибки дают векторы, которые эквивалентны искаженным векторам двух или большего числа кодовых слов. На рисунке все (56) исправимые кодовые слова с одно- и двухбитовыми искажениями показаны маленькими черными кругами. Искаженные кодовые слова, не поддающиеся исправлению, представлены маленькими прозрачными кругами.
При представлении свойств класса кодов, известных как совершенные коды (perfect code), рис. 6.14 весьма полезен. Код, исправляющий ошибки в г битах, называется совершенным, если нормальная матрица содержит все модели ошибки из г или меньшего числа ошибок и не содержит иных образующих элементов классов смежности (отсутствует возможность исправления остаточных ошибок). В контексте рис. 6.14 совершенный код с коррекцией ошибок в г битах — это такой код, который (при использовании детектирования по принципу максимального правдоподобия) может исправить все искаженные кодовые слова, находящиеся на расстоянии Хэмминга г (или ближе) от исходного кодового слова, и не способен исправить ни одну из ошибок, находящихся на расстоянии, превышающем г.
Кроме того, рис. 6.14 способствует пониманию основной цели поиска хороших кодов. Предпочтительным является пространство, максимально заполненное кодовыми словами (эффективное использование введенной избыточности), а также желательно, чтобы кодовые слова были по возможности максимально удалены друг от друга. Очевидно, что эти цели противоречивы.
6.5.5. Коррекция со стиранием ошибок
Приемник можно сконструировать так, чтобы он объявлял символ стертым, если последний принят неоднозначно либо обнаружено наличие помех или кратковременных сбоев. Размер входного алфавита такого канала равен Q, а выходного — Q + 1; лишний выходной символ называется меткой стирания (erasure flag), или просто стиранием (erasure). Если демодулятор допускает символьную ошибку, то для ее исправления необходимы два параметра, определяющие ее расположение и правильное значение символа. В случае двоичных символов эти требования упрощаются — нам необходимо только расположение ошибки. В то же время, если демодулятор объявляет символ стертым (при этом правильное значение символа неизвестно), расположение этого символа известно, поэтому декодирование стертого кодового слова может оказаться проще исправления ошибки. Код защиты от ошибок можно использовать для исправления стертых символов или одновременного исправления ошибок и стертых символов. Если минимальное расстояние кода равно d,mu любая комбинация из р или меньшего числа стертых символов может быть исправлена при следующем условии [6]:
dltm>p+l. (6.50)
Предположим, что ошибки не появляются вне позиций стирания. Преимущество исправления посредством стираний качественно можно выразить так: если минимальное расстояние кода равно dmm, согласно уравнению (6.50), можно восстановить d,n„ - 1 стирание. Поскольку число ошибок, которые можно исправить без стирания информации, не превышает (dmm - 1)/2, то преимущество исправления ошибок посредством стираний очевидно. Далее, любую комбинацию из а ошибок и у стираний можно исправить одновременно, если, как показано в работе [6],
с1пш> 2а +у + 1. (6.51)
Одновременное исправление ошибок и стираний можно осуществить следующим образом. Сначала позиции из у стираний замещаются нулями, и получаемое кодовое слово декодируется обычным образом. Затем позиции из у стираний замещаются единицами, и декодирование повторяется для этого варианта кодового слова. После об
работки обоих кодовых слов (одно с подставленными нулями, другое — с подставленными единицами) выбирается то из них, которое соответствует наименьшему числу ошибок, исправленных вне позиций стирания. Если удовлетворяется неравенство (6.51), то описанный метод всегда дает верное декодирование.
Пример 6.6. Коррекция со стиранием ошибок
Рассмотрим набор кодовых слов, представленный в разделе 6.4.3.
0 110100 011010 101110 101001 011101 110011 000111
Пусть передано кодовое слово 110011, в котором два крайних слева разряда приемник объявил стертыми. Проверьте, что поврежденную последовательность хх0011 можно исправить. Решение
Поскольку dmn = р + 1 = 3, код может исправить р = 2 стирания. В этом легко убедиться из рис. 6.11 или приведенного выше перечня кодовых слов, сравнивая 4 крайних правых разряда xxOOll с каждым из допустимых кодовых слов. Действительно переданное кодовое слово — это ближайшее (с точки зрения расстояния Хэмминга) к искаженной последовательности.
6.6. Полезность нормальной матрицы
6.6.1. Оценка возможностей кода
Нормальную матрицу можно представлять как организационный инструмент, картотеку, содержащую все возможные 2" записи в пространстве и-кортежей, в которой ничего не упущено и не продублировано. На первый взгляд может показаться, что выгода от использования этого инструмента ограничена малыми блочными кодами, поскольку для кодов длиной более л = 20 пространство н-кортежей насчитывает миллионы элементов. Впрочем, даже для больших кодов нормальная матрица позволяет определить важные исходные характеристики, такие как возможные компромиссы между обнаружением и исправлением ошибок и пределы возможностей кода в коррекции ошибок. Одно из таких ограничений, называемое пределом Хэмминга [7], описывается следующим образом:
Количество бит четности: п-к> log2
или
Здесь величина ^, определяемая уравнением (6.16), представляет число способов
выбора из п бит j ошибочных. Заметим, что сумма членов уравнения (6.52), находящихся в квадратных скобках, дает минимальное количество строк, которое должно присутствовать в нормальной матрице для исправления всех моделей ошибки, вплоть до f-битовых ошибок. Неравенство определяет нижнюю границу числа п-к бит четности (или Т~к классов смежности) как функцию возможностей кода в коррекции r-битовых ошибок. Аналогичным образом можно сказать, что неравенство дает верхнюю границу возможностей кода в коррекции f-битовых ошибок как
функцию числа п-к бит четности (или 2n~k классов смежности). Для обеспечения возможности коррекции r-битовых ошибок произвольных линейных блочных кодов (п, к) необходимым условием является удовлетворение предела Хэмминга.
Чтобы показать, как нормальная матрица может обеспечить визуальное представление этого предела, возьмем в качестве примера код БХЧ (127,106). Матрица содержит все 2п~ 2127 = 1/70Х1038 /1-кортежей пространства. Верхняя строка матрицы содержит 2*= 2106 = 8,11 х 1031 кодовых слов; следовательно, это число столбцов в матрице. Крайний левый столбец содержит 2"~к = 22' =2 097 152 образующих элемента классов смежности; следовательно, это количество строк в матрице. Несмотря на то что число л-кортежей и кодовых слов просто огромно, нас не интересует конкретный вид каждого элемента матрицы. Основной интерес представляет количество классов смежности. Существует 2 097 152 класса смежности и, следовательно, 2 097 151 модель ошибки, которую способен исправить этот код. Далее показано, каким образом это число классов смежности определяет верхний предел возможностей кода в коррекции r-битовых ошибок.
Поскольку каждое кодовое слово содержит 127 бит, существует 127 возможностей допустить ошибку в одном бите. Рассчитываем количество возможностей появления двух (127^
ошибок— I 2 J = 8 001. Затем переходим к трехбитовым ошибкам, поскольку ошибки,
упомянутые выше, — это Лишь незначительная часть всех 2 097 151 моделей ошибки.
(127^
Итак, существует К I = 333 375 возможностей совершить трехбитовую ошибку. Эти расчеты приведены в табл. 6.3; там же показано, что нулевая модель ошибки требует наличия первого класса смежности. Затем перечислены требования одно-, двух- и трехбитовых ошибок. Также показывается количество классов смежности, необходимое для коррекции каждого типа ошибок, и общее количество классов смежности, необходимых для коррекции ошибок всех типов, вплоть до требуемого типа ошибки. Из этой таблицы можно видеть, что код (127,106) способен исправить все модели, содержащие 1, 2 или 3 ошибочных бита, причем это составляет только 341 504 из 2 097 152 возможных классов смежности. Неиспользованные 1 755 648 строк говорят о больших потенциальных возможностях в коррекции ошибок, чем было использовано. Действительно, в матрицу можно попытаться втиснуть все возможные 4-битовые ошибки. Но при взгляде на табл. 6.3 становится совершенно ясно, что это невозможно, поскольку, как показывает последняя строка таблицы, число оставшихся в матрице классов смежности значительно меньше общего числа классов смежности, требуемого для коррекции 4-битовых ошибок. Следовательно, предел Хэмминга описанного кода (127, 106) гарантирует исправление всех ошибок вплоть до 3-битовых.
Дата добавления: 2015-10-28; просмотров: 65 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Основы теории принятая статистических решений 1051 30 страница | | | Основы теории принятая статистических решений 1051 32 страница |