Text
                    X. Пападимитриу
К. Стайглиц
КОМБИНАТОРНАЯ
ОПТИМИЗАЦИЯ
Алгоритмы
и сложность


COMBINATORIAL OPTIMIZATION: Algorithms and Complexity CHRISTOS H. PAPADIMITRIOU Massachusetts Institute ol Technology National Technical University of Athens KENNETH STEIGLITZ Princeton University PRENTICE-HALL INC Englewood Cliffs, New iersey 1982
Предисловие переводчика В предлагаемой вниманию читателей книге удачно синтезирова- синтезированы вопросы, которые ранее в литературе освещались изолированно. Объединяющим все изложение лейтмотивом послужила задача ли- линейного программирования, занимающая важное место в истории развития теории алгоритмов. В начале 50-х годов нашего столетия в связи с развитием быстро- быстродействующих вычислительных машин возрос интерес к построению алгоритмов, хорошо работающих на практике. Одним из достижений в этом направлении явился предложенный Данцигом симплекс- метод для решения задач линейного программирования. Успехи в применении этого метода, а также обширные приложения линейного программирования привели к появлению большого числа книг, в которых излагается симплекс-метод и его модификации. В конце 50-х годов Форд и Фалкерсон предложили эффективный алгоритм для решения важного подкласса задач линейного програм- программирования — задачи о максимальном потоке в сети. Оказалось, что многие утверждения и алгоритмы, разработанные ранее в теории графов и комбинаторике, представляют собой частные случаи соот- соответствующих утверждений и алгоритмов для задачи о максимальном потоке в сети [1]. К задаче линейного программирования удается легко сводить многие дискретные задачи оптимизации. Однако при этом часто воз- возникает дополнительное требование целочисленности переменных. Методы решения таких задач составили отдельное направление, на- называемое целочисленным линейным программированием [2]. 70-е годы в теории алгоритмов ознаменовались резко возросшим интересом к анализу вычислительной сложности алгоритмов. Ряд результатов в этой области систематизирован в книгах [3, 4]. Од- Однако в них не нашли отражения результаты, связанные с задачей линейного программирования. Для подкласса задач линейного программирования, а именно для потоковых задач, методы построе- построения эффективных алгоритмов и оценки их сложности изложены в [5]. Вопрос существования полиномиальных алгоритмов для различ- различных задач привел к появлению теории /VP-полноты, современное со- состояние которой хорошо изложено е книге [6]. Общая задача ли-
Предисловие переводчика нейного программирования и здесь оказалась «крепким орешком» Только в 1979 г. советским математиком Л. Хачияном было доказа- доказано существование полиномиального алгоритма для этой задачи. Предлагаемая вниманию читателей книга X. Пападимитриу и К- Стайглица удачно объединяет все перечисленные выше вопросы, рассматривая их в тесной связи друг с другом. В ней излагаются ме- методы решения и приводится анализ сложности алгоритмов для об- общей задачи линейного программирования, задачи целочисленного программирования, потоковых задач, ряда задач на графах, задач о матроидах и т. д. Весьма целесообразным следует считать и включе- включение в книгу трех глав, посвященных приближенным методам реше- решения дискретных задач оптимизации и другим подходам к трудноре- шаемым задачам. Материал книги удачно скомпонован. Каждая глава сопровож- сопровождается соответствующей библиографией, небольшим историческим обзором и списком задач. Книга несомненно привлечет внимание ши- широкого круга читателей, интересующихся вопросами построения эффективных алгоритмов для дискретных задач. 1. Форд Л. Р., Фалкерсон Д. Р. Потоки в сетях.—М.: Мир, 1963. 2. Ху Т. Целочисленное программирование и потоки в сетях.— М.: Мир, 1974. 3. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислитель- вычислительных алгоритмов.— М.: Мир, 1979. 4. Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы. Теория и практика.—М.: Мир, 1980. 5. Адельсон-Вельский Г. М., Диниц Е. А., Карзанов А. В. Потоковые алго- алгоритмы.— М-: Наука, 1975. 6. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые зада- задачи.—М.: Мир, 1982. В. Б. Алексеев
Памяти наших отцов Харилаоса Пападимитриу и Ирвинга Стайглица Предисловие Цель этой книги — собрать воедино важные идеи теории слож- сложности вычислений, развитые специалистами по вычислительным нау- наукам за последние 15 лет, и основания математического программи- программирования, развитые специалистами по исследованию операций. Пер- Первые семь глав содержат независимое изложение линейного програм- программирования и теории двойственности; особый упор сделан на прило- приложениях в теории графов и в потоках в сетях. Глава 8 служит свя- связующим звеном: в ней вводятся методы анализа сложности алго- алгоритмов. В главах 9—12 описываются современные быстрые алгорит- алгоритмы для задач о потоке, иаросочетаниях, остовных деревьях, а также общих задач на матриодах. В следующих двух главах, 13 и 14, рас- рассматривается целочисленное линейное программирование, в том числе алгоритм отсекающей плоскости Гомори. В главах 15—16 рас- рассматриваются относительно новые идеи теории /VP-полноты и ее раз- разветвлений. В последних трех главах описываются практические спо- способы работы с труднорешаемыми задачами: приближенные алгорит- алгоритмы, метод ветвей и границ, динамическое программирование и ло- локальный (или окрестностный) поиск. Используя книгу в качестве учебника, следует учитывать уро- уровень подготовки студентов. В Принстоне, например, студенты, спе- специализирующиеся по вычислительным наукам и имеющие некото- некоторую подготовку по теории алгоритмов, изучают главы 1—10, 13, 14, 18, 19 за один семестр, тогда как студенты, освоившие исследование операций, могут начать с главы 8 (после беглого знакомства с гла- главами 1—7) и читать остальную часть книги. Необходимо отметить, что в главе 8 содержится алгоритм эллипсоидов — разработанный советскими математиками новый алгоритм, который удачно воспол- восполнил недостающее звено в процессе создания книги. Возьмем на себя смелость обратить внимание читателя на нес- несколько тем, которые, по нашему мнению, представлены по-новому. Так, в теории симплекс-алгоритма удалось избежать громоздких по- построений, связанных с неограниченными многогранниками: допус- допустимое множество заключается в параллелепипед с использованием оценок, вычисленных по входным данным. Вопрос о конечности сим- симплекс-алгоритма в общем случае решается путем применения нового
8 Предисловие элегантного алгоритма Блэнда, а для задачи целочисленного про- программирования — при помощи лексикографического метода. И на- наконец, в разделах, посвященных линейному программированию, даются геометрические интерпретации основных математических объектов и операций. Читатель обнаружит также, что особое внимание уделяется пря- прямо-двойственному алгоритму. Он используется для получения ал- алгоритма Дейкстры, алгоритма Форда и Фалкерсона для задачи о максимальном потоке, всех алгоритмов для задачи о потоке мини- минимальной стоимости и алгоритмов для задачи о взвешенном паросо- четании. Таким образом, благодаря прямо-двойственному методу общую задачу линейного программирования можно связать с ее комбинаторными приложениями, а также объединить несколько ал- алгоритмов для комбинаторных задач. Изложение теории /VP-полноты дается с минимальным обраще- обращением к теории машины Тьюринга, а класс задач NР определяется на основе идеи «свидетельства», что позволяет избежать понятия неде- недетерминизма. Для многих доказательств /VP-полноты используются новые и, по нашему мнению, более прозрачные сведения, а в главе 13 дается новое простое доказательство принадлежности задачи це- целочисленного линейного программирования к NP, основанное на дискретной форме леммы Фаркаша. Заключительная глава содержит обзор ряда успешных приме- применений метода локального поиска — широко используемого подхо- подхода к труднорешаемым задачам. Здесь круг замыкается: мы показы- показываем, что этот алгоритм подобен симплекс-алгоритму. Конечно, книга, подобная данной, в большой степени обязана авторам многих других книг в этой области Не претендуя на пол- полноту, мы хотели бы отметить лишь самые известные книги: Форда и Фалкерсона [FF], Данцига [Dal], Симмонара [Si], Ху [Ни], Лоуле- ра [La], Axo, Хопкрофта и Ульмана [AHU], Гэри и Джонсона [GJ], во многом оказавшие влияние на нашу работу. Авторы также благодарны многим коллегам за замечания, вы- высказанные на всех стадиях работы над книгой. Среди них Б. Д. Ди- кинсон, Р. Джайносар, К- Либергерр, А. Мирзаян, У. П. Нидринг- хаус, Д. Орлин, Ф.Садри, С. Туэ, Д. Валдес, М. Яннакакис и Н. Заде. Наконец, мы весьма признательны Л. Фурман, Г. Пехт, Р. д'Ар- канжело и К. Коул за неистощимое терпение при работе с много- многочисленными черновиками рукописи. Христос X. Пападимитриу Кеннет Стайглиц
1 Задачи оптимизации 1.1 Введение Многие задачи как практического, так и теоретического харак- характера касаются выбора «наилучшей» конфигурации или множества параметров для достижения некоторой цели. За последние несколько десятилетий сложилась иерархия таких задач вместе с соответствую- соответствующим набором методов их решения. На одном конце этой иерархии находится общая задача нелинейного программирования: найти та- такое х, чтобы х) минимизировать при условиях / g h (X) t(x) = 0 ДЛЯ для 1 = /== 1, 1, ..., т, ¦ ••, р, где /, gi и hj — произвольные функции параметра x?Rn. Методы решения таких задач почти всегда итеративны по своей природе, и их сходимость изучается при помощи анализа действительного пе- переменного. Когда функция / выпукла, функции gt вогнуты и hj линейны, мы получаем задачу, называемую задачей выпуклого программирования, которая обладает тем удобным свойством, что из локальной опти- оптимальности ее решения следует оптимальность глобальная. Кроме того, для нее имеются достаточные условия оптимальности — усло- условия Куна — Таккера. Сделав следующий большой шаг, именно, предполагая, что / и все gi и hj линейны, приходим к задаче линейного программирова- программирования. Для этого класса задач характерно несколько существенных отличий. Прежде всего любая задача из этого класса сводится к вы- выбору решения из конечного множества возможных решений. Таким образом, эту задачу можно назвать комбинаторной. Указанное ко- конечное множество кандидатов в решения представляет собой мно- множество вершин выпуклого многогранника, определяемого линей- линейными ограничениями. Применение известного симплекс-алгоритма Данцига приводит к оптимальному решению задачи линейного программирования за Сводку терминов и обозначений см. в приложении в конце главы.
10 Гл. 1. Задачи оптимизации конечное число шагов. Этот алгоритм основывается на идее улучше- улучшения стоимости путем перехода от вершины к вершине в многогран- многограннике. Тридцать лет совершенствования привели к формам симп- симплекс-алгоритма, которые в целом считаются очень эффективными — для них решение задачи с сотнями переменных и тысячами ограни- ограничений не вызывает никаких затруднений. Однако справедливо так- также, что имеются специально придуманные задачи, при увеличении размерности которых число шагов симплекс-алгоритма растет экспо- экспоненциально. Советские математики относительно недавно изобрели алгоритм эллипсоидов для линейного программирования, который гаранти- гарантирует нахождение оптимального решения за число шагов, растущее Рис. 1.1 Классы задач, рассматриваемые в дан- данной книге, и порядок их рассмотрения по главам. как полином от «размера» задачи — такое положение дел мы будем рассматривать в этой книге как очень благоприятное. Пока еще не ясно, позволят ли конкурировать усовершенствования, аналогич- аналогичные усовершенствованиям симплекс-алгоритма, алгоритму эллип- эллипсоидов с симплекс-алгоритмом. На рис. 1.1 указано, как соотносят- соотносятся друг с другом упомянутые выше задачи общего нелинейного, вы- выпуклого и линейного программирования. Некоторые задачи линейного программирования, именно задачи о потоках и паросочетаниях, решаются намного эффективнее общих задач линейного программирования. С другой стороны, эти задачи тесно связаны с задачами, которые явно трудноразрешимы! Напри- Например, задача о кратчайшем пути из вершины в вершину в графе ле- лежит в нашем классе задач о потоках и паросочетаниях, и для ее ре-
1.2. Задачи оптимизации 11 шения имеется алгоритм с оценкой О (л2), где п — число вершин в графе. В противоположность этому задача коммивояжера, в кото- которой ищется кратчайший замкнутый путь, проходящий через каж- каждую вершину ровно один раз, лежит в классе NP-полных задач, ко- которые по широко распространенному мнению все не разрешимы поли- полиномиальными алгоритмами. Эта тонкая грань между «очень просты- простыми» и «очень сложными» задачами многократно появляется в данной книге и, естественно, привлекла внимание разработчиков алгорит- алгоритмов. Задачи о потоках и паросочетаниях можно рассматривать и как частные случаи задач целочисленного линейного программирования. Это такие задачи линейного программирования, в которых интере- интересуются решением наилучшей стоимости при условии целочисленно- сти его координат. Как и в случае задач линейного программиро- программирования, для решения таких задач имеется конечный алгоритм. Од- Однако на этом сходство кончается: общая задача целочисленного ли- линейного программирования /VP-полна. Полностью положение дел представлено на рис. 1.1, где, кроме того, указан общий путь, ко- который будет проделан в данной книге по указанным классам задач. Мы начнем с наиболее фундаментальных и доступных фактов о задачах выпуклого программирования. Затем серьезно займемся линейным программированием, изучая симплекс-алгоритм, его гео- геометрию и алгоритмические следствия двойственности. Сделаем уда- ударение на теоретико-графовых интерпретациях обсуждаемых алго- алгоритмов, что естественно приведет к задачам о потоках и паросоче- паросочетаниях. Отсюда уже легко перейти к рассмотрению вопросов слож- сложности и алгоритма эллипсоидов, а также к изучению /VP-полных за- задач, которые должны дать представление о трудных комбинаторных задачах оптимизации. Последняя часть книги касается подходов к практическому решению NP-полных задач среднего размера: приб- приближенных методов, методов перебора и локального поиска. 1.2 Задачи оптимизации Задачи оптимизации естественным образом разделяются на два класса : задачи с непрерывными переменными и задачи с дискретны- дискретными переменными, которые будем называть комбинаторными. В не- непрерывных задачах обычно отыскивается множество действительных чисел или даже некоторая функция; в комбинаторных задачах — некоторый объект из конечного или возможно бесконечного счетного множества. Такими объектами обычно бывают целое число, множест- множество, перестановка или граф. Эти два рода задач обычно совершенно различны по характеру, и методы их решения резко разделились. Комбинаторную оптимизацию мы начнем изучать (в некотором смы- смысле) с пограничной зоны на стыке с непрерывной оптимизацией.
12 Гл. 1. Задачи оптимизации В теории оптимизации особая роль отводится линейному про- программированию: с одной стороны — это непрерывная оптимизацион- оптимизационная задача, с другой, как упомянуто выше,— ее можно рассматри- рассматривать также как комбинаторную по природе, и на самом деле она слу- служит основой для изучения многих чисто комбинаторных задач. По- Поэтому дадим определение задачи оптимизации достаточно общим, чтобы охватить линейное программирование (и почти любую дру- другую задачу оптимизации). Определение 1.1. Индивидуальная задача оптимизации — это пара (F, с), где F — произвольное множество, область допустимых точек, ас — функция стоимости, осуществляющая отображение с: F -у R1. Требуется найти точку f?F, для которой c(f)^.c(y) для всех у ?F. Такая точка / называется глобально оптимальным ре- решением для данной индивидуальной задачи, или, когда не может возникнуть недоразумений, просто оптимальным решением. ? Во многих примерах функция стоимости будет принимать толь- только неотрицательные целочисленные значения. Определение 1.2. Задача оптимизации — это множество / ин- индивидуальных задач оптимизации. ? Мы четко различаем задачу и индивидуальную задачу. Если го- говорить неформально, то в индивидуальной задаче даны «входные данные» и имеется достаточно информации для получения решения, в то время как задача — это набор индивидуальных задач, обычно порождаемых одинаковым способом. Так, в следующем примере, если речь идет об индивидуальной задаче коммивояжера, то матрица рас- расстояний задана; если же мы говорим о задаче коммивояжера в це- целом, то имеется в виду набор всех индивидуальных задач, соответст- соответствующих всем матрицам расстояний. Пример 1.1 (задача коммивояжера (ЗК)). В индивидуальной ЗК даны целое число п>0 и расстояния между всеми парами из п го- городов в виде (пхп)-матрицы Ыц\, где da?Z+. Обход — это замк- замкнутый маршрут, проходящий через каждый город ровно один раз. Задача состоит в нахождении обхода с минимальной общей длиной. Можно взять /7={все циклические перестановки я из л объектов}. Циклическая перестановка п представляет собой обход, если ин- интерпретировать я (/) как город, посещаемый после города /, /=1, .. . ..., п. Тогда стоимость с отображает я в 27=ДЯ</)- П Пример 1.2 (минимальное остовное дерево (МОД)). Как и выше, даны целое число п>0 и симметричная (пХп)-матрица рас- расстояний [dtj], где du€Z+. Задача состоит в нахождении остовного дерева на п вершинах, имеющего наименьшую суммарную длину ребер. В соответствии с определением индивидуальной задачи опти- оптимизации положим ^ = {все остовные деревья (V, Е), где V = {1, 2, ..., п\\, с: (V, ?)— 2 dtJ.
1.2. Задачи оптимизации 13 (Под остовным деревом, понимается неориентированный, связный, ациклический граф (V, Е). См. приложение в конце главы.) ? Пример 1.3 (задача линейного программирования (ЛП)). Пусть т, п — положительные целые числа, Ь ? Zm, с ? Z" и Л есть Рис. 1.2. Допустимое множество F для индиви- индивидуальной задачи ЛП. (тХп)-матрица с элементами а.ц?1. Индивидуальная задача ЛП определяется следующим образом: F = \x: x?Rn, Ax = b, x^O}, с: х—+ с'х. Сформулированная таким образом задача линейного программи- программирования является непрерывной задачей оптимизации фактически с х2=0 -•1 Рис. 1.3. Три вершины и три остовных дерева на них, рассматриваемые как точки в 3-мерном пространстве.
14 Гл. 1. Задачи оптимизации несчетным числом допустимых точек x?F. Чтобы понять, почему ее можно все же считать комбинаторной по природе, рассмотрим про- простой пример с параметрами т=\, п=2> и А={\ 1 1), Ь = B). На рис. 1.2 показано допустимое множество F для данного примера, представляющее собой пере- xt сечение некоторой плоскости с первым октантом в R3. Задача состоит в отыска- отыскании минимального значения линейной функции с'х~сгхг-\- + с2х2+с3х3 на этом треуголь- треугольнике. Интуитивно понятно, что минимум всегда достигает- достигается в одном из углов t>i, vit vs, указанных на рисунке. Допу- Допустив это, мы решим задачу, найдя все вершины и вычис- вычислив с'х в каждой из них. Это может оказаться тяжелой за- задачей в большем примере, но главное, что она конечна. Именно в эгом смысле задача ЛП комбинаторна. ? Во многих случаях удается сделать обратное: выразить чисто комбинаторную задачу в виде задачи ЛП. Пример 1.3 (продолжение). Рассмотрим задачу МОД с п=3 точ- точками. На них имеются три остовных дерева, изображенные на рис. 1.3. Их можно считать окже точками в 3-мерном пространсгве, если положить Xj = 1, когда ребро е, содержится в рассматриваемом дереве, и х}=0 в противном случае (/ = 1, 2, 3). Тогда эти три остов- остовных дерева совпадают с вершинами vv, v2, vs допустимого множества F, показанного на рис. 1.4 и определяемого ограничениями Рис. 1.4. Допустимое множество F простой задачи об остовном дереве. для (В задаче ЛП будем допускать как равенства, так и неравенства.) Найти минимальное остовное дерево с матрицей расстояний d12=ca, d23=Ci и d3i=c2 — это в точности то же, что решить задачу ЛП с допустимым множеством, показанным на рис. 1.4. Таким образом, эту чисто комбинаторную задачу можно в прин- принципе решить с помощью ЛП. Такая точка зрения окажется очень полезной при разработке алгоритмов для некоторых комбинатор- комбинаторных задач. ?
1.3. Окрестности 15 1.3 Окрестности Если дана допустимая точка f?F в некоторой конкретной зада- задаче, то во многих случаях полезно определить множество М (J) точек, которые в некотором смысле «близки» к данной точке /. Определение 1.3. Пусть дана задача оптимизации с набором индивидуальных задач (F, с). Тогда система окрестностей (или ок- рестностная функция) — это отображение N: F -*¦ 2F, определен- определенное для каждой индивидуальной задачи. ? Рис. 1.5. а) Индивидуальная задача ЗК и неко- некоторый обход, б) Другой обход, получаемый 2-заменой из обхода на рис. а). Если F=R", то множество точек, лежащих в пределах фикси- фиксированного евклидова расстояния от данной точки, образует естест- естественную окрестность. Во многих комбинаторных задачах выбор N может существенно зависеть от структуры F. Пример 1.4 [Linl] В ЗК можно следующим образом оп- определить окрестностную функцию, называемую 2-заменой: N2(f) = {g: g?F и g можно получить из / удалением двух ребер из обхода и заменой их двумя ребрами}. На рис. 1.5 показан пример обхода / и другого обхода g? W2(/) для индивидуальной ЗК с семью городами и матрицей расстояний, определяемой евклидовым расстоянием между точками на пло- плоскости. Очевидным обобщением этой окрестностной функции является функция N\, называемая k-заменой, при которой заменяются не бо- более k связей. Такие окрестностные функции приводят к очень эф- эффективным эвристикам для ЗК- Q
16 Гл. 1. Задачи оптимизации Пример 1.5. В МОД важная система окрестностей опре- определяется следующим образом: W(/) = {g: g ? F и g можно получить из / следующим образом: добавляем ребро е к дереву /, при этом обра- образуется цикл; затем удаляем любое ребро из этого цикла}. ? Пример 1.6. В задаче ЛП можно определить систему окрест- окрестностей следующим образом: Nt(x) = \y: Ay = b, у^О и \\у— лг|<е}. Это просто множество всех допустимых точек в пределах евклидова расстояния е от х для некоторого е>0. ? 1.4 Локальные и глобальные оптимумы Для некоторых индивидуальных задач может оказаться исклю- исключительно трудно найти глобально оптимальное решение. Однако часто удается найти решение /, наилучшее в том смысле, что в его окрестности N (/) ничего лучшего нет. Определение 1.4. Пусть дана индивидуальная задача оптими- оптимизации (F, с) и система окрестностей /V, тогда допустимое решение /? F называется локально оптимальным относительно N (или просто локально оптимальным, когда N очевидно из контекста), если c(/)<c(g) Для всех g?N(f). ? Пример 1.7. Рассмотрим индивидуальную задачу оптимизации (F, с), в которой F=[0, l]^R* и функция стоимости с показана на рис. 1.6. Пусть, далее, система окрестностей определяется близо- близостью в евклидовой метрике для некоторого е>0, т. е. Ne(f) = \x: x?F и \х—/|<е}. Тогда, если е достаточно мало, все точки Л, В и С будут локально оптимальными, и только В глобально оптимальна. ? Пример 1.8. Решения ЗК, локально оптимальные относительно системы окрестностей Nh, порожденной ^-заменами, называются k-оптимальными [Linl]. Для нахождения ^-оптимального обхода в индивидуальной ЗК следующим образом определим функцию improve^), где t? F: ( любое s^Nk (t), такое, что с (s) <c (t), improve (t) = ¦{ если такое s существует, («нет» в противном случае. Таким образом, imporove(Z) ищет более хороший обход s в Nh(f). Если таковой находится, она выдает улучшенный обход; в против-
1.4. Локальные и глобальные иптимумы 17 ном случае она выдает значение «нет». Алгоритм для нахождения ^-оптимального обхода будет тогда иметь вид 1) procedure k-opt begin t. = некоторый начальный обход; while improve(t) ф «нет» do t: = improve(t); return t end Так как обычно нас интересует- нахождение глобального опти- оптимума, а многие алгоритмы способны найти лишь локальный опти- оптимум, то важно знать, является ли некоторый локальный оптимум F Рис. 1.6. Одномерная евклидова задача 2-оп- тимизацин. глобальным. Разумеется, это зависит от системы окрестностей N. Следующий термин отражает то благоприятное стечение обстоя- обстоятельств, когда каждый локальный оптимум еще и глобальный. Определение 1.5. Пусть дана задача оптимизации с до- допустимым множеством F и системой окрестностей N. Если любая точка f?F, локально оптимальная относительно N, будет глобально оптимальной, мы говорим, что система окрестностей /V является точной. ? Пример 1.9. На рис. 1.6 система окрестностей Ne точная, если е^1, но она не будет точной для достаточно малых е>0. ? Пример 1.10. В ЗК N2 не будет точной, а Nп, где п — число городов, точная (см. задачу 2). ? Пример 1.11. В МОД система окрестностей, описанная в при- примере 1.5, точная (см. задачу 3). ? 1) Алгоритмы записаны в неформальной нотации, называемой Алголом. См. приложение в конце главы.
18 Гл. 1. Задачи оптимизации 1.5 Выпуклые множества и функции Сосредоточим теперь внимание на классе задач, в которых F<=R". В частности, хотелось бы найти классы задач, в которых окрестност- ная функция Ne точная для любого е>0, так как в таких задачах любой найденный локальный оптимум обязательно будет глобаль- глобальным. Таким свойством обладает класс задач выпуклого программи- программирования, среди которых задача линейного программирования — частный случай. Начнем с ряда важных определений. Определение 1.6. Пусть даны две точки х, y?R"; тогда их выпуклой комбинацией будет любая точка вида г=Хх+(\— Х)у, %?Rl и 0<^<1. Если ЪфО, 1, будем говорить, что г есть строгая выпуклая комби- комбинация хну. ? Определение 1.7. Множество S<=Rn выпукло, если оно содержит все выпуклые комбинации пар точек х, y?S. П Пример 1.12. Множество R" выпукло, равно как и пустое множество 0 и любое одноточечное множество. ? Рис. 1.7. Выпуклое множество А и невыпуклое множество В. Пример 1.13. В R1 любой интервал — выпуклое множество и любое выпуклое множество есть интервал. ? Пример 1.М. В R2 выпуклое множеств') — это, грубо говоря, множество без вырезов. Таким образом, множество А на рис. 1.7 выпукло, а В не выпукло. ? Важное свойство выпуклых множеств выражено в следующей лемме. Лемма 1.1. Пересечение любого числа выпуклых множеств St вы- выпукло. Доказательство. Если х и у — точки из П St, то они принадле- принадлежат каждому S;. Тогда любая их выпуклая комбинация принадле- принадлежит каждому St и, следовательно, П St. Q
/.5. Выпуклые множества и функции 19 Введем теперь понятие выпуклой функции, определенной на выпуклом множестве. Определение 1.8. Пусть 5 s R"— выпуклое множество. Функция с: S -> R1 выпукла на S, если для любых двух точек х, у ? S с (hs+ A —%)<Ас(х)+ A —к)с (у), %?RX Если S=Rn, будем просто говорить, что с выпукла. ? Пример 1.15. Любая линейная функция выпукла на любом выпуклом множестве S. ? Пример 1.16. Грубо говоря, выпуклая функция «изгибается вверх». На рис 1.8 показана выпуклая функция с на [0, Us/?*, с (О (\-\)у) О х " у \ х \х + A -\)у Рис. 1.8. Функция с, выпуклая на [0, 1]. где с: [О, I]-»-/?1. Из условия выпуклости вытекает, что хорды всегда лежат выше этой функции. ? Множество точек, в которых выпуклая функция меньше данного значения или равна ему, выпукло. Более точно, справедливо сле- следующее утверждение. Лемма 1.2. Пусть с(х) — выпуклая функция на выпуклом множе- множестве S. Тогда для любого действительного числа t есть выпуклое множество. Доказательство. Пусть хну — точки из 5;. Тогда их выпуклая комбинация Л-лг—f- A—i)y принадлежит S и с(кх+ A—%)<Хс(л:)+ A— k)c(y)<0.t+(l— tyts^t, откуда следует, что выпуклая комбинация ^л:+A—Цу также при- принадлежит St. ?
20 Гл. 1. Задачи оптимизации Пример 1.17. Когда функция с определена на R~, границы мно- множеств Si представляют собой линии уровней, подобные тем, которые чертятся на топографических картах (см. рис. 1.9). ? Наконец, функции, в некотором смысле противоположные вы- выпуклым функциям, называются вогнутыми. определенной на уровней выпуклой функции, Определение 1.9. Функция с, определенная на выпуклом множест- множестве 5s/?", называется вогнутой, если функция —с выпукла на 5. ? Пример 1.18. Каждая линейная функция является как выпук- выпуклой, так и вогнутой. Грубо говоря, линейная функция не изгиба- изгибается ни вниз, ни вверх и проходит, таким образом, по границе меж- между выпуклостью и вогнутостью. ? 1.6 Задачи выпуклого программирования Важный класс задач оптимизации связан с минимизацией вы- выпуклой функции на выпуклом множестве. Эти задачи обладают тем удобным свойством (упомянутым выше), что их локальный оптимум есть оптимум глобальный. Точнее говоря, верна Теорема 1.1. Рассмотрим индивидуальную задачу оптимизации (F, с), где Fs/?" — выпуклое множество и с — выпуклая функция. Тогда система окрестностей, определяемая евклидовым расстоянием, Ne(x) = {y: y?F и ||л:— точная для любого е>0.
1.6. Задачи выпуклого программирования 21 Доказательство. Обратимся к рис. 1.10. Пусть х— локальный оптимум относительно NE для произвольного фиксированного О>0 и пусть у € F — любая другая допустимая точка, не обязатель- Рис. 1.10. Точки, участвующие в доказательстве теоремы 1.1. Рис. 1.10. Т теоремы 1.1 но из Ne(x). Мы всегда можем выбрать к достаточно близким к 1 так, чтобы строгая выпуклая комбинация принадлежала окрестности Ne(x). Вычисляя функцию стоимости с в этой точке, получаем в силу выпуклости с с{г)=с (кх+ A —к)у) !0,с {х)+{\ —к)с (у). Отсюда )—Хс(х)]/(\-к). Но с(г)^с(х), так как z?NE(x), поэтому с(у)^[с{х)~%с{х)]/(\—К)=с(х). Отметим, что не делалось никаких дополнительных предположений о функции с. Она, например, не обязана быть дифференцируе- дифференцируемой. ? В дальнейшем выпуклая допустимая область будет всегда зада- задаваться множеством неравенств, содержащих вогнутые функции. За- Задачи такого типа принято называть задачами выпуклого программи- программирования. Определение 1.10. Индивидуальная задача оптимизации (F, с) называется задачей выпуклого программирования, если с — выпук- выпуклая функция hFs/?" определяется неравенствами gt (x)^0, i=\, ... . . ., т, где go R" -> R1 суть вогнутые функции. ? Нетрудно видеть, что определяемое таким образом множество является на самом деле выпуклым. Лемма 1.3. Допустимое множество F в задаче выпуклого програм- программирования является выпуклым.
22 Гл. 1. Задачи оптимизации Доказательство. Функции —gt выпуклы, поэтому по лемме 1.2 множества Ft = {x: gi(x)^0} выпуклые. Следовательно, согласно лемме 1.1, множество F= Л ILi Ft также выпукло. ? В результате доказана Теорема 1.2. В произвольной задаче выпуклого программирования любая точка, локально оптимальная относительно системы окрест- окрестностей NE, определяемой евклидовым расстоянием, является также глобально оптимальной. Пример 1.19. Как показано на рис. 1.11, выпуклая функция с(х), определенная на [0, Us/?1, может иметь много локальных оп- гимумов, но все они должны быть глобальными. ? о I х Рис. 1.11. Задача выпуклого программирования с многими локальными оптимумами, которые все глобально оптимальны. Пример 1.20. Любая индивидуальная задача ЛП представляет собой задачу выпуклого программирования, поскольку линейные функции и выпуклые, и вогнутые. Таким образом, локальный оп- оптимум в произвольной индивидуальной задаче ЛП должен также быть глобальным оптимумом. П Задачи') 1. Сформулируйте следующие задачи как индивидуальные задачи оптими- оптимизации, определяя в каждом случае область допустимых решений F и функцию стоимости с. (а) Найти кратчайший путь между двумя вершинами графа, в котором рас- расстояния представлены весами ребер. (б) Решить задачу о Ханойской башне. Имеются гри алмазных стержня и 64 золотых диска возрастающего диаметра. В центре дисков сделаны отверстия, так что их можно нанизывать на стержни. Вначале все диски находятся на первом стержне, причем сверху — самый маленький, под ним больший по величине и так далее, в самом низу лежит самый большой диск. Разрешается переносить верхний диск с любого стержня на любой другой, при этом никакой диск нельзя класть на 1) Всюду в этой книге звездочкой отмечены относительно трудные задачи.
Задачи 23 диск меньшего размера. Требуется путем последовательности разрешенных пере- перекладываний перенести все диски с первого стержня на второй. (Говорят, что, когда задание будет выполнено, наступит конец света [Кг], и это, пожалуй, до- довольно оптимистический прогноз.) Обобщить на п золотых дисков. (в) Выиграть партию в шахматы. Сколько индивидуальных задач в этой задаче? (г) Найти цилиндр наибольшего объема V с данной площадью поверхно- поверхности А. (д) Найти замкнутую плоскую кривую данного периметра, ограничивающую наибольшую площадь. 2*. Приведите пример, показывающий, что 2-замена не определяет точную систему окрестностей для ЗК. То же самое для 3-замены и (и—3)-замены, где п — число городов. 3*. Покажите, что система окрестностей, определенная в примере 1.5 для МОД, точная. 4. Задача о моменте состоит в нахождении перестановки я из п весов Wj, i=l, ... , п, такой, что момент 2?-=i K0jui>=niin. Покажите, что система окрест- окрестностей, определяемая всевозможными перестановками двух соседних весов, точная. 5. Какова мощность окрестности Л'2(/) обхода t, определяемой 2-заменой, в ЗК с я городами? Какова мощность Na(iO 6. Предположим, что нам дано множество S, содержащее 2п целых чисел, н мы хотим разбить его на два множества, Бл и S2, так, чтобы выполнялось условие |S]|=|52l=n и суммы чисел в S, и S2 отличались как можно меньше друг от друга. Пусть система окрестностей Л' определяется всевозможными перестанов- перестановками двух целых чисел, при которых одно число переходит из S^ в S2, а второе — из S2 в 5,. Является ли N точной? 7. Является ли произведение двух выпуклых функций выпуклой функцией? Если да, докажите, если нет, приведите контрпример. 8. Пусть/(х) выпукла на R". Будет ли f(x+b), где Ь — константа, выпуклой иа /?"? 9. Пусть f(x) выпукла на R". Зафиксируем х2 хп и рассмотрим функцию g(x1)=f(x1, ... , хп). Будет ли g выпуклой на R1? 10. Пусть f(x/) — выпуклая функция одной переменной х/. Тогда ?(*)= —f(xi) можно также рассматривать как функцию переменной x(ZR". Будет ли g(x) выпуклой на /?"? П. Покажите, что сумма двух выпуклых функций является выпуклой функцией. 12. Оправдайте включение целочисленного линейного программирования в класс задач нелинейного программирования на рис. 1.1. 13. Следующий критерий очень полезен для проверки выпуклости функции [SW, т. 1, с. 152]: Пусть С — открытое выпуклое множество в R" и пусть функция / обладает непрерывными вторыми частными производными в С. Тогда / выпукла на С в том и только в том случае, если матрица вторых частных производных Н (х) = = [d2f/dxidxj]tj положительно полуопределена для всех х из С Определите, выпуклы ли следующие функции в указами! N областях: (а) f=xlX2, C=^2; (б) f=ex' + x\ C=R2; (в) j= (г) /=*з+л|, C={x?R2: x>0}; (д) /= tg х,, C={Xl: 0<*,<l}. 14. Рассмотрите задачу нелинейного программирования min /= ххх2 при условии g = (*j— 1J + (х2— 1J= 1. Найдите все глобальные и локальные минимумы.
24 Гл. 1. Задачи оптимизации 15*. Сформулируйте задачу о минимальном остовном дереве для графа с п вершинами в виде задачи линейного программирования с (") переменными (по одной для каждого ребра), обобщив тем самым пример 1.3. (Указание: это может потребовать много ограничений.) Комментарии и ссылки Дальнейшее обсуждение задач нелинейного программирования и условий оптимальности можно найти в [FM] Fiacco А. V., McCormick G. P. Nonlinear Programming: Sequential Uncon- Unconstrained Minimization Techniques. New York: John Wiley & Sons, Inc., 1968. [Hadl] Hadley Q. Nonlinear and Dynamic Programming. Reading, Mass.: Addison- Wesley Publishing Co., Inc., 1964. [Имеется перевод: Хедли Дж. Нелиней- Нелинейное и динамическое программирование.—М.: Мир, 1967.] > [Ао] Aoki M. Introduction to Optimization Techniques. New York: Macmillan, Inc., 1971. [Имеется перевод: Аоки М. Введение в методы оптимизации.— М.: Наука, 1977.] [SW] Stoer J., Witzgall С. Convexity and Optimization in Finite Dimensions. Berlin: Springer-Verlag, 1970. Идея окрестностей относительно ^-замены для ЗК содержится в [Linl] Lin S. Computer Solutions to the Traveling Salesman Problem, BSTJ, 44, No. 10 A965), 2245—2269. Происхождение задачи о Ханойской башне (задача 1) описано в [Кг] Kraitchik M. Mathematical Recreations. New York: W. W. Norton and Co., 1942. Приложение Терминология и обозначения П.1 Линейная алгебра Через R (или иногда R1) обозначается действительная прямая и через Rn обозначается п-мерное действительное векторное пространство, т. е. мно- множество упорядоченных наборов из п действительных чисел. Другие фикси- фиксированные множества—это множество R+ неотрицательных действительных чисел, множество Z целых чисел, множество Z+ неотрицательных целых чисел и множество Z" упорядоченных наборов из п целых чисел. Множество элементов sb s2, s3, ... записывается в виде S = {sb s2, s3, ...}, и множество, содержащее все элементы х, удовлетворяющие условию Р, задается выражением S = {x: P(x)}. Например, Z+ можно определить следую- следующим образом: Z+ = {i: i?Z и fe^O}. Мощность конечного множества S обозначается \S\. Отображение ц из множества S в множество Г записывается в виде ц: S^>-Tt и 2s обозначает множество всех подмножеств S. Матрица размера тХп, в которой на пересечении строки i и столбца / стоит элемент atj, записывается в виде А = [а^]. Вектор длины п, сов- совпадающий с 1-й строкой матрицы А, обозначается через а,-, а вектор длины т, являющийся /-м столбцом А, обозначается А/. Буквой х (без штриха)
Приложение. Терминология и обозначения 25 обозначаются вектор-столбцы, буквой х' (со штрихом) — вектор-строки. Таким образом, матричное уравнение Ах = Ь эквивалентно множеству скаляр- скалярных уравнений а'.х =6,-, (=1 т, где Ь — вектор длины т и Ь;—скалярная величина, являющаяся <-й компо- компонентой вектора Ь. Матрица, транспонированная по отношению к матрице А, записывается как АТ, и определитель квадратной матрицы обозначается через det(A). Через / обозначается единичная квадратная матрица, размерность кото- которой обычно ясна из контекста. Она определяется следующим образом: 1, если ( = /, 3 в противном случае. Аналогично, 0 обозначает нулевой скаляр, нулевой вектор или нулевую матрицу в зависимости от контекста. Для задания вектора х длины п, (-я компонента которого равна х;, исполь- используется выражение x = col(.r1, ..., хп), или, когда это не может вызвать недо- недоразумений, x=(xi хп,). Вектор 2 длины п-\-т, в котором первые п ком- компонент совпадают с компонентами вектора х, а последующие т компонент совпадают с компонентами вектора у, задается выражением г=(х\у). П.2 Теория графов Графом G называется пара G = (V, E), где V — произвольное конечное множество вершин и элементами множества Е являются подмножества мно- множества V мощности 2, называемые ребрами. Вершины множества V обычно обозначаются vlt t>2)... . Например, на рис. П. 1 изображен граф G = ({Vlt t>2, V3, V4), {\VU Vt], [t>2, V3], [!'.,, V4], [tL, Vt], [vlt (Заметим, что для обозначения ребер используются квадратные скобки.) Иногда полезно рассматривать мультиграфы, т. е. графы с кратными ребрами (рис. П. 2). Ориентированным графом, или орграфом, называется граф, в котором каждому ребру приписано направление. Формально орграфом D называется пара D = (V, А), где снова V — произвольное множество вершин и А — мно- множество упорядоченных пар вершин, называемых дугами, т. е. Ag^VxV. На рис. П. 3 изображен орграф 0=-({tii, иг> уз> }, {(Щ, иг), (иг< из)> (И4. "s). (, ), (&i, vt), (vf, t).,)}). Если G = (V, E) — некоторый граф и e=[vu иг](?Е, то мы говорим, что вершина fj смежна с иг (и наоборот) и что е инцидентно vt и v2. Степенью вершины v графа G называется число ребер, инцидентных и. Таким образом, в графе на рис. П. 1 степень вершины vt равна 3. Маршрутом в G назы- называется последовательность вершин w=[vu v2, v3 vk], k^l, такая, что [vj, vj+l] ? ? при /=1 k — \. Маршрут замкнут, если *>1 и i1/^^. Маршрут без повторяющихся вершин называется цепью, или путем; замкнутый маршрут, в котором никакие вершины, кроме первой и последней, не повторяются, называется циклом. Например в графе на рис. П.1 [oj, [оь Vi,v3, vi,vt, oj], [?ib vit vs, vt] и [ог,и3.и4] все суть маршруты; второй и тре- третий замкнуты, первый и четвертый являются цепями, и третий является циклом. Длина цепи \vlt ..., v^] равна k— I, длина цикла [vly ..., f^ = oj] равна k— 1. Степенью вахода вершины v в орграфе D = (V, А) называется число дуг вида (и, и), содержащихся в А; аналогично, степенью исхода вершины v называется число дуг в А вида (v, и). Можно легко расширить данные выше определения на орграфы. Последовательность w=(v1, v2, ..., v^) вершин из V нагывается
26 Гл. 1, Задачи оптимизации ориентированным маршрутом в G, если (vj, uj+l)(~A при /=1 k — 1. Кроме того, если /г>1 и yft=ub то маршрут w является замкнутым. Ориен- Ориентированной цепью в G называется маршрут без повторений. Замкнутая ориен- ориентированная цепь называется ориентированным циклом. Длина ориентированной Рис. П.1. Граф. Рис. П.2. Мультиграф. Рис. П.З. Орграф. цепи, или цикла, определяется аналогично неориентированному случаю. (Заме- (Заметим, что мы всегда используем квадратные скобки для ребер графа и круглые скобки для дуг орграфа.) Пусть в = (№, Е)~граф, обладающий следующим свойством. Множество вершин W можно разбить па два множества, V и U, гак, что каждое ребро Рис. П.4. Двудольный граф. О 6- -о о о 6 О о Рио. П.5. Дерево. Рио. П.6. Лес из Е будет иметь одну вершину в V и одну вершину в U (рис. П. 4). В этом случае В называется двудольным графом и обычно записывается в виде B = (V, U,E). Не все графы обладают таким разбиением. Следующее предложе- предложение дает критерий для существования такого разбиения. Предложение 1. Граф является двудольным тогда и только тогда, когда он не содержит циклов нечетной длины. Другим интересным классом графов является класа деревьев. Граф назы- называется связным, если между любыми двумя вершинами в нем имеется цепь.
Приложение. Терминология и обозначения 27 Дерево G=(V, T) — это связный граф без циклов. Пример дерева показан на рис. П. 5. Лес — это множество вершинно не пересекающихся деревьев F= ={(Vi- T\) (^ft. Tk)} (рис. П. 6). Мы часто будем говорить, что дерево (V, Т) стягивает множество его вершин V или что оно является остовным деревом на V. Аналогично, лес F = {(Vi, Tj), ..., (Vft, Tk)} стягивает Vi(JVsll • •• Предложение 2. Пусть G = (V, ?) —некоторый граф. Тогда следующие условия эквивалентны. 1. G является деревом. 2. G—свизный граф с | V f — 1 ребрами. 3. G не содержит циклов, но при добавлении произвольного ребра к G в нем появляется единственный цикл. Мы будем часто рассматривать взвешенные графы, т. е. графы G = (V, Е) вместе с функцией w из Е в Z (обычно только Z+; иногда вместо Z может (u,v) /(«, v) Рис. П.7. Сеть. 0,«.) (*, Vl) (v\,vj) (vi, г»з) (t»2. «¦) Ы,') (V3, ') 3 2 3 . 1 1 1 4 Рис. П.8. Поток величины 5 для се- сети, изображенной на рис. П.7. быть R + , например, если веса представляют евклидовы расстояния). В оп- определенных случаях будут использоваться более мнемонические обозначения для весов, такие, как с (для стоимостей) или d (для расстояний)'). Мы будем обозначать вес ребра [и, и] через w [и, v] или wav. Отметим, что симметрич- симметричную матрицу расстояний [d,-y] размера пу,п (вспомните примеры 1,1 и 1.2) можно также рассматривать как взвешенный полный граф G = ({t»i, ..., vn), К„) где Kn = {\vu vj]: I «?i < /<n}. Сеть N = (s, t, V, A, b)—это орграф (V, А), в котором выделены исток s?V со степенью захода 0 и сток t^V со степенью исхода 0 и для каждой дуги (и, v)?A задана граница (или пропускная способность) b(u, v)?Z+ (рис. П. 7). Потоком f в N называется вектор в R\A\ (по одной компоненте f(u,v) для каждой дуги (и, v)?A), такой, что 1. О </(", v) < b (и, v) для всех (и, v)?A; 2. 2 /(«.у) = 2 f(v,u) для всех v?V — {s, t]. (и, v)eA (и, и)еА Величина потока /, иногда обозначаемая через |/|, определяется следующей формулой: |/| = 2(s, u)sa I (s, и). Например, на рис. П. 8 изображен правиль- правильный поток для сети N, величина которого |/| = 5. Сокращения от английских слов cost и distance. — Прим. перев.
28 Гл. 1. Задачи оптимизации П.З Упрощенный Алгол х) Большинство алгоритмов в данной книге мы будем выражать посредством нашей версии Упрощенного Алгола. Читатели, знакомые с языками Паскаль, Алгол или ПЛ/1, смогут легко понять алгоритмы на этом языке. Для осталь- остальных на первых порах достаточно ознакомиться с данным параграфом и проявить усердие. Упрощенный Алгол надо рассматривать скорее как неформальную запись, нежели язык программирования высокого уровня. Основной единицей алгоритмов в Упрощенном Алголе является оператор. Операторы бывают нескольких типов. 1. Оператор присваивания: переменная: = выражение Мы допускаем запись вида Q: = {s} и даже такие варианты, как пусть х любой элемент из S [_ или присвоить всем меткам значение О 2. Условный оператор: if условие then оператор 1 else оператор 2 Часть «else оператор 2» не обязательна (мы будем использовать это таким образом, чтобы не возникало двусмысленности). Типичными условиями являются х > граница u = s and результат = «да» (Замечание: резервированные слова Упрощенного Алгола мы выделяем жирным шрифтом.) 3. Оператор for: for список do оператор 1 Здесь список содержит список параметров, для которых оператор 1 должен выполняться. Примеры: for /: = 1, 2, ... п do A[j]:^= for все о ? V, такие, что [v, u\ g E do rank [o]: = 0 4. Оператор while: while условие do оператор 1 Оператор 1 выполняется многократно до тех пор, пока выполняется условие. 5. Оператор перехода: go to метка Например, go to цикл означает, что следующим должен выполняться (единственный) оператор, начинающийся о метки «цикл». 6. Блок: be^in оператор 1; оператор 2; оператор k — 1; оператор k end Как правило, те, кто впервые столкнулся с языками типа Алгол, рассматри- рассматривают последний оператор как какую-то хитрость, однако на самом деле все очень просто. Напомним, что в условном операторе после then должен стоять единственный оператор. Но как быть, если мы хотим сделать что-нибудь Х) Термин Упрощенный Алгол введен в книге: Дхо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов.—M.i Мир, 1979,
Приложение. Терминология и обозначения 29 сложное (т, е, несколько операторов), если выполняется условие? В таком случае эти операторы ставятся подряд, разделяются точкой с запятой и ограничиваются в начале и конце парой begin — end. Чтобы облегчить чтение, соответствующим образом делаются абзацы. Помните, что все операторы от оператора 1 до оператора k могут быть операторами любого типа, от 1 до 6. Если все они являются операторами присваивания или перехода, то мы иногда будем писать блок без begin —end, разделяя опера- операторы запятыми. Например, /:=/+!, A[j]: = i, go to цикл обозначает то же, что begin go (о цикл; end 7. Комментарии: эти операторы имеют вид (comment: это комментарий). 8. Разнообразные операторы: мы будем допускать практически все, что читаемо и недвусмысленно. Например: построить вспомогательную сеть AN(f); увеличить текущее паросочетание, используя цепь р.
2 Симплекс-алгоритм 2.1 Формы задачи линейного программирования Определенная в предыдущей главе задача линейного програм- программирования была поставлена не в самом общем виде. В ограниче- ограничениях наряду с равенствами можно было бы допустить и некоторые неравенства и рассматривать наряду с переменными, которые долж- должны быть неотрицательны, переменные без ограничений н^знаки. Оп- Определим теперь задачу линейного программирования в наиболее общем виде. Определение 2.1. Пусть даны целочисленная (/пх/г)-матрица А со строками a'i, M — множество индексов строк, соответствующих ограничениям в виде равенств, и М — множество индексов строк, соответствующих ограничениям в виде неравенств. Аналогично, пусть даны x?Rn, N — множество индексов, соответствующих ограниченным переменным, и /V — множество индексов, соответст- соответствующих неограниченным переменным. Тогда индивидуальная об- общая задача ЛП определяется следующим образом: B.1) где bViC — целочисленные векторы длины соответственно/п и п. ? Пример 2.1 (задача о диете). Задача о диете [Sti] одной из первых была сформулирована в виде задачи ЛП. Рассмотрим задачу, с ко- которой сталкивается домохозяйка, покупая продукты. В ее распоря- распоряжении имеется п названий продуктов, и каждый продукт содержит некоторое количество каждого из т питательных веществ. Пусть atj— количество г'-го питательного вещества в единице /-го про- продукта, ( = 1, . . ., т, /=1, . . ., п, rt —ежегодная потребность в г-м питательном веществе, 1 = 1, . . ., т, Xj —ежегодное потребление/-го продукта в единицах, j~l, . .. ¦ ¦ ., п, С) —стоимость единицы /-го продукта, /=!,..., п. min ex a'(x a'tx X, xi = ь„ >bh ^°. §0, I i i i € 6 6 M, M, N, /V,
2.1. Формы задачи линейного программирования 31 Диета на год определяется выбором вектора х^О. То, что диета удов- удовлетворяет минимальным потребностям в питательных веществах, выражается неравенством Ах^г. Для того чтобы найти диету наи- наименьшей стоимости, удовлетворяющую потребности в питательных веществах, нужно рассмотреть следующую задачу ЛП: min c'x, , B.2) Форма задачи ЛП, полученная в задаче о диете, и форма, при- приведенная в гл. 1, являются достаточно общими и заслуживают спе- специальных названий. Будем ипользовать следующую терминоло- терминологию. Определение 2.2. Задача вида B.2) называется задачей ЛП в канонической форме. Задача вида B.3) min g'x, Ax = b, B.3) называется задачей ЛП в стандартной форме. Наконец, задача ви- вида B.1) называется задачей ЛП в общей форме. ? Докажем, что все формы: каноническая, стандартная и общая, эквивалентны. Под этим мы понимаем то, что индивидуальную зада- задачу в одноиформе легко преобразовать в некоторую индивидуальную задачу в другой форме таким образом, что обе индивидуальные за- задачи будут иметь одно и то же решение. Каноническая и стандарт- стандартная формы представляют собой частные случаи общей формы, по- поэтому нужно только показать, что задачу в общей форме можно сфор- сформулировать в канонической и стандартной формах. 1. Чтобы задачу перевести из общей формы в каноническую, не- необходимо исключить все ограничения в виде равенств и неограничен- неограниченные переменные. Если в задаче ЛП в общей форме имеется ограниче- ограничение в виде равенства а 2 a,,x,=*btt то его можно заменить двумя ограничениями в виде неравенств п 2 attx, > bt, is I 2 (-at/) xf ^ (- b,). Если в задаче ЛП в общей форме имеется неограниченная перемен- переменная
32 Гл. 2. Симплекс-алгоритм то в задаче ЛП в канонической форме можно ввести две переменные xj и xj и записать xf = xi — xj, где xf^O, xj^O. 2. Чтобы задачу перевести из общей формы в стандартную, нуж- нужно исключить ограничения в виде неравенств; неограниченные пе- переменные можно исключить так же, как выше. Если в задаче ЛП в общей форме имеется ограничение в виде неравенства п 2 а{/х, > i то в канонической задаче введем переменную st и запишем п 2 al/xf—sl l, ,> i= i Переменная slt введенная при этом преобразовании, называется пе- переменной избытка; она показывает, насколько левая часть неравен- неравенства превышает правую часть. Если при формулировке задачи ЛП мы получаем неравенство вида то можно ввести переменную S; и записать п 2 atlx,+ ч,- = Ь[, s,>0. /= i Такая переменная называется переменной недостатка. 2.2 Базисные допустимые решения Теперь перед нами стоит цель — разработать симплекс-алго- симплекс-алгоритм для решения задачи ЛП. При этом удобно считать, что дана задача ЛП в стандартной форме min с'х, Ах — Ь, (А — целочисленная (тхп)-матрица и m<n), что, согласно результатам предыдущего параграфа, не приводит к потере общности. Рассматривая пример 1.3, мы интуитивно убедились, что всегда должен существовать оптимальный «угол» в выпуклом допустимом множестве F задачи ЛП. Есть два способа точного определения та- таких «углов» — один геометрический и один алгебраический. Для то-
I 2.2. Базисные допустимые решения 33 го чтобы дать алгебраическое определение, необходимо следующее предположение, которое, как мы увидим позднее, практически не ограничивает задачу. Предположение 2.1. В матрице А имеется т линейно независи- независимых столбцов Aj, т. е. ранг А равен т. Определение 2.3. Базисом матрицы А называется набор линейно независимых столбцов .©— {Ajl , . . ., Ajm}. Можно также рассмат- рассматривать S3 как невырожденную (тХт)-матрицу B=[Aj. ]. Базис- Базисным решением, соответствующим S, называется вектор x?Rn, в котором xf = 0 при Aj^ffl, Xj есть k-я компонента вектора В~гЬ, где k=l, ..., т. ? Таким образом, базисное решение х можно найти с помощью сле- следующей процедуры. 1. Выбрать множество ?В линейно независимых столбцов в мат- матрице А. 2. Положить все компоненты вектора х, соответствующие столб- столбцам, не входящим в !В, равными 0. 3. Решить т полученных уравнений для определения оставших- оставшихся компонент вектора х. Они будут называться базисными пе- переменными. Пример 2.2. Рассмотрим задачу ЛП min 2x2+ х4 + Ьх7, *i+ х3 + ха + х4 —4, Ч -М6 =2, Ч + х, = 3, Одним базисом здесь, естественно, является базис 33= {Л4, Аъ, АЛ, /1,}, который соответствует матрице В=1. Соответствующее базис- базисное решение имеет вид х=@, 0, 0, 4, 2, 3, 6). Другим базисом будет ®'= {^2, -4.5, At, Л,} с базисным решением х'= @, 4, 0, 0, 2, 3, —6). Заметим, что х' не является допустимым решением, так как *7<0. ? Можно найти верхнюю оценку абсолютной величины компонент любого базисного решения, используя наше предположение о том, что элементы матрицы А и векторов Ь и с суть целые числа. Лемма 2.1. Пусть х=(хи . . ., хп) — базисное решение. Тогда | х,|<т\а-1^, еде а = тах{|а,7|} и 0= max {\ЬА}. i, i 1=1, ..., т 2 № 3032
34 Гл. 2. Симплекс-алгоритм Доказательство. Утверждение справедливо для тех переменных Xj, которые не являются базисными, поскольку в этом случае Xj=0. Напомним, что базисная переменная Xj является суммой т произве- произведений элементов матрицы б на элементы вектора Ь. По определе- определению обратной матрицы каждый элемент матрицы В'1 равен опреде- определителю порядка (т—1)Х (т—1), деленному на отличный от нуля оп- определитель порядка тхт. Так как знаменатель — целое число, его абсолютная величина не меньше !. Определитель, стоящий в числи- числителе, есть сумма (т—1)! произведений т—1 элементов матри- матрицы А. Следовательно, его абсолютная величина не превосходит (т—1)! а. Поскольку каждое х, есть сумма т элементов матри- матрицы В'1, умноженных на элементы вектора Ь, то Эта оценка будет неоднократно использоваться в дальнейших рас- рассуждениях. Определение 2.4. Если базисное решение х лежит в F, то х на- называется базисным допустимым решением (бдр). ? Например, взадаче ЛП в примере 2.2 вектор х= (О, 0, 0, 4, 2, 3, 6) есть бдр. Базисные допустимые решения играют центральную роль как в теории, так и в вычислительной практике линейного програм- программирования. Один из аспектов их важности выражен в следующей лемме, утверждающей, что все базисные допустимые решения суть потенциальные однозначные оптимальные решения подходящей задачи ЛП. Лемма 2.2. Пусть х есть бдр задачи соответствующее базису 5$. Тогда существует вектор стоимости с, такой, что х является единственным оптимальным решением зада- задачи ЛП min c'x, л:>0. Доказательство. Определим вектор с следующим образом! 0, если Лу?.@, 1, если Aj^fB. Стоимость бдр х равна с'х=0. Очевидно, х — оптимальное решение, поскольку все с,- неотрицательны. Более того, если любое другое до- допустимое решение у также имеет нулевую стоимость, то в нем долж-
2.2. Базисные допустимые решения 35 но быть У]—0 для всех Лу(?йЗ. Следовательно, у должно совпадать с х, т. е. х — единственное оптимальное решение. ? Совсем не очевидно, однако, что любая задача ЛП обладает ба- базисными допустимыми решениями. Например, если /7=0, то, ес- естественно, не может быть бдр. Удобно, однако, пока исключить этот патологический случай. Позднее мы вернемся к нему и увидим, как можно убрать это предположение. Предположение 2.2. Множество F допустимых точек не. пусто. Теперь можно показать, что базисные допустимые решения обя- обязательно существуют. Теорема 2.1. При предположениях 2.1 и 2.2 существует по край- крайней мере одно бдр. Доказательство. Допустим, что F содержит решение х с t>m ненулевыми компонентами, и пусть х — решение из F с наибольшим числом нулевых компонент. Не ограничивая общности, будем счи- считать, что Рассмотрим первые /столбцов матрицы А. Они, очевидно, удовле- удовлетворяют равенству . . .+Atxt=b. B.4) Пусть г — ранг матрицы, составленной из этих t столбцов. Тогда г>0, поскольку если г—0, то бдр х=0 лежит в F. Кроме того, r<cm<t. Можно считать, что матрица . . . а1г . . . а2, Ыпаг-2 . . . а невырожденна. Поэтому можно, решив систему уравнений 2.4, вы- выразить хи . . ., х, через хг+1, . . ., xt. Другими словами, i */ = Р/+ 2 а,у*,-. / = 1, ••'•- г. Положим 8=min {л:,.+1, Ох}, где 91= min {%-r-., i=\, .... г]. 2*
36 Гл. 2. Симплекс-алгоритм Зададим новое допустимое решение х следующим образом: ij—6, если j = r -f I, Cj, если / > г -J-1, 1,-f S «.-/Л;,-, если /</•-{-1. 1 = 74-1 ' Тогда Xj — Xj—a,-+i,yQ при /'^ г. Если Q — xr+i, то хг+1 = 0; если 8 = 8, =xk/ar+i< k для некоторого k^.r, то xfc = 0. В любом случае х—допустимое решение, в котором число нулевых компо- компонент на единицу больше, чем в х, и приходим к противоречию. Это рассуждение показывает, что найдется решение х с /<т не- ненулевыми компонентами и, более того, что соответствующие столб- столбцы можно считать линейно независимыми. Это множество столбцов можно затем расширить до базиса для х, поскольку ранг А равен т. ? Для удобства примем еще одно заключительное предположение, которое, как мы покажем в дальнейшем, также не является необхо- необходимым. Именно, будем считать, что рассматриваемая задача ЛП име- имеет конечное минимальное значение целевой функции с'х. Предположение 2.3. Множество действительных чисел {с'х- x?F} ограничено снизу. Но даже если стоимость с'х в задаче ЛП ограничена снизу, до- допустимое множество может простираться бесконечно в некоторых направлениях. В заключение этого параграфа покажем, что при предположении 2.3 можно тем не менее ограничиться задачами ли- линейного программирования с ограниченными допустимыми множест- множествами F. Более точно можно считать, что F лежит внутри достаточно большого гиперкуба. Теорема 2.2. Пусть для задачи ЛП min с'х, Ах = Ь, (ЛП) выполняются предположения 2.1—2.3. Тогда она эквивалентна (в том смысле, что обе задачи имеют одинаковое оптимальное значение функций стоимости) следующей задаче ЛП*: min с'х, Ах = Ь, , (ЛП*)
2.3. Геометрия задач линейного программирования 37 еде М = (т+\)\ат$, а = max {1^,1, |С/|}, P = max{|&,|, \г\\ иг — наибольшая нижняя грань множества {c'xi Ax*=b, л^О}. Доказательство. Рассмотрим множество действительных чисел Нетрудно показать, что G замкнуто (см. задачу 2.10). Поэтому су- существует точка х, допустимая для задачи ЛП, в которой достигается наибольшая нижняя грань г. Рассмотрим множество точек, удо- удовлетворяющих ограничениям с'х = г, Ах = Ь, B.5) Это множество не пусто и состоит из всех оптимальных допустимых решений задачи ЛП. Допустим сначала, что система уравнений в B.5) имеет ранг /л+1. Тогда из теоремы 2.1 следует, что для ограничений B.5) име- имеется бдр и по лемме 2.1 его компоненты удовлетворяют требуемым ограничениям. Следовательно, ограничения х<М не изменяют оп- оптимального решения задачи ЛП. Осталось рассмотреть случай, когда система уравнений в B.5) имеет ранг т. В этом случае с' можно представить в виде линейной комбинации "^dta'i строк матрицы Л, и стоимость c'x=^dibi постоян- постоянная для всех допустимых точек задачи ЛП. Следовательно, задача ЛП имеет оптимальное бдр, и его компоненты по лемме 2.1 ограниче- ограничены числом, не превосходящим М. П В соответствии с этим результатом будем далее считать, что F всегда ограничено. 2.3 Геометрия задач линейного программирования Приведем теперь некоторые важные определения и результаты, относящиеся к геометрическому способу представления задачи ЛП. 2.3.1. Линейные и аффинные пространства. Рассмотрим вектор- векторное пространство Rd. Производное подмножество 5 пространства Rd, замкнутое относительно операций сложения векторов и умноже- умножения вектора на скаляр, называется (линейным) подпространством. Подпространство S пространства Ra можно также определить как Иножество точек в Rd, удовлетворяющих системе однородных ли-
38 Гл. 2. Симплекс-алгоритм нейных уравнений: Л = О, /= 1, .... т\. B.6) Хорошо известно, что каждое подпространство S имеет размерность dim (S), равную максимальному числу линейно независимых век- векторов в нем. Эквивалентное определение дает формула dim(S)=d — — ранг ([ац]), где [ац] — матрица коэффициентов в B.6). Аффинное подпространство А пространства Rd — это линейное подпростран- подпространство S, сдвинутое на вектор и: А={и-\-х: x?S}. Размерность А та же, что и размерность S. Эквивалентным образом аффинное под- подпространство А пространства Rd можно определить как множество всех точек, удовлетворяющих системе (неоднородных) уравнений A = \x?Rd: aJ}x} + . .. -f a/dxd = b/; /=1 m). Размерность любого подмножества в Rd — это наименьшая размер- размерность аффинного подпространства, содержащего это подмножество. Например, любой отрезок имеет размерность 1; любое множество, состоящее из k точек, где &<d+l, имеет размерность самое большее k—1. Размерность множества F, определенного следующей задачей ЛП (удовлетворяющей предположениям 2.1 и 2.2): min c'x, Ах = Ь, А — матрица размера mxd, не превосходит, таким образом, d—m. 2.3.2. Выпуклые многогранники. Афинное подпространство про- пространства Rd размерности d—1 называется гиперплоскостью. Иначе гиперплоскость можно определить как множество точек х, удовлет- удовлетворяющих равенству 2+. . .+adxd=b, в котором не все а; равны 0. Гиперплоскость определяет два (замк- (замкнутых) полупространства, а именно множества точек, удовлетво- удовлетворяющих соответственно неравенствам Полупространство является выпуклым множеством. Следовательно, пересечение полупространства также выпукло. Пересечение конеч- конечного числа полупространств в том случае, если оно ограничено и не пусто, называется выпуклым многогранником, или просто многогран- многогранником. Мы будем далее интересоваться только выпуклыми многогран- многогранниками, которые заключены в неотрицательном октанте; другими словами, мы будем считать, что среди полупространств, опреде^
2.3. Геометрия задач линейного программирования ляющих многогранник, всегда есть d полупространств вида >0, /=1, . . ., d. Пример 2.3. Трехмерный многогранник Р на рис. 2.1 образован пересечением полупространств, задаваемых неравенствами B.7). B.7) (О, 1, 3) B,2,0) Рис. 2.1. 3-мерный многогранник из примера 2.3. Как и требовалось, Р ограничен, поскольку легко показать, что он полностью содержится в кубе 0<хи хг, лгэ<3. ? Пусть Р — выпуклый многогранник размерности d и HS — по- полупространство, определенное гиперплоскостью Н. Если пересече- лие f~Pf}HS Является подмножеством Н (другими словами, Р и
40 Гл. 2. Симплекс-алгоритм HS только «касаются своими внешностями»), то / называется гранью Р и Н называется опорной гиперплоскостью, определяющей f. Мы специально выделяем три типа граней. Гипергрань — грань размерности d—1. Вершина — грань размерности 0 (точка). Ребро—грань размерности 1 (отрезок). Пример 2.3 (продолжение). На рис. 2.2 показаны многогранник Р и три гиперплоскости Ни Н2 и Яэ, которые определяют соответ- соответственно три грани: гипергрань, ребро и вершину. ? ршина Ребро Рис. 2.2. Следующее замечание интуитивно довольно очевидно и его легко строго доказать [Gru, Roc, ЮГ]. Гиперплоскость, определяющая гипергрань, соответствует определяющему полупространству много- многогранника. Обратное утверждение не всегда верно: если мы добавим к полупространствам, определяющим Р, полупространство х2<2, то Р останется тем же самым. Однако новое полупространство не будет определять гипер грань (оно будет, однако, определять ребро —
2.3. Геометрия задач линейного программирования отрезок [@, 2, 0), B, 2, 0)]). Интуитивно ясно, что причина состоит в том, что условие х2<2 излишне в определении Р. Вершина — это «угол» многогранника, что мы уже использовали ранее с меньшей строгостью. Ребро — это всегда отрезок, соединяю- соединяющий две вершины. Не каждая пара вершин определяет ребро. На- Например, отрезки [@, 0, 3), B, 2, 0I и [A, 0, 3), B, 2, 0)J не являются ребрами. Другой интуитивно довольно очевидный факт, который, правда, труднее доказать, состоит в том, что каждая точка многогранника Р является выпуклой комбинацией его вершин; можно на самом деле показать, что всегда достаточно четырех вершин (d+1 вершин для размерности d). Например, точку A,1, 1), которая лежит внутри Р, можно представить в виде A, 1, 1) = A/2)B, 2, 0)+A/3)@, 0, 3)+ +A/6) @, 0, 0). Сформулируем теперь общую теорему. Теорема 2.3 [Gru, Roc, ЮГ], (а) Каждый выпуклый многогранник является выпуклой оболочкой его вершин. (б) Обратно, если V — конечное множество точек, то выпуклая оболочка множества V представляет собой выпуклый многогранник Р. Множество вершин многогранника Р является подмножеством множества V. 2.3.3. Многогранники и ЛИ. Согласно теореме 2.3, многогран- многогранник Р можно представлять несколькими различными способами: 1. Выпуклая оболочка конечного множества точек. Такой подход довольно удобен, когда даны лишь вершины многогранника, как, например, в гл. 13 и 19 при обсуждении некоторых комбинаторных задач. 2. Пересечение нескольких полупространств, при условии что это пересечение ограничено. Это естественный способ представления мно- многогранника в том случае, когда соответствующие неравенства заданы явно. Мы увидим далее, что именно такая ситуация имеет место в за- задачах ЛП. 3. Третий способ представления многогранника — это алгеб- алгебраическая версия способа 2. Пусть — уравнения и неравенства, определяющие допустимую область F некоторой задачи ЛП, удовлетворяющей предположениям 2.1, 2.2 и 2.3. Так как ранг А равен т, где А — матрица размера тхп, то можно считать, что уравнения Ах=Ь имеют вид п — т Xi-bj— 5 at/xf, i = n—m+\, ...,n, B.8') / = i Поскольку в противном случае можно найти базис В в А (без огра-
42 Гл. 2. Симплекс-алгоритм ничения общности можно считать, что это последние т строк в А) и, домножив B.8) на В, получить B.8'). Таким образом, условия B.8) эквивалентны системе неравенств /= 1, ..., n—m. Но неравенства B.9) описывают пересечение п полупространств, которое, согласно теореме 2.2, ограничено. Следовательно, B.9) опре- определяет выпуклый многогранник PsRn~m. Обратно, пусть Р — многогранник в Rn~m. Тогда п полупро- полупространств, определяющих Р, могут быть выражены неравенствами < О, i=l,...,n. B.10) Учитывая принятое соглашение, можно считать, что первые п—т неравенств в B.10) имеют вид п—т. Пусть Н — матрица, составленная из коэффициентов остальных неравенств. Введя т переменных недостатка хп_т+1, . . ., хп, можно получить А Ь где (тХя)-матрица А имеет вид А = [Н\1] и x?Rn. Таким образом, любой многогранник (удовлетворяющий нашему соглашению) мож- можно представлять после некоторых преобразований как допустимую область F некоторой задачи ЛП. Более того, любую точку х=(х1, ... • • •, хп-т) € Р можно преобразовать в х=(хи . . ., хп) (Е/7, положив п-т х{ = — g,— 2 huxj, i = п—т + 1 п. B.11) l=i И наоборот, любую точку х=(хи . . ., xn)?F можно легко преобра- преобразовать в х=(х1, . .., хп_т)?Р простым отбрасыванием последних т координат в х. Покажем теперь, как эти три точки зрения связаны с нашим по- понятием «угла». Теорема 2.4. Пусть Р—выпуклый многогранник, F~{x: Ax=b, Q\—соответствующее допустимое множество некоторой за- задачи ЛП их — (xlt . .., хп_т) g Р. Тогда следующие условия экви- эквивалентны. (а) Точка х является вершиной многогранника Р. (б) Если х = Хх'+ A-Х) х", где х', х"?Р, 0<Х<1, то
s' 2.S. Геометрия задач линейного программирования 43 х' — х" = х (другими словами, х не может быть строгой выпук- выпуклой комбинацией точек из Р). (в) Соответствующий вектор х из F, определяемый равенствами B.11), есть бдр в F. Доказательство, (a) =s> (б). Пусть х—вершина и существуют точки х', х"?Р, отличные от х, такие, что х = Хх' ¦+¦ A — tyx", где 0<Х<1. Так как х—вершина, то существует полупрост- полупространство #S = {x€#"-"¦: h'x^.g\, такое, что HSr\P = {x\. Тогда х', x"^HS и, следовательно, h'x' > g и h'x" > #. Отсюда h'x= = h'(ix'-{-(\ — X)x")>g и x(?HS; получаем противоречие. (б) => (в). Предположим, что х обладает свойством (б), и рас- рассмотрим соответствующий элемент х из F. Определим подмножество $ столбцов матрицы А следующим образом: 3i~{Aj\ ^>0, 1</<: <л}. Покажем сначала, что это множество столбцов линейно неза- независимо. Пусть это не так. Тогда найдутся целые числа dj, не все равные 0, такие, что д/€® B12) Так как x?F, то 2 х,А.**Ь B.13) Ауе33 и, кроме того, xj^Q, /=1, . . ., п. Умножим B.12) на некоторое число 6, полученное равенство прибавим к B.13) и вычтем из B.13). По- Получим Так как хр>0 для А?33, можно выбрать положительное и достаточ- достаточно малое 9 таким образом, что xj±Qdj^O для всех А?33. Следова- Следовательно, мы нашли две точки, определяемые равенствами 0, ( Xj + Bdj, A,?SB, Xi'\ 0, Aji®, такие, что х', x"?F, т. е. х', х" ?Р и х — х'/2 + х"/2; получили противоречие. Мы показали, что множество столбцов Эё линейно независимо, и, следовательно, |S|^w. Поскольку мы предположили, что в А имеется т линейно независимых столбцов, то всегда возможно рас- расширить множество Ш так, чтобы оно содержало т линейно незави- независимых векторов. В этом случае они будут базисными столбцами, от-
44 Гл. 2. Симплекс-алгоритм куда следует, что х — бдр. (в) => (а). Если г/=(г/ь ..., уп) — бдр задачи Ах=Ь, х^О, то, согласно лемме 2.2, существует вектор стоимости с, такой, что у является единственным вектором х ? R", удовлетворяющим условиям Как легко видеть, эти условия означают, что у= {yiy ..., «/„_„) — единственная точка в R"~m, удовлетворяющая неравенствам d'x^d'y, x?P, где п—/п. Следовательно, у—вершина многогранника Р, для которой соот- соответствующая опорная гиперплоскость определяется равенством d'x^d'y. ? - В § 2.9 будет дана очень простая характеризация ребер много- многогранника Р. Теоремой 2.4 установлено соответствие между вершинами мно- многогранника Р и базисами матрицы А. Если даны две различные вершины ими' многогранника Р, то соответствующие базисы S3 и S3' должны быть различны, поскольку базис однозначно опреде- определяет бдр и, следовательно, вершину. Однако, два различных базиса 33 и 33' могут соответствовать одному и тому же бдр х. Пример 2.4. Вернемся к многограннику, показанному на рис. 2.1, и соответствующей задаче ЛП. Матрица А и вектор b в ней имеют вид '1 1 1 1 0 00] 10 0 0 10 0 0 0 10 0 10 о з 1 о о о iJ 4 2 3 6J Рассмотрим базисы 33={Ai, Аг, А3, Ал} и $)' = {Ai, A2, А4, Ал}. Для обоих базисов B~1b=B'-lb=B, 2, 0, 0, 0, 3, 0). Причина такого сов- совпадения ясна из рис. 2.1. Для вычисления вершины, соответствую- соответствующей 9В, полагаем х4=хв=х7=0, а это означает, что соответствующие три неравенства должны обратиться в равенства, которые опреде- определяют вершину B, 2, 0) как пересечение трех гиперграней. При рас- рассмотрении S3' мы заменяем ограничение х1-{-х2-\-х3^.4 на х3^0. Но оказывается, что гиперплоскость xs—0 проходит через ту же вер- вершину B, 2, 0), и поэтому ничего не изменяется. Таким образом, вер- вершина, подобная данной, должна лежать более чем на п—/п=3 ги-
" 2.1?. Геометрия задач линейного программирования 45 пергранях; другими словами, бдр должно иметь более чем п—т—Ъ нулей. D Определение 2.5. Бдр (и соответствующая вершина) называется вырожденным, если оно содержит более чем п—т нулей. ? Сформулируем теперь существенный результат наших обсужде- обсуждений. Теорема 2.5. Если два различных базиса соответствуют од- одному и тому же бдр х, то х вырожденно. Доказательство. Пусть 33 и 33' определяют одно и то же бдр х. Тогда х имеет нули в п—т столбцах, не входящих в 33. Кроме того, оно должно иметь нули в столбцах 33—33'Ф0. Следовательно, оно вырожденно. П Следующее утверждение равносильно доказательству того фак- факта, что задачу ЛП можно решить за конечное число шагов. Теорема 2.6. В любой индивидуальной задаче ЛП имеется оп- оптимальное бдр. Более того, если имеется q оптимальных бдр, то их выпуклые комбинации также оптимальны. Доказательство. Согласно теореме 2.4 и ее доказательству, сфор- сформулированное утверждение эквивалентно тому факту, что в много- многограннике Р найдется оптимальная вершина и что если q вершин из Р оптимальны, то их выпуклые комбинации также оптимальны от- относительно линейной функции стоимости d'x. Множество Р замкну- замкнуто и ограничено, поэтому линейная функция d достигает своего мини- минимума на Р. Пусть х0 — оптимальное решение, и пусть хх, ..., xN — вершины многогранника Р. Согласно теореме 2.3, можно записать N N хо=У\ а{ хи где У, а,= 1, а г=1 ??' Пусть / — индекс, соответствующий вершине с наименьшей стои- стоимостью. Тогда N N d'xo= 2 (Xid'xt^d'x/ S a( = d'xj, t=i c= l откуда следует, что Xj оптимально. Для доказательства второй части теоремы предположим, что вершины Xjt, ..., xtq оптимальны ну — выпуклая комбинация этих вершин. Тогда у оптимально, поскольку d'y = d' S «,*/, = 2 «,- Ух,-.) = d'xlt. Q
46 Гл. 2. Симплекс-алгоритм Таким образом, мы установили, что индивидуальную задачу ЛП можно решить за конечное число шагов: нам достаточно проверить стоимость в каждой вершине многогранника Р. Более того, можно порождать все вершины многогранника Р (на самом деле все бдр) систематически, рассматривая каждое множество, содержащее т столбцов, инвертируя соответствующую матрицу В и отбрасывая те случаи, в которых в B~lb имеется отрицательная компонента. Однако этот алгоритм едва ли можно использовать на практике в задачах среднего размера, поскольку число возможных вершин очень велико. Используя описанное геометрическое представление многогранника Р и его вершин, мы можем разработать сейчас сим- симплекс-алгоритм, в котором переход от вершины к вершине про- производится систематическим способом, избегая в результате пере- перечисления всех вершин. 2.4 Переход от одного бдр к другому Пустьх0—бдр в индивидуальной задаче ЛП с матрицей Л, соот- соответствующее упорядоченному множеству индексов базисных столб- столбцов 9B={ABU): i= I, .. ., т). Если хт t = l, ..., m,— базисные ком- компоненты вектора х0, то т 2 xt0ABU) = b, где xlo^0 B.14) i= 1 и, как обычно, Aj g Rm используется для представления /-го столб- столбца матрицы А. По определению множество базисных вектор-столб- вектор-столбцов 33 линейно независимо, поэтому можно представить любой вне- базисный столбец Aj?Rm, Aj^SB в виде линейной комбинации ба- базисных столбцов т Ъх„АВы-Аг B.15) i= 1 Умножая B.15) на скаляр 0>О и вычитая полученное равенство из B.14), получаем очень важное равенство ( (/.//) ,,,, ,-&. B.Ш) Будем считать пока, что х0 невырожденно; тогда xl0>0 для всех xi(i, и, увеличивая 0, начиная с нуля, будем переходить от данного бдр к некоторым допустимым решениям с т-\-1 строго положитель- положительными компонентами. Как долго мы можем увеличивать Э и все еще оставаться в допустимой области? До тех пор, пока одна из компо- компонент (xto—Qxtj) не обратится в нуль, что произойдет при значении 0О= min xl0/xt/. B.17)
2.4. Переход от одного бдр к другому 47 Пример 2.5. Рассмотрим задачу ЛП с ограничениями из приме- примеа 2.2 (или 2.4) Базису 33 = {Аг, As, Ав, Л7}, заданному условями A) = 1, SB)=3, fiC)=6, flD)=7, соответствует бдр х=B, О, 2, 0,0,1, 4). Внебазисный столбец Л5 = со1 @, 1, 0,0) можно предста- представить в виде Тогда равенство B.16) принимает вид Из рис. 2.1 видно, что при возрастании 0 от 0 до 1 это семейство до- допустимых точек B—0, 0, 2+0, 0, 0, 1—0, 4—0) движется от верши- вершины B, 0, 2) (и бдр B, 0, 2, 0, 0, 1, 4)) к вершине A, 0, 3) (и бдр A, О, 3, 0, 1, 0, 3)). Равенство B.17) дает Эо=1, и новым базисом ста- становится 3Z' с В'A)=1, В'B)=3, Я'C)=5 и В'D)=7. Q Отметим два частных условия, которые могут иметь место для бдр х0. Частный случай 1. Если х0 вырожденно в силу того, что некото- некоторое xi0=0, а соответствующее хи положительно, то 0О=О, соглас- согласно B.17), и мы не движемся в R". Мы остаемся в той же вершине, однако можем считать, что переходим к новому базису, заменяя столбец B(i) столбцом /'. Мы иногда будем говорить в таком случае, что переменная xj входит в базис на нулевом уровне. Частный случай 2. Если все Хц, t = l, . . ., т, неположительны, мы можем двигаться сколь угодно далеко, оставаясь в допустимом множестве. В таком случае F не ограничено, что противоречит на- нашему соглашению об ограниченности F, принятому на основании теоремы 2.2. Остается показать, что новая точка, полученная в результате описанного выше процесса, на самом деле является бдр. Теорема 2.7. Пусть дано бдр х0 с базисными компонентами xlQ, i = l, ..., т, и базисом 5В = {АВ (П: t = 1, .. ., т\, и пусть j таково, что А,^38. Тогда новое допустимое решение, определяе- определяемое равенствами 0О= min (xlJxu) = XiJxiJ, B.18) I u0> I — I, является бдр с базисом 33', в котором Если минимум в B.18) достигается при более чем одном i, то новое бдр вырожденно.
48 Гл. 2. Симплекс-алгоритм Доказательство. Из рассуждений, относящихся к B.16) и B.17), следует, что х'о с компонентами, определяемыми из B.19), является допустимым решением. Поэтому остается показать, что это решение— базисное. То есть мы должны показать, что множество базисных столбцов 33' линейно независимо. Предположим, что для некоторых констант dt т т S d,i4B'(O=sd,i4/+ 2d,i4B,,, = 0. B.21) Подставляя т А V v /I lO 99\ получаем т S {dtxif + dt) АВФ+ dtxt/AB ш = 0. B.23) Это линейная комбинация исходных базисных векторов, поэтому все коэффициенты в ней должны равняться нулю. В частности, dlxll=Q и, следовательно, ^=0. Тогда из B.21) вытекает, что ос- остальные di также равны нулю и, следовательно, новый базис дей- действительно линейно независим. Для завершения доказательства заметим, что если минимум в B.18) достигается при более чем одном i, то соответствующие ком- компоненты в х'а обращаются в 0 согласно B.19). Это означает, что х'о вырожденно. П Описанный метод перехода от одного бдр к другому называется замещением. Мы будем говорить, что столбец ВA) выводится из базиса, а столбец / вводится в базис. 2.5 Организация таблицы В предыдущем параграфе мы считали, что в любой момент мож- можно легко получить представление B.22) любого внебазисного столб- столбца А) через базисные столбцы. И если мы хотим построить алгоритм, который в большой степени использует переход от вершины к вер- вершине, то очень важно, чтобы в нашем распоряжении всегда были коэффициенты Хц. Это можно обеспечить, если хранить заданную систему уравнений приведенной к диагональному виду относитель- относительно базисных переменных. Предположим, что на каждом шаге мы храним массив чисел раз- размера mx(n-fl), который представляет собой информацию об исход- исходных ограничениях в виде равенств Ах=Ь. Так, например, систему
2.5. Организация таблицы 49 уравнений будем представлять таблицей =3, 1 3 4 X\ 3 5 2 Xi 2 1 5 X} 1 1 i *4 0 1 0 X! 0 0 1 отделяя правые части уравнений вертикальной чертой и рассмат- рассматривая их как нулевой столбец. Можно умножить любую строку в таблице на ненулевую константу или прибавить любую строку, ум- умноженную на произвольное число, к любой другой строке, при этом информация, представляемая соответствующей системой уравнений, не изменится. Эти операции называются обычно элементарными операциями над строками. Если известен базис 93, можно произве- произвести элементарные операции над строками так, чтобы базисные столб- столбцы образовали единичную подматрицу: Aml)=ei, t = l, . . ., tn, где ei обозначает вектор-столбец с т элементами, в котором в i-й строке стоит 1 и в остальных строках стоит 0. Таким образом, если в нашем примере 33 —{А3, At, Аь), то можно умножить строку 1 на —1 и при- прибавить ее к строкам 2 и 3, при этом получим 1 2 3 Ф 2 ~1 XI 2 -1 3 *з \ 0* 0 Х4 0 1 0 Xf 0 0 I В нулевом столбце стоят сейчас значения базисных переменных xmi)=xia, t = l, . . ., m, которые получаются, если внебазисные пе- переменные положить равными нулю. Заметим, что внебазисные столб- столбцы содержат в точности числа хц\ например, Следовательно, можно непосредственно произвести вычисления, необходимые для изменения базиса. Пусть, например, мы хотим ввести в базис столбец /=1; тогда B.18) дает ,= min \-^ =4- Таким образом, нам необходимо получить в столбце /=1 единичный вектор с 1 в строке /=1. Для этого мы разделим строку 1 на 3 и при-
50 Гл. 2. Симплекс-алгоритм бавим ее к строке 3, затем умножим строку 1 на —2 и прибавим к строке 2. Обычно для представления этой операции мы будем в таб- таблице обводить кружком «ведущий» элемент %•, так, как это сделано в B.24). Новая таблица имеет вид XI Xt i 1 0 0 2 3 -1 ? — 1 i 0 1 0 0 0 1 Новым базисом будет множество столбцов 33' = {Ai, Ait Аь), соответ- соответствующее бдр: лг^ = 1/3, Xj=4/3 и лг5 == 10/3. В общем случае если хц и x'tj — соответственно старая и новая таблицы, ShS' — соот- соответственно старое и новое базисные множества и л:^ — ведущий эле- элемент, то xiq /г, т; II, B.25) Теперь, когда мы знаем, как переходить от одного бдр к другому, необходимо исследовать влияние таких переходов на стоимость. 2.6 Выбор выгодного столбца Стоимость бдр х0, соответствующего базису 33, равна Zo=^j=ixi4PbCiy Рассмотрим теперь процесс введения в базис столбца А]. Выразим А} через базисные столбцы ;= 1 B.26) Это равенство можно понимать в том смысле, что для каждой еди- единицы переменной хи вводимой в базис, количество хи каждой пере- переменной хд0) должно покинуть базис. Таким образом, возрастание переменной х-, на единицу приводит в результате к изменению стои- стоимости на величину с,—У?=1ХцСвау Величина, задаваемая здесь суммой, достаточно важна, чтобы иметь собственное обозначение. Мы обозначим ее г;- и назовем разность Cj=Cj—г;- относительной стоимостью столбца /. Тогда столбец / выгодно ввести_в базис в том и только в том случае, если С;<0. Более того, если с^О для всех /, то мы имеем локальный оптимум, который является также гло- глобальным оптимумом. Ниже мы дадим более подробное доказатель- доказательство.
2.6. Выбор выгодного столбца Введем сначала некоторые векторные и матричные обозначения. Для любой таблицы X через В обозначим (тхт)-матрицу, сос- состоящую из столбцов матрицы А, соответствующих базису вХ, и пусть св есть m-вектор стоимостей, соответствующих этим базис- базисным переменным. Поскольку таблица X получена диагонализацией базисных столбцов матрицы А, можно представить X в виде Х=В'1 А и вектор г=со1 (гь ..., г„), согласно его определению, в виде / — =с'вХ=с'в В~1А. Мы будем неоднократно использовать эту матрич- матричную терминологию в дальнейшем. Теорема 2.8 (критерий оптимальности). Для бдр хи операция за- замещения, при которой Xj вводится в базис, изменяет стоимость на величину 6.^ = 00 (с,-«/)• B-27) Если с~=с—г^0, B.28) то х0 оптимально. Доказательство. Согласно равенству B.19) из теоремы 2.7, но- новое решение имеет вид Xi«-\ е0, »-/, поэтому новая стоимость равна т г'о*= S (xlu—Q0Xi/)cBU) + Ol)c/=:zl> + ea(c/—г,), откуда следует B.27). Покажем, что из условия с^О следует оптимальность х0. Пусть у — любой допустимый вектор, не обязательно базисный. То есть Ау=Ь и г/^0. Так как с=с—г^О, то для стоимости у имеем с'у^ г'у = с'цВ~хАу — о'вВ-1Ь~с'хо, откуда следует, что стоимость вектора у не может быть меньше стои- стоимости х0. ? Поскольку значения ct дают информацию о том, выгодно ли вво- вводить столбец в базис, хотелось бы хранить их как часть таблицы. Обычно они хранятся в строке 0 следующим образом Запишем уравнение стоимости в виде ' + ...+сЛ. B.29) Тогда относительная стоимость с,, соответствующая базисному
52 Гл. 2. Симплекс-алгоритм столбцу /', равна _ т Cj—Cj Z] =Cj Д, XljCg (,•) = 0 , поскольку X(j—единичный вектор с 1 там, где B(i) = j. Если рассматривать равенство B.29) как нулевую строку нашей таб- таблицы, то ее компоненты, соответствующие базисным столбцам, можно сделать равными нулю, умножая i-ю строку на —cBU) и прибавляя полученное к нулевой строке. При этом во вне- базисном столбце получается величина с,- = С/—2^=1*//сш> т и в левой части нулевого уравнения получается —zQ—— 2 xiocBU). Таким образом, нулевая строка принимает вид — 20=—2+ 2 c/Xj. B.30) а'~*8 Если считать теперь, что таблица задана в диагональном виде отно- относительно т+1 переменных хв0), хвт, . . ., хЯ(т) и —г, то легко видеть, что для нулевой строки применяются те же самые правила замещения, что и для строк от 1 до т. Следовательно, можно хра- хранить относительные стоимости с>, используя одну дополнительную строку в таблице. При этом, естественно, нет необходимости хра- хранить столбец для переменной —г. procedure СИМПЛЕКС begin опт: = «нет», неограниченна: — «нет»; (comment: если любая из этих переменных принимает значение «да», то алгоритм останавливается) while опт = «нет» and неограниченна=теп do if CjS^O для всех j then опт: = «да» else begin выбрать любое ], такое, что Cj < 0; if xi] «SO для всех i then неограниченна: =«да» else найти ео= min [^1=^» i: xX] > ol XljJ Xk| и произвести замещение относительно x^j end end Рис. 2.3. Симплекс-алгоритм. Если мы забудем пока о проблеме вырожденности, то каждое замещение дает Эо>0, и мы получаем симплекс-алгоритм — конеч- конечный алгоритм для задачи ЛП: если некоторое с}<.0, произвести опе- операцию замещения столбцом /; если с^О для всех /, то получено оптимальное бдр. Мы никогда не вернемся к ранее рассмотренному бдр, поскольку стоимость монотонно убывает. Так как имеется лишь
2.6. Выбор выгодного столбца 53 конечное число бдр, алгоритм должен закончить работу за конеч- конечное число шагов. Отложим вопрос о вырожденности до следующего параграфа, завершив этот параграф неформальной программой (рис. 2.3) и примером симплекс-алгоритма. Пример 2.6. Рассмотрим задачу ЛП с ограничениями из § 2.5 и функцией стоимости Таблица для исходной задачи имеет вид 0 1 3 4 X\ 1 3 5 2 хг 1 2 1 5 Xi 1 1 1 1 1 0 1 0 l 0 0 1 Для того чтобы начать алгоритм, нужно некоторое бдр и, кроме того, нужно сделать нулевыми компоненты ch соответствующие ба- базисным столбцам. Из § 2.5 мы знаем, что столбцы 3, 4 и 5 дают бдр. Вычитая строку 1 из строк 2 и 3 и вычитая затем полученные строки 1, 2 и 3 из строки 0, получаем Базис —Z - X} - X* ~ -6 1 2 3 Xi — 3 3 2 —1 *?. -3 © 3 Xi 0 1 0 0 X* 0 0 1 0 xs 0 0 0 1 Эта таблица представляет бдр, соответствующее переменным, ука- указанным слева, со стоимостью г=6. В столбцах 1 и 2 строки 0 имеем соответственно Ci=—3 и са=—3. Поэтому выгодно ввести в базис столбец 1 или 2. Выбрав столбец 2, находим 90 = 1/2 для 1—1, после чего производим операцию замещения относительно элемента Хц=2, обведенного кружком. Получающаяся таблица имеет вид Xi Xl X% X4 X} Хг- *4 = и она дает оптимальное решение со стоимостью 2=9/2. ? -! 4 i i I 2 _u 0 I 0 0 I. i 0 0 1 0 0 0 0 i
54 Гл. 2. Симплекс-алгоритм 2.7 Выбор ведущего элемента и алгоритм Блэнда, устраняющий зацикливание В описанном выше симплекс-алгоритме имеется некоторая не- неопределенность: мы не сказали, как решить, какой именно столбец / (из тех столбцов, которые удовлетворяют условию с,-—Zj<$)) вве- ввести в базис, и мы также не сказали, как быть в том случае, если при вычислении Эо, которое определяет строку I и переменную хтц, выводимую из базиса, минимум достигается более чем при одном зна- значении i. Обратимся вначале к вопросу о выборе столбца. К сожалению, здесь нет хорошей теоретической базы и приходится полагаться на эмпирические наблюдения. Старейший и наиболее широко исполь- используемый критерий состоит просто в выборе наиболее отрицательного Cj<S). Как установлено выше, при возрастании на единицу перемен- переменной X), вводимой в базис, стоимость изменяется на с;, поэтому с; можно рассматривать как производную стоимости по расстоянию в пространстве внебазисных переменных. Тогда выбор наиболее от- отрицательного С) является разновидностью метода наискорейшего спуска, называемого в этом случае методом внебазисного градиента (KQ1- Однако отсюда вовсе не следует, что действительное уменьше- уменьшение стоимости QtlCj будет максимально возможным, поскольку мы не знаем 0О, пока не вычислим отношений для выбора строки. От- Отсюда вытекает другой подход: выбрать столбец, который дает наи- наибольшее уменьшение стоимости. Этот метод, называемый методом наибольшего приращения, требует дополнительных вычислений для каждой операции замещения, но дает возможность достигнуть оп- оптимальности с использованием меньшего числа замещений, чем ме- метод внебазисного градиента. Увеличение внебазисной переменной х} на единицу изменяет весь вектор х на —xt/, k — B(i), i—l, ..., т, О в противном случае. Следовательно, можно вычислить производную стоимости по расстоя- расстоянию в пространстве всех переменных cjlV\ + ^L1xiil. Подход к выбору столбца, соответствующий этой производной, называется ме- методом градиента по всем переменным. Кун и Куанд [KQ1 сообщают о результатах обширных вычисли- вычислительных экспериментов с этими и другими методами. Результаты для задач с числом строк до 25 указывают, что метод градиента по всем переменным приводит к оптимальному решению, используя
2.7. Выбор ведущего элемента и алгоритм Блэнда 55 меньше замещений, чем методы внебазисного градиента и наиболь- наибольшего приращения, и является более быстрым. Голдфарб и Рейд [GR1 описали быстрый способ вычисления производной по всем перемен- переменным и сообщают о хороших результатах при применении метода гра- градиента по всем переменным. Однако читатель должен относиться к этим результатам с некоторой осторожностью. Во-первых, вре- времена вычисления, о которых сообщают Кун и Куанд, указывают на ускорение в лучшем случае вдвое, а такое ускорение времени ра- работы часто может быть результатом изменений в деталях програм- программирования. Во-вторых, случайный класс задач ЛП, использован- использованный в качестве тестов, может не отражать чьих-либо «типичных» за- задач ЛП. Наконец, важным преимуществом метода внебазисного гра- градиента является простота, и он остается наиболее популярным ме- методом, реально используемым в программировании. Обратимся теперь к разрешению неопределенностей в процедуре выбора строки. Возможность вырожденности представляет здесь определенную опасность: если в качестве ведущего элемента в сим- симплекс-алгоритме выбран элемент *у<0 и компонента х1о из бдр равна 0, го 90=0 и приращение стоимости 90(с;—z,)=0. To есть стои- стоимость z не убывает, даже если мы выбираем столбец /', такой, что С}—zj<.O. Возможно, далее, что, проделав последовательность та- таких замещений, мы вернемся в исходную точку. Это означает, что алгоритм будет неограниченно выполнять один и тот же цикл (в пред- предположении, что выбор столбца и строки делается детерминирован- но), а такая ситуация была бы очень нежелательной. Это явление называется зацикливанием. Пример 2.7 [Bel]. Рассмотрим таблицу 3 0 0 1 x\ -\ (D i _ 0 Xl + 20 -8 -12 0 X] i -1 -\ 1 x* +6 9 3 0 •vs 0 1 0 0 X6 0 0 1 0 x-i 0 0 0 1 Будем, начиная с данного бдр, проводить операции замещения, ис- используя следующие правша разрешения неопределенностей. (а) Для введения в базисвсегда выбирать внебазисную перемен- переменную с наиболее отрицательном с,. (б) При появлении неод1означности в выборе переменной, вы- выводимой из базиса, всегда выбирать базисную переменную с наимень- наименьшим индексом. В результат получим следующую последователь- последовательность таблиц (ведущие эле*енты обведены кружком).
56 Гл. 2. Симплекс-алгоритм 3 0 0 1 0 1 0 0 -4 32 ® 0 _7 -4 I 1 33 36 -15 0 3 4 -2 0 0 0 1 0 0 0 0 1 3 0 0 1 0 1 0 0 0 0 i 0 -2 ® l 18 -84 0 1 -12 —- i 0 1 8 i 0 0 0 0 1 3 0 0 1 4 -А —J 0 0 1 0 0 1 0 0 -3 (А) 11 —2 _з 16 3 1 _ 1 J 0 0 0 1 3 0 0 1 -i -i i 16 56 1« -56 0 1 0 0 0 0 1 0 — 1 (D \ -2 1 -6 _ 2 Т 6 0 0 0 1 3 0 0 1 ~i ~i ~h 0 44 28 -4 0 i -i 1 0 0 1 0 0 i 0 0 _2 -3 Ф 0 0 0 0 1 3 0 0 1 3 i 0 20 -8 -12 0 i , i l 6 9 3 0 0 1 0 0 0 0 1 0 0 0 0 1
f 2.7. Выбор ведущего элемента и алгоритм Влэнда 57 После шести операций замещения мы вернулись к исходному бдр. При всех промежуточных замещениях новые базисные переменные вводились на нулевом уровне и стоимость не изменялась. Мы будем говорить, что симплекс-алгоритм (с этим специальным правилом за- замещения) зацикливается. П Стоящую в данный момент перед нами проблему можно рассмат- рассматривать как проблему такого разрешения неопределенностей в сим- симплекс-алгоритме, которое устраняло бы зацикливание. Иногда сооб- сообщается, что зацикливание вообще не возникает в практике, даже несмотря на то что можно построить искуственные примеры. Одна- ' ко это противоречит одному недавнему сообщению [KS]. Кроме того, формулировки некоторых комбинаторных задач в виде задач ЛП сильно вырожденны, и не совсем ясно, можно ли положиться на счастливую случайность избежать зацикливания, не говоря уже об эстетических аспектах. Простейший путь избежать зацикливания — разрешать неоп- неопределенности случайным образом. Тогда с вероятностью 1 мы вый- выйдем из любого цикла. Однако это усложняет программирование про- проверки отношения и не является настолько же интеллектуально удов- удовлетворительным, как детерминированное правило, гарантирующее конечность симплекс-алгоритма. Поэтому похоже, что такой подход не популярен. В одном стандартном подходе к устранению зацикливания до- допускается произвольный выбор столбца, и неопределенности при вычислении Эо разрешаются таким образом, чтобы нулевая строка лексикографически возрастала, обеспечивая, таким образом, тот факт, что никакой базис никогда не повторяется. Этот метод обла- обладает тем преимуществом, что допускает произвольное правило вы- выбора столбца. Мы отложим описание этого метода до гл. 14. Ниже будет описан относительно недавний замечательный по своей про- простоте алгоритм Блэнда [В1], устраняющий зацикливание. Нам по- потребуется " Лемма 2.3. Пусть с' — строка относительных стоимостей в лю- любой таблице Х\ с единичным базисом, не обязательно соответствую- соответствующим допустимому решению (т. е. некоторые х1а в нулевом столбце могут быть отрицательными). Пусть у — любое решение систе- системы ограничений Ау—Ь, не обязательно соответствующее допусти- допустимому решению (т. е. некоторые yj могут быть отрицательными). Пусть f — стоимость, соответствующая Xt, и g — стоимость, соответствующая у. Тогда c'y=g—/. Доказательство. Непосредственными вычислениями получаем ?y=(c'—z')y = c'y—z'y = g—c'BB-1Ay = g—c'BB-1b^g—f, ? поскольку B~lb — нулевой столбец таблицы Хи ?
58 Гл. 2. Симплекс-алгоритм Теорема 2.9 (алгоритм Блэнда, устраняющий зацикливание [В1]). Пусть столбец для введения в базис в симплекс-алгоритме вы- выбирается по правилу (выбрать прибыльный столбец с наименьшим номером), а строка выбирается по правилу fl(9*=min{B(Q: хи>0 и Щ<*? каждого k, такого, что xkj > 0} (в случае неопределенности для вывода из базиса выбрать столбец с наименьшим номером). Тогда алгоритм заканчивает работу после конечного числа замещений. Доказательство1). Покажем, что предположение о существова- существовании цикла приводит к противоречию. Для того чтобы появился цикл, необходимо, чтобы после конечной последовательности замещений мы вернулись к некоторому бдр. Стоимость г должна оставаться по- постоянной в течение всего цикла, и значение х;о, соответствующее каж- каждому замещению, должно равняться нулю, ибо в противном слу- случае Э0>»0, откуда следовало бы, что г убывает. Отсюда в свою оче- очередь вытекает, что нулевой столбец xt0, i=\, ..., т, остается посто- постоянным в течение всего цикла. Отбрасывая строки и столбцы, не содержащие ведущих элемен- элементов во время цикла, получим новую задачу линейного программи- программирования, которая также зацикливается и в которой все *;0=0 и г постоянно в течение цикла. Пусть теперь*/ — наибольший индекс переменной, вводимой в ба- базис во время цикла. Рассмотрим две таблицы: таблицу Г1( после ко- которой xq вводится в базис, и таблицу Г2, после которой х выводит- выводится из базиса (рис. 2.4). Обозначим элементы таблиц 7\ и Г2 соответ- соответственно через xtj и хи, а соответствующие им базисы — через йи|, и пусть столбец р вводится в Тг. Применим лемму 2.3, построив два решения. Для 7\ мы просто используем бдр х0, отождествляя 7\ с Xi. Для Т2 определим решение у следующим образом: 1, если / = /э, —xip, если Aj€,§3, 0 в противном случае. Заметим, что*/ хотя и не является ни базисным, ни допустимым, но все же является решением системы уравнений Ау=Ь и, следователь- х) Доказательство представляет собой упрощенный вариант доказательства Блэнда, приведенного в работе [Км].
2.7. Выбор ведущего элемента и алгоритм Блэнда 59 но, удовлетворяет требованиям леммы 2.3. Кроме того, стоимость решения у равна f+xop, поэтому заключение леммы 2.3 дает с'«/= =xtip<$). Неравенство вытекает из того, что столбец р вводится в Г2 и, следовательно, должен иметь отрицательную относительную стои- стоимость хйр. -Вводится -/ 0 0 • • 0 0 . Вводится р / |_элементы x,j базис C8 Выводится ~J 0 0 • • 0 • • » 0 0 А (П) А Уэлементы л";» базис СВ Рис. 2.4. Таблицы Т± и Г2 из доказательства теоремы 2.9. Переменная xq вводится в базис в Ту и выводится из базиса в Г2. Согласно выбору ведущего столбца в 7\, получаем - I >0, j < q, и, согласно выбору ведущей строки в Г2, Следовательно, С'У = Лришли к противоречию. ? 0,1 или —х!р > 0, / < q. cqyg > 0.
60 Гл. 2'. Симплекс-алгоритм 2.8 Начало симплекс-алгоритма Мы не осветили только один момент: как получить исходное бдр, с которого можно нач.ать симплекс-алгоритм? Конечно, иногда можно получить бдр как часть формулировки задачи. Например, если вначале нам даны неравенства вида Ах<Ь, то в этом случае переменные недостатка образуют бдр. Если же нам не повезет, можно использовать метод искусственных переменных, или двух- этапный метод. В этом метюде просто слева от таблицы следующим образом добавляются новые («искусственные») переменные xf, i=l, . . ., m: b xf ... x'm i 0 •.; 0 ' Д?| i * ? У^ Некоторые исходные уравнения мы умножили на —1, чтобы было 6^0. Мы имеем теперь бдр xf=bt- На этапе I минимизируется функция стоимости ПРИ заданных выше ограничениях с использованием симплекс-алго- симплекс-алгоритма. Возможны три исхода. Случай 1. Стоимость ? уменьшилась до нуля, и все xf выброше- выброшены из базиса; в этом случае мы получили бдр для исходной задачи. Случай 2. Мы достигли оптимальности с ?>0; в этом случае в исходной задаче нарушается предположение 2.2 о том, что имеется некоторое допустимое решение (если бы существовало допустимое решение в исходной задаче, то из этого вытекало бы, что минимальное значение ? равно нулю). Случай 3. Стоимость | уменьшилась до нуля, однако некоторые искусственные переменные остались в базисе на нулевом уровне. В случае 1 можно отбросить столбцы, соответствующие искусст- искусственным переменным, и продолжать непосредственно этап II — обычный симплекс-алгоритм с использованием исходной функции стоимости г—с'х. Иногда удобно начать с двух строк стоимости •—
2.8. Начало симплекс-алгоритма 61 одной для ? и одной для г. При переходе от этапа I к этапу II нужно просто от первой строки стоимости перейти ко второй. В случае 2, естественно, необходимо просто остановиться. В случае 3 предположим, что i-й столбец базиса в конце этапа I соответствует искусственной переменной и xiQ=0. В качестве ве- ведущего элемента можно выбрать любой ненулевой (не обязательно положительный) элемент хц строки /, соответствующий не искусст- искусственной переменной. Поскольку 9„ будет равно 0, то не произойдет ни нарушения допустимости, ни изменения стоимости ?. Это не есть в точности замещение, поскольку возможно, что Хц<$) или fy>0; мы скажем просто, что мы выгоняем искусственную переменную из базиса. Будем повторять это до тех пор, пока не получим допу- допустимый базис с исходными переменными. Единственный случай, когда нам не удастся этого сделать — это когда некоторая строка будет нулевой во всех столбцах, соответствующих не искусственным переменным. Но это означает, что мы получили нулевую строку в исходной матрице элементарными операциями над строками, что противоречит предположению 2.1 и показывает, что ранг матрицы А отличен от полного ранга т. Такие нулевые строки можно удалить н продолжить этап II с базисом меньшей размерности. Обратно, если ранг исходной системы уравнений отличен от полного ранга т, то нельзя прийти к случаю 1. Следовательно, мы придем к случаю 2, если задача не имеет допустимого решения, либо некоторая искусственная переменная останется в базисе на нулевом уровне в конце этапа I и тогда на самом деле и в конце эта- этапа II. Пример 2.8. В примере 2.6 нам априори было известно мно- множество базисных столбцов. Используя двухэтапный метод, мы на- . чали бы с таблицы А Xi xt, Xi 0 0 1 3 4 о • 1 1 0 0 0 1 0 1 0 0 1 0 0 1 1 0 3 5 2 1 0 2 1 5 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 Строка О' Строка О Вычтем строки 1, 2 и 3 из строки 0, соответствующей стоимости g, с.тем, чтобы вначале относительные стоимости для нашего исход- исходного базиса Х(, х% и х% равнялись нулю. Получим
Гл. 2. Симплекс-алгоритм xi хг Х4 х°г = *3 = 0 -8 1 3 4 0 0 , 1 0 0 0 0 0 1 0 0 0 0 0 1 1 -10 C) 5 2 1 -8 2 1 5 1 -3 1 1 1 1 -1 0 1 0 1 -1 0 0 1 Ниже приведены таблицы, получаемые последовательно на эта- этапе I, с отмеченными в них ведущими элементами. Xs х\ — 1 ~ 3 i i _ i J-B 1 -i -i 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 i -i (?) \ 1 1 i 1 -1 0 1 0 1 -1 0 0 1 Л3 — i I I _ 1 4 i _ 1 — IX 6 0 0 0 1 0 0 0 0 0 1 -i 2 i I -? 0 0 1 0 0 i 1 i i -I 1 -1 0 CD 0 1 -1 0 0 1 X* = -3 -i i ! 0 I i 1 5 -1 1 0 1 0 0 0 0 0 1 4 I I -? 0 0 1 0 0 0 i i i - -i 0 0 0 1 0 1 -1 0 0 ®
2.9. Геометрические аспекты замещения 63 -? 0 i t i i l i -i -i i 0 1 0 •—1 1 0 0 1 i 0 i i -v 0 0 J 0 0 0 i i -1 0 0 0 1 0 0 0 0 0 1 В конце этапа I имеем ?=0, и полученная таблица оказывается на самом деле оптимальной и для этапа II. (Заключительная таблица относительно переменных от хг до хъ согласуется с заключительной оптимальной таблицей в примере 2.6.) ? procedure ДВУХЭТАПНАЯ begin недопустима: = «нет», излишняя: = «нет»; (comment: на чтапе I им могут быть присвоены значения «да») ввести искусственный базис xf; call СИМПЛЕКС со стоимостью ; =2xi! " ?опт > 0 на этапе I then недопустима: = «да» else begin if искусственная переменная входит в базио и не может быть выведена из него then излишняя:—«да», и опустить соот- соответствующую строку; call СИМПЛЕКС с исходной стоимостью; end Этап I: Этап II: end Рис. 2.5. Окончательный двухэтапный алгоритм. Окончательный двухэтапный алгоритм приведен на рис. 2.5. Заметим, что мы освободились от предположений 2.1—2.3: A) если ранг матрицы А в исходной задаче не равен т, мы узнаем об этом в конце этапа I и можем продолжать работу; B) если исходная задача недопустима, мы также узнаем об этом в конце этапа I; C) если стои- стоимость в задаче не ограничена, мы узнаем об этом на этапе II. 2.9 Геометрические аспекты замещения Решим задачу ЛП из примера 2.2 с помощью симплекс-алго- симплекс-алгоритма и проследим за последовательностью получаемых бдр на соот- соответствующем многограннике. Получаемая в результате последова-
64 Гл. 2. Симплекс-алгоритм -34 4 2 3 6 -1 1 ф 0* 0 -14 1 0 0 3 -6 1 0 1 1 0 1 .0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 -32 2 2 . 3 б 0 0 1 0 0 -14 1 0 0 3 -6 ф 0 1 1 ..о; 1 0 0 0 1 -1 1 0 0 0 0 0 1 0 0 0 0 0 1 -20 2 2 1 4 0 0 1 0 0 п — 0 ф' 0 -1 2 0 1 0 0 0 б 1 0 -1 -rl -5 •"* 1 1 1 1 0 0 0 1 0 0 0 0 0 1 -4 2 2 3 0 ~4 2 2 3 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 8 1 0 1 -2 -i i (D i -i 14 1 0 0 >-3 1 0 1 0 -1 -13 -1 1 0 (D 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 -1 0 -2 1 3 0 2 1 -i i -I 1 0 1 0 0 0 0 0 1 0 0 2 -i i ~i 0 0 0 0 0 1 0 0 0 1 0 4 * 1 i 0
2.9. Геометрические аспекты замещения 65 Рис. 2.6. цельность таблиц вместе с последовательностью вершин много- многогранника, соответствующих порождаемым бдр, показана на рис. 2.6. Шы видим, что симплекс-алгоритм просто проводит некоторый путь ¦Но ребрам многогранника. Мы докажем сейчас формально, что так будет всегда. Определение 2.6. Две вершины х и у многогранника называются Смежными, если отрезок [х, у\ является ребром многогранника. Два различных бдр к и у некоторой задачи ЛП Ах=Ь, х^О, назы- называются смежными, если существуют базисы ЗВХ, S3 , такие, что $ = •*(&x-{Aj})[} {Ah} я х=В:% у=В;1Ь. П Таким образом, в симплекс-алгоритме одно бдр заменяется дру- другим, смежным с исходным и имеющим стоимость не больше чем у "исходного бдр, до тех пор, пока не получится оптимальное бдр. Теперь можно доказать следующее обобщение теоремы 2.4 на б 3032
66 Гл. 2. Симплекс-алгоритм Теорема 2.10. Пусть Р—некоторый многог ран/ник, F == = {х: Ах = Ь, х~^>0\—соответствующее допустимое множество и x = (Xj, ..., хп_т), у = (уи .... у„_J — различные вершины Р. Тогда следующие утверждения эквивалентны- (а) отрезок [х, у] является ребром Р; (б) если для произвольного г g [х, у]справедливо г=^гЧ-A—^) г", где 0<?i< 1 и г', г"?Р, то z',z"€[~x, у]; (в) соответствующие векторы х, у из F являются смежными бдр. Доказательство, (а) =г> (б). Если [х, у]—ребро Р, тто для него существует опорная гиперплоскость Н, уравнение котюрой пусть имеет вид h'x = g. Таким образом, h'z=g для каждого г?[х, у]. Предположим теперь, что г = %г' + (\—X) г", где 0<^<1, г', гР, и по крайней мере одна из этих точек не лежит в [х, у]. Тогда h'z'^.g, h'z"^.g, и одно из неравенств стро- строгое. Следовательно, h'~z = h' (Кг' + A—%)z")<.g; получили про- противоречие. (б)=>(в). Допустим, что бдр x,y?F соответствуют точкам из Р, удовлетворяющим свойству (б), но не являются смежными. Пусть сЛх и а4у — множества столбцов, соответствующих нену- ненулевым компонентам, соответственно в х и у. Легко видеть, что най- найдется бдр w-фх, у, у которого ненулевые компоненты лежат только в <>Мх\)<*Му. В противном случае можно было бы взять вектор стои- стоимости 0, Л,€<4,, j у пМ в противном случае, где М — подходящее большое число, например то, которое опреде- определено в лемме 2.1 Тогда у было бы единственным оптимальным реше- решением и любое допустимое решение с ненулевыми компонентами вне МжиЛ1;/ имело бы стоимость, большую, чем х. Таким образом, сим- симплекс-алгоритм, начиная с х, не смог бы найти последовательность смежных бдр с невозрастающей стоимостью, приводящую к опти- оптимуму, что является абсурдным. Следовательно, такое тфх, у действительно существует и, более того, w не лежит на [х, у], по- поскольку точки w, х, у соответствуют различным вершинам много- многогранника Р. Пусть г=(х+у)/2. Рассмотрим разность d—z—w. Она отлична от нуля только для столбцов из оМх (J оМу, и, следовательно, суще- существует положительное число 9, такое, что иг=г-\-Ы и u2=z—Ы до- допустимы. Отсюда г=(щ+и2)/2, где и,\ и ы2 не лежат на [х, у], что противоречит свойству (б).
2.9. Геометрические аспекты замещения 67 (в) => (а). Пусть 33Х — базис, соответствующий х, ЭЬу— базис, соответствующий у, и S!/=^XU {A}}— {Ah} для некоторых столб- соответствующий у, и юу — жхи [Я])— \fthj Для некоторых ctoj цов Аи /4ft. Зададим вектор стоимости с следующим образом: | 0, если A/ g 53Г/ U S3X, cf~\ 1 в противном случае. Все допустимые решения, являющиеся выпуклыми комбинациями х и г/, оптимальны. Более того, только они будут оптимальными ре- решениями. Чтобы показать это, допустим, что г оптимально. Тогда, ^ Рис. 2.7. а) Точная окрестность N,.. б) Точная ;" окрестность NA(x0)={yit y2, уя}. согласно теореме 2.3, г есть выпуклая комбинация бдр, и в частно- ^сти тех бдр, базисы которых являются подмножествами множества \,Я3хи$у Но такими бдр могут быть только х и у. !" Получаем, что условиям Aw=b, ш^О и c'w^c'x удовлетворяют Столько выпуклые комбинации w бдр хну. Поэтому в Р только р^гочки w сегмента [х, у] удовлетворяют неравенству d'w<d'x, где d, |taK же как в доказательстве теоремы 2.4, определяется следующим и образом: . Таким образом, отрезок [х, у] представляет собой пересечение некоторого полупространства с Р и является, следовательно, ;.,ребром. ? & Приведем в заключение еще одно замечание относительно симп- ?лекс-алгоритма. Как мы видели в гл. 1, задача ЛП является задачей лпуклого программирования, и, следовательно, система евкли- овых окрестностей Л^е точная. То есть, если для некоторого F
68 Гл. 2. Симплекс-алгоритм мы просматриваем окрестность, состоящую из всех точек множества F, отстоящих отхо не более чем на е, и не находим решения, лучшего, чем Хо, тогда х0 глобально оптимально (рис. 2.7(а)). В симплекс-алгоритме обнаруживается другая точная система окрестностей, комбинаторно и вычислительно намного более важ- важная. Во-первых, мы не должны рассматривать все (несчетное) мно- множество F, достаточно рассмотреть лишь конечное множество ба- базисных допустимых решений. Кроме того, в этом множестве бдр имеется система окрестностей NA(xo) = \y- У—бдр. смежное с хо\. Из теоремы 2.8 следует, что Л^ является точной для задачи ЛП (см. рис. 2.7F)). Более того, NA(x0) содержит мало (не более п—т) бдр, и они могут быть просмотрены очень быстро. Для этого доста- достаточно на самом деле смотреть только на знаки cj. Таким образом, симплекс-алгоритм можно рассматривать просто как умное при- применение общего метода поиска по окрестностям для точной структу- структуры окрестностей NA. Задачи 1. Покажите, что утверждение, обратное теореме 2.5, не верно, т. е. что мо- может существовать вырожденная вершина, такая, что соответствующий ей базис является единственным. 2. Покажите, что многогранник F, определяемый индивидуальной задачей ЛП, является замкнутым множеством. 3. Пусть в некоторой индивидуальной задаче ЛП п переменных не ограни- ограничены по знаку. Покажите, как можно заменить их п-\-\ переменными, на которые наложены ограничения неотрицательности. 4. Проверьте утверждение в доказательстве георемы 2.4 о том, что множество 53 может быть расширено до базиса, и аналогичное утверждение в доказательстве теоремы 2.1. 5*. Покажите, что критерий оптимальности из теоремы 2.8 не является необходимым в оптимальной вершине. 6*. Покажите, что из условия 80=0 для любого возможного ведущего эле- элемента в симплекс-алгоритме не следует оптимальность. 7*. Покажите, что задача линейного программирования не может зациклить- зациклиться до тех пор, пока хотя бы две базисные переменные не станут равными нулю. 8. Покажите, что множество оптимальных точек индивидуальной задачи ЛП является выпуклым множеством. 9. Пусть даны индивидуальная задача ЛП А в стандартной форме min c'x, Ах = Ь, л: S3 О, и индивидуальная задача ЛП В min — c'x, Могут ли обе задачи А я В иметь допустимые решения с произвольно малой стои- стоимостью? Если да, приведите пример, если нет, докажите.
Задачи 69 F' 10. Покажите, что множество G в доказательстве георемы 2.2 замкнуто. - (Указание: покажите, что любая точка вне G имеет окрестность, целиком лежащую ¦ вие G.) ; 11. Обязательно ли из того факта, что каждая вершина некоторой задачи - ЛП иевырождеина, следует единственность решения? Если да, то докажите, если • нет, приведите контрпример. [ 12. Дайте ответ на следующий вопрос и обоснуйте ваш ответ. Может ли ^вамещеиие в симплекс-алгоритме сдвинуть допустимую точку на положительное 'расстояние в Rn, оставив при этом стоимость неизменной? J. 13. Может ли вектор, который только что покинул бази. в симплекс-алго- 'Iритме, вернуться в базис при следующем замещении? _ - 14. Следующий фрагмен1 программы на языке Фортран вычисляет Cj для ^операции оценивания в симплекс-алгоритме и решает, произвести ли замещение, гпри котором столбец / войдет в базис: CBAR = C(J) DO 1 I = 1,М 1 CBAR = CBAR - C(BASIS(I))*X(I,J) 1F(CBAR.LT.O.)GO TO 3 |Допустим, что переменные С, BASIS и X определены соответствующим образом jjiB данном месте программы. Объясните, почему этот фрагмент не будет правильно работать на практике, и предложите простую модификацию, которая будет рабо- работать. (Ответ здесь не зависит от языка.) 15 (задание по программированию) Напишите программу для ЭВМ, которая еализует двухэтаппый снмилекс-алгоригм для задачи ЛП в стандартной форме. 'Ходом должны быть векторы Ь и с и Maipmia А. Программа должна останавли- (Ваться в одном из следующих четырех случаев. ?>1. На этапе I найдено неограниченное решение. Это невозможно (почему?), но ^ должна быть логическая ветвь в программе для проверки ошибок. На этапе I найдено оптимальное решение с положительной стоимостью. Это означает, что исходная задача недопустима. На этапе II найдено неограниченное решение. Это означает, что исходная задача имеет неограниченную стоимость На этапе II найдено оптимальное решение. Это означает, что исходная за- задача решена. Ваша программа должна выдавать: [а) данные задачи; [б) строку, столбец и стоимость после каждого замещения на обоих этапах; (в) сообщение после этапа I и после этапа II, если будут достигнуты эти точки; (г) заключительные базис, таблицу и стоимость, независимо от того в какой ке программа остановится. |; Проверьте вашу программу на задачах, которые заканчивают работу всеми возможными способами. 16. Докажите следующее утверждение: если F является 6-мерной гранью вы- клого многогранника Р в Rd, то F также есть выпуклый многогранник и, более ', каждая вершина F будет также вершиной Р. 17. Если задача ЛП не ограничена, то существует рациональный вектор а, >й, что (а) с'а<0, и (б) если х допустимо и k>0, то x-\-ka также допустимо. «ажите.
70 Гл. 2. Симплекс-алгоритм Комментарии и ссылки Симплекс-алгоритм был изобретен Данцигом в 1947 г., так что мы не можем слишком широко рекламировать его книгу [Dal] Dantzig G. В. Linear Programming and Extensions. Princeton, N. J.: Prin- Princeton University Press, 1963. [Имеется перевод: Данциг Д. Б. Линейное про- программирование, его применения и обобщения.— М.: Прогресс, 1966.] Читатель найдет в ней детальное описание из первых рук истоков линейного программирования наряду с развитием симплекс-алгоритма и его вариаций. Кроме этой книги есть много других прекрасных книг, посвященных линейному программированию. Среди них [BJ] Bazaraa M. S., Jarvis J. J. Linear Programming and Network Flows. New York: John Wiley & Sons. Inc., 1977. [CS] Cooper L., Steinberg D. Methods and Applications of Linear Programming, Philadelphia: W. B. Saunders, 1974. [Gal] Gale D., The Theory of Linear Economic Models. New York: McGraw-Hill Book Company, 1960. [Имеется перевод: Гейл Д. Теория линейных эконо- экономических моделей.— М.: ИЛ, 1963.] [Gas] Gass S.I. Linear Programming Dth ed). New York: McGraw-Hill Book Com- Company, 1975. [Имеется перевод: Гасс С. Линейное программирование.— М.: Физматгиз, 1961.] [Had2] Hadley G. Linear Programming. Reading, Mass.: Addison-Wesley Publish- Publishing Co., Inc., 1962. [Ни] Ни Т. С Integer Programming and Network Flows. Reading, Mass.: Addison- Wesley Publishing Co., Inc., 1970. [Имеется перевод: Ху Т. Целочисленное программирование и потоки в сетях.— М.: Мир, 1974.] [Si] Simonnard M. Linear Programming. Englewood Cliffs, N. J.: Prentice-Hall, Inc. 1966. [ЮГ] Юдин Д. Б., Гольштейн Е. Г. Линейное программирование.— М.: Наука, 1969. Данциг [Dal] приписывает формулировку задачи о диете Стиглеру [Sti] Stigler G. J. The Cost of Subsistence. J. Farm Econ., 27, No. 2 (May 1945), 303—314. Он также первым опубликовал симплекс-алгоритм в работе [Da2] Dantzig G. В. Programming of Interdependent Activities, II, Mathematical Model, pp. 19—32, in Activity Analysis of Production and Allocation, ed. Т. С Koopmans. New York: John Wiley & Sons, Inc., 1951. См. также: Econo- Econometrics 17, No. 3, 4 (July —Oct. 1949), 200—211. Теорему 2.3 можно рассматривать как частный случай общего утверждения о том, что любое замкнутое ограниченное выпуклое множество является выпуклой оболочкой своих экстремальных точек. Для более широкого знакомства с много- многогранниками см. [Gru] Griinbaum В. Convex Polytopes. New York: John Wiley & Sons, Inc. 1967. [Roc] Rockafellar R. T. Convex Analysis. Princeton, N. J.: Princeton University Press, 1970. [Имеется перевод: Рокафеллар Р. Выпуклый анализ.—М.: Мир, 1973.] Зацикливание в практических «адачах описано в статье IKS] Kotiah Т. С. Т., Steinberg D. 1. On the Possibility of Cycling with the Sim- Simplex Method OR, 26, No. 2 (March — April 1978), 374—376.
Комментарии и ссылки 71 Правило устранения зацикливания, приведенное в § 2.7, взято нз работы [В1] Bland R. Q. New Finite Pivoting Rules, Discussion Paper 7612, Center tor Operations Research and Econometrics (CORE), Universite Catholique de Louvain, Heverlee, Belgium, June 1976 (revised January 1977). Приведенное доказательство принадлежит Куну IKuJ Kuhn H. W. Class Notes, Princeton University, 1976. Вычислительные эксперименты по сравнению различных правил выбора столбца описаны в работе [KQ] Kuhn H. W., Quandt R. E. An Experimental Study of the Simplex Method, pp. 107—124, in Proceedings of Symposia on Applied Mathematics, vol. XV, ed. N. Metropolis and others. American Mathematical Society, Providence, R. I., 1963. Метод наискорейшего спуска относительно всех переменных описан в статье JGRJ Qoldfarb D., Reid J. К- A Practicable Steepest-Edge Simplex Algorithm, Math. Prog., 12, No. 3 (June 1977), 361—371. Пример зацикливания взят из работы (BelJ Beale E. M. L. Cycling in the Dual Symplex Algorithm, Naval Research Lo- Logistics Quarterly, 2, No. 4 A955), 269—275.
Двойственность 3.1 Двойственная задача линейного программирования в общей форме Если бы в линейном программировании не было ничего, кроме симплекс-алгоритма, то уже одно это давало бы большую пользу. Однако в рассматриваемой задаче есть также много интересных тео- теоретических аспектов, особенно в связи с комбинаторными задачами. Все они так или иначе связаны с идеей двойственности, к рассмот- рассмотрению которой мы сейчас и перейдем. Рассмотрим задачу ЛП в общей форме: min c'x, dix = bi, i(iM, А. 'ёЖ C.1) / € N_, Мы хотим воспользоваться критерием оптимальности из теоре- теоремы 2.8 и с этой целью преобразуем данную задачу к стандарт- стандартной форме. Для каждого неравенства из М введем переменную избытка х\, i?M; для каждой неограниченной переменной х^ j ? N, введем две новые неотрицательные переменные, поло- положив Xj = xj—xj и заменив столбец Лу- двумя столбцами Лу- и — Aj. Получим задачу ЛП min c'x, Ax = b, C.2) где x = col {xj, l?N\(xt, xj), j$N\ x't, i € M), c = col(c/f /€^|(c/f -cj), /€/V|0). Из критерия оптимальности с^=0 и симплекс-алгоритма выте- вытекает, что если задача C.2) имеет оптимальное решение х0, то существует базис Si для системы уравнений в задаче ЛП C.2),
ЗА. Двойственная задача линейного программирования 73 такой, что с' — (с'вВ'1) А ^=0. Таким образом, п'= с'вВ~1—допу- с'вВ~1—допустимое решение системы линейных ограничений я'Л<с', C.3) где п ? Rm и т — число строк в исходной матрице Л. Неравенства C.3) распадаются на три части, в зависимости от того какое множе- множество столбцов матрицы А в них участвует. Первое множество дает просто n'Aj^Cj, j?N. C.4) Следующее множество соответствует неограниченным перемен- переменным X], j ? Л', и связанные с ним неравенства идут парами: что эквивалентно равенствам л'Лу = сл j?N. C.5) Последнее множество соответствует неравенствам с номерами или л,->0, i?~M. C.6) Условия 3.4, 3.5 и 3.6 определяют ограничения новой задачи ЛП, называемой двойственной к исходной задаче ЛП, при этом исходная задача ЛП называется прямой. Вектор п' ~с'вВ~х допустим в двой- ственной задаче. Если определить функцию стоимости в двойствен- двойственной задаче как max n'b, то п' не только допустим, но и оптимален! Суммируем это в следующем определении и теореме. Определение 3.1. Пусть дана задача ЛП в общей форме, называе- называемая прямой. Тогда двойственная задача определяется следующим образом: Прямая Двойственная . задача задача ? Теорема 3.1. Если некоторая задача ЛП имеет оптимальное решение, то двойственная задача также имеет оптимальное реше- ' ние, при этом оптимальные значения их стоимостей равны. min a\x a\x\ xj\ c'x — bt >o ( € i € j e j e M M N N max n'b я, ^0 я,>0 я'/i/ < С/
74 Гл. 3. Двойственность Доказательство. Пусть хил — допустимые решения соответ- соответственно для прямой и двойственной задач. Тогда Ь. C.7) То есть стоимость в прямой задаче всегда не меньше стоимости в двойственной задаче. Поскольку мы считаем, что прямая задача имеет допустимое решение, то двойственная задача не может обла- обладать решением неограниченной стоимости. Двойственная задача име- имеет допустимое решение л', рассмотренное выше, поэтому, согласно симплекс-алгоритму, она имеет оптимальное решение. Заметим, что стоимость этого л' равна п'Ь=свВ~1Ь=с'вх0, что является оп- оптимальным значением стоимости в прямой задаче. Отсюда вытекает, согласно C.7), что л' оптимально в двойственной задаче. ? Важной чертой двойственности является симметрия, выражен- выраженная в следующей теореме. Теорема 3.2. Задача, двойственная к двойственной задаче ЛП, совпадает с прямой задачей ЛП. Доказательство. Запишем двойственную задачу в виде min л'(— Ь), и рассмотрим ее как прямую. Согласно определению 3.1, задача, двойственная к этой двойственной задаче ЛП, будет иметь вид max x'(— с), — а\х ==J—b, i?M, — a'ix = — b, i^M, которая, как нетрудно видеть, совпадает с исходной прямой зада- задачей. ? Задача линейного программирования всегда относится ровно к одной из следующих трех категорий: A) она обладает конечным оп- оптимумом, B) она обладает решением неограниченной стоимости, C) она не имеет допустимых решений. Таким образом, для прямой задачи и двойственной к ней имеется девять возможных комбина- комбинаций, показанных на рис. 3.1. Теоремы 3.1 и 3.2 исключают все клетки в первой строке и пер- первом столбце, кроме того случая, когда и прямая, и двойственная
3.1. Двойственная задана линейного программирования 75 задачи имеют конечный оптимум. Исключенные случаи отмечены крестиками, и таблица заполнена в соответствии со следующей те- теоремой. Теорема 3.3 [vN, Ga, GKT]. Если дана пара, состоящая из прямой и двойственной задач ЛП, то возможна в точности одна из трех ситуаций, показанных на рис. 3.1. Доказательство. Согласно C.7), если прямая или двойственная задача имеет неограниченную стоимость, то другая задача не может ^^\Двойственнм Прямая ^^ Конечный оптимум Неограниченная- Недопустимая Конечный оптимум О X X Неограничен- Неограниченная X X 0 Недопустимая X 0 0 Рис. 3.1. Возможные категории прямо-двойст- прямо-двойственной пары. иметь допустимого решения. Остаются только два случая, указан- указанные на рис. 3.1 как случаи 2 и 3. Простые примеры показывают, что оба этих случая возможны. Случай 2 имеет место, когда обе задачи недопустимы. Рассмот- Рассмотрим недопустимую прямую задачу Двойственная к ней задача имеет вид max Л! + л2, Л1 Л2= 1. и также недопустима.
76 Гл. 3. Двойственность Если добавить ограничения х*, х^О в прямой задаче, то она остается недопустимой, однако двойственная становится неогра- неограниченной, что дает пример случая 3. П Пример 3.1 (задача, двойственная к задаче о диете). Вернемся к задаче о диете, обсуждавшейся в примере 2.1. Двойственная к ней задача имеет вид max л'г, л'Л<с', л'>0. Она допускает следующую интерпретацию. Изготовитель пилюль хо- хочет выпустить на рынок пилюли, содержащие каждое из т пи- питательных веществ; цена единицы г-го питательного вещества рав- равна Л;. Он хочет быть конкурентоспособным по отношению к цене реальной пищи и в то же время максимизировать стоимость адек- адекватной диеты. Ограничения 1= I С/, /= 1, .... П, выражают ют факт, что стоимость в виде пилюль всех питательных веществ, содержащихся в /-м продукте, не больше чем стоимость самого /-го продукта. Функция стоимости л'г есть просто стоимость адекватной диеты. По теореме 3.1 оптимальная стоимость в пря- прямой задаче домохозяйки совпадает с оптимальной стоимостью в двойственной задаче изготовителя пилюль. В действительности это два способа представления одной и той же задачи. ? Дополняющая нежесткость Если внимательно рассмотреть определение двойственной зада- задачи, то можно заметить нечто вроде противоборства прямой и двой- двойственной задач, а именно, чем жестче ограничение в одной из них, тем свободнее соответствующее ему ограничение в другой. Точным выражением этого баланса является условие, известное как условие дополняющей нежесткости, необходимое и достаточное для того, чтобы хил давали оптимум соответственно в прямой и двойственной задачах. Теорема 3.4 (теорема о дополняющей нежесткости). Векторы х и л, допустимые соответственно в прямой и двойственной задачах, оптимальны в том и только в том случае, если Ui = n[(a'iX—6,-) = 0 для всех i, C.8) Vj=(Cj—n'Aj)Xj—0 для всех /. C.9)
| 3.2. Дополняющая нежесткость 77 Доказательство. Заметим, во-первых, что из соотношений двой- двойственности вытекает и^О для всех i и Vj^O для всех /. Положим Тогда и=0 в том и только в том случае, если выполняются равенства C.8), и 1>=0 в том и только в том случае, если выполняются равен- ства C.9). Далее, заметим, что u+v=c'x—n'b, поскольку если мы сложим равенства C.8) и C.9) для всех i и /, то все члены, содержа- содержащие как х, так и л, сократятся. Таким образом, равенства C.8) и C.9) выполняются в том и только в том случае, если u+t'=0, или п'Ь=с'х, что, согласно C.7), является необходимым и достаточным для того, чтобы хил оба были оптимальными. ? Из теоремы 3.4 вытекают важные следствия. Заметим, что если рассматриваемая пара х, л оптимальна и некоторое неравенство из ограничений двойственной задачи не обратилось в равенство, то соответствующая переменная в прямой задаче должна равняться нулю. Аналогично, если некоторая неотрицательная переменная строго положительна, то соответствующее неравенство должно обратиться в равенство. Пример 3.2. Задача, двойственная к задаче линейного про- граммирования из примера 2.6, имеет вид max л Зл,Н 2л, Ч nt-f 1 + •" Ц5ле - л., - л2 л2 1л2 -f 4 л., + 2ла ^ + 5л, < + п,< < Л3< ;i. : 1, :i, 1, ;i, 0 для всех i. Поскольку прямая задача задана в стандартной форме, условия до- дополняющей нежесткости C.8) автоматически выполнены. Условие C.9) принимает вид с2—л'Л2 = 0, с4—л'Л4 = 0, св-л'Л5 = 0, поскольку в оптимальном решении прямой задачи х2, х4 и хъ поло- положительны. Таким образом, второе, четвертое и пятое неравенства в двойственной задаче должны обратиться в равенства:
78 Гл. 3. Двойственность Л3=1 Решение этой системы о « я,. ——у. ла—I, соответствует стоимости 9/2 в двойственной задаче, что совпадает с оптимальной стоимостью в прямой задаче. ? 3.3 Лемма Фаркаша Лемма Фаркаша является фундаментальным фактом относитель- относительно векторов в Rn, который в некотором смысле схватывает сущность двойственности. Эту лемму можно было бы использовать для полу- получения результатов, описанных ранее в этой главе, где мы вместо нее ч •Векторы в этой области имеют неотрицательные проекции на я, и аг Рио. 3.2. Пример конуса. опирались на конструктивные аспекты симплекс-алгоритма. В дан ный момент мы можем получить лемму Фаркаша как следствие не- некоторых известных нам результатов, относящихся к линейному про- программированию. Введем вначале полезное определение. Определение 3.2. Пусть дано множество векторов at ? Rn, i= = 1, . . ., т. Конусом, порожденным множеством {аг}, обозначае- обозначаемым через C(at), называется множество { т \ C(a() = {xeR": х= 2 л,а„ я,^*0, г = 1 т>. ? (.i = i ) Пример 3.3. На рис. 3.2 показаны два вектора в У?2 и соответст- соответствующий им конус. ? Предположим теперь, что нам дано множество векторов {at} и некоторый вектор с ? R", и пусть следующее условие связывает
3.3. Лемма Фаркаша 79 I {a.i\ и с: если проекции некоторого вектора y^R" на все щ неот- X рицательны, ю его проекция на с также неотрицательна. Лемма • фаркаша утверждаем, что это условие эквивалентно тому, что с принадлежит конусу, порожденному векторами at. Для векторов на рис. 3.2 это означает, что если каждый вектор из области, отме- ; ченной дугой, имеет неотрицательную проекцию на с, то c(tC(at), и обратно, если c?C(at), то каждый вектор из области, отмеченной дугой, имеет неотрицательную проекцию на с. Мы увидим сейчас, что этот результат непосредственно следует из теоремы 3.1. Теорема 3.5 (лемма Фаркаша) [Fa]. Пусть даны векторы at € R", t = 1, • ¦ •, т, и с g R", тогда (у'а^О для всех i=$> y'cZ^O) &c?C (a,-). Доказательство. Рассмотрим сначала импликацию <=, которая на самом деле тривиальна. Если т с = 2j ftfiit nt ^ ^> i = i то при условии, что y'ai^O. Суть теоремы составляет импликация =>. Рассмотрим задачу ЛП min с' у, , i=\ m, Эта задача допустима, поскольку у-^=0 — допустимая точка. Она 1. также ограничена, так как по условию из a'iy^O для всех i выте- 'Z каетг/'с^О. Поэтому двойственная задача \ max О, ¦ где если ;' имеет допустимое решение. Следовательно, найдется я, такое, что т X? ---- С\ i—i
80 Гл. 3. Двойственность 3.4 Задача о кратчайшем пути и двойственная к ней задача Определение 3.3. Пусть дан ориентированный граф G=(V, ?), и пусть каждой дуге е^Е сопоставлен неотрицательный вес ^0 .0. Рис. 3.3. Взвешенный ориентированный граф для ЗКП; веса обведены кружком. Индивидуальная задача о кратчайшем пути (ЗКП) состоит в на- нахождении ориентированной цепи минимального общего веса из вы- выделенной начальной вершины s в выделенную конечную верши- вершину t. ? Если сформулировать эту задачу как задачу оптимизации, то до- допустимым множеством и функцией стоимости будут F = {последовательности P = (eil, ..., e/fc), являющиеся ориентированными цепями из s в / в графе G\, Индивидуальную ЗКП можно сформулировать как задачу ЛП, для чего вначале определим матрицу инциденций (вершин и дуг) А = [ац] графа G следующим образом: 1+1, если дуга е^ выходит из вершины ifi—l, ..., \V\ — 1, если дуга е;- входит в вершину i I /== 1, ..., | Е\ О в противном случае. Пример 3.4. На рис. 3.3 показан ориентированный граф и соот- соответствующие веса дуг, которые определяют некотрую индивидуаль- индивидуальную ЗКП. Соответствующая матрица инциденций имеет вид S t а Ъ + 1 0 -1 0 +1 0 0 1 0 0 0 -1 + 1 0 0 -1 0 +1 ?
3.4. Задача о кратчайшем пути 81 Чтобы перейти к формулировке в виде общей задачи ЛП, свяжем с каждой дугой ef переменную /;-, представляющую поток некоторого воображаемого продукта по дуге в направлении ориентации. Тогда закон сохранения потока в вершине i выражается равенством a'if=Q, где / — вектор-столбец, в котором /-я компонента равна ft, и, как обычно, й}—это t-я строка матрицы А. Цепь из s в t можно рассматривать как поток одной единицы продукта, выходя- выходящий из s и приходящий в L Такой поток должен удовлетворять ра- равенству Af = [ + \, -1, 0, 0, ..., Of, где +1 соответствует строке s и —1 соответствует строке t. Конечно, / может, вообще говоря, принимать не целые значения, однако, если рассмотреть задачу о потоке минимальной стоимости min c'f при условии C.10) Л/ = [+1, -1,0, 0, ..., Of, ?; можно интуитивно понять, что существует оптимальное решение, в котором каждое ft есть либо 0, либо 1, представляющее единичный поток вдоль некоторого кратчайшего пути из s в t в графе G. (Мы докажем это позднее, в гл. 13, в более общем контексте. См. также задачу 17.) Заметим далее, что \V\ уравнений в нашей задаче зависимы, пос- поскольку из выполнения закона сохранения в любых \V\—1 верши- вершинах вытекает его выполнение в оставшейся вершине. Поэтому можно выбросить любое одно уравнение. Пример 3.4 (продолжение). Опустим уравнение, соответству- соответствующее строке /. Это дает то преимущество, что остается неотрицатель- неотрицательный нулевой столбец. В результате получаем таблицу 0 1 0 0 /, 1 1 -1 0 h 2 1 0 /з 2 0 1 . 1 А 3 0 1 0 Л 1 0 0 1 I Прибавляя строку 1 к строке 2, получаем бдр, состоящее из столб- |: Цов 1, 4 и 5. Сделав относительные стоимости этих базисных столб- 1 Цов нулевыми, получаем таблицу
82 Гл. 3. Двойственность А А А А А A = -4 1 1 0 0 1 0 -1 1 CO 1 0 0 1 -1 0 0 1 0 0 0 0 1 Произвольный базис представляет множество из \у\—1 дуг, не- некоторое подмножество из которых соответствует цепи данной сто- стоимости из s в i. Дуги, не входящие в эту цепь, представляют вы- вырожденные компоненты базиса. В рассматриваемом примере теку- текущий базис представляет цепь (еь е4) со стоимостью 4 и вырожденную Дугу е6. Операция замещения, вводящая в базис столбец, соответствую- соответствующий е2, дает приведенную ниже оптимальную таблицу (ведущий элемент выделен выше кружком). А /г /з Л А — Z = /, = Л = /| = -3 0 1 1 0 1 0 0 0 0 1 0 1 -1 1 0 1 -1 1 1 0 0 0 1 Эта таблица соответствует кратчайшей цепи (е2, е6) со стой мостью 3 и вырожденной дуге ех. Рис. 3.4 иллюстрирует операцию Выводимая дуга Вводимая' 2 дуга Рис. 3.4. Базис C заштрихованные дуги) и столбец, вводимый в базис (дважды заштрихо- заштрихованная дуга). замещения: одна дуга добавляется к базису и одна дуга вычитается из базиса, порождая новую цепь меньшей стоимости. ? Возращаясь к формулировке C.10) в виде общей задачи ЛП, можно следующим образом записать задачу, двойственную к не- некоторой индивидуальной ЗК.П, приписав каждой вершине i пере-
Г ~ i менную nt: 3.5. Двойственная информация в таблице 83 max ns—nt, C.11) Учитывая определение матрицы инциденций, можно записать нера- неравенства в двойственной задаче просто как /^.ci/ для каждой дуги (г, j)?E. C.12) п( Условия дополняющей нежесткости из теоремы 3.4 имеют в дан- - ной задаче простую интерпретацию. Цепь / и некоторые значения О Рис. 3.5. Оптимальное решение я (в квадрати- квадратиках) для задачи, двойственной к задаче о крат- кратчайшем пути. переменных я одновременно оптимальны тогда и только тогда, ког- когда а) для каждой дуги в кратчайшей цепи (которая соответствует положительному f) в прямой задаче) соответствующее неравенство в C.12) обращается в равенство и б) каждое строгое неравенство в C.12) соответствует дуге, не входящей в кратчайшую цепь. Пример 3.4 (продолжение). На рис. 3.5 показан оптимальный выбор переменных я, соответствующий кратчайшей цепи (s, b), (b, t). Заметим, что на самом деле нет значения л, соответствующего вершине U поскольку уравнение для вершины t было опущено. Однако по условию дополняющей нежесткости его можно легко по- получить, вычитая стоимость последней дуги (b, t) в кратчайшем пути из ль (как показано на рисунке). ? 3.5 Двойственная информация в таблице Нас не должен удивлять тот факт, что заключительная таблица в симплекс-алгоритме дает как оптимальное решение прямой задачи, так и оптимальное решение двойственной задачи. Удобнее всего
84 Гл. 3. Двойственность считать, что мы начинаем с таблицы, в левой части которой стоит единичная матрица; обычно она соответствует искусственным пере- переменным или переменным недостатка На рис. 3.6 показана исход- исходная таблица при этом предположении. На выходе симплекс-алгоритма после получения оптимального решения мы имеем таблицу, в которой часть, лежащая ниже строки г Cj-Kj В Рис. 3.6. Исходная таблица. Рис. 3.7. Заключительная таблица. стоимости, получается из той же части исходной таблицы умноже- умножением на В'1, где В — множество столбцов исходной таблицы, соот- соответствующих оптимальному бдр. Кроме того, как мы видели в до- доказательстве теоремы 3.1, строка стоимости при достижении оп- оптимальности принимает вид 7, г л' А ~~> О /Q iq\ где л — оптимальное решение двойственной задачи. В столбцах 1,2, . . ., т, где по предположению вначале стояла единичная мат- матрица, А/ есть единичный вектор ejt поэтому с^с,—п/у /== 1, ..., т. C.14) Следовательно, из заключительной таблицы можно получить оп- оптимальное решение двойственной задачи по формулам П/ = <-7—с,, /=1, ..., т. C.15) Отметим также, что в заключительной таблице на месте исходной единичной матрицы стоит матрица Б, как показано на рис. 3.7. Это обстоятельство будет с большой выгодой использовано в сле- следующей главе. Пример 3.5. В примере 2.8 в исходной таблице су=0 в (настоя- (настоящей) строке стоимостей г. Поэтому в заключительной таблице П}=—си откуда следует, что nl=—5/2, л2=1, л3=1, подтверждая пример 3.2. ? Пример 3.6. В примере 3.4 (примере задачи о кратчайшем пути) мы не образовали вначале требуемую единичную матрицу. Если же мы хотим получить оптимальное решение двойственной задачи, то удобно начинать с такой матрицы в таблице. Если бы мы посту-
i. 3.6. Двойственный симплекс-алгоритм 85 с; пили таким образом, мы получили бы на месте этой матрицы в за- заключительной таблице значения, показанные на рис. 3.5 (см. зада- задачу 4). ? 3.6 Двойственный симплекс-алгоритм Критерий оптимальности с^О можно рассматривать как выраже- выражение допустимости двойственной переменной п'=с'вВ~1, поскольку c' = c'—z' = c'—cBB-1A = c'—n'A. C.16) Таким образом, можно считать, что в симплекс-алгоритме мы поддер- поддерживаем допустимость прямого решения и стремимся к допустимо- • сти двойственного. Такой алгоритм называется прямым алгорит- алгоритмом. Точно так же можно начать с допустимого двойственного ре- решения и стремиться к допустимости прямого. Такой алгоритм назы- называется двойственным симплекс-алгоритмом. Рассмотрим его более , детально. Пусть у нас имеется таблица с базисным (но недопустимым) ре- • шением и допустимое двойственное решение (строка стоимости - *о/^0)- Выберем строку (пусть, например, строку г), соответствую- !. щую недопустимой компоненте прямой задачи хг0<0. Тогда в г; строке г лежат возможные ведущие элементы. Рассмотрим только Г те элементы, для которых хг}<0, поскольку мы хотим, чтобы при ! операции замещения г возрастало (—г убывало). Это следует из I того, что двойственное решение остается допустимым и, следова- I"- тельно, меньшим оптимальной стоимости (на самом деле мы решаем L задачу максимизации). После замещения с ведущим элементом \- xrs новые элементы в строке стоимости будут равны Мы хотим, чтобы эти элементы остались неотрицательными, с тем чтобы сохранилась допустимость двойственного решения. Следова- тельно, для хгу.<0 должно быть xOJ/xr/<xos/xrs. Выбор ведущего столбца определяется, таким образом, условием max [xo-/xr-]. j:xrj<0 Отметим красивую симметрию по отношению к прямому сим- плекс-алгоритму: в двойственном симплекс-алгоритме сначала вы- бирается строка, а затем находится столбец для введения в базис. Проверка отношений состоит в поиске максимума среди неотрица- тельных отношений элементов строки 0 и строки г вместо поиска минимума среди положительных отношений элементов столбца 0 и столбца s. При отсутствии вырожденности мы движемся от (недопустимого прямого) базисного решения к (недопустимому прямому) базисному решению, увеличивая стоимость. В результате мы должны выйти из множества базисных решений и, следовательно, остановиться. При
86 Гл. 3. Двойственность наличии вырожденности необходимо использовать какое-нибудь правило, такое, например, как правило Блэнда (см. задачу 2). Пример 3.7. Вернемся к задаче о кратчайшем пути из примера 3.4. и выберем базис в исходной таблице, состоящий из столбцов 2, 3 и 4. Из рис. 3.3. легко видеть, что это недопустимое прямое реше- решение, поскольку множество е2, е3, ei не содержит ориентированной цепи. Операция замещения, в результате которой получается этот базис, приводит к таблице Л = A = -3 l -l l Л l l i 0 h 0 1 0 0 Уз 0 0 1 0 n 0 0 0 1 /s 0 0 в Она ..^Асгавляет точку, недопустимую в прямой и допустимую в двойственной задачах, и можно применить двойственный симплекс- алгоритм, в результате чего получаем ведущий элемент х.2г,, отме- отмеченный в таблице. Следующая таблица имеет вид /s=> -3 1 1 0 1 i 1 -1 0 1 0 0 0 0 -1 1 0 0 0 1 0 0 1 0 и оптимальна; дуга е3 заменилась дугой еъ, что привело к оптималь- оптимальной цепи (е2, еъ). ? 3.7 Интерпретация двойственного симплекс-алгоритма ') Двойственный симплекс-алгоритм настолько симметричен по отношению к прямому симплекс-алгоритму, что читатель, естест- естественно, может подозревать, что первый из них есть просто второй, примененный к двойственной задаче. Мы сейчас подтвердим это подозрение. На любом шаге прямого симплекс-алгоритма можно интерпре- интерпретировать базисные переменные как переменные недостатка и ?Rm и 1) Мы благодарим Ф. Садри за помощь при работе над этим параграфом.
3.7. Интерпретация двойственного симплекс-алгоритма 87 записать прямую задачу в виде min c'x, х, ы Эта задача эквивалентна задаче max — c'x, Ax^b, C.17) C.18) двойственная к которой имеет вид min n'b, п'А^—с', C.19) Вводя переменные избытка s g R", можно записать эту задачу в стандартной форме следующим образом: minn'b, n'A — s' = — c'; C.20) или как следующую задачу в стандартной форме min b'n, (-A')n+s = c, C.21) я, s>0. У нас теперь две задачи в стандартной форме: C.17) и C.21), которые можно интерпретировать как пару, состоящую из прямой и ь и 0 X с А с S 0 л Ь -А1 Рис. 3.8. Таблицы в стандартной форме, соот- соответствующие прямой задаче C.17) и двойствен- двойственной задаче C.21). двойственной задач. В прямой задаче имеются базисные переменные и и внебазисные переменные х\ в двойственной задаче — базисные переменные ь и внебазисные переменные л. (Эти две задачи можно на самом деле представить в одной и той же таблице, опустив эле- элементы единичных базисов.) Представим обе задачи C.17) и C.2!) в нашем обычном стандарт- стандартном виде и запишем их рядом, как показано на рис. 3.8. Можно по-
Прямая задача Л к а1к атк / \ \ 1 ami Замещении 1 а 1к а,, J 1 ап аи Двойственная задача —А' т Г 1 -птк -"ml -"Ik ~amir + -г- "II 1 / / aU "Ik aIJ 1 (a) F) .o,,,,,ci «итяишл и ппямпй зяляче. б) Операция замещения в двойственной задаче.
Задачи 89 казать теперь, что операция замещения из прямого симплекс-ал- геритма, примененная к двойственной таблице, соответствует опе- операции замещения из двойственного симплекс-алгоритма, применен- примененной к прямой таблице. Рассмотрим операцию замещения прямого симплекс-алгоритма в двойственной таблице. Вначале мы выбираем br<.0. Выбор ведущего элемента определяется условием ci = — max _?L L(—ary)J i-arf<u\_arf\ min >0 L(—ay)J iarf что соответствует выбору ведущего элемента в двойственном сим- симплекс-алгоритме. На рис. 3.9 показана типичная операция заме- замещения в обеих таблицах, для сравнения расположенных рядом таблиц. Читатель может проверить, что операция замещения в двой- двойственной таблице в точности соответствует такой же операции в прямой таблице при условии, что новый внебазисный столбец меня- меняется местами с новым базисным столбцом в каждой таблице (см. задачу 1). Задачи 1. (Ф. Садри.) Проверьте, что операция замещения прямого симплекс-алго- симплекс-алгоритма, примененная к двойственной таблице на рис. 3.8, в точности соответствует операции замещения двойственного симплекс-алгоритма, примененной к соответст- соответствующей прямой таблице, где в каждой таблице новый внебазисный столбец ме- меняется местами с новым базисным столбцом. 2. (Ф. Садри.) Используя результат предыдущей задачи, разработайте пра- правило устранения зацикливания для двойственного симплекс-алгоритма, анало- аналогичное правилу Блэнда для прямого симплекс-алгоритма. Покажите, что ваше правило работает. 3. Обоснуйте аккуратно неравенства C.7) в доказательстве теоремы 3.1. 4. Найдите оптимальное двойственное решение задачи о кратчайшем пути из примера 3.4, начав симплекс-алгоритм с подходящей единичной матрицы, как предложено в примере 3.6, и проверьте, таким образом, двойственное решение, показанное на рис. 3.5. 5. Физик производит измерения переменной у(х), при этом результаты получаются в виде пар (х;, {/,-). Физик хочет найти прямую линию, которая наи- наилучшим образом соответствовала бы этим данным в том смысле, что максимальное расстояние по вертикали между любой точкой (х,-, у{) и этой линией должно быть как можно меньше. Сформулируйте эту задачу как задачу ЛП. Из каких сообра- соображений вы могли бы перейти к решению двойственной задачи? 6*. [ЮГ]. Докажите, что если задача ЛП в стандартной форме имеет опти- оптимальное решение и все оптимальные решения невырожденны, то двойственная задача имеет единственное оптимальное решение. 7*. Рассмотрим индивидуальную задачу ЛП в стандартной форме. Предпо- Предположим, что эта прямая задача имеет вырожденное оптимальное решение. Будет ли оптимальное решение двойственной задачи обязательно не единственным? Если да, докажите. Если нет, приведите контрпример. 8. Покажите, что конус является выпуклым множеством. 9*. Покажите, что конус является замкнутым множеством. (Обратите особое внимание на эту задачу! Решение можно найти в [ЮГ].) 10. Проверьте, что лемма Фаркаша справедлива в том случае, когда множе- множество {а,-} пусто. 11. Истинны или ложны следующие утверждения: а) если задача линейного программирования недопустима, то двойственная к ней задача должна быть неограниченной;
90 Гл. 3. Двойственность б) если задача линейного программирования неограниченна, то двойствен- двойственная к ней задача должна быть недопустимой 12. Покажите, что задача, двойственная к адаче ЛП в канонической форме, также оказывается в канонической форме. 13. Пусть некоторая задача о сети формулируется для ориентированного графа G=(V, E) с использованием.матрицы инциденцнй вершин и дуг так же, как в примере 3.4. Покажите, что множество, состоящее из | VI—1 столбцов в этой мат- матрице, линейно независимо тогда и только тогда, когда соответствующие дуги, рассматриваемые как неориентированные ребра в неориентированном варианте графа G, образуют дерево. (Таким образом, базис соответствует дереву.) Дайте интерпретацию операции замещения в свете этого факта. 14. Рассмотрим следующую задачу ЛП, которую мы назовем задачей Р: а) Решите Р с помощью симплекс-алгоритма. б) Запишите задачу D, двойственную к Р. в) Запишите условия дополняющей нежес!кости для этой задачи и используй- используйте их для решения двойственной задачи D Проверьте наш ответ, вычисляя опти- оптимальные стоимости в задачах PhD. 15. Еще раз решите задачу 14 заменив неравенство в Р неравенством *]+ 2—5. 16. Предположим, что в задаче о кра1чайшем nyin допускаются отрицатель- отрицательные веса дуг, и мы рассматриваем пример, и котором имеется ориентированный цикл с отрицательным суммарным весом Что произойдет, если применить сим- симплекс-алгоритм? Постройте такой пример Что можно сказать о двойственной за- задаче в этой ситуации? 17. Докажите, что в задаче ЛП, построенной для задачи о кратчайшем пути, всегда имеется оптимальное решение, в котором каждое //=0 или 1. В каком случае имеются оптимальные решения, не удовлетворяющие этому условию? 18. Рассмотрите (иХи)-матрицу инциденций вершин и дуг ориентированного графа, имеющего в точности п вершин и п дуг. Покажите, что ее определитель равен нулю. 19. Предположим, что задача ЛП в стандартной форме имеет единственное оптимальное решение. Следует ли из этого, что двойственная задача имеет невы- невырожденное оптимальное решение? Верно ли обратное утверждение? 20. Пусть задача ЛП в стандартной форме содержит два столбца, которые пропорциональны с положительным коэффициентом пропорциональности. По- Постройте эквивалентную задачу ЛП, имеющую на один столбец меньше. 21. Другой формой леммы Фаркаша и теоремы двойственности является следующее утверждение. Система линейных неравенств Ах<:Ь называется проти- противоречивой, если существует у, такой, что у'А=0, у'Ь<Х) и у^О. Покажите, что система Ax*?b не имеет решения тогда и только тогда, когда она противоречива Комментарии и ссылки [vN] Джон фон Нейман был, как сообщает Д. Гейл, первым, кто сформулировал теорему двойственности (теорему 3.3) в заметках, имевших частное хож- хождение, не позднее 1947 года. См. [Ga) Gale D. The Theory of Linear Economic Models. New York: McGraw-Hill Book Company, 1960. [Имеется перевод: Гейл Д. Теория линейных эконо- экономических моделей.— М.: ИЛ, 1963.] Гейл приводит первое доказательство, основанное на запивках фон Неймана, в рабо те
Комментарии и ссылки . 91 [GKT] Gale D. Kuhn H. W. Tucker A. W. On Symmetric Games, in Contributions to the Theory of Games, ed H. W. Kuhn and A. W. Tucker, Ann. Math. Studies, No. 24, Princeton, N. J.: Princeton University Press, 1950. Лемма фаркаша взята из статьи [Fa] Farkas J. Theorie der Einfachen Ungleichungen, J. Reine und Angewandte Math., 124 A902), 1—27. Элементарное доказательство утверждения из задачи 9 дано в книге [ЮГ] Юдин Д. Б. Гольштейн Е. Г. Линейное программирование.— М.: Наука, 1969. Задача 21 содержится в работе [Ku] Kuhn H. W. Solvability and Consistency for Linear Equations and Inequa- Inequalities, Amer. Math. Monthly, 63 A956), 217—232 и была предложена в следующей интересной статье Хватала: [Ch] Chvatal V. Some Linear Programming Aspects of Combinatorics, Report STAN- CS-75-505, Computer Science Department, Stanford University (September 1975).
Вычислительные аспекты симплекс-алгоритма 4.1 Модифицированный симплекс-алгоритм Если бы мы реализовали симплекс-метод так, как описано в гл. 2, то нам пришлось бы на каждой операции пересчитывать всю таблицу размера (m+l)x(n-f-1). Оказывается, что этого можно из- избежать, если хранить меньшую изменяемую матрицу размера (m-H)X(m-fl) и порождать относительные стоимости с} и столбцы X] тогда, когда они нужны. Из этого вытекают важные практиче- практические следствия, которые мы обсудим после описания метода. Будет показано также, как этот метод, называемый модифицированным симплекс-методом (или иногда методом обратной матрицы), мож- можно применить к важной задаче о максимальном потоке и как он приводит к принципу декомпозиции для задач определенного вида. Мы видели в предыдущей главе, что начиная симплекс-алгоритм с единичной матрицы в исходной таблице, мы на любой последующей итерации с базисом В будем иметь на ее месте матрицу В. Пред- Предположим, что мы начинаем с единичной матрицы, стоящей в левой части таблицы, и нулевой строки стоимости, и будем хранить только строки и столбцы с номерами от нуля до т. Эту матрицу размера (т+1)х(т-\-\) на итерации / назовем CARRYU); ниже показана исходная матрица CARRY{0\ D.D CARRY @)
4.1. Модифицированный симплекс-алгоритм 93 После /-й итерации в симплекс-алгоритме получим ~Z= --о D.2) CARRY0' Мы следим также за текущими базисными переменными, а именно за упорядоченным множеством индексов В. Исходная таблица Л, текущая матрица CARRYil) и базисное множество В достаточны для выполнения прямого симплекс-ал- симплекс-алгоритма. При этом выполняются следующие шаги. 1. (Операция оценивания.) Вычислять по очереди относитель- относительные стоимости -с, = с,-п'А,, D.3) пока не найдется отрицательное с, (пусть, например, при /=s); если такого с} нет, остановиться, выдав оптимальное решение. 2. (Порождение столбца.) Вычислить столбец Xs в том виде, в каком он стоял бы в 1-й таблице, по формуле Х, = В-М.Г D.4) Затем определить ведущий элемент, скажем xrs, обычной проверкой отношений D.5) min г: xls>o v*<* или сделать вывод, что стоимость неограниченна. 3. (Замещение.) Преобразовать CARRYU) в CARRYU+1) так, как если бы мы производили операцию замещения с ведущим эле- элементом xrs и CARRYU) стояла бы в левом конце таблицы. Эта опе- операция использует вычисленный столбец Xs. 4. (Преобразование базиса.) Заменить г-й элемент В на индекс нового базисного столбца s. Центральный момент в описанном алгоритме — порождение столбца на шаге 2; имея обратную базисную матрицу В~х мы имеем достаточно информации для вычисления любой части таб- таблицы. При использовании модифицированного симплекс-метода как двухэтапного алгоритма необходимо обратить внимание на неко- некоторые детали. Во-первых, если мы начинаем с искусственных пере-
94 Гл. 4. Вычислительные аспекты симплекс-алгоритма менных с единичной стоимостью, то мы должны сделать строку стоимости нулевой. Для этого все строки вычитаются из строки О, поэтому на этапе I все с,- в D.3) вычисляются по формуле т Cj — dj—n'A/t где dj = ~ ^ai} D.6) и где, как обычно, пц— элемент исходной таблицы При переходе к этапу II необходимо следующим образом изменить строку стои- стоимости. В качестве стоимости dj в D.6) необходимо взять исходную стоимость С/ и нулевую строку матрицы CARRY в начале этапа II необходимо вычислить по формуле —п' =—с'^В'1. 4.2 Вычислительные эффекты модифицированного симплекс-алгоритма |Ве, ОН, Las) На первый взгляд кажется, что преобразование матрицы размера (т-\-\)х(т+1) вместо таблицы размера (m-H)x(n+l) уже должно привести к сокращению вычислений. Рассмотрим, однако, опера- операцию оценивания в модифицированном симплекс методе. Она тре- требует вычисления скалярных произведений п'А; двойственной пе- переменной it на столбец Aj из таблицы исходной задачи. Если это вычисление производится для каждого внебазисного столбца, то оно требует тх(п—т) умножений. Но это не намного меньше, чем число умножений, необходимых для преобразования таблицы в обычном симплекс-методе! Реальные преимущества модифицированного метода менее за- заметны, однако очень важны. Во-первых, нам не обязательно вы- вычислять относительные стоимости всех внебазисных столбцов; мы можем взять первый столбец с отрицательной стоимостью, как в правиле Блэнда (см. § 2.7). При этом объем вычислений составит лишь некоторую долю от вычислений, необходимых для оценивания всех столбцов, долю, определяемую средним числом столбцов, ко- которые нужно просмотреть прежде, чем будет найден столбец с отри- отрицательной относительной стоимостью. Второе реальное преимущество модифицированного метода вы- вытекает из того факта, что операция оценивания использует столбцы Aj исходной таблицы. Как мы видели в задаче о кратчайшем пути и увидим во многих аналогичных задачах комбинаторного характера, исходная таблица очень часто оказывается разреженной. Например, если она является матрицей инциденций вершин и дуг графа, то она содержит всего 2п ненулевых элементов. Отсюда вытекает не только то, что операцию оценивания можно производить быстро, но также и то, что исходную таблицу можно хранить в очень ком- компактном виде и, быть может, вообще не вычислять явно. Мы про- проиллюстрируем эти преимущества в следующем параграфе.
4.3. Задача о максимальном потоке 95 Необходимо упомянуть одно усовершенствование модифициро- модифицированного симплекс-метОда, в котором обратная базисная матрица хранится в виде произведения, а не в виде явной матрицы размера (m+l)x(/n+l). Каждую операцию замещения можно рассматри- рассматривать как умножение слева на матрицу Р, совпадающую с единич- единичной матрицей размера (mfl)x (/п+1) везде, кроме столбца г, содер- содержащего вектор — xls — *г. где элемент \/xrs стоит на r-м месте. Тогда на каждом шаге I те- текущая матрица CARRYa< может быть записана в виде и каждую матрицу Р можно хранить очень компактно, поскольку она определяется только индексом г и вектором ij. Когда последова- последовательность векторов tj становится слишком длинной, ее можно заменить более короткой последовательностью, используя процесс, называемый переобращением, в результате которого находится эк- эквивалентная, но более короткая последовательность замещений, приводящая к текущему базису. Этот метод может существенно уменьшить память и время, необходимые для выполнения симплекс- алгоритма, особенно если обратить специальное внимание на умень- уменьшение числа ненулевых элементов в последовательности векторов tj. Более детальное рассмотрение этих методов читатель может найти в [ОН, Las]. 4.3 Задача о максимальном потоке и ее решение модифицированным методом В некоторых задачах о сетях, которые можно сформулировать как задачи линейного программирования, матрицу ограничений можно извлечь непосредственно из графа, рассматриваемого в задаче, и, как мы отметили в предыдущем параграфе, эту матрицу вовсе не обязательно вычислять явно. Мы проиллюстрируем это на задаче о максимальном потоке, фундаментальной задаче, которая неодно- неоднократно будет появляться далее в этой книге. Определение 4.1. Пусть дана потоковая сеть N—{s, t, V, Е, b) с «=|V| вершинами и т = \Е\ дугами. Индивидуальная задача о максимальном потоке (ЗМП) определяется как задача нахождения потока / ? Rm из s в t максимальной величины v. ? Пример 4.1. На рис. 4.1 показана потоковая сеть с га=4 верши- вершинами и /я = 5 дугами. Легко проверить, что величина максимального потока из s в t равна 2. ?
96 Гл. 4. Вычислительные аспекты симплекс-алгоритма Сформулируем теперь задачу о максимальном потоке как задачу ЛП несколько необычным способом. Пусть дуги занумерованы, Q как обычно, el7 . . ., ет, и пусть Сь . . ., Ср — занумеро- занумерованный список всех цепей из s в t. В нашей задаче ЛП будет т строк, по одной для каждой дуги, и р столбцов, по одному для каждой цепи С;- из s в t. Ко- Конечно, в любой достаточно боль- большой задаче будет огромное чис- число цепей из s в t, но, как отме- отмечено выше, мы не намерены вы- выписывать явно матрицу ограниче- ограничений. Определим матрицу инциденций дуг и цепей Ъ=Ыц] следу- следующим образом: О Рис. 4.1. Потоковая сеть, иллюст- иллюстрирующая ЗМП. Числа в кружках — пропускные способности. | 1, если et входит в Cj, iJ \ О в противном случае, i=l, т; /=1, Тогда ограничения пропускных способностей принимают Задача состоит в максимизации суммы всех потоков повеем цепям, т. е. ищется mine'/, где с — (— 1, ..., — 1)€ЯЯ- Таким образом, полная формулировка задачи имеет вид mine'/, f>0. Чтобы преобразовать эту задачу ЛП к стандартной форме, вве- введем переменные недостатка s ? Rm и определим расширенный век- вектор потока }=(f\s), соответствующий вектор стоимости с=(б'|0), и новую матрицу ограничений D=(D\I). Тогда наша задача в стандартной форме будет иметь вид min г = с'}, Щ=Ь, D.7) Каждая переменная недостатка s; представляет собой разность между потоком по дуге i и пропускной способностью bt, i= I, . . ., т. Предположим теперь, что для решения этой задачи использу- используется модифицированный симплекс-алгоритм, и на некотором шаге мы имеем бдр и соответствующую двойственную переменную л б Rm. (Заметим, что нет необходимости проводить этап I, поскольку на-
4.3. Задача о максимальном потоке 97 чальное допустимое решение задачи D.7) можно получить, положив ^=0 и s=b, что соответствует нулевому потоку.) Тогда, согласно D.3), критерием выгодного введения столбца (цепи С,) в базис будет условие где Dj есть /-й столбец матрицы инциденций дуг и цепей D. Этот критерий можно записать в виде (—л')О,-<+1, поскольку С; = =—1 для всех /=1, . ., р. Последнее неравенство имеет следующую интерпретацию. Век- Вектор —л — это некоторый вектор весов на дугах, и —n'Dj— стои- стоимость цепи С) при этих весах. Тогда введение некоторой цепи в ба- базис выгодно, если ее стоимость меньше чем 1. Итак, мы пришли к основному выводу: для нахождения выгод- выгодного столбца достаточно найти кратчайшую цепь из s в /для весов Рис. 4.2. Нумерация дуг в примере. —п. Если стоимость этой кратчайшей цепи, скажем Су, не меньше чем 1, то выполняется критерий оптимальности, в противном слу- случае Cj вводится в базис. Таким образом, в процессе вычислений требуется только хранить матрицу CARRY размера (m+l)x(m+l) и многократно решать задачу о кратчайшем пути. Задача о кратчайшем пути становится (как мы увидим позднее) намного проще, если стоимости ребер неотрицательны. Это можно обеспечить следующим образом: если некоторое —л{ отрицательно, то мы просто вставляем соответствующую переменную недостатка st в базис. Пример 4.1 (продолжение). Вернемся к простой задаче о макси- максимальном потоке, показанной на рис 4.1. Занумеруем дуги так, как показано на рис. 4.2, и запишем первую матрицу CARRY в виде — z = si - S2 --- s* — 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 Л"! 3U32
98 Гл. 4. Вычислительные аспекты симплекс-алгоритма Исходные веса всех дуг равны нулю, поэтому мы можем начать ал- алгоритм с введения в базис любой кратчайшей цепи (длины 0). Да- Давайте поступим неправильно и начнем с цепи, которая не входит в оптимальное решение, например С1=(е1, еь, е4). В таблице ей соот- соответствует столбец -1 и после выполнения указанной операции замещения мы получим следующую матрицу CARRY: — г — Г, = CARRY'" = 1 1 , 1 [ -I Взвешенная сеть, соответствующая этому решению, показана на рис. 4.3. Кратчайшим путем в этой сети является цепь Сг=(ея, ел) длины 0<1, поэтому мы введем С2 в базис. Перед этим мы должны вычислить текущий столбец по формуле -1 О О 1 ® О с, = -I После указанной операции замещения получим с, = S1 = 1 1 1 1 1 1 -1 -1 1 1 1  1 I
4.3. Задача о максимальном потоке 99 Новая взвешенная сеть показана на рис. 4.4. Кратчайшим путем в этой сети является C3=(ei, e2) стоимости 0-<1; поэтому мы вычис- Рис. 4.3. Задача о кратчайшем пути, соответ- соответствующая второму замещению. ляем текущий столбец 1 © 1 1 и производим указанное замещение, что приводит к матрице <— о =ч -1 - n'Dj —г — С3- S2 -- ¦11 =' Сг -- Si - - 2 1 1 1 1 1 1 1 -1 в которой г——2 (что соответствует потоку величины 2). Новая за- задача о кратчайшем пути показана на рис. 4.5. Теперь кратчайший Рис. 4.4. Задача о кратчайшем пути для третье- третьего замещения. путь имеет длину 1<1, следовательно, мы пришли к оптимальному решению. ? 4»
100 Гл. 4. Вычислительные аспекты симплекс-алгоритма Прежде чем продолжить изложение, заметам, что мы начали с одной задачи — задачи о максимальном потоке и свели ее к после- Рис. 4.5. Задача о кратчайшем пути при дости- достижении оптимальности. довательности близких и более простых задач, а именно задач о кратчайшем пути. Эта ситуация часто встречается в теории оптими- оптимизации, и она еще много раз появится в данной книге. 4.4 Метод декомпозиции Данцига — Вулфа [Dw] Часто оказывается, что большая задача линейного программи- программирования является на самом деле набором меньших задач линей- линейного программирования, в большой степени независимых друг от друга. Пусть, например, нам дана задача ЛП, в которой матрица ограничений является матрицей инциденций вершин и дуг очень большого графа, но граф имеет вид, показанный на рис. 4.6. Ребра в этом графе имеются только между вершинами одного и того же множества и между множеством ND и остальными множествами. Матрицу инциденций вершин и дуг такого графа можно пред- представить следующим образом: Метод декомпозиции направлен на использование преимуществ этой специальной структуры путем сведения решения всей задачи к итеративному решению задач, размеры которых совпадают с размерами А, В и С. У нас уже имеется материал для построения метода декомпо- декомпозиции. Во-первых, модифицированный симплекс-алгоритм позво-
4.4. Метод декомпозиции Данцига — Вулфа 101 ляет неограниченно увеличивать число столбцов без увеличения размера рабочей матрицы (которую мы назвали CARRY). Вторая идея исходит из данной нами формулировки ЗМП в форме дуг и цепей. Мы переформулировали эту задачу, введя гро- громадное число столбцов, однако мы учитывали тот факт, что в модифицированном методе ни- никогда не нужно выписывать все столбцы явно. В этой формули- формулировке с помощью дуг и цепей операция оценивания столбца оказалась операцией вычисле- вычисления цены цепи для стоимости, определяемой двойственной пе- переменной л (иногда называемой вектором цен). При этом мы избежали оценивания всех столб- столбцов подряд путем нахождения только кратчайшей цепи. В методе декомпозиции эти приемы доводятся до кранно- сти Мы введем по столбцу для рис 4 6 с дегко декомп каждой вершины некоторой под- мой матриЦей инциденций вершин и задачи. Это уменьшит число дуг. строк, но резко увеличит чис- число столбцов. Однако операция оценивания сведется к решению задачи ЛП размера той подзадачи, которую мы разрушили. Рассмотрим более детально как пример с двумя подзадачами задачу ЛП со следующей матрицей ограничений: столбцов пг столбцов D A 0 F 0 В J } } m0 «i, тг строк строк строк D.8) * и пусть переменная x?Rn' соответствует первым пх столбцам, i а переменная у ? Rn*—последующим п2 столбцам. Полностью эта \ задача ЛП (в стандартной форме) имеет вид г ^ с'x + d'y, Dx + Fy = bOi Ах =bi{ By - bv х, у>0- D.9)
102 Гл. 4. Вычислительные аспекты симплекс-алгоритма Назовем первые т0 уравнений сцепляющими уравнениями; задачи, соответствующие последующим множествам строк, назовем соот- соответственно подзадачами А и В. Рассмотрим, в частности, ограниче- ограничения в подзадаче А: D.10) По теореме 2.3 любая допустимая точка в этой подзадаче может быть записана как выпуклая комбинация вершин допустимого множест- множества. Назовем эти вершины хи . . ., хр; тогда *~?v/ DЛ1) где = 1. Аналогично, представим у в виде D.12) где [ij^O, 2/-iH7=li и У/—вершины подзадачи В. Заменяя х и у в D.9) их представлениями D.11) и D.12), полу- получаем задачу ЛП относительно переменных %i и \it, представленную ниже: переменные: т0 строк W.-.Ap 1 строка {1 ... 1 1 строка {0 ... 0 V-я 0 ... о 1 ... 1 где д/= ?>*/. /= 1. ••¦-р. Ф/ = РУ/, / = 1 Я, и стоимость имеет вид min г=?'Х+6'ц., где li=c'xh /=1, . . ., р, D.13) D.14) D.15) D.16) D.17) — новые переменные соответственно в Rp и R". Задача, представ- представленная в таком виде, называется обычно главной задачей. Для любого разумного примера получается, таким образом, астрономическое число столбцов, по одному на каждую вершину каждой из двух подзадач. Однако число строк понизилось с то+ +mi+m2 до то+2, и можно применить модифицированный метод с матрицей CARRY размера (то+3)х (то+3). Если не касаться других вопросов, то это означает, что можно разместить намного
4.4. Метод декомпозиции Данцига — Вулфа 103 большие задачи в памяти с быстрой выборкой. Сейчас требуется только (то+3J ячеек памяти для CARRY в отличие от (mo+m,+ +m2+lJ в исходной формулировке. При mo=m,=m2, например, необходимый объем основной памяти сократится почти в 9 раз. Предположим теперь, что используется модифицированный симплекс-метод. Тогда необходимо понять, как производить опе- операцию оценивания. На каждом шаге в строке 0 матрицы CARRY будет стоять множество цен, которое мы запишем в виде вектора с разделенными компонентами col (я, а, E), где я ? /?т° соответ- соответствует первым т0 строкам и a, f5 ? Rx— следующим двум строкам главной задачи D.13). Таким образом, относительная стоимость столбца Яу(/= 1, . . ., р) будет равна = ^.-(я, ее, D.18) и, следовательно, критерий выгодного введения столбца в текущий базис имеет вид lj—я'Д,<а, /-1, ..., р. D.19) Если это условие выполняется для некоторой вершины подзадачи А, то мы находим выгодный столбец среди первых р столбцов. Теперь мы подходим к главному моменту. Как было обещано, мы не должны вычислять левую часть в D.19) для каждой вершины подзадачи А; это, очевидно, было бы практически неосуществимо для задачи среднего размера. Вместо этого мы ищем наименьшее значение левой части в D.19) по всем вершинам этой подзадачи. То есть ищется min (I,—я'Д,). D.20) 1 < / < р Это эквивалентно вычислению min (c'—riD)Xj. D.21) по всем вершинам х ¦ подзадачи А Но поиск минимального значения линейной функции по всем вершинам допустимого множества некоторой задачи ЛП есть просто задача ЛП! Таким образом, операцию оценивания для первых р столбцов можно выполнять, решая следующую задачу ЛП: min (с'—n'D)x, Ax = blt D.22) Рассуждения, аналогичные тем, которые были применены к D.18),
104 Гл. 4. Вычислительные аспекты симплекс-алгоритма показывают, что, решая задачу min(d'—n'F) у, By = h, D.23) и сравнивая минимальную стоимость с р, можно определить, име- имеется ли подходящий столбец среди последних q столбцов. Полно- Полностью описанный алгоритм приведен на рис. 4.7. Можно следующим образом описать работу метода декомпози- декомпозиции. Главная задача на основании информации о ситуации в целом procedure ДЕКОМПОЗИЦИЯ begin опт: =«нет»; построить матрицу CARRY с нулевой строкой (я, а, ft); while опт = «нет» do begin решить задачу ЛП min (с' —n'Ti) x = z0, A b if z0 < a. then вычислить столбец, соответствующий решению данной стоимости, и произвести замещение в матрице CARRY else begin решить задачу ЛП min (d'— n'F) y = z0, By=b2, у 3=0; if z0 < ft then вычислить столбец, соответствующий ре- решению данной стоимости, и произвести замещение в матрице CARRY else опт: = «да» end end end Рис. 4.7. Алгоритм декомпозиции. посылает цену подзадаче А. Эта подзадача на основании ее локаль- локальной информации и цены выдает в ответ решение (называемое пред- предложением) для возможного улучшения всей задачи. Главная задача сравнивает стоимость г0 этого предложения с ее критерием а для подзадачи А. Если предложение дешевле, чем а, оно вводится в базис. Если нет, то цена посылается в подзадачу В, и от нее за- запрашивается предложение. До тех пор пока подзадачи могут да- давать подходящие предложения, главная задача может находить подходящее замещение. Если ни одна из подзадач не может внести подходящего предложения, то это означает, что мы достигли оп- оптимального решения всей задачи. (Забавную драматизацию одного примера читатель может найти в [Da П.) То, что мы сделали для двух подзадач, можно, очевидно, сде- сделать для любого числа подзадач. В этом случае матрица ограничений будет иметь следующий вид:
Задачи 105 Строк m, строк Строк I D.24) Эта задача содержит 2i(=um( строк в отличие от то+г строк в глав- главной задаче алгоритма декомпозиции. Пример 4.2. Продемонстрируем при помощи несложных вычис- вычислений эффективность описанного подхода для размещения больших задач в вычислительной машине. Пусть нам даны 100 подзадач, каждая со 100 строками, и 100 сцепляющих уравнений. Тогда в исходной задаче 10100 строк и в матрице CARRY 10101x10101» ш\0ё элементов, которые, насколько нам известно, невозможно поместить в быстродействующую память ни одной вычислительной машины. С другой стороны, матрица CARRY в главной задаче будет содержать 201 х 201»4х 104 элементов, которые можно хра- хранить в быстродействующей памяти любой достаточно большой вы- вычислительной машины. ? Очевидным преимуществом алгоритма декомпозиции является уменьшение требуемой для него памяти; при этом невозможно ска- сказать что-либо определенное о времени, которое при этом затратится, поскольку мы не знаем, сколько раз придется решать подзадачи, прежде чем будет достигнута оптимальность. Задачи 1. Покажите, что число цепей из s в t в потоковой сети может расти как экспо- экспоненциальная функция от числа вершин. 2. Из решения задачи о максимальном потоке с помощью симплекс-алгорит- симплекс-алгоритма выведите следующее утверждение: в любой задаче о максимальном потоке для сети с т дугами имеется оптимальный поток, который можно разбить в сумму потоков по не более чем т цепям. 3. Проверьте, что в модифицированном симплекс-методе можно легко следо- следовать правилу Бдэнда, устраняющему зацикливание. 4*. Исследуйте детали реализации двухэтапного варианта метода декомпо- декомпозиции с использованием модифицированного алгоритма. В частности, что будет, если некоторая подзадача: а) недопустима; б) переопределена; в) неограниченна? Легко ли следовать правилу Блэнда и получить гем самым конечность алгоритма? 5. (Задание по программированию.) Повторите задачу 15 из гл. 2 для модифи- модифицированного симплекс-алгоритма. Сравните обычный и модифицированный мето- методы на различных задачах, собирая статистику числа замещений и числа умно- умножений. 6*. Докажите или приведите контрпример: а) во время решения задачи о мак- максимальном потоке модифицированным симплекс-алгоритмом обратная базисная матрица никогда не содержит элементов, отличных от 0 или ± 1; б) л,- всегда рав- равно 0 или 1.
106 Гл. 4. Вычислительные аспекты симплекс-алгоритма 7. Рассмотрите решение задачи о кратчайшем пути в форме вершин и дуг с использованием модифицированного симплекс-алгоритма. Опишите шаг выбора столбца. 8. Пусть Pi=xrs — это i-й ведущий элемент в модифицированном симплекс- алгоритме. Покажите, что после k замещений определитель базисной матрицы В равен П*=1р,-. 9. При решении сильно вырожденной задачи линейного программирования у нас может быть много неопределенностей при выборе строк для операции за- замещения в начале применения симплекс-алгоритма. Объясните, почему мы мо- можем встретиться с серьезными численными проблемами, если будем разрешать эти неопределенности, не обращая внимания на размер потенциальных ведущих элементов. (Указание: см. задачу 8.) Предложите, как избежать этого. (Указание: не обращайте внимания на зацикливание и посмотрите, как реализуется обычно метод Гаусса.) 10. Пусть модифицированный симплекс-алгоритм используется для решения задачи линейного программирования, в которой все данные состоят из (/-разряд- (/-разрядных двоичных чисел и исходная таблица имеет размеры тХп. Сколько двоичных разрядов необходимо сохранять в каждом слове в процессе вычислений, с тем чтобы получить абсолютно точный ответ? Комментарии и ссылки Дополнительную информацию о практических вычислительных аспектах симплекс-алгоритма и модифицированного симплекс-алгоритма можно найти в книгах [Be] Beale E. M. L. Mathematical Programming in Practice. New York: John Wiley & Sons, Inc., 1968. [OH] Orchard-Hays W. Advanced Linear-Programming Computing Techniques. New York: McGraw-Hill Book Company, 1968. [Las] Lasdon L. S. Optimization Theory for Large Systems. London: MacMillan, Inc. 1970. Метод декомпозиции был впервые опубликован в работе [DW] Dantzig G. В., Wolfe P. Decomposition Principle for Linear Programming, OR, 8, No 1 A960), 101 — 111. Данциг обыграл идею о том, что метод декомпозиции является математическим выражением децентрализованного планирования в четырехактной пьесе с дей- действующими лицами «штаб» — координатор погрузочных операций и «F. M. Dalks» — вымышленный (но сложный) консультант. См. [Dal] Dantzig G. В. Linear Programming and Extensions. Princeton, N. J.: Prin- Princeton University Press, 1963. [Имеется перевод: Данциг Д. Б. Линейное про- программирование, его применения и обобщения.— М.: Прогресс, 1966.]
5 Прямо-двойственный алгоритм 5.1 Введение Данная глава посвящена прямо-двойственному алгоритму, ко- который является общим алгоритмом для решения задач ЛП. Этот метод в действительности развился из менее общего алгоритма, разработанного для некоторых задач о сетях, и, как мы увидим в этой и последующей главах, дает основную идею построения спе- специализированных алгоритмов для многих задач, связанных с гра- графами. Начнем с неформального описания метода. Пусть дана задача ЛП в стандартной форме, которую мы назовем прямой задачей П: min г = с'х, Ах = Ь^0, (П) Рассмотрим двойственную к ней задачу Д: max w---n'b, пМ<с', (Д) Заметим, что там, где необходимо, уравнения в П умножены на —1 так, чтобы было Ь^О. Напомним условия дополняющей нежесткости (теорема 3.4): если х допустимо в П, а я — в Д, то для одновремен- одновременной оптимальности х и л необходимо и достаточно, чтобы выполня- выполнялись следующие условия: п{(а\х—?>,¦) = 0 для всех i, E.1) (Cj—л'Л/-)д;/. = 0 для всех /. E.2) Соотношения E.1) удовлетворяются для любого х, допустимого в П, поскольку П представлено в стандартной форме, поэтому мы сосре- сосредоточим внимание на равенствах E.2). Предположим, что у нас имеется точка л, допустимая в двой- двойственной задаче Д. Если бы мы смогли найти точку х, допустимую в П, в которой Xj=0 для любого /, такого, что с;-—л'Л;С>0, то эта точка х (и, конечно, л) была бы оптимальной. Прямо-двойственный алгоритм и основан на идее поиска такого х для данного л, для
108 Гл. 5. Прямо-двойственный алгоритм чего и решается вспомогательная задача, называемая ограниченной прямой (ОП) задачей, определяемая текущим значением л. Если в результате поиска нам не удается найти подходящее х, мы тем не менее получаем информацию из задачи, двойственной к ОП, ко- которую мы назовем ДОП, о том, как улучшить текущее я. Продолжая Прямая Задача X Двойственная задача п Ограниченная прямая задача Задача, двойственная к ограни' снной прямой задаче, Корректировка л 5? Рис. 6.1. Общая схема прямо-двойственного ме- метода. »тот процесс, мы за конечное число шагов достигнем оптимальности (обсуждение конечности алгоритма см. в § 5.3). Описанный метод представлен в схематическом виде на рис. 5.1. 5.2 Прямо-двойственный алгоритм Прямо-двойственный алгоритм правильно назван двойственным алгоритмом, поскольку он начинает работу с допустимой точки я в Д исохраняет допустимость в двойственной задаче на протяжении всей работы. Если с^О, то в качестве начальной допустимой точки в двойственной задаче можно взять я=0. Если с не является неот- неотрицательным, можно тем не менее легко найти допустимое я, ис- используя прием, приписываемый наряду с другими Билу [DFF]. Введем в прямой задаче П переменную хп+] и добавим ограничение i = bm+i, E.3) где bm+i выбирается ббльшим, чем сумма значений х±, . . ., хп любого возможного решения задачи П (например, п, умноженное на М из леммы 2.1), и положим стоимость сп+1 равной 0. Очевидно, что условие E.3) не изменяет решения задачи П. Задача, двойствен- двойственная к новой прямой задаче, будет содержать одну новую перемен- переменную nm+i , одно новое ограничение и будет иметь вид я,
5.2. Прямо-двойственный алгоритм 109 В качестве допустимого решения этой задачи ЛП можно взять про- просто я, = 0, ( = 1, ..., т, nm+i = min \cf\ < 0. 1</<л Последнее неравенство следует из предположения о том, что с не является неотрицательным. Учитывая возможность применения описанного выше приема, будем далее, не изменяя обозначений в Д, считать, что нам дана точка я, допустимая в Д. Тогда некоторые из неравенств п'А^С] будут строгими неравенствами, а некоторые обратятся в равенства. Определим следующее множество индексов J: j = {j: n'Af = c,\. E.4) Из E.1) и E.2) следует, что допустимая точка х в U оптимальна тогда и только тогда, когда xf = 0 для всех /(?./. E.5) Это приводит к задаче нахождения х, удовлетворяющего условиям 2 a^X/^bi, i=\, ..., т, х,>0, /€</, <5-6> В этих условиях используются только те столбцы матрицы А, ко- которые соответствуют равенствам п Д, которые в свою очередь соответствуют множеству J; по этой причине мы назовем J мно- множеством допустимых столбцов. Для нахождения такого х рассмо- рассмотрим новую задачу ЛП, называемую ограниченной прямой (ОП) задачей, определяемую следующим образом: т = 2 xf, i =1 @П) xf^-O. Здесь мы ввели искусственные переменные xj, t = l, . . ., m, no одной для каждого уравнения в П. Для решения ограниченной прямой задачи ОП можно применить обычный симплекс-алгоритм. Если для оптимального решения задачи ОП ?Опт=0> то это будет означать, что найдено решение для E.6) и, следовательно, оптималь- оптимальное решение для П. А что будет, если Еопг>0 в ОП?
ПО Гл. 5. Прямо-двойственный алгоритм Чтобы ответить на этот вопрос, необходимо рассмотреть задачу ДОП, двойственную к ограниченной прямой задаче ОП, имеющую вид maxw = n'b, E.7) я'Л^О, /€У, (ДОП) E.8) я,<1, »=1, ..., т, E.9) я,^0. E.10) Обозначим оптимальное решение задачи ДОП, полученное после решения задачи ОП, через л. Мы пришли теперь к следующей ситуации: мы пытались найти допустимое х, используя только допустимые столбцы, однако это сделать нам не удалось, поскольку |опт>0. Все, что нам удалось получить,— это оптимум в ОП и соответствующее двойственное ре- решение л в ДОП. Это наводит на мысль рассмотреть «исправленное» я, задаваемое линейной комбинацией нашего исходного я и я: E.11) По аналогии с обычным симплекс-алгоритмом нас будет интересо- интересовать, как выбрать 9 так, чтобы я* осталось допустимым в Д и при- привело бы к улучшению стоимости. Рассмотрим сначала новую стоимость Ь. E.12) Так как ОП и ДОП образуют прямо-двойственную пару, то их оптимальные стоимости при одновременной оптимальности равны, поэтому я'6 = !опт>0. E.13) Таким образом, для увеличения (и, следовательно, улучшения) стоимости в Д необходимо взять 9>0. Посмотрим теперь, как влияет добавление Он к л на допусти- допустимость в Д. Для того чтобы я* осталось допустимым в Д, должны выполняться условия E.14) Если я'Л^О, то нет никаких проблем. Более того, если я'^ для всех /, то сразу видно, что можно увеличивать 6 в E.11) неог- неограниченно, получая, таким образом, сколь угодно большую стои- стоимость в E.12). Отсюда в свою очередь следует, что задача Д неогра- неограниченна и, следовательно, что исходная прямая задача П недопу- недопустима. Так как я оптимально (и, следовательно, допустимо) в ДОП, то я'Л^О для j?J. Таким образом, мы установили следую- следующий факт.
5.2. Прямо-двойственный алгоритм 111 Теорема 5.1. Если в ОП ?опт>0 и оптимальное решение двой- двойственной задачи удовлетворяет условиям n'Aj^.0 для /(?./, то задача П недопустима. Таким образом, за сохранением допустимости нужно следить только в том случае, если л'Лр>0 для некоторого j^J. Критерий допустимости в этом случае принимает вид Л/<с/, где /?/ и л'Лу>0.' E.15) Получаем ситуацию, аналогичную ситуации в обычном симплекс- алгоритме, а именно 9 может изменяться в указанных пределах и procedure ПРЯМО-ДВОЙСТВЕННАЯ begin недопустима: = «нет», опт: = «нет»; пусть я допустима в D (comment: возможно использование E.3)); while недопустима = «нет» м опт= «нет» do begin положить J = {j: n'A|=Cj}; решить задачу ОП симплекс-алгоритмом; " ?опт=0 'пеп опт: = «да» else if n'Aj<:0 для всех j(?J then недопустима: = «да» else л: =n + 0iix (comment: см. E.16)) end end Рис. 5.2. Прямо-двойственный алгоритм. не далее. Более точно можно сформулировать этот результат в виде еще одной теоремы. Теорема 5.2. Если ?опт>0 в ОП и л'Л;->0 для некоторого j&J, то наибольшее 9, при котором л*=л+9л остается допусти- допустимым, равно ei= niin [С/~Я7Ч. E.16) itJ:n'Aj>Ql кА1 J При этом новая стоимость равна w* = п'Ь + 6,л'Ь = w + 9,л'& > w. Решив ограниченную прямую задачу и получив улучшенное ре- решение задачи Д, мы заново определяем множество J и повторяем эту процедуру до тех пор, пока не возникнет одна из следующих ситуаций: либо ?ощ=0 и в П будет достигнута оптимальность,
112 Гл. 5. Прямо-двойственный алгоритм либо, согласно теореме 5.1, будет показано, что П недопустима. Программа для прямо-двойственного алгоритма в общих чертах представлена на рис. 5.2. 5.3 Комментарии к прямо-двойственному алгоритму Весьма удобно то обстоятельство, что на каждой итерации ре- решение задачи ОП можно начать с оптимального решения, получен- полученного на предыдущей итерации. Это вытекает из того, что никакая переменная, входящая в J и входящая также в оптимальный базис задачи ОП в конце итерации, не может выйги из У в этот момент. Более формально справедлива Теорема 5.3. Любой допустимый столбец в оптимальном базисе задачи ОП остается допустимым в начале следующей итерации. Доказательство. Если столбец Af входит в оптимальный базис задачи ОП в конце итерации, то его относительная стоимость (в ОП) равна Cj——n'Aj = Q. Отсюда поэтому / остается в множестве J ? Этот факт не только дает возможность начинать итерацию с пре- предыдущего допустимого решения, но также позволяет использовать модифицированный симплекс-метод, поскольку мы можем не бо- бояться, что какой-нибудь базисный столбец стал недопустимым. В заключение рассмотрим вопрос о конечности прямо-двойствен- прямо-двойственного алгоритма. Заметим, во-первых, что если минимум в E.16) при вычислении 8, достигается при /=/0, то /0 становится новым элементом множества J, так как, согласно E.15), л*'Л/о=С/0. Кроме того, относительная стоимость нового столбца /0 в ОП рав- равна —л'Л/о<0, поэтому на новой итерации в ОП будет выполняться по крайней мере одна операция замещения. Если рассмотреть все переменные в ОП, соответствующие исходным столбцам, как допу- допустимым, так и недопустимым, плюс все искусственные переменные, то получается, что мы переходим от одного бдр к другому. При от- отсутствии вырожденности в ОП стоимость %ont монотонно убывает на каждой итерации прямо-двойственного метода, никакой базис в ОП не повторяется и метод является конечным. Если имеются вырожденные бдр в ОП, то можно гарантировать конечность, ис- используя какое-нибудь правило, устраняющее повторение базисов, как в любом прямом симплекс-алгоритме.
5.4. Задача о кратчайшем пути 113 Подытожим сказанное выше следующей георемой. Теорема 5.4. Прямо-двойственный алгоритм, приведенный на рис. 5.2, корректно решает задачу П за конечное время. 5.4 Прямо-двойственный метод в применении к задаче о кратчайшем пути Для иллюстрации прямо-двойственного метода вернемся к зада- задаче о кратчайшем пути (ЗКП), сформулированной с помощью матри- матрицы инциденций вершин и дуг. Это также послужит для нас основой его эффективного применения к более общим задачам на сетях. Итак, имеем задачу mine'/, г + f>0. строка s (П) J где А —это (т—1)хл-матрица инциденций вершин и дуг ориен- ориентированного графа G=(V, Е) с т вершинами и п дугами, в которой строка, соответствующая стоку t, опущена (она является излишней); f(tRn—вектор потока (в данной задаче с компонентами 0 или 1), с ? R"— вектор стоимости. Двойственной задачей будет max ns л,- — и для всех дуг для всех /, (Д) где мы должны положить я(=0, так как соответствующая строка в А опущена. Множество допустимых дуг определяется тогда сле- следующим образом: 7 = {дуги (г, /): я,—яу = с,7},
114 Гл. 5. Прямо-двойственный алгоритм и ограниченная прямая задача принимает вид т-1 minE= 2 xf, I-*— строка s О о для всех /, (ОП) Наконец, задача, двойственная к ограниченной прямой задаче, имеет вид max w = ns, ¦я,.—л;<0 для всех дуг (г, /NУ, л,- ^ 1 для всех г, (доп) Теперь ДОП очень легко решить: так как л3^1 и мы хотим мак- максимизировать л8, то испытаем ла = 1. Если нет пути из s в /, ис- использующего только дуги из У, то можно продвинуть 1 из s во все вершины, достижимые из s по некоторому пути, так, что не бу- будут нарушаться ограничения лг—л^О, и оптимальным решением для ДОП тогда будет 1 для всех вершин, достижимых из s по путям, использующим дуги из У, { 0 для всех вершин, из которых t достижимо с E.17) использованием дуг из У, 1 для всех остальных вершин. (Заметим, что это л не единственно возможное.) Затем можно вычислить &!= min \с(/—(л,-—Лу)}, (i, i)$J\ni-'nf> О найти новые л и У и заново решить ДОП. Если мы придем к тому, что имеется путь из s в / с использованием дуг из У, то л8=0, и решение оптимально, так как ?т1п--=штах=0. При этом любой путь из s в t, использующий только дуги из У, оптимален. Таким образом, благодаря прямо;двой:твенному алгоритму зада- задача о кратчайшем пути сводится к многократному решению более простой задачи нахождения множества вершин, достижимых из данной вершины.
5.4. Задача о кратчайшем пути 115 Пример 5.1. На рис. 5.3 представлена задача о кратчайшем пути, несколько более сложная, чем наш предыдущий пример. Так как стоимости неотрицательны, можно начать с л=0 в задаче Д. На © Рис. 5.3. Пример задачи о кратчайшем пути. Числа в кружках — веса дуг. рис. 5.4 показана последовательность пяти итераций прямо-двой- прямо-двойственного метода, приводящая к оптимальному решению л=F, 5, 5, 2, 4) и соответствующему множеству дуг У, которое содержит оптимальный путь. Любой путь из s в / в окончательном допустимом множестве дуг будет удовлетворять условию дополняющей нежест- нежесткости и, следовательно, будет оптимальным; в данном случае оп- оптимальным будет путь (ег, еь, ев, е7) со стоимостью 6=л„. ? Отметим теперь те свойства этого алгоритма, с помощью ко- которых можно дать очень простую интерпретацию происходящему. Первое, если мы определим на каждом шаге нашего алгоритма мно- множество W = \i: t достижимо из i по допустимым дугам} = {г: л; = 0}, тогда переменная яг остается фиксированной с момента, когда i попадает в W, до конца алгоритма, так как соответствующее nt всегда будет нулем. Второе, каждая дуга, которая становится допу- допустимой (входит в J), остается допустимой в течение всего алгоритма, так как если nt—nj—ctj для дуги (г, /) G ?> то мы всегда изменяем Л; и л;- на одну и ту же величину в соответствии с E.17). Нетрудно понять, что пи i ? W,— это длина кратчайшего пути из i в t и что на каждом шаге алгоритма к W добавляются вершины из W, бли- ближайшие к t. С некоторым уточнением этот прямо-двойственный ал- алгоритм, примененный к задаче о кратчайшем пути, является на самом деле алгоритмом нахождения кратчайшего пути Дейкстры. который мы опишем более подробно в гл. 6 [Di].
116 Гл. 5. Прямо-двойственный алгоритм В заключение отметим, что имеется определенная граница чис- числа шагов, необходимых для прямо-двойственного алгоритма, приме- д о о 0 0 я = @, 0,0,0.0) 2 2 г 2 л-B, 2, 2, 2,2) 4 4 я = D,4,4,2,4) 5 4 я=E,5,5,2,4) 5 2 5 4 Л =F,5,5,2,4) ДОП l feL = 2 дл V?"| Ay™ e~ И к'рация 1 JT =A,1, 1.1,1) О к • I дуги е = 2 для б J-{7,6,5, 4} Итерация 4 J=\7,6,5,A,2} C=^ 0 \ О о Итерация 5 я = @,0,0,0,0) Рис. 5.4. Решение задачи о кратчайшем пути с использованием прямо-двойствениого алгоритма. ненного к задаче о кратчайшем пути. Так как множество W растет по крайней мере на одну вершину на каждом шаге, то не может быть более чем IVI шагов.
5.6. Задача о максимальном потоке 117 5.5 Замечания по методологии Давайте ненадолго вернемся назад и посмотрим, что делает прямо-двойственный алгоритм. Мы начали с общей задачи линейного программирования П и вектора стоимости с; заменили их итера- итеративным решением задачи ОП, которая не зависит явно от вектора стоимости с, а зависит от него только через множество У допустимых переменных. Ценой итеративного цикла, представленного на рис. 5.1, избавились от сложностей, связанных с рассмотрением общего вектора стоимости. Для краткости будем говорить, что мы «комбинаториализовали» стоимость. Можно также взглянуть на проделанное с точки зрения двой- двойственной задачи. Переходя от Д к ДОП, мы комбинаториализовали правую часть. Схематично можно записать П—»-ОП комбинаториализует стоимость, - .„ Д—<-ДОП комбинаториализует правую часть. В задаче о кратчайшем пути правая часть в П, по существу, тривиальна, и все численные данные задачи входят в нее через век- вектор стоимости. Поэтому ОП и двойственная ей задача вообще не зависят явно от численных данных исходной задачи, а зависят только от допустимого множества У, и мы получаем чисто комбинаторную задачу, которая в данном случае оказалась задачей о достижимости. Метод, состоящий в том, чтобы начиная с одной задачи ите- итеративно решать подзадачи, которые «более комбинаторны», с при- применением прямо-двойственного алгоритма, является центральным в комбинаторной оптимизации. Это основа почти любого эффектив- эффективного алгоритма для задач о потоках и паросочетаниях. Применим теперь эту идею к задаче о максимальном потоке. 5.6 Прямо-двойственный метод в применении к задаче о максимальном потоке Наш план в данном параграфе следующий: сначала сформулиру- сформулируем задачу о максимальном потоке в форме вершин и дуг. В этой за- задаче ЛП будет, по существу, тривиальный вектор стоимости; чис- численный вход задачи (пропускные способности) появится в правой части. Затем будем рассматривать задачу о максимальном потоке ;Как двойственную задачу (вспомните E.18)), с тем чтобы комбина- ториализовать ее данные. Подзадачи опять будут задачами достижи- достижимости, которые в данном случае являются задачами нахождения увеличивающих путей. > Рассмотрим этот путь подробнее. Пусть N—(s, t, V, Е, b) — ^потоковая сеть с п= \V\ вершинами и т= \Е\ дугами, и пусть поток |На дуге (х, у) обозначается через f(x,y). Тогда поток величины v
118 Гл. 5. Прямо-двойственный алгоритм ич s в t определяется условиями + и для строки s, —v для строки t, E.19) О для других строк, где А — матрица инциденций вершин и дуг ориентированного графа (V, Е) и /, Ь 6 Rm— соответственно векторы потока и про- пропускных способностей. Задача состоит в максимизации v при огра- ограничениях E.19), Несколько переделаем эту задачу, используя вектор d?R", определяемый равенством — 1, i = s, +l,l = t, E.20) 0 в остальных случаях. Тогда наша задача ЛП принимает вид шахи, () -/«о. (Заметим, что из неравенства Af-\-dv<Q следует /4/+du=0, так как дефицит в балансе потока в любой вершине влечет за собой излишек в некоторой другой вершине.) Итак, мы достигли нашей цели, а именно представили задачу о максимальном потоке в виде задачи, двойственной к некоторой за- задаче ЛП в стандартной форме; теперь мы хотим комбинаториализо- вать правую часть путем рассмотрения ДОП. Сравнение задач Д и ДОП, приведенных выше в этой главе, дает для этого очевидное правило: мы заменяем правую часть на 0, вычеркиваем строки, не входящие в У, и добавляем ограничения /, v<l. Таким образом, задача ДОП принимает вид max и dv^.0 для всех строк, /<0 для всех строк, где f = b в Д, ,д0Пч ,5 22) для всех строк, где / = 0 в Д, ' Эта задача имеет следующую интерпретацию. Требуется найти путь из s в t (для потока величины 1), в котором насыщенные дуги могут
Задачи П9 использоваться только в обратном направлении, дуги с нулевым потоком — только в прямом направлении и остальные дуги — в лю- любом направлении. Как и в задаче о кратчайшем пути, это задача о достижимости. Если увеличивающий путь найден, то следующий шаг прямо- двойственного алгоритма соответствует увеличению потока вдоль этого пути на максимально возможную величину, т. е. до тех пор, пока некоторая дуга, проходимая в обратном направлении, не ста- станет пустой (весь ее поток аннулируется) или пока некоторая дуга, проходимая в прямом направлении, не станет насыщенной. Более детально этот специальный алгоритм для задачи о макси- максимальном потоке будет рассмотрен в следующей главе. Он был впер- впервые разработан Фордом и Фалкерсоном [FF]. Заметим, что мы решали ДОП непосредственно, а не использова- использовали симплекс-алгоритм для решения ОП. Однако в теореме 5.4 пред- предполагается использование симплекс-алгоритма и, кроме того, пред- предполагается, что он применяется в таком варианте, который позво- позволяет, несмотря на вырожденность, избежать повторения базисов. Таким образом, мы не можем гарантировать, что наш алгоритм ко- конечен, причем если разрешить пропускным способностям прини- принимать иррациональные значения, то это не просто технический во- вопрос, так как на самом деле алгоритм Форда — Фалкерсона может работать бесконечно, если при выборе увеличивающего пути не принимать специальных предосторожностей. Мы будем иметь дело с этой задачей в следующей главе, посвященной более подробному изучению прямо-двойственных алгоритмов, которые мы только что разработали для задач о максимальном потоке и кратчайшем пути. Задачи 1. Докажите строго, что задача ЛП E.21) с ограничениями в виде неравенств на уравнения потокового баланса эквивалентна такой же задаче ЛП с ограниче- ограничениями в виде равенств 2. Докажите, чтол,-, i? W, в прямо-двойственном|алгоритме для задачи о крат- кратчайшем пути — это длина кратчайшего пути из i в i и что алгоритм добавляет в W на каждом шаге те вершины, не входящие в W, которые являются ближай- ближайшими к t. 3. Покажите, что вычисление в1 в прямо-двойственном алгоритме для задачи 0 максимальном потоке соответствует возрастанию потока на увеличивающем пути до тех пор, пока некоторая дуга не становится пустой или насыщенной. 4. Где используется тот факт, что в задаче П общего прямо-двойственного алгоритма требуется й>0? 5. Рассмотрим решение задачи о кратчайшем пути прямо-двойственным ме- методом, Опишите оптимальные решения задачи ОП, соответствующие оптимальным решениям задачи ДОП, определяемым равенством E.17). Проделайте это для подоптимальных шагов и окончательного оптимального шага алгоритма. 6. Пусть в формулировке задачи о кратчайшем кути в форме вершин и дуг Допускаются отрицательные веса дуг. Докажите, что следующие условия экви- эквивалентны. а) Существует кратчайший маршрут из s в t. 1 б) Двойственная задача ЛП допустима.
120 Гл. 5. Прямо-двойственный алгоритм в) Нет циклов с отрицательной общей еюимостью. 7. Докажите, что в прямо-двойственном алгоритме стоимость допустимого решения в Д возрастает на положительную величину во время каждой итерации. Объясните, почему из этого не следует, что метод оканчивается за конечное число шагов, как это было бы для симплекс-алгоритма. 8. Покажите, что ОП в задачах о максимальном потоке и кратчайшем пути сильно вырождеииы. Комментарии и ссылки Прямо-двойственный алгоритм для общих задач ЛП был впервые описай в работе [DFF] Dantzig G. В., Ford L. R., Fulkerson D. R. A Primal-Dual Algorithm for Linear Programs, pp. 171—181 in Linear Inequalities and Related Systems, ed. H. W. Kuhn and A. W. Tucker Princeton, N. J.: Princeton University Press, 1956. [Имеется перевод: Данциг Дж. Б., Форд Л. Р., Фалкерсои Д. Р. Алгоритм для одновременного решения прямой и двойственной задач линей- линейного программирования.— В сб.: «Линейные неравенства и смежные во- вопросы», М.: ИЛ, 1959.] Он представлен там как обобщение метода из работы [KuJ Kuhn H. W. Jhe Hungarian Method for the Assignment Problem, Naval Re- Research Logistics Quarterly, 2, No 1 and 2 A955), 83—97. [Имеется перевод: Кун Г. Венгерский метод решения задачи о назначениях.— В сб.: «Методы и алгоритмы решения транспортной задачи», М.: Гостехиздат, 1963.] и аналогичных алгоритмов для более общих потоковых задач, которые будут описаны позднее в данной книге. Как упомянуто в § 5.4, прямо-двойственный алгоритм, примененный к за- задаче о кратчайшем пути, приводит к алгоритму Дейкстры [Di) Dijkstra E. W. A Note on Two Problems in Connexion with Graphs, Nume- rische Mathematik, 1 A959), 269—271. Прямо-двойственный алгоритм, примененный к задаче о максимальном потоке, приводит к алгоритму Форда — Фалкерсоиа, который описан в книге [FF) Ford L. R., Jr., Fulkerson D. R. Flows in Networks, Princeton, N. J.: Prin- Princeton University Press, 1962. [Имеется перевод: Форд Л. Р., Фалкерсон Д. Р. Потоки в сетях.— М.: Мир, 1966.] Эта книга, так же как книга Данцига, уже почти 20 лет считается эталоном.
6 Прямо-двойственные алгоритмы для задач о максимальном потоке и кратчайшем пути: алгоритмы Форда — Фалкерсона и Дейкстры 6.1 Теорема о максимальном потоке и минимальном разрезе Эта глава посвящена детальному изучению построенных в пре- предыдущей главе прямо-двойственных алгоритмов для задач о мак- максимальном потоке и кратчайшем пути. Здесь мы переходим от изу- изучения алгоритмов для общих задач ЛП к более специализированным алгоритмам для некоторых задач о сетях, выводимым, как отмечено выше, из прямо-двойственного алгоритма. Таким образом, мы пере- переходим к алгоритмам, которые в некотором смысле менее численны и более комбинаторны, чем общие симплекс-алгоритмы. При этом тео- теория линейного программирования будет использоваться для уста- установления полезных фактов о различных задачах теории графов на- начиная с известной теоремы о максимальном потоке и минимальном разрезе, относящейся к задаче о максимальном потоке. Вернемся к данной в предыдущей главе формулировке задачи о максимальном потоке с помощью вершин и дуг. Рассмотрим потоко- потоковую сеть N—(s, t, V, Е, b) с n=\V\ вершинами и т=\Е\ дугами и обозначим поток на дуге (х, у) через f(x, у). Тогда задача о мак- максимальном потоке представляется следующей задачей ЛП, которую мы будем рассматривать как двойственную задачу: max v Af+%°b\ FЛ> f>0, где d?,Rn определяется, как и раньше, равенством + l', i = t\ F.2) О в противном случае. Важным понятием при изучении вообще задач о потоках и играю- играющим центральную роль в построении алгоритма Форда— Фалкер- сона является понятие разреза. Определение 6.1. s-t-разрезом называется разбиение (W, ^мно- ^множества вершин V сети на подмножества W и W, такие, что s ? W
122 Гл. 6. Алгоритмы Форда — Фалкерсона и Дейкстры и t? W. Пропускная способность s-f-разреза равна с (W, W)= 2 ja, j). о (i, /)s?: /6 W, feW F.3) Рис. 6.1 иллюстрирует понятия разреза; при этом пропускная способность разреза равна сумме пропускных способностей «пря- «прямых» дуг, т. е. тех дуг, которые идут из вершин множества W w Прямые дуги Обратные дуги Рис. 6.1. Разрез в потоковой сети. в вершины множества W. Естественно ожидать, что величина потока из s в t не может превышать пропускной способности s-f-разреза, поскольку любой поток из s в t должен пройти через прямые дуги разреза. Этот результат непосредственно связан с тем, что разрезы соответствуют допустимым решениям задачи, двойственной к зада- задаче о максимальном потоке, что приводит нас к необходимости рас- рассмотреть задачу, двойственную к задаче ЛП F.1), представляющей задачу о максимальном потоке. Сопоставим первым п ограничениям, которые соответствуют за- закону сохранения потока, переменные п(х), а следующим т. огра- ограничениям пропускных способностей — переменные у(х, у). Так как первые п ограничений являются равенствами, то я(л;M=0, и по- поскольку следующие т. ограничений являются неравенствами, то у(х, #)г^Ю. Вид задачи ЛП F.1) в точности соответствует двойствен- двойственной задаче в определении 3.1, поэтому из симметрии прямая задача в этом определении есть та двойственная задача, которую мы ищем: min 2 У(х, У)Ь{х, у), ( )Е я(х)—п(у)+у{х, для всех (х, у)?Е, F.4) у(х, у)^0. Последнее неравенство соответствует переменной v.
6J. Теорема о максимальном потоке и минимальном разрезе 123 Теперь может быть доказана Теорема 6.1. Любой s-t-разрез следующим образом определяет допустимое решение стоимости C(W, W) для задачи, двойственной к задаче о максимальном потоке: . __ | 1 для (х, у), таких, что x^W, y?W, \ 0 в противном случае, Доказательство. Нам нужно проверить ограничения в F.4). При этом надо рассмотреть четыре случая, поскольку х и у могут входить в W или W. В любом случае соответствующее неравенство легко проверяется, причем оно будет строгим тогда и только тогда, когда х g W и у ? W. Кроме того, л (s)=0, поскольку s €W, и л (t)=l, поскольку t(tW. Поэтому —л (s)+ji(/)=1, и последнее неравенство также выполняется. Наконец, стоимость этого двойственного до- допустимого решения равна 2 у(х, у)Ь(х, у)= 2 _Ь(х, y) = C(W,?). ? (X, у)е Е (х, |/)б?: хе W. i/S W Из теоремы 6.1 вытекает наш основной результат. Теорема 6.2. (теорема о максимальном потоке и минимальном разрезе). Величина потока из se t не превосходит пропускной способ- способности C(W, W) любого s-t-разреза. Более того, величина макси- максимального потока равна пропускной способности минимального раз- разреза, и поток /, и разрез (W, W) одновременно оптимальны в том и только том случае, если f(x, y) = 0 для дуг (х, у)?Е, таких, что x?W и y?W, f(x> У) = Ь(х, у) для дуг (х, у)?Е, таких, что x^W и y^W. F.6) Доказательство. То, что и не превосходит пропускной способ- способности любого разреза, непосредственно следует из предыдущей тео- теоремы. Из алгоритма пометок, рассматриваемого в следующем пара- параграфе, будет следовать, что произвольный максимальный поток ве- величины v всегда можно использовать для построения некоторого разреза с пропускном способностью C—v. Равенства F.6) выражают условия дополняющей нежесткости, что вытекает из следующих рас- рассуждений. Если x?W и у g W, то двойственное неравенство п(х)—п{у)+у(х, у)-1-
124 Гл. 6. Алгоритмы Форда — Фалкерсона и Дейкстры является строгим, что было отмечено выше, поэтому соответству- соответствующая переменная_ f(x, у) должна равняться нулю. Аналогично, если х? W и у ? W, то из F.5) следует у(х, у)=\, поэтому соответ- соответствующее неравенство в прямой задаче f(x, y)*g.b(x, у) должно обра- обратиться в равенство. ? Пример 6.1. На рис. 6.2 приведен пример задачи о максимальном потоке с оптимальным потоком величины 5 и соответствующим ми- минимальным разрезом. Заметим, что все прямые дуги через разрез Рис. 6.2. Задача о максимальном потоке. Числа в кружках — пропускные способности; числа без кружков — максимальный поток; множество W задает минимальный разрез. насыщены (f(x, y)=b(x, у)) и все обратные дуги пусты (f(x, г/)=0), что подтверждает равенства F.6) и показывает, что этот поток и разрез оптимальны. ? 6.2 Алгоритм пометок Форда и Фалкерсона Рассмотрим теперь более подробно прямо-двойственный алго- алгоритм для задачи о максимальном потоке, построенный в конце предыдущей главы. Напомним, что задача, двойственная к огра- ограниченной прямой задаче (ДОП), была подзадачей поиска пути из s в /, вдоль которого поток можно увеличить. Когда такого пути найти не удается, то выполняются условия дополняющей нежест- нежесткости, и прямо-двойственный алгоритм дает оптимальное решение. Следующее определение характеризует путь, который мы ищем. Определение 6.2. Пусть дана сеть N=(s, t, V, Е, b) и допусти- допустимый поток / из s в t. Тогда увеличивающим путем называется любой путь Р из s в t в неориентированном графе, полученном из графа G сети игнорированием направлений дуг, который обладает следую- следующими свойствами. а) Для любой дуги (i, /) ??, проходимой путем Р в прямом на-
6.2. Алгоритм пометок Форда и Фалкерсона 125 правлении (и называемой прямой дугой), f(i, j)<.b(i, /). То есть прямые дуги пути Р ненасыщенны. б) Для любой дуги (/, ()??, проходимой путем Р в обратном направлении (и называемой обратной дугой), /(/, i)>0. ? На рис. 6.3 показан увеличивающий путь в сети, представленной на рис. 6.2. Дуга (а, ё) является обратной дугой в пути Р. f Рис. 6.3. Точечные линии указывают увеличи- увеличивающий путь. Числами без кружков показан поток величины 1; числа в кружках—пропуск- кружках—пропускные способности. Очевидно, что можно увеличить поток из s в t без нарушения закона сохранения потока во всех вершинах, увеличивая поток на © Рис. 6.4. Результат увеличения потока в сети, приведенной на рис. 6.3. каждой прямой дуге пути Р и уменьшая поток вдоль каждой об- обратной дуги При этом поток можно увеличивать до тех пор, пока не нарушится ограничение пропускной способности на некоторой пря- прямой дуге или некоторая обратная дуга не станет пустой. Таким об- образом, максимально возможная величина увеличения потока вдоль Р определяется формулой |^1' /)~"^'' ^ для ПРЯМОЙ ДУГИ \ 6= min |^1' /)~"^' \ по дугам | /(/', О ДЛЯ Обратной ДУГИ Г из Р к ' у из Р
126 Гл. б. Алгоритмы Форда — Фалкерсона и Дейкстры В примере на рис. 6.3 получаем 6=1; результат увеличения потока на эту величину представлен на рис. 6.4, где величина потока из s в t возросла с 1 до 2. Нам осталось описать систематическую процедуру нахождения увеличивающего пути, если такой путь существует. Такая про- процедура будет состоять в продвижении пометок из s до того момента, когда либо будет достигнуто /, либо процесс застопорится. Каждой вершине х будет приписываться пометка, состоящая из двух ча- частей, пометка(х)=(Ь\[х], L2 [х]). Здесь Lllx] — информация о том, (v, min {L2[x), b(x,у)-fix,у) )) (-*, min { L2[x],f(y,x)}) 'V о у (L\[x\,Ll{x\) /^ f(x,y)<b(x,y) (L\[x),L2[x)) /^ f(y, x) > О Рис. 6.5. Два возможных случая приписывания пометки вершине у при просмотре х откуда х помечалось, и L2[x] — величина дополнительного потока, который можно провести из s в х. Процесс распространения пометок из данной вершины х называется просмотром х, и мы будем хра- хранить список, называемый СПИСОК, помеченных, но не просмо- просмотренных вершин. Детали этого процесса просмотра вершины х приведены на рис. 6.5. Возможны два случая. Если вершина у не помечена и имеется дуга из х в у, то у можно пометить тогда, когда f(x, y)<. <Zb(x, у); в этом случае положим Ll[y]:=x, L2[y]:^ min<L2[*l, b{x, y)—f(x, у)}. Это означает, что вершина у была помечена из х и что поток можно увеличить на меньшую из двух величин U1 Ы и Ь(х, у)—f(x, у). Если вершина у не помечена и имеется дуга из у в х, можно по- пометить у из х, если f(y, x)>0; в этом случае положим L1 [«/]: = -*, L2[«/]:= min \L2[x], f(y, x)\. Заметим, что в L) использован знак минус, который говорит о том, что пометка получена вдоль обратной дуги. Алгоритм начинает работу с просмотра вершины s и включе- включения в СПИСОК всех вершин, помечаемых из s. Затем процесс пов- повторяется: выбирается и просматривается некоторая вершина х, входящая в СПИСОК, и все вершины, помечаемые из х, добавля-
6.2. Алгоритм пометок Форда и Фалкерсона 127 ются в СПИСОК- Этот процесс останавливается в одном из двух случаев: либо t получает пометку, тогда можно восстановить уве- увеличивающий путь обратным просмотром из t с использованием Ы, либо СПИСОК окажется пуст. В первом случае мы увеличиваем АЛГОРИТМ ФОРДА и ФАЛКЕРСОНА Вход. Сеть N = (s, t, V, A, b). Выход. Максимальный поток f в N. begin f: = 0 (comment: задание начального потока) ^ч снова: положить все пометки равными 0, положить СПИСОК: = {s}, (comment: выбрать начальные данные для поиска нового увеличиваю- увеличивающего пути) while СПИСОК Ф 0 do begin пусть х—любая вершина из СПИСОК; удалить х из СПИСОК; ПРОСМОТРЕТЬ х; if t помечена then begin увеличить поток i вдоль увеличивающего пути; go to снова end end end procedure ПРОСМОТРЕТЬ begin пометить все непомеченные вершины, в которые ведут ненасыщенные дуги из х, занося новые помеченные вершины в СПИСОК; пометить все непомеченные нершины, из которых в х идут дуги с положитель- положительным потоком, занося новые помеченные вершины в СПИСОК; end Рис. 6.6. Алгоритм Форда и Фалкерсона для решения задачи о максимальном потоке. поток вдоль увеличивающего пути, во втором случае, как будет показано нижь, мы получаем оптимальный поток. Набросок этого алгоритма приведен на рис. 6.6. Покажем теперь, что этот алгоритм может остановиться только после достижения оптимальности (причем покажем это, не опираясь на тот факт, что алгоритм был получен как прямо-двойственный алгоритм). Теорема 6.3. Если алгоритм пометок Форда и Фалкерсона оста- останавливается, это означает, что получен оптимальный поток. Доказательство. После остановки алгоритма некоторые вершины помечены и некоторые не помечены. Обозначим множество поме- помеченных вершин через W и множество непомеченных вершин через W, как показано на рис. 6.7. Все дуги (х, у), ориентированные из
128 Гл. 6. Алгоритмы Форда — Фалкерсона и Дейкстры W в W, должны быть насыщены, ибо в противном случае у должна была бы быть помечена во время просмотра х. Аналогично, все дуги (у, х), ориентированные из W в W, должны быть пусты, ибо в противном случае у также должна была бы быть помечена во время просмотра х. Следовательно, (W, W) — минимальный разрез, и по теореме 6.2 поток должен быть оптимальным. ? Пример 6.1 (продолжение). На рис. 6.8 показан результат при- применения к потоку величины 2. представленному на рис. 6.4, трех Насыщенные дуги /Помеченные / вершины"" ' \ \ ) / f У \ [ \ \ Непоме ченные\ i ) Пус 11,10 дуги Рис. 6.7. Множества W и W в конце алгоритма пометок Форда и Фалкерсона. операций увеличения потока, приводящих к оптимальному потоку величины 5. Этот оптимальный поток отличен от оптимального по- потока, представленного на рис. 6.2, однако минимальный разрез оказался тем же. (В этом примере мы допустили любые промежуточ- промежуточные увеличивающие пути, чтобы проиллюстрировать распростра- распространение пометок по обратным дугам. Алгоритм пометок не мог бы найти первый увеличивающий путь, показанный на рис. 6.8, а нашел бы некоторый другой. Это, однако, никак не влияет на ут- утверждение теоремы 6.3.) ? 6.3 Проблема конечности алгоритма пометок Мы показали, что если алгоритм пометок Форда и Фалкерсона останавливается, то в результате он находи! поток оптимальной величины. Но откуда известно, что этот алгоритм останавливается после конечного числа итераций? Ответ может несколько удивить, поскольку все рассмотренные до сих пор алгоритмы были конеч- конечными. На самом деле если пропускные способности b иррациональны, то алгоритм пометок может не остановиться. Очевидно, что в том случае, когда пропускные способности b — целые числа, алгоритм конечен, поскольку при каждой операции увеличения потока величина потока возрастает по крайней мере на 1,
6.S. Проблема конечности алгоритма пометок 129 Заключительное множество помеченных\ вершин .©' Рис. 6.8. Три увеличения потока, изображенно- изображенного на рис. 6.4, приводящие к оптимальному пото- потоку величины 5. 3032
130 Гл. 6. Алгоритмы Форда — Фалкерсона и Дейкстры и если величина максимального потока равна v, то возможно не более v увеличений потока Точно так же, если пропускные спо- способности рациональны, можно привести их к общему знаменателю D, изменить масштаб в D раз и, используя ге же рассуждения, за- заключить, что возможно не более Du увеличений потока. Пример, принадлежащий Форду и Фалкерсону IFF], показы- показывает, что в том случае, когда пропускные способности иррацио- иррациональны, рассматриваемый метод не только может не останавливать- останавливаться, но можем также сходиться к потоку, величина которого строго меньше оптимального значения! Эдмондс и Карп [ЕК! предложили модификацию алгоритма пометок и показали, что их модифици- модифицированный алгоритм пометок требует не более чем (п3—пIА итера- итераций увеличения потока независимо от величин пропускных спо- способностей. Мы не будем здесь гратить время на описание их идей, поскольку позже обсудим даже более эффекшвные алгоритмы на- нахождения максимального потока (см. задачу 10 в гл. 9). Мы, однако, приведем упомянутый пример Форда и Фалкерсона, поскольку он дает возможность лучше понять работу как прямо- двойственного алгоритма, так и алгоритма пометок. Поток в этом примере будет увеличиваться шаг за шагом, причем п-й шаг (п^\) будет состоять из двух операций увеличения потока соответственно на величины ап + 1 и оп+2 При этом величины а* будут удовлетворять разностному уравнению ая + » = вя—в„+1 F-6) с начальными условиями ао=1 и а,=о=(\/Г5 —1)/2<1- Отсюда, используя индукцию, нетрудно показать, что at = a\ / = 0, I F.7) На шаге 0 будет производиться только одно увеличение потока на величину On, поэтому величина суммарного поюка будет стремиться к пределу ао + (а, + а3) + (а, + а,) + ...=ao + ai+a2+ ... =-J-^ = S. F.8) На рис. 6.9(а) приведена сеть со следующими вершинами: исток ь, сток t, 4 вершины хи . , х4 и 4 вершины г/,, . . ., г/4. Дуги в сети двух типов: 4 особые дуги A, — (xt, //,) и неособые дуги, имеющие вид (ь, Xi), (t/i, у/), (г/,-, х,), (х,, у,) или (г/,, t), [ф\. Для особых дуг про- пропускные способности таковы: а„ для А,, а, для Л2 и о2 для А3 и Л4 Все неособые дуги имеют пропускные способности S. Операции увеличения потока будут выполняться следующим образом. Шаг 0. Выберем увеличивающий путь (s, xu yu t) и величину увеличения аи. Это приводит к упорядоченному множеству @, О], а2, а2) остаточных пропускных способностей особых дуг. Шаг п(п^\) В качестве базиса индукции допустим, что ^и Аг, <4з» A't — некоторое упорядочение особых дуг с остаюч-
6.3. Проблема конечности алгоритма пометок 131 (а) У* о (в) Рис. 6.9. Патоло! ический пример для алгоритма Форда и Фалкерсона. а) Сеть б) и в) Первая и вторая части шага п. Показаны только дуги увеличивающих путей. ными пропускными способностями @, ап, а,1 + ,, ап+1). Упорядо- Упорядочим соответственно х\ и у]. Увеличение л(а). Выберем увеличивающий путь (s, х'±, у'и х'я, у'з, t), при этом остаточные пропускные способности будут равны (О, а„+2, 0, аи+1) (см. рис. 6.9F)).
132 Гл. 6. Алгоритмы Форда — Фалкерсона и Дейкстры Увеличение л(б). Выберем увеличивающий путь (s, х'г, у'2, у'и х[> У'з< х'з, y'it 0. ПРИ этом остаточные пропускные способности будут равны (а„ + 2, 0, ап + 2, ап + 1) (см. рис. 6.9(в)). Остаточные пропускные способности в конце шага п пригодны для начала шага /г+1, и, используя индукцию, можно показать, что каждый шаг увеличивает поток на величину ап + 1-\-ап + -2=ап. Получаем требуемый пример, в котором алгоритм не останавлива- останавливается. В действительности максимальный поток в рассматриваемой сети равен 4S, так что алгоритм Форда — Фалкерсона достигает только одной четверти величины оптимального потока. Как примирить этот пример с тем фактом, что рассматривае- рассматриваемый алгоритм получен в результате применения прямо-двойствен- прямо-двойственного алгоритма? Прежде всего напомним, что (как отмечено выше) результате конечности прямо-двойственного алгоритма (теорема 5.4) в данном случае не применим, поскольку мы не используем сим- симплекс-алгоритм для ограниченной прямой задачи ОП и не имеем механизма устранения зацикливания. На самом же деле задача ОП сильно вырожденна (имеет всего одну ненулевую компоненту в правой части), всегда имеет оптимальное значение 1 и зациклива- зацикливается. Задача ДОП, двойственная к ограниченной прямой задаче, также зацикливается, поскольку увеличивающие пути повторяются в фиксированной последовательности. Между тем в двойственной задаче Д, т. е. в самой задаче о максимальном потоке, величина потока возрастает монотонно. Отсюда видно, что использование прямо-двойственного алгорит- алгоритма для построения специализированного комбинаторного алгоритма несет с собой определенную опасность. Оно возлагает на нас от- ответственность за правильное разрешение неопределенностей для обеспечения конечности алгоритма. Например, в случае задачи о максимальном потоке необходимо указать, как выбирать увеличива- увеличивающие пути так, чтобы избежать катастрофы, подобной только что описанной. Стоит сказать, однако, что вопрос о конечности, поднятый при- примером Форда и Фалкерсона, в некотором смысле более математиче- математический, чем практический, поскольку цифровые вычислительные маши- машины всегда работают с рациональными числами. В наших дальней- дальнейших рассмотрениях, особенно касающихся сложности вычислений, всегда будет предполагаться, что данные могут быть представлены с помощью конечного числа двоичных разрядов. При этом возникает практический вопрос, связанный с вопросом о конечности алгорит- алгоритма, о том, сколько шагов как функция общего числа двоичных раз- разрядов в данных может потребоваться для вычисления. Ниже, в гл. 9, мы увидим, что некоторое усовершенствование основного алгоритма увеличения потока обеспечит хорошее поведение в этом смысле.
6.4. Алгоритм Дейкстры 133 6.4 Алгоритм Дейкстры Опишем теперь детали эффективной реализации прямо-двой- прямо-двойственного алгоритма для задачи о кратчайшем пути, построенного в гл. 5,— алгоритма Дейкстры. Напомним читателю, что веса сц всех дуг в задаче о кратчайшем пути предполагаются неотрицатель- неотрицательными. В дальнейшем будет видно, что это важное ограничение. АЛГОРИТМ ДЕЙКСТРЫ Вход. Орграф D = (V, А) со стоимостями cuvS=0 его дуг; вершина sgV. Выход. Массив р кратчайших расстояний от s до всех v?V. begin положить W:={s}; p(s): = O; for all y?V —{s} do p[y]:=csv; while W ф V do begin найти min {p[y]: y^EW}, скажем р[х]; положить W:= W[J{x}; for all ygV —W do p[y]:=min{p [y], p[x]+cxy} end end Рис. 6.10. Алгоритм Дейкстры. Вместо распространения неизменяющихся пометок назад от вер- вершины t будем двигаться вперед из вершины s. На каждом шаге у нас будет множество вершин W и пометки р(х) для всех x?V, обла- обладающие свойством р(х) = (кратчайшая длина пути из s в х, в котором все промежуточные вершины принадлежат W). F.9) Рассмотрим вершину x§W с наименьшим значением р(х). В крат- кратчайшем пути из s в эту вершину х все промежуточные вершины при- принадлежат W, ибо в противном случае значение р (х) не было бы на- наименьшим среди всех пометок, приписанных вершинам, не входя- входящим в W (мы воспользовались неотрицательностью весов сг1). Поэтому можно добавить х к W и вычислить новые значения поме- пометок р(у) для y^W по формуле = min{p(y), p{x) + cxy\ для всех y^W. F.10) Эта формула показывает, что либо р(у) для y^W не изменяется при добавлении х к W, либо новое р(у) равняется кратчайшему рас- расстоянию от s до х по вершинам из W плюс расстояние непосредст- непосредственно от х до у (см. задачу 4). Когда W совпадет с V, р(х) будет кратчайшим расстоянием из s в х без каких-либо дополнительных ограничений. Вначале положим W=0, все р=оо и будем начинать алгоритм с добавления s к W. Описанный алгоритм приведен на рис. 6.10. В нем предполагается, что cxv—°o, если дуга (х, у) от- отсутствует.
134 Гл. 6. Алгоритмы Форда — Фалкерсона и Дейкстры На рис. 6.11 показана последовательность шагов применения алгоритма Дейкстры к задаче о кратчайшем пути, использованной в примере 1 гл. 5. Кратчайший путь относительно легко восстано- w Рис. 6.11. Последовательные этапы применения алгоритма Дейкстры. вить обычным способом — для этого достаточно в каждой вершине отмечать, откуда пришла ее пометка в соответствии с F.10). В рас- рассматриваемом примере каждый раз, когда вершина добавляется к W, соответствующая дуга штрихуется. В результате получается дерево с корнем в s, содержащее кратчайшие пути из s во все осталь- остальные вершины. Время работы алгоритма Дейкстры можно оценить сверху сле- следующим образом. Число шагов на каждой итерации пропорцио- пропорционально числу вершин, не входящих в W, которое не превосходит п. Поскольку происходит п итераций (включая начальное присвое- присвоение), то общее время работы алгоритма не превосходит по порядку п'г.
6.5. Алгоритм Флойда — Уоршелла 135 6.5 Алгоритм Флойда—Уоршелла В заключении этой главы приведем очень эффективный, просто программируемый и широко используемый алгоритм, который находит кратчайшие пути одновременно между всеми парами вершин Более того, он имеет важное преимущество перед алго- алгоритмом Дейкстры, а именно он работает и в гом случае, когда допускаются отрицательные веса дуг, и позволяет в этом случае Рис. 6.12. Операция треугольника для фикси- фиксированного / и всех остальных i и k. находить циклы с отрицательной стоимостью. Однако этот алгоритм не является, по-видимому, прямо-двойственным. Алгоритм работает с массивом размера пХп, содержащим числа йц, вначале равные весам сц дуг ориентированного графа G— = (V, E). Для дальнейшего удобно положить Сц = оо для всех (. Ядром алгоритма является следующая операция. Определение 6.4. Пусть дана матрица расстояний dtj размера пХп Операцией треугольника для фиксированной вершины / называется операция dik: = min \dik, d^+d^} для всех i, k = l, ...,n, таких, что i, кф\. Заметим, что допускается l=k. Q Эта операция для каждой пары i и k заменяет элемент dih рас- расстоянием dij+djk, если оно короче (рис. 6.12). Алгоритм Флойда — Уоршелла основан на приводимой ниже теореме; индуктивное доказательство этой теоремы позволяет легко понять, почему алгоритм правильно работает. Теорема 6.4. После выполнения операции треугольника последо- последовательно для значений /=1, 2, . ..., п каждый элемент dtk стано- становится равным длине кратчайшего пути из i в k в предположении, что веса ^0 Доказательство. Докажем по индукции, что после применения операции треугольника для /=/0 элемент dtk для любых i и k равен
136 Гл. 6. Алгоритмы Форда — Фалкерсона и Дейкстры длине кратчайшего пути из i в k по вершинам с номерами о</0. Для /о= 1 утверждение очевидно. Допустим, что предположение индукции верно для /=/„—1, и рассмотрим операцию треугольника для /=/(,: Если кратчайший путь из i в k по вершинам с номерами о</0 не проходит через /0, то минимум будет достигаться на первом аргу- аргументе, dik не изменится при этой операции и будет снова удовлет- удовлетворять предположению индукции. С другой стороны, если кратчай- кратчайший путь из i в k по вершинам с номерами v<.ju проходит через /0, то dik заменится на dnt-{-d/ok. По предположению индукции dtj0 и djok являются соответствующими оптимальными расстояниями АЛГОРИТМ ФЛОЙДА —УОРШЕЛЛА Вход. Матрица [cjj] размера пХп с неотрицательными элементами. Выход. Матрица [dij] размера пХп, где djj— кратчайшее расстояние из i в j при заданных расстояниях [cjj]. begin for all i Ф j do dij: = c^; for i = i, ..., n do dii: = oo; for j =1, ..., n do for i = 1, ..., n, i Ф j, do for k=I, ..., п, к ф j, do dik:=min {dik, dij + d1k} end Рис. 6.13. Алгоритм Флойда — Уоршелла по вершинам с номерами о</0—1, поэтому dc^+dfj,— оптимальное расстояние по вершинам с номерами и</0. Этим индукция завер- завершается. ? Полностью алгоритм приведен на рис. 6.13. Все циклы в нем имеют фиксированную длину, и общее число сравнений, которое тре- требуется произвести в алгоритме, равно п(п—IJ. Можно следить и за самими кратчайшими путями с помощью другой /гХ/г-матрицы, скажем eih, определяемой следующим обра- образом: е!к == (промежуточная вершина с наибольшим номером на кратчайшем пути из i в k, если такая суще- существует, и нуль в противном случае). Положим вначале е1к=0, и при выполнении операции треуголь- треугольника положим е /, если dlh>du е!к в противном случае. Тогда кратчайший путь из i в k можно легко восстановить по заключительной матрице elh (см. задачу 13).
6.5. Алгоритм Флойда — Уоршелла 137 О 3 Рис. 6.14. Граф с циклом отрицательно- отрицательного веса. Начальное jr 1- i ;=2 оо ,„ 2 со 0 - 4 -4 „о оо —1 1 1 'X) СХ1 ОС 1 1 оо „о 1 0 1 t 0 0 A A 0 и 0 0 A 0 0 0 0 0 0 0 0 0 0 0 0 0 и 0 0 [) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 © 0 1 0 © Рис. 6.15. Последовательные матрицы расствя- ний и матрицы е,у при применении алгоритма, Флойда — Уоршеллд.
138 Гл. 6. Алгоритмы Форда — Фалкерсона и Дейкстры Посмотрим теперь, что происходит, если допускаются отрица- отрицательные веса дуг Сц. Если при этом нет циклов отрицательной дли- длины, то кратчайшие пути, фигурирующие в доказательстве теоре- теоремы 6.4, вполне определены и алгоритм работает так же, как с не- неотрицательными весами. Если же имеется цикл отрицательной дли- длины, то некоторое dhh в процессе алгоритма станет отрицательным. Для доказательства этого рассмотрим простой цикл отрицательной длины, и пусть h — вершина с наибольшим номером на этом цикле. Тогда из доказательства теоремы 6.4 следует, что этот путь отрица- отрицательной длины из h в h по вершинам с номерами v<Ji будет найден на шаге j=h. Пример 6.2. На рис 6.14 показан граф с циклом отрицательной длины, а на рис. 6.15 приведены матрицы йц и вц, получаемые на последовательных шагах применения алгоритма Флойда — Уоршел- ла. Измененные элементы матриц обведены кружком. Мы останав- останавливаемся, получив dit=—1, что соответствует циклу отрицательной длины 4-2-1-4, который можно найти по последней матрице eih. ? Подведем итог. С помощью алгоритма Дейкстры можно решить задачу о кратчайшем пути в графе с п вершинами и неотрицатель- неотрицательными весами за время, пропорциональное п.'2. Если же допускаются отрицательные веса, можно, используя алгоритм Флойда — Уоршел- ла, решить задачу о кратчайшем пути при отсутствии циклов отри- отрицательного веса или даже найти цикл отрицательного веса за время, пропорциональное п3. Алгоритм Дейкстры также можно расширить на случай отрицательных весов, однако тогда он тоже будет тре- требовать времени, пропорционального ns [Ne, BL]. Задачи 1 [FF, Mi]. Минiи предлагает решение задачи о кратчайшем пути в неориен- неориентированном случае с помощью следующей аналоговой модели. Соорудим веревоч- веревочную модель для данного неориентированного графа, используя для каждого ребра кусок веревки, пропорциональный его длине. Возьмем начальную вершину в одну руку, а конечную вершину в другую руку и будем разводить их до тех пор, пока какой-нибудь путь из начальной вершины в конечную не окажется полностью натянутым. Покажите, что при этом решается задача, двойственная к задаче о кратчайшем пути. Дайте интерпретацию прямо двойственного алгоритма для этой задачи в терминах веревочной модели (*) Можете ли вы придумать анало- аналоговое устройство для решения задачи о максимальном потоке? 2. Докажите справедливость равенства F.7) для о,- в рассмотренном примере бесконечной работы алгоритма пометок. 3. Предположим, что в рассмотренном примере задачи о потоке, в котором алгоритм пометок работает бесконечно долго, десятичные разложения чисел а, ограничиваются k десятичными разрядами. Почему в этом случае алгоритм по- пометок будет завершать работу за конечное число шагов? 4. Покажите, что формула пересчета F.10) в алгоритме Дейкстры удовлетво- удовлетворяет условию 'G.9). 5. Покажите, что если в алгоритме Флойда — Уоршелла. приведенном на рис. 6.13, остановка происходит при получении первого отрицательного диа-
^ Зидачи 139 тонального элемента йц, го соответствующий этому элементу замкнутый путь яв- является простым циклом с отрицательной стоимостью Покажите, г другой сто- стороны, что если при наличии циклов отрицательной стоимости алгоритм работает до конца, го получаемые в результате значения не обязательно представляют стоимости простых путей. 6 [FF]. а) Докажите следующую георему Кёнига — Эгервари, сформули- сформулировав ее как некоторую задачу о максимальном потоке. Рассмотрим массив ячеек размера тХп, где некоторые ячейки выделены как важные. Строки и столбцы будем называть линиями и будем говорить, что множество линий покрывает важ- важные ячейки массива, если каждая важная ячейка лежит на некоторой линии из данного множества Множество важных ячеек называется независимым если ни- никакие две ячейки из этого множества не лежат на одной и той ж< линии Теорема (Кёниг — Эгервари). Максимальная мощность независимого мно- множества ш ясных ячеек равняется наименьшей мощности множества -шний, покры- покрывающих ice /ажные ячейки. б) Объясните, как получить независимое множество максимальной мощности и минимальное покрытие линиями из решения соответствующей задачи о макси- максимальном потоке. в*) Оцените число шагов этого алгоритма в зависимости от я, л и числа важных ячеек р 7. Покажите, лак можно применить алгоритм Форда — Фалкерсона в гом случае, когда пропускные способности заданы в вершинах сети. 8. Пусть ориентированный граф G представляет сеть связи Максимальное число не пересекающихся по вершинам путей из вершины ^ в вершину t назы- называется i-t-связностью. ч-1-цяжимоапыь сети называется минимальное число вершин (отличных от s и t), удаление которых разъединяв! s и t Докажи1е, что s-Z-связ- ность равняется s-i-уя.чвнмости (это один из вариантой 1еоремы Менгера 1FFJ). 9* Пусть для каждой дуги п сети наряду с верхней границей потока задана также нижняя граница; т. е. для каждой дуги (/, /) наложено требование /|-у< а) Покажите, как с помощью алгоритма Форда — Фалкерсона определить, существует ли допустимый поток из s в / величины v. (Указание: начните с недо- недопустимого потока и сiдраитесь получить допустимый поток) б) Покажите, как найти допустимый пото > минимальной величины. в) Покажите как найти допустимый поток максимальной величины. 10 IFF]. Пусть есть п мужчин, п женщин и т брачных маклеров Каждый маклер имеет список некоторых из этих мужчин и женщин являющихся его клиентами, и может устроить брак между любым мужчиной и любой женщиной из этого списка Потребуем дополнительно, чтобы число браков, которые может устроить маклер i, не превосходило Ь/ В брак могут вступать только лица раз- разного пола, и каждый человек может иметь только одного супруга. Переведите задачу нахождения решения с наибольшим числом браков в задачу нахождения максимального потока в некоторой сети. 11. Пусть дана сеть и требуется между всеми парами вершин найти пути с максимальной пропускной способностью в том смысле, что наименьшая пропуск- пропускная способность дуг на пути должна быть максимальна. Модифицируйте алго- алгоритм Флойда — Уоршелла так, чтобы он решал эту задачу за время О(п*) для сети с п вершинами. 12. Чем оправдывается исключение случаев i=/ и к—\ в алгоритме Флойда — Уоршелла даже тогда, когда разрешаются отрицательные веса? Будет ли алго- алгоритм правильно работать, если допустить эти случаи? 13. Опишите детали процесса восстановления кратчайших путей в алгоритме Флойда — Уоршелла.
140 Гл. 6. Алгоритмы Форда — Фалкерсона и Дейкстры Комментарии и ссылки Пример, в котором алгоритм пометок работает бесконечно, взят из книги IFF] Ford L. R., Fulkerson D. R. Flows in Networks, pp. 21—22. Princeton, N. J.: Princeton University Press, 1962. [Имеется перевод: Форд Л. Р., Фалкерсон Д. Р. Потоки в сетях.—М.: Мир, 1963.1 Эдмондс и Карп предложили модификацию алгоритма пометок, в которой увели- увеличение потока на каждом шаге производится вдоль пути с наименьшим возможным числом дуг. Для этого алгоритма они получили оценку (п3—п)/4 для числа уве- увеличений потока (см. также задачу 10 в гл. 9). [ЕК] Edmonds J., Karp R. M. Theoretical Improvement in Algorithmic Efficiency for Network Flow Problems, J. ACM, 19, No 2 (April 1972), 248—264. Ссылка на статью Дейкстры приведена в гл. 5. Алгоритм Дейкстры расширен на случай, когда допускаются отрицательные веса дуг, в работах [Ne] Nemhauser Q. L. A Generalized Permanent Label Setting algorithm for the Shortest Path between Specified Nodes, J. Math. Analysis and Appl., 38 A972), 32g 334 [BLJ Bazaraa M. S., Langley R. W. A Dual Shortest Path Algorithm, J. SIAM, 26, No 3 (May 1974), 496—501. Идея в этих работах состоит в нахождении допустимого решения двойственной задачи и последующемприменении стандартного алгоритма к задаче с модифици- модифицированными весами C(j—я,~|-лу^0. В работе [BL] для такой процедуры получена оценка, пропорциональная IVI3. Алгоритм Флойда — Уоршелла взят из работ [FI| Floyd R. W. Algorithm 97: Shortest Path, Comm. ACM, 5, No 6 A962), 345. [WA] Warshall S. A Theorem on Boolean Matrices, J. ACM, 9, No 1 A962), 11 — 12. Идея этого алгоритма описывается в очень широкой постановке на языке замк- замкнутых полуколец и приписывается Клини в книге [AHU] Aho А. V., Hopcroft J. Е„ Ullman J. D. The Design and Analysis of Com- Computer Algorithms. Reading, Mass.: Addison-Wesley Publishing Co., Inc., 1974. [Имеется перевод: Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов.— М.: Мир, 1979.] Веревочная модель для задачи о кратчайшем пути, описанная в задаче 1, содер- содержится в книге [FF, с. 189 в русском переводе] и в работе [Mi] Minty Q. J. A Comment on the Shortest Route Problem, OR, 5, No 5 (October 1957), 724. Дополнительную информацию о задаче о кратчайшем пути и ее решении методом динамического программирования можно найти в гл. 18
7 Прямо-двойственные алгоритмы для задачи о потоке минимальной стоимости 7.1 Задача о потоке минимальной стоимости Изучим теперь важный и широкий класс задач о сетях, в кото- которых заданы нетривиальные ограничения как в виде пропускных способностей, так и в виде стоимостей Наша цель — применить и специально приспособить для этого случая прямо-двойственный алгоритм так же, как это было сделано для задач о максимальном потоке и кратчайшем пути Это можно сделать двумя способами: можно рассмотреть исходную задачу как двойственную задачу Д, комбинаториализовать пропускные способности и прийти к некото- некоторым подзадачам о минимальной стоимости; либо можно рассмотреть исходную задачу как прямую задачу П и комбинаториализовать стоимость. Начнем с первого варианта, в котором все время сохра- сохраняется допустимое решение исходной задачи Д и не используется явно прямая задача П или ее ограничение. Задачу, которую мы хотим рассмотреть, можно определить сле- следующим образом. Определение 7.1. Пусть N=(s, t, V, Е, b) — потоковая сеть, в основе которой лежит ориентированный граф G=(V, Е), и пусть каждой дуге (/, j)?E приписан вес ctj^R +. Пусть, кроме того, задана величина потока vo?R + . Задача о потоке минимальной стоимости состоит в нахождении допустимого потока из s в t величины v0, имеющего минимальную стоимость. Эту задачу можно следующим образом представить в виде задачи ЛП: min c'f, Af = —v,jd для каждой вершины, ._ /^& для каждой дуги, / ^ О для каждой дуги, где, как обычно, А — матрица инциденций вершин и дуг и — 1 при i = s, dt=- +1 при i = t, G.2) 0 в противном случае. ? В отличие от задачи о максимальном потоке в задаче о потоке минимальной стоимости ставится вопрос о потоке фиксированной величины, самом дешевом среди всех таких потоков.
142 Гл. 7. Задача о потоке минимальной стоимости 7.2 Комбинаториализация пропускных способностей. Алгоритм ЦИКЛ Представим задачу о потоке минимальной стоимости в виде двойственной для некоторой прямой задачи в стандартной форме: max — i'/, / ^fc для каждой дуги, —/^0 для каждой дуги. При этом равенства в уравнениях сохранения потока мы заменили неравенствами, что можно оправдать так же, как в задаче о макси- максимальном потоке. Для любого допустимого потока каждое из этих неравенств будет обращаться в равенство Начальный поюк вели- величины v0 в Д нетрудно найти, используя, например, алгоритм на- нахождения максимального потока. Задачу ДОП, двойственную к ограниченной прямой задаче, можно получить с помощью таких же рассуждений, как в задаче о максимальном потоке: max — c'f, At=O, /<0 для насыщенных дуг, (ДОП) /'^ 0 для пустых дуг, / Зг — 1 для всех дуг (поскольку —<"^0). Здесь мы снова заменили Af-^.0 на At—Q с гем, чтобы вернуться к явному выражению закона сохранения потока в каждой вершине. Допустимый поток, удовле1воряющий условию /4/=0, имеет для нас особое значение, в связи с чем мы дадим ему специальное на- название Определение 7.2. Допустимый поток/, удовлетворяющий условию Af=O, называе1ся циркуляцией. Его стоимость равна c'f. ? Оптимальным решением задачи ДОП является циркуляция специального вида: в ней tie должно быть отрицательного потока по любой пустой дуге, положительного потока по любой насы- насыщенной дуге, и величина потока по любой дуге должна быть не меньше чем — 1 Удобно определить новую сеть с весами и про- пропускными способностями, заключающую в себе эти ограничения Определение 7.3. Пусть дан допустимый поток / во взвешенной потоковой сети N. Определим взвешенную потоковую сеть прира- приращения M'(f) следующим образом Множество вершин в сети N' будет тем же, что и в N Каждой дуге e=(i, /) из N с потоком о, пропуск- пропускной способностью d и стоимостью с сопостчгшм две дуги в N': дугу (i, /) с пропускной способностью d—v^O и стоимостью с и дугу
7.2. Комбинаториализация пропускных способностей 143 (/, t) с пропускной способностью сСэЮ и стоимостью — с. Все дуги с нулевыми пропускными способностями отбросим (см. рис. 7.1) П Из этого определения следует, что путь веса х из s в / в сети N'(f) определяет увеличивающий путь из s в / в сети N и увеличение по- потока f из sb t в сети N вдоль этого пути на 1 приводит к увеличению общей стоимости потока на х единиц Аналогично, циркуляция ] стоимости х в сети /V'(/) определяет новый поток f-\-f из s в t в сети N той же величины, причем стоимость потока увеличивается на х. Поток v 0< v<d Пропускная способность (d-v) Стоимость с Стоимость с Пропускная способность d Пропускная способность v Стоимость — с Рис 7.1 Дуга во взвешенной потоковой сети и соответствующие дуги в сети приращения N' (/). Теперь можно сформулировать условие оптимальности для задачи ДОН в следующем виде. Теорема 7.1. Поток f из ь в ( в некоторой сети является потоком минимальной стоимости тогда и только тогда, когда в сети N'(f) нет циклов с отрицательной стоимостью. Доказательство Из прямо-двойственного алгоритма следует, что поток / оптимален тогда и только тогда, когда оптимальное procedure НИКЛ begin использовать алгоритм построения максимального потока для нахождения потока величины v0; while в N' имеется цикл С отрицательной длины do увеличить поток по С until N' не будет содержать С end Рис. 7.2. Прямо-двойственный алгоритм ЦИКЛ для задачи о потоке минимальной стоимости решение задачи ДОП имеет нулевую стоимость, что эквивалентно отсутствию циркуляции отрицательной стоимости в N'(f). В свою очередь в сети приращения /V'(/) существует циркуляция отрица- отрицательной стоимости тогда и только тогда, когда в этой сети есть цикл отрицательной стоимости. ?
144 Гл. 7. Задача о потоке минимальной стоимости Прямо-двойственный алгоритм можно теперь реализовать сле- следующим образом: начать с произвольного потока / величины v0 и искать цикл отрицательной стоимости, используя либо алгоритм Флойда — Уоршелла, либо обобщение алгоритма Дейкстры для нахождения циклов отрицательного веса. Соответствующий цикл .© ©. © Рис. 7.3. Взвешенная потоковая сеть, иллюст- иллюстрирующая задачу о потоке минимальной стои- стоимости. (Числа в кружках — пропускные способ- способности; числа без кружков — стоимости.) в прямо-двойственном алгоритме завершается добавлением к ис- исходному потоку / максимально возможного циклического потока /на найденном в сети цикле. Окончательный алгоритм ЦИКЛ, при- принадлежащий Клейну (КП, приведен на рис. 7.2. О — 5 © © Рис. 7.4. Первая сеть приращения N' из при- примера 7.1. Пример 7.1. На рис. 7.3 приведена взвешенная сеть N с четырьмя вершинами и шестью дугами. Пусть требуется найти поток мини- минимальной стоимости величины 2 из s в t. Допустим, что уже найден поток с общей стоимостью 17, в котором одна единица потока про- проходит вдоль пути (s, a, t) и одна единица потока проходит вдоль
7.3. Комбинаториализация стоимости 145 пути (s, а, Ь, (). На рис. 7.4 показана сеть приращения N'. Заметим, что цикл (s, b, a, s) с отрицательной стоимостью является циркуля- циркуляцией / стоимости —5. Можно добавить одну единицу циркуляции / к исходному потоку /. При этом получится поток, в котором одна единица проходит вдоль пути (s, a, t) и одна единица проходит вдоль .0. 0 -5 О Рис. 7.5. Вторая сеть приращения N' из при- примера 7.1. пути (s, b, t), и общая стоимость потока равна 17—5=12. В новой сети приращения, показанной на рис. 7.5, нет циклов отрицательной стоимости, и, следовательно, полученный поток оптимален. ? Будем называть алгоритм ЦИКЛ алгоритмом, допустимым относительно задачи, поскольку он всегда работает с допустимым решением исходной задачи. Это аналогично тому, что симплекс-ал- симплекс-алгоритм называется прямо-допустимым, однако этот термин был бы здесь совершенно некорректным, поскольку нашу исходную задачу можно рассматривать и как прямую, и как двойственную. 7.3 Комбинаториализация стоимости. Алгоритм ДОСТРОЙКА Второй вариант применения прямо-двойственного алгоритма к задаче о потоке минимальной стоимости состоит в рассмотрении этой задачи как прямой задачи П и комбинаториализации стоимос- стоимости. При этом задача усложняется, поскольку нам приходится иметь дело с соответствующей двойственной задачей Д — искать, напри- например, допустимое множество. Этот вариант реализова достаточно явно Фордом Фалкерсоном [FF], которые рассматривают величину потока v как переменную. Он" максимизируют функцию стоимости pv—c'f ,7.3) для возрастающих значений числа р, получая таким образом по- последовательность потоков возрастающей величины, каждый из ко»
146 Гл. 7. Задача о потоке минимальной стоимости торых имеет минимальную стоимость. Однако вследствие всего этого получается алгоритм, вовсе не использующий двойственную зада- задачу Д. Ключевой результат можно сформулировать в виде следую- следующей теоремы. Теорема 7.2. Пусть fi — оптимальный поток величины v в ин- индивидуальной задаче о потоке минимальной стоимости. Пусть f2 — поток величины 1 вдоль увеличивающего пути Р наименьшей стоимости из s в ( в сети N'(fi). Тогда /i+fa — оптимальный поток величины v +1. Доказательство. Если поток f\-\-fi не оптимален, то по теореме 7.1 в сети приращения /V'^-j-fa) имеется цикл С отрицательной стои- стоимости. Этот цикл появился в сети приращения в тот момент, когда Путь Р Луга е Гюимосгь — i Цикл С Рис. 7.6. Конструкция из доказательства теоре- теоремы 7.2. Цикл С отрицательной стоимости при- приводит к пути Р меньшей стоимости. поток увеличился с величины v до v-\-1, поскольку поток псличины v был оптимален и поэтому в /V'(fi) не было циклов отрицательной стоимости. Следовательно, р С найдется дуга e-----(i, j) стоимости —с, соответствующая некоторой д\ ге (/, /) пути Р, как показано на рис. 7.6. Заменим дугу (/, i) пути Р на С—{е} При этом стоимость пути Р увеличится на —с+ (стоимость оставшейся части С) = стоимость С<0. Следовательно, путь Р не был самым дешевым путем из s в t в сети N'ifi), это противоречие доказывает, что поток f, 4-f, оптимален. Q Согласно теореме 7 2, можно достраивать оптимальный поток шаг за шагом, добавляя потоки вдоль увеличивающих путей наи- наименьшей стоимости в /V'. На каждом шаге мы находим в N' увели- увеличивающий путь Р наименьшей стоимости и затем увеличиваем поток вдоль Р до тех пор, пока либо поток не достигнет величины v, либо путь Р не перестанет быть увеличивающим путем наименьшей стои- стоимости из-за того, что какая-нибудь его дуга пропадет, поскольку со- соответствующая дуга в N станет насыщенной или пустой. Заметим,
7.4. Задача Хичкока 147 что стоимость некоторых дуг в /V' может быть отрицательной, и ал- алгоритм поиска кратчайшего пути, применяемый для нахождения Р, должен это учитывать Однако, поскольку на каждом шаге мы имеем оптимальный поток некоторой величины ,<Си, в N' никогда нет цик- циклов отрицательной стоимости. Описанный алгоритм в общих чертах приведен на рис. 7 7, В отличие от алгоритма ЦИКЛ алгоритм ДОСТРОЙКА не по- порождает допустимого потока величины v0 до тех пор, пока не ос- остановится, поэтому мы будем называть его алгоритмом, недопусти- недопустимым относительно задачи. Пример 7.2. Если начать с нулевого потока в сети, приведен- приведенной на рис. 7.3, то путем из s в t наименьшей стоимости будет путь procedure ДОСТРОЙКА begin while поток i < vu do begin найти в N' кратчайший путь Р из > в t; увеличить поток вдоль Р так, чтобы либо величина потока стала равной v0, либо Р пере- перестал быть увеличивающим путем наименьшей стоимости end end Рис. 7.7. Алгоритм ДОСТРОЙКА для задачи о потоке минимальной стоимости. (s, b, t), и увеличение потока вдоль этого пути приводит к потоку величины 1 и стоимости 3. Путем наименьшей стоимости из а в / в получаемой сети приращения N' будет путь (s, a, t), который при- приводит к тому же оптимальному потоку величины 2 и стоимости 12, что и алгоритм ЦИКЛ в примере 7.1. ? 7.4 Явный прямо-двойственный алгоритм для задачи Хичкока. Алгоритм АЛЬФАБЕТА Рассмотрим теперь одну очень известну.о задачу, являющуюся частным случаем задачи о потоке минимальной стоимости. Перво- Первоначально она была сформулирована около 1941 г несколькими ис- исследователями, в частности Хичкоком iHil, и носиг его имя. Поста- Постановка этой задачи связана со следующей ситуацией Имеются m пунктов отправления некоторого товара, на каждом из которых хранится запас р а, единиц ювара, i=\, .. , т, и п пунктов назначе- назначения, в каждый из которых требуется доставить Ь, единиц товара, /=1, ... , п. Кроме того, известна стоимость си перевозки единицы товара из пункта отправления i в пункт назначения /. Спрашивает- Спрашивается, как удовлетворить все потребности при минимальной стоимости перевозок. Эту задачу можно следующим образом сформулировать в виде задачи ЛП.
148 Гл. 7. Задача о потоке минимальной стоимости Определение 7.4. Пусть даны т, n?Z+, запасы а?Я+ (i = l, ... ... , т) в пунктах отправления, потребности bj^R + (/=1, ... , п) в пунктах назначения и ci}^R+ (t = l, ... , т и /=1, ... , л). Индиви- Индивидуальной задачей Хичкока называется следующая задача ЛП с пере- переменными fij: min 2ciy/i7> П 2 /<¦/ = af, i=\, ..., т, G.4) 2fi/ = bj' /=1 "• G-5) где Zii-ia — Zji-ibj. П Заметим, что можно было бы сформулировать эту задачу с не- неравенствами п ' 2 /,/<«,-. 1 = 1, •••, т, G.6) /= I т 2ftj>bJt /=1, .... л, G.7) выражающими тот факт, что в нашем распоряжении имеются запасы at и необходимо покрыть потребности bj. Однако равенства в G.4) и G.5) не приводят к потере общности, поскольку всегда можно ввести фиктивный (п+1)-й пункт назначения с потребностью т п *>„+1=2а/-2*>у G-8) и стоимостями сг,п+1=0, i=l, ... , т. Этот дополнительный пункт назначения, согласно G.8), потреб- потребляет все излишние запасы (которые предполагаются неотрицатель- неотрицательными) бесплатно (Заметим, что справедливость такого перехода опирается на предположение с^З>0. См. задачу 3.) В том случае, когда все at и bj равны 1, задача Хичкока назы- называется задачей о назначениях, которая еще появится позднее в этой книге. В действительности, когда мы применяем прямо-двойствен- прямо-двойственный алгоритм к задаче Хичкока, мы поворачиваем историю вспять, поскольку «венгерский метод» Куна [Ки] для задачи о назначениях был предшественником общего прямо-двойственного алгоритма. Наш план состоит в том, чтобы комбинаториализовать стоимость в задаче Хичкока и исследовать явно двойственную задачу Д вместо того, чтобы обойти ее, как было сделано в предыдущем параграфе Сопоставляя переменные а( и р^ соответственно равенствам G.4)
7.4. Задача Хичкока 149 и G.5), получим двойственную задачу т п maxw = 2 а,-а,-+ 2 ^Д. 1= 1 У= 1 а/ + Р/<с,7 для всех i = 1, ..., m; / = 1, ..., п, (Д) О/.Р/^О. Можно сразу же выписать исходное допустимое решение для этой двойственной задачи сс,. = О, Р;= min \си\. G.9) ! < i < m Далее, определим допустимое множество IJ индексов переменных в ограниченной прямой задаче как множество пар (i, /), для которых в Д имеет место равенство Тогда ограниченная прямая задача ОП определяется следующим образом: т+ п min I = 2 х?, i = 1 " '-'••¦••". @П) ), /=1, ..., т + п, \ (i, пей, где через х°, i = l, ... , m+n, обозначены искусственные пере- переменные. Стоимость в ОП можно записать в виде Е=2а/+?&;-2 2 /G. G.10) 1= I г= ) A, пе и Таким образом, минимизация I эквивалентна максимизации сум- суммарного потока по допустимым дугам. Можно переписать ОП без искусственных переменных, но с ограничениями в виде неравенств max 2 fu, 2/,¦/<«,., ;= i, ..., m, . / = i n, (on') , (t, /)<=/./,
150 Гл. 7. Задача о потоке минимальной стоимости Последняя задача представляет собой задачу о максимальном по- потоке, приведенную на рис. 7.8. В ней добавлены обобщенный пункт отправления s и обобщенный пункт назначения t, из s в каждый из т пунктов отправления проведена дуга с пропускной способностью at и из каждого из п пунктов назначения проведена дуга в t с про- пропускной способностью bj. Из пункта отправления к пункту назначе- назначения проведена дуга (г, /) с бесконечной пропускной способностью Обобщенный а пункт ' отправления Обобщенный пункт назначения Рис. 7.8. Задача о максимальном потоке, эк- эквивалентная ограниченной прямой заааче Хич- Хичкока. Бесконечные пропускные способности дуг соо1ве1ствуют допустимым индексам в двойст- двойственной задаче. в том и только в гом случае, если (г, j)?U. Этим обеспечивается то, что переменная ft] може'1 быть больше 0 только тогда, когда пара индексов (г, /) допустима. В прямо-двойственном алгоритме двойственное допустимое ре- решение а, |J улучшается с помощью оптимального решения, скажем а, $, задачи, двойственной к ограниченной прямой задаче. В гл. 6 мы видели, что при завершении алгоритма Форда — Фалкерсона множество помеченных вершин определяет оптимальный s-^-разрез и, следовательно, также оптимальное решение. Для обсуждения применения алгоритма пометок к задаче Хичкока нам потребуется специальный термин. Определение 7.5. При достижении оптимальности после приме- применения алгоритма пометок к задаче ОП будем говорить, что мы при- пришли к отсутствию прорыва. При отсутствии прорыва положим /* = {г пункт отправления t помечен}, ./* = {/: пункт назначения / помечен}. ? Теперь можно записать оптимальное решение задачи, двойствен- двойственной к ограниченной прямой задаче. G.11)
7.4. Задача Хичкока 151 Лемма 7.1. Лрм отсутствии прорыва в решении задачи ОП' ога- тимальное решение задачи, двойственной к ОП, дается равенствами «/ = p. = 1, — 1, — 1, i i 1 € € /*, /*, ¦/*, G.12) 1, /?./*. Доказательство. Можно показать, что a, f> допустимы в ДОП и что их стоимость оптимальна для ОП. Детали доказательства ос- оставляем читателю (см. задачу 4). ? Если при отсутствии прорыва Н=0, то мы достигли оптималь- оптимального решения нашей исходной задачи с величиной потока 2 /,, , 2v (i. i)t и i i Если Н>0, то напомним, что в прямо-двойственном алгоритме воз- возможны 2 случая. Случай 1: аг + Р,-^0 для всех (г, /)(?/./. Случай 2: а;-|-Р;>0 для некоторой пары (г, j)^IJ¦ В случае I получаем, что прямая задача была недопустимой, и, сле- следовательно, этот случай невозможен, поскольку сформулированная нами задача П всегда имеет допустимое решение. Таким образом, имеет место- случай 2, и можно вычислить 6i= min 1 Г';-а'тг'У 1 = min Последнее равенство следует из того, что сумма а;-|-Р; может быть больше 0 только тогда, когда i?/* и J&J*, причем тогда она равна 2, и в этом случае автоматически {i, j)^U, ибо в противном случае / должно было быть помеченным. Новое двойственное решение я можно получить по формулам (а,+6] для / б /*, 1а,—в, для i$i; -\-% для / <?/* При этом оказывается, что никакая дуга, на которой имеется по- поток, не может стать недопустимой, так же как никакой базисный столбец не может стать недопустимым в общем прямо-двойственном алгоритме (см. задачу 5). Это дает возможность продолжать расста-
152 Гл. 7. Задача о потоке минимальной стоимости новку пометок в алгоритме Форда — Фалкерсона начиная с потока, который был оптимальным при последнем отсутствии прорыва. Этим алгоритм полностью определяется, и окончательно мы прихо- приходим к максимальному потоку величины J?a; = 2b>- На рис. 7.9 при- procedure АЛЬФАБETA begin выбрать а, Р, допустимые в D; while поток не максимален do begin решить задачу о максимальном потоке ОП, используя только допустимые дуги; найти множества помеченных строк и столбцов при отсутствии прорыва, скажем I* и J*; вычислить 0, и пересчитать а, Р (comment, см. G.13) и G.14)) end end Рис. 7.9. Прямо-двойственная процедура АЛЬ- ФАБЕТА для задачи Хичкока. Задача Sii4t<OK(l Комбинаториализова1ь сюимосгь Задача о максиман,пои Комбинаториализовать пропуск- пропускные способности Hafn и путь из S I) ' / веден в общих чертах весь описанный алгоритм, который мы будем называть АЛЬФАБЕТА. Закончим этот параграф общим замечанием о том, к чему приве- привела нас методология лрямо-двойственности. Комбинаториализация стоимости в задаче Хичко- Хичкока приводит к задаче о максимальном потоке в ка- качестве подзадачи. Задача о максимальном потоке ре- решается путем комбинато- риализации пропускных способностей, что приводит к чисто комбинаторной под- подзадаче нахождения пути, увеличивающего поток. Та- Таким образом, идея прямо- двойственности использо- использована дважды для заме- замены двух численных век- векторов, стоимости и про- пропускных способностей, двумя вложенными циклами, в которых решается очень простая комбинаторная задача, что проиллюстри- проиллюстрировано на рис. 7.10. Если использовать вариант алгоритма Дейк- стры, работающий с дугами отрицательной стоимости, для решения подзадач в алгоритмах ЦИКЛ или ДОСТРОЙКА, то аналогичную интерпретацию можно применить и к этим алгоритмам,- Рис. 7.10. Схематическое представление ал- алгоритма АЛЬФАБЕТА в виде двух вло- вложенных циклов.
7.5. Преобразование в задачу Хичкока 153 7.5 Преобразование задачи о потоке минимальной стоимости в задачу Хичкока То, что задача Хичкока является частным случаем задачи о по- потоке, минимальной стоимости, очевидно из конструкции, приведен- приведенной на рис. 7.8 для случая, когда все дуги допустимы. Мы просто снабжаем все пункты отправления из одного обобщенного пункта отправления и собираем поток из всех пунктов назначения в одном обобщенном пункте назначения. Но что здесь кажется поразитель- поразительным: задача о потоке минимальной стоимости является частным случаем задачи Хичкока! Под этим мы имеем в виду, что для любой индивидуальной задачи о потоке минимальной стоимости можно построить индивидуальную задачу Хичкока, имеющую то же самое решение. Позднее в этой книге эта идея будет играть важную роль в понимании труднорешаемых задач, и мы будем говорить, что «задача о потоке минимальной стоимости преобразуется в задачу Хичкока». Описываемое ниже преобразование принадлежит Ваг- Вагнеру [Wa, FF1. Пусть дана индивидуальная задача о потоке минимальной стои- стоимости. Построим индивидуальную задачу Хичкока, используя сле- следующее соответствие: Задача о потоке минимально!! стоимости Задача Хичкока дуга («, /) вершина i СТОИМОСТЬ пропускная способность b(j пункт отправления if пункт назначения i дуга (ij, /') со стоимостью c;j и бесконеч- бесконечной пропускной способностью дуга (ij, i) с нулевой стоимостью и беско- бесконечной пропускной способностью запас b{j в пункте отправления ij Чтобы задать потребности, введем обозначение blV = Z bu. i: (i. /)sr. G.15) Таким образом, b,v — это общая пропускная способность из вер- вершины i. Потребность в пункте назначения / определяется теперь формулами blv—w0. G.16) Описанное построение проиллюстрировано на рис. 7.11.
154 Гл. 7. Задача о потоке минимальной стоимости Задача Хичкока будет состоять в нахождении такого потока fa, л, что ft,,/ + f,/,i = bl/ G.17) (запас в пункте отправления ij полностью используется); biv —у0 для i = s, biv '„ для i = t, ДЛЯ 1ф S, t (потребность в вершине i удовлетворяется); и /i/. k ^ ^ ДЛЯ BCex l'i /> ^ и такого, что достигается G.18) G.19) G.20) по всем пунктам отправления ij Заметим, что в этой задаче Хичкока суммарный запас совпадает с суммарной потребностью Теперь получим требуемый результат. Пункты Пункты назначения Ч Пропускная способное^ Ь,. -\ Пропускная / . Сюнмосп, 0q \ способность Ь,у \/ i-L ^^^"^-^ \(±vQ „ли о) Рис. 7.11. Задача Хичкока, построенная по за- задаче о потоке минимальной стоимости Лемма 7.2. Исходная индивидуальная задача о потоке мини- минимальной стоимости и построенная индивидуальная задача Хичкока эквивалентны в том смысле, что допустимый поток в одной из них соответствует допустимому потоку той же стоимости в другой. Доказательство. Пусть сначала ftJ — допустимый поток в за- задаче о потоке минимальной стоимости. Тогда, если положить в задаче Хичкока G-22)
7.6. Заключение 155 то эти потоки будет удовлетворять G.17). Подставляя их в G.18), получаем 2 Фи-fi, + fn) = bti + 2 (/,-,- /„•) bn —v0 для i = s, bn +и„ для i = /, biV для i=?s, G.23) что и требовалось. Пусть теперь дан допустимый поток fi}, h в задаче Хичкока. Он отличен от 0 только тогда, когда k = i или k~j. Положим в ис- исходной задаче о потоке минимальной стоимости fij—ftj> ]• G.24) Тогда, учитывая запас в пункте отправления i, j, имеем Кроме того, используя равенства G.17) и G.18), получаем, что чис- чистый поток из вершины i в задаче о потоке минимальной стоимости равен Zj 11/, i Zj I ji, i — Z.- \y ij I {/, i) Zj / i/, i — = &,k —2 (/,-/.,¦ Vn ДЛЯ I = S, -i'o для /¦ = /, G.25) О для i^-s, t. Таким образом, все ограничения выполнены. Легко видеть, что стоимости (в соответствующих задачах) по- потоков, связанных равенствами G.21) и G.24), одинаковы. Q 7.6 Заключение Мы использовали идею прямо-двойственности для построения множества алгоритмов для задач о путях и потоках и еще исполь- используем эту идею в дальнейшем для задач о наросочетаниях. В случае задачи о кратчайшем пути нетрудно было видеть, что алгоритм Дейкстры требует не более \V\"- шагов. Однако даже для следую- следующего простейшего прямо-двойственного алгоритма — алгоритма Форда — Фалкерсона для задачи о максимальном потоке — не так легко получить верхнюю оценку времени его работы; это придется отложить до гл. 9. Мы же обратим пока наше внимание на более общие задачи определения и предсказания временной сложности алгоритмов.
156 Гл. 7. Задача о потоке минимальной стоимости Задачи 1. Покажите, как можно легко модифицировать алгоритм АЛЬФАБЕТА так, чтобы все участвующие в нем числа были целыми. 2. Докажите, что преобразование задачи о потоке минимальной стоимости в задачу Хичкока эффективно в следующем смысле: общее число элементарных шагов, необходимых для построения индивидуальной задачи Хичкока, ограничено полиномом от числа двоичных разрядов, требуемых для представления входной информации в исходной задаче о потоке минимальной стоимости. 3. Почему сужение задачи Хичкока на случай ограничений в виде равенств опирается на предположение о неотрицательности стоимостей? Исследуйте зави- зависимость алгоритмов ЦИКЛ, ДОСТРОЙКА И АЛЬФАБЕТА от этого предпо- предположения. 4. Докажите лемму 7.1, дающую оптимальное решение задачи ДОП в алго- алгоритме АЛЬФАБЕТА. Единственно ли это решение? 5. Выведите непосредственно из алгоритма АЛЬФАБЕТА, что только пустые дуги могут стать недопустимыми. Вытекает ли этот результат из теоремы 5.3, в ко- которой аналогичный факт устанавливается для базисных столбцов в задаче ОП? Постройте пример, в котором некоторая дуга действительно становится недопу- недопустимой. 6. Докажите, что циркуляция отрицательной стоимости содержит цикл от- отрицательной стоимости. 7. Решите следующую задачу Хичкока, используя алгоритмы ЦИКЛ, ДО- ДОСТРОЙКА и АЛЬФАБЕТА: \ b а X. 3 2 1 4 1 3 1 4 5 3 2 5 4 1 2 3 4 3 3 2 1 5 2 5 2 2 2 1 2 Здесь элженты матрицы задают стоимости с,/. 8 [Zal]. Покажите, как преобразовав задачу о циркуляции минимальной стоимости с нижними и верхними границами дуговых потоков и исходным пото- потоком, в котором нарушаются некоторые верхние и нижние границы, к обычной задаче о потоке минимальной стоимости. (Указание: постройте сеть приращения с нулевым потоком, который, естественно, не будет удовлетворять только нижним границам. Сделайте замену потоковых переменных и введите фиктивные источник и сток.) Как осуществить это преобразование так, чтобы все стоимости были не- неотрицательны? 9 (задача о поставщике IFF]). Поставщику нужно поставлять /¦,• салфеток, 1—1, ... , N, в течение Л? последовательных дней. Поставщик может либо покупать новые салфетки по р центов за каждую, либо стирать их в срочной прачечной, что занимает т дней и стоит / центов за салфетку, либо стирать их в обычной прачеч- прачечной, что занимает n>m дней и стоит s</ центов за салфетку. В конце каждого дня поставщик должен решить, сколько грязных салфеток послать в срочную прачечную, сколько в обычную прачечную и сколько ликвидировать. Потреб- Потребность Г( на любой день покрывается теми чистыми салфетками, которые можно по- получить из обеих прачечных, плюс новые :алфетки, которые необходимо докупить. а) Сформулируйте эту задачу как задачу о потоке минимальной стоимости. (Указание: используйте /V «снабжающих» вершин и /V «потребляющих» вершин плюс некоторые другие вершины.) Объясните, какой смысл в вашем решении име- имеют дуги. б) Решите эту задачу при N=3, rl=3, г2=2, г3=4, т= 1 (салфетки, послан- посланные в срочную прачечную, готовы на следующий день), rt = 2, p= 10, /=6 и s=3, •
Комментарии и ссылки 157 используя любой метод. Докажите, однако, что ваш ответ оптимален. Какова его стоимость? 10 (задача о многопродуктовом потоке минимальной стоимости [То]). Дана потоковая сеть, в которой выделены ц пар источник — сток (s,-, tj) вместо одной такой пары. Из sk в tk должен проходить поток величины rk, k=\ q, рассмат- рассматриваемый как поток продукта k. Для каждой дуги ((, /) задана пропускная спо- способность b;j, которая является границей суммарного потока всех продуктов по ориентированной дуге ((, /), и стоимость сц единицы суммарного потока по этой дуге. Все потоки по ориентированным дугам положительны. Задача состоит в на- нахождении допустимого потока минимальной стоимости. а) Сформулируйте эту задачу в терминах вершин и дуг. Сколько получится строк и столбцов? Что будут представлять собой подзадачи, если использовать метод декомпозиции Данцига — Вулфа? б) Сформулируйте эту задачу в форме дуг и цепей. Сколько получится строк и столбцов? В чем будет состоять задача выбора столбца, если используется моди- модифицированный симплекс-алгоритм? в) Покажите, что формулировки а) и б) эквивалентны. 11 (задача об остовном дереве с пропускными способностями [QJ]). Даны пол- полный неориентированный граф G=(V, ?), симметричная матрица расстояний [d,y], целочисленная «скорость порождения транспортного потока» Л,- для каждой вер- вершины i^V, целочисленная пропускная способность В и выделенная вершина s, называемая центральной. Требуется найти остовное дерево минимальной стоимости : суммарным транспортным потоком по каждому ребру, не превышающим В, в предположении, что из каждой вершины i в 9 движется поток Л,-. Покажите, как решить частный случай этой задачи, в котором все А/ равны 0 или 1 и 6=1, используя алгоритм решения задачи о потоке минимальной стоимости. Комментарии и ссылки Допустимый относительно задачи алгоритм ЦИКЛ для задачи о потоке минималь- юй стоимо:тп взят из работы Kl] Klein M. A Primal Method for Minimal Cost Flows, Management Science, 14, No. 3 (November 1967), 205—220. 1>орд и Фалкерсон приписывают теорему 7.2, из которой следует алгоритм ДО- ЗТРОЙКА, У. Джуеллу, Р. Басакеру и П. Гоуэну и М. Айри, опубликовавшим ;е в технических отчетах в 1958—1961 годах. FF] Ford L. R., Jr, Fulkerson D. R. Flows in Networks. Princeton, N. J.: Prin- Princeton University Press, 1962. [Имеется перевод: Форд Л. Р., Фалкерсон Д. Р. Потоки в сетях.—М.: Мир, 1963.] 1сли в задаче о циркуляции минимальной стоимости с верхними и нижними •раницами дуговых потоков используется прямо-двойственный алгоритм для сомбинаториализации стоимости, то в результате получается метод дефекта Fu] Fulkerson D. R. An Out-of-Kilter Method for Minimal Cost Flow Problems, J. SIAM, 9, No. 1 A961), 18—27. Этот алгоритм полностью рассматривается как в [FF], так и в следующей книге 1оулера: La] Lawler E. L. Combinatorial Optimization: Networks and Matroids. Holt Rinehart & Winston, New York: 1976. Сказанную задачу о циркуляции минимальной стоимости можно свести к задаче ) потоке минимальной стоимости и решить ее, используя алгоритм ЦИКЛ или З.ОСТРОЙКА (см. задачу 8). Этот метод предложен в недавней работе Заде: Zal] Zadeh N. A Simple Alternative to the Out-of-Kilter Algorithm, Technical Report No. 35, Dept. of Operations Research, Stanford University, May 31, 1979
158 Гл. 7. Задача о потоке минимальной стоимости В следующем отчьте приведено множество взаимосвязей между симплекс-алго- симплекс-алгоритмом, двойственным симплекс-алгоритмом и методом дефекта для задачи о потоке минимальной стоимости [Za2] Zadeh N. Near-Equivalence of Network Flow Algorithms, Technical Report No 26, Dept of Operations Research, Stanford University, December 1, 1979. Вопрос о времени работы алгоритмов, решающих задачу о потоке минимальной стоимости, проблематичен. С теоретической точки зрения Эдмондсом и Карпом показано, что существует полиномиальный алгоритм для этой задачи, т. е. алго- алгоритм, число шагов которого не превосходит полинома от числа двоичных разря- разрядов в описании задачи (Более строго это понятие будет определено в следующей глава.-} [ЕК] Edmonds J., Karp R. M. Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems. J ACM, 19, No. 2 (April 1972), 248—264. Они модифицировали вариант алгоритма ДОСТРОЙКА, используя метод «мас- «масштабирования», который можно очень грубо описать следующим образом. Вна- Вначале решается приближение нулевого порядка для исходной задачи, в котором пропускные способности приближаются 1-разрядными двоичными числами О или 1 Полученный поток умножается на 2, и решается более хорошее прибли- приближение исходной задачи, в котором для представления пропускных способностей используются 2-разрядные двоичные числа, и т. д. В следующей главе будет по- показано, что любую задачу ЛП можно решить за полиномиальное время, так что теоретическое содержание метода масштабирования Эдмондса и Карпа перекры- перекрывается этим результатом. С практической точки зрения ни метод масштабирова- масштабирования, ни более общий полиномиальный алгоритм для ЛП (метод эллипсоидов) не являются серьезными претендентами на роль наиболее эффективных алгорит- алгоритмов для задачи о потоке минимальной стоимости, по крайней мере в насюящее время. При сравнении эффективности различных реализаций алгоритмов ЦИКЛ, ДОСТРОЙКА, симплекс-алгоритма, двойственного симплекс-алгоритма, алго- алгоритма дефекта и даже АЛЬФАБЕТА в применении к различным трансформациям задачи Хичкока нам приходится полагаться на практические результаты См., например, [BQKI Barr R. S., Glover F., Klingman D. An Improved Version of the Out-of- Kilter Method and a Comparative Study of Computer Codes, Math. Prog., 7, No I (August 1974), 60—86. [QKKI Glover F., Karney D., Klingman D. Implementation and Computational Comparisons of Primal, Dual, and Primal Dual Computer Codes for Minimum Cost Network Flow Problems, Networks, 4, No. 3 A974), 191—212. iMu] Mulvey J. V. Testing of a Large-Scale Network Optimization Program, Math. Prog., 15, No. 3 (November 1978), 291—314. Поиск такого варианта алгоритмов ЦИКЛ, ДОСТРОЙКА или АЛЬФАБЕТА, который имел бы полиномиальную оценку числа итераций, не зависящую от стоимостей i пропускных способностей, остается важной открытой проблемой в момент написания этой книги. (Этот вопрос явно поставлен в [ЕК].) Мы уже достигли подобной пели для алгоритма Денкстры и получили аналогичный ре- результат для алгоритма Форда — фалкерсо!^. То что для обеспечения хорошею поведения алгоритмов нужно ограничивать их выбор, показывают патологиче- патологические примеры Заде' [Za3l Zadeh N A Bad Network Problem for the Simplex Method and Other Mmi- , mum Cost Flow Algorithms. Math Prog., 5, No. 3 (December 1973), 255—266. В этой работе Заде приводит примеры модифицированных задач Хичкока, ipe- бующих экспоненциального числа итераций при применении определенных вариантов алгоритмов ЦИКЛ, ДОСТРОЙКА и АЛЬФАБЕТА. В работе, ука- указанной ниже, Заде приводит пример задачи о погоне минимальной стоимости.
Комментарии и ссылки 159 для которой некоторый вариант алгоритма ЦИКЛ может потребовать сколь угодно большого числа итераций, аналогично примеру Форда и Фалкерсона, в котором алгоритм пометок не останавливается [Za4] Zadeh N. More Pathological Examples tor Network Flow Problems, Math. Prog., 5, No 2 (October 1973) 217—224. Форд и Фалкерсон приписываю) формулировку задачи Хичкока нескольким лю- людям, включая естественно, Хичкока [Hi] Hitchcock I'. L. The Distribution ot a Product trom Several Sources to Nume- Numerous Localities, J Math Phys... 20, No 2 (April 1941), 224—230 и Т. Купманса. А. Н Толстого, Л. В Канторовича и М. К- Гавурина, сформу- сформулировавших эту задачу примерно в'одно и го же время Если все запасы и по- потребности в задаче Хичкока равны единице, получаем чадачу о назначениях Ал- Алгоритм АЛЬФАБЕТА, часто называемый просто прямо-двойственным методом для задачи Хичкока, является обобщением венгерского метода Куна, назван- названного гак в связи с тем, что он опирается на один результат Эгервари (см. задачу 6 в гл. 6). [Ku] Kuhn H. W. The Hungarian Method for the Assignment Problem, Naval Re- Research Logistics Quarterly, 2, No. 1, 2 A955), 83—97 [Имеется перевод: Кун Г. Венгерский метод решения задачи о назначениях.— В сб.: Методы и алгоритмы решения транспортной задачи.— М.: Г'осстатиз- дат, 1963.] В свою очередь алгоритм АЛЬФАБЕТА, как отмечено в тексте, явился пред- предтечей общего прямо-двойственного алгоритма для задач ЛП. Преобразование задачи о потоке минимальной стоимости в задачу Хичкока приписывается в книге [FF| Вагнеру [Wa| Wagner H. M. On a Class ot Capacitated Transportation problems, Management Science, 5 A959) 304—318. Эта работа — замечательный предвестник многих более поздних результатов (см. задачу 2 и гл. 15) Форд и Фалкерсон не считают это преобразование практи- практическим методом решения чадачи о потоке минимальной стоимости, однако такой вывод не совсем очевиден. Задача 10 взята из работы [То| Tomlin J Л. Minimum-Cost Multicommodity Network Flows, OR, 14, No. 1 (February 1966), 45—51. Частный случай задачи об осговном дереве с пропускными способностями, при- приведенный в задаче II, упоминается в книге [QJ] Qarey M, R., Johnson D. S. Computers and intractability: A Guide to the The- Theory of iVP-completeness. San Francisco, California: W. H. Freeman & Com- Company, Publishers, 1979. [Имеется перевод: Гэри М., Джонсон Д. Вычисли- Вычислительные машины и труднорешаемые задачи,— М.: Мир, 1982.j Более подробно об этой задаче, которая в общем виде очень трудна, можно узнать из работ [VSC] Van Sickle L., Chandy К- М. Computational Complexity of Network Design Algorithms, Information Proccessing 77, ed В Gilchrist. North Holland Pub- Publishing Co., 1977. [Pa] Papadimitriou С. Н. The Complexity of the Capacitated Tree Problem, Net- Networks, 8 A978), 217—230.
8 Алгоритмы и сложность 8.1 Вычислимость Широкое применение симплекс-алгоритма и его разновидностей к задачам с сотнями и тысячами переменных и ограничений стало возможным лишь благодаря современным быстродействующим циф- цифровым вычислительным машинам. То же самое справедливо для мно- многих широко используемых методов решения численных-задач, моде- моделирования физических или социальных процессов и обработки ин- информации, ибо применение этих методов вручную фактически не- невозможно: исключение составляют только задачи малого размера, не имеющие практической ценности. Теперь уже общепризнано, что вычислительные возможности человеческого разума не могут удов- удовлетворить потребностям современной науки и технологии. Сущест- Существует ли предел вычислительных возможностей ЭВМ? Очевидно, что вычислительные машины не могут выполнять не- некорректно поставленные, нематематические задачи, такие, как «ре- «решить энергетическую проблему» или «превзойти людей в остроумии». ЭВМ могут выполнять только алгоритмы, т. е. точные и однозначно понимаемые последовательности команд, при помощи которых ре- решаются произвольные строго определенные вычислительные задачи. Типичные алгоритмы — например, методы выполнения арифметиче- арифметических операций над десятичными целыми числами, изучаемые в на- начальной школе. Это точные методы, которые можно применять к лю- любым целым числам как угодно большим, и они корректны в том смысле, что гарантируют получение правильного ответа за конеч- конечное число шагов. Они настолько сухо и буквально описаны, что их выполнение можно доверить машинам. Не следуеч удивляться тому, что интуитивное понятие алгоритма можно определить вполне стро- строго. Соответствующий математический объект называется машиной Тьюринга в честь английского математика Алана М. Тьюринга, придумавшего ее в 1936 г. (см. § 15.5). А есть ли корректно определенные математические задачи, для которых нет алгоритма решения? Тьюринг показал, блестяще это аргументируя, что такие неразрешимые задачи действительно суще- существуют. Типичным примером тому служит так называемая проблема остановки: выяснить для конкретной программы и входных данных, остановится ли она когда-нибудь. Тьюринг доказал, что не сущест- существует алгоритма, который бы корректно решал все частные случаи
8.2. Временные оценки 161 этой задачи. Можно найти некоторые эвристические способы обна- обнаружения отдельных бесконечных циклов по программе и входным данным, однако всегда останутся тонкости, ускользнувшие от на- нашего анализа. Конечно, можно просто запустить программу и вы- выдать положительный ответ на поставленный выше вопрос, если программа достигнет оператора end. К сожалению, такая схема не будет алгоритмом, поскольку нет гарантии, что сама она остано- остановится! 8.2 Временные оценки Если математические формализации, подобные машинам Тью- Тьюринга, привели математиков 30-х годов к изучению неразрешимых проблем, то современные ЭВМ поставили перед математиками вопросы иного рода. Все вычислительные задачи, рассмотренные в этой книге, раз- разрешимы. Иными словами, в принципе существует алгоритм, кор- корректно решающий любой частный случай этой задачи. Однако этого не всегда достаточно, поскольку алгоритму может потребоваться так много времени, что он становится абсолютно бесполезным. Пример 8.1. Задача коммивояжера (ЗК, см. пример 1.1), оче- очевидно, разрешима, поскольку любую индивидуальную ЗК можно решить, найдя наилучший обход среди конечного множества об- обходов. Таким образом, вычислительная машина может решить лю- любую индивидуальную ЗК, систематически перебирая все обходы, вычисляя их длины и выбирая затем кратчайший обход. Число обходов п городов равно (п~ 1)!/2. Поэтому реализация описанного алгоритма в вычислительной машине потребует около п\ шагов (элементарных команд). Решение с помощью этого алгоритма индивидуальной ЗК среднего размера (например, нахождение крат- кратчайшего обхода столиц штатов США) потребовало бы многих милли- миллиардов лет, даже при наиболее оптимистических прогнозах относи- относительно скорости вычислительных машин в будущем E0! имеет около 65 десятичных знаков). ? Пример 8.2. Задачу о минимальном остовном дереве (МОД, см. пример 1.2) также можно решить методом полного перебора всех остовных деревьев и выбора наилучшего из них. Поскольку имеется пп-2 остовных деревьев с п вершинами (доказательство см. в [Ev]), то время, необходимое для работы такого алгоритма перебора, сно- снова неприемлемо. Однако для этой задачи имеется намного лучший алгоритм. В гл. 12 будет построен алгоритм для МОД, число эле- элементарных шагов которого при решении задачи с п точками про- пропорционально па. Этот алгоритм очень хорошо работает на практи- практике. Используя его, задачу МОД для столиц штатов США можно решить на большинстве вычислительных машин за несколько се- секунд. D * № 3032
162 Гл. 8. Алгоритмы и сложность Наиболее популярной мерой качества работы алгоритма являет- является отрезок времени, затрачиваемый алгоритмом до получения окончательного ответа. Этот показатель зависит от типа ЭВМ, на которой выполняется алгоритм; большую роль играет скорость и набор команд. При анализе алгоритмов в этой книге время работы алгоритмов будет выражаться в терминах числа элементарных шагов (арифметических операций, сравнений, команд ветвления и т. д.), необходимых для выполнения этого алгоритма на гипоте- гипотетической вычислительной машине. Иначе говоря, будем предпола- предполагать, что все эти операции требуют одну единицу времени. Число шагов, выполняемых алгоритмом, не одинаково для раз- различных входов. Например, в симплекс-алгоритме число элементар- элементарных шагов, необходимых для решения задачи ЛП размера тХп, max с'х при условиях Ах^Ь, х^О, может существенно меняться в зависимости от параметров A, b и с, даже если их размерности остаются постоянными. В экстре- экстремальном случае, когда с^О, исходное допустимое решение опти- оптимально, и не требуется производить операций замещения, тогда как при других значениях параметров для достижения оптимума может потребоваться значительное число итераций. Чтобы сгладить такие резкие контрасты в поведении алгоритма при переходе от одного входа к другому, будем рассматривать все входы данного размера п вместе и определим сложность алгоритма для этого размера входа как число шагов алгоритма в худшем случае по всем этим входам. Тогда сложность алгоритма будет представ- представляться в виде функции размера входа, такой, как 10«3, 2" или п log п 1). При изучении сложности алгоритма часто интересуются только его поведением при применении к очень большим входам, по- поскольку именно эти входы определяют границы применимости ал- алгоритма. Различия между алгоритмами сложности 10«3 и 9п3 можно сделать несущественными при помощи технологических достиже- достижений, дающих десятикратное увеличение скорости вычислительных машин. С другой стороны, медленно растущие слагаемые (такие, как Ъп в оценке п log п-\-Ъп) будут полностью поглощаться более быстро растущими слагаемыми при достаточно больших п (в нашем примере при я ^> 1000). Таким образом, нас интересует скорость роста сложности алгоритма. При изучении скорости роста функций полезен следующий формализм. Определение 8.1. Пусть f(n) и g(n) —функции, определенные на множестве целых положительных чисел и принимающие положи- положительные действительные значения. а) Будем писать f(n)=O(g(n)), если существует такая константа 00, что f (n)^.cg (п) для достаточно больших п. 1) В тех случаях, когда основание логарифма явно не указано, подразумева- подразумевается основание 2.
8.3. Размер индивидуальной задачи 163 б) Будем писать f(n)=Q (g(n)), если существует такая константа с>0, что f(n)^c(g(n)) для достаточно больших п. в) Будем писать f(n)=@(g(n)), если существуют такие констан- константы с, с'>0, что cg(n)^f(n):^cg' (п) для достаточно больших я. Вместо f{n)=@(g(n)) можно писать /(«) ><?(«)• Легко видеть, что отношение X является отношением эквивалентности. Класс эквивалентности относительно этого отношения, содержащий f(n) (т. е. множество всех функций g(n), таких, что f(n)=®(g(n))), на- называется скоростью роста f(n). Q Благодаря введенному понятию скорость роста сложности алго- алгоритма можно оценить сверху, используя выражения типа «требует времени О (я3)». 8.3 Размер индивидуальной задачи Мы измеряем сложность алгоритма функцией размера входа алгоритма. Но что такое размер входа? В комбинаторных задачах оптимизации входом является комбинаторный объект: граф, мно- множество целых чисел (возможно, упорядоченных в виде векторов или матриц), семейство конечных множеств и т. д. Чтобы ввести этот вход в вычислительную машину для решения, необходимо каким- либо образом закодировать, или представить, его в виде последо- последовательности символов над некоторым фиксированным алфавитом, таким, как двоичный алфавит, алфавит символов печатной машинки или буквы ASCII. Мы не будем точно определять, как кодируются комбинаторные объекты последовательностями символов. Эти коди- кодирования можно производить любым из многих очевидных и простых способов; некоторые из них будут проиллюстрированы ниже в при- примерах. Более того, почти всегда оказывается, что все эти кодирова- кодирования, по существу, эквивалентны для наших целей. В тех редких случаях, когда кодирование может вызвать определенные трудно- трудности, будем явно указывать на эту проблему и давать способ ее раз- разрешения. Поскольку мы договорились, что вход алгоритма представляет- представляется в виде последовательности (или цепочки) символов, определим размер входа как длину этой последовательности, т. е. число сим- символов в ней. Пример 8.3. Во многих задачах (например, в задаче определения, является ли целое число простым) входная информация является просто целым числом. Существует много экономных способов пред- представления целых чисел; наиболее общие — системы счисления с не- ¦ которым фиксированным основанием, такие, как десятичная или двоичная. В этих системах число символов, необходимых для пред- представления целого числа п, равно f logBrc~| 1), где В^2 — основание х) Через Гх~\ обозначается наименьшее целое q, такое, что q^x, и через \_х J —наибольшее целое q, такое, что q<x 6*
164 Гл. 8. Алгоритмы и сложность системы. Мы видим, что независимо от используемого основания размер представления п есть в (log я); напомним, что и log В при фиксированном В является константой. ? Пример 8.4. Что такое размер задачи линейного программирова- программирования? Как и раньше, мы считаем, что элементы матрицы А и векто- А(и3) = (и,, v4} A(v4) = {v{ ,v2, F) , v5} Рис. 8.1. ров b и с — целые числа. Поэтому размером задачи линейного про- программирования должно быть число символов, необходимых для за- записи А, Ъ и с. Поскольку это можно сделать, выписывая элементы матриц в двоичной (или десятичной) системе, используя подходящие разделители для горизонтальных и вертикальных линий в таблице, то размер задачи ЛП с тХ«-матрицей есть в(тп+ |" log|Р| ~|), где Р — произведение всех ненулевых коэффициентов. ? Пример 8.5. Во многих интересных задачах входом является граф. Что такое размер графа? Граф можно представить многими способами. Например, любому графу G=(V, Е) сопоставить его матрицу смежностей Аа=[а.ц] размера |У|Х |У|, в которой atj=\, если [vt, Vj]?E, и ац=0 в про- противном случае. Но этот способ может оказаться не самым эконом- экономным способом представления графа. Граф (V, Е) может иметь до (!;У|)=в(|У|2) ребер. Однако многие графы являются разрежен- разреженными, т. е. число ребер в них много меньше, чем^1). Например, граф может иметь 100 вершин и 500 ребер. Представление этого гра- графа матрицей смежностей потребовало бы 10 000 разрядов для записи всех элементов. Простое выписывание ребер подряд намного эко- экономнее. Одним из полезных способов представления графа являются списки смежностей. При этом для каждой вершины v^V выписыва- выписывается множество Л(у)сУ вершин, смежных с v (рис. 8.1). Размер этого представления зависит от суммы длин списков. Так как каждое ребро добавляет 2 к этой общей длине A в списке для
8.3. Размер индивидуальной задачи 165 одного конца ребра плюс 1 для другого конца), го в целом требуется записать 2\Е\ элементов. Имеется, однако, другой фактор, влияю- влияющий на общую длину представления. Даже для графов среднего размера невозможно использовать различные буквы для всех вер- вершин (напомним, что наш алфавит должен иметь фиксированный ко- конечный размер). Поэтому для различения вершин .мы должны ис- использовать индексы. Поскольку у нас |V'| вершин, то для этого нам потребуется приблизительно в (log |У|) двоичных (или десятичных) разрядов. Следовательно, для представления графа G=(V, Е) тре- требуется @(\Е\ log |У|) символов. Тогда почему на практике мы говорим, что граф (V, Е) можно закодировать, используя память 0(!?|)? Причина состоит в том, что современные ЭВМ обычно одинаково обращаются со всеми целыми числами в своих пределах — обычно от 0 до 231. Они отводят одну и ту же память (слово) как для 3, так и для 710. Поскольку почти наверняка графы более чем с триллионом вершин никогда не по- появятся в приложениях, то 0(\Е\) таких слов достаточно для хране- хранения списков смежностей графа с использованием индексов в этих пределах для идентификации вершин. Следовательно, \Е\ является разумной аппроксимацией размера графа, и анализ сложности алго- алгоритмов на графах с использованием \Е\ в качестве параметра прак- практически приемлем. Тем не менее иногда мы будем использовать в качестве парамет- параметров для характеристики сложности алгоритма обе величины \V\ и \Е\. Это связано с тенденцией рассматривать \V\ как главную характеристику размера графа, возможно, потому, что в боль- большинстве приложений теории графов V является исходным объектом при построении G. Естественно, \V\ и \Е\ связаны неравенством \Е\^. ^\V\(\V\—1)/2, и можно считать, что |?|^|У|/2 (например, если в нашем графе нет изолированных вершин). Однако в этих пределах \Е\ может очень сильно меняться, делая граф G насыщенным (когда |?|=в(|К|2)) или разреженным (когда \Е\ много меньше, чем его максимальное значение). Следовательно, алгоритм с оценкой О(|?|:1) может быть предпочтительнее, чем алгоритм с оценкой О(|У|3|?|), когда граф разреженный, тогда как для насыщенных графов оправдан противоположный выбор. ? В некоторых комбинаторных задачах, таких, как ЗК, задача о кратчайшем пути и МОД, вход состоит, по крайней мере частично, из целых чисел. Алгоритмы для этих задач обычно включают такие операции, как сложение и сравнение целых чисел. Например, в ал- алгоритме Флойда — Уоршелла для задачи о кратчайшем пути боль- большинство шагов состоит из сравнений и сложений пар целых чисел. Поскольку нет явных границ для величины этих целых чисел, может оказаться, что они настолько велики, что их нельзя предста- представить словом конечной длины нашей гипотетической вычислитель- вычислительной машины. В этом случае требуется применить специальные ме- методы для выполнения сложений и сравнений очень больших целых
166 Гл. 8. Алгоритмы и сложность чисел, и такие методы требуют для каждой операции времени (числа элементарных шагов), растущего приблизительно как логарифм уча- участвующих в операции целых чисел. В этой книге мы упростим дело, рассматривая каждую такую операцию как элементарный шаг единичной стоимости, называемый арифметической операцией. На- Например, мы будем говорить, что алгоритм Флойда — Уоршелла ре- решает задачу о кратчайшем пути в орграфе ?>=AЛ А) за 0(|К|3) арифметических операций, или, для краткости, за время 0(|У|3). Под этим в действительности будем понимать, что число элементар- элементарных операций не превосходит 0(\V\4og М), где М — наибольшее целое число, появляющееся в данной индивидуальной задаче. Мы можем принять это соглашение, не изменяя существа наших резуль- результатов, поскольку алгоритмы, которыми мы будем интересоваться, включают операции над целыми числами, не намного большими, чем числа во входе 1). Совершенно другая (и более тонкая) ситуация возникает, когда общее число арифметических операций зависит от значений участ- участвующих в задаче целых чисел. В следующем параграфе мы увидим, что таким свойством обладает алгоритм пометок для задачи о мак- максимальном потоке, описанный в гл. 6. 8.4 Анализ алгоритмов Получение хороших верхних оценок времени работы алгорит- алгоритма — не всегда простая задача; оно может потребовать такой же изо- изобретательности и умения, как построение алгоритма. Пример 8.6. Алгоритм Флойда — Уоршелла для задачи о крат- кратчайшем пути в орграфе D = (V, А) имеет временную сложность 0(|У|3) арифметических операций. В этом случае анализ особенно прост и время, необходимое для работы алгоритма, незначительно изменяется в зависимости от орграфа и расстояний, подаваемых на вход алгоритма. Основным здесь является тот факт, что алгоритм, по существу, состоит из трех «вложенных циклов», каждый из кото- которых выполняется примерно \V\ раз; самую внутреннюю операцию «треугольника» можно реализовать с использованием всего двух арифметических операций. ? Пример 8.7. Какова сложность алгоритма пометок для решения задачи о максимальном потоке (гл. 6) для сети N=(s, t, V, A, 6)? Заметим, что этот алгоритм состоит из начального шага, который можно выполнить за время, пропорциональное \V\, и множества итерационных шагов. Каждый итерационный шаг включает про- просмотр вершин и приписывание им пометок. Чтобы оценить слож- 1) В симплекс-методе встречаются только рациональные числа, в которых как числитель, так и знаменатель ограничены по абсолютной величине размером входа (вспомните доказательство леммы 2.1).
8.4. Анализ алгоритмов 167 иость каждой итерации, заметим, что в процессе просмотра каждая дуга (v, и) сети N может рассматриваться не более двух раз — один раз при просмотре v и один раз при просмотре и. Таким обра- образом, процесс приписывания пометок требует порядка 0(|/4|) ариф- арифметических шагов. С другой стороны, возвращение по пометкам можно выполнить за 0(р) шагов, где р —- длина (число дуг) обнару- обнаруженного увеличивающего пути. Заметим, что в увеличивающем пути вершины не могут повторяться; поэтому р<|К|. Следовательно, каждая итерация алгоритма требует 0(|К|+И |) = 0(И I) времени. Таким образом, в целом алгоритм имеет сложность O(S'\A\), где S — число итераций. Поскольку пропускные способности всех дуг целые, то поток остается целочисленным на всех шагах, что можно показать несложной индукцией по числу итераций Следова- Следовательно, приращения также имеют положительные целочисленные значения, и поэтому на каждой итерации величина потока увеличи- увеличивается по меньшей мере на 1. Таким образом, если v— величина максимального потока, то S<w Однако в этой оценке кое-что за- заведомо неправильно: мы оценили сложность решения задачи через ее решение! На самом же деле нам нужна априорная оценка слож- сложности, выраженная через вход. Для получения такой оценки до- достаточно заметить, что w< V b(x, ,(/)• Окончательно получаем, что алгоритм пометок имеет сложность 'Off 2 Ь(х, у))-\А\) В следующей главе мы увидим, что эта оценка в худшем случае дей- действительно достигается. ? Пример 8.8. Симплекс-алгоритм гак же, как алгоритм пометок из примера 8.7, включает в себя начальный шаг и некоторое число итераций. Если матрица А имеет размеры тХп, го начальный шаг требует О(тп) арифметических операций. Аналогично, каждую ите- итерацию можно грубо рассматривать как умножение матрицы на век- вектор, и, следовательно, ее также можно выполнить за О(тп) арифме- арифметических операций. Поскольку зацикливание устранено, симплекс-метод может в худшем случае пройти по всем базисным допустимым решениям, число которых не превосходит (т+"). В § 8.6 мы покажем, что действительно существуют задачи ЛП, в которых симплекс-алго- симплекс-алгоритм вынужден выполнять много (хотя и не ровно (т%п)) итера- итераций. Q
168 Гл. 8. Алгоритмы и сложность 8.5 Полиномиальныег] алгоритмы В каком случае вычислительную задачу можно считать удовле- удовлетворительно решенной? Ответ, очевидно, содержится в поведении алгоритмов, известных для этой задачи. Задачу можно считать ре- решенной в том и только в том случае, если существует алгоритм ее решения, требующий не слишком много времени (это основной критерий, которым мы будем пользоваться). Фактически, как было указано выше, практическая польза алгоритма определяется ско- скоростью роста наилучшей из известных оценок времени. Какие же скорости роста следует считать приемлемыми для решения вы- вычислительных задач? В настоящее время среди специалистов по вычислительным наукам широко распространено мнение, что алгоритм окажется практически полезным для вычислительной задачи только в том случае, если его сложность растет полиномиально относительно размера входа. Например, при таком подходе алгоритмы со слож- сложностью О (га) или 0{пЛ) приемлемы. (Заметим, что полиномиальная скорость роста полностью определяется степенью полинома.) Так- Также, естественно, допускаются алгоритмы, асимптотическая слож- сложность которых не выражается полиномом, но ограничена полино- полиномом. Примерами могут служить оценки га2-6 и га log га. Чтобы понять значение класса полиномиально ограниченных алгоритмов, рассмотрим те алгоритмы, сложность которых для достаточно больших индивидуальных задач превосходит любую полиномиальную оценку. Обычно эти алгоритмы называют экспо- экспоненциальными, поскольку 2" является представителем неполиноми- неполиномиальных скоростей роста. К примерам экспоненциальных скоростей роста относятся kn (при любом фиксированном /г>1), га!, 2"\ га" и nloeni). Очевидно, что с ростом размера входа любой полиномиаль- полиномиальный алгоритм станет в конечном итоге более эффективным, чем лю- любой экспоненциальный алгоритм (см. табл. 8.1). Другая положи- положительная особенность полиномиальных алгоритмов заключается в том, что они в некотором смысле лучше используют достижения тех- технологии. Например, каждый раз, когда технологические достиже- достижения приводят к увеличению скорости ЭВМ в 10 раз, наибольший размер задач, решаемых полиномиальным алгоритмом, скажем за 1) В оригинале polynomial-time. Этот термин введен в последнее время в иност- иностранной литературе для того, чтобы различать алгоритмы, полиномиальные отно- относительно времени и полиномиальные относительно памяти (polynomial-space). Однако мы сочли возможным дать упрощенный перевод этого термина, поскольку алгоритмы, полиномиальные относительно времени, являются автоматически и по- полиномиальными относительно памяти, так что их естественно называть просто полиномиальными.— Прим. перев. 2) Скорости роста, такие, как п og , которые превосходят любой полином, но меньше чем 2"г для любого е>0, называются иногда субэкспоненциальными.
8.5. Полиномиальные алгоритмы 169 час, умножается на константу, заключенную между 1 и 10. В про- противоположность этому для экспоненциального алгоритма произой- произойдет всего лишь аддитивное увеличение размера задачи, которую этот алгоритм может решить за фиксированное время (см. табл. 8.2). Наконец, отрадно отметить, что полиномиальные алгоритмы обла- Таблица 8.1 Рост полиномиальных и экспоненциальных функций Функция /1 л log п /;3 106п» ¦уп „logn ¦ п\ Приближенные значения 10 33 1000 10«* 1024 2099 3 628 800 100 664 1 000 000 1022 1.27 х Юз» 1.93 х 1013 1Q158 1.05 7.89 4 1000 9966 10» Юз» х ЮЗ»' X 1029 X 102567 дают свойстеом «замкнутости»: можно комбинировать полиноми- полиномиальные алгоритмы для решения частных случаев одной и той же задачи; один полиномиальный алгоритм может вызывать другой в качестве «подпрограммы», при этом в целом алгоритм останется полиномиальным. При разделении алгоритмов на полиномиальные и экспоненци- экспоненциальные необходима особая осторожность в тех случаях, когда оцен- оценка времени включает в себя численные входные данные задачи. На- Например, для алгоритма пометок была получена оценка времени (см. пример 8.7). На первый взгляд кажется, что эта функция асимп- асимптотически растет как полином, поскольку в ней нет явной экспо- экспоненты или эквивалентной операции. Тем не менее эта функция не будет полиномиально ограниченной относительно размера входа, и связано это с тем, что она выражена через численные входные дан- данные задачи. Чтобы продемонстрировать это, допустим, что все дуги в сети имеют пропускную способность 2|Л|. Индивидуальную за- задачу о максимальном потоке можно закодировать, выписывая \А \ целых чисел, каждое с \А | разрядами; так что размер этой индиви- индивидуальной задачи есть О(|Л|2). С другой стороны, оценка времени принимает вид ОB|Л '-ИР), и эта функция не является полиноми- полиномиальной относительно размера рассматриваемой задачи. В гл. 16 для алгоритмов с подобными временными оценками будет введен термин пссвдополиномиальность.
170 Гл. 8. Алгоритмы и сложность А будет ли алгоритм с оценкой пао практическим решением задачи? Вероятно, нет. Уже время, необходимое для решения ин- индивидуальной задачи размера 3, выражается астрономическим чис- числом, и может оказаться, что некоторый экспоненциальный алго- алгоритм работает лучше при всех разумных входных данных. Таким Таблица 8.2 Полиномиальные алгоритмы лучше используют успехи технологии Функция п П log 71 Л* 10W 2" 10" л! Размер индивидуальной задачи, решаемой за один день 1012 0.948 X ЮН 10« 10* 10 40 12 79 14 иЧц. 1 .HI. -njll. J « ¦¦' . Размер индивидуальной задачи,решаемой за один день на ЭВМ, скорость ко- которой в 10 раз больше 1013 0.87 X 10B 3.16 X 106 2.15 X 10* 18 43 13 95 15 образом, утверждение о том, что полиномиальные алгоритмы «хо- «хороши» в экстремальной ситуации, выглядит сомнительным. Однако в поддержку этого утверждения выступает опыт. При решении большинства задач как только обнаруживается какой-нибудь поли- полиномиальный алгоритм, так сразу же степень полинома быстро пре- претерпевает ряд уменьшений. Это вызвано тем, что различные исследо- исследователи улучшают идею алгоритма. Обычно окончательно получает- получается скорость роста О(п3) или лучше. Экспоненциальные алгоритмы, напротив, требуют на практике етолько же времени, сколько и в те- теории, и от них тут же отказываются, как только для той же задачи обнаруживается полиномиальный алгоритм. Эти эмпирические правила отнюдь не универсальны и в некото- некоторых случаях могут оказаться совершенно неверными. В следующих двух параграфах мы рассмотрим основания полемики, ведущейся вокруг симплекс-алгоритма и недавно открытого полиномиального алгоритма для ЛП. В ходе полемики были выдвинуты наиболее серьезные контраргументы утверждению о том, что полиномиальный и практический — синонимы.
8.6. Симплекс-алгоритм не является полиномиальным ITL 8.6 Симплекс-алгоритм не является полиномиальным Среди обсуждавшихся в предыдущих главах алгоритмов симп- симплекс-алгоритм — самый важный. Поэтому естественно попытаться применить к нему предложенный в предыдущем параграфе матема- математический критерий выделения «хороших» алгоритмов и выяснить, полиномиальный ли он. В данном параграфе мы представим простые аргументы, принадлежащие Кли и Минти [КМ], устанавливающие, что симплекс-алгоритм не полиномиален. Симплекс-алгоритм, приведенный на рис. 2.3, содержит не пол- полностью определенный шаг: выбор /. Анализ такого алгоритма в худшем случае означает нахождение а) самой неблагоприятной индивидуальной задачи и б) самой неудачной последовательности выборов на не полностью определенных шагах. Поэтому для дока- доказательства того, что симплекс-алгоритм не полиномиален, достаточ- достаточно представить семейство индивидуальных задач, на которых он может использовать экспоненциальное число замещений. Для этого достаточно представить экспоненциальную (относительно раз- размера задачи ЛП) последовательность базисных допустимых решений хи х2, ... , xh, такую, что xt и xi+1 смежны и удовлетворяют нера- неравенству c'xi + i<.c'Xi при всех t=l, ... , k—1. В этом месте удобно привлечь некоторую геометрическую инту- интуицию. Нам известно (теорема 2.2), что базисные допустимые решения (бдр) задачи ЛП являются вершинами соответствующего много- многогранника. Кроме того, согласно теореме 2.10, смежные невырож- невырожденные бдр задачи ЛП соответствуют вершинам, соединенным реб- ребром A-мерной гранью) многогранника (например, вершины @, 0, 1) и @, 1, 1) на рис. 8.2 (а) смежны). Пусть теперь многогранник ориен- ориентирован так, что при движении вверх стоимость убывает. Тогда нам нужно найти последовательность, содержащую экспоненциальное число вершин, в которой каждая вершина смежна со следующей вершиной и каждая вершина выше, чем предыдущая. Но прежде всего мы должны иметь многогранник с экспоненциальным числом вершин. Примером такого многогранника является куб: 0<х,<\, /=1, 2, 3 (рис. 8.2(а)). В 3-мерном кубе шесть граней — многие игры основаны на этом фундаментальном факте — и восемь вершин. В общем случае не- нетрудно видеть, что d-мерный куб (или d-гиперкуб), определяемый неравенствами 0l, /=1, 2, ... , d, имеет 2d граней, по одной для каждого неравенства, и 2d вершин, соответствующих присвоению единиц любому подмножеству пере- переменных из {хи хг, ... , xd} и нулей остальным переменным.
172 Гл. 8, Алгоритмы и сложность а. о, A,0,0) / @,0,1) / 0, l, О 0,1,0) @, 1,1) [0,1. 0) I i A,1-f, 1-E+ ?J) J(C,1-K2, ?-?3) ZZ^ ^X2
8.6. Симплекс-алгоритм не является полиномиальным 17.3 Многогранник, который мы хотим построить, очень похож на куб (рис. 8.2F)). Он определяется неравенствами l^^is^e. 1—BXj^i^x^eXy^, j = 2, 3, ..., d, (8.1) для некоторого в, такого, что 0<е<1/5. Таким образом, в пределе при е -> 0 этот многогранник стремится к d-мерному кубу; т. е. мно- многогранник (8.1) является возмущением d-мерного куба. На рис. 8.2 приведен пример для 3-мерного случая вместе с указанием «длин- «длинной» последовательности смежных вершин с убывающей стоимостью. Ниже мы аналитически установим существование такой последова- последовательности. Для приведения (8.1) к стандартной форме добавим d переменных недостатка и d переменных избытка. Тогда m—2d и п=М. Будем максимизировать xd. Полностью эта задача ЛП запи- запишется в виде min—xd, X' + h== I' (8.2) x,—ex,.,— гу = 0, x/ + fa;/_j + s/=1, / = 2, 3, .... d, xn rf, s,>0, /= 1, ..., d. Какие бдр имеются в задаче (8.2)? Следующая лемма дает ответ на этот вопрос Лемма 8.1. Множество допустимых базисов задачи (8.2) совпа- совпадает с семейством подлшожеств множества {xi, ... , xd, ri, ... , rd, su ... , sd}, содержащих все х и в точности один из элементов sy, rj для каждого /=/, ... , d. Более того, все эти базисыневырожденны. Доказательство. Поскольку хг^& и x/+i^ex;- для /=1, ...,d—1, то в любом допустимом решении х^г''> 0. Поэтому все допусти- допустимые базисы задачи (8.2) должны содержать d столбцов, соответ- соответствующих переменным х. Далее, пусть r/ = s/. = 0 для некоторо- некоторого /. Если /=1, то 8==х, = 1, что абсурдно. Если /> 1, то из третьего ограничения в (8.2) вытекает д;/- = ед:-_1 и из четвертого вытекает xJ-\-ex/_1 = \ или 2ех/_, = 1. Но Xj_t ^ 1, согласно вто- второму и четвертому ограничениям из (8.2), и, кроме того, в < 1/2; поэтому последнее равенство невозможно. Мы заключаем, что любой допустимый базис должен содержать для каждого / один из столбцов, соответствующих s, и гt. Но это дает уже 2d = m базисных столбцов. Более того, мы доказали, что ни одно такое бдр не может иметь нулевых компонент и, следовательно, все они невырожденны. ? Будем записывать бдр задачи (8.2) в виде хь, где S—под- S—подмножество множества -jl, 2, . .., d\, соответствующее ненулевым г в я5. Значение переменной х; в Xs будет обозначаться через xf. Нам потребуется
174 Гл. 8. Алгоритмы и сложность Лемма 8.2. Пусть d?S, но d^S'; тогда xd~> х%. Кроме того, если S' — S—\d\, то х$' = 1—х$. Доказательство. Так как d?S, TOsd = 0H из четвертого огра- ограничения в (8.2) вытекает л^ = 1—елг|_1. Но xf_, ^ 1 и е < 1/2; поэтому л^ > 1/2. С другой стороны, поскольку dlfcS', Tord = 0 и из третьего ограничения в (8.2) вытекает xf = exdil < 1/2. Сле- Следовательно, XSd' < A^. Для доказательства второй части заметим, что если 5 = 5' и \d\, то л-|11 = л;|_1. Тогда x$' = bx$Li = 1 — A—e*f_!) = I—xsd. Q Лемма 8.3. Пусть подмножества множества {1, 2, ..., d} занумерованы таким образом, что xf < *d*< ... ^xd2d. Тогда все неравенства строгие и бдр xsJ и xs/+1 смежны при всех / = = 1, 2, .... 2d-l. Доказательство. Воспользуемся индукцией по d. Утвержде- Утверждение, очевидно, выполняется для d=l. В этом случае мы имеем два бдр, а именно (д;,, rit s1)~(e, 0, 1—е) и A, 1—е, 0). Эти бдр имеют неравные xt и, очевидно, смежны. Предположим теперь, что лемма установлена для d-мерного куба, и пусть Slt ..., S2d—соответствующая нумерация. Но 5П ..., 52<< яв- являются также подмножествами множества {1, 2,..., d+1}, и, кроме того, x^i — ex/. Отсюда, согласно предположению индукции, Xd+i < х$+1 <-.. <xdfv Рассмотрим теперь осталь- остальные подмножества множества {1 d-\-l\, а именно S] = = Sfu{d+l\, /=1, ..., 2d. Согласно лемме 8.2, xsd'i >х^ и xj+1= 1—х/+1. Следовательно, По предположению индукции Xs/ и xs/+1 смежны, значит, смеж- смежны xsi и xs'+1. При этом х 2d и х %d также смежны, поскольку второй базис получается из первого добавлением rd+i и выбрасы- выбрасыванием sd+1. Лемма доказана. ? Теперь можно доказать основное утверждение этого параграфа. Теорема 8.1. Для любого d>l существует задача ЛП с 2d урав- уравнениями, 3d переменными и целочисленными коэффициентами, абсолютная величина которых не превосходит 4, в которой симплекс- алгоритм может при нахождении оптимума проделать 2d—1 ите- итераций.
8.7. Алгоритм эллипсоидов 175 Доказательство. Возьмем е= 1/4 и умножим все уравнения в (8.2) на 4, при этом все коэффициенты будут целыми. Поскольку в (8.2) требуется максимизировать xd, то в экспоненциально длин- длинной цепи смежных бдр, существование которой установлено в лем- лемме 8.3, стоимости будут убывать. Теорема доказана. ? Результаты, аналогичные теореме 8.1, известны для почти всех вариантов симплекс-алгоритма, включая некоторые эвристические правила замещения, прямо-двойственный симплекс-алгоритм из гл. 5 и др.; см. задачи и ссылки в конце этой главы. До недавнего времени вопрос о том, может ли существовать какой-нибудь полиномиальный алгоритм для задачи ЛП, был очень запутанным. Относительно ответа на этот вопрос имелись противо- противоречивые соображения. С одной стороны, задача ЛП была, естествен- естественно, одной из тех задач (вместе с ЗК и многими другими; см. гл. 15), для которых, казалось, никакие разумные попытки построить поли- полиномиальный алгоритм не могут привести к успеху. С другой сторо- стороны, задача ЛП обладает двумя положительными чертами, которые делают ее совершенно отличной от других классических задач этого семейства. Во-первых, для ЛП имеется сильная теория двойствен- двойственности, чего нет для других трудных комбинаторных задач (см. § 16.1). И во-вторых, для задачи ЛП есть алгоритм, симплекс-метод, который — хотя и экспоненциален в худшем случае — уверенно работает на практике для задач, по-видимому, неограниченного размера. В следующем параграфе мы рассмотрим недавнее сенсационное открытие, разрешившее эту головоломку. 8.7 Алгоритм эллипсоидов Весной 1979 г. советский математик Л. Г. Хачиян опубликовал доказательство гого, что некоторый алгоритм для задачи ЛП поли- полиномиален, разрешив таким образом вопрос, долго стоявший откры- открытым. Результат Хачияна основан на работе других советских математиков по нелинейному программированию (см. ссылки) и со- совершенно отличается от большинства предыдущих подходов к ЛП тем, что в нем почти полностью игнорируется комбинаторная при- природа задачи. В следующих разделах мы опишем и обсудим этот алгоритм. Прежде всего нам необходимо установить некоторые вспомогатель- вспомогательные результаты, представляющие одновременно и самостоятель- самостоятельный интерес. 8.7.1. ЛП, ЛН и СЛН. Формально задача линейного программи- программирования (ЛП) (в стандартной форме) — это следующая вычислитель- вычислительная задача. Для данных целочисленной тх«-матрицы А, /«-вектора b и «-вектора с либо
176 Гл. 8. Алгоритмы и сложность а) найти «-вектор х с рациональными координатами, такой, что О, Ах=Ь и с'х принимает минимальное значение при этих усло- условиях, либо б) установить, что не существует «-вектора х, такого, что х^О и Ах=Ь, либо в) установить, что множество {с'х: Ах=Ь, х^О} не ограничено снизу. Рассмотрим задачу о линейных неравенствах (ЛН), определяемую следующим образом. Для данных /лХ «-матрицы А и m-вектора Ь выяснить, сущест- существует ли «-вектор х, такой, что Лх<6. Для удобства будем считать, что в ЛН и определяемой ниже задаче СЛН т^п, хотя это условие не ограничивает задачу. Вопрос Ответ Интервал возможных х после вопроса 1 32 jc> 16? Нет 1 16 х> 8? Да 9 16 л> 12? Нет 9 12 jc > 10? Да 11 _12 *> 11? Нет 11 = х. Рис. 8.3. Последовательность из пяти вопросов вида: «Верно ли, что х > а?» для различных значений а, в результате которой определяется, что х— 11. Оказывается, что задача ЛН почти так же трудна, как ЛП, по крайней мере в том, что касается существования полиномиальных алгоритмов. Для установления этого нам потребуются некоторые вспомогательные утверждения. Начнем с рассмотрения очень общего метода программирования, называемого бинарным поиском. Предположим, мы хотим найти (неизвестное) целое число х между 1 и В, задавая вопросы вида: «Верно ли, что х>а?» для некоторого выбранного нами а. Для ре- решения этой задачи можно сначала спросить, находится ли л; в верх- верхней половине интервала [1, В], затем спросить, находится ли х в верхней половине нового (вдвое меньшего) интервала, и т. д. до тех пор, пока интервал, в котором заведомо лежит х, не будет содержать ровно одно целое число — х. Это произойдет после flog B~\ таких вопросов— [~logS~] можно, в частности, опреде- определить как число, показывающее, сколько раз нужно поделить В на 2, чтобы получить число, не превосходящее 1. На рис. 8.3 проиллюст- проиллюстрирован бинарный поиск для В=32 и х=П. При этом достаточно Т log 32~] =5 вопросов.
8.7. Алгоритм эллипсоидов 177 Сформулируем этот результат в виде леммы. Лемма 8.4. Целое число х между 1 и В можно узнать за f log В ~] вопросов вида: «Верно ли, что Рассмотрим задачу ЛП в стандартной форме с тX«-матрицей А: minc'x, Ax = b, (8.3) Ее размер — L = mn+\-\og\P\-\, (8.4) где Р — произведение ненулевых (целочисленных) коэффициентов, входящих в А, Ъ и с (вспомните пример 8.5). Сформулируем теперь следующий вариант леммы 2.1. Лемма 8.5. Все бдр задачи (8.3) являются п-векторами, состав- составленными из рациональных чисел, абсолютные величины и знамена- знаменатели которых не превосходят 2L. Доказательство аналогично лемме 2.1. ? Лемма 8.6. Пусть два бдр xlt x2 задачи (8.3) удовлетворяют неравенствам K2~2L < с'хх, с'х2 ^ (К+ 1) 2~2L для некоторого це- целого К- Тогда c'x1 = c'xi. Доказательство. Допустим, что с х\Фс'хг. Тогда, по лемме 8.5, с'хх и с'х2 — различные рациональные числа со знаменателями, не превосходящими 2L, откуда \с'хг—c'x2\^2~2L — противоречие. ? Теперь мы можем доказать следующую теорему. Теорема 8.2. Полиномиальный алгоритм для задачи ЛП сущест- существует в том и только в том случае, если существует полиномиальный алгоритм для задачи ЛН. Доказательство. Для доказательства части только в том случае заметим, что для решения любой индивидуальной задачи ЛН доста- достаточно определить, допустима ли соответствующая задача ЛП (с до- добавленными переменными недостатка и удаленными неограничен- неограниченными переменными; см. §2.1). Следовательно, полиномиальный ал- алгоритм для задачи ЛП будет порождать полиномиальный алгоритм для задачи ЛН. Обратно, предположим, что алгоритм Л решает задачу ЛН за полиномиальное время. Опишем полиномиальный
178 Гл. 8. Алгоритмы и сложность алгоритм для задачи ЛП, использующий Л. Пусть входом служит задача ЛП (8.3). 1. Вначале наш алгоритм определяет, допустима ли задача ЛП, вызывая один раз алгоритм Л и подавая на его вход неравенства Ах^Ь, Ах^Ь и х^О. Если Л дает ответ «нет», мы делаем вывод о недопустимости нашей задачи и останавливаемся. 2. Далее, мы проверяем на допустимость систему неравенств Ах^Ь, Ах^.Ь, х^О, с'х^.—22i—1. Поскольку произведение с'х ограничено снизу величиной —22i, если оно вообще ограничено, то в случае, когда Л определяет, что указанные неравенства выпол- выполнимы, мы делаем вывод о неограниченности нашей задачи и останав- останавливаемся. 3. В противном случае мы знаем, что задача имеет оптималь- оптимальное бдр х. Определим вначале целое число —-24i < К < 24i, такое, что K2~iL <с'л:< (К+ 1) 2~iL. Это можно сделать с помощью бинарного поиска (см. лемму 8.4), вызывая 4L+I раз алгоритм Л для неравенств при различных значениях а. Так как алгоритм Л полиномиален, то К можно определить за полиномиальное время. 4. Окончательно, найдем базис, соответствующий х. Для каж- каждого k=l, ... , п проверим, выполнимы ли одновременно все нера- неравенства АЬ А для j?S(k). Здесь 5(k) — множество индексов, меньших k, для ко- которых получен ответ «да». Должно быть очевидным, что любые т столбцов, не входящих в S(tt+I), можно выбрать в качестве базиса, соответствующего х, и что существует по меньшей мере т столбцов, не входящих в S(n-\-\). Определив таким образом базис (возможно, неоднозначно), можно эффективно найти х простым обращением базиса — обращение целочисленной пХtt-матрицы М можно выпол- выполнить за полиномиальное время (относительно размера М) с помощью метода исключения Гаусса [Га]. ? Согласно теореме 8.2, сложность ограниченной на вид задачи ЛН остается такой же, как сложность задачи ЛП. Другими слова- словами, этап I обычного симплекс-метода (цель которого — всего лишь найти допустимую точку; см. § 2.8) имеет такую же сложность, как и вся задача! Рассмотрим еще одну близкую задачу, задачу о строгих линейных неравенствах (СЛН): для данных целочисленных тХ«-матрицы А и /я-вектора Ъ выяснить, существует ли «-вектор х, такой, что Ах<Ь. Не удивительно, что задача СЛН не легче, чем ЛН.
8.7. Алгоритм эллипсоидов 179 Лемма 8.7. Система линейных неравенств a'iX^bi, i = \, ..., т, (8.5) имеет решение тогда и только тогда, когда имеет решение система строгих линейных неравенств a'lx<bl + e, i = l, ..., т, где 8=2-?л. Доказательство. Если система неравенств (8.5) имеет решение, то это решение удовлетворяет также и (8.6). Для доказательства, обратного утверждения предположим, что (8.6) имеет решение. Исходя из этого решения, построим решение х для (8.5). Это по- построение можно рассматривать как хитрый вариант построения из теоремы! 2.1, где было показано, как построить бдр начиная с про- произвольного допустимого решения. Пусть х0—решение системы (8.6). Рассмотрим множество век- вектор-строк / = {af. bl^.a'iXf><Cbi-\-&}. Можно считать, что uj = = 2a.6/P/ia/ Для всех / и подходящих чисел Р//. Действительно, если бы некоторый вектор а, был независим от векторов а, из/, то система имела бы некоторое решение г0. Взяв Xi—Xo+Xzo для достаточно малого К, можно получить другое решение хх системы неравенств (8.6), для которого множество / содержит на один вектор больше; после не более т шагов этот процесс должен остановиться. Таким образом, O/ = 2o.s r $/fli для всех / и некоторого линейно независимого подмножества /' множества /. По правилу Крамера каждое $Jt является отношением двух определителей: $ji = D/t/\D\, абсолютная величина которых меньше чем 2L. Рас- Рассмотрим решение х уравнений а\х = Ъ{, at С /'.Для каждого / имеем: D\(a'jX—bf)= 2 Dna'iX—\D\bs~ (по определению л;) atul' (прибавили и вычли | D \ a'jX0) = -2 DJi{a'ixa-bi) + \D\{a'ix0-bl)< а{еГ (поскольку \a'iX0 — b(\ < е для i g /' и а'/Х0—bf <в для всех /) S \D r 2 ^6 /'
180 Гл. 8. Алгоритмы и сложность Таким образом, \D\{a]x—bj) < 1 для всех /. Кроме того, из определения D следует, что знаменатели всех компонент векто- вектора х делят \D\ и, следовательно, \D\{a)x—bj)— целое число. Отсюда а'/Х—bf^0 для всех /, т. е. х—требуемое решение не- неравенств (8.5). ? Следствие. Если существует полиномиальный алгоритм для СЛН, то существует полиномиальный алгоритм для ЛН. Доказательство. Для проверки выполнимости множества линей- линейных неравенств (8.5) достаточно проверить, выполнима ли система 2tLa'{x<2i'bt+l, /=1, .... т. (8.7) Размер задачи ЛП (8.7) не превосходит удвоенного квадрата раз- размера задачи (8.5). ? В разд. 8.7.3 будет приведен полиномиальный алгоритм для за- задачи СЛН. 8.7.2. Аффинные преобразования и эллипсоиды. В этом разделе будут приведены некоторые стандартные понятия линейной алгебры и некоторые касающиеся их факты (леммы 8.8, 8.9 и 8.10) без дока- доказательств. Пусть Q — невырожденная ггХгг-матрица и /— вектор длины п. Преобразование Т: /?"->/?", определяемое формулой Т(х)= = Н-<2'ЯДЛЯ каждого х ? /?", называется аффинным преобразовани- преобразованием. Поскольку матрица Q невырождениа, то преобразование Т однозначно обратимо. Преобразование, обратное к Т, также яв- является аффинным преобразованием. Множество Sn— {x ?Rn: a:'a-<:1} называется единичным шаром. Если Т — аффинное преобразование, то T(Sn) называется эллипсои- эллипсоидом. Другими словами, Т (Sn)= {у ? /?": (y~t)'B~1(y—0^'}. гДе B=QQT. Матрицы, такие, как В — произведение невырожденной матрицы на транспонированную к ней,— являются положительно определенными; т. е. х'Вх>0 для всех ненулевых х ? R". Аффинные преобразования сохраняют отношение включения между множествами. Лемма 8.8. Если S c= S' с= /?«, то Т (S) <s T (S1). Пример 8.9. Пусть в 2-мерном пространстве * = B, 3)' . Г2 ОТ Г1/4 ОТ и Q = |o [I. 1огда В =[« [J , и соответствующий эллипсоид Т E2) имеет вид, показанный на рис. 8.4 В общем случае оси эллипсоида могут быть не параллельны координатным осям, но они всегда ортогональны друг другу. Центр эллипсоида всегда совпадает с t. Q
8.7. Алгоритм эллипсоидов 181 Лемма 8.9. Пусть подмножество S из R" имеет объем V. Тогда Т (S) имеет объем V- |det(Q)|. Например, объем эллипсоида на рис. 8.4 равен 2я. Рассмотрим аффинное преобразование R, в котором ^=0 и мат- матрица (также обозначаемая через R) обладает следующим специаль- специальным свойством: RRT=I. Такие преобразования называются враще- вращениями — легко видеть, что они отображают единичный шар на себя. Лемма 8.10. Пусть a$Rn — вектор длины \\a\\. Тогда существует такое вращение R, что Ra=(\\a\\, 0, ..., 0). В заключение нам нужен один факт из теории выпуклых много- многогранников. Рассмотрим выпуклый многогранник Р в Rn. Мы знаем, что Р можно записать в виде P—{x?Rn: Ax^.b} для некоторых т>п, mXtt-матрицы А и m-вектора Ь. Пусть внутренность Р опре- определяется условием Int (Р)= {х ? R": Ах<.Ь}. Лемма 8.11. Если Int(/D)=^=0, то в Р существуют п+\ линейно независимых вершин. Доказательство. Если все множества из я+1 вершин много- многогранника Р линейно зависимы, то Р лежит на некоторой гипер- гиперплоскости Н. Возьмем, однако, точку л:6 \ni(P), и пусть е — наи-
182 Гл. 8. Алгоритмы и сложность меньшее расстояние от х до граней Р. Так как х g Int (P) и е>0, то шар с центром в х и радиусом г лежит целиком внутри Р и, следова- следовательно, на Н. Но это абсурдно: никакая (п—1)-мерная гиперплос- гиперплоскость не может содержать /г-мерного шара. ? 8.7.3. Алгоритм. Основная идея алгоритма эллипсоидов очень проста. Алгоритм состоит из итераций. У нас постоянно имеется эллипсоид, содержащий некоторое решение данной системы СЛН, АЛГОРИТМ ЭЛЛИПСОИДОВ ДЛЯ ЗАДАЧИ СЛН Вход. Система строгих линейных неравенств Ах < b порядка mXn н раз- размера L. Выход, n-вектор х, для которого Ах < Ь, если такой вектор существует; «нет» в противном случае. 1: (Задание начальных значений) Положить j:=0, to:=O, B0:=n222L-I (Comment: j далее считает число итераций; текущий эллипсоид имеет вид Ej = {x: (x-tjJ'Bf^x-tjXl}). 2: (Проверка) if ti —решение системы Ах < b then return t.; if j > K=16n(n+1)L then return «нет»; 3: (Итерация) Выбрать любое неравенство в Ах < b, которое нарушается при x = tj, скажем a'tj^b. Положить 2 (Bja)(Bia)' 1 J; go to 2. Рис. 8.5. если такое решение вообще существует. Итерация состоит в замене текущего эллипсоида меньшим, который также с гарантией содержит некоторое решение (если оно вообще существует). После достаточ- достаточного числа итераций мы либо должны обнаружить решение, либо приходим к выводу, что после ряда сжатий эллипсоид стал слишком мал, чтобы содержать решение, и заключаем, что решения не су- существует. Полностью этот алгоритм приведен на рис. 8.5. Пример 8.10. Предположим, что для некоторого / мы получили ^ = @, 0)', Ву=[0 4J и одно из неравенств имеет видх+у<—1. Эта ситуация изображена на рис. 8.6(а). Напомним, что откуда-то нам известно, что решение данной индивидуальной задачи СЛН, если оно существует, лежит внутри эллипсоида Е}. Так как любое решение должно удовлетворять неравенству х-\-у<С—1, то с уве- уверенностью можно сказать, что все решения лежат в нижней левой половине этого эллипсоида. Если бы мы могли каким-нибудь обра-
8.7. Алгоритм эллипсоидов 183 7+1 (б) Рис. 8.6. а) Эллипсоид на /-й итерации. б) Эллипсоид на следующей итерации. зом построить эллипсоид E]+i, включающий в себя эту левую ниж- нижнюю половину, то это было бы подходящим шагом. Именно это и де- делает итерация в алгоритме (рис. 8.6F)). Получаем t]+1=(—3/УХз,
—4/CK 13))' и - 84 13 32 _ Тз 32 ~ 496 117_ 184 Гл. 8. Алгоритмы и сложность п Корректность алгоритма эллипсоидов вытекает из следующей теоремы со скучным, но прямым доказательством. Теорема 8.3. Пусть В; — положительно определенная матрица, t(tRn и а—произвольный ненулевой п-вектор. Пусть BJ+1 и tj+i вычисляются согласно шагу 3 алгоритма эллипсоидов. Тогда спра- справедливы следующие утверждения. а) Матрица BJ+i положительно определена (или, что эквива- эквивалентно, множество EJ+1 = {x?Rn: (х—1/+1)' Bj^ (х— tJ+1)^ 1} является эллипсоидом). б) Полуэллипсоид A/2) Ej[a] = {x?R»: (x—t^Bj^x—t^^l, a'(x—tj)^O\ является подмножеством множества EJ+i. в) Объемы эллипсоидов Е, и Е,+1 удовлетворяют неравенству vol (?,+1)/vol (Ej) < 2-V2 <"+« Для доказательства теоремы 8.3 нам потребуются две вспомога- вспомогательные леммы. Лемма 8.12. Рассмотрим шар Sn и множество Е= {x?Rn: (x—tYB-^x—t)^!}, где <=(— l/(n+l), 0, ..., 0)' и S=diag(n2/ (n+1J, n2/(n2—1), .... пЧ(п2— 1)). Тогда а) матрица В положительно определена (и, следовательно, Е — эллипсоид); б) полушар (\l2)Sn= {х ? R": х'х^.1 и х^О} является подмноже- подмножеством множества Е; в) объемы Sn и Е удовлетворяют неравенству vol (?)/vol (Sn) < ^ 2-1/2 (П+1)_ Доказательство, a) B=QQT, где -O— П П \ ' • , • I • * • > _______ I .
8.7. Алгоритм эллипсоидов 185 б) Пусть *€A/2)SB. Тогда (поскольку x?Sn) <; 1 (поскольку xgyS^j. в) По лемме 8.9 vol (?)/vol En)=det Q, где матрица Q та же, что в п. а). Поскольку Q — диагональная матрица, то п2 \с-')/2 Так как l+^^ex, 1—х^.е~х для всех х>0, то п 1 ' n" — 1 пъ — 1 Поэтому det Q < exp f "-' -')< 2-'/«<"+')., D Лемма 8.13. Пусть Bj—положительно определенная матрица, t/(tRn и а — произвольный ненулевой п-вектор. Пусть t/+1 и BJ+1 вычисляются по формулам шага 3 алгоритма эллипсоидов, и пусть 1/25„ и Е определяются так же, как в предыдущей лемме. Тогда существует такое аффинное преобразование Т, что а) T(Sn) = \x?R»: (x-t/ В? (*-/,)< \\\ б) Г (?) = {*€ Я": (x-(J+i)'B-+\(x-t/+1)^l\; в) Доказательство. По условию матрица В} положительно опре- определена и, следовательно, Bj=QQT для некоторой невырожденной матрицы Q. По лемме 8.10 существует такое вращение RT, что RTQTa=(\\QTa\\, 0, ..., 0)'. Определим преобразование Г формулой T(x)=tj-\-QRx. Проверим все три условия. a) T(Sn) { ()У = {х: (х— t,)'
186 Гл. 8. Алгоритмы и сложность б) Вначале заметим, что ^Гд 2 Bjaa'BJ ] + 1 - 7РИ\ [В,— я+1 а'В.а J я2 р QQQQ (поскольку #rQra = (||Qra|, 0, .... 0)') о 2 Q/?diag(||Qra[P, 0, .... 0) о ||Q7.fl||2 где Б определяется так же, как в лемме 8.12. Кроме того, Поэтому = {х: (х~//+1)' ВТ+\ (x—tJJn) < П. в) Условие в) теперь легко следует из условия а) и леммы 8.8, если заметить, что T(\x?Rn: *!<()}) = {*€#": а'(х—fy)<0}. Q Доказательство теоремы 8.3. а)Согласно условию б) леммы 8.13, T(E)=Ej+1; кроме того, из утверждения а) леммы 8.12 следует, что E=T'(Sn) для некоторого аффинного преобразования 7". Поэтому Ej+i=T-T'(Sn) — эллипсоид (композиция двух аффинных преоб- преобразований также является аффинным преобразованием). б) Согласно условию в) леммы 8.13, Ej\a\ = T f — Sn j , и, согласно утверждению б) леммы 8.13, l/2Sn s E. Отсюда ?,[a]s в) В соответствии с леммой 8.9 и утверждением в) леммы 8.12 уо1(Г(?)) _det(Q/?)vol(?) р vol(?y) vol(T(Sn)) Можно доказать также следующую лемму.
8.7. Алгоритм эллипсоидов 187 Лемма 8.14. Если система СЛН размера L имеет решение, то множество решений, лежащих внутри шара \х\^п2^, имеет объем, не меньший чем 2-<" + 2>L. Доказательство. Мы знаем, что если неравенство Ах<СЬ имеет решение, то имеется решение и для системы неравенств Ах<Ь, xi<2L, i=l, .... п. Следовательно, в многограннике Ах^Ь, xt < 2L, i =],..., п, имеется внутренняя точка. Тогда по лемме 8.11 он содержит п+1 линейно независимых вершин {v0, vu ... , vn). Все внутренние точки выпуклой оболочки этих вершин являются решениями неравенства Ax<Cb, лежащими внутри шара \\x\\<.n2L. Объем выпуклой оболоч- оболочки равен 1 ~nT det 1 1 ... 1 0. Каждое Vi можно записать в виде «;/D;, где «; — целочисленный вектор и Di — определитель, абсолютная величина которого не превосходит 2L. Поэтому объем выпуклой оболочки не меньше чем {\UD\r2^^L. ? Теорема 8.4. Алгоритм эллипсоидов корректно распознает, име- имеет ли решение система СЛН. Доказательство. Если алгоритм выдает некоторую точку tj на шаге 2, тогда, очевидно, эта точка является решением. Предполо- Предположим теперь, что алгоритм выдает «нет», а система имеет решение. По лемме 8.14 внутри шара Ео= {х g Rn: x'B^x^l} имеется множе- множество S решений, объем которого не меньше чем 2~GI+2)i. По тео- теореме 8.3 (п. б)) S остается подмножеством Ej для всех /=0, ... , К- Однако по теореме 8.3 (п.* в)) vo\(EK)<vo\(E0J-K/2<n+1)< <BXn222iOI2-8n?<2-'"+2)L, поэтому S не может содержаться в Ек — противоречие. ? 8.7.4. Арифметическая точность. Остается последний вопрос, который нужно разрешить прежде, чем можно будет утверждать, что алгоритм эллипсоидов является полиномиальным алгоритмом Для задачи о строгих линейных неравенствах и, следовательно, со- согласно теореме 8.2 и лемме 8.7, для ЛП. В отличие от всех осталь- остальных вычислений, обсуждавшихся в этой книге, алгоритм эллипсо-
188 Гл. 8. Алгоритмы и сложность идов нельзя выполнить с помощью арифметики целых или рацио- рациональных чисел. На это явно указывает квадратный корень в алго- алгоритме на рис. 8.5. Следовательно, при любой реализации этого ал- алгоритма на вычислительной машине нам придется приближать все промежуточные результаты рациональными числами. Это можно делать по следующей простой cxevie. Любое действительное число х представляется двоичным целым числом с Р разрядами, умножен- умноженным на некоторую степень числа 2 (возможно, с отрицательным показателем); ближайшее к х рациональное число такого вида обозначается х. Пусть, например, Р=4. Если х=37, тох=9х22= =36; если х=3.156, то л;=13х2~2=3.25. Мы будем говорить, что наше вычисление производится с точностью Р. Допустим, что точность Р фиксированна. Легко видеть, что \х—x|/|x|^2~p для любого действительного числа х\ это условие можно записать следующим образом: х = хA +02~/>) для некоторого —1<0<1, или просто x = x(\ + Q2~p), (8.9) опуская явное задание границ для 9. В дальнейшем представление (8.9) будет использоваться очень часто. В тех случаях, когда оно будет записываться для вектора или матрицы, мы допускаем, чтобы 0 выбиралось различным для различных компонент. Будем выполнять алгоритм эллипсоидов с точностью Р. Произ- Произвольная арифметическая операция, вообще говоря, будет давать не точный результат г (сумму, произведение, квадратный корень и т. д.), а г — приближение г с точностью Р. Выполнение таких операций в том случае, когда аргументами являются приближения действительных чисел с точностью Р, состоит из двух шагов: вы- выполнение операций (сложения, вычитания или сравнения) над двумя показателями степеней двойки и выполнение операции над двумя Р-разрядгшми целыми числами. Например, сложение 9Х22+ + 13Х2 выполняется следующим образом. Вначале сравниваем и вычитаем показатели степеней и обнаруживаем, что второй из них меньше на 4. Находим целое число, ближайшее к 13/24, а имен- именно 1. Прибавляем 1 к 9 и получаем ответ г=10х22. Проверяем усло- условие 10^16, т. е. «переполнилось» ли наше Р-разрядное число, и, поскольку это условие не выполнено, выдаем 10х22=40 в качестве результата. Первый шаг, т. е. сравнение, сложение или вычитание показа- показателей, легко выполним. Показатель степени любого числа, появляю- появляющегося в алгоритме эллипсоидов, не превосходит экспоненты от L. (Это следует из того, что у нас полиномиальное (общее) число опе- операций, и при каждой операции показатель увеличивается не более чем вдвое.) Поэтому если показатели также хранить в двоичном представлении, то первый шаг любой арифметической операции мож-
8.7. Алгоритм эллипсоидов 189 но выполнить за время, полиномиальное относительно L. Выполне- Выполнение арифметических"операций над двоичными целыми числами с Р разрядами на втором шаге можно произвести за О(Р2) элементар- элементарных двоичных операций с помощью хорошо известных методов, изу- изучаемых в начальной школе. Возникает вопрос, насколько большим должно быть Р, чтобы алгоритм эллипсоидов оставался корректным. Если Р можно ограничить некоторым полиномом or L размера дан- данной задачи, то окончательно можно утверждать, что алгоритм эл- эллипсоидов полиномиален. Вспомним алгоритм эллипсоидов. Он строит последовательность эллипсоидов ?0=D. Во), Ei=(ti, Вг), ... для /=0, 1, ... . Величины tj+i и Bj+1 вычисляются через tj и Bj по правилам ti+1=F(t/t В,), fl/+t = G(fy, В,), где F и G — преобразования, заданные явно на рис. 8.5. Моди- Модифицированный алгоритм эллипсоидов для заданной точности Р также порождает последовательность эллипсоидов Е'и = Ео, ..., E'j = (t), fl,'-(l + 6)/), ... и т.д., где б>0 нам нужно будет оп- определить, a t'i+1 и B'!+i вычисляются по формулам *}+1 =/?(/;., в)), в;+1 =6(tit в1,). Крышки над F и G указывают, что в производимых вычислениях все промежуточные результаты приближаются с точностью Р. Заметим, что t'j+i и B'l+i вычисляются так же, как в исходном алгоритме эллипсоидов; единственное отличие состоит в том, что в наше опре- определение E'j мы добавляем дополнительный множитель A+6) на каждом шаге, и поэтому наша оценка объема будет умножаться на каждом шаге на A+6)". Грубо говоря, этот дополнительный множи- множитель будет гарантировать, что если Е] содержит множество S реше- решений неравенства Ax<ib, то это же справедливо и для Е]+и и теорема 8.4 остается справедливой, несмотря на ошибки округления, порож- порожденные вычислением с конечной точностью. Заметим, что множители A+6) не участвуют на самом деле в вычислении; они используются просто в определении эллипсоидов E'j, участвующих в наших рас- рассуждениях. Это можно сделать, поскольку формула для вычисле- вычисления Bj+1 через Bj (см. рис. 8.5) однородна относительно Bj, и, сле- следовательно, при умножении всех элементов матрицы Bj на некото- некоторый скаляр все элементы матрицы fl,-+1 умножаются на тот же ска- скаляр. Мы хотим доказать, что при подходящих Р и б полуэллипсоид содержится в E'j+l. Для этого достаточно показать, что эллип- эллипH (Ft' B') G(/j B))(l+8y) содержится в Е-+1, так р () j ; очередь до- достаточно показать, что все точки на границе Hf также лежат содержится в Ej+l. Для этого достаточно показать, ч соид Hj = (F(t'h B'j), G(/j, B))(l+8y) содержится в как по теореме 8.3 A/2) E'j ^ Н;. Для этого в свою о с H
190 Гл. 8. Алгоритмы и сложность внутри Е'1+1, т. е. из условия (x-F(t), B)))'G(ft, B',)'4x-F(fh В;-)) = A+6)/ (8.10) вытекает *€?;>,. (8.П) Но (8.11) эквивалентно неравенству (х-Р(Г„ В',)уб(Г„ В',)-*(х-Р(Г„ В',))^A+&У+У (8.12) Пусть г — любое число, появляющееся в алгоритме эллипсоидов (г может быть элементом В] или tj для некоторого / или некоторым промежуточным результатом). Нетрудно доказать, что |г|^Л1 = =2сКп для некоторого с>0, где К — число итераций (см. задачу 16; тот же результат справедлив для модифицированного алгоритма эллипсоидов с точностью Р, который мы анализируем). Поэтому любая арифметическая операция над такими числами, выполняемая с точностью Р, дает результат с абсолютной ошибкой, не превосхо- превосходящей М-2~р. Совокупная ошибка любой последовательности из р таких операций не превосходит рМ-2~р. Поскольку вычисления F и G включают в себя О(п3) арифметических операций, то (опуская для простоты аргументы В) и t) в F, F, G и G) получаем P = F + QM2c"-p для некоторого с>0. (Мы используем с в различных равенствах для обозначения положи- положительных констант, не обязательно связанных друг с другом.) Заме- Заметим, что здесь 9 — вектор. Отсюда x—F = x—F + QM2cn-p. (8.13) Допустим, что рассматриваемая индивидуальная задача СЛН имеет решение — в противном случае алгоритм эллипсоидов, оче- очевидно, корректен. Нетрудно показать (задача 15), что \х—F\^2~2nL для любой точки х на границе эллипсоида Н}. Тогда из (8.13) выте- вытекает x—F=* (х— F)(l + QM2cnL-p) и, следовательно, для любого х, удовлетворяющего (8.10), (х—Ру G (x—F) = (x—F)' G~l (x—F) (I + QM2cnL~pf. (8.14) Рассмотрим теперь произвольный элемент g матрицы G~l. Он равен частному от деления определителя D некоторого минора матрицы G на определитель матрицы G. Так как определитель порядка п является суммой п\ произведений и аналогично (8.13) максимальная ошибка каждого сомножителя в каждом произве- произведении не превосходит М2сп~р, то det (G) = det (G)-f-6M7I2<;'lL-/>. По теореме 8.4, учитывая, что /-я итерация не была последней,
Задачи 191 получаем det (В)) ^2-<"+2)L (l-f-6)~/n и, следовательно, det (G) ^2< >z1 A 6)^. Таким образом det (G) = det (G) • A + 9Mn2«i-'p) A + 6)*". (8.15) Аналогично, если D — подопределитель матрицы G, соответствую- соответствующий D, то D = D + 9M7I2craZ--p, и если g—элемент матрицы G, соответствующий g, то Поэтому (8.14) принимает вид (x—F)' G'1 (x—F) = (x—F)' G (x—F) x X (l-t-9M2cni-'pJ + eM"+32c'li- = A+6)/ A + 9Мл+з2сл1--р A +6)*"). Если взять /С=32п(п+1)Ь, 6=1 //С/г и Р=сКп2- для достаточно боль- большого с, то получим неравенство (8.12), и полуэллипсоид A/2)?^ дей- действительно содержится в Е]+1. Остается показать, что объемы эллипсоидов Е) убывают со ско- скоростью геометрической прогрессии. Из теоремы 8.3 (п. в)), равенства (8.15) и определения Ej+1 имеем <2j vol (EJ) Положив опять Р=с/Сп2 для достаточно большого с, получаем ^ 2 vol (Е-) (Заметим, что Р ограничено полиномом относительно L.) Согласно тем же рассуждениям, что и в теореме 8.4, после K—32n(n+])L итераций модифицированный алгоритм эллипсоидов либо даст ре- решение, либо с полной достоверностью выяснит, что решения не существует. Таким образом, доказана Теорема 8.5. Для задачи ЛП существует полиномиальный алго- алгоритм. Задачи 1. Опишите хорошо известный метод вычитания десятичных целых чисел как алгоритм. При этом можно представлять алгоритм аналогично тому, как это делается в данной книге. Входом для вашего алгоритма являются число п разря- разрядов в двух данных целых числах и два я-элементиых массива А и В, содержащие десятичные разряды этих чисел. 2. Можно доказать, что для приведенных ниже трех проблем ие существует алгоритма. Рассмотрите каждую из этих проблем и убедитесь по крайней мере в том, что некоторые очевидные подходы к их решению ие годятся. а) Проблема Остановки, описанная в §8.1. (Если вы честолюбивы, попытай- попытайтесь объяснить! почему не может существовать алгоритма, решающего эту про- проблему. Указание: допустим, что существует... .)
192 Гл. 8. Алгоритмы и сложность б) В проблеме соответствия Поста дан словарь, связывающий два языка; т. е. конечное множество пар слов. Каждая пара содержит одно слово из языка 1 и одно слово из языка 2. Спрашивается, существует ли фраза (последовательность слов, возможно, с повторениями), имеющая одно и то же значение в обоих языках. (Предполагается, что слова в этих языках пишутся подряд без разделяющих про- пробелов.) Например, если словарь имеет вид Номер слова 1 2 3 4 Язык 1 cab add dad bad Язык 2 ba ad adddad db то ответ в этом случае «да», поскольку в обоих языках фраза, состоящая из слов 2, 4, 2 и 3, имеет вид addbadadddad. в) Дано конечное множество черепиц различной формы, и спрашивается, можно ли замостить всю плоскость, имея в запасе бесконечное число черепиц каждой формы. Например, если имеются черепицы следующих четырех форм: 2 то ответ в этом случае «да», поскольку можно следующим образом замостить плоскость: 2 l 7 i з / / d 3 / 4 2 1 3 / / 4
Задачи 193 3. Дайте детальное описание алгоритма, который по данной пХ «-матрице расстояний систематически порождает все обходы п городов и выбирает самый дешевый обход (вспомните пример 8.1). 4. Постройте алгоритмы для решения каждой из описанных ниже задач. В каждой задаче зафиксируйте представление входа и дайте верхнюю оценку времени работы вашего алгоритма в виде функции от размера входа. а) Для данного графа G=(V, Е) выяснить, существует ли в G такой цикл [и, V, w, г, и], что [v, г], [и, w]$?E. б) Для данных п>2 прямых на плоскости {а,-лН-Ь;(/=с,-: »=1 п}, где &l> b[, С{ — целые для всех «', выяснить, существует ли точка, лежащая на всех этих прямых. в) Для данного целого числа р выяснить, является ли оно простым. г*) Для данных целых чисел х, у и г выяснить, существует ли такое целое число п>0, что хп-\-уп=гп. д) Для данных графа G=(V, Е) us, t?V выяснить, существует ли в G путь из s в t. е) Для данных графа G=(V, E) и s, t?V определить, сколько существует цепей из s в t в графе G. ж*) Для данной шахматной позиции выяснить, имеется ли в ней форсиро- форсированный выигрыш за белых. (Вопрос: сколь большими в данном случае могут быть индивидуальные задачи? Имеет ли смысл в этой задаче понятие скорости роста сложности алгоритма?) з) Для данной позиции в п-мерной игре в крестики а нолики па доске разме- размером ЗхЗх...ХЗ п раз выяснить, имеется ли форсированный выигрыш за X. и*) Граф можно использовать для представления карты системы туннелей, в которых прячется беглец. Для данного графа G и целого числа &>0 выяснить, достаточно ли k человек для ареста беглеца, даже если считать его бесконечно хитрым и везучим. к) Решить проблему соответствия Поста (задача 2(в)) только с условием, что во фразе не, допускается повторения слов. (Предупреждение: возможно, что ваши алгоритмы для некоторых из этих задач будут очень неэффективными.) 5. Процедура, которая обращается к самой себе, называется рекурсивной. Часто используется следующий вариант рекурсии. Скажем, мы хотим решить индивидуальную задачу размера п. Если п мало, то индивидуальную задачу ре- решить легко. В противном случае нам может быть известно, как решить индивиду- индивидуальную задачу, имея решения одной или более меньших индивидуальных задач. При этом мы получаем решения этих меньших задач, вызывая ту же процедуру. Пусть, например, нам дано п и требуется вычислить п\. Если гс=0, то, естествен- естественно, п!=1. В противном случае предположим, что мы уже вычислили (п— 1)! — решение меньшей задачи. Тогда можно получить п\, умножая («—!)! на п. Отсюда вытекает следующий рекурсивный алгоритм: procedure факториал(п) if n = 0 then return I else return п-факториал(п — 1) а) Проследите шаг за шагом за вычислением факториал(З). б) Приведите рекурсивную программу для решения задачи о Ханойской башне (задача 1 (б) из гл. 1). в) Можно использовать рекурсию для сортировки массива, содержащего 2" различных целых чисел (т. i. для перестановки их в неубывающем порядке). Идея состоит в следующем. Довольно легко слить два отсортированных массива в единый отсортированный массив. Поэтому если первая и вторая половины мас- массива отсортированы, то легко отсортировать сам массив. Для сортировки этих Двух половин можно использовать рекурсию. У № 3032
194 Гл. 8. Алгоритмы и сложность г*) Основываясь на алтрнтме из п. в), покажите, что массив из Л' элементов можно отсортировать за время O(N log /V). 6. Докажите, что а) (log n)k=O(ne) для всех целых k и всех е>0; б) 2«+1Х2"; вJЖ2; г) (log пI°й п=9.(пк) для всех целых k. 7. Пусть функции fug определяются следующим образом г . J л'2, если п простое, \ п3 в противном случае, . ч I пг, если п нечетно, р (п) = < , [ пЛ в противном случае. Какие из следующих соотношений справедливы? а) f(n),g(n)=Q(n*). б) f(n)=O(g(n)). в) g(n)=O(f(n)). 8. Допустим, что в симплекс-алгоритме, приведенном на рис. 2.3, всегда выбирается столбец /, для которого Су<0 является наименьшим. Покажите, что, используя это правило, симплекс-алгоритм применив одну операцию замеще- замещения, решил бы задачу ЛП (8.2). 9. Допустим, что в симплекс-алгоритме, приведенном на рис. 2.3, всегда выбирается тот столбец /, который после применения операции замещения при- приводит к наибольшему уменьшению стоимости. Покажи it, что, используя это пра- правило, симплекс-алгоритм, применив одну операцию замещения, решил бы за- задачу ЛП (8.2). 10*. Допустим, что в симплекс-алгоритме, приведенном на рис 2.3, столбец /' выбирается случайным образом и с равной вероятностью среди всех столбцов, для которых с/<6. Покажите, что при использовании этого правила математическое ожидание числа операций замещения, применяемых симплекс-алгоритмом при решении задачи ЛП (8.2,, ость О(п). 11. Докажите лемму 8.8. 12. Докажите лемму 8.10. 13*. Итерация алгоритма эллипсоидов вычисляет новый эллипсоид Ej + 1, содержащий полуэллипсоид Покажите, что по формулам . 1+лА Bja 2 (Bja)(Bja) д а fiy + 1: =A-Д)_—^ут^ где Д=(аЧ—ЬI\Гa'Bja, можно вычислить новый эллипсоид ?/+i, содержа- содержащий множество -!¦?; [а] = ?УП{*€*": a! (x-t,) <Ь). (В примере на рис. 8.6(а) это множество совпадает с меньшей областью, от- отрезаемой от Е/ пунктирной линией.) Докажите, что эта модифицированная итерация корректна в том смысле, что теорема 8.4 остается для нее спра- справедливой и что она может существенно ускорять сходимость в методе эл- эллипсоидов,
Комментарии и ссылки 195 14. (Метод эллипсоидов в виде произведения.) Напомним следующее ра- равенство из доказательства леммы 8.13: BJ + 1 = QRBRTQT. Это равенство можно переписать в виде где 1) Q/Qj =Bj для всех /; 2) G = diagf n П-\-\ ' уп2 _| ' ¦¦•' |/"„2- 3) R—это вращение, зависящее от Q j и переводящее Qja в (|| Q/«[|, 0,.. .,0). Основываясь на этом равенстве, докажите, что Qj можно представить в виде QoJJfli F{> " приведите явную формулу, выражающую сомножитель Fj через а и Qj. 15. а) Пусть эллипсоид Е = {х: (х— /)' б-1 (х— t) < 1} содержит некото- некоторый шар радиуса г. Покажите, что тогда он содержит шар {х:(х— t)' (х—^)<г2}. б) Рассмотрим ft-мерньш симплекс в R" с вершинами ;>0, ..., vn. Пусть п vc = ^ Vjl(n-\-\) — центр тяжести этого симплекса, и допустим, что все / = 0 V]—рациональные числа, знаменатели которых не превосходят 1L. Покажите, что существует шар с центром vc и радиусом r = 2~'lnL, целиком лежащий внутри симплекса. 2) Выведите из п. а) и б) следующее утверждение: если система СЛН имеет решение и эллипсоид Е заведомо содержит псе решения, лежащие внутри шара ||х||<гс2/-, то любая точка на границе Е отстоит от центра Е не менее чем на 2~3rai. 16. а) Покажите, что если |г,-у] — вращение, то ^j/ = i Aj= '• б) Используя п. а) и задачу 14, покажите, что все элементы г вектора tj и матрицы Bj в алгоритме эллипсоидов удовлетворяют неравенству | г \ < / ' l L Комментарии и ссылки Машины Тьюринга как формализация понятия алгоритма были введены в работе [Tu] Turing A. M. On Computable Numbers, with the Application to an Entschei- dungsproblem, Proc. London Math. Soc, Ser. 2, 42 A936), 230—265. Corrigen- Corrigendum, ibid, 43 A937), 544—546. Другие (эквивалентные) модели алгоритмов предложены в работах [Ро] Post E L. Formal Reductions of the General Combinatorial Decision Problem. Amer. J. Math., 65 A943). [Ma] Марков А. А. Теория алгорифмов.— Тр. Матем. ин-та АН СССР им. В. А. Стеклова, 1954, 42. [ER] Elgot С. С, Robinson A. Random Access Stored Program Machines, J. ACM, 11, No. 4 A964), 365—399. Примечательно, что полиномиальный алгоритм в любой из этих отличных друг от друга моделей можно перевести в полиномиальный алгоритм в любой другой модели. См., например, гл. 1 в книге [AHU] Aho А. V., Hopcroft J. E., Ullman J D. The Design and Analysis of Compu- Computer Algorithms. Readings, Mass.: Addison-Wesley Publishing Co., Inc., 1974. 7*
196 Гл. 8. Алгоритмы и сложность [Имеется перевод: Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов.— М.: Мир, 1979.] Дихотомию между полиномиальными и экспоненциальными алгоритмами можно проследить, что довольно интересно, до Джона фон Неймана, отца современной вычислительной машины. [vN] von Neumann J. A Certain Zero-Sum Two-Person Game Equivalent to the Optimal Assignment Problem, in Contributions to the Theory of Games II, ed. H. W. Kuhn and A. W. Tucker. Princeton, N. J.: Princeton Univ Press, 1953. Более явно о полиномиальных вычислениях впервые сказано в работах [Со] Cobham A. The Intrinsic Computational Difficulty of Functions, pp. 24—30 in Proc. 1964 Int. Congress for Logic Methodology and Phil, of Science, ed. Y. Bar-Hil!el. Amsterdam: North Holland, 1964. [Ed] Edmonds J. Paths, Trees, and Flowers, Canad. J. Math., 17 A965), 449—467. Результаты § 8.6 взяты из работы [KM] K!ee V., Minty G. J. How Good is the Simplex Algorithm? pp. 159—175 in Inequalities III., ed. O. Shisha. New York: Academic Press, Inc., 1972. Патологические примеры с экспоненциальным числом замещений существуют для вариантов симплекс-алгоритма, в которых выбирается самый отрицательный столбец (задача 8), столбец, дающий наибольший выигрыш стоимости (задача 9), и для других вариантов: [Je] Jeroslow R. J. The simplex algorithm with the pivot rule of maximizing cri- criterion improvement, Discrete Math., 4 A973), 367—378, а также для прямо-двойственного алгоритма и его вариантов: [ZalJ Zadeh N. A bad network problem for the simplex method and other minimum cost flow algorithms, Math. Prog. 5 A973), 255—266. [Za2] Zadeh N. More pathological examples for network flow problems, Math. Prog., 5 A973), 217—224. Истоки алгоритма эллипсоидов восходят к более общему методу Шора: [HIolJ Шор Н. 3. Использование операции растяжения пространства в задачах минимизации выпуклых функций.— Кибернетика, 1970, № 1, с. 6—12. Алгоритм эллипсоидов для выпуклых — не обязательно линейных — ограниче- ограничений был описан в работах [Шо2] Шор Н. 3. Метод отсечения с растяжением пространства для решения задач выпуклого программирования.— Кибернетика, 1977, № 1, с. 94—95. [ЮН] Юдин Д. Б., Немировский А. С. Информационная сложность и эффективные методы решения выпуклых экстремальных задач.— Экономика и матема- математические методы, 1976, т. 12, вып. 2, с. 357—369. Важные следствия этих результатов для линейного программирования были впервые указаны в работе [Ха] Хачиян Л. Г. Полиномиальный алгоритм в линейном программировании.— ДАН СССР, 1979, т. 244, № 5, с. 1093—1096. Наше изложение алгоритма эллипсоидов следует работе [AS] Aspvall В., Stone R. E. Khachiyan's linear programming algorithm, Journal of Algorithms, 1, No. 1 A980). Несмотря на большое теоретическое значение алгоритма эллипсоидов, совсем не ясно, может ли он быть полезен на практике. Наиболее очевидным среди боль-
Комментарии и ссылки 197 шого числа препятствий является требование большой точности вычислений. С другой стороны, нет убедительных ;виде1ельств в пользу того, что алгоритм эллипсоидов (и все его возможные усовершенствования) заведомо не может ис- использоваться на практике Некоторые из этих аспектов обсуждаются в работах [DaJ Dantzig G. В. Comments on КпасЫаь'ь algorithm tot linear programming, Technical Report SOL 79—22, Dept. of Operations Research, Stanford Univ., 1979. [GT] Goldfarb D., Todd M. J. Modifications and implementation of the Schor — Khachian algorithm for linear programming, Dept. of Computer Science, Cor- Cornell Univ., 1980 Некоторые следствия алгоритма эллипсоидов для вопросов сложности в комбина- комбинаторной оптимизации исследуются в работах [КР] Kaip R. М., Papadimitriou С. [1. On linear characterizations of combinato- combinatorial optimization problems, Proc. 21st Annual Symposium on Foundations of Computer Science, IEEE A980), 1—9. [GLS] Grotschel M., Lovasz L., Schrijver A The ellipsoid method and its consequ- consequences In combinatorial optimization, Report 80—151—OR, Univ of Bonn, 1980. В следующей главе мы построим полиномиальный алгоритм для частного случая задачи ЛП, а именно задачи о максимальном потоке из гл. 6. Однако в отличие от алгоритма эллипсоидов число операций в этом алюритме ограничено полиномом от числа целых чисел во входе (а не *л их суммарной длины). Назовем такой алго- алгоритм сильно полиномиальным, если он к гому же полиномиален в обычном смысле (т. д. если числа, участвующие в арифметических операциях, не экспоненциаль- экспоненциальны). Важный открытый вопрос, связанный с алгоритмом эллипсоидов: имеется ли сильно полиномиальный алгоритм для задачи ЛП? Примером такого алго- алгоритма мог бы служить симплекс-алгоритм с правилом замещения, гарантирующим завершение алгоритма после полиномиального (относительно тип) числа за- замещений Результаты из <; 8.6 и работ IJ e|, |Za!| и |Za2] не исключают возмож- возможности существования 1акого правила замещения Как недавно отметил Заде, для следующего привлекательного правила замещения не известно экспоненци- экспоненциального конфпрммера «Среди всех столбцов, для которых с_,<0, выбрать тот, который до этого момента меньше всего раз входил в базис». Сильно полиномиаль- полиномиального алгоритма не известно даже для непосредственного обобщения задачи о максимальном потоке — задачи о потоке минимальной стоимости из гл. 7 (см. «Комментарии и ссылки» к гл. 7). В гл 16 будут обсуждаться псевдополиномиаль- псевдополиномиальные алгоритмы — понятие, прямо противоположное сильно полиномиальным алгоритмам. Доказательство неразрешимости проблем, определенных в задаче 2, можно найти в гл. 6 книги [LPJ Lewis H. R., Papadmiitnou С. Н. Elements of the theory of computation. Englewood Cliffs, N J : Prentice-Hall Publisjing Co., Inc., 1981. To, что процедура обращения матрицы, известная как метод исключения Гаусса, в применении к целочисленным матрицам является полиномиальным алгоритмом (см доказательство георемы 8.2), следует из того факта, что все промежуточные результаты в ней — рациональные числа, числители и знаменатели которых рав- равны подонределителям исходной матрицы; см. [Га] Гантмахер Ф. Р. Теория матриц.—3-е изд.— М.: Мир, 1967, гл. 2. Доказательство того, что имеется п"~2 остовных деревьев с п вершинами (при- (пример 2), см. в гл 2 книги L) [Ev] Even S. Graph algorithms. Potomac, Maryland: Computer Science Press, 1979. L) См. также: Ope О. Теория графов. Пер. с англ.—2-е изд.— М.: Наука, 1980, с. 79.— Прим. перев.
9 Эффективные алгоритмы для задачи о максимальном потоке В предыдущей главе был введен формальный метод описания эф- эффективности алгоритмов, позволяющий оценивать поведение любого алгоритма с единых математических позиций. Заметим, что, соглас- согласно жестким критериям этого подхода, симплекс-алгоритм для ли- линейного программирования не является «хорошим», хотя это очень умный и практически полезный алгоритм. В этой главе мы рассмот- рассмотрим с той же точки зрения важный частный случаи задачи линейного программирования, а именно задачу о максимальном потоке, об- обсуждавшуюся в гл. 6. Будет показано, что алгоритм пометок, раз- разработанный выше для этой задачи, может аналогично симплекс- алгоритму потребовать в худшем случае экспоненциального коли- количества времени К счастью, для задачи о максимальном потоке име- имеется эффективный алгоритм, являющийся довольно простой модифи- модификацией алгоритма пометок. Этот алгоритм не только peuraei задачу о максимальном потоке, но и может быть адаптирован для эффек- эффективного решения некоторых других интересных комбинаторных задач оптимизации. Рассмотрим вначале фундаментальный алгоритм для работы с графами, называемый ПОИСК. Различные варианты этого алго- алгоритма составляют основу многих алгоритмов на графах, описанных в этой и последующих главах, а также элементарного алгоритма пометок из гл. 6. 9.1 Поиск по графу Граф G=(V, E) представляется списками смежностей A (v), v^V (см. пример 8.5). Как всегда, мы считаем, что \E\^\V\/2, предпо- предполагая, например, что в G нет изолированных вершин. Рассмотрим алгоритм ПОИСК, приведенный на рис. 9.1. Он основан на следующей идее. Начинаем с вершины yt и «помечаем» ее. Далее, проделываем то же самое для вершин, смежных с vu затем для вершин, смежных с этими вершинами, и т. д. В множестве Q храним список всех вершин, которые можно пометить — т. е. тех вершин, которые смежны с уже помеченными вершинами и сами
9.1. Поиск по графу 199 еще не помечены. Процесс останавливается, когда Q становится пустым. Теорема 9.1. Алгоритм ПОИСК, приведенный на рис. 9.1, поме- помечает все вершины графа G, соединимые путем с vlt за время 0(\Ё\). Доказательство. Предположим, что вершина v соединима путем с v1. Индукцией по длине этого пути можно показать, что v будет АЛГОРИТМ ПОИСК Вход. Граф G, представленный списками смежностей; вершина vj. Выход. Тот же граф, но в котором вершины, достижимые из vx по некото- некоторому пути, «помечены». begin while Q ;z= 0 do begin пусть v — произвольный элемент из Q; удалить v из Q; I : пометить v; : for all v'gA(v) do if v' не помечена then добавить v' к Q; end end Рис. 9.1. Алгоритм ПОИСК. помечена. Пусть, с другой стороны, не существует пути из v1 в v. Тогда также простой индукцией по числу выполнений цикла while в алгоритме ПОИСК можно показать, что v не будет помечено. Для доказательства временной оценки заметим, что сложность алгоритма ПОИСК складывается из трех частей. 1. Начальный шаг; он использует постоянное время. 2. Работа с множеством Q; добавление и удаление элементов множества Q производится не более 2|V| раз. Каждое добавление или удаление можно выполнить с помощью двух или трех элемен- элементарных операций (рис. 9.2 и 9.4); отсюда следует оценка О(|У|). 3. Поиск по спискам смежностей; при этом для любого элемента любого списка смежностей производится постоянная работа. Так как сумма длин списков смежностей равна 2\Е\, то в целом требуется время О(\Е\). Суммарно получаем оценку О(\Е\). ? Пример 9.1. Алгоритм ПОИСК можно использовать для про- проверки связности графа: граф G связен в том и только в том случае, если после применения к нему алгоритма ПОИСК все вершины бу- будут помечены. Так же непосредственно ПОИСК можно использовать
200 Гл. 9. Задача о максимальном потоке для нахождения связных компонент (максимальных связных под- подграфов) графа G (см. задачу 1). ? Алгоритм ПОИСК, представленный на рис. 9.1, не полностью определен. Необходимо точно определить, как выбирается элемент v Добавить у к Q последний'.'* УАалитЪ v из Q ясреыИ" первый +1 0) «2 последний — 1 Содержимое Q в порядке поступлении (в) Рис. 9.2. Программы, реализующие Q в виде очереди. Переменным последний и первый вна- вначале присваивается значение нуль; Q — массив с |V| элементами. Q пусто тогда и только тогда, когда первый = последний. из Q в цикле while. Для этого можно применять несколько правил; например, можно всегда выбирать элемент множества Q, имеющий наименьший индекс. Однако одна из возможных стоатегий особенно пш р7 ПГ (в скобках) Рис. 9.3. проста: представим себе, что Q — это реальная линия ожидания (очередь!) и что всегда удаляется вершина, которая ожидала доль- дольше всех. Это правило можно легко реализовать с помощью двух
9.1. Поиск по графу 201 простых программ (рис. 9.2). Такой вариант алгоритма ПОИСК называется поиск в ширину (ПШ). Пример 9.2. Применим ПШ к графу, представленному на рис. 9.3. Будем считать, что вершины в списке смежностеи просматриваются в порядке возрастания индексов (это условие будет предполагаться обычно и в дальнейшем). Порядок, в котором помечаются вершины данного графа при использовании ПШ, приведен на рис. 9.3 (числа Добавить v к Q nociedunu'. — последний \ 1 Q ^последний j ;= v последний -4 Удалить V ИЗ Q V.= Q ^последний ] последний \ — последний —1 (б) v (i г14 Содержимое Q в порядке поступления (в) Рис. 9.4. Программы, реализующие Q в виде очереди, организованной по принципу: послед- последним пришел — первым ушел (в виде стека). Вначале последний ~ 0. Q — массив с \V\ эле- элементами. Q пусто тогда и только тогда, когда последний = 0. вне скобок). Заметим, что при поиске этого типа вершины посеща- посещаются в порядке возрастания длины кратчайшего пути до них из Vi — отсюда и происходит название поиск в ширину (доказатель- (доказательство см. в задаче 3). П Другим вариантом поиска является поиск в глубину (ПГ), при котором работа с множеством Q производится по принципу послед- последним пришел — первым ушел (рис. 9.4). Этот алгоритм производит проверку вглубь, продолжая некоторый путь как можно дальше и возвращаясь назад для выбора нового варианта только тогда, когда никакой новой вершины нельзя достичь из последней верши- вершины рассматриваемого пути. Пример 9.2 (продолжение). На рис. 9.3 в скобках приведен по- порядок посещения вершин графа при использовании ПГ. Q Алгоритм ПОИСК можно также применять к орграфам. Орграф D=(V, А) тоже можно представлять списками смежностеи: A(v) будет множеством всех таких вершин v' $ V, что (v, v') ? А. Заметим что с этой точки зрения графы — это просто частный случай оргра- орграфов, а именно это симметричные орграфы, в которых и ? A (v) тогда и только тогда, когда v ?A(u). Таким образом, алгоритм ПОИСК
202 Гл. 9. Задача о максимальном потоке (и его частные случаи ПГ и ПШ) можно без каких либо изменений применять к орграфам. Пример 9.3. На рис. 9.5 представлены орграф D = (V, А) и его списки смежностей. Числа при вершинах указывают порядок, в ко- котором вершины помечаются при использовании ПШ. Числа в скоб- скобках соответствуют ПГ. П В силу присущей орграфам асимметрии понятие связности для них является более тонким, чем соответствующее понятие для гра- Л(и,)= {v2, A(v2)= {u7} A(v3)= {v2, Рис. 9.5. фов, и проверка связности в этом случае требует несколько нетри- нетривиального применения алгоритма ПОИСК (см. задачи 4 и 5). Наиболее важным свойством алгоритма ПОИСК, представлен- представленного на рис. 9.1, является то, что это не один алгоритм, а модель для целого класса алгоритмов. Варьируя части программы, заклю- заключенные на рис. 9.1 в рамочку, можно создать множество алгоритмов, которые будут по-разному обрабатывать один и тот же граф, следуя в общих чертах алгоритму ПОИСК- В качестве простого примера предположим, что вместо части пометить v на рис. 9.1 вставляются команды счет:— счет +1, порядок [v]:= счет каждый раз, когда используется оператор пометить, и переменной счет присваивается начальное значение 0 в первом выделенном прямоугольнике. В ре- результате получаем алгоритм, регистрирующий порядок, в котором ПОИСК посещает вершины (вспомните рис. 9.3 и 9.5). Другим при- примером может служить алгоритм пометок Форда — Фалкерсона, об- обсуждавшийся в гл. 6, который, как нетрудно видеть, в действитель- действительности является более хитрым вариантом алгоритма ПОИСК. Близ- Близким примером служит задача нахождения путей в орграфах, кото- которую мы сейчас рассмотрим подробно.
9.1. Поиск по графу 203 Пусть дан орграф D — (V, А) и два множества вершин S, T<=V, соответственно источники и цели. Нужно найти путь в D, идущий из любой вершины множества S в любую вершину множества Т. Не удивительно, что эту задачу можно решить, используя легкую АЛГОРИТМ НАЙТИПУТЬ Вход. Орграф D = (V, А); два подмножества S, Т из V. Выход. Путь в D из некоторой вершины подмножества S в некоторую вер- вершину подмножества Т, если такой путь существует. begin for all vgS do пометка[\] := 0, if vgT then return (v); Q: = S; while Q Ф 0 do begin пусть v — любой элемент из Q; удалить v из Q; for all v' ? A(v) do if v' не помечена then begin пометка[ч'\: = v; if v'gT then return ПУТЬ(у') else добавить v' к Q end end relurn «в D нет пути из S в Т» end procedure ПУТЬ(у) (comment: она выдает последовательность вершин от s?S до V) if пометка[ч] — 0 then return (v) else return ПУ7Ь(пометка [v])||(v). (comment: ПУТЬ — рекурсивная процедура; см. задачу 5 из гл. 8; J обозначает конкатенацию путей, т. е. запись их подряд), Рио. 9.6. Алгоритм НАЙТИПУТЬ. модификацию алгоритма ПОИСК. Единственные отличия состоят в том, что теперь в качестве начального значения Q берется не {vi}, a S и для каждой рассматриваемой вершины v' мы не просто поме- помечаем ее, а делаем несколько больше. В частности, мы полагаем: пометка \v'\ (где пометка — это массив с |V| элементами) равна предшественнику v вершины v', из-за которой v' рассматривается. Эти пометки должны помочь при явном нахождении пути из S в Т. По определению вершины в S имеют пометки 0. Полный алго- алгоритм приведен на рис. 9.6. Пример 9.4. Предположим, что мы хотим найти путь из S в Т в орграфе D, представленном на рис. 9.7(а). Пометки вершин орграфа D в конце алгоритма показаны на рис 9.7F). Мы приме- применяем ПОИСК в варианте ПШ; при этом находим кратчайший путь из S в Т, т. е. путь с наименьшим числом дуг. В результате находим,
204 Гл. 9. Задача о максимальном потоке что v9 g Т. После этого вызываем процедуру ПУТЬ с аргументом ПУТЬ (ц.) вычисляется последовательно и дает оо* (а) (б) Рис. 9.7, ПУТЬ(о9) = ПУТЬ(у8)||(у9) = ПУТЬ (о, || (ов, о,) = )||(^, vs, »,) = ПУТЬ(о,)[|(ов, v,, v,, »,)=(»„ и6> о„ и8> о,), и последний путь действительно является кратчайшим путем из S в Т. ? Такое нахождение путей в орграфах имеет удивительно много приложений при решении некоторых намного более сложных ком- комбинаторных задач оптимизации. В этой и трех последующих главах
9.2. Что нехорошо в алгоритме пометок? 205 мы разработаем эффективные алгоритмы для ряда комбинаторных задач, которые в большой степени основаны на использовании по- последовательных итераций типа увеличений, не сильно отличающихся от тех, что использовались при решении задачи о максимальном по- потоке в гл. 6. Во всех этих задачах мы заметим, что наш алгоритм сводится к нахождению путей, ведущих из множества источниковых вершин в множество целей в некотором вспомогательном орграфе. Такой поиск и будет общей чертой, объединяющей эти различные алгоритмы. 1000 9.2 Что нехорошо в алгоритме пометок! При анализе сложности алгоритма пометок для задачи о макси- максимальном потоке на сети N=(s, t, V, A, b) (см. пример 8.7) было от- отмечено, что каждый этап фебует времени О(|Л|); следовательно, весь алгоритм имеет сложноеil 0E|Л|), где 5 — число производи- производимых увеличений потока. Число 5 должно быть не больше |/| — вели- величины максимального потока в сети (в предположении, что пропуск- пропускные способности целочисленны). Может ли 5 равняться |/|? Ответ — да, если многократно производится неудачный выбор увеличивающих путей. Пример 9.5. Рассмотрим сеть, представленную на рис. 9.8. Очевидно, что максимальная ве- величина потока в этой сечи равна 2000. Применим к этой сети алго- алгоритм пометок, начиная с нулевого потока. На первой итерации в ка- качестве увеличивающего пути мож- можно взять путь (s, v, и, I), что приводит к потоку величины I. На второй итерации можно увеличить поток вдоль пути (s, v, и, t)\ так как (и, и) в данный момент — обратная дуга, то этот путь также допустим согласно алгоритму пометок. Величина нового потока равна 2. Легко видеть, что в качестве увеличивающих путей можно поочередно выбирать (s, и, и, () и (s, и, и, (), при этом величина по тока будет увеличиваться на единицу на каждой итерации. Таким образом, нам придется выполнить 2000 итераций прежде, чем мы придем к оптимальному потоку. Если пропускные способности со- соответствующих четырех дуг положить равными не 1000, а произ- произвольному целому числу М, то число итераций будет расти как 2УИ. То есть алгоритм пометок в худшем случае требует экспоненциаль- экспоненциального числа шагов (вспомните обсуждение в § 8.5). К счастью, можно избежать этой экспоненциальной сложности,
206 Гл. 9. Задача о максимальном потоке несколько аккуратнее выбирая увеличивающий путь. Увеличива- Увеличивающие пути,которые мы выбирали в примере 9.5, неудачны гем,что они длиннее, чем нужно То есть если бы мы выбрали увеличиваю- увеличивающий путь (s, v, t) вместо пути (s, и, v, t), который на одну дугу длин- длиннее, то мы получили бы большой выигрыш в величине потока и су- существенно уменьшили общее число требуемых итераций. Попробуем Рис. 9.9. использовать это наблюдение как предложение для улучшения ал- алгоритма пометок, а именно будем на каждой итерации искать самый короткий увеличивающий путь относительно имеющегося потока. При этом сложность итерации не возрастае!, поскольку выбор нуж- нужного пути можно осуществить, как будет показано в § 9.3, просто производя процесс расстановки пометок по принципу «в ширину». Нельзя утверждать, что увеличение потока вдоль кратчайших путей всегда больше, чем увеличение вдоль более длинных путей; например, если поменять местами пропускные способности дуг (s, v) и {и, v) на рис. 9.8, то увеличение вдоль пути (s, и, v, t) будет давать больший выигрыш, чем увеличение вдоль пути (s, v, t). Однако, систематически выбирая кратчайший из возможных увеличиваю- увеличивающих путей, мы избегаем патологий, подобных гой, что указана в примере 9.5, а именно многократного выбора малых увеличений. В действительности если всегда выбирать кратчайший из возможных увеличивающих путей относительно данного потока, то можно до- доказать, что будет не более \V\ • \А\ этапов. Грубо говоря, это следует из того факта, что при использовании такого правила каждая дуга (v, и) не более \V\ раз может использоваться как перешеек в увели- увеличивающем пути (см. задачу 9). Мы не будем здесь детально рассмат- рассматривать эти соображения, поскольку в § 9.4 будет получен более сильный результат. Следующий пример демонстрирует другой аспект «расточитель- «расточительности» исходного варианта алгоритма пометок. Пример 9.6. Применим алгоритм пометок к сети, представленной На рис. 9.9. При выполнении первого этапа можно обнаружить уве- увеличивающий путь (s, v, г, 0 и увеличить поток. Пометки в конце первого этапа показаны на рис. 9.9. Причем это кратчайший увели-
9.3. Расстановка пометок на сети и поиск по орграфу 207 чивающий путь, л. е. мы даже включили в алгоритм наше преды- предыдущее предложение. В этом месте алгоритм пометок потребовал бы стереть все помет- пометки и начать следующий этап. На следующем этапе мы обнаружили бы увеличивающий путь (s, и, w, /). Интересно, однако, то, что в про- процессе обнаружения этого пути \:ы использовали бы почти исключи- исключительно пометки, доступные нам на предыдущем этапе. Иными сло- словами, этот путь можно было найти, используя информацию, до- доступную в течение предыдущего этапа. Следовательно, стирание по- пометок — это потеря потенциально полезной информации, и поэтому желательно не переходить к следующей итерации, пока не будет уверенности в том, что имеющиеся пометки не могут дать никакого выигрыша. ? В § 9 4 мы опишем улучшенный алгоритм пометок, в котором объ- объединим эти две идеи, а именно увеличение вдоль кратчайших путей и более чем одно увеличение па каждой итерации, для построения эффективного алгоритма для задачи о максимальном потоке. 9.3 Расстановка пометок на сети и поиск по орграфу Чтобы реализовать обсуждавшиеся в предыдущем параграфе улучшения алгоритма пометок без существенного увеличения слож- сложности каждого этана, посмотрим сначала на процесс расстановки пометок с несколько иной точки зрения. Предположим, что мы хотим применить подпрограмму расста- расстановки пометок в сети N=(s, t, V, A, b) с нулевым начальным пото- потоком. В этом случае нам не нужно исследовать пропускные способ- способности и поток; априори ясно, что все дуги в А являются прямыми и что нет обратных дуг. Следовательно, наша задача расстановки пометок на сети для нахождения увеличивающего пути в очень сильной степени совпадает с применением алгоритма НАЙТИПУТЬ, представленного на рис. 9.6, к орграфу (V, А) с 5= {s} и Т— {(}. После того как увеличивающий путь найден, мы увеличиваем поток вдоль него и продолжаем процесс. А что будет на последующих этапах? Можно ли их также рас- рассматривать как поиск по орграфу? Дополнительными элементами, которые присутствуют, когда поток не нулевой, являются обратные дуги, исчезновение (т. е. насыщение) определенных прямых дуг и некоторые изменения пропускных способностей. Оказывается, что расстановка пометок в сети N относительно потока / эквивалентна применению алгоритма НАЙТИПУТЬ к сети N (f), определяемой следующим образом J) ') Вспомните сеть увеличения из гл. 7.
208 Гл. 9. Задача о максимальном потоке Определение 9.1. Пусть даны сеть N=(s, t, V, A, b) и допусти- допустимый поток f в N. Определим сеть JV(/) = (s, t, V, А (/), ас), где А (/) состоит из следующих дуг. а) Если (и, v)?A и f(u, v)<.b{u, v), то (и, v)?A (/) и ас(и, v) = = b(u, v)—f(u, v). б) Если (и, v)?A и f(u, v)>0, то (v, «)?/1 (/) и ac(u, u)=f(u, v). Будем называть ас (и, v) дополнительной пропускной способ- способностью дуги (и, с)?Л(/). ? Если А содержит как дугу (и, и), так и дугу (и, v), то в N (/) могут быть кратные копии этих дуг. Этого можно избежать многими "способами. Например, можно заменить любую такую дугу (и, v) в А двумя дугами (и, w) и (w, v) с той же пропускной способностью, где w — новая вершина. В дальнейшем мы будем предполагать, что в N (f) нет кратных дуг. Покажем теперь, что Л^(/) обладает одним интересным свойст- свойством. Возьмем любой s-^-разрез (W, W) в сети N(f). Величина этого разреза, естественно, равна сумме дополнительных пропускных способностей всех дуг сети N(f), идущих из W в W. Однако такая дуга (и, v) может быть либо прямой дугой (случай а) определения сети N(f)), либо обратной дугой (случай б)). В первом случае ас(и, u) = b(u, v)—f(u, v); во втором случае ас(и, v)=f(v, и). Таким образом, величина разреза (W, W) в N (/) равна величине разреза (W, W) в N минус прямой поток через разрез и плюс обратный по- поток через разрез. Заметим, что два последних члена дают в точности —1/|, где через |/| мы обозначаем У] f(s, и), т. е. величину потока /. {s'u)zA Отсюда если разрез в N имеет величину С, то этот же разрез в N (/) имеет величину С—1/|. Поэтому если величина минимального раз- разреза в N равна \f\, то величина минимального разреза в N(/) равна |/|—1/|. Однако по теореме о максимальном потоке и минимальном разрезе в обеих сетях величина минимального разреза равна ве- величине максимального потока. Таким образом, доказано Предложение 1. Если |/| — величина максимального потока в N, то величина максимального потока в N(f) равна |/|—1/|. Пример 9.7. Рассмотрим сеть N, представленную на рис. 9.10(а), с указанным на ней потоком /. Сеть Л^(/), соответствующая данным N и /, представлена на рис. 9.10F); там же показаны дополнитель- дополнительные пропускные способности дуг сети N(f). Если бы мы применили подпрограмму расстановки пометок к сети N относительно потока/, мы должны были бы продвигать пометки по прямым и обратным дугам начиная из s. Поскольку N (/) содержит в точности все соот- соответствующие прямые и обратные дуги, подпрограмма расстановки пометок относительно / сводится просто к применению алгоритма ПОИСК к N (/) начиная с вершины s. ? Такая точка зрения исключительно полезна при реализации
9.3. Расстановка пометок на сети и поиск по орграфу 209 f=S (б)
210 Гл. 9. Задача о максимальном потоке нашей идеи увеличения потока вдоль кратчайшего возможного пути. Это связано с тем, что кратчайшие увеличивающие пути в N относительно / соответствуют кратчайшим путям (т. е. путям с наи- наименьшим числом дуг) из s в / в сети N (f). Мы знаем, как применять ПОИСК для нахождения кратчайших путей: для этого просто ис- используется принцип поиска в ширину — т. е. вершины, которые нужно просмотреть, обрабатываются, как в обычной очереди Поиск в ширину разбивает вершины сети N (f) на непересекающиеся слои (слой 0, слой 1, . . .) в соответствии с их расстоянием (т. е. числом дуг в кратчайшем пути) ots. Например, на рис. 9.10F) указан номер слоя каждой вершины сети N(f). Вершина t попадае1 в слой 4. Учитывая, что нас интересуют только кратчайшие пути из s в / в сети N (f), можно произвести некоторые дальнейшие упрощения. Прежде всего заметим, что кратчайший путь из s в t не может про- проходить через вершину слоя с большим номером, чем номер слоя, содержащего t. В нашем примере кратчайший путь из s в г4 в сети N (f) имеет длину 5, и, следовательно, никакой кратчайший путь из s в t не может проходить через с.,; поэтому можно отбросить верши- вершину v4 и все дуги, инцидентные ей, без потери какой-либо полезной информации для этого этапа Аналогично, можно отбросить все вершины, отличные от t, лежащие в том же слое, что и t (такие, как Vi и v1 в нашем примере), поскольку они также не могут лежать ни на каком кратчайшем пути из su /, Имеются и другие части сети N(f), которые не нужно рассматривать. Любой кратчайший путь из s в t будет начинаться из вершины слоя 0 (т. е. s), затем пройдет через некоторую вершину слоя I, затем через некоторую вершину слоя 2 и т. д. Другими словами, кратчайший путь может содержать только те дуги, которые идут из слоя / в слой /+1 для некоторого /. Поэтому без потери интересующей нас информации можно отбро- отбросить любую дугу, которая идет из некоторого слоя в слой с мень- меньшим номером (подобно дуге (vs, vg) на рис. 9.10F)), и любую дугу, которая соединяет две вершины одного и того же слоя (подобно дуге (va, vb)). Полученная подсеть AN(f) сети N (f), называемая вспомо- вспомогательной сетью относительно /, приведена на рис. 9.10(в). Вспомогательная сеть AN(f) имеет специальную структуру, наилучшим образом описываемую следующим определением. Определение 9.2. Слоистая сеть L = (s, t, U, A, b)—это сеть, в которой множество вершин U равно объединению непересе- непересекающихся множеств (/„, ..., Ud, таких, что U0 — {s], Vd = \t], и/lE UiUf-iXUf). ? Таким образом, вспомогательная сеть AN(f) является слоистой сетью. Заметим, что сеть AN(f) легко построить. Для этого при вы- выполнении поиска в ширину на сети N (f) достаточно хранить только те дуги, которые ведут в новые вершины, и только те вершины, кото- которые лежат в слоях с номерами, меньшими, чем номер слоя, содержа-
9.4. Алгоритм нахождения максимального потока 211 щего /. Следовательно, построение вспомогательной сети можно осуществить за время 0(\А (/)|) = 0(|Л \). Используя вспомогательную сеть, можно очень легко найти крат- кратчайший увеличивающий путь относительно текущего потока. Более того, отсюда уже всего один шаг до реализации нашей второй идеи улучшения алгоритма поме- пометок, а именно выполнения на одном и том же этапе как можно большего числа уве- увеличений потока. Определение 9.3. Пусть N=(s, t, V, A, b) — слоистая сеть. Увеличивающий путь в N относительно некоторого потока g называется прямым, если он не использует обрат- обратных дуг. Поток g в сети N на- Рис. 9.11. зывается тупиковым (не ма- максимальным), если не существует прямого увеличивающего пути в N относительно g. ? Таким ооразом, все максимальные потоки являются тупиковы- тупиковыми; однако тупиковый поток g может не быть максимальным, что проиллюстрировано на рис. 9.11. Нахождение тупикового потока во вспомогательной сети относительно текущего потока соответст- ' вует нахождению как можно большего числа кратчайших увеличи- увеличивающих путей на данном этапе. Это соображение является основой нашего алгоритма нахождения .максимального потока, описывае- описываемого в следующем параграфе. 9.4 Алгоритм нахождения максимального потока со сложностью 0{|К|) Наш алгоритм нахождения максимального потока — подобно многим другим комбинаторным оптимизационным алгоритмам, описываемым в последующих главах,— работает по этапам. На каждом этапе строится сеть N (f), где /—текущий поток, и по ней находится вспомогательная сеть AN(f). Затем находится тупиковый поток g в AN(/), который добавляется к /, и процесс повторяется. Добавление g к f состоит в прибавлении g(u, v) к f(u, v) для всех - прямых дуг (и, и) из AN(f) и вычитании g(u, v) из f (и, и) для всех .. обратных дуг (и, v) из AN(f). Процесс оканчивается, когда s и / оказываются не связанными в N (f), что означает оптимальность потока /. Основной частью нашего алгоритма является умный способ нахождения тупикового потока g в слоистой сети AN(f). Мы не :," будем увеличивать поток вдоль отдельных путей; на этот раз мы Ш
212 Гл. 9. Задача о максимальном потоке а.
9.4. Алгоритм нахождения максимального потока 213 попытаемся протолкнуть поток через вершины одновременно вдоль многих путей. Проиллюстрируем это примером. Рассмотрим сло- слоистую сеть, представленную на рис. 9.12. Определим сквозную про- пропускную способность (спс) вершины v как максимальное количество потока, которое можно протолкнуть через и: т. е. спс [v] — это сум- сумма пропускных способностей дуг, входящих в v (сю, если v—s), либо сумма пропускных способностей выходящих дуг (оо, если v=t) в зависимости от того, какое из этих чисел меньше. Таким образом, в примере на рис. 9.12 (а) имеем cnc[vi]=3 и cnc[vs]=4. Если по- попытаться протолкнуть четыре единицы потока через ия, то сразу же обнаруживается, что их придется послать в ve. Если попытаться дальше протолкнуть четыре единицы потока, которые пришли в ve, то обнаруживается, что это невозможно, и, следовательно, нам приходится терять время на возвращение назад. Рассмотрим, од- однако, действительные причины этого. Вершина vs, с которой мы начали, имеет достаточно большую сквозную пропускную способ- способность. Поэтому было довольно очевидно, что мы застопоримся в некоторой вершине с меньшей сквозной пропускной способностью — в нашем примере vn. Однако этого никак не могло бы случиться, если бы мы начали с вершины, имеющей наименьшую сквозную пропускную способность. Попытаемся поэтому начать с вершины, имеющей минимальную сквозную пропускную способность, на- например Vi. Распределим три единицы потока между дугами (vu v3) и (v-i, у4), полностью используя их пропускные способности. Поток, пришедший в вершину v3, должен пойти теперь по дуге (v3, иЙ). Мы могли бы далее продолжать проталкивать эту единицу потока вплоть до / по принципу «в глубину», однако мы не будем делать этого. Вместо этого мы подождем, пока соберется весь поток, кото- который должен пройти сквозь и„, и обработаем его затем сразу весь. Это означает, что мы никогда не обрабатываем вершину до тех пор, пока не будут обработаны все вершины предыдущего слоя, т. е. мы движемся от вершины к вершине по принципу «в ширину». Теперь понятно, как обрабатывать вершину. Возьмем вершину у4, следующую за v3. Нужно вытолкнуть из нее две единицы потока. Проделаем это организованно. Просмотрим все ребра по очереди и заполним их до их полной пропускной способности либо до момента, когда все требуемые единицы потока будут вытолкнуты. Так, на- например, в вершине и4 можно вначале рассмотреть дугу (vt, ve) и полностью насытить ее. Допустимо также было бы рассмотреть сначала (vi, v7) и протолкнуть весь поток в две единицы по этому ребру; однако нашей стратегии противоречило бы неоправданное распределение по одной единице на каждую из дуг (vt, vs) и (vit v7). Далее мы проталкиваем все три единицы из и„ в v9 (хорошо, что мы подождали и нам не пришлось обрабатывать ve дважды) и, наконец, проталкиваем три единицы из v, в t. Заметим, что на протяжении этого шага нам не нужно беспокоиться о том, чтобы обрабатываемые Вершины имели соответствующую сквозную пропускную способ-
214 Гл. 9. Задача о максимальном потоке ность. Это следует из того, что на каждом слое общее количество входящего потока, распределенное среди вершин этого слоя, равно cnclvi]. Поскольку вершина Vi имела наименьшую сквозную про- пропускную способность, никакая вершина никогда не будет иметь дело с количеством потока, большим, чем ее сквозная пропускная способность, и, следовательно, не потребуется возврата назад. Для получения правильного потока необходимо привести неко- некоторый поток из s в Ui. Однако это абсолютно симметрично тому, что мы проделали, и поэтому можно пройти по дугам в обратном на- направлении, начиная с вершины иг и обрабатывая вершины слой за слоем тем же способом «в ширину» и входящие дуги так же органи- организованно, как и выше, эффективно протягивая поток. В нашем при- примере это очень легко сделать: достаточно протянуть три единицы потока из s в vx. Окончательный поток g приведен на рис. 9.12 (а). Поток gi не тупиковый, и, следовательно, нам нужно продол- продолжать ту же процедуру. Модифицируем пропускные способности, чтобы отразить тот факт, что уже получен поток gu и придем к слои- слоистой сети, приведенной на рис. 9.12 (б) (дуги с нулевыми пропуск- пропускными способностями опущены). Пытаясь найти вершину с наимень- наименьшей сквозной пропускной способностью, обнаруживаем, что иг и о„ имеют нулевую сквозную пропускную способность Поэтому эти вершины (и все инцидентные им дуги) можно удалить из сети. Окончательно приходим к сети, представленной на рис. 9.12 (в). Теперь наименьшую сквозную пропускную способность, а имен- именно 1, имеет вершина i>9, и мы тем же методом находим поток g2 — этот поток оказывается просто увеличивающим путем. После пере- пересчета пропускных способностей и удаления бесполезных дуг и вер- вершин приходим к сети, представленной на рис. 9.12 (г). Теперь вер- вершина иЛ имеет наименьшую сквозную пропускную способность; соот- соответствующий поток ga — снова путь — показан на рис. 9.12 (г). После пересчета пропускных способностей и удаления бесполезных вершин и дуг обнаруживаем, что вершина s удалена. Как будет показано, это означает, что суммарный полученный поток g=gi~\- -\-g2~\-g3 является тупиковым, и этап оканчивается. Полностью алгоритм приведен на рис. 9.13. Чтобы показать его корректность и получить временную оценку, нам нужны некоторые предваритель- предварительные результаты. Лемма 9.1. Дуга а сети AN(f) удаляется из В на некотором этапе только в том случае, если в AN (f) нет прямого увеличивающего пути относительно потока g, проходящего через а. Доказательство. Если дуга а удаляется на некотором этапе, то либо g(a)=ac(a), либо а= (v, и) и v или и имеет нулевую сквозную пропускную способность. Предположим, что g (a)=ас (а). Это озна- означает, что а может появиться в увеличивающем пути относительно g в сети AN(/) только как обратная дуга. Получаем требуемый ре-
9.4. Алгоритм нахождения максимального потока 2U3 АЛГОРИТМ ПОСТРОЕНИЯ МАКСИМАЛЬНОГО ПОТОКА Вход. Сеть N = (s, t, V, A, b). Выход. Максимальный поток f в N. begin f:= 0, выполнено: =«нет»; (comment: задание начальных значений) while выполнено = «нет» do begin (comment: новый этап) g:=0; построить вспомогательную сеть AN(f) = (s, t, U, В, ас); if t не достижимо из s в AN (f) then выполнено: = «да» else repeat begin while имеется вершина v, для которой cnc[v]=*=0 do if v = s илн v=t then go to увелич else удалить v и все инцидентные ей дуги из AN(f); пусть V —любая вершина из AN(f), для которой cnc[v] принимает на- наименьшее значение (comment: отличное от нуля); ПРОТОЛКНУТЬ (v, спф})\ ПРОТЯНУТЬ (v, спс\у\) end увелич: {:= f+ g end end procedure ПРОТОЛКНУТЬ (у, h) (comment: она увеличивает поток g на h единиц, проталкиваемых из у в t «систематическим» способом) (comment: процедура ПРОТЯНУТЬ совершенно аналогична) begin Q{y} for all u?U — {у} do треб[и]:— 0; треб[у]: = h (comment: треб[и] указывает, сколько единиц потока должно быть вы- вытолкнуто из и) while Q ф 0 do begin пусть v — элемент из Q; удалить v из Q; (comment: Q должно быть очередью) for all v', таких, что (v, v')gB and until mpe6[v]=0 do begin m:= min(ac [v, v'], mpe6[v]); ac[v, v']:= ac[v, v'] — m; if ac[v, v']=0 then удалить (v, v') из В; треб[\]:= mpe6[v]—m; треб[\'\:= треб\\')-\-т; добавить v' к Q; end end end Рис. 9.13. Алгоритм построения максимального потока.
216 Гл. 9. Задача о максимальном потоке зультат. Рассмотрим теперь случай, когда v имеет нулевую сквоз- сквозную пропускную способность (случай, когда и имеет нулевую сквоз- сквозную пропускную способность, идентичен). Тогда v имеет нулевой вход, и, следовательно, нет дуг, входщих в v, которые могли бы использоваться в прямом пути. Поэтому дуга a=(v, и) не может использоваться ни в каком прямом пути. ? Лемма 9.2. В конце каждого этапа g — тупиковый поток в AN(f). Доказательство. Если некоторая дуга бесполезна при рассмот- рассмотрении прямых увеличивающих путей относительно g, она будет оставаться такой на протяжении всего этапа, поскольку единст- единственными изменениями на этапе являются удаление дуг и уменьше- уменьшение пропускных способностей. Следовательно, в конце этапа ни- никакой прямой увеличивающий путь относительно g в AN (f) не мо- может проходить через вершину или дугу, удалявшуюся во время этого этапа. Однако этап кончается только тогда, когда удаля- удаляется s или t. Поэтому в конце этапа нет прямых увеличивающих путей, и, следовательно, g — тупиковый поток. ? Лемма 9.3. Расстояние от s до t в AN(f-\-g) на произвольном этапе строго больше, чем расстояние от s до t в AN (/) на предыду- предыдущем этапе. Доказательство. Легко видеть, что вспомогательная сеть AN(f+g) совпадает со вспомогательной сетью сети AN(f) относи- относительно g. Однако в AN (f) нет прямых увеличивающих путей отно- относительно потока g, так как, согласно лемме 9.2, g — тупиковый поток. Поэтому все увеличивающие пути имеют длину, большую, чем расстояние от s до t в AN (f). Отсюда следует, что расстояние от s до t в AN(f+g) больше, чем расстояние от s до t в AN (/). ? Теорема 9.2. Алгоритм, представленный на рис. 9.13, корректно решает задачу о максимальном потоке для сети N= (s, t, V, A, b), используя O(|VT) арифметических операций. Доказательство. На последнем этапе s и t не связаны, поэтому максимальный поток в N (j) — нулевой. Однако, согласно предло- предложению 1, этот максимальный поток имеет величину |/| — |/|, где |/| — величина максимального потока в N. Отсюда |/| = \f\, и, следовательно, по завершении алгоритма достигается оптимум. Для получения временной оценки отметим вначале, что имеется О(|VI) этапов. Это следует из того, что, согласно лемме 9.3, рас- расстояние от s до t в AN(f) возрастает от этапа к этапу, а так как
9.5. Случай единичных пропускных способностей 217 оно не может превысить |V|, то возможно не более |V| этапов. Во времени, необходимом для выполнения каждого этапа, домини- доминирует общее число Т обработок различных дуг (второй выделенный прямоугольник процедуры ПРОТОЛКНУТЬ на рис. 9.13). Выразим тот факт, что шаг обработки дуги на этапе может быть либо насы- насыщающим (при котором дуга наполняется до ее пропускной способ- способности), либо частичным, представив Т в виде Т=Тs + Тр. Если для некоторой дуги выполняется насыщающий шаг, то она удаля- удаляется из множества дуг; поэтому возможно не более одного такого шага для каждой дуги, и, следовательно, 7^ = 0 (|Л|). Однако мо- может быть много частичных шагов для одной и той же дуги. Но здесь следует заметить, что на каждом этапе бывает не более \V\ выполне- выполнений процедур ПРОТОЛКНУТЬ и ПРОТЯНУТЬ, так как при каждом их выполнении удаляется вершина с наименьшей сквозной пропуск- пропускной способностью, с которой началось выполнение данной проце- процедуры. Кроме того, при каждом выполнении процедур ПРОТОЛК- ПРОТОЛКНУТЬ и ПРОТЯНУТЬ возможно не более |V| частичных шагов (по одному для каждой вершины), что вытекает из систематизирован- систематизированной обработки вершин. Следовательно, на каждом этапе бывает не более \V\2 частичных шагов, и T=TS+TP=O(\A\) + O(|VT) = = О(|V|2)- Поэтому в целом по всем этапам имеется O(|V|3) арифме- арифметических операций, и теорема доказана. ? 9.5 Случай единичных пропускных способностей Очень легко понять, что если пропускные способности дуг сети целочисленны, то все промежуточные потоки, появляющиеся в алго- алгоритме построения максимального потока из предыдущего параграфа (так же, как в любом другом «разумном» алгоритме построения максимального потока), тоже целочисленны. Поэтому если пропуск- пропускные способности дуг сети равны единице, то величины потоков по ду- дугам всегда будут равны 0 или 1 и все вспомогательные сети в нашем алгоритме построения максимального потока также будут иметь единичные дополнительные пропускные способности. Случай еди- единичных пропускных способностей особенно интересен тем, что, как показано в задачах и следующей главе, он имеет много прило- приложений к некоторым важным чисто комбинаторным задачам, таким, ¦ как задача о паросочетании в двудольном графе. Кроме того, можно показать, что наш алгоритм построения максимального потока особенно хорошо работает в случае единичных пропускных способ- способностей. Начнем с анализа сложности каждого этапа нашего алгоритма при' применении его к сетям с единичными пропускными способ- способностями дуг.
2J8 Гл. 9. Задача о максимальном потоке Лемма 9.4. Каждый этап алгоритма, приведенного на рис. 9.13, примененного к сети N=(s, t, V, А) с единичными пропускными способностями дуг, можно выполнить за время 0(\А\). Доказательство. Достаточно заметить, что в том случае, когда все дополнительные пропускные способности равны 1, каждая об- обрабатываемая дуга сразу же становится насыщенной. ? Таким, образом, учитывая тот факт, что пропускные способ- способности равны 1, можно улучшить верхнюю оценку сложности каж- каждого этапа алгоритма построения максимального потока, по край- крайней мере для разреженных сетей. Оказывается, что другой сомно- сомножитель в сложности алгоритма — число требуемых этапов — также может быть улучшен. Для этого нам потребуется Лемма 9.5. В сети N с единичными пропускными способностями дуг расстояние I между s и t не может быть больше чем 2|V|/j/ |/|, где \J\ — величина максимального потока. Доказательство. Пусть V, обозначает подмножество вершин из V, расстояние до которых от s равно i. Заметим, что мно- множество дуг, идущих из Vi в Vi+1, где i < /, является s-^-разре- зом в N, поэтому его величина, т. е. общее число дуг, должна быть не меньше |/|. Но максимально возможное число дуг, иду- идущих из V; в Vi+U равно |V,-|-|1//+1|. Отсюда | V,-1-| Vi+11 > |/|, ?= 1, • •., /—1, и, следовательно, по крайней мере одно из чисел V/1, | Vi+i | не меньше, чем "|/|/|. Поэтому по крайней мере каж- каждый второй уровень среди Vt, ...,Vl должен содержать не менее У~\1\ вершин; отсюда 1/2 ¦ -]/~\f\< IУI и /< 2 | V |/|/|/ |. ? Теорема 9.3. Для сетей с- единичными пропускными способ- способностями дуг время работы алгоритма, приведенного на рис. 9.13, не превосходит О (\У\2/3-\А\). Доказательство. По лемме 9.4 достаточно показать, что число 5 требуемых этапов не превосходит О (| V |2/3)- Заметим сначала, что 5^|/|, поскольку на каждом этапе значение потока уве- увеличивается по крайней мере на 1. Поэтому если |/|^|V|2/3, то требуемый результат сразу же получается. Если же |/|>|1^|2/3, то рассмотрим этап, после которого величина потока первый раз превышает |f| — |V|2/3; пусть g—поток в начале этого этапа. Величина дополнительного потока не превосходит |V|2/3, и, сле- следовательно, далее будет не более |V|2/3 этапов. Так как расстоя- расстояние / от s до t в N (/) монотонно возрастает от этапа к этапу,
9.5. Случай единичных пропускных способностей 219 то число этапов до рассматриваемого момента не может быть больше, чем величина / в N (g). Однако лемма 9.5 в применении / !—~ к N (g) дает l^2\V\jy |/|— \g\, так как значение максималь- максимального потока в N (g) равно |/| — | g |. Поскольку g было выбрано так, что |/| — | g\ ^г | V |2/а, то число этапов до рассматриваемого момента не превышает 2|V|2/;i. Поэтому общее число этапов 5 не превосходит 3 | V J2/' —j— 1, и теорема доказана. П В тех случаях, когда сети с единичными пропускными способ- способностями дуг имеют некоторую более специальную структуру, можно Рис. 9.14. показать, что наш алгоритм работает еще лучше. В частном случае, который мы будем сейчас рассматривать, требуется не только, чтобы сеть имела единичные пропускные способности дуг, но также, чтобы у каждой вершины либо степень захода была равна 1 или О, либо степень исхода была равна 1 или 0. Такие сети мы будем назы- вать простыми. Например, сеть, представленная на рис. 9.14, явля- является простой. Лемма 9.6. В простой сети N расстояние между s и t не может превышать | V |/| / |, где \ f \—величина максимального потока. V" Доказательство. Пусть Vlt V2, .. ., Vt обозначают, как в до- доказательстве леммы 9.5, множества вершин, находящихся соот- соответственно на расстоянии 1, 2, . . ., / от s. Докажем, что | V t \ ^ |/ |_ Весь максимальный поток |/| должен проходить через Vt. Но, поскольку сеть простая, через каждую вершину множества Vt может проходить только одна единица этого потока, так как либо ее степень захода, либо ее степень исхода равна 1. Следо- вательно,| Vt и \V\> l Отсюда D
220 Гл. 9. Задача о максимальном потоке Теорема 9.4. Для простых сетей время работы алгоритма, пред- представленного на рис. 9.13, не превосходит O(|V|1/2 |Л|) Доказательство. Так же как в теореме 9.3, достаточно пока- показать, что 5' = О (| V|1/2). Опять если |/|^|V|1/2, то утверждение теоремы получается непосредственно. В противном случае рас- рассмотрим этап, после которого величина потока первый раз пре- превышает |/| — |У|1/2; пусть g—величина потока в начале этого этапа. Величина оптимального потока в N (g) не меньше, чем |V|1/2, и, следовательно, по лемме 9.6 /^|V"|1/2 (заметим, что если N — простая сеть и /—поток с компонентами 0 и 1,то N (/) также простая сеть; см. задачу 10). Поэтому до этого момента было не более |V|X/2 этапов и остается не более |1/|1/2 этапов. Следовательно, 5 = 0 (| V|1/2), и теорема доказана. ? Задачи 1. Опишите алгоритм, использующий некоторый вариант алгоритма ПОИСК для нахождения связных компонент графа G. По завершении алгоритма вершины первой связной компоненты графа G должны быть помечены символом «1», второй компоненты — символом «2» и т. д. 2. Напишите вариант алгоритма ПОИСК, выясняющий, является ли граф G=(V, Е) лесом. Время работы вашего алгоритма должно быть O(|V|). 3. Пусть G=(V, Е) — некоторый граф и Oj, и, ut'^V. Пусть ПШ (и) и ПШ(а>) обозначают порядковые номера, которые получают вершины ниш при поиске в ширину из вершины v1. и пусть d(и), d(w) — длины кратчайших путей из t'j соответственно в и и w. Покажите, что из условия ПШ(«)<ПШ(ш) вытекает d(u)<d(w). 4. Орграф D=(V, А) называется сильно связным, если для любых v, u? V су- существует путь из v в и и путь из а в о. Опишите алгоритм, который по данному орграфу D=(V, Л) определяет за время О(|<4|), является ли D сильно связным. 5*. Приведите алгоритм со сложностью О\А\, находящий сильно связные компоненты орграфа D=(V, A). 6. Приведите алгоритм со сложностью О(\Е\), определяющий, является ли граф G=(V, E) двудольным. 7. Граф G=(V, E) называется двусвязным, если для любых двух ребер fij, e2g? существует цикл в графеО, содержащий как ej, так и е2. Приведите алгоритм со сложностью О(\Е\), определяющий, является ли данный граф G=(V, E) дву- двусвязным. 8. Запишите поиск в глубину как рекурсивный алгоритм (вспомните задачу 5 из гл. 8) без использования массива Q. 9. Пусть /V=(s, t, V, А, Ь) — некоторая сеть. Перед /-м этапом алгоритма Форда — Фалкерсона имеется некоторый поток, обозначаемый //_j. На /-м этапе находится увеличивающий путь pj B/V^y.!), и ноток увеличивается вдоль этого пути на 6/, где бу — минимум дополнительных пропускных способностей по дугам пути pj. Назовем дугу пути ру, имеющую дополнительную пропускную способ- способность б/, j-перешейком. а) Покажите, что если дуга (и, v) является /-перешейком и /'-перешейком для некоторых /'>/, то дуга (v, и) должна появиться в пути р,- для некоторого /< <«</'. Пусть теперь pj— кратчайший путь из s в t в сети N(jj_() на этапе /. б) Покажите, что расстояние (т. е, длина кратчайшего пути в N (/у)) из s в лю- любую вершину i ? V не может убывать при переходе от одного этапа к следующему.
Комментарии и ссылки 221 в) Пусть дуга (и, v) является /-перешейком и /'-перешейком для некоторых /'>/. Покажите, что расстояние от * до t на этапе /' должно быть больше, чем иа этапе /. г) Покажите, что при использовании правила выбора кратчайшего увеличи- увеличивающего пути алгоритм Форда — Фалкерсона останавливается после О(|К|-|Л|) увеличений. 10. Покажите, что если N — простая оеть и / — поток в N с компонентами 0 и 1, го N (/) также простая сеть 11. Покажите, что для следующих вариантов задачи о максимальном потоке существует полиномиальный алгоритм. Каждый вариант сводите к исходной фор- формулировке задачи о максимальном потоке. а) Сеть имеет много источников и стоков. б) Сеть неориентированна в) Вершины наряду с дугами имеют пропускные способности. г) Сеп. неориентированна, и вершины имеют пропускные способности, д*) Имеются как верхние, ian и нижние границы величины потока по каждой дуге. 12. а) Покажите, что s-t-связность орграфа D=(V, А) (см. ладачу 8 из гл. 6) можно вычислить за время O(\V\'/l\A\). б) Решите задачу а) для неориентированного графа (при том же определе- определении S-/-CBH3HOCTH). 13. Связностью графа G=(V, E) называется минимум s-Z-связностей по всем парам s, /? V а) Покажите, что для связности c(G) графа G выполняется неравенство c(G)<: <2\E\/\V\. б*) Покажите, что связность графа G можно найти, вычисляя не более c(G)X XIV\ s-Z-связиостей. в) Выведите из а) и б), что c(G) можно вычислить за время O(\V\xli -\ЕЦ). 14. а) Постройте сети /V=(s, / V А, Ь) для бесконечного числа значений \V\, на которых премя работы алгоритма, приведенного на рис. 9.13, есть Q (| V\3). б) Постройте сети /V с единичными пропускными способностями для беско- бесконечного числа значений \V\, на которых время работы алгоритма, приведенного на рис. 9.13, есть Q (\['\г/"-\А\). в) Постройте простые сети /V с единичными пропускными способностями для бесконечного числа значений \V\, на которых время работы алгоритма, при- приведенного на рис. 9.13, есть Q (\V\1/2 •\A{). Комментарии и ссылки г. Идея поиска по графу очень естественна и поэтому очень стара; см., например, iBeJ Berge С. Theory of Graphs and its Applications. New York: John Wiley & Sons, Inc., 1958. [Имеется перевод: Берж К. Теория графов и ее примене- применение.— М.: ИЛ, 1962.1 Более интересные приложения поиска в глубину можно найти в работах ¦ iTal] Tarjan R. E. Depth-first Search and Linear Graph Algorithms, J. SIAMComp., 1, No. 2 A972), 146—160. 4Ta2] Tarjan R. E. Finding Dominators in Directed Graphs, J. S1AM Сотр., 3 ' A974), 62—89. IHTI] Hopcroft J. E., Tarjan R. E. Dividing a Graph into Triconnected Compo- •. , nents, J. SIAM Сотр., 2 A973), 135—158. -ШТ2] Hopcroft J. E., Tarjan R. E. Efficient Planarity Testing, J. ACM, 21 A974), I 549—558. |3адачи 4, 5 и 7 взяты из [TalJ.
222 Гл. 9. Задача о максимальном, потоке Первым полиномиальным алгоритмом для нахождения максимального по- потока была модификация алгоритма пометок Форда и Фалкерсона, приведенная в задаче 9 и опубликованная в работе [ЕК] Edmonds J., Кагр R. M. Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems, J. ACM, 19, No. 2 ,1972), 248—264. E. А. Диниц независимо обнаружил более быстрый алгоритм, используя идею увеличения одновременно вдоль многих путей. [Ди] Диниц Е. А. Алгоритм решения задачи о максимальном потоке в сети со степенной оценкой.—ДАН СССР, 1970, т. 194, № 4, с. 754—757. Несколько улучшенных алгоритмов приведено в работах: [Ка] Карзанов А. В. Нахождение максимального потока в сети методом предпо- токов.— ДАН СССР, 1974, т. 215, № 1, с. 49-52. [Че] Черкасский Б. В. Алгоритм построения максимального потока в сети с трудоемкостью 0A VI21^"|?¦ 1) действий.— В сб.: «Математические методы решения экономических задач». Сб. 7, 1977, М.: Наука, с. 117—126. [Ga] Galil Z. A New Algorithm for the Maximal Flow Problem, Proc. 19th Symp. on Foundations of Computer Science, IEEE (October 1978), 231—245. [GN] Galil Z., Naamad A. Network Flow and Generalized Path Compression, Proc. 11th Annual ACM Symp. on Theory of Computing, ACM (May 1979), 13—26. [Sh] Shiloach Y. An 0(rv/ log2/) Maximum-Flow Algorithm, Tech. Report STAN- CS-78-802, Computer Science Dept., Stanford University, 1978. Самый быстрый из известных алгоритмов для разреженных сетей принадлежит Слеатору и Тарьяну; см. [SI] Sleator D. D. (неопубликованная диссертация, Станфордский университет, 1980). В следующей таблице приведено время работы указанных алгоритмов. Источник [ЕК] [Ди] [СМ* [Ga] [GN], [Shi [SI] Сложность O(\V\\AV) O(\V\-\A\) O(| F|2 Ml12) 0(| кр'3 мр/3) O(|K|M|Iog|F|) Для плотных сетей 0A Vl3) — наилучшая известная оценка. Алгоритм, приве денный на рис. 9.13,—это алгоритм из работы [Ка] в значительно упрощение» виде, как он представлен в работе [МКМ] Malhotra V. M., Kumar M. P., Maheshwari S. N. An 0A V\3) Algorithm fey Finding Maximum Flows in Networks, Inf. Proc. Letters, 7, No. 6 (Octobe 1978), 277—278. В том случае, когда сеть планарна, существуют более быстрые алгоритмы; см [IS] Itai A., Shiloach Y. Maximum Flow in Planar Networks, J. SIAM Сотр., 8 No. 2 A979), 135—150. Теоремы 9.3 и 9.4 и задачи 12 и 13 взяты из работы [El] Even S., Tarjan R. E. Network Flow and Testing Graph Connectivity, J. SIA,A Сотр., 4, No. 4 A975), 507—518.
10 Алгоритмы для задачи о паросочетании Паросочетанием в графе называется множество ребер, никакие два из которых не имеют общей вершины. Задача нахождения в заданном графе паросочетания, имеющего как можно больше ребер, хорошо известна; в другом варианте даны также веса ребер и целью является нахождение паросочетания, имеющего наибольший сум- суммарный вес. Обе задачи вызвали большой интерес исследователей в последние два десятилетия. Они легко формулируются, апелли- апеллируют к интуиции и имеют много приложений. Кроме того, имеются некоторые очень интересные алгоритмы, эффективно решающие эти задачи. Эти алгоритмы можно рассматривать как дальнейшие примеры использования идеи увеличения, знакомой нам по реше- решениям задачи о максимальном потоке, обсуждавшимся в гл. 6 и9. Однако в случае задачи о паросочетании эффективное обнаружение и выполнение увеличений может оказаться непростым делом. Как в невзвешенном, так и во взвешенном вариантах задачи о паросочета- нии все эти вопросы существенно упрощаются, если рассматривае- рассматриваемый граф является двудольным. В этой и следующей главах мы при- приведем и проанализируем алгоритмы для задач о паросочетании и взвешенном паросочетанин. В обеих задачах вначале будет рассмат- рассматриваться двудольный случай, поскольку этот случай—значительно более простой по структуре — помогает проиллюстрировать основ- основные идеи, используемые при решении общей задачи. 10.1 Задача о паросочетании Подмножество М ребер графа G=(V, E) называется паросо- паросочетанием, если никакие два ребра из М не имеют общей вершины. Например, в графе, представленном на рис. 10.1, множества Мх=* = {[у2, v3], fr4, vb], [vs, vs], [у„ у10]} (выделено на рис. 10.1 жирными линиями) и М2 = {[Уь v2], lv3, vt], [у4?у7], [у„, va], [ve, у10]} являются паросочетапиями. При этом М2 — максимальное паросочетание, поскольку, очевидно, паросочетание в G не может иметь больше, Чем |У|/2=5 ребер. Задача о паросочетании состоит в нахождении в ¦Данном графе G=(V, E) максимального паросочетания М. Если Мощность паросочетания равна |_ |V|/2J , наибольшему возможному
224 Гл. 10. Алгоритмы для задачи о паросочетании значению в графе с \V\ вершинами, то паросочетание называется полным, или совершенным. Рассмотрим граф G вместе с фиксированным паросочетанием М в G. Ребра, входящие в М, называются ребрами паросочетания; остальные ребра называются свободными. Если [у, и] — ребро па- паросочетания, то и называется напарником у. Вершины, не инци- инцидентные никакому ребру паросочетания, называются свободными;ос- свободными;остальные вершины объединены в пары. Путь р=[ии м2(. . ., uh] на- называется чередующимся, если ребра [их, иг\, [и3, и4],. . ., [«2y-i> Рис. 10.1. . свободны, в то время как ребра [и2, ия], [и4, иь],. . ., \u2j, . . . являются ребрами паросочетания. Вершины, стоящие на нечетных местах в некотором чередующемся пути, начинающемся со свободной вершины, называются внешними. Вершины, стоящие на четных местах, называются внутренними. Для графа G и паросо- паросочетания Mi, представленных на рис. 10.1, пути /51=[уь и2, у3, у6, у4, у8] и pi=[vu у4, у6, у„, у8, у,, Ую, у9] являются чередующимися. Из существования этих чередующихся путей следует, что вершины Уь Уз, у<1 и у6, у8, у10 являются внешними, так как каждая из них стоит на нечетном месте в одном из этих путей и вершина у, свобод- свободна. Это не все внешние вершины графа G относительно М1 : у9, и у„ тоже являются внешними, поскольку /?з=[у9, у8. ve] также че- чередующийся путь. Чередующийся путь р=[ии м2(. . ., ик\ назы- называется увеличивающим, если обе вершины U\ и и^ свободны. На рис. 10.1 путь p2=[vi, у4, у6, vt, y8, v7, Ую, у9] является увеличиваю- увеличивающим. Большое значение увеличивающих путей для задачи о паро- сочетании вытекает из следующего факта. Лемма 10.1. Пусть Р — множество ребер увеличивающего пути р=[ии u<i,. . ., «2hl6 графе G относительно паросочетания М. Тогдс М'^М^Р1) — паросочетание мощности |М| + 1. 1) Если S, Т — множества, то SQ)T обозначает симметрическую разноспи S и Г, определяемую равенством S(?ir= (S—T)U (T—S).
10.1. Задача о паросочетании 225 Доказательство. Покажем вначале, что МфР — паросочетание, т. е. никакие два ребра из /W0P не имеют общей вершины в G. Допустим, что два ребра е, е' из МфР инцидентны одной и той же вершине. Так как МфР=(М—P) (J (Р—М), то возможны три слу- случая: 1) е, е'еМ—Р; 2) е, е'еР—М; 3) е?М—Р, е'6Р—М. В первом случае получаем, что два^ребра в М имеют общую верши- вершину — противоречие. Во втором случае заметим, что ребра в Р—М имеют вид [u2j_lt u2j], и, следовательно, никакие два из них не могут быть инцидентны одной и той же вершине. В третьем случае предположим, что ребро e'=[u2f_1, u2j] из Р—М имеет общую вер- вершину с ребром е?М—Р. Без потери общности можно считать, что эта вершина «2/. Но u2j — вершина ребра e"=[u2j, «2/-+j€M, и, следовательно, два ребра е" и е из М имеют общую вершину — про- противоречие. Таким образом, М' — паросочетание. Путь Р содержит 2k— 1 ребер; k из них свободны Aии и2], Ы3, «4],. . ., \uik_x, u2h]) nk—1 принадлежат М. Следовательно, УИ'=М0Р содержит |УИ|+1 ребер. П Например, увеличивающий путь p2=[fi, vit vb, vit vs, v7, viu, v9] относительно паросочетания Mi, представленного на рис. 10.1, можно использовать для увеличения Мг до М3=М10Р2={[и1, vt], [vit v-,}, [v5, ve], [v7, Vg], [v9, u10]}. Поскольку УИ3 — максимальное паросочетание (оно содержит |7|/2=5 ребер), то нет смысла искать увеличивающие пути в G относительно М3] не может существовать увеличивающих путей относительно максимального паросочетания, поскольку такой путь, согласно лемме 10.1, можно было бы исполь- использовать для увеличения этого паросочетания. Оказывается, что обратное утверждение также верно. Теорема 10.1. Паросочетание М в графе G максимально тогда и только тогда, когда в G не существует увеличивающего пути отно- относительно М. Доказательство. В одну сторону утверждение следует из леммы 10.1. Для доказательства обратного утверждения предположим, Что в G не существует увеличивающего пути относительно М, но М не максимально, т. е. существует такое паросочетание М' в G, что \М'\ > \М\. Рассмотрим ребра, входящие в MQ)M'; эти ребра образуют подграф графа G (этот подграф может быть несвязным). :|Гак как никакие два ребра паросочетания не могут быть инцидент- инцидентны одной и той же вершине, то подграф G' =(V, УИ0УИ') имеет спе- ДИальную структуру — все его вершины имеют степень 2 или Меньше. Если степень вершины равна 2, то одно из инцидентных ?*й ребер входит в М, а другое — в М'. Поэтому все связные ком- *¦" № 3032
226 Гл. 10. Алгоритмы для задачи о паросочетании поненты в G' должны быть либо путями, либо циклами четной дли- длины. Во всех циклах имеется одинаковое число ребер как из М, так и из М'. Поскольку \М'\ > |М|, то хотя бы один из путей должен содержать больше ребер из ЛГ, чем из М, и, следовательно, этот путь является увеличивающим путем. Это, однако, противоречит нашему предположению о том, что в G не существует увеличиваю- увеличивающих путей относительно М. ? X ар актер изация максимальных паросочетании, данная в теореме 10.1, не сильно отличается от характеризации максимальных пото- потоков в терминах увеличивающих путей (теорема 6.3). Поэтому воз- возникает соблазн построить для задачи о паросочетании аналог алго- алгоритма построения максимального потока: начать с произвольного паросочетания (например, с пустого) и многократно находить уве- увеличивающие пути. На самом деле все известные алгоритмы для по- построения паросочетании основаны в точности на этой идее. Тем не менее в этих алгоритмах имеется множество деталей. Более или ме- менее непосредственно указанные идеи применяются в задаче о паро- паросочетании в двудольных графах. В этом случае также наиболее по- понятна аналогия,. с задачей о максимальном потоке. 10.2 Алгоритм построения паросочетания в двудольном графе Поскольку задача о паросочетании в двудольных графах являете» частным случаем задачи о паросочетании, обсуждавшейся в преды- предыдущем параграфе (и, следовательно, к ней применима теорема 10.1), будем решать ее путем многократного нахождения увеличи- увеличивающего пути р относительно текущего паросочетания М и увели- увеличения текущего паросочетания до МфР. Как организовать поиск увеличивающих путей относительно паросочетания М в двудольном графе B = (V, U, Е) систематиче- систематическим и эффективным способом? Рассмотрим граф В и паросочетание М, представленные на рис. 10.2(а). Естественно, поиск увеличиваю- увеличивающих путей должен начинаться с построения чередующихся путей из свободных вершин. Так как один конец увеличивающего пути дол- должен находиться в V, а другой в U, то, не теряя общности, можно на- начинать увеличивающие пути только из свободных вершин множест- множества V (в нашем примере и2) При этом можно искать всевозможные чередующиеся пути из иг одновременно, по принципу поиска в ши- ширину. Начав из вершины и2, можно искать увеличивающие пути, рас- рассматривая все вершины, смежные с у2, а именно «2 и ы„ рис. 10.2F)). Так как вершина у2 свободна, все инцидентные ей ребра также свободны По определению чередующегося пути мы должны теперь рассматривать ребра паросочетания, исходящие из иг и ы„. Этот шаг однозначен, поскольку любая вершина имеет не более одного напарника. Естественно, если бы одна из вершин ы2 или ы, была
10.2. Алгоритм построения паросочетания 227 "I (а) (б) (в) (г) (А) Рис. 10.2.
228 Гл. 10. Алгоритмы для задачи о паросочетании свободной, то наша задача была бы выполнена, мы нашли бы уве- увеличивающий путь. Однако это не так, и поэтому мы добавляем вершины Уз и у6 к нашему множеству чередующихся путей. По по- построению Уз и у6— внешние вершины. Продолжаем далее увеличи- увеличивающие пути из у3 и у5. Заметим, что ребро [у5, и31 (пунктирная ли- линия на рис. 10.2F)) опущено, поскольку и3 достигается из у3 до просмотра вершины у6. Очевидно, поступая так, мы теряем только излишние увеличивающие пути. В результате находим новые внешние вершины у4, vi и у„ (рис. 10.2F)) и, наконец, замечаем, что внешняя вершина Vi смежна со свободной вершиной «ь Таким образом, мы нашли увеличивающий путь и, используя его, можем увеличить М (рис. 10.2(д)). Процесс поиска увеличивающих путей сильно напоминает поиск в ширину. Однако, если вернуться к построению увличивающих путей на рис. 10.2F), можно заметить, что этот поиск в ширину имеет специальную структуру. Шаги поиска из уровней с нечет- нечетными номерами (у2 находится на нулевом уровне) довольно триви- тривиальны, так как следующая вершина всегда является напарником текущей вершины. Поэтому можно упростить поиск, игнорируя уровни с нечетными номерами и переходя непосредственно из внеш- внешних вершин в новые внешние вершины; в нашем примере такой поиск выполнялся бы так, как показано на рис. 10.2(в). Очевидно, это соответствует поиску по орграфу (V, А), где (уь у2) &А тогда и только тогда, когда у2 может быть следующей внешней вершиной после Vi в некотором увеличивающем пути, т. е. i>i смежна с напар- напарником вершины у2. Множество вершин этого вспомогательного орграфа совпадает с V, так как, очевидно, только вершины из V могут быть внешними вершинами в увеличивающих путях, начи- начинающихся из V- Вспомогательный граф, соответствующий нашему примеру из рис. 10.2(а), представлен на рис. 10.2(г). Легко видеть, что поиск увеличивающих путей, представленный на рис. 10.2(в), совпадает с поиском в ширину по вспомогательному графу из вер- вершины у2. Наряду с массивом пометка, используемым при поиске, наш алгоритм будет использовать еще два массива, напарник и свободная. Массив напарник содержит \V\ + \U\ элементов и служит для пред- представления текущего паросочетания. Если v?V, то свободная^] — это вершина из U, которая свободна и смежна с у; если такой вер- вершины нет, то свободная [у]=0. Очевидно, если в процессе поиска мы натолкнемся на такую вершину v?V, что свободная^] Ф 0, это будет означать, что мы нашли увеличивающий путь. Процедура УВЕЛИЧЕНИЕ является рекурсивной (вспомните процедуру ПУТЬ, представленную на рис. 9.6). В нашем примере на рис. 10.2 вначале вызывается УВЕЛИЧЕНИЕ^); так как свободнаяЪ-^=и\, тс УВЕЛИЧЕНИЕ изменяет напарника вершины v\ с ы4 на и\ и затем вызывает УВЕЛИЧЕНИЕ(у5). Напарник вершины у5 изменяется с м, на ы4, после чего вызывается УВЕЛИЧЕНИЕ^). Tenepi
10.2. Алгоритм построения паросочетания 229 пометка [иа]=0, поэтому УВЕЛИЧЕНИЕ объединяет в пару вер- вершины »! и и, и останавливается. Полностью этот алгоритм представ- представлен на рис. 10.3. АЛГОРИТМ ПОСТРОЕНИЯ ДВУДОЛЬНОГО ПАРОСОЧЕТАНИЯ Вход: Двудольный граф B = (V, U, Е). Выход: Максимальное паросочетание в В, представленное массивом напарник, begin for all v?V(jU do напарник[\)\— 0; (comment: задание начальных значений) этап: begin for all vgV do свободная[ч]:=0; A:=0; (comment: начало построения вспомогательного графа (V, А)) for all [v, u] ?E do if напарник[и]=0 then свободная[ч]:=и else if нопарник[п] Ф v then A:=A(J (v, напарник[и])\ Q:= 0; I for all v?V do if напарник[м] = 0 then j Q;=Q(j{v}, пометка[м]:= 0; j while Q ф 0 do begin пусть v — вершина из Q; удалить v из Q; i if свободная^] ф 0 then УВЕЛИЧЕНИЕ(у), go to этап; I else ; for all непомеченных v', таких, что (v, v')?A do ; пометка[у']:= v, Q: = QU{V'}; end end end procedure УВЕЛИЧЕНИЕ(у) if пометка[ч) =0 then напарник^]: =свободная{\\, напарник[свободная[ч]]: = vj else begin свободная[ пометка[у]]:= напарник[у]; шпарник[\1]:= свободная[ч); напарник\свободная{ч]\:= v; УВЕЛИЧЕНИЕ (пометка[ч~\) end Рис. 10.3. Алгоритм построения паросочетания в двудольном графе. Теорема 10.2. Алгоритм, представленный на рис. 10.3, коррект- корректно решает задачу о паросочетании для двудольного графи B--(V, U, Е) за время О (min (\V\, \U\)-\E\). Доказательство. Алгоритм останавливается, если во вспомога- вспомогательном графе нет пути из свободной вершины множества V в целе- .вую вершину. По построению вспомогательного графа это означает. Что в В не существует увеличивающего пути относительно теку-
230 Гл. 10. Алгоритмы для задачи о паросочетании щего наросочетания и, следовательно, по теореме 10.1 текущее паросочетание оптимально. Для получения временной оценки заметим, что паросочетание в В не может содержать более чем min(|V'|, \U\) ребер. Так как при каждом увеличении мощность паросочетания возрастает на 1, то возможно не более min i\V\, \U\) этапов. Остается показать, что сложность каждого этапа есть О(|?|). Построение вспомогательного графа и вычисление массива свободная требует О(|?|) времени, поскольку необходимо рассмотреть |?| ребер. Поиск требуемого ориентированного пути во вспомогательном графе производится за время О(\А\) = О(\Е\); наконец, увеличение паросочетания требует времени О(|К|). Теорема доказана. Q 10.3 Паросочетакие в двудольном графе и поток в сети Оказывается, что алгоритм из предыдущего параграфа со слож- сложностью 0(min(|V|, |[/|)-|?|) можно улучшить, связав задачу о паросочетании для двудольных графов с задачей о максимальном потоке для сетей. В частности, мы намерены свести задачу о паро- паросочетании в двудольном графе к задаче о максимальном потоке для простых сетей. Это означает, что будет показано, как можно эффек- эффективно решить задачу о паросочетании в двудольном графе, исполь- используя любой алгоритм, эффективно решающий задачу о максимальном потоке. Пусть дан произвольный граф B=(V, U, Е). Определим сле- следующую сеть N(B) = (s, t, W, А) с единичными пропускными спо- способностями дуг, где sat — две новые вершины, W — объединение множеств {s, /}, V и U, а А — множество, состоящее из дуг трех категорий: 1) дуги (s, v) для всех v?V\ 2) дуги (и, t) для всех u?U; 3) дуги (и, и) для всех v^V и u?U, таких, что [у, ы]??. На рис. 10.4F) приведена сеть N (В) для двудольного графа В, представленного на рис. 10.4(а). Заметим вначале, что для любого двудольного графа В сеть N (В) является простой. Это следует из того, что все вершины из V имеют в N (В) степень захода 1 и все вершины из U имеют степень исхода 1. Лемма 10.2. Мощность максимального паросочетания в двудольном графе В равна величине максимального потока из s в t в сети N (В). J Доказательство. Для данного паросочетания М в графе В можно следующим образом построить допустимый поток в N(B). Для каждой вершины v?V, входящей в паросочетание (т. е. каждой вершины v, для которой [у, и]?М для некоторой вершины u(iU),
10.3. Паросочетание в двудольном графе 231 зададим единичный поток по дуге (s, v). Для каждой вершины u?U, входящей в паросочетание, зададим единичный поток по дуге (и, t). Наконец, добавим для каждого ребра [v, и]?М единичный поток по дуге (v, и) (рис. 10.4). Очевидно, полученный поток допустим, и его величина равна \М\. Пусть теперь дан максимальный поток / (а) Рис. 10.4. в М(В). Мы знаем, что существует эквивалентный ему поток с це- целочисленными (в нашем примере 0 или 1) значениями дуговых по- потоков (например, поток, который строится алгоритмом, представ- представленным на рис. 9.13). Исходя из такого потока, построим паросоче- паросочетание М, содержащее все ребра [v, и\?Е, для которых f(v, «) = 1. По построению N (В) это будет правильное паросочетание, так как если два ребра в Е имеют общую вершину v, то поток по одной из соответствующих дуг сети N (В) должен быть нулевым; в противном случае нарушалось бы ограничение пропускной способности дуги (s, v) (или (v, t), если v?U). ? Заметим, что доказательство леммы 10.2 конструктивно; оно позволяет найти максимальное паросочетание в В по данному це- целочисленному максимальному потоку в N (В) за время О (! VI). Теорема 10.3. Задачу о паросочетании для двудольных графов мож- можно решить за время O(\V\4> ¦ \Е\). Доказательство. Соответствующий алгоритм имеет следующий вид. 1. По графу В строим сеть N (В). 2. Находим максимальный поток в N (В) с помощью алгоритма, приведенного на рис. 9.1. . 3. По максимальному потоку в N (В) строим максимальное паросочетание в В так же, как в доказательстве леммы 10.2.
232 Гл. 10. Алгоритмы для задачи о паросочетании Шаг 1 требует всего 0(\Е\) времени, а шаг 3 можно выполнить за время ОAVI). Наконец, шаг 2 имеет сложность О(|У|1/«-|Л|)== — О(\У\1/г'\Е\), поскольку N (В) — простая сеть (см. теорему 9.4). Следовательно, теорема доказана. П Асимптотически это самый быстрый из известных алгоритмов для задачи о паросочетании в двудольном графе. 10.4 Паросочетание в произвольном графе. Цветки Как расширить методы, используемые для решения задачи о па- паросочетании в двудольном графе, на произвольные графы? Сведе- Сведение к задаче о максимальном потоке из предыдущего параграфа, по- видимому, не обобщается (в задачах 6 и 7 задача о паро- паросочетании в произвольном графе сводится к некоторому расширению задачи о макси- максимальном потоке, которое, к сожалению, ничуть не легче для решения, чем исходная задача о паросочетании). С другой стороны, теорема 10.1 справедлива для произволь- произвольных графов, поэтому подход, примененный в § 10.2 (на- (начать с пустого паросочетания и многократно находить уве- увеличивающие пути и произво- производить увеличение вдоль них), можно расширить на задачу о паросочетании в произволь- произвольном графе. К сожалению, отсутствие двудольной струк- структуры делает задачу нахож- нахождения увеличивающих путей существенно более трудной. Посмотрим, как нужно модифицировать наш метод использования вспомогатель- вспомогательного орграфа, чтобы он работал для произвольных графов. Прежде всего в двудольном случае мы знали, что вершины из U не могут быть внешними ни в каком чередующемся пути, начина- начинающемся из V. Поэтому наш вспомогательный граф содержал только вершины из V. В общем случае такого ограничения нет, и, следова- следовательно, вспомогательный граф должен содержать все вершины. (а)
10.4. Паросочетание в произвольном графе. Цветки 233 Дуги вспомогательного графа снова будут представлять основную информацию: дуга (и, и) будет обозначать, что и может быть сле- следующей внешней вершиной после v на чередующемся пути, на ко- котором v является внешней. Таким образом, увеличивающие пути соответствуют путям во вспомогательном графе из свободной верши- вершины в некоторую целевую вершину (т. е. вершину v, для которой свободнаяЫфО) точно так же, как в двудольном случае. Однако общая задача о паросочетании оказывается существенно сложнее, поскольку обратного соответствия может не быть. Иначе говоря, во вспомогательном графе могут быть пути, ведущие из свободных вершин в целевые вершины, но не соответствующие увеличивающим путям относительно текущего паросочетания. По- Покажем это на примере. Рассмотрим граф G, приведенный на рис. 10.5(а), и выделенное в нем паросочетание М. Здесь М не мак- максимально, поскольку в G существует увеличивающий путь относи- относительно М, а именно p=[vu vu v», и4, v.o, va, u7, vs, vt, v^,]. Естест- Естественно, p соответствует пути p' = (vlt v3, vit w,, vt) во вспомогатель- вспомогательном орграфе относительно М, приведенном на рис. 10.5F). Тем не менее во вспомогательном орграфе существуют пути, которые не соответствуют правильным увеличивающим путям. Рассмотрим, например, путь q' = (vx, vs, ve, vb, и,, vt). В графе G нет увеличива- увеличивающего пути, в котором последовательность внешних вершин совпа- совпадала бы cq'. Если мы воспользуемся соответствием («ь иг,. . ., ик)*-* *-*\ui, напарник[и2], и2,. . ., напарник[ик], uh, свободная\ик]], с помощью которого нам удавалось находить увеличивающий путь в двудольном случае, то получим маршрут q=lvu vt, vs, v,, vb, u4, vb, ve, u,, vs, vt, Ню]. Естественно, q не является увеличивающим пу- путем; на самом деле это вообще не путь. Некоторые вершины и ребра в нем повторяются, например ребра паросочетания [vs, vt] и [у„, у,]. Эти повторения не отражены в q', так как каждый раз различ- различные концы ребер используются в качестве «внешних» вершин. Плюс ко всему M(?)Q (где Q — множество ребер маршрута q) не является паросочетанием. Так как наш метод использования вспомогательных орграфов успешно работает для двудольных графов и единственной чертой, отличающей двудольные графы, является отсутствие циклов нечет- нечетной длины (вспомните предложение 1.1), можно предположить, что плохая ситуация в общем случае связана именно с наличием циклов нечетной длины. И это действительно так. До появления цикла нечетной длины C=[ve, vit v6, ve] (см. рис. 10.5) q является абсолют- абсолютно правильным чередующимся путем. Затем q замыкает этот цикл и начинает «накладываться» на себя, что приводит к отмеченным выше бедственным последствиям. Не все циклы нечетной длины могут порождать такую нежела- нежелательную ситуацию. Например, цикл из девяти вершин в графе, представленном на рис. 10.6(а), не может помешать алгоритму, использующему вспомогательный орграф. Интуитивные соображе-
234 Гл. 10. Алгоритмы для задачи о паросочетании 1й "гк "гк-1 к-2 , * I / о—- (в) -о——о "г;- 2 "г/ ,-2 /-1 Рис. 10.6. ния здесь следующие: так как данный цикл слишком «разрежен» относительно ребер паросочетания, то увеличивающий путь не может пройти по нему и наложиться на себя. Подозрительными циклами нечетной длины являются те, в которых плотность ребер паросочетания достигает максимальной величины; т. е. циклы с 2?+1 вершинами, содержащие k ребер паросочетания (рис. 10.6F)). Такие циклы называются цветками и играют важную роль в теории
10.4. Паросочетание в произвольном графе. Цветки 235 паросочетаний. Отметим, что, подобно большинству терминов, свя- связанных с паросочетаниями, цветки определяются только по отно- отношению к некоторому фиксированному паросочетанию. Таким образом, мы поняли, почему здесь не годится метод вспомогательных орграфов: из-за цветков. Если в графе нет цветков относительно текущего паросочетания, тогда он эффективно дву- двудолен (даже несмотря на то, что может содержать циклы нечетной длины, не являющиеся цветками, подобно графу на рис. 10.6(а)), и поиск увеличивающих путей можно проводить так же, как в двудольном случае. Следовательно, нам нужно модифицировать наш алгоритм так, чтобы A) он мог чувствовать наличие цветков и B) находить правильные увеличивающие пути даже при наличии цветков. Для упрощения алгоритма будем производить поиск увели- увеличивающих путей из каждой свободной вершины по очереди, а не одновременно из всех свободных вершин, как мы делали в алгорит- алгоритме поиска паросочетания в двудольном графе. Обнаружить наличие цветков не очень трудно. Цветок стано- становится существенным для нашего алгоритма, когда он впервые обна- обнаруживается алгоритмом, т. е. когда все его вершины оказываются либо внешними, либо напарниками внешних вершин. Эта ситуация изображена на рис. 10.6(в) для цветка, представленного на рис. 10.6F). В этот момент мы впервые замечаем необычное явление. Следующая вершина в процессе нашего поиска, а именно u2j (см. пунктирную дугу на рис. 10.6(в)), оказывается напарником вер- вершины «2/-1- которая уже была внешней. Это означает, что мы пыта- пытаемся использовать ребро паросочетания [u2j, u2j_t] дважды, и нали- наличие цветка таким образом установлено. Ненамного труднее действи- действительно найти этот цветок. Мы возвращаемся назад из u2j и иг/_1, находя два пути, ведущие из свободной вершины v в эти вершины. Находим самую последнюю внешнюю вершину, общую для этих путей. Эта вершина (и0 в нашем примере на рис. 10.6F) и 10.6(в)) является основанием цветка, т. е. единственной вершиной цветка, не объединенной в пару ни с какой другой вершиной цветка. Тогда цветок состоит из всех внешних вершин на отрезках путей от и0 до "г./ и «2/-_j вместе с напарниками всех этих вершин, исключая и0. Проведенный анализ обеспечивает одно из двух указанных выше расширений алгоритма вспомогательных орграфов, необходимых для того, чтобы алгоритм работал для произвольных, недвудольных графов: обнаружение цветков. Остается еще понять, что делать с обнаруженным цветком для того, чтобы продолжить поиск правиль- правильных увеличивающих путей. Для этого используется поразительно простая идея — избавиться от цветка, стягивая его, т. е. заменяя его одной вершиной. Формализуем понятие стягивания. Если Ь — цветок в графе G=(V, Е) относительно паросочетания М, то граф, полученный из G стягиванием Ь, имеет вид Glb=(Vlb, Elb), где Vlb получается из V выбрасыванием всех вершин цветка b и добав- добавлением новой вершины vb вместо b; Elb получается из Е выбрасы-
236 Гл. 10. Алгоритмы для задачи о паросочеШании ванием всех ребер, у которых обе концевые вершины лежат в Ь, и заменой каждого ребра [v, и], такого, что и лежит в Ь, а у не лежит в Ь, на ребро [v, vb]. В качестве примера на рис. 10.7F) приведен граф Gib для графа G и цветка Ь, представленных на рис. 10.7(а). Естественно, для того чтобы стягивание являлось (а) Рис. 10.7. допустимой операцией в процессе нашего поиска увеличивающих путей, необходимо показать, что при стягивании цветка в нашем графе не добавляются и не пропадают увеличивающие пути. Лемма 10.3. Пусть во время поиска увеличивающего пути из сво- свободной вершины и в графе G относительно паросочетания М обна- обнаруживается цветок Ь. Тогда существует чередующийся путь из ив любую вершину цветка Ь, оканчивающийся ребром паросочетания. Доказательство. Так как цветок b был обнаружен при поиске из и, то существует чередующийся путь из и до основания цветка Ь, как показано на рис. 10.8. Тогда вершина v цветка b достижима из и по двум чередующимся путям (рис. 10.8). Один из них обязан оканчиваться ребром паросочетания. ?
10.4. Паросочетание в произвольном графе. Цветки 23? Пусть G — граф, М — паросочетание и b — цветок в графе G относительно М. Тогда М/b — паросочетание, получающееся из М, если удалить все ребра паросочетания, входящие в Ь, и заменить Рис. 10.8. любое ребро паросочетания вида [v, и], где и — вершина цветка Ь, на ребро lv, vb\. Теорема 10.4. Пусть при поиске увеличивающего пути из верши- вершины и графа G относительно паросочетания М обнаружен цветок Ь. Тогда существует увеличивающий путь из вершины и в графе G относительно М в том и только том случае, если существует увеличивающий путь из и (vb, если и — основание цветка Ь) в гра- графе G/b относительно М/Ь. Доказательство. Докажем сначала достаточность. Предполо- Предположим, что существует увеличивающий путь р из вершины и в Gib относительно М/b. Если р не проходит через vb, то р сам является увеличивающим путем в G. Если р проходит через vb, можно запи- записать p = lu, p', w, x?b, w', p"Y), где// и р"—некоторые пути. Одно из ребер, [w, vb\ или [a/, vb], входит в паросочетание. Допустим, что ребро [w, vb] входит в паросочетание (второй случай аналогичен). Тогда [w, иа]?М и [w', Uj](tE—М для основания ы0 и некоторой другой вершины uj цветка b (рис. 10.9). Отсюда следует, что путь [и, р', w, «о, р'", Uj, w', /?"], где р"' — путь из ы0 в щ, оканчиваю- оканчивающийся ребром паросочетания (пустой путь, если и„=щ), является увеличивающим путем из вершины и в графе G. Если u=vb, рассуж- рассуждения совершенно аналогичны. Докажем теперь необходимость. Предположим, что существует увеличивающий путь р из и в графе G относительно М. Опять х) Мы используем выражения вида [и, р, w, р', v], где u,wh v— вершины, для обозначения пути, первая часть которого (в данном случае) есть путь р с концевы- концевыми вершинами u u to, а вторая часть — путь /?' с концевыми вершинами w и и. Вы- Выражение [р, q] обозначает конкатенацию двух путей без указания концевых точек. Если р — путь, то р% обозначает обратный путь.
238 Гл. 10. Алгоритмы для задачи о паросочетании если р не проходит ни через одну вершину цветка Ъ, то все в порядке. Если же это не так, то возможны два случая. Случай 1. Пусть р входит в цветок b через основание ы0 по ребру паросочетания (рис. Ю.Ю(а)). Пусть и} — последняя вершина цвет- цветка b в этом пути. Если Uj=u0, то все в порядке, поскольку после замены и0 на vb путь р будет также увеличивающим путем в Gib. Рис. 10.9. В противном случае р=1и, р', «о, р", Щ, w, p"'\ и [щ, Тогда [и, р', vb, w, р'"\ — увеличивающий путь в Gib. Случай 2. Пусть р входит в цветок b по свободному ребру. Рас- Рассмотрим два подслучая. Подслучай (а). Пусть р выходит из цветка Ъ через его основание по ребру паросочетания. Этот случай аналогичен случаю 1. Подслучай (б). Пусть теперь р выходит из цветка Ъ по свободно- свободному ребру. Тогда р=[«, р', ии р", ujy w, р'"\ (рис. 10.10F)). По лемме 10.3 существует чередующийся путь q из вершины и в осно- основание ы0 Цветка Ь, оканчивающийся ребром паросочетания. Необхо- Необходимо рассмотреть три возможности. 1. Предположим вначале, что р" и q не пересекаются. Тогда [и, q, vb, w, p'"\ — увеличивающий путь. 2. Предположим теперь, что р'" и q пересекаются (рис. Ю.Ю(в)). Тогда q=\u, q', х, q", ио\ и р"'=[р<4), х, р(в)], где р'51 не имеет об- общих вершин с q. В этом случае путь [и, р', vb, q"R, x, p(B)] явля- является увеличивающим путем в предположении, что q" и р' не имеют общих вершин. 3. Этот случай совпадает с B) за исключением того, что теперь р w,q" пересекаются (рис. Ю.Ю(г) и Ю.Ю(д)). Пусть у — последняя из вершин пути q", лежащих либо на р', либо на р'". Если у лежит на /?'", то для построения увеличивающего пути в Gib используем р до вершины vb, затем q в обратном направлении до у и затем р'" до конца (рис. Ю.Ю(г)). Если у лежит на р', тогда используем р' до вершины у, затем q до vb и затем р'" до конца (рис. Ю.Ю(д)).
10.4. Паросочетание в произвольном графе. Цветки 239 (г) Рис. 10.10.
240 Гл. 10. Алгоритмы для задачи о паросояетании 10.5 Паросочетание в произвольном графе. Алгоритм В этом параграфе будет приведен алгоритм со сложностью О(|У|4) для задачи о паросочетании. Этот алгоритм (см. рис. 10.13) — это тот же алгоритм, который был использован в двудольном случае, но с некоторыми особенностями, необходимыми для того, чтобы справиться с цветками. Алгоритм начинает работу с пустого паросо- четания и многократно выбирает свободную вершину для поиска увеличивающего пути из нее. Для простоты будем искать увеличи- увеличивающие пути из каждой свободной вершины по очереди, а не из всех свободных вершин сразу, как мы делали в двудольном случае. При поиске опять будет использоваться вспомогательный орграф. Предположим, что на некотором этапе нам не удалось найти уве- увеличивающий путь из свободной вершины и. Очевидно, и ничем не может нам помочь на этом этапе. Следующая теорема утверждает, что и также не следует выбирать в качестве начальной точки в на- нашем поиске на всех последующих этапах. Теорема 10.5. Пусть в графе G не существует увеличивающего пути, начинающегося из свободной вершины и, относительно паросо- четания М. Пусть р — увеличивающий путь, концами которого являются две другие свободные вершины v и w. Тогда также не су- существует увеличивающего пути из и относительно МфР. Доказательство. Предположим, что существует увеличивающий путь q из и относительно МфР. Если q не имеет общих вершин с р, то увеличение с помощью р не изменяет ничего, связанного с q, и, следовательно, путь q был увеличивающим путем из и до увеличения, что противоречит условию теоремы. Пусть теперь <7=[«!=и, ы2). . ., ик=и1, и пусть и} — первая вершина на пути q, принадлежащая также пути р (рис. 10.11). Одна из двух частей, на которые Uj делит р, должна оканчиваться в вершине щ ребром из М; эта часть вместе с частью пути q до вер- вершины Uj образует увеличивающий путь из и относительно М, что противоречит условию теоремы. Следствие. Если на некотором этапе нет увеличивающего пути из вершины и, то увеличивающего пути из этой вершины и не будет никогда. Доказательство. Легко показать индукцией по k с использова- использованием теоремы 10.5, что с того момента, когда нам не удалось найти увеличивающий путь из м, после любых k увеличений также не будет увеличивающего пути из и. ?
10.5. Паросочетание в произвольном графе. Алгоритм 241 Следовательно, если хотя бы раз поиск увеличивающего пути из вершины и не дал результата, то и никогда не будет в дальнейшем рассматриваться алгоритмом в качестве потенциальной начальной вершины увеличивающего пути. В нашем алгоритме это обеспечи- обеспечивается хранением массива рассмотрена, вначале являющегося нуле- нулевым. Если вершина и используется в качестве начальной вершины в процессе поиска, полагаем рассмотрении] = \, указывая этим, что и никогда не будет больше рассматриваться. Как и в двудольном слу- случае, основную помощь при осуществлении поиска нам будет оказывать вспомога- вспомогательный орграф (V, А). Кро- Кроме того, снова будет исполь- использоваться массив свободная для выделения целевых вер- вершин— т.е. вершин, смежных со свободными вершинами, отличными от рассматривае- рассматриваемой. Чтобы была возмож- возможность обнаруживать цветки, используется массив видна с \V\ элементами, первоначаль- первоначально нулевыми, где видна \v\-l означает, что v — напарник некоторой внешней вершины; если v в процессе поиска ока- окажется внешней вершиной, то оба конца ребра [v, напарник [v]] являются внешними и, следовательно, цветок обнаружен. Как только обнаруживается первый цветок, он стягивается. Согласно теореме 10.4, это допустимая операция, так как при ее выполнении остаются увеличивающие пути из рассматриваемой вершины. Этому текущему цветку присваивается некоторое имя b — например, очередное целое число начиная с |V[+1, поскольку первые \V\ целых чисел использованы в качестве индексов вершин из V,— и текущий граф превращается из G в Gib (рис. 10.7F)). После Этого мы можем обнаружить в процессе поиска другой цветок Ь' (рис. 10.7F)). Стягивая его, получим в качестве текущего графи Glblb' (рис. 10.7(в)) и т. д. После каждого обнаружения цветка b мы должны записать неко- некоторую полезную информацию (эффективно стянуть Ь). Это выпол- выполняется с помощью процедуры ЦВЕТОК, использованной на рис. 10.13 (явно не приведена). Процедура ЦВЕТОК проделывает следующее. 1. Находит все вершины цветка b обратным просмотром с ис- Рис. 10.11. Доказательство теоремы 10.5 Жирными линиями выделены ребра из М®Р.
242 Гл. 10. Алгоритмы для задачи о паросочетании пользованием массива пометка до тех пор, пока не встретится первая общая вершина на рассматриваемых двух путях — основание цветка b (рис. 10.12). Вершинами Ь являются в точности вершины этих двух путей и их напарники. Мы отмечаем тот факт, что v принадлежит цветку Ь, положив цветокЫ—Ь (заметим, что вершина v сама мо- может быть получена из цветка). Мы также записываем для дальней- дальнейших ссылок основание цветка b и точный циклический порядок, в котором появляются вершины Ь. Рис. 10.12. Идентифицировав все вершины цветка Ь, нужно проверить, существует ли среди них такая вершина Uj, что свободная\и,]Ф§. Если существует, то нужно увеличивать паросочетание из vb, как объяснялось в нескольких предыдущих параграфах. 2. Заменяем каждое вхождение вершины х цветка b во вспомога- вспомогательном графе А, очереди Q и массиве пометка новой вершиной vb. Это соответствует «стягиванию» вершин цветка b в одну вершину vb. Процедура поиска, обнаружения и стягивания цветков продол- продолжается до тех пор, пока в текущем графе не будет найден увеличи- увеличивающий путь из вершины и (или из vb, где vb — самый последний стянутый цветок, содержащий и) или не окажется, что такого пути или еще одного цветка в процессе поиска по вспомогательному гра- графу найти нельзя. Если в текущем графе обнаруживается увеличивающий путь р, то нужно построить по нему увеличивающий путь в исходном графе G. Это может оказаться нетривиальным, так как р может содержать несколько вершин, полученных из цветков, и, следовательно, его нельзя использовать для увеличения в том виде, как он есть. Рас- Рассмотрим, например, увеличивающий путь р=[ию, ов, vs, v7,vb>, vt] на рис. 10 7(в). Для нахождения пор увеличивающего пути в исход- исходном графе можно несколько раз применить конструкцию из дока- доказательства теоремы 10.4 (достаточность), которая устанавливает существование такого пути. Проиллюстрируем простой принцип такого построения на примере из рис. 10.7. Путь p=[vw, и„, у8, и7, vb', щ] содержит одну вершину v,,, полученную из цветка. Найдем в пути вершину, соседнюю cvb,, соединенную с vb, свободным реб- ребром (в нашем примере Vi). Найдем вершину цветкаЬ', смежнуюcui в графе, который был до стягивания Ь'. Это не всегда просто, по-
10.5. .Паросочетание в произвольном графе. Алгоритм 243 скольку вместо Vi у нас могла быть другая вершина, полученная из цветка. При анализе эффективности алгоритма (см. доказательство теоремы 10.6) мы точно укажем, как производить этот поиск эффек- эффективно. После того как найдена такая вершина цветка Ь' (у2 или v3; пусть, например, и2), находим единственный путь из основания цветка V в вершину v2, оканчивающийся ребром паросочетания (в нашем примере lvb, v3, v2]). Затем заменяем vb, в р этим путем, в результате чего получаем путь p'=[vw, ce, ce, f7. vb, v3, v2, vj. Теперь нужно Повторить тот же процесс для замены в р' вершины Vb- На этот раз v3 — вершина, соединенная с vb свободным ребром. Находим, что это ребро соответствует ребру [vt, v3] в G. Находим единственный путь внутри Ь из основания иев vt, оканчивающийся ребром паросочетания, именно [v6, vs, vt]. Наконец, заменяем vb в р' этим путем, в результате чего получаем окончательный увели- увеличивающий путь p"=[vm vt, vt, и,, vs, vb, vt, v3, vit Vi]. Описанные выше идеи реализуются в процедуре УВЕЛИЧЕНИЕ, не показан- показанной явно на рис. 10.13. Полный алгоритм представлен на рис. 10.13. Теорема 10.6. Алгоритм, представленный на рис. 10.13, коррект- корректно находит максимальное паросочетание в графе G— (V, Е) за вре- время О(|1/|4). Доказательство. Алгоритм останавливается после неудачных попыток найти увеличивающие пути из всех свободных вершин графа G. Учитывая теорему 10.4, можно заключить, что в тот мо- момент, когда производилась каждая такая попытка, не существовало увеличивающего пути из рассматриваемой вершины в исходном графе G. Отсюда по теореме 10.5 не существует увеличивающего пути в G, и, следовательно, по теореме 10.1 текущее паросочетание оптимально. Так как цикл с меткой этап выполняется не более \V\ раз (по одному разу для каждой вершины), то для получения временной оценки достаточно показать, что каждый этап можно выполнить за время О(Ц/|3). Построение вспомогательного орграфа можно выпол- выполнить за время О(|У|2) и за такое же время вычислить массив свобод- свободная. При каждом поиске будет не более \V\ выполнений процедуры ЦВЕТОК, так как при каждом таком выполнении число вершин текущего графа уменьшается по крайней мере на два. Покажем теперь, что процедуру ЦВЕТОК можно выполнить за время О(|У|2). Обратный просмотр по пометкам и нахождение самой последней общей вершины, очевидно, можно выполнить за время О(|У|2). Преобразование вспомогательного орграфа можно произвести за времяО(\А\)—О(\Е\)=О(\У\2); новые значения массивов пометка и Q могут быть вычислены за время О(|У|). Поэтому всю процедуру ЦВЕТОК можно выполнить за время О(|У|2). Процедура УВЕЛИЧЕНИЕ выполняется не более одного раза при каждом поиске. При каждом ее выполнении может потребоваться
244 Гл. 10. Алгоритмы для задачи о паросочетании до O(\V\) расширений цветков (вспомните обсуждение процедуры УВЕЛИЧЕНИЕ, перед теоремой). Каждое расширение сводится по существу к нахождению вершины Uj данного цветка, связанной с w АЛГОРИТМ ПОСТРОЕНИЯ НЕДВУДОЛЬНОГО ПАРОСОЧЕТАНИЯ Вход. Граф Q = (V, E). Выход. Максимальное паросочетание в Q, представленное массивом напар- напарник. begin for all v?V do напарник^] := 0, рассмотрено^] := 0; этап: while имеется u?V, для которого рассмотрено[и] = 0 и напар- напарники] = 0 do begin рассмотрено[\х]: = 1, А: = 0; for all v?V do свободная^] := 0 (comment: построение вспомогательного орграфа) for all [v, w] ? E do (comment: повторить как для fv, w], так и для [w, v]) if напарник^] = 0 and w?tii then свободная^] := w else if напарник^] Ф v, 0 then A := AU{(v, напарник\\ч])}\ for all v(j»V do видна[\] := О Q:={u}; пометка[и] := 0; If свободная[и] Ф 0 then УВЕЛИЧЕНИЕ(и), go to этап; (comment: задание начальных значений для поиска) while О Ф 0 do begin пусть v —вершина из Q; (comment: Q — очередь) удалить v из Q; for all непомеченных вершин w?V, таких, что (v, w)?A do begin Q ¦•= QU{w}, пометка[ы]: = v; видна[напар>ник[щ]] := 1; if свободная]™] ^0 then УВЕЛИЧЕНИЕ^). Со (о этап; if видна[к]=\ then UBETOK(w) end end end end Рис. 10.. 13. Алгоритм построения паросочетания в произвольном графе. в исходном графе. Это можно осуществить, просматривая все вер- вершины, стянутые в b (и в до, если до — также цветок), и находя ком- комбинацию, являющуюся ребром из Е. Первую часть можно выполнить за время О(|У|2), начиная с каждой вершины v и находя цветок [v], затем цветок[цветокЫ] и т. д. не более О(|У|)раз, до тех пор, пока не придем соответственно к Ь или до. Вторую часть можно выполнить за время О(\Е\), проверяя для каждого ребра [v, u]^E, верно ли, что v стянуто в Ь и и стянуто в w. Оставшуюся часть процедуры УВЕЛИЧЕНИЕ можно выполнить за время О(|У|) для
10.5. Паросочетание в произвольном графе. Алгоритм 245
246 Гл. 10. Алгоритмы для задачи о паросочеШании каждого расширения цветка; следовательно, увеличение, производи- производимое после каждого поиска, можно произвести за время О(Ц/|3). Q Пример 10.1. Применим алгоритм, представленный на рис. 10.13, к графу, показанному вверху на стр. 245, Первые семь этапов тривиальны. Увеличивающие пути, состоя- состоящие из единственного ребра, моментально находятся, и в результате следующие ребра становятся ребрами паросочетания: [уь v-2], lv3, yj, [v6, ve], [и„ vs], lvt, v10], lvn, vi2], lv13, vu]. Полученное паросо- четание приведено внизу на том же рисунке. На следующем этапе выбираем свободную и не рассмотренную вершину у15 и строим вспомогательный орграф относительно теку- текущего парасочетания. Вершинами, для которых свободнаяЫ ф 0, будут вершины ив, у7, viv, vl2 и у14. Следующий рисунок иллюстрирует поиск из вершины vib (дуга из у в и означает, что пометка [и]=и; она противоположна дуге вспомогательного орграфа).
10.5. Паросочетание в произвольном графе. Алгоритм 247 На этом месте поиск прерывается, не дав никакого результата (т. е. не найден увеличивающий путь или цветок, и Q пусто). Поэ- Поэтому вершина и1ъ выбрасывается; мы никогда больше не будем начи- начинать с нее поиск. Следующей не рассмотренной свободной вершиной является и1в. Поэтому мы начинаем поиск по орграфу из и16 с целевыми верши- вершинами (т. е. вершинами, для которых значение функции свободная отлично от нуля) у2, у4, у10 и у12. Удаляя у16 из Q, вставляем в Q вершины v6, иь и у13, одновременно придавая элементам массива видна, соответствующим у5, у, иу14, значение 1, поскольку напарники этих вершин помечаются. Затем удаляем из Q вершину у6. При этом к Q добавляется у3 и производится присвоение видна[и4\ = 1. Затем рассматривается вершина у7. Соответствующая ситуация выг- выглядит та с Q={vs,vi3.v}.v1] На этом месте обнаруживаем, что видна\и,] = 1; следовательно, i>, — напарник некоторой вершины, уже являющейся внешней {vs), и цветок обнаружен. Для нахождения всех вершин цветка про- проходим назад по массиву пометка одновременно из вершины у, и ее напарника vs. Первая общая вершина на этих обратных путях — ри, поэтому у)в— основание цветка. Все вершины, встретившиеся •на этих обратных путях, и их напарники образуют множество вер- вершин цветка. Припишем этому цветку новый индекс, и1в, заменим все Цементы массивов Q и пометка, являющиеся вершинами цветка.
248 Гл. 10. Алгоритмы для задачи о паросочетании на и18 и возобновим поиск. Модифицированный вспомогательный граф имеет такой вид: Поиск продолжается начиная с состояния Далее из очереди удаляется и18 и добавляется vi0 — вершина, для которой свободH.aH[vin\~v%1 Ф 0.
10.5. Паросочетание в произвольном графе. Алгоритм 249 Увеличивающим путем в текущем графе будет путь р' = [и18, напарник Ью), Рю, свободная [viO]] = [vw, и9, Ую, у]7]. Чтобы заменить р' путем в исходном графе, просматриваем все ребра, инцидентные i»e, и обнаруживаем, что ребро [и18, vs\ соответствует исходному ребру [vs, vs] и, кроме того, путем, идущим из основания vlg в и8, оканчи- оканчивающимся ребром паросочетания, является путь [vu, u7, vs]. По- Поэтому заменяем vlg в р' на [у]в, у„ у8] и получаем окончательный увеличивающий путь p — [vl&, и7, у8, у9, у]0; у171, с помощью которого текущее паросочетаине увеличивается, как показано на рисунке. Далее обнаруживаем, что в графе G нет вершин, не входящих в паросочетание и не рассмотренных, и, следовательно, текущее паро- паросочетание оптимально. ?
250 Гл. 10. Алгоритмы для задачи о паросочетании Задачи 1. Покажите, что в двудольном графе мощность максимального паросочета- ния равна мощности наименьшего множества вершин, покрывающих все ребра (т. е. каждое ребро инцидентно некоторой вершине данного множества). 2. Покажите, что в двудольном графе B=(V, U, Е), в котором \V\=\U\=n, имеется паросочетание мощности л тогда и только тогда, когда для всех S^V выполняется условие \{u?U: [v, u]?E для некоторой вершины u?S}|^|S|. 3. Реберным покрытием графа G=(V, E) называвши такое подмножество С множества Е, что V=[)[U v^o {«. v}- Предположим, что в G нет изолированных вершин. Покажите, что мощность минимального реберного покрытия С в графе G равна мощности максимального паросочетания М в G, увеличенной на \V\—2|/И|. Приведите эффективный алго- алгоритм для нахождения минимального реберного покрытия графа. 4*. Пусть у графа G=(V, Е) множество вершин V равно {vt, и2, ... , vn]. Матрицей Татта Т(G) графа G назовем следующую (пХп)-матрицу: ( xtj, если [:>(, Vj\?E и i > /, Т (G)tJ = j - Хц, если [vt, vj\?E и i < /, \ 0 в противном случае, где xij— переменные. Покажите, что в G имеется полное паросочетание тогда и только тогда, когда det G"(G))#0. 5. Пусть 'У' — множество заданий, которые нужно выполнить на двух про- процессорах, и пусть все задания требуют одного и того же количества времени (скажем, 1). Предположим, что имеется ориентированный ациклический граф Р=(^, А), такой, что если (Уь J-^^A, то задание Ух должно быть выполнено раньше, чем У2. Следующая задача называется задачей о расписании для двух процессоров: для данного Р найти оптимальное расписание, т. е. такую функцию S f {1 2Г} рр д S: f -» {1 2 Г}, что I) \{J€f SJ)i\2 f { }, 1) \{J€f'- S(J)=i\<2 для всех 1<Г; 2) если [Ju J.2)?A, то S(y,)<S(y2); 3) Т имеет минимальное возможное значение. а) Пусть Gp=(^, Ер), где [У,, ./2]g?pтогда и только тогда, когда в Р не су- существует пути как из У, в У2, так и из J.2 в j1. Предположим, что М — макси- максимальное паросочетание в Gp. Покажите, что наименьшее достижимое Т должно удовлетворять неравенству T^\/jf\ — \М\ (вспомните задачу 3). б*) Покажите, что всегда существует расписание, для которого Г=|^|—\М\. Приведите эффективный алгоритм нахождения оптимального расписания (ср. с теоремой 15.5). 6. В ориентированном графе каждая дуга имеет начало и конец. Биориенти- рованный граф (V, А) также содержит множество вершин и множество дуг, однако в нем дуги могут иметь либо начало и конец, либо два начала, либо два конца. Биориентированная сеть N=(s, t, V, А, Ь) — эго сеть, в которой (V', А) — биори- ентированный граф. Кроме того, s не является концом никакой дуги и t не являет- является началом никакой дуги. Поток f в N — это такая функция из Л в Z+, что/(а)-< <.Ь(а) для всех а?А и для каждой вершины v^V—{s, t} выполняется равенство a: v — начало а а: v— конец а Величина потока / равна 2 /и- а: ¦! — начало а Покажите, что задачу о паросочетании в произвольном графе молено эффективно свести к задаче о максимальном потоке в биориентированной сети с единичными пропускными способностями. (Ср. с § 10.3).
Задачи 251 7*. Покажите, что любую индивидуальную задачу о потоке в биориентиро- ванной сети с единичными пропускными способностями можно эффективно свести к индивидуальной задаче о паросочетании. 8. Покажите, приведя соответствующий пример, что если G—(V, Е) — граф, М — паросочетание в G и b — цветок (цикл с 2т+1 ребрами, т из которых принадлежат М), то следующее утверждение может быть неверным: увеличиваю- увеличивающий путь в G относительно М существует тогда и только тогда, когда существует увеличивающий путь в Gib относительно M/b. Ср. с теоремой 10.4. 9. Примените алгоритм, приведенный на рис. 10.13, для увеличения паро- сочетания, показанного ниже. V9 О 13 12 10. Цель этой задачи — показать, что соответствующим образом реализуя процедуры ЦВЕТОК и УВЕЛИЧЕНИЕ, можно понизить время работы алго- алгоритма построения паросочетапия в произвольном графе, приведенного на рис. 10.13, до О(|1/|3). а) Предположим, что для каждого ребра е текущего графа, которого не было в предыдущем текущем графе, хранится ребро пред[е] из предыдущего текущего графа, которому соответствует е. Покажите, что при использовании этого приема каждое выполнение процедуры УВЕЛИЧЕНИЕ требует О(Ц/|2) времени. б*) Покажите, как реализовать процедуру ЦВЕТОК (которая теперь долж- должна также пересчитывать массив пред) 1ак, чтобы общее время, затрачиваемое на все вызовы этой процедуры, составляло О(|К|2) на этап. 11. Задача о паросочетании в ориентированном графе формулируется следую- следующим образом. Для данного орграфа D=(V, А) найти такой подграф (V, М), чтобы степень захода и степень исхода каждой вершины из V в подграфе (V, М) была равна 1. Приведите эффективный алгоритм для решения задачи о паросочетании в ориентированном графе путем сведения ее к задаче о паросочетании в дву- двудольном графе. 12. Задача о b-сочетании формулируется следующим образом. Для данных двудольного графа B=(V, U, Е) и функции b: VU U -^ Z+ выяснить, существует ли такое подмножество Мя^.Е, что каждая вершина и? V[j U инцидентна Ь ребрам из М. а) Приведите алгоритм для задачи о b-сочетании со сложностью б) Приведите алгоритм для задачи о b-сочетании со сложностью О (| VI3). 13*. Приведите полиномиальный алгоритм для задачи о ft-сочетании в про- произвольных графах. (Указание: постройте новый граф, имеющий b(v) новых вер- шии для каждой вершины v и по две новые вершины для каждого ребра; найдите полное паросочетание в этом графе). 14. Задача о паросочетании с узким местом формулируется следующим об- образом. Для данного графа G~(V, Е) и весов w: ?-> Z+ найти такое полное паро-
252 Гл. 10. Алгоритмы для задачи о паросочетании сочетание М, чтобы maxegA1 w(e) был как можно меньше. Приведите полино- полиномиальный алгоритм для этой задачи. 15*. Приведите полиномиальный алгоритм для следующей задачи. Для данных графа G=(V, E), разбиения множества V на два подмножества А и В и двух целых чисел а и Ь найти такое паросочетание М, чтобы не меньше чем а вершин из А, и не меньше чем b вершин из В, были инцидентны ребрам из М. 16. Задача об упаковке контейнеров формулируется следующим образом. Даны п целых чисел {(-,, ... , сп) и дополнительно целое число В — вместимость контейнера, и требуется найти такое разбиение данных целых чисел по контей- контейнерам, чтобы сумма всех целых чисел в каждом контейнере не превышала В и чис- число контейнеров было минимальным Покажите, что если числа Cj удовлетворяют неравенству су>#/3, то задачу об упаковке контейнеров можно сформулировать как задачу о паросочетании. Решите затем ее наиболее простым способом. Комментарии и ссылки Алгоритмы для нахождения паросочетания в двудольном графе известны довольно давно; см., например, [На] Hall M., Jr. An Algorithm for Distinct Representatives, American Math. Month- Monthly, 63 A956), 716—717. [FFJ Ford L. R., Fulkeison D. R. Flows in Networks. Princeton, N. J.: Princeton Univ. I3!ess, 1902. [Имеется перевод: Форд Л- Р., Фалкерсои Д. Р. Потоки в сетях.— М.: Мир, 1963.] Теорема 10.1 (об увеличивающем пути) была независимо доказана в работах [Bel Bcrge С. Two Theorems in Graph Theory, Proc- National Acad. of Science, 43 A957), 842—844. iNRl Norman R. Z., Rabin M. O. An Algorithm for a Minimum Cover of a Graph, Proc. American Math Society, 10 A959), 315—319. Интересно, что долгое время господствовало мнение, что эта теорема непосред- непосредственно дает эффективным алгоритм для построения паросочетания в недвудоль- недвудольном графе. Эдмондс первым указал на сложность этой задачи и привел для нее элегантное решение. [Ed] Edmonds J. Paths, Trees and Flowers, Canad. J. Math., 17 A965), 449—467. Алгоритм для двудольного случая из § 10.3 со сложностью О([Vl'^lEl) взят из работы [HKl Hopcioft J. E., Karp R. M. A n1* Algorithm for Maximum Matching in Bi- Bipartite Graphs, J. S1AM Сотр., 2 A973), 225—231. Тот факт, что этот алгоритм является частым случаем алгоритма построения максимального потока для простой сети, впервые был отмечен в работе (ЕТ] Even S., Tarjan R. E. Network Flow and Testing Graph Connectivity, J. S1AM Сотр., 4, No- 4 A975), 507—512. Самый быстрый из известных алгоритмов для задачи о паросочетании в недву- дольном графе описан в работе [MV| Micali S., Vazirani V. V. An OiV~\V\'\E\) Algorithm for Finding Maximum Matching in General Graphs, Proc. Twenty-first Annual Symposium on the Foundations of Computer Science, Long Beach, California: IEEE A980), 17—27. Более ранний алгоритм, менее эффективный для разреженных графов, изложен в работах 1ЕК) Even S., Kariv О. An О{пг'ъ) Algorithm for Maximum .Matching in Gci',  Graphs, Proc. Sixteenth Annual Syuip on Foundation* ot Gmi'MUw Sv.i-n.x-,
Комментарии и ссылки 253 Berkeley, California: IEEE A975), 100—112. [Ка] Kariv О. An O(«25) Algorithm for Maximum Matching in General Graphs (неопубликованная диссертация, Technion, Haifa, Israel, 1977). Задача 3 взята из [NR], задача 4 — из работы [Tu] Tutte W. T. The Factors of Graphs, Canad. J. Math., 4 A952), 314—328. Задача 5 взята из работы [FKN] Fujii M., Kasami Т., Ninamiya К- Optimal Sequencing of Two Equivalent Processors, J. SIAM, 17 A969), 784—789, а задача 15 — из [PYJ Papadimitriou С. Н., Yannakakis M. The Complexity of Restricted Spanning Tree Problems, pp. 460—470 in Automata, Languages and Programming, ed. H. A. Maurer. Berlin: Springer-Verlag, 1979.
11 Взвешенное паросочетание 11.1 Введение Значительно более сложной представляется задача о парссоче- тании, в которой задан графС=(У, Е) и каждому ребру [vt, Vj]?E сопоставлено число wtj ^ 0, называемое весом ребра [vh vj]. Пред- Предлагается найти паросочетание в G с наибольшей возможной суммой весов. Очевидно, что задача о невзвешенном паросочетании, кото- которую мы рассматривали в предыдущей главе (называемая иногда задачей о мощности паросочетания),— это частный случай задачи о взвешенном паросочетании: достаточно положить wtj=l для всех [vt, Vj]eE. Нетрудно видеть, что в формулировке задачи о взвешенном паро- паросочетании можно убрать граф G, приняв соглашение, что этот граф всегда полный, и полагая веса тех ребер, которых нет в G, равными нулю. Кроме того, всегда можно считать, что число вершин четно — в противном случае можно добавить новую вершину и положить веса всех ребер, инцидентных этой вершине, равными нулю. Если рас- рассматривается двудольный случай этой задачи, также можно считать, что граф представляет собой полный двудольный граф с двумя мно- множествами вершин одинаковой мощности. Отметим также, что опти- оптимальные решения обязательно будут полными паросочетаниями (так как тц ^ 0), и, следовательно, можно формулировать эти зада- задачи как задачи минимизации, рассматривая стоимости Сц — W—тц, где W больше, чем все ииц. Всюду в этой главе будет рассматривать- рассматриваться именно такой вариант задачи. Как и задача о мощности паросочетания, задача о взвешенном паросочетании значительно проще в двудольном случае. Задача о взвешенном паросочетании в двудольном графе известна еще и как задача о назначениях, поскольку в принципе ее можно применять для вычисления наилучшего назначения работ рабочим в предполо- предположении, что известна величина wt], производимая t-м рабочим при выполнении у-й работы. Задачу о назначениях можно описать как упрощенную задачу линейного программирования, являющуюся частным случаем задачи Хичкока (см. § 7.4), и поэтому ее можно решать, применяя прямо-двойственный метод, называемый в этом частном случае венгерским методом. Венгерский метод позволяет решать задачу о взвешенном паросочетании для полного двудоль- двудольного графа с 2|V| вершинами за O(|V|3) арифметических операций.
11.2. Венгерский метод для задачи о назначениях 255 При попьпках применить тот же подход в недвудольном случае оказывается, что задачу о взвешенном паросочетании не удается точно сформулировать как задачу линейного программирования. Здесь имеется в виду то, что соответствующая задача линейного про- программирования имеет базисные допустимые решения, не соответст- соответствующие паросочетаниям. Не удивительно, что эта патология снова связана с наличием цветков. Поэтому мы должны обнаруживать такие цветки и, несмотря на их наличие, находить увеличивающие пути. Однако в случае взвешенного паросочетания та часть нашей задачи, которая относится к теории графов, проще как теоретиче- теоретически, так и алгоритмически. Трудная часть состоит в таком усовер- усовершенствовании формулировки соответствующей задачи линейного программирования, чтобы она точно описывала нашу задачу, что позволит разработать подходящий прямо-двойственный алгоритм. Способ, который при этом используется, являе1ся красивым приме- применением теории двойственности. Алгоритм нахождения взвешенного паросочетания для произвольных графов, который будет построен в § 11.3, имеет сложность О(|К|4); в задаче 14 будут указаны усовер- усовершенствования, необходимые для понижения сложности до О(| 1^[3). 11.2 Венгерский метод для задачи о назначениях Приведем простую алгебраическую формулировку задачи о взвешенном паросочетании в двудольном графе. Пусть хи — мно- множество переменных для t=l,. . ., п и /=1,. . ., п, где п — число вершин в множествах V и О в полном двудольном графе B=(V, U, Е), Здесь Хц=\ означает, что ребро \vt, Vj] включается в паро- паросочетание, в то время как хц= 0 означает обратное. Для того чтобы эти величины представляли полное паросочетание, необходи- необходимо выполнение следующих условий: п 2 х{/— 1, i= 1, ..., п, 2j xtj= I, / = 1, ..., п, х„ > 0. Наша цель — минимизировать ^^с^х^. Таким образом, мы получили задачу линейного программирования (являющуюся част- частным случаем задачи Хичкока из гл. 7, в которой т=п и все а и Ь равны 1), которая в некотором смысле описывает задачу о назна- назначениях. К сожалению, невозможно записать с помощью линейных неравенств наше условие о том, что переменные xtj должны прини- принимать только значения 0 и 1. Поэтому наша задача линейного прог- программирования в принципе может иметь дробное оптимальное реше-
256 Гл. 11. Взвешенное паросочетание Рис. 11.1. ние, не соответствующее никакому допустимому паросочетанию. Соответствующий пример приведен на рис. 11.1. К счастью, здесь так же, как в аналогичной ситуации, связанной с задачей о максимальном потоке (см. § 9.5), работает некая таин- таинственная дружественная сила. Хотя такие дробные решения, очевидно, существуют, они никогда не являются базисными допустимы- допустимыми решениями рассматриваемой задачи ли- линейного программирования. Поэтому если мы захотим решать эту задачу линейного программирования, используя симплекс-ал- симплекс-алгоритм (любой его вариант), то можем быть уверены, что заключительное оптимальное решение будет не дробным, т. е. будет соот- соответствовать реальному паросочетанию. В гл. 13 будет разработана теория вполне унимодулярности, которая позволит полностью понять это явление. Здесь же мы при- приведем конструктивное доказательство того, что всегда существует оптимальное решение задачи (А), соответствующее «реальному» полному паросочетанию. Наше конструктивное доказательство основано просто на применении прямо-двойственного метода к этой задаче линейного программирования путем комбинаториализации ее стоимости, так же как это делалось для более общей задачи Хич- Хичкока в гл. 7. Лемма 11.1. Приведенный на рис. 7.9 алгоритм АЛЬФАБЕТА в применении к задаче тхп^^^с^х^ nPu ограничениях (А) дает оптимальное решение задачи о назначениях. Доказательство. Очевидно, алгоритм порождает оптимальное решение рассматриваемой задачи линейного программирования. Остается установить, что все х1} в полученном оптимальном реше- решении целочисленны, т. е. имеют значения 0 или 1. Это, однако,сле- однако,следует из того факта, что оптимальное решение, отыскиваемое алгорит- алгоритмом АЛЬФАБЕТА, является решением некоторой задачи о макси- максимальном потоке с целочисленными (на самом деле 0 или 1) пропу- пропускными способностями (вспомните рис. 7.8). Q Несколько модифицируем алгоритм АЛЬФАБЕТА для того, чтобы применить его к задаче о назначениях. В результате он примет вид алгоритма поиска паросочетания, напоминающего алгоритм, разработанный в предыдущей главе. Кроме того, будет существенно понижена его асимптотическая сложность. Напомним, что этот алгоритм решает постоянно изменяющуюся ограниченную прямую (ОП) задачу, которая в нашем случае является задачей о максималь- максимальном потоке. При этом легко понять, что ОП оказывается задачей о невзвешенном паросочетании в двудольном графе, состоящем из допустимых на данном этапе ребер (т. е. тех ребер, для которых
11.2. Венгерский метод для задачи о назначениях 257 для двойственных переменных at и р^ вспомните §5.1), которую мы решим, применяя алгоритм, представленный на рис. 10.3. Во время поиска увеличивающего пути мы можем столкнуться с отсутствием прорыва — это будет означать, что невозможно произ- произвести увеличение в имеющемся множестве допустимых ребер. В этом случае изменим двойственные переменные щ и p^ так, чтобы появи- появились новые допустимые ребра, и возобновим поиск увеличивающего пути. После нахождения увеличивающего пути используем его для увеличения паросочетания и начинаем все сначала. Назовем вычисления между двумя последовательными увеличе- увеличениями этапом. Тогда этап состоит из поиска увеличивающего пути в двудольном графе, составленном из допустимых ребер, чередующего- чередующегося с модификациями двойственных переменных, изменяющими мно- множество допустимых ребер (на рис. 11.2 это соответствует вызовам процедуры МОДИФИЦИРОВАТЬ). Для модификации двойствен- двойственных переменных необходимо вычислить (вспомните равенства G.13)) 0, = у rain (с,,—а,—Р,), где минимум берется по всем помеченным вершинам vt^V и непоме- непомеченным вершинам ufcU (имеется в виду полный двудольный граф с Еершинами V= {t>i,. . ., vn} и U= {ult. . ., un}). Вычисление заново этой величины каждый раз, когда модифицируются двойственные переменные, путем сравнения п2 кандидатов могло бы быть очень дорогим. Мы разрешим эту проблему путем хранения и пересчета *) двух массивов невязкаЫ}] и coced[uj] для 1=1,. . ., п, где невязка [и}\ — это минимум (ctj—at—р;) по всем помеченным вершинам vt и cocedluj] — выделенная помеченная вершина vt, на которой достигается невязка\и1]. Таким образом, невязка\и]]=0 означает, что [соседЫ]], и}] — допустимое ребро. Для вычисления 9i достаточно выбрать наименьшую ненулевую невязку, а это требует только О (п) времени. Описанный алгоритм приведен на рис. 11.2, а следующая теорема посвящена анализу его работы. Теорема 11.1. Венгерский метод, представленный на рис. 11 2, корректно решает задачу о назначениях для полного двудольного графа с 2п вершинами, используя O(ns) арифметических операций. Доказательство. Легко проверить, что алгоритм, представлен- представленный на рис. 11.2, является применением алгоритма АЛЬФАБЕТА к задаче о назначениях; поэтому его корректность следует из лем- леммы 11.1. Для получения временной оценки заметим вначале, что возмож- возможно не более п+1 этапов, поскольку каждый этап, за исключением г) Читатель должен заметить, что этот маневр со структурой данных аналоги- аналогичен тому, который был использован в алгоритме Дейкстры в гл. 6. ' № 3032
258 Гл. 11. Взвешенное паросочетание ВЕНГЕРСКИЙ МЕТОД Вход. Матрица [сц] размера пХп с неотрицательными целочисленными эле- элементами. Выход. Оптимальное полное паросочетание (представленное массивом напар- напарник) в полном двудольном графе B = (V, U, Е) с числом вершин |V| = |U|=n и стоимостями cjj. begin for all VigV do напарниках] := 0, <x\ := 0; for all Uj?U do напарник[и^] := 0, Pj := min {сц}; (comment: задание начальных значений) for i := 1, ..., n do (comment: повторить для п этапов) begin А:=0; for all vgV do свободная\\\ :— 0; for all u?U do невязка[1\] := oo; for all Vj, Uj для которых Vj^V, Uj?U и <Zi + pj=Cjj do If напарник[и\] = 0 then свободная[Ч[] := Uj; else A := A(J{(Vi, напарник[и^])}; (comment: построение вспомогательного графа) поиск: Q:=0; for all vj gV do if HanapHUK[v[] = O then begin If свободная[\\\ Ф 0 then УВЕЛИЧЕНИЕ^), go to конецэтапа; Q:=QU{vi}; пометка[ч\] := О; for all ujj^U do if 0 < cik— 04— Pk < невязка[и^] then end; j ; while Q Ф 0 do begin пусть Vj — любая вершина из Q; удалить vj из Q; for all непомеченные Vj?V, такие, что (vi, V))?A do begin пометка[\Л := vi; Q;=QU{vj}; if свободная[Ч)\ Ф 0 then УВЕЛИЧЕНИЕ^), go to конецэтапа; for all UkgU do if 0 < Cjk —aj —Pk< невязка{\1]^\ then невязка[и^] := Cjk—ocj—Pk. co«5[uk] := Vj; end end; МОДИФИЦИРОВАТЬ; go to поиск конецэтапа: end end procedure МОДИФИЦИРОВАТЬ (comment: она вычисляет 9j, пересчитываем все а и р и привлекает но- новые вершины для продолжения поиска)
11.2. Венгерский метод для задачи о назначениях 259 begin 8i := -v min 1невязка[и] > О}; ¦^ U6U for all Vi?V do if Vi помечена then ai:=<zj-(-9i else <zi:=<Zj — 9X; for all u.gU do If невязка[и^]=0 then Pj:=|3j —9X else Pj:=Pj + 91; for ail 11 gU, для которых невязка[и] > 0 do begin невяжа[и] := невязка[и]—29i; If невявка[и] =0 then (comment: новое допустимое ребро) If напарник[и] — 0 then свободная[сосед[и)] := и, УВЕЛМЧЕНИЕ(сосе<Э[и]), go to конецэтапа; else (comment: напарник[\х] Ф 0) пометка[ш1Парник[и]] := coced[u], Q := QU[напарник[а]}, А := Ау {(сосе<5[и], напарник[и])}; end end Рис. 11.2. Венгерский метод. последнего, увеличивает паросочетание на одно ребро. Для анализа каждого этапа рассмотрим сложность поиска и модификации двой- двойственных переменных по отдельности. Поиск можно выполнить за О(п2) операций, поскольку никакая вершина не включается в очередь второй раз на одном и том же этапе и удаление вершины из Q обходится в О(п) операций. С другой стороны, при каждой модификации двойственных переменных либо помечается новая вершина v?V, либо производится увеличение, и этап оканчивается. Поэтому на каждом этапе возможно самое большее п модификаций двойственных переменных. Каждая модификация требует времени О(п). Следовательно, каждый этап требует О(п2) операций, откуда получается нужная оценка. ? Пример 11.1 (венгерский метод в матричной форме). Задачу о на- назначениях и венгерский метод можно рассматривать на языке мат- матриц. При эгом стоимости сц являются элементами некоторой (пХп)- матрицы, а элементы множеств V и U идентифицируются соответ- соответственно со строками и столбцами этой матрицы. Так, следующую матрицу можно рассматривать как пример задачи о назначениях, которую нужно решить венгерским методом. C32112 а 0 7 9 3 7 8 2 6 8 9 4 1 9 3 4 7 9 5 1 2 4 4 5 8 2 8 9*
260 Гл. П. Взвешенное паросочетание Целые числа, стоящие по краям матрицы, являются соответст- соответственно начальными значениями at и $}. Числа, выделенные жирным шрифтом, обозначают допустимые ребра. Тогда первые три раза поиск будет сразу же приводить к успеху, в результате чего ребра [vi, hJ, \v3, «J и [и4, «J включаются в паросочетание Ситуация, возникающая при следующем поиске, представлена ниже. C321 1 2 а 0 невязка: s 1 9 (з) 7 8 (Т) 6 8 9 4 1 9 3 4 7 9 5 1 2 4 4 5 8 (Т) 8 сосед: 5 5 Граф, состоящий из допустимых ребер, приведен справа (помечен- (помеченные у-вершины указаны звездочками). В левой части кружками вы- выделены ребра паросочетания, а помеченные строки (у-вершины) от- отмечены галочками. Массивы невязка\и}] и соседЫ]] приведены под соответствующими столбцами. Очевидно, в данной ситуации необходимо произвести модифика- модификацию двойственных переменных. Наименьшая ненулевая невязка равна 2, поэтому 9, = 1. В результате получаем /3 4 3 2 2 3 v" 1 -1 -1 7 9 (з) 7 8 (Т) 6 8 9 4 1 9 3 4 7 9 5 1 2 4 4 5 8 © 8 Ребро [у5, и2\ добавлено к допустимому графу, и никакие ребра не удалены. Возобновляя поиск, замечаем, что вершина, для кото-
11.2. Венгерский метод для задачи о назначениях 261 рой значение свободная отлично от нуля, помечена. Паросочетание увеличивается, и поиск начинается снова, завершаясь в ситуации: 1 невязка: 4 сосед: 2 7 9 (з) 7 8 2 6 8 9 (Т) © 9 3 4 7 9 5 1 2 4 4 5 8 8 2 6 2 1 2 2 2 2 *"гО Теперь 9! = 1/2, и модификация приводит к следующим таблице и опустимому графу: /3 4.5 3.5. 2.5 2.5 3.5 -1.5 1,5 -1.5 -1.5 0.5 7 9 (з) 7 8 2 б 8 9 (Т) © 9 3 4 7 9 • 5 1 2 4 4 5 8 © 8 невязка: 3 13 10 сосед: г • г \ г 2 Отметим, что во время вызова процедуры МОДИФИЦИРОВАТЬ была помечена вершина vt. Опять 61=1/2, и получаем
262 Гл. П. Взвешенное паросочетание 0 S 7 9 (з) 7 8 г- 6 8 9 © ® 9 3 4 7 9 5 1 2 4 4 5 8 © 8 О Здесь имеется увеличивающий путь [и2, мб, и4, «J. Ниже приведено получаемое в результате оптимальное паросочетание 7 9 О 7 8 2 6 8 9 © © 9 3 4 7 9 5 1 О 4 4 8 2 8 Его стоимость 15 совпадает с 11.3 Задача о взвешенном паросоче:ании в произвольном графе Общую задачу о паросочетании можно сформулировать следую- следующим образом: min 2 СцХц i. ! при условиях *) 0, 1 < i < / < п, % : A1.1) (П.2) где я предполагается четным. Так же как в случае задачи о назна- назначениях, эта задача линейного программирования может иметь дроб- дробные оптимальные решения, бессмысленные с точки зрения паросо- По определению хц—0 и xij=
11.3. Задача о взвешенном паросочетании четаний. Однако теперь дела намного хуже. Эти дробные решения могут быть базисными допустимыми решениями приведенной выше задачи ЛП. Это означает, что любой метод, аналогичный симплекс- алгоритму, будет для некоторого множества стоимостей заведомо приводить к такому решению. Рассмотрим пример, приведенный на рис. 11.3. Единственным оптимальным решением, соответствующим указанным стоимостям (опущенные ребра имеют стоимость, скажем, 100), является решение xi2=Xit=xgs=xi7=x,i=xii=xie=xie='l/2. Рис. 11.3. Таким образом, оптимум достигается при присвоении переменным, соответствующим всем ребрам в циклах нечетной длины, значения 1/2 С другой стороны, из предыдущего параграфа нам известно, что такие проблемы никогда не возникают при отсутствии циклов нечетной длины. Отсюда легко предположить, что именно из-за наличия циклов нечетной длины указанная выше задача ЛП неа- неадекватно описывает задачу о паросочетании. Следующая теорема подтверждает, что это действительно связано с наличием циклов нечетной длины, причем в очень сильной степени: для того чтобы описать общую задачу о паросочетании, достаточно добавить неко- некоторые ограничения, при которых патологии, аналогичные приве- приведенной для рис. 11.3, не могут быть допустимыми. Напомним, что п считается четным. Рассмотрим все подмножест- подмножества множества {1,2,. . ., п}, мощность которых нечетна и больше 1. Легко проверить, что имеется N=2"~1—n таких подмножеств. Пусть Si, S2,¦ • •', SN— некоторая нумерация этих подмножеств; мощность подмножества Sj будет обозначаться через |S/| Теорема 11.2 (Эдмондс). Общая задача о паросочетании для множества стоимостей {с,;- ¦ l^t</^n} эквивалентна задаче ЛП: минимизировать
264 Гл. И. Взвешенное паросочетание учитывая ограничения A1.1) и A1.2), а также новый класс ограни- ограничений (по одному для каждого подмножества Sh) 2 Xv+y^Sb, yk^0 для k=l, 2, ..., N. (П.З)П i На первый взгляд несколько разочаровывает тот факт, что в при- приведенной формулировке задачи ЛП имеется экспоненциально боль- большое число строк. Однако мы увидим, что это несущественно. Условие A1.3) просто утверждает, что ни на каком множестве, содержащем нечетное число вершин, не может быть больше соответствующего числа ребер паросочетания и(/к — переменная недостатка. Очевид- Очевидно, все допустимые паросочетания удовлетворяют новым ограниче- ограничениям. Отметим, что эти ограничения не допустили бы патологиче- патологического оптимума в примере на рис. 11.3. Действительно, оптималь- оптимальным решением рассматриваемой задачи ЛП при ограничениях A1.1), A1.2) и A1.3) для стоимостей, приведенных на рис. 11.3, будет *i2—*8g=*4B=;ce,= l, что соответствует правильному паросо- четанию. Следовательно, для доказательства теоремы достаточно показать, что задала ЛП с ограничениями A1.1), A1.2) и A1.3) всегда имеет целочисленное оптимальное решение, т. е. решение, соответствующее паросочетанию. Наше доказательство будет кон- конструктивным. Мы просто покажем, что прямо-двойственный метод из гл. 5 приводит к Целочисленному решению, а мы знаем, что он приводит к оптимуму. Однако более интересно то, что примене- применение прямо-двойственного метода к описанной выше задаче ЛП при- приведет нас к эффективному алгоритму для общей задачи о паросоче- тании. Задача Д, двойственная к задаче ЛП с ограничениями A1.1), A1.2) и A1.3), имеет вид max 2 «, + 2 s*Y* при условиях «,- + «/+ 2 Y*<c</ для всех t, /<л, 1.11.4) t. /eSfe Уа^О для всех k^.N, U1-5) где а соответствуют ограничениям из A1.1), а у — ограничениям из A1.3). Прямо-двойственный алгоритм будет решать задачу о взвешенном паросочетании следующим образом. Начинаем с допустимого двой- двойственного решения y*=0 для всех k и ау=1/2 тт,{с;7}. Затем производим несколько итераций, во время которых решаем ограни- ограниченную прямую (ОП) задачу и соответственно изменяем двойствен- двойственные переменные. ОП, как обычно, будет зависеть от множества до- допустимых переменных в двойственной задаче, описываемой услови- условиями A1.4) и A1.5). Множеством допустимых переменных будет мно-
11.3. Задача о взвешенном паросочеташш 265 жество J=Je\]Jh, где Je—множество допустимых ребер, т.е. тех ребер, для которых в A1.4) имеет место равенство, a Jь — мно- множество допустимых нечетных множеств, т. е. тех множеств Sh, для которых Yfe=0- Пусть Jъ обозначает множество всех нечетных множеств, не входящих в Jь. Тогда задача ОП имеет вид п N ming = 2i' + 2 '= 1, i=i, ..., п при условиях п \ 2 (П.6) A1.7) A1.8) A1.9) (из-за множителя 2 в функции стоимости некоторые у в задаче, двой- двойственной к ОП, могут равняться 2). Следовательно, задача, двойст- двойственная к ОП (ДОП), имеет вид п N max 2 «;+ 2 skyk при условиях «, + ау+ 2 Yft<°. [vt, V;]<iJe, A1.10) yk<0, Sk?Jb, A1.11) a,- ^ 1 для всех t, V^^2 для всех k, где a соответствуют ограничениям из A1.6) и у — ограничениям из A1.7). Остальной материал параграфа будет посвящен установлению того факта, что двойственные переменные а, и yh на протяжении всего прямо-двойственного алгоритма таковы, что задачи ОП и ДОП «комбинаторны» по своей природе и, следовательно, всегда дают целочисленные решения задачи ОП. Поскольку окончательное решение задачи ОП является решением для A1.1), (П-2) и A13), то этим теорема 11.2 будет доказана. Допустим на время, что теку- текущие значения переменных а и у из задачи Д и оптимальное решение Xjj соответствующей задачи ОП таковы, что выполняется Предположение, а) Переменные Хц принимают значения 0 или 1 и образуют паросочетание в графе (У, Jе). б) Если Sk?Jb (т. е. yk<0), то граф (V, Je), ограниченный на множество Sk, содержит sk ребер паросочетания. (Отсюда вы- вытекает, что множество Sk является полным, т.е. 2 xij = sk-)
266 Гл. И. Взвешенное паросочетание в) Если Slt Sk?Jb и SinSk^ 0t то либо S, s Ss, либо При этом предположении можно забыть об ограничениях A1.7) в задаче ОП, задаваемой ограничениями A1.6), A1.7), A1.8) и A1.9), поскольку если Уь = ®, то yk может быть положитель- положительным, и, следовательно, его можно бесплатно использовать для заполнения разрыва между 2 % и s*; c Другой стороны, если Y* < 0 (т.е. Sk?Jb), то, согласно п. б) нашего предположения, нет такого разрыва, который бы нужно было заполнять. Таким образом, можно взять x%+k = 0 для &=1, ..., N, что мы и будем делать в дальнейшем. Определим теперь допустимый граф GJt соответствующий Je и Jb. Граф Gj получается из графа (V, Jв) после стягивания всех нечет- нечетных множеств, содержащихся в Jb. Например, если л=12 и Je и Jb таковы, как показано на рис. 11.4(а), то G, будет иметь вид, приведенный на рис. 11.4F). Заметим, что п. в) нашего предполо- предположения нужен для того, чтобы граф Gj был корректно определенным. Далее, назовем паросочетание в графе (V, Jе) правильным, если все нечетные множества из 1Ь являются полными. Например, на рис. 11.4(а) показано максимальное правильное паросочетание в графе (V, Jе). Заметим, что оно не является максимальным паросо- четанием в графе (V, Je). Лемма 11.2. В графе Gj существует паросочетание с d свободными вершинами тогда и только тогда, когда в графе (V, Jе) существует правильное паросочетание с d свободными вершинами. Доказательство. Читатель может проследить соответствие на рис. 11.4. Имея правильное паросочетание в графе (V, Jе), можно перейти к паросочетанию в Gj, просто стягивая максимальные не. четные множества из Jb; при этом число свободных вершин не изме- изменяется, поскольку исходное паросочетание было правильным. Для доказательства обратного утверждения достаточно превратить паро- паросочетание в Gj в правильное паросочетание в графе (V, Jе), расширяя нечетные множества и заполняя их подходящим образом ребрами паросочетания. Расширенное нечетное множество будет содержать свободную вершину в том и только в том случае, если оно само явля- являлось свободной вершиной в GJ% ? Одно из следствий этой леммы состоит в том, что можно найти максимальное по мощности правильное паросочетание в графе (V, Jе), находя максимальное по мощности паросочетание в Gj. Это очень важно ввиду следующего утверждения. Утверждение. Оптимальное решение {х1}} задачи ОП является максимальным правильным паросочетанием в графе (V, J е).
11.3. Задача о взвешенном паросочетйнии 267 Согласно A1.6), значение указанного в утверждении оптимума равно /=1 /=1 l.i ' что совпадает с числом d свободных вершин в максимальном прави- правильном паросочетании в графе (V, Jе). Мы докажем наше утвержде- (a) U|,U,.U,.U4.U10) ние, приведя решение задачи ДОП, на котором достигается та же стои- стоимость d. Предположим, что мы нашли максимальное паросочетание в графе Gj с помощью алгоритма из предыдущей главы. Это озна-
268 Гл. 11. Взвешенное паросочетание чает, что нам не удалось обнаружить увеличивающий путь в текущем графе Gc, полученном из Gj стягиванием нескольких цветков. Множество вершин графа Gc состоит из псевдовершин. Псевдоверши- Псевдовершины могут быть следующих типов: 1) вершина множества V; _ 2) максимальное нечетное множество Jb\ 3) несколько вершин из У и максимальных нечетных множеств из Jb, слитых в наибольший относительно включения цветок (т. е. цветок, не содержащийся ни в каком другом цветке) графа Gj. Псевдовершина графа Gc может быть либо внешней (достижимой из свободной вершины по чередующемуся пути четной длины), либо внутренней (напарником внешней псевдовершины), либо ни той, ни другой. Следовательно, множество V разбивается на множества О внешних вершин (вершин, входящих во внешние псевдовершины), / (вершин, содержащихся во внутренних псевдовершинах) и мно- множество остальных вершин. Аналогично, вершины графа Gc, не яв- являющиеся вершинами множества V, разбиваются на множества Wo (максимальные нечетные множества, соответствующие внешним псевдовершинам или цветкам), W, (максимальные нечетные множе- множества, соответствующие внутренним псевдовершинам) и множество остальных вершин. В примере на рис. 11.4F) Gc~GJt O = Hi> yia. va, vu vt, v3, vt, vw\, ft I Vo={{vlt v2, v3, vit vlo\\, T/HK vt, v9\]. Определим теперь искомое решение задачи ДОП: если Vj gO, а, = —', если Vj?l, в противном случае; если Sk ? Wo, Yfe=i 2, если Sh€Vlt в противном случае. Легко понять, что эти значения удовлетворяют условию A1.11), поскольку WjSJf Неравенство A1.10) также выполняется, так как если [vt, Vj]^Je, то A1.10) может нарушаться, только если Щ, vj?O. Но это означает, что vt и Vj принадлежат одной и той же псевдовершине (они не могут принадлежать различным внешним псевдовершинам, так как тогда эти две псевдовершины образовы- образовывали бы цветок), и, следовательно, в неравенстве A1.10) имеется сла- слагаемое 7й=—2, что приводит к справедливости этого неравенства.
11.3. Задача о взвешенном паросочетании 269 Стоимость указанного решения равна 2 sk. A1.12) Теперь можно заметить, что A1.12) — это число внешних псев- псевдовершин в Gc минус число внутренних псевдовершин; это в свою очередь совпадает с числом свободных вершин в Gc, которое по лемме 11.2 равно числу свободных вершин в максимальном правиль- правильном паросочетании в графе (V, Jе). Это в точности совпадает с ука- указанной в утверждении оптимальной стоимостью задачи ОП. Таким образом, оптимальность установлена и утверждение доказано. Сле- Следовательно, все решения задачи ОП будут максимальными пра- правильными паросочетаниями. Это справедливо также для последней итерации, после которой оптимальное решение задачи ОП совпадает с оптимальным решением задачи ЛП, задаваемой ограничениями A1.1), A1.2) и A1.3). Остается доказать наше предположение, которое мы очень давно приняли. Это довольно легко сделать индукцией по числу итераций. Оно, очевидно, выполняется на первой итерации, поскольку перво- первоначально все у и Х{] равны нулю. А приведенные выше рассуждения доказывают, что если наше предположение выполняется в начале не- некоторой итерации, оно также выполняется в начале следующей итерации. Это следует из того, что в Jb могут добавляться только цветки допустимого графа, а цветки, очевидно, являются полными. Кроме того, нечетные множества, которые уже содержались в 7Ь, остаются полными, так как максимальное паросочетание в ОП всегда является правильным паросочетанием. Наконец, п. в) нашего пред- предположения также сохраняется, так как к 7Ь добавляются только цветки из Gy, а они, очевидно, удовлетворяют п. в). Наше предполо- предположение доказано. Чтобы дать детальное описание алгоритма, необходимо показать, как модифицировать двойственные переменные. Напомним, что пара- параметр 0! вычисляется (см. E.16)) как минимум из величин с,7-а,--а/ и __д а/+а/+ 2 Vfe i, /mSfc где минимум берется по всем таким величинам, у которых знамена- знаменатель положителен. Первый знаменатель может быть положительным в двух случаях; 1) Щ, vfcO, но лежат в разных псевдовершинах графа Gc; в этом случае знаменатель равен 2; 2) Oi€0, v?V— I— О. Тогда а;+а,+ 2 Y*=l-
270 Гл. 11. Взвешенное паросочетание Наконец, Vh>0, если Sh^W,. Поэтому 01=minF1, б2, б3), где (Сц — Я| — ОС/ 1 Oj = min \ ——s : f/, t'; € О и лежат в разных псевдовершинах > , 62 = min{c,7—а,—а,: o,gO, 0/gl/—/ —О}, (П.13) 63 = min{-Vfe/2: Sk^,}. Описанный алгоритм представлен на рис. 11.5. Теорема 11.3. Алгоритм, представленный на рис. 11.5, корректно решает задачу о взвешенном паросочетании за время О (я4). АЛГОРИТМ ПОСТРОЕНИЯ ВЗВЕШЕННОГО ПАРОСОЧЕТАНИЯ Вход. Симметричная матрица [сц] размера пхп с неотрицательными цело- целочисленными элементами; п четно. Выход. Полное паросочетание М с наименьшей общей стоимостью при дан- данных Cji. begin for all VjgV do a; :=-g-min {cjj}; for all k do Yk := 0; M := 0; (comment: исходное паросочетание) Jb := 0; (comment: Jb содержит все нечетные множества S^, для которых Yk < 0) while | M | < n/2 do begin построить допустимый граф Gj , включив в него все ребра [vj, vj], для которых а; + а|+ 2 Yk = cij. и стягивая все множества S^ в Ль; i,issk найти максимальное паросочетанне в Gj , начиная с текущего паросочета- ния М; пусть Gc—текущий граф после применения алгоритма построения макси- максимального (невзвешенного) паросочетания к Gj ; пусть О —множество внеш- внешних вершин в Gc, I — множество внутренних вершин, ^о — множество внешних псевдовершин и V] — множество внутренних псевдовершин; вычислить 61 = minFb б2, б3) (comment: см. A1.13)) for all Vj^O do aj.-=aj + 6i; for all v;gl do aj:=a; —Gij for all SugVo do Yk:=Yk-2ei; for all Sk^V, doYk:=Yk+2ei; построить по максимальному паросочетанию в Gj максимальное правиль- правильное паросочетанне М в графе (V, Je); положить Ть := {Sk^JbU^o: Yk < 0} end end Рис. 11.5. Алгоритм построения взвешенного па- паросочетания.
11.3. Задача о взвешенном паросочетании Доказательство. Согласно нашему утверждению, этот алго тм является вариантом прямо-двойственного метода, примененнс'ИтМ к задаче ЛП, задаваемой ограничениями A1.1), A1.2) и A1.3). С^о кю- да с учетом теоремы 11.2 вытекает его корректность. Для получ^сю-ия временной оценки заметим, что алгоритм состоит из некотеНиято числа поисков увеличивающих путей, чередующихся либо с ^ чениями, либо с модификациями двойственных переменных. вем каждый поиск шагом, а последовательность шагов между д последовательными увеличениями этапом. Очевидно, не может'Умяггь /2 ^ у , больше чем я/2 этапов; далее мы оценим число шагов в каждом Шаг может быть одним из трех типов в зависимости от rorc^ne.iy- дет ли при его завершении 6,=бь 0j=62 или 0i=63- В первом1 бу-ty- чае две внешние вершины графа G, соединяются новым допустйу-эШ ребром. Это означает, что на следующем шаге мы обнаружим ^ымбо увеличивающий путь, либо цветок в зависимости от того, ^Ибо^з- личны или совпадают свободные вершины, из которых эти внеФаз-ие вершины достижимы по увеличивающему пути четной длины.'Ниеак как каждый цветок уменьшает размер текущего графа по кра^акей мере на 2, то не может быть больше чем я/2+1 шагов типа1Нейна одном этапе. ' на Если G1=62, то на следующем этапе обнаруживается и ая внешняя вершина. Это означает, что число шагов этого типа ' не превосходит я/2. Наконец, если 6i=63, то из Jь удаляет четное множество S^, соответствующее внутренней псевдовер] не- не графа Gj. Однако в тот момент, когда Sh впервые было добавление» к Gj, оно было внешней псевдовершиной. Следовательно, м^о КДу этими моментами должно было производиться увеличение. ПозЧцуму число таких шагов на этапе ограничено числом нечетных мно^му'тв в 1Ь в конце предыдущего этапа. Но, согласно п. в) нашего 1СтвеД- положения, это число не превосходит я/2. &ед- Получаем, что общее число шагов не превосходит О (я2). Каэ ый поиск можно выполнить за время О (я2) с помощью соответствуг^ый.ей процедуры для задачи о мощности паросочетания. (Шаг, вклкЧейю- щий увеличение, который мог бы потребовать времени я3, м^ю-<ет появиться на этапе только один раз.) Кроме того, множества ]ket I, XYO, W, можно определить за время О (я2) при нахождении оптиг. /,1ь- ного паросочетания в графе Gj. Наконец, построение графМь-5/, вычисление 0! и модификация переменных также могут быть niGy,из- niGy,изведены за время О (я2). ? %з- Пример 11.2. Применим разработанный нами алгоритм пг 'ка взвешенного паросочетания к приведенному ниже прир'ска'У- Кроме весов ребер на рисунке представлены также начальнику.на- чения а; и допустимый граф Gy с максимальным паросочетани^Иа- на нем. Внешние вершины помечены звездочками, и нет ни внутре1 вершин, ни цветков. Для вычисления 0i находим, что 6^5 ^ гается на ребре [vs, yj), ба=1 (достигается на ребре [v3, у,]) и
272 Гл. 11. Взвешенное паросочетание 1 2 3 4 5 6 7 8 2 N. 19 \ 3 8 0 N^ 4 8 8 4 5 18 10 8 2 \ 6 18 4 2 10 10 \ 7 25 15 15 15 22 19 \ 8 29 23 18 16 25 19 37 1 1 2 3 4 5 6 7 8 «/ 4. 0 0" 1 1 1 7.5 8 о О О Оиб* поскольку Wf=0. Отсюда 0i=l. В результате получились такие изменения: IV О «8* о i 1 -) 3 4 5 б 1 8 °7 5 0 0 1 1 2 8.5 9 Внутренняя На этом рисунке выделено максимальное паросочетание в графе G/, 61 = ] (достигается на ребре [v2, ve]), ба=2 и б3=оо, Отсюда 01=1, и получаем
11.3. Задача о взвешенном паросочетании 273 / 1 3 4 5 б 7 8 °7 6 1 -1 1 I 3 9.5 10 7 о о о О vl* о t О Здесь показан граф Gc, получаемый после стягивания цветка {v2, vs, ve} в графе Gy, Уь=Ч/'0={{2, 3, 6}}, 6i=1.5 (достигается на ребре [vu v3]), ба=1 (достигается на ребре [vu vt\) и 6s=oo. Следо- Следовательно, 01 = 1, и получаем / 1 2 3 4 5 б 7 в °7 7 2 0 1 1 4 10.5 1.1 42,3.6} =-2 7 о О О Внутренняя Заметим, что мы модифицировали переменную уB, з, 6). соот- соответствующую множеству из Wq. На рисунке показано оптимальное паросочетание в Gy, 7ь=гР0={{2, 3, 6}}, 0= {vu vit v3, vt, vt, v7, v8} и /={у4}. Увеличение опять невозможно. Получаем 6i=0. 5, 8г=83=оо и приходим к / 1 3 4 5 6 7 8 а/ 7.5 2.5 0.5 0.5 1.5 4.5 11.0 11.5 у =-3 {2.3,6} * О и, ^ к, и8. о Таким образом, v-y объединяется в пару с {v2, v3> ve} в графе G/. Теперь б!=7.25 (достигается на ребре [у,, у,]), б8=1.5 (достигается
274 Гл. П. Взвешенное паросочетание на ребре \v2, f,]) и 63=оо, поскольку W,=0. Отсюда 01=1.5, и получаем У7# • / 1 3 4 5 6 7 8 <*/ 7.5 2.5 0.5 0.5 1.5 4.5 12.5 13.0 Внутренняя Внутренняя На рисунке показано оптимальное паросочетание в Gj\ Jь =гР/= = {{2, 3, 6}}, 0={vu у„ Vg, vr,} и / = {i>2, u3, f4, Ув}. Теперь 6i=2.5 (достигается на ребре [vu d7]) и 62 = оо. Наконец, 0i=63 = 1.5, так как {2, 3, 6} ? У/. Наша модификация дает j 1 з 4 5 6 7 8 Q/ 9 1 -1 — 1 3 3 14 14.5 Внутренняя 7 =0 О Внутренняя Внутренняя CJiL Поскольку 7{2, з, б}=0 и. следовательно, множество {2, 3, 6} уда- удаляется из Jb, мы больше не стягиваем {и2, v3, ce} в Gy. По завер- завершении поиска увеличивающего пути в графе Gy ситуация выглядит так, как показано выше. Находим, что 61=б1=0.75 (достигается на ребре [у„ t'J), и модифицируем двойственные переменные следую- следующим образом:
11.4. Выводы 275 / 1 2 3 4 5 б 7 8 °7 9.75 0.25 -1.75 -1.75 3.75 3.75 14.75 15.25 Заметим, что ребро [ра. ^з! больше не входит в G,. Оптимальным паросочетанием в Gj является паросочетание {lvu vt], lv3, v,] [f4, vb] [ve, vs]} (мы произвели увеличение вдоль пути lva, va, v2, f Так как |M|=4=n/2, то наш алгоритм останавливается и оптимально. Его стоимость совпадает с 2/-ia/+]?*'=i'V/tsft:=44. ? 11.4 Выводы Алгоритм нахождения взвешенного паросочетания в произволь- произвольном графе, описанный в предыдущем параграфе, является пре- превосходным примером применения прямо-двойственного алгоритма. Он раскрывает природу прямо-двойственного алгоритма как об- общего метода для сведения задач с весами к их аналогам без весов. Для выполнения такого сведения мы должны вначале найти полное множество линейных ограничений, точно характеризующих рас- рассматриваемую задачу (см. теорему 11.2). При этом число неравенств часто будет экспоненциальным. Последнее не служит помехой, поскольку можно так реализовать прямо-двойственный алгоритм, что он все время будет хранить множество активных неравенств — неравенств, соответствующих ненулевым двойственным перемен- переменным,— и в большинстве случаев число их будет сравнительно небольшим. Можно показать, что при несколько более аккуратной реали- реализации алгоритм, приведенный на рис. 11.5, требует только О(п3) времени для графов с п вершинами (задача 14). Таким образом, так же как в случае задачи о невзвешенном паросочетании (вспомните теорему 10.3 и ссылку [MV] в конце предыдущей главы), переход к недвудольным графам добавляет, по-видимому, только технические трудности и не влияет на асимптотическую сложность.
276 Гл. 11. Взвешенное паросочетание Задачи 1. Решите приведенную ниже задачу о назначениях: 1 4 1 5 4 3 ] 3 5 2 3 о 1 1 4 2 5 4 3 5 5^ 4 3 2 2. Покажите, что если стоимости с/у целочисленны, то значения двойствен- двойственных переменных при применении венгерского метода всегда кратны 1/2. 3. Покажите, что если стоимости с/у целочисленны, то значения двойствен- двойственных переменных в алгоритме нахождения взвешенного паросочетания в произ- произвольном графе всегда кратны 1/4. 4. Найдите паросочетание наименьшей стоимости для приведенного ниже графа (все отсутствующие ребра имеют стоимость оо): ГС~К~Т 5. а) Приведите пример, показывающий, что паросочетание максимального веса в некотором (ие обязательно полном) графе может не быть паросочетанием максимальной мощности даже в случае положительных весов. б) Приведите алгоритм для нахождения максимального взвешенного полного паросочетания в данном графе. в*) Приведите алгоритм для нахождения максимального взвешенного паро- сочетаиия с k ребрами для фиксированного k. (Указание: добавьте к A1.1), (П.2) и A1.3) равенство Vx,-y=A. Как это влияет иа прямо-двойственный алгоритм?) 6*. Покажите, что венгерский метод для взвешенных (не обязательно полных) двудольных графов можно реализовать так, чтобы он требовал O(|V||?| log | VI) времени. 7. Рассмотрим множество стоимостей с,-у^О на ребрах полного графа Кп с п вершинами. Пусть Sc;^, ..., vn}. Требуется найти подграф графа /(„, в ко- котором степени вершин из 5 нечетны, степени остальных вершии четны (возможно, равны нулю) и который имеет наименьшую возможную стоимость. Покажите, что это задача о паросочетании. 8* (задача о китайском почтальоне). Даны связный графи—--(V, Е) и функция стоимости с: Е-*- Z+. Требуется найти маршрут, проходящий по каждому ребру нз Е по меньшей мере один раз, так, чтобы общая стоимость маршрута была как можно меньше (при этом стоимость ребер, проходимых несколько раз, учитывается
Задачи 277 многократно). Приведите полиномиальный алгоритм для этой задачи, используя результат задачи 7. 9*. Решите задачу 8 для случая, когда граф G ориентирован. 10. Приведите полиномиальный алгоритм для задачи о реберном покрытии минимальной стоимости для взвешенных графов (вспомните задачу 3 из гл. 10), сводя ее к задаче о взвешенном паросочетании. 11. Дано множество стоимостей с,у на ребрах полного графа /C2n+i с 2я+1 вершинами. Требуется найти подграф графа /C2n + i. изоморфный показанной ниже «двойной звезде» и имеющий наименьшую возможную общую стоимость. Покажи- Покажите, что эта задача эквивалентна задаче о взвешенном паросочетании. аг 12*. Для данных множества стоимостей с,'у на ребрах полного графа Кп с п вершинами и п целых чисел b(vi), »'= 1, .... п, найдше подграф G графа К,п> такой, что степень вершины и,- равна Ь(и;), »=1, ..., я, и G имеет минимально возможную общую стоимость. (Указание; вспомните построение из задачи 13 в гл. 10). 13*. а) Рассмотрим частный случай задачи о назначениях, в котором В= = (V, U, VXU), cij: VXU -»- Z+, \Vl=\U\=n и с/у имеют следующую специ- специальную структуру: существуют действительные числа а^а^. . .^а„ и E^ ^Р2^. . .^Рп. такие, что с,у=тах@, <к,-—Eу) для всех 1<:«, /<:п. Покажите, что оптимальное паросочетание в этом случае всегда имеет вид М={[у,-, и,-]: »'= = 1, .... п}. б) Обобщите п. а) на случай, когда с,7 = \ f(t)dt, если <х,-<Р/, \ g (t) dt в противном случае для некоторых неотрицательных функций fug. 14. В этой задаче показывается, что алгоритм нахождения взвешенного паросочетания .в произвольном графе, приведенный на рис. 11.5, можно реализо- реализовать так, чтобы он требовал времени О (л3). Алгоритм состоит из л/2 этапов, т. е. частей между двумя последовательными увеличениями. Каждый этап может иметь О (я) шагов, т. е. частей, заключенных между двумя последовательными
278 Гл. 11. Взвешенное паросочетание модификациями двойственных переменных. Один из аспектов расточительности алгоритма, приведенного на рис. 11.5, состоит в том, что граф Gj заново строится на каждом новом шаге, а граф Gc выбрасывается. а) Опишите реализацию этого алгоритма, в которой на протяжении этапа работа производится с одним и тем же графом. Не забудьте, что возможен шаг, такой, как предпоследний шаг в примере 11.2. Шаг называется шагом типа 1, 2 или 3 в зависимости от того, будет ли в его конце 91=б1, б2 или б3. б) Покажите, что в течение этапа имеется О(п) шагов каждого типа. в) Покажите, как реализовать за время О(п) каждый шаг любого типа, ис- исключая вычисление 9i. Что касается вычисления 8lt то б3 можно вычислить за время О(п), так как №/\=О(п). г) Покажите, как вычислить 62 за время О(п) способом, аналогичным спосо- способу, примененному в венгерском методе (т. е. используя массивы невязка и сосед). Остается вычислить 6t. Это можно сделать, сохраняя список L, содержащий О(п) множеств вершин, а именно содержащий A) все одноэлементные множества {и,-}, B) все множества из /{,, C) все цветки графа Gc, возможно не входящие еще в Jb- Для каждой внешней вершины и,- и каждого S?L имеется такая вершина ближайшая[и[,8]?8, что (i) ближайшая\ь1, S] не была внешней в тот момент, когда i>,- стала внешней; (И) ближайшая[ь1, S] имеет наименьшее значение с,-у—а,-—ау среди всех S, удовлетворяющих (i). Пусть paccm\v[, S]-— значение cij—а,-—ау в тот момент, когда вершина и,- стала внешней или S было включено в L в зависимости от того, что произошло позднее. Будем, кроме того, хранить для каждого S?L две величины: 6[S]=min {с,-у— —а,-—а/ V[?S, vy(?S и является внешней} и A[S], равную общему увеличению переменных а, соответствующих вершинам из S, с того момента, когда S было включено в L. д*) Покажите, что эту структуру можно поддерживать, затрачивая время О(п2) на каждом этапе. е) Выведите из сформулированных выше утверждений, что алгоритм нахож- нахождения взвешенного паросочетания в произвольном графе, приведенный на рис. 11.5, можно реализовать так, чтобы время его работы не превосходило О (j V|3). Комментарии и ссылки Венгерский метод принадлежит Куну. [Ku] Kuhn H. W. The Hungarian Method for the Assignment Problem, Naval Re- Research Logistics Quarterly, 2 A955), 83—97 Теорема 11.2 и прямо-двойственный алгоритм для задачи о взвешенном паро- сочетании в недвудольном графе принадлежат Эдмондсу: [Ed) Edmonds J. Matching and a Polyhedron with 0-1 Vertices, J. Res. NBS, 69B A965), 125-130. Алгоритм для задачи о паросочетании с оценкой O(ns) (задача 14) взят из книги [La] Lawler E. L. Combinational Optimization: Networks and Matroids. New York: Holt, Rinehart & Winston, 1976. Задача 6 принадлежит М. Яннакакису. Задачи 8 и 9 взяты из работ [Kw| Kwan Mei-Ko. Graphic Programming Using Odd and Even Points, Chinese Math, 1 A962), 273—277. [EJJ Edmonds J., Johnson E L. Matching, Euler Tours and the Chinese Postman, Math. Prog., 5 A973), 88—124.
Комментарии и ссылки 279 Смешанный вариант задачи о китайском почтальоне (на взвешенных графах одновременно с ориентированными и неориентированными ребрами) оказывается намного труднее. См. гл. 15 и работу [Pa] Papadimitriou С. Н. The Complexity of Edge Traversing, J. ACM, 23 A976), 544—554. Задача 11 взята из работы [PY] Papadimitriou С. Н-, Yannakakis M. The Complexity of Restricted Spanning Tree Problems, pp. 460—470 in Automata, Languages and Programming, ed. H. A. Maurer. Berlin: Springer-Verlag, 1979. Для матриц стоимостей специального типа, рассмотренных в задаче 13, проще оказывается не только задача о назначениях, не и ЗК- См. [GG] Gilmore Р. С., Gomory R. E. Sequencing a One-State Variable Machine: A Solvable Case of the Traveling Salesman Problem, OR, 12 A964), 655—679.
12 Остовные деревья и матроиды В настоящей главе решается задача о минимальном остовном дереве. Заметим, что эта задача обладает фундаментальным струк- структурным свойством, позволяющим получить для нее быстрое алгорит- алгоритмическое решение. Таким свойством обладает целый класс задач оптимизации, известных как задачи о матроидах, поскольку лежа- лежащая в их основе структура, являющаяся обобщением графов, назы- называется матроидом. Кроме того, будет показано, что некоторый класс более сложных задач также допускает эффективное решение. В таких задачах, гру- грубо говоря, требуется найти наилучшее решение, допустимое в двух различных задачах о матроидах. Эти задачи, равно как и задачи о паросочетании из предыдущей главы, в некотором смысле самые трудные комбинаторные задачи, о которых известно, что они разре- разрешимы полиномиальными алгоритмами. Последнее резко отличает их от огромного числа намного более сложных задач таких, как ЗК и задача целочисленного линейного программирования, которые бу- будут обсуждаться в последующих главах. 12.1 Задача о минимальном остовном дереве В предыдущих главах мы несколько раз упоминали задачу МОД как классическую хорошо решаемую комбинаторную задачу оптимизации. В задаче МОД дана симметричная (|У|Х |У|)-матрица с положительными элементами [ос(Д называемая матрицей расстоя- расстояний, и требуется найти кратчайшее относительно этой метрики остовное дерево в графе /C.vi — полном графе с |V| вершинами. Иногда задача МОД ставится для связного графа 0= {V, Е) — не обязательно полного — и положительных расстояний й^1) для каждого ребра [vit Vj]?E. Опять ищется кратчайшее остовное де- дерево в G; так как G — связный граф, то по крайней мере одно такое дерево существует. Для преобразования некоторой индивидуальной задачи в этом варианте в индивидуальную задачу для исходной фор- формулировки достаточно положить dtj=oo для всех [vu Vj]^E. 1) Мы будем использовать как йн, так и d(i»,-, и Л для обозначения расстояния между vt и vj.
12.1. Задача о минимальном остовном дереве 281 Известно несколько эффективных алгоритмов для решения зада- задачи МОД. Все они, так или иначе, используют следующий факт. Теорема 12.1. Пусть {(Uu 7\).(t/2, 7\),. . . , (Uh, Tk)}—ocmoe- ный лес на множестве V, и пусть lv, и] — кратчайшее из всех ребер, у которых ровно один конец содержится в Ut. Тогда среди всех остов- ных деревьев, содержащих все ребра из множества Т=[}'[=1Т1, существует оптимальное остовное дерево, содержащее lv, и]. Доказательство. Предположим, что существует остовное дерево (V, F), где F=2T и [и, u]^F, которое короче, чем все остовные де- деревья, содержащие все ребра из Т и ребро lv, и]. Добавим к F ребро lv, и]; при этом, согласно предложению 1.2, образуется единствен- единственный цикл. Не все вершины этого цикла содержатся в ?Л, так как fc 121) С Рис. 12.1. р fcUi (рис. 12.1). Следовательно, на этом цикле имеется такое ребро lv', и'\, отличное от lv, и], что м'6?Д и v'?V — ?/,. По условию это ребро не короче, чем lv, и], и не принадлежит Т. Поэтому, удаляя ребро lv', и'], получим новое ос- остовное дерево (V, F'), где F'=F\J U {lv, и]} — {lv', и']}, содержащее Т и ребро lv, и] и имеющее стои- стоимость не большую, чем стоимость дерева (V, F). Это, однако, проти- противоречит нашему предположению о том, что дерево (V, F) короче, чем любое остовное дерево, содер- содержащее ребро lv, и] и множество ребер Т. ? Посмотрим, как этот результат почти непосредственно приводит нас к эффективному алгоритму для задачи МОД. Поскольку теоре- теорема справедлива для всех остовных лесов, то она, очевидно, справед- справедлива и в том случае, когда Uj={Vj}, /=1, . . ., п, и Т=0. В приме- применении к этому случаю теорема утверждает, что существует мини- минимальное остовное дерево, содержащее кратчайшее ребро, исходящее из vx. Поэтому такое ребро можно включить в искомое дерево, не теряя оптимальности. Предположим, что это ребро Ьь у2]. Да- Далее, применяем теорему к множествам t/1 = {y1, у,}, U3, . . ., 0п и T={bi, v2]}. Теперь теорема утверждает, что можно добавить к дереву кратчайшее ребро, исходящее из v^ или v2 (отличное от lvlt У21), и после этого останется возможность дополнить образован- образованное дерево до оптимального МОД. Алгоритм теперь очевиден: начи- начинаем, например, с множества U={Vi} и рекурсивно добавляем к Т кратчайшее ребро, исходящее из U, до тех пор, пока к U не будут добавлены все вершины, в результате чего будет построено неко- некоторое дерево.
282 Гл. 12. Остовные деревья и матроиды Этот алгоритм для задачи МОД приведен на рис. 12.2. Для облег- облегчения основной вычислительной задачи — нахождения кратчайшего ребра, исходящего из U, — мы храним массив ближайшая[и]. Для каждой вершины v?V—U значением ближайшая[и] является вершина из U, ближайшая к и. Поэтому для нахождения кратчай- кратчайшего ребра, исходящего из U, достаточно найти кратчайшее ребро АЛГОРИТМ ПОСТРОЕНИЯ МИНИМАЛЬНОГО ОСТОВНОГО ДЕРЕВА Вход. Множество вершин V » расстояния dij между всеми парами вершин Vj, Vj из V. Выход. Кратчайшее остовное дерево (V, Т). begin U:={Vl}, T: = 0; for all v?V— {vj do ближайшая[\]:=у1; (comment: задание начальных значений) while U Ф V do begin min: = oo; for all v?V — U do if d(v, ближайшая[\1\) < min then min:=d(v, 6лижайшая[\]), следующая:—v; (comment- найти в V —U вершину, ближайшую к U) U:=UU{следующая}, ,. T:=T U{[следующая, бли жайшая[следующая]]\; for all v?V-U do if d(v, ближайшая[ч]) > d(v, следующая* then ближайшая[\]:=следующая; end end Рис. 12.2. Алгоритм построения минимального остовного дерева. среди ребер вида \v, ближайшая\и]], v?V. Естественно, массив бли- ближайшая должен пересчитываться каждый раз, когда новая вер- вершина добавляется к У. В остальном алгоритм совершенно очевиден. Теорема 12.2. Алгоритм, представленный на рис. 11.2, коррект- корректно решает задачу МОД за время 0(|У|2). Доказательство. Так как в конце алгоритма |(/| = |V| и к Г всегда добавляется ребро, исходящее из С, то получающийся в результате граф (V, Т) является остовным деревом в G. Остается показать, что это дерево оптимально. Покажем индукцией по мощ- мощности множества U, что всегда существует оптимальное остовное дерево в G, содержащее соответствующее множество Т. Это, оче- очевидно, справедливо, когда U = {vi) и Т=0. Предположим, что утверждение справедливо для некоторого ]=\U\, l^.j^.\V\. Час- Частичное остовное дерево (U, Т) можно рассматривать как часть леса {(Цг, Г,), . . ., (U\, Th)}, где Ul = U,k = \V\—\U\ + \ и Г,=. . .-Tft = = 0. Применяя теорему 12.1, получаем, что среди всех дере- деревьев, содержащих Т, существует кратчайшее дерево, содержащее Т и кратчайшее ребро, исходящее из U. Но по предположению индук- индукции существует глобально оптимальное дерево, содержащее Т.
12.2. Алгоритм со сложностью О (\E\\og\V\) 283 Поэтому существует также оптимальное остовное дерево, содержа- содержащее дерево Т и кратчайшее ребро, исходящее из U, которые вместе в точности образуют дерево Т на следующем этапе, когда \U\ = =/+1 Этим завершается шаг индукции. Для получения временной оценки заметим, что алгоритм состоит из \V\ — 1 этапов; на каждом этапе добавляется одно ребро. При- Присвоение начальных значений требует времени 0(|У|), и нахождение К' И. .13 Щ<Ь—14 I /\ 17 13 5 Рис. B.3. значения переменной следующая также требует времени 0(\V\). Наконец, новые значения элементов массива ближайшая также мож- можно вычислить за время 0(|V^|). Отсюда следует оценка 0(Ц/|2) для всего алгоритма. Q Пример 12.1. Найдем с помощью алгоритма, приведенного на рис. 12.2, минимальное остовное дерево в графе G=(V, E), показан- показанном на рис. 12.3. (Считается, что если [vit Vj\^E, то d,;- = oo.) На- Начиная с вершины «! получим девять этапов, представленных на рис. 12.4. Около каждой вершины и, еще не вошедшей в множество U, указано зн;, 1ение ближайшая [и]. Искомое минимальное остовное дерево представлено на рис. 12.4(и). ? 12.2 Алгоритм со сложностью О || ? | log | V |) для задачи о минимальном остовном дереве Алгоритм для нахождения МОД из предыдущего параграфа со ;ложностью 0(|У|2) не легко улучшить, если в качестве входных 1анных используется матрица расстояний размера \V\X \V\. Причи- ча этого очень проста: любой алгоритм, который строит МОД, дол- «ен просмотреть каждый элемент матрицы расстояний хотя бы один эаз. Ибо если некоторый элемент йц никогда ле просматривается уггоритмом, то мы не можем быть уверены, что соответствующее реб- )о следует исключить из МОД. Например, мы можем проскочить сратчайшее ребро, хотя легко понять, что кратчайшее ребро всегда зключается в МОД. Таким образом, просмотр совершенно необхо
284 Гл. 12. Остовные деревья и матроиды "I о о (а) о (в) (А) "I- о о  О  о о «6 о  о  О о (б) (г) (е:)  о т) о Q- О 2 U3 v& \ ) О О О О ч о «6 о
12.2. Алгоритм со сложностью О (\E\\og\V\) 285 димой информации уже требует 0(|V|2) времени, и, следовательно, алгоритм, представленный на рис. 12.2, асимптотически оптимален Однако в некоторых практических ситуациях требуется найти МОД для разреженных графов, т. е. графов, число ребер в которых намного меньше, чем ('г')- Например, в задачах 4 и 5 в связи с некоторыми геометрическими задачами будут введены графы, имею- имеющие не более 3 -1V| ребер. Совсем не очевидно, что для нахождения МОД для таких графов оценка 0(|V|2) неулучшаема. В данном параграфе мы построим алгоритм для задачи МОД с временем работы О (|?*|log IV' |). Этот алгоритм асимптотически лучше предыдущего ) алгоритма при применении к графам, имеющим меньше чем, e(|V|Vlog|V|) ребер. Алгоритм основан на теореме 12.1. Теорема 12.1, по существу, утверждает, что при добавлении к Т кратчайшего ребра, исходящего из некоторой компоненты леса (V, Т), не теряется возможность прийти в результате к оптимальному дереву. Наш предыдущий ал- алгоритм использует эту теорему в ограниченной степени: в нем ребра добавляются только к одной компоненте леса (V, Т). Алгоритм, который мы сейчас собираемся построить, добавляет ребра одно- одновременно ко всем компонентам леса (V, Г), заставляя минимальное остовное дерево «расти» во всех направлениях. Посмотрим, как воплотить эту простую идею. Работа нашего ал- алгоритма будет состоять из этапов. На каждом этапе находятся связ- связные компоненты леса (V, Т) и определяется кратчайшее ребро, исходящее из каждой компоненты. В конце этапа все эти ребра добавляются к Т. Затем вычисляются связные компоненты 5Ь . . . . . .,Sh леса (V, Т) за время 0(\Е\) с использованием алгоритма ПОИСК (см. пример 9.1 и задачу 1 из гл. 9). Чтобы для каждого множества вершин St выбрать ребро крат- чайшее\1\ — кратчайшее ребро, исходящее из 5,,— все ребра про- просматриваются по очереди. Если обнаруживается ребро, кратчайшее среди всех просмотренных ребер, исходящих из 5,-, то в качестве кратчайшее^ берется это ребро. После того как все ребра таким образом просмотрены, значения в массиве кратчайшее являются окончательными. Описанный алгоритм приведен на рис. 12.5. Теорема 12.3. Алгоритм, представленный на рис. 12.5, коррект- корректно находит МОД для графа (V, Е) и функции расстояния d за время 0(\E\\og\V\). Доказательство. Корректность алгоритма также следует из георемы 12.1. Поскольку к Г добавляются кратчайшие ребра, исхо- исходящие из каждой компоненты леса (V, Т), то теорема 12.1 гаранти- эует, что все эти добавления к МОД допустимы. (Одновременное убавление ребер не порождает циклов. Почему?)
286 Гл. 12. Остовные деревья и матроиды Назовем каждое выполнение цикла while этапом. Этап состоит из вычисления массива кратчайшее и нахождения связных компо- компонент леса (V, Т). Последнее можно выполнить за время 0(\Т\) = =0(|VI), используя ПОИСК (см. задачу 1 из гл. 9); в действитель- действительности за время 0(|У|) можно вычислить массив компонента, со- содержащий для каждой вершины имя связной компоненты, которой ВТОРОЙ АЛГОРИТМ ДЛЯ ЗАДАЧИ МОД Вход. Связный граф G=(V, E) и расстояния d (u, v) для каждого ребра [JgE Выход. Кратчайшее остовное дерево (V, Т) в G. begin Т: = 0, C:={{v,} {vn}}; (comment: задание начальных значений; С—набор связных компонент в (V, Т)) while |С| Ф 1 do begin for all SjgC do min[i]: = oo; for all [u, v]?E do begin пусть Si, Sj—множества, содержащие соответственно v и и; if i ф j then begin if d(u, v) < min[i] then min [i]:=d(u, v), кратчайшее[\]: = [\1, v]; if d (u, v) < min [j] then min [j]:=d (v, u), кратчайшее[]]: = [м, v]; end end (comment: кратчайшее[\]—это кратчайшее ребро, выходящее из Si) for all SjgC do Т:=1Ц{кратчайшее{]\}; найти множество С связных компонент графа (V, Т) end end Рис. 12.5. Второй алгоритм для задачи МОД. эта вершина принадлежит (на первом этапе компонента^j\—Sj для всех /). С помощью массива компонента можно вычислить мас- массив кратчайшее за время 0(\Е\), просматривая все ребра графа G по очереди, как указано на рис. 12.5. Сколько может быть этапов? Мы утверждаем, что число k связ- связных компонент леса (V, Т) уменьшается на каждом этапе по крайней мере в два раза. Это вытекает из того, что каждая связная компо- компонента полученного леса (V, Т) содержит по крайней мере две связ- связные компоненты графа (V, Т) из предыдущего этапа, так как каждая компонента соединяется с другой компонентой с помощью соответст- соответствующего ей кратчайшего ребра. На первом этапе k= \V\, и k умень- уменьшается на каждом этапе по меньшей мере вдвое. Поэтому после не более log|V| этапов k сведется к единице и алгоритм остановится, выдав в результате МОД. Таким образом, алгоритм может содержать не более log|V| этапов. ? Пример 12.1 (продолжение). На рис. 12.6 показано решение задачи МОД для графа, представленного на рис. 12.3, с использо-
12.3. Жадный алгоритм 287 ванием алгоритма, построенного в данном параграфе. Граф (V, Т), получаемый в конце каждого из трех этапов, показан на рис. 12.6(а, б и в). Множества вершин, образующие связные компоненты, поме- (б) (в) Рис. 12.6. чены именами соответствующих переменных — например, 5Ь 52 и т. д., — и каждое вновь добавленное ребро е помечено целым чис- числом I, таким, что крсапчайшее\(\=е. Q 12.3 Жадный алгоритм Рассмотрим несколько иную задачу. Пусть, как и в задаче о па- росочетании, нам даны граф G=(V, Е) и веса w^^tO для каждого ребра [vt, Vj] ? Е. Требуется найти лес — ациклический подграф графа G,— имеющий максимальный общий вес. Нетрудно понять, что эта задача о лесе максимального веса (ЛМВ) очень близка к за- задаче МОД. Предположим вначале, что граф G связен Поскольку мы считаем, что ы)ц^0, то любой оптимальный лес можно сделать мак- максимальным по включению, т. е. остовным деревом графа G. Кроме того, все остовные деревья графа G имеют \V\ — 1 ребер (см. предло- предложение 1.2). Поэтому можно построить функцию расстояния для Е,
288 Гл. 12. Остовные деревья и матроиды положив dtj=W—wtj для всех h>t, v}\ ? Е, где W—max,-; {ш>ц}. При этом сумма расстояний d(T) любого остовного дерева Т будет свя- связана с общим весом w (Т) дерева Т соотношением &у(Г)=(|У/|—1)х X W—d(T). Отсюда сразу же очевидно, что МОД в графе G с рас- расстоянием d совпадает с лесом максимального веса в графе G с ве- весами w. Если теперь граф G несвязен, то ситуация ненамного сложнее. Мы предоставляем читателю в качестве упражнения проверить, что в этом случае справедливо Предложение 12.1. Лес максимального веса в графе G=(V, Е) с весами w является объединением минимальных остовных деревьев для всех связных компонент графа G с расстояниями d, где d опре- определяется так, как описано выше. Таким образом, задачи МОД и ЛМВ можно рассматривать, по существу, как одну и ту же задачу. Следующая лемма является ана- аналогом теоремы 12.1 для задачи ЛМВ. Лемма 12.1. Пусть {(Uu Тг), (Uit Тг), ..., (Uk, Tk)} — остов- ный лес на множестве V, и пусть [v, и] — ребро, исходяее из Ut и имеющее наибольший вес. Тогда среди всех лесов, содержащих Т= = и ?=i Тк, существует оптимальный лес, содержащий также [v, и]. Таким образом, задачу ЛВМ можно решить, используя любой из двух алгоритмов для МОД, рассмотренных в предыдущих пара- ЖАДНЫЙ АЛГОРИТМ Вход. Граф G=(V, E) с весами W[j на ребрах. Выход. Лес F максимального веса в G. begin F:=0; while E Ф 0 do begin пусть [u,v] —ребро в Е максимального веса; удалить [u, v] из Е; if и и v в разных компонентах графа (V, F) then F:=F|J{[u, v]} end end Рис. 12.7. Жадный алгоритм для задачи ЛМВ. графах. Мы, однако, построим другой очень естественный алго- алгоритм— естественный настолько, насколько может быть естественной жадность. Жадный алгоритм, очевидно, заслуживает свое имя. Он постоян- постоянно старается включить в F ребро наибольшего возможного веса Он не делает этого только в том случае, когда при добавлении та- такого ребра F становится недопустимым. Довольно удивительно (и это указывает на простоту структуры задачи ЛМВ) то, что такой наив-
12.3. Жадный алгоритм 289 О О (а) О 6 о о (в) (ж) о о о о о о (б) (и) Рис. 12.! (с) (з) 10 № 3032
290 Гл. 12. Остовные деревья и матроиды ный подход, не содержащий никаких элементов заглядывания впе- вперед или возвращения назад, корректен Следующая теорема утверж- утверждает, что это действительно гак. Теорема 12.4. Жадный алгоритм корректно решает задачу ЛМВ. Доказательство. Корректность алгоритма следует непосредст- непосредственно из леммы 12.1. ? Пример 12.1 (продолжение). Решим задачу ЛМВ для графа и весов, представленных на рис. 12.3, используя жадный алгоритм. Этапы решения представлены на рис. 12.8. ? 12.4 Матроиды Задачу ЛМВ можно рассматривать как задачу из некоторого ши- широкого класса комбинаторных задач оптимизации. Определение 12.1. Системой подмножеств S=(E, 3) назы- называется конечное множество Е вместе с семейством 3 подмножеств множества Е, замкнутым относительно включения (т. е. если А ? 3 и A'sA, то А'$Э). Элементы семейства 3 называются независи- независимыми. Комбинаторная задача оптимизации для системы подмно- подмножеств (Е, 3) состоит в следующем. Для каждого е?Е задан вес w(e)^0, и требуется найти независимое подмножество, имеющее наибольший общий вес. ? В этом параграфе, как и в следующем, будем искать алгоритмы решения комбинаторных задач оптимизации для некоторых систем подмножеств. По этому поводу сделаем два замечания. Во-первых, нам нужно описать, каким способом система подмножеств (Е, 3) будет представляться как вход для вычислителоного алгоритма. Можно предложить выписывать псе независимые подмножества из Е, используя подходящее представление. Однако такой способ пред- представления 3 может оказаться очень неэффективным, так как 3 мо- может содержать до 2|?| подмножеств Поэтому все рассматривае- рассматриваемые системы подмножеств будем представлять с помощью алгорит- алгоритма Ла, который по данному подмножеству / множества Е решает, верно ли, что 1(ЦЗ. Например, в задаче ЛМВ для графа (V, Е) очень неэффективно было бы выписывать все леса графа G. Даже если выписывать только максимальные леса, учитывая тот факт, что 3 замкнуто относительно включения, у нас может остаться ^р^1-2 подмножеств. Имеется другой алгоритм Ла, который по данному произвольному подмножеству F множества Е проверяет, верно ли, что F не содержит циклов; такой алгоритм Лз рассматривался в за- задаче 2 из гл. 9. Это приводит нас ко второму замечанию. Задача ЛМВ (т. е. мно- множество всех индивидуальных задач) соответствует не одной комби-
12.4. Матроиды 291 наторной задаче оптимизации для некоторой системы подмножеств, а многим задачам, по одной для каждого графа, на котором может быть задана задача поиска ЛМВ Вообще говоря, комбинаторные задачи оптимизации, соответствующие нескольким системам под- подмножеств (Е, 3) с общим алгоритмом Ла, можно рассматривать как подслучаи одной и той же вычислительной задачи. Поэтому, хотя каждая комбинаторная задача оптимизации для некоторой сис- системы подмножеств содержит бесконечно много индивидуальных за- задач — по одной для каждого множества весов — и, следовательно, ЖАДНЫЙ АЛГОРИТМ begin l:=0; while E Ф 0 do begin пусть е—элемент из Е с наибольшим весом; удалить е из Е; If I-f e?J then I: = I + e end end Рис. 12.9. Жадный алгоритм для матроидов. сама может рассматриваться как задача оптимизации, мы будем обычно называть класс задаче одним и тем же алгоритмом Л3 просто «задачей». Следующие примеры поясняют сказанное выше; в них отмечается также еще один важный аспект. Пример 12.2. Задачу ЛМВ для графа (V, Е) можно рассматри- рассматривать как комбинаторную задачу оптимизации для системы подмно- подмножеств (Е, ?), где1Г — класс подмножеств множества Е, являющих- являющихся лесами. В предыдущем параграфе мы видели, что эту задачу мож- можно решить с помощью жадного алгоритма. Учитывая нопые понятия, так переформулируем этот алгоритм, чтобы его можно было приме- применять к любой системе подмножеств (Е, 3); соответствующий ал- алгоритм приведен на рис. 12.91). ? Пример 12.3. Задача о максимальном взвешенном паросочетании для графа (V, Е) — это комбинаторная задача оптимизации для системы подмножеств S=(E, аЛ), где <М — семейство паросочега- ний графа (V, Е). К сожалению, жадный алгоритм здесь не работает. Контрпример приведен на рис. 12.10. Жадный алгоритм, применен- примененный к (Е, <Jl), привел бы к паросочетанию, представленному на рис. 12.10(а), тогда как максимальное взвешенное паросочетание имеет вид, представленный на рис. 12.10F). ? Пример 12.4. Если даны орграф D = (V, А) и веса w(a)^0 для каждого а?А, то можно поставить следующую задачу; найти в множестве А подмножество В наибольшего возможного веса так, чтобы никакие две дуги из В не имели общего конца. Это комбина- *) Всюду в этой главе 1-\-е обозначает l[j{e) и /—е= 1—{е}. 10*
292 Гл. 12. Остовные деревья и матроиды торная задача оптимизации для системы подмножеств (A, S), где подмножество В множества А входит в SB тогда и только тогда, ког- когда никакие две дуги из В не имеют общего конца. Хотя на первый 1 (а) Оз (б) Рис. 12.10. взгляд эта задача аналогична задаче о паросочетании для неориен- неориентированных графов, на самом деле она намного проще. Рассматри- Рассматривая орграф на рис. 12.11, можно заметить, что при выборе дуги, вхо- входящей в вершину vu не имеет смысла выбирать никакую другую дугу, кроме дуги, имеющей наи- I I N. I \ больший вес. Это связано с тем, V / \ 1 1 что этот выбор локален в том смыс- lJj 7 "^)'Ч I ле> что он никак не влияет на до- допустимость выборов в других вер- вершинах. То же самое справедливо для всех остальных вершин По- Поэтому в данной задаче жадный ал- алгоритм будет давать оптимальное решение. ? Пример 12.5. Рассмотрим в гра- графе G= (V, Е) ге множества ребер, которые являются объединениями вершинно непересекающихся пу- путей; соответствующие примеры приведены на рис. 12.12 (а и б). Се- Семейство этих множеств ребер обозначим через 9 Нетрудно понять,- что комбинаторная задача оптимизации для системы (Е, 9) — это несколько замаскированная ЗК. Разница в том, что теперь мы инте- интересуемся путями вместо обходов — однако, оказывается, что эти два варианта эквивалентны (см. задачу 8) Кроме того, мы имеем дело с задачей максимизации вместо задачи минимизации Но это так же, как при переходе от МОД к ЛМВ, не имеет существенного значения (см. задачу 9). Поскольку рассматриваемая задача, по существу, совпадаем с пресловутой ЗК, можно предположить, что жадный алгоритм — как и более серьезные подходы — не решает эту задачу, и это дей- действительно так. В кошрпримере на рис. 12.12 (в и г) жадный алго-
12.4. Матроиды 293 ритм приводит к пути, представленному на рие. 12.12(г), а опти- оптимальный путь имеет вид, представленный на рис. 12.12(в) ? Пример 12.6. В следующем примере система (Е, 3) имеет не- несколько другой характер. В ней Е — это множество столбцов (лХ (в) Рив. 12.12. X |?| )-матрины А \\ 3 — семейство линейно независимых множеств столбцов матрицы А Для примера, приведенного на рис. 12 13, имеем [еи еъ е8, е4} 6 3 в го время как {еи е4, еъ, е„, }ФЗ и {е4, е„, Решает ли жадный алгоритм комбинаторную задачу оптимизации, связанную l эюй любопытп«л" системой подмножесчв? Доволыт уди- 3 0 1 2 ei 1 2 1 0 ei 3 1 2 0 ез 0 1 0 -1 <ч 2 0 1 0 е% I 0 0 2 es 1 I 0 1 еп 1 2 0 0 е» Иис. 12.13. вителъно, что ответ положителен. Этот факт будет получен в при- примере 12.9 как простое следствие рассматриваемых далее в этм пара- параграфе конструкций и элементарных фактов из линейной алгебры ? Рассмотренные выше примеры указываю! на интересный acneKi. Некоторые из рассмофенных сиаем подмножеств (например, сис- системы из примеров 12.2, 12.4 и 12.6), хотя сильно различаются по природе и происхождению, обладают общим важным свойством; ладный алгоритм решает соответствующие комбинагорные задачи
294 Гл. 12. Остовные деревья и матроиды оптимизации. В противоположность этому другие системы подмно- подмножеств не обладают таким хорошим свойством. С помощью контр- контрпримеров мы показали, что комбинаторные задачи оптимизации для систем подмножеств из примеров 12.3 и 12.5 не могут быть решены с использованием жадного алгоритма. Это важное различие фор- формализовано в следующем определении. Определение 12.2. Пусть М = (Е, 3) — система подмножеств. Будем называть М матроидом, если жадный алгоритм корректно решает любую индивидуальную комбинаторную задачу оптимизации для системы М. П Таким образом, система подмножеств (Е, ?) из примера 12.2 является матроидом; ее называют графическим матроидом, учитывая ее интерпретацию в виде системы лесов графа. Система (А, ЭВ) из примера 12.4 также есть матроид; в дальнейшем мы назовем его матроидом разбиения (см. пример 12.8). Наконец матроиды, анало- аналогичные матроиду из примера 12.6, известны как матричные матро- матроиды. Исторически понятие матроида было впервые введено как обоб- обобщение этого подкласса, использующее некоторые простые аксиомы. Следующий результат показывает эквивалентность этих двух под- подходов. Теорема 12.5. Пусть М = (Е, 3) — система подмножеств. Тог- Тогда следующие утверждения эквивалентны. \) М — матроид. 2) Если 1р, !Р+1€Э, где \/р\ = р и \Ip+i\ = p+l, то суще- существует такой элемент е?/р+1 — /р, что /р^-е?3. 3) Если А — подмножество множества Е и /, /' — максималь- максимальные по включению подмножества множества А, то |/'| = |/|. Доказательство. A)=>B). Предположим, что М — матроид, но B) не выполняется, т. е. существуют такие два независимых подмножества Iр, 1р+1, что \1р\ = р, \1р+1\ = р+\ и ни для какого е(Ц1р+1 — 1р подмножество 1р + е не является независи- независимым. Рассмотрим следующие веса w на Е: w (е) — р+\, Замерим вначале, что /р не оптимально, так как w(lp+i)^ ^(pJrlJ>p{p-\-2)=w(Iv). Жадный алгоритм в этом случае нач- начнет с выбора всех элементов множества 1р, поскольку эти элементы имеют максимальный вес. После этого жадный алгоритм не сможет улучшить общий вес, так как для всех остальных элеменюв е либо 1п-\-е(?3 (если е?1,)+]), либо w(e)=0. Следовательно, жадный алгоритм дает неоптимальное решение /р, и поэтому М не ягляется
12.4. Матроиды матроидом, что противоречит нашему предположению. Таким об- образом, рассматриваемая импликация доказана B)^>C). Предположим, что B) выполняется, и пусть /, /' — два максимальных по включению независимых подмножества мно- множества А^Е. Допустим, что |/|<|/'|. Отбрасывая |/'|—1/|— 1 эле- элементов из /' (напомним, что 3 замкнуто относи гельно включения), можно получить такое множество /"^/', что |/"| = |/| + 1. По свойству 2 можно найти элемент - ? /"— /, такой, что 1-\-е?Э. Следовательно, / не является максимальным но включению неза- независимым подмножеством множества А Полученное противоречие доказывает требуемую импликацию. C)=>A). Допустим, что свойство 3 справедливо для /И, и по- покажем, что тогда жадный алгоритм решает М. Предположим, что это не так; т. е предположим, что для некоторого множества весов w(e), e(tE, жадный алгоритм приводит к независимому множеству /= {еь ег, ..., е,}, в то время как существует множество J= [e[, е'2, ..., е)\ ? 3, такое, что w(J)>iv(I). Будем считать, что элементы множеств / и J упорядочены гак, что w(el)^w(e2)^....^w(ei) и w(e[)^w(e'2)^...^w(e'i), Можно считать, что J — максимальное по включению независимое подмножество в Е По построению / мак- максимально по включению, поэтому из свойства 3 (при Е-А) выте- вытекает, что i~~j Покажем, что для всех т=1, 2, ..., i выполняется неравенство w{em)~^w(e'm), что будет противоречить нашему пред- предположению о юм, что w(J)>w(I). Доказательство проведем ин- индукцией по т. Для т=\ утверждение справедливо. Предположим теперь, что w(em)<.w(em) для некоторого т>\ и w(es)^w(e's) для s=l, ..., т—1. Рассмотрим множество А^={е?Е: w(e)~^w(e'm)}. Множество {ех, .., em_i} является максимальным по включению независимым подмножеством в А, так как если {еи е2, ..., ет_и е} g 3 и w(e)^w(e'm)>w(em), то жадный алгорим должен был бы выбрать е вместо ет в качестве следующего элемента множества /. Это противоречит свойству 3, поскольку {е'х, ..., е'т} — другое не- независимое подмножество в А большей мощности. Этим завершается индукция и все доказательство. Q Определение 12.3. Пусть М=(Е, Э) — матроид и Адс." Ран- Рангом г (А) множества А в М называется мощность максимальных по включению независимых подмножеств множества А. Заметим, что, согласно свойству 3 из теоремы 12.5, все такие подмножества в А имеют одну и ту же мощность, и, следовательно, ранг всегда опре- определяется корректно. Максимальные по включению независимые под- подмножества множества Е называются базисами. Отметим, что в силу замкнутости 3 относительно включения М полностью определяется семейством 3d его базисов По заданному ,© семейство Э можно вос- восстановить следующим образом: 3={I: I^B для некоторого Определение 12.4. Подмножество D множества Е, не входящее в 3, называется зависимым. Минимальное по включению зависи-
296 Гл. 12. Остовные деревья и матроиды мое подмножество С в Е называется циклом. Оболочкой множества А называется максимальное по включению множество 5, содержа- содержащее А и удовлетворяющее условию r(S)=r(A). ? Ниже приведены два интересных свойства матроидов. Первое является обобщением предложения 1.2. Теорема 12.6. Пусть 1?Э и е?Е. Тогда либо I+е^З, либо 1-\-е содержит единственный цикл. Доказательство. Предположим, что 1-\-е<^3. Пусть С= {с: /+е— ¦—с?3}. Утверждается, что С—цикл. Во-первых, это подмноже- подмножество зависимо: в противном случае можно было бы увеличить его до базиса в [+е (заметим, что С^/+е), который должен был бы иметь мощность |/| и, следовательно, имел бы вид /+е—d, но это абсурд- абсурдно, так как тогда d ? С. Во-вторых, С минимально, так как при уда- удалении любого его элемента, скажем с, получается подмножество С—с, содержащееся в независимом подмножестве 1-\-е—с. Для до- доказательства единственности предположим, что D — другой цикл в 1-\-е и в С—D имеется некоторый элемент с. Тогда D является под- подмножеством 1-\-е—си, следовательно, независимо, что противоречит нашему предположению. ? Теорема 12.7. Любое подмножество А^Е имеет единственную оболочку, определяемую следующим образом: sp(A)~ {e : г(А+е)~ =°г(А)}. ъ Доказательство. Если S — оболочка подмножества А и е ? S, то г(А+е)=г(А). Ибо в противном случае если г(А \-е)>г(А), то S^A)(A); приходим к противоречию. Следовательно, Остается показать, что r(sp(A))=r(A) Нетрудно по- понять, что общий базис двух множеств является базисом их объеди- объединения. Поэтому базис множества А является базисом в sp(A), так как он является базисом в А -\-е для каждого е ? sp(A). ? Следствий 1. sp(A) является объединением А и всех циклов, все элементы которых, кроме одного, содержатся в А. Следствие 2. Если /?3, I+е^З и с принадлежит циклу в 1+е, то sp(/)=sp(/-\-e—с). Пример 12.7. Если W — множество лесов графа G=(V, E), то MG=(E, ?) — графический матроид. Циклы в М<7 — это (теоретико-графовые) циклы графа G. Легко видеть, что ранг подмножества Е' из Е равен /¦(?")=|У|— —с(Е'), где с(Е') — число связных компонент графа G'=(F, ?"). Оболочка sp(E') подмножества ?" из f — это наибольшее под- подмножество, содержащее' ?" и имеющее тот же ранг, что и ?". По-
12.4. Матроиды 297 этому sp(?")= {[v, и]? Е: v и и лежат в одной и той же компоненте графа G'={V, E')}. Q Пример 12.8. Пусть Е — конечное множество и П — разбиение множества Е, т. е. семейство непересекающихся подмножеств мно- множества Е, покрывающих Е\ П= {?\, ?\, ..., Ер}. Будем называть подмножество / из Е независимым (/ ? 3) в том и только в том слу- случае, если никакие два элемента из / не лежат в одном и том же мно- множестве разбиения П, т. е. |/п?;|^1, /=1, 2, ..., р. Тогда система Ми=-(Е, 3) является матроидом, называемым матроидом раз- разбиения. Чтобы показать, что Мп — матроид, достаточно показать, что для него имеется хорошо определенная функция ранга. Пусть У(Л) = |/^р: Ej (] А ф 0}. Читатель может легко проверить, что г (A) = \J(A)\ является требуемой функцией ранга, поскольку для данного А можно построить максимальное по включению независимое подмножество в А, выбирая по одному элементу множества А из каждого Ej, с которым А пересекается. Напри- Например, если ? = {«!> •••> е*\ и п = {{еЛ' {^2. езК \ei, еь\, \ев, е,, еЙ\\, то ранг множества A = {elt et, е3, ев, е,\ в Мп равен 3; макси- максимальным по включению независимым подмножеством в А является 1 = {е1, е2, е,\. Оболочка множества А определяется формулой sp (A) = = U ieJ{A)Ej. Циклом в Мп является любое множество, состоящее из двух элементов одного и того же Еу, так \е2, е3\ и \et, ев\ — циклы. Чтобы получить другой пример матроида разбиения, вернемся к системе подмножеств, обсуждавшейся в примере 12.4. Согласно на- нашему определению, множество В дуг орграфа D, представленного на рис. 12.11, независимо, если никакие две дуги из В не имеют об- общего конца. Это эквивалентно разбиению дуг орграфа D в соответ- соответствии с тем, какая вершина является их концом. Для нашего при- примера это разбиение имеет вид П={{(о2, Щ), (vt, vx), (vb, о,)}, (К fa), (fa, v2)}, {(vlt v3)}, {(vb, vt)}, {(v3, o5)}}. Следова- Следовательно, эта система является матроидом разбиения Мп, назы- называемым матроидом разбиения по концам дуг для орграфа D1), и тот факт, что жадный алгоритм решил эту задачу, был вполне естествен- естественным. ? Пример 12.9. В матричном матроиде МД={Е, 3} множество Е — это множество столбцов некоторой (пХ I^IJ-матрицы A, a 3 — множество линейно независимых подмножеств множества Е. Эле- Элементы матрицы А могут быть элементами любого поля К- Система подмножеств МА является матроидом, так как для нее выполняется свойство 3 теоремы 12.5. Это следует из хорошо известного факта линейной алгебры: J) Матроид разбиения по началам дуг для D определяется аналогично.
?98 Гл. 12. Остовные деревья и матроиды все максимальные линейно незав исимые подмножества множества векторов ?" имеют одинаковую мощность. Эта мощность в линейной алгебре называется рангом подматрицы А', определяемой множеством ?". D Матричные матроиды образуют более широкий класс, чем гра- графические матроиды и матроиды разбиения. Можно показать, что лю- любой графический матроид или матроид разбиения представим мат- матричным матроидом, если подобрать соответствующую матрицу Л над некоторым полем К (задача 12). Однако это верно не для всех матрои- матроидов (задача 13); поэтому теория матроидов является существенным обобщением линейной алгебры. 12.5 Пересечение двух матроидов Вернемся еще раз к задаче о паросочетании в двудольном графе. Пример 12.10. Рассмотрим двудольный графй=(К, U, Е), пред- представленный на рис.,- 12 14, и множество а/Я паросочетании в В. Является ли пара (Е, аМ) матроидом? Если бы (Е, е^<) была матроидом, то для нахождения паросоче- тзния в двудольном графе у нас был бы алгоритм намного более про- простой, чем построенный в предыдущих главах. Сущность матроидной струк- структуры состоит в том, что любое макси- максимальное по включению независимое мно- множество является также максимальным по числу элементов. Задача нахождения максимальных по включению независи- независимых подмножеств тривиальна: доста- достаточно добавлять элементы до тех пор, пока это возможно. К сожалению, (Е, а/Я) не матроид. Это легко доказывается / тем, что паросочетание, представленное х)ь А на рис. 12.14, максимально по включе- Рис ,2 ]4 нию, но не максимально по числу эле- элементов. Тем не менее <Л обладает довольно хорошей структурой: оно яв- является пересечением двух матроидов. Другими словами, можно найти два матроида М-^{Е, 3) и N—(E, JC), такие, что а?=Э(]9С- Оба матроида М и N являются матроидами разбиения. Матроид М оп- определяется разбиением П^, подразделением элементов множества Е на подмножества в соответствии с тем, какой вершине из V они инцидентны. Например, для графа, представленного на рис. 12.14, П. — {{е9, е„, е8}, {е3, е2}, {е,}, {е4, еъ), {е7}}. Аналогично, мат- матроид ррзбпения N соответствует разбиению Пс;={{е9, е,}, {ек, es, ei)< {fe. еь}> ic'u е*)}- Нетрудно понять, что подмножество / из Е яв-
12.5. Пересечение двух матроидов 299 ляется паросочетанием тогда и только тогда, когда оно независимо в М (т. е. никакие два ребра из / не имеют общей вершины в V) и в N (т. е. никакие два ребра из / не имеют общей вершины в U). Сле- Следовательно, а?=Зг\ЭС. Таким образом, задачу о паросочетании в двудольном графе можно рассматривать как задачу нахождения мак- максимального подмножества в Е, независимого в двух матроидах. ? Пример 12.11. ОрграфО = (У. А) можно использовать для пред- представления управлений в группе людей. При этом каждый человек изображается вершиной, и дуга (v, и) означает, что v «оказывает влияние» на и. Обычно такая ситуация оказывается хаотич- хаотичной (см. рис. 12.15). На одного человека могут оказывать вли- влияние несколько человек, и эти влияния могут быть противоре- противоречивыми (как в вершине о2, уп- управляемой вершинами vlt v3,ve). Кроме того, в такой структуре возможны циклы (например, ори- ориентированный цикл (vu v3, v7, va, Oi)) или закорачивания (подобно дуге (vu v4), которая закорачива- закорачивает путь (vu v2, v4)). В такой структуре может не быть явно- явного лидера.— вершины, в кото- Рис 12.15. рую не входит ни одна дуга. Иногда требуется организовать такую группу людей в ордере- ордерево. Ордерево — это орграф (V, В), В^А, без циклов и закорачива- закорачиваний: граф G=(F, ?д), получаемый при игнорировании ориента- ориентации дуг из В, является деревом. Кроме того, в каждую вершину — кроме лидера — должна входить ровно одна дуга. Например, жир- жирные линии на рис. 12.15 образуют ордерево. Задача состоит в том, чтобы по данному орграфу D=(V, А) определить, существует ли в А подмножество В, образующее ордерево. Эту задачу можно также сформулировать как задачу нахожде- нахождения максимального множества, независимого одновременно в двух матроидах. Один из этих матроидов — это графический матроид орграфа D, получаемый при игнорировании ориентации. Второй — это матроид разбиения по концам дуг для орграфа D. Должно быть очевидным, что любой лес, составленный из ордеревьев, будет ле- лежать в пересечении этих матроидов. Поэтому А содержит некоторое ордерево В в том и только в том случае, если максимальное множе- множество, независимое в этих двух матроидах, имеет мощность |У|—1. ? Пример 12.12. Даны два графа G и G', ребрам которых сопостав- сопоставлены имена из одного и того же множества Е. Такая ситуация пред- представлена на рис. 12.16. Ищется наибольшее подмножество множе- множества Е, ациклическое как в G, так и в G.'. Очевидно, что это опять
300 Гл. 12. Остовные деревья и матроиды задача нахождения множества наибольшей мощности, независимого в двух матроидах, а именно в графических матроидах MG и Ма,. ? В этом параграфе мы построим алгоритм для нахождения по двум произвольным данным матроидам М = (Е, 3) и N=(E, ОС) наи- наибольшего множества в 3 Г) ОС Поскольку задача о паросочетанин Рис. 12.16. в двудольном графе является частным случаем задачи о пересече- пересечении матроидов, полезно вначале вспомнить методы, развитые в§ 10.2 для решения этой задачи. Задача о наросочетании в двудольном графе решается с помощью многократных увеличений, при которых используются увеличиваю- увеличивающие пути для нахождения все больших пароеочетанпй — в нашей новой терминологии множеств, независимых 'одновременно в двух матроидах М~(Е, 3) и N=(E, ОС) из примера 12.10. Например, S=\eu е2, е3, е4, еъ] — увеличивающий путь относительно паросо- четания /, представленного на рис. 12.14. В свете формулировки нашей задачи с использованием матроидов можно по-новому пред- представить, как 5 действует на /, увеличивая его в результате до /©S. Вначале / превращается в /+еь затем в 1-\-е1—е2, 1-\~ел—е2-{-е3, 1+е,—е2+е3—е4; наконец, в /®S=/+e,—е2-\-е3—f4+e5. Первый элемент е, пути S выходит из свободной вершины множества V; по- поэтому /~fei независимо вМ. Однако /+е, не является независимым в Л' — в противном случае наше увеличение было бы уже закончено. Образуется цикл матроида N, а именно {е,, е2}. Далее, <S «разрывает» этот цикл, удаляя е2, что приводи! к 1-\~ех—ег. Новое множество независимо как в М, так и в N, однако имеет ту же мощность, что и исходное множество / Поэтому мы опять пытаемся найти ребро (в данном случае е3), добавление которого не нарушает независимо- независимости в М, но, возможно, порождает цикл в N, и затем разрываем этот цикл (удаляя ej. При этом мы надеемся, что в конце концов придем к ребру, при добавлении которого сохраняется независимость как
12.5. Пересечение двух матроидов 301 в М, так и п N, в результате чего / увеличивается. Это происходит на следующем шаге, поэтому еь — последнее ребро в S. Аналогичным образом можно определить увеличивающие после- последовательности для произвольных матроидов М и N, что иллюстри- иллюстрируется в следующем примере. Пример 12.13. Пусть требуется увеличить составленный из ор- деревьев лес /, представленный на рис. 12.17(а), до единого ордере- ва. Здесь М — матроид разбиения по концам дуг указанного ор- орграфа и N — графический матроид, получаемый при игнорирова- игнорировании ориентации. Увеличивающей последовательностью относитель- Q—е6—*-0 ^5—*O~^f4"K} (а) (б) Рис. 12.17. но / будет последовательность S—\ely еъ е3, е4, еъ]. Здесь /+е, не- независимо в /И, но зависимо в N, так как образуется цикл {ех, е2, е4, еь). Заметим, что теперь мы можем выбирать, какой из элемен- элементов е2, е4 или е9 удалить, чтобы разорвать этот цикл. Так как все циклы в матроиде разбиения состоят из двух элементов, то в зада- задаче о паросочетании в двудольном графе никогда не бывает такого выбора. Этот факт говорит о том, что четные шаги при поиске уве- увеличивающих путей в задаче о пересечении произвольных матроидов не будут тривиальными, как это было в случае двудольного паросо- четания, и наш вспомогательный граф не будет перескакивать через четные уровни. Выберем е2 в качестве следующего элемента последователь- последовательности 5. При добавлении е3 к /+6i—е2 только в N образуется цикл (ез, е4, е9}. Разорвем этот цикл, удаляя {е4}. Теперь к 1+в1—е2+ + ея—е4 можно добавитье5, при этом не образуется циклов ни в М, ни в Л/, и поэтому 5 — увеличивающая последовательность. Полу- Получаемое в результате ордерево приведено на рис. 12.17F). П Пусть S=[eb е2, ..., ет\ — последовательность элементов из Е. Через Sjj (i^j) обозначим последовательность !е;, ei + l, ..., ej]. Обо- Оболочку множества А ?=? относительно матроида М (соответственно N) будем обозначать через spM(A) (соответственно spN(A)). Аналогич- Аналогично, ранг множества А будет обозначаться гм(А) или rN(A) в за- зависимости от рассматриваемого матроида. Определение 12.5. Последовательность 5 = leb ег, ..., ет] назы- называется чередующейся относительно множества / ? 3 П 5^, если выпол- выполняются следующие условия.
302 Гл. 12. Остовные деревья и матроиды Чер1. I+е^З и е,(?/. Чер2. Для любого четного I, 2^i^.m, справедливо et ? / и VQ)u)pA() ЧерЗ. Для любого нечетного (', З^л^Ст, справедливо еЛ1 и (I®S)(l+) (®)pM() Кроме того, если т нечетно и /ф5 ? Ж, то S называется увели- увеличивающей последовательностью. ? Лемма 12.2. Пусть S — чередующаяся последовательность. Тогда 1) 19г)8и?Ж для четных i\ 2) I?QSU ? 3 для нечетных i. Доказательство. 1. Так как е^1 для нечетных (', то /©S для четных i. Так как spN(IJrSu)=spN(I), то / и /0SU имеют одинаковый ранг в N. Так как / независимо, т. е. имеет полный ранг в N, то /©Su также независимо. 2. Случай нечетного i рассматривается совершенно аналогич- аналогично. D Таким образом, чередующиеся последовательности относительно независимого множества / — это такие последовательности элемен- элементов из Е, что стоящие в них на нечетных местах элементы порож- порождают циклы в N, разрываемые затем следующими элементами. На- Нашей целью является поиск чередующихся последовательностей с ис- использованием знакомого нам метода вспомогательного орграфа для некоторого подходящим образом определяемого вспомогательного орграфа, множество вершин которого совпадает с Е К сожалению, это невозможно, если опираться только на понятие чередующейся последовательности Это связано с тем, что вспомогательный орграф, получаемый непосредственно из определения чередующихся по- последовательностей, является динамическим, т. е. его нельзя зафик- зафиксировать заранее. Множество вариантов для продолжения построе- построения чередующейся последовательности на каждом шаге может су- существенно зависеть от выбора на предыдущих шагах. На рис. 12.18 это проиллюстрировано на примере пересечения двух графических матроидов для графов G и Н. Здесь М — матроид, соответствующий G, и N — матроид, соответствующий Н. Текущее независимое мно- множество имее1 вид {е2, ?2> ei, е-Л=1- Чередующиеся последователь- последовательности [eit e2, ё3\ и [е,, е2, e3l имеют один и тот же последний элемент е3, но совершенно различные продолжения. Первую можно продол- продолжить ребрами е'2 и е4, в то время как вторую можно продолжить реб- ребрами е2 и еь. Никакой фиксированный вспомогательный граф не может отразить варианты, возможные в обоих случаях. Такая динамическая природа задачи о путях является иногда симптомом невозможности простого решения задачи. (См. следующий параграф и гл. 15, где обсуждается задача о галшльтоновом пути.) К счастью, в случае задачи о пересечении матроидов достаточно не- несколько ограничить определение чередующейся последовательности,
12.5. Пересечение двух матроидов 303 чтобы получился подходящий статический вспомогательный ор- орграф. Пусть дано 1^3 Г\Ж и 1+е^З. Через С, будем обозначать единственный М-цикл в /+е,. Если I+е^Ж, то через Dt будем обо- обозначать соответствующий /V-цикл. ?С 1>6 С>— <?5-—НЭ 2 \з е7 *! <8 С^—^4 ——О—f 5 ——О Рис. 12.18. Определение 12.6. Последовательность S=\eu e2, ..., ет\ назы- называемся правильной относительно /€^ГK^, если выполняются сле- следующие условия. Пр1. I+е^З и ех<?/. Пр2. Для любого четного i, 2^('s^/n, справедливо е.{ С / и ei?Di_l. Кроме того, ei^Dlz_l для любого четного k < i. ПрЗ. Для всех нечетных t, 3^i^m, справедливо е,-^ / и e^i^C,-. Кроме того, ek_l^Ci для любого нечетного k < i. Кроме того, если m нечетно и /ф^^Э1?, то S называется правильной увеличивающей последовательностью. ? Лемма 12.3. Правильные последовательности являются чередую- чередующимися. Доказательство. Из Пр1, очевидно, следуе'1 Чер1 (см. определе- определение 12.5). Покажем, что из ПрЗ следует ЧерЗ. Представим /ф5,(- для нечетного i в виде / + е, + (е3—е2) + 4- ¦ • • + (е,-—e,-_i). Каждому заключенному в скобки слагаемому (еу.—бу_х) соответствует добавление некоторого элемента к /0Sly._2, при котором образуется М-цикл (а именно цикл С;, так как ek_l^CJ для нечетных &</), и удаление некоторого элемента из этого цикла. Однако последствию 2 из теоремы 12.7 это не изменяет оболочки множества. Следовательно, spm(I Q)Sli) = = spM(l+e1). Чтобы показать, что из Пр2 следует Чер2, представим /ф5х/ для четного i в виде I + {ei_1—ei) + (ei_3—e!_2) + . .. +(е1—ег).
304 Гл. 12. Остовные деревья и матроиды Снова каждая скобка Fy_t—ej) содержит добавление некоторого элемента eJ_l к /ф5/+1л-, при котором образуется цикл DJ_l. Цикл Dy_! образуется именно при добавлении к /ф5у+1/ эле- элемента e^lt поскольку ek^DJ_1 для четных /г>/. Затем уда- удаляется элемент ef из Dy_t. Эти операции сохраняют оболочку множества относительно матроида N (см. следствие 2 из тео- теоремы 12.7), и поэтому spN (/ф51(.) = spN (/). П Правильные последовательности образуют собственное подмно- подмножество в множестве чередующихся последовательностей. Читатель может проверить, что последовательность S=le1, e«, e3, et, es\ из примера 12.13 является чередующейся, но не является правильной. Это следует из того, что е4 ? Вг в нарушение свойства Пр2. Имеются две причины для определения этого ограниченного клас- класса чередующихся последовательностей: 1) их можно находить с помощью поиска в «статическом» вспо- вспомогательном орграфе; 2) при их использовании сохраняется гарантия, что будет дос- достигнута оптимальность. Например, существует правильная увеличивающая последо- последовательность относительно леса из ордеревьев, представленного на рис. 12.17(а). Это последовательность 5' = [еь eit еь]. Множеством вершин нашего вспомогательного орграфа (Е, А) будет множество Е. Каждый элемент е; ? Е—/ будет кандидатом на нечетные позиции в правильной чередующейся последовательности S. Если 1~\-е^З, то находим С,- и добавляем к А дугу (е>, et) для каждого в/ ? С;—et в соответствии со свойством ПрЗ. Если /+ег ? 3, то et может использоваться в качестве первого элемента в 5. В ка- качестве последнего элемента последовательности 5 может использо- использоваться любой элемент из Е—/, такой, что /+е( ?Ж; эти элементы будут нашими целями, и достижение любого из них будет указывать на то, что найден правильный увеличивающий путь. Если же /+?; 0?, то, согласно свойству Пр2, добавляем к А дугу (eit ej) для каждого е} из D,-—е(. Пример 12.14. Построим вспомогательный орграф (Е, А) для леса /, состоящего из ордеревьев, представленного на рис. 12.17(а). Для этого просмотрим по очереди все элементы из Е—/. Нач- Начнем с ех. Так как 1-\-ег?3, где 3 — матроид разбиения по кон- концам дуг, то ех может быть начальным элементом последователь- последовательности 5. Кроме того, / + е10(?, где Ж—графический матроид. Так как Dl—\el, e2, е4, е9), то добавляем к А дуги (е,, ег), (ех, е4) и (ех, ея). Для е3 имеем I + es^3. Так как С3 = {е2, е3\, до- добавляем к А дугу (е2, е3); так как 1 + е30С и D3 = {e3, et, e9\, то к Л добавляются дуги (е3, е4) и (е3, е9). Для е8 замечаем, что ^ + ?в€^, поэтому ев может быть начальным элементом последо- последовательности 5 Так как / + ee^Sff и D(i=-{eei e,, е8|, то к Л до- добавляются дуги (е„, е,) и (ев, е8). Аналогично, 1 + еъ^Э и С5 = = \еъ, е4}, а также / + eX0^J и С10 = {е,,, е10}. Поэтому к А до-
12.5. Пересечение двух матроидов 305 бавляются дуги (et, еъ) и (е„, е10). Наконец, 1-\-еъ, I -\-el0€9?, поэтому оба элемента е5 и е10 являются целевыми. Описанный вспомогательный орграф представлен на рис. 12.19. Заметим, Рис. 12.19. что орграф (Е, А) является двудольным, так как любая дуга идет из / в Е—/ или обратно. ? Оказывается, что недостаточно найти какой-нибудь путь из S в Г во вспомогательном орграфе. Некоторые такие пути могут не „-о . (а) (б) Рис. 12.20. соответствовать увеличивающим последовательностям. Это проил- проиллюстрировано на рис. 12.20, где рассматривается еще одна задача об ордереве. Множество /, которое нужно увеличить, выделено на рис. 12.20(а) жирными линиями. Соответствующий вспомогатель- вспомогательный орграф представлен на рис. 12.20F). Заметим, однако, что путь S = [elt е2, бз, ?4> еь\ во вспомогательном орграфе не является увели- увеличивающим путем. При этом множество /0S={eb e3, еъ, ее} не обра- образует леса из ордеревьев — оно не является независимым в графиче- графическом матроиде. Причина состоит в том, что в рассматриваемом пути
306 Гл. 12. Остовные деревья и матроиды имеется подпуть, а именно S' = [eu е4, еъ\. Это означает, что для S нарушается свойство Пр2 — поскольку ei?Dl — т. е. эта последо- последовательность не является правильной. Следовательно, мы должны использоеэть поиск в ширину для нахождения во вспомогательном орграфе кратчайших путей из S в Т. Оказывается, что такие пути всегда будут правильными и, следовательно, увеличивающими. Полностью описанный алгоритм приведен на рис. 12.21. Чтобы показать корректность этого алгоритма, необходимо вна- вначале проделать некоторую предварительную работу. Пусть ?, и Е2 таковы, что ?, U Е2=Е. Назовем рангом этой пары множеств (для фиксированных матроидов М и N) число r(Eu Е2)=гм(Е1)-\- 4- rN(E2). Пусть J — произвольное множество из 3 Г\Ж. Лемма 12.4. r(Eu E2)^\J\. Доказательство. Пусть J1 = Jf\El и J2=Jf\E2. Так как А и У2 — независимые подмножества соответственно в ?, и Е2, то r(?lt E2) = rM(E1) + r,x(E2)^\J1\ + \J2\^\J\. ? Пусть матроиды /И и N задаются алгоритмами da и Ах, " пусть f||) — перхняя оценка сложности этих алгоритмов при работе с задачами размера |?|. Теорема 12.8. Алгоритм, представленный на рис. 12,21, коррек- корректно решает задачу о пересечении матроидов за время 0{\Е\-'С(\Е\)). Доказательство. Во-первых, утверждается, чго последователь- последовательность S=\eu e2, ..., ет\, построенная этим алгоритмом, является правильной и, следовательно, чередующейся. Свойство Пр1 из оп- определения 12.6, очевидно, выполняется. Для доказательства свой- свойства Пр2 заметим, что элементы, стоящие в S на четных местах, входят в /, что вытекает из двудольности вспомогательного графа. Кроме того, конструкция вспомога:ельного орграфа гарантирует, что e;gDj_, для четных i. Предположим теперь, что ei?Dk_1 для некоторого /г<1. Тогда дуга (ek, e() содержится во вспомо- вспомогательном графе. Это, однако, противоречит тому факту, что Q— очередь (и, следовательно, наш алгоритм находит кратчайшие пути). Свойство ПрЗ показывается аналогично. Наконец, так как ет ? Т, то m нечетно и l~\-em ?5^; таким образом, [Q)S gf и S — увеличивающая последовательность. Таким образом, наш алгоритм производит увеличение вдоль уве- увеличивающих последовательностей, и поэтому все получаемые мно- множества / лежат в 3 П Э^, как и требуется. Покажем теперь, что ал- алгоритм не может остановиться, пока / не станет максимально воз- возможным. Пусть L и U — соответственно множества помеченных и непомеченных элементов из / в конце алгоритма. Рассмотрим ?\ = =spM(U) и E2=spN(L). Каждый элемент множества / принадле-
12.5. Пересечение двух матроидов 307 жит одному из множеств Еи Ег. Рассмотрим любой элемент е, из Е—/; покажем, что он также принадлежи! одному из множеств Еъ Е2. Если et помечен, значит, во время поиска мы помечали все элементы соответствующего Dt. Поэтому если ег добавить к L, то АЛГОРИТМ ДЛЯ ЗАДАЧИ О ПЕРЕСЕЧЕНИИ МАТРОИДОВ Вход. Два матроида М=(Е, 3) и N = (E, X), заданные двумя алгоритмами ^¦з и <^Ж. Выход. Множество \^3f\X максимальной мощности. bejin I: = 0; (comment: начальное значение) этап: А: = 0, Q: = 0, Т: = 0; (comment: задание начальных значений для поиска по орграфу) for all eigE-l do begin (comment: построение вспомогательного орграфа) if I -f- e; g Л , SK then I: = I -f- ei, go to этап; if l + eietf then Q:=QU{ej}, пометка\^:=й, else for all ej?Cj—ei do А:=АН{(еь e,)}; if I + eig^T then T:=TU{ej} " else for all CjgDi — e( do A:=A(J{(ei, e()} (comment: C\ и D[ —циклы, определяемые через t\ и I так, как описано в тексте перед определением 12.6) end; while Q Ф 0 do begin пусть е — элемент из Q: удалить е из Q; (comment: Q должно быть очередью) for all непомеченных е'?Е, таких, что (е,е')^А do begin пометка[е']:=е, Q:=QU{e'}; if e'?T then 1: = 1фПУТЬ(е'), go to этап end end end procedure ПУТЬ(е) (comment: она выдает правильную увеличивающую последовательность от некоторого элемента множества S до е: ПУТЬ — рекурсивная процедура) if пометка[е] = 0 then return [e] else return ПУТЬ(пометка[е]) || [е] Рис. 12.21. Алгоритм для задачи о пересечении матроидов. образуется Л'-цикл, именно Dt. Таким образом, e.t ?spN(L). Пред- Предположим теперь, что e.t не помечен. Тогда должно быть 1-\-е^З, ибо в противном случае элемент et имел бы пометку 0. Следователь- Следовательно, /+е* содержит УИ-цикл Ct. Однако никакой элемент е^ из С, не мог помечаться, поскольку в противном случае et был бы помечен на следующем шаге по дуге (ejt e,). Поэтому при добавлении et к U образуется УИ-цикл. Следовательно, ег ?spM(U). Итак, Ех U Е2 — Е, и поэтому г (Eit E2) ~^\J\ для всех / ? 3 П 3f (лемма 12.4). Однако легко понять, что г (?х, Е2) = L -f | U | = j / |
308 Гл. 12. Остовные деревья и матроиды и поэтому \1\^\J\ для всех J ZSfl'tfC. Следовательно, /—тре- /—требуемое максимальное пересечение. Для получения временной оценки заметим, что возможно не более \Е\ увеличений. При каждом увеличении основное время уходит на построение вспомогательного орграфа. Для каждого е;^Е—/ мы находим Dh или С,-, или оба цикла. Это можно сделать, применяя алгоритмы Аз и Ах к / + е,-—ej для каждого Су ? Е. Построение вспомогательного орграфа Q и множества Т также можно выполнить за время О (| Е \*-С (| Е |)). Наконец, поиск по орграфу требует О (| Е |2) времени. Получаем нужную времен- временную оценку. ? 12.6 О некоторых расширениях задачи о пересечении матроидов 12.6.1. Взвешенное пересечение матроидов. Пусть даны два матроида М—(Е, 3) и N=(E, Ж), и пусть каждому eg ? сопо- сопоставлен eecw(e). Требуется найти такое подмножество 1?ЖГ\3, чтобы See/ Me) была как можно больше. Для этой задачи имеет- имеется полиномиальный алгоритм, являющийся еще одним примене- применением прямо-двойственного метода. Опять задача с весами сводится к задаче без весов с помощью представления исходной задачи в виде задачи линейного программирования. Это представление — аналог теоремы 11.2 — описано в следующей теореме. Теорема 12.9 (Эдмондс). Задача о взвешенном пересечении мат- матроидов эквивалентна задаче ЛП max 2 w(e)'X (e) при условиях ^ х(е)<гм (А), ееА для всех Ле Е. 2 x(e)<rN(A), ее А Очевидно, что если х(ё), где е € Е, представляет некоторое мно- множество из 3 П *Х, то ограничения из теоремы 12.9 выполняются. Остается показать, что при любых весах компоненты оптимального решения этой задачи ЛП всегда равны 0 или 1 и, следовательно, на самом деле соответствуют множеству наибольшего веса из 3 П 9С. Конструктивное доказательство этого факта можно получить, при- применяя прямо-двойственный метод к рассматриваемой ЛП и замечая, что ограниченная прямая задача всегда оказывается задачей о не- взвешенном пересечении матроидов для пары модифицированных матроидов М' и N'. Мы не приводим здесь деталей, поскольку они совершенно очевидны (см. [Lai]).
12.6. О некоторых расширениях 309 12.6.2. Матроид с соответствием. Даны матроид М = (Е, 3) и разбиение 17 множества Е на непересекающиеся пары: П = = {[>,, е2], [е3, е4], ..., [е„_,, еп]\. Требуется найти наибольшее подмножество Р в множестве П, такое, что \Jptpp?3. Эта за- задача называется задачей о матроиде с соответствием. Например, легко видеть, что если М — матроид разбиения, то задача о матроиде с соответствием вырождается в задачу о паросо- четании (задача 19). Если М — графический матроид, то задачу о es ?6 ei eu eu Рис. 12.22. матроиде с соответствием можно переформулировать следующим об- образом: для данных графа G и разбиения П ребер этого графа на пары (рис. 12.22) найти такое остовное дерево Т, чтобы вместе с любым ребром е, содержащимся в Т, напарник этого ребра также содержал- содержался бы в Т. Эта задача является обобщением двух задач — задачи о пересечении двух графических матроидов (пример 12.12) и задачи о паросочетании (задача 20). Ловац [Lo] недавно показал, что задача о матроиде с соответстви- соответствием не может быть решена для произвольных матроидов. Для случая графических матроидов (на самом деле для более общих матричных матроидов) Лован привел алгоритм. 12.6.3. Пересечение трех матроидов. Еще одно направление, в котором можно попытаться обобщить результаты, полученные для пересечения двух матроидов,— это построение алгоритма для нахож- нахождения наибольшего множества, независимого в трех матроидах. К сожалению, не известно полиномиального алгоритма, решающего эту задачу. Более того, как будет показано в гл. 15, имеются сви- свидетельства в пользу того, что для этой задачи никогда не будет най- найдено полиномиального решения независимого от того, насколько мы продвинемся в понимании ее структуры в будущем. Пока мы пока-
310 Гл. 12. Остовные деревья и матроиды жем, что если бы у нас был способ решения этой задачи за полино- полиномиальное время (полиномиальное относительно |?| и сложностей С,, С2 и С3 алгоритмов, описывающих три рассматриваемых мат- матроида), то мы могли бы также решить за полиномиальное время хо- рошо изученную комбинаторную задачу оптимизации, связанную с ЗК,— задачу об ориентированном гамильтоновом пути: для данного орграфа D=(V, А) определить, имеется ли в D га- мильтонов путь, т. е. ориентированный путь h, проходящий через каждую вершину множества V ровно один раз. Например, орграф D, представленный на рис. 12.23, содержит гамильтонов путь (vu u2, v3, y9, u7, ve, u4, иъ, vs). Теорема 12.10. Существуют такие три матроида МХ=(Л, 3J, М2 — (А, 32) и УИ3 = (Л, 33) с полиномиально ограниченными ал- алгоритмами Ла„ <Ла2 и <Ауа, что орграф D = (V, А) содержит гамильтонов путь в том и только в том случае, если сущест- существует множество I ? 3^ П 32 f\ Э3, такое, что |/| = |V|—1. Доказательство. Достаточно заметить, что гамильтонов путь — это просто ордерево, никакие две дуги которого не имеют общего начала. Поэтому любой гамильтонов путь может быть определен как подмножество множества А, независимое одновременно в гра- графическом матроиде, соответствующем графу (V, ЕД), в матроиде разбиения по концам дуг орграфа D и в матроиде разбиения по на- началам дуг орграфа D, и имеющее мощность \V\—1. Q
•заиачи 31 Задачи 1. Найдите МвД в приведением ниже графе, испельзуя еба алгоритма* яредставленные на рис. 12.2 и 12.5. Найдите ЛМВ для того же графа. 2*. Алгоритм построения МОД, представленный на рис. 12.5, можно реали- реализовать так, чтобы время его работы не превосходило G(\E\ log log |V|), исполь- используя следующую процедуру. Прежде всего мы не будем вычислять связные компо- компоненты графа (V, Т) заново на каждом этапе. Вместо этого мы будем сливать соот- соответствующие компоненты. а) Покажите, как можно представлять разбиение C={5i, . . . , Sk) вершин с помощью четырех массивов первая, следующая, размер и множество таким об- образом, чтобы за один шаг можно было определить, в каком множестве содержится данная вершина, а два множества 5,- и Sy можно было бы слить за O(min(|S,|, |5у|)) шагов. Медиану множества, содержащего п чисел, можно вычислить за время 0(п), используя умный алгоритм из [BFPRT]. б) Используя эту информацию, покажите, что множество 5, содержащее п чисел, можно за время 0(п log р) разбить на р-квантили, т. е. такие р множеств 51, 52, . . , SP, каждое мощности [_п/р\ или fn/p~), что из a?S<, b?S-/', ('</, следует а<?>. Предположим теперь, что список смежностей каждой вершины v подразбит на р-квантили для некоего р, которое предстоит определить. Будем вычислять значения массива кратчайшее (рис. 12.5), просматривая список смежностей каждой вершины v пачками, содержащими целые квантили. Если такой поиск по квантили обнаруживает по крайней мере одно ребро [v, и], в котором и принад- принадлежит другому множеству разбиения С, то поиск успешный; в противном случае это неудачный поиск. в) Покажите, как вычислять кратчайшее таким образом, чтобы (i) общее число успешных поисков не преюсходило О(\Е\1р) на этап и (ii) общее время неудачных поисков не преюсходило О(\Е\) для всех этапов вместе. г) Покажите, что время работы описанного жыше алгоритма не превосходит O(log | V|-(|?|//H-|V|+|?| log p). Соответствующим образом выбирая р, пока- покажите, что МОД в графе с |?|>|VI log IVI может быть найдено за время 0(\Е\ log log | VI). д) Обобщите результат из п г) на графы с |?|<|V| log |V|. (Указание: вна- вначале выполните og log |V| этапов алгоритма, представленного на рис. 12.5.) 3. Покажите, что жадный алгоритм для МОД можно реализовать так, чтобы время его работы не превосходило 0(\Е\ log |V|). 4. Пусть Р={р,, р2, ... , pn}^R2 — конечное множество точек на плоскости. Пусть d,y=dist (pi, pj) — евклидово расстояние между р,- и pj. Клеткой Дирихле точки PidP называется множество всех q?R2, таких, что dist (p,-, <?)«dist(p/, q) для всех /V=<-
312 Гл. 12. Остовные деревья и матроиды а) Покажите, что клетки Дирихле для множества Р являются выпуклыми многоугольными областями (некоторые из них неограниченны), покрывающими всю плоскость и пересекающимися, только но границам. б) Найдите клетки Дирихле для приведенного ниже множества точек Р. в) Покажите, что клетка Дирихле точки ру ограничена тогда и только тогда, когда pj — выпуклая комбинация трех неколлинеарных точек из Р. 5. Две точки р/, ру?Р называются соседями по Дирихле, если пересечение их клеток Дирихле не пусто и отлично от единственной точки. Графом Дирихле для множества Р называется графGf>=(P, ED), где?д={[р,-, pj\: pi и р} — соседи по Дирихле}. а) Говоря неформально, граф планарен, если его можно нарисовать на пло- плоскости так, чтобы никакие два ребра не пересекались. Покажите, что граф Ди- Дирихле для любого множества точек Р планарен. Можно показать, что если граф (V, Е) связен и планарен, то |?|«:3| VI—6 при >3 б*) Докажите, что граф Дирихле для множества, содержащего я точек, мож- можно построить за время 0 (я log л). в) Покажите, что МОД для множества точек Р с расстояниями d;j является подграфом графа Дирихле множества Р. Выведите отсюда, что МОД для мно- множества Р может быть вычислено за время О (я log я). г) Приведите пример с шестью точками, показывающий, что кратчайшее паросочетание для множества точек не является подграфом графа Дирихле. д*) Является ли кратчайший обход в ЗК для множества точек подграфом графа Дирихле? 6. Пусть Р — множество точек на плоскости. Покажите, что никакие два ребра из МОД для Р (относительно dij) не пересекаются, если их представить соответствующими отрезками на плоскости. 7. Пусть Р — множество точек. Покажите, что существует МОД для Р, в котором степени всех вершин не превосходят 5. 8. Задача о бродячем торговце (ЗБТ) совпадает с ЗК, за исключением того что торговец может начать свой путь в любом месте и не обязан вернуться в ис- исходный город после обхода всех городов. а) Покажите, как за полиномиальное время преобразовать любую индивиду- индивидуальную ЗБТ в эквивалентную индивидуальную ЗК. б) Покажите, как за полиномиальное время преобразовать любую индивиду- индивидуальную ЗК в эквивалентную индивидуальную ЗБТ. (Под словом эквивалентную мы имеем в виду, что оптимальный обход в одной задаче легко получается из оп- оптимального обхода в другой.) 9. Какие из следующих задач, по существу, не изменяются при переходе от задачи минимизации к задаче максимизации? Почему? а) ЗК. б) Кратчайший путь из s в t. в) Полное паросочетание минимального веса. г) МОД. 10 (задача о паросочетании с весами вершин). Для данных графа G=(V, E) и весов w: V -*¦ Z+ иа вершинах графа G требуется найти паросочетание М в гра-
Задачи 313 фе G, максимизирующее 5Л1 w(v), где сумма берется повеем вершинам v, инци- инцидентным некоторому ребру из М. Покажите, что жадный алгоритм решает эту задачу: а) непосредственными рассуждениями; б) показав, что определенная система независимости (V," o/fl) удовлетво- удовлетворяет свойству 2 из теоремы 12.5; в) показав, что (V, оЖ) удовлетворяет свойству 3 из теоремы 12.5; г) уяснив, что представляют собой циклы, оболочки и функция ранга в (V, qS). {Примечание: млтроиды, аналогичные (V,q$), называются матрои- дами паросочетаний.) 11. Пусть Е — конечное множество, С = {Si, ..., Sm] — семейство подмно- подмножеств множества ?, и пусть Г = {еь ..., е\\^Е. Будем говорить, что Г— трансверсаль семейства С, если существуют различные целые числа / A), ... ..., j(t), такие, что i'i^SJ-^), i = l, ..., t. Пусть 3 множество всех транс- версалей в Е. Покажите, что МС = (Е, 3) — матроид. Что представляют собой циклы, оболочки и функция ранга в Мс} 12. Покажите, что каждый из следующих матроидов М является ма- матричным, подобрав поле К, размерность d и вектор L(e)?Kd для каждого элемента, е из Е. а) Графический матроид Ма- б) Матроид разбиения Мп. в) Матроид трансверсалей Мс. 13. Рассмотрим приведенную ниже систему, состоящую из семи точек и семи линий (шести отрезков "и окружности). Определим систему независимости М —(Е, 3), где Е = {а, ft, с, d, e, /, g} и подмножество S из ? входит в 3 тогда и только тогда, когда выполняется одно из следующих условий. (|) 1,5 К 3. (п) |S|=3, и никакая из семи линий не проходит через все три точки, входящие в S. а) Покажите, что М — мчтроид. Что представляют собой циклы, обо- оболочки и функция ранга в Ml б*) Покажите, что М не является матричным матроид ом, т. е. не су- существует системы из семи векторов над произвольным полем, такой, чтобы независимые множества имели в точности такую же структуру, как данная система 5. 14. Пусть М = (Е, #) — матроид, и пусть % — множество его циклов. а) Докажите следующие утверждения. (i) Если Сь C2?g и С\<=С2, то С1 = С2. (и) Если Си С2?<ё, c€CinC2 и e'gCi —С2, то найдется С,Pg, такое, что CsSfCj U Со)-е и е'?С3. б) К;к выглядит интерпретация утверждения (ii) для графических ма- матроидов? Для матричных матроидов? в*) Докажите обратное утверждение, т. е. что если система (?, Ч§) удовлетворяет (i) и (ii), то (?, 3) —матроид, где 3={I^E: C&I для всех С^Щ
314 Гл. 12. Остовные деревья и матроиды 15. Даны конечное множество Е и семейство C = {Slt S2, ..., Sn под- подмножеств множества Е. Спрашивается, существует ли такое множество Н^Е, что \Н\ = п и |ЯГM,-| = 1 для ( = 1, ..., п. Сформулируйте эту за- задачу как задачу о пересечении матроида трансверсалей и матроида разбиения. Зятем решите ее наиболее простым способом. 16. Даны граф <3 = A/, Е) и множество L ? V. Требуется определить, существует ли такое остовное дерево Т в G, чтобы все вершины из L были листьями дерева Т. Сформулируйте эту задачу как задачу о пересечении графического матроида и мзтроида разбиения. Затем решите ее наиболее простым способом. 17. Найдите максимальное пересечение двух графических матроидов, пред- представленных па рис. 12.16. 18* (задача о разбиении относительно матроида). Даны матроид М = (?, 3) и множество S'^E, и требуется выяснить, можно ли разбить 5 на два множества Ilt 1г?3- Покажите, что эта задача эквивалентна задаче о пе- пересечении матроидов. 19. Покажите, что задача о матроиде с соответствием (см. разд. 12.6.2) для матроидов разбиения совпадает с задачей о шфосочетании. 20. Покажите, что задача о матроиде с соответствием для графических матроидов является обобщением двух <адач; задачи о пересечении двух графических матроидов и задачи о паросочетании. (Указание: возможно, вам придется использовать мулыпиграфы, т. е. графы, в которых допуска- допускаются повторения ребер.) 21. Пусть М = (Е, 3) — матроид, и пусть ,@ —множество базисов матро- матроида М. Пусть 3 = {/&?: Е—ITS В для некоторою #?,53}. Покажите, что М=(Е, 3) —матроид. (Примечание. М называется матроидом, двойст- двойственным к М.) 22. Пусть даны граф G = (V, E), вершина v?V и целое число k, и тре- требуется определить, существует ли остовное дерево в G, в котором степень вершины v не превосходит k. Покажите, что это задача о пересечении ма- матроидов. Комментарии и ссылки Похоже, что самый ранний источник 1адачи МОД не известен. Одним из наиболее ранних является чехословацкая статья [Во) Boruvka, О. On a Minimal Problem, Prace Morawske Predovedecke Spole- crosti, 3 A926). Алгоритм, представленный на рис. 12.2, обычно приписывается Приму [Pr] Prim R. С. Shortest Connection Networks and some Generalizations, BSTJ, 36 A957), 1389—1401. [Имеется перевод: Прим Р. К. Кратчайшие связы- связывающие сети и некоторые обобщения.— В сб.: Киберн. сб. вып. 2 (старая серия).— М.: Мир, 1961, с. 95—107.] [Di] Dijkstra E. W. A Note on Two Problems in Connexion with Graphs, Nume- rische Mathematik, 1 A959), 269—271 Алгоритм, приведенный на рис. 12.5, описан в книге [BGJ Berge С, Ghouilla-Houn A. Programming, Games and Transportation Net- Networks. New York: John Wiley & Sons, Inc., 1965 Алгоритм с оценкой 0(lEllog loglKlj, описанный в задаче 2, взят из работы [Ya] Yao А. С.-С. An O(l?|log loglKI) Algorithm for Finding Minimum Spanning Trees, Inf. Proc. Letters, 4 A975), 21—25. Множество близких алгоритмов, включая алгоритм со сложностью 0(Е) для разреженных графов, описано в работе
Комментарии и ссылки 315 [СТ] Cheriton D., Tarjan R. E. Finding Minimum Spanning Trees, J. SIAM Сотр., 5 A976), 724-742. Жадный алгоритм для задачи МОД представлен в статье [Кг] Kruskal J. В. On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem, Proc. Amer. Math. Soe., 7 A956), 48—50. Матроиды (известные также как предгеометрии по причинам, связанным с задачей 13) были впервые изучены в работе [Wh] Whitney H. On the Abstract Properties of Linear Dependence, Amer. J. Math., 57 A935), 509—533. Для более глубокого изучения матроидов см. также [Tu] Tutte W. Т. Lectures on Matroids, J. Res. NBS, 69B A965), 1—48. [CR] Crapo H. H., Rota G.-C. On the Foundations of Combinatorial Theory: Com- Combinatorial Geometries. Cambridge, Mass.: M. I. T. Press, 1970. Связь теории матроидов с комбинаторной оптимизацией и алгоритмом Краскала была впервые показана в работе [Edl] Edmonds J. Matroids and the Greedy Algorithm, Math. Prog., 1 A971), 127— 136. В этой статье также анонсировано полиномиальное решение задачи о пересече- пересечении двух матроидов. Алгоритм, приведенный на рис. 12.21, впервые опубликован в работе [Lai] Lawler E. L. Matroid Intersection Algorithms, Math. Prog., 9 A975), 31—56. Эквивалентная задача о разбиении матроида (задача 18) решена в статье [Ed2| Edmonds J. Minimum Partition of a Matroid into Independent Subsets, J. Res. NBS, 69B A965), 67—77. Задачи 4 и 5 взяты из [Sh] Shamos M. I. Computational Geometry (неопубликованная диссертация, Yale University, 1978). Задачи 10 и 11 взяты из [EF] Edmonds J., Fulkerson D. R. Transversals and Matroid Partition, J. Res. NBS, 69B A965), 147—153, а задачи 13, 14 — из оригинальной статьи Уитни [Wh]. Эффективные алгоритмы для нахождения кратчайшего ордерева во взвешенном орграфе можно найти в работах !Ed3] Edmonds J. Optimum Branchings, J. Res. NBS, 71B A967), 233—240. [Ka] Karp R. M. A Simple Derivation of Edmonds' Algorithm for Optimum Branch- Branching, Networks, I A971), 265—272. [Та] Tarjan R. E. Finding Optimum Branchings, Inf. Proc. Letters, 3 A974), 25—35. Задача о матроиде с соответствием (разд. 12.6.2) для матричных матроидов ре- решается в работе [Lo] Lovasz L. The Matroid Matching Problem, Proc. Cont. on Algebraic Graph Theory, Szeged, Hungary, 1978. Факт, использованный в задаче 2, взят из [BFPRT] Blum M., Floyd R. W., Pratt V. R., Rivest R. L., Tarjan R. E. Time Bounds for Selection, JCSS, 7 A973), 448—461.
13 Целочисленное линейное программирование 13.1 Введение Задачей целочисленного линейного программирования (ЦЛП) на- называют следующую задачу оптимизации: minc'x, Ax = b, х целочисленно. Аналогично можно определить задачу ЦЛП в канонической и общей формах, при этом утверждение о том, что все эти формы эквивалент- эквивалентны (см. §2.1), остается справедливым. Элементы матрицы А и век- векторов b и с предполагаются целыми. К необходимости формулировки и решения задач ЦЛП первона- первоначально привел тот факт, что в некоторых приложениях ЛП дробные Допустимая область задачи ЛП Убывание стоимости Рис 13.1. Четыре целочисленные точки, бли- ближайшие к оптимуму задачи ЛП, недопустимы. решения нежелательны — представьте себе, например, приложе- приложение, в котором Xj — число самолетов, назначаемых на маршру> /. Первая реакция на задачу ЦЛП обычно бывает 1акой: «Почему бы не решить соответствующую задачу ЛП и округлить решения до бли- ближайшего целого числа?», Конечно, во многих случаях эта страте- стратегия дает неплохой результа!, особенно тогда, когда ожидается, что решение будет содержать большие целые числа и будет, следовз1ель-
13.1. Введение 317 ю, не чувствительно к округлению. Однако и здесь возникают проб- [емы: не всегда ясно, как провести округление до допустимого це- ючисленного решения (см. рис. 13.1 и 14.1). Имеются и другие очень ерьезные факторы, ограничивающие этот подход. Большинство [риложений ЦЛП не являются просто задачами ЛП, в которых не- [звестные принимают значения с единичным шагом. Чаще задача ЩП является результатом сознательного применения целочислен- [ых ограничений к модельным комбинаторным ограничениям или 1елинейностям различного рода. Такие задачи ЦЛП по своей при- )оде не допускают подхода, основанного на округлении, в основном тотому, что при округлении теряется основная цель формулировки *адачи в виде задачи ЦЛП, и правильно выполнить такое округле- 1ие так же тяжело, как решить с самого начала исходную комби- 1аторную задачу. Рассмотрим несколько таких примеров. Пример 13.1 (формулировка задачи коммивояжера как задачи це- ючисленного линейного программирования). Рассмотрим задачу ком- ливояжера с л+1 городами, представленными вершинами 0, 1, . . . ,. ., п и матрицей [си\ (не обязательно симметричной) расстояний нежду городами. Сопоставив дуге (i, j) переменную xi} и положив <и=\, если дуга (i, j) содержится в обходе, и 0 в противном слу- iae, можно для начала сформулировать ЗК следующим образом: п min г = 2 caxijy i. i = 0 i ф j О ^ Хц ^ 1 для всех i, /, хи—целые для всех i, j, ,j3 и п \А) ?j Хц 1 , / — U, . . . , Л, (б) > х- = 1 i= 1 л I =0 Равенства (а) выражают тот факт, что в каждую вершину входит ровно одна дуга, а равенства (б) — тот факт, что из каждой верши- вершины 1, . . ., п выходит ровно одна дуга (из (а) и (б) вместе вытекае], что из вершины 0 также выходит одна дуга; см. задачу 7). Однако все эти условия не описывают полностью ограничений ЗК, так как лю- любое множество непересекающихся циклов будет удовлетворять A3.1), что проиллюстрировано на рис. 13.2(а). В действительности A3.1) описывает задачу о назначениях (§ 11.1), которая, очевидно, легче, чем ЗК- Нам нужны ограничения, которые исключали бы непере- непересекающиеся циклы, или подобходы, как они будут называться в дан- данном контексте. Один из возможных вариантов состоит в следующем 1DFJ]. Пус1ЬE, S) — нетривиальное разбиение множества {0, 1, ... . . ., п). Для каждого такого разбиения потребуем, чтобы выполня-
318 Гл. 13. Целочисленное линейное программирование лось неравенство A3.2) i es Эта идея проиллюстрирована на рис. 13.2F) — все такие ограни- ограничения вместе обеспечивают то, что граф является единым обхо- обходом. Однако эта формулировка едва ли может использоваться на 5 о Рис. 13.2. а) Допустимое решение задачи 13.1, не являющееся обходом, б) Ограничение, исклю- исключающее подобходы. практике даже для задач среднего размера, так как имеется 2а+1 —2 нетривиальных разбиений, для каждого из которых вво- вводится ограничение. В более краткой формулировке, принадлежащей Таккеру [MTZ], ограничения A3.2), устраняющие подобходы, заменяются неравен- неравенствами пх(/^п—1, \^.1ф1^.п, A3.3) где uit i=\, . . ., п,— неограниченные действительные переменные. Покажем, что эти неравенства не только требуют, чтобы реше- решения были обходами, но и не исключают никаких обходов. Предложение. Ограничения A3.1) и A3.3) определяют ЗК. Доказательство. Покажем сначала, что любое допустимое реше- решение является обходом. Для этого покажем, что каждый цикл про- проходит через город 0. Допустим противное, т. е. что последователь- последовательность городов iu . . ., ih является циклом, не содержащим города 0.
13.1. Введение 319 Неравенства A3.3) для дуг этого цикла дают щ — u(l-\- n ^.n— 1. Складывая эти неравенства, получаем противоречие. Для завершения доказательства покажем, что для каждого до- допустимого обхода существуют значения переменных щ, удовлетво- удовлетворяющие A3.3). Действительно, пусть ы()=0 и «, = /, если город i при данном обходе посещается t-u по счету, (=\, . . ., п. Если х^=0, то должно быть ut—и^п—1, l^t^/^n, что всегда выполняется, так как случай м, = п и м,=0 исключен, поскольку иначе дуга (t, 0) содержится в обходе и, следовательно, xi0=\. Если Хц=\, то дол- должно быть «j—Uj+n^.n—1, что выполняется, так как если t и / — последовательные города на обходе, то и-,—ut=—1 (заметим, что случай ut=n и «/=0 исключен из A3.3)). Описанная формулировка содержит переменные х1}, которые должны быть целыми, и переменные ии которые могут принимать произвольные значения. Такая задача называется смешанной зада- задачей целочисленного линейного программирования (СЦЛП). ? Пример 13.2 (общая задача о расписании). Задачи о расписании образуют важный класс комбинаторных задач оптимизации. Они касаются оптимального выполнения заданного множества заданий с использованием нескольких процессоров и других ресурсов при определенных ограничениях, таких, как приоритет одного задания над другим, ограничения на время окончания заданий и т. д. Цель состоит в минимизации некоторой целевой функции, обычно общего времени работы — т. е. времени между началом выполнения пер- первого задания и концом выполнения последнего задания. Подробное обсуждение задач о расписании можно найти в [Col. Мы определим сейчас очень общую задачу о расписании, которая включает в себя в качестве частных случаев большинство имеющихся в литературе задач о расписании. Дан набор заданий 1?-={Ji, ... , Jn). Для каждого задания Jt из ^ заданы целочисленное время выполнения тг и количество Rjt f-ro ресурса, которое при этом требуется, /=1, .... г. В каждый мо- момент времени доступны Bj единиц /-го ресурса, /==1, . . . , г. Задания должны выполняться на т процессорах; бинарные переменные aiJt t=l, ... , я, /=1, ... , т, указывают, может ли задание Jt выпол- выполняться на /-м процессоре. Для каждого У; может быть задан дирек- директивный срок dt, означающий, что задание Jt должно быть завершено не позднее чем через dt единиц времени после начала выполнения первого задания. Наконец, имеется отношение предшествования (%-, А) (т. е. орграф без циклов), такое, что (Jh J}) € А означает, что выполнение Jt должно быть завершено до начала выполнения J j. Покажем, как любая индивидуальная задача о расписании, оп- определенная выше, может быть сформулирована в виде задачи ЦЛП.
320 Гл. 13. Целочисленное линейное программирование Основными целочисленными переменными будут S; и ри, i= 1, ...,«, /=1, ... , т, где S; — время начала выполнения задания Jt (можно считать, что все st целые и min {s,}=0), тогда как рц = \, если Jt выполняется на машине /, и рц=0 в противном случае. Естествен- Естественно, требуется, чтобы У^гри=\, i=l, . . . , п. Таким образом, ри и st полностью определяют решение задачи о расписании. Посмотрим теперь, как описать различные содержащиеся в задаче ограничения в терминах линейных уравнений и неравенств 1. ри может равняться 1 только в том случае, если задание Уг может выполняться на процессоре /; отсюда р;^а{/, /=1, ... . . ., т, t = l, . . . , п. 2. Никакие два задания немогуг выполняться одновременно на одном и том же процессоре. Мы хотим выразить тот факт, что если Pij—Pkj—^ и задание У; выполняется раньше, чем Jk, T0S;-fx^sfe. Для этого положим .7= J"=1 т,-, и пусть S/ft — неотрицательная це- целочисленная переменная'Гравная 1, если s,<s,o и 0 в противном слу- случае. Можно гарантировать, что 8ih имеет предписанное значение, записав i,k=\, ... , п, Так как sh—s; в оптимальном решении всегда меньше, чем Т, то выписанное выше неравенство является ограничением, только если 6;fe=0. При этом если 6;ft=0, to выполнение Jh начинается не позд- позднее, чем выполнение У;,"и наоборот. Теперь то ограничение, что два задания не могут выполняться одновременно на одном и том же про- процессоре, можно выразить, вводя неравенства /=1, ..., пг, 1фЬ,, i, k=\, ..., п. Эти неравенства действительно являются ограничением, только если 6;ft=l и pij=phj = \, т.е. У; выполняется раньше, чем Jh на /-м процессоре. В этом случае они гарантируют, что S;+T;^sft, как и должно быть. 3. Если (Jt, A) 6/1. то выполнение Jh начинается после окон- окончания Jt независимо от процессоров. Это условие можно записать в виде s,. + T,— sft<0, (У,, Jk)?A. 4. Ограничения на ресурсы можно выразить следующим образом: в момент начала любого задания сумма потребностей в ресурсах для активных заданий (всех заданий, которые начались в тот же момент или раньше и еще не закончились) не превышает заданных границ. Чтобы выразить это с помощью линейных неравенств, определим вначале новое множество неотрицательных целочисленных перемен- переменных e,ft, i, k—\, ... , п. Если задание Jt активно в момент нача-
13.1. Введение 321 ла Jh, то eik =1; в противном случае tih—0. Тогда l + (e,ft—1O'<s,+ti.—sft<(e/ft + 6ft,) Г, 1=^6, i, k=\, ..., n. Таким образом, ограничения на ресурсы имеют вид 5. Ограничения, связанные с директивными сроками, можно вы- выразить неравенствами i= 1 П. 6. Наконец, пусть / — время окончания заданий для данного расписания; естественно, f^S, + Tlt 1=1, ... П. Наша цель — минимизировать / при всех этих ограничениях. Та- Таким образом, любую индивидуальную задачу для нашей общей за- задачи о расписании с п заданиями, т машинами, г видами ресурсов и \А\ ограничениями предшествования можно выразить в виде за- задачи ЦЛП с пBп+т—1) + 1 переменными и п(п—1)(т+(9/2)) + +п(г+т-{-3)+2\А\ уравнениями и неравенствами. ? Пример 13.3 (нелинейности). Ограничение «х целочисленно» на- называется нелинейным ограничением, так как его нельзя заменить линейными ограничениями (см., однако, следующий параграф). При этом оказывается, что это фундаментальное нелинейное ограничение, поскольку через него выражаются многие различные нелинейные ограничения. Рассмотрим несколько частных случаев. А Нелинейные стоимости. Линейная функция стоимости с'х не всегда приемлема в качестве первого приближения стоимостей, появляющихся в реальных ситуациях. Важным примером нелиней- нелинейной функции стоимости является функция, имеющая компоненты с начальной стоимостью, определяемые формулой ах-\-Ь, если х > О, | 0, если х = 0, и показанные на рис. 13.З(а). Этот случай можно свести к задаче СЦЛП, вводя целочисленную переменную б с ограничением 1^б^0. При этом 6=1 тогда и только тогда, когда О>0; это можно обеспе- обеспечить, добавляя ограничения б^х^б'б, где U — верхняя граница для х, которая считается известной. Стоимость становится линей- линейным функционалом с(х, 8)=ах-{-Ь8. Аналогичные методы можно использовать для сведения к ЦЛП более сложных нелинейностей в функции стоимости, таких, как не- нелинейность, показанная на рис. 13.3F),— которая, без сомнения, в большинстве практических ситуаций может служить кусочно ли- 11 № 3U32
322 Гл. 13. Целочисленное линейное программирование нейным приближением даже для более сложной кривой, представ- представляющей функцию стоимости (задача 6). Б. Дихотомия. Предположим, что в некотором приложении до- допустимые решения должны удовлетворять дизъюнкции двух огра- ограничений: х^а или у^-Ъ. Часть задачи СЦЛП, эквивалентная этим ограничениям, может быть получена путем введения целочисленной переменной 8 с ог- *» X (а) (б) Рис. 13.3. . Тогда это дизъюнктивное ограничение можно раничением записать в виде Этот прием можно обобщить на дизъюнкции конъюнкций ограни- ограничений и дизъюнкции более чем двух ограничений. Он особенно полезен, когда мы имеем дело с условными ограничениями вида if x>a then y^b. Это ограничение эквивалентно условию х < a or у^Ь, и, следовательно, применим описанный выше метод. В. Дискретные переменные. Пусть имеется ограничение вида *€ {sb ..., sm}; другими словами, х может принимать значения толь- только из конечного множества значений, возможно никак не связан- связанных между собой. Это ограничение представим в виде где переменные 6^ удовлетворяют условиям бу>0 и целые. D
13.1. Введение 323 Пример 13.4 (задача о выполнимости). Булева переменная — это переменная, которая может принимать только два значения: ис- истина и ложь. Из булевых переменных с помощью логических свя- связок или (обозначаемой здесь знаком +), и (обозначаемой как умно- умножение) и не (х обозначает не х) можно образовывать булевы формулы практически так же, как из действительных переменных с помощью арифметических операций можно образовывать алгебраические вы- выражения. Например, — булева формула. Если даны значения t(x) для каждой перемен- переменной х, то можно вычислить значения булевой формулы так же, как это делается для алгебраического выражения, учитывая данную выше интерпретацию. Например, вычисляя булеву формулу A3.4) для множества значений (называемых набором значений истинности) t(Xi)—истина, ((хг)=истина и %х3)=ложь, получаем значение истина. Указанная выше формула принимает значение истина для не- некоторого набора значений истинности. Такие булевы формулы на- называются выполнимыми. Не все формулы выполнимы; существуют формулы, не принимающие значения истина ни при каком наборе значений истинности, поскольку в них закодировано «противоре- «противоречие». Рассмотрим, например, формулу ) ¦ (х2 + х3) ¦ (х3 + xj • (xt +*„ + х3). A3.5) Для того чтобы формула A3.5) приняла значение истина, все под- подформулы в скобках (называемые дизъюнктами), содержащие ли- литералы (т. е. переменные или отрицания), должны принимать зна- значение истина. Первый дизъюнкт утверждает, что по крайней мере одна из переменных должна принять значение истина. Следующие три дизъюнкта требуют, чтобы все переменные были одинаковы. Что- Чтобы понять это, предположим, что хх принимает значение ложь. Так как значением второго дизъюнкта должна быть истина, то хг долж- должно принимать значение ложь; тогда третий дизъюнкт показывает, что х3 также должно принимать значение ложь. Какое бы значение ни принимала некоторая переменная, второй, третий и четвертый дизъюнкты будут требовать, чтобы остальные переменные прини- принимали то же самое значение. Поэтому все переменные должны при- принимать одно и то же значение, и, поскольку мы знаем, что по край- крайней мере одна из них должна принимать значение истина, все они должны принимать значение истина. Однако последний дизъюнкт требует, чтобы не все переменные принимали значение истина и, следовательно, формула A3.5) содержит противоречие. Она невы- невыполнима. Задача о выполнимости (ВЫПОЛНИМОСТЬ) состоит в следующем: 11*
324 Гл. 13. Целочисленное линейное программирование Для данных т дизъюнктов Cf, ... , Ст, содержащих переменные хЛ . .. , хп, определить, выполнима ли формула Cj-C2*... •Cm. ВЫПОЛНИМОСТЬ является центральной задачей в матема- математической логике, и построение эффективных алгоритмов для ее ре- решения вызывает большой интерес Естественно, одно из решений состоит в том, чтобы испытать всевозможные наборы значений истин- истинности и посмотреть, если ли среди них набор, выполняющий дан- данную формулу. Однако этот алгоритм неэффективен, так как потре- потребуется испытать 2" наборов значений истинности (для каждой пере- переменной возможны два варианта). К настоящему моменту не известно эффективного алгоритма, который бы решал задачу ВЫПОЛНИ- ВЫПОЛНИМОСТЬ. Поэтому интересно, что ВЫПОЛНИМОСТЬ можно сфор- сформулировать как задачу ЦЛП. Соответствующая формулировка по- получается моментально, если отождествить значение истина с 1 и значение ложь с нулем. Тогда или превращается в обычное сложе- сложение, х выражается как 1—х и требуется, чтобы каждый дизъюнкт С содержал по крайней мере один литерал, принимающий значение истина. Другими словами, 2*ес*+2гесA—х)~^\. Например, пол- полная задача ЦЛП для_формулы A3.5) будет иметь вид A3.6) Xf, X%, Xq ^j. 1, xi> xh xs^®> целые. Легко понять, как выполнимость формулы A3.5) выражается ограничениями A3.6). В общем случае формула, состоящая из не- нескольких дизъюнктов, соединенных связками или (мы будем гово- говорить, что это формула в конъюнктивной нормальной форме), выпол- выполнима тогда и только тогда, когда в соответствующей задаче ЦЛП имеется допустимая точка. Таким образом, формулировка A3.6) не задает задачу ЦЛП, поскольку мы не ищем минимума некоторого линейного функционала. Однако ее легко преобразовать в эквива- эквивалентную обычную задачу ЦЛП. Например, в A3.6) первое неравен- неравенство можно заменить на хх-\-хг-\-х?^-у и максимизировать у. Тогда формула выполнима в том и только в том случае, если оптимальное значение у существует и удовлетворяет неравенству у^\. Задача ЦЛП A3.6) принадлежит важному классу задач ЦЛП, в которых переменные могут принимать только два значения: 0 или 1. Такие задачи ЦЛП называются задачами двоичного линейного программи- программирования, или задачами 0-1 линейного программирования (НОЛП). Последние две строки задачи ЦЛП A3.6) обычно записывают в виде
13.2. Вполне унимодулярность 325 xi € {О, 1}, /=1, ... , п. Более причудливым способом выражения этого же условия является равенство х)=х3. Представление задачи о выполнимости в виде задачи ЦЛП A3.6) иллюстрирует сказанное нами ранее: в общем случае нельзя пра- правильно решить задачу ЦЛП, просто округляя решение соответству- соответствующей задачи ЛП. Ограничения, соответствующие задаче о выпол- выполнимости для произвольной формулы в конъюнктивной нормальной форме, каждый дизъюнкт которой содержит по меньшей мере два литерала,— условие, которого легко добиться (см. задачу 5),— выполняются, если всем переменным х, придать дробные значения Xj=\i2. Следовательно, допустимое решение соответствующей за- задачи ЛП всегда тривиально находится; но округлить это решение допустимым образом (на самом деле всего лишь определить, можно ли его округлить) настолько же трудно, как решить саму задачу о выполнимости, которая в действительности очень трудна (см. гл. 15). ? Таким образом, мы видим, что задача ЦЛП имеет очень широкие рамки, внутри которых могут быть сформулированы многие задачи разного характера. Увы, именно эта общность и порождает ее ос- основную слабость. После более чем двух десятилетий интенсивных исследований не известно практического алгоритма для решения больших задач ЦЛП. Хотя в данной книге мы описываем два на вид неплохих подхода к решению задач ЦЛП, мы также обращаем вни- внимание на то, что чрезмерные потребности во времени делают их практически неприменимыми для задач досадно малого размера. В гл. 15 мы введем понятие NP-полноты для характеризации тех задач, которые, подобно задаче ЦЛП, по-видимому, трудны, по существу, именно из-за их общности. 13.2 Вполне унимодулярность Напомним, что, например, в задачах о максимальном потоке и взвешенном двудольном паросочетании решения соответствующих задач линейного программирования без специальных ограничений на целочисленность были тем не менее всегда целочисленными. Ес- Естественно поставить вопрос, в чем причина такой благоприятной ситуации в этих случаях, с тем, чтобы можно было в полной мере использовать достоинства такого механизма. Для ответа на этот вопрос нам потребуется вначале определить следующее централь- центральное понятие. Определение 13.1. Квадратная целочисленная матрица В на- называется унимодулярной (УМ), если ее определитель det(B)=±l. Целочисленная матрица Л называется вполне унимодулярной (ВУМ), если каждая квадратная невырожденная подматрица матрицы А унимодулярна. Q
326 Гл. 13. Целочисленное линейное программирование Если матрица В составлена из т линейно независимых столбцов матрицы А, то она определяет базисное решение х = в о= det(fi), где Bad> — присоединенная матрица для матрицы В. Поэтому если матрица В унимодулярна и b — целочисленный вектор (что мы всегда предполагаем), то х целочисленно. Если определить много- многогранник Ri(A) = {х : Ах=Ь, х^О), представляющий обычное допу- допустимое множество для задачи ЛП в стандартной форме, то получаем следующую теорему. Теорема 13.1. Если матрица А вполне унимодулярна, то для любого целочисленного вектора Ьвсе вершины многогранника R\{A) целочисленны. Таким образом, решение задачи ЛП в стандартной форме с ВУМ матрицей с помощью симплекс-алгоритма всегда приводит к целочисленному оптимуму. Тот же результат- имеет место и в том случае, когда в формули- формулировке задачи ЛП используются ограничения в виде неравенств. Пусть соответствующий многогранник имеет вид Тогда справедлива Теорема 13.2. Если матрица А вполне унимодулярна, то для. любого целочисленного вектора b все вершины многогранника R*(A) целочисленны. Доказательство. Для доказательства достаточно показать, что если матрица А вполне унимодулярна, то матрица (А\1) также вполне унимодулярна, ибо тогда можно будет добавить перемен- переменные недостатка и применить теорему 13.1. Пусть С— квадратная невырожденная подматрица матрицы (А\1). Переставляя строки матрицы С, можно привести ее к виду где Ik—единичная матрица размера k и В — квадратная подма- подматрица матрицы А, возможно, с переставленными строками. Отсю- Отсюда det (С) = det (В)=±1, поскольку матрица А вполне унимоду- унимодулярна и С — невырожденная подматрица. ? Покажем теперь, что в тех случаях, рассмотренных в предыдущих главах, где решения автоматически получались целочисленными, матрица ограничений была в действительности вполне унимодуляр-
13.2. Вполне унимодулярность 327 ной. Удобное достаточное (но не являющееся необходимым) условие дает Теорема 13.3. Целочисленная матрица А с элементами ац= =0, +1 вполне унимодулярна, если в каждом столбце содержится не более двух ненулевых элементов и строки матрицы А можно раз- разбить на такие два множества Л и /2, что 1) если в некотором столбце стоят два элемента с одинаковым знаком, то соответствующие им строки лежат в разных множест- множествах; 2) если в некотором столбце стоят элементы с разными знаками, то соответствующие им строки лежат в одном и том же множестве. Доказательство. Доказательство можно провести индукцией по размеру подматриц. Для получения базиса индукции достаточно за- заметить, что любая подматрица из одного элемента вполне унимо- унимодулярна. Пусть С — произвольная подматрица размера k. Если матрица С содержит полностью нулевой столбец, то она вырожденна. Если в матрице С имеется столбец с одним ненулевым элементом, то ее определитель можно разложить по этому столбцу, и нужный результат будет следовать из предположения индукции. Остается последний случай, когда в каждом столбце матрицы С имеются два ненулевых элемента. Тогда из условий 1 и 2 тео- теоремы вытекает, что Jjie/, aif = 2»б/2а,у Для каждого /, т.е. не- некоторая линейная комбинация строк равна нулю и, следова- следовательно, det (С) = 0. ? Теперь получаем требуемый результат. Следствие. Любая задача ЛП в стандартной или канонической форме, матрица ограничений А которой есть либо 1) матрица инциденций вершин и дуг ориентированного графа, либо 2) матрица инциденций вершин и ребер неориентированного двудольного графа, имеет только целочисленные оптимальные вершины. Сюда включа- включаются формулировки в виде задач ЛП для задачи о кратчайшем пути, задачи о максимальном потоке, задачи Хичкока и задачи о взвешен- взвешенном паросочетании в двудольном графе. ^ Доказательство. В случае 1 матрицы удовлетворяют условию тео- теоремы 13.3 при /2=0; в случае 2 — при 1г = и и /2 = У, где ?=» = (V, U, Е) — данный двудольный граф. ? Справедлива также теорема, обратная к теореме 13.2 (но не 13.1): если все вершины многогранника /?2(Л) целочисленны для любого целочисленного вектора Ь, то матрица А должна быть вполне уни- модулярной (задачи 1 и 2). Следовательно, в некотором смысле мы обнаружили, почему определенные задачи ЛП приводят к оптималь-
328 Гл. 13. Целочисленное линейное программирование ным базисным решениям, которые автоматически целочисленны, в то время как для других задач это не так. В последнем случае мы вынуждены выходить за пределы симплекс-алгоритма для ре- решения соогветствующих задач ЦЛП. 13.3 Верхние оценки решений задач ЦЛП В лемме 2.1 было показано, что абсолютная величина любого бдр задачи ЛП ограничена сверху величиной, зависящей от размер- размерности этой задачи ЛП и размера встречающихся в ней целых чисел. I I I I (а) (б) Рис. 13.4. Этот результат отражает здравую геометрическую интуицию. По существу утверждается, что грани многогранника не могут про- простираться «слишком далеко» так, чтобы получались «большие» бдр, если только не используются огромные целые числа для обра- образования очень маленьких углов (рис. 13.4(а)). Подобное рассужде- рассуждение кажется справедливым и для задачи ЦЛП. Допустимой обла- области очень трудно избежать всех целых точек, за исключением не- которой очень большой точки, если только опять не используются крайне малые углы и огромные коэффициенты (рис. 13.4F)). В этом параграфе мы дадим формальное обоснование этого эффекта. Рассмотрим задачу ЦЛП с ограничениями целочисленно, A3.7) где А — целочисленная (тхя)-матрица и b — целочисленный век- вектор размерности т. Пусть a1=ma\ij{\aij\}, a2=maxi{\bt\}. Следующее утверждение представляет собой интуитивно оче- зидный геометрический факт. Рассмотрим три направления на пло-
13.3. Верхние оценки решений задач ЦЛП 329 скости (рис. 13.5). Тогда справедливо ровно одно из следующих ут- утверждений. 1. Эти направления лежат в одной полуплоскости (рис. 13.5(а)). 2. Эти направления могут быть направлениями трех уравнове- уравновешивающих друг друга сил (т. е. существуют такие три неотрицатель- (а) (б) иых коэффициента, не все равные нулю, что соответствующая линей- линейная комбинация векторов обращается в нуль). Докажем теперь обобщение этого факта на многомерный случай для вычислений с конечной точностью, которое можно рассматри- рассматривать как вариант леммы Фаркаша для вычислений с конечной точ- точностью (см. § .3). Лемма 13.1. Пусть vlt у2, ..., vk — это &>0 векторов из {О, ±1, ±2, .... ±.а1\т, и пусть Mi^ima^+K Тогда следую- следующие утверждения эквивалентны. а) Существуют, k действительных чисел рь . . ., |Jft>0, не и все равные нулю, такие, что "У. |5;У/=0. 0<P p^M не все б) Существуют такие k целых чисел k равные нулю, что 2 |5;-у;-=0. в) Не существует такого вектора h$Rm, что pj—h'vp>Q для /=1,. . ., *. г) Не существует такого вектора h € {0, ±1, ±2, . . ., что h'vf^sl для /=1, . . ., k. Доказательство. (а)=>(б). Это следует непосредственно из леммы 2,1 и теоремы 2.1.
330 Гл. 13. Целочисленное линейное программирование (б)=>(в). Предположим, что п.(б) выполняется, однако существует вектор h, удовлетворяющий условиям из п.(в). Тогда Ьл2 М/>. / = I / = I что абсурдно. (в)^>(г). Тривиально. (г)^>(а). Предположим, что п.(г) выполняется, и рассмотрим за- задачу линейного программирования min/i'O, {138) Если эта задача ЛП имеет допустимое решение, то по правилу Кра- Крамера она имеет рациональное допустимое решение, в котором абсо- абсолютные величины числителей ограничены числом Mi и общий зна- знаменатель D удовлетворяет неравенствам l^CDs^Mi. Если g— век- вектор, составленный из числителей, то для g выполняются условия: ?б{0, ±1. • ¦ •> ±М,}"\ g'Vj^D^l для /-=1, . . ,,k, и условие г) нарушается. Предположим поэтому, что задача ЛП A3.8) не- недопустима. Тогда двойственная ей задача ЛП к max 2 Р/> .| неограниченна (поскольку она имеет допустимое решение, в кото- котором все р/ нулевые). Следовательно, она имеет строго положитель- положительное решение — в котором не все Pj равны нулю — и поэтому п (а) выполняется. D Теперь мы можем получить основной результат этого параграфа. Теорема 13.4. Если задача ЦЛП A3.7) имеет допустимое реше- решение, то она имеет допустимое решение х $ {0, 1, . . ., /И2}", где I) Доказательство. Рассмотрим наименьшее (в смысле суммы ком- компонент) допустимое решение х задачи A3.7). Если все компоненты решения х меньше или равны Л11 = (та,)'я+1, то все в порядке, так как Mi<M2 В противном случае допустим, не ограничивая общ- общности, что первые k компонент, и только они, больше, чем Mt. Пусть i>i, Vi, . . ., vh— соответствующие столбцы матрицы А. Рас- Рассмотрим отдельно два случая. Случай 1. Существуют такие целые числа (Зь . .,J3ft, заклю- заключенные между нулем и Mi и не все равные нулю, что
13.3. Верхние оценки решений задач ЦЛП 331 В этом случае сразу же получае!М, что вектор х'=(х{—|3Ь хг—р2, ... . . ., xk—pft, xft + 1, , хп) также является решением A3.7), при- причем сумма его компонент меньше, чем сумма компонент решения х; получили противоречие. Случай 2. Таких целых чисел рь . . ., pft не существует. По лемме 13.1 существует такой вектор h ? {0, ±1, . ., ±/Wi}"\ что h'v^l для / = 1, . . ., k. Умножим обе части уравнения Ах=Ъ на ti. Получим к п 2 h'v.x.^h'b— 2 h'v.-x,. /=i i=k+i ' ' Отсюда к 2 1=1 к п 2 tivfXi = h'b— 2 h'v,x.. 1=1 i=fc+i Выражение в правой части ограничено сверху величиной та^М.уАг + («—^/п^М^^г, и, следовательно, никакая компонента реше- решения х не может быть больше, чем М2. ? Следствие. Если задача ЦЛП х ^г 0 целочисленно имеет допустимое решение, то для нее существует допустимое ре- решение с компонентами, не превосходящими (п+т) (та1J'" + 3(]-\-а2). Доказательство. Можно свести эту задачу ЦЛП к виду A3.7), используя переменные недостатка, и затем применить теорему 13.4. ? До сих пор мы игнорировали компоненты функции стоимости в задаче ЦЛП. Рассмотрим теперь задачу ЦЛП min c'x, Ах = Ь, ¦ A3.9) х> 0 целочисленно и ее «ослабление» до задачи линейного программирования min c'x, Ax^b, A3.10) Лемма 13.2. Если задача A3.10) неограниченна и задача A3.9) имеет допустимое решение, то задача A3.9) также неограниченна. Доказательство. Пусть х — допустимое решение задачи A3.9). Очевидно, х — допустимое решение задачи A3.10). Так как задача
332 Гл. 13. Целочисленное линейное программирование A3.10) неограниченна, то (см. задачу 17 из гл. 2) существует такой рациональный вектор а, что а) с'а<0; б) x+ka допустимо в задаче A3.10) для всех /г>0. Пусть Р — произведение знаменателей компонент вектора а. Тогда точки {x+jPa: /=1,2, . . .} целочисленны, допустимы, и соответствующие им стоимости не ограничены снизу. П Теорема 13.5. Пусть задача ЦЛП A3.9) имеет конечное оп- оптимальное допустимое решение х. Тогда |c'*|^M22/=ilc/l- Доказательство. Величина с'х ограничена сверху значением целевой функции для допустимого решения х ограниченного раз- размера, существование которого гарантируется теоремой 13.4. п Отсюда с'х^.с'х и, следовательно, с'х^.М2 2 \с,\. /=i Теперь нужно ограничить с'х снизу. Такой нижней границей может служить оптимум в задаче ЛП A3.10). А мы знаем, что задача A3.10) имеет ограниченный минимум, поскольку в противном случае, согласно лемме 13.2, задача ЦЛП A3.9) была бы неограниченной. Пусть минимум в A3.10) достигается для бдр х. Компоненты х по абсолютной величине не превосходят mlaf (лемма 2.1); поэтому п п c'x^c'x^—mlaT'E \с,\^—М, 23 К |. / = 1 / = 1 Так как — M22j"=i I с/I ^ с'х < Л^ 2/=i Iе/|> то |с'х|^ <М.2А|с/|. ? Пусть а3=тах({а1, а2}\] {\с,\: /=1 п}). Следствие. Если задача ЦЛП A3.9) имеет конечный оптимум, то для нее существует такое оптимальное решение х, что []4'л+12=Мз, /=1 п. Доказательство. Пусть d — величина оптимума в задаче A3.9). Тогда любое оптимальное допустимое решение х удовлетворяет условиям —c'x^—d, целочисленно. Поэтому можно применить следствие из теоремы A3.4), заменив т на т-}-2, ах на а3 и а2 на max (a2, d). При этом для любого / получаем D
Задачи 333 Важным свойством доказанных выше оценок является то, что их логарифмы полиномиальны относительно размера входа. На- Напомним, что в качестве размера задачи ЛП — или в данном слу- случае задачи ЦЛП — можно взять L=mn-\-\og \Р\, где Р — произ- произведение ненулевых элементов матрицы А и векторов Ь и с. Отсюда || и log as, mn^L. Следовательно, log M3 = 3 log n + Dm + 12) [log (m + 2) + log a,] = О (L2). Мы воспользуемся этим фактом для доказательства того, что задачи ЦЛП и НОЛП полиномиально эквивалентны; т. е. полиномиальный алгоритм для одной из них существует в том и только в том случае, если существует полиномиальный алгоритм для другой. Теорема 13.6. Полиномиальный алгоритм для задачи ЦЛП существует в том и только в том случае, если существует полино- полиномиальный алгоритм для задачи НОЛП. Доказательство. Если у нас имеется полиномиальный алгоритм для задачи ЦЛП, то, очевидно, частный случай этой задачи, задачу НОЛП, можно решить за полиномиальное время. Для доказательства обратного утверждения предположим, что у нас имеется полиномиальный алгоритм для задачи НОЛП. Пока- Покажем, как свести произвольную задачу ЦЛП к эквивалентной задаче НОЛП. Пусть /= Г log М3 П , где/Из определяется так же, как в теореме 13.5. Поскольку нас интересуют целые числа между 0 и М3, можно заменить каждую переменную^ на2'-о%2', где переменные Xjt принимают теперь значения 0 и 1. Любое решение задачи ЦЛП в указанных пределах имеет единственное двоичное представление с не более чем I двоичными разрядами, и поэтому оно однозначно соответствует множеству переменных Xjt. Таким образом, исход- исходная задача ЦЛП эквивалентна получаемой задаче НОЛП. Кроме того, нетрудно понять, что если L — размер исходной ЦЛП, то размер этой НОЛП не превосходит O{l2L)~O(Lb). Теорема доказана. ? Однако мы скоро увидим, что, по всей вероятности, ни для одной из этих задач не существует полиномиального алгоритма. Задачи 1*. Приведите контрпример, показывающий, что теорема, обратная к теоре- теореме 13.1, неверна. 2* [VD]. Докажите теорему, обратную к теореме 13.2. 3 [VD]. Покажите, что если любая из матриц А, АТ, —А, (А\А) или (А\1) вполне унимодулярна, то все эти матрицы вполне унимодулярны. 4*. Покажите, что если существует полиномиальный алгоритм для задачи ЦЛП, то существует полиномиальный алгоритм для задачи смешанного ЦЛП. (Указание: см. разд. 8.7.1.)
334 Гл. 13. Целочисленное линейное программирование 5. Покажите, что любую индивидуальную задачу о выполнимости можно за полиномиальное время преобразовать в эквивалентную индивидуальную задачу, в которой все дизъюнкты содержат более одного литерала 6. Обобщите случай А в примере 13.3, показав, как использовать целочислен- целочисленные переменные для задания целевой функции, представленной на рис. 13.3F). 7. Покажите, что отбрасывание случая (=0 в уравнении 13.1 (б) оправданно. 8. Покажите, что матрица ограничений в задаче о потоке минимальной стоимости вполне унимодулярна 9. Рассмотрим задачу целочисленного линейного программирования max с'х, Ах<Ь, х^О целочисленно, где А, Ь и с составлены из положительных целых чисел. Пусть ЛП — это задача линейного программирования, полученная отбрасыванием требования, чтобы х было целочисленным. Обозначим решение задачи ЦЛП через х0, а решение задачи ЛП через х\. Покажите, что \_Xi J — допустимое решение задачи ЦЛП и его стои- стоимость не может отличаться от оптимальной более чем на 7"=ic,-. Комментарии и ссылки [Со] Coffman E. Q., Jr., ed. Computer and Job-Shop Scheduling Theory. New York; John Wiley & Sons, 1976. Формулировки ЗК взяты из работ [DFJ] Dantzig Q. В., Fulkerson D. R., Johnson S. M. Solution of a Large Scale Traveling Salesman Problem, OR, 2 A954), 393—410. [MTZ] Miller С E., Tucker A. W., Zemlin R. A. Integer Programming Formulation and Traveling Salesman Problems, J. ACM, 7 A960), 326—329 Теоремы 13.1 и 13.2 получены в [HKJ Hoffman A. J., Kruskal J. B. Integral Boundary Points of Convex Polyhedra, pp. 223—246 in Linear Inequalities and Related Systems, ed H W. Kuhn and A W Tucker. Princeton, N. J.: Princeton University Press, 1956 (Имеет- (Имеется перевод: Гофман А. Дж., Краскал Дж. Б. Целочисленные граничные точки выпуклых многогранников.— В сб.: Линейные неравенства и смеж- смежные вопросы.— М.: ИЛ, 1959.] См гакже v [VDJ Veinott A. F., Jr., Dantzig Q. В. Integral Extreme Points, SIAM Rev., 10, No. 3 (July 1968), 371—372. Теорема 13.3 взята из [HT] Heller I., TompkinsC. В. An Extension of a Theorem of Dantzig's, pp. 247— 252 in Linear Inequalities and Related Systems, ed. H. W. Kuhn and A. W. Tu- Tucker. Princeton, N. J.: Princeton University Press, 1956. [Имеется перевод: Хеллер И., Томпкинс Ч. Б. Обобщение одной теоремы Данцига,— В сб.: Линейные неравенства и смежные вопросы.—М.: ИЛ, 1959.] (См. также добавление к этой статье Гофмана А. Дж. и Гейла Д.) Другие характеризации вполне унимодулярности приведены в работах [Са] Camion P. Characterization of Totally Unimodulai Matrices, Proc. Amer. Math. Soc, 16 A965), 1068—1073. [Pad] Padberg M. W. A Note on the Total Unimodularity of Matrices, Discrete Math., 14, No. 3 (March 1976), 273—278.
Комментарии и ссылки 335 Пример 13.3 взят из статьи [Da] Dantzig G. В. On the Significance of Solving Linear Programming Problems with Some Integer Variables, Econometrica A960), 30—44. Теоремы 13.4 и 13.5 — из статьи [Pa] Papadimitriou С. H. On the Complexity of Integer Programming, JAGM A981), v. 28, No. 4, 765—768. В литературе существует множество других доказательств подобных результатов см., например: [ВТ] Borosh I., Treybig L. В. Bounds on Positive Integral Solutions to Linear Diophantine Equations, Proc. Amer. Math. Soc, 55 A976), 299—304.
14 Алгоритм отсекающей плоскости для задач целочисленного линейного программирования 14.1 Отсечение Гомори Мы видели, что определенные задачи ЦЛП, а именно те, которые отвечают вполне унимодулярным матрицам ограничений, ненамного труднее решить, чем соответствующие задачи ЛП. В таких задачах оптимальное базисное допустимое решение соответствующей задачи ЛП заведомо целочисленно. А что делать, если нет такого удобного свойства? К сожалению, на этот вопрос нет простого ответа. Как мы увидим в дальнейшем, общая задача ЦЛП, по-видимому, трудна по существу, и для нее разработано большое число алгоритмов. Не которые из этих алгоритмов особенно эффективны для определенных классов задач целочисленного линейного программирования, но можно без опаски утверждать, что не известно общего алгоритма, который хорошо работал бы на практике для больших задач (ска- (скажем, с несколькими десятками ограничений и переменных), тогда как задачи ЛП такого размера легко решаются о помощью симплекс- алгоритма. Общие алгоритмы для задачи ЦЛП распадаются на две категории (в некоторой степени пересекающиеся): алгоритмы отсекающей плоскости, являющиеся развитием симплекс-алгоритма, и перебор- переборные алгоритмы, основанные на разумном переборе всех возможных решений. Эта глава посвящена описанию простого алгоритма отсе- отсекающей плоскости, относящегося к классу методов, полезных для задач среднего размера и интересных с теоретической точки зрения. Чтобы зафиксировать обозначения, рассмотрим задачу ЦЛП в стандартной форме. mine'*, Ax*=b, A4.1) O целочисленно, где A, b и с целочисленны. Назовем соответствующую задачу ЛП без ограничений на целочисленность т'тс'х, Ах = Ь, A4.2) ослаблением задачи ЦЛП A4.1).
14.1. Отсечение Гомори 337 Предположим, мы решили ослабление задачи ЦЛП, например, с помощью симплекс-алгоритма и нашли базисное допустимое реше- решением*. Конечно, в общем случаем* не целочисленно. Однако естест- естественно попытаться получить решение исходной задачи ЦЛП, округ- округляя координаты решения х* до ближайших целых чисел. Рис. 14.1 показывает, почему такой подход не работает: в действительности около х* может вообще не быть допустимых точек. Читателю не Допустимое множество х ° —решение задачи ЦЛП О .Убывание стоимости х'*-решение задачи ЛП -О- Округленное X* Рис. 14.1. Гипотетическая задача ЦЛП с опти- оптимумом х° и ее ослабление с оптимумом х*. составит труда построить двумерные примеры, в которых непрерыв- непрерывный и дискретный оптимумы отстоят как угодно далеко друг от друга как по расстоянию на плоскости, так и по стоимости. Отметим два простых, но полезных факта. Первое: если непрерыв- непрерывный оптимум х*— решение задачи ЛП — оказывается целочислен- целочисленным, то он решает соответствующую задачу ЦЛП. Второе: стоимость с(х*) непрерывного оптимума является нижней границей для c(x0) — стоимости дискретного оптимума. А^ы подошли теперь к основной идее алгоритма отсекающей плос- плоскости. Если к задаче ЦЛП добавить ограничение, не исключающее целочисленных допустимых точек, то решение не изменяется. Поэтому наша стратегия будет состоять в добавлении к задаче ЦЛП именно таких линейных ограничений по очереди до тех пор, пока решение соответствующей задачи ЛП, являющейся ослаблением исходной задачи, не будет целочисленным. Поскольку мы не исключаем це- целочисленных допустимых точек, это окончательное решение ослаб- ослабленной задачи ЦЛП с добавленными ограничениями будет решением
•338 Гл. 14. Алгоритм отсекающей плоскости исходной задачи ЦЛП. Описанный процесс проиллюстрирован на рис. 14.2. На рис, 14.2(а) представлены исходная задача ЦЛП и непрерывный оптимум х*. На рис. 14 2F) добавлено линейное ог- ограничение, не исключающее никаких целочисленных допустимых точек, называемое отсекающей плоскостью (или просто отсечением). х* = х" (б) Рис. 14.2. Иллюстрация алгоритма отсекающей плоскости. а) Непрерывный оптимум х*. б) Новое х* после одного отсечения. в) Решение исходной задачи ЦЛП после двух отсечений. (в) При этом отрезается часть допустимого множества, однако не те- теряются никакие целочисленные точки. Новый непрерывный оп- оптимум сдвигается, как показано на рисунке. На рис. 14.2(в) пред- представлен результат добавления еще одной отсекающей плоскости; в результате непрерывный оптимум оказывается целочисленным, и эта точка является решением исходной задачи ЦЛП. Опишем алгебраический метод порождения отсечений, принадле- принадлежащий Гомори [Gol]. Пусть дана индивидуальная задача ЦЛП. Будем решать задачу ЛП, являющуюся ослаблением исходной за- задачи, с помощью прямого симплекс-алгоритма, r результате чего получим оптимальное непрерывное базисное допустимое решение х, соответствующее базису 9В. Типичное уравнение в заключительной таблице имеет вид S У{/Х/=>Уи О4-3) для некоторого i, O^t^/n, (Можно положить xBlfn——г, где г — стоимость.) Удобно ввести следующее обозначение. Определение 14.1. Для данного действительного числа у целая часть числа у, обозначаемая |_ у J, определяется как наибольшее целое число q, такое, что q^.y. ? Пример 14.1. |_2, 7 J =2, |_-8, 1J=—9, L°J«°- D
14.1. Отсечение Гомори 339 Переменная х в A4.3) должна быть неотрицательной, поэтому 2 U,7_K<2 УцХу. ' (Н.4) ' i в , $ в Тогда из A4.3) получаем хв и, + 2 L У и J х, < #,-„. A4.5) В задаче ЦЛП, которую мы пытаемся решить, х должно быть цело- целочисленным, поэтому левая часть в A4.5) целочисленна. Следова- Следовательно, не нарушая неравенства, можно заменить правую часть ее целой частью, что приводит к неравенству *в«->+ 2 U,y_K<U,o_l- A4.6) 1 i в Вычитая A4.6) из A4.3), получаем 2 (У U- L У и -\)х/> Ую~ L У ю J • A4-7) it в Положим /,y = </,7-U//J. '=0 т. A4.8) Число fa называется дробной частью числа ytj и удовлетворяет неравенствам 0 </„<!• A4.9) В результате получаем ограничение 2в//,*,>/,„, A4.10) называемое отсечением Гомори, соответствующим производящей строке i. Наш план состоит в добавлении отсечения Гомори A4.10) к на- нашей таблице. Для сохранения базисного решения умножим A4.10) на —1 и добавим переменную недостатка s, в результате чего полу- получим 2 A4.11) Следующая лемма описывает результат добавления отсечения A4.11) к оптимальной таблице. Лемма 14.1. Если отсечение A4.11) добавляется к оптимальной таблице задачи ЛП, то никакие целочисленные допустимые точки не исключаются и новая таблица является базисной, недопустимой относительно прямой задачи, если yi0 не целочисленно, и допустимой относительно двойственной задачи.
340 Гл. 14. Алгоритм отсекающей плоскости Доказательство. То, что добавление A4.11) не исключает цело- целочисленных допустимых точек, вытекает из того факта, что это от- отсечение явилось следствием ограничений на целочисленность из ис- исходной задачи ЦЛП. Новая переменная недостатка s является но- procedure ДРОБНАЯ ДВОЙСТВЕННАЯ begin решить ослабление задачи ЦЛП, получив оптимальное решение х*; допустимо: ="да"; while х* не целочисленно и допустил!о="да" do begin выбрать производящую строку i; добавить порожденное отсечение Гомори и соответствующую базис- базисную переменную s; применить двойственный симплекс-алгоритм; if двойственная задача неограниченна then допустимо:—"нет"; положить х* равным новому оптимуму end end Рис. 14.3. Дробный двойственный алгоритм для задачи ЦЛП. вой базисной переменной и вместе с оптимальным базисом 93 обра- образует новый базис. Если yi0 не целочисленно, то//0>0 и, следователь- следовательно, базисное решение содержит s=—/,0, откуда следует, что оно недопустимо относительно прямой задачи. Оно остается допустимым относительно двойственной задачи, так как нулевая строка не изменяется. ? Теперь должно быть ясно, как продолжать этот процесс. Если дана таблица с базисным решением, которое недопустимо относи- относительно прямой задачи и допустимо относительно двойственной зада- задачи, то наиболее естественно применить двойственный симплекс- алгоритм, описанный в § 3.6. Одно или более замещений либо при- приведут к новому непрерывному оптимуму, либо укажут, что прямая задача недопустима. Эта последняя возможность должна означать, что в исходной задаче ЦЛП не было целочисленных допустимых точек. На рис. 14.3 приведен набросок описанного алгоритма, обычно называемого дробным двойственным алгоритмом, поскольку в используемой таблице имеются дробные элементы и сохраняется допустимость относительно двойственной задачи. Рассмотрим пол- полностью работу этого алгоритма на примере. Пример 14.2. Рассмотрим задачу ЦЛП тахл:2, A4.12) 3*,-|-2х,<6, A4.13) -3xj-f-2x2<0, A4.14) лг^О целочисленно. A4.15) На рис. 14.4 показаны эти ограничения на плоскости с координата- координатами X! и х2. Выбранная задача очень проста и имеет целочисленный
14.1. Отсечение Гоморй 341 оптимум в точке *=A, 1). Добавляя переменные недостатка лгз и х4, получаем таблицу в стандартной форме для задачи, являющейся ослаблением данной задачи: А Хз- Л-4 "=» 0 6 0 0 3 -1 i 2 0 1 0 0 0 1 A4.16) После двух замещений получается оптимальная таблица: —z = XI *= Х2 = 1 1 i 0 1 0 0 0 1 i i i i i A4.17) соответствующая решению Jt=(l, 3/2) и стоимости ?=—a:2=—3/2, что проиллюстрировано на рис. 14.4. Поскольку решение ослаблен- Первый оптимум Рис. 14.4. Решение ослабленной задачи ЦЛП из примера 14.2. ной задачи не целочисленно, порождаем отсечение. Нулевое урав- уравнение имеет вид , _1_ J_ _? Z~T л ХЯ~Г Д X4~ 9> A4.18)
342 Гл. 14. Алгоритм отсекающей плоскости что приводит к отсечению 1 4Лп ^^ ~Г" . A4.19) Подставляя сюда вместо х3 и xi ограничения из таблицы A4.16), получаем, что это неравенство эквивалентно неравенству *2<1, A4.20) представленному на рис. 14.5 как первое отсечение. х2 39 Рис. 14.5. Решение задачи ЦЛП с помощью двух отсечений. Если бы мы выбрали в качестве производящей первую или вто- вторую строку, то получили бы соответственно отсечение ^U-lU^O A4.21) A4.22) или 1 Первое из этих неравенств эквивалентно неравенству A4.23) а второе совпадает с неравенством, полученным выше из нулевой строки.
14.1. Отсечение Гомори 343 Выбирая в качестве производящей строки строку 0, добавляем к таблице A4.17) уравнение Д Х3 л Х4 "Г Sl — о ) A4.24) в результате чего получаем xi Хг хз х* Sl XI = Si = 1 1 \ -i 0 1 0 0 0 0 1 0 1 J X i -к i 1 0 0 0 1 A4.25) Производя двойственное замещение относительно указанного веду- ведущего элемента, получим вторую оптимальную таблицу *1 = 1 § 1 2 0 1 0 0 0 0 1 0 0 0 0 1 0 -J 0 1 1 1 1 -4 A4.26) которой соответствует второй оптимум х=B/3, 1), все еще не яв- являющийся целочисленным. Нулевая строка целочисленна и поэтому порождает тривиальное отсечение. Первая строка порождает отсечение у ¦§¦*>-§¦. которое эквивалентно отсечению Добавляя к таблице A4.26) соответствующую строку = —f A4.27) A4.28) A4.29) и еще раз проводя оптимизацию с помощью двойственного симплекс- алгоритма, приходим к заключительной оптимальной таблице A4.30) —2=з хг = *з = Л4 = 1 1 1 1 1 Xi 0 1 0 0 0 хг 0 0 1 0 0 хз 0 0 0- 1 0 х* 0 0 0 0 1 1 1 1 —5 1 si 0 -i 0 -i
344 Гл. 14. Алгоритм отсекающей плоскости соответствующей решению х=A, 1), как показано на рис. 14.5.? Нам нужно теперь рассмотреть вопрос о конечности процедуры: откуда известно, что эта процедура после конечного числа шагов останавливается, выдавая целочисленное решение? Однако сна- сначала изучим один метод борьбы с вырожденностью, что очен важно при анализе многих алгоритмов для задачи ЦЛП, основанных на симплекс-методе. 14.2 Лексикографическое упорядочение Метод Блэнда, обеспечивающий конечность симплекс-алгоритма (см. § 2.7), является относительно недавним изобретением в истории линейного программирования. Классический же метод основан на лексикографическом упорядочении векторов таблицы, для описа- описания которого нам потребуется следующее определение. Определение 14.2. Ненулевой вектор v g R" называется лек- лексикографически положительным, если первая его ненулевая компо- компонента больше нуля,- Если у=0, будем говорить, что v лексикогра- лексикографически равен нулю, и v будем называть лексикографически отрица- отрицательным, если вектор —v лексикографически положителен. Эти условия можно записать соответственно в виде L L L у>0, у = 0, у<0. Будем говорить, что вектор v?Rn лексикографически больше, чем w?R" (и писать v>w), тогда и только тогда, когда вектор v—w лек- лексикографически положителен; аналогично можно определить от- отношения лексикографически меньше и лексикографически равно. Термины лексикографически минимально (lex-min) и лексикографи- лексикографически максимально (lex-max) также определяются очевидным образом. ? Пример 14.3. col @, 0, 1, 0)>со1@, 0, 0, 2), col @, 3, 1, 2)<со1A, 2, 4, 8). Q Пример 14.4. Сопоставим буквам а, Ь, с, . . . числа 1, 2, 3,... и отсутствию буквы сопоставим 0. Тогда каждое слово можно пред- представить как вектор в Z", где п — некоторое число, большее, чем длина любого слова. При этом лексикографическое упорядочение векторов, кодирующих слова, в точности соответствует упорядо- упорядочению слов, используемому в словарях. Например, bad — col B, 1, 4, 0, 0, 0, .. .), good— col G, 15, 15, 4, 0, 0, 0, ...),
14.2. Лексикографическое упорядочение 345 L поэтому при нашем кодировании bad < good. Отметим также, что bad < bade. ? Идея состоит в том, чтобы разрешать неоднозначности в симплекс- алгоритме, используя лексикографический критерий. Таким обра- образом, когда в прямом симплекс-алгоритме мы приходим к выбору строки по правилу min M, A4.31) t: a- > О L "ts J мы разрешаем неоднозначности, используя критерий lex-min[-^-l, i: ais > О I als J A4.32) где, как обычно, at— вектор, составленный из чисел, стоящих в г'-й строке таблицы. Когда не возникает неоднозначностей, то это эквивалентно A4.31), так как в этом случае выбор ведущей строки будет определяться первой компонентой ai0 вектора at. Однако, в случае когда имеется неопределенность, критерий A4.32) будет основывать решение на первой компоненте, для которой не возни- возникает неопределенностей. Пример 14.5. Для приведенной ниже части таблицы 1 2 3 s 1 4 1 12 1 10 1 3 1 2 получаем JL 1 ill 4' ' 4' 4' 10, ± il 4' ' 12' поэтому операция нахождения лексикографического минимума A4.32) разрешит неопределенность между строками 1 и 3, выбрав строку 3, ? Заметим, что в произвольной задаче ЛП этот выбор лексикогра- лексикографического минимума будет однозначен, поскольку никакие две строки не будут пропорциональны. (Почему?) Основное приложение описанных понятий к ЛП можно сформу- сформулировать в виде следующей теоремы, которая дает отличный от правила Блэнда способ устранения зацикливания.
346 Гл. 14. Алгоритм отсекающей плоскости Теорема 14.1 (лексикографические правила устранения зацикли- зацикливания для прямого симплекс-метода). Пусть в начале прямого симплекс-алгоритма все строки, следующие за строкой стоимости, лексикографически положительны: L а,->0, i = 1, ••-, т. Тогда эти строки остаются лексикографически положительными, нулевая строка строго лексикографически возрастает (записывается как ао\ L) и прямой симплекс-алгоритм останавливается после конечного числа замещений, если используются следующие правила выбора ведущих элементов: а) выбрать любой столбец s, такой, что ао/<О; б) выбрать строку i=r, для которой достигается lex-minf-^-1. A4.33) i: ah > О I Ois J Доказательство. Проверим вначале, что строки ah i=\, ..., т, остаются лексикографически положительными после замещения. В г-н строке получаем ar = ar/ars, где ars > 0. Поэтому аг > 0, L если аг > 0. Если i-фт и ais > 0, то согласно лексикографическому выбору. Наконец, если 1фг и О то поэтому at действительно остается лексикографически положитель- положительным после каждого замещения. Вектор ай при замещении переходит в , | an, I ar а+ ' OJ| г>а s L так как aOs<O и аг>0 по условию. Таким образом, нулевая строка строго лексикографически возрастает и, следовательно, никогда не может вернуться к предыдущему значению при выполнении за- замещений. Однако нулевая строка полностью определяется базисом, поэтому из того, что ай \ L, следует, что никакой базис не может повториться. Отсюда в свою очередь вытекает, что симплекс-алго- симплекс-алгоритм останавливается после конечного числа замещений. ? Конечно, можно ожидать, что аналогичный результат справед- справедлив и для двойственного симплекс-алгоритма, поскольку на самом деле это замаскированный прямой симплекс-алгоритм (см. §3.7).
14.3. Конечность дробного двойственного алгоритма 347 Теорема 14.2 (лексикографические правила устранения зацикли- зацикливания для двойственного симплекс-метода). Пусть в начале двой- двойственного симплекс-алгоритма все столбцы, следующие за нулевым столбцом, лексикографически положительны: L Aj > 0, /= 1, .... п. Тогда эти столбцы остаются лексикографически положительными, нулевой столбец строго лексикографически убывает (A0\L) и двой- двойственный симплекс-алгоритм останавливается после конечного числа замещений, если используются следующие правила выбора ведущих элементов: а) выбрать любую строку г, такую, что аг0<.0, б) выбрать столбец j=s, для которого достигается lex-max /: arJ < 0 Доказательство. Доказательство этой теоремы оставляем чита- читателю в качестве упражнения; оно использует ту же технику, что и доказательство теоремы 14.1 (см. задачу 8). ? Мы просим также читателя объяснить, как сделать все строки в начале прямого алгоритма лексикографически положительными, объяснить, как сделать все столбцы в начале двойственного алго- алгоритма лексикографически положительными, и показать, что пра- правило A4.34) приводит к однозначному результату (см. задачи 9 и 10). 14.3 Конечность дробного двойственного алгоритма Лексикографический метод гарантирует конечность как обычного симплекс-алгоритма, так и дробного двойственного алгоритма. Сфор- Сформулируем это в виде теоремы. Теорема 14.3. Будем следующим образом осуществлять выбор в дробном двойственном алгоритме для задачи ЦЛП (см. рис. 14.3J: а) в качестве производящей строки выбираем первую строку с неотрицательным значением aiu; б) используем лексикографический вариант двойственного сим- симплекс-алгоритма. Тогда если для исходной задачи имеется верхняя граница стои- стоимости г допустимого решения, то алгоритм останавливается после конечного числа шагов, выдавая целочисленное решение или определяя, что в исходной задаче нет допустимых целочисленных решений.
Гл. 14. Алгоритм отсекающей плоскости Доказательство IGol, Go2]. Назовем основной цикл в алгоритме на рис. 14.3 реоптимизацией, и пусть после /-й реоптимизации полу- получается таблица А1 со столбцами А\. Тогда алгоритм порождает последовательность нулевых столбцов, монотонно лексикографиче- лексикографически убывающих, поскольку строки к таблице всегда добавляются снизу: А\>А\>А%>.... A4.35) По условию первая компонента о00=— г ограничена снизу, поэтому последовательность а00 сходится к некоторому числу, скажем доОо, которое можно записать в виде ^ои= L^ooJ +/oo- A4.36) После некоторого конечного числа реоптимизации а'оя становится меньше, чем \_w00 J + 1, и для некоторого l=k можно записать 4,= L^ooJ+ZoV A4.37) По правилу (а) следующей порождающей строкой будет строка 0, и к таблице добавляется отсечение -/&,=— 2 /8/X/+S. A.4.38) Затем производится замещение с использованием двойственного симплекс-алгоритма, при котором некоторый столбец, скажем р, вводится в базис. После этого замещения получаем аЧУ =<4„-4Чо*о. A4.39) Up В оптимальной таблице двойственного симплекс-алгоритма О 0, A4.40) поэтому это число не меньше, чем его дробная часть Oftr A4.41) Тогда из A4.39) вытекает <4+т < 4,-fSo = L «оо J = L ^oo J • A4.42) Так как последовательность а'оо сходится к доо:„ это означает, что, начиная с этого момента, al00= [_ ^оо J — целое. Векторы Ло лексикографически убывают, и мы показали, что с некоторого момента первая компонента остается фиксированной (целочисленной), поэтому далее вторая компонента монотонно не возрастает. Она ограничена снизу нулем, ибо в противном случае двойственный симплекс-алгоритм работал бы неправильно. Поэтому к а[0 можно применить приведенные выше рассуждения. Однако, для того чтобы проходили шаги, следующие за неравенством
14.4. Другие алгоритмы отсекающей плоскости 349 A4.40), нужно показать, что aklp>0. A4.43) Но <7оо должно оставаться фиксированным, откуда следует, что Qop=O, откуда в свою очередь следует неравенство A4.43), посколь- поскольку Лр>0. Поэтому а,'о становится целым после конечного числа шагов. Можно продолжать эти рассуждения, спускаясь вниз по столбцу 0. В результате получим, что все компоненты в конце концов принимают целочисленные значения, после чего алгоритм останавливается. Единственно, когда еще возможна остановка алго- алгоритма, — это когда двойственный симплекс-алгоритм находит, что двойственная задача не ограниченна и, следовательно, что ис- исходная задача ЦЛП недопустима. ? Во избежание накопления неопределенного числа строк и столб- столбцов в дробном двойственном методе обычно выбрасывают переменную недостатка sh соответствующую отсечению Гомори, если такая переменная в некоюрый момент выполнения алгоритма должна войти в базис. Это означает, что число строк никогда не превосходит п — числа исходных переменных,— поэтому число используемых отсе- отсечений в любой момент времени не превосходит п—т. Это усовер- усовершенствование не влияет на доказательство конечности алгоритма (см. задачу 4). На самом деле при такой модификации нетрудно по- получить экспоненциальную оценку числа итераций, выполняемых алгоритмом (см. задачу 11). 14.4 Другие алгоритмы отсекающей плоскости С дробным двойственным алгоритмом связаны две основные про- проблемы: одна из них возникает из-за того, что он дробный, другая — из-за того, что он двойственный. Попытки обойти эти проблемы при- привели к новым классам алгоритмов, которые мы сейчас кратко обсу- обсудим. (См. разд. «Комментарии и ссылки».) Тот факт, что в дробном двойственном алгоритме необходимо де- делить одно целое число на другое, означает, что при реализации этого алгоритма в цифровой вычислительной машине элементы таб- таблицы будут храниться лишь с конечной точностью (вспомините об- обсуждение, сопровождавшее алгоритм эллипсоидов; разд. 8.7.4). Если 1 делится на 3, результат хранится в виде двоичного числа с некоторым конечным числом разрядов; если затем это число умно- умножается на 3, мы не вернемся к значению 1. (Читатель может прове- проверить это на карманном калькуляторе; получается 0.9999999.) Этот эффект накапливается от этапа к этапу, и в результате может оказаться затруднительным решить, является ли данный элемент целым или нет — различие, которое необходимо для порождения
350 Гл. 14. Алгоритм отсекающей плоскости отсечений. В связи с этим построены полностью целочисленные алгоритмы, в которых ведущие элементы всегда имеют значение 1. Кроме всего прочего, дробный двойственный алгоритм является двойственным алгоритмом и не порождает прямого допустимого ре- решения, пока не достигнет оптимальности. Сбычно в этом нет про- проблемы, но, к сожалению, алгоритмы для задач ЦЛП часто останав- останавливаются, не достигнув оптимальности, поскольку трудно пред- предсказать время их работы, а это время может очень сильно меняться в зависимости от входных данных задачи. Если это происходит в двойственном алгоритме, мы оказываемся в неприятной ситуации, затратив определенное количество машинного времени и не получив никакого полезного результата; мы не получаем ни целочисленного, ни допустимого решения нашей исходной задачи. С другой стороны, алгоритм отсекающей плоскости, работающий с подоптимальными решениями, которые одновременно целочисленны и допустимы от- относительно исходных ограничений, позволяет использовать ре- результат преждевременной остановки. Такие алгоритмы действитель- действительно построены и обычно называются прямыми целочисленными алгоритмами отсекающей плоскости. Задачи 1. Покажите, что в решении, использующем отсекающие плоскости, опи- описанном в примере 14.2, нарушаются правила для лексикографического двойавен- ного алгоритма, приведенные позднее в теореме 14.3. Решите задачу заново, придерживаясь лексикографических правил. Выразите новые отсечения через исходные переменные х1 и х%. 2. Предположим, что некоторая задача целочисленного линейного програм- программирования получается добавлением переменных недостатка к задаче minc'x, 0 целочисленно, где А, Ь и с —- целочисленны. Назовем переменные х исходными переменными. Пусть s — переменная недостатка, соответствующая отсечению Гомори в любом месте алгоритма отсекающей плоскости. Докажите, что s можно выразить в виде линейной комбинации исходных переменных с целыми коэффициентами плюс целочисленная константа. 3. Покажите, что любой элемент в /-Й оптимальной нецелочисленной таблице А1 в алгоритме отсекающей плоскости можно представить в виде L/D, где L — целое число и D — определитель соответствующего оптимального базиса. 4*. Обобщите доказательство конечности дробного двойственного метода на случай, когда строка и столбец, соответствующие переменной недостатка s, выбрасываются, если s входит в базис. 5. Опишите, как дробный двойственный алгоритм отсекающей плоскости может обнаружить и различить случаи, когда ослабленная задача неограниченна и целочисленная задача или неограниченна, или недопустима. (Как показано в лемме 13.2, если ослабленная задача неограниченна, то целочисленная задача не может иметь конечного отимума.) 6. Покажите, что предположение в теореме 14.3 о том, что стоимость г допу- допустимого решения ограничена сверху, несущественно. (Указание: вспомните гео- георему 2.2.)
Комментарии и ссылки 351 7. Докажите следующие свойства отношения лексикографического порядка: а) х<у и </<г=фл:<г; б) л: <(/=ф~1 ((/<*); в) ~1(л:<х); L, L, L, v) x<y a z<w=5>x-\-z<y-\-w. 8. Докажите теорему 14.2: лексикографический двойственный симплекс- алгоритм конечен. 9. Покажите, как сделать в начале лексикографического алгоритма все строки или столбцы лексикографически положительными. 10. Покажите, как сделать выбор лексикографического максимума в опера- операции двойственного лексикографического симплекс-алгоритма однозначным. 11. Покажите, что дробный двойственный алгоритм отсекающей плоскости, в котором переменные недостатка, соответствующие отсечениям, выбрасываются, если становятся базисными, требует не более чем экспоненциального числа ите- итераций. (Здесь под экспоненциальным мы имеем в виду 2^(i), где p(L) — полином от длины входа.) Комментарии и ссылки Дробный двойственный алгоритм принадлежит Гомори: [Gol] Gomory R. E. Outline of an Algorithm for Integer Solution to Linear Pro- Programs, Bulletin Amer. Math. Soc, 64, No. 5 A958). [Go2] Gomory R. E. An Algorithm for Integer Solutions to Linear Programs, pp. 269—302 in Recent Advances in Mathematical Programming, ed. R, L. Graves and P. Wolfe. New York: McGraw-Hill Book Company, 1963. Лексикографический метод устранения зацикливания взят из работы [DOWI Dantzig G. В., Orden A., Wolfe P. The Generalized Simplex Method for Minimizing a Linear Form under Linear Inequality Constraints, Pacific J. Math., 5, No 2 A955), 183—195. Имеется несколько учебников, детально описывающих множество алгоритмов отсекающей плоскости; среди них: [GN] Garfinkel R. S., Nemhauser G. L. Integer Programming. New York: John Wiley & Sons, Inc., 1972. [Ни] Ни Т. С Integer Programming and Network Flows. Reading, Mass.; Addison- Wesley Publishing Co., Inc., 1969. [Имеется перевод: Ху Т. Целочисленное программирование и потоки в сетях.— М.: Мир, 1974.] [Sa] Salkin H. M. Integer Programming. Reading, Mass.: Addison-Wesley Publish- Publishing Co., Inc., 1975. Ленстра изложил замечательный результат в лекции 17 декабря 1980 г. в Ам- Амстердаме (записано Талменом и передано нам Скарфом и ван Эмде Боасом). Рас- Рассмотрим в задаче ЦЛП ограничения допустимости Ax^b, x?Zn. Для любого фиксированного п Ленстра описал алгоритм, полиномиальный относительно входных данных, который определяет, допустимы ли эти ограничения, и, если ответ положителен, находит допустимую точку х. Естественно, п входит в пока- показатель соответствующей полиномиальной оценки. См. [Le] Lenstra H- W. Jr. Integer Programming with a Fixed Number of Variables, Report 81-03, University of Amsterdam, April 1981.
15 NP-полные задачи 15.1 Введение В предыдущих главах нашей основной целью было построение эффективных алгоритмов для решения разного рода комбинаторных задач оптимизации. В гл. 8 мы приняли тезис, согласно которому под «эффективным алгоритмом» имеет смысл понимать «алгоритм, для которого число требуемых шагов растет как полином от размера входа». До сих пор мы были свидетелями основных достижений в области комбинаторных алгоритмов оптимизации: мы построили эффективные (в нашем техническом смысле) алгоритмы для реше- решения таких сложных задач, как задача о взвешенном паросочетании, задача о пересечении матроидов и задача ЛП. Теперь настало вре- время познакомиться с явными неудачами этого подхода, т. е. с зада- задачами, для которых не известно эффективного алгоритма С этой целью мы строим красивую теорию, позволяющую выдвинуть глубокую математическую гипотезу, которая объясняет все эти неудачи. Принципиальным результатом этого исследования является понятие NP-полной задачи. Интуитивно AfP-полная задача — это вычислительная задача, которая так же трудна, как любая разум- разумная задача (все эти понятия будут точно определены). Будет пока- показано, что задача коммивояжера (ЗК), над которой безуспешно бьются уже два поколения математиков, NP-полна Также NP- полны такие «твердые орешки», как задача целочисленного линей- линейного программирования (ЦЛП), задача о выполнимости, задача о пересечении трех матроидов и множество других хорошо известных трудных вычислительных задач, многие из которых имеют оптими- оптимизационный характер. Этот класс AfP-полных задач обладает сле- следующими очень интересными свойствами. 1. Никакую AfP-полную задачу нельзя решить никаким извест- известным полиномиальным алгоритмом (и это несмотря на настойчивые усилия многих блестящих исследователей в течение целых десяти- десятилетий). 2. Если существует полиномиальный алгоритм для какой- нибудь jVP-полной задачи, то существуют полиномиальные алго- алгоритмы для всех jVP-полных задач. Основываясь на этих двух фактах, многие высказывают ги- гипотезу, что ни для какой AfP-полной задачи не может существовать
15.2. Задача оптимизации — это три задачи 353 полиномиального алгоритма; однако никому пока не удалось дока- доказать этого. В настоящее время исследователи склоняются к мне- мнению, что без развития совершенно новых математических методов доказать эту гипотезу не удастся. Практическое значения понятия Л'Р-полной задачи лежит имен- именно в широко распространенном мнении, что такие задачи по су- существу труднорешаемы с вычислительной точки зрения, что они не поддаются эффективному алгоритмическому решению и что для любого алгоритма, корректно решающего Л'Р-полную задачу, потребуется в худшем случае экспоненциальное количество времени, и, следовательно, он не будет применим на практике ни к каким, за исключением очень малых, индивидуальным задачам. Таким об- образом, исследователь, который сталкивается с новой комбинатор- комбинаторной задачей оптимизации и не может найти для нее эффективного алгоритма, имеет теперь возможность попытаться доказать, что задача Л'Р-полна. Конечно, в большинстве случаев вряд ли это будет его так же вдохновлять, как нахождение эффективного ал- алгоритма. Тем не менее такой подход имеет определенные достоин- достоинства. Во-первых, он убережет исследователя — и очень возможно некоторых его или ее коллег — от дальнейших тщетных попыток алгоритмически решить задачу. Кроме того, если о задаче известно, что она /VP-полна, то обычно появляется желание добиться менее амбициозных целей, чем построение алгоритма, который всегда находит точное решение и время работы которого никогда не пре- превышает данной полиномиальной оценки. При этом можно восполь- воспользоваться одним из нескольких возможных подходов. Именно такие подходы и служат предметом дальнейшего обсуждения. 15.2 Звдача оптимизации — это три задвчи В гл. 1 задача оптимизации была определена как множество индивидуальных задач. Каждая индивидуальная задача — это пара (F, с), где F — множество допустимых решений и с — функ- функция стоимости: с: F-+R. Поскольку в этой главе задачи оптими- оптимизации будут рассматриваться в вычислительном аспекте, полезно вначале договориться, как будет представляться индивидуальная комбинаторная задача оптимизации на входе вычислительной ма- машины. Можно, разумеется, выписать все допустимые решения и для каждого указать значение с. Однако для большинства интересных задач некоторые индивидуальные задачи будут иметь непропорци- непропорционально большое число допустимых решений, и поэтому такой ме- метод представления крайне нежелателен. В качестве примеров подобных ситуаций читатель может вспомнить ЗК и МОД. «^. В дальнейшем будет предполагаться, что F и с заданы неявно с помощью двух алгоритмов ЛР и Лс. Алгоритм ЛР по данным ком- комбинаторному объекту / и множеству параметров S будет решать, 12 № 3032
354 Гл. 15. NP-полные задачи является ли / элементом множества допустимых решений F, опре- определяемого данными параметрами. В свою очередь Лс по данным допустимому решению / и другому множеству параметров Q вы- выдает значение c(f). Тогда индивидуальную комбинаторную задачу можно определить как представление параметров из S и Q с ис- использованием фиксированного конечного алфавита и некоторого стандартного разумного кодирования, как описано в гл. 8 и далее в настоящей главе. Пример 15.1. В индивидуальной ЗК. с п городами параметром S является целое число п, а параметрами Q — элементы симметрич- симметричной (пХп)-матрицы расстояний Ыц\. Алгоритм ЛР по данному объекту / и параметру п будет проверять, является ли f обходом п городов — т.е. циклической перестановкой на множестве {1, 2 п). Алгоритм Лс по данным обходу / и матрице ldtj] вычисляет сто- стоимость c(f), суммируя все элементы матрицы Ыц\, соответствующие расстояниям, проходимым вдоль этого обхода. ? Пример 15.2. Рассмотрим следующую комбинаторную задачу оптимизации, называемую задачей о максимальной клике. Для данного графа G=(V, Е) найти наибольшее подмножество CsV, такое, что lu, v] g Е для любых различных и, v?C. Параметром S в данном случае является граф G. По данному графу G=(V, E) алгоритм ЛР определяет, образует ли / клику в G, т. е. полностью связанное подмножество множества V. Алго- Алгоритм Лс, вычисляющий стоимость, здесь просто вычисляет мощ- мощность множества /; множество Q в этом случае пусто. ? Пример 15.3. Сформулируем подобным образом задачу целочис- целочисленного линейного программирования (ЦЛП). Нас будет интересо- интересовать следующий ее вид: mine'*, Ax = b, х^О целочисленно. В качестве параметров S в алгоритме ЛР будут выступать матрица А и вектор Ь. Для любого данного целочисленного вектора х ал- алгоритм ЛР проверяет справедливость условий Ах—Ь и х>0. Ал- Алгоритм Лс использует в качестве множества параметров Q вектор с и вычисляет с'х для каждого данного допустимого решения х. ? Заметим, что во всех трех приведенных примерах алгоритмы ЛР и Лс полиномиальны. В дальнейшем это будет частым и не- необходимым с практической точки зрения предположением. Инте- Интересное исключение, в котором с трудно вычислить (более точно, трудно сравнить с целым числом), содержится в п. (а) задачи 17. Таким образом, комбинаторная задача оптимизации — это вычислительная задача следующего вида:
15.2. Задачи оптимизации — это три задачи 355 По данным представлениям параметров S и G для алго- алгоритмов ЛР и Лс найти оптимальное допустимое решение. Назовем это оптимизационным вариантом данной задачи. Однако комбинаторную задачу оптимизации можно также поста- поставить в следующей более слабой форме. По данным S w Q найти стоимость оптимального решения. Этот вариант будет называться вычислительным вариантом комбинаторной задачи оптимизации. В предположении, что алго- алгоритм Лс полиномиален — другими словами, что стоимость с не очень трудно вычислить,— моментально получаем, что вычисли- вычислительный вариант комбинаторной задачи оптимизации не может быть намного сложнее, чем оптимизационный вариант. Третий вариант комбинаторной задачи оптимизации особенно важен при изучении сложности задачи, поскольку он ближе всего к прототипу вычислительных задач, традиционно изучаемых в тео- теории вычислений. Этот вариант, называемый вариантом распозна- распознавания, имеет следующий вид. Для данной индивидуальной задачи — т. е. представления S и Q — и целого числа L определить, существует ли такое допустимое решение f?F, что c(f)^.L *). В отличие от двух ранее введенных вариантов вариант распозна- распознавания представляет собой вопрос, на который можно ответить да или нет. Очевидно, ответить на этот вопрос ненамного труднее, чем решить соответствующую вычислительную задачу, так как после ее решения остается только сравнить оптимальную стоимость c(f) с L и выдать ответ да в том и только в том случае, если c(f)^.L. Таким образом, используя только одно предположение, что с легко вычислить, мы установили, что каждый из вариантов — опти- оптимизационный, вычислительный и распознавания (именно в этом порядке) — не сложнее, чем предыдущий. Возникает естественный вопрос: не имеют ли все эти варианты, грубо говоря, одинаковую сложность? Другими словами, нельзя ли решить вычислительный вариант, эффективно используя гипотетический алгоритм, решаю- решающий задачу в варианте распознавания, и нельзя ли сделать то же самое соответственно для оптимизационного и вычислительного вариантов? При очень общих и реалистичных предположениях — а именно, что стоимость оптимального решения является целым числом, лога- логарифм которого ограничен полиномом от размера входа — можно по- показать, что всякий раз, когда вариант распознавания может быть решен эффективно, то же самое справедливо и для вычислительного х) Если исходная задача является на самом деле задачей максимизации, та- такой, как задача о максимальной клике, это неравенство принимает вид ,-'Л~-'- 12*
356 Гл. 15. NP'-полные задачи варианта. Чтобы показать это, нужно некоторым образом вычис- вычислить оптимальную стоимость с(/), задавая для различных значений L вопросы вида: «Верно ли, что с(/)<Х?» Но это можно осуществить с помощью бинарного поиска, описанного в лемме 8.4. Из нашего предположения о том, что log c(f) ограничен полиномом от размера входа, следует, что для решения вычислительной задачи можно эф- эффективно использовать любой алгоритм, решающий задачу рас- распознавания. Отметим, что наше предположение о логарифме стои- стоимости справедливо для всех задач оптимизации, которые рассма- рассматривались или будут рассматриваться в дальнейшем в этой книге, и оно, очевидно, следует из нашего предположения о том, что алгоритм Лс полиномиален. Не известно общего метода для решения оптимизационного ва- варианта задачи с использованием алгоритма для вычислительного варианта. Однако к некоторым задачам, по-видимому, применимы определенные варианты метода «динамического программирования». Пример 15.4. Рассмотрим задачу о максимальной клике, опи- описанную в примере 15.2, и предположим, что у нас имеется процедура procedure МАКСКЛИКА(О) (comment: она выдает наибольшую клику в Q; она рекурсивна и использует процедуру РАЗМЕРКЛИКИ, которая считается данной) if в G нет вершин then return 0 else begin пусть v —такая вершина, что РАЗМЕРКЛИКИ (G(v))=PA3MEPIWlHKH(G), где G(v)—подграф графа G, порожденный вершиной v и всеми смежными с ней вершинами; return {v}(JMAKCK71MKA(G(v)-v); end Рис. 15.1. РАЗМЕРКЛИКИ, которая по данному произвольному графу G будет вычислять размер максимальной клики в G. Другими слова- словами, процедура РАЗМЕРКЛИКИ решает вычислительный вариант задачи о максимальной клике. Тогда можно эффективно использо- использовать эту процедуру для решения оптимизационного варианта с помощью процедуры МАКСКЛИКА, представленной на рис. 15.1. В этой рекурсивной процедуре сначала находится вершина v гра- графа G, которая заведомо входит в максимальную клику. Это делается путем проверки того, что значение, выдаваемое процедурой РАЗ- РАЗМЕРКЛИКИ для графа G, не уменьшается при выбрасывании всех вершин, не смежных с v (это означает, что v — вершина некоторой максимальной клики). Затем рекурсивно находится МАКСКЛИКА для подграфа графа G, состоящего из всех вершин, смежных с v, и соответствующих ребер, и вершина v добавляется к этой клике. В результате заведомо получается максимальная клика графа G. Если время работы процедуры РАЗМЕРКЛИКИ в применении к гра- графам с п вершинами ограничено функцией С(п), то оценка t(n) для
15.3. Классы Р и NP 357 времени работы процедуры МАКСКЛИКА удовлетворяет соотно- соотношениям 7@) = 0A), Т (п)^(п+\)С (п) + Т (п—\) + 0(п) и, следовательно, Т(п)=0(п2-С(п)). Таким образом, если процедура РАЗМЕРКЛИКИ имеет полино- полиномиальную оценку, то это же справедливо и для процедуры МАК- МАКСКЛИКА. К сожалению, вскоре мы продемонстрируем, что очень маловероятно, чтобы любой из указанных трех вариантов задачи о максимальной клике мог быть решен эффективно. ? Можно также показать, что аналогичные рассуждения примени- применимы к ЗК (задача 2), а также к многим другим комбинаторным зада- задачам оптимизации. Таким образом, все три варианта таких комби- комбинаторных задач оптимизации эквивалентны, по крайней мере в от- отношении существования эффективных алгоритмов. 15.3 Классы Р и NP В предыдущем параграфе мы видели, как по данной задаче оп- оптимизации можно определить тесно связанную с ней задачу распо- распознавания, т. е. вопрос, на который можно ответить да или нет. Од- Однако некоторые хорошо известные вычислительные задачи с самого начала являются задачами распознавания. Таковы задачи, тра- традиционно изучаемые в теории вычислений. В § 8.1, например, была упомянута ПРОБЛЕМА ОСТАНОВКИ: по данному алгоритму и его входу определить, остановится ли алгоритм когда-нибудь. В гл. 13 была введена задача ВЫПОЛНИМОСТЬ: по данной булевой формуле выяснить, выполнима ли она. В § 12.6 был введен вариант задачи о гамильтоновом цикле: выяснить, существует ли в данном графе G цикл, проходящий ичерез каждую вершину ровно один раз. Все эти задачи являются задачами распознавания. Наше определение вариантов распознавания для задач оптимизации позволяет изу- изучать задачи обоих видов в единой постановке. Кроме того, так как мы показали, что вариант распознавания не труднее, чем исходная зада- задача оптимизации, любые отрицательные результаты, доказанные о сложности варианта распознавания, будут также применимы к оптимизационному варианту. Нас интересует классификация задач распознавания по их сложности. Обозначим через Р класс задач распознавания, которые могут быть решены некоторым полиномиальным алгоритмом. Класс
358 Гл. 15. NP-полные задачи Р можно определить очень точно с помощью любого математиче- математического формального определения алгоритмов, такого, как машина Тьюринга [Ти]. Однако оказывается, что все такие разумные модели вычисления обладают замечательным свойством: если задачу можно решить за полиномиальное время в одной из них, то ее можно ре- решить за полиномиальное время во всех остальных. Таким образом, этот класс Р исключительно устойчив относительно вариаций в дета- деталях наших предположений. Поэтому мы удовлетворимся неформаль- неформальным определением Р как класса задач распознавания, для которых имеются полиномиальные алгоритмы, другими словами, Р — это класс относительно простых задач распознавания, для которых существуют эффективные алгоритмы. Нам уже встречалось много представителей класса Р. Ниже мы выпишем еще несколько при- примеров. СВЯЗНОСТЬ ГРАФА Выяснить, является ли данный граф G связным (см. §9.1). ПУТЬ В ОРГРАФЕ Даны орграф D=(V, А) и два подмножества S, T^V. Выяснить, существует ли в D путь из какой-нибудь вершины множества S в некоторую вершину множества Т (см. §9.1). МАКСИМАЛЬНОЕ ПАРОСОЧЕТАНИЕ Даны граф G и целое число k. Выяснить, существует ли в G паросочетание с k или более ребрами (см. гл. 10). МИНИМАЛЬНОЕ ОСТОВНОЕ ДЕРЕВО Даны связный граф G=(V, Е), функция стоимости d, определен- определенная на множестве Е, и целое число L. Выяснить, существует ли остовное дерево в графе G со стоимостью L или меньше (см. гл. 12). Все эти задачи принадлежат к классу Р. В каждом случае для любой индивидуальной задачи существует эффективный способ узнать, будет ответом да или нет. Введем теперь класс NP, более обширный на вид класс задач распознавания. Для того чтобы задача содержалась в NP, мы не требуем, чтобы ответ в каждой индивидуальной задаче мог быть по- получен за полиномиальное время с помощью некоторого алгоритма. Мы требуем просто, чтобы в том случае, когда в индивидуальной задаче х ответ да, существовало бы краткое (т. е. с длиной, ограни- ограниченной полиномом от размера х) удостоверение для х, справедли- справедливость которого можно было бы проверить за полиномиальное время. Пример 15.5. Рассмотрим вариант распознавания для задачи о максимальной клике: КЛИКА Даны граф G=(V, E) и целое число k. Выяснить, существует ли в данном графе клика (т. е. полностью связанное подмножество мно- множества V) размера k.
15.3. Классу Р и NP Не ясно, содержится ли КЛИКА в Р. Очевидный путь решения этой задачи мог бы состоять в проверке для всех ('*') подмножеств множества V, имеющих мощность k, удовлетворяют ли они требо- требованиям задачи. В результате, конечно, оказывается, что имеется экспоненциальное число таких множеств. В действительности для этой задачи не известно полиномиального алгоритма. Тем не менее КЛИКА входит в NP. Чтобы понять это, предполо- предположим, что нам дана индивидуальная задача КЛИКА с ответом да; другими словами, граф G=(V, Е) и целое число k, такие, что в G имеется клика С мощности k. Тогда для этой индивидуальной задачи имеется совсем короткое удостоверение, а именно список вершин клики С. Справедливость этого удостоверения можно проверить эффективно, так как нужно проверить только, что С действительно содержит k вершин и что все эти вершины действительно связаны ребрами из Е. П Эти идеи можно формализовать следующим образом. Пусть Б — фиксированный конечный алфавит и $ — выделенный символ в 2. (Символ $ отмечает конец входа и начало удостоверения.) Если х — строка символов из 2, то ее длина— число символов в ней — обозначается через \х\. Определение 15.1. Будем говорить, что задача распознавания А входит в класс NP, если существуют полином р(п) и алгоритм Л (алгоритм проверки удостоверения), такие, что выполняется следующее свойство: строка х является индивидуальной задачей задачи А с отве- ответом да в том и только в том случае, если существует такая строка с(х) (удостоверение) символов из 2, что \с(х)\^.р(\х\), и алгоритм Л, получая на вход х$с(х), приходит к отве- ответу да после не более р(\х\) шагов. Q Пример 15.5 (продолжение). Если в нашем примере задачи КЛИКА х представляет индивидуальную задачу (G, k) с ответом да, то удостоверением с(х) для х могло бы быть представление списка вершин подходящей клики С. Алгоритм проверки удостоверения проверяет, действительно ли х представляет греф G и целое число k, действительно ли с(х) — множество вершин С, \C\=k и для каж- каждой пары и, v вершин из С существует ребро в G. В качестве поли- полинома р(п) можно взять 1пг. П Пример 15.6. Следующая задача нам хорошо известна. ЗАДАЧА КОММИВОЯЖЕРА (ЗК) (' Даны целое число п, симметричная (пхп)-матрица [d^] с не- неотрицательными целочисленными элементами и целое число L. Требуется определить, существует ли такая циклическая пере- перестановка (обХОД) Т, ЧТО 2"-1^/т(/)^^-- Эта задача лежит в NP, поскольку если дана индивидуаль- индивидуальная ЗК (п, [djj], L) с ответом да, го можно очень легко дока-
560 Рл. 15. NP-полные задачи зать этот факт, представив подходящий обход. Удостоверением для такой индивидуальной задачи мог бы служить код обхода т, удовлетворяющего неравенству 2"_id/T(/)^^- Алгоритм Л про- проверял бы, являются ли п, L и [d,y] подходящими, действительно ли т — обход и его длина не превосходит L. ? Пример 15.7. Задача ВЫПОЛНИМОСТЬ, рассмотренная в гл. 13, лежит в NP. Если дано выполнимое множество дизъюнктов Си . . ., С,„, содержащих булевы переменные хи . . ., хп, то подхо- подходящим удостоверением может служить набор значений истинности, представленный в виде вектора из {0, 1}". Алгоритм проверки удосто- удостоверения будет просто проверять, что Сг Ст— это правильные дизъюнкты, содержащие п переменных, и что все дизъюнкты при- принимают значение истина на наборе значений истинности из удосто- удостоверения. ? Пример 15.8. Рассмотрим следующий вариант распознавания задачи целочисленного линейного программирования (ЦЛП). ЦЛП Даны целочисленная (тХп)-матрица А и целочисленный т-век- тор Ь. Выяснить, существует ли целочисленный n-вектор х, такой, что Ах=Ь, х^О. Отметим, что при преобразовании задачи целочисленного линей- линейного программирования в соответствующий вариант распознавания нам не потребовалось явно вводить целое число L и неравенство c'x^L, что мы обычно делали при таком преобразовании. Это свя- связано с тем, что такое неравенство можно преобразовать в равенство, добавляя переменную недостатка, и включить это равенство в систему Ах==Ь. Задача распознавания ЦЛП лежит в NP. Чтобы показать это, вспомним теорему 13.4, которая утверждает, что если задача цело- целочисленного линейного программирования имеет допустимое реше- решение, то она имеет решение, в котором все компоненты не превосхо- превосходят М2=п •(то1)ага+3A+оа). Такое ограниченное решение может служить кратким удостоверением для индивидуальной задачи ЦЛП с ответом да, так как длина его двоичного представления, как и требуется, полиномиальна относительно размера входа. ? * Зажно отметить, что для установления принадлежности неко- некоторой задачи к NP не нужно объяснять, как эффективно вычислить удостоверение с(х) по входу х. Необходимо просто показать су- существование по крайней мере одной такой строки для каждого х. Заметим, что Р является подмножеством NP. Другими словами, для любой эффективно решаемой задачи можно строить краткие удостоверения. Чтобы понять это, предположим, что для задачи А существует полиномиальный алгоритм ЛА. Если х — индивидуаль- индивидуальная задача задачи А с ответом да, то алгоритм ЛА, примененный к х, через полиномиальное число шагов выдает ответ да. Запись ра- работы алгоритма ЛА при входе х является подходящим удостовере-
15.4. Полиномиальные сведения 361 нием с(х). Действительно, для проверки с(х) достаточно проверить, что это правильное выполнение алгоритма ЛА\ напомним, что по определению с(х) полиномиально по длине. Таким образом, если А ? Р, то Л € NP. Но почему NP — интересный класс задач распознавания? Во- первых, он содержит класс задач Р, очень нас устраивающий. Во-вторых, он содержит многие интересующие нас задачи, принад- принадлежность которых к классу Р находится под сомнением. Примерами являются задачи ЗК, ЦЛП, КЛИКА и ГАМИЛЬТОНОВ ЦИКЛ. Фактически можно сказать, что варианты распознавания всех разумных комбинаторных задач оптимизации лежат в NP. Для обос- обоснования этого напомним, что цель комбинаторных задач оптимиза- оптимизации состоит в построении оптимальных объектов, таких, как обхо- обходы, маршруты, множества вершин, разбиения и списки целых чисел. Поэтому есть все основания ожидать, что если найдено оптимальное решение, то его можно кратко записать, и оно может служить в качестве удостоверения для варианта распознавания. Нельзя надеяться построить нечто оптимальное, чего абсолютно нельзя было бы построить за разумное время. Поэтому класс NP очень естест- естественно появляется при изучении сложности комбинаторных задач оптимизации. А является ли Р собственным подмножеством в NP или Р и NP совпадают? Если бы последнее было верным, то многие проблемы, известные своей трудностью,— например, ЗК, КЛИКА, ЦЛП и ВЫПОЛНИМОСТЬ — входили бы в Р и, следовательно, были бы (по-видимому) простыми. В настоящее время широко распространено мнение, что Р является собственным подмножеством в NP. Пока не известно формального доказательства этого факта, и так назы- называемая проблема P=NP является сейчас наиболее важным теоре- теоретическим вопросом, стоящим перед специалистами по вычислитель- вычислительным наукам. Однако, несмотря на отсутствие доказательства в ту или иную сторону, некоторый свет пролит на эту тайну. Принципи- Принципиальным математическим инструментом этих исследований явилось понятие сведения, которое мы сейчас рассмотрим. 15.4 Полиномиальные сведения Часто оказывается, что решение одной вычислительной задачи становится простым, если допустить, что имеется эффективный алго- алгоритм для решения другой задачи. Например, алгоритм для нахожде- нахождения максимального потока в сети, представленный на рис. 9.13, использует в качестве подпрограммы умный алгоритм для нахожде- нахождения тупикового потока в слоистой сети. Аналогично, в § 12.6 мы видели, что ориентированный вариант задачи ГАМИЛЬТОНОВ ПУТЬ можно решить за полиномиальное время, если имеется эф- эффективный алгоритм для задачи о пересечении трех мафондов
362 f/t, Itf. NP-полные задачи Наконец, в гл. 13 было отмечено, что если бы существовал полино- полиномиальный алгоритм для задачи ЦЛП, то можно было бы эффективно решить задачу ВЫПОЛНИМОСТЬ и много других задач. Эта до- достаточно общая ситуация оправдывает следующее формальное опре- определение. Определение 15.2. Пусть Ах и Л2— задачи распознавания (т. е. задачи с ответами да — нет). Будем говорить, что Ах сводится за полиномиальное время к А2 тогда и только тогда, когда существует полиномиальный алгоритм Л1 для Аи использующий несколько раз в качестве подпрограммы с единичной стоимостью (гипотети- (гипотетический) алгоритм Л2 для А2. Будем называть Лх полиномиальным сведением Ах к А2. ? Наиболее важным в данном выше определении является выраже- выражение с единичной стоимостью. Под этим имеется в виду, что алгоритм А2 рассматривается как единый оператор, для выполнения которого требуется единица времени. Естественно, это предположение почти всегда очень нереалистично. Поэтому интересно следующее предло- предложение, которое связывает эту чисто гипотетическую ситуацию с реальной вычислительной сложностью. Предложение 15.Г. Если Л, полиномиально сводится к А2 и су- существует полиномиальный алгоритм для А 2, то существует поли- полиномиальный алгоритм для Af. Доказательство. Пусть р±{п) и р2(п) — полиномы, ограничи- ограничивающие сложность алгоритмов А^ (опять в предположении, что вызов Лг имеет единичную стоимость) и Л2. Тогда действитель- действительная сложность алгоритма Л^ для входа размера п при условии, что каждый вызов Л2 стоит столько, сколько требуется времени для выполнения Лг с текущими параметрами, ограничена вели- величиной р(п)=р1(п)-р2(р1(п)). Чтобы понять это, достаточно заметить, что в худшем случае ^, будет состоять из непрерывных вызовов Л2, каждый раз для наи- наибольшего возможного входа. Возможно самое большее pi{n) та- таких вызовов; но какова может быть длина их входа? Даже если до- допустить, что алгоритм тратит все его pi(n) шагов только на выписы- выписывание входов для Л2, то эти входы не могут быть длиннее, чем р, (п). (Здесь считается, что алгоритм может обрабатывать только один символ в каждый момент времени; рассуждения будут идентич- идентичны, если допустить одновременную обработку не более k>\ сим- символов или даже полиномиального — относительно длины входа — числа символов.) Следовательно, существует полиномиальный алгоритм для Аъ ? Мы увидим, что особый интерес представляет специальный вид полиномиального сведения.
15.5 Теорема Кука ЗбЗ Рис. 15.2. Р и NP Определение 15.3. Будем говорить, что задача распознавания Л, полиномиально преобразуется в другую задачу распознавания Л2, если по произвольной данной строке х можно за полиномиальное (относительно \х\) время построить такую строку у, что х является индивидуальной задачей задачи Л*с ответом да тогда и только тогда, когда у является ин- индивидуальной задачей задачи Л2 с ответом да. О Полиномиальные преобразования можно рассматривать как полиномиальные сведения всего лишь с одним вызовом подпрограммы для Л2 в конце алгоритма для Af. Остальная часть алгоритма просто строит у — вход со- соответствующего алгоритма для Аг. Примера- Примерами полиномиального преобразования могут служить преобразование задачи ВЫПОЛНИ- ВЫПОЛНИМОСТЬ в задачу ЦЛП (пример 13.4) и пре- преобразование общей задачи о потоке мини- минимальной стоимости в задачу Хичкока. (См. § 7.5; легко проверить, что описанное преобразование применимо также к вариантам распознавания обеих задач.) Определение 15.4. Задача распознавания А 6 NP называется NР-полной, если все остальные задачи из NP полиномиально пре- преобразуются в Л. ? Согласно предложению 15.1, если задача А является NP-пол- ной, то она обладает сильным свойством: если существует эффек- эффективный алгоритм для А, то существует эффективный алгоритм для каждой задачи из NP. Сюда включаются такие старые и крепкие орешки, как ЗК, ЦЛП, ВЫПОЛНИМОСТЬ и КЛИКА. Понятие iVP-полных задач и наше подозрение, что РфЫР, при- приводят к изображению класса NP, представленному на рис. 15.2; сложность на этом рисунке предполагается возрастающей вверх. Конечно, пока совсем не очевидно, что существуют iVP-полные за- задачи. Однако они действительно существуют, что будет показано в следующем параграфе. 15.5 Теорема Кука Чтобы доказать, что некоторая задача NP-полпа, необходимо показать а) что задача входит в NP; б) что все другие задачи из NP полиномиально преобразуются в нашу задачу. На практике для доказательства п. (б) обычно показывают, что некоторую известную УУР-полную задачу можно полиномиально преобразовать в рассматриваемую задачу. Так как свойство по-
364 Гл. 15. NP-полные задачи линомиальной преобразуемости транзитшно — т. е. если А поли- полиномиально преобразуется в В и В полиномиально преобразуется в С, то А полиномиально преобразуется в С,— этого будет достаточ- достаточно. Однако первое доказательство jVP-полноты должно включать явное доказательство п. (б). Для этого в доказательстве нужно ис- использовать общие характеристики всевозможных задач из NP. Та- Такими характеристиками, естественно, являются существование по Программа Читающая и пишущая головка Строке |i|n|s|t[a|rt|c|e|$|c|e|rltli|f|i|cla|t|e| Рис. 15.3. Алгоритм проверки удостоверения. крайней мере одного удостоверения с(х) для каждой индивидуаль- индивидуальной задачи х с ответом да и существование алгоритма проверки удо- удостоверения Л. Таким образом, нужно формализовать наше понятие алгоритма проверки удостоверения. Этот алгоритм можно представлять себе как устройство, которое читает и преобразует символы некоторой строки, по одному символу за единицу времени, с помощью читаю- читающей и пишущей головки; ее работа, движения и другие решения уп- правляются программой (рис. 15.3). В исходном состоянии головка обозревает самый левый символ строки и программа начинает выпол- выполнять свою первую команду. Команды программы имеют вид /: if a then (а'; о; Г), где / и /' — номера команд (метки), а и а' — символы алфавита 2 и о — одно из чисел, 1, 0 или —1. Выписанная выше команда имеет следующий смысл. Если в данный момент обозревается символ а, то стереть его и написать на его месте а', сдвинуться на о позиций вправо и далее выполнять команду с меткой /'; в против- противном случае выполнять следующую команду. Сдвиг на 0 или —1 разрядов вправо означает соответственно, что головка остается в той же позиции или сдвигается на 1 влево. Последняя команда программы имеет вид \Л\: accept, где \Л\ — длина программы, т. е. общее число команд в ней. Будем говорить, что строка х%с{х) принимается алгоритмом
15.5. Теорема Кука 365 А, если этот алгоритм, начиная в правильном положении обраба- обрабатывать данную строку, после не более р(\х\) шагов приходит к по- последней команде, где/;(л) — полиномиальная граница для А. Если алгоритм выполняет р(\х\) команд и не достигает команды accept (принять) или если головка сходит со строки, то будем говорить, что х$с(х) отвергается. Таким образом, класс NP можно более формально определить как множество задач распознавания, для которых существуют алгоритм проверки удостоверения А и поли- полином р(п), такие, что х является индивидуальной задачей с ответом да тогда и только тогда, когда существует такая строка с(х), что \с(х)К/>(\х\) и А, принимает х$с(х). Эта модель алгоритма проверки удостоверения может на пер- первый взгляд показаться несколько примитивной и ограниченной по своей силе. Рассмотрим несколько возможных претензий. 1. Создается впечатление, что работа алгоритма ограничена пространством, занимаемым строкой, и больше нет «чистой бумаги». Тем не менее это возражение легко отвести, заметив, что удосто- удостоверение можно определить так, чтобы оно содержало в себе доста- достаточное количество дополнительного пространства например, длинную строку «пробелов» —для нужд алгоритма. Так как ал- алгоритм полиномиален, он не может потребовать более чем полино- полиномиального количества такого пространства, и поэтому длина удос- удостоверения остается полиномиальной. Учитывая это, мы всюду в дальнейшем будем принимать упро- упрощающее допущение, что для всех х одного и того же размера длина с(х) равна \с(х)\=р(\х\)~\х\— 1. Следовательно, длина всего вхо- входа х$с(х) в точности равна р(\х\). При этом не происходит потери общности, поскольку, если удостоверение короче, его всегда мож- можно дополнить несколькими пробелами до указанной длины. С дру- другой стороны, входы, длина которых превышает /?(!*[)> несуществен- несущественны для А, так как А не может даже просмотреть полностью такой вход за р(\х\) шагов. 2. Другая возможная претензия к силе нашей модели вычисле- вычисления состоит в том, что набор допустимых «команд» очень ограничен. Однако должно быть ясно, что нашу ограниченную модель можно использовать для моделирования более сложных команд (например: Делать следующее до тех пор, пока обозреваемый символ не совпа- совпадет с $, Сдвинуться на 7 позиций вправо, Удалить текущий сим- символ), добавляя при этом в общее число шагов всего лишь мульти- мультипликативную постоянную. 3. Наиболее существенным отступлением от этой модели было бы разрешение адресации; т. е. таких команд, как Сдвинуться на пятнадцатый символ строки (или даже Сдвинуться вправо на число позиций, равное двоичному целому числу, заключенному между те- текущим символом и первым символом $ вправо от него), что напоми- напоминало бы обычные вычислительные машины с произвольным досту- доступом к памяти. Однако читатель может проверить, что общее число
366 Гл. 15. NP-полные задачи шагов при нашем ограничении может умножиться приблизительно на р(\х\), так как любой позиции в строке можно достичь за это время. Таким образом, нам хотелось бы утверждать, что наша модель алгоритмов проверки удостоверения — это достаточно реалистич- реалистичная и общая модель, в которой можно выразить эффективные ал- алгоритмы для любой задачи, для которой вообще возможны эффек- эффективные алгоритмы. Так как эта модель является, по существу, ма- машиной Тьюринга, то дальнейшее обоснование нашего утверждения можно получить, рассматривая элегантные рассуждения А. М. Тью- Тьюринга [Ти]. Дополнительные технические обсуждения см. в гл. 1 книги [AHUL Воспользуемся описанным формальным определением для до- доказательства следующего важного результата, принадлежащего Куку. Теорема 15.1. Задача ВЫПОЛНИМОСТЬ NP-полна. Доказательство г В примере 15.7 было показано, что задача ВЫ- ВЫПОЛНИМОСТЬ содержится в NP. Поэтому остается показать, что если А — некоторая задача из N Р, то А полиномиально преобра- преобразуется в ВЫПОЛНИМОСТЬ. Другими словами, для данной строки х мы должны построить формулу F(x) — используя только тот факт, что A g NP,— такую, что х является индивидуальной задачей за- задачи А с ответом <3а тогда и только тогда, когда формула F(x) вы- выполнима. Для этого рассмотрим алгоритм Л проверки удостовере- удостоверения для А, время и память которого по нашему предположению о том, что A?NP, ограничены некоторым полиномом р(п). Булева формула F(x) будет содержать следующие булевы пере- переменные. 1. Булевы переменные xija для всех 0<i, /<p(|x|) и ugS. Пе- Переменная Xij0 будет соответствовать утвеждению: /-я позиция стро- строки в момент времени i содержит символ а. 2. Булевы переменные уш для всех 0</^p(|,v|), 0</<р(|л;|)+ + 1 и 1<;/<!|</?|, где \Л\ — число команд в алгоритме Л. Перемен- Переменная yijl будет соответствовать утверждению: в момент времени i обозревается \-я позиция и выполняется 1-я команда. Если /=0 или }=р(\х\)+\, то это означает, что головка сошла со строки и, сле- следовательно, вычисление безуспешно. Построим теперь из этих булевых переменных такую формулу F(x), что F(x) выполнима тогда и только тогда, когда х — это ин- индивидуальная задача задачи А с ответом да. Если булевы перемен- переменные имеют указанный смысл, то F(x), будет, по существу, утвер- утверждать, что алгоритм Л, начиная работу со строкой, в левой части которой стоит х, може! в результате принять эту строку; по опреде-
15.5. Теорема Кука 367 лению это будет означать, что существует.подходящее удостовере- удостоверение с(х) и, следовательно, что х — индивидуальная задача задачи А с ответом да. Формула F(x) является конъюнкцией четырех ча- частей: F(x) = U(x) -S(x) -W(x) -E(x). 1. Подформула U(x) выражает тот факт, что в каждый момент времени /, 0^/^p(|x|) в каждой позиции строки содержится един- единственный символ, головка обозревает единственную позицию в пре- пределах строки и программа выполняет единственный оператор: п < ;t, ;< Р(| х |) °n &„+*,'/•)у п 1ФГ или 1Ф1' J\ [<l<\Jj П (( П 2 *</¦)• 2 уUl 2. Формула 5(х) утверждает, что Л корректно начинает ра- работу; другими словами, в нулевой момент времени самые левые |*|+1 символов в строке образуют слово х%, читающая-пишущая головка обозревает самый левый символ строки и программа пере- переходит к выполнению первой команды алгоритма: /1*1 \ 5 (X) = ^.П хо/хф J• Хо, \х | +1, $ ' (Здесь x(j) обозначает /-й символ строки х.) 3. Формула W(x) утверждает, что d работает правильно в соответствии с командами программы; W(x) является конъюнкци- конъюнкцией формул Wtjai, по одной для каждых 0</<р( \х |), 1</<р(|^|), agE, 1^/<Й|, таких, что 1-я команда алгоритма Л имеет вид /: if a then (a'; о; /'). Формула Wi}oi определяется следующим образом! Waal = (Хцо + ytji+Xi + 1, j, a') • (Х.ца + yi/t + yi+i, / + o, I') П ((хИт + Ущ + Xi + 1, i, х) • (Хщ + Ущ + yi+i, I, l+i)). X =Р О Она означает, что если Хц0 и yi)l оба истинны, то в следующий мо- момент времени переменные х и у, утверждающие, что алгоритм Л вы- выполнил правильные действия, также должны быть истинными. Для последней команды алгоритма Л и для каждых i, j и а добавляет- добавляется формула №ца\Л I = (Xija + ~УИ\Л\+ У1+1, I, I Л |), утверждающая, что как только алгоритм достигает команды accept, он остается в этом положении. Кроме того, W(x) содержит дизъюн-
368 Гл. 15. NP-полные задачи кты П (Xiio+yti'i + Xi+l,i.a), О < ( < р (| х |) 062 I <1<\Л\ / Ф V означающие, что если Л обозревает позицию, отличную от /-й, то символ в /-и позиции остается неизменным. 4. Последняя часть формулы F(x) утверждает просто, что Л корректно заканчивает свою работу, т. е. программа при этом вы- выполняет команду accept. Она состоит всего из одного дизъюнкта: Е (х) = Р У\ ' Ур<| *"'Л '^'' / = i Этим завершается построение F(x). Прежде всего заметим, что это построение требует только полиномиального — относительно \х\ — количества времени. Это следует из того факта, что общая длина формулы F (число вхождений литералов, умноженное на дли- длину индексов этих литералов в формуле F) не превосходит 0{р3(\х\) log p{\x\). Поэтому", чтобы показать, что это построение является полиномиальным преобразованием задачи А в задачу ВЫПОЛНИ- ВЫПОЛНИМОСТЬ, остается доказать Утверждение. Формула F (х) выполнима в том и только в том случае, если х является индивидуальной задачей задачи А с отве- ответом да. Для доказательства необходимости предположим, что F(x) вы- выполнима. Тогда все формулы U(x), S(x), W(x) и Е(х) выполнимы при одном и юм же наборе значений истинности t. Так как на на- наборе t выполняется U(х), то для всех i и / ровно одна переменная Xfjj должна быть истинной; пусть это означает, что /-я ячейка в мо- момент времени / содержи! а. Кроме того, для всех / ровно одна из переменных yin истинна; пусть это означает, что в момент времени i обозревается /-я позиция строки и выполняется оператор /. На- Наконец, никакая переменная вида yiol или yi,P(\x\)+i,i не может быть истинной, что означает, что головка никогда не сходит со стро- строки^ Таким образом, набор значений истинности t описывает неко- некоторую последовательность строк, положений головки и команд. Покажем, что эта последовательность образует правильное прини- принимающее вычисление для алгоритма Л при входе х$с(х) для некото- некоторого удостоверения с(х). Так как S(x) также должно выполняться на наборе t, то ука- указанная последовательность начинается корректно: вначале первые J-яс J —I— 1 мест заняты правильной строкой х% и при выполнении пер- первой команды обозревается первый символ строки х. Toi факт, что W(x) также выполняется на наборе t, означает, что последовательность изменяется согласно правилам выполнения
15.6. Другие NP-полные задачи: КЛИКА и ЗК 369 алгоритма Л. Наконец, Е(х) выполняется на наборе t только в том случае, если алгоритм оканчивается последней принимающей командой. Следовательно, если формула F(x) выполнима, то су- существует строка с(х) подходящей длины, такая, что Л принимает х%с{х)\ поэтому х является индивидуальной задачей задачи А с от- ответом да. Для доказательства достаточности допустим, что х — инди- индивидуальная задача с ответом да. Тогда существует такая строка с(х) длины р(\х\)—\х\—1, что d принимает х$с(х). Это означает, что существует последовательность р(\х\) (с первой стро- строкой х$с(х)), номеров команд и обозреваемых позиций, допустимая для алгоритма Л и оканчивающаяся принятием строки х$с(х). Эта последовательность непосредственно определяет набор значе- значений истинности t, который с необходимостью выполняет F(x). Этим завершается доказательство утверждения. Рассматриваемое утверждение показывает, что F(x) является индивидуальной задачей задачи ВЫПОЛНИМОСТЬ с ответом да тогда и только тогда, когда х является индивидуальной задачей задачи А с ответом да. Поэтому описанное преобразование являет- является полиномиальным преобразованием задачи А в задачу ВЫ- ВЫПОЛНИМОСТЬ. Так как в качестве А была выбрана произвольная задача из NP, то теорема доказана. ? Следствие. Задача ЦЛП NP-noma. Доказательство. В примере 15,8 показано, что задача ЦЛП со- содержится в NP. Для доказательства iVP-полноты этой задачи доста- достаточно вспомнить полиномиальное преобразование задачи ВЫПОЛ- ВЫПОЛНИМОСТЬ в задачу ЦЛП, описанное в примере 13.4. ? 15.6 Другие iVP-полные задачи: КЛИКА и ЗК Сейчас мы установим, что еще ряд задач из NP являются NP- полными, для чего будем показывать, что в рассматриваемую зада- задачу преобразуется задача ВЫПОЛНИМОСТЬ или какая-нибудь дру- другая задача, jVP-полнота которой уже доказана. Применяемая тех- техника доказательства интересна сама по себе, и мы будем отмечать некоторые основные элементы методологии. Частный случай задачи ВЫПОЛНИМОСТЬ, в котором каждый дизъюнкт может содержать не более двух литералов, может быть решен за линейное время (см. задачу 6). Однак^, как мы сейчас по- покажем, если допускаются три литерала в каждом дизъюнкте, то соответствующая задача, называемая 3-ВЫПОЛНИМОСТЬ, оста- остается такой же трудной, как и сама задача ВЫПОЛНИМОСТЬ.
370 Гл. 15. NP-полные задачи Теорема 15.2. Задача 3-ВЫП0ЛНИМ0СТЬ NP-полна. Доказательство. Так как задача 3-ВЫПОЛНИМОСТЬ является частным случаем задачи ВЫПОЛНИМОСТЬ, то она входит в NP. Для доказательства jVP-полноты покажем, что ВЫПОЛНИМОСТЬ полиномиально преобразуется в 3-ВЫПОЛНИМОСТЬ. Рассмотрим произвольную формулу F, состоящую из дизъюнктов С], ..., Ст. Построим новую формулу F' с тремя литералами в каждом дизъ- дизъюнкте, такую, что F' выполнима тогда и только тогда, когда выпол- выполнима F. Просмотрим дизъюнкты формулы F по очереди и заменим каждый дизъюнкт Q эквивалентным множеством дизъюнктов, каж- каждый из которых содержит три литерала. Рассмотрим три случая. 1. Если С; содержит фи литерала, то ничего не делаем. 2. Если С; содержит более трех литералов, например Ct = (k1+ +Х,2+.. .+Я),), fc>3, то заменим Сг на k—2 дизъюнктов (^т+^2+ k-s — новые переменные. Нетрудно понять, что набор этих новых дизъюнктов выполним тогда и только тогда, когда выполним дизъ- дизъюнкт Ct. 3. Если Ci='k, заменяем Ct на X-\-y-\-z, а если Ci=k-\-X', заме- заменяем его на К-\-Х'-[-у. Затем к этой формуле добавляем дизъюнкты 7 + сс + Р)(г+а+Р) где у, г, а и р1 — новые переменные. Такое добавление приводит к тому, что переменные гну будут принимать значения ложь в лю- любом наборе значений истинности, выполняющем F', поэтому дизъюн- дизъюнкты X и К-\-Х' эквивалентны заменяемым их дизъюнктам. Таким образом, мы избавились от всех дизъюнктов, число лите- литералов в которых отлично от трех, и, кроме того, показали, что по- полученная в результате формула F' выполнима тогда и только тогда, когда выполнима F. Построение формулы F' можно, очевидно, вы- выполнить за полиномиальное время. Следовательно, описанное нами преобразование является полиномиальным преобразованием задачи ВЫПОЛНИМОСТЬ в задачу 3-ВЫПОЛНИМОСТЬ. Поэтому за- задача 3-ВЫПОЛНИМОСТЬ jVP-полна. ? Воспользуемся /VP-полнотой задачи 3-ВЫПОЛНИМОСТЬ для доказательства следующей теоремы. Теорема 15.3. Задача КЛИКА NP-полна. Доказательство. Мы уже знаем, что КЛИКА € NP. Поэтому до- достаточно показать, что 3-ВЫПОЛНИМОСТЬ полиномиально пре- преобразуется в задачу КЛИКА. По произвольной булевой формуле
15.6. Другие NP-полные задачи: КЛИКА и ЗК 371 F с тремя литералами в каждом дизъюнкте мы построим граф G= =(F, E) и целое число k, такие, что в G имеется клика размера k тогда и только тогда, когда F выполнима. Введем сначала некоторые термины и обозначения. В частичном наборе значений истинности t значения истина и ложь приписыва- приписываются только некоторым переменным; остальным переменным сопо- сопоставляется значение истинности t(x)=d, особое значение, означаю- означающее неопределенность. В качестве множества переменных зафик- зафиксируем хь ... , хп. Частичный набор значений истинности будем представлять последовательностью нулей, единиц и символовd. Так t=dOldO (п = 5) — это частичный набор значений истинности, в ко- котором /(х2)=ложб, t(x3)=ucmuHa, 1(хъ)=ложьп остальные значения не определены. Два частичных набора значений истинности tut' называются совместимыми, если для всех переменных х, таких, что t(x)^d и t'(x)=?d, выполняется равенство t(x)=t'(x). Пусть Ci, ..., Ст — дизъюнкты формулы F. Множество вершин V будет содержат семь вершин для каждого дизъюнкта Cit а именно вершины ttj, /=1, ..., 7. Эти вершины можно рассматривать как частичные наборы значений истинности, в которых определенные значения приписаны только трем переменным, содержащимся в Ct. Из восьми таких частичных наборов значений истинности мы опускаем только один набор, в котором всем трем литералам дизъ- дизъюнкта С,- присваивается значение ложь. Это проиллюстрировано на рис. 15.4. Ребра графа G соединяют все пары совместимых наборов значений истинности. Положим k=m. Утверждается, что в построенном выше графе G имеется клика размера k тогда и только тогда, когда формула F выполнима. Дей- Действительно, предположим, что в G имеется клика размера k. Так как k—m и нет ребер, соединяющих две вершины в одном и том же столбце (два различных частичных набора значений истинности, определенных на одних и тех же переменных, заведомо должны быть несовместимы), то эта клика содержит по одной вершиье из каждого из т столбцов. Поскольку все эти частичные наборы значений истин- истинности попарно совместимы, то все они получаются из одного и того же полного набора значений истинности t (в примере на рис. 15.4 i=lOll). Этот набор Одолжен выполнять все дизъюнкты из F, так как для каждого дизъюнкта в соответствующем столбце единствен- единственный частичный набор значений истинности, обращающий этот дизъ- дизъюнкт в ложь, опущен. Следовательно, / выполняет формулу F. Для доказательства обратного утверждения предположим, что ¦ существует набор значений истинности i, выполняющий F; тогда ограничение этого набора на переменные, появляющиеся в произ- произвольном дизъюнкте, должно быть существующей вершиной в столб- столбце, соответствующем этому дизъюнкту. Так как эти частичные на- наборы являются ограничениями одного и того же набора значений истинности, они попарно совместимы и, следовательно, образуют : клику размера k.
372 Гл. IS. NP-полные задачи Таким образом, мы преобразовали задачу 3-ВЫП0ЛНИМ0СТЬ в задачу КЛИКА, и это построение можно выполнить за полиноми- полиномиальное время; следовательно, задача КЛИКА ЛФ-полна. ? Рис. 15.4.
IS.6. Другие NP-полные задачи: КЛИКА и ЗК В теории графов имеются две задачи, очень тесно связанные с задачей КЛИКА. ВЕРШИННОЕ ПОКРЫТИЕ Для данных графа G и целого числа k выяснить, существует ли такое множество С, содержащее k вершин, что любое ребро из G инцидентно по крайней мере одной вершине из С. НЕЗАВИСИМОЕ МНОЖЕСТВО Для данных графа G и целого числа k выяснить, существует ли такое множество /, содержащее k вершин, что никакие две вершины из / не связаны ребром. Лемма 15.4. Для графа G~(V, E) и подмножества S множества V следующие утверждения эквивалентны: а) 5 — клика в G; б) S — независимое множество в графе G, дополнении графа G\ в) V — S есть вершинное покрытие в G. Доказательство (см. рис. 15.5). Если S — клика в A, и> меж iv любыми двумя вершинами из 5 имеется ребро в G; поэтому в G меж- между любыми двумя вершинами из 5 нет ребра, т. е. 5 независимо в G. Далее, если 5 независимо в G, то у каждого ребра из G по крайней мере одна вершина должна лежать вне S; следовательно, V—5 есть вершинное покрытие в G. Наконец, если V—5 вершинное покрытие в G, то это означает, что у любого ребра, отсутствующего в G, не могут обе вершины содержаться в 5; следовательно, 5 — клика bG. ? Следствие. Задачи НЕЗАВИСИМОЕ МНОЖЕСТВО и ВЕРШИННОЕ ПОКРЫТИЕ NP-полны. Доказательство. Очевидно, в G имеется клика размера k тогда и только тогда, когда в G имеется независимое множество мощности k, и тогда и только тогда, когда в G имеется вершинное покрытие мощности |V|—k. Следовательно, все три задачи полиномиально преобразуются друг в друга. ? Докажем теперь, что одна интересная задача о расписании (вспом- (вспомните пример 13.2) yVP-полна. В этой задаче требуется построить расписание заданий с одинаковым, скажем единичным, временем выполнения на некотором числе идентичных процессоров при на- наличии некоторых ограничений предшествования, определяющих, что некоторые задания могут выполняться только тогда, когда уже выполнены некоторые другие задания.
374 Гл. 15. NP-полные задачи Рис. 15.5. а) Независимое множество в G. б) Вершинное покрытие в G. в) Клика в С. МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ Даны множество заданий $*= {Л, ..., /„}, ориентированный ациклический граф Р=(У, Л) (частичный порядок предшество- предшествования), целое число т (число машин) и целое число Т (директив- (директивный срок). Спрашивается, существует ли функция S (расписание), отображающая ^в {1, 2, ..., Т), такая, что выполняются следую- следующие условия: 1. |{/(: S(Ji)=}}Km для всех /<Г; 2. Если (/,, Jj)eA, то S(Ji)<S(Jj).
15.6. Другие ЦР-полпыв задачи: КЛИКА и ЗК 375 Пример 15.9. Рассмотрим индивидуальную задачу МНОГОПРО- МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ, представленную на рис. 15.6(а). (а) Время 12 3 4 3 Машина 1 Машина 2 Машина 3 'и 'и ш, h J9 Ш, h h и Ш F) Рис. 15.6. На рис. 15.6F) схематически представлено допустимое расписа- расписание s. a I Теорема 15.5. Задача МНОГОПРОЦЕССОРНОЕ РА СПИСА НИЕ ЦР-полна. I Доказательство. Эта задача лежит в NP, поскольку, если Йтцествует допустимое расписание, оно может быть предъявлено В довольно легко проверено на допустимость. Преобразуем за- f
376 Гл. 15. NP-полные задачи дачу КЛИКА в задачу МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ. Пусть даны произвольный граф G — (V, E) и целое число k. Построим множество работ ^, частичный порядок Р = (^, А) и целые числа т и Т, такие, что допустимое расписание для ^ существует тогда и только тогда, когда в G имеется клика раз- размера k. Будем считать, что в G нет изолированных вершин; это не приводит к потере общности, так как удаление изолирован- изолированных вершин не влияет на размер клик. Положим $ — V \J E\J \JB\JC\JD, где В, С и D—непустые непересекающиеся множе- множества B = \blt .... ft|S) \,C = {cu ..., с, с ,} и D = {du .... d|O|}, такие, что \В\, \С\ и \D\ удовлетворяют условиям 2) min (|fl|, \C\, |D|)=1. Нетрудно понять, что такие мощности существуют; т опреде- определяется из A); Т возьмем равным 3. Для построения P={'jf, А) вначале отнесем к А всевозможные дуги вида (bi, Cj) и (Cj, dh). Затем добавим к А дуги (v, e) для всех v (Е V, с g E, таких, что е инцидентно v. Этим завершается построение индивидуальной задачи МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ. Описанный переход проиллюстрирован на рис. 15.7(а) и (б). Докажем теперь, что допустимое расписание для ^ при данных A, m и Т существует тогда и только тогда, когда в G имеется клика размера k. Предположим, что существует допустимое расписание S. Так как Г=3 и все работы из В должны выполняться раньше работ из С, а работы из С раньше, чем работы из D, то, очевидно, S(bt)~ 1, 5(с,) = 2 и S(di)=3 для всех i. Кроме того, замечаем, что \ф\= = Т-пг; следовательно, все m машин должны выполнять некоторую работу в течение всех трех периодов времени. В последний период, кроме работ d, могут выполняться только m—|D|=|?|—B) ра- работ, соответствующих ребрам. Это следует из того, что если работа, соответствующая вершине, выполняется в третьем периоде, то ра- работы, соответствующие ребрам, инцидентным этой вершине, не мо- могут выполняться до окончания третьего периода; здесь мы исполь- используем тот факт, что в G нет изолированных вершин. Но тогда это расписание не было бы допустимым расписанием с Г=3, как предпо- предполагается. В результате заключаем, что остальные (г) работ, со- соответствующих ребрам, должны выполняться во втором периоде, а работы, соответствующие вершинам, выполняются в первом пе- периоде (пг—\B\-k из них) и во втором периоде. При этом k вершин, соответствующих работам, выполняемым в первом периоде, долж- должны включать в себя концы всех (г) ребер, соответствующих рабо- работам, выполняемым во втором периоде. Однако k вершин могут вклю- включать в себя все концы (*) ребер только в том случае, если эти k вершин образуют клику. Следовательно, из существования допу-
1S.6. Другие NP-полные задачи: КЛИКА и ЗК 37? №1-2.10-1,101-3 (а) »i v\ (б) Время 1 2 3 Машина 1 Машина 2 Машина 3 Машина 4 Машина 5 ь2 V7 vi cl ''2 е1 ^4 е4 (в) Рис. 15.7. а) Граф G. б) Отношение- предшест- предшествования Р. в) Допустимое расписание, соответ- соответствующее вершинному покрытию {vlt v2, v3}. стимого расписания 5 вытекает существование клики С= {v. S(v) — — 1} размера k. Обратно, если в G имеется клика С размера k, то допустимое рас писание 5 можно построить по следующим правилам: S(bt)=\, S(Ci)=2, 5(d,-)=3 для всех i; 5(^=1, если v g С, и S(v) = 2 в про-
3?8 Гл. 15. NP-полные задачи тивном случае; S([v, м1)=2, если v, и g С, и S([v, «])=3 в противном случае. Этот переход проиллюстрирован на рис. 15.7(в). Очевидно, что S — допустимое расписание. ? Обратимся теперь к доказательству AfP-полноты ЗК и связан- связанных с ней задач. Теорема 15.6. Задача ГАМИЛЬТОНОВ ЦИКЛ NP-полна. Доказательство. Мы знаем, что задача ГАМИЛЬТОНОВ ЦИКЛ входит в NP; покажем, что задача 3-ВЫПОЛНИМОСТЬ полино- полиномиально преобразуется в задачу ГАМИЛЬТОНОВ ЦИКЛ. Пусть и V • 1 и (а) и V и V (б) (в) у и' (г) Рис. 15.8. дана булева формула F, состоящая из т дизъюнктов Clt ..., Ст и со- содержащая п переменных хи ..., хп. Построим такой графС=(К, Е), что гамильтонов цикл в G имеется тогда и только тогда, когда F выполнима. Наша конструкция включает в себя построение ком-
15.6. Другие NP-полные задачи: КЛИКА и ЗК 379 понент специального назначения, что является общей методологией во многих интересных доказательствах AfP-полноты. Рассмотрим, например, граф А, представленный на рис. 15.8(а). Предположим, что А является подграфом некоторого другого графа G, такого, что 1) никакие другие реб- ребра (т. е. ребра, не пока- показанные на рис. 15.8(а)) не инцидентны никаким вер- вершинам из А, кроме и, и', v,V; 2) в G имеется гамиль- тонов цикл с. Тогда утверждается, что с проходит через А од- одним из способов, показан- показанных на рис. 15.8F) и (в). Для доказательства этого заметим вначале, что во- восемь «вертикальных» ребер из А всегда должны быть частью с, поскольку только так мы можем «охватить» четыре вершины zu z2, z3 и z4. Кроме того, легко проверить, что никакая другая комбинация «гори- «горизонтальных» ребер, отлич- отличная от показанных на рис. 15.8F) и (в), не может быть частью гамильтонова цик- ( ла. Суммируя, можно ска- сказать, что граф А ведет себя так, как если бы он состо- состоял всего лишь из пары ребер [и, и'] и [v, v'] графа G с дополнительным условием, что любой гамильтонов цикл в G должен проходить в точности по одному из них. Мы будем изображать это так, как показано на рис. 15.8(г). Граф В, приведенный на рис. 15.9(а), обладает аналогичным свой- свойством. Если В является подграфом некоторого графа G, причем ни- никакие другие ребра графа G не инцидентны никаким вершинам из В, отличным от «1 и «4, и в G имеется гамильтонов цикл с, то с не Рис. 15.9.
380 Гл. 15. NP-полные задачи может проходить по всем трем ребрам [ии ut], [«2, «si и [us, «J. Более того, любое собственное подмножество этих ребер может быть частью гамильтонова цикла в G согласно конфигурациям, приведенным на рис. 15.9(а) — (г) (и другим не приведенным здесь F = f.v, + -Г ный [ + .v2 Показанный гамильтонов цикл соответствует набору: ¦/ f.vx") = истина I (хг)*.ЮЖЬ 1(х3)=.ЫЖЬ Рис. 15.10. конфигурациям). Будем представлять этот подграф так, как пока- показано на рис. 15.9(д). Граф G=(V, E) будет состоять в основном из копий подграфов А и В. Длят дизъюнктов Сь ..., Ст вводятсят копий подграфа В, соединенных последовательно (построение графа G проиллюстри- проиллюстрировано на рис. 15.10). Кроме того, для каждой переменной xt име- имеются две вершины vt и wt и две копии ребра [vit wt], различающиеся соответственно как правая и левая копии ребра [vh ш,1. Имеются так- также ребра lwit vi+1] для t=l, ..., п—\ и [ии, vj, [umi, wj, где ии -бозначает j-ю копию Uj. Заметим, что до сих пор только параметры т и п из нашей фор- формулы использованы в построении графа G. Так как мы хотим, чтобы граф G отражал выполнимость формулы F, мы должны учесть точ- точный вид дизъюнктов из F. Поэтому мы соединим (с помощью Л-свя- зи) ребро [ии, щ<}+1] с левой копией ребра [vk, wk] в том случае, если /-й литерал в С; есть xk, и с правой копией ребра [vk, wh], если этот литерал есть xk (рис. 15.10). Этим завершается построение графа G. Докажем теперь, что построенный выше по формуле F граф G имеет гамильтонов цикл тогда и только тогда, когда формула F вы- выполнима. Для доказательства необходимости предположим, что
15.6. Другие NP-полные задачи: КЛИКА и ЗК 38j_ в G имеется гамильтонов цикл с. Нетрудно понять, что цикл с дол- должен иметь специальную структуру: он проходит по ребру [«и, nj, затем по всем вершинам и и w сверху вниз, выбирая одну из копий ребра lv{, Wj] для всех t=l, ..., п, затем проходит по ребру [ш„, umi] и, наконец, проходит по копиям подграфа В снизу вверх. В том случае, когда с выбирает левую копию ребра [vh wt], будем считать, чтох; принимает значение истина; в противном случае, когда выби- выбирается правая копия, будем считать, что xt принимает значение ложь. В результате получается корректный набор значений истин- истинности, поскольку цикл с должен проходить в точности по одной из двух копий. Ребра [и1}, «;,у-+1] для любого дизъюнкта Ct ведут себя аналогичным образом; цикл проходит по ним в том и только в том случае, если он не проходит по соответствующей копии ребра [vh, wkh другими словами, если соответствующий литерал имеет зна- значение ложь. Однако они являются частями некоторого графа В, и поэтому цикл с ие может проходить по всем трем этим ребрам, а это означает, что соответствующий дизъюнкт Ct выполняется при данном наборе значений истинности. Так как это справедливо для каждого дизъюнкта, то все дизъюнкты выполняются и формула F также выполняется. Для доказательства достаточности предположим, что формула F выполнима при некотором наборе значений истинности t. Тогда очевидно, что можно построить гамильтонов цикл в G, следуя про- просто правилам из предыдущего абзаца. Другими словами, нужно проходить по левой копии ребра [до,-, vt] тогда и только тогда, когда Xi в t имеет значение истина, и проходить по ребру [ии, ut_ J+1] тогда и только тогда, когда /-и литерал в С; принимает на наборе t зна- значение ложь. Это всегда можно будет сделать, так как не придется проходить по всем трем ребрам [ии, U;,J + 1] произвольного дизъюнк- дизъюнкта, поскольку t по предположению выполняет F. Таким образом, мы показали, что задача 3-ВЫПОЛНИМОСТЬ полиномиально преобразуется в задачу ГАМИЛЬТОНОВ ЦИКЛ. ? Теорема 15.6 имеет несколько интересных следствий. Следствие 1. Задача ГАМИЛЬТОНОВ ПУТЬ NP-полна. Доказательство. Задача ГАМИЛЬТОНОВ ПУТЬ, очевидно, входит в NP; преобразуем в нее задачу ГАМИЛЬТОНОВ ЦИКЛ. Возьмем произвольный граф G=(V, Е). Построим граф G'=(V", ?'), где V'=Vu{u, и', w} и E'=E\j{[u', и], [w, oe]}U{[". о]: [v0, v]?E} для некоторой фиксированной вершины v0 € V. Этот переход проиллюстрирован на рис. 15.11. Предположим, что в G' имеется гамильтонов путь р. Конце- Концевыми ребрами пути р должны быть ребра [«', и] и [i\>, w]. Предпо- Предположим теперь, что [«, v] ?p; тогда оставшаяся часть пути р являет- является путем, проходящим через каждую вершину множества V—{i\>, v} ровно по одному разу. Кроме того, так как [и, v] g ?", то lv0, v] ??
382 Гл. 15. NP-полные задачи Следовательно, этот путь вместе с ребром [v0, v] образуют гамиль- гамильтонов цикл в С Обратно, если в G имеется гамильтонов цикл с= = [v0, . . ., v, v0], то в G' можно найти гамильтонов путь p—lw, vQ, . . ., v, и, и']. Поэтому в G имеется гамильтонов цикл тогда и только тогда, когда в G' имеется гамильтонов путь; следствие доказано. ? Теперь легко понять, что ориентированные варианты задач из приведенных выше теоремы 15.6 и следствия 1 также yVP-полны. Для доказательства этого заметим, что в «задачах о путях», таких, как задачи о гамильтоновом цикле или гамильтоновом пути, граф можно рассматривать как частный случай орграфа, а именно как орграф, в котором (и, v) g А тогда и только тогда, когда (и, и) ? А. Поэтому задачи об ориентированном гамильтоновом цикле и ориен- ориентированном гамильтоновом пути являются обобщениями соответст- соответствующих неориентированных задач, и, следовательно, NP-полны. Кроме того, согласно результатам из гл. 12, можно отметить, что yVP-полной является следующая задача: по данным трем матроидам и целому числу k определить, существует ли множество мощности k, независимое одновременно во всех трех матроидах. Это опять следует из того, что задачу ОРИЕНТИРОВАННЫЙ ГАМИЛЬТО- ГАМИЛЬТОНОВ ПУТЬ можно сформулировать как задачу о пересечении гра- графического матроида и двух матроидов разбиения. В следующем параграфе будет показано, что задача о пересечении трех матрои- матроидов разбиения также yVP-полна. В заключение получим следующее следствие. Следствие 2. ЗК NP-полна. Доказательство. Покажем, что в действительности задача Г\- МИЛЬТОНОВА ЦЕПЬ является частным случаем ЗК. Для этой цели по данному графу G = (V, E) построим индивидуальную ЗК с |V| городами, положив dt} — l, если [vt, Vj]?E, и 2 в противном случае. Положим «бюджет» L равным |У|. Очевидно, что обход длины L существует тогда и только тогда, когда в G существует гамильтонов цикл. ?
15.7. Еще несколько МР-полных задач 383 15.7 Еще несколько NP-попных задач: сочетание, покрытие и разбиение. Рассмотрим обобщение задачи о двудольном паросочетании, обсуждавшейся в гл. 10. 3-МЕРНОЕ СОЧЕТАНИЕ Даны три множества U, V и W одинаковой мощности и подмно- подмножество Т множества UxVxW. Спрашивается, существует ли в Г такое подмножество М, что |уИ| = |?/|, и если (и, v, w) и (и', v', w') — различные тройки из М, то ифи', v=?v' и шфш . По-другому эту задачу можно сформулировать как задачу о пересечении трех матроидов разбиения. Можно также продолжить интерпретацию двудольного паросочетания с «юношами и девуш- девушками» и рассматривать Т как отношение совместимости между мно- множеством юношей, множеством девушек и множеством домов. Целью является создание гармоничных — и живущих отдельно — семей. Теорема 15.7. Задача ^-МЕРНОЕ СОЧЕТАНИЕ NP-полна. Доказательство. Очевидно, задача 3-МЕРНОЕ СОЧЕТАНИЕ входит в NP; кроме того, в нее следующим образом можно полино- полиномиально преобразовать задачу ВЫПОЛНИМОСТЬ. Пусть F — бу- булева формула, содержащая литералы хи ..., хп и состоящая из дизъюнктов Сь . . ., Ст. Построим для задачи 3-МЕРНОЕ СОЧЕ- СОЧЕТАНИЕ индивидуальную задачу (U, V, W, Т), в которой требуемое сочетание М существует тогда и только тогда, когда формула F выполнима. U содержит по одной копии каждого литерала для каждого дизъюнкта: V = {x{, ~x{: t«=l, .... п; / = 1 ш). V содержит вершины трех типов: V={a[: t-1, ..., n, /=1, .... m}U{vf: /-1, .... m\ U U{c{: /=1, ..., m, 1 = 1, .... n—\\. Структура множества W полностью аналогична структуре мно- множества V: W = {b'r »=¦! л, /=1, •.., m}U{w/. /=1, ..., m}U U{d: /=1, ..., m, i=l, ..., п—Ц. Т является объединением троек следующих трех типов (построе- (построение проиллюстрировано на рис. 15.12). 1. Тройки (а\, Ь\, х{), i=l п, /==1, ..., т, и (а{+\ Ц, х'д, /=1, ..., п, /=1 т (здесь аГ'^а}). Вер-
384 Гл. 15. NP-полные задачи шины типа а и & не входят ни в какие другие тройки. Поэтому для каждого i эти тройки будут требовать, чтобы в М с а и b объединялись либо все х[ (это означает, что х{ имеет значение истина) или все х\(хг имеет значение ложь). 2. Второй тип троек в Т образует множество \(Vj, Wp KJ): j—l, .. ¦, m, A,—литерал дизъюнкта Cj. Вершины типа о и ш входят только в эти тройки. Так как, согласно принятому выше Вершины типа с и 4 не показаны • W О V Т\ показанные треугольники ? U Показанное сочетание соответствует набору: ((¦*[) = и™""" t(x2) ='1ожь Рис. 15.12. соглашению, к этому моменту свободны только литералы со зна- значением истина, то вершины v и w должны объединяться с ли- литералами соответствующих дизъюнктов, имеющими значение истина; следовательно, все дизъюнкты должны выполняться при данном наборе значений истинности.
15.7. Еще несколько NP-полных задач 385 3. Назначение вершин типа с и d, так же как троек последнего типа (троек «сбора мусора» в элегантной терминологии из [GJ]),— «подобрать» оставшиеся копии различных литералов. Эти тройки образуют множество {(с{, d\, №): i=\, . . ., п, /=1, ..., т, k = = 1, . . ., т, К — литерал}. Из приведенных выше рассуждений следует, что в том случае, когда существует совершенное сочетание М, формула F выпол- выполнима. Обратно, если формула F выполнима на наборе значений ис- истинности /, то можно объединить вершины а и b с литералами в соответствии с t; затем можно объединить каждую из вершин v и W с одним истинным литералом из соответствующего дизъюнкта. Так как по предположению / выполняет F, такой литерал всегда найдется. Наконец, остальные литералы подбираются вершинами end. О Следующий вариант задачи 3-МЕРНОЕ СОЧЕТАНИЕ исклю- исключительно полезен как отправная точка для доказательства многих результатов об yVP-полноте. ТОЧНОЕ ПОКРЫТИЕ 3-МНОЖЕСТВАМИ Дано семейство/г= {Si, . . ., S,,}, состоящее из п трехэлемент- трехэлементных подмножеств множества S = {«i,. . ., и3т). Спрашивается, су- существует ли в F подсемейство, содержащее т подмножеств и по- покрывающее S. Следствие. Задача ТОЧНОЕ ПОКРЫТИЕ 3-МНОЖЕСТВАМИ NP-полна. Доказательство. Достаточно заметить, что задача 3-МЕРНОЕ СОЧЕТАНИЕ является частным случаем задачи ТОЧНОЕ ПО- ПОКРЫТИЕ 3-МНОЖЕСТВАМИ с S = Ul)Vl}W и /7 = {{а, Ь, с}: (а, Ь, с)?Т). ? Под задачей о рюкзаке обычно понимается следующая задача це- целочисленного линейного программирования с матрицей, имеющей одну строку: п максимизировать 2 c;xj п при условии ^iWjXj^K, Xj—целые (или 0-1). / = i Это название напоминает, что такая задача максимизации воз- возникает, когда мы хотим заполнить рюкзак вместимости К предме- предметами, имеющими наибольшую возможную пользу. Мы будем рас- рассматривать здесь вариант распознавания для частного случая, в котором Cj=Wj, /=1, . . ., п. Возможны два варианта. 13 № 3032
386 Гл. 15. NP-полные задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК Даны целые числа Cj, j — \, ¦ .., п, и К. Спрашивается, су- существуют ли такие целые числа х,- ^ 0, / — 1, ..., п, что 0-1-РЮКЗАК Даны целые числа су, /=1, ..., п, и К. Спрашивается, су- существует ли такое подмножество S множества {1, ..., п\, что 2 ^ Теорема 15.8. Задача ОЛ-РЮКЗАК NP-полна. Доказательство. Очевидно, эта задача входит в NP; кроме того, можно показать, что задача ТОЧНОЕ ПОКРЫТИЕ 3-МНОЖЕСТ- ВАМИ полиномиально преобразуется в задачу 0-1-РЮКЗАК. По данному семейству F, состоящему из п трехэлементных мно- множеств, мы построим такие целые числа си . . ., с„ и К, что среди сь . . ., с„ можно выбрать подмножество с суммой К тогда и только тогда, когда в F существует семейство, образующее точное покры- покрытие основного множества S = {ult . . ., ият). Можно представлять себе все множества из F как двоичные век- векторы длины Зт; например, {ии и5, «„} и {н2, и4, и„} принимают соответственно вид 100011 и 010101. Будем интерпретировать эти двоичные векторы как целые, числа, записанные в системе с основа- основанием (/i+l). Другими словами, множеству S) соответствует целое число С) = у , (л + 1)'. Кроме того, пусть К — целое число, соответствующее 11. . . 1: Зт Зт- 1 К = 2i (nJr 1У- f = 0 Утверждается, что в F существует подсемейство, точно покрываю- покрывающее {«!, . . .,изт) в том и только в том случае, если среди cj су- существует подмножество с суммой К Докажем достаточность. Предположим, что существует такое множество 5s{l, 2, . . ., п), что 2/б^~^ Вычисляя эту сум- сумму в системе счисления с основанием п+1, замечаем, что ь слагае- слагаемых встречаются только разрнды 0 и 1 и, кроме того, число слагае- слагаемых меньше, чем основание « + 1. Следовательно, при 1аком сло- сложении нет «переносов». Поэтому если ^j5if-/—K, то это означает, что в каждой из Зт позиций существует ровно одна единица или, другими словами, что подсемейство C={Sf.j^S) точно покры- покрывает {«1, «2, . . ., U3m). Докажем теперь необходимость. Если С — точное покрытие
15.7. Еще несколько NP-полных задач 387 множества {иь. . ., и3т), то сразу же получаем, что Xs.ec'3/^ =/(¦. Этим завершается доказательство. Q Можно показать также, что задача 0-1-РЮКЗАК ЛФ-полна даже тогда, когда К выбирается равным ~2^=1с}/2. Эта задача более из- известна как РАЗБИЕНИЕ Для данных целых чисел й, . . ., с„ выяснить, существует ли такое подмножество S^{1, 2, . . ., п), что 2/eic'2 Следствие 1. Задача РАЗБИЕНИЕ NP-полна. Доказательство. Преобразуем полиномиально задачу 0-1-РЮК- ЗАК в задачу РАЗБИЕНИЕ. Пусть дана произвольная инди- индивидуальная задача с,, ..., сп, К для задачи 0-1-РЮКЗАК. Построим следующую индивидуальную задачу РАЗБИЕНИЕ: с„ .... о„, с„+1 = 2М, ся + , = ЗМ —2/С, где М^^с^К. Утверждается, что в множестве {1, 2, . ., п) существует подмножество S, такое, что ^.е s Су = ЛГ, тогда и только тогда, когда в множестве {1, 2, ..., п-\-2\ существует подмножество 5', такое, что 2 ;6S' с, = Докажем достаточность. В любом допустимом разбиении S' множества \сг, ..., cn+i\ числа сп + 1 н_ cn + i должны быть раз- разделены, так как их сумма 5М — 2К >^]/-iCy. Поэтому для S = = S' — {n+l, n+2\ имеем ies US 1фп + 1. п+2 Непосредственные вычисления показывают, что ^asOj^K- Докажем теперь необходимость. Предположим, что ^] /C для некоторого Sgjl, 2, ..., п\. Тогда Следствие 2. Задача ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК NP-полна. Доказательство. Задача ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК вхо- входит в NP, так как она является частным случаем задачи ЦЛП. Для доказательства Л'Я-полноты полиномиально преобразуем за- задачу 0-1-РЮКЗАК р. задачу ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК. Пусть дана индивидуальная задача {си . . ., сп, К) для задачи 0-1-РЮК- 0-1-РЮКЗАК. Естественно, можно считать, что 1<с><К для /=1 п 13*
388 Гл. 15. NP-полные задачи и /00. Построим индивидуальную задачу {di, . . . ,d2n, L) для за- задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК, такую, что целые числа (/„. . . • • •. у^п^О, для которых ^lidji/j—L, существуют тогда и только тогда, когда существуют хи . . . ,х„ ? {0, 1}, такие, что 2/=icja7~ = К- Пусть М=2п(п+1) -К. Числа dj определим следующим обра- образом: ,... , ... \-Cj, если j^n '"~\Mn+1-\- M.i~" в противном случае. Кроме того, положим L=tt-M"+1+2'/=1M/+K'. Этим завершается построение индивидуальной задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК по данной индивидуальной задаче 0-1-РЮКЗАК- Предположим, что построенная индивидуальная задача ЦЕЛО- ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК имеет решение {уи ¦ • •. Угп}\ другими словами, 21 dfy.- — L или 2 У/+ 2 Ml (y,+ у/+п) + 2 с,у, = / = 1 / = 1 i = 1 Каждое у] должно быть меньше, чем L _ , , М 2 М; + /С. A5.1) / = 1 Поэтому In п 2 У/, У/ + У/+п> 2 Следовательно, в равенстве A5.1) участвуют положительные ли- линейные комбинации степеней большого целого числа М, все коэффи- коэффициенты которых меньше, чем М. Отсюда сразу же получаем, что коэффициенты, соответствующие одинаковым степеням М, должны быть равными. Поэтому 2Л п 2 «// = «, «/у+У/+п=1 для всех / и _2с/у/ = ^. Первые два равенства показывают, что для всех / ровно одно из чисел yj, yj+n должно быть равно 1, а другое должно быть равно 0. Поэтому третье равенство показывает, что {уг, . ¦ ., уп) — решение исходной 0-1-задачи. Обратно, по решению {хи . . ., хп) индивидуальной задачи 0-1-РЮКЗАК можно построить решение {уи . . ., у2п} для задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК, положив у,=хи /=1, . . ., п, и Ui~\—Х]-п, /=i+l, . . ., 2п. Поэтому построенная индивидуаль-
Задачи _, 389 ная задача ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК имеет решение тогда и только тогда, когда имеет решение исходная индивидуальная за- задача 0-1-РЮКЗАК. Следовательно, задача ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК NP-полт. Q Задачи 1. Сформулируйте задачу о максимальном паросочетании для взвешенных графов как задачу оптимизации, описав соответствующие алгоритмы <Лр и Jlc. 2. Докажите, что если бы у нас был полиномиальный алгоритм для вычис- вычисления длины кратчайшего обхода в ЗК, то у нас был бы полиномиальный алгоритм для нахождения кратчайшего обхода в ЗК. 3. Рассмотрим следующую задачу. РАСКРАСКА ГРАФА Для данных графа G=(V, E) и целого числа k выяснить, существует ли отоб- отображение х: У =>{!. 2, . . . , k), такое, что из [v, и]?Ё следует %(v)=?%(u). Покажите, что задача РАСКРАСКА ГРАФА входит в NP, дав детальное опи- описание удостоверения и алгоритма проверки удостоверения. 4. Приведите прямое доказательство того, что задача ЦЛП AfP-полна, пока- показав, что любая задача из NP полиномиально преобразуется в задачу ЦЛП. 5. Покажите, что задача ВЫПОЛНИМОСТЬ jVP-полна даже в том случае, если каждая переменная может появляться только один раз с отрицанием и один или два раза без отрицания (решение приведено в следующей главе). 6. Пусть F — формула, состоящая из дизъюнктов, содержащих по два ли- литерала. Построим по F ориентированный графО^)=(Х, А) следующим образом: х—это множество переменных, появляющихся в F, и их отрицаний. Дуга (A,j, А,2)?/1 тогда и только тогда, когда дизъюнкт (А,г-ЬА,2) входит в F. а) Покажите, что если х и х для некоторой переменной х входят в одну и ту же сильно связную компоненту (см. задачи 4 и 5 из гл. 9) орграфа D (F), то форму- формула F невыполнима. б*) Докажите утверждение, обратное утверждению а). в) Приведите алгоритм со сложностью О (я) для решения задачи ВЫПОЛ- ВЫПОЛНИМОСТЬ, ограниченной на формулы с двухбуквенными дизъюнктами. 7. Приведите явную конструкцию алгоритма проверки удостоверения (в со- соответствии с определением из § 15.5), принимающего строки вида 00. . .0 $ 11. . .1 для 8. Приведите последовательность команд в нашей модели алгоритмов про- проверки удостоверения для моделирования каждой из следующих более сложных команд. а) /: if a then (а'; о'; /') else (а"; о"; /"). б) /: do следующую команду while обозреваемый символ отличен от $. в) /: go to /'. 9. Покажите, как предотвратить возможность выхода головки в алгоритме проверки удостоверения за границы, выполняя подходящий первый сдвиг, а также предполагая, что с(х) имеет специальный вид. 10*. Покажите, что задача РАСКРАСКА ГРАФА (задача 3) NP- полна. 11. Покажите, что следующие шесть задач NP-полны (сравните (а) и (б) с задачей 12 из гл. 12). Даны граф G=(V, ?), множество L<=,V и целое число k. Спрашивается, су- существует ли в G такое остовное дерево Т, что а) множество листьев дерева Т совпадает с L; б) все листья дерева Т входят в L; в) в Т имеется k листьев; г) в Т имеется не более k листьев; д*) в Т имеется не менее k листьев; е) степени всех вершин в Т не превосходят k.
390 Гл. 15. NP-полные задачи (Указание: во всех случаях, кроме (д), полезно рассмотреть задачу ГАМИЛЬ- ТОНОВ ПУТЬ.) 12*. Покажите, что следующие задачи Л'Р-полны. а) МНОЖЕСТВО ВЕРШИН, РАЗРЕЗАЮЩИХ КОНТУРЫ Даны орграф D=(V, А) и целое число k. Спрашивается, существует ли в V такое подмножество F, что |/*1<? и орграф, получающийся из D выбрасыванием вершин, входящих в F, ациклический. б) МНОЖЕСТВО ДУГ, РАЗРЕЗАЮЩИХ КОНТУРЫ Это такая же задача, как (а), за исключением того, что теперь F — множест- множество дуг. (Указание: в качестве исходной используйте задачу ВЕРШИННОЕ ПО- ПОКРЫТИЕ.) 13*. Покажите, что следующая задача Л'Р-полка. МАКСИМАЛЬНЫЙ РАЗРЕЗ Даны граф G=(V, Е) и целое число k. Спрашивается, существует ли такое разбиение множества V на подмножества Уг и V-i, что в Е имеется не менее k ребер, соединяющих Vj и V2. 14. Покажите, что следующая задача Л'Р-полна. СМЕШАННАЯ ЗАДАЧА О КИТАЙСКОМ ПОЧТАЛЬОНЕ Даны смешанный граф M — (V, Е, А) (где Е — множество ребер и Л — мно- множество дуг иа У), целое число L и веса w: Е[)А ->- Z+. Спрашивается, существует ли в М маршрут, включающий в себя каждое ребро и каждую дугу, общий вес которого не превосходит L. Сравните эту задачу с задачами 8 и 9 из гл. 11. 15. Покажите, ч"то следующая задача /VP-полна. МНОГОПРОДУКТОВЫЙ ПОТОК Даны орграф D-—(V, А) и Ik вершин sb s2, . . . , s^, tt, tit . , . , tk из V. Спра- Спрашивается, существуют ли непересекающиеся по вершинам ориентированные пути ИЗ St В tj, ИЗ S2 В /2, . . . , ИЗ Sfc В tig. 16*. а) Покажите, что следующий упрощенный вариант задачи квадратич- квадратичного программирования не проще, чем задача ВЫПОЛНИМОСТЬ. КВАДРАТИЧНОЕ ПРОГРАММИРОВАНИЕ Даны целочисленные матрицы А и Q и целочисленный вектор Ь. Требуется найти такой действительный вектор х, что б) Приведите полиномиальный алгоритм для задачи из п. (а) в частном случае, когда матрица Q положительно определена. (Указание: воспользуйтесь алгоритмом эллипсоидов из §8.7.) 17. Интересным частным случаем ЗК является геометрический (или евкли- евклидов) случай, в котором даны п точек на плоскости с целочисленными координатами и требуется найти кратчайший обход при условии, что d,y— евклидово расстоя- расстояние \r(Xi—x^f+(yi—y/)\ а) Пусть этот случай ЗК сформулирован как задача распознавания, называе- называемая ЕЗК- Объясните, почему непросто доказать, что ЕЗК?ЛФ. (Указание-, вычис- вычислите длину периметра приведенного ниже треугольника с пятью, а затем семью значащими разрядами.) (-.0.5, @,0)
Комментарии и ссылки 391 б*) Положим djj=\__\f(xi—Х/J+(</,—У/J J. Покажите, что в этом случав задача ЕЗК ЛФ-полна. 18. Рассмотрим задачу нахождения кратчайшего пути из s в t во взвешенном орграфе при условии, что допускаются отрицательные веса (см. гл. 6). а) Покажите, что для этой задачи имеется полиномиальный алгоритм, если известно, что в графе не существует циклов с отрицательным суммарным весом. б) Покажите, что без этого ограничения задача является jVP-полной. (Ука- (Указание: используйте ЗК.) 19. Следующая заметка была опубликована в «Нью-Йорк тайме» 27 ноября 1979 г Для каждого утверждения определите, если возможно, является ли оно а) истинным, б) ложным, в) вводящим в заблуждение, г) эквивалентным хорошо известной гипотезе, решение которой, возможно, не было известно г-ну Брауну. Об одном подходе к трудным задачам Хотя практическая применимость нового метода Леонида Хачияна вызывает споры среди математиков, все сходятся во мнении, что это важное теоретическое достижение. Многие полагают, что метод Хачияна позволяет решать на ЭВМ 1ак назы- называемые задачи «коммивояжера». Такие задачи относятся к разряду наиболее труднорешаемых задач математики. В них, в частности, требуется найти крат- кратчайший маршрут, при котором коммивояжер мог бы посетить некоторое число городов, не посещая дважды один и тот же город. Каждый раз, когда к маршруту добавляется новый город, задача значительно усложняется. Используя систему линейного программирования, нужно нийти из большого числа уравнений очень большое число переменных. В некоторый момент система так усложняется, что вычислительной машине для нахож ;смия решения потребовались бы миллиарды лет. В прошлом задачи «коммивояжера», в том числе и задача эффективного со- составления расписания для экипажей самолетов или штата медицинских сестер, решались на ЭВМ с использованием симплекс-метода, предложенного Джорджем Б. Данцигом из Станфордского университета. Как правило, симплекс-метод работает хорошо, однако он не гарантирует, что после определенного числа шагов вычислительной машины будет найден ответ. Подход Хачияна позволяет с самого начала сказать, будет ли задача разре- разрешена за данное число шагов. Двое станфордских математиков уже применили метод Хачияна в программе для карманного калькулятора. При помощи этой программы удалось решить задачи, которые невозможно было бы решить аналогичной программой с симплекс- методом. Подход Хачияна, если его сформулировать в математических терминах, ис- использует уравнения для порождения воображаемых эллипсоидов, содержащих ответ внутри себя, тогда как в симплекс-методе ответ представляется пересечения- пересечениями граней многогранников. Чем меньше становятся эллипсоиды, тем более точный ответ имеется в нашем распоряжении. Малькольм У. Браун © 1979 by the New York Times Company. Перепечатано о разрешения. Комментарии и ссылки Следующие работы — одни из самых раиних работ, связанных с классами Р, NP и близкими понятиями. [Со] Cobham A. The Intrinsic Computational Difficulty, oi Functions, pp. 24—30 in Proc. 1964 Int. Congress for Logic Methodology and Phil, of Science, ed. Y. Bar-Hillel. Amsterdam: North Holland, 1964 lEdl] Edmonds J. Paths, Trees and Flowers, Canad. J. Math. 17 A965), 449-467. [Ed2] Edmonds J. Minimum Partition of a Matroid in Independent Subsets, J. Res. NBS, 69B A975), 67—72.
392 Гл. 15. NP-полные задачи В последних двух статьях Эдмондс неформально определяет классы Р и NP и высказывает гипотезу, что РфЫР и, более того, что ЗК,?NP—Р. Метод сведения, (ез временных оценок, хорошо известен в теории вычислений с 30-х годов нашего столетня. Полиномиальные относительно времени сведения использовались также в комбинаторной оптимизации, но только для демонст- демонстрации того, что некоторая задача проста, а не сложна. Одно из первых исполь- использований сведения в другом направлении имеется в работе [DBR] Dant/ig G. В., Blattnei W. О., Rao M. R. All Shortest Routes from a Fixed Origin in a Graph, pp. 85—90 in Theory of Graphs: An International Sympo- Symposium. New York: Gordon & Breach, Inc., 1967. Теория WP-полноты восходит к статье [Cook] Cook S. A. The Complexity of Theorem Proving Procedures, Proc. 3rd ACM Symp. on the Theory of Computing, ACM A971), 151—158. [Имеется перепад: Кук С. А. Сложность процедур вывода теорем.— В сб.: Кибернетический сборник, новая серия, вып. 12.— М.: Мир, 1975, с. 5—15], где были доказаны теоремы 15.1 и 15.2. Однако богатство следствий из работы Кука и ее близкая связь с комбинаторной оптимизацией стали очевидными после классической работы Карпа: IKal] Кагр R. M. Redticibility among Combinatorial Problems, pp. 85—103 in Complexity of Computer Computations, ed R. E. Miller and J. W. Thatcher. New York: Plejium Press, 1972. [Имеется перевод: Карп Р. М. Сводимость комбинаторных проблем.— В сб.: Кибернетический сборник, новая серия, вып. 12.— М.: Мир, 1975, с. 16—38.] Среди многих других результатов, связанных с WP-полнотой, в этой работе можно найти оригинальные доказательства теорем 15.3, 15.4, 15.6, 15.7 и 15 8 и решения задач 10, 12 и 13. Превосходным руководством но А'Р-полпоте может служить статья [Ка2] Кагр R. M. On the Complexity of Combinatorial Problems, Networks, 5 A975), 45—68. Энциклопедией поэтому вопросу является замечательная книга Гэри и Джонсона: [GJj Garey M. R., Johnson D. S. Computers and Intractability: A Guide to the Theory of /VP-completeness. San Francisco: W. H. Freeman & Company, Publishers, 1979. [Имеется перевод: Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи.— М.: Мир, 1982.] Эта книга дает возможность оценить богатство и разнообразие класса AfP-полных задач. Теорема 15.5 была впервые доказана в статье [Ul] Ullman J. D. WP-complete Scheduling Problems, JCSS, 10 A975), 384—393. Наше доказательство следует работе [LR] Lenstra J. K-, Rinooy Kan A. H. G. Complexity of Scheduling under Precedence constraints, OR, 26 A978), 22—35. Следствие 2 из теоремы 15.8 взято из работы [Lu] Lueker G. S. Two WP-complete Problems in Nonnegative Integet Programming, TR 178, Princeton University, 1975. Задача 11 (e) принадлежит Гэри и Джонсону. Задача 14 взята из [Pal] PapadimitriouC. H. On the Complexity of Edge Traversing, J. ACM 23 A976), 544—554. Решение задачи 15, принадлежащей Кнуту, приведено в [Ка2]. Задача 17 взята из
Комментарии и ссылки 393 [Ра2] Papadimitriou С. Н. The Euclidean TSP is NP-compiete, Theor. Comp Sci., 4 A977), 237—244. Задача 18F) взята из [DBR]. Уверенность читателя в общности нашей модели алгоритмов проверки удостоверения может возрасти после рассмотрения задач 7—9. Наша модель — это вариант машины Тьюринга; см. [Tu] Turing A. M. On Computable Numbers with an Application to the Entschei- dungsproblem, Proc. London Math. Soc. Ser. 2, 47 A936), 730—765. Эквивалентность этой и других моделей обсуждается в книге [AHUI Aho А. V., Hopcroft J. E., Ullman J. U The Design and Analysis of Com- Computer Algorithms, Chapter 1. Reading, Mass: Addison-Webley Publishing Co, Inc., 1974. [Имеется перевод: Ахо А., Хопкрофт Дж., Ульман Дж. Построе- Построение и анализ вычислительных алгоритмов.— М.: Мир, 1979.]
16 Еще об NP-полноте В этой главе мы продолжим обсуждение AfP-полных задач, об- обращаясь к некоторым важным аспектам, окружающим понятие AfP-полноты. 16.1 Класс co-NP Вспомним следующую известную нам задачу типа да-нет: ГАМИЛЬТОНОВ ЦИКЛ Дан граф G=(V, Е). Спрашивается, является ли граф G гамиль- тоновым, т. е. имеется ли в G гамильтонов цикл. Легко показать, что эта задача входит в NP, поскольку каждая ее индивидуальная задача с ответом да имеет короткое удостовере- удостоверение — а именно сам цикл. Рассмотрим, однако, следующий вари- вариант типа нет-да той же задачи: ДОПОЛНЕНИЕ ГАМИЛЬТОНОВА ЦИКЛА Дан граф G=(V, Е). Выяснить, является ли граф G негамильто- новым. Совсем не очевидно, что эта задача принадлежит NP. На са- самом деле мы скоро увидим, что, вероятнее всего, она не принадле- принадлежит NPI Единственный известный на сегодняшний день общий ме- метод для доказательства того, что некоторый граф не является га- мильтоновым, состоит в систематическом выписывании всех цик- циклов графа G и проверке того, что ни один из них не содержит всех вершин. Конечно, этот список является удостоверением, но, к со- сожалению, он имеет экспоненциальную длину. В общем случае задача А является дополнением задачи А, если множество строк, составленных из символов алфавита 2, кодирую- кодирующих индивидуальные задачи А с ответом да, в точности совпадает с множеством строк, не являющихся кодами индивидуальных за- задач А с ответом да. Таким образом, строго говоря, задача ДОПОЛНЕНИЕ ГАМИЛЬТОНОВА ЦИКЛА не является допол- дополнением задачи ГАМИЛЬТОНОВ ЦИКЛ, так как существуют
16.1. Класс co-NP 395 строки, не являющиеся кодами индивидуальных задач с ответом да ни для Л, ни для А: это строки, которые вообще не кодируют ни- никакого графа, гамильтонова или не гамильтонова. Однако эти ос- остальные индивидуальные задачи не влияют на сложность всей за- задачи, так как их всегда можно распознать с помощью простой «син- «синтаксической проверки» и быстро избавиться от них. Поэтому не практике допустимо игнорировать этот момент и рассматривать указанные выше две задачи как дополнения друг друга. Другой пример дает следующая задача, являющаяся дополнением ЗК: ДОПОЛНЕНИЕ ЗК Даны целое число п, целочисленная (яхп)-матрица [d,-y-] и целое число L. Спрашивается, верно ли, что 2"=] dyt (/) > L для всех циклических перестановок (обходов) т. Опять совсем не ясно, как для индивидуальной задачи ДОПОЛ- ДОПОЛНЕНИЕ ЗК с ответом да построить удостоверение короче, чем пред- представление всех обходов вместе с соответствующими стоимостями, ко- которые все больше L. Рассмотрим, однако, следующее дополнение задачи, про которую известно, что она входит в Р: ДОПОЛНЕНИЕ СВЯЗНОСТИ Является дп данный граф G несвязным? Алгоритм ПОИСК, который решает задачу о связности за по- полиномиальное время, можно, очевидно, использовать для решения ее дополнения. Таким образом, задача ДОПОЛНЕНИЕ СВЯЗНО- СВЯЗНОСТИ также входит в Р. Очень легко доказать общее утверждение на этот счет. Теорема 16.1. Если А —задача из Р, то дополнение Л задачи А также входит в Р. Доказательство. Так как А принадлежит Р, то существует по- полиномиальный алгоритм, который решает А. Полиномиальный ал- алгоритм для решения дополнения задачи А — это в точности тот же алгоритм, только с заменой да на нет и наоборот. ? Такие же рассуждения нельзя применить для доказательства того, что дополнение произвольной задачи из NP также принад- принадлежит NP. Это связано с наличием определенной асимметрии в самом определении класса NP: если х — индивидуальная задача с ответом да для задачи A g NP, то для нее имеется подтверждаю- подтверждающее это удостоверение; однако, если это индивидуальная задача с ответом нет, она может не иметь короткого удостоверения для доказательства этого факта. На самом деле, как показывают наши примеры, в NP имеется по крайней мере две задачи, дополнения которых, вполне вероятно, могут не принадлежать NP. Это приво- приводит к следующему определению.
396 /X- IS- Еще об Np-полноте Определение 16.1. Класс со-NP — это класс всех задач, являю- являющихся дополнениями задач из NP. ? Таким образом, утверждение о том, что дополнения всех тадач из NP также принадлежат NP эквивалентно утверждению о том, что NP = co-NP. Однако имеются причины подозревать, что ИРфсо-ЫР. На этот счет имеются косвенные соображения, такие же, как насчет гипотезы РфМР: многие способные исследователи безуспешно потратили немало времени на построение коротких доказательств для свойства негамильтоновости, а также для мно- многих других дополнений коротко подтверждаемых свойств. Тем не менее доказательства этой гипотезы пока нет, так же как и гипоте- гипотезы о том, что РФЫР. Однако можно показать (так же, как и для РФЫР), что если эта гипотеза верна, то о ее справедливости будут свидетельствовать /VP-полные задачи. Теорема 16.2. Если дополнение некоторой NP-полной задачи принадлежит NP, то NP~co-NP. Доказательство. Предположим, что дополнение С некоторой iVP-полной задачи С принадлежит NP; покажем, что тогда допол- дополнение А любой задачи А из NP также принадлежит NP. Так как задача С /VP-полна, то А полиномиально преобразует- преобразуется в нее; заметим, что это преобразование является также полино- полиномиальным преобразованием задачи А в задачу С. Поэтому можно представить короткое удостоверение для любой индивидуальной за- задачи А с ответом да: оно состоит из а) списка операций указанного полиномиального преобразования, дающего в результате индиви- индивидуальную задачу С с ответом да, и б) удостоверения для этой инди- индивидуальной задачи С — такое удостоверение существует, так как С принадлежит NP. Полное удостоверение полиномиально по дли- длине, так как по предположению рассматриваемое преобразование полиномиально. Получаем, что А принадлежит NP. Так как в качестве А была взята произвольная задача из NP. отсюда следует, что NP=co-NP. ? Таким образом, среди дополнений всех задач из NP дополне- дополнения Л/Р-полных задач с наименьшей вероятностью принадлежат NP. Обратно, если дополнение некоторой задачи из NP также при- принадлежит NP, то это свидетельство в пользу того, что задача не является Л/Р-полной. Вспомним, например, следующую задачу рас- распознавания, эквивалентную, как показано в §8.7, задаче линей- линейного программирования: ЛИНЕЙНЫЕ НЕРАВЕНСТВА (ЛН) Даны целочисленная (/пхя)-матрица А и целочисленный т- вектор Ь. Спрашивается, существует ли такой рациональный п- вектор х, что 4й
16.1. Класс co-NP 397 Как выглядит дополнение задачи ЛН? Теория двойственности утверждает, что неравенства Ах^Ь недопустимы тогда и только тогда, когда двойственная задача min y'b, у'А = 0, A6.1) неограниченна (она допустима, так как у=0 — решение). Мы при- применили здесь двойственную конструкцию к задаче max Однако задача A6.1) неограниченна тогда и только тогда, когда она имеет решение с произвольной отрицательной стоимостью. По- Рис. 16.1. Уточненная предполагаемая картина класса NP. этому вариант нет-да индивидуальной задачи ЛН Лх^Ь сам яв- является индивидуальной задачей ЛН, а именно задачей с неравен- неравенствами Получаем, что задача ЛН является своим собственным дополнением и принадлежит, таким образом, обоим классам NP и co-NP. Естественно, этот результат не производит большого впечатле- впечатления, так как мы знаем, что задача ЛН принадлежит Р (см. гл. 8). Однако в годы неопределенности, предшествовавшие появлению алгоритма эллипсоидов, этот факт — ввиду георемы 16.2 — был
398 Гл. 16. Еще об NP-полноте единственным теоретическим свидетельством в пользу того, что задача ЛП не является труднорешаемой. Наши выводы и гипотезы, связанные с классом co-NP, позво- позволяют построить более детальную диаграмму для NP, чем диаграмма, приведенная на рис. 15.2 (см. рис. 16.1). 16.2 Псевдополиномиальные алгоритмы и «сильная» jVP-полнота Напомним задачу ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК, которая, как было доказано в гл. 15, NP-полна. Пусть си- ¦ •, сп, К — соот- соответствующая индивидуальная задача; спрашивается, естественно, Рис. 16.2. существую-! ли такие целые числа хи х-2,. . ., хп^0, что 2/ —К. Для произвольной индивидуальной задачи можно построить следующий орграф G(cu. . ., сп; K) = (V, A): V = {0, 1, 2, ..., К\, А = {(т, k): 0 ^ т < k $С К и k—m = Cj для некоторого j^n}. Таким образом, граф G(cit. . ., с„; К) имеет /С+1 вершин и О(пК) дуг. В качестве примера на рис. 16.2 приведен граф GC, 7; 13). Лемма 16.1. В графе G (clt ..., сп; К) имеется путь из О в К тогда и только тогда, когда индивидуальная задача ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК (clt ..., с„; К) имеет решение. Доказательство. Пусть @ = t0, ilt ..., im^=K) — путь в G. Рассмотрим последовательность FЬ . . ., Sm) = (i1—tOj . .., im—im_1). Все числа 6j, . .., бт содержатся среди {си ..., сп) согласно определению орграфа G. Кроме того, ^f=^; = ^C- Отсюда следует, что уравнение S, */*/=* имеет неотрицательное целочисленное решение,-а именно решение, в котором Xj берется равным числу появлений с} в последователь- последовательности FЬ. . ., 6т). Обратно, если ^"^с}х}=К для неотрицательных целых чисел хи. . ., хп, то можно восстановить некоторый путь из О
16.2. Псевдополиномиальные алгоритмы 399 в К в орграфе G(cu. . ., сп; К), положив (8и ..., 6J = (t,^Ci, . - . ,j1? Cj, , . ., с?,. . ., с„, ..., с„). ,Vi раз ,v2 раз #п раз Тогда путь из 0 в /С будет иметь вид @ ===¦?„, ..., im = K)y где ото приводит к следующему результату. Теорема 16.3. Любую индивидуальную задачу ЦЕЛОЧИС- ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК (ci,. . .,сп, К) можно решить за время О (пК). Доказательство. По данным (с,,. . ., сп, К) можно за время О(пК) построить орграф G(c^,. . ., сп\ К). Затем за время О(пК) определим, существует ли путь из 0 в /(, используя алгоритм НАЙТИПУТЬ из гл. 9. Согласно приведенной выше лемме, этим решается исходная индивидуальная задача ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК. ? Теорема 16.3 выглядит как исключительно важный результат. Известную Л'Р-полную задачу — ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК— можно решить с помощью алгоритма, временная оценка которого выражается вполне полиномиальной функцией! Значит, мы дока- доказали, что P=jVP?. На самом деле, конечно, п/( не нолиномиальная функция от- относительно длины входа. Для записи кода индивидуальной задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК требуется около п log К ячеек памяти, мак как целые числа в этом случае можно записать в двоич- двоичной или десятичной системе счисления Поэтому О(пК) не является полиномиальной оценкой. Тем не менее теорема 16.3 остается очень любопытным фактом. Она показывает, что наше разбиение алгорит- алгоритмов на практические и непрактические (в зависимости от того, вы- выполнимы ли они за полиномиальное время относительно длины входа) условно. При определенных обстоятельствах алгоритм с оцен- оценкой О(пК) можеч рассматриваться как практический, несмотря на его экспоненциальное поведение. Пусть, например, в некотором приложении задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК мы стараемся максимизировать выгоду или деньги, получаемые предприятием. Тогда временная оценка О(пК) показывает, что для достижения этого максимума мы должны затратить фиксированный — и, надо надеяться, очень малый — процент доходов для оплаты машинного времени. А это может рассматриваться как разумная и практически допустимая политика. Кроме того, в следующей главе мы уэидим, что «псевдополиномиальные» алгоритмы, такие, как описанный выше алгоритм с оценкой О(пК), могут указывать на дальнейшие положительные алгоритмические свойства рассматриваемой задачи, несмотря на то что она ЛФ-полна. Таким образом, оказывается, что некоторые экспоненциальные алгоритмы не так уж катастрофичны.
400 Гл. 16. Еще об NP-полноте Приведенные выше рассуждения показывают, что длина кода не является единственной разумной мерой «размера» индивидуальной задачи. Рассмотренный пример задачи ЦЕЛОЧИСЛЕННЫЙ РЮК- РЮКЗАК приводит к следующему определению. Определение 16.2. Пусть / — индивидуальная вычислительная задача — обычно / будет последовательностью комбинаторных объ- объектов, таких, как графы, множества или целые числа. Тогда num(/)—это наибольшее целое число, появляющееся в /. Например, для индивидуальной задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК /=(сь. . ., сп, К) эта величина будет равна num(/)=/C (при разумном предположении, что си. . ., cn^LK). Если /=((/, ^ — индивидуальная задача КЛИКА, то num(/)=^1). Пусть /= = (п, Шц], L) — индивидуальная ЗК- Тогда пит (Л — это наи- наибольшее целое число среди {п, \с1ц\, t=l,. . ., п, /=1,. . .,п, L}. Приведенное определение сразу же указывает на один очень важный аспект. В некоторых задачах, таких, как КЛИКА, функция пит для индивидуальных задач имеет естественную границу; так, для за- задачи КЛИКА в индивидуальной задаче G=((V, E), k) не имеет смысла брать &>|У|. В других трудных задачах, таких, как ЗК, нет естественных границ на размер целых чисел, появляющихся в соответствующих индивидуальных задачах. Однако эти неограни- неограниченные целые числа не влияют на сложность данной задачи: при доказательстве /VP-полноты ЗК наибольшее целое число, которое нам пришлось построить, было равно п (вспомните доказательство следствия 2 из георемы 15.6). С другой стороны, имеются задачи, такие, как ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК, которые обязаны своей сложностью именно неограниченному размеру целых чисел, появ- появляющихся в соответствующих индивидуальных задачах. Так, при установлении /VP-полноты задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК нам пришлось прибегнуть к построению громадных целых чисел. Похоже, что это необходимо, особенно ввиду теоремы 16.3. Все это приводит к следующему определению. Определение 16.3. Пусть А— вычислительная задача и / — функция, отображающая N в N. Через Af будем обозначать зада- задачу А, ограниченную на индивидуальные задачи /, для которых пит (/) ^/(|/|), где |/| — длина кода, представляющего индиви- индивидуальную задачу /. Будем говорить, что задача А сильно NP-полна, если для некоторого полинома р(п) задача Ар /VP-полна. ? Пример 16.1. Задача КЛИКА сильно /VP-полна, так как задача КЛИКА„ совпадает с задачей КЛИКА. Напомним, что&=пшп(/) ^ ^ \V\ для любой разумной индивидуальной задачи КЛИКА /= ((V, Е), k). Аналогично, ЗК сильно /VP-полна, поскольку, как показывает доказательство следствия 2 из теоремы 15.6, она оста- ') Если /=((F, ?), k)— индивидуальная задача КЛИКА, то можно возра- возразить, что num (/)=|V|, так как для представления вершин графа (V, Е) необходи- необходимо использовать индексы вплоть до | V\. Однако этот момент не играет существен- существенной роли в наших рассуждениях.
^ 16.2. Псевдополиномиальные алгоритмы 401 ется AfP-полной даже в том случае, если участвующие в ней целые числа ограничить числом городов. Также сильно /VP-полными яв- являются задачи ГАМИЛЬТОНОВ ЦИКЛ, 3-МЕРНОЕ СОЧЕТАНИЕ, МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ, ТОЧНОЕ ПОКРЫТИЕ 3-МНОЖЕСТВАМИ, а также все другие /VP-полные задачи, NP- полнота которых может быть установлена с помощью преобразова- преобразований, не использующих экспоненциально больших целых чисел. Напротив, задачи 0-1-РЮКЗАК, РАЗБИЕНИЕ и ЦЕЛОЧИСЛЕН- ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК не попадают в этот класс. ? Определение 16.4. Алгоритм Л для задачи А называется псев- псевдополиномиальным, если он решает любую индивидуальную задачу / задачи А за время, ограниченное полиномом от |/| и num(/). Q Таким образом, алгоритм со сложностью О(пК), который реша- решает задачу ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК, является, очевидно, псевдополиномиальным алгоритмом. Как уже отмечалось, наличие для задачи псевдополиномиального алгоритма — во многих от- отношениях положительный факт. В следующей теореме устанавли- устанавливается, что сильная /VP-полнота делает маловероятным существо- существование псевдополиномиального алгоритма точно так же, как /VP- полнота делает маловероятным существование полиномиальных алгоритмов. Теорема 16.4. Если Р Ф NP, то ни для какой сильно NP-полной задачи не может существовать псевдополиномиального алгоритма. Доказательство. Пусть А — сильно /VP-полная задача; дру- другими словами, для некоторого полинома р(п) задача Ар1п) NP- полна. Кроме того, пусть для А существует псевдополиномиальный алгоритм А, который решает любую индивидуальную задачу / задачи А за время q(\I\, num(/)) для некоторого полинома q от двух переменных. Тогда очевидно, что.</? решает /VP-полную задачу АрШ за время q(n, p(n)), являющееся полиномом. Это невозможно, если Рф NP. U Таким образом, доказательство того, что некоторая задача сильно /VP-полна, исключает — с учетом гипотезы Р ф NP — существо- существование не только полиномиальных алгоритмов, но и псевдополи- псевдополиномиальных алгоритмов. В таких задачах, как КЛИКА и ГАМИЛЬ- ГАМИЛЬТОНОВ ЦИКЛ, в которых числа играют минимальную роль, этот более сильный вариант /VP-полноты появляется естественно. Лю- Любопытно, однако, что существуют некоторые сильно /VP-полные задачи, в которых целые числа играют центральную роль. Приме- Примером является следующая задача. 3-РАЗБИЕНИЕ Даны Зп целых чисел {с,,. . ., с3п}. Спрашивается, существует ли такое разбиение этих целых чисел на п троек Тъ. . ., Тп, что ^6 7,^=2^6 7^ Для всех U k.
402 Гл. 16. Еще об NP-полноте Эта задача сильно jVP-полна (см. задачу 4). В заключение этого параграфа мы должны принести извинение фундамешалистам Наше «определение» функции num(/) для инди- индивидуальной задачи / было всего лишь указанием на то, что эта ве- величина имеет определенное значение. Формально говоря, вход / будет просто последовательностью символов, и в общем случае бу- будет нелегко обнаружить в ней части, представляющие целые числа. Это, однако, не уменьшает важности введенных в этом параграфе понятий и доказанных резулыатов. Дело в том, что наши резуль- результаты оааются справедливыми, если в качестве функции num взять любое фиксированное (для данной задачи) полиномиально вычисли- вычислимое отображение множества индивидуальных задач в множество положительных целых чисел, удовлетворяющее условию пгпп(/)^<; =^2> ''. Чем «разумнее» будет наше определение функции ниш для данной задачи, тем большее значение будет иметь утверждение теоремы 16.4. 16.3 Частные случай и обобщения МЯ-попных задач В этом параграфе мы подробно остановимся на следующем оче- очевидном утверждении: чем более общей является задача, тем труднее ее решить. Мы увидим, что это утверждение может быть очень полезным для доказательства результатов об Л'Р-полноте. В каче- качестве другой его иллюстрации мы покажем, что в некоторых случаях ограниченные подзадачи для NР-полных задач входят в Р. Наконец, приведем примеры, в которых частные случаи N Р-полных задач остаются трудными, несмотря на некоторые очень сильные ограни- ограничения. 16.3.1. Доказательство /VP-полноты сужением. Рассмотрим сле- следующую задачу: МИНИМАЛЬНОЕ ПОКРЫТИЕ Даны семейство F=S,,, . ., Sn подмножеств конечного множе- множества и целое число k^n. Спрашивается, существует ли в F такое подсемейство С, содержащее k множеств, что Us.scS7 = l/. Какова сложность задачи МИНИМАЛЬНОЕ ПОКРЫТИЕ? Легко видеть, чго эта задача является обобщением задачи ТОЧНОЕ ПОКРЫТИЕ 3-МНОЖЕСТВАМИ, которая, как было показано в предыдущей главе, N'P-полна. Задача ТОЧНОЕ ПОКРЫТИЕ 3- МНОЖЕСТВАМИ является всего лишь частным случаем задачи МИНИМАЛЬНОЕ ПОКРЫТИЕ, в котором |5, |=3 для /==1,. . . ...,п и k—\U\/3. Следовательно, любую индивидуальную задачу ТОЧНОЕ ПОКРЫТИЕ 3-МНОЖЕСТВАМИ можно тривиальнЬ преобразовать в индивидуальную задачу МИНИМАЛЬНОЕ ПО-
16.3. Частные случаи и обобщения NP-полных задач 403 КРЫТИЕ. Таким образом, задача МИНИМАЛЬНОЕ ПОКРЫТИЕ Л^Я-полна, так как она является обобщением Л^Я-полной задачи. В качестве другого примера напомним, что мы доказали NP- полноту задачи ОРИЕНТИРОВАННЫЙ ГАМИЛЬТОНОВ ЦИКЛ, заметив просто, что она является обобщением неориентированной задачи ГАМИЛЬТОНОВ ЦИКЛ. Грубо говоря, это следует из того, что в отношении гамильтоновых циклов неориентированные графы являются просто частными случаями орграфов, удовлетво- удовлетворяющими условию: если (и, v)?A, то и (о, н)?А. Аналогично, АСИММЕТРИЧНАЯ ЗК ЛФ-полна, так как она является обобще- обобщением ЗК- Рассмотрим следующую задачу: ИЗОМОРФИЗМ ПОДГРАФУ Даны два графа G и G'. Спрашивается, существует ли в G под- подграф, изоморфный (т. е. идентичный с точностью до перенумера- перенумерации вершин) графу С. Эта задача NP-полна, так как она в качестве частных случаев содержит задачи КЛИКА и ГАМИЛЬТОНОВ ЦИКЛ. Действитель- Действительно, если G — полный граф с k вершинами, получаем задачу КЛИ- КЛИКА. Если в качестве G' берется гамильтонов цикл (т. е. связный граф с таким же числом вершин, как в G, в котором степени всех вершин равны 2), то получаем задачу ГАМИЛЬТОНОВ ЦИКЛ. Доказательство Л^Я-полноты сужением не всегда так тривиаль- тривиально, как в рассмотренных выше примерах. Рассмотрим, например, следующую задачу: ПОСТРОЕНИЕ НАДЕЖНОЙ СЕТИ Даны две симметричные (пХп)-матрицы, Ыц] (матрица расстоя- расстояний) и \гц] (матрица избыточности) и целее число L. Спрашива- Спрашивается, существует ли граф на п вершинах, стоимость которого не превосходит L, такой, что между i-й и /-й вершинами существует не менее ги непересекающихся по вершинам путей. Покажем, что в действительности эта задача является обобще- обобщением задачи ГАМИЛЬТОНОВ ЦИКЛ. Рассмотрим случай, в кото- котором du равны либо 1, либо 2, L=n и ги=2 для всех i Ф }. Тогда нетрудно понять, что единственным графом с п ребрами, в котором между любыми двумя вершинами имеются два непересекающихся по вершинам пути, является цикл с п вершинами (что требует некото- некоторого доказательства). Следовательно, этот частный случай задачи построения надежной сети имеет решение в том и только в том слу- случае, если граф с п вершинами, в котором ребро U, /] присутствует тогда и только тогда, когда d,,-=l, гамильтонов. Таким образом, задача ПОСТРОЕНИЕ НАДЕЖНОЙ СЕТИ является обобщением задачи ГАМИЛЬТОНОВ ЦИКЛ, и, следовательно, Л^Я-полна. 16.3.2. Легкие частные случаи TVP-полных задач. Основным дидактически существенным моментом этого параграфа является
40| Гл. 16. Еще об NP-полноте то, что частные случаи Л'Р-полных задач не обязаны быть трудными. Это соображение может быть очень важным на практике Предпо- Предположим, что в практической ситуации нас интересует получение точных оптимальных решений для данной комбинаторной задачи оптимизации. К сожалению, мы вскоре осознаем, что эта задача /УР-полна и, следовательно, нет надежды решать общую задачу эффективно. Должны ли мы сдаться? Не сразу. Возможно (на самом деле вероятно), что мы оказались жертвами ненужной общности — подобно многим исследователям, которые формулируют каждую дискретную задачу оптимизации в виде задачи целочисленного программирования, а каждую задачу упорядочения в виде ЗК лишь для того, чтобы отказаться от ее ре- решения, как только они поймут, что для этих общих задач очень трудно найти точное решение. Гораздо лучше формулировать задачи в наименее общем виде и пытаться использовать любые специальные свойства интересующих нас индивидуальных задач. Например, если мы рассматриваем задачу о маршрутах, в которой участвуют графы, то может оказать- оказаться, что интересующие нас графы обладают некоторыми приятными свойствами, такими, как планарность, ограниченные степени вер- вершин и т. д. С другой стороны, при доказательстве МР-полноты этой задачи, возможно, использовались — что часто бывает — сведения, в которых строятся графы, сильно непланарные и имеющие очень большие степени, Поэтому остается надежда, что существует эффек- эффективный алгоритм для решения данной задачи в частном случае, когда граф планарен и степени малы. Конечно, нельзя сказать, что МР-полнота общей задачи в этом случае не имеет никакого значения. Если такой результат доказан, то дело оптимистов — объяснить, как они надеются решить частный случай, используя его свойства. Пример 16.2. Вспомним задачу КЛИКА, которая, как нам из- известно, yVP-полна. Предположим, что мы рассматриваем задачу ПЛАНАРНАЯ КЛИКА, т. е. ее ограничение на пленарные графы, Теорема Куратовского [Evl *) утверждает, что в пленарном графе не может быть клик с пятью или более вершинами. Следовательно, максимальная клика в пленарном гряфе G=(V, E) может иметь не более четырех вершин, и поэтому ее можно найти полным перебо- перебором за время О(|У|4). На самом деле возможен даже алгоритм с оценкой О(|V|) (см. задачу 5). Таким образом, задача ПЛАНАРНАЯ КЛИКА действительно является полиномиальным частным случаем задачи КЛИКА. П Пример 16.3. Вспомним задачу МНОГОПРОЦЕССОРНОЕ РАС- РАСПИСАНИЕ, которая, как было показано в теореме 15.5, NP-полна. В этой задаче даны ориентированный ациклический граф (^, А), описывающий ограничения предшествования для заданий, число 1) В советской литературе эту теорему принято называть теоремой Понтря- гина — Куратовского. См. примечание на с. 417.— Прим. перев.
16.3. Частные случаи и обобщения NP-полных задач 405 процессоров т и длина расписания Т, и спрашивается, существует ли допустимое расписание. Однако следующие частные случаи этой задачи полиномиальны 1. 7=2. Если в расписании должны использоваться только 2 единицы времени, то орграф (f-, А) не должен содержать путей дли- длины 2 или более; другими словами, это должен быть двудольный ор- орграф с дугами, идущими из множества источников S в множество стоков R, и, возможно, множеством / изолированных вершин. В этом случае легко понять, что допустимое расписание существует тогда и только тогда, когда a) \R\, \S |< т и б) \R\ + \S\ + |/|< 2т. 2. т=2. В задаче 5 из гл. 10 было показано, что задачу состав- составления расписания для двух машин можно решить за время О(п3). 3. {J-, А) — ордерево Другими словами, степень захода (i)^l для всех J ?^. Для этого случая также имеется полиномиальный алгоритм (см. задачу 6 и [Ни!). Таким образом, некоторые интересные частные случаи задачи МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ можно решить эффек- эффективно, несмотря на то что общая задача Л'Р-полна. ? Еще один пример дает задача ВЫПОЛНИМОСТЬ: если число литералов в каждом дизъюнкте ограничено двумя, то соответст- соответствующая задача (называемая 2-ВЬШОЛНИМОСТЬ) может быть решена за линейное время (см. задачу 6 из гл. 15). Другие примеры таких ситуаций можно найти в задачах в конце этой главы. 16.3.3. Трудные частные случаи /VP-полных задач. Подход, рассмотренный в предыдущем подразделе, не всегда работает. Некоторые Л^Р-полные задачи остаются ./VP-полными, даже тогда, когда соответствующие им индивидуальные задачи существенно ограничены Очень часто наиболее интересные вопросы, касающие- касающиеся ./VP-полноты, включают в себя точное понимание того, в каких частных случаях рассматриваемой yVP-полной задачи содержится сложность этой задачи. Доказательство того, что некоторый част- частный случай ./VP-полной задачи сам является ./VP-полным, обычно включает в себя преобразование специального вида. Цель такого преобразования — модифицировать произвольную данную инди- индивидуальную задачу для общей задачи так, чтобы избавиться от особенностей, недопустимых в рассматриваемом частном случае, и не изменить ответа да или нет в этой индивидуальной задаче. Мы уже встречались с таким преобразованием при доказательстве NP- полноты задачи 3-ВЫПОЛНИМОСТЬ (теорема 15.2), когда наша цель состояла в том, чтобы заменить дизъюнкты с числом литера- литералов, отличным от трех, эквивалентными множествами дизъюнктов с 3 литералами. Приведем другой пример такого доказательства. Теорема 16.5. Задача ВЫПОЛНИМОСТЬ остается NP-полной даже для формул, в которых каждая переменная появляется один или два раза без отрицания и один раз с отрицанием. С
406 Гл. 16. Еще об NP-полноШ Доказательство. Рассмотрим произвольную формулу F и про- произвольную переменную х, встречающуюся в F. Пусть в целом в F переменная х входит k > 3 раз. Вместо первого вхождения пере- переменной х можно подставить новую переменную х1у вместо второго вхождения — переменную х2 и т. д. вплоть до k-то вхождения. Те- Теперь надо обеспечить, чтобы в любом наборе значений истинности, выполняющем формулу, значения истинности всех k переменных хи. . ., xk были одинаковы. Этого можно добиться, добавляя к фор- формуле дизъюнкты (Х1+л-2)(^2+^з) •• ¦ • •(Xfc+A'j); читатель может легко проверить, что эти новые дизъюнкты выполняются только тогда, когда все переменные х,,. . ., xh принимают одно и то же значение истинности. Если мы проделаем это преобразование для всех переменных, по- появляющихся в формуле более трех раз, то получим новую формулу, в которой все переменные встречаются не более трех раз, и эта фор- формула будет выполнима тогда и только тогда, когда выполнима формула F. Выделим теперь все переменные, которые входят в фор- формулу либо только без отрицания, либо'только с отрицанием. Оче- Очевидно, при любых попытках выполнить F' мы можем выполнить все дизъюнкты, в которых эти переменные встречаются, придав им соот- соответственно значения истина или ложь, при этом не возникнет ника- никаких противоречий. Поэтому все эти дизъюнкты можно удалить из F', и полученная формула опять будет выполнимой тогда и только тогда, когда выполнима формула F. Если в новой формуле некото- некоторая переменная х встречается дважды с отрицанием и один раз без отрицания — это единственный оставшийся случай, когда нару- нарушаются ограничения теоремы,— мы подставляем в формулу у вместо х, где у — новая переменная. Легко проверить, что в получаемой формуле каждая переменная встречается один или два раза без отри- отрицания и один раз с отрицанием. ? Иногда для доказательства yVP-полноты некоторого частного случая ./VP-полной задачи достаточно заметить, что все индивиду- индивидуальные задачи, которые строятся при доказательстве Л^Р-полноты общей задачи, лежат внутри интересующего нас частного случая. Теорема 16.6. Задача ГАМИЛЬТОНОВ ЦИКЛ NP-полна даже тогда, когда рассматриваются только те графы, в которых степени вершин не превосходят четырех. Доказательство. Достаточно заметить, чго в графе, который строится в доказательстве теоремы 15.6, степени вершин не превос- превосходят 4. ? Приведем в заключение более сильный результат. Теорема 16.7. Задача ГАМИЛЬТОНОВ ЦИКЛ для графов, в которых степени всех вершин равны 3, NP-полна.
16.3. Частные случаи и обобщения NP-полных задач 407 Доказательство. Рассмотрим граф G=(V, E), в котором сте- степени всех вершин не превосходят 4. Покажем, как избавиться от вершин степени 4 и 2. Начнем с вершин степени 4. Заменим в G каждую вершину v степени 4 подграфом, вершины которого имеют степень 3 или 2, изображенным на рис. 16.3F). Тогда если этот подграф является частью произвольного графа, то гамильтонов цикл может проходить по нему только так, как показано на рис, 16.3(в—д) (или еще тремя, полностью симметричными спосо- способами). Поэтому при любом таком преобразовании сохраняется су-
408 Гл. 16. Еще об NP-полноте ществование или несуществование гамильтонова цикла. Для завер- завершения доказательства заметим, что можно избавиться от вершин степени 2, заменяя их так, как показано на рис. 16.4. ? Рис. 16.4. 16.4 Словарь родственных понятий В этом параграфе мы рассмотрим некоторые вопросы, относя- относящиеся к теории МР-нолноты, и объясним их связь с понятиями, вве- введенными и рассмотренными в предыдущих параграфах. 16.4.1. Полиномиальные сведения. В ^ 15 4 мы определили поли- полиномиальное сведение задачи А к задаче В как полиномиальный ал- алгоритм, решающий задачу А и «вызывающий» при этом несколько раз подпрограмму, решающую задачу В с единичной стоимоаью. Однако мы сконцентрировали внимание на частном случае, а именно на полиномиальном преобразовании. Этого «более точного» вариант нам оказалось достаточно для развития теории NР-полноты. Floie- ряли ли мы что-нибудь, ограничив наше внимание полиномиаль- полиномиальными преобразованиями? Никто не знаег, действительно ли класв ЛФ-полных задач увеличится, если ослабить определение NP- полноты, допустив более общие сведения — даже в том случае, если РФ NP. 16.4.2. NP-трудные задачи. Иногда удается показать, что все задачи из NP полиномиально сводятся к некоторой задаче Л, но не удается доказать, что A g NP. Тогда А не может называться NP- полной. Однако А, несомненно, настолько же трудна, как любая задача из NP и поэтому, вероятнее всего, труднорешаема. Именно для таких задач выделен термин NP'-трудность. Примером явля- является следующая задача. /С-е ПО ВЕСУ ПОДМНОЖЕСТВО Даны целые числа сь. . ., сп, К и L. Спрашивается, существуют ли такие К различных подмножеств Si,. . ., S^sfl,. . ., п}, что 2 Oj^L для j=» 1, ..., /С.
16А. Словарь родственных понятий 409 f- !(Другими словами, будет ли вес /С-го по весу подмножества из " {1,- ¦ ¦> п) не меньше L?) Входит ли задача /С-е ПО ВЕСУ ПОДМНОЖЕСТВО в NP? Это совсем не ясно. Какое удостоверение для индивидуальной задачи (Си. ¦ ¦, сп> К, L) с ответом да будет короче, чем выписывание всех К подмножеств, вес которых больше, чем L? Естественно, этот ва- вариант не будет коротким удостоверением, так как К. может, напри- например, быть равным 2"~1. Тем не менее все задачи из NP полиномиально сводятся (не преобразуются) к задаче /С-е ПО ВЕСУ ПОДМНОЖЕСТВО. Теорема 16.8. Задача РАЗБИЕНИЕ полиномиально сводится к задаче К-е ПО ВЕСУ ПОДМНОЖЕСТВО. Доказательство. Пусть у нас имеется подпрограмма Л, решаю- решающая задачу К-е ПО ВЕСУ ПОДМНОЖЕСТВО. Мы можем следую- следующим образом использовать ее для решения произвольной индиви- индивидуальной задачи РАЗБИЕНИЕ с,,. . ., сп. 1. Прежде всего определим порядковый номер 7? в последо- последовательности всех подмножеств множества {1, ..., п\ (упорядо- (упорядоченных по ве'су) самого легкого из подмножеств, вес которых не меньше, чем У"=|С;/2. Естественно, если ^f=1c/ нечетно, то мы сразу же выдаем ответ нет. Указанное R определяем разряд за разрядом, п раз вызывая Л. 2. Если меньше чем 2"—Ц подмножеств имеют вес, больший или равный J^L, Cy/2-f 1, то это означает, что по крайней мере одно (на самом деле по крайней мере два) подмножество имеет вес ^'tLiCj/2, и поэтому мы выдаем ответ да. В противном случае выдаем ответ нет. ? Между прочим, это один из редких случаев, когда не известно, можно ли полиномиальную сводимость заменить более точным поня- понятием полиномиального преобразования (вспомните предыдущий раздел). Термин NP-трудность используется в литературе не только для описания задач распознавания, про которые не известно, принад- принадлежат ли они NP, но иногда и для описания задач оптимизации (которые, не будучи задачами распознавания, естественно, не при- принадлежат NP), варианты распознавания которых Л^Р-полны. На- Например, можно сказать, что ЗК (т. е. задача оптимизации) NP- трудна. 16.4.3. Недетерминированные машины Тьюринга. NP — это сокращение от недетерминированный полиномиальный (nondeter- ministic polynomial). Оно связано с тем,-что исторически класс NP
410 Гл. 16. Еще об NP-полноте был впервые описан в терминах определенных вычислительных устройств, называемых недетерминированными машинами Тьюрин- Тьюринга. Машина Тьюринга — это устройство, работающее аналогично алгоритму проверки удостоверения из предыдущей главы — отли- отличие в том, что машина Тьюринга работает только на входе без удос- удостоверения и имеет в своем распоряжении неограниченную ленту. Ее работа управляется программой с операторами вида I: if a then (а'; о; /')• Машина Тьюринга принимает вход, если она достигает выделенного оператора /: accept. Таким образом, класс Р можно определить как множество задач типа да-нет, распознаваемых машинами Тьюринга, причем с тем свойством, что вычисление всегда останавливается после некоторого числа шагов, ограниченного фиксированным поли- полиномом от размера входа. Должно быть очевидным, что это определе- определение совпадает с нашим неформальным понятием полиномиального алгоритма. Недетерминированная машина Тьюринга М представляет собой такое же устройство, только в данном случае программа содержит операторы более общего вида: I: if о then one of {(а,; о,; /,'), (а'2; о2; Г2), .... (а'к; ок; lk)\. При выполнении этого оператора М может выбрать любое одно из указанных k^l действий; отсюда происходит термин недетермини- недетерминированная. Тогда класс NP можно определить как класс всех задач А типа да-нет, для которых существует недетерминированная ма- машина Тьюринга /VI, такая, что для каждой индивидуальной задачи х задачи А с ответом да существует последовательность допустимых «выборов» переходов машины М, общая длина которой ограничена фиксированным полиномом от \х\, приводящая в заключение к оператору accept, и не существует таких выборов переходов для индивидуальных задач с ответом нет. , Докажем теперь, что это определение класса NP эквивалентно нашему определению, в котором использовалось понятие удостове- удостоверения. Предположим, что для задачи имеется «короткое удостове- удостоверение». Тогда ее можно распознать на недетерминированной машине Тьюринга, которая вначале (недетерминированно) печатает после входа некоторое предполагаемое удостоверение подходящей длины, а затем моделирует применение алгоритма проверки удостоверения к построенной строке. Поскольку наша задача обладает свойством короткого удостоверения, то для каждой индивидуальной задачи с ответом да существует (и не существут ни для какой индивидуаль- индивидуальной задачи е ответом нет) «корректное удостоверение», т. е. суще- существует последовательность переходов недетерминированной маши- машины, приводящая к оператору accept, и длина этой последователь- последовательности ограничена полиномом, соответствующим данной задаче.
16.4. Словарь родственных понятий 411 ^ г Обратно, пусть задачу А типа да-нет можно распознать на не- недетерминированной машине Тьюринга с полиномиальной оценкой р(п). Тогда каждое состояние этой машины при работе с входом длины п можно представить как слово из р(п) символов — многие из которых, возможно, пусты,— и определенной дополнительной информации, описывающей метку следующего выполняемого опе- оператора и положение читающей и пишущей головки на ленте. По- Поэтому всю работу машины для индивидуальной задачи х задачи А с ответом да можно представить, выписывая подряд р(\х\) таких слов с общей длиной О(р2(\х\)). Эго описание работы машины можно проверить на правильность, убеждаясь, что каждое слово в ней получается из предыдущего одним из допустимых в этот момент пере- переходов — а это требует всего лишь полиномиального времени. Следо- Следовательно, в задаче А все индивидуальные задачи с ответом да — и только они — имеют короткое и эффективно проверяемое удостове- удостоверение, а именно явную запись работы недетерминированной маши- машины Тьюринга, которая оканчивается командой accept. Отсюда получаем, что определение класса NP в терминах недетерминиро- недетерминированных машин Тьюринга эквивалентно нашему определению. 16.4.4. Задачи, полные относительно полиномиальной памяти. У нас имеется класс Р задач, разрешимых за полиномиальное время, и класс NP задач, в которых индивидуальные задачи с ответом да имеют полиномиальное удостоверение. Если мы будем еще более великодушными и потребуем только, чтобы для задач существовали алгоритмы, использующие при работе память, объем которой огра- ограничен полиномом от размеров входа, то придем к классу задач, известному как PSPACE. Если для работы алгоритма требуется только полиномиальное количество времени, он, очевидно, не может использовать больше чем полиномиальный объем памяти, поэтому класс Р заведомо является подмножеством класса PSPACE. Класс NP также является подмножеством класса PSPACE. Чтобы понять это, представим себе машину, которая для данного входа система- систематически по очереди порождает всевозможные короткие удостоверения, стирая каждый раз предыдущее удостоверение, и на каждом удо- удостоверении моделирует работу алгоритма проверки удостоверения. Эта машина работает экспоненциальное время, так как имеется ог- огромное число возможных удостоверений подходящей длины, однако она использует только полиномиальный объем памяти. Такие же рассуждения показывают, что co-NP*=PSPACE. При этом класс PSPACE вполне может оказаться даже шире. Например, обсуждавшаяся выше задача К-е ПО ВЕСУ ПОДМНО- ПОДМНОЖЕСТВО (принадлежность которой к NP неясна) входит в PSPACE. Это следует из того, что можно перебором просмотреть все подмно- подмножества множества {I,. . ., п}, каждый раз стирая предыдущее под- подмножество и сохраняя в стороне количество (в двоичном представ- представлении) уже просмотренных подмножеств, вес которых больше, чем
412 Гл. 16. Еще об NP-полноте L. Все это можно проделать с использованием полиномиальной па- памяти. Задача называется PSPACE-полной, если она принадлежит клас- классу PSPACE и все остальные задачи из класса PSPACE полиноми- полиномиально сводятся к ней. Примером PSPACE-полиой задачи является вариант задачи ВЫПОЛНИМОСТЬ с кванторами, который мы не будем здесь определять. Для PSPA С?-полных задач принадлежность классу Р еще ме- менее вероятна, чем для AfP-полных задач, так как класс PSPACE у Дополнения ,М°-полных Рис. 16.5. содержит класс NP (и, следовательно, из равенства P=PSPACE вытекало бы P=NP). В свете этих новых понятий мы можем полу- получить окончательный предполагаемый вид класса NP и его окрест- окрестности, приведенный на рис. 16.5. На очень слабое понимание нами этой области указывает тот факт, что, несмотря на все, что мы зна- знаем, вполне возможно, что все эти области могут слиться в одну: Р! 16.5 Эпилог Нельзя сказать последнего слова о труднорешаемости NP- полных задач до тех пор, пока не будет разрешена гипотеза Р Ф N Р. Несмотря на большую теоретическую важность этой задачи и вы- высказываемый интерес к ней многих специалистов по вычислительным наукам, доказательства этой гипотезы пока не видно. В настоящее время кажется вполне вероятным, что ответ на этот вопрос не удастся получить без развития совершенно новых математических методов. При формировании небольшого списка задач, yVP-полноту кого-
16.5. Эпилог 413 ipux мы доказали в предыдущей главе, мы выбирали только те зада- \ чи, которые относятся к комбинаторной оптимизации или достаточно ;,фундаментальны и полезны в качестве отправных точек для доказа- доказательства /VP-полноты других задач. Однако имеется еще много #/>-полных задач, появляющихся в разнообразных дисциплинах, ¦ таких, как теория графов, оптимизация, математическое программи- • рование, логика, теория чисел и теория вычислений. Некоторые из них можно найти в задачах в конце этой главы. Несколько сотен Л^Я-полных задач содержится в книге Гэри и Джонсона [GJ2] — наиболее полном собрании на сегодняшний день. Среди них имеется ' несколько задач оптимизации, решение которых представляет боль- большое практическое значение. Тот факт, что эти задачи Л'Р-полны — вместе с широко распространенным и хорошо обоснованным мие- ' нием, что из этого следует труднорешаемоаь,— привел многих исследователей к пересмофу их стратегии подхода к этим задачам. Имеется несколько возможностей, которые менее безнадежны, чем попытки решить jVP-полную задачу оптимизации точно и эффек- эффективно. Ниже мы приводим список основных возможностей. 1. Приближенные алгоритмы. Эти алгоритмы порождают не оптимальные решения, а решения, отличающиеся от действитель- действительного оптимума заведомо не более чем на фиксированную долю этого оптимума. Этот подход и границы его возможностей мы изучим в следующей главе. 2. Вероятностные алгоритмы. Иногда оказывается возможным построить алгоритмы, которые очень часто относительно некоторого вероятностного распределения на индивидуальных задачах работают неплохо — в смысле качества получаемых решений или затрачивае- затрачиваемого времени. 3. Частные случаи. В § 16.3 мы видели, что интересные частные случаи jVP-полной задачи могут быть простыми. Если нас интере- интересуют только эти частные случаи, то тот факт, что общая задача NP- полна, более или менее несуществен. 4. Экспоненциальные алгоритмы. Такие алгоритмы могут, в конце концов, быть не слишком плохими. Мы уже показали, что псевдополиномиальные алгоритмы (§ 16.2) могут иногда хорошо работать на практике, несмотря на тот факт, что они, строго говоря, экспоненциальны. Кроме того, некоторые методы поиска с экспо- экспоненциальной сложностью в худшем случае, такие, как метод вет- ветвей и границ из гл. 18, можно успешно применять к индивидуальным задачам разумного размера. 5. Локальный поиск. Одним из наиболее успешных подходов к ре- решению трудных комбинаторных задач является дискретный аналог «метода спуска», известный как локальный (или окрестностный) поиск. Он будет рассмотрен в гл. 19. 6. Эвристики. Любой из описанных выше подходов без формаль- формальной гарантии хорошего поведения можно рассматривать как «эв-
414 Гл. 16. Еще об NP-полноте ристику». Такие подходы, будучи неудовлетворительными с ма- математической точки зрения, уверенно работают в практических ситуациях. Задачи 1. Следующая задача является классической задачей распознавания. ПРОСТЫЕ ЧИСЛА Дано десятичное представление целого числа. Спрашивается, является ли это число простым. а) Приведите алгоритм распознавания для задачи ПРОСТЫЕ ЧИСЛА. Какова сложность Вашего алгоритма? б) Покажите, что ПРОСТЫЕ ЧИСЛА g co-NP. в*) Покажите, что целое число п является простым тогда и только тогда, когда существует такое целое число а, что (i) a"-1^l(mod n) и (ii) a'"~"/pr^! (mod п) для всех простых делителей р числа п—1. г) Используя п. в), покажите, что ПРОСТЫЕ ЧИСЛА ? NP. 2. Полиномиальное преобразование Т задачи А в задачу В называется сохра- сохраняющим, если для любой индивидуальной задачи х задачи А в Т(х) имеется столь- столько же решений (т. е. различных удостоверений с(Т(х))), сколько в х. Какие из преобразований, использованных в доказательствах в предыдущей главе, явля- являются (или могут быть легко сделаны) сохраняющими? 3*. Пусть т~— произвольное фиксированное целое число и /и-ЦЛП — это задача ЦЛП, ограниченная на индивидуальные задачи с m уравнениями. Пока- Покажите, что для задачи яг-ЦЛП существует псевдополиномиальный алгоритм. (Указание: Вспомните оценки из § 13.3.) 4. а) Приведите полиномиальное преобразование задачи 3-МЕРНОЕ СОЧЕ- СОЧЕТАНИЕ в следующую задачу: 4-РАЗБИЕНИЕ Даны 4л целых чисел {съ ... , с4л}. Спрашивается, существует ли такое раз- разбиение этих целых чисел на п четверок Qb ... , Qn, что 2 с,-— Zj с, для всех 1, k? Получаемые при этом преобразовании числа Cj должны удовлетворять неравен- неравенству CjKp(n) для некоторого полинома р. б) Покажите, что задача 3-РАЗБИЕНИЕ сильно Л/Р-полна. 5*. Покажите, что вопрос о том, имеется ли в планарном графе (V, Е) клика размера 4, может быть решен за время О(|К|). 6*. Рассмотрим следующий алгоритм для решения задачи МНОГОПРО- МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ в юм случае, когда отношение предшествования представляет собой антиордереви (т. е. степени исхода всех вершин, кроме корня, равны 1). 1) Каждому заданию приписываем приоритет, равный его расстоянию от корня. 2) Распределяем задания по интервалам времени и процессорам, выбирая на каждом шаге задания, все предшественники которых уже обработаны и кото- которые имеют наибольший приоритет. а) Покажите, что этот алгоритм корректно решает рассматриваемый частный случай за полиномиальное время. б) Приведите полиномиальные алгоритмы для случаев, когда отношение предшествования является лесом из антиордеревьев, ордеревом я лесом из орде- ревьев. 7. Граф называется хордот.м, если все его циклы [vlt г2, ... , vk\ длины четыре или более имеют хорду, т. е. ребро [t1;, Vj], где j^i±] (mod k).
Задачи 415 а) Покажите, что следующее (рекурсивное) определение хордовых графов эквивалентно приведенному выше. Граф G=(V, Е) является хордовым в юн i- юлькс в гом случае, если 0= = @> 0) (пустой граф), либо существует 'акая вершина i ? I'', что (i) окрес!ность вершины v (т. е. v и смежные ей вершины) образует клику и (ii) (рекурсивно) G—v есть хордовый граф. б) Покажите, что для хордовых графов задачи РАСКРАСКА ГРАФА, НЕ- НЕЗАВИСИМОЕ МНОЖЕСТВО и КЛИКА полиномиальны 8. Пусть G=(V, Е)— пленарный iраф, и пуаь Г — множество областей (граней), на которые плоское «изображение» графа G делит плоскость. Две грани графа G называются смежными, если их пересечением является линия (но не точ- точка). Графом, двойственным к G, называемся граф GD~\b\ H), где l/i,/2]?^ тогда и только тогда, ко!да/, и /2 смежны (в графе Ср \ioiyi быть повторяющиеся ребра). а) Сформулируйте задачу МАКСИМАЛЬНЫЙ РАЗРЕЗ (задача 13 из гл. 15) для пленарного графа G как задачу нша задач о паросочетаниях в графе GD и ре- решите ее за полиномиальное время. б) Повторите п, а) для взвешенною вариант» !адачи МАКСИМАЛЬНЫЙ РАЗРЕЗ. 9*. Покажите, что (асимметричную) ЗК с расстояниями, описанными в п. а) и б) задачи 13 из гл И, можно решить за полиномиальное время. 10. Покажите, что (асимметричную) ЗК с неотрицательными расстояниями dij, удовлетворяющими условию d{ — О, если i^/, можно решить за полиноми- полиномиальное время. 11. Покажите, что задача о гамильтонов.ш цикле для планарных графов NP-полпа. (Указание; вспомните рис. 15.9 в доказательстве теоремы 15.6. Все, что требуется показать,— это как позволить линиям А пересекаться. Рассмотрите следующую идею.) У <=> .v 12. Докажите методом сужения (разд. 16.3.2), что следующие задачи NP- полны. а) ГОМЕОМОРФИЗМ ПОДГРАФУ Даны два графа G=(V, Е) и H=(U, F). Спрашивается, существует ли гакое отображение h из U в V, что (i) из h(u)=h(v) вытекает u=v; (ii) для каждого ребра [и, v\ ? F существует пучь из h (и) в h (v) в графе G; (iii) все эти пути не пере- пересекаются по вершинам. (Указание: см ГАМИЛЬТОНОВ ЦИКЛ.) Транзитивным замыканием орграфа D=(V, А) называется орграфО*=(У, А*), такой, что (и, v)?A* тогда и только тогда, когда в А существует путь из и в v (или u=v). б) ТРАНЗИТИВНОЕ СОКРАЩЕНИЕ ВЫБРАСЫВАНИЕМ Даны орграф D = (V, А) и целое число k. Спрашивается, существует ли такой подграф F=(V, В), что D*-F* и \B\<k. (Указание: см. ОРИЕНТИРОВАННЫЙ ГАМИЛЬТОНОВ ЦИКЛ.) в) ПРОТЫКАЮЩЕЕ МНОЖЕСТВО Даны семейство С= {Sj, ... , Sn) конечных множеств и целое число k. Спраши- Спрашивается, существует ли такое множество И, что |W|<A и Н (\S/Ф0 для /= 1 п. (Указание: см. ВЕРШИННОЕ ПОКРЫТИЕ.)
416 Гл. 16. Еще об NP-полнотё __ г) ГАМИЛЬТОНОВА ДОСТРОЙКА Даны граф G=(V, Е) и целое число k. Спрашивается, существует ли такое множество ребер В, что |В|«& и в графе (V, E\JB) имеется гамильтонов цикл. Комментарии и ссылки Идеи, обсуждавшиеся в § 16.2, взяты из [GJ1] Garey M R., Johnson D. S. Strong Л/P-completeness results: Motivation, Examples and Implications, J. ACM, 25 A978), 499—508. Теорема 16.8 взята из [JKl Johnson D. В., Kashdan S. D. Lower Bounds for Selection in X-\-Y and other Multisets, J ACM, 25 A978), 556—570. Дальнейшее обсуждение вопросов, упомянутых в § 16.4, можно найти в гл. «За пределами класса Л/Р-полных задач» книги [GJ2] Garey M. R., Johnson D. S. Computers and Intractability: A guide to the theory of iVP-completeness. San Francisco: W. H. Freeman & Company, 1979. [Имеется перевод: Гэри М., Джонсон Д. Вычислительные машины и трудно- решаемые задачи.— М.: Мир, 1982.] Задача 1(г) принадлежит Прапу: [Pr] Pratt V. R. Every Prime Has a Succinct Certificate, J. SIAM Сотр., 4A975), 214—270. Сохраняющие сведения введены в работах [Si] Simon J. On Some Central Problems in Computational Complexity (неопубли- (неопубликованная диссертация, Cornel! University, 1977). [Val] Valiant L. G. A polynomial Redution of Satisfiability to Hamiltonian Cir- Circuits that Preserves the Number of Solutions (не опубликовано). Используя такие сведения, Валиант развил теорию сложности для перечисли- перечислительных задач (т. е. задач, связанных с подсчетом решений), параллельную со- соответствующим теориям для задач распознавания и оптимизации. См. [Va2] Valiant L. G. The Complexity of Enumeration and reliability Problems, Report CSR-15-77, Univ. of Edinburgh, 1977. Задача З взята из [Pa] Papadimitriou С. H. On the Complexity of Integer Programming, M. I. T. Lab. for Computer Science, TM-152, 1980. Также J. ACM, 28A981), No. 4, 765—768. Задача 4 взята из [GJ2]. Задача 6 — из [Ни] Ни Т. С. Parallel Sequencing and Assembly Line Problems, OR, 9 A961), 841—848. Задача 7 — из [Ga] Gavril F. Algorithms for Minimum Coloring, Maximum Clique, Minimum Covering by Cliques and Maximum Independent Set of a Chordal Graph, J. SIAM Сотр., 1 A972), 180—187. Задача 8 взята из [OD] Orlova G. I., Dorfman Y. G. Finding the Maximum Cut in a Graph, Engnrg. Cybernetics, 10 A972), 502—506.
Комментарии и ссылки 417 ''Задача 5 — из [PY] Papadimitriou С. Н., Yannakakis M. The Clique Problem for Planar Graphs, Inf. Proc. Letters (в печати). Задачи 9 и 10 взяты из ; [GG] Gilmore Р. С., Gomory R. E. Sequencing a One State-Variable Machine: A Solvable Case of the Traveling Salesman Problem, OR, 12 A9641, 655—679. [La] Lawler E. L. A Solvable Case of the Traveling Salesman Problem, Math. Prog., 1 A971), 267—269. Теорему Куратовского можно найти, например, в книге1) [Ev] Even S. Graph algorithms. Potomac, Maryland: Computer Science Press, 1979. *) См. также: Харари Ф. Теория графов. Пер. с англ.— М.: Мир, 1973.— Прим. перев 14 Л» 3032
17 Приближенные алгоритмы 17.1 Эвристики для задачи о вершинном покрытии. Пример Рассмотрим задачу ВЕРШИННОЕ ПОКРЫТИЕ Для данного графа G=(V, E) найти наименьшее возможное множество вершин С, такое, что [и, v]?E=>v?C или и?С. Это очень важная практическая задача, возникающая, напри- например, когда требуется управлять работой большой сети, управляя как можно меньшим числом вершин. Поэтому, естественно, тот факт, что эта задача AfP-полна (следствие из леммы 15.4), несколько разочаровывает. Тем не менее для этой задачи имеются некоторые правдоподобные методы получения «хороших»» (но, возможно, не оптимальных) решений. Например, многообещающей выглядит «жадная» эвристика, представленная на рис. 17.1. Вход. Граф G = (V, E). Выход. Вершинное покрытие С в графе G, предположительно ненамного больше, чем оптимальное. begin С:=0; while E Ф 0 do выбрать в V вершину с наибольшей степенью (comment: неопределен- неопределенность разрешать произвольно), удалить ее из G и добавить к С end Рио. 17.1. Алгоритм 1. Поскольку наша цель в данной задаче — покрыть все ребра графа G наименьшим числом вершин, то стратегия выбора на каждом шаге одной вершины, покрывающей как можно больше оставшихся ребер, нас вполне устраивает. Конечно, в силу NP-полноты задачи ВЕРШИННОЕ ПОКРЫТИЕ нет надежды, что этот эффективный алгоритм будет всегда давать наименьшее вершинное покрытие Но насколько близко оно будет к оптимуму? Применим указанный алгоритм к графу, представленному на рис. 17.2. Вначале выбирается одна из вершин аь а2 или а3 степе- степени 5, скажем аи затем а2, затем а3 и, наконец, clt c2, с3, с4 и съ. Полученное вершинное покрытие состоит из восьми вершин. Однако оптимальное вершинное покрытие содержит всего пять вершин:
17.1. Эвристики для задачи о вершинном покрытии 419 {&i, b2, b3, bit Ьъ). Если обобщить этот пример и взять граф с п вершинами типа а, п+2 вершинами типа Ь и п+2 вершинами типа с (и ребрами [с/, Ь,] и [at, bj] для всех i, /), то в новом графе алгоритм 1 Рис. 17.2. найдет покрытие из 2п+2 вершин, тогда как оптимальное покры- покрытие содержит только п+2 вершин. Поскольку значение п не огра- ограничено сверху, ошибка может стать сколь угодно близкой к 100%. Наихудший ли это вариант для данной эвристики или может получаться ошибка даже большая? Судя по приведенному на рис. 17.3 примеру, это действительно возможно. Вначале вершина а, имеет максимальную степень, а именно 5. После удаления а7 вер- вершина а6 имеет наибольшую степень, затем аъ и т. д. На каждом шаге среди вершин с наибольшей степенью имеется некоторая вершина типа а, которая и удаляется. В заключение вершинное покрытие дополняется, скажем, всеми вершинами типа с. В этом решении 13 вершин, тогда как оптимальное решение {blt Ьг, b3, bit bs, be} 14*
420 Гл. 17. Приближенные алгоритмы содержит только 6 вершин. Отклонение от оптимума превышает 100%. Чтобы обобщить контрпример, приведенный на рис. 17.3, необ- необходимо вначале понять его структуру. Его можно рассматривать как 6 ребер [сь ft,-], j = l,. . ., 6, к которым следующим образом добавлены вершины типа а. Сначала 6 вершин типа Ь разбиваются на три пары и вершины каждой пары соединяются с некоторой вер- вершиной типа а. Затем вершины типа Ь разбиваются на две тройки и опять все вершины каждой тройки соединяются с новой вершиной типа а. То же самое делаем с четверками, пятерками и т. д., возмож- возможно выбрасывая некоторые вершины типа Ь и добавляя каждый раз новую вершину типа а для каждого множества в каждом разбиении. Нетрудно видеть, что при применении алгоритма 1 к полученному графу вершина с наибольшим номером среди оставшихся вершин типа а всегда имеет наибольшую степень. Таким образом, получае- получаемое вершинное покрытие содержит L(n)+n вершин, где L(n) — число вершин типа а в данном графе, а оптимальное вершинное покрытие состоит из п вершин типа Ь. Следовательно, алгоритм 1 дает относительную ошибку L (пIп. Заметим, что Цп) =^jzl |_ n/j J . Как видно из„табл. 17.1, L(n)ln может расти очень сильно. В дей- действительности это отношение растет как In п. Следовательно, на первый взгляд правдоподобный алгоритм 1 для построения вершин- вершинного покрытия не имеет фиксированной границы для получаемой в результате относительной (т. е. в процентах) ошибки. Можно построить примеры, в которых он ведет себя как угодно плохо! Можно ли предложить эвристику для задачи ВЕРШИННОЕ ПОКРЫТИЕ с ограниченной относительной ошибкой? Рассмотрим алгоритм, представленный на рис. 17.4. Получаемое в результате множество вершин С является, оче- очевидно, вершинным покрытием. Согласно определению, любое вер- вершинное покрытие должно покрывать все ребра, выбираемые данным алгоритмом. Однако эти ребра не имеют общих вершин, и поэтому все они должны покрываться разными вершинами из вершинного покрытия. Следовательно, любое вершинное покрытие должно со- содержать хотя бы одну вершину каждого выбранного ребра и поэтому мощность никакого вершинного покрытия не может быть меньше, Таблица 17.1 6 10 30 100 1000 ... L (п)/п (о/о) 117 160 267 380 600 чем половина мощности С. Таким образом, относительная ошибка алгоритма 2 не превосходит 100%. Эта наихудшая ошибка действи-
[F_ 17.1. Эвристики для задачи о вершинном покрытии 421 тельно достижима: достаточно взять граф, состоящий из большого числа непересекающихся ребер. На примере задачи ВЕРШИННОЕ ПОКРЫТИЕ и двух пред- предложенных эвристик мы проиллюстрировали общую идею оценки Вход и выход: как в алгоритме 1. begin С:=0; while E ф 0 do выбрать в Е любое ребро fu,v], удалить обе вершины и и v нз G и добавить их к С end Рис. 17.4. Алгоритм 2. эвристики путем анализа ее ошибки в худшем случае. Эти понятия можно формализовать следующим образом. Определение 17.1. Пусть А — задача оптимизации (минимиза- (минимизации или максимизации) с положительной целочисленной функцией стоимости с, и пусть А — алгоритм, который по данной индиви- индивидуальной задаче / задачи А выдает допустимое решение //(/); оптимальное решение задачи / обозначим через /(/) 1). Тогда А называется е-приближенным алгоритмом для задачи А для некото- некоторого ООв том и только в том случае, если для всех индивидуальных задач /. ? Например, алгоритм 2 является 1-приближенным алгоритмом для задачи о вершинном покрытии. Алгоритм I не является е- приближенным алгоритмом ни для какого е>0, поскольку — как было указано — его относительная ошибка будет для подходящих индивидуальных задач превосходить любую константную оценку. Для описания поведения в худшем случае таких алгоритмов, как алгоритм 1, мы будем иногда допускать, чтобы е было функцией входа. Например, если п обозначает число вершин в индивидуальной задаче ВЕРШИННОЕ ПОКРЫТИЕ, то можно показать, что ал- алгоритм 1 является In п-приближенным алгоритмом (задача 2). Это означает, что для всех графов Gen вершинами этот алгоритм вы- выдает множество С, ^удовлетворяющее неравенству \с\ где С — оптимальное вершинное покрытие. 1) Некоторые приближенные алгоритмы содержат не полностью определен- определенные шаги, такие, как предложение в алгоритме 1: неоднозначности разрешать про- произвольным образом, или шаг в алгоритме 2: выбрать произвольное ребро. В таких ситуациях в качестве c(f *(!)) берется самая плохая стоимость, получаемая при применении А к /.
422 Гл. П. Приближенные алгоритмы 17.2 Приближенные алгоритмы для задачи коммивояжера В этом параграфе мы рассмотрим возможность применения идей, описанных в предыдущем параграфе, к задаче коммивояжера (ЗК). Наша цель — построить эффективные алгоритмы, дающие «хоро- «хорошие» приближенные решения для ЗК- К сожалению, в § 17.4 будет доказано, что эта задача для общей (т. е. без ограничений) ЗК, по существу, так же безнадежна, как задача нахождения точного ре- решения. Тем не менее можно показать, что достаточно успешные стратегии существуют для очень естественного частного случая этой задачи. Рассмотрим (пхп)-матрицу расстояний Ыц\ с положительными действительными элементами. Как обычно, считаем, что матрица Ыи] симметрична (т. е. &ц=&ц для всех i, /) и что d/7=0 для всех /. Будем говорить, что матрица Ыц] удовлетворяет неравенству тре- треугольника, если +d^d для всех Неравенство треугольника, по существу, утверждает, что путь из города i в город k через город / не может быть дешевле, чем путь непосредственно из i в k (см. рис. 17.5(а, б)). Это очень естествен- естественно, поскольку посещение города / является дополнительным огра- ограничением, при котором стоимость может только возрасти. Нера- Неравенство треугольника выполняется автоматически, если, например, матрица расстояний порождена метрикой — как в важном частном случае матриц евклидова расстояния, в которых каждый город представляет точку pj на 2-мерной карте с координатами (xj, yj) и dij=[(Xi—XjJ + (у~У]J]1/* (см. рис. 17.5 (в, г) и задачу 17 из гл. 15). Другой важный класс матриц расстояний, для которых нера- неравенство треугольника автоматически выполняется, образуют мат- матрицы замыкания. Будем говорить, что матрица Ыц] — замыкание матрицы [dtj], если dij — длина кратчайшего пути из i в / в полном графе с п вершинами {1, 2,. . ., п), в котором длина ребра [i, j] равна dij. Замыкание (пХп)-матрицы расстояний можно вычислить за время О(п3) с помощью алгоритма Флойда — Уоршелла (§ 6.5). На рис. 17.5F) показано замыкание матрицы, представленной на рис. 17.5(а). Замыкание [dtj] любой матрицы расстояний Ыц] удов- удовлетворяет неравенству треугольника, поскольку если dik>dij+ -\-djk, то dih не является длиной кратчайшего пути из i в k. Неравенство треугольника выполняется также для матриц рас- расстояний, моделирующих структуру стоимости для намного более общих ситуаций. Они включают составление расписаний (где dtj может означать начальные затраты на задание/ при условии,,что
17.2. Приближенные алгоритмы для задачи коммивояжера 423 последним выполнено задание i) и задачи о маршрутах (йц может включать кроме расстояния, близкого к евклидовому, такие ком- компоненты стоимости, как стоимость горючего, затраты на обслу- обслуживающий персонал, время ожидания н т. д.). Как правило, если элементы матрицы расстояний представляют стоимости, неравен- неравенство треугольника автоматически выполняется. Причина того, что эти матрицы расстояний удовлетворяют неравенству треугольника, 0 3 1 5 7 2 3 0 4 1 4 0_ 0 3 3 3 0 6 3 б 0 1 2 4 12 4 0 (б) V\ Pi • • @,1) A,1) /'2 @*0) B,0) (в) "О 1 1 v/5 1 0 v/2 2 I yp. 0 v/2 /5 2 V2 0 W Рис. 17.5. Матрица на рис. (а) не удовлетворяет неравенству треугольника, поскольку, напри- например, d23 > dM + d4.i- Матрица на рис. (б) удов- удовлетворяет неравенству треугольника. На рис. (г) показана матрица евклидовых расстояний для карты с четырьмя точками, показанной на рис. (в). состоит в том, что они на самом деле являются матрицами замыка- замыкания положительных матриц стоимости. Эго свойство может нару- нарушаться, если некоторые из элементов являются выигрышами — т. е. отрицательными стоимостями. Например, если каждое посе- посещение города / дает некоторую «премию», то вполне возможно, что d+dd Определение 17.2. ЗК с неравенством треугольника (или метри- метрическая ЗК) (сокращенно ЗКНТ) —это ЗК, ограниченная на матрицы, удовлетворяющие неравенству треугольника. Если далее ограничить эту задачу на матрицы евклидовых расстояний, получим евклидову ЗК. ? Теорема 17.1. ЗКНТ (в варианте распознавания) NP-полна. Доказательство. Напомним преобразование задачи ГАМИЛЬТО- НОВ ЦИКЛ в задачу ЗК. По данному графу (V, Е) мы построили
424 Гл. 17. Приближенные алгоритмы индивидуальную ЗК (Ыц], \V\) размера |V|X \V\, где du = \, если hi, Vj]^E, и с1ц=2 в противном случае. Сразу же получалось, что в этой индивидуальной задаче имеется обход стоимости \V\ или меньше тогда и только тогда, когда граф G гамильтонов. Заметим, что любая матрица расстояний с элементами 1 или 2, такая, как Ыц], удовлет- удовлетворяет неравенству треугольника. Таким образом, задача ГАМИЛЬ- ГАМИЛЬТОНОВ ЦИКЛ полиномиально преобразуется в ЗКНТ. ? Рис. 17.6. Далее мы приведем два приближенных алгоритма для ЗКНТ. Эти эвристики строят не обход, а эйлеров остовный граф. Будет показано, что при наличии неравенства треугольника такие реше- решения можно преобразовать в обходы, не увеличивая стоимости. Мультиграф (V, Е) — т. е. граф, в котором допускаются крат- кратные ребра, называется эйлеровым, если он содержит замкнутый марш- маршрут (называемый эйлеровым маршрутом), в котором каждая верши- вершина появляется по крайней мере один раз и каждое ребро появляет- появляется ровно один раз. Например, мультиграф, представленный на рис. 17.6(а), эйлеров, поскольку замкнутый маршрут [vi, v6, v1, vs, vb, vit vu v3, v2, vb, v4, y7, vs, v9, v10, vs, v9, Vt, u4, v2, vj проходит no всем вершинам и ровно по одному разу по каждому ребру. Следую- Следующий простой результат, принадлежащий Эйлеру [Ей], является исто- исторически первой теоремой теории графов. Теорема 17.2. Мультиграф G=(V, E) эйлеров в том и только том случае, если а) G связен и б) все вершины из V имеют четную степень. Доказательство. Необходимость этих условий очевидна. Дока- Доказательство их достаточности проведем индукцией по числу ребер в G. Базис индукции — т. е. утверждение для мультиграфа с одной вершиной и без ребер—тривиален. Предположим теперь, что G удов- удовлетворяет условиям а) и б) и, кроме того, все мультиграфы с чис- числом ребер меньшим, чем в G, удовлетворяющие условиям а) и б),
17.2. Приближенные алгоритмы для задачи коммивояжера 425 эйлеровы. Выберем некоторую вершину v в графе G и будем стро- строить маршрут по ребрам графа G, никогда не проходя по одному и гому же ребру дважды, до тех пор, пока снова не встретится вер- вершина v. По свойству б) это всегда будет возможно. Удаляя ребра полученного маршрута из G, приходим к некоторому числу связ- связных компонент. При этом каждая компонента удовлетворяет обоим условиям а) и б) и, следовательно, по предположению индукции является эйлеровым графом. Легко видеть, что эйлеров маршрут в графе G можно получить, «присоединяя» эйлеровы маршруты компонент к исходному маршруту. ? procedure ЭЙЛЕР^) (comment: она выдает эйлеров маршрут в связной компоненте графа G, со- содержащей vs) begin if из V! не выходит ребер then return [vi] (comment: пустой маршрут) else begin начиная из vb строить маршрут в Q, который ни по какому ребру не проходит дважды, до тех пор, пока снова не встретится ух; пусть [vb v2) ..., vn, Vi]— этот маршрут; удалить [vbv2], ..., [vn,Vi] из Q; return [ЭЙЛЕР(у,), ЭЙЛЕР (v2), ..., ЭЙЛЕР(у„), vt] »); end end Рис. 17.7. Из данного конструктивного доказательства достаточности ука- указанных условий вытекает приведенный на рис. 17.7 рекурсивный алгоритм для нахождения эйлерова маршрута в произвольном мультиграфе (V, Я), удовлетворяющем условиям а) и б), за время Э(\Е\). Пример 17.1. Применим процедуру ЭЙЛЕР к графу, изобра- «енному на рис. 17.6(а). Вначале ЭЙЛЕР(и,) может выдать маршрут [vi, ve, у7, vit у,, vs, vb, v4, v,]. Затем вызывается ЭЙЛЕР^), а граф в этот момент имеет вид, приведенный на эис. 17.6F). Пусть выдается, например, маршрут [vlt v3, v2, vt, ^5. y2> vi\- Затем вызывается ЭЙЛЕР (у6), в результате чего вы- выдается [у6, Vi,ve,ve]. ЭЙЛЕР (v-) выдает [у,], ЭЙЛЕР (у4) выдает у4] и т. д. вплоть до вызова ЭЙЛЕР (у8), в результате чего зыдается маршрут [у8, у9, v10, у„]. Остальные вызовы процедуры 9ЙЛЕР приводят к пустым путям; в результате получается эйлеров маршрут [vu v3, v2, vt, vb, v2, vlt vs, w,, va, we, u,, vt, u,, 'e. V», ую. у8. V5, vi, Vi]. D J) Мы подразумеваем, что вызов функции z: = F(G(x), H(y)) означает, )то G вызывается раньше Н. Это важно в тех случаях, когда, аналогично рассматриваемому варианту, функции обладают побочными эффектами.
426 Гл. 17. Приближенные алгоритмы Пусть Ыц\ — матрица расстояний размера пХп, удовлетворяю- удовлетворяющая неравенству треугольника. Эйлеров остовный граф — это эйлеров мультиграф G={V, Е), где V/ = {1, 2,. . ., п). Стоимость графа G равна c(G)=2['. ПеЕ^гу- Теорема 17.3. Если G=(V, E) — эйлеров остовный граф, то за время О(\Е\) можно найти обход т вершин множества V, удовлетво- удовлетворяющий неравенству c(t)^x(G). Доказательство. По предположению в G имеется эйлеров маршрут w. Так как w проходит через все вершины по крайней мере один раз, можно записать w = [aoiia1ii ...iaan], где т = = (t'i, ... in)—обход и а0, а1? ..., ап — последовательности (возможно, пустые) целых чисел из множества {1, ..., п\. (Бу- 1. Для данных [dij] найти минимальное- остовное дерево Т. 2. Построить мультиграф G, используя две копии каждого ребра из Т, 3. Найти эйлеров маршрут в G и вложенный в него обход. Рис. 17.8. Алгоритм дерева. дем говорить, что обход т вложен в G.) Из неравенства треуголь- треугольника следует, что dik < rf,7l + d/i/a -f .. . + djm_,im + djmk для лю- любого m~^\. Следовательно, общая длина маршрута w—которая в точности равна с (G) — не может быть меньше, чем dilC!~\-diti3-\-... ...+dWl = c(T). ? Таким образом, теорема 17.3 утверждает, что при наличии нера- неравенства треугольника задача нахождения кратчайшего обхода экви- эквивалентна задаче нахождения кратчайшего эйлерова остовного графа (обратная импликация очевидна, поскольку обход является част- частным случаем эйлерова остовного графа). Рассмотрим в связи с этим представленный на рис. 17.8 алгоритм для нахождения короткого эйлерова остовного графа и одного из соответствующих вложенных обходов. Теорема 17.4. Алгоритм дерева является 1-приближенным алго- алгоритмом для ЗКНТ. Доказательство. Прежде всего нужно установить, что G эйле- эйлеров, с тем чтобы был возможен шаг 3. Так как граф G содержит остовное дерево Т, то он связен. Кроме того, степени всех вершин в графе G четны, так как они вдвое больше соответствующих сте- степеней в Т. Оценим теперь ошибку. Если с — стоимость кратчайшего об- обхода, то, согласно теореме 17.3, достаточно показать, что c(G)=sC2-c. Но c(G)=2-c(jH), где с(Т) — стоимость минимального остовного дерева. Кроме того, с(Т)^с: это следует из того, что любой обход (включая кратчайший) можно преобразовать в дерево выбрасыва-
17.2. Приближенные алгоритмы для задачи коммивояжера 427 нием ребра, и длина кратчайшего остовного дерева не превосходит длины получаемого дерева. Q Пример 17.2. Пример применения алгоритма дерева приведен на рис. 17.9. Кратчайшее остовное дерево Т показано на рис 17.9(а), (a (б) П, 2, 3, 2, 4, 6, 5,7,5, 6, 8, 10, 9, JO, 8, б, 4, 2, 11 (В) (г) (д) Рис. 17.9. а) Минимальное остовное дерево, б) Эйлеров остовный граф. в) Эйлеров маршрут (подчеркнут выделенный обход), г) I-прибли- I-приближенный обход, д) Кратчайший обход. а граф G — на рис. 17.9F). В графе G мы находим эйлеров маршрут (рис. 17.9(в)) и выбираем в нем по одному вхождению каждого целого числа из множества {1, 2, . . ., п} — по определению эй- эйлерова маршрута каждое целое число появляется в нем по крайней мере один раз. Получающийся в результате обход приведен на рис. 17.9(г). Теорема 17.4 гарантирует, что этот обход является 1-приближенным. На самом деле этот обход всего на 11% длиннее оптимального обхода, приведенного на рис. 17.9(д). ? Насколько плохим может быть поведение этого алгоритма? На рис. 17.10 приведен пример с евклидовыми расстояниями, на котором достигается верхняя оценка ошибки, равная 100%. Кратчайшее остовное дерево Т приведено на рис. 17.10(а). Если взять две копии дерева Т (рис. 17.10F)) и произвольный вложенный обход, то можно
428 Гл. 17. Приближенные алгоритмы получить обход т, приведенный на рис. 17.10(в). Оптимальным об- обходом является обходт, приведенный на рис. 17.10(г). Элементарные вычисления дают Положив R — \, с—Л/п2 и п сколь угодно большим, получаем, что  (б) (в) (г) Рис. 17.10. Нтс(т)=4л, в то время как Птс(т)=2л. Таким образом, ошибка может быть сделана сколь угодно близкой к 100%. Алгоритм дерева, замаскированный во многих вариантах, был из- известен исследователям в данной области многие годы как прибли- приближенный алгоритм для ЗКНТ с наилучшей относительной ошибкой
ЯГ" f 17.2. Приближенные алгоритмы для задачи щмм.ивояжера 429 в худшем случае. Не было известно, существует ли приближенный алгоритм с ошибкой, в худшем случае меньшей, чем 100%; при этом широко было распространено мнение, что в рамках полино- полиномиального времени нельзя достичь лучшей оценки в худшем случае для ЗКНТ. Однако недавно Кристофидес [Ch] нашел следующий простой алгоритм. Алгоритм Кристофидеса работает полиномиальное время. Шаг 1 можно выполнить за время О(п2) (см. § 12.1). Нахождение кратчай- кратчайшего совершенного паросочетания в полном графе (естественно, 1. Найти минимальное остовное дерево Т для матрицы расстояний [,,] 2. Выделить в Т вершины нечетной степени и найти кратчайшее совершен- совершенное паросочетание М в полном графе, содержащем только эти вершины. Пусть G — мультиграф с вершинами {1, 2, ..., п], в который входят все ребра из Т и М. 3. Найти в G эйлеров маршрут и вложенный в него обход. Рис. 17.11. Алгоритм Кристофидеса. с четным числом вершин; заметим, что в Т всегда имеется четное число вершин нечетной степени) — это другой вариант задачи о взвешенном паросочетании из гл. 11, и, следовательно, найти такое паросочетание можно за время 0(п4) с помощью алгоритма, приве- приведенного на рис. 11.5. На самом деле возможен даже алгоритм со сложностью О(п3) (см. задачу 14 из гл. 11). Наконец, шаг 3 можно выполнить за линейное время. Замечательным фактом является то, что результат отличается от оптимального заведомо не более чем на 50%. Теорема 17.5. Алгоритм Кристофидеса является 112-приближен- ным алгоритмом для ЗКНТ. Доказательство. Граф G, построенный на шаге 2,— эйлеров. Для доказательства этого заметим, что, если вершина имеет четную степень в Т, она имеет ту же степень в G. Если она имеет нечетную степень в Т, то в G ей инцидентно одно дополнительное ребро из паросочетания М. При этом граф G, очевидно, связен, так как в качестве подграфа он содержит остовное дерево, а именно дерево Т. Чтобы получить оценку 1/2 для ошибки, вспомним, что граф G состоит из Т и М; поэтому стоимость получаемого обхода т удов- удовлетворяет неравенству с (т)< с (G) =с(Т)+с (М). D7. t) При этом сG)<с(т), A7.2) где т— кратчайший обход. Пусть {iu ii, . . ., iim\ — множество вершин нечетной степени в Г в том порядке, в каком они появляются в т. Другими словами, T=[aoiiaif2 . . . a,2m_1i2ma2m], где все a —
430 Гл. 17. Приближенные алгоритмы последовательности (возможно, пустые) вершин из множества {1, 2, . . ., п}. Рассмотрим два паросочетания на множестве вершин нечетной степени: М1={Ц1, i2], U,, г4] ,. . . [t2m_i, i2m\) и M2={lii, г'31, [it, i6], . . . , [ism. i'il}. По неравенству треугольника (см. рис. О ОЛ12 О 0^1 Рис 17.12. 17.12) с(х)^с(М1)+с(М2). Но М—оптимальное паросочетание, поэтому с(т)^2с(М), или с(М)<<;(т)/2. A7.3) Подставляя A7.2) и A7.3) в A7.1), получаем , . ^, 3 .- i (т)— с (т) . 1 ._, с (т) =^ "о"с (т) или ~ ^ 17- ? • 2 с (т) ^-2 Пример 17.2 (продолжение). На рис. 17.13(а) приведено мини- минимальное остовное дерево Т с вершинами нечетной степени, выде- выделенными кружком, для рассматривавшейся выше карты, изобра- изображенной на рис. 17.9. На рис. 17.13F) приведено кратчайшее паро- паросочетание М на выделенных вершинах, а на рис. 17.13(в) приведен граф G. Эйлеров маршрут в графе G указан на рис. 17.13(г), а соот- соответствующий обход приведен на рис. 17.13(д). Построенный обход чуть-чуть лучше, чем обход, построенный на рис. 17.9 с использо- использованием алгоритма дерева: он отличается от оптимума меньше чем на 8%. Аналогично алгоритму дерева, алгоритм Кристофидеса может асимптотически достигать своей оценки в худшем случае. В при- примере на рис. 17.14(а) приведено кратчайшее остовное дерево Т. В нем только две вершины нечетной степени, поэтому оптимальное паросочетание состоит из единственного ребра. Получаемый в ре- результате эйлеров граф является обходом, и, следовательно, шаг 3
l_ 17.2. Приближенные алгоритмы для задачи коммивояжера 431 (а) 16) 8 Ю (в) Ц, 2, 3, 6,1, К), 9, 7, 5, 6, 4, 2, 1 ] Рис. 17.13. »i h (б) Рис. 17.14.
432 Гл. 17. Приближенные алгоритмы тривиален. Построенный таким образом обход имеет общую длину Зп, тогда как кратчайший обход (рис. 17.14F)) имеет длину 2+1 Поэтому ошибка может быть как угодно близкой к 1/2. 17.3 Приближенные схемы Задача 0-1-РЮКЗАК была определена в гл. 15 следующим обра- образом : Для данных положительных целых си с2, . . . , с„ и/(выяснить, существует ли в множестве {1, 2, . . . , п) такое подмножество S, что 2/C Задачу 0-1-РЮКЗАК можно решить с помощью псевдополиноми- псевдополиномиального алгоритма, являющегося модификацией алгоритма для за- задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК, приведенного в § 16.2. Снова строим орграф G(cu с2, . . . , сп; K)=(V, А), где1/={0, 1, .... К}, 1. Пометить вершину 0. 2. Для /=1, 2 п выполнить: для каждой помеченной вершины v пометить вершину и, такую, что (к, и) €-4/. 3. Заключить, что данная индивидуальная задача имеет решение в том и только в том случае, если К помечено Рис. 17.15. Алгоритм ДП-1. Л=Л,иЛ2и . . . \}Ап и Лу = {(и, u)eV2: u—v=Cj). Затем приме- применяем алгоритм, приведенный на рис. 17.15. Этот алгоритм является примером очень общего класса методов, называемых обычно динамическим программированием (см. § 18.6). Лемма 17.1. Пусть Му- — множество помеченных вершин после j-го выполнения шага 2 в алгоритме, приведенном на рис. 17.15. Тогда Mj={v?V: существует такое множество Ss{l, 2,. ..,/}, что Доказательство. Докажем эту лемму индукцией по /. Она, оче- очевидно, справедлива для /=0. Для проведения шага индукции рас- рассмотрим /-ю итерацию, />0, и представим Mj в виде MJ=Mj_1 и B/t где Bj = {u: v?Mj_x и (v, и)€^у} = = {м: v?M/_1 и u = v + Cj\.
17.3. Приближенные схемы 433 .Тогда по предположению индукции = <v?V: существует такое множество S's{l, 2, ... , /—1}, что либо 2 ct = v, либо 2 c! + c,= v\ = iSS' leS' I = <v?V: существует такое множество Ssjl, 2, ...,/}, что 2с 16S 1 Теорема 17.6. Алгоритм ДП-I корректно решает задачу 0-1- РЮКЗАК за время 0(пК). Доказательство. Корректность алгоритма следует непосредст- непосредственно из леммы: /С помечено тогда и только тогда, когда в множестве {1, 2, . . . , п) существует такое подмножество S, что 2/6sCy=/e. Для получения временной оценки заметим, что каждое выполнение шага 2 требует О (/() времени, так как помечено не более К, вершин. ? Пример 17.3. Рассмотрим индивидуальную задачу A1, 18,. 24, 42, 15, 7; 56). Применяя наш алгоритм, построим следующие мно- множества: М,: {0,11} Мг: {0,11,18,29} Л/,: {0,11,18, 24, 29, 35, 42, 53} Л/4:{0,11,18,24,29, 35,42, 53} Л/5: {0, 11,15, 18, 24, 26, 29, 33, 35, 39, 42, 44, 50, 53} М(: {0, 7,11, 15,18, 22, 24, 25, 26, 29, 31,33, 35, 36, 39,40, 42, 44, 46, 49, 50,51,53} Таким образом, множество Mj содержит всевозможные суммы целых чисел из множества {си с2, . . . , су}, не превышающие /С. Поэтому алгоритм ДП-I можно рассматривать не как процесс рас- расстановки пометок в графе, а как процесс построения подмножеств Mj, что проиллюстрировано на рис. 17.16. В результате получаем, что рассматриваемая индивидуальная задача не имеет решения, поскольку 56(?Л1в. ? Определим теперь следующую близкую задачу оптимизации. ОПТИМИЗАЦИОННЫЙ 0-1-РЮКЗАК Даны целые числа (wu . . . , wn\ cu . . . , сп\ К). Требуется максимизировать Z
434 Гл. 17. Приближенные алгоритмы при условии Не теряя общности, будем считать, чтоw^K, /=1, . . . , п. На- Напомним, что в нашем определении задач оптимизации они определя- определяются через два алгоритма: ЛГ (проверяющий, является ли решение допустимым) и Лс (вычисляющий стоимость допустимых решений). 1. М„ = {0}. 2. Для / = 1, 2, ..., п выполнить: Mj=0; для каждого целого числа с из Mj_1 добавить к /И у целые числа с и c-\-Cj, если они не превышают К и еще не входят в Mj\ 3. Заключить, что данная индивидуальная задача имеет решение в том и только в том случае, если К?Мп. Рис. 17.16 Алгоритм ДП-11. Таким образом, индивидуальная задача оптимизации представляется множеством параметров S для dF — в нашем примере задачи ОПТИМИЗАЦИОННЫЙ0-1-РЮКЗАК5 = {ш,,а;2, . . . , wn,K}~ и множеством- параметромQ дляЛс, в нашем примере {сь ... , сп}. В данный момент важно отметить, что в задаче ОПТИМИЗАЦИОН- ОПТИМИЗАЦИОННЫЙ 0-1-РЮКЗАК множества S и Q не пересекаются. Другими словами, допустимость и стоимость определяются совершенно раз- различными множествами параметров. . Можно ли решить задачу ОПТИМИЗАЦИОННЫЙ 0-1-РЮКЗАК с помощью псевдополиномиального алгоритма, аналогичного ДП-П (рис. 17.16)? Идея, естественно, могла бы состоять в построении множества М, всех целых чисел, представимых в виде суммы 2{=1*(СЬ где ^i=1XtWt^K и Х;=0 или 1, и выборе затем наиболь- наибольшего целого числа в Мп. Однако есть одна трудность. В алгоритме ДП-П множество Му- не содержало повторяющихся копий целых чисел; если два подмножества множества {1, 2, . . . , /} имели одну и ту же сумму элементов с;, то они не различались. Однако в рас- рассматриваемой задаче двум подмножествам S и S' множества {1,2,...,/} может соответствовать одна и та же сумма элемен- элементов сь но различные суммы элементов wt. Ключевым замечанием здесь является то, что если 2 с,- = 2 с,- и 2 ^; < 2 v»i igS isS' leS isS' (другими словами, S и5' — частичные решения с одинаковой стои- стоимостью, но различными весами), то можно выбросить S', частичное решение с большим общим весом. Интуитивно это вытекает из того что если S' и Т — допустимое решение, где 71s{/+l, . . . , п), тс S и Т также допустимое решение с той же стоимостью х). Это приво х) В дальнейшем мы встретимся с примерами таких отношений доминировани. среди частичных решений задач в гл. 18 при рассмотрении метода ветвей i границ,
17.3. Приближенные схемы 435 |дит к алгоритму для задачи ОПТИМИЗАЦИОННЫЙ 0-1-РЮКЗАК, ^приведенному на рис. 17.17. ,\. Положить /Ио = {@, 0)}. Г2. Для / = 1, 2, ..., п выполнять шаги а) —в) ; а) Положить /Иу=0. ' б) Для каждого элемента (S, с) из M/_i добавить к Mj элемент (S, с), а также элемент (?М{/}> '' + су), если ^ щ),-+Ш/< К. в) Найти в Mj пары элементов (S, с) и E, с') с одной и той же второй компонентой. Для каждой такой пары удалить (S',c), если J wi^= i 6 S' j ^ 2 Щ1'> и удалить (S, с) в противном случае. ieS •3, Оптимальным решением является S, где (S, с) — элемент из Ми с наиболь- наибольшей второй компонентой. Рис. 17.17 Алгоритм ДП-П1. Лемма 17.2. Пусть (S, c)fM •¦ чонце выполнения алгоритма ДП-111. Тог^а a) S={1, 2, ... , /}; б) 2] ^=с; в) Ь,а; г) если (S1, c)?Mj, то S'=S; д) если S' ?= {1, 2, ...,/} ы 2j с,- = с, /по 2 да( ^ 2j ^; F S' i € S 16 S' е) кроме того, если Sgll, 2, ..., /[ м ^i w, ^.К, iS' j С{ = с, то найдется пара (S', t) S Доказательство. Доказательство проведем индукцией по /. Все утверждения тривиально выполняются для /=0. Для проведе- проведения шага индукции рассмотрим некоторое />0 и E, с)^Мг Возмож- Возможны два случая. Случай 1. j(?S. Тогда пара E, с) была перенесена на шаге 2F) из My_f, поэтому свойства а), б), в) и г) вытекают из предположения индукции. Случай 2. j?S. Тогда E—{/}, е—of)^M/_i. Свойства а), б), в) и г) снова выполняются. Для доказательства свойства д) предположим, что S ф S'. Возможны три случая. Случай 1. /(?5, 5'. Тогда (S, с) и (S', с) входили также в My_j и по предположению индукции S = S'.
436 Гл. 17. Приближенные алгоритмы Случай 2. j?S, S'. Тогда (S—{/}, с—с,), (S' — {/}, с—с,.) € €M;_j, и, следовательно, по предположению индукции S = S'. Случай 3. j(-S, но j^S' или наоборот. Тогда пара E', с) была удалена на шаге 2(в), и свойство д) выполняется. Для доказательства свойства е) воспользуемся индукцией по maxS. Оно выполняется для S—0; для проведения шага ин- индукции допустим, что k = maxS. Тогда, по предположению индук- индукции, в Мк_1 имеется элемент (S', с—ск). Поэтому на шаге 2F) при построении Mk к Mk был добавлен элемент (S'Kj{k\, с). Тогда либо сама эта пара входит в М;., либо в Mj имеется не- некоторый элемент E", с). В обоих случаях свойство е) выпол- выполняется. ? Теорема 17.7. Алгоритм ДП-Ш решает задачу ОПТИМИЗА- ОПТИМИЗАЦИОННЫЙ ОЛ-РЮКЗАК за время 0(п2с), где с ~ значение опти- оптимальной стоимости. Доказательство. Корректность алгоритма следует непосред- непосредственно из леммы: поскольку в алгоритме ДП-Ш на шаге 3 в каче- качестве оптимума выбирается первая компонента S элемента из Мп с наибольшей второй компонентой с, то это S допустимо (по свойству в)), его стоимость равна с (по свойству б)) и нет более хороших допустимых решений (по свойству е)). Для получения временной оценки заметим, что мощность каждо- каждого множества М/_1 не превосходит с, так как в Му-1 нет двух эле- элементов с одинаковой второй компонентой (по свойству г)). Каждую операцию перестройки на шаге 2F) можно выполнить за время О (п), и нужно повторить ее для всех 0(с) элементов из MJ-_1. Шаг 2(в) также требует О(пс) времени, так как его можно реализовать одно- одновременно с шагом 2F): для этого все элементы множества Му- хра- хранятся в массиве длины с, занумерованные по второй компоненте, и каждый раз, когда производится попытка вставить на то же место второй элемент, вычисляются и сравниваются суммы весов wt и удаляется элемент, имеющий большую сумму. Теорема доказа- доказана. ? Пример 17.4. Рассмотрим следующую индивидуальную задачу ОПТИМИЗАЦИОННЫЙ 0-1-РЮКЗАК: АГ=5 При выполнении алгоритма ДП-Ш порождаются следующие мно- множества: 1 Wj { 1 6 2 1 И 3 3 17 4 2 3 5 2 9
17.3. Приближенные схемы 437 М} = {{0, 0), ({!}, 6), ({2}, 11), ({1, 2], 17), ({1, 3}, 23), ({2, 3}, 28), ({1,2,3}, 34)} М4 = {@,0), ({4}, 3), ({1}, 6), ({1,4}, 9), ({2}, 11), ({2, 4}, 14), ({Г, 2}, 17), ({1, 2, 4}, 20), ({1, 3}, 23), ({2, 3}, 28), ({1, 2, 3}, 34)} М, - {@, 0), ({4}, 3), ({1}, 6), ({5}, 9), ({2}, 11), ({4, 5}, 12), ({2,4], 14), (A, 5), 15), ({1, 2}, 17), ({1,4, 5}, 18), ({2, 5}, 20), ({1, 3}, 23), (A,2,53,26), (B,3}, 28), ({1,2,3], 34)} Поэтому оптимальным подмножеством является подмножество {1, 2, 3}, для которого 2/6SCy=34. ? До сих пор мы имели дело с нахождением точного оптимума в задаче ОПТИМИЗАЦИОННЫЙ 0-1-РЮКЗАК. Однако оказыва- оказывается, что можно отказаться от точности в обмен на эффективность. Для иллюстрации этого предположим, что мы хотим решить сле- следующую индивидуальную задачу: К= 10 Если к этой задаче применить алгоритм ДП-Ш, то в результате получим, что оптимальным решением является подмножество S = {1, 2, 3, 6, 7}, для которого ^/ssc/=777; однако при этом алгоритм пройдет через утомительное построение 91 пары (S, с). Очень естественная идея упрощения задачи состоит в игнорирова- игнорировании последнего десятичного разряда параметров с;; в результате приходим к следующей индивидуальной задаче: АГ== 10 Хотя эта индивидуальная задача дает проигрыш в точности, она дает выигрыш в эффективности. Алгоритм ДП-Ш для нее приводит к оптимальному решению S' = {1, 3, 4, 6} с суммой 2,ss'C/=740 (отличие от оптимального решения около 5%) после построения только 36 пар. В задачах большего размера при более сильных округлениях выигрыш может быть более разительным. Кроме того, эта сумма 740 соответствует еще лучшей сумме в исходной задаче — / WJ CJ 1 4 299 2 1 73 3- 2 159 4 3 221 5 2 137 6 1 89 7 2 157 J У) С) 1 4' 290 2 1 70 3 2 150 4 3 220 5 2 130 6 1 80 7 2 150
438 ¦ Гл. 17. Приближенные алгоритмы а именно 2/sS<c/=768. На самом деле мы могли заранее догадаться, что округление не даст слишком большой ошибки. Для доказатель- доказательства этого предположим, что S и S' — оптимальные решения соответственно исходного и округленного вариантов. Тогда имеют место следующие неравенства: 2с, > 2 с,^ 2 с,> 2с,-> 2 (с, — Ю) > ^ с,—л-10. /eS /eS' /eS' /eS jeS /eS Поэтому ошибка 2/esCy—2/es'C/> не превосходит я-10 (в нашем случае 70). В общем случае если при округлении отбросить по- последние t десятичных разрядов в числах Cj, то отклонение от оптимального решения не будет превышать я-10*. Вычислим теперь выигрыш в сложности выполнения алгоритма ДП-1П, получаемый при использовании округления. Пусть ст — наибольший коэффициент среди Cj. Время, необходимое для работы алгоритма ДП-1П в исходной задаче, не превосходит О(я3ст); после отбрасывания t разрядов оценка принимает вид О(п3с тЮ~{), так как с, фактически разделились на 10*. Интересно-отметить, что при любом t алгоритм ДП-П1, приме- применяемый к индивидуальным задачам, в которых последние t разрядов в числах cf отброшены, является к-приближенным алгоритмом, где е—п\0'/ст. Это вытекает из того, что е/ Следовательно, для каждого цанного значения е можно построить е-приближенный алгоритм для задачи ОПТИМИЗАЦИОННЫЙ 0-1-РЮКЗАК с временем работы О(я*/е). Этот алгоритм включает в себя отбрасывание последних t= log1Q( — ] раз- разрядов и применение затем алгоритма ДП-П1. Такое благоприят- благоприятное положение дел, естественно, требует определения. Определение 17.3. Будем говорить, что алгоритм является поли- полиномиальной приближенной схемой (ППС) для задачи оптимизации А, если по данным индивидуальной задаче А и е>0 он выдает е- приближенное решение за время, ограниченное полиномом (завися- (зависящим от е) от длины индивидуальной задачи. ? Следовательно, выше мы описали ППС для задачи ОПТИ- ОПТИМИЗАЦИОННЫЙ 0-1-РЮКЗАК; полином, зависящий от е, имеет вид р,, (п) = A/е)-п4. Таким образом, оценка полиномиальна от- относительно п и 1/е. Это очень удачная ситуация, поскольку определение 17.3 допускает, например, полиномы вида pt (n) = ni/R2 или н2>/е. Чтобы понять разницу, вычислите во всех трех слу- случаях pOtt(n). В задаче 4 приведены реальные примеры таких
17.3. Приближенные схемы 439 ШПС. Для различения этих двух типов схем добавим вторую гчасть к определению 17.3. Определение 17.3 (продолжение). ППС называется полностью полиномиальной приближенной схемой (ПППС), если время ее ра- работы ограничено полиномом как от длины индивидуальной задачи, так и от 1/е. ? Можно следующим образом суммировать наши обсуждения. . Теорема 17.8. Алгоритм ДП-IV, приведенный на рис. 17.18, это ПППС для задачи ОПТИМИЗАЦИОННЫЙ 0-1 -РЮКЗАК 1. Пусть ст — наибольшее из чисел Cj. 2. Положить t~ [_ log10 (гст/п) J. 3. ДЛЯ /=1, ..., П ВЫПОЛНИТЬ Cjl=\_ Су/10' J • 10'. 4. Применить ДП-П1 к индивидуальной задаче (wi,...,wn; cx, с2 с~п\ К). Рис. 17.18. Алгоритм ДП-IV. Попробуем теперь выделить те черты задачи ОПТИМИЗАЦИОН- ОПТИМИЗАЦИОННЫЙ 0-1-РЮКЗАК, которые позволили нам преобразовать псевдо- псевдополиномиальный алгоритм ДП-Ш в ПППС ДП-IV. Важным свой- свойством этой задачи является то, что, как отмечено выше, в любой индивидуальной задаче параметры S = {wit. . ., w,,, К}, связанные с проверкой на допустимость, не пересекаются с параметрами Q= = {с1,. . ., сп},используемыми для вычисления стоимости. Ключевой момент — это то, что сложность алгоритма ДП-Ш ограничена не только полиномом от |/| и num(/), но и, в частности, полиномом от |/| ист, наибольшего числа среди cf. Еще одним свойством регуляр- регулярности, которое делает возможной теорему 17.8, является тот факт, что оптимальная стоимость с, и ст полиномиально связаны через |/|; т. е. для некоторых двух полиномов рх и рг имеют место нера- неравенства C/<Pi(|/|, Ст) И Ся,<р,(|/|, С,). Наконец, еще одна важная черта — это то, что стоимость произволь- произвольного фиксированного допустимого решения является линейным функционалом относительно коэффициентов с}. Мы оставляем чита- читателю в качестве упражнения установить, что алгоритм ДП-IV яв- является в. действительности примером намного более общего метода построения ПППС по некоторому псевдополиномиальному алгорит- алгоритму. Теорема 17.9. Пусть все индивидуальные задачи /=E, Q) для тдачи оптимизации А таковы, что Q = {qu- ¦ ¦, qn) — это множе- множество целых чисел, и а) оптимальная стоимость с; для данной индивидуальной задачи удовлетворяет при некоторых полиномах рх и р2 неравенствам с{^
440 Гл. 17. Приближенные алгоритмы y( Я) U Q^pa(U\, с/), где q — наибольшее целое число, появля- появляющееся в Q; б) стоимость с (/, Q) для любого данного допустимого решения f является линейным функционалом от {qlt. . ., qn}\ в) задачу А можно решить с помощью некоторого алгоритма, время работы которого ограничено величиной рз{\1\, q), где р3 —не- —некоторый полином. Тогда для А имеется ПППС. Отметим, что условия а) и б), несмотря на их технический вид, справедливы для многих задач оптимизации. 17.4 Отрицательные результаты Для некоторых комбинаторных задач оптимизации теорию Л^Я-полноты можно применять для доказательства не только того, что эти задачи невозможно точно решить полиномиальными алго- алгоритмами (если Р ф NP), но также и того, что для них не существует е-приближенньГх алгоритмов для различных областей изменения е (опять, если Р Ф NP). В этом параграфе мы докажем три показа- показательных результата такого сорта. Первая теорема касается общей ЗК. Теорема 17.10. Если Р ф NP, то не существует е-приближен- ного полиномиального алгоритма для ЗК при любом е>0. Доказательство. Допустим, что существует е-приближенный по- полиномиальный алгоритм Ле для ЗК при некотором е>0. Докажем, что тогда имеется полиномиальный алгоритм ЛГЦ, решающий задачу ГАМИЛЬТОНОВ ЦИКЛ. Так как эта задача NP-полна, то отсюда будет следовать наша теорема. Алгоритм <ЛГ11 работает следующим образом. По произвольному данному графу G = (V, Е) он строит индивидуальную ЗК с \V\ городами. Расстояние di;- берется равным 1, если [i, j] — ребро графа G; в противном случае d,y=2+e|l/|. Затем ЛГ1Х применяет к этой индивидуальной задаче1 предполагаемый алгоритм Лг. Мы утверждаем, что алгоритм ЛЕ выдаст обход стоимости \V\ тогда п только тогда, когда в G имеется гамильтонов цикл; отсюда будет вытекать, что алгоритм ЛГ1Х корректно решает задачу ГАМИЛЬТО- ГАМИЛЬТОНОВ ЦИКЛ за полиномиальное время. В одну сторону наше ут- утверждение очевидно. Если Лк выдает обход стоимости \V\, это оз- означает, что существует обход, использующий только расстояния 1, так как в этой индивидуальной ЗК кратчайшее расстояние равно 1. Таким образом, в G имеется гамильтонов цикл. Для доказательства обратного утверждения предположим, что ЛЕ выдает обход длины, большей, чем \V\, но в G существует все же гамильтонов цикл. Длина этого обхода должна быть не меньше, чем
17.4. Отрицательные результаты 441 ()l! поскольку следующее по длине расстояние после 1 — это 2+е|У|. С другой стороны, так как в G имеется гамильтонов -цикл, то оптимальный обход имеет длину |V|. Поэтому обход, вы- выданный алгоритмом <Лг, не является е-подоптимальным, так как I V I |V Пришли к противоречию. ? Напомним, что для ЗКНТ имеется 1/2-приближенный алгоритм (см. § 16.2), который умно использует неравенство треугольника. Теорема 17.10 показывает, что для общей задачи невозможны е- приближенные алгоритмы — даже при е = 1000. Следующий результат касается максимизационного варианта задачи КЛИКА: в данном графе найти наибольший полный подграф. Для доказательства следующей теоремы нам потребуются вначале некоторые факты из теории графов. Определение 11.4. Пусть G=(l/, Е) — некоторый граф. Граф G2 — (V2, Е2) — это граф с множеством вершин 1/2 = 1/Х V и множе- множеством ребер E2 = {[(v, и), (v', и')]: либо v—v' и[м, и']?Е, либо [v, v']^E). Например, если G — граф, изображенный на рис. 17.19(а), то G2 — это граф, приведенный на рис. 17.19F) (связки ребер явля- являются полными двудольными графами). ? Следующая лемма устанавливает связь между этой конструкцией и задачей о клике. Лемма 17.3. BG имеется клика размера k тогда и толькотогда когда в G2 имеется клика размера k2. Доказательство. Пусть в G имеется клика C—{vi, v2,. . ., vh}. Тогда в G2, очевидно, имеется клика С2 = {(у, и) : v, u?C) раз- размера k2. Для доказательства в обратную сторону предположим, что bG2 имеется клика С2 размера k2, но в G нет клики размера k. Множество D = {v : 3u?V, такое, что (v, u)?C2], очевидно, является кликой в G; поэтому |?>|^&—1. Следовательно, одно из \D\ множеств Fv~ = {и : (у, и)?Е} для v?D должно содержать k или более вершин. Нетрудно видеть, что такое множество также является кликой; этим лемма доказана. ? Теорема 17.11. Если для задачи о клике имеется полиномиаль- полиномиальный г-приближенный алгоритм для некоторого 1>е >0, то для нее имеется полиномиальный г-приближенный алгоритм для всех х) Так как задача о клике является задачей максимизации, то имеет смысл рассматривать только относительные ошибки в, меньшие 1.
442 Гл. 17. Приближенные алгоритмы Доказательство. Пусть для задачи о клике для некоторого е>0 имеется полиномиальный е-приближенный алгоритм Ле. Построим вначале, используя Лг, полиномиальный б-приближен- ный алгоритм Л6, где б < е. Алгоритм Ав работает следующим образом. По данному графу G он строит G2 и затем при- применяет к нему алгоритм ЛЕ. По клике С2 графа G2 он вы- выбирает наибольшее из множеств D и Fv для v?D, как в дока- доказательстве леммы. Полученное в результате множество С яв- является кликой графа G и удовлетворяет неравенству |[/]
17.4. Отрицательные результаты 443 Пусть теперь k—размер наибольшей клики в G; тогда по лемме наибольшая клика в G2 содержит № вершин. Так как алгоритм Ле является е-приближенным, то *2~]С21 <е или |С2|>?2A — е). Отсюда и поэтому алгоритм Ло является б-приближенным, где б = Если этот процесс повторяется рекуррентно г раз, получаем 6-приближенный алгоритм для 6=1 — A—e)l/2'- Выбирая г на- настолько большим, чтобы выполнялось неравенство or ^ 'og('-e) ^ log A-6)' получаем требуемый полиномиальный 6-приближенный алго- алгоритм. Таким образом, для задачи о клике существуют две крайние воз- возможности: либо для нее нет е-приближенного алгоритма, аналогич- аналогично общей ЗК, либо для нее имеется ППС. Может ли для нее быть ПППС? Следующий результат показывает, что не может. Теорема 17.12. Пусть задача оптимизации А обладает следую- следующими свойствами. а) Вариант распознавания для А является сильно NP-полным. б) Для любой индивидуальной задачи I задачи А оптимальная стоимость удовлетворяет неравенству с,^. р(пшл(/)) для некото- некоторого полинома р(п). Тогда если Р Ф NP, то для А не существует ПППС. Доказательство. Предположим, что для А существует ПППС. Гогда мы построим псевдополино.миальный алгоритм Л\у, кото- эый решает А. Так как вариант распознавания для А является :ильно iVP-полным, этим (согласно теореме 16.4) доказательство эудет завершено. Алгоритм Л у для данной индивидуальной задачи / 5адачи А просто вызывает ПППС для А с относительной ошибкой е^= = l/(p(num(/)) + l). Так как оптимальная стоимость ограничена величиной p(num(/)), то только точное решение задачи / может зыть е-приближенным, и, следовательно, алгоритм Лх? точно ре- иает задачу А. Чтобы показать, что Лцг — псевдополиномиальный алгоритм, напомним, что время работы ПППС не превосходит g(\I\, 1/е) для некоторого полиномад. Поэтому время работы алгоритма 4чг ограничено величиной q(\I\, р(пшп(/)) + 1), которая является юлиномом от |/| и num(/). ?
444 Гл. 17. Приближенные алгоритмы Задачи 1. В лемме 15.4 было доказано, что задачи ВЕРШИННОЕ ПОКРЫТИЕ, КЛИКА и НЕЗАВИСИМОЕ МНОЖЕСТВО эквивалентны. Можете ли вы в связи с этим преобразовать алгоритм 2 из § 17.1 в приближенные алгоритмы для задач КЛИКА и НЕЗАВИСИМОЕ МНОЖЕСТВО? Почему нет? (Примечание. Трудно разработать теорию приближенных алгоритмов, которая бы шла параллельно теории ЛФ-полноты. Одной из причин этого является чувствительность стоимости даже к очень простым сведениям, примером чему служит данная задача.) 2*. Покажите, что алгоритм 1 для графов с га вершинами всегда выдает вер- вершинное покрытие, размер которого не более чем в In га раз больше оптимального. 3. Гамилыпонов маршрут в графе G=(V, E) — это замкнутый маршрут, ко- который проходит через каждую вершину по крайней мере один раз. а) Покажите, что задача нахождения кратчайшего гамильтонова маршрута в графе yVP-полна (т. е. ЛФ-полным является ее вариант распознавания). б) Приведите 1/2-приближенный алгоритм для этой задачи. 4. Ниже приведен оптимизационный вариант задачи РАЗБИЕНИЕ (вспом- (вспомните следствие 1 из теоремы 15.8). Для данных га целых чисел съ ... , сп найти разбиение множества {1, 2, ... ... , га} на два подмножества St, S2, при котором достигается минимум величины max (ZiieSiCj, ^us,c/)- Рассмотрим следующую эвристику для некоторого фиксированного целого числа к. 1. Выбираемой самых больших чисел cj. 2. Находим оптимальное разбиение этих k целых чисел (Примечание', исполь- используем какой-нибудь переборный метод). 3. Достраиваем это разбиение до разбиения множества {1, 2 га}, рас- рассматривая каждое .из оставшихся су и добавляя его к тому подмножеству, которое в этот момент имеет меньшую сумму. а*) Докажите, что этот алгоритм с временем работы ОB*+га) является 1/B+&)-приближенным. б) Используя п. а), придумайте приближенную схему для этой задачи. Ка- Какова сложность вашей ППС относительно га и 1/е? 5. Докажите теорему 17.9. 6. Покажите, что если РфИР, то для задачи МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ невозможен полиномиальный е-приближенный алгоритм для лю- любого е<1/3. (Указание: вспомните доказательство теоремы 15.5.) 7. Опишите полиномиальный 1/2-приближенный алгоритм для задачи о бро- бродячем торговце (задача 8 из гл. 12) при наличии неравенства треугольника. Комментарии и ссылки Приближенное решение /VP-полных задач в настоящее время является очень активной областью исследований. Несмотря на богатство впечатляющих резуль- результатов, в данной области пока почти нет упорядочения или обобщающей теории. О состоянии исследований в этой области в 1976 г. дает представление работа [QJl] Garey M. R., Johnson D. S. Approximation Algorithms for Combinatorial Problems: An Annotated Bibliography, pp. 41—52 in Algorithms and Com- Complexity: New Directions and Recent Results, ed. J. F. Traub. New York: Aca- Academic Press, Inc. 1976. Обзор приближенных алгоритмов для задач о расписании составлен Грэхемом и опубликован в гл. 5 в книге [Со] Coffman E. G., Jr., ed. Computer and Jobshop Scheduling Theory. New York: Wiley-Interscience, 1976.
Комментарии и ссылки 445 Там можно найти решение задачи 4. Алгоритм 1 (§ 17.1 и задача 2) анализируется в статье [Jo] Johnson D. S. Approximation Algorithms for Combinatorial Problems, JCSS, 9 A974), 256—278. Алгоритм 2 обнаружили независимо Ф. Гаврил и М. Яннакакис. Алгоритм Кри- стофидеса взят из работы [Ch] Christofides N. Worst-case Analysis of a New Heuristic for the Traveling Sa- Salesman Problem, Technical Report, GSIA, Carnegie-Mellon Univ., 1976. Алгоритм дерева известен исследователям давно. Детальный вариант его опуб- опубликован в статье [RSL] Rosenkrantz D. J., Stearns R. E., Lewis P. M. An Analysis of Several Heuris- Heuristics for the Traveling Salesman Problems, J. SIAM Сотр., 6 A977), 563—581. ПППС можно найти в работах [IK] Ibarra О. Н., Kim С. Е. Fast Approximation Algorithms for the Knapsack and Sum of Subset Problems, J. ACM, 22 A975), 463—468. [Lai Lawler E. L. Fast Approximation Schemes for Knapsack Problems, Proc. 18th Ann. Symp. on Foundations of Computer Science, IEEE Computer Soc. A977), 206—213. [Sa] Sahni S. General Techniques for Combinatorial Approximation, OR, 25 A977), 920—936. Теорема 17.10 опубликована в [SG] Sahni S., Gonzalez T. Я-complete Approximation Problems, J. ACM, 23 A976), 555—565. Теорема 17.11 упоминается в [GJ2] Garey M. R., Johnson D. S. The Complexity of Near-Optimal Graph Coloring, J. ACM, 23 A976), 43—49. Теорема 17.12 взята из [GJ3] Garey M. R., Johnson D. S. Strong /VP-completeness Results: Motivation, Examples and Implications, J. ACM, 25 A978), 499—508. Теорема 17.2 — из [Eu] Euler L. Solutio Problematis ad Geometriam Situs Pertinentis, Commentarii Academiae Petropolitanae, 8 A736), 128—140 (in Latin).
18 Метод ветвей и границ и динамическое программирование 18.1 Метод ветвей и границ для целочисленного линейного программирования Метод ветвей и границ основан на идее разумного перечисления всех допустимых точек комбинаторной задачи оптимизации. Ого- Оговорка разумного имеет важное значение, поскольку, что должно быть уже ясно, безнадежно пытаться просто просмотреть все допу- допустимые решения Для более точнрго описания этого подхода можно сказать, что мы пытаемся построить доказательство оптимальности некоторого решения на основе последовательного разбиения про- пространства решений. Слово ветвейв названии «метод ветвей и границ» относится к этому процессу разбиения; слово границ относится к нижним оценкам, которые используются при построении доказа- доказательства оптимальности без полного перебора. В данном параграфе мы разовьем этот метод для задачи ЦЛП, а затем перейдем к более абстрактному изложению. Рассмотрим задачу ЦЛП min г = с'х = с (х), Задача 0: Ах^Ь, . A8.1) х^О целочисленно, Если мы решим задачу ЛП, являющуюся ослаблением данной за- задачи, то получим решение х°, которое, вообще говоря, не будет це- целочисленным. Однако стоимость с(ха) этого решения является нижней границей оптимальной стоимости с(х*) (где х*—опти- х*—оптимальное решение задачи 0), и если бы х° было целочисленным, то задача была бы решена. В алгоритме отсекающей плоскости мы бы сейчас добавили ограничение к ослабленной задаче, при котором не исключаются допустимые решения задачи A8.1). Вместо этого те- теперь мы хотим разбить задачу на две подзадачи, добавляя два взаимоисключающих и исчерпывающих все возможности ограничения. Пусть, например, компонента х\ в х° не целочисленна. Тогда соот- соответствующие две подзадачи имеют вид min z = c'x = с (х), Ах^Ь, Задача 1: х^ 0 целочисленно, ^ */<!_*?_!.
18.1. Целочисленное линейное программирование 447 Задача 2: целочисленно, A8.3) Пример 18.1.Простой пример задачи ЦЛП приведен на рис.18.1(а); решением является точка х* = B, 1) и с(х*)=—(Xi+x2)=— 3. Задача 5 Задача 6 (в) ' (г) Рис. 18.1. Этапы решения задачи ЦЛП методом ветвей и границ. Исходная ослабленная задача имеет решение х°=C/2, 5/2) со стои- стоимостью с (х°)=—4. На рис. 18.1F) приведены две подзадачи, полу- получаемые при выборе нецелочисленной компоненты xJ=3/2 и добав- добавлении ограничений xt<Il и х{^2. Решение исходной задачи должно лежать в допустимой области одной из этих двух задач, поскольку одно из неравенств х\ < L х] J , х* ~> I х°- I 4- 1 Х( j^S |_ Л, J -|- 1 должно быть верным. Выберем одну из подзадач, например задачу 1, и решим ее как задачу ЛП. Ее решение х1, вообще говоря, не будет целочислен- целочисленным, и задачу 1 можно разбить на две подзадачи так же, как мы раз-
448 Гл. 18. Метод ветвей и границ Задача о Задача 3 [4 Задача 5 били задачу 0, получив в результате задачи 3 и 4. Этот неограни- неограниченно продолжающийся процесс можно представить себе как после- последовательное все более мелкое разбиение допустимой области, что проиллюстрировано на рис. 18.2. Каждое подмножество в данном разбиении представляет некоторую подзадачу i с ослаб- ослабленным решением х' и нижней границей zt—c(x') для стоимости произвольного решения в дан- ной области разбиения. Этот процесс можно предста- представить также в виде дерева, что проиллюстрировано на рис. 18.3. Корень этого дерева пред- представляет исходную допустимую б Задача 4 Задачаб Задача 1 Задача 2 Рис. 18.2. Последовательные подраз- подразбиения допустимой области задачи ЦЛП путем добавления неравенств. область, а каждая вершина представляет подзадачу. Раз- Разбиение допустимой области в не- некоторой вершине с помощью добавления неравенств так, как это сделано в A8.2) и A8.3), представляется разветвлением дан- данной вершины на двух ее сыновей. Если допустимая область в исходной задаче ЦЛП ограничена, то этот процесс не может продолжаться бесконечно, поскольку в конце О Рнс. 18.3. Представление подразбиений про- пространства решений бинарным деревом. концов неравенства в некоторой вершине дерева ветвлений приведут к целочисленному решению соответствующей задачи ЛП, которое является оптимальным решением исходной задачи ЦЛП (см. зада- задачу 1). Процесс ветвления в некоторой вершине может нарушаться по одной из двух причин: A) решение задачи ЛП может оказаться целочисленным или B) задача ЛП может оказаться недопустимой.
18.1. Целочисленное линейное программирование 449 Пример 18.1 (продолжение). Если в примере, представленном на рис. 18.1, продолжить ветвление задачи 2, то получим дерево вет- ветвлений, изображенное на рис. 18.4 В правом поддереве получаем три листа, соответствующие двум недопустимым задачам ЛП и од- одной задаче ЛП с целочисленным решением х5=B, 1) со стоимостью 2г,=с(*»)=-3. ? То, что мы описали, включает в себя только процесс ветвления в методе ветвей и границ. Если продолжить процесс ветвления до г, —2.5 Убита решением х$ Рис. 18.4. Бинарное дерево, приводящее к ре- решению задачи. того момента, когда все вершины будут листьями дерева и будут соот- соответствовать либо целочисленным решениям, либо недопустимым задачам ЛП, то лист с наименьшей стоимостью должен быть опти- оптимальным решением исходной задачи ЦЛП. Мы приходим к важной составной части метода ветвей и границ. А именно, предположим, что в некоторый момент наилучшее полностью целочисленное реше- решение, найденное к этому моменту, имеет стоимость гт и мы намере- намереваемся произвести ветвление в вершине, в которой нижняя граница zh=c(xk) больше или равна гт. Это означает, что любое решение х, которое можно получить в качестве потомка решения хк, будет иметь стоимость с (х)^г^гт, и, следовательно, нам не нужно продолжать ветвление из хк. В таком случае будем говорить, что вершина хк убита, и будем называть ее (как можно догадаться) мертвой. (Используется также термин fathomed.) Остальные вер- 15 № 3032
450 Гл. 18. Метод ветвей и границ шины, ветвление из которых еще быть может выгодно, будут назы- называться живыми. Пример 18.1 (продолжение). Обращаясь снова к рис. 18.1 и 18.4, замечаем, что нижняя граница в вершине, соответствующей задаче 1, равна —-2.5, что больше, чем стоимость —3 решения, соответствую- соответствующего вершине 5. Поэтому эта вершина убивается вершиной 5. Так как не остается живых вершин, то вершина 5 должна представлять оптимальное решение. П В этом алгоритме остаются две важные детали, которые нужно уточнить: нужно решить, как выбирать на каждом шаге, из какой вершины проводить разветвление; и нужно'решить, как выбирать, какая нецелая переменная должна определять дополнительное огра- ограничение. Дэйкин [Da] рекомендует проводить разветвление по прин- принципу в глубину для уменьшения объема памяти, необходимой для промежуточных таблиц. Если память не является ограничивающим фактором, то в качестве разумной эвристики может рассматриваться разветвление из живой вершины с наименьшей нижней оценкой. Мы обсудим эту проблему позднее в данной главе в более общем кон- контексте; но вообще относительно этого выбора известно очень мало. Относительно второго выбора (переменной для добавления огра- ограничения) Дэйкин [Dal сообщает, что наилучшая стратегия — это найти то ограничение, которое приводит к наибольшему возраста- возрастанию нижней границы г после выполнения одной итерации двойствен- двойственного симплекс-алгоритма после добавления этого ограничения, и добавить либо это ограничение, либо альтернативное ему ограниче- ограничение IDa]. Обоснованием этого является желание найти ветвь из данной вершины, которая, наиболее вероятно, будет убита, и сохра- сохранять таким образом дерево поиска коротким. Здесь опять нет тео- теорем, дающих наилучшую стратегию, и единственным известным руководством при разработке быстрых алгоритмов этого типа в на- настоящее время являются вычислительный эксперимент и интуиция. Метод ветвей и границ применим не только к задачам, формули- формулируемым в виде задач ЦЛП (или смешанного ЦЛП), а почти к любой задаче комбинаторной природы. Ниже мы построим соответствую- соответствующий алгоритм в очень широком контексте. 18.2 Метод ветвей и границ в общем виде При построении дерева в алгоритме ветвей и границ для задачи ЦЛП нам потребовались две вещи. 1. Ветвление. Множество решений, представляемое вершиной, можно разбить на попарно непересекающиеся множества. Каждое подмножество в этом разбиении представляется сыном исходной вершины. 2. Получение нижних границ. Имеется алгоритм для вычисления нижней границы стоимости любого решения в данном подмножестве.
18.2. Метод ветвей и границ в общем виде 451 Никакие другие свойства задачи ЦЛП не использовались. По- Поэтому рассматриваемый метод можно сформулировать для любой задачи оптимизации, в которой выполняются свойства A) и B), независимо от того, линейна или нет функция стоимости. begin активноемножество:={0}; (comment: "—это исходная задача) U: = oo; лучшеетекущее: — что угодно; while активное множество не пусто do begin выбрать вершину ветвления к из активное множество; удалить вершину к из активное множество; породить сыновей сын i, i=l п^, вершины к и соответствующие нижние границы г\; for i = 1 Пк do begin if ZiS^U then убить сына i else if сын i —полное решение then LJ:=zi, лучшеетекущее:=сын i else добавить сына i к активное множество end end end Рис. 18.5. Основной алгоритм ветвей и границ. Основной алгоритм приведен на рис. 18.5. В нем множество ак- тивноемножество используется для хранения живых вершин в любой момент; переменная U используется для представления стоимости наилучшего полного решения, полученного к данному времени (U является верхней границей оптимальной стоимости). Заметим, что в процессе ветвления может порождаться не два сына данной вершины, как в задаче ЦЛП, а любое конечное число сыно- сыновей. Пример 18.2 (задача о кратчайшем пути). Рассмотрим задачу ¦ о кратчайшем пути в графе с неотрицательными весами дуг. Хотя мы уже имеем эффективный алгоритм ее решения, к ней можно также очевидным образом применить метод ветвей и границ. На рис, 18.6 (а) приведена индивидуальная задача о кратчайшем пути. Для решения этой индивидуальной задачи (задачи 0) методом вет- ветвей и границ производится ветвление путем выбора очередной дуги в пути. Таким образом, подмножество допустимых решений соответ- соответствует всем путям из s в t, начинающимся с уже выбранной после- последовательности дуг. На рис. 18.6F) приведено дерево поиска, полу- получаемое в некоторый момент, при условии, что ветвление на каждом шаге производится в вершине с наименьшей нижней границей. В качестве нижней границы совершенно естественно используется суммарная длина частичного пути до некоторой вершины графа, представляемого данной вершиной в дереве поиска. Например, путь b-g-l приводит нас в вершину с нижней границей 10, равной 15*
Рие. 18.6. Задача о кратчайшем пути и ее реше- решение методом ветвей и границ.
18.2. Метод ветвей и границ в общи виде 453 сумме стоимостей ребер b, g и /. Заметим, что в этом примере до- довольно легко вычислить нижние границы для всех сыновей верши- вершины, в которой производится ветвление. При применении метода ветвей и границ к задаче ЦЛП нам приходилось для получения нижней границы решать задачу линейного программирования, поэтому мы не обязательно искали обе нижние границы непосред- непосредственно при ветвлении, ибо была надежда, что некоторых из этих вычислений можно избежать из-за последующих убийств. На рис. 18.6(в) представлено заключительное дерево поиска для этого примера. Первое полное найденное решение имеет стоимость 8, и оказывается, что оно оптимально. Убитые вершины отмечены под- подчеркиванием снизу соответствующих нижних границ. ? Пример 18.3 (задача коммивояжера) Более реалистическое при- применение метода ветвей и границ дают УУР-полные задачи, такие, как ЗК- Процесс ветвления для ЗК можно сформулировать многими способами; возможно, простейший—это разбиение пространства ре- решений каждый раз на два множества в зависимости от того, входит или не входит данное ребро в обход. Этот подход, вместе с эвристи- эвристикой для получения нижних границ, использовали Литтл и др. [LMSKJ. В другом подходе, приписываемом Истмену [EaJ, используется существование эффективного алгоритма для задачи о взвешенном двудольном паросочетании, или задачи о назначениях (см. гл. 11). Это дает еще один пример представления одной задачи в виде про- простой подзадачи для более сложной задачи. Если положить xtj—\, когда ребро [/,/] содержится в обходе, и хц=0 в противном случае, то обход для ЗК с п городами и с весами Сц должен удовлетворять условиям п minz = 2 cuxi)i Jj*„=!, / = 1, .... л, A8.4) in 2*,7 = i, t= 1, .... п. /=1 Здесь два множества равенств выражают тот факт, что в каждую вер- вершину входит ровно одно ребро и ровно одно ребро выходит из каж- каждой вершины. Эта формулировка (задача о назначениях из § 11.2) недостаточна для адекватного описания ЗК, так как мы не можем быть уверены, что решение будет единым обходом ровно с одним циклом. Поэтому ограничения A8.4) необходимы, но не достаточны для ЗК, и решение задачи A8.4) дает величину г, которая является нижней границей стоимости ЗК- При этом, если решение задачи A8.4) является обходом, тогда эно является решением нашей ЗК- Если решение не является обхо-
454 Гл. 18. Метод ветвей и границ дом, то оно содержит цикл длины, меньшей, чем п, т. е. подобход \хц, х23>. , ., хкх\, такой, что x12=x23=. . .=xftl=l. В ЗК не могут все эти переменные равняться 1, поэтому пространство решений можно разбить на k подмножеств, добавляя каждый раз одно из ограничений х,2=0, х2Я=0,. •-, xhl=0. Это приводит к k задачам, каждая из которых также является задачей о назначениях. (Для исключения ребра Хц из решения достаточно приписать ему очень большую стоимость.) Шаг ветвления проиллюстрирован на рис 18.7. Решение задачи о назначениях содержит подобход дг,:= л,3=...= хкх =1 Рис. 18.7. Шаг ветвления в методе ветвей и границ для ЗК. Нижнюю границу в каждой вершине можно получить, решая задачи о назначениях, соответствующую этой вершине, методом, описан- описанным в гл. 11. ? Пример 18.4 (граница для ЗК, получаемая с помощью остовного дерева). Хелд и Карп [НК1, НК2] описали очень эффективный алгоритм ветвей и границ для ЗК, основанный на вычислении ниж- нижних границ по соответствующим минимальным остовным деревьям. Для этого требуется Определение 18.1. Пусть дан полный графС=(У, Е) с матрицей расстояний Ыц\ и л=|У| вершинами. Тогда \-деревом называется граф, образованный некоторым деревом на множестве вершин {2,, . . ...,«}, плюс два ребра, инцидентных вершине 1. ? Каждый обход является 1-деревом (но не наоборот), поэтому минимальная стоимость 1-дерева является нижней границей стои- стоимости обхода. Кроме того, стоимость минимального 1-дерева легко вычислить (см. задачу 2). Если в алгоритме ветвей и границ для ЗК ветвление производится путем включения и исключения мно- множеств ребер, то подзадачами также являются ЗК, и соответствую- соответствующие задачи об 1-дереве дают нижние границы. Хелд и Карп не оста- останавливаются на этом, а получают более точные нижние границы на основе этой идеи. Предположим, что мы преобразуем ЗК, заменяя ее матрицу расстояний матрицей [с^-+Я;+Я;] для некоторых чисел я*. Тогда стоимость каждого обхода возрастает на 2^=1яг, так как мы входим в кяждую вершину и выходим из каждой вершины ровно один раз. Поэтому такое преобразование не влияет на относительный порядок стоимостей обходов, в частности оптимальный обход остается опти-
18.3. Отношения доминирования 455 мальным. С другой стороны, оптимальное 1-дерево может изменить- измениться. Если степень вершины i в 1-дереве равна бь то стоимость 1-де- 1-дерева после преобразования матрицы расстояний с помощью я будет равна сЧ-2?-1^гяь где с— стоимость 1-дерева относительно исход- исходной матрицы стоимостей Ыц]. Следовательно, если с* — стоимость оптимального обхода, то \ Г " 1 с*+ 2 2"./^ min K+2V/ • t— I по всем L ' = ' J 1-деревьям Это неравенство можно переписать в виде Г " 1 w(n)= min c+ 2 (б,—2) л,- • по вгем [ t=l J I -деревьям Это дает нижнюю границу до (я) для произвольного я; Хелд и Карп усматривают далее задачу максимизации до (я) относительно я, юлучая, таким образом, наилучшую нижнюю границу, возможную 1ри таком подходе. (Следует отметить, что в общем случае с* > >тахлш(л), поэтому имеется «разрыв» между ЗК и указанной :оответствующей ей задачей получения нижних границ.) Граница, полученная в [HK2J, настолько точна, что деревья юиска для некоторых довольно больших задач (до гс=64) удается [редставить полностью. Этот пример показывает важность эффек- ивных нижних границ в методе ветвей и границ, поскольку преды- ,ущий вариант применения этого метода приводил к существенно юльшим деревьям поиска. О 18.3 )тношения доминирования До сих пор единственным вариантом, когда вершина могла сключаться из претендентов на то, чтобы быть предком оптималь- ого решения — т. е. убивалась,— был вариант, в котором нижняя раница оказывалась выше текущей верхней границы. Однако име- тся другой способ убить вершину. Рассмотрим, например, задачу о ратчайшем пути из примера 18.2. Предположим, что в результате етвления мы получили две вершины, определяемые ребрами а, е, q г нижней границей 5) и с, Л (с нижней границей 6). Эти два пути риводят в одну и ту же вершину в исходном графе, и можно ска- ать, что два пути в дереве ветвлений слились. Нет смысла продол- сать путь с, h, поскольку мы достигли той же точки по пути а, е, q меньшей стоимостью. Следовательно, вершину, соответствующую ути с, h, можно убить даже раньше, чем будут получены какие-
436 Гл. 18. Метод ветвей и границ нибудь полные решения. Это пример отношения доминирования; будем говорить, что вершина а, е, q доминирует над вершиной с, h. Ниже представлен один из общих способов определения такого от- отношения. Определение 18.2. Если в некоторый момент можно показать, что наилучший потомок вершины у не хуже наилучшего потомка вершины х, то будем говорить, что у доминирует над х и у может убить х. ? Существование практических алгоритмов для проверки домини- доминирования очень сильно зависит от рассматриваемой частной задачи. 18.4 Стратегии метода ветвей и границ Имеется много вариантов применения алгоритма ветвей и границ к данной задаче; в этом параграфе мы обсудим некоторые из них. Во-первых, имеются варианты в самом ветвлении — может су- существовать много способов разбиения пространства решений, как, например, в ЗК или в общей задаче ЦЛП. Во-вторых, нужно вычислять нижние границы. При этом часто имеется выбор между границами, которые относительно точны, но требуют относительно большого времени вычисления, и границами, которые не столь точны, но которые можно быстро вычислить. СН(х) Рис. 18.8. Возможные способы убивания вер- вершин. Аналогичные противоречия могут существовать и при выборе от- отношения доминирования. Нижние границы и отношения доминирования можно исполь- использовать многими способами. Чтобы объяснить это, обозначим через AS (x) активное множество в тот момент, когда ветвление произво- производится в вершине х, через СН(х) — множество сыновей вершины х в дереве ветвлений и через U (х) — верхнюю границу, являющуюся наилучшей стоимостью полного решения в тот момент, когда ветвле- ветвление производится в вершине х (см. рис. 18.5). На рис. 18.8 пред- представлены четыре возможных способа, какими вершины могут быть убиты: - а) живая вершина из AS (х) может убивать вершины из СН(х); б) вершины из СН(х) могут убивать вершины из AS (x); в), г) верхняя граница U (х) может убивать вершины из AS(x) или СН(х).
18.5. Применение к задаче о расписании для конвейера 457 Здесь опять имеется противоречие при выборе того, что приме- применить: время, затрачиваемое на сравнение СН(х) и AS(x), может в каждой частной задаче быть оправданным или неоправданным. В-четвертых, на каждом шаге ветвления можно выбирать, из ка- какой вершины проводить ветвление. Обычно используются методы «вершина с наименьшей нижней оценкой следующая», «последним пришел — первым ушел» или «первым пришел — первым ушел». Еще одна возможность выбора имеется в начале алгоритма. Часто на практике полезно найти некоторое начальное решение с помощью некоторой эвристической конарукции, аналогичной опи- описанным в гл 17 или 19. Это дает нам исходную верхнюю границу U < оо, что может быть очень полезным для убивания вершин на более ранних шагах алгоритма. Однако, как обычно, мы должны сравнить время, необходимое для этой эвристики, с возможным вы- выигрышем. Наконец, следует упомянуть, что алгоритм ветвей и границ часто останавливается, не достигнув оптимальности, либо ввиду его конструкции, либо по необходимости. В таком случае мы имеем полное решение со стоимостью U, и наименьшая нижняя граница L по всем живым вершинам является нижней границей оптимальной стоимости. Следовательно, относительная ошибка не превосходит (U-L)/L. Теперь должно быть понятно, что метод ветвей и границ — это не один специальный алгоритм, а очень широкий класс алгоритмов. Эффективность его использования зависит от разработки стратегии для частной рассматриваемой задачи и является при этом не только наукой, но и искусством. Обсуждение метода ветвей и границ мы завершим примером его применения к задаче о расписании. 18.5 Применение к задаче о расписании для конвейера Мы опишем сейчас детально применение метода ветвей и границ к задаче о расписании, представляющей большой интерес — а именно к задаче о двухмашинном конвейерном расписании с кри- критерием суммы времен окончания заданий, определяемой следующим образом. Определение 18.3. Даны п заданий Jt, i=\,. . ., п. Каждое зада- задание состоит из двух частей каждую из которых нужно выполнить на одной из двух машин. Для выполнения задания Jj на машине i требуется время ги-, и каждое задание на машине 1 должно быть завершено раньше, чем начнется выполнение соответствующего за- задания на машине 2. Пусть F;y — время окончания задания i на машине /.Сумма времен окончания заданий определяется как сумма времен окончания выполнения каждого задания на машине 2: /= 2WV
458 Гл. 18. Метод ветвей и границ Задача о сумме времен окончания заданий (ЗСВОЗ) состоит в опре- определении порядка выполнения заданий на машинах, при котором/ достигает минимума. ? Пример 18.5. Стандартный пример ситуации, в которой может возникать задача, аналогичная ЗСВОЗ, дает вычислительная ма- машина, выполняющая программы по очереди. При этом задания мож- можно отождествить с индивидуальными программами, машину 1 — с центральным процессором и машину 2—с печатающим устройст- устройством. Тогда можно считать, что нам дано множество заданий с из- известным временем выполнения и печати, и мы хотим упорядочить их так, чтобы сумма времен (или, что эквивалентно, среднее время) окончания заданий была как можно меньше. ? Приведем теперь два важных факта о ЗСВОЗ. Первый, который можно найти в книге Конвея, Максвелла и Миллера [СММ], позво- позволяет ограничиться поиском единой перестановки, определяющей все расписание. Теорема 18.1. Для ЗСВОЗ имеется оптимальное расписание, при котором задания на обеих машинах выполняются в одном и том же порядке без простоев между работами. (Такие расписания называются перестановочными.) Второй, более свежий результат, принадлежащий Гэри, Джон- Джонсону и Сети [GJS], оправдывает серьезное привлечение алгоритма ветвей и границ. Теорема 18.2. Задача ЗСВОЗ NP-полна. (Естественно, имеется в виду соответствующая ЗСВОЗ задача типада-нет о существова- существовании решения, стоимость которого меньше или равна некоторому L.) Пример 18.6. Рассмотрим следующий численный пример с тремя заданиями: Задание 1 Задание 2 Задание 3 Машина 1 Машина 2 На рис. 18.9 приведены все 6 возможных перестановочных расписа- расписаний, среди которых по теореме 18.1 должно лежать оптимальное расписание. Однозначный оптимум имеет стоимость 18. ? Согласно теореме 18.1, наша задача сводится к нахождению од- одной перестановки п объектов, поэтому естественный способ ветвле- ветвления состоит в выборе на первом уровне дерева ветвлений первого
18.5. Применение к задаче о расписании для конвейера 459 задания в расписании, на следующем уровне — второго задания и т. д. Далее требуется подобрать функцию, вычисляющую нижние границы. Игналл и Шрейдж [IS] описали очень эффективный метод вы- вычисления нижних границ, который мы сейчас выведем. Предполо- Предположим, что мы находимся в Машина 1 112 2 2 3 3 некоторой вершине, в ко- Машина2 1 2 3 33 /=19 торой задания из множе- Т t t ства Ms{l,. . .,л} уже Машина 1 1133222 вставлены в расписание, Машина 2 1 з з з 2 /= 18 где |М|=г. Пусть th, k= * Tt = 1,. . ..« — порядковый Машина 1 2221 J зз номер А-го задания в Машина 2 ^ ^ 3 3 3^ /=20 произвольном расписании, Машина 1 2223311 являющемся потомком рас- Машина 2 2 3 33 1 /=21 сматриваемой вершины. t t t Стоимость этого расписа- Машина 1 3 3 112 2 2 ния, которую мы хотим Машина 2 3 3 3 1 2 /= 19 оценить, равна t t J ^ ^ Машина 1 3 3 2 2 2 11 /= 2j ^2,+ 2j Рц- Aо-5) Машина 2 3 3 32 1 /=19 teM iiM t I t Если выполнение каждого РисГ 18-9- Шесть возможных перестановоч- п ных расписании в примере 18.5 и соотьет- задания на машине Z мо- ствуЮ1дИе им стоимости. Стрелки указывают жет начинаться сразу же время окончания работ на машине 2. после завершения ее вы- выполнения на машине 1, то вторая сумма в A8.5) примет вид S*= 2 [Fur + (n-k+\)ru +т ] A8.6) (см. задачу 3). В противном случае St может только возрасти, по- поэтому 2/%,>?,, A8.7) Аналогично, если выполнение каждого задания на машине 2 может быть начато сразу же после окончания выполнения на машине 2 предыдущего задания, то вторая сумма в A8.5) примет вид ) jk] A8.8) Это опять дает нижнюю оценку "LFtt>Si- 08.9) Следовательно, /^Sfw + niaxfS,, 5s). A8.10) iiM
466 /"л. 18. Метод ветвей и границ Эта оценка зависит через tk от порядка, в котором оставшиеся зада- задания войдут в расписание. Однако эту зависимость можно исключить, заметив, что St будет минимально, если tk выбрать так, чтобы зада- задания с длиной Т|, шли в возрастающем порядке, и S2 будет мини- минимально, если th выбрать так, чтобы задания с длиной х2,к также шли в возрастающем порядке. Обозначим получаемые в результате минимальные величины через Si и 52. Тогда получаем следующую нижнюю границу: 2 tt + max E„ 52), A8.11) которая легко вычисляется. Пример 18.6 (продолжение). На первом шаге ветвления нера- неравенство A8.11) дает нижние границы 18, если задание 1 выполняется первым, 20, если задание 2 выполняется первым, 18, если задание 3 выполняется первым. Результаты, приведенные на рис. 18.9, показывают, что первые две из этих оценок точные. На рис. 18.10 приведено полностью Рис. 18.10. Дерево поиска для примера 18.6. дерево поиска, в котором в качестве вершины ветвления выбирает- выбирается каждый раз вершина с наименьшей нижней границей, а в слу- случае, если таких вершин несколько, выбирается самая левая из них. Как только приходим к оптимальному решению A, 3, 2), оно уби- убивает все остальные решения. В заключение опишем естественное отношение доминирования, также предложенное Игналлом и Шрейджем [IS]. Пусть две вер- вершины t и и представляют частичные расписания, содержащие одно
18.6. Динамическое программирован^ то же множество заданий М. Пусть k-ми по порядку заданиями частичных расписаниях t и и будут соответственно задания th uh, k = l,. . ., т. Тогда если Filr<;F2Ur _ A8.12) выполнение множества заданий из М на машине 2 при частичном асписании t заканчивается не позднее, чем при расписании и) [ если уже полученная суммарная стоимость при частичном рас- [исании t не больше, чем при расписании и, т. е. 2-i ' 2/ |в расписании / ^ ^4 ' Ц\в расписании u> (lo.lo) t s M i s м •о наилучшая достройка расписания t не хуже, чем наилучшая до- :тройка расписания и. Поэтому неравенства A8.12) и A8.13) опре- 1еляют отношение доминирования t над и. Пример 18.6 (продолжение). Рассмотрим вершины /=A, 2) \ и=B, 1) (не порождена на рис. 18.10). Тогда t доминирует над I. С другой стороны, t={\, 3) не доминирует над «=C,1). Этот 1ример слишком мал, чтобы показать реальную силу отношения доминирования. ? 18.6 Динамическое программирование Метод динамического программирования близок к методу вет- ветвей и границ в том смысле, что он производит разумный перебор всех допустимых точек некоторой задачи, но делает это другим способом. Идея его состоит в том, чтобы идти от последних решений к более ранним решениям. Пусть для решения некоторой комбинаторной задачи оптимиза- оптимизации нам нужно принять последовательность из п решений, скажем Du D2t. . ., Dn. Тогда, если эта последовательность оптимальна, последние k решений Dn_k+i, Dn_k+2 . . ., Dn должны быть опти- оптимальны. То есть завершающая часть оптимальной последовательно- последовательности решений должна быть оптимальной. Это утверждение часто называют принципом оптимальности. Обычно применение динамического программирования включает в себя разбиение задачи на этапы, на каждом из которых прини- принимаются решения, и нахождение рекуррентного соотношения, кото- которое позволяет переходить от произвольного этапа к предыдущему этапу. Мы объясним этот метод на примерах, начав с задачи о крат- кратчайшем пути для слоистых сетей, в которой последовательность принимаемых решений от последнего до первого очевидна. Пример 18.7 (динамическое программирование для задачи о кратчайшем пути в слоистых сетях). Рассмотрим слоистую сеть, приведенную на рис. 18.11, в которой требуется найти кратчайший путь из и/. Пусть таблица^) — это таблица оптимальных спо-
462 Гл. 18. Метод ветвей и границ собов продолжения кратчайшего пути при условии, что мы на- находимся в 1-м слое от стока /; т. е. таблица^) содержит наилучшее решение для каждой вершины в слое, отстоящем на i дуг от t. Тогда первой таблицей будет просто. таблица( 11 ¦¦ вершина / k I m следующая вершина (fit общая стоимость 5 14 2 Рассмотрим теперь построение таблицыB). Из вершины g мы можем перейти в /' или k. Из таблицы(\) нам известна стоимость Рис. 18.11. Задача о кратчайшем пути в слои- слоистой сети. оптимального продолжения пути из / и k, поэтому мы можем найти наилучшее решение в вершине g, сравнивая стоимость дуги (g, /) плюс стоимость продолжения пути из / со стоимостью дуги (g, k) плюс стоимость продолжения пути из k. Проделывая то же са- самое для вершин h и i, получаем таблицуB): таблицаB) = Далее находим таблицаC) = вершина g h i следующая вершина k k m общая стоимость 3 4 5 вершина d e / следующая вершина h h h общая стоимость 6 5 6
18.6. Динамическое программирование 463 таблицаD) = таблица(Ь) = вершина а Ь с следующая вершина d d f общая стоимость 8 7 7 вершина s следующая вершина с общая стоимость 11 Теперь можно восстановить оптимальный путь, просматривая таб- шцы в обратном порядке, в результате чего получаем путь (s, с, :, h, k, t) со стоимостью 11. ? Конечно, в более сложных задачах применение динамического фограммирования сталкивается с проблемами времени и памяти, юскольку размер таблиц может расти экспоненциально от этапа < этапу. Для иллюстрации этого приведем в заключение формули- формулировку ЗК с использованием динамического программирования. Пример 18.8 (динамическое программирование и ЗК [НКЗ]). Пусгь даны множество S^{2, 3,. . .,п) и k^S. Обозначим через ^(S, k) оптимальную стоимость пути, начинающегося из города 1, лроходящего по всем городам множества S и заканчивающегося в городе k. Начнем с нахождения C(S, k) для \S | = 1, что дает просто C({k\, k) = dlk для всех /г = 2, .... п. A8.14) Для вычисления C(S, k) при |S|>1 мы используем тот факт, что цля нахождения наилучшего маршрута из города 1 в город k, про- проходящего через все города множества S, достаточно рассмотреть цля каждого tn вариант, в котором т посещается непосредственно перед k, и обратиться к C(S—{k), m) в предыдущей таблице. Та- Таким образом, C(S, k)= min [C(S~\k\, m) + dmk]. A8.15) m€S-{ft| Этот минимум нужно вычислить для всех множеств S данной мощ- мощности и для каждого возможного города т из S. (При этом необхо- необходимо хранить город т, для которого достигается минимум, с тем, чтобы можно было восстановить оптимальный обход обратным про- просмотром.) Если считать, что для каждого значения C(S, k) требует- требуется одна ячейка памяти, то в целом требуется память 2 k (П~{) = (л— 1) 21 = О (п2«) A8.16) ячеек [НК31, а число сложений и сравнений равняется k=2 = («—!) (n —2) 2"~3 + (n— 1) =0 (п22"). A8.17)
464 Гл. 18. Метод ветвей и границ Эти функции экспоненциальны относительно размера задачи п и могут показаться недопустимо большими. Однако, если вспомнить тот факт, что при простом переборе имеется (п—1)! различных об- обходов, можно понять, что на самом деле этот подход дает огромный выигрыш. Поскольку для ЗК не известно алгоритмов, лучших, чем экспоненциальные, то подход с помощью динамического програм- программирования нельзя отбрасывать, хотя доказано, что алгоритмы вет- ветвей и границ в данном случае более эффективны. Как видно из приведенных двух примеров, динамическое про- программирование является очень общей идеей и может требовать боль- большей или меньшей изобретательности для нахождения хороших спо- способов разбиения задачи на этапы, при которых можно найти удоб- удобное рекуррентное соотношение. Нетрудно заметить, что некоторые из алгоритмов, рассмотренных ранее в этой книге, можно рассмат- рассматривать как применения динамического программирования (см. за- задачи 7 и 8 и § 17.3, посвященный задаче 0-1-РЮКЗАК). Задачи 1. Докажите, что алгоритм ветвей и границ при применении к задаче ЦЛП приводит к оптимальности за число шагов, ограниченное экспонентой от размера задачи. 2. Опишите алгоритм с оценкой времени О(п2) для нахождения минималь- минимального 1-дерева по данной (яХя)-матрице расстояний. 3. Докажите, что равенства A8.6) и A8.8) правильно вычисляют указанные нижние границы. 4. Проанализируйте сложность по времени и памяти алгоритма динамиче- динамического программирования для задачи о кратчайшем пути в слоистой сети и срав- сравните ее со сложностью по времени и памяти алгоритма Дейкстры (гл. 6), приме- примененного к той же задаче. 5. Установите справедливость равенств A8.16) и A8.17), определяющих по- потребности в памяти и времени алгоритма динамического программирования для ЗК. Каков асимптотический выигрыш во времени по сравнению с полным перебором (п—1)! обходов? 6. Является ли необходимым требование, чтобы на шаге ветвления общего алгоритма ветвей и границ множество решений разбивалось на непересекающиеся части? 7. Проинтерпретируйте алгоритм Дейкстры (гл. 6) для задачи о кратчайшем пути (с неотрицательными расстояниями) как применение динамического про- программирования. Дайте явное определение этапа, рекуррентного соотношения и начальных условий, аналогично A8.14) и A8.15). 8. Повторите задачу 7 для алгоритма Флойда — Уоршелла (см. § 6.5). 9. Построим, используя динамическое программирование, алгоритм со слож- сложностью 0A VI3) для задачи о кратчайшем пути для случая, когда допускаются от- отрицательные расстояния. Рассмотрим неориентированный граф G=(V, ?) с ис- исходной вершиной s и матрицей расстояний ld,-/j. а) Пусть Pi(x) означает кратчайшую длину пути из исходной вершины s в вершину х, использующего ( или меньше промежуточных ребер. Запишите ре- рекуррентное соотношение для р,(л:) и соответствующее начальное условие. б) Покажите, что ,:сли при переходе от этапа I к этапу (+1 никакое р,-(д:) не изменяется, то это означает, что мы достигли оптимальности и можем остано- остановиться.
Комментарии и ссылки 465 в) Покажите, что если после <=| VI этапов мы не остановились в смысле п. б), 0 это означает, что имеется цикл отрицательной стоимости. Используя это, до- :ажите, что алгоритм требует O(IV|3) времени. г) Сравните поведение этого алгоритма в худшем случае с поведением алго- |итма Флойда — Уоршелла. 10. Предположим, что нам нужно вычислить произведение п матриц Аъ 12, ... , Ап, где А( имеет р,- строк и <?,- столбцов. Естественно, предполагается, то они совместимы, т. е. </i'=Pi + i> (= ' п—' Разработайте алгоритм динами- еского программирования с временем работы О (я3) для нахождения порядка ум- южения этих матриц, при котором минимизируется общее число скалярных ум- :ожений в предположении, что умножение Л/ и Л,-+1 требует о,ч?,-(?, + ] скалярных множений. Какой объем памяти требуется ваше:чу алгоритму? 11. Объясните, почему алгоритм ДП-1 из §17.3 для задачи 0-1-РЮКЗАК южно рассматривать как алгоритм динамического программирования. 12. Сформулируйте алгоритм динамического программирования для ЗК пример 18.8) как алгоритм ветвей и границ без верхних и нижних границ, но с тношением доминирования. (омментарии и ссылки Хорошим обзором метода ветвей и границ вплоть до 1966 г. о указанием оответствующих более ранних источников является работа LwJ Lawler E. L., Wood D. E. Branch-and-Boimd Methods: A Survey, OR, 14 A966), 699—719. 1 этой работе описаны как подход Литтла и др. к ЗК: LMSKJ Little J. D. С, Murty К. G., Sweeny D. W., Karel С. An Algorithm for the Traveling-Salesman Problem, OR, 11 A963), 972—989, ак и подход Истмена: Еа) Eastman W. L Linear Programming with Pattern Constraints, Ph. D. Thesis, Report No BL 20, The Computation Laboratory, Harvard University, 1958. >ормулировка задачи ЦЛП, приведенная в § 18.1, взята из работы Da] Dakin R. J. A Tree-Search Algorithm for Mixed Integer Programming Prob- Problems, Сотр., J., 8, No. 3 A965), 250—255. 1риведенная формулировка метода ветвей и границ, так же как примеры кон- ейерной обработки, следуют статье Колера и Стайглица в гл. 6 в Но] Coffman E. G., Jr., ed. Computer and Job-Shop Scheduling. New York: Wiley- Interscience, 1976. I ней можно найти результаты некоторых вычислительных экспериментов с спользованием метода ветвей и границ, а также формулировку задачи о рас- исании с помощью динамического программирования, которая оказывается квивалентной методу ветвей и границ. Нижняя граница и отношение доминирования для задачи о конвейере взяты з статьи IS] Ignall E., Schrage L. Application of the Branch and Bound Technique to Some Flow-Shop Scheduling Problems, OR, 13, No. 3 A965), 400—412. 'еорему 18.1 можно найти в :ММ] Conway R. W., Maxwell W. L., Miller L. W. Theory of Scheduling. Reading, Mass.: Addison-Wesley Publishing Co., Inc., 1967. [Имеется перевод: Кон- вей Р. В., Максвелл В. Л., Миллер Л. В. Теория расписаний.— М.: Наука, 1975.]
466 Гл. 18. Метод ветвей и границ Теорема 18.2 опубликована в [GJS] Garey M. R., Johnson D. S., Sethi R. The Complexity of Flowshop and Job- shop Scheduling, Math, of Operations Res., 1 A976)", 117—129. Идеи Хелда и Карпа, основанные на использовании 1-деревьев, взяты из работ [НК1] Held М., Karp R M. The Travelling Salesman Problem and Minimum Spann- Spanning Trees, OR, 18 A970), 1138—1162. [HK2] Held M., Karp R. M. The Traveling Salesman Problem and Minimum Spann- Spanning Trees: Part II, Math. Prog., 1 A971), 6—25. Формулировку ЗК с помощью динамического программирования, а также фор- формулировки других комбинаторных задач можно найти в статье [НКЗ] Held M., Karp R. M. A Dynamic Programming Approach to Sequencing Problems, J. SIAM, 10, 1 A962), 196—210. Решения задач 7—9 можно найти в книге [DL] Dreyfus S. E., Law A. M. The Art and Theory of Dynamic Programming. New York: Academic Press, Inc., 1977. Эта книга содержит главу, в которой дано исчерпывающее изложение задачи о кратчайшем пути, включая некоторые (касающиеся константных множителей) улучшения для задачи с одним источником и для задачи о расстояниях между всеми парами вершин. Алгоритм, описанный в задаче 9, имеет неясное происхож- происхождение. В статье [Dr| Dreyfus S. E. An Appraisal of Some Shortest-Path Algorithms, OR, 17 A969), 395—412 даются ссылки на работы Форда, Мура и Беллмана соответственно 1956, 1957 и 1958 гг.
19 Локальный поиск 19.1 Введение Локальный поиск основан на старейшем, по-видимому, методе оптимизации — методе проб и ошибок. Его идея настолько проста и естественна, что очень удивительно, насколько успешным оказы- оказывается локальный поиск для многих трудных комбинаторных задач оптимизации. Оценить его силу и тонкости построения соответст- соответствующих алгоритмов лучше всего на примерах, поэтому мы начнем эту главу с подробного разбора ряда примеров. Загем мы разбе- разберем некоторые теоретические аспекты локального поиска, которые близки по духу симплекс-алгоритму. Мы уже касались основных компонент локального поиска в гл 1. Приведем теперь общий алгоритм. Пусть дана индивидуаль- индивидуальная задача оптимизации (F, с), где F — допустимое множество и с — функция стоимости. Выберем систему окрестностей /V: F — 2F, которая будет просматриваться для улучшения решения в точке (?F с помощью подпрограммы любое s?N(t), для которого с (s) <c(t), УЛУЧШЕНИЕ^) = если такое s существует, «нет» в противном случае. Общий алгоритм локального поиска приведен на рис. 19.1. Алго- Алгоритм начинается с выбора некоторого начального допустимого ре- procedure ЛОКАЛЬНЫЙ ПОИСК begin 1:=некоторая исходная начальная точка из F; while УЛУЧШЕНИЕМ ф "нет" do 1 УЛУЧШЕНИЕA) return t end Рис. 19.1. Общий алгоритм локального поиска. шения t?F и далее использует подпрограмму УЛУЧШЕНИЕ для поиска лучшего решения в окрестности этой точки. До rex пор пока удается найти улучшенное решение, мы запоминаем его и начинаем поиск по окрестности из этого нового решения; при достижении локального оптимума останавливаемся.
468 Гл. 19. Локальный поиск При применении этого подхода к конкретной задаче приходится несколько раз осуществлять выбор. Во-первых, нужно решить, как получить исходное допустимое решение. На практике иногда по- полезно производить локальный поиск из нескольких различных на- начальных точек и затем выбрать наилучший результат. В таких случаях нужно также решить, сколько взять начальных точек и как их распределить. Затем нужно выбрать «хорошую» систему окрестностей для рас- рассматриваемой задачи и метод поиска по ней. В этом выборе обычно приходится полагаться на интуицию, поскольку на этот счет тео- теоретических обоснований нет. Однако здесь легко заметить явную конкуренцию между маленькими и большими окрестностями. Ок- Окрестность большего размера обещает дать лучший локальный оп- оптимум, но потребует более долгого поиска, поэтому можно ожи- ожидать, что меньшее количество таких оптимумов можно будет найти за фиксированное количество машинного времени. Порождать ли меньше «сильных» или больше «слабых» локальных оптимумов? На эти и подобные вопросы ответ обычно получают эмпирически, и разработка эффективных алгоритмов локального поиска была и остается в большой степени искусством. 19.2 Задача 1: ЗК Напомним, что в гл. 1 для ЗК следующим образом была опреде- определена окрестность относительно k-замены (k~^2) для произвольного обхода / /V'k (/) = \g: g ? F и g можно получить из / удалением k ребер из / и заменой их снова k ребрами}. В 1958 г. появились две работы, в которых для ЗК использовался локальный поиск относительно ^-замены, и в обеих этот подход применялся в комбинации с переборными методами, аналогичными методу ветвей и границ, для получения оптимальных решений. Кроес [Сг] использовал /V2 и назвал 2-замену «инверсией», Бок [Во] использовал /V3. Еще две работы, в которых локальный поиск применялся к ЗК, появились в 1965 г. Шерман и Рейтер [SR] исследовали много раз- различных систем окрестностей, но только Лин [Li] первым убедитель- убедительно продемонстрировал силу системы окрестностей относительно 3-замены N3. Например, Лин эмпирически нашел, что 3-оптимальный обход для задачи Хелда и Карпа [НКП с сорока восемью городами ока- оказывается оптимальным с вероятностью около 0.05, и, следователь- следовательно, если произвести вычисление для 100 случайных начальных то- точек, то при этом с вероятностью 0.99 получится оптимальное реше- решение. Одно из важных достоинств работы Лина состоит в том, что
19.3. Задача 2: надежные сети минимальной стоимости 469 в ней делается упор на использование многих различных распре- распределенных случайным образом начальных решений; в ЗК эффектив- эффективным оказывается использование совершенно случайных начальных обходов. Можно подумать, что, начиная с решений, которые в среднем лучше, чем полностью случайные обходы (которые, по-видимому, очень плохи), мы улучшили бы качество получаемых локальных оптимумов. Однако похоже, что в ЗК при использовании 3-опти- мальности это не так, на что указывают обширные вычислительные эксперименты, проведенные Вейнером [не опубликованы]. Объяс- Объяснение, по-видимому, следующее: 3-замена достаточна сильна, по- поэтому она быстро улучшает случайный обход, и, начиная с совер- совершенно случайных обходов, мы получаем широкий набор локаль- локальных оптимумов. Однако в тех задачах, где мы вынуждены исполь- использовать относительно слабые окрестности, использование «хороших» начальных решений может играть решающую роль. Еще одним важным результатом работы Лина является демонст- демонстрация того, что 3-оптимальные решения намного лучше, чем 2-оп- тимальные, но 4-оптимальные решения не настолько лучше, чем 3-оптимальиые, чтобы оправдать дополнительные затраты машин- машинного времени Правда, не совсем ясно, почему это так. Лин эмпирически нашел, что для его класса примеров вероят- вероятность того, что 3-оптимальный обход будет оптимальным, равна приблизительно 2~~п/]0, где п — число городов. Такая оценка позволяет решить, сколько раз нужно производить вычисления из случайных начальных точек, чтобы обеспечить заданную вероят- вероятность оптимальности решения. Но, к сожалению, до сих пор нет теоретических подтверждений эмпирических результатов такого вида. Результаты Лина, касающиеся ранее опубликованных задач, известных своей трудностью, оказались настолько эффектными, а общий подход к ЗК настолько успешным, что это стимулировало применение локального поиска к множеству других задач. 19.3 Задача 2: надежные сети минимальной стоимости Задача коммивояжера является прототипом применения ло- локального поиска и обладает многими удобными чертами, которые не всегда присутствуют в других задачах. Например, для нее очень легко порождать полностью случайные решения и очень легко про- проверять их на допустимость. Этим свойством не обладает наш второй пример — задача построения сети с заданной связностью и мини- минимальной стоимостью. Для формулировки этой задачи нам потребу- потребуется предварительное определение. Определение 19.1. Пусть даны связный неориентированный граф G= (V, Е) и две различные вершины i, j 6 V. Множество пу-
470 Гл. 19. Локальный поиск тей из i в / называется множеством вершинно непересекающихся пу- путей, если никакая вершина, отличная от i и /', не лежит более чем на одном из этих путей- Вершинной связностью между i и / назы- называется максимально возможное число вершинно непересекающихся путей между ними. Q Пример 19.1. На рис. 19.2 представлен граф, в котором вершинная связность между любыми двумя различными вершинами равна 3. Такой граф называется 3-связным. ? Если граф G представляет сеть связи, то вершинная связность между двумя вершинами является мерой надежности связи между ними, свя' ый гпа* РеХ поскольку она равна минимальному числу вер- вершин, которые нужно удалить из сети для раз- разделения данных двух вершин (читателю предлагалось доказать этот результат в задаче 8 в гл. 6). Если дана матрица стоимостей, то интересной задачей является построение сети с заданными связностями между всеми парами вер- вершин и минимальной общей стоимостью. Более формально опреде- определим следующую задачу. Определение 19.2. Пусть даны матрица стоимостей ld(/] и мат- матрица связностей [si/]. Тогда задача о надежной сети минимальной стоимости (НСМС) состоит в нахождении графа G = (V, E) с ми- минимальной суммарной стоимостью ]?[,, /je?d,-y и вершинной связ- связностью г-ч между различными вершинами i, /', удовлетворяющей неравенству rt/^stJ для всех i, /, 1Ф\. ? В работе IStWKl к задаче НСМС был применен локальный поиск и ниже мы опишем полученные результаты. Понятие /VP-полноты в 1969 г. еще не было введено, но на самом деле соответствующий вариант этой задачи является /VP-полным (вспомните разд. 16.3.1). Первая трудность, которая здесь возникает, — это вычисление действительной матрицы овязностей [г^] для данного графа. В сле- следующей теореме устанавливается верхняя оценка сложности вы- вычисления связности между двумя точками. Теорема 19.1 Пусть даны неориентированный граф G=(V, Е) и две различные вершины i, / g V. Тогда вершинную связность ri} можно найти за время O(\V\2'b). Доказательство. Построим ориентированный граф G'= (]/', Е'), заменяя каждую вершину и? V двумя вершинами v и v" g V, как показано на рис 19.3. Затем рассмотрим потоковую сеть, полу- получаемую приписыванием каждой дуге из G' единичной пропускной способности. Тогда величина максимального потока из i в / в дан- данной сети совпадает с вершинной связностьо г(/, поскольку единич- единичная пропускная способность дуги, идущей из v' в v", означает, что вершина v в исходном графе G может лежать только на одном пути
19.3. Задача 2: надежные сети минимальной стоимости 471 из i в /. Потоковая сеть, соответствующая G', является простой, по- поэтому, согласно теореме 9.4, максимальный поток в ней можно вы- вычислить за время O(|V|2'5). ? Сколько раз нужно вычислять связность между двумя точками, чтобы проверить условие допустимости r^^s,,- для всех г, /, 1Ф\, Вершинаие v Вершины v,о"е V' Рис. 19.3. Конструкция из доказательства гео- ремы 19.1. для данного графа? Как можно догадаться, не обязательно вычис- вычислять все |V|(|V| —1)/2 вершинных гвязностей /•,-. Например, мож- можно показать, что в том случае, когда все s,- равны k, достаточно k(\V\ — (k-\-1)/2) вычислений, что можно записать как О(Де|V|) (см. задачу 13 в этой главе и задачу 13 из гл. 9). Таким образом, задача проверки допустимости графа полиномиальна, однако она значи- значительно сложнее, чем в ЗК- Далее мы приходим к проблеме построения начального допусти- допустимого решения. Мы опишем метод, использованный в [StWKl, ко- который является эмпирически эффективной жадной эвристикой. Его идея основана на том, что степень вершины i должна быть не мень- меньше, чем тах;/-гу. Определим дефицит в вершине i в неориентиро- неориентированном графе G равенством дефицит(О=тахгг/ — степень (г). / Будем добавлять ребра к графу G до тех пор, пока все дефициты не станут неотрицательными. Затем проверим полученный граф на допустимость, используя упомянутый выше алгоритм нахождения максимального потока. Рассмотрим это более детально. Вначале у нас имеется массив размера |V|, содержащий дефициты всех вершин. На каждом шаге мы добавляем ребро между вершиной с наибольшим дефицитом и вершиной со следующим по величине дефицитом. Из всех вершин со следующим по величине дефицитом выбирается та, которая дает в результате наименьшее увеличение стоимости; все остальные не- неопределенности разрешаются выбором вершины, которая раньше всех встречается в массиве. Кратные ребра не допускаются. Пример 19.2. Рассмотрим задачу с однородными требованиями на связность: si;=3 для всех г, / и матрицей стоимостей, определя- определяемой евклидовым расстоянием на плоскости между восьмью вер-
472 Гл. 19. Локальный поиск шинами, приведенными на рис. 19.4(а). Начальный массив имеет вид Вершина 12 3 4 5 6 7 8 Дефицит 3333333 3 Наибольший дефицит, естественно, 3, и первым выбирается ребро A, 2), так как вершина 2—ближайшая к вершине 1 среди 5О 7О 10 4О 2О (а) об оз О8 (б) (в) Рис. 19.4. а) Расположение вершин для при- примера 19.2. б) Результат работы алгоритма поиска начального решения, в) Выгодная Х-замена, приводящая к недопустимому графу. всех вершин с дефицитом 3. Затем по порядку добавляются ребра [3, 4], [5, 6], [7, 8], [1, 7], [2, 3], [4, 5], [6, 8], [1, 8], [2, 7], [3, 6], [4, 6] и [5, 7]; получаемый в результате граф приведен на рис. 19.4F). Читатель может проверить, что в этом графе вершинная связ- связность между любой парой вершин равна 3. Заметим, что в нем имеются две вершины степени 4; нумерация вершин может влиять на число ребер в получаемом графе. Кроме того, если вершины за- занумерованы другим способом, результат вполне может оказаться недопустимым. ? Мы уже упоминали, что алгоритм выбора начальной точки же- желательно делать вероятностным; в предыдущем случае это дости- достигается случайным упорядочением вершин перед применением опи- описанного алгоритма. Указанный метод не только дает набор началь- начальных допустимых решений, но к тому же эти начальные решения имеют, как правило, низкую стоимость и малое число ребер. Было обнаружено, что в отличие от ЗК задача НСМС требует начальных решений с относительно низкой стоимостью. Это связано с исполь- используемыми окрестностями, которые мы сейчас опишем. Определение 19.3. Пусть множество графов, допустимых в инди- индивидуальной задаче НСМС, обозначается через F. Это значит, что
19.3. Задача 2: надежные сети минимальной стоимости 473 F состоит из всех графов с данным числом вершин и вершинными связностями, удовлетворяющими неравенствам ri^sij для всех i, /, 1ф\. Рассмотрим граф G(V, E)?F, в котором ребра И, т] и [/, /] присутствуют, а ребра U, I] и [/, т] отсутствуют (рис. 19.5). / О т О О i .Отсутствующие. ребра О 3 Рис. 19.5. Окрестность относительно Х-замены. Определим новый граф G' = (V, ?"), получаемый удалением ребер [i, т] и [/, I] и добавлением ребер U, I] и [/, т], т. е. E'-Eu\[i, /], [/, m]\->[i, m], [/,/]}. Тогда, если G'g/\ будем говорить, что С является Х-заменой графа ;, и множество X-замен графа G определяет его окрестность относительно Х-замены. Если новая стоимость меньше старой, т. е. dn+d/a<dlm+dJh A9.1) то Х-замена называется выгодной. Q Окрестность относительно Х-замены обладает тем свойством, что в ней сохраняется число ребер и степень каждой вершины, в связи с чем желательно иметь набор начальных решений по возможности с различным числом ребер и различными степенями вершин. При поиске по окрестности относительно Х-замены имеется некоторая трудность. Довольно легко ищутся все пары ребер U, т] и [/, I], удовлетворяющие A9.1). Однако получаемый граф G' может ока- оказаться недопустимым. Это проиллюстрировано на рис. 19.4(в), где изображенный граф получен из графа, приведенного на рис. 19.4F), удалением ребер [2, 3] и [7, 81 и добавлением ребер [2, 8] и [3, 7]. В полученном графе вершинная связность меньше 3; например, имеется только два вершинно непересекающихся пути из 1 в 3. Если бы нужно было проверять весь граф на допустимость после каждой обнаруженной выгодной Х-замены, то алгоритм локального поиска был бы очень медленным, но, оказывается, полная проверка не обязательна (см. задачу 13). В случае когда все гг]- принимают одно и то же значение k, необходимо на самом деле рассмотреть только две вершинные связности, чтобы проверить допустимость нового графа.
474 Гл. 19. Локальный поиск Обнаружено, что алгоритм локального поиска с использова- использованием начального алгоритма и окрестностей, описанных выше, эф- эффективен для большого числа задач Ниже мы приведем результаты для одной простой задачи. Пример 19.3. На рис. 19.6 приведен пример (из IStWKl) с 7 вер- вершинами и однородными требованиями на связность, которая долж- должна равняться 3. Для матрицы стоимостей, полученной взятием це- 40 г- 40 30 20 < J0 i i 1 » 1 > 0 J 0 20 30 40 (а) „ Рис. 19.6. а) Пример с семью вершинами [StWK]. б) Оптимальное решение. лых частей от евклидовых расстояний, было порождено 100 ло- локальных оптимумов со следующим распределением стоимостей: Стоимость Число появлений из 100 Стоимость Число появлений из I 00 242 245 250 251 39 9 20 7 253 258 265 270 Исчерпывающим перебором доказано, что решение со стоимостью 242 оптимально, поэтому видно, что вероятностный алгоритм ло- локального поиска с вероятностью около 0,39 дает глобальный опти- оптимум. Следовательно, вероятность нахождения оптимального реше- решения после 100 попыток равна приблизительно 1 —@,61)luo д* 1 —0,34х 10~21, что, как можно доказать, больше, чем вероятность выполнения на вычислительной машине 1-секундной программы без необнаружен- необнаруженной ошибки (см. задачу 10). Отметим также, что имеется большое множество локальных оп- оптимумов со стоимостями, близкими к оптимальной. Эти результаты типичны для локального поиска, однако для задач большего раз- размера вероятность нахождения глобального оптимума уменьшается и увеличивается разброс стоимостей локальных оптимумов. ?
19.4. Задача 3: топология прибрежной системы газопроводов 475 В итоге можно заключить, что в задаче НСМС критической яв- является стоимость проверки на допустимость, и существование эф- эффективных способов такой проверки делает локальный поиск прак- практическим алгоритмом. 19.4 Задача 3: топология прибрежной системы газопроводов [RFRSKj Рассмотрим теперь задачу, где не допустимость, а вычисление стоимости является критическим. Задача состоит в том, чтобы соб- собрать запасы газа со дна моря и доставить их на находящуюся на берегу очистительную и компрессорную станцию. На рис. 19.7 1 Q Береговой компрессор '////////////////////////, Берег И 12 >7 Рис. 19.7 Прибрежная система газопроводов. изображена типичная система газопроводов: вершина 1 представ- представляет станцию, расположенную на берегу, а каждая из вершин 2, 3, . . .,15 представляет буровую платформу над областью газа с установленной ежедневной производительностью. Можно считать, что положения газовых полей даны и что задача состоит в выборе дерева, ребра которого будут представлять газопроводы, по кото- которым газ будет собираться и доставляться на станцию, расположен- расположенную на берегу. Теперь нужно объяснить, как определяется стоимость данного дерева. Каждое ребро дерева представляет трубу одного из 7 стан- стандартных диаметров в пределах (в 1968 г.) от 10 3/4 дюйма со стоимо- стоимостью около 70 000 долл. за милю до 30 дюймов со стоимостью около 310 000 долл. за милю. Поскольку нам известна производительность в каждой вершине, то для данного дерева можно определить ско- скорость потока по каждому ребру. Это позволяет определить падение давления вдоль некоторого ребра для всех возможных диаметров
476 Гл. 19. Локальный поиск с помощью эмпирической формулы, называемой граничным урав- уравнением. Диаметры труб должны выбираться так, чтобы минимизи- минимизировать стоимость при следующих ограничениях: 1. максимальное давление нигде не превышает заданного Риакс; 2. давление на входе в станцию, расположенную на берегу, должно быть не меньше заданного Ямин; 3. давление газа, собираемого в каждой вершине, должно быть не меньше Ркш- Задача выбора оптимального множества диаметров труб являет- является, по существу, комбинатор- комбинаторной задачей оптимизации, которая решается с помощью метода, напоминающего ди- динамическое программирова- программирование. Это решение требует разумного, но не тривиаль- тривиального количества машинного времени для каждой тополо- топологии, скажем около 1 с для i дерева с 20 вершинами. При этом остается про- проблема, как выбрать дере- Рис. 19.8. Три ребра при вершине х, во мицИмальИ0Й стоимости, определяющие Д-замену, показаны пунк- ' ТИр0М если стоимость любого конкретного дерева должна определяться с помощью достаточно сложной подпрограммы тре- требующей около 1 с времени. Если используется локальный поиск, то нужно быть аккуратным при выборе окрестностей, которые должны быть достаточно малы —в противном случае время работы алгоритма станет непомерно большим. Наиболее естественно на ум приходит система окрестностей, определяемая элементарным преобразованием дерева, описалным в примере 1.5: по очереди добавляем к дереву всевозможные ребра и по очереди удаляем каждое ребро из полу- полученного цикла. Эта система окрестностей является точной для зада- задачи о минимальном остовном дереве, но ее размер 0(\V\3), так как нужно рассмотреть |К!(|К|—1)/2 добавляемых ребер, и каждое из них порождает цикл, длина которого может быть Q(|K|). Однако кажется естественным, что если улучшения существуют, то найдет- найдется улучшение, которое можно обнаружить, соединяя некоторую вершину с географически ближайшей к ней вершиной. Это побуж- побуждает использовать ограниченные окрестности, называемые ^-заме- ^-заменой, определяемые следующим образом. Для каждой вершины х- нужно найти три ближайшие вершины уи Уъ и у3, не смежные с вер- вершиной х в дереве. Затем следует рассмотреть элементарные преоб- преобразования дерева, определяемые ребрами [х, yt], \x, у2\ и [х, /у3] (рис 19.8). Мощность такой окрестности равна 3/г|1/|, где k — сред- средняя длина цикла, получаемого при элементарных преобразованиях
19,4. Задача 3: топология прибрежной системы газопроводов 477 Начальная 20-летняя стоимость= НО 970 000 Долл. Новая 20-летняя стоимость = 109 096 000 долл. (а) 20-летняя стоимость= 101 340 000 долл. (б) Рис. 19.9. а) Дерево после первой успешной Д-замены. б) Локальный оптимум после 12 ус- успешных Д-замен. дерева, которая существенно меньше, чем \V\, так как добавляются короткие ребра. Как можно догадаться, подпрограмма поиска начального реше- решения представляет собой эвристическую конструкцию, предназна- предназначенную для нахождения как можно лучшей исходной допустимой топологии, поскольку система окрестностей относительно Д-заме- Д-замены не очень сильна. На рис. 19.9 приведен реальный пример из
478 Гл. 19. Локальный поиск [RFRSK1, показывающий первую успешную А-замену, в резуль- результате которой 20-летняя стоимость уменьшается с 110 970 000 до 109 096 000 долл. На рис. 10.9F) приведен локальный оптимум с 20-летней стоимостью 101340 000 долл., полученный после 12 успешных А-замен. Потенциальная экономия в 9 630 000 долларов за 20 лет должна, по всей видимости, оправдать большую работу по разработке программы! 19.5 Задача 4: равномерное разбиение графа [KL] Рассмотрим теперь применение локального поиска к задаче, связанной с проведением соединений в схемах и сегментацией про- программ. Это приведет нас к описанию метода «переменной глубины» Лина и Кернигана [LK]- Рассмотрим вначале простой вариант общей задачи. Определение 19.4. Пусть дана симметричная матрица стоимостей [], определенных на ребрах полного неориентированного графа В Рис. 19.10. Задача о равномерном разбиении G=(V, Е) с |V1=2/г вершинами. Разбиение V=A[)B называется равномерным, если |Л| = |В|. Задача о равномерном разбиении графа (РРГ) состоит в нахождении равномерного разбиения V= —А [) В, стоимость которого С(А,В)= i 6 A минимальна среди стоимостей всех равномерных разбиений. ? Эту задачу можно представить себе так, как показано на рис. 19.10; можно считать, что требуется разделить некоторую схему на два куска одинакового размера так, чтобы вес проводов, соеди- соединяющих эти два куска, был как можно меньше. Прежде чем определить систему окрестностей, сделаем простое замечание. Пусть А*, В* — оптимальное равномерное разбиение, а мы рассматриваем некоторое разбиение А, В. Пусть X те эле-
19.5. Задача 4: равномерное разбиение графа 479 менты из А, которые не входят в Л* («неправильные» элементы), и пусть Y аналогично определяется для множества В. Тогда \Х\ = = |К| и A*~(A — X)[)Y, B* = (B — Y)[jX. A9.2) То есть оптимальное равномерное разбиение можно получить, об- обменивая элементы множества X на элементы множества Y. Таким образом, нашу задачу в алгоритме локального поиска можно рас- рассматривать в любой момент как задачу поиска последовательности выгодных обменов одним элементом. Определение 19.5. Пусть даны равномерное разбиение А, Вн элементы а?А и b?B. Тогда операция вида A' = (A-\a\)U{b\, B'=:(B-\b\)U\a\ A9.3) называется обменом. ? Определим теперь эффект, оказываемый некоторым обменом на стоимость разбиения А, В. Сопоставим элементу а?А внешнюю стоимость E(a)=y>dai A9.4) «ев и внутреннюю стоимость /(я) =5 4,, A9.5) (аналогично сопоставим стоимости элементам множества В). Пусть D(v) = E(v)—l(v) A9.6) — разность между внешней и внутренней стоимостями для всех V Лемма 19.1. Обмен элементами а и Ь приводит к уменьшению стоимости (выигрышу) на величину g(a,b)=D(a)+D(b)--2dab. A9.7) Доказательство. Перенесем а из Л в В. Внутренняя стоимость элемента а становится внешней, и наоборот, поэтому стоимость уменьшается на D (а). Новая внешняя стоимость элемента b равна E'{b)=E{b)-dab, A9.8) и новая внутренняя стоимость элемента b равна I'{b) = I(b)+dab A9.9) поэтому его новая разность равна D' (Ь) =?' (Ь) - Г(Ь) = D (b)~2dab. A9.10)
480 Гл. 19. Локальный поиск. Если затем b перенести из В в Л, то стоимость уменьшается на D'(b), что вместе с D (а) дает A9.7). ? Теперь можно очень естественно определить систему окрестнос- окрестностей, используя понятие обмена. Определение 19.6. Окрестность относительно обмена Ns для задачи РРГ определяется следующим образом: NS(A, В) = {все равномерные разбиения А', В', которые можно получить из равномерного разбиения А, В с помощью одного обмена}. ? Поиск выгодного обмена можно произвести за время 0 (я2), рас- рассматривая выигрыш g(a,b) для всех пар а?А, b?B. Если обмен действительно производится, то все значения D пересчитываются, и поиск продолжается. Керниган и Лин [KL] сообщают, что локально оптимальные решения относительно Ns для 0-1-матриц расстояний размера 32х х32 примерно в 10% случаев оказываются глобально оптималь- оптимальными и примерно в 75% случаев отличаются от глобального оп- оптимума на 1 или 2. До сих пор все выглядит так же, как в предыдущих примерах, особенно в ЗК, поскольку нет особых трудностей с проверкой до- допустимости или вычислением стоимости. Можно было бы поддаться искушению исследовать окрестности, определяемые обменом двух элементов из А на два элемента из В, размер которых не превосхо- превосходит 0(п*). Однако Керниган и Лин предлагают следующую интри- интригующую идею, которая открывает новые возможности для широкого применения локального поиска. Их идея состоит в замене поиска одного выгодного обмена поис- поиском выгодной последовательности обменов с использованием стои- стоимостей из данной конкретной задачи в качестве руководства при поиске. При этом выгодная последовательность k обменов находится не рассмотрением окрестности, содержащей все такие последова- последовательности, а получается последовательно следующим образом: 1. Вычисляем D (v) для всех элементов v?V. 2. Выбираем пару а,', Ь\ так, чтобы выигрыш g, = D{a\) + D(b,)-2da>A A9.11) был как можно большим (не обязательно положительным). 3. Обмениваем а\ и Ь[ и заново вычисляем значения D по форму- формулам U (х) = D(x) + 2dxa, —2dx6j, x eA — \ai\, ^-2dJ>, y<tB-\bi} (см. задачу 3).
19.5. Задача 4: равномерное разбиение, графа 481 4. Повторяем шаги 2 и 3, получая последовательность обме- обмениваемых пар а'2, Ь'\ а3, Ь'д; ...; а'п, Ьп. После того как некоторая пара обменивается, она больше не рассматривается для обмена на шаге 2. В результате получаем последовательность выигрышей gf,... ,gn и соответствующие обмениваемые пары, такие, что в результате обмена множества Х = {а[, ..., a'k) с множеством Y = {b'u ... ... ,b'k\ суммарный выигрыш равен G (*)-?&. A9.13) Заметим, что если &=п, то это означает, что мы полностью поме- поменяли местами А и В, поэтому G(n)=0. Выбираем k так, чтобы (ДО 7 8 9 V 11 12 Рис 19.11. Гипотетическая функция суммарно- суммарного выигрыша G. G(k) было максимальным. Если G(k)^.O останавливаемся. Если G(k)>0, обмениваем соответствующие множества X и Y и начинаем процедуру снова с шага 1. В результате получаем следующее. Предположим, что п—\2 и последовательность gt порождает функцию G, изображенную на рис. 19.11, с максимумом при k=7. В результате мы находим два множества мощности &=7, которые следует переставить. Но эту перестановку было бы трудно найти, рассматривая только один обмен на каждом шаге, так как второй, третий и пятый обмены на самом деле невыгодны (рис. 19.11 показывает, что g^, §з и gb отрица- отрицательны). Таким образом, мы в состоянии произвести «глубокий» прорыв на расстояние семи обменов от точки, в которой мы нахо- находимся, без необходимости перебора всех таких последовательностей. Этот метод, который мы будем называть поиском переменной глуби- глубины, всегда находит одиночный выгодный обмен, если такой сущест- существует, поэтому получаемые результаты по крайней мере локально оптимальны для окрестностей относительно обмена Ns. Но дейст- действительная мощь этого метода основана на использовании стоимости 16 № 3032
482 Гл. 19. Локальный поиск для нахождения наилучшего выигрыша при каждом выполнении шага 2. На рис. 19.12 мы постарались наглядно показать разницу между локальным поиском и поиском переменной глубины. Начала Локальный Окрестность ^^-^локальный У ^ оптимум Рис. 19.12. а) Схематическое представление обычного локального поиска, б) Схематическое представление поиска переменной глубины. Этот метод оказывается эмпирически очень хорошим для задачи РРГ. Керниган и Лин [K.L] сообщают, что вероятность глобальной оптимальности для задач размера /г=30 оказывается около 0,5 (в отличие от указанной выше величины 0, 1 для обычного локаль- локального поиска) и в целом для задач, изученных ими, приблизительно р=2-«/зо. Кроме того, сообщается, что, как показывают экспери- эксперименты, полное время работы алгоритма поиска переменной глубины есть О (/г2'4) (см. задачу 5). Описанная основная идея с большим успехом применена к ЗК [LK1, где, однако, появляются дополнительные трудности из-за необходимости следить за допустимостью последовательности замен ребер. Лин и Керниган [LK1 детально обсуждают соответствующий алгоритм вместе с некоторыми усовершенствованиями, которые ли- либо уменьшают время работы, не сильно жертвуя качеством, либо улучшают качество решений без существенного увеличения вре- времени работы. 19.6 Общие аспекты локального поиска Приведенные четыре примера иллюстрируют разнообразие за- задач, к которым применяется локальный поиск. (Еще несколько приложений указаны в «Комментариях и ссылках».) Каждое такое применение обладает своими особенностями и трудностями, кото- которые надо преодолеть, но при этом имеется нечто общее, что мы сей- сейчас и обсудим. Первый аспект, который обычно возникает,— это выбор окрест- окрестности или семейства окрестностей, что тесно связано с понятием «естественного» возмущения допустимого решения. Выбор такого
19.6. Общие аспекты локального поиска 483 возмущения может быть почти вынужденным, подобно обмену в за- задаче о разбиении графа. Или может быть менее очевидным, подобно Х-замене в задаче о надежной сети. И может даже потребовать не- некоторой изобретательности, подобно «А-оптимальности» в задаче о многопродуктовом потоке (см. [Gr] и [GS]). Во многих случаях с возмущением связан «порядок» k, как, например, в случае й-за- мены для ЗК, и получаемые в результате окрестности имеют мощ- мощность 0(nk). Далее, как правило, оказывается, что для задач с размером в заданных пределах естественная окрестность разумного размера обладает определенной силой — т. е. локальные оптимумы, полу- получаемые с помощью локального поиска, имеют определенное сред- среднее качество. Эта сила, по-видимому, в большой степени связана с корреляцией между качеством исходных допустимых решений и качеством получаемых локальных оптимумов. Похоже, что силь- сильные окрестности приводят к локальным оптимумам, качество кото- которых очень слабо зависит от качества начальных решений, а слабые окрестности приводят к локальным оптимумам, качество которых сильно связано с качеством начальных решений. Например, 3-за- мена выглядит сильной для ЗК с размером по крайней мере до 50 городов, поэтому совершенно случайные начальные обходы яв- являются хорошими начальными решениями, так как они дают воз- возможность испытать широкое множество локальных оптимумов. В противоположность этому было обнаружено, что X-замена сла- слабее [StWKl и требует эвристической конструкции для порождения начальных решений с хорошей средней стоимостью. Следовательно, относительная сила окрестностей определяет, должны ли исполь- использоваться некоторые специальные или совершенно случайные на- начальные решения. Здесь возникает еще один вопрос: каким образом производить поиск по окрестности? Два крайних способа — это первое улучше- улучшение, при котором выгодное изменение производится сразу же, как только оно найдено, без дальнейшего поиска, и наискорейший спуск, при котором производится поиск по всей окрестности и выбирается решение с наименьшей стоимостью. Лишние затраты времени на реализацию наискорейшего спуска часто бывают неоправданны, хотя такие вещи опасно обобщать. Большое преимущество метода первого улучшения состоит в том, что только по заключительной окрестности заведомо приходится производить полный поиск, по- поэтому локальные оптимумы можно, вообще говоря, найти быстрее. Метод переменной глубины из работы [KL] можно рассматривать как разновидность стратегии неполного поиска в применении к рас- расширенному варианту исходной окрестности. Еще один вопрос — это в каком порядке просматривать окрест- окрестность. Проще всего обычно использовать некоторый естественный лексикографический порядок, индуцированный нумерацией. Можно также упорядочить окрестность случайным образом. Этот способ 16*
484 Гл. 19. Локальный поиск обладает тем преимуществом, что даже из одной начальной точки с использованием метода первого улучшения получается набор слу- случайным образом распределенных локальных оптимумов. Эта стра- стратегия может быть полезной, если трудно получать начальные ре- решения. Если используется фиксированное упорядочение окрестности вместе с методом первого улучшения, то поиск по новой окрестно- окрестности может начинаться с начала этого упорядочения или может про- продолжаться из той точки, где закончился последний поиск. (Кроун [Кг] называет эти варианты соответственно А и В.) Последний вариант будем называть круговым поиском. В нем используется счетчик для определения того момента, когда найден локальный оптимум— т. е. когда в некотором решении мы сделаем оборот на 360°. Можно утверждать, что круговой поиск, по-видимому, более эффективен, чем стратегия возвращения к началу, поскольку из- изменения, которые совсем недавно оказались невыгодными в одной окрестности, скорее всего, останутся невыгодными в следующей. В каждом данном приложении это нужно проверять эксперимен- экспериментально. Когда приближенный алгоритм типа локального поиска исполь- используется для задачи минимизации, то получается верхняя оценка стоимости оптимального решения. При этом часто очень желатель- желательно иметь также нижнюю границу, так как она дает оценку относи- относительного отклонения приближенного решения от оптимального. Часто нижнюю оценку можно получить с относительно малыми усилиями. Например, в задаче о надежной сети минимальной стои- стоимости каждая вершина i должна иметь степень по меньшей мере 6f=maxy(S(y), поэтому мы не можем сделать ничего лучшего, чем соединить ее с б; ближайшими соседями ku. . .,kn{. Поэтому ниж- нижней оценкой будет 2 2 В качестве другого примера Керниган и Лин [KL] указывают, что в задаче о разбиении графа можно получить нижнюю оценку, ис- используя алгоритм построения максимального потока для нахожде- нахождения величины минимального разреза (см. задачу 4). В заключение этого параграфа отметим некоторые разработки и усовершенствования, использованные в связи с локальным поис- поиском. Первая естественная идея — получить локальный оптимум обычным способом, а затем попытаться дальше его улучшить. Кроун [Кг] использовал такой двухэтапный метод для задачи о конвейерном расписании. Этап I находит расписание, локально оптимальное в классе перестановочных расписаний (см. § 18.5), а на этапе II ищут- ищутся изменения, которые лежат вне этого класса.
19.6. Общие аспекты локального поиска 485 Керниган и Лин [K.L] также обсуждают двухэтапный метод для разбиения графа. Они разбивают каждое из множеств А и В в локально оптимальном разбиении на две части A=At\jA2 и B=Bi[}B2, используя снова локальный поиск, а затем берут раз- разбиение Ai\}Biy А2[}В2 в качестве нового начального решения. Это основано на эмпирическом наблюдении, согласно которому если п X п-разбиение локально (но не глобально) оптимально, то для по- получения глобальной оптимальности требуется поменять местами множества мощности около nil. Лин [Li] в своей работе 1965 г. разработал идею, названную сведением. Она основана на том наблюдении, что в конкретных за- задачах некоторые черты присущи всем хорошим решениям. Это мож- можно рассматривать как выражение «легких» частей задачи. Страте- Стратегия, разработанная Лином для ЗК, состоит в получении несколь- нескольких локальных оптимумов и последующем нахождении ребер, общих для всех этих решений. Затем эти ребра фиксируются, в результа- результате чего время нахождения новых локальных оптимумов уменьшает- уменьшается. Дальнейшее развитие эта идея получила в работах [LK3 и [GL]. Как обычно бывает с эвристиками, можно высказать также пря- прямо противоположное соображение. Если такие общие черты обна- обнаружены, то они скорее запрещенные, чем фиксированные. Обосно- Обоснование этого таково: если мы опасаемся, что глобальный оптимум избегает нас, то это может быть связано именно с тем, что нашу эв- эвристику «обманывают» эти заманчивые черты. Запрещение их мо- может наконец вывести нас на правильный путь к глобальному опти- оптимуму. В работе [SW] это называется отказом. Еще одна идея, отмеченная в [LK1, основана на том факте, что когда находится много локальных оптимумов, то среди них очень часто встречаются повторения. Кроме того, при поиске большая доля времени тратится, по-видимому, на проверку оптимальности каждого локально оптимального решения путем безуспешного просмотра его окрестности. Этого можно избежать, если хранить список ранее полученных локальных оптимумов и их стоимостей и в процессе поиска сравнивать текущие стоимости с локально оп- оптимальными стоимостями. Если обнаруживается решение, стоимость которого совпадает с некоторой локально оптимальной стоимостью, то можно посмотреть, не совпадает ли это решение с ранее найденым локальным оптимумом. Если совпадает, то его проверку можно про- пропустить. Для такой проверки нужно использовать какой-нибудь эффективный метод, если мы хотим в целом сэкономить время (см. задачу 5). Описав отдельные важные практические вопросы применения локального поиска, обратимся теперь к некоторым его теоретичес- теоретическим аспектам.
Гл. 19. Локальный поиск 19.7 Геометрия локального поиска Локальный поиск очень тесно связан с симплекс-алгоритмом; в действительности его можно считать идентичным симплекс-алго- симплекс-алгоритму на соответствующим образом определенном многограннике. Для обоснования этой идеи введем понятие дискретной линейной задачи о подмножествах. Определение 19.7. Пусть N={1,. . .,п), и пусть F^2N— семей- семейство подмножеств множества N, причем никакое множество из F не содержится строго в другом множестве. Дискретная линейная задача о подмножествах (ДЛЗП) (F, d) — это комбинаторная за- задача оптимизации с допустимым множеством F и стоимостью c(f)=^tefdi, f?F, где d=(dit. . .,dn) — заданный вектор весов в R". ? Многие важные комбинаторные задачи оптимизации являются ДЛЗП. Пример 19.4. ЗК является ДЛЗП. Пусть п—число ребер в пол- полном графе G, и пуоть F содержит в точности множества целых чи- чисел (имеется в виду, что ребра представляются целыми числами), которые соответствуют обходам в G. Вектор стоимости д. — это просто вектор весов ребер, т. е. векторное представление матрицы расстояний. ? Пример 19.5. Задача МОД также является ДЛЗП, в которой F содержит в точности те множества ребер, которые соответствуют остовным деревьям. ? Аналогично, в виде ДЛЗП можно сформулировать задачу о кратчайшем пути, некоторые задачи о матроидах, а также многие другие задачи. ДЛЗП тесно связаны с системами подмножеств, описанными в гл. 12. Допустимую точку f?F можно рассматривать как точку из R", в которой каждая координата i равна либо 1, либо 0, в зависи- зависимости от того входит или соответственно не входит i в /. Не опа- опасаясь недоразумений, мы будем использовать / для представления как множества / g F, так и этого /г-вектора. Таким образом, F можно рассматривать как множество вершин единичного куба в R" со стоимостью d'f. Любую точку /о € F можно сделать единственным оптимальным решением в F, положив J 0, если /,.= 1, ' \ 1, если //==0, поскольку при этом стоимость /о равна 0, а стоимость всех осталь- остальных / не меньше чем 1, ибо, согласно условию из определения 19.7, никакое допустимое множество не может строго содержаться в дру- другом. Это означает, что через точку /0 € R" можно провести гипер-
19.7. Геометрия локального поиска 487 плоскость (а именно d'x=0) так, что все остальные точки из F окажутся по одну сторону от этой гиперплоскости (й'/>0). Та- Таким образом, никакая точка / не является строгой выпуклой комби- комбинацией других точек, и, следовательно, множество F состоит из вершин некоторого выпуклого многогранника R". Рассмотрим далее выпуклую оболочку CH(F), которая пред- представляет собой многогранник в положительном гипероктанте в Rn, множество вершин которого в точности совпадает с F. Так как ми- минимальное значение линейной функции "d'f достигается в неко- некоторой вершине множества СН(F), то исходную задачу ДЛЗП можно рассматривать как задачу минимизации cl'f на многограннике CH(F), т. е. как задачу линейного программирования. Многогран- Многогранник CH(F) всегда можно представить как пересечение конечного числа полупространств, т. е. как систему неравенств и, следовательно, ДЛЗП можно представить как следующую зада- задачу, которую мы будем называть ЛП mind'x, Ax^b, A9.15) е допустимым множеством FiS^R". (Доказательство того, что мно- многогранник можно так представить, см. в iRo, теорема 19.1]. Это одно из тех интуитивно очевидных геометрических утверждений, дока- доказательство которых отнюдь не тривиально.) На первый взгляд кажется, что мы совершили большое дело — свели произвольную ДЛЗП, которая вполне может быть МР-пол- ной, к задаче линейного программирования. Однако нужно более внимательно посмотреть на это сведение и решить вопрос, как по множеству F получать матричное представление в задаче A9.15). Никакие методы сразу не приходят в голову, и поэтому мы начи- начинаем подозревать, что эта задача в общем случае является трудной. Это подтверждается результатом из работы [КР], где показано, что если ЫРфсо-NP, то ни для какой AfP-полной ДЛЗП не сущест- существует полиномиально краткой характеризации строк матрицы А. Кроме того, в [Ра 2] показано, что для ЗК определение того, пред- представляют ли два обхода несмежные вершины многогранника CH(F), само является /VP-полной задачей. Продолжим интерпретацию ДЛЗП в виде задач ЛП и получим две характеризации отношения смежности в многограннике CH(F), первоначально предложенные в работах [Sal, Sa2, WSB, SaWKl. Чтобы воспользоваться тем, что мы знаем о вершинах и смежности из симплекс-алгоритма, обычным способом добавим
488 Гл. 19. Локальный поиск к ЛП, переменные недостатка и перейдем к задаче в Rn+m, получая стандартную форму ЛП2 с допустимым множеством F2^Rn+m: mind'x, Ax = b, A9.16) где d = (d| Oa),A =[A | /J, x = (?\ eit ..., ej. (Вспомните обозначение из разд. 2.3.3.) Определим преобразование точки х g Ft в соответствующую точ- точку л; g F2: |х: ic —>- (x\b—Ах)=х, и обратную проекцию из F% в F%: п: л;—»-(первые п компонент х) = х. Отметим, что каждую точку х ? F2 можно однозначно представить в виде \ix, где x^.Fx и х=лх. Далее нам потребуется лемма, кото- которая связывает отношения смежности в /ч и F2. Лемма 19.2. Пусть х, у—две различные вершины в Ft. Тогда \ix и \ху—различные вершины в F2. Кроме того, х и у смежны в Ft тогда и только тогда, когда \ix и \iy смежны в F2. Доказательство. Предположим, что л; является вершиной, a \lx нет. Тогда \ix можно представить в виде где [а« и \iv—различные точки в F2. Тогда x=(u + v)/2, поэтому «==о, откуда следует, что [а« = [ао—противоречие. То, что \Lx=?\iy, если хфу, следует непосредственно из определения [а. Покажем теперь, что если х и у смежны, то \ix и \iy также смежны. Предположим, что это не так. Тогда произвольную точку [az на отрезке L = [\ix, \iy\ можно представить в виде [а2 = ([а« + [ао)/2, где [А« и \iv не лежат на L. Тогда z = (u + v)/2, где и и v не лежат на L = [x, у], — противоречие. Аналогично доказывается, что если \ix и \х,усмежны, тол; и у также смежны. ? Теперь мы можем установить первую характеризацию отноше- отношения смежности. Теорема 19.2. Пусть некоторая ДЛЗП порождает соответ- соответствующую J\X\t A9.15) так, как описано выше. Тогда две раз-
\ \ 19.7. Геометрия локального поиска 489 личные вершины х, y?Ft смежны в том и только в том случае, если существует такой вектор стоимости d, что х является единственной оптимальной вершиной и у—вторая по стоимо- стоимости вершина. Доказательство. Докажем вначале необходимость. Пусть х и у—две различные и смежные вершины выпуклого многогран- многогранника F^. Так как они смежны, существует гиперплоскость, со- содержащая х и у и не содержащая других вершин и опорная для этого выпуклого многогранника, т. е. все точки многогранника лежат по одну сторону от этой гиперплоскости (см. § 2.3). Это означает, что существует такой вектор d, что d'x — d'y = d0 и d'v > d0 для всех вершин v€Fltv=?x,y. Положим Q =m\n[d'v—d0], где минимум берется по всем вершинам v^.F1, v=?x, у. Исполь- Используя величину Q, повернем гиперплоскость так, чтобы точка х осталась на ней, а у стала «ближайшей» вершиной. Для этого выберем координату /, для которой «/,-=1 и х, = 0. (Такая ко- координата должна существовать, ибо, согласно определению 19.7, ни одно множество не содержится в другом.) Увеличим dt на Q/2. Стоимость х остается d0, стоимость у0 становится равной do+Q/2, а стоимость всех остальных вершин остается не меньше чем do+ Q. Докажем теперь достаточность. Согласно лемме 19.2, достаточ- достаточно установить этот результат для образов вершин х и у в много- многограннике F2, соответствующем задаче ЛП2, которая представляет собой зада у линейного программирования в стандартной форме. Выберем вектор стоимости d с описанным свойством и приме- применим симплекс-алгоритм в вершине ц.у с вектором стоимости d= = (d\0). Вершина x=\ix будет единственной оптимальной вершиной в F2 и у будет второй по стоимости вершиной. Предположим, что х и у не смежны. Поскольку отношение смежности в многограннике порождает точную систему окрестностей для симплекс-алгоритма (теорема 2.10) и так как в соответствующей окрестности вершины у в многограннике нет решения с лучшей стоимостью, мы делаем вы- вывод, что у оптимально — противоречие. ? Теперь мы в состоянии показать, что система окрестностей, по- порожденная отношением смежности в CH(F), является единствен- единственной минимальной точной системой окрестностей для локального поиска в исходной ДЛЗП. Другими словами, наименьшие окрест- окрестности локального поиска, гарантирующие оптимальность,— это в точности те, которые просматривались бы симплекс-алгоритмом в CH{F).
Гл. 19. Локальный поиск Теорема 19.3. Отношение смежности в многограннике СН (F) порождает единственную минимальную точную систему окрестнос- окрестностей для локального поиска по F. Доказательство. Используя снова F2, из симплекс-алгоритма получаем, что система окрестностей, порожденная отношением смежности в многограннике, является точной. Остается показать, что каждая вершина, смежная с к в многограннике CH(F), должна содержаться в каждой точной окрестности вершины х. Чтобы пока- показать это, предположим, что t — вершина, смежная с х, но не ле- лежащая в некоторой точной окрестности к. По теореме 19.2 сущест- существует такой вектор стоимости d, что относительно него t— единст- единственная оптимальная вершина их — вторая по стоимости вершина. Но алгоритм точного локального поиска при рассмотрении вершины х объявит ее оптимальной — противоречие. ? 19.8 Пример больших минимальных точных окрестностей [PS1] Разберем теперь детально пример ДЛЗП — а именно задачу о расписании для заданий с директивными сроками — в которой мож- можно явно указать минимальную точную окрестность допустимого ре- решения. Этот пример не только еще раз проиллюстрирует идеи пре- предыдущего параграфа, но и поставит вопрос о том, сколько времени требуется для поиска по точной окрестности. Определение 19.8. Пусть N={\, 2,. . .,«}—множество заданий с директивными сроками Df и временем выполнения Tj. Подмно- Подмножество заданий f^N допустимо, если все задания из N — {/} можно выполнить на одном процессоре без превышения директив- директивных сроков и множество N—{/} максимально по включению, т. е. N—{/} не является собственным подмножеством никакого другого подмножества из N с тем же свойством. Индивидуальная задача о расписании для заданий с директивными сроками (РЗДС) — это ДЛЗП с указанным допустимым множеством F и некоторыми стои- стоимостями dj для / ? N. ? Заметим, что мы определили допустимое множество как мно- множество заданий, не вошедших в расписание, с тем, чтобы предста- представить эту задачу как задачу минимизации. Таким образом, мы хо- хотим найти такое f ?F, минимизирующее стоимость что d, можно рассматривать как штраф, накладываемый в том случае, если задание / не выполнено к директивному сроку. Заме- Заметим также, что Dj и Tj считаются фиксированными; они не по-
19.8. Пример больших минимальных окрестностей 491 ступают в качестве входных данных задачи, а только определяют допустимое множество F. Рассмотримчгеперь задачу РЗДС, в которой допустимое мно- множество определяется следующими фиксированными значениями Dj и Тj при условии, что п нечетно: Dj — ?-^- для всех i g N, (п— 1 . . — при / = 1, 1 при / > 1. Если мы включаем в расписание задание 1, то не остается времени для выполнения никакого другого задания, поэтому одной допусти- допустимой точкой будет f=N—{1}. Если мы не включаем в расписание задание 1, то остается место ровно для (л—1)/2 заданий с единич- единичным временем выполнения, что приводит к следующему множеству допустимых точек: {/V l€ и Этим исчерпываются все возможные допустимые точки, поэтому F={f}[}F'. Выберем теперь произвольную точку s?F' и укажем вектор стоимости d(s), относительно которого s — единственная оптималь- оптимальная точка и / — вторая по стоимости точка. По теореме 19.2 отсюда будет следовать, что fas смежны. В качестве искомого вектора можно взять вектор с координатами d/(s) = \ О при \Ф\ и /€s, I 1 в противном случае. Стоимость точки s относительно этого вектора d равна (п—3)/2, стоимость точки / равна (п—1)/2, а стоимость любой другой допусти- допустимой точки не меньше, чем (п—1)/2. Таким образом, любая точка s содержится в минимальной точной окрестности точки /, которая на самом деле в точности совпадает с F'. Эта окрестность F' содержит ("^.'п/г) точек. Используя формулу Стирлинга, можно показать, что В результате мы получили, что наименьшая точная окрестность точки / содержит огромное число точек. Этот факт является след- следствием нашего выбора Dt и Tj, но это геометрический факт, незави- независимый от вектора стоимости d, который мы рассматриваем как вход- входную информацию.
492 Гл. 19. Локальный поиск Если иметь в виду перечисление всех точек из F', то должно казаться, что точный локальный поиск из точки f потребует очень много времени. Следующий результат может показаться удиви- удивительным. Теорема 19.4. Для любой индивидуальной задачи РЗДС с опре- определенными выше Tj, Dj и произвольным вектором стоимости d поиск по минимальной точной окрестности F' точки f можно про- произвести за время 0(п). Доказательство. Так как F={f}[}F', то поиск по/7' сводится к нахождению оптимального решения. Это можно осуществить, находя (п—1)/2 заданий из множества /V—{1}, суммарная стоимость которых максимальна, и сравнивая эту стоимость с dt. Алгоритм нахождения медианы, упомянутый в задаче 2 из гл. 12, позволяет сделать это за время О(п). П Здесь мы имеем пример, когда поиск по окрестности очень сильно ориентирован на данные в направлении, подсказанном поис- поиском переменной глубины из § 19.5. В работах [Sal, Sa2, SWB, SaWK.1 показано, что минимальная точная окрестность для ЗК имеет экспоненциальную мощность (см. задачу 15), однако предыдущий пример позволяет надеяться, что для ЗК существует алгоритм точного локального поиска с окрест- окрестностями, которые можно просматривать быстро, скажем за полино- полиномиальное время. Это не будет гарантировать существования поли- полиномиального алгоритма для ЗК, так как останется не ясным, сколь- сколько улучшений требуется для достижения оптимальности. Но это по крайней мере давало бы точный алгоритм, полезный для задач малого размера, совершенно аналогично симплекс-алгоритму для задачи ЛП, который также производит поиск по точной окрестности за полиномиальное время. Результаты следующего параграфа раз- разрушают даже эту надежду. 19.9 Сложность точного локального поиска для ЗК [PS1] Цель этого параграфа — показать, что поиск поточной окрест- окрестности для задачи коммивояжера можно производить за поли- полиномиальное время только в том случае, если P = NP, что очень маловероятно. Нам потребуется следующая задача. ОГРАНИЧЕННЫЙ ГАМИЛЬТОНОВ ЦИКЛ (ОГЦ) Даны граф G=(V, Е) и гамильтонов путь Р в G. Спрашивается, существует ли гамильтонов цикл с в графе G? Таким образом, мы указываем гамильтонов путь (т. е. гамиль- гамильтонов цикл без одного ребра) и интересуемся, существует ли гамиль-
1&K Сложность тонного локального поиска для ЗК. 493 тонов цикл. Ока&ывается, что этот гамильтонов путь не помогает нам при решений данного вопроса. Теорема 19.5. Задача ОГЦ NP-полна. Доказательство. Задача ОГЦ, очевидно, принадлежит NP. Мы полиномиально преобразуем обычную задачу о гамильтоновом цикле (ГЦ) в задачу ОГЦ с помо- помощью специального подграфа, изоб- изображенного на рис. 19.13, кото- который мы будем называть алмазом. В тех случаях, когда этот граф с 8 вершинами является подграфом некоторого графа G, мы будем предполагать, что G соприкасается с этим алмазом только в угловых вершинах N, S, Е и W. При этом предположении покажем, что ес- если в G имеется гамильтонов цикл с, то алмаз D проходятся циклом с в точности одним из двух спосо- способов, изображенных на рис. 19.14, которые мы будем называть се- веро-южным и восточно-западным способами. Для обоснования это- этого заметим, что если гамильтонов цикл входит в D в вершине N, Рис. 19.13. Подграф алмаз. Рис. 19.14. Северо-южный и восточно-западный способы прохода через алмаз. он должен далее пойти в х, иначе вершина х будет пропущена. За- Затем он приходит в вершину W, где он не может покинуть D, ибо в противном случае ниш нельзя будет посетить, не пропустив у. Поэтому далее он должен идти в Е и $, в результате чего получаем
494 Гл. 19. Локальный поиск 1 ' северо-южный способ прохода через D. Рассуждения для восточно- западного способа аналогичны. Пусть теперь G= (V, Е) — индивидуальная задача о гамильто- новом цикле. Мы построим новый граф G', в котором всегда есть гамильтонов путь и в котором гамильтонов цикл есть в том и только в том случае, если он есть в G. Идея состоит в том, чтобы заменить вершины графа G алмазами и поместить их в некоторый гамильтонов путь с помощью северо-южного спосо- способа. При этом граф G кодиру- D-, ется ребрами, соединяющими за- западные и восточные вершины этих алмазов. Опишем конструкцию более подробно. Начнем с построе- построения графа G', поместив «=|У| •°/ алмазов Dt с вершинами Nit Sh Et и W( в вертикальный столбец и добавив ребра [S,-, Ni+i], i=l,. . ., п—1, как пока- показано на рис. 19.15(а). При этом в G' заведомо имеется гамильто- гамильтонов путь р, а именно путь, включающий северо-южный проход через Du затем ребро [Si, N2\, затем северо-южный Рис. 19.15. а) Гамильтонов путь в проход через D2 и т. д. ' Рис. 19. ) у G'. б) Ребра в G', порождаемые реб ром U, /] в G. р Далее для каждого ребра [vt, vA исходного графа G доба- добавим к G' ребра lWit E}] и [Wf, Et) (см. рис. 19.15F)). Если в G имеется гамильтонов цикл, то в G' можно построить соответствующий ему гамильтонов цикл, посещая алмазы в G' в том же порядке, в каком в G посещаются вершины, и проходя через каждый алмаз восточно-западным спосо- способом. Обратно, если в G' имеется гамильтонов цикл, он не может входить ни в какой алмаз в северной или южной вершине, ибо тогда он должен проходить по всем алмазам северо-южным способом и окажется в тупике в вершине Ni или Sn. Следовательно, этот га- гамильтонов цикл должен проходить по всем алмазам восточно-за- восточно-западным способом, и порядок, в котором посещаются алмазы, опре- определяет гамильтонов цикл в графе G. ? Пример 19.6. На рис. 19.16 изображен простой граф G, не имею- имеющий гамильтонова цикла, и соответствующий граф G', также не
19.9. Сложность точного локального поиска для ЗК 495 имеющий^ гамильтонова цикла, но имеющий гамильтонов путь р, показанной пунктирной линией. ? Теперь мы можем доказать основной результат этого параграфам распознавание неоптимальности обхода в индивидуальной 3К вклкЗ- чает в себя задачу ОГЦ. Сформулируем вначале задачу распозна- распознавания неоптимальных обходов. Определение 19.9. НЕОПТИМАЛЬНОСТЬ В ЗК — это следую- следующая задача. Даны индивидуальная ЗК и обход f; спрашиваете^, верно ли, что f неоптимален? ? Теорема 19.6. Задача НЕОПТИМАЛЬНОСТЬ В ЗК NP-полн^. Доказательство. Эта задача принадлежит NP, так как опт!11' мальный обход является коротким удостоверением, показывающий, Рис. 19.16. Граф G и соответствующий ему граф G', иллюстрирующие преобразование задачи о гамильтоновом цикле в ограниченную задачу о гамильтоиовом цикле. что обход f неоптимален. Преобразуем теперь полиномиально зад*а" чу ОГЦ в задачу НЕОПТИМАЛЬНОСТЬ В ЗК. Пусть G=(V, Е) — граф в индивидуальной задаче ОГЦ, и пус-ть Р — соответствующий гамильтонов путь в ней. Построим индивзи" дуальную ЗК с п = |У| городами и стоимостью 1, если [i, /]? Е, 2, если [i, j](j-E. Гамильтонов путь р определяет обход f в ЗК со стоимостью (п—1))+ +2=я+1. Предположим, что/ неоптимален в ЗК. Тогда сущест- существует обход стоимости п, который определяет гамильтонов цикл1 в исходном графе G из задачи ОГЦ.
496 Гл. 19. Локальный поиск Обратно, гамильтонов цикл в G определяет обход в ЗК со стои- стоимостью п, показывающей, что / неоптимален. ? Вспомним подпрограмму УЛУЧШЕНИЕ^) в нашей формули- формулировке локального поиска — при использовании точной окрестно- окрестности она выдает улучшенный обход, если обход t неоптимален, по- поэтому любую индивидуальную задачу НЕОПТИМАЛЬНОСТЬ В ЗК можно решить, вызвав один раз подпрограмму УЛУЧШЕНИЕ любого алгоритма точного локального поиска. В результате мы доказали Следствие. Если РфЫР, то никакой алгоритм локального поис- поиска для ЗК с полиномиальной сложностью каждой итерации не мо- может быть точным. Таким образом, мы заканчиваем эту главу несколько пессимис- пессимистическим замечанием (см. также задачу 14), разрушающим надеж- надежду на то, что для ЗК—нашей основной AfP-полной задачи опти- оптимизации,— можно найти алгоритм локального поиска с быстрыми итерациями, такой, как симплекс-алгоритм. Однако не следует за- забывать, что локальный поиск может быть очень эффективной эв- эвристикой для таких задач. В действительности это часто лучшее, что есть. Задачи 1*. Покажите, что задача о равномерном разбиении графа из § 19.5 NP- полна. 2. Докажите следующий факт и объясните его связь с поиском переменной глубины [LK]. Пусть gi, i—\, ... , k,— последовательность чисел, и пусть g/ /= 1, ..-, k, 1 = 1 — их частичные суммы. Тогда если G(&)>0, то существует циклическая переста- перестановка чисел g[\ gr, gr+i, ¦•¦ , gk> 8ь ¦¦¦ > g;--i> \<r<k, обладающая тем свойст- свойством, что все ее частичные суммы положительны. 3. Докажите, что равенства A9.12) корректно определяют новые значения D после обмена. 4. Разработайте алгоритм для нахождения нижней границы в задаче о рав- равномерном разбиении графа, используя алгоритм нахождения максимального потока. 5. Предположим, что при выполнении алгоритма локального поиска мы хо- хотим проверить, не доказано ли уже для новых допустимых решений, что они локально оптимальны. Опишите эффективный метод такой проверки, 6. Для ускорения поиска следующей пары щ, bi при локальном поиске по окрестности с использованием равенства A9.11) в алгоритме равномерного разби- разбиения графа Керниган и Лин [KL] сортируют числа Da и Dj, в убывающем порядке. а) Объясните, почему это ускоряет поиск. б) Проанализируйте временную сложность каждого поиска по окрестности и покажите, что она не превосходит O(n2logn).
Задачи 497 в) Как сообщается, общая временная сложность оказывается около О(пг>4). Что можно на основе этого сказать о числе проходов, необходимых для дости- достижения локальной оптимальности? г*) Сравните временную сложность в пп. б) и в) с асимптотическим поведе- поведением времени, необходимого для проверки возможности перестановки всевозмож- всевозможных пар множеств равной мощности. 7* [TS]. Диаметр графа — это самый длинный среди кратчайших для каж- каждой пары вершин путей. Граф G называется k-регулярным, если все его вершины имеют одинаковую степень k. (В ориентированном случае все степени захода и степени исхода равны k.) Предположим, что мы хотим разработать алгоритм ло- локального поиска для построения ^-регулярного графа (ориентированного или неориентированного) с п вершинами и минимальным диаметром. Опишите, как выбрать а) метод поиска начального решения; б) окрестности; в) функцию стои- стоимости. 8* [PS2]. Воспользуйтесь подграфом из § 19.9, названным алмазом, для построения индивидуальной задачи коммивояжера с п городами, обладающей следующими свойствами: имеются а) единственный оптимальный обходи б) экс- экспоненциальное (относительно п) число обходов, которые являются следующими наилучшими по стоимости, имеют произвольно большую стоимость и не могут быть улучшены заменой менее чем an ребер, где а — фиксированная доля. 9 [PS2]. Рассмотрим задачу коммивояжера с п городами, в которой матрица расстояний удовлетворяет неравенству треугольника. Пусть со>О — стоимость оптимального обхода, и пусть cs — стоимость следующего (по стоимости) обхода. Определим зазор g как величину (cs—со)/со. Докажите, что g<2ln. 10. В пуассоновском процессе время считается разделенным на маленькие от- отрезки длины dt и предполагается, что вероятность наступления некоторого собы- события в любом сегменте равна dtlx независимо от остальных сегментов. а) Покажите, что в пределе при dt, стремящемся к нулю, вероятность того, что событие не осуществится за время Т, равна е~ 'т. б) Будем считать, что вычислительная машина делает незамеченную ошибку в течение года работы с вероятностью 10~° и что появление таких ошибок пред- представляет собой пуассоновский процесс. Какова вероятность того, что вычисли- вычислительная машина выполнит 1 секундную программу без незамеченной ошибки? в) Предположим, что алгоритм локального поиска находит оптимальное ре- решение с вероятностью 0.39, и пусть выполняются предположения из п. б). Сколько независимых испытаний нужно провести, чтобы иметь большую уверенность в ра- работе алгоритма чем в работе вычислительной машины? 11. а) Установите соотношение A9.16), оценивающее мощность множест- множества F'. б) Покажите, что |Г|>2("~1)/2. 12. Сформулируйте следующие задачи как дискретные линейные задачи о подмножествах. а) Задача о кратчайшем пути. б) Задача о потоке минимальной стоимости. в) Задача о множестве максимального веса в матроиде. г) Задача о взвешенном пересечении матроидов. д) Задача о взвешенном пересечении трех матроидов. 13* [StWK]. Предположим, что [г,-у-]—матрица связностей для неориен- неориентированного графа О-=A/,?),и мы хотим проверить выполнение неравенств rij^sij ПРИ всех г> / Для Данной матрицы требуемых связностей [sij], а) Докажите следующее утверждение: если гаш( =^ sa6i rbtni z? sat, для вершин mi, m2, ..., mrah> отличных от а, Ь и друг от друга, то rab~S^Sab- б) Покажите, что в том случае, когда s,-y = ? для всех i, /, результат из п. а) позволяет проверить связности в графе, используя не более чем k(\V \ — (k-\-\)/2) проверок.
498 Гл. 19. Локальный поиск в) Покажите, что если Х-замеиа в допустимой сети, при которой уда- удаляются ребра [i, m] и [/, /], нарушает допустимость, а именно гаь стано- становится меньше, чем sab, то либо rlm < saj,, либо гц < saj,. 14. [PS1]. Покажите, что если Р Ф NP, то никакой алгоритм локаль- локального поиска для ЗК с полиномиальной временной сложностью каждой ите- итерации не может давать е-приближенных обходов для любого фиксированного е > 0. 15* [WSB]. Покажите, что для произвольного обхода п городов число смежных с ним обходов в его минимальной точной окрестности экспоненци- экспоненциально относительно п. 16. а) Покажите, что N„_3 ие является точной системой окрестностей для ЗК с п городами. б) Покажите, что Nn_i—точная система окрестностей. Комментарии и ссылки § 19.2 [Во] Bock F. An Algorithm for Solving Traveling-Salesman and Related Network Optimization Problems, presented at the fourteenth National Meeting of the Op. Res. Soc. of America, St. Louis, Missouri (Oct. 24, 1958). [Cr] Croes G. A. A Method for Solving Traveling-Salesman Problems, OR, 6, No. 6 (November — December 1958), 791—812. [Li] Lin S. Computer Solutions of the Traveling Salesman Problem, BSTJ, 44, No. 10 (December 1965), 2245—2269. [HK1] Held M. and R. M. Karp. A Dynamic Programming Approach to Sequencing Problems, J. SIAM, 10, No. 1 (March 1962), 196—210. Одно из наиболее ранних описаний локального поиска можно найти в [DFFN] Dunham В., Fridshal D., Fridshal R., North J. H. Design by Natural Selection, IBM Res. Dept. RC-476, June 20, 1961. § 19.3 [StWK] Steiglitz K-, Weiner P., Kleitman D. J. The Design of Minimal Cost Sur- vivable Networks, IEEE Trans. Cir. Theory, CT-16, No. 4 A969), 455—460. § 19.4 IRFRSK] Rothfarb В., Frank H., Rosenbaum D. M., Steiglitz K., Kleitman D. J. Optimal Design of Offshore Natural-Gas Pipeline Systems, OR, 18, No. 6 (No- (November—December 1970), 992—1020. § 19.5 [KL] Kernighan B. W., Lin S. An Efficient Heuristic Procedure for Partitioning Graphs, BSTJ, 49, No. 2 (Februry 1970), 291—307. [LK] Lin S., Kernighan B. W. An Effective Heuristic for the Traveling-Salesman Problem, OR, 21 A973), 498—516. § 19.6 [Gr] Gratzer F. J. Computer Solution of Large Multicommodity Flow Problems (неопубликованная диссертация, Princeton University, September 1970). [GS] Gratzer F. J., Steiglitz K- A Heuristic Approach to Large Multicommodity Flow Problems, Proc. Symp. Computer-Communications Networks and Tele- traffic, Microwave Res. Inst. Symp. Series, Vol. XXII, Polytechnic Press N. Y. A972), pp. 311—324. ] Krone M. J. Heuristic Programming Applied to Scheduling Problems (неопуб- (неопубликованная диссертация, Princeton University, September 1Э70).
Комментарии и ссылки 499 [KS] Krone M. J., Steiglitz К- Heuristic-Programming Solution of a Flowshop- Scheduling Problem, OR, 22, no. 3 (May — June 1974), 629—638. [GL] Goldstein A. J., Lesk A. B. Common Feature Techniques for Discrete Optimi- Optimization, Сотр. Sci. Tech. Report 27, Bell Tel. Labs. (March 1975). [SW] Steiglitz K., Werner P. Some Improved Algorithms for Computer Solution of the Travelling Salesman Problem, Proc. Sixth Allerton Conf. on Circuit and System Theory, Urbana, Illinois A968), 814—821. § 19.7 [Ro] Rockafellar R. T. Convex Analysis. Princeton N. J.: Princeton Univ. Press, 1970. [Имеется перевод: Рокафеллар Р. Т. Выпуклый анализ.— М.: Мир, 1973.] [Ра2] Papadimitriou С. Н. The Adjacency Relation on the Traveling Salesman Polytope is WP-Complete, Math. Prog., 14 A978), 312—324. ISal] Savage S. L. The Solution of Discrete Linear Optimization Problems by Neigh- Neighborhood Search Techniques, Yale University, June 1973 (неопубликованная диссертация). [Sa2] Savage S. L. Some Theoretical Implications of Local Search, Math. Prog., 10 A976), 354—366. [WSB] Weiner P., Savage S. L., Bagchi A. Neighborhood Search Algorithms for Guaranteeing Optimal Traveling Salesman Tours Must be Inefficient, J. Сотр. Sys. Sci., 12 A976), 25—35. [SaWK] Savage S. L., Weiner P., Krone M. J. Convergent Local Search, Res. Re- Report 14, Dept. Сотр. Sci., Yale University, New Haven, Conn. A973). [KPJ Karp R. M., Papadimitriou С H. On Linear Characterizations of Combina- Combinatorial Optimization Problems, Proc. Twenty-First Annual Symp. on Founda- Foundations of Сотр. Sci., IEEE A980), 1—9. § 19.8 [Pal] Papadimitriou С. Н. The Complexity of Combinatorial Optimization Prob- Problems (неопубликованная диссертация, Princeton University, August 1976). [PS1] Papadimitriou С H., Steiglitz K- On the Complexity of Local Search for the Traveling Salesman Problem, J. SIAM Сотр., 6, 1 (March 1977), 76—83. Дополнительные комментарии и ссылки В литературе описаны приложения локального поиска и к другим задачам. В следующих источниках сообщается о благоприятных результатах при раз- разработке механических передач, таких, как привод печатного стола в механизме печатной машины:. [LF] Lee Т. W., Freudenstein F. Heuristic Combinatorial Optimization in the Ki- Kinematic Design of Mechanisms, Part 1: Theory, Part 2: Applications, Journal of Engineering for Industry, 98, no. 4 (November 1976), 1277—1284. [LL] Lee T. W., Langrana N. Heuristic Approaches to the Inversed Dynamic Lin- Linkage Problems: With Special Application to Biomechanics, Proc. Fifth World Congress on Theory of Machines and Mechanisms, Paper No. USA-53, Montreal, Canada (July 1979). Построение сетей малого диаметра, рассматривавшееся в задаче 7, описано в работе [TS] Toueg S., Steiglitz К- The Design of Small-Diameter Networks by Local Se- Search, IEEE Trans, on Computers, C-28, No. 7 (July 1979), 537—42. Задачи 8 и 9 взяты из статьи [PS2] Papadimitriou С. Н., Steiglitz К- Some Examples of Difficult Traveling Sa- Salesman Problems, OR, 26, No. 3 (May — June 1978), 434—43.
500 Гл. 19. Локальный поиск Задача о равномерном разбиении графа (см. задачу 1) — это вариант задачи о минимальном разрезании на ограниченные множества; доказательство ее NP- полноты см. в работе [GJS] Garey M. R., Johnson D. S., Stockmeyer L. J. Some Simplified NP-Com- plete Graph Problems, Theor. Сотр. Sci., 1 A976), 237—67. Задача 16F) основана на теоретико-графовом результате, впервые высказанном в качестве гипотезы Липом [Li] и доказанном в работе [ТН] Thomason A. G. Hamiltonian Cycles and Uniquely Edge Colourable Graphs, Annals of Discrete Math., 3 A978), 259—268.
Предметный указатель Алгол Упрощенный 27 Алгоритм АЛЬФАБЕТА 152 — асимптотически оптимальный 285 — Блэнда 58 — двухэтапный 63 — Дейкстры 133 — декомпозиции 104 — дерева 426 — для задачи МОД второй 286 о пересечении матроидов 307 — ДОСТРОЙКА 147 — допустимый относительно задачи 145 — ДП-1 432 — ДП-И 434 — ДП-Ш 435 — ДП-IV 439 — дробный двойственный для задачи ЦЛП 340 — жадный для задачи ЛМВ 288 матроидов 291 — Кристофидеса 429 — локального поиска 467 — НАЙТИПУТЬ 203 — недопустимый относительно задачи 147 — ПОИСК 199 — построения взвешенного паросоче- тания 270 максимального потока 215 минимального остовного дерева 282 — — паросочетания в двудольном графе 229 произвольном графе 244 — проверки удостоверения 359 — прямо-двойственный 106, 111 — прямо-допустимый 145 — псевдополиномиальный 197, 401 — рекурсивный 220 — сильно полиномиальный 197 — Флойда— Уоршелла 136 — Форда — Фалкерсона 127 — ЦИКЛ 143 — эллипсоидов для задачи СЛН 182 модифицированный 189 — е-приближенный 421 Алгоритмы 160 — вероятностные 413 — отсекающей плоскости 336 прямые целочисленные 350 — переборные 336 — полиномиальные 168 — приближенные 413 — псевдополиномиальиые 168 — субэкспоненциальные 168 — экспоненциальные 168, 413 Алмаз 493 Антидерево 414 Арифметическая операция 166 Базис 295 Базисное допустимое решение ^бдр) 34 — — — вырожденное 45 Беглец 193 Блок 28 Булева переменная 323 Булевы формулы 323 выполнимые 323 Вектор лексикографически отрицатель- отрицательный 344 положительный 344 Вектор цен 101 Вектор-столбец 25 Вектор-строка 25 Венгерский метод 254, 258 в матричной форме 259 Вершина 25, 40 — вырожденная 245 — живая 450 — мертвая 449 — смежная 25 — степень 25 захода 26 исхода 25 Вершинная связность 470 Вершины внешние 224 — внутренние 224 — объединенные в пары 224
502 Предметный указатель — свободные 224 — сети 139 — смежные 65 Веса 287 Ветвление 449, 450 Внутренность многогранника 181 Вполне унимодулярность 256 Вращение 181 Время выполнения 319 Выделенный символ 359 Выигрыш 423, 479 Выпуклая комбинация 18 — — строгая 18 Гамильтонов путь 310 — маршрут 444 Гипергрань 40 Гиперплоскость 38 — опорная 40 Грани 39, 415 — смежные 415 Граница см. Пропускная способность Граф 25 — биориентированный 250 — взвешенный 27 полный 27 — двойственный 414 — двудольный 26, 223 — двусвязный 220 — диаметр 497 — Дирихле 312 — допустимый 266 — насыщенный 165 — ориентированный см. Орграф — пленарный 312 — разреженный 165 — хордовый 414 — эйлеров остовный 424, 426 — ^-регулярный 497 Действительная прямая 24 Дерево 26 — остовное 27 Дефицит 471 Дизъюнкты 323 Динамическое программирование (ДП) 432 для задачи о кратчайшем пути в слоистых сетях 461 и ЗК 463 Дихотомия 322 Доминирование 456 Дробная часть числа 339 Дуга обратная 125, 208 — прямая 124, 208 Дуги неособые 130 — особые 130 Задача ВЕРШИННОЕ ПОКРЫТИЕ 373, 418 — алгоритм 1 418 2 421 — ВЫПОЛНИМОСТЬ 357 — выпуклого программирования 9 — ГАМИЛЬТОНОВ ЦИКЛ 394 — ГАМИЛЬТОНОВА ДОСТРОЙКА 416 — главная 102 — ГОМЕОМОРФИЗМ ПОДГРАФУ 415 — двойственная (Д) 107 к ограниченной прямой (ДОП) 108, ПО — ДОПОЛНЕНИЕ ГАМИЛЬТОНО- ГАМИЛЬТОНОВА ЦИКЛА 394 ЗК 395 СВЯЗНОСТИ — ИЗОМОРФИЗМ ПОДГРАФУ 403 — индивидуальная комбинаторная 354 — КВАДРАТИЧНОЕ ПРОГРАММИ- ПРОГРАММИРОВАНИЕ 390 — КЛИКА 358 — коммивояжера (ЗК) 11, 12, 359 453 евклидова 423 как задача ЦЛП 317 с неравенством треугольника 423 — линейного программирования (ЛП) 9, 13 в канонической форме 31 общей форме 31 стандартной форме 31, 32, 175 — — — двойственная 73 — индивидуальная общая 30 — — — прямая 73 — ЛИНЕЙНЫЕ НЕРАВЕНСТВА (ЛН) 396 — МАКСИМАЛЬНОЕ ПАРОСОЧЕ- ТАНИЕ 358 — МАКСИМАЛЬНЫЙ РАЗРЕЗ 390 — МИНИМАЛЬНОЕ ОСТОВНОЕ ДЕРЕВО 358 ПОКРЫТИЕ 402 — МНОГОПРОДУКТОВЫЙ ПОТОК 390 — МНОГОПРОЦЕССОРНОЕ РАСПИ- РАСПИСАНИЕ 374 — МНОЖЕСТВО ВЕРШИН, РАЗ- РАЗРЕЗАЮЩИХ КОНТУРЫ 390 ДУГ, РАЗРЕЗАЮЩИХ КОН- КОНТУРЫ 390 — НЕЗАВИСИМОЕ МНОЖЕСТВО 373 — нелинейного программирования 9
Предметный указатель 503 НЕОПТИМАЛЬНОСТЬ В ЗК 495 0-1-РЮКЗАК 386 о бродячем торговце (ЗБТ) 312 — выполнимости 323 — гамильтоновом пути 302 — диете 30 — китайском почтальоне 276 смешанный вариант 279, 390 — кратчайшем пути (ЗКП) 80, 113, 451 ¦ веревочная модель 138 — лесе максимального веса (ЛМВ) 287 — линейных неравенствах (ЛН) 176 — максимальной клике 354 ¦ — максимальном потоке (ЗМП) 95 ¦ — — — индивидуальная 95 ¦ расширение 232 ¦ — матроиде с соответствием 309 ¦ — многопродуктовом потоке ми- минимальной стоимости 157 ¦ — моменте 23 ¦ — надежной сети минимальной сто- стоимости (НСМС) 470 ¦ — назначениях 148, 159, 254, 317 • — паросочетании 223 • в ориентированном графе 251 • с весами вершин 312 • узким местом 251 • — пересечении двух матроидов 300 ¦ — — трех матроидов 309 - — подмножествах дискретная ли- линейная (ДЛЗП) 486 - — поставщике 156 - — потоке минимальной стоимости 141 - — равномерном разбиении графа (РРГ) 478 - — разбиении относительно матрои- да 314 • — расписании для двух процессо- процессоров 250 - — — — заданий с директивными сроками (РЗДС) 490 общая 319 - — реберном покрытии минималь- минимальной стоимости 277 строгих линейных неравенствах (СЛН) 178 сумме времен окончания зада- заданий (ЗСВОЗ) 458 - — Ханойской башне 22 6-сочетании 251 - об остовном дереве с пропускными способностями 157 - — упаковке контейнеров 252 — ограниченная прямая (ОП) 108, 109 — ОГРАНИЧЕННЫЙ ГАМИЛЬ ТО- ТОНОВ ЦИКЛ (ОГЦ) 492 — оптимизации 12 индивидуальная 12 — — комбинаторная 354 — для системы подмножеств 290 вариант вычислительный 355 оптимизационный 355 распознавания 355 — ОПТИМИЗАЦИОННЫЙ 0-1-РЮК- 0-1-РЮКЗАК 433 — ПОСТРОЕНИЕ НАДЕЖНОЙ СЕ- СЕТИ 403 — ПРОБЛЕМА ОСТАНОВКИ 357 — ПРОСТЫЕ ЧИСЛА 414 — ПРОТЫКАЮЩЕЕ МНОЖЕСТВО 415 — прямая (П) 107 Задача ПУТЬ В ОРГРАФЕ 358 — РАЗБИЕНИЕ 387 — РАСКРАСКА ГРАФА 389 — распознавания 357 — СВЯЗНОСТЬ ГРАФА 358 — ТОЧНОЕ ПОКРЫТИЕ 3-МНО- ЖЕСТВАМИ 385 — 3-ВЫПОЛНИМОСТЬ 369 — 3-МЕРНОЕ СОЧЕТАНИЕ 383 — 3-РАЗБИЕНИЕ 401 — ТРАНЗИТИВНОЕ СОКРАЩЕНИЕ ВЫБРАСЫВАНИЕМ 415 — Хичкока 148 — целочисленного линейного про- программирования (ЦЛП) 316 смешанная (СЦЛП) 319 — ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК 386 — 4-РАЗБИЕНИЕ 414 — К-е ПО ВЕСУ МНОЖЕСТВО 408 — т-ЦЛП 414 — ЛФ-полная 352, 363 — PSPACE-полная 412 Задачи выпуклого программирования 21 — двоичного линейного программи- программирования см. Задачи 0-1-линей- 0-1-линейного программирования — неразрешимые 160 — 0-1-линейного программирования (НОЛП) 324 — о матроидах 280 — — потоках и паросочетаниях 10 — смешанного ЦЛП 333 — целочисленного линейного програм- программирования (ЦЛП) 11 — /VP-полные 11 — — частные случаи 413 Закорачивание 299
504 Предметный указатель Замещение 48 Запрещение 485 Зацикливание 55 Игра в крестики и нолики л-мерная 193 Инцидентность 25 Исток 27 Источники 203 Клетка Дирихле 311 Клика планарная 404 Комментарии 29 Компонента сильно свизная 389 Контейнера вместимость 252 Коиус 78 Конъюнктивная нормальная форма 324 Куб 234 — d-мернын 171 — — возмущение 173 Лексикографически больше 344 — максимально 344 — меньше 344 — минимально 344 ^ — равно 344 Лексикографические правила устра- устранения зацикливания 347 Лемма Фаркаша 79 Лес 26 Лидер 299 Линия 139 Логические связки 323 Локально оптимальное допустимое ре- решение 16 Маршрут 25 — гамильтонов 424 — замкнутый 25, 26 — ориентированный 25 — эйлеров 424 Матрица 24 — вполне унимодулярная (ВУМ) 325 — евклидова расстояния 422 — единичная квадратная 25 — замыкания 422 — инциденций дуг и цепей 96 — невырожденная 180 — положительно определенная 180 — расстояний 27 — смежностей 164 — Татта 250 — транспонированная 25 — унимодулярная (УМ) 325 — CARRY 92 Матроид 280, 294 — графический 294, 296 — матричный 294, 297 — разбиения 297 — — по концам дуг 297 Матроидов пересечение 298 Матроиды паросочетаиий 313 Машины Тьюринга 160 — — недетерминированные 410 Метод венгерский 254 Метод ветвей и границ 446 — градиента внебазисного 54 по всем переменным 54 — двухэтапный 60 — декомпозиции 101 — дефекта 157 — для сведения общий 275 — исключения Гаусса 197 — искусственных переменных см. Ме- Метод двухэтапный — Кернигана и Лина 480 — кругового поиска 484 — «масштабирования» 158 — наибольшего приращения 54 — наискорейшего спуска 483 — обратной матрицы см. Симплекс- метод модифицированный — первого улучшения 483 — сужения 415 — Хачияна 391 Метрическая ЗК см. Задача коммивоя- коммивояжера с неравенством треуголь- треугольника Минимальное остовное дерево (МОД) 12 Многогранник 38 Множеств симметрическая разность 224 Множества медиана 311 — оболочка 296, 297 — ранг 296 Множество 24 — важных ячеек независимое 139 — вершиино непересекающихся путей 470 — выпуклое 18 — допустимых нечетных множеств 265 переменных 264 ребер 265 решений 353 столбцов 109 — индексов допустимое 149 Момент 23 Мультиграф 314, 424 — эйлеров 424 Набор заданий 319 — значений истинности 323 Напарник 224 Нелинейные ограничения 321 — стоимости 321 Неопределенность 371 Неравенства активные 275 Неравенство треугольника 422
Предметный указатель 505 Обход вложенный 426 Ограничения предшествевания 373 Окрестность относительно обмена 480 Оператор присваивания 28 — перехода 28 — условный 28 — for 28 — while 28 Операции элементарные над строками 49 Операция треугольника 135 Оптимальности критерий 51 Оптимизация комбинаторная 11 — непрерывная 11 Орграф 25, 201 — вспомогательный 205 — динамический 302 — сильно связный 220 — статический 303 Ордерево 299 — кратчайшее 315 Основание системы счисления 163 Остовиое дерево 13 Отказ 485 Отношение предшествования 319 Отсечение 338 — Гомори 339 Отсутствие прорыва 150, 257 Очередь 200 Ошибка совокупная 190 Паросочетаиие 223 — максимальное 223 — полное (совершенное) 223 — правильное 266 Переменная избытка 32 — недостатка 32 Переменные базисные 33 — дискретные 323 — исходные 360 Переобращеиие 95 Плоскость отсекающая см. Отсечение 338 Подзадачи 102 Подмножество зависимое 295 Подобходы 317 Подпрограмма УЛУЧШЕНИЕ 467 Подпространство аффинное 38 — линейное 37 Поиск бинарный 176, 178, 356 — в глубину (ПГ) 201 ширину (ПШ) 201 — локальный 413 — неудачный 311 — успешный 311 Полиномиальная приближенная схема (ППС) 438 полностью (ПППС) 439 Последовательность правильная 303 увеличивающая 303 — чередующаяся 301 Построение оптимальных объектов 361 Поток 27, 250 — величина 27, 250 — тупиковый 211 Предложение 104 Преобразование аффиииое 180 — полиномиальное 363 — — сохраняющее 414 Прибрежная система газопроводов 475 Принцип оптимальности 461 Приоритет 414 Проблема остановки 160, 191 — соответствия Поста 192 Производящая строка 339 Пропускная способность 27 дополнительная 208 сквозная (СПС) 213 Просмотр вершины х 126 Пространство виебазисиых перемен- переменных 54 — всех переменных 54 Процедура МАКСКЛИКА 356 — МОДИФИЦИРОВАТЬ 257, 258 — ПРОТОЛКНУТЬ 215 — ПРОТЯНУТЬ 215 — ПУТЬ 307 — РАЗМЕР КЛИКИ 356 — рекурсивная 193 — УВЕЛИЧЕНИЕ 243 — ЦВЕТОК 241 . — ЭЙЛЕР 425 Процесс пуассоиовский 497 Процессоры 319 Псевдовершииа 268 — внешняя 268 — внутренняя 268 Пути 292 Путь кратчайший 203 — обратный 237 — прямой 211 — увеличивающий 117, 124, 224 — чередующийся 224 увеличивающий 224 Разбиение равномерное 478 Размер входа 163 — графа 164 — задачи ЛП 164 Размерность 38 Разрез 121 — минимальный 208 Ранг подматрицы 298 Реберное покрытие 250
§06_ Предметный указатель Ребра вес 254 — паросочетания 224 — свободные 224 Ребро 25, 40 Реоптимизация 348 Ресурсы 319 Решение базисное 33 допустимое (бдр) 34 Решения ^-оптимальные 16 Сведения 485 — полиномиальные 362 Связность графа 199 Сеть 27 — биориентированная 250 — вспомогательная 210 — приращения 142 — простая 219 — разреженная 222 — слоистая 210 Сильно МР-полная задача 400 Симплекс-алгоритм 9, 52 — двойственный 85 — прямой 85 Симплекс-метод модифицированный 92 Система линейных неравенств проти- противоречивая 11 — окрестностей 15 — — точная 17 — подмножеств 290 — туннелей 193 Сквозная пропускная способность (СПС) 213 Скорость роста 163 Слово 165 Слой 210 Совместимость 371 Сортировка массива 193 Соседи по Дирихле 312 Списки смежностей 164, 198 СПИСОК 126 Способ восточно-западный 493 — северо-южный 493 Стоимость 423, 478 — внешняя 478 — внутренняя 478 — единичная 362 — относительная 50 Сток 27 Стягивание 235 Теорема Кёнига — Эгервари 139 — Кука 366 — о максимальном потоке и мини- минимальном разрезе 123 Теория двойственности 175 Трансверсаль 313 3-связность 470 Уравнения сцепляющие 102 Условие дополняющей нежесткости 76, 107 Фраза 192 Функция вогнутая 20 — выпуклая 19 — окрестностная см. Система окрест- окрестностей — стоимости 353 Хорда 414 Цветки 234 Целая часть числа 338 Цели 203 Цепь 25 — длина 25 — кратчайшая 97 — ориентированная 25 Цикл 25, 296, 297 — длина 25 — ориентированный 25 Циркуляция 142 Черепицы 192 Шаг 271 — насыщающий 217 — частичный 217 Шар единичный 180 Штраф 490 Эвристики 413 Эквивалентность полиномиальная 333 Эллипсоид 180 Этап 257, 271, 286 Ячейка важная 139 d-гиперкуб см. Куб d-мерный У-перешеек 220 fc-замена 15, 468 М-цикл 303 л-мерное действительное векторное пространство 24 /VP-полнота 325 /VP-трудность 408 /з-квантили 311 PSPACE 411 s-^-разрез 121 — пропускная способность 121 s-г-связность 139, 221 Х-замена 473 — выгодная 473 — окрестность 473 Д-замена 476
Оглавление Предисловие переводчика , , 5 Предисловие 7 Глава 1. Задачи оптимизации 9 1.1. Введение 9 1.2. Задачи оптимизации 11 1.3. Окрестности Iе) 1.4. Локальные и глобальные оптимумы 16 1.5. Выпуклые множества и функции 18 1.6. Задачи выпуклого программирования 20 Задачи , . . 22 Комментарии и ссылки 24 Приложение. Терминология и обозначения 24 П. 1. Линейная алгебра 24 П.2. Теория графов 25 П.З. Упрощенный Алгол 28 Глава 2. Симплекс-алгоритм 30 2.1. Формы задачи линейного программирования 30 2.2. Базисные допустимые решения 32 2.3. Геометрия задач линейного программирования 37 2.4. Переход от одного бдр к другому 46 2.5. Организация таблицы 48 2.6. Выбор выгодного столбца 50 2.7. Выбор ведущего элемента и алгоритм Блэнда, устраняющий за- зацикливание 54 2.8. Начало симплекс-алгоритма 60 2.9. Геометрические аспекты замещения 63 Задачи 68 Комментарии и ссылки 70 Глава 3. Двойственность 72 3.1. Двойственная задача линейного программирования в общей форме 72 3.2. Дополняющая нежесткость 76 3.3. Лемма Фаркаша 78 3.4. Задача о кратчайшем пути и двойственная к ней задача .... 80 3.5. Двойственная информация в таблице 83 3.6. Двойственный симплекс-алгоритм 85 3.7. Интерпретация двойственного симплекс-алгоритма 86 Задачи 89 Комментарии и ссылки , 90
508 Оглавление Глава 4. Вычислительные аспекты симплекс-алгоритма 92 4.1. Модифицированный симплекс-алгоритм 92 4.2. Вычислительные эффекты модифицированного симплекс-алго- симплекс-алгоритма 94 4.3. Задача о максимальном потоке и ее решение модифицированным методом 95 4.4. Метод декомпозиции Данцига — Вулфа 100 Задачи . , 105 Комментарии и ссылки 106 Глава 5. Прямо-двойствеииый алгоритм 107 5.1. Введение 107 5.2. Прямо-двойствениый алгоритм 108 5.3. Комментарии к прямо-двойственному алгоритму 112 5.4. Прямо-двойственный метод в применении к задаче о кратчайшем пути 113 5.5. Замечания по методологии 117 5.6. Прямо-двойственный метод в применении к задаче о максималь- максимальном потоке 117 Задачи 119 Комментарии и ссылки 120 Глава 6. Примо-двойственные алгоритмы для задач о максимальном потоке и кратчайшем пути: алгоритмы Форда — Фалкерсона и Дейкстры 121 6.1. Теорема о максимальном потоке и минимальном разрезе ... 121 6.2. Алгоритм пометок Форда и Фалкерсона 124 6.3. Проблема конечности алгоритма пометок 128 6.4. Алгоритм Дейкстры 133 6.5. Алгоритм Флойда — Уоршелла 135 Задачи 138 Комментарии и ссылки 140 Глава 7. Прямо-двойствеиные алгоритмы для задачи о потоке минималь- минимальной стоимости 141 7.1. Задача о потоке минимальной стоимости 141 7.2. Комбинаториализация пропускных способностей. Алгоритм ЦИКЛ 142 7.3. Комбинаториализация стоимости. Алгоритм ДОСТРОЙКА . . 145 7.4. Явный прямо-двойственный алгоритм для задачи Хичкока. Ал- Алгоритм АЛЬФАБЕТА 147 7.5. Преобразование задачи о потоке минимальной стоимости в за- задачу Хичкока 153 7.6. Заключение 155 Задачи 156 Комментарии и ссылки 157 Глав. 8. Алгоритмы и сложность 160 8.1. Вычислимость 160 8.2. Временные оценки 161 8.3. Размер индивидуальной задачи 163 8.4. Анализ алгоритмов 166 8.5. Полиномиальные алгоритмы 168 8.6. Симплекс-алгоритм не является полиномиальным , 171 8.7. Алгоритм эллипсоидов , , 175 Задачи 19 Комментарии и ссылки . . Г
Оглавление 509 Глава 9. Эффективные алгоритмы для задачи о максимальном потоке . 198 9.1. Поиск по графу 198 9.2. Что нехорошо в алгоритме пометок? 205 9.3. Расстановка пометок на сети и поиск по орграфу 207 9.4. Алгоритм нахождения максимального потока со сложностью O(\V\3) 211 9.5. Случай единичных пропускных способностей 217 Задачи ' 220 Комментарии и ссылки , . 221 Глава 10. Алгоритмы для задачи о паросочетании 223 10.1. Задача о паросочетании 223 10.2. Алгоритм построения паросочетания в двудольном графе . . 226 10.3. Паросочетание в двудольном графе и поток в сети 230 10.4. Паросочетание в произвольном графе. Цветки 232 10.5. Паросочетание в произвольном графе. Алгоритм ...... 240 Задачи 250 Комментарии и ссылки.. . . 252 Глава П. Взвешенное паросочетание 254 11.1. Введение 254 11.2. Венгерский метод для задачи о назначениях 255 11.3. Задача о взвешенном паросочетании в произвольном графе . . 262 11.4. Выводы 275 Задачи 276 Комментарии и ссылки 278 Глава 12. Остовиые деревья и матроиды 280 12.1. Задача о минимальном остовном дереве 280 12.2. Алгоритм со сложностью О(\Е\ log |V|) для задачи о мини- минимальном остовном дереве 283 12.3. Жадный алгоритм 287 12.4. Матроиды 290 12.5. Пересечение двух матроидов 298 12.6. О некоторых расширениях задачи о пересечении матроидов . . 308 Задачи 311 Комментарии и ссылки 314 Глава 13. Целочисленное линейное программирование 316 13.1. Введение 316 13.2. Вполне унимодулярность 325 13.3. Верхние оценки решений задач ЦЛП 328 Задачи 333 Комментарии и ссылки 334 Глава 14. Алгоритм отсекающей плоскости для задач целочисленного ли- линейного программирования 336 14.1. Отсечение Гомори 336 14.2. Лексикографическое упорядочение 344 14.3. Конечность дробного двойственного алгоритма 347 14.4. Другие алгоритмы отсекающей плоскости 349 Задачи 350 Комментарии и ссылки . , 351
§10 Оглавление Глава 15. W-полные задачи 352 15.1. Введение 352 15.2. Задача оптимизации — это три задачи 353 15.3. Классы Р и NP 357 15.4. Полиномиальные сведения 361 15.5. Теорема Кука 363 15.6. Другие ЛФ-полные задачи: КЛИКА и ЗК 369 15.7. Еще несколько /VP-полных задач: сочетание, покрытие и раз- разбиение 383 Задачи 389 Комментарии и ссылки 391 Глава 16. Еще об №-полноте 394 16.1. Класс co-NP 394 16.2. Псевдополиномиальные алгоритмы и «сильная» /VP-полнота 398 16.3. Частные случаи и обобщения /VP-полных задач 402 16.4. Словарь родственных понятий 408 16.5. Эпилог 412 Задачи 414 Комментарии и ссылки 416 Глава 17. Приближенные алгоритмы 418 17.1. Эвристиюъ-для задачи о вершинном покрытии. Пример . . . 418 17.2. Приближенные алгоритмы для задачи коммивояжера .... 422 17.3. Приближенные схемы 432 17.4. Отрицательные результаты 440 Задачи 444 Комментарии и ссылки 444 Глава 18. Метод ветвей и границ и динамическое программирование . . 446 18.1. Метод ветвей и границ для целочисленного линейного програм- программирования 446 18.2. Метод ветвей и границ в общем виде 450 18.3. Отношения доминирования 455 18.4. Стратегии метода ветвей и границ 456 18.5. Применение к задаче о расписании для конвейера 457 18.6. Динамическое программирование 461 Задачи 464 Комментарии и ссылки 465 Глава 19. Локальный поиск 467 19.1. Введение 467 19.2. Задача 1: ЗК 468 19.3. Задача 2: надежные сети минимальной стоимости 469 19.4. Задача 3: топология прибрежной системы газопроводов . . . 475 19.5. Задача 4: равномерное разбиение графа 478 19.6. Общие аспекты локального поиска 482 19.7. Геометрия локального поиска 486 19.8. Пример больших минимальных точных окрестностей .... 490 19.9. Сложность точного локального поиска для ЗК 492 Задачи 496 Комментарии и ссылки 498 Дополнительные комментарии и ссылки 499 Предметный указатель 501
УВАЖАЕМЫЙ ЧИТАТЕЛЬ! Ваши замечания о содержании книги, ее оформлении, качестве перевода и дру- другие просим присылать по адресу: 129820, Москва, И-110, ГСП, 1-й Рижский пер., д. 2, издательство «Мир».
Христос X. Пападимитриу, Кеннет Стайглиц «Комбинаторная оптимизация Алгоритмы в сложность» Ст. науч. ред. И. А. Маховая Мл. ред. О. И. Кузнецова Художник Г. М. Чеховской Художественный редактор В. И. Шаповалов Технический редактор 3. И. Резник Корректор Н. В. Андреева ИБ 4007 Сдано в набор 28.04.84. Подписано к печати 2 0.11.84. Формат 60Х90Ав- Бумага типографская № 2. Гарнитура литературная. Печать высокая. Объем 1 6 бум. л. Усл. печ. л. 32. Усл. кр. отт 32. Уч.-изд. л 31,91. Изд. № 1/3054. Тираж 7500 экз. Заказ № 3032. Цена 3 р. 1 0 к. ИЗДАТЕЛЬСТВО «МИР» Москва, 1-й Рижокий пер.. 2 Отпечатано с матриц Ордена Октябрьской Революции и ордена Трудового Красного Знамени Первой Образцовой типографии им. А. А. Жданова Союзполиграфпрома при Государственном комитете СССР по делам издательств, полиграфии н книжной торговли. 113054, Москва, Валовая,28 8 Ленинградской типографии № 6 ордена Тру« дового Красного Знамени Ленинградского объединения «Техническая книга» им. Евгении Соколовой Союзполнграфпрома при Государ, етвенном комитете СССР по делам издательств, полиграфии и книжной торговли. 193144, р. Ленинград, ул. Моисееико, 10. 3. 57.