Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Поток минимальной стоимости

Из Википедии — свободной энциклопедии

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

Определения

Дана транспортная сеть с источником и стоком , где рёбра имеют пропускную способность , поток и цену . Цена пересылки потока для ребра равна . Необходимо найти поток величиной единиц.

Суть задачи — найти поток f(u, v), минимизирующий его общую стоимость:

Накладываются следующие условия:

Ограничение пропускной способности: . Поток не может превысить пропускную способность.
Антисимметричность: . Поток из в должен быть противоположным потоку из в .
Сохранение потока: .
Необходимый поток:

Отношение к другим задачам

Другой вариант этой задачи — найти максимальный поток имеющий минимальную цену среди максимальных.

Более общая проблема — циркуляция потока минимальной стоимости, которая может быть использована для решения данной задачи. Ставим нижнюю границу для всех рёбер равную нулю и проводим дополнительное ребро из стока в источник с пропускной способностью и нижней границей .

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

  1. Как только впервые, останови алгоритм.
  2. Пусть величина последнего дополнения потока.
  3. Замени последний поток на поток со значением .

Существует также и альтернативный вариант решения задачи с нулевой стоимостью рёбер:

  1. Создай новую вершину-источник .
  2. Добавь ребро с пропускной способностью .
  3. Таким образом максимальный поток будет ограничен .

Решения

  • Задача о потоке минимальной стоимости может быть решена с помощью линейного программирования.
  • Найти любой поток данной величины, после чего избавиться от всех циклов отрицательной стоимости в остаточном графе. Чтобы избавиться от цикла, надо пустить по нему максимально возможный поток. Циклы ищутся алгоритмом Беллмана - Форда. Для доказательства работы алгоритма покажем, что поток графа не является потоком минимальной стоимости пока остаточная сеть графа содержит отрицательный цикл . Пусть - поток графа такой, что и, следовательно, оба потока отличны друг от друга. Для всех рёбер обозначим и получим - циклический поток. Так как образован из максимум циклов , справедливо следующее: , а значит, существует такой , что . Для оптимизиации алгоритма можно выбирать каждую итерацию циклы с минимальной средней стоимостью . Для доказательства времени работы алгоритма разобьем ход его выполнения на фазы, каждая из которых будет состоять из отдельных итераций. Пусть - поток к началу -той фазы. Фаза считается завершенной, когда найден поток такой, что или , где . При алгоритм прекращает работу. Далее пусть - значение к началу первой фазы и - значение к началу -той фазы (). Таким образом действительно: , а также . Вследствие свойства целочисленности следует и . Итерации условно можно разбить на несколько видов: Тип 1 - цикл содержит только рёбра с негативной стоимостью и Тип 2 - цикл содержит минимум одно ребро с положительной стоимостью. При каждой итерации первого типа будет "насыщено" и удалено хотя бы одно ребро. При этом все образованные рёбра будут иметь положительную стоимость (так как имеют обратное направление в остаточной сети). Таким образом алгоритм завершится после как минимум последовательных итераций первого типа. Если же в фазе содержатся более итераций, после итераций максимум будет выполнена итерация второго типа. Покажем однако, что такое невозможно: Пусть - поток первой итерации второго типа. Заметим, что действительно , т.е. нет новых рёбер с отрицательной стоимостью. Пусть - цикл в с минимальным и - рёбра с отрицательной стоимостью в : . Из следует . Таким образом . Противоречие - мы уже достигли конца фазы, а значит итераций второго типа не существует и каждая фаза заканчивается через итераций первого типа. Цикл с минимальным средним весом может быть найден за . Доказательство: Пусть - стоимость самого выгодного пути к через ровно рёбер, тогда действительно и . Выходит, что все значения можно подсчитать за используя динамическое программирование. Лемма: Значение цикла с минимальной средней стоимостью равно . Пусть - цикл с минимальной средней стоимостью. Если увеличить стоимость всех рёбер на , то останется циклом с минимальной средней стоимостью, однако значение цикла увеличится на . таким образом можно увеличить все стоимости рёбер так, что . Покажем, что : Выеберем любую вершину и путь , заканчивающийся в и имеющий стоимость . должен содержать цикл . Пусть - путь не содержащий цикла и имеющий длину . Тогда в цикле имеется рёбер. Из-за справедливо и для каждой вершины существует такой, что . Покажем, что : Для этого докажем, что существует вершина для которой истино для всех . Пусть - вершина цикла с минимальной средней стоимостью , - кратчайший путь, заканчивающийся на и не содержащий в себе цикла. пусть количество вершин в . Также ввёдем вершину , которая лежит на на расстоянии вершин от . Путь от к назовём . Пусть - путь из к , а - путь минимальной длины из источника графа к . Тогда истино следующее: , а также и из них следует, что . Путь имеет стоимость 0, т.к. . Таким образом для всех . Учитывая лемму, получим . Время выполнения такого алгоритам составит , так как в процессе выполнения алгоритма пройдут фаз, в каждой из которых итераций, требующих времени. Основываясь не предидущей оценке времени можно составить и следующую: .
  • Использовать модификацию алгоритма Форда — Фалкерсона, в которой на каждом шаге выбирается увеличивающий путь минимальной цены. Для выбора пути можно воспользоваться алгоритмом Беллмана-Форда.
  • Улучшение предыдущего алгоритма: используя потенциалы, можно свести задачу к задаче без отрицательных рёбер, после чего вместо алгоритма Беллмана-Форда воспользоваться алгоритмом Дейкстры. Алгоритм Беллмана-Форда придётся применить лишь на самом первом шаге.

Ссылки

См. также

Литература

Эта страница в последний раз была отредактирована 22 ноября 2022 в 19:40.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).