Автор работы: Пользователь скрыл имя, 26 Декабря 2012 в 19:21, курсовая работа
Аналитический обзор по помехоустойчивому кодированию. Классификация помехоустойчивых кодов и сравнение характеристик методов коррекции ошибок.
История кодирования, контролирующего ошибки 2
Приложения 5
Общие сведения о кодах и системах кодированной связи 7
Мешающие влияния в каналах связи 13
Основные принципы помехоустойчивого кодирования 18
Пример. 21
Краткая классификация 23
Практика кодирования 31
Код Хэмминга 40
e0 = B1+B3+B5+B7 mod 2. (1.14а)
Аналогично, обращая внимание на то, что значения e1 и e2 отвечают за соответственно B2 B3 B6 B7 , B4 B5 B6 B7, получим
e1= B2+B3+B6+B7 mod 2, (1.15a)
e2= B4+B5+B6+B7 mod 2. (1.16a)
Обратим внимание, что систему (1.14а) - (1.16а) можно рассматривать как развернутую запись матричного уравнения
B1
B2
e0 1010101 B3
e1 = 0110011 B4
e2 0001111 B5
B6
B7
или Ve=AVa, где Ve, - вектор ошибки, указывающий на ее месторасположение; А - основная матрица, столбцы которой суть двоичные записи чисел от одного до семи.
Операция сложения во всех трех уравнениях (1.14а) - (1.16а) осуществляется по модулю два. Подставляя в систему уравнении (1.14а) - (1.16a) e0=e1=e2=0, получим систему из трех уравнений
B1+B1+B5+B7=0 mod2 (1.14б)
B2+B3+B6+B7=0 mod2 (1.15б)
B4+B5+B6+B7=0 mod2, (1.
Приняв в качестве неизвестных
величины B5, B6 и B7 получим систему
из трех уравнений с тремя
B5+B7=B1+B3 mod2, (1.14в)
B6+B7=B2+B3 mod2, (1.15в)
B5+B6+B7=B4 mod2. (1.16в)
Эта система эквивалентна одному матричному
уравнению
B1
101 B5 1010 B2
011 B6 = 0110 B3 (1.17)
111 B7 0001 B4
или
CVe=IVi. (1.17a)
где Ve и Vi, векторы-столбцы, координаты
которых представлены соответственно
контрольными и информационными разрядами;
С и I - так называемые контрольная и информационная
матрицы. Столбцы этих матриц суть двоичные
записи номеров соответственно контрольных
и информационных разрядов.
Решение системы (1.14в) - (1.16в), или. что то же самое, матричного уравнения (1.17) относительно B5, B6, B7 приводит к конкретным выражениям для функций (1.11) -(1.13):
B5=B2+B3+B4 mod2, (1.11а)
B6=B1+B3+B4 mod2, (1.12а)
B7=B1+B2+B4 mod2. (1.13a)
Заметим, что сам Р. Хэмминг в качестве контрольного берет не набор символов B(m+1),B(m+2), ...B(m+x), а нaбор символов, индексы которых представляют целые степени двойки. В случае, когда число контрольных символов равно трем, эти индексы равны 20 =1, 21 = 2 и 22= 4, т.е. речь идет о наборе символов B1B2B4, относительно которых решение системы (1.14б) - (1.16б) чрезвычайно упрощается:
B1=B3+B5+B7 mod 2,
B2=B3+B6+B7 mod 2,
B4=B5+B6+B7 mod 2.
Это и естественно, поскольку в данном случае вместо (1.17) имеем дело с матричным уравнением
B3
1 0 0 B1 B5
0 1 0 B2 = B6
0 0 1 B4 B7
где контрольная матрица С всегда равна единичной матрице.
Отметив, что при указанной рекомендации
Р. Хэмминга контрольная матрица
всегда (независимо от m и x) оказывается
равной единице, подробное обсуждение
этой рекомендации оставим на потом,
продолжая рассматривать в
Рассмотрим, к примеру, набор информационных символов B1B2B3B4 = 1011. С помощью зависимостей (1.11a) - (1.13а) определим набор контрольных (дополнительно введенных, избыточных) символов B5B6B7 = 010. Пусть ошибка произошла на уровне символа B5 т.е. вместо истинного расширенного кодового набора 1011 (0)10 получен код 1011 (1)10. Тогда с помощью зависимостей (1.14а)- (1.16а) найдем
e0=1+1+1+0=1 mod2,
e1=0+1+1+0=0 mod2,
e2=1+1+1+0=1 mod2.
Набор значений e2e1e0=101 является двоичной записью числа "пять", т.е. указывает именно на пятую позицию (на символ B5), где, собственно, и произошла ошибка.
Приведенная схема Р. Хэмминга по конструированию
кода, обнаруживающего и
2х- х - 1 = m. (1.10б)
Заметим также, что вовсе не обязательно, чтобы набор из m информационных символов представлял собой код какой-то определенной буквы, как это имело место в только что рассмотренном примере. На практике сначала можно осуществить оптимальное (или близкое к оптимальному) кодирование текста. Затем уже закодированный текст можно делить на блоки по m двоичных символов в каждом, причем из возможных значений m = 2x - х - 1 (х = 3, 4, ...) его конкретное значение следует выбирать исходя из эксплуатационной необходимости. При прочих равных условиях значение m должно быть тем меньшим, чем больше значимость информации и чем больше уровень помех. После выбора конкретного значения m каждый блок из m информационных символов следует наращивать х = х (m) контрольными символами, предназначенными для обнаружения и исправления одиночных ошибок в рамках данного блока.
А теперь вернемся к рассмотрению вопроса о том, почему Р. Хэмминг в качестве контрольных берет именно символы, индексы которых равны целым степеням двойки, т.е. 1, 2, 4, 8, 16,.... Во-первых, как уже об этом говорилось выше, при таком выборе контрольная матрица всегда оказывается равной единице, т.е. фактически снимается вопрос решения системы (1.14б)-(1.16б) относительно контрольных символов, так как ее "решение" сводится к простому переписыванию соответствующих уравнений. Но это не главное, так как систему (1.14б)-(1.16б) приходится решать только один раз и далее при каждом акте кодирования мы пользуемся лишь системой (1.11a) - (1.1 За) - решением системы (1.14б)-(1.16б) относительно контрольных символов. При реализации процедур кодирования и декодирования на ЭВМ сам факт, что контрольные символы разобщены (не следуют подряд друг за другом), создает определенные неудобства при каждом акте кодирования и декодирования. Естественно поэтому желание выбрать контрольные символы таковыми, чтобы они следовали подряд друг за другом, пусть даже ценою того, чтобы один раз решить систему (1.14б) - (1.16б). Именно так поступали мы, когда вопреки рекомендации Р. Хэмминга взять в качестве контрольных символы B1,B2 и B4 взяли в качестве таковых символы B5, B6 и B7. Хотя это и вынудило нас решить систему (1.14в) - (1.16в) относительно переменных B5, B6 и B7, но зато при каждом акте кодирования и декодирования мы смогли оперировать "пачками" контрольных символов, а не "выковыривать" их среди информационных символов.
Возникает вопрос; а всегда ли, при любом числе информационных символов мы смогли бы поступать аналогичным образом? Нет, не смогли бы, если по-прежнему хотим, чтобы двоичный набор символов ex-1,ex-2,...,e0 указывал на адрес ошибки. Потому что уже когда число контрольных символов больше трех, мы не имеем права взять в качестве контрольных последние х символов. Легко убедиться, что при этом контрольная матрица непременно оказалась бы вырожденной, т.е. значение ее детерминанта оказалась бы равным нулю. Более того, даже в рассмотренном нами случае, когда число контрольных символов равно трем, мы не смогли бы в качестве контрольных взять, например, первые три символа. Во всех этих случаях определители контрольных матриц (вспомним, что столбцы этой матрицы суть двоичные записи номеров выбранных нами контрольных символов) оказываются равными нулю. Пусть, например, мы выбрали в качестве контрольных не пачку символов B5, B6, B7, а символы B1, B2, B3. Тогда нам пришлось бы иметь дело с квадратной матрицей третьего порядка, столбцы которой являются двоичными формами записи чисел 1, 2 и 3:
101
С = 011.
000
Равенство нулю детерминанта этой матрицы свидетельствует о том, что систему (1.14б) - (1.16б) нельзя решить относительно переменных B1, B2, B3.
Таким образом, при выборе среди m + x символов x контрольных следует заботиться о том, чтобы определитель контрольной матрицы порядка x, столбцы которой представляют собой двоичные записи номеров выбранных символов, не оказался равным нулю. Именно чтобы избавиться от этих забот, Р. Хэмминг рекомендует в качестве контрольных взять символы с индексами I, 2, 4, 8 и т.д. Легко обнаружить, что при таком выборе контрольных символов мы всегда (независимо от их числа) будем иметь дело с единичной матрицей.
Кроме зависимости (1.10а). на рисунке приведена также зависимость относительной избыточности от m. Легко заметить, что с увеличением m требуемый процент избыточности для обнаружения и исправления одиночной ошибки резко уменьшается. Столь неестественный результат является следствием искусственного, далекого от реальности допущения, что в рамках каждого кодового набора независимо от его длины m + x может произойти не более одной ошибки. Если же допустить возможность двух и более ошибок, то задача их обнаружения, и тем более исправления усложняется. Построить для этих случаев коды столь же элегантные, как код Р. Хэммннга для одиночной ошибки, пока не удалось.