
- •26.Определениее графа.Основ.Хар-ки.Виды графов
- •27.Связязность.
- •28.Эйлеровы графы.
- •29.Циклы Гамильтона:теорема,ее следствие(теор.Дирака).Задача китайского почтальона.Задача коммивояжера.
- •30. Изоморфизм графов
- •31. Метрические характеристики графов.
- •32. Деревья.
- •33. Планарные графы
- •34. Раскраска графов.
- •35. Паросочетания
- •36. Экстремальные пути в нагруженных ориентировочных графах
- •37. Сети: опр., пути в сетях, алгоритм Форда - Фалкерсона.
- •38.Фундаментальная система циклов графа.
- •39.Операции над графами
- •40. Вычислительная сложность алгоритмов (Дейкстры, Прима, Краскала)
- •41. Мт: опр., примеры.
- •42: Мт как преобразователь.
36. Экстремальные пути в нагруженных ориентировочных графах
Волновой алгоритм — алгоритм, позволяющий найти минимальный путь в графе с рёбрами единичной длины. Основан на алгоритме поиска в ширину. Применяется для нахождения кратчайшего пути в графе, в общем случае находит лишь его длины. Суть: На 2-х мерной клетчатой карте (матрице) состоящей из "проходимых" и "непроходимых" клеток, обозначена клетка старта и клетка финиша. Цель алгоритма проложить наиболее кратчайший путь от клетки старта к клетке финишу, если это конечно возможно. От финиша во все направления идет волна, причем каждая пройденная волной клетка помечается, как "пройденная", волна в свою очередь не может проходить через клетки, помеченные как "пройденные" или "непроходимые" клетки. Волна идет пока она не достигнет точку старта или пока не останется не пройденных клеток. Если волна прошла все доступные клетки, но так и не достигла клетку старта, значит путь от старта до финиша проложить невозможно. После достижения волной старта, от старта прокладывается путь до финиша и сохраняется в массиве.
Описание алгоритма Дейкстры.
Обозначим пометку вершины
.
Пусть веса рёбер заданы матрицей весов.
Шаг 1. Пусть пометка начальной
вершины L(s)=0.
Для всех вершин,
считать
.
Считать эти пометки временными.
Шаг
2. Обновление пометок
пометки
которых временны. Изменить пометки в
соответствии с формулой
Шаг
3. Превр. пометки в постоянные.
Среди всех вершин с временными пометками
найти такую, для которой
.Шаг
4. Сделать пометку вершины
постоянной и значение
Шаг 5. а) Если текущая вершина
-
исходная, т.е. p=t,
то L(p)
является длиной кратчайшего пути от s
к t. Остановка алгоритма.
Если
,
то идти к шагу 2. б) Если все вершины
помечены постоянными пометками, то эти
метки дают длины кратчайших путей, если
некоторые метки временные, то перейти
к шагу 2.
Алгоритм Форда- Беллмана.
применим для графов с отрицательными
весами. Предполагается, что граф не
содержит циклов отрицательной длины.
Основные величины этого алгоритма:
.
Для фиксированного
.
Длина минимального пути из заданной
начальной вершины S в
вершину
,
содержащей не более
–
дуг. Шаг 1. Установка начальных
условий: мат. весов
.
Шаг 2.
.
Шаг3. В цикле по к=1 до (n-1)
каждой вершине
на каждом шаге приписать значение
для всех вершин, кроме
.
Шаг 4. Восстановление минимального
пути.
,
предшествующая ей
определяется
из соотношений
,
где
Преобразуя
последовательно
применяя это соотношение начиная от
последней вершины
найдём минимальный путь.
Алгоритм Флойда. Поиск кратчайших путей между всеми парами вершин в графе.
Рассмотрим смешанный граф. Пусть длина
контура в этом графе не может быть
отрицательной. n – число
вершин в графе,
-
длина дуги
.
Идея: Первоначально за длину
кратчайшего пути
между двумя произвольными вершинами
принимается
длина дуги
.
(
)
Если дуги нет, то значение
.
Затем послед-но проверяются все возможные
промежуточные между i и
k. Если длина пути через
пром-ную вершину меньше текущей оценки
,
то
присваивается новое значение. Алгоритм
позволяет решить задачу за n
итераций. На j-й итерации
находим
.
На каждой итерации строится 2 матрицы
мат. стоимости
–матрица маршрутов. Где
– первая промежуточная вершина
кратчайшего пути из i в к
на j –й итерации. Формальное
описание:1)
2) j=j+1 Назовём
j-у строку и j-й
столбец матрицы
базовыми. Вычеркнем их из
.
Те строки и столбцы, которые содержат
элемент равные бесконечности, принадлежащие
базовым строке и столбцу. 3) Для каждого
не вычеркнутого элемента
проделаем следующее: если
.то
,
иначе
После рассмотрения всех не вычеркнутых
элементов
,
проверить условие j=n,
если оно выполняется, то перейти в 4,
иначе 2. 4) Конец алгоритма.
Задача Штейнера. Заданы N точек или на плоскости или в пространстве, необходимо соединить их отрезками прямых так, что сумма длин этих отрезков будет минимальна. Следует учесть, что можно вводить дополнительные точки, кроме тех которые имеются.