Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[187]

Докажем обратное. Пусть / - целочисленный поток в G; его значения могут быть равны 0 или 1, так как пропускная способность рёбер ограничена единицей. Определим

М = {(и, v)\u е L, v е R, f(u, v) = 1}.

Докажем, что М - паросочетание. В самом деле, из одной вершины и не могут выходить два ребра (u,v) и (u,v"), по которым поток равен 1, так как входящий в и поток не превосходит 1. По аналогичным причинам в любую вершину v входит не более одного ребра с единичным потоком.

Чтобы убедиться, что \М\ = /, заметим, что \М\ есть поток через разрез (L U {s},RU {t} (по каждому ребру идёт потом 1, а число рёбер есть М).

Лемма сводит задачу о максимальном паросочетании к задаче о максимальном целочисленном потоке. Требования целочислен-ности у нас раньше не было, но оказывается, что метод Форда-Фалкерсона всегда даёт целочисленный максимальный поток, если только пропускные способности всех рёбер целые, так что специально заботится о целочисленности не надо.

Теорема 27.11 (Теорема о целочисленном потоке)

Если пропускные способности всех рёбер - целые числа, то максимальный поток, найденный алгоритмом Форда-Фалкерсона, будет целочисленным.

Доказательство

На каждом шаге (при каждом добавлении потока по дополняющему пути) поток остаётся целочисленным. (Подробное доказательство мы оставляем читателю в качестве упр.27.3-2.)

Следствие 27.12

Число рёбер в максимальном паросочетания М в двудольном графе G равно значению максимального потока в сети G. Доказательство

По теореме 27.11 можно заменить слова «максимального потока» на «максимального целочисленного потока», после чего сослаться на лемму 27.10.

Таким образом, чтобы найти максимальное паросочетание в двудольном графе G, нам достаточно применить метод Форда-Фалкерсона и найти максимальный поток в соотвествующей сети G. Оценим время работы такого алгоритма. Никакое паросочетание в двудольном графе не может содержать более min(L,i?) = 0(V) рёбер, поэтому значение максимального потока в G равно 0(V). Следовательно, время работы алгоритма Форда-Фалкерсона равно 0(VE) (см. анализ алгоритма Форда-Фалкерсона в разделе 27.2).

Упражнения

27.3-1


Примените алгоритм Форда-Фалкерсона к сети рисунка 27.9(b). Как будут выглядеть остаточные сети после каждого шага? (Пронумеруйте вершины сверху вниз отдельно в L и в R; на каждом шаге выбирайте наименьший в смысле лексикографического порядка дополняющий путь.)

27.3-2

Докажите теорему 27.11.

27.3-3 Пусть G = (V, Е) - двудольный граф и G - сответству-ющая сеть. Оценить сверху длину любого дополняющего пути в G1, найденного при работе процедуры Ford-Fulkerson.

27.3-4*

Полным (совершенным) паросочетанием (perfect matching) называется паросочетание, в которое входят все вершины. Пусть G = (V, Е) - неориентированный двудольный граф, в котором доли L и R имеют поровну элементов. Для каждого X С V определим множество соседей (neighborhood of) X формулой

N(X) = {у G V\(x,y) G Е для некоторого х G X,

(соседями являются вершины, соединённые ребром с некоторым элементом множества X). Докажите теорему Холла (Halls theorem): полное паросочетание существует тогда и только тогда, когда для любого А С L выполнено А ./V(A). 27.3-5*

Назовем двудольный граф G = (V, Е) с долями L и R d-регулярным (rf-regular), если степень каждой вершины v G V равна d. (Заметим, что в таком случае \L\ = \R\.) Докажите, что для d-регулярного графа всегда существует полное паросочетание.

27.4. Алгоритм проталкивания предпотока

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

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


вать предпотоком (preflow) функцию / : V X V -> Ж, которая кососимметрична, удовлетворяет ограничениям, связанным с пропускными способностями, а также такому и ослабленному закону сохранения: f(V, и) 0 для всех вершин и £ C\{s}. Таким образом, в каждой вершине и (кроме истока) есть некоторый неотрицательный избыток (excess flow)

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

В этом разделе мы объясним идею метода и опишем две основные операции: «проталкивание» предпотока и «подъём» вершины. После этого докажем правильность общего алгоритма проталкивания предпотока и оценим время его работы.

Мотивировка

В методе Форда-Фалкерсона мы в каждый момент имеем дело с потоком жидкости по трубам от истока к стоку; на каждом шаге мы увеличиваем этот поток, находя дополняющий путь. Жидкость никуда не проливается по дороге.

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

Высота истока всегда равна \V\, а стока - нулю. Все остальные вершины изначально находятся на высоте 0, и со временем поднимаются. Для начала мы отправляем из истока вниз столько жидкости, сколько нам позволяют пропускные способности выходящих из истока труб (это количество равно пропускной способности разреза (s,V \s)). Возникающий (в соседних с истоком вершинах) избыток жидкости сперва просто выливается, но затем он будет направлен дальше.

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



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203] [стр.204] [стр.205] [стр.206] [стр.207] [стр.208] [стр.209] [стр.210] [стр.211] [стр.212] [стр.213] [стр.214] [стр.215] [стр.216] [стр.217] [стр.218] [стр.219] [стр.220] [стр.221] [стр.222] [стр.223] [стр.224] [стр.225] [стр.226] [стр.227] [стр.228] [стр.229] [стр.230] [стр.231] [стр.232] [стр.233] [стр.234] [стр.235] [стр.236] [стр.237] [стр.238] [стр.239] [стр.240] [стр.241] [стр.242] [стр.243] [стр.244] [стр.245] [стр.246] [стр.247] [стр.248] [стр.249] [стр.250] [стр.251] [стр.252] [стр.253] [стр.254] [стр.255] [стр.256] [стр.257] [стр.258] [стр.259] [стр.260] [стр.261] [стр.262] [стр.263] [стр.264] [стр.265] [стр.266] [стр.267] [стр.268] [стр.269] [стр.270] [стр.271] [стр.272] [стр.273] [стр.274] [стр.275] [стр.276] [стр.277] [стр.278] [стр.279] [стр.280] [стр.281] [стр.282] [стр.283] [стр.284] [стр.285] [стр.286] [стр.287] [стр.288] [стр.289] [стр.290] [стр.291] [стр.292] [стр.293] [стр.294]