Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ekzamen_mm.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
878.59 Кб
Скачать

Алгоритм Форда-Фалкерсона:

  • Шаг0: в процессе работы алгоритма каждая вершина относится к 1 из 3 множеств (непомеченные вешины, помеченные, но не просмотренные, просмотренные (окрашенные))

  • Шаг1: пометим вершину S меткой S(S+; бесконечность), остальные – непомеченные

  • Шаг2: пусть V – некоторая помеченная но не окрашенная вершина. Рассмотрим все соседние с V непомеченные вершины. Для каждой из таких вершин U возможны следующие ситуации:

А) существует прямая дуга (V, U) и f(V, U) < C(V, U) тогда вершина U получает пометку U(V+;C(V, U) - f(V, U))

Б) если существует обратная дуга (V, U) и поток f(V, U)>0 то тогда U получает пометку U (V-; f(V, U))

В) существует прямая дуга (V, U) и f(V, U) = C(V, U) или существует обратная дуга (V, U) и f(V, U) = 0 тогда вершина U не помечается.

Когда все соседние с V вершины проанализированы, V переходит в множество просмотренных вершин.

  • Шаг3: повторяем шаг2 до тех пор пока не возникнет 1 из следующих ситуаций:

А) все вершины графа разбиты на 2 подмножества: 1е - просмотренные (окрашенные), 2е - непомеченные вершины, включающие в себя вершину Т. Тогда в сети построить максимальный поток мощности V и минимальный разрез (ХХ*), где Х – окрашенные вершины.

Б) если вершина Т получила пометку то в сети существует увеличивающий путь с C в Т, который можно определить идя из Т обратно к С. Для найденного пути определяют величину ξ(епсилент) для увеличения мощности потока. На прямых дугах найденного пути величину потока увеличиваем на ξ, на обратных – уменьшаем. Мощность потока V = V предыдущая + ξ. Переходим к шагу 1.

  1. Алгоритм Дейкстры (назначение, пошаговая реализация).

Постановка задачи: пусть задан ориентированный граф G=(v,е) с заданными положительными длинами ребер. Найти длину кратчайшего пути и сам путь, соединяющего 2 произвольные фиксированные вершины s и t, где s – начало, а t – конец пути.

Пример: компании, занимающиеся грузоперевозками, необходимо составить маршруты движения ее автотранспорта для различных городов. Каждый перекресток = узел, каждая дуга = отрезок дороги, связывающий отдельные перекрестки. Если на рисунке нет стрелок, то это значит «туда и обратно». Если дорога односторонняя, то ставят стрелку в направлении движения. Каждой дуге ставится в соответствие число, равное длине участка дороги и называемое длиной.

Алгоритм Дейкстры:

  • Шаг 0: в процессе работы алгоритма все вершины U имеют пометку:

  1. Временная - l’(u)

  2. Постоянная - l(u)

l’(u) – это длина от узла s до вершины U кратчайшая на данном шаге алгоритма

l(u) – это длина кратчайшей цепи из S в U

узел S получает постоянную пометку l(s)=0, все остальные вершины имеют пометку l’ = ∞

  • Шаг 1: пусть вершина U имеет постоянную пометку l(u). Рассмотрим все узлы, имеющие временные пометки и соседние с U. Т.е. такие узлы V, которые имеют временную пометку l’(v) и существует дуга (u,v).

  • Шаг 2: пересчитаем временные пометки для всех соседних узлов v. L’(v)=min {l(u) + (u,v) ; l’(v) }

  • Шаг 3: находим l(r) = min {l’(r)}. Из всех временных пометок выбираем минимальную и делаем ее константой. Переходим к ШАГУ 1. Алгоритм заканчивает свою работу, когда все узлы в сети имеют постоянные пометки.

  1. Алгоритм Басакира-Гоуэна (назначение, пошаговая реализация).

Постановка задачи: задана сеть к каждой дуге которой поставлено в соответствие 3 числа: с(х, у) – пропускная способность, f (x,y)– поток, d(x,y) – стоимость провоза единицы потока по дуге x,y. Требуется пропустить в сети допустимый поток заданной величины v или максимальный поток минимальной стоимости. .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]