Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс_заочн(27 вар).doc
Скачиваний:
86
Добавлен:
21.12.2018
Размер:
444.93 Кб
Скачать
    1. Некоторые прикладные задачи

      1. Задачи об источниках и потребителях

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

Пусть в некоторую единицу времени источники xj (j=1,2,..,k) вырабатывают aj единиц продукции, а потребность потребителя yi (I=1,2,..,m) в этой продукции равна bi. Пропускные способности линий считаются также отнесенными к выбранной единице времени. Таким образом, в задачах этого типа идет речь о неизменном и однородном по времени стационарном потоке.

С каждой такой задачей свяжем транспортную сеть D. Вершинами сети D служат источники, потребители, промежуточные пункты и еще две вспомогательные вершины: вход x0 и выход z. Вершину x0 свяжем дугами (x0,xj) (j=1,..,k) с источниками и припишем им пропускные способности aj. Потребителей yi свяжем с выходом z дугами (yi,z) с пропускными способностями bi. Остальные вершины соединим между собой дугами с соответствующими пропускными способностями в соответствии с реальным наличием связей между ними.

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

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

      2. Решить задачу об источниках и потребителях, сведя ее к задаче построения максимального потока в транспортной сети и используя второй алгоритм – алгоритм меток для построения максимального потока.

    1. Двудольные графы и паросочетания

Рассмотрим задачу о назначении на должности. Пусть в некотором учреждении имеется 6 вакантных должностей y1,y2,…,y6 и 6 работников x1,x2,…,x6. Граф D, изображенный на рис.5, иллюстрирует, какие должности y может в силу своей квалификации занимать работник x. Пусть выполнено условие: каждый работник может занимать только одну должность, и каждая работа выполняется только одним работником. Тогда решение этой задачи сводится к построению наибольшего паросочетания в данном двудольном графе.

x1 x2 x3 x4 x5 x6

y1 y2 y3 y4 y5 y6

Рис. 5.

      1. Нахождение наибольшего паросочетания в двудольном графе

Граф G = (V,X) называется двудольным, если множество V его вершин допускает разбиение на два непересекающихся подмножества V1 и V2 (две доли), причем каждое ребро графа соединяет вершины из разных долей.

Обозначим G = (V1,V2, X) двудольный граф G с долями V1 и V2. Будем считать, что V1 V2.

Двудольный граф G = (V1,V2, X) есть полный двудольный граф, если каждая вершина из V1 соединена ребром с каждой вершиной из V2.

Паросочетанием Р для двудольного графа G=(V1,V2,X) называется любое множество попарно несмежных ребер в G.

Р есть наибольшее паросочетание для G , если число ребер в Р наибольшее среди всех возможных паросочетаний для G.

Р есть максимальное паросочетание (тупиковое) для G, если к Р нельзя добавить ни одного ребра из G, не нарушив условия паросочетаемости.

Р есть совершенное паросочетание для G, если Р имеет V1 ребер.

Наибольшее паросочетание максимально. Совершенное паросочетание является и наибольшим, и максимальным.

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

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

Пусть G=(V1,V2,X) – произвольный двудольный граф. Построим сеть S(G) с источником s, стоком t (st, s,tV1V2,), множеством вершин

, множеством дуг

,

и пропускной способностью c(u,v)=1 для каждой дуги (u,v) X’.

На рис.3 показано построение сети S(G) для некоторого двудольного графа.Отметим, что в сети S(G) существует максимальный нуль-единичный поток, т.е. максимальный поток φ такой, что φ(x)=0 или φ(x)=1 для каждой дуги xX’.

Теорема. Существует взаимно однозначное соответствие между паросочетаниями в G и нуль-единичными потоками в S(G), при котором паросочетанию M={(v1,u1), …(vk,uk)} мощности k (viV1, uiV2 для 1 i  k) соответствует поток φМ величины k, определяемый следующим образом:

φМ (s,vi) = φМ (vi,vj)= φМ (vj,t)=1, 1i k,

и φМ (x)=0 для остальных дуг x сети S(G); потоку φ величины k соответствует паросочетание Мφ, |Мφ|=k, определяемое следующим образом:

Мφ = {(v,u)| vV1 & uV2 & φ(v,u)=1}.

Данная теорема позволяет использовать произвольный алгоритм построения максимального потока (целочисленного) для определения наибольшего паросочетания.

Рис.3.

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

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

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