Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты по ММПР 43 вопроса.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
236.35 Кб
Скачать

34. Кратчайший путь на графе

Задачи поиска кратчайших и длиннейших путей на графах возникают в различных областях управления.

Задача о кратчайшем пути. Пусть задана сеть из n + 1 вершины, то есть ориентированный граф, в котором выделены две вершины – вход (нулевая вершина) и выход (вершина с номером n). Для каждой дуги заданы числа, называемые длинами дуг. Длиной пути (контура) называется сумма длин входящих в него дуг (если длины дуг не заданы, то длина пути (контура) определяется как число входящих в него дуг). Задача заключается в поиске кратчайшего пути (пути минимальной длины) от входа до выхода сети.

Известно, что для существования кратчайшего пути необходимо и достаточно отсутствия в сети контуров отрицательной длины. Предположим, что в сети нет контуров. Тогда всегда можно пронумеровать вершины таким образом, что для любой дуги (i, j) имеет место j > i. Такая нумерация называется правильной. Легко показать, что в сети без контуров всегда существует правильная нумерация.

Обозначим – длину дуги (i; j). Кратчайший путь в сети, имеющей правильную нумерацию, определяется следующим алгоритмом.

Алгоритм 1.

Шаг 0: Помечаем нулевую вершину индексом λ0 = 0;

Шаг k: помечаем вершину k индексом

Индекс выхода будет равен длине кратчайшего пути. Когда индексы (называемые в некоторых задачах потенциалами вершин) установятся, кратчайший путь определяется методом обратного хода от выхода к входу, то есть кратчайшим является путь μ = (0; i1; i2; ...; in-1; n), такой, что и т.д.

Следующий алгоритм дает возможность определять кратчайший путь в общем случае (то есть при произвольной нумерации вершин).

Алгоритм 2 (алгоритм Форда).

Шаг 0: Помечаем нулевую вершину индексом = 0, все остальные вершины индексами

;

Шаг k: Рассматриваем все дуги. Если для дуги (i; j) , , то вычисляем новое значение

Индексы устанавливаются за конечное число шагов. Обозначим { } – установившиеся значения индексов, которые обладают следующим свойством: величина { } равна длине кратчайшего пути из нулевой вершины в вершину i. Кратчайший путь из вершины 0 в вершину i определяется методом обратного хода.

35. Потоки в сетях в принятии решений

Задачи теории потоков в сетях являются одними из основных в исследовании операций, computer science и инженерном деле.

К теории потоков относятся различные задачи, которые можно классифицировать следующим образом. Задачи транспортного типа – транспортная задача, поиск пути минимальной длины, поиск циклов отрицательного веса (неоптимальных перевозок) и т. д. Задачи определения существования потока – задача о максимальном потоке и, двойственная к ней, задача поиска минимального разреза. А также задача о поиске обобщенного потока – потока с потерями и приобретениями.

В 1956 году классическая задача поиска максимального потока была поставлена Фордом и Фалкерсоном и записана уже не в терминах задачи линейного программирования, а в терминах новой теории – теории потоков. Ими же отдельно сформулирована задача поиска максимального потока и предложен первый алгоритм ее решения.

Сетью называется связный граф, в котором заданы “пропускные способности” ребер. Заметим, что сети имеют огромные приложения, в частности, “сети планирования” (имеется в виду планирование производства некоторых новых, достаточно сложных изделий), где “пропускные способности” ребер – это время, за которое нужно из нескольких узлов изделия (вершин графа) получить другой (более сложный) узел.

Потоком в сети между вершиной t (источником) и s (стоком) называется набор чисел cij, (т. е. количество условного “груза”, перевозимого из вершины с номером i в вершину с номером j), удовлетворяющих четырем условиям:

1) числа cij Ј 0, причем если cij > 0, то cji = 0 (нет встречных перевозок);

2) числа cij Ј qij (соответствующих пропускных способностей ребер);

3) если вершина с номером i – промежуточная (не совпадает с источником и стоком), то

т. е. количество “груза”, вывозимого из вершины i, равно количеству “груза”, ввозимого в эту вершину;

4) количество “груза”, вывозимого из источника t, должно быть равно количеству груза, ввозимого в сток s:

Число А называется величиной данного потока или просто потоком между t и s.

Для дальнейшего нужно следующее определение:

Пусть имеется некоторое сечение между вершинами t и s. Тогда величиной сечения называется сумма пропускных способностей ребер, входящих в это сечение. Сечение называется минимальным (максимальным), если его величина минимальна (максимальна).

Теорема Форда – Фалкерсона (1955). Максимальный поток между вершинами t и s равен величине минимального сечения между этими вершинами.

АЛГОРИТМ ФОРДА - ФАЛКЕРСОНА

Алгоритм начинает работу с начального допустимого потока (возможно, нулевого). Затем осуществляются попытки увеличить величину потока с помощью систематического поиска всех возможных цепей из s в t, на которых можно увеличить величину потока (дополняющие цепи).

Поиск дополняющих цепей производится путем расстановки меток, которые указывают, на каких дугах и на сколько можно увеличить поток. Когда найдена одна из таких цепей, поток вдоль нее увеличивается. После чего все метки стираются, и вновь полученный поток используется в качестве исходного при новой расстановке меток.

Алгоритм заканчивает работу, когда нельзя найти ни одну дополняющую цепь. Последний найденный поток является максимальным.

Актуальность задачи о максимальном потоке постоянно возрастает в месте со строительством трубопроводов, новых дорог, роста пользователей Интернета и любых других сетей. Поэтому быстрое и точное её решение крайне необходимо во всех сферах нашей деятельности, где хоть как-то встает вопрос об перемещение чего-либо куда-либо с максимальной рациональностью.