Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Поток минимальной стоимости и труднорешаемые задачи. Учебно-методическое пособие
.pdf
. .
-
- ,
02.03.01 « »,
02.03.03 «
»
2023

519.712.3(07)
22.127
64
:
. . , . . , . . ,
. . , . .
. .
:
( - ,
- . Ю. Хачай);
С. С. Титов, -
( )
Поток :
64
.-. / . . , . . , . . ,
. . , . . ; . . . . ;
- . , . . -. — : - . -, 2023. — 90 .: . — 30 . — ISBN
978-5-7996-3711-8. — : .
ISBN 978-5-7996-3711-8
- .
NP- NP-
.
.
,
« ». , , ,
.
519.712.3(07)
22.127
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 :0 f (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+) =
w∈V
f(v, w).
w∈V
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), это
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
