Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

DM.III.6n

.doc
Скачиваний:
8
Добавлен:
27.05.2015
Размер:
801.28 Кб
Скачать

, называется взвешенным центром этого графа и т.д.

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

§ 8. Экстремальные задачи

во взвешенных графах

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

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

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

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

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

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

Потоком в сети называется функция , удовлетворяющая следующим требованиям (условия допустимости потока):

(1) для каждой дуги (величина потока через дугу не должна превышать ее пропускную способность);

(2) для всех вершин , отличных от источника и слива (закон сохранения потока). Здесь – множество всех дуг, входящих в вершину , а – множество всех дуг, исходящих из нее.

Число называется величиной потока, проходящего через вершину .

Теорема 3.8.1. Для любого фиксированного потока

.

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

или

.

Включая в эти суммы поток через вершину , будем иметь

. (3.8.1)

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

.

Таким образом,

.

Возьмем в качестве множества множество , тогда , а – поток, вливающийся в . Так как для потока, вытекающего из , имеем , то

,

и, значит,

.

Итак, . ■

Величину называют величиной потока , будем обозначать ее .

Следствие. Пусть – подмножество множества , содержащее источник , но не содержащее сток , а . Тогда

.

С етью является ориентированный взвешенный граф на рис. 110. Первый элемент упорядоченной пары чисел, стоящей над каждой дугой, обозначает пропускную способность дуги, а второй – поток через нее. Например, для вершины имеем:

, ;

, .

Значит, величина потока через вершину равна 11. Так как

,

,

то величина самого потока равна 24.

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

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

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

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

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

Для сети на рис. 110 простым сечением будет, например, сечение .

В симметризации орграфа с множеством вершин и множеством дуг , которая, очевидно, будет связным графом, дуге соответствует ребро , а простому сечению – простой разрез.

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

.

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

Как было доказано, любой простой разрез разбивает граф ровно на две компоненты связности. Аналогичная теорема имеет место и для простых сечений.

Теорема 3.8.2. Если в сети удалить все дуги простого сечения , то сеть распадется ровно на две компоненты связности, одна из которых содержит источник , а вторая – сток .

Введем для простого сечения понятия пропускной способности и величины потока.

Пропускной способностью простого сечения называется число

.

Величиной потока в простом сечении называется разность .

Простое сечение (рис. 110) имеет пропускную способность

,

а величина потока через это сечение

.

Величина потока через сечение , дуга которого имеет направление, противоположное направлению потока, вычисляется так:

.

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

Теорема 3.8.3. Пусть – простое сечение сети , где – подмножество множества , содержащее , но не содержащее . Тогда

для любого потока .

Доказательство. Имеем

. ■

Следствие 1. Для некоторого потока и простого сечения сети равенство имеет место тогда и только тогда, когда для всех и для всех .

Следствие 2. Если для некоторого потока имеет место равенство , то – максимальный поток, а – минимальное сечение.

Докажем, что в любой сети можно создать поток максимальной величины.

Теорема 3.9.4 (Форд–Фалкерсон). Максимальный поток в сети такой, что

,

существует.

Доказательство. Приведем конструктивное доказательство сформулированной теоремы. Это позволит сразу указать алгоритм построения минимального сечения и определения соответствующего максимального потока.

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

Шаг 1. Положим .

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

В результате придем к одному из следующих случаев: 1) , 2) . Рассмотрим эти случаи.

Случай 1. Если , то в соответствии с шагом 2 для всех дуг будет иметь место равенство , а для всех дуг выполняться равенство . Поэтому в силу следствия 1 предыдущей теоремы поток будет максимальным, а построенное сечение – минимальным.

Случай 2. Если , то в симметризации , полученной в результате стирания ориентации дуг орграфа , существует цепь, соединяющая с и удовлетворяющая свойствам:

для каждого прямого ребра ,

для каждого обратного ребра .

Такую ()-цепь называют аугментальной (увеличивающей).

Для прямых ребер аугментальной цепи вычислим величину

,

а для обратных ребер – величину

.

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

С помощью шагов 1, 2 аналогичным образом для потока найдем новое сечение сети и произведем следующее увеличение величины потока в сети и т.д. Поскольку пропускные способности дуг – конечные величины, а общая величина потока увеличивается, наступит момент, когда дальнейшее наращивание потока станет невозможным, т.е. . А это означает, что будет найден максимальный поток и построено соответствующее ему минимальное сечение. ■

Следствие 1. Если величина потока в сети равна сумме пропускных способностей дуг, выходящих из источника, то этот поток является максимальным.

Следствие 2. Если величина потока в сети равна сумме пропускных способностей дуг, входящих в сток, то этот поток максимальный.

Вытекающий из приведенного доказательства алгоритм поиска максимального потока в сети и соответствующего ему минимального сечения (в той или иной его модификации) называют алгоритмом Форда–Фалкерсона.

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

Уточним, как помечаются вершины. Пусть – вершина сети. Если поток вдоль дуги может быть увеличен, то вершине припишем метку , если же поток может быть уменьшен, – метку ; – величина дополнительного потока, который может проходить от к .

Рассмотрим действие алгоритма на конкретном примере.

Задача 8.1. Найти максимальный поток и соответствующее ему минимальное сечение для сети на рис. 110.

Решение.

1 . Возьмем нулевой поток в качестве исходного (рис. 111); вершине присвоим метку .

2. Присвоим метки вершинам , и , смежным с вершиной . Вершина при этом получит метку , вершина – метку , а вершина – метку .

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