- •Дискретная математика
- •Минск 2015
- •1.1. Определения
- •1.2. Способы задания множеств
- •1.3. Операции над множествами
- •Рис. 1.1. Операции над множествами
- •2.1. Декартово произведение
- •2.3. Операции над бинарными отношениями
- •3.1. Абстрактный граф
- •3.2. Графическое представление бинарного отношения
- •Рис. 3.3. Представление композиции отношений: а) отношения R и S;
- •3.3. Матричные представления графа
- •4.1. Отношение изоморфизма
- •5.1. Цикломатическое число графа
- •6.1. Доминирующие множества графа
- •6.2. Независимые множества графа
- •7.1. Постановка задачи
- •8.1. Эйлеровы цепи и циклы
- •Рис. 8.3. Граф со взвешенными ребрами и выделенным кратчайшим путем
- •9.1. Определения
- •Рис. 9.1. Плоский граф
- •Рис. 9.2. Максимальный планарный граф
- •Рис. 9.3. Простейшие непланарные графы
- •10.1. Задачи подсчета
- •11.1. Постановка задачи
- •12.1. Способы задания булевой функции
- •Нормальные формы
- •14.1. Булев гиперкуб
- •Рис.14.1. Графическое представление булева пространства: а) одномерное; б) двумерное; в) трехмерное; г) четырехмерное
- •14.2. Представление булевых функций на гиперкубе
- •Рис.14.2. Трехмерный гиперкуб с заданной на нем булевой функцией
- •Рис.14.3. Графическое представление некоторых формул булевой алгебры: а) простое склеивание; б) простое поглощение; в) обобщенное склеивание
- •14.3. Развертка гиперкуба на плоскости. Карта Карно
- •Рис. 14.6. Зоны симметрии карты Карно
- •15.1. Функциональная полнота
- •15.2. Реализация булевых функций комбинационными схемами
- •16.1. Отношения на множестве троичных векторов. Операции над троичными векторами. Эквивалентность матриц
- •16.2. Эквивалентность матриц
- •16.3. Анализ троичной матрицы на вырожденность
- •17.1. Удаление избыточных элементарных конъюнкций
- •17.2. Удаление избыточных литералов
- •18.1. Метод Квайна-МакКласки
- •18.2. Метод Блейка-Порецкого
- •19.1. Постановка задачи
- •19.2. Применение метода Квайна-МакКласки
- •19.3. Минимизация слабо определенной функции
- •19.4. Расширение интервалов
- •20.1. Минимизация системы ДНФ
- •20.2. Минимизация системы слабо определенных булевых функций
- •21.1. Двухблочная разделительная декомпозиция
- •У т в е р ж д е н и е 21.3. Булева функция f (x) допускает параллельную разделительную декомпозицию вида (21.1) тогда и только тогда, когда она допускает двухблочные разделительные декомпозиции вида
- •21.4. Неразделительная декомпозиция
- •21.5. Декомпозиция систем булевых функций
- •22.1. Автомат с памятью
- •22.2. Представления автомата
- •22.3. Связь между моделями Мили и Мура
- •22.4. Автомат с абстрактным состоянием. Булев автомат
- •23.1. Эквивалентность состояний. Постановка задачи минимизации
- •23.2. Установление эквивалентности состояний
- •24.1. Отношение реализации. Постановка задачи минимизации
- •24.2. Совместимость состояний
- •24.3. Нахождение минимальной правильной группировки
- •Таблица 24.7
- •Таблица 24.9
- •Рис. 24.2. Дерево поиска минимальной правильной группировки
- •25.1. Задача кодирования состояний
- •25.2. Метод «желательных соседств»
- •26.1. Явление состязаний элементов памяти
- •26.2. Условие отсутствия опасных состязаний
- •26.3. Минимизация длины кода
- •26.4. Рассмотрение K-множеств
- •Литература
- •Матрица булева 15
- •Ядро 11
8.3. Кратчайшие пути в графе
Задан связный граф G = (V, E) с ребрами, взвешенными действительными положительными числами. В данном случае вес ребра e = vivj будем считать его длиной l(e) = l(vivj). Требуется найти цепь с минимальной длины, соединяющую две заданные вершины в графе G, т. е. такую цепь, для которой величина ∑
e c
минимальна.
Для решения этой задачи можно применить алгоритм Форда, который заключается в следующем.
Пусть в графе G надо найти путь от вершины v1 к вершине vn. Каждой
вершине vi V припишем индекс λ(vi). При этом положим λ(v1) = 0 и λ(vi) = + ∞ для i ≠ 1.
На каждом шаге алгоритма отыскивается ребро vivj, для которого λ(vi) –
λ(vj) > l(vivj), и индекс λ(vi) заменяется на λ′(vi) = λ(vj) + l(vivj). Повторение таких шагов продолжается, пока находятся ребра, для которых выполняется
данное неравенство.
В результате выполнения данной процедуры определяется длина кратчайшего пути, равная λ(vп). Сам путь надо строить, начиная с вершины vп и двигаясь обратно к вершине v1. При этом всякий раз надо выбирать такую вершину vj после вершины vi, чтобы выполнялось равенство λ(vi) – λ(vj) = l(vivj).
Пусть в графе на рис. 8.3 требуется найти кратчайший путь из вершины v1 к вершине v8. Возле каждого ребра дана его длина. Покажем изменение
индексов вершин: |
|
|
|
|
|
|
|
v1 |
v2 |
v3 |
v4 |
v5 |
v6 |
v7 |
v8 |
______________________________ |
|||||||
0 |
∞ |
∞ |
∞ |
∞ |
∞ |
∞ |
∞ |
|
1 |
10 |
6 |
11 |
14 |
9 |
16 |
|
|
|
|
|
13 |
|
15 |
|
v2 |
|
10 |
v5 |
|
|
1 |
10 |
1 |
2 |
5 |
v1 |
|
|
|||
10 |
|
4 |
2 |
v8 |
|
|
v3 |
4 |
1 |
v6 |
8 |
|
6 |
5 |
v4v7
3
Рис. 8.3. Граф со взвешенными ребрами и выделенным кратчайшим путем
52
Длина кратчайшей цепи в данном графе равна 15. Двигаясь от вершины v8
к вершине v1, подходим сначала к вершине v6, так как λ(v8) – λ(v6) = l(v6v8) = 2. Следуя тому же правилу, проходим вершину v5 и затем вершину v2. На рис. 8.3
выделены ребра, принадлежащие найденному пути.
53