- •Содержание
- •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) =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. Пометки в начале второй итерации