Пример 10.2. Задача о максимальном потоке
ПОТОКИ В СЕТЯХ Одной из наиболее важных задач теории графов является задача определения максимального потока, протекающего от некоторой вершины графа s (источника) к вершине t (стоку). Примерами таких задач могут быть: перевозка наибольшего товара, максимальное количество жидкости и газа, транспортируемых по трубопроводам, информация по компьютерной и телефонной сети и др. Потоком в сети G = (Х,U) от входа s к выходу t называется неотрицательная функция U, определенная на множестве дуг сети со следующими свойствами: (10.4) (10.5) Условие (10.4) является уравнением сохранения потока, согласно которому поток, втекающий в вершину, равен потоку, вытекающему из нее, за исключением вершин s и t (источник и сток). Ограничение (10.5) указывает, что пропускные способности дуг ограничены для каждой дуги графа G. Задача состоит в нахождении такого множества потоков по дугам, чтобы (10.6) при ограничениях (10.4) и (10.5). Теорема Форда - Фалкерсона (о максимальном потоке и минимальном разрезе) Величина максимального потока из s в t равна значению минимального разреза отделяющего источник s от стока t. Разрез отделяет s от t, если ,а . Величиной такого разреза называется сумма пропускных способностей всех дуг из G, начальные вершины которых лежат в Хо, а конечные — в , т.е. (10.7) Минимальный разрез() — это разрез с наименьшим значением суммы пропускных способностей дуг. Если вершины неографа G = (X,U) разделены на два множества Хо и , где и является дополнением Хо относительно X, то множество ребер графа G, одни концевые вершины которых лежат в Хо, а другие — в Хо, определяют разрез этого неографа G. Обозначают разрезы в графах R = (Х0,).
Рис. 10.32 Разрез, состоящий из дуг орграфа определяется как объединение Разрезом орграфа G2 (рис. 10.33) является множество дуг U1 = (х5, х1), U2 = (x1, x4), U4 = (х3, х7) и U5 = (х2, х7), удаление которых разделяет множества вершин Хо = { х1,х2,х3 } и ={ х4,х5,х6,х7 } (рис. 10.33). Рис. 10.33 Этот разрез образован множествами: Пример 10.2. Задача о максимальном потоке Построить максимальный поток для ориентированной сети с источником 5 и стоком t (рис. 10.34). Пропускные способности дуг указаны на дугах сети: Рис. 10.34 Решение 1. Составляем матрицу пропускных способностей дуг C = { cik } для графа G; нулевые значения пропускных способностей дуг в табл. 10.7 не записываем: (10.7) 2. Выбираем произвольно один из путей от вершины S к вершине t графа G (рис. 10.34). Пусть Р1 = { s, x1, x4, t } —первоначальный путь: Определяем пропускную способность выбранного пути Q1 =min{10,5.13} = 5. В табл. 10.7 отмечаем чертой сверху значения пропускных способностей дуг, соответствующих указанному пути Р1. Вычитаем значение Q1 = 5 из отмеченных элементов (10, 5, 13). Нули, получаемые в результате вычислений, записываем в соответствующую строку или столбец. (10.8) 3. Выбираем следующий путь из S в t, т.е. Р2 = {s, x4, t} и определяем его пропускную способность: Q2 = min{4;8} = 4. В табл. 10.8 отмечаем значения пропускных способностей чертой над числами 4 и 8. Вычитаем значение Q2 = 4 из указанных элементов. Получаем новую табл. 10.9: (10.9) 4. Выбираем новый путь из S в t, т.е. Р3 = { s, xl, x3, x4, t } и определяем его минимальную пропускную способность: Q3 =min{5,9,7,4} = 4. Вычитаем значение Q3 = 4 из элементов, отмеченных в табл. 10.9. Получаем табл. 10.10 в виде: 5. Выбираем путь Р4 = {s,x3,£} и определяем его пропускную способность: Q4 =min{14,2} = 2. Вычитая Q4 = 2 из значений пропускаемых способностей (14,2), получаем табл. 10.11: (10.11) 6. Укажем путь Р5 = { s, x2, t } и определим его пропускную способность:
Q5 = min{3;3} =3. Вычитая Q5 из элементов пропускных способностей дуг рассматриваемого пути получаем таб. 10.11 в виде 10.12: (10.12) В столбце t имеются только нули. Следовательно, простроить новый путь невозможно. Вычитая из элементов табл. 10.1) значения пропускных способностей дуг, указанных в табл. 10.12, получаем таблицу со значениями Cjk, определяющими максимального возможный поток. Его величина равна П = Ql + Q2 + Q3 + Q4 + Q5; П = 5 + 4 + 4 + 2 + 3 = 18. Построим итоговую матрицу: С6 = С - С5. (10.13) (10.14) На основании итоговой матрицы строим максимальный поток сети: Рис. 10.35 Построенный граф G удовлетворяют условию потока, т.е. соблюдается равновесие вершин (величина входящего и выходящего потоков равны). Величина минимального разреза дуг равна R = 18. Рассмотрим другой способ решения задачи, используя алгоритм построения максимального потока в сети методом увеличения потока вдоль пути, который состоит в следующем: 1. Выбор начального потока. Обычно выбирают нулевое начальное значение потока. 2. Построение увеличивающегопути от источника 5 к стоку t 3. Увеличение потока вдоль построенного пути на максимально возможную величину, полагая увеличение потока по увеличивающей дуге и уменьшение его по уменьшающей дуге. Увеличивающей дугой называется дуга, направление которой совпадает с направлением потока и величина потока по этой дуге меньше ее пропускной способности, т.е. Уменьшающей дугой называется дуга, направление которой противоположное направлению потока, а величина потока отлична от нуля: Уменьшающие и увеличивающие дуги называют допустимыми. Увеличивающим путем называется элементарный путь, все дуги которого являются допустимыми. Рассмотрим пример 10.2. Определить максимальный поток для сети (рис. 10.34). Рис. 10.36
Решение. 1.Начальное значение потока полагаем равным нулю Vo — 0. 2.Построим увеличивающие пути от S к стоку t: Pl = {s, x1, x4, t}, φ1 = min (10; 5; 13) = 5. Запишем значение φ1 = 5 в скобках на соответствующих дугах рассматриваемого пути. Для пути (рис. 10.36) Р2 = {s, х4, t}, φ 2 = min (4; 13-5) = 4. Отметим на дугах пути Р2 величину φ 2 = 4. Для пути Р3 = {s,x1, x3, x4, t}, φ3 = min (10-5; 9; 7; 13-9) = 4.
Запишем величину φ3 = 4 на дугах пути Р3. Аналогично запишем пути Рi на дугах которых отметим соответствующие величины φi: Р4 = { s, х3, t }, φ4 = min (14; 2) = 2; P5 = { s, x2, t }, φ5 = min (6; 3) = 3. Увеличивающих путей больше нет. Построим максимальный поток Пmах заданной сети (Рис.10.36) Величина максимального потока равна сумме минимальных значений φi, i = 1,2,3,4,5 Пmах = 5 + 4 + 4 + 2 + 3 = 18. Значение минимального разреза Rmin = 18. Ответ: Пmах= Rmin = 18. ЗАДАЧА КОММИВОЯЖЕРА Задача заключается в определении оптимального маршрута объезда n городов по критерию времени, стоимости или длине маршрута. Эта задача связана с определением гамельтонова цикла минимальной длины. Основным методом решения таких задач является метод ветвей и границ. Сущность метода заключается в том, что все множество допустимых решений задачи делится на последовательно уменьшающиеся подмножества с помощью процедуры ветвления. В результате находится последовательность объезда пунктов (маршрут), протяженность которого меньше любого другого возможного варианта, т.е. строится оптимальный кольцевой маршрут. Построить оптимальный кольцевой маршрут для неографа G(X,Y) (рис. 10.36) с вершинами хi, Пропускные способности ребер указаны на графе. 1. Составим матрицу пропускных способностей ребер C(G) графа G(X,U) рис.10.37. Пропускную способность между однородными вершинами условно принимаем равную бесконечности, т.е. (клетки главной диагонали матрицы С) (табл. 10.14). Для определения нижней границы множества выполним приведение матрицы (табл. 10.14), т.е. в каждом столбце и строке матрица должна содержать не менее одного нуля. С этой целью выберем в каждой строке минимальный элемент и запишем их в правой колонке табл. 10.14. Вычитая из элементов каждой строки соответствующие значения min aik, получаем табл. 10.15. k Рис.10.37
(10.15)
Для завершения приведения матрицы табл. 10.15 вычитаем минимальные значения в каждом столбце min aik и получим приведенную матрицу (табл. 10.16). Сумма констант приведения по строкам и столбцам матрицы составит:
Н= 6 + 7 + 6+ 9+ 5 + 5 + 1+4 = 43. Сумма констант приведения Н = 43 является границей всех циклов, т.е. любой вариант кольцевого маршрута не может быть меньше этой нижней границы. С помощью ветвления рассматриваются циклы (последовательности обхода вершин графа), которые могут привести к построению оптимального (минимального) кольцевого маршрута. На первом этапе построения древовидного графа множество всех циклов делится на два подмножества: первое из них включает все циклы (замкнутые маршруты) с перемещением от вершины хi к вершине хк, а второе множество содержит циклы без этого перемещения. На графе ветвления от исходной вершины Н = 43 отходят две дуги (ветви): к вершине (i,k), изображающей первое из этих подмножеств и к вершине, указывающее второе (рис. 10.38). Рис. 10.38 Рассмотрим, как выбирается пара вершин (i,k) и . Пара вершин (xi, хk) на основании a(i,k), которые рассчитываются для всех клеток приведенной матрицы (10.15), содержащих нули. Для определения a(i,k) в строке xi выбирается минимальный элемент (cik = 0) и минимальный в столбце хк. Эти минимальные элементы складываются, а их сумма равна значению a(i,k). В рассматриваемом примере эти значения элементов в строках укажем справа, а в столбцах — внизу (табл. 10.16), сумму минимальных элементов запишем в клетках, содержащих нули и отметим их кружком (табл. 10.16). Вычислим a(i,k) для каждой клетки с нулевым элементами: (10.16)
Запишем значения α(i,k) в соответствующих клетках с нулями, отмечая их кружками в табл. 10.16, выбираем наибольшее значение α(i,k) Таких значений в табл. 10.16 четыре. Выбираем одно из них, например, α(3,1) = 0 + 4 =4 (для строки х3 и столбца x1. Вычеркивая их, получаем табл. 10.17, в которой нуль, расположенный в строке х1 и столбце х3, заменяем на . так как вершина х3 не должна иметь цикла (3,1), т.е. c13 =∞
(10.17) Рис. 10.39 Определяем ребро ветвления, деля множества маршрутов на два: и (3,1), рис. 10.39. Нижняя граница вершины представляет сумму значений нижней границы предыдущей вершины, равной 43 и т.е. Для определения нижней границы вершины вторым слагаемым берется сумма констант приведения матрицы 10.17. Для приведения этой матрицы из строки х1 следует вычесть минимальный элемент 4 и получим матрицу 10.18. Сумма констант приведения равна h = 4. Нижняя граница вершины (3,1) составит H (3,1) = 43 + 4 = 47 (рис. 10.40). (10.18) Рис. 10.40 Для получения следующей пары вершин от вершины (3,1) определим а и выберем новую пару вершин, входящих в концевой маршрут. В табл. 10.18 укажем минимальные элементы в строках и столбцах, записанных справа и внизу этой таблицы соответственно. Вычислим сумму констант приведения a (i,k) и включим их в табл. 10.18:
Принимаем вершины х1 и х2 с величиной приведения в качестве звена в кольцевом маршруте. В табл. 10.18 вычеркиваем столбец х2 и получаем табл. 10.19:
(10.19) Определяем вершины ветвления для ребер (1,2) и Нижняя граница вершины определяется из условия Для определения нижней границы вершины (1,2) вторым слагаемым берем сумму констант приведения табл. 10.19, вычитая из строки х2 а25 = 7 и в столбце х3 величину α43 = 5, чтобы матрица имела нули в каждой строке и каждом столбце. Величина приведения h = 7 + 5. Н (1,2) = = 47 + 7 + 5 = 59. Приведенная матрица табл. 10.20 имеет вид: (10.20) Определяем значения для клеток с нулевыми элементами: Рис. 10.41 Исключаем из табл. 10.20 х5 строку и столбец х6. Получаем табл. 10.21: (10.21) Приведем табл. 10.21, вычитая из каждого элемента строки х6 минимальный элемент а64 = 3, Получаем табл. 10.22 в виде: (10.22) Строим подграф (рис. 10.42), исключаем в табл. 10.22 строку х6 и столбец х4, так как α (6,4) = 5. Получаем табл. 10.23, в которой α44 = 0. Заменяем ∞ чтобы исключить цикл.
Рис. 10.42 (10.23)
Рис. 10.43 Строим древовидный граф ветвлений (рис. 10.45), соединяя отдельные элементы графа (рис. 10.39-10.43) и гамельтонов цикл обхода вершин исходного графа (рис. 10.44). Рис. 10.44 Гамельтонов цикл образуют ребра (x3,x1), (x1,x2), (х2,х5), (х5,х6), (х6,х4), (х4,х3). Длина маршрута обхода вершин x3 → x1 → x2 → x5→ x6→ x4 → x3 графа G(X,Y) (рис. 10. 37) составляет М = 6 + 11 + 14 + 5 + 12 + 14 = 62 и совпадает с нижней границей графа (рис. 10.45). Рис. 10.45 Последовательность решения задачи коммивояжера методом ветвей играниц состоит в следующем: 1. На основании графа посещения городов составляется матрица расстояний от соответствующих вершин. 2. Проводится приведение матрицы, вычитая минимальные элементы по строкам и столбцам. 3. Определяем нижнюю границу всего множества маршрутов, складывая значения вычитаемых минимальных элементов.
4. В каждой клетке приведенной матрицы, в которых aik = 0, заменяем поочередно нули на ∞ и вычисляем суммы новых констант приведения H(xi, xk), которые записываем в клетке с нулем, отмеченной кружком. 5. Выбираем ребро ветвления (i,k) по максимальной величине суммы констант приведения Нтах. Затем исключаем его из множества путем замены элемента матрицы а1к =∞. В результате будет определено подмножество маршрутов {(i,k)}. 6. В полученной матрице расстояний по строкам получаем нули, вычитая минимальное значение элементов в соответсвующих строках и определяем нижнюю границу подмножества маршрутов H(i,k). 7. Включаем ребро (i,k) в маршрут, вычеркивая строку i и столбец к в приведенной матрице расстояний и заменяя симметричный элемент aik =∞ для исключения образования негамельтонова цикла. 8. Приводим сокращенную матрицу (получаем нули в строках вычитанием минимального элемента) и определяем нижнюю границу подмножества H(i,k). 9. Сравниваем нижние границы подмножеств H(i,k) и H (i,k) и подмножество с меньшим значением нижней границы подвергаем ветвлению. 10. Определяем гамельтонов цикл при получении окончательной матрицы размерности 2x2. ЗАДАЧА О НАЗНАЧЕНИЯХ «Лучший работник для выполнения данной работы» — вот подходящее краткое описание задачи о назначениях. В этой задаче необходимо назначить работников на определенные работы. Каждый работник может выполнить любую работу, хотя и с различной степенью мастерства. Если на некоторую работу назначается работник именно той квалификации, которая необходима для ее выполнения, тогда стоимость выполнения работы будет ниже, чем при назначении на данную работу работника неподходящей квалификации. Цель задачи — найти оптимальное (минимальной стоимости) распределение работников по всем заявленным работам. Представление (связь) работников с соответствующими работами может быть представлена в виде: а) графическое (рис. 10.46)
Рис. 10.46 б) матричное С = {cik}, cik — стоимость назначения i работника на к работу. Постановка задачи состоит в следующем: При ограничениях n ∑ = xik = 1 при k = 1,n k = 1 Пример 10.3. Требуется закрепить четырех работников А, В, С и D за четырьмя работами (I, II, III, IV) при условии минимизации суммарных затрат и выполнении одной работы одним работником, если после проведения хронометража работ соответствующими работниками матрица задана в виде: (10.24) Приведем матрицу (10.24), т.е. упростим ее, вычитая из каждой строки соответствующие минимальные элементы, получим (10.25): (10.25) Вычитаем минимальные значения в соответствующих столбцах матрицы (10.25), получим (10.26): (10.26) В соответствие с (10.26) допустимое решение не может быть найдено, так как нельзя выделить независимые нули. Увеличим количество нулей, выполняя следующие действия: 1. В матрице (10.26) приведем минимальное количество горизонтальных и вертикальных прямых по строкам и столбцам, чтобы вычеркнуть все нулевые элементы. 2. Выбираем наименьший вычеркнутый элемент, равный 2. Таких элементов в (10.26) два. вычитаем его из остальных невычеркнутых элементов и прибавляем к каждому элементу, стоящему на пересечении проведенных прямых. В результате получаем матрицу в виде (10.27). Выделяя независимые нули в (10.27) (это клетки а11, а32, а23 а44) получаем решение задачи: работник А назначается на работу I, В на II, С на III, D на IV. Минимальные издержки определяем из условий: (10.27) Cmin = 5+10+ 6 + 8 + 2 + 2 = 33, т.е. сумма всех минимальных элементов, упрощающих матрицы, или Cmin = 5 + 8 + 12 + 8 = 33, где слагаемые Cik соответствуют независимым нулям матрицы. Эти элементы отмечены в (10.27). При решении задач на максимум в каждом столбце выбирается максимальный элемент, из которого вычитаются все элементы этого столбца. Затем в каждой строке матрицы выбирается минимальный элемент, который вычитается из всех элементов этой строки. В результате этого в каждой сроке и в каждом столбце матрицы будет не менее одного нуля. (10.28) Распределить четырех работников из условия максимизации матрицы оценок (10.28). В каждом столбце матрицы (10.28) выбирается максимальный элемент и из него вычитаются все элементы этого столбца. Таким образом, получается матрица (10.29). Затем, вычитая минимальный элемент в каждой строке из остальных элементов, получаем табл. (10.30). (10.29) (10.30)
В матрице (10.30) выделим независимые нули, построив цепочку (подчеркнутые нули). Работник А закреплен за работой II, В — за работой IV, С — за работой III, D — за работой I. Оценка Сmах = 7 + 13 + 14 + 10 = 44.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|