
- •Дискретная математика
- •© Омский государственный технический университет, 2009
- •Содержание
- •1. Введение в теорию множеств
- •1.1. Основные понятия теории множеств
- •1.2. Способы задания множеств
- •1.3. Операции над множествами
- •1.4. Геометрическое моделирование множеств. Диаграммы Венна
- •1.5. Алгебра множеств. Основные тождества алгебры множеств
- •1.6. Двойственность в алгебре множеств
- •1.7. Количество элементов объединения множеств
- •1.8. Эквивалентность множеств
- •1.9. Счетные множества
- •1.10. Множества мощности континуума
- •2. Отношения. Функции
- •2.1. Отношения. Основные понятия и определения
- •2.2. Операции над отношениями
- •2.3. Свойства отношений
- •2.4. Отношения эквивалентности и разбиения на классы
- •2.5. Отношение порядка
- •2.6. Функции. Основные понятия и определения
- •2.7. Способы задания функций
- •3. Графы
- •3.1. Основные характеристики графов
- •3.2. Матричные способы задания графов
- •3.3. Основные свойства матриц смежности и инцидентности
- •3.4. Графы и отношения
- •3.5. Изоморфизм графов
- •3.6. Маршруты, циклы в неориентированном графе
- •3.7. Пути, контуры в ориентированном графе
- •3.8. Связность графа
- •3.9. Деревья. Основные определения
- •3.10. Минимальные остовные деревья нагруженных графов
- •3.11. Построение дерева кратчайших путей
- •4. Булевы функции
- •4.1. Определение булевой функции
- •4.2. Формулы логики булевых функций
- •4.3. Равносильные преобразования формул
- •4.4. Основные равносильности булевых формул
- •4.5. Двойственность. Принцип двойственности
- •4.6. Булева алгебра (алгебра логики). Полные системы булевых функций
- •4.7. Нормальные формы
- •4.8. Разложение булевой функции по переменным
- •4.9. Кубическое представление булевых функций
- •4.10. Графическое представление булевых функций.
- •4.11 Покрытия булевых функций
- •4.12. Минимизация формул булевых функций с помощью карт Карно
- •4.13. Применение алгебры булевых функций к переключательным схемам
- •Библиографический список
3.11. Построение дерева кратчайших путей
Определение 3.28. Кратчайшим путем s0 от вершины t до вершины x в графе G назовем такой путь, для которого верно следующее:
,
где l(s) – длина пути s, S множество всевозможных путей от вершины t до вершины x. Аналогично определяется понятие кратчайшего пути и для неориентированного графа.
Определение 3.29. Множество кратчайших путей от заданной вершины графа t до всех остальных вершин графа образует дерево кратчайших путей с корнем в вершине t.
Рассмотрим один из алгоритмов нахождения дерева кратчайших путей.
Пусть
V
– множество всех вершин графа, t
–
исходная вершина. Каждая вершина
имеет две метки (функции):
1)
– некоторая вершина, являющаяся
предыдущей для v
в дереве путей.
2)
– расстояние между вершинами
и t
в дереве путей, если вершина
уже включена в дерево. Если
не включена в дерево, то
– оценка длины пути от t
до
.
В начале алгоритма в дерево включена только вершина t.
,
.
Здесь
(t,v)
–
длина дуги от t
до v.
Cреди
выбирается минимальная оценка и
сравнивается с некоторым путем до
,
уже включенным в дерево путей. Если
меньше длины этого пути, то заменяем
путь на новый и меняем
.
Алгоритм построения дерева кратчайших путей
Шаг
1.
,
– дерево строящегося пути.
.
Шаг
2.
Выбираем самую короткую дугу:
.
Тогда
,
включаем
в дерево и вычеркиваем:
.
Шаг
3.
сравниваем
и
.
Возможны случаи:
а)
;
б)
.
Переходим к шагу 2.
Критерии остановки
Если
необходим кратчайший путь до фиксированной
вершины u,
то алгоритм завершается на шаге 2, когда
включается в
.
Если
необходимо построение кратчайших путей
до всех вершин, то алгоритм завершается
на шаге 2, когда множество
становится пустым.
Пример 3.19. Построить дерево кратчайших путей для графа из предыдущего примера (рисунок 3.14).
1)Согласно алгоритму первоначально p(2),…,p(8)=s, в качестве исходной вершины s выбрана вершина 1. d(2)=1, d(3)=d(7)=d(8)=, d(4)=4, d(5)=3, d(6)=3.
2)Выбираем среди d(v) минимальную оценку, в данном случае min d(v)=d(2)=1, включаем вершину v в дерево пути D={1, 2}.
3)Далее сравниваем d(u) и d(2)+(2,u)
d(3)= > d(2)+(2,3)=1+2=3 так как оценка d(3) больше, чем сумма d(2)+(2,3), то d(3)=3; p(3)=2
Данное сравнение проводим для всех вершин графа V.
d(4)=4 < d(2)+(2,4)=
d(5)=3 < d(2)+(2,5)=
d(6)=3 = d(2)+(2,6)=1+2=3
d(7)= > d(2)+(2,7)=1+4=5; d(7)=5; p(7)=2
d(8)= = d(2)+(2,8)=
Теперь записываем новые значения оценок и повторяем последовательность действий 2–3 до тех пор пока множество вершин графа V не станет пустым.
d(3)=3, d(4)=4, d(5)=3, d(6)=3, d(7)=5, d(8)=
min d(v)=d(3)=3, D={1, 2, 3}
d(4)=4 < d(3)+(3,4)=3+3=6
d(5)=3 < d(3)+(3,5)=
d(6)=3 < d(3)+(3,6)=
d(7)=5 < d(3)+(3,7)=3+6=9
d(8)= > d(3)+(3,8)=3+9=12; -> d(8)=12, p(8)=3
d(4)=4, d(5)=3, d(6)=3, d(7)=5, d(8)=12
min d(v)=d(5)=3, D={1, 2, 3, 5}
d(4)=4 < d(5)+(5,4)=3+4=7
d(6)=3 < d(5)+(5,6)=
d(7)=5 < d(5)+(5,7)=
d(8)=12 < d(5)+(5,8)=
d(4)=4, d(6)=3, d(7)=5, d(8)=12
min d(6)=3, D={1, 2, 3, 5, 6}
d(4)=4 < d(6)+(6,4)=
d(7)=5 < d(6)+(6,7)=
d(8)=12 > d(6)+(6,8)=
d(4)=4, d(7)=5, d(8)=12
min d(4)=4, D={1, 2, 3, 5, 6, 4}
d(7)=5 < d(4)+(4,7)=
d(8)=12 > d(4)+(4,8)=4+1=5; -> d(8)=5; p(8)=4
d(7)=5, d(8)=5
min d(v)=d(8)=5, D={1, 2, 3, 5, 6, 4, 8}
d(7)=5 < d(8)+(8,7)=
d(7)=5
min d(v)=d(7)=5, D={1, 2, 3, 5, 6, 4, 8, 7}
Итак, V= . В результате работы алгоритма имеем: p(2)=1, p(3)=2, p(4)=1, p(5)=1, p(6)=1, p(7)=2, p(8)=4. На основании этих результатов строим дерево (рисунок 3.16).
Рис. 3.16.