- •Изоморфизм
- •Матричное задание графа
- •Свойства матрицы смежности
- •Операции над графами
- •Достижимость и связность
- •Матрицы достижимости и контрдостижимости
- •Нахождение сильных компонент
- •Конденсация графа
- •Базы и антибазы
- •Построение компонент связности в неориентированном графе
- •Построение компонент связности в ориентированном графе
- •Система независимых циклов
- •Дерево. Остов граф
- •Процесс восстановления дерева по набору
- •Алгоритм построения произвольного остова
- •Определение минимального остова
- •Алгоритм построения системы независимых циклов графа
- •Модификация Форда
- •Алгоритмы поиска всех кратчайших путей
- •Алгоритм Флойда
- •Алгоритм Флойда
- •Алгоритм Данцига
- •Алгоритм Данцига
- •Раскраска
- •Метод построения функции Гранди на графе
- •Гамильтоновы пути, контуры и задача Коммивояжера
- •Метод Роберта и Флореса (перебор-метод для орграфов)
- •Алгоритм поиска увеличивающего пути
- •Алгоритм поиска максимального потока
- •Алгоритм Форда и Фалкерсона
- •Модификация алгоритма поиска максимального потока при нескольких источниках и стоках
- •Алгоритм поиска потока минимальной стоимости
- •Алгоритм поиска потока минимальной стоимости
- •Алгоритмы построения покрывающих деревьев
Алгоритм Флойда
Определить матрицу , задав величину каждого её элемента (i,j), равную длине кратчайшего пути, соединяющего вершину i с вершиной j.
Если в указанном графе вершины не соединены дугами, то полагается , а все
диагональные элементы равны 0.
Для целого m, последовательно принимающего значения 1, 2, ..., n, определить по величинам элементов матрицы величины элементов матрицы , исследуя соотношения (2).
При увеличении каждого элемента матрицы фиксировать соответствующий путь.
Замечание:
Поскольку , то нет необходимости в вычислении диагональных элементов матриц
Кроме того, для всех i = 1, 2, ..., n имеет место соотношения и . Следовательно, при определении матрицы нет необходимости в пересчёте элементов m- ой строки и m- ого столбца матрицы .
Алгоритм Данцига
Вершины исходного графа перенумеруем целыми числами от 1 до n и обозначим через длину кратчайшего пути из вершины i в вершину j, в котором допускается использование в качестве промежуточных m первых вершин графа.
Матрица , состоящая из элементов при каждом имеет размерность не , а .
Требуется определить матрицу , -ый элемент которой определяет длину кратчайшего пути из вершины i в вершину j.
В этом алгоритме матрица определяется из матрицы , из , из .
Каждая новая вычисляемая матрица содержит на 1 строку и 1 столбец больше, чем ее предшественница .
Элементы матрицы , не входящие в последнюю строку и в последний столбец, число которых (элементов), равное , определяется также как и в методе Флойда.
Элементы последней строки и последнего столбца матрицы вычисляются с учетом следующих соображений: кратчайший путь из i в m, в котором допускается использование в качестве промежуточных только n-первых вершин графа, должен иметь своей первой частью кратчайший путь из вершины i в некоторую вершину j , который допускает использование в качестве промежуточных только n - первых вершин графа, а второй частью – кратчайшую дугу, ведущую из вершины j в вершину m.
Аналогично, кратчайший путь из вершины m в вершину i , в котором допускается использование в качестве промежуточных только m-первых вершин графа, должен иметь своей первой частью - кратчайшую дугу, ведущую из вершины m в некоторую вершину j , а второй частью – кратчайший путь из вершины j в вершину i, который допускает использование в качестве промежуточных только - первых вершин графа (следует рассматривать только такие вершины j, для которых имеется хотя бы одна дуга, ведущая из вершины m в вершину j).
Все величины должны полагаться равными 0.
Алгоритм Данцига
Сформировать матрицу размером , элемент которой определяет длину кратчайшей дуги, ведущей из вершины i в вершину j (если такой дуги нет, то полагаем ).
Последовательно определить элементы матрицы из элементов матрицы для согласно формулам:
(1)
(2)
(3)