- •1(18).Основное понятие теории графов. Определения и разновидности графов. Способы задания графов: аналитический, геометрический, матричный. Изоморфизм графов. Примеры.
- •2(19). Операции над графами с примерами.
- •3(20) Маршруты. Цепи. Циклы.
- •4(21) Метрические характеристики графа
- •5(22) Понятие сети. Матрица весов.
- •6(23) Алгоритм Беллмана-Мура (алгоритм корректировки меток)
- •7(24). Деревья и их свойства. Лес.
- •8(25). Задача об остове экстремального веса.
- •9(26) Эйлеровы графы и циклы. Алгоритм Флерн. Гальмитоновые графы и циклы
- •10(27) Планарные графы. Укладка графа. Теорема Эйлера. Теорема Понтрягина-Куратовского. Понятие искаженности и толщины непланарных графов
- •11(28) Алгоритм плоской укладки
- •2 Итерация
- •12(29). Раскраски графов
- •13(30)Потоки в сетях.
- •14(31) Потоки минимальной стоимости.
- •15(32)Элементы теории кодирования. Кодирование как способ представления информации.
- •16(33) Общий критерий взаимной однозначности. Теорема Маркова. Примеры
- •17(34) Неравенство Макмиллана.
- •18(35) Коды с минимальной избыточностью. Примеры.
- •19(36). Оптимальное кодирование Хаффмана. Решение задачи о построении кодов с минимальной избыточностью для двоичного кодирования.
- •20(37) Самокорректирующиеся коды. Коды Хэмминга. Алгоритм построения кода Хэмминга
- •21(38) Обнаружение ошибки в кодах Хемминга.
20(37) Самокорректирующиеся коды. Коды Хэмминга. Алгоритм построения кода Хэмминга
Пусть дан алфавит сообщений из 0 и 1, A={0,1}. Множество A содержит 2 символа
{ȃ1,ȃ2…ȃs} - сножество всех слов вида ȃ=a1a2…am в алфавите A имеющих фиксированную длину n. Таких слов 2m=S
Предположим, что в канале связи по которому передаются слова (сообщения) действует источник помех который может вызвать ошибки не более чем в p символов одного слова. Это значит что двоичная последовательность полученная на выходе канала связи отличается от двоичной последовательности потупившей на вход этого канала не более чем в p позициях. Если передавать исходное сообщение a1a2…am без предварительного кодирования, то на выходе канала связи невозможно будет установить какое сообщение фактически было передано. В связи с эти возникает вопрос: нельзя ли осуществить кодирование слов ȃ из множество {ȃ1,ȃ2…ȃs}, т.е. слов вида a1a2…am словами b1b2…bn длины n так чтобы коду слова b1’b2’…bn’ полученному на выходе при передаче слова b1b2…bn можно было однозначно восстановить этот код и значит исходное сообщение a1a2…am
Опр Код обладающий данным свойством называется самокорректирующимися кодами относительно рассматриваемого источника помех или кодами исправляющими p ошибок.
Рассмотрим кода исправляющие 1 ошибку т.е. p=1, которые называются кодами Хэмминга. Пусть в канале связи при передаче сообщения может произойти не более 1 ошибки. Это означает что если исходное сообщение a1a2…am кодируется b1b2…bl:(b=m+k), то на выходе возможны следующие варианты кодов:
b1b2…bl
┐b1b2…bl
b1┐b2…bl
…
b1b2…┐bl
Т.о число вариантов равно l+1. Т.к. ошибка может не произойти либо она в одном из разрядов (компоненте) и символ bi заменится на противоположный ┐bi
Число дополнительных разрядов для построенных кодов Хэмминга нужно выбрать так чтобы их хватило для кодирования перечисленных l+1 случаев => необходимо чтобы 2k>=l+1. Т.к. l=m+k => k=l-m
2l-m>=l+1
2l/2m>=l+1=>2m<=2l/(l+1)
Поэтому зная l выбираем как наименьшее целое удовлетворяющее условию 2m<=2l/(l+1)
Опр Число l называется длиной кода Хэмминга, число m - число информационных символов
Зам Учитывая что l=m+k можно выбирать не l а число k, которое называется числом контрольных символов и является наименьшим целым числом удовлетворяющий условиям 2k>=k+m+1
2m<=2m+k/(m+k+2)
2m/2m+k<=1/(m+k+1)
2-k<=1/(m+k+1)
2k>=m+k+1
Алгоритм построения кода Хэмминга
При построении кодов Хэмминга первое что нужно сделать это по числу m определить число k и l. Пусть для сообщения ȃ=a1a2…am длины m необходимо построить код Хэмминга.
m=9, ȃ=101110111= a1a2…am, l=13, k=4, ƀ=b1b2b3…b13
1) Представим каждое число i L={1,2…l} в виде k-разрядного двоичного числа ῖ =Vk-1Vk-2…V1V0. Результаты запишем в таблицу
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
V0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
V1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
V2 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
V3 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
2) Разобьем множество L на k подмножеств следующим образом:
L0={i L|V0=1}
L0={1,3,5,7,9,11,13}
L1={i L|V1=1}
L1={2,3,6,7,10,11}
L2={i L|V2=1}
(37)L2={4,5,6,7,12,13}
L3={i L|V3=1}
L3={8,9,10,11,12,13}
3) Определим номера контрольных и информационных разрядов.
Первые элементы (их ровно k) этих множеств Li есть степени числа 2. Они определяют номера контрольных разрядов кода Хэмминга. Остальные элементы множества L определяют номера информационных разрядов.
=> в коде Хэмминга разряды b1,b2,b4,b8 – контрольные.
Остальные b2,b5,b6,b7,b9,b10,b11,b12,b13 – информационные
4) Формирование значений информационных символов.
Информационные символы коды Хэмминга формируются естественным образом из символов исходного сообщения a1a2…am
А именно
a1=b3=1
a2=b5=0
a3=b6=1
a4=b7=1
a5=b9=1
a6=b10=0
a7=b11=1
a8=b12=1
a9=b13=1
ȃ=101110111
5) Формирование значений контрольных символов.
После определения информационных символов контрольные символы определяются следующим образом
- сложение по модулю 2
bj – разряды имеющие номера из соответствующих множеств Li
b1=b3 b5 b7 b9 b11 b13=1 0 1 1 1 1 1=1
b2=b3 b6 b7 b10 b11=1 1 1 0 1=0
b4=b5 b6 b7 b12 b13=0 1 1 1 1=0
b8=b9 b10 b11 b12 b13=1 0 1 1 1=0
6) Окончательно для сообщения ȃ=101110111 код Хэммига будет иметь следующий вид ƀ=b1b2b3…b13=1010011010111.
Т.о. Можно построить код Хэмминга для сообщения с любым набором длины m