Академический Документы
Профессиональный Документы
Культура Документы
Korobeynikova
Korobeynikova
Курсовая работа
Код Хемминга
Выполнила: студентка
32 группы
Коробейникова
Ольга Витальевна
______________________________(подпись)
Научный руководитель:
Курганова
Наталья Александровна
к.п.н., доцент
Оценка _______________
2
Оглавление
Введение.....................................................................................................................4
Глава 1. Теоретические основы изучения помехоустойчивого кодирования......6
1.1. Виды помехоустойчивого кодирования.................................................6
1.2. Характеристика кода Хемминга при помехоустойчивом кодировании
...................................................................................................................................12
1.3. Алгоритмы использования кода Хемминга для нахождения ошибок
...................................................................................................................................15
Глава 2. Практические основы кода Хемминга....................................................18
2.1. Примеры использования кода Хемминга для нахождения одной
ошибки......................................................................................................................18
2.2. Примеры использования кода Хемминга для нахождения двоичной
ошибки......................................................................................................................21
ЗАКЛЮЧЕНИЕ........................................................................................................22
Список литературы..................................................................................................23
3
Введение
На сегодняшний день в мире передается огромное количество
информации, хотя системы передачи данных отвечают всем требованиям. Они
не являются столь совершенными. При передаче данных могут возникать
помехи. Помехоустойчивость – способность системы осуществлять прием
информации в условиях наличия помех в линии связи и искажений во внутри
аппаратных трактах. Помехоустойчивость обеспечивает надежность и
достоверность передаваемой информации (данных).Управление
правильностью передачи информации выполняется с помощью
помехоустойчивого кодирования. Есть коды, обнаруживающие ошибки, и
корректирующие коды, которые еще и исправляют ошибки.
Помехозащищенность достигается с помощью введения избыточности,
дополнительных битов. В симплексных каналах связи устраняют ошибки с
помощью корректирующих кодов. В дуплексных–достаточно применения
кодов, обнаруживающих ошибки. [1]
История развития помехоустойчивого кодирования началась еще с
1946г., а именно, после публикации монографии американского ученого К.
Шеннона «Работы по теории информации и кибернетике».В этой работе он не
показал как построить эти коды, а доказал их существование. Важно отметить,
что результаты работы К. Шеннона опирались на работы советских ученых,
таких как: А. Я. Хинчин, Р.Р. Варшамов и др. На сегодняшний день проблема
передачи данных является особо актуальной,т.к. сбой при передаче может
вызвать не только искажение сообщения в целом, но и полную потерю
информации. Для этого и существуют помехоустойчивые коды, способные
предотвратить потерю и искажение информации. В настоящее время
существует ряд разновидностей помехоустойчивых кодов, обеспечивающих
высокую достоверность при малой величине избыточности и простоте
технической реализации кодирующих и декодирующих устройств.
Принципиально коды могут быть использованы как для обнаружения, так и
для исправления ошибок. Однако удобства построения кодирующих и
4
декодирующих устройств определили преимущественное применение лишь
некоторых из них, в частности корректирующего кода Хемминга.
Цель данной курсовой работы: Ознакомление с помехоустойчивым
кодированием и изучение кода Хемминга.
Задачи:
1) Ознакомиться с видами помехоустойчивого кодирования;
2) Ознакомиться с кодом Хемминга, как с одним из видов
помехоустойчивого кодирования;
3) Изучить алгоритм построения кода Хемминга.
Объект исследования: помехоустойчивое кодирование.
Предмет исследования: код Хемминга.
Данная курсовая работа состоит из титульного листа,
оглавления,введения, двух глав (теоретической и практической), заключения и
списка литературы.
5
Глава 1. Теоретические основы изучения помехоустойчивого
кодирования
1.1. Виды помехоустойчивого кодирования
В мире существует немало различных помех и искажений, это могут
быть как звуковые искажения, так и на графике. Мы рассмотрим, что
понимается под помехой в кодировании информации. Под помехой
понимается любое воздействие, накладывающееся на полезный сигнал
изатрудняющее его прием. Ниже приведена классификация помех и их
источников.
Помехи и источники
Источники Помехи
6
связано с дроблением единого видеосигнала на некоторое количество более
коротких сигналов [2].
Приведем классификацию помехоустойчивых кодов.
1) Обнаруживающие ошибки:
блоковые:
А) Разделимые:
с проверкой на четность;
корреляционные;
Хэмминга;
БЧХ;
Б) Неразделимые:
с постоянным весом;
Грея.
2) Корректирующие коды:
Непрерывные:
А) С пороговым декодированием;
Б) По макс. правдоподобия;
В) С последовательным декодированием.
Теперь рассмотрим более подробно каждый вид кодирования.
Код с проверкой на четность.
Проверка четности – очень простой метод для обнаружения ошибок в
передаваемом пакете данных. С помощью данного кода мы не можем
восстановить данные, но можем обнаружить только лишь одиночную ошибку.
В каждом пакет данных есть один бит четности, или, так называемый,
паритетный бит. Этот бит устанавливается во время записи (или отправки)
данных, и затем рассчитывается и сравнивается во время чтения (получения)
данных. Он равен сумме по модулю 2 всех бит данных в пакете. То есть число
единиц в пакете всегда будет четно. Изменение этого бита (например с 0 на 1)
сообщает о возникшей ошибке.
7
Пример:
Начальные данные: 1111
Данные после кодирования: 11110 (1 + 1 + 1 + 1 = 0 (mod 2))
Принятые данные: 10110 (изменился второй бит)
Как мы видим, количество единиц в принятом пакете нечетно,
следовательно, при передаче произошла ошибка [3].
Корреляционные коды (код с удвоением).
Элементы данного кода заменяются двумя символами, единица «1»
преобразуется в 10, а ноль «0» в 01.
Вместо комбинации 1010011 передается 10011001011010. Ошибка
обнаруживается в том случае, если в парных элементах будут одинаковые
символы 00 или 11 (вместо 01 и 10) [2].
Код с постоянным весом.
Одним из простейших блочных неразделимых кодов является код с
постоянным весом. Примером такого кода может служить семибитный
телеграфный код МТК–3, в котором каждая разрешенная кодовая комбинация
содержит три единицы и четыре нуля (рис.2). Весом кодовой комбинации
называют число содержащихся в ней единиц. В рассматриваемом коде вес
кодовых комбинаций равен трем.
Число разрешенных кодовых комбинаций в кодах с постоянным весом
определяется как количество сочетаний изnсимволов поgи равно
g n!
N p=Cn = (1)
g ! ( n−g ) !
8
Рис.2. Примеры разрешенных и запрещенных комбинаций кода МТК-3
Инверсный код.
К исходной комбинации добавляется такая же комбинация по длине. В
линию посылается удвоенное число символов. Если в исходной комбинации
четное число единиц, то добавляемая комбинация повторяет исходную
комбинацию, если нечетное, то добавляемая комбинация является инверсной
по отношению к исходной.
k r n
4) 11000
11100
00100
Обнаруживающие способности данного кода достаточно велики.
Данный код обнаруживает практически любые ошибки, кроме редких ошибок
смещения, которые одновременно происходят как среди информационных
символов, так и среди соответствующих контрольных. Например, при k=5,
n=10 и р=10−2. Коэффициент обнаружения будет составлять К обн .=1−10−5 [2].
Код Грея.
По сравнению с простым кодом, код Грея позволяет уменьшить ошибки
неоднозначности считывания, а также ошибки из-за помех в канале. Обычно
этот код применяется для аналогово-цифрового преобразования непрерывных
сообщений.
Недостатком кода Грея является его невесомость, т.е. вес единицы не
определяется номером разряда. Информацию в таком виде трудно
обрабатывать на ЭВМ. Декодирование кода также связано с большими
затратами. Поэтому перед вводом в ЭВМ (или перед декодированием) код
Грея преобразуется в простой двоичный код, который удобен для ЭВМ и легко
декодируется.
Для перевода простого двоичного кода в код Грея нужно:
1. под двоичным числом записать такое же число со сдвигом вправо
на один разряд (при этом младший разряд сдвигаемого числа теряется);
2. произвести поразрядное сложение двух чисел по модулю 2
(четности). [5].
10
Таким образом, мы рассмотрели виды помехоустойчивого кодирования
и увидели, что их существует не так уж и мало. Каждый код по своему
уникален и полезен для кодирования информации. Теперь мы ознакомимся с
кодом Хемминга подробнее.
11
1.2.Характеристика кода Хэмминга при помехоустойчивом
кодировании
В середине 40-х годов Ричард Хемминг работал в знаменитых
Лабораториях Белла на счётной машине Bell Model V. Это была
электромеханическая машина, использующая релейные блоки,скорость
которых была очень низка: один оборот за несколько секунд. Данные
вводились в машине с помощью перфокарт, и поэтому в процессе чтения часто
происходили ошибки. В рабочие дни использовались специальные коды,
чтобы обнаруживать и исправлять найденные ошибки, при этом оператор
узнавал об ошибке по свечению лампочек, исправлял и запускал машину. В
выходные дни, когда не было операторов, при возникновении ошибки машина
автоматически выходила из программы и запускала другую.
Р. Хемминг часто работал в выходные дни, и все больше и больше
раздражался, потому что часто был должен перегружать свою программу из-за
ненадежности перфокарт. На протяжении нескольких лет он проводил много
времени над построением эффективных алгоритмов исправления ошибок. В
1950 году он опубликовал способ, который на сегодняшний день мы знаем как
код Хемминга.[6.].
Код Хемминга, как и любой (n,k) код, содержит k информационных и
p=n−k избыточных символов. Избыточная часть кода строится таким образом,
12
двоичное число, указывающее номер искаженного символа. Для исправления
ошибки достаточно лишь изменить значение данного символа на обратное. [7]
К ним обычно относятся коды с минимальным кодовым расстоянием
d мин=3исправляющие все одиночные ошибки, и коды с расстоянием d мин=4
13
Рис.5. Система проверочных уравнений
14
1.3.Алгоритмы использования кода Хэмминга для нахождения
ошибок
Код Хэмминга представляет собой блочный код, который позволяет
выявить и исправить ошибочно переданный бит в пределах переданного
блока. Код Хэмминга состоит из двух частей. Первая часть кодирует исходное
сообщение, вставляя в него в определённых местах контрольные биты
(вычисленные особым образом). Вторая часть получает входящее сообщение и
заново вычисляет контрольные биты (по тому же алгоритму, что и первая
часть). Если все вновь вычисленные контрольные биты совпадают с
полученными, то сообщение получено без ошибок. В противном случае,
выводится сообщение об ошибке и при возможности ошибка исправляется.
Рассмотрим алгоритм построения кода для исправления одиночной
ошибки.
1.По заданному количеству информационных символов – k, либо
информационных комбинаций N=2k, используя соотношения: n=k +m , 2n ( n+1 ) 2k
(3)
и 2m n+1(4)
m=¿ (5)
15
или при помощи проверочной матрицы H(mn), столбцы которой представляют
запись в двоичной системе всех целых чисел от 1 до 2k −1 перечисленных в
возрастающем порядке.
Количество разрядов m – определяет количество проверок.
В первую проверку включают коэффициенты, содержащие 1 в младшем
(первом) разряде, т.е. b1,b3, b5 и т.д.
Во вторую проверку включают коэффициенты, содержащие 1 во втором
разряде, т.е. b2, b3, b6 и т.д.
В третью проверку –коэффициенты которые содержат 1 в третьем
разряде и т.д.
Таблица 2
Десятичные Двоичные числа и их
числа (номера разряды
разрядов
кодовой
комбинации)
3 21
1 0 01
2 0 10
3 0 11
4 1 00
5 1 01
6 1 10
7 1 11
16
Для исправления ошибки необходимо проинвертировать бит в
ошибочной позиции. Для исправления одиночной ошибки и обнаружения
двойной используют дополнительную проверку на четность. Если при
исправлении ошибки контроль на четность фиксирует ошибку, то значит в
кодовой комбинации две ошибки.[9]
Вывод к главе 1: Таким образом, мы узнали, что такое
помехоустойчивость, помехоустойчивое кодирование, ознакомились с видами
помехоустойчивого кодирования. Затем рассмотрели код Хемминга, изучили
алгоритм построения кода Хемминга. При построении кода важно знать, что
код Хемминга ищет и исправляет одиночную ошибку, но двойную ошибку. В
итоге, изучив теоретическую часть, мы выяснили, какие существуют виды
помехоустойчивого кодирования. Ознакомились подробнее с кодом Хемминга,
изучили его алгоритм кодирования.
17
Глава 2. Практические основы кода Хемминга
2.1. Примеры использования кода Хемминга для нахождения
одной ошибки
Существует множество различных примеров для нахождения ошибок
при помощи кода Хемминга.
Пример 1. Пользуясь кодом Хэмминга найти ошибку в сообщении.
1) 1111 1011 0010 1100 1101 1100 110
РЕШЕНИЕ. Сообщение состоит из 27 символов, из них 22
информационные, а 5 – контрольные. Это разряды b1 = 1, b2 = 1, b4 = 1, b8 = 1,
b16=0. Вычислим число J для обнаружения ошибки: Введем для удобства
следующие множества:
V1 = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27… – все числа у которых
первый разрядравен 1
V2 = 2, 3, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 26, 27… – все числа, у
которых второй разрядравен 1
V3 = 4, 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23 … – все числа, у которых
третий разряд равен1
V4 = 8, 9, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27 … – все числа, у которых
четвертый разрядравен 1,
V5 = 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 … – все числа, у которых
пятый разрядравен 1.
Разряды числа J определяются следующим образом:
j1 = b1 +b3+b5+b7+b9+b11+b13+b15+b17+b19+b21+b23+b25+b27 =
1
j2=b2+b3+b6+b7+b10+b11+b14+b15+b18+b19+b22+b23+b26+b27=
0
j3 = b4+b5+b6+b7 +b12+b13+ b14+ b15+ b20 +b21+b22+b23 = 0
j4 =b9+b10+b11+b12+b13+b14+b15+b24+b25+b26+b27 = 0,
j5 = b16+ b17+b18+b19+b20+b21+b22+b23+b24+b25+b26+b27 = 1
18
то есть число J=1000122 = 171010.
Таким образом, ошибка произошла в семнадцатом разряде переданного
числа.[10]. В этом примере мы рассмотрели, как можно обнаружить
одиночную ошибку. Далее мы проанализируем пример, как можно найти и
исправить эту ошибку.
Пример 2.
Построить код Хемминга для передачи сообщений в виде
последовательности десятичных цифр, представленных в виде 4 –х разрядных
двоичных слов. Показать процесс кодирования, декодирования и исправления
одиночной ошибки на примере информационного слова 0101.
Решение:
1. По заданной длине информационного слова (k = 4 ), определим
количество контрольных разрядов m, используя соотношение:
m=[log 2{(k + 1)+[log2 (k +1)]}]=[log 2 {(4+ 1)+[log 2 (4+ 1)]}]=3 ,
20
2.2. Примеры использования кода Хемминга для нахождения
двоичной ошибки
Для обнаружения двойной ошибки следует только добавить еще один
проверочный разряд.
Пример 1:
Принята кодовая комбинация С = 101000001001, произошло
искажение 2-го и 5-го разрядов. Обнаружить ошибки.
Решение.
Значения проверок равны:
k1= b1 b3 b5 b7 b9 b11 = 110010= 1
k2= b2 b3 b6 b7 b10 b11= 010000=1
k3=b4 b5 b6 b7 b12= 00001=1
k4= b8 b9 b10 b11 b12= 01001=0
Тогда контрольное число (синдром) ошибкиравен 0111.
Таким образом, при наличии двукратной ошибки декодирование дает
номер разряда с ошибкой в позиции 7, в то время как ошибки произошли
во 2-м и 5-м разрядах. В этом случае составляется расширенный код
Хэмминга, путем добавления одного проверочного символа.
Пример 2 :
Передана кодовая комбинация "01001011", закодированная кодом Хемминга с
d = 4. Показать процесс выявления ошибки.
Решение:
Принята комбинация "01001111":
а) проверка на общую четность указывает на наличие ошибки (число единиц
четное);
б) частные проверки производятся так же, как это было в других примерах.
При составлении проверочных сумм последние единицы кодовых комбинаций
(дополнительные контрольные символы) не учитываются.
2. Принята комбинация "01101111":
21
а) проверка на общую четность показывает, что ошибка не фиксируется;
б) частные проверки (последний символ отбрасывается)
Первая проверка 0 1 1 1 = 1
Вторая проверка 1 1 1 1 = 0
Третья проверка 0 1 1 1 = 1
Таким образом, частные проверки фиксируют наличие ошибки. Она, якобы,
имела место на пятой позиции. Но так как при этом первая проверка на общую
четность ошибки не зафиксировала, то значит, имела место двойная ошибка.
Исправить двойную ошибку такой код не может [14].
Вывод к главе 2: Таким образом, мы показали, как работает код Хемминга на
практике. Мы видим, что при одиночной ошибке ее можно исправить, но для
этого нам нужно знать, сколько потребуется контрольных разрядов, а двойную
ошибку можно лишь обнаружить.
22
ЗАКЛЮЧЕНИЕ
Высокие требования к достоверности передачи, обработки и хранения
информации диктуют необходимость такого кодированияинформации, при
котором обеспечивалось бы возможность обнаружения и исправления ошибок.
Широкому применению результатов теории помехоустойчивогокодирования в
современных системах связи, обработки и хранения информацииследует
считать отсутствие достаточно простых решений сложных теоретических
достижений теории помехоустойчивого кодирования.В данной работе
исследовано помехоустойчивое кодирование, в частности код Хемминга.
23
Список литературы
1. Вернер М. Основы кодирования[Текст].– М.: Техносфера, 2004. –
288 с.
2. Помехоустойчивое кодирование [Электронный ресурс]. – Режим
доступа:https://clck.ru/9cWsc,свободный. Дата обращения: 27.11.2015.
3. Помехоустойчивое кодирование [Электронный ресурс]. – Режим
доступа:http://habrahabr.ru/post/111336/, свободный. Дата обращения:
05.12.2015.
4. Файловый архив для студентов. Лекция: основные понятия
кодирования в ЦСПИ [Электронный ресурс]. – Режим доступа:
http://www.studfiles.ru/preview/4087325/,свободный. Дата обращения:
27.11.2015.
5. Лекция «Простейшие коды» [Электронный ресурс]. – Режим
доступа: http://davaiknam.ru/text/lekciya-3-kodirovanie-informacii-prostejshie-
kodi, свободный. Дата обращения: 27.11.2015.
6. Академик [Электронный ресурс] – Режим доступа:
http://dic.academic.ru/dic.nsf/ruwiki/177544, свободный. Дата обращения:
27.11.2015
7. Кузьмин И.В.Основы теории информации и кодирования [Текст]. –
Киев,1986. – 237 с.
8. Научная библиотека. Код Хемминга [Электронный ресурс]. –
Режим доступа: http://info.sernam.ru/book_codb.php?id=28, свободный. Дата
обращения: 05.12.2015
9. Статья корректирующие коды [Электронный ресурс]. – Режим
доступа: http://referatwork.ru/refs/source/ref-11094.html#Текст работы,
свободный. Дата обращения: 05.12.2015
10. МатБюро- решение задач по высшей математике [Электронный
ресурс]. – Режим доступа: http://www.matburo.ru/Examples/Files/Hem2.pdf,
свободный. Дата обращения: 06.12.2015.
24
11. Блейхут Р. Теория и практика кодов, контролирующих ошибки.
[Текст]. – Москва, 1986г. –576 с.
12. Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования –
методы, алгоритмы, применение. [Текст]. – Москва, 2005г.–320 с.
13. Р.Хемминг Теория кодирования и теория информации. / Перевод с
английского С.Гальфанда. // [Текст]. – Москва, 1983г. – 176 с.
14. Портал студентов «Седьмой бит» [Электронный ресурс]. – Режим
доступа: http://www.itmo.ru/work/253/page4, открытый. Дата обращения:
20.12.2015.
25