
- •2. Основные определения теории графов
- •2.1.1. Задание графа множествами вершин и линий
- •2.1.2. Задание графа с помощью отображения
- •2.1.3. Задание графа с помощью обратного отображения
- •2.1.4. Матричное представление графа
- •2.2. Достижимость и обратная достижимость вершин графа
- •2.2.1. Матрица достижимостей и матрица обратных достижимостей
- •2.2.2. Определение матриц достижимостей и обратных достижимостей с помощью прямых и обратных отображений
- •2.2.3. Определение матриц ограниченных достижимостей
- •2.2.4. Определение матриц достижимостей и обратных
- •2.3. Разбиение графа на подграфы
- •2.3.1. Определение существенных вершин
- •2.3.2. Определение сильных компонент графа
- •2.3.3. Определение сильных компонент графа
- •2.3.4. Определение оптимальной базы графа
- •2.3.5. Определение оптимальной антибазы графа
- •3. Алгоритмы оптимизации на графовых моделях
- •3.1. Решение задачи о максимальном потоке методом расстановки пометок на графе (алгоритм Форда-Фалкерсона)
- •Несколько источников и стоков
- •3.2. Решение задачи о максимальном потоке в табличной форме
- •3.3. Решение задачи о максимальном потоке в графе
- •3.4. Решение задачи о кратчайшем пути в транспортной сети непосредственно по графу
- •3.5. Решение задач о кратчайших путях в табличной форме
- •3.5.1. Определение кратчайшего пути между двумя
- •3.5.2. Определение длин кратчайших путей между
- •3.5.3. Решение задачи о кратчайшем пути в графе
- •3.6. Кратчайший остов графа
- •3.6.1. Понятие дерева
- •3.6.2. Определение числа остовных деревьев графа
- •3.6.3. Алгоритм построения всех остовных деревьев графа
- •3.6.4. Определение кратчайшего остова неориентированного
- •3.6.5. Решение задачи о кратчайшем пути в графе
- •3.7. Задача о назначениях
- •3.7.1. Матричная формулировка задачи
- •3.7.3. Решение задачи о назначениях
- •3.7.4. Модификации задачи о назначениях
- •3.8. Задача о наименьшем покрытии
- •3.8.1. Постановка задачи
- •3.8.2. Алгоритм решения задачи
- •3.8.3 Решение задачи о наименьшем покрытии
- •Библиографический список
- •Оглавление
- •Редактор м.Е. Цветкова Корректор н.А. Орлова
- •390005, Рязань, ул. Гагарина, 59/1.
3.4. Решение задачи о кратчайшем пути в транспортной сети непосредственно по графу
Пусть дан конечный граф, каждой дуге которого поставлено в соответствие число cij, называемое длиной дуги. Требуется найти путь наименьшей длины, ведущий из некоторой вершиныSв некоторую вершинуt. Рассмотрим один из алгоритмов решения данной задачи – алгоритм Минти. Он позволяет связать кратчайшими путями фиксированную вершину сети со всеми остальными.
Предварительный шаг. Пометим вершинуSчисломes
= 0. Далее продолжаем расстановку
пометок следующим образом. Помеченные
вершины будем относить к множествуR,
непомеченные – к множеству.
Итак, S
Î
R.
Общий шаг. Итак,R–
множество помеченных вершин. Хотя бы
одна вершина всегда имеется вR.
Каждой вершинеi
Î
Rпоставлено в соответствие числоei.
Рассмотрим все дуги(),
исходящие из множества помеченных
вершинRи заканчивающиеся
на непомеченных вершинахj
Î
.Найдем для каждой дуги (
)
величинуhij
= ei
+ cij.
Выделим дуги, на которых достигается
минимум этой суммы, и отметим числомej=min
hij,
(i
Î
R,
jÎ
)те вершиныj
Î
,
на которых заканчиваются выделенные
дуги. Будем производить таким образом
помечивание вершин до тех пор,пока
не пометим вершину
t.
Число et
указывает длину
кратчайшего
пути от S
к t.
Заключительный шаг.Искомый путь определяем, двигаясь отtкS по выделенным дугам в направлении, обратном их ориентации.
Таким образом, при решении задачи выполняется конечное число раз общий шаг и один раз заключительный шаг.
3.5. Решение задач о кратчайших путях в табличной форме
3.5.1. Определение кратчайшего пути между двумя
вершинами графа
Рассмотрим алгоритм решения для случая
многомерного графа [5]. В конечном
многомерном графе каждой дуге поставлено
в соответствие число Сi1,i2,,,il,m1,m2,,ml,
называемое длиной дуги из вершиныxi1,i2,,ilв вершинуxm1,m2,,ml.
Требуется найти путь наименьшей длины,
ведущий из некоторой вершиныSв некоторую вершинуt.
Для использования табличного представления
многомерных матриц (пп. 1.4, 1.5) введем
помечивание индексовCi1,i1
,,m1
,ml
.Алгоритм включает в себя 3 шага.
Предварительный шаг. В табличном
представлении матрицыCстолбецпомечается знаком *. Диагональному
элементу в столбце
,
т.е.
,
придается значение
.
Помеченные вершины будем относить к
множествуR, непомеченные
– к
,
т.е.S
Î
R.
Общий шаг. Рассмотрим все дуги,
исходящие из множества помеченных
вершинRи заканчивающиеся
на непомеченных вершинах.
Для каждой дуги найдем
hm,l
=Cm
,m
+ Cm
,l
,
для чего входим в
-строку
и складываем диагональный элемент
строки
и элемент
.
Находим минимум
,
затем столбецl
iпомечаем значением мультииндекса
,
а диагональному элементу столбцаl
iпридаем значение
=
.
И так до тех пор, пока не пометим вершинуt.
Заключительный шаг. Искомый путь определяем, двигаясь отtкSпо отметкам вершин.
Рассмотренный алгоритм может использоваться
для определения и наибольшего пути в
многомерном ориентированном графе,
если длину дуг Ci1,i1
,,m1
,ml
взять условно со знаком минус, а длину
отсутствующих в графе дуг, как и ранее
при поиске кратчайшего пути, брать
равной бесконечности. Поиск наибольшего
пути требуется, например, в задачах
расчета сетевых графиков. Он носит
название критического пути [4].
Возможен и другой вариант нахождения
наибольшего пути в ориентированном
графе, не связанный с изменением «знака»
длины дуг. Будем считать длину дуг
положительными величинами. Тогда для
получения наибольшего пути в ориентированном
графе с помощью изложенного табличного
алгоритма необходимо при определении
находить не минимальное значение, а
максимальное. Этот подход наиболее
распространен в задачах сетевого
планирования.