Главная              Рефераты - Разное

по истории математики Научный ру - реферат

Московский государственный университет им М.В. Ломоносова

Мехманико - математический факультет

Кафедра математической логики и теории алгоритмов

Наливайко Павел Владимирович

«История изучения теории потоков в сетях»

Реферат по истории математики

Научный руководитель: проф. Верещагин Н.К.

____________________

Ведущий семинары: к.ф.н. Катречко С.Л.

____________________

Москва, 2008

Оглавление

Введение.

3

Для чего нужны быстрые алгоритмы?

4

Глава 1. История изучения теории потоков

· Начало исследований

· Эвристика Болдырева

· Отчет Харриса-Росса

· Метод Форда-Фалекрсона

· Алгоритм Эдмондса-Карпа

· Дальнейшие улучшения алгоритма построения максимального потока

· Хронологическая таблица результатов

6

Глава 2. Теория паросочетаний

· Паросочетание в двудольном графе

· Теорема Фробениуса

· Теоремы Менгера и Кёнига

· Связь между потоками и паросочетаниями

13

Глава 3. Задача о назначениях: «взвешенный» вариант задачи о паросочетаниях

· Монж: оптимальное назначение

· Теорема Эгервари

· 1940е годы

· Ранние 1950е

· Вычислительные результаты начала 1950х

· Венгерский метод Куна-Манкреша

16

Глава 4. Дальнейшие исследования в теории потоков

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

· Динамические потоки. Задача транспортировки

· Универсально-максимальные динамические потоки

· Наибыстрейшие потоки

21

Заключение

25

Библиография

26

Введение

Теория потоков в сетях – одно из современных направлений развития компьютерных наук в целом, и теории графов в частности. Многие комбинаторные задачи и линейные программы могут быть сформулированы и эффективно решены в терминах потоков.

Сеть представляет собой специальный вид графа. Сеть состоит из вершин и ребер. В практических задачах каждая вершина сети соответствует фабрике, складу, компьютеру, географическому или какому-либо другому объекту. Ребро соединяет пару вершин, в соответствии с дорогами, кабелями или другими каналами связи. В теории потоков, каждое ребро имеет пропускную способность, которая ограничивает количество информации (грузов, товаров...) которое может быть одновременно переправлено по этому ребру. В сети также выделены терминальные вершины. Они могут быть двух типов – источники и стоки.

Наглядно сеть можно представить себе как разветвленный трубопровод. Вершинами будут начала (источники) и концы (стоки) трубопровода, а также промежуточные узловые точки. Ребрами – трубы. Поток в сети соответствует жидкости, перемещаемой по трубопроводу.

Рис. 1. Поток в сети. Иллюстрация из Wikipedia.

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

Первая, и самая естественная задача теории потоков – это организовать поток так, чтобы доставлять наибольшее количество потока из источника в сток. Эта задача получила название задачи о максимальном потоке.

С потоками в сетях тесно связана задача о паросочетании в двудольном графе. Эта задача возникла раньше, однако, является частным случаем задачи о максимальном потоке.

Далее в данной работе мы проследим за развитием исследований в этих областях. Мы постараемся понять, какие были мотивы у ученых для поиска решений этих задач.

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

Для чего нужны быстрые алгоритмы?

Эффективность алгоритма принято измерять асимптотической оценкой времени работы алгоритма в зависимости от параметров исходной сети. (Употребляется также термин «сложность алгоритма» - «complexity» в англоязычной литературе.) Основным параметром является число вершин исходной сети (так как число ребер в большинстве практических задач не превосходит квадрата числа вершин). Алгоритмы, время работы которых не превосходит некоторого полинома от размера исходной сети (числа вершин), называются полиномиальными. Как правило, полиномиальные алгоритмы возможно эффективно реализовать на практике. Напротив, алгоритмы, так или иначе использующие перебор большого числа вариантов, по своей сложности обычно бывают экспоненциальными.

Начнем с рассмотрения простого примера, наглядно иллюстрирующего пользу теоретических исследований в области компьютерных наук. Пусть в памяти компьютера имеется N целых чисел, и необходимо расположить их в порядке возрастания. (Данная задача называется задачей сортировки). Рассмотрим следующий алгоритм: выберем среди данных чисел наименьшее, поставим его на первое место. Затем из оставшихся чисел снова выберем наименьшее, и поставим его на второе место. И так далее. Очевидно, что данный алгоритм решает задачу сортировки. Но насколько он эффективен? Несложно показать, что данному алгоритму требуется порядка N^2 действий. (Данная оценка называется асимптотикой работы алгоритма, и с помощью O-символики данный факт записывается так: сложность алгоритма есть O(N^2) ).

Предположим что N = 10^8. Современный однопроцессорный компьютер способен выполнять порядка ста миллионов элементарных операций (присваивание, сложение, вычитание...) в секунду. Таким образом, для сортировки данного набора чисел потребуется порядка (10^8)^2 / 10^8 = 100 миллионов секунд, или около трех лет.

В то же время, известны алгоритмы решения задачи сортировки со сложность O(NlogN). Самые известные из них – это алгоритм пирамидальной сортировки (heap sort) и «быстрая» (quick sort) сортировка Хоара (последняя, впрочем, имеет лишь время работы O(NlogN) «в среднем»). При N = 10^8 время работы таких алгоритмов получается около 30 секунд!

На примере данной задачи видно, что дополнительные исследования в алгоритмической области могут сократить объемы вычислений на порядки, за считанные секунды решить задачу, которая ранее с практической точки зрения казалась неразрешимой.


Глава 1. История изучения теории потоков

§1.1. Начало исследований

Впервые проблемы связанные с пересылкой потоков в сетях были рассмотрены Канторовичем в 1933 году. (Более того – он рассматривал более общую задачу с движением потока жидкостей различных типов (multicommodity flows)). Основы теории потоков были заложены в период с ноября 1954 по декабрь 1955 года исследователями корпорации RAND (Санта-Моника, Калифорния). Проследим за развитием теории потоков в хронологическом порядке по отчетам RAND.

Первый отчет «Максимальный поток в сети» датируется 19м ноября 1954 года. Авторы отчета – Форд (Ford) и Фалкерсон (Fulkerson), доказали теорему о максимальном потоке и минимальном разрезе для неориентированных графов: значение максимального потока в сети равно минимальной пропускной способности разреза. (Разрезом в сети называется разбиение множества ее вершин на два непересекающихся класса, таких что источник и сток лежат в разных классах. Пропускной способностью разреза называется сумма пропускных способностей ребер, концы которых лежат в разных классах.) В 1955 году в работе Робахера (Robacher) было упомянуто, что впервые эту теорему доказал Фалкерсон.

Работа Форда и Фалкерсона о потоках и разрезах была мотивирована изучением транспортных сетей железных дорог (см. далее). В том же отчета они также описали простой алгоритм нахождения максимального потока для планарных графов, обладающих следующим дополнительным свойством: после добавления дуги из источника в сток граф остается планарным.

Более того, авторы заметили, что задача о максимальном потоке является частным случаем задачи линейного программирования, а стало быть, может быть решена симплекс-методом Данцига (Danzig). В отчете от 1 января 1955 года, Данциг и Фалекрсон показали, что теорема о максимальном потоке и минимальном разрезе может быть выведена из теоремы о сильной двойственности для задач линейного программирования (в работе упоминалось, что этот факт установлен Хоффманом (Hoffman)). Более того, было доказано существование максимального целочисленного потока, для сетей пропускные способности которых являются целочисленными. Следствием этого факта является известная теорема Менгера (Menger) о непересекающихся путях. 1 апреля 1955 года Данциг и Фалкерсон описали простой способ вычисления максимального потока основанный на симплекс-методе. 26 мая 1955 года Робахер независимо доказал теорему о максимальном потоке и минимальном разрезе, сведя ее к теореме Менгера.

§1.2. Эвристика Болдырева

До тех пор пока существующие алгоритмы вычисления максимального потока основывались на симплекс-методе, одной из важнейших задач в теории потоков было построение комбинаторного алгоритма решения этой задачи. 3 июня 1955 года в Нью-Йорке на встрече Американского Общества Исследования Операций Болдырев сделал доклад (опубликованный затем как отчет RAND от 5 августа 1955 года) об эвристическом алгоритме нахождения максимального потока. Метод Болдырева является так называемым «жадным алгоритмом»: он пытается послать как можно больше потока из источника, до тех пор, пока не обнаружится критическая вершина (т.е. такая вершина из которой невозможно передать поток далее). Такая ситуация устраняется путем возвращения избыточного потока в источник. По словам Болдырева, основные достоинства его метода заключались в том, что:

1) Решение задачи о максимальном потоке может быть получены достаточно быстро, даже для сетей со сложной структурой.

2) Метод нахождения потока может быть описан в простых терминах, без специальной технической подготовки.

3) Существуют простые методы проверки решения на правильность.

4) Метод не требует использования больших вычислительных мощностей.

«Техника решения формулируется как простая игра, которой можно обучить десятилетнего ребенка», утверждал Болдырев.

Однако, данный метод является эмпирическим, не использует технику перебора с возвратом, и не гарантирует нахождения оптимального решения. Однако, это не смущало Болдырева, поскольку основным применением своего алгоритма он видел транспортные сети. В своей статье 1955 года он привел пример транспортной сети с 41 вершиной и 85 дугами, для которой его алгоритм посчитал верное решение менее чем за тридцать минут. В заключении статьи Болдырев пишет: «Возникает вопрос о систематическом, формальном обосновании; всесторонней математической базе для эмпирицизма и интуиции, и о связи данной техники с другими процессами, такими как многошаговые решающие процессы (multistage decision process), предложенные Беллманом. Все это остается для будущих исследований».

§1.3. Отчет Харриса-Росса

В своем первом отчете о максимальных потоках, Форд и Фалкерсон упомянули, что задача о максимальном потоке была сформулирована Харрисом следующим образом: Рассмотрим транспортную сеть железных дорог, соединяющих два города через некоторое число промежуточных городов. Пусть также каждая дорога, соединяющая два города, имеет некоторую пропускную способность. Найти максимальный поток в данной сети, учитывая условие консервативности (т.е. для любого промежуточного города величина потока, пришедшая в город равна величине потока вышедшего из города).

Позднее в своей книге «Потоки в сетях» (1962), Форд и Фалкерсон дали более точную ссылку: в 1955 году Харрис, в соавторстве с Россом, сформулировали простую модель для трафика в транспортных сетях, и рассматривали эту задачу (прим. – задачу о минимальном разрезе). Речь идет о секретном отчете Харриса и Росса «Фундаментальный метод оценки пропускных способностей транспортных сетей», датированном 24 октября 1955, и предназначенном для ВВС США. В отличие от Форда и Фалкерсона, центральной задачей для Харриса и Росса была задача о минимальном разрезе. А ее применением: нахождение слабых мест в системе железных дорог СССР. (А именно, минимальному разрезу здесь соответствует минимальный набор транспортных путей, уничтожение которого нанесет критический ущерб транспортному сообщению СССР).

Рис. 2. Сеть железных дорог СССР. Иллюстрация из книги [1]


§1.4. Метод Форда-Фалкерсона

Теорема Форда и Фалкерсона о связи минимального потока и максимального разреза позволяет обосновать следующий общий метод решения задачи о максимальном потоке. Идея состоит в том, что произвольный поток в сети можно дополнить до максимального. По произвольному потоку f рассмотрим «остаточную сеть» этого потока. Ребрами сети будут исходные ребра графа с пропускной способностью cf(uv) = c(uv) – f(uv), а также обратные ребра с пропускной способностью cf(uv) = f(vu). Метод Форда и Фалкерсона состоит в нахождении в остаточной сети произвольного пути из источника в сток, и дополнении существующего потока (изначально нулевого) вдоль этого пути. Теорема о максимальном потоке и минимальном разрезе позволяет обосновать тот факт, что в случае если такого пути не существует, то поток является максимальным.

В оригинале этот метод был сформулирован в 1956 без использования «остаточной сети», однако его описание в терминах обычной сети очень громоздко, поэтому мы его здесь не приводим. Термин «остаточная сеть» появился позднее, и в настоящее время является одним из основных инструментов исследователей в области потоков.

§1.5. Алгоритм Эдмондса-Карпа

Однако, в общем случае метод Форда и Фалкерсона не является корректным. Существует пример сети с иррациональными пропускными способностями, для которой алгоритм Форда и Фалкерсона не остановится (будет работать «бесконечное время»). Для сетей с целочисленными пропускными способностями время работы составляется O(UVE), где U – максимальная пропускная способность, V – количество вершин и E количество ребер в сети. Сети с рациональными пропускными способностями могут быть сведены к целочисленному случаю путем домножения на наибольший общий делитель знаменателей всех дробей.

В 1969 году Эдмондсом и Карпом была предложена модификация этого алгоритма, позволяющая получить гарантированное время O(VE^2) работы алгоритма следующим способом: на каждом шаге путь из источника в сток нужно выбирать не произвольный, а кратчайший. В этом случае удается доказать оценку O(VE) на число фаз работы алгоритма. Искомая оценка следует из того, что в неориентированном графе возможно найти расстояние между двумя вершинами за время O(E).

§1.6. Дальнейшие улучшения алгоритма построения максимального потока

В 1970 году Дициц опубликовал принципиально новый алгоритм нахождения максимального потока, основанный на поиске псевдомаксимального ("блокирующего") потока во вспомогательной сети.

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

Другое направление исследований – улучшенные алгоритмы для нахождения максимального потока в сети с целочисленными пропускными способностями. Метод, предложенный Эдмондсом и Карпом в 1972 году (и независимо Диницом в 1973) получил название метода масштабирования пропускных способностей (capacity scaling). Идея метода проста: поток в сети с пропускными способностями, равными половине пропускных способностей исходной сети, мы легко можем получить поток в исходной сети путем умножения его значения на 2. Отдельно нужно обрабатывать ребра с нечетными пропускными способностями. Полученный алгоритм имеет время работы O(nm log U), где n – число вершин сети, m – число ребер, U – максимальная пропускная способность.

Карзанову в 1974г удалось, с помощью модификации алгоритма Диница, добиться оценки быстродействия O(n^3). Им также впервые было введено понятие “предпотока”. В 1978г Малхотри, Кумару м Махешвари (Malhotra, Kumar, Maheshwari) удалось повторить этот результат, однако их алгоритм отличался от алгоритма Карзанова.

Лучший из известных на сегодняшний день алгоритмов был предложен в 1997 году Гольдбергом и Рао (Goldberg, Rao). В качестве вспомогательной процедуры алгоритм использует структуру данных, полученную Гольдбергом и Тарьяном (Tarjan).
В заключение приведем сводную хронологическую таблицу результатов, полученных для задачи о максимальном потоке (везде далее n – число вершин сети, m – число ребер, U – максимальная пропускная способность ребер сети)

Глава 2. Теория паросочетаний

§2.1. Паросочетание в двудольном графе

Основы теории паросочетаний в двудольных графах были заложены Фробениусом (сформулировавшим их в терминах матриц и детерминантов) и Кёнигом. В статье Кёнига (1915г), представленной ранее в Венгерской Академии Наук он описал способ построение двудольного графа по произвольной матрице (a_ij): вершины графа соответствуют строкам и столбцам матрицы, при этом ребро между строкой i и столбцом j существует в том и только том случае, когда a_ij не равно нулю.

Ранее, в апреле 1914 года на Конгрессе Философии Математики в Париже, Кёниг представил теорему о том, что любой регулярный граф без циклов нечетной длины является двудольным.

Впервые, задача близкая к задаче о паросочетании была рассмотрена Кёнигом в 1916 году. Он доказал, что если требуется расположить на квадратной доске размера n*n (при этом часть клеток доски может отсутствовать) фишки в количестве k*n (при этом на одной клетке может лежать более одной фишки), таким образом что в каждой строке и в каждом столбце находится ровно по k фишек, то такую конфигурацию можно получить путем объединения k конфигураций, для каждой из которой в каждом столбце и каждой строке находится ровно одна фишка.

§2.2. Теорема Фробениуса

В 1917 году Фробениус доказал следующую теорему: пусть в матрице A = (a_ij) размера n*n выполнено следующее условие: для любой перестановки p выполнено условие a_1p(1)*..*a_np(n) = 0, то для некоторого числа k найдутся k строк и n – k + 1 столбцов матрице А, такие что любой элемент, лежащий на пересечении этих строк и столбцов, равен нулю. Используя построение Кёнига, этот результат можно переформулировать в терминах двудольных графов: для любого двудольного графа G = (V, E), множество вершин которого разбито на доли V1 и V2, такие, что |V1| = |V2| = n, существует совершенное паросочетение в том и только том случае, когда невозможно выбрать k вершин из V1 и n – k + 1 вершин из V2, таких что между этими вершинами не существует ни одного ребра. Что особенно ценно, Фробениус представил простое комбинаторное доказательство этой теоремы.

§ 2.3.Теорема Менгера о непересекающихся путях и теорема Кёнига о паросочетании

В 1927 году тополог Карл Менгер сформулировал и доказал следующую теорему. Пусть в неориентированном графе G = (V, E) заданы подмножества P, Q множества вершин V. Тогда максимальное число непересекающихся путей из P в Q равно минимальному размеру множества W вершин, такого что каждый путь из P в Q пересекает W.

Интересно, что первоначально теорема была сформулирована в топологических терминах: компактах и регулярных кривых. Позднее, в 1932 году Кёниг обнаружил в доказательстве Менгера неточность. В марте 1931 года на встрече Математического общества Lorand Eotvos в Будапеште, Кёниг представил новый результат, послуживший основой для доказательства теоремы Менгера: мощность максимального паросочетания в двудольном графе равняется минимальному количеству вершин, необходимых для покрытия всех ребер. (По определению, вершина покрывает все ребра, соседние с данной вершиной, и только их). Кёниг ссылался на результаты, полученные Фробениусом, однако не отметил, что его теорема может быть получена из теоремы Фробениуса. Напротив, в основе доказательства полученного Кёнигом лежит принцип дополнения вдоль чередующихся путей (ставший затем фундаментальным в теории паросочетаний). Опубликованы эти результаты были в 1932 году.

§2.4. Связь между потоками и паросочетаниями

Следующее простое построение позволяет установить связь между потоками в сетях и Паросочетаниями в двудольном графе. Рассмотрим произвольный двудольный граф с множеством вершин V разбитым на доли X и Y. Добавим две дополнительные вершины – источник s и сток t. Добавим ребро sx из источника в каждую вершину доли x и аналогично ребро yt из каждой вершины доли Y в сток. Все пропускные способности положим единичными. Оказывается, что между потоками в построенной сети и паросочетаниями в исходном графе существует взаимнооднозначное соответствие. А потому мощность максимального Паросочетания в исходном графе равняется величине максимального потока. Таким образом, задача о паросочетании является частным случаем задачи о нахождении максимального потока в сети. А потому любой алгоритм нахождения максимального потока можно применить к решению задачи о паросочетании.

Однако стоит заметить, что частная задача о паросочетании может быть решена более эффективно, поскольку алгоритм нахождения максимального потока является общим и не использует двудольную природу исходной сети.

Глава 3. Задача о назначениях: «взвешенный» вариант задачи о паросочетаниях

§3.1. Монж: оптимальное назначение

Задача о назначениях является одной из старейших задач комбинаторной оптимизации. Еще в 1784 году ее исследовал Монж (Monge) (в своих работах он использовал термин «задача о транспортировке». Монж был мотивирован задачей транспортировки земли, которую он рассматривал как дискретную, комбинаторную задачу транспортировки молекул: «Когда необходимо перевезти землю из одного места в другое, необходимо учитывать как количество перевозимой земли, так и наличие свободного места там, куда она перевозится. Цена транспортировки одной молекулы пропорциональна ее весу и расстоянию перевозки, а значит, полная цена перевозки должна быть пропорциональна сумме произведений весов молекул на пройденное расстояние».

Формально, Мондж рассматривает следующую задачу: «Пусть на плоскости заданы две области, ABCD и abcd, ограниченные произвольным контуром, непрерывные или дискретные, найти пусть которому должна следовать каждая молекула М первой области, чтобы перейти в некоторую молекулу m второго области, таким образом, что в результате этого перемещения область ABCD была перемещена в область abcd, и сумма произведений веса каждой молекулы на пройденное ей расстояние было минимальным». Мондж предложил геометрический метод решения данной задачи. Несмотря на его геометрическую интуитивность, он был не совсем верен, как заметил в 1928 году Аппель.

§3.2. Теорема Эгервари

В 1931 году Эгервари опубликовал «взвешенный» вариант теоремы Кёнига: Пусть элементы a_ij матрицы A размера n неотрицательные целые числа, и пусть для некоторых наборов неотрицательных чисел L_i и M_j выполнены условия: а_ij <= L_i + M_j (для всех I и j), тогда получим что min sum (L_k + M_k) = max (a_1p(1) + .. + a_np(n)), где максимум берется по всем перестановкам p.

Доказательство, предложенное Эгервари, сугубо алгоритмично и ведет к алгоритму, использующему «невзвешенную» задачу о паросочетании в качестве подзадачи. Пусть W – максимальное число в матрице А, тогда алгоритму потребуется применить задачу о Паросочетании O(nW) раз, а суммарное время работы алгоритма составит O(nWB(n)), где B(n) – наилучшая оценка времени работы алгоритма нахождения максимального Паросочетания. Этот метод послужил основой для сформулированного в 1955 году «Венгерского метода» Куна, которые мы подробнее рассмотрим далее.

Другим результатом Эгервари было установление следующей двойственной природы задачи о взвешенном Паросочетании: пусть G = (V, E) – двудольный граф и пусть w: E -> R неотрицательная весовая функция. Тогда вес максимального Паросочетания в G равняется минимальному значению y(V), где y: V -> R, таково что: y >= 0 и y_u + y_v >= w(uv).

§3.3. 1940е годы

Первый алгоритм для задачи о назначениях был опубликован Истерфилдом (Easterfield) в 1946 году. Мотивация этого алгоритма была следующей: «Что касается исследования в области задач демобилизации вооруженных сил, представляется возможным организовать переход людей из расформированных отрядов в другие отряды таким образом, чтобы их не пришлось потом переводить снова то момента их демобилизации. Более того, исследования количеств людей в различных группах позволили бы организовать этот процесс с наименьшим возможным количеством задержек. К сожалению, непредвиденный конец Японской войны не дал возможности проверить эффективность этой теории в деле. Тем не менее, алгоритм, изложенный в данной статье, возник именно в процессе исследований в этой области».

Похоже, что Истерфилд работал, не имея представления о других исследованиях в данной области. Он сформулировал и доказал теорему эквивалентную теореме Халла, а также представил метод решения данной задачи, из которого можно извлечь результаты, полученные Эгервари.

Идея Истерфильда основана на переборе всех подмножеств вершин в лексикографическом порядке, что привело к алгоритму со сложностью O(n^2 * 2^n) (что является улучшением по сравнению с перебором всех перестановок, на который требуется n! действий). Этот алгоритм был в дальнейшем уточнен в 1960 году.

Настоящий прорыв в решении задачи о назначениях был совершен в 1951 году, когда Диниц показал, что задача о назначениях может быть сформулирована как линейная программа, автоматически обладающая целочисленным решением. Таким образом, к задаче о назначениях стало возможно применить симплекс-метод.

Диниц рассматривал задачу о назначениях применительно к распределению работы среди людей. Он писал: «Как было сказано, в задаче о назначениях возникает лишь конечное число перестановок. Поэтому с математической точки зрения достаточно рассмотреть все перестановки и выбрать из них оптимальную. Например, если мы рассмотрим задачу для хотя бы для 10 человек, возникнет более трех с половиной миллионов перестановок, поэтому данный математический подход окажется неприменимым на практике».

В 1949 году Робинсон в отчете для RAND написал что его «неудачный попытки» решения задачи о коммивояжере привели к интересному алгоритму решения задачи о назначениях, основанном на «отмене циклов». Идея его была следующей: рассмотрим произвольную перестановку p. Для всех i,j определим «длину» L_ij = a_jp(j) – a_ip(i) если j != p(i), и бесконечности в противном случае. Если в графе с такими длинами возникнет цикл отрицательного веса, это позволит сразу улучшить перестановку p. Если же такого цикла не окажется, то перестановка p оптимальна. Как отметил Робинсон, данный метод можно применять к графам из 50 вершин, при условии наличия необходимых вычислительных средств.

§3.3. Ранние 1950е

На семинаре по теории игр в Принстонском Университете в 1951 году, Фон Нейман (Von Neumann) указал на то, что задача о назначениях может быть сформулирована в виде игры с нулевой суммой для двух игроков, и нахождение ее решения эквивалентно поиску оптимальной стратегии в этой игре. Игра устроена следующим образом: пусть задана матрица A. Первый игрок будет играть строками этой матрицы, второй игрок – столбцами. Первый игрок выбирает номер строки, второй – номер столбца, после чего первый «платит» второму A_ij «денег». Индексы строк и столбцов чередоваться не могут, таким образом игра продолжается n раундов (где n – размер матрицы).

Сведение данной игры к задаче о назначениях не очевидно. В дальнейшем к этой идее обращались Браун (Brown) и Робинсок. Фон Нейман также заметил, что поиск оптимальной стратегии по видимому можно осуществить за время пропорциональное некоторой степени n, что заметно меньше чем «очевидное» решение за время n!. Тем не менее, никакой аргументации этого наблюдения не последовало. Похожие идеи также были в работах Дулмага (Dulmage) и Гальперина (Halperine) (1955) и Купманса (Koopmans) и Бекмана (Beckmann) (1955, 1957).

В работах Лорда (Lord) (1952) и Двайера (Dwyer) (1954), был изложен некоторый геометрический подход («метод оптимальных регионов»). Обзор методов решения задачи о назначениях по состоянию на 1953 год был сделан Моцкиным (Motzkin) в 1956 году.

§3.4. Вычислительные результаты начала 1950х годов

В статье, представленной в 1951 году на Симпозиуме по Линейным Неравенствам и Линейному Программированию в Вашингтоне, Воташ (Votaw) и Орден (Orden) упомянули, что для решения задачи о назначениях размера 10 * 10 требуется около 3 минут вычислений на машине SEAC (National Bureau of Standards Eastern Automatic Computer). В то же время для решения задачи о назначениях того же размера при использовании симплекс-метода требовалось около 20 минут.

Однако, в воспоминаниях Куна от 1991 года он пишет: «Эта история началась летом 1953 года, когда Национальное Бюро Стандартов США собрали группу выдающихся алгебраистов и специалистов по комбинаторике в Институте Численного анализа (INA) расположенного на территории Университета Калифорнии в Лос-Анджелесе. Из-за нехватки места, я делил офис с Тедом Моцкиным, чьи работы в области линейных неравенств продвинули эту теорию на десять лет вперед. Одной из новинок, презентованных в INA, был компьютер SWAC (Standards Western Automatic Computer). SWAC был меньше, но быстрее чем его предшественник – компьютер SEAC. В течение лета, Томпкинс (C.B. Tompkins) предпринимал попытки решить задачу о назначениях размера 10*10 на машине SWAC. Но так как эта задача является задачей линейного программирования со 100 неотрицательными переменными и 20 ограничивающими равенствами, ему это не удалось. В 1953 году в мире просто не существовало машины, способной справиться с такими объемами вычислений».

§3.5. Венгерский метод Куна-Манкреша

В 1955 году Кун разработал новый комбинаторный подход решения задачи о назначениях. Он базируется на работе Егервари от 1931 года, а потому Кун выбрал для него название «Венгерский метод». В 1957 году метод был улучшен Манкрешом (Munkres). Несмотря на то, что в оригинале метод был сформулирован в терминах матриц, он представляет собой комбинаторный подход к решению задачи о назначениях. Оригинальный алгоритм имеет сложность работы O(N^4). В одной из статей Форда и Фалкерсона от 1957 года, в примечании было приведено следующее интересное сравнение: «Для решения задачи об оптимальных назначениях размера 20*20, при использовании симплекс-метода, требовалось около часа вычислений на компьютере. Новый подход Куна позволяет решить эту задачу всего за 30 минут вручную».

В 1970 году Эдмондс и Карп улучшили алгоритм, что позволило достичь времени работы O(N^3). С этих пор задачу о назначениях можно было фактически считать решенной.

Глава 4. Дальнейшие исследования в теории потоков

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

Аналогично тому, как задача о паросочетании была обобщена на случай ребер с различными весами (задача о назначениях), задача о максимальном потоке может быть обобщена как задача о максимальном потоке минимальной стоимости. Для решения этой задачи также справедлив метод Форда и Фалкерсона, за исключением того, что дополняющий путь нужно выбрать кратчайшим относительно стоимостей ребер сети. Для этой цели можно использовать классический алгоритм Форда-Беллмана нахождения кратчайшего пути. Это позволит достичь оценки времени работы алгоритма для максимального потока минимальной стоимости O(E V^3). Джонсон (Johnson) разработал метод потенциалов, обобщающий классический алгоритм Дейкстры нахождения кратчайшего пути на случай графов с отрицательными ребрами, что позволило улучшить время работы до O(E V^2).

Однако, существуют более эффективные с практической точки зрения алгоритмы решения задачи. Идея состоит в последовательном приближении («алгоритм масштабирования») исходной сети. Соответствующий алгоритм был изложен в 1987-1989 годах Гольдберг (Goldberg) и Тарьян (Tarjan) опубликовали целую серию статей по этой тематике. Другой алгоритм в 1988 году представил Орлин (Orlin) в статье «Быстрый сильно-полиномиальный алгоритм нахождения максимального потока минимальной стоимости».

§4.2. Динамические потоки. Задача транспортировки

Интерес к транспортировке возник в области потоков в сетях в течение 1940-х и 50-х годов. Было опубликовано множество работ в этой области, однако все они содержали одно интересное упущение. Несмотря на естественную связь между потоками в сетях и задачами транспортировки, большинство исследований в области теории потоков игнорировали самый главный вопрос, который задает любой ребенок, сидящий на заднем сиденье автомобиля: «Мы уже приехали?». Родители, вынужденные постоянно выслушивать этот вопрос, несомненно, подумают о времени, прежде чем думать о том, куда и как ехать далее.

Форд и Фалкерсон были хорошо осведомлены о важности времени в транспортировке, и они учли его в их модели сети. Они обобщили стандартное определение сети путем добавления в него транзитных времен между вершинами, получив тем самым динамическую сеть. Каждое ребро yz в динамической сети моделирует трубопровод из вершины y в вершину z. Пропускная способность ребра yz соответствует площади сечения труб, тем самым ограничивая количество потока, которое может быть передано за единицу времени. Транзитные времена соответствуют длине трубопровода; они определяют, сколько времени требуется потоку на прохождения из вершины y в вершину z вдоль ребра yz. Динамический поток перемещается с течением времени в динамической сети. Он является расширением традиционных потоков; отображением пар (ребро, время) в величину потока, а не отображением ребер как это было ранее.

Со времен Форда и Фалкерсона исследования в области динамических потоков направлены как на теоретические исследования математических моделей, так и на практические и алгоритмические аспекты их реализации. В то же время было уделено недостаточно внимания алгоритмической теории. В частности, очень немного было известно о вычислительной сложности задач о динамических потоках. В диссертации Хоупа (Hoppe, 1995) акцент был сделан именно на разработке теоретически эффективных алгоритмов. Эта работа устранила разрыв между изучением потоков в традиционных и динамических сетях.

§4.3. Универсально-максимальные динамические потоки

Форд и Фалкерсон рассматривали простейшую потоковую задачу в динамической сети: задачу о максимальном динамическом потоке. Входом для данной задачи является временной интервал T и динамическая сеть с одним источником и одним стоком; решением является допустимый динамический поток, который пересылает наибольшее возможное количество потока из истока в сток за время T.

Форд и Фалкерсон обнаружили оригинальный полиномиальный алгоритм для данной задачи. Гэйл, Уилкинсон и Миниека рассматривали вариант задачи о максимальном динамическом потоке, в котором сток должен был получить как можно больше потока на каждом промежуточном шаге до T и включительно. Вдобавок к этому поток должен покидать источник как можно позднее. (Факт существования такого потока нетривиален и был установлен Гэйлом). Позже Уилкинсон и Миниека независимо получили псевдополиномиальный алгоритм нахождения такого потока.

Первый полиномиальный алгоритм нахождения значения универсально-максимального динамического потока для любого ребра для каждого отдельного момента времени (т.е. временной разрез полного решения) был предложен Хоупом. Он также предложил первый полиномиальный алгоритм, который приближает универсально-максимальный динамический поток с коэффициентом 1 + eps для любого eps > 0. (Алгоритм работает полиномиальное относительно 1/eps время).

§4.4. Наибыстрейшие потоки

Другой вариант задачи о максимальном динамическом потоке это задача о наибыстрейшем потоке, в которой нам задана величина потока v и

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

Задача эвакуации является обобщением задачи о наибыстрейшем потоке на случай нескольких источников. Для каждого из них нам задан вектор снабжения и требуется найти допустимый динамический поток, который доставляет требуемое количество потока из каждого источника в сток за наименьшее возможное время. В традиционной сети без времен транзита, задача эвакуации тривиально сводится к задаче о максимальном потоке с одним источником (путем добавления "суперисточника"). Однако, в динамическом случае, задача является гораздо более сложной, чем задача о наибыстрейшем потоке. В то же время она полезнее: задача эвакуации была изначально сформулирована в практической модели эвакуации из зданий.

Хоуп (Hoppe) в своей диссертации (1995) представил первый (сильно) полиномиальный алгоритм для задачи о наибыстрейших перевозках - обобщении задачи эвакуации, где в дополнение к нескольким источникам разрешены несколько стоков. Алгоритм Хоупа также для целочисленных входных данных гарантирует целочисленное решение.

В 2005 году в работе «Наибыстрейшие потоки с несколькими источниками» Рауфа (Rauf) алгоритм Хоупа был обобщен на случай сетей с несколькими источниками.

§4.5. Планирование сетей

Несмотря на то, что задача эвакуации и задача о наибыстрейшей перевозке мотивированы необходимостью планирования действий в случае бедствий и непредвиденных ситуаций, они имеют приложения и в других областях. Рассмотрим компьютерную сеть; каждая машина имеет свою очередь на вычисление задач единичного размера. Задача может быть либо вычислена на машине локально, либо послана по сети для удаленного вычисления. Каждое соединение в сети можно охарактеризовать пропускной способностью и временем транзита. Требуется распланировать выполнение задач таким образом, чтобы последняя из них была вычислена как можно раньше.

Эта задача легко сводится к задаче о наибыстрейших перевозках, применяя наш алгоритм решения которой мы получим первый полиномиальный алгоритм решения задаче о планировании вычислительных сетей для задач единичного размера, но только в некоторых очень специальных случаях. Физзано (Fizzano) и Штейн (Stein) рассматривали кольцевые сети с единичными пропускными способностями и транзитными временами. Хоуп предложил алгоритм, работающий в сети общего вида, с произвольными пропускными способностями и временами транзита.


Заключение

Исследования потоков в сетях развивались одновременно с теорией линейного программирования (и теорией оптимизации в более общем случае). Так как потоки в сетях представляют собой специальный вид линейных программ, они могут быть решены как линейные программы. Более того, для сетей с целочисленными пропускными способностями гарантировано наличие целочисленного решения. Доказательство этого факта в 1955 году позволило получить первый алгоритм точного решения потоковых задач в сетях небольшого размера.

Однако, структура потоковых задач ведет к гораздо более эффективным решениям (как с теоретической, так и с практической точек зрения), чем решение линейных программ. И тот подход получил наибольшее внимание со стороны исследователей с тех пор как Форд и Фалкерсон выбрали его в своем фундаментальном труде по потокам в сетях.

В течении последующих четырех десятилетий одной из основных задач для сообщества исследователей в области компьютерных наук и исследования операций стало повышение эффективности алгоритмов для потоков в сетях. Решенной эту задачу можно считать в 1997 году, с появлением алгоритма Рао - Гольдберга. С тех пор основные усилия исследователей направлены на изучение динамических потоков – обобщения обычных («статических») потоков, учитывающего время.

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

«Мирным» применением теории потоков являются всевозможные задачи связанные с транспортировкой грузов. В более простой модели ответ на этот вопрос дает задача о назначениях – обобщение задачи о максимальном паросочетании. Более сложные модели опираются на теорию динамических потоков, и здесь есть еще много задач для дальнейших исследований.


Библиография

  1. Alexander Schrijver. Combinatorial Optimization, Polyhedra and Efficieny. Volume A. Springer, Berlin, 2003
  2. Bruce E. Hoppe. Efficient Dynamic Flow Algorithms. PhD Thesis, Cornell Univeristy, 1995
  3. T. Кормен, Ч. Лейзесон, Р. Ривест. Алгоритмы: построение и анализ. МЦНМО, 2001
  4. Л. Р. Форд, Д. Р. Фалкерсон. Потоки в сетях. Перевод с английского И.А. Вайнштейна. М:Мир, 1966
  5. E. Minieka. Dynamic network flows with arc changes. Networks journal, 1974
  6. David Gale. Transient Flows in networks. RAND, 1958
  7. Imran Rauf. Earliest Arrival Flows with Multiple Sources. Master Thesis in Computer Science. Saarland University, 2005
  8. Wikipedia, the Free Encyclopedia http://en.wikipedia.org
  9. «Алголист». http://algolist.manual.ru/maths/graphs/maxflows/