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

Поток минимальной стоимости и труднорешаемые задачи. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
   
 
  
    . . 
 
 
-  
  
  
 -     ,
   
02.03.01 «  »,
02.03.03 «    »

  
2023
 519.712.3(07)  22.127 64
:
. . , . . , . . ,
. . , . . 
   . . 
:
  
    
(   -  ,
-  . Ю. Хачай);
С. С. Титов,  -  
(    )
Поток    :
64
.-.  / . . , . . , . . , . . , . . ;  . . . . ; -   . , . . -. — ­: - . -, 2023. — 90 .: . — 30 . — ISBN 978-5-7996-3711-8. — : .
ISBN 978-5-7996-3711-8
-      ­    .   NP- NP-        .          .
    ,   « ».     , ­ , ,     .
 519.712.3(07)
 22.127
ISBN 978-5-7996-3711-8 ©   , 2023
Предисловие
Предлагаемое учебно-методическое пособие содержит мате­риалы двух наиболее сложных разделов курса «Комбинатор­ные алгоритмы», читаемого студентам второго и третьего кур­са направлений 02.03.01 «Математика и компьютерные науки» и 02.03.03 «Математическое обеспечение и администрирование информационных систем», а также специальности 10.05.01 «Ком­пьютерная безопасность». Его цель — подробно разобрать тео­ретические аспекты и множество примеров наиболее сложной для понимания части курса.
Для изучения пособия читателю необходимо иметь опре­деленные знания в области теории графов и комбинаторных алгоритмов, а также быть знакомым с соответствующей тер­минологией и основными теоремами.
Пособие содержит две главы. В первой главе «Потоки в се­тях» рассматривается задача нахождения максимального пото­ка, а также ряд ее усложненных постановок с анализом методов их решения. Теоретический материал дополнен практическими задачами.
Во второй главе «Труднорешаемые задачи» рассматрива­ются несколько NP-полных и NP -трудных задач с классифи­кацией возможных подходов к их точному и приближенному решению.
В учебно-методическом пособии содержится множество ил­люстративных примеров, что значительно способствует пони­манию и усвоению теоретического материала.
3
4 Предисловие
Пособие рассчитано на студентов математических и ком­пьютерных специальностей и позволяет повысить компетенции в области компьютерного моделирования, разработки алгорит­мов, оценки и оптимизации вычислительной сложности.
В конце пособия приведен список библиографических ссы­лок, который также может рассматриваться и как список ре­комендуемой литературы. Первая книга выделяется по своей направленности. Это чуть ли не единственная книга, адресо­ванная математикам. Вторая — библия программистов. Этот учебник является основным во всем мире. Третья содержит многие методы решения труднорешаемых задач. Четвертая — список труднорешаемых задач. Хотя эта книга написана давно, актуальности она не потеряла.
Начала доказательств помечены знаком , а концы — зна­ком .
Глава 1
Потоки в сетях
1.1. Основные понятия и обозначения
Дадим несколько определений. Одним из основных понятий является понятие потока в сети.
Пусть G =(V, E, c) — сеть с выделенными вершинами s и t,гдеs — единственная вершина с нулевой степенью захо- да, ее будем называть источникt — единственная вершина с нулевой степенью исхода, эту вершину будем называть сто-
ком в сети G.
Потоком f в сети G называется функция на ребрах,
f : E R, удовлетворяющая двум условиям:
1. Для e :0f (e) c(e), /* ограничение по пропускной способности ребра */
2. Для v, v = s, t, f (v−)=f(v +) /* сохранение потока в вершинах, v = s, t */
Здесь f(v−), f (v+) — втекающий в вершину v поток и вытека­ющий из вершины v,где
f(v)=
f(w, v),f(v+) =
wV
f(v, w).
wV
5
6 Глава 1. Потоки в сетях
Положим f= f (s+) величина потока f , т. е. величина потока — это все, что вытекает из источника. Поток наиболь­шей величины называется максимальным.
Основная задача. В заданной сети найти максимальный поток.
Примеры
1. Рассмотрим сеть, приведенную на рис. 1.1. Пусть про-
пускная способность c =1на каждом ребре.
Поток f на ребрах (s, 1), (1, 2), (2,t) равен 1, а на ребрах (s, 2) и (1,t) равен 0. Величина этого потока f =1.
Понятно, что это не максимальный поток в этой сети.
Рис. 1.1. Пример потока
2. Рассмотрим сеть, приведенную на рис. 1.2. Пусть про-
пускная способность c =1на каждом ребре,
f(1, 2) = f (2, 3) = f (3,1) = 1,f(s, 1) = f (1,t)=0.
Оба условия потока выполнены. Хотя и не хочется назвать это потоком, но придется. В некоторых книгах подобный поток на­зывают циркуляцией.
Поток можно представлять себе как жидкость, которая те­чет по трубам. У каждой трубы есть диаметр, который ограни­чивает величину потока по ней. То есть получаем первое усло­вие в определении потока. Второе условие означает, что потерь
Рис. 1.2. Пример ненулевого
потока величины 0
1.1. Основные понятия и обозначения 7
в вершинах не происходит. А величина потока означает лишь сколько жидкости мы пропускаем по всей системе трубопрово­дов.
Поток можно представлять как транспорт, проезжающий по улицам города. Каждая улица имеет пропускную способ­ность, т. е. сколько машин может проехать по данной улице в единицу времени (ограничение по пропускной способности), и машины не бьются на перекрестках (сохранение потока в вер­шинах).
Приведем неочевидный пример задачи, которая сводится к задаче о максимальном потоке.
Задача планирования производства
Предприятию, располагающему K однотипными станками, требуется изготовить партию из N изделий в заданный срок M дней.
Пусть все изделия пронумерованы натуральными числами
i =1, 2,...,N, а все дни j =1, 2,...,M. Для каждого изделия i заданы:
— день, когда можно начинать его изготавливать;
T
i
— количество дней на его изготовление;
A
i
— утро того дня, к которому это изделие должно быть
D
i
готово, т. е. в день с номером D
1 изготовление изделия
i
должно быть закончено.
Предполагается, что T
<Di. Каждое изделие может изго-
i+Ai
тавливаться на любом станке, в процессе его изготовления мо­гут быть перерывы, т. е. оно еще не готово, но в этот день оно не изготавливается на каком-либо станке. Будем считать, что если какое-то изделие изготавливается на каком-либо станке, то в этот день станок полностью загружен именно этим изде­лием.
Спрашивается, может ли предприятие изготовить все изде­лия в заданный срок M. Если «да», то каков план изготовления изделий?
8 Глава 1. Потоки в сетях
Сведем эту задачу к задаче о максимальном потоке. По­строим сетевую модель.
Пусть G =(V, E, c), где множество вершин
V = {s}∪I J ∪{t}.
Здесь s и t — источник и сток сети соответственно, I — множе­ство всех изделий, J — множество всех дней.
Множество ребер
E = {(s, i):i I}∪{(i, j):T
 i, j < Di}∪{(j, t):j J},
i
т. е. вершину s соединяем со всеми изделиями; каждое изделие соединяем с теми днями, когда оно может изготовляться; все дни соединяем с вершиной t.
Функция пропускных способностей определяется следую­щим образом. Положим c(s, i)=A
, т. е. пропускная способ-
i
ность ребра, ведущего от источника к изделию, равна коли­честву дней для его изготовления; c(i, j)=1, каждый день используется только один станок для изготовления каждого изделия; c(j,t)=K, так как предприятие располагает K оди­наковыми станками.
Получим сеть, представленную на рис. 1.3. Здесь ребра вида (i, j) изображены только из вершины i.
Справедлива следующая теорема.
Теорема 1.1. План реализуем тогда и только тогда, когда ве­личина максимального потока в так построенной сети равна
N
f=
Ai.
i=1
Докажем только половину теоремы, а именно содержа­тельную часть.
N
Пусть f — максимальный поток в сети G и f =
Ai.
i=1
Так как на каждом ребре, исходящем из s, f (s, i) c(s, i)=A
,
i
1.1. Основные понятия и обозначения 9
Рис. 1.3. Сетевая модель задачи «Планирование
производства»
то на всех этих ребрах справедливо равенство f(s, i)=A
,апо-
i
скольку в каждое изделие входит только одно ребро, получаем, что f(i)=A
, а значит и f(i+) = Ai. То есть количество ре-
i
бер, исходящих из вершины i, на которых f (i, v)=1,тоже равно A
. Поскольку для всех j величина потока ограничена
i
сверху числом K, получаем, что не более K единичек втекают в вершину j.
Остается оформить план производства изделий. Изделие с номером i делаем в тот день, когда f(i, j)=1. А условия
f(s, i)=A
и f(j−)=f (j+) K
i
гарантируют, что план производства будет выполнен с соблю­дением всех ограничений.
Та же самая задача, хотя, на первый взгляд, она совсем про другое. Эта задача известна в шутливой форме.
Требуется пожарить 3 бифштекса, каждый с двух сторон. Причем каждая сторона жарится ровно 1 минуту. Одновре­менно в сковороде помещаются 2 бифштекса. Спрашивается, можно ли пожарить бифштексы за 3 минуты?
10 Глава 1. Потоки в сетях
Решение. Да, можно. Сначала жарим 2 бифштекса с од­ной стороны, затем первый переворачиваем, а второй убираем со сковороды и заменяем его на третий. Во вторую минуту жа­рим эти бифштексы, затем убираем первый (он пожарен), в по­следнюю минуту переворачиваем третий и возвращаем второй. Задача решена.
Как это решение выглядит на языке теории графов? В тер­минах выше описанной модели
K =2(станки, это и есть одна сторона сковороды, куда помещаются два бифштекса);
N =3(бифштексы, это и есть изделия);
M =3(минуты, это и есть дни);
=1(любой бифштекс можно начинать жарить в пер-
T
i
вый день);
=2(каждый бифштекс жарится 2 минуты);
A
i
=3(за 3 минуты надо пожарить все бифштексы).
D
i
Остается построить сеть, которая строится очевидным об-
разом, и найти в ней максимальный поток.
Теорема 1.2. В каждой сети существует максимальный по­ток.
Пусть G =(V, E, c) — заданная сеть. Занумеруем все
ребра сети произвольным образом: (e
1,e2
,...,em).
Пусть f какой-то поток в G. Поток f определяет некото-
рую точку в евклидовом m-мерном пространстве E
, посколь-
m
ку каждый поток в сети G определяет некоторый упорядочен­ный набор чисел (f(e
),f(e2),...,f(em)). Обозначим это мно-
1
жество через F.
Итак, F = {f =(f (e
),...,f(em)) : f — поток в G}. Пока-
1
жем, что F — компакт. Компактность в евклидовом простран­стве означает, что это множество ограничено и замкнуто.
Ограниченность множества F следует из того, что для каж-
дого потока f выполняются неравенства 0 f(e) c(e), это
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]