РЕШЕНИЕ ЗАДАЧИ О МАКСИМАЛЬНОМ ПОТОКЕ В СЕТИ НАУЧНАЯ РАБОТА Автор: Черников Антон Владимирович Серпуховский технический колледж, 4 курс ЦЕЛЬ РАБОТЫ - Целью данной научно–исследовательской работы является программное решение одной из задач оптимизации – задачи о максимальном потоке в сети. - Задача занимает центральное место в теории сетей применительно к организации работы транспорта, компьютерных сетей, систем нефтепроводов. - Для разработки программы выбран компьютер типа IBM PC, операционная система Windows XP Professional, система программирования Borland Delphi 6. - Программа нахождения максимального потока в сети реализует алгоритм Форда-Фалкерсона. ПОСТАНОВКА ЗАДАЧИ Данная задача имеет множество возможных вариантов постановки, один из которых может быть сформулирован следующим образом. Пусть имеется типовая сеть нефтепроводов. Отдельные участки трубопроводов оснащены компрессорными установки для поддержания требуемого давления, необходимого для транспортировки продукта. Известны предельные значения пропускной способности каждого участка рассматриваемой системы. Сеть сведена к одному источнику и одному стоку. Это достигнуто путем введения дополнительных дуг с бесконечной пропускной способностью от источника к скважинам и от нефтеперегонных заводов к стоку (эти дуги показаны пунктирными линиями) Сегменты трубопровода могут быть как однонаправленные (осуществляют перекачку нефти только в одном направлении), так и двунаправленные. В однонаправленных сегментах положительная пропускная способность предполагается в одном направлении и нулевая – в другом. Как определить максимальную пропускную способность (т.е. максимальный поток) между, нефтеперегонными скважинами и нефтеперегонными заводами? ОБОСНОВАНИЕ ВЫБОРА МЕТОДА РЕШЕНИЯ Существующие методы решения делятся на классы: 1) математические программы MATLAB, MATHCAD, MS EXCEL. Однако данные программы предполагают формулировку исходной задачи в форме задачи математического программирования, что снижает наглядность представления исходных данных и результата. Кроме того, с помощью сетевого подхода описываются очень масштабные реальные ситуации, а эти программы не позволяют обрабатывать большое количество переменных и ограничений. 2) специальные точные алгоритмы, которые учитывают специфические особенности объектов графа. Именно к таким алгоритмам относится алгоритм пометок Форда-Фалкерсона. Он является одним из наиболее эффективных методов решения задачи. 3) алгоритмы нахождения приближенного решения – генетические и нейросетевые. Полученное решение будет лишь близким к оптимальному. Таким образом, алгоритм Форда-Фалкерсона позволяет найти точное решение задачи. Алгоритм Форда – Фалкерсона нахождения максимального потока в сети Идея алгоритма состоит в нахождении сквозных путей с положительными потоками от источника к стоку. Рассматривается ребро (i,j) с (начальной) пропускной способностью . В процессе выполнения алгоритма части этих пропускных способностей «забираются» потоками, проходящими через данное ребро, в результате каждое ребро будет иметь остаточную пропускную способность. Будем использовать запись для представления остаточных пропускных способностей. Сеть, где все ребра имеют остаточную пропускную способность, назовем остаточной. Для произвольного узла j, получающего поток от узла i, определим метку, где - величина потока, протекающего от узла j к узлу i. Алгоритм нахождения максимального потока предполагает выполнение следующих действий. Шаг 1. Для всех ребер (i,j) положим остаточную пропускную способность равной первоначальной пропускной способности, т.е. приравняем . Назначим и пометим узел 1 меткой . Полагаем i=1 и переходим ко второму шагу. Шаг 2. Определяем множество как множество узлов j, в которые можно перейти из узла i по ребру с положительной пропускной способностью (т.е для всех ). Если , выполняем третий шаг, в противном случае переходим к шагу 4. Шаг 3. В множестве находим узел , такой, что . Положим и пометим узел меткой . Если последней меткой помечен узел стока (т.е. если ), сквозной путь найден, и мы переходим к пятому шагу. В противном случае полагаем и возвращаемся ко второму шагу. Шаг 4 (Откат назад). Если , сквозной путь невозможен, и мы переходим к шагу 6. Если , находим помеченный узел , непосредственно предшествующий узлу , и удаляем узел из множества узлов, смежных с узлом . Полагаем и возвращаемся ко второму шагу. Шаг 5 (Определение остаточной сети). Обозначив через множество узлов, через которые проходит найденный сквозной путь от узла источника (узел 1) до узла стока (узел ). Тогда максимальный поток, проходящий по этому пути, вычисляется как . Остаточные пропускные способности ребер, составляющих сквозной путь, уменьшаются на величину в направлении движения потока и увеличиваются на эту же величину в противоположном направлении. Таким образом, для ребра (i,j), входящего в сквозной путь, текущие остаточные способности изменяются следующим образом: а) , если поток идет от узла i к узлу j, б) , если поток идет от узла j к узлу i. Далее восстанавливаем все узлы, удаленные на шаге 4. Полагаем и возвращаемся ко второму шагу для поиска нового сквозного пути. Шаг 6 (Решение). а ) при m найденных сквозных путях максимальный поток вычисляется по формуле . б) имея значения начальных и конечных пропускных способностей ребра (i,j), можно вычислить оптимальный поток через это ребро следующим образом. Положим . Если >0, поток, проходящий через ребро (i,j), равен . Если же >0, тогда поток равен (Случай, когда одновременно >0 и >0, невозможен.) ЛОГИЧЕСКАЯ МОДЕЛЬ ПРОГРАММЫ РЕЗУЛЬТАТЫ РАБОТЫ В результате работы получена программа решения задачи о максимальном потоке в сети, которая реализует алгоритм пометок Форда-Фалкерсона. Достоинствами данной программы являются: 1) представление исходного графа с помощью собственного компонента TMyTree. 2) реализация алгоритма Форда – Фалкерсона и выдача подробного решения средствами Delphi и MS Word. 3) наличие собственного типа файлов, зарегистрированного в Windows. 4) применение динамически присоединяемой библиотеки. ЗАКЛЮЧЕНИЕ Данную программу можно отнести к программному обеспечению систем, основанных на сетевых моделях. Примеры сетевых моделей: - схемы автомобильных дорог региона, которые соединяют отдельные населенные пункты; - схемы телекоммуникаций, используемые для передачи информации между отдельными узлами системы; - схемы трубопроводов, связывающие источник добычи нефти или газа с предприятием по его промышленной переработке; Очевидно, что данные модели описывают реальные масштабные ситуации и могут содержать тысячи переменных и ограничений. Это требует надежного программного обеспечения. Разработанная программа позволяет обработать сеть, содержащую порядка 100 вершин, что соответствует современному уровню развития программных сетевых приложений для оптимизации подобных моделей. Таким образом, решение данной задачи представляет большой интерес.