Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2Diskretnaya_matematika_-_2_semestr.doc
Скачиваний:
62
Добавлен:
26.09.2019
Размер:
5.82 Mб
Скачать

21(38) Обнаружение ошибки в кодах Хемминга.

Пусть при передаче кода b~=b1,b2,…,bl произошла ошибка в разряде с номером t, т.е. на выходе канала получено слов b~’=b’1,b’2,…,b’t-1,b’t,b’t+1,b’l.

Представим t в виде k-разрядного двоичного числа: t=Vk-1Vk-2…V1V0.

Покажем, как по коду b~’ найти разряды Vi для числа t.

Рассмотрим t’=V’k-1V’k-2…V0, где V’0=⊕Σb’j, j∈L0

V’1=⊕Σb’j, j∈L1

V’2=⊕Σb’j, j∈Lk-1

Докажем, что t’=t, т.е. V’0=V0…V’k-1=Vk-1

Случаи:

1)Пусть Vi=0. Это означает, что t∉Li={j∈L/Vi=1}

Следовательно, все разряды с номерами из множества Li, полученные на выходе канала без искажения, т.е.

b’j=bj, ∀j∈Li

Учитывая, что b2i=⊕Σbj, j∈Li, j≠2i.

Получим, что V’i=⊕Σb’j= b2i⊕ Σbj

b2i⊕ b2i=0 ∀j∈Li

2)Пусть Vi=1

t∈Li={ j∈L/Vi=1}

Некоторый разряд с номером из множества Li получен на выходе канала с искажением. Таким образом, ∃q∈Li:b’q=bq=bq⊕1 для всех j∈Li, j≠q, b’j=bj

Отсюда получаем V’i=⊕Σb’j=(⊕bi) ⊕1=0⊕1=1=Vi

Пусть в рассмотренном примере ошибка при передаче кодового слова b~=b1b2…b13=1010011010111 в 11 разряде, т.е. t=11. На выходе канала получено сообщение b’=b’1…b’13=1010011010011. Для этого кодового сообщения получаем

V’0=b’1⊕b’3⊕b’5⊕b’7⊕b’9⊕b’11⊕b’13=1⊕1⊕0⊕1⊕0⊕1=1

V’1= b’2⊕b’3⊕b’6⊕b’7⊕b’10⊕b’11=1

V’2= b’4⊕b’5⊕b’6⊕b’7⊕b’12⊕b’13=0

V’3= b’8⊕b’9⊕b’10⊕b’11⊕b’12⊕b’13=1

Таким образом, двоичное представление номера разряда, в котором произошла ошибка, есть t=V3V2V1V0=1011. Но это не что иное, как двоичное представление числа 1110.

Вывод: ошибочный разряд ошибочный.

Декодирование, получение исходного сообщения.

Этот шаг осуществляется следующим образом: после исправления ошибки нужно выписать информационные символы.

a~=a1a2…am=b3b5b6b7b9b10b11b12b13. В нашем примере b~=b1…b13=1010011010111, выписываем a~=101110111. Это и есть исходное сообщение.