Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретная Математика Лекции.doc
Скачиваний:
195
Добавлен:
16.05.2015
Размер:
1.16 Mб
Скачать

Решение.

Так как данная матрица содержит две строки и четыре столбца, то она может быть (4,2) кодом. Для проверки умножим каждую строку на данную матрицу слева. Имеем:

Таким образом,

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

Так как строки (1) и (3) множества отличаются ровно на два бита (), то код не является кодом Хемминга.

1.3. Элементы теории графов. Поиск путей в графе

Путь в графе называется простым, если ни одна вершина в нем не повторяется (для контура допускается ).

Вершины х и у графа, соединенные дугой, называют смежными.

Говорят, что вершины инцидентны ребру (дуге).

Степень вершины графа – это число ребер, ей инцидентных.

Зафиксируем в графе 2 вершины А и В. Исторически возникли 3 задачи о поиске путей в графе.

Задача 1. Найти любой (или простой, или гамильтонов, или эйлеров) путь (цепь) из А в В.

1. Дан граф (рис.4).

Найти все простые пути из А в В. Показать один из них на рисунке.

Решение. Обозначим все вершины графа буквами. Используя определение простого пути, получим простые пути в данном графе. Перечислим их (рис.5).

АСВ

АСМВ

АСМДВ

АДВ

АДМВ

АДМСВ

АМВ

АМСВ

АМДВ

Покажем один из этих путей на рис. 6.

Задача 2. Найти кратчайший путь из А в В в смысле количества ребёр (дуг).

2. Дан граф (рис.7).

а) определить степени вершин А и В.

б) найти кратчайший путь из точки А в точку В (в смысле наименьшего количества ребер).

Решение

а) используя определение степени вершины, выясним, какие степени имеют вершины А и В. Вершина А имеет степень 3, так как 3 – число ребер, ей инцидентных. Аналогично, и вершина В имеет степень 3.

б) используем алгоритм решения задачи о нахождении кратчайшего пути из А в В в смысле наименьшего количества ребер:

    1. Вершине А припишем индекс 0.

    2. Всем вершинам, смежным с А, припишем индекс 1.

    3. Всем вершинам, смежным с вершинами индекса 1 и не имеющим индекса, припишем индекс 2 и т.д.

    4. Как только вершина В получит некоторый индекс, процесс останавливаем (даже если остались непронумерованные вершины).

Итак, (рис.8)

Следовательно, n = 2 – длина кратчайшего пути. Построим этот путь.

  1. Среди вершин, смежных с В, обязательно найдется вершина с индексом (n – 1) (одна или несколько), возвращаемся в эту вершину и продолжаем этот процесс.

  2. Через n шагов придем в вершину с индексом 0, т.е. в А. Один или несколько путей построены.

Итак, (рис. 9).

Если каждому ребру (дуге) графа приписано некоторое число ( вес ребра), то граф называется взвешенным (нагруженным).

Задача 3. Найти кратчайший путь из А в В во взвешенном графе (в смысле суммы весов ребер (дуг)).

Рассмотрим следующий алгоритм решения задачи 3.

Будем постепенно приписывать всем вершинам графа числовые индексы:

  1. Вершине А припишем индекс 0, всем остальным вершинам приписываем значение +.

Замечание: в реальных программах в роли +используется любое большое число, заведомо большее суммы всех весов рёбер.

  1. Будем постоянно перебирать все пары смежных вершин х и у, каждый раз проверяя неравенство . Если оно выполняется, то уменьшаем индекс, заменив его на(рис.10).

y

x

Рис.10

3. Процесс останавливаем, когда ни один индекс уже нельзя уменьшить. В этот момент вершина В имеет некий индекс . Это и есть наименьшая сумма весов всех дуг.

4. Построим путь с такой суммой. Будем возвращаться из вершины В в А. Среди вершин, смежных с В, обязательно найдётся вершина С, для которой выполняется точное равенство (если бы, то индексможно было бы ещё уменьшить, если быдля всех смежных вершин, то непонятно, откуда взялся индекс.)

Возвращаемся к С и повторяем процесс. Поскольку индексы всё время уменьшаются, то через несколько шагов придём в вершину с индексом 0, т.е. в вершину А.

Задача. Задан граф.

а) превратить его во взвешенный граф с помощью набора данных (веса на горизонтальных ребрах отмечены буквой X, на вертикальных ребрах – буквой Y);

б) найти кратчайший путь (или пути) из вершины А в вершину В.