- •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) Обнаружение ошибки в кодах Хемминга.
16(33) Общий критерий взаимной однозначности. Теорема Маркова. Примеры
Пусть алфавитное кодирование задано схемой
Ʃ: a1 - ƀ1, a2 - ƀ2, a3 - ƀ3, …, ar - ƀr – элементарные коды
Опр Представление элементарного кода ƀi схемой алфавитного кодирования Ʃ
ƀi=ƀ’ƀi1… ƀikƀ”, где слово b' не может оканчиваться на элементарный код, а ƀ” не может начинаться с элементарного кода называется нетривиальным разложением кода
При этом одно из слов ƀ' и ƀ” может быть пустым (˄) (возможно и оба). Для определения однозначности или неоднозначности схемы алфавитного кодирования существует эффективный алгоритм использующий понятие нетривиального разложения элементарных кодов
Алгоритм
1) Для каждого элементарного кода выписываем все нетривиальные разложения
2) Выписываем множество M1 состоящее из ƀ’ которые входят в качестве начал в нетривиальное разложении кодов
3) Выписываем множество M2 состоящее из всех слов ƀ” которые являются окончанием нетривиальным разложением элементарных кодов
4) Составляем множество M=(M1 M2) {˄}, т.е. множество слов встречающихся как в качестве начал и в качестве окончаний в нетривиальном разложении элементарных кодов
5) Выписываем все разложения элементарных кодов связанных с множеством M, т.е. все разложения элементарных кодов вида ƀi=ƀ’ƀi1… ƀikƀ”, где ƀ’,ƀ” M, а r может быть равным 0
6) По разложениям полученным в пункте 5 строится ориентированный граф GƩ следующим образом: вершины графа отождествляются с элементами M, пара вершин (ƀ’, ƀ”) соединяются ориентированными ребрами если существует разложение ƀ’ƀi1… ƀikƀ”. При этом дуге (ƀ’,ƀ”) приписывается слово ƀi1… ƀik соответствующее этому разложению
7) По полученному графу GƩ легко проверить обладает или нет исходная схема кодирования свойствами взаимооднозначности
Т Маркова А.А.
Алфавитное кодирование со схемой Ʃ не обладаеи свойством взаимной однозначности граф GƩ содержит ориентированный цикл (контур) проходящий через вершину ˄
Т.е. алфавитное кодирование является взаимнооднозначным в графе GƩ отсутствуют контуры и петли проходящие через вершину ˄
Зам Если схема алфавитного кодирования Ʃ не обладает свойствами взаимной однозначности то это означает что существуют слова из S(B) допускающие 2 кодирования. Одно из таких слов ƀ легко находится по графу GƩ. Для записи слова ƀ нужно посмотреть ориентированный цикл проходящий через вершину ˄. Начиная с ˄ и выписывать последовательно все слова приписанные ребрам (дугам) и вершинам входящим в этот цикл
Пр Рассмотрим алавитное кодирование с алфавитом сообщения A={a1,a2,a3,a4},B={a,b,c} и схемой Ʃ. Ʃ:a1 – a,a2 – ab, a3 – cab, a4 – baac. Является ли схема Ʃ взаимооднозначной? С(Ʃ)={a,ab,cab,baac}
1) ƀ1=a, ƀ2=ab=˄(a)(b), ƀ3=cab=(c)(ab)˄=˄(ca)(b)
ƀ4=baac=(b)(aac)˄=˄(ba)(ac)˄=˄(baa)(c)=(b)(a)(a)(c)
2) M1={c,b}
3) M2={b,c}
4) M=(M1 M2) {˄}, M={˄,b,c}
5) ƀ2=˄(a)(b)=˄ƀ1(b),ƀ3=(c)(ab)˄=(c)ƀ2˄, ƀ4=(b)(a)(a)(c)=(b)ƀ1ƀ1(c)
6) Строим граф GƩ
˄ ƀ1 b
ƀ2 ƀ1ƀ1
c
7) Кодирование не является взаимооднозначным, т.к. существует контур проходящий через вершину ˄
8) ƀ=ƀ1bƀ1ƀ1cƀ2=abaacab
(ab)(a)(a)(cab)=>a’=a2a1a1a3
(a)(baac)(ab)=>a”=a1a4a2