ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.08.2024
Просмотров: 1734
Скачиваний: 0
СОДЕРЖАНИЕ
1.4. Декартово произведение множеств
1.5.1. Определение бинарного отношения
1.5.2. Способы задания бинарного отношения
1.5.3. Свойства бинарных отношений
1.5.4. Отношения эквивалентности
1.7. Контрольные вопросы и упражнения
2.1.1. Логические высказывания
2.1.2. Основные логические операции
2.2.1. Булевы функции и операции
2.2.2. Совершенные дизъюнктивная и конъюнктивная нормальные формы
2.3. Полные системы логических функций
Класс функций, сохраняющих ноль
Класс функций, сохраняющих единицу
Класс самодвойственных функций
2.4.3. Минимизация днф методом Квайна
2.6. Контрольные вопросы и упражнения
3.1.2. Ориентированные и неориентированные графы
3.1.4. Частичные графы и подграфы
3.1.6. Изоморфизм. Плоские графы
3.2. Отношения на множествах и графы
3.3. Матрицы смежности и инциденций графа
3.5.1. Степени неориентированных графов
3.5.2. Степени ориентированных графов
3.6.1. Характеристики расстояний в графах
3.6.2. Характеристические числа графов
3.7.2 . Базисные циклы и разрезающие множества
Свойства базисных циклов и разрежающих множеств
3.7.3. Цикломатическая матрица и матрица разрезов
Составление цикломатической матрицы
3.8. Задача определения путей в графах
3.8.1. Определение путей в графе
3.8.2. Алгоритм определения кратчайших путей
Алгоритм Дейкстры
Шаг 1. Присвоение начальных значений. Для исходной вершиныsположимl(s) = 0 и эта пометка будет постоянной. Для всех других вершин имеем: 1(хi) =xis. Эти пометки временные. Положимp=sи составим множество образов этой вершины:G(p).
Шаг 2. Обновление пометок. Для всехxiG(p), пометки которых являются временными, изменить пометки в соответствии с выражением:
1(хi) = min [1(хi), 1(р) + c(p, xi)] (8)
Шаг 3. Превращение пометок в постоянные. Среди всех вершин с временными пометками найти такуюxi*, для которойl(xi*) =min[l(xi)]. Считать пометку вершиныxi*постоянной и положить р =xi*.
Шаг 4. Переход к шагу 2, если р t. Останов при р = t. В случае, если требуется найти лишь путь от s к одной вершине t, следует окончание счета. Длина этого кратчайшего пути будет 1(р).
При необходимости нахождения путей от sко всем остальным вершинам графа переходим к шагу 2. Продолжаем вычисления, пока все вершины не получат постоянные пометки. Эти отметки и дают длины кратчайших путей отsк этим вершинам.
Проиллюстрируем работу алгоритма на примере графа, изображенного на рис. 3.34. Матрица весов – в табл. 3.4. Граф является смешанным, т. е. ребра у него ориентирова-нные и неориентированные. Требуется найти все кратчайшие пути от x1ко всем остальным вершинам. Постоянные пометки будем обозначать знаком+.
Шаг 1.l(x1) = 0+, 1(xi) =xix1, р =x1.
Первая итерация
Шаг 2.G(p) =G(x1) = {х2, х7, х8, х9}. Все эти вершины имеют временные пометки.
Рис.3.34. Пример графа к алгоритму Дейкстры
Таблица 3.4. Матрица смежности с весами для графа |
|||||||||
|
х1 |
х2 |
х3 |
х4 |
x5 |
x6 |
x7 |
x8 |
x9 |
х1 |
|
10 |
|
|
|
|
3 |
6 |
12 |
х2 |
10 |
|
18 |
|
|
|
2 |
|
13 |
х3 |
|
18 |
|
25 |
|
20 |
|
|
7 |
х4 |
|
|
25 |
|
5 |
16 |
4 |
|
|
x5 |
|
|
|
5 |
|
10 |
|
|
|
x6 |
|
|
20 |
|
10 |
|
14 |
15 |
9 |
x7 |
|
2 |
|
4 |
|
14 |
|
|
24 |
x8 |
6 |
|
|
|
23 |
15 |
|
|
5 |
x9 |
12 |
13 |
|
|
|
9 |
24 |
5 |
|
В соответствии с формулой (8) уточняем пометки:
l(х2) = min(, 0+ + 10) = 10; l(х7) = 3; l(х8) = 6; l(x9) = 12.
Шаг 3.min(10, 3, 6, 12,) = 3
х2 х7 х8 х9 х3, х4, х5, х6
Вершина х7 получает постоянную пометку: 1(х7) = З+ .
Далее р = x7.
Шаг 4. Так как не все вершины имеют постоянные пометки, то переходим к шагу 2. На рис. 3.35 приведены значения пометок вершин графа. Здесь выделены вершины с постоянными пометками.
Рис. 3.35. Пометки в начале второй итерации
Вторая итерация
Шаг 2.G(p) =G(x7) = {х2, х4, хб, х9}.Пометки всех этих вершин временные. Из (8) получим:l(х2) = 5,l(х4) = 7,l(х6)=17,l(х9) = 12.
Шаг 3.min(5, 7, 17, 6, 12,) = 5.
х2 х4 х6 х8 х9 х3, х5
Вершина х2 получает постоянную пометку 1(х2) = 5+.
Далее р = x2.
Шаг 4. Значения пометок приведены на рис. 3.36. Переходим к шагу 2.
Рис. 3.36. Пометки в начале третьей итерации
Третья итерация
Шаг 2.G(p) =G(x2) = {х1, х3, х7, х9}. Только вершины х3и х9 имеют временные пометки. Из (8) получим:l(х3) =min(,5++18) = 23, аналогично 1(х9) =12.
Шаг 3.min(23, 7, 17, 6, 12,) = 6,
х3 х4 х6 х8 х9 х5
Вершина х8 получает постоянную пометку 1(х8) = 6+, р=x8.
Шаг 4. Перейти к шагу 2 (рис. 3.37).
Рис. 3.37. Пометки в начале четвертой итерации
Продолжая итерационный процесс, получим в итоге постоянные пометки для всех вершин графа (рис.3.38) и кратчайшие пути от вершины х1ко всем остальным вершинам. Эти пути выделены жирными линиями.
Для нахождения кратчайшего пути между вершиной х2и начальной вершинойх1последовательно используем соотношениеl(хi) + С(хi, хi) =l(хi). Полагаяi= 2 находим вершину х2', непосредственно предшествующей х2в кратчайшем пути от х1к х2:
1(х2') + С(х2', х2) =l(х2) = 5. Этому соотношению удовлетворяет вершина х7. Следовательно, х2' = х7. Полагаяi= 7 и применяя соотношение еще раз, получим х7' = х1Поэтому кратчайший путь состоит из вершин х1, х7, х2. Аналогичным образом находим все кратчайшие пути от х1к остальным вершинам.
Рис. 3.38. Пометки и кратчайшие пути в графе
3.9. Обход графа
В теории графов есть понятие обход графа. Это маршрут, содержащий все ребра или вершины графа и обладающий определенными свойствами. Наиболее известными обходами графа являются эйлеровы и гамильтоновы цепи и циклы.
3.9.1. Эйлеровы маршруты
Эти понятия возникли в статье Эйлера в 1735 г., в которой он решал задачу о Кенигсбергских мостах и впервые ввел понятие графа. На рис. 3.39, а приведен план расположения семи мостов в Кенигсберге (ныне Калининграде). Задачасостоит в том, чтобы пройти каждый мост по одному разу и вернуться в исходную точку С. Поскольку в конце обхода нужно вернуться в исходную часть города, и на каждом мосту нужно побывать по одному разу, этот маршрут является простым циклом, содержащим все ребра графа. В дальнейшем такие циклы стали называть эйлеровыми, а графы, имеющие эйлеров цикл – эйлеровыми графами.
а) б)
Рис. 3.39. Схема Кенигсбергских мостов и соответствующий граф
Эйлеров цикл можно считать следом пера, вычерчивающего этот граф, не отрываясь от бумаги. Таким образом, эйлеровы графы – это графы, которые можно изобразить одним росчерком пера, причем процесс такого изображения начинается и заканчивается в одной и той же точке.
Обнаружив, что в данном графе не существует циклических обходов, проходящих по всем ребрам по одному разу, Эйлер обратился к общей задаче: при каких условиях в графе можно найти такой цикл? Ответ на этот вопрос дает следующая теорема.
Теорема 1 (Эйлера). Конечный связный неориентированный мультиграф является эйлеровым графом тогда и только тогда, когдав нем отсутствуют вершины нечетной степени.
Доказательство. Каждый раз, когда эйлеров цикл проходит через какую-либо вершину, он должен войти в нее по одному ребру, а выйти по другому. Поэтому условие отсутствия вершин нечетнойстепени в эйлеровом графе является необходимым.
Для доказательства достаточности предположим, что всевершины графа имеют четные степени. Начнем цепь Р в произвольной вершине хiграфаG(рис. 3.40, а), и будем продолжать ее, насколько возможно, все время через новые ребра. Так как в каждой вершине число ребер четно, этот процесс может закончиться тольков xi. Если цикл Р содержит не все ребра графа G, то удалим из G часть, соответствующую циклу Р. Графы Р и G имеют четные степени всех вершин. То же должно быть справедливо и для оставшегося графа Р.
а) б)
Рис. 3.40. Иллюстрация доказательства теоремы Эйлера (а) и пример построения эйлерова цикла (б)
Так как граф Gсвязен, в циклеPдолжна найтись вершинаxj,инцидентная также ребрам Р. Из хj можно построить новую цепь Р', содержащую только ребра изР. И снова такая цепь может закончиться только при возвращении в хj .
Процесс построения эйлерова цикла иллюстрирует рис. 3.40, б. Объединяя, например, циклы (x1, х2, х3, х4, х5, х6,x1) и (х3, х7, х8,x3,x5, x1 x3), получим эйлеров цикл (x1, x2, x3, x7, x8, х3, х5, х1, х3, х4, х5, х6, x1).
Как граф с эйлеровым циклом можно рассмотреть схему обхода выставки по различным коридорам, которую посетители должныпройти согласно указателям так, чтобы увидеть каждый экспонат по одному разу.
Эйлеровой цепью называется цепь, включающая все ребра данного конечного неориентированного графаG(X), но имеющаяразличные начало xi и конец xj. Чтобы в графе существовала эйлерова цепь, он должен быть связным и все вершины в нем, кроме хi и xj, должны иметь четные степени. Степени вершин хi и xj должны быть нечетными, что естественно, так как из xi мы лишний раз выходим, а в xj мы лишний раз входим. Эти условия являются достаточными для существования эйлеровой цепи.
Важен также следующий вопрос: каково наименьшее количество не пересекающихся по ребрам цепей, покрывающих конечный связный граф G(X) (покрыть – значит включить все ребра графа в цепь)? На этот вопрос отвечает теорема 2.
Теорема 2.В конечном связном неориентированном графеG(X) сkвершинами нечетной степени минимальное число непересекающихся по ребрам цепей, покрывающих G(X) равно k/2.
Доказательство. Пусть G(X) не является эйлеровым графом и k– число его вершин нечетной степени. Ранее было доказано, чтоkчетно. Каждая вершина нечетной степени должна быть концом хотя бы одной из покрывающих граф цепей. Следовательно, число такихцепей не меньше, чем k/2. Но можно показать, что и не больше. Соединим попарно вершины нечетной степени k/2 ребрами. Тогда степень каждой вершины увеличится на единицу и станет четной. Получится эйлеров граф, в котором существует эйлеров цикл. Теперь будем постепенно выбрасывать присоединенные ребра. При выбрасывании первого ребра эйлеров цикл превратится в эйлерову цепь, апри выбрасывании каждого последующего ребра одна из возникших к этому моменту цепей разобьется на две части. Таким образом, общее число этих цепей равно k/2.