ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.08.2024

Просмотров: 1770

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Содержание

1. Теория множеств

1.1. Основные определения

1.2. Операции над множествами

1.3. Системы множеств

1.4. Декартово произведение множеств

1.5. Бинарные отношения

1.5.1. Определение бинарного отношения

1.5.2. Способы задания бинарного отношения

1.5.3. Свойства бинарных отношений

1.5.4. Отношения эквивалентности

1.7. Контрольные вопросы и упражнения

2. Математическая логика

2.1.Алгебра логики

2.1.1. Логические высказывания

2.1.2. Основные логические операции

2.1.3. Формулы алгебры логики

2.1.4. Логические функции

Функции одной переменной

Функции двух переменных

2.2. Булева алгебра

2.2.1. Булевы функции и операции

Свойства булевых операций

2.2.2. Совершенные дизъюнктивная и конъюнктивная нормальные формы

2.3. Полные системы логических функций

Класс функций, сохраняющих ноль

Класс функций, сохраняющих единицу

Класс самодвойственных функций

Класс монотонных функций

Класс линейных функций

2.4. Задача минимизации днф

2.4.1. Основные определения

2.4.2. Этапы минимизации днф

2.4.3. Минимизация днф методом Квайна

2.5. Синтез логических схем

2.6. Контрольные вопросы и упражнения

3. Теория графов

3.1. Основные определения

3.1.1. Общие понятия

3.1.2. Ориентированные и неориентированные графы

3.1.3. Маршруты в графах

3.1.4. Частичные графы и подграфы

3.1.5. Связность в графах

3.1.6. Изоморфизм. Плоские графы

3.2. Отношения на множествах и графы

3.3. Матрицы смежности и инциденций графа

3.4. Операции над графами

3.4.1. Сумма графов

3.4.2. Пересечение графов

3.5. Степени графов

3.5.1. Степени неориентированных графов

3.5.2. Степени ориентированных графов

3.6. Характеристики графов

3.6.1. Характеристики расстояний в графах

3.6.2. Характеристические числа графов

3.7. Циклы и разрезы графа

3.7.1. Остов и кодерево

3.7.2 . Базисные циклы и разрезающие множества

Свойства базисных циклов и разрежающих множеств

3.7.3. Цикломатическая матрица и матрица разрезов

Составление цикломатической матрицы

Составление матрицы разрезов

3.8. Задача определения путей в графах

3.8.1. Определение путей в графе

3.8.2. Алгоритм определения кратчайших путей

Алгоритм Дейкстры

Первая итерация

Вторая итерация

Третья итерация

3.9. Обход графа

3.9.1. Эйлеровы маршруты

3.9.2. Гамильтоновы маршруты

3.10. Контрольные вопросы и упражнения

Список литературы

Алгоритм Дейкстры

Шаг 1. Присвоение начальных значений. Для исход­ной вершиныsположимl(s) = 0 и эта пометка будет по­сто­янной. Для всех других вершин имеем: 1(хi) =xis. Эти пометки временные. Положимp=sи составим мно­жество образов этой вершины:G(p).

Шаг 2. Обновление пометок. Для всехxiG(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) =xix1, р =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.