- •М а т е м а т и к а дискретная математика
- •Содержание
- •Предисловие
- •1. Разбор типичных задач
- •Элементы теории множеств Множества. Операции над множествами
- •Отображения. Инъективные и сюръективные отображения
- •Отношение эквивалентности
- •Элементы теории кодирования
- •10100.00000.01010.10011.01011.11100.10010.00101.10010.
- •00110.00101.01001.10000.01000.00000.11001.1.
- •00110.00101.01001.10000.01000.00000.11001.1.
- •Решение.
- •1.3. Элементы теории графов. Поиск путей в графе
- •Решение
- •X: 9331 4359 7162 5571 8352;
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Решение.
- •Задачи о раскраске графа
- •Вопросы к экзамену
- •Основная
- •Дополнительная
Решение.
Так как данная матрица содержит две строки и четыре столбца, то она может быть (4,2) кодом. Для проверки умножим каждую строку на данную матрицу слева. Имеем:
Таким образом,
Поскольку все полученные строки различны, то отображение инъективно, а следовательно, является кодом.
Так как строки (1) и (3) множества отличаются ровно на два бита (), то код не является кодом Хемминга.
1.3. Элементы теории графов. Поиск путей в графе
Путь в графе называется простым, если ни одна вершина в нем не повторяется (для контура допускается ).
Вершины х и у графа, соединенные дугой, называют смежными.
Говорят, что вершины инцидентны ребру (дуге).
Степень вершины графа – это число ребер, ей инцидентных.
Зафиксируем в графе 2 вершины А и В. Исторически возникли 3 задачи о поиске путей в графе.
Задача 1. Найти любой (или простой, или гамильтонов, или эйлеров) путь (цепь) из А в В.
1. Дан граф (рис.4).
Найти все простые пути из А в В. Показать один из них на рисунке.
Решение. Обозначим все вершины графа буквами. Используя определение простого пути, получим простые пути в данном графе. Перечислим их (рис.5).
АСВ
АСМВ
АСМДВ
АДВ
АДМВ
АДМСВ
АМВ
АМСВ
АМДВ
Покажем один из этих путей на рис. 6.
Задача 2. Найти кратчайший путь из А в В в смысле количества ребёр (дуг).
2. Дан граф (рис.7).
а) определить степени вершин А и В.
б) найти кратчайший путь из точки А в точку В (в смысле наименьшего количества ребер).
Решение
а) используя определение степени вершины, выясним, какие степени имеют вершины А и В. Вершина А имеет степень 3, так как 3 – число ребер, ей инцидентных. Аналогично, и вершина В имеет степень 3.
б) используем алгоритм решения задачи о нахождении кратчайшего пути из А в В в смысле наименьшего количества ребер:
Вершине А припишем индекс 0.
Всем вершинам, смежным с А, припишем индекс 1.
Всем вершинам, смежным с вершинами индекса 1 и не имеющим индекса, припишем индекс 2 и т.д.
Как только вершина В получит некоторый индекс, процесс останавливаем (даже если остались непронумерованные вершины).
Итак, (рис.8)
Следовательно, n = 2 – длина кратчайшего пути. Построим этот путь.
Среди вершин, смежных с В, обязательно найдется вершина с индексом (n – 1) (одна или несколько), возвращаемся в эту вершину и продолжаем этот процесс.
Через n шагов придем в вершину с индексом 0, т.е. в А. Один или несколько путей построены.
Итак, (рис. 9).
Если каждому ребру (дуге) графа приписано некоторое число ( вес ребра), то граф называется взвешенным (нагруженным).
Задача 3. Найти кратчайший путь из А в В во взвешенном графе (в смысле суммы весов ребер (дуг)).
Рассмотрим следующий алгоритм решения задачи 3.
Будем постепенно приписывать всем вершинам графа числовые индексы:
Вершине А припишем индекс 0, всем остальным вершинам приписываем значение +.
Замечание: в реальных программах в роли +используется любое большое число, заведомо большее суммы всех весов рёбер.
Будем постоянно перебирать все пары смежных вершин х и у, каждый раз проверяя неравенство . Если оно выполняется, то уменьшаем индекс, заменив его на(рис.10).
y
x
Рис.10
3. Процесс останавливаем, когда ни один индекс уже нельзя уменьшить. В этот момент вершина В имеет некий индекс . Это и есть наименьшая сумма весов всех дуг.
4. Построим путь с такой суммой. Будем возвращаться из вершины В в А. Среди вершин, смежных с В, обязательно найдётся вершина С, для которой выполняется точное равенство (если бы, то индексможно было бы ещё уменьшить, если быдля всех смежных вершин, то непонятно, откуда взялся индекс.)
Возвращаемся к С и повторяем процесс. Поскольку индексы всё время уменьшаются, то через несколько шагов придём в вершину с индексом 0, т.е. в вершину А.
Задача. Задан граф.
а) превратить его во взвешенный граф с помощью набора данных (веса на горизонтальных ребрах отмечены буквой X, на вертикальных ребрах – буквой Y);
б) найти кратчайший путь (или пути) из вершины А в вершину В.