Текст
                    Бернард Корте
Йене Фиген
Комбинаторная оптимизация
Теория и алгоритмы


Bernhard Korte Jens Vigen Combinatorial Optimization Theory and Algorithms Springer
Б. Корте, Й. Фиген Комбинаторная оптимизация Теория и алгоритмы Перевод с английского М. А. Бабенко Москва Издательство МЦНМО 2015
Корте Б., Фиген Й. Комбинаторная оптимизация. Теория и алгоритмы / Перевод с англ. М. А. Бабенко. — М.: МЦНМО, 2015. — 720 с. ISBN 978-5-4439-0281-4 Комбинаторная оптимизация — это широкая и бурно развивающаяся область математического программирования и дискретной математики, исследующая структурные и оптимизационные задачи на объектах, имеющих выраженный комбинаторный смысл. Книга известных немецких математиков фундаментальна по содержанию и основана на многочисленных прочитанных авторами курсах лекций. Она в необходимой мере представляет теоретические основы области (линейное и целочисленное программирование, точные и приближенные решения и их алгоритмическая сложность, NP-полнота и NP-трудность), подробно излагает классические разделы комбинаторной оптимизации (в частности, задачи о путях, потоках, паросочетаниях, матроидах), и доходит до освещения ряда новейших направлений и результатов. Тщательный стиль изложения алгоритмов и доказательств и большое количество удачно подобранных упражнений позволяют рекомендовать книгу как учебное пособие для студентов и аспирантов соответствующих специальностей математики и теоретической информатики. Обилие литературных ссылок, качественное представление о современном состоянии данной науки, а также обозначение ее «переднего края» и «точек роста» вызовут бесспорный интерес у исследователей. ББК 22.176 Translation from the English language edition: Combinatorial Optimization by Bernhard Korte and Jens Vygen. Copyright © Springer-Verlag Berlin Heidelberg 2000, 2002, 2006, 2008. Springer Berlin Heidelberg is a part of Springer Science+Business Media. All Rights Reserved. ISBN 978-3-540-71843-7 (англ.) © Springer-Verlag, 2008 ISBN 978-5-4439-0281-4 © МЦНМО, перевод на русск. яз., 2015 УДК 519.7 ББК 22.176 К69 К69
Оглавление Предисловие переводчика 11 Предисловие к пятому изданию 11 Предисловие к четвертому изданию 12 Предисловие к третьему изданию 12 Предисловие ко второму изданию 13 Предисловие к первому изданию 14 Глава 1. Введение 16 § 1.1. Перебор 17 § 1.2. Время работы алгоритмов 21 § 1.3. Задачи линейной оптимизации 24 § 1.4. Сортировка 25 Упражнения 28 Литература 29 Глава 2. Графы 30 § 2.1. Основные определения 30 § 2.2. Деревья, циклы и разрезы 35 § 2.3. Связность 43 § 2.4. Эйлеровы и двудольные графы 50 § 2.5. Планарность 54 § 2.6. Планарная двойственность 62 Упражнения 65 Литература 69 Глава 3. Линейное программирование 72 § 3.1. Полиэдры 74 § 3.2. Симплекс-метод 78 § 3.3. Реализация симплекс-метода 82 § 3.4. Двойственность 86 § 3.5. Выпуклые оболочки и политопы 90 Упражнения 91 Литература 94 Глава 4. Алгоритмы линейного программирования 96 § 4.1. Размеры записи вершин и граней 97
6 Оглавление § 4.2. Цепные дроби 100 § 4.3. Метод исключения Гаусса 102 § 4.4. Метод эллипсоидов 106 § 4.5. Теорема Хачияна 112 § 4.6. Задачи отделения и оптимизации 114 Упражнения 121 Литература 123 Глава 5. Целочисленное программирование 125 § 5.1. Целочисленная оболочка полиэдра 127 § 5.2. Унимодулярные преобразования 131 § 5.3. Тотальная двойственная целочисленность 133 § 5.4. Тотально унимодулярные матрицы 137 § 5.5. Секущие плоскости 142 § 5.6. Лагранжева релаксация 147 Упражнения 150 Литература 153 Глава 6. Остовные деревья 156 § 6.1. Минимальные остовные деревья 157 § 6.2. Ориентированные деревья минимального веса 164 § 6.3. Полиэдральные описания 168 § 6.4. Упаковки деревьев 171 Упражнения 175 Литература 179 Глава 7. Кратчайшие пути 182 § 7.1. Кратчайшие пути от фиксированного источника 183 § 7.2. Кратчайшие пути между всеми парами вершин 188 § 7.3. Минимальные средние циклы 191 Упражнения 194 Литература 196 Глава 8. Потоки в сетях 199 § 8.1. Теорема о максимальном потоке и минимальном разрезе 200 § 8.2. Теорема Менгера 204 § 8.3. Алгоритм Эдмондса — Карпа 207 § 8.4. Алгоритмы Диница, Карзанова и Фуджисиге 209 § 8.5. Алгоритм Гольдберга — Тарджана 214 § 8.6. Деревья Гомори—Ху 218 § 8.7. Минимальные разрезы в неориентированных графах 224 Упражнения 227 Литература 234
Оглавление 7 Глава 9. Потоки минимальной стоимости 239 § 9.1. Постановка задачи 239 § 9.2. Критерий оптимальности 242 § 9.3. Алгоритм сокращения вдоль минимальных средних циклов 244 § 9.4. Алгоритм последовательного увеличения вдоль кратчайших путей 248 § 9.5. Алгоритм Орлина 252 § 9.6. Сетевой симплекс-метод 258 § 9.7. Потоки во времени 262 Упражнения 264 Литература 268 Глава 10. Максимальные паросочетания 271 § 10.1. Двудольные паросочетания 272 § 10.2. Матрица Татта 274 § 10.3. Теорема Татта 277 § 10.4. Ушные декомпозиции факторкритических графов 280 § 10.5. Алгоритм Эдмондса поиска максимального паросочетания 287 Упражнения 297 Литература 301 Глава 11. Взвешенные паросочетания 304 § 11.1. Задача о назначениях 305 § 11.2. Общая схема алгоритма поиска взвешенного паросочетания .... 308 § 11.3. Реализация алгоритма поиска взвешенного паросочетания 311 § 11.4. Перестройка оптимальных решений 325 § 11.5. Политоп паросочетаний 326 Упражнения 330 Литература 332 Глава 12. b-паросочетания и Г-соединения 335 § 12.1. Ь-паросочетания 335 § 12.2. Г-соединения минимального веса 339 § 12.3. Г-соединения и Г-разрезы 344 § 12.4. Теорема Падберга — Рао 348 Упражнения 351 Литература 355 Глава 13. Матроиды 357 § 13.1. Системы независимости и матроиды 357 § 13.2. Другие системы аксиом для матроидов 362 § 13.3. Двойственность 367 § 13.4. Жадный алгоритм 371 § 13.5. Пересечение матроидов 376
8 Оглавление § 13.6. Разбиение матроидов 381 § 13.7. Взвешенное пересечение матроидов 383 Упражнения 387 Литература 390 Глава 14. Обобщения матроидов 392 § 14.1. Гридоиды 392 § 14.2. Полиматроиды 396 § 14.3. Минимизация субмодулярных функций 401 § 14.4. Алгоритм Скрейвера 404 § 14.5. Симметрические субмодулярные функции 408 Упражнения 410 Литература 413 Глава 15. Л/Р-полнота 416 § 15.1. Машина Тьюринга 417 § 15.2. Тезис Чёрча 419 § 15.3. Классы Р и NP 425 § 15.4. Теорема Кука 429 § 15.5. Основные NP-полные задачи 433 § 15.6. Класс coNP 440 § 15.7. NP-трудные задачи 442 Упражнения 447 Литература 452 Глава 16. Приближенные алгоритмы 454 § 16.1. Задача о покрытии множества 455 § 16.2. Задача о максимальном разрезе 460 § 16.3. Раскраски 467 § 16.4. Схемы приближения 475 § 16.5. Задача о максимальной выполнимости 478 § 16.6. РСР-теорема 483 § 16.7. L-сведение 488 Упражнения 494 Литература 497 Глава 17. Задача о рюкзаке 502 § 17.1. Дробная задача о рюкзаке и задача о взвешенной медиане 502 § 17.2. Псевдополиномиальный алгоритм 505 § 17.3. Полиномиальная схема приближения 507 § 17.4. Многомерная задача о рюкзаке 510 Упражнения 512 Литература 513
Оглавление 9 Глава 18. Задача об упаковке в контейнеры 515 § 18.1. Жадные эвристики 516 § 18.2. Асимптотическая схема приближения 521 § 18.3. Алгоритм Кармаркара — Карпа 525 Упражнения 529 Литература 531 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути 533 § 19.1. Многопродуктовые потоки 534 § 19.2. Алгоритмы для задач о многопродуктовом потоке 539 § 19.3. Наиболее разреженный разрез и MFMC-отношение 544 § 19.4. Теорема Лейтона — Рао 546 § 19.5. Ориентированная задача о реберно непересекающихся путях . . . 549 § 19.6. Неориентированная задача о реберно непересекающихся путях . . 554 Упражнения 560 Литература 565 Глава 20. Задачи о проектировании сети 569 § 20.1. Деревья Штейнера 570 § 20.2. Алгоритм Робинса — Зеликовского 575 § 20.3. Проектирование «живучих» сетей 581 § 20.4. Приближенный прямо-двойственный алгоритм 584 § 20.5. Алгоритм Джайна 593 Упражнения 599 Литература 602 Глава 21. Задача коммивояжера 606 § 21.1. Приближенные алгоритмы для задачи коммивояжера 606 § 21.2. Евклидова задача коммивояжера 612 § 21.3. Метод локальных улучшений 619 § 21.4. Политоп задачи коммивояжера 625 § 21.5. Нижние оценки 631 § 21.6. Метод ветвей и границ 634 Упражнения 637 Литература 640 Глава 22. Задача о размещении предприятий 645 § 22.1. Задача о размещении предприятий без пропускных способностей 645 § 22.2. Округление решений задачи линейного программирования 648 § 22.3. Прямо-двойственные алгоритмы 650 § 22.4. Методы масштабирования и жадного увеличения 656 § 22.5. Ограничение на число предприятий 660
10 Оглавление § 22.6. Метод локальных улучшений 664 § 22.7. Задача о размещении предприятий с пропускными способностями 669 § 22.8. Универсальная задача о размещении предприятий 672 Упражнения 681 Литература 683 Список обозначений 686 Именной указатель 691 Предметный указатель 700
Предисловие переводчика Комбинаторная оптимизация в нашей стране, несмотря на свою популярность и высокие темпы развития за рубежом, остаётся не столь хорошо известна, а издания по данной тематике, вышедшие на русском языке за последнее десятилетие, можно пересчитать по пальцам. Настоящая книга, надеюсь, хотя бы отчасти поможет восполнить этот пробел. Её авторы — Бернард Корте и Йене Фиген — известные учёные-математики, давно и успешно работающие в области дискретной оптимизации. Помимо непосредственно научной работы немалую часть своего времени они уделяют подготовке и чтению разнообразных курсов лекций, обучению студентов и аспирантов. Данная книга представляет собой результат систематизации накопленных ими за время работы материалов, и это методическое качество выгодно отличает её от многих других изданий, интересных скорее специалистам. Таким образом, без преувеличения можно сказать, что перед нами один из первых переведённых на русский язык учебников по комбинаторной оптимизации. Впрочем, глубина охвата и уровень сложности ряда излагаемых тем позволяет использовать данную книгу не только для обучения, но и для самостоятельной научной работы. Перевод монографии подобного объёма — чрезвычайно увлекательное и одновременно сложное занятие. Поэтому хотелось бы поблагодарить всех тех, без кого эта работа не могла бы быть завершена: Александра Викторовича Карзанова, чьи научные консультации, советы и предложения позволили придать переводу целостный и гармоничный вид, а также Степана Артамонова, Игната Колесниченко, Илью Корнакова, Сергея Рогуленко, Руслана Савченко и Камиля Салихова, принимавших активное участие в подготовке и редактировании данного издания. Наконец, я искренне признателен моим родителям Александру и Валентине за оказываемые ими постоянные поддержку и внимание. Москва, февраль 2015 г. Максим Бабенко Предисловие к пятому изданию Более десяти лет назад в процессе подготовки первого издания мы задались двумя целями. Нам хотелось написать книгу, способную служить основным пособием для продвинутого курса по комбинаторной оптимизации, а также одновременно справочником для исследователя. При каждом новом издании мы должны были решить, что можно улучшить в изложении материала. Конечно же, чем дальше, тем сложнее становится дать исчерпывающее описание этой растущей области знаний. Если бы мы могли включить в книгу весь желаемый спектр материала, то ее размер быстро бы перевалил за один том. И поскольку сейчас она используется для преподавания множества различных курсов, зачастую ориентированных на студентов-младшекурсников, мы посчитали, что полезнее будет добавить в нее больше классических результатов, нежели давать обзор современных достижений по узкоспециализированным темам. При подготовке данного издания книги мы добавили доказательство формулы Кэли, расширили материал, относящийся к блокирующим потокам, включили новый более быстрый алгоритм отделения от политопа b-паросочетаний, схему приближения для многомерной задачи о рюкзаке, результаты, касающиеся отношения максимального мультипотока и минимального разреза, а также задачи о наиболее разреженном разрезе. В текст были внесены многочисленные мелкие улучшения, а также добавлено более
12 Предисловие к третьему изданию 60 новых упражнений. Были обновлены ссылки в списке литературы, а также исправлены незначительные обнаруженные неточности. Мы бы хотели поблагодарить Такао Асано, Максима Бабенко, Ульриха Бреннера, Бенджамина Болтена, Кристофа Букхайма, Жана Фонлупта, Андраша Франка, Михаэля Тестера, Штефана Хельда, Штефана Хугарди, Хироши Ииду, Клауса Янсена, Александра Карзанова, Левина Келлера, Александра Клеффа, Нико Клюингхауса, Штефана Кнауфа, Барбару Лангфельд, Йенса Массберга, Марка Пфетша, Клауса Радке, Рабе фон Рандова, Томаша Шаллеша, Яна Шнайдера, Кристиана Шульте, Андраша Себе, Мартина Скутеллу, Яцинта Сабо и Саймона Ведекинга за ценные отзывы на предыдущее издание. Мы рады, что наша книга была тепло принята международным сообществом. В настоящий момент готовится ряд ее переводов на другие языки. Всего же начиная с 2009 года вышли, а также вскоре должны появиться издания на японском, французском, итальянском, немецком, русском и китайском языках. Мы надеемся, что эта книга по-прежнему будет оставаться востребованной как для преподавания, так и для исследований в области комбинаторной оптимизации. Бонн, сентябрь 2011 г. Бернард Корте и Йене Фиген Предисловие к четвертому изданию Мы рады, что наш труд остается востребованным и продолжает развиваться. Книга насчитывает теперь четыре издания на английском языке; кроме того, готовятся переводы на четыре других языка. При подготовке четвертого издания материал был существенно обновлен и расширен. Мы добавили ряд классических результатов, отсутствовавших в книге ранее, в частности касающихся линейного программирования, сетевого симплекс-метода и задачи о максимальном разрезе. Был расширен список упражнений, а также обновлены ссылки на литературу. Надеемся, что эти изменения будут и далее способствовать использованию данной книги как в учебном процессе, так и при проведении исследований. С радостью хочется отметить постоянную поддержку, оказываемую Союзом немецких академий наук, а также Академией наук земли Северный Рейн-Вестфалия в рамках проекта «Дискретная математика и ее приложения». Мы также благодарны всем, кто прислал свои отзывы на нашу работу. В частности, мы признательны за ценные замечания Такао Асано, Кристофу Бартошеку, Берту Бессеру, Ульриху Бреннеру, Жану Фонлупту, Сатору Фуджисиге, Мареку Карпински, Йенсу Массбергу, Денису Надцефу, Свену Пейеру, Клаусу Радке, Рабе фон Рандову, Дитеру Раутенбаху, Мартину Скутелле, Маркусу Струзине, Юргену Верберу, Юэ Миньи и Чжан Гочуаню. Актуальную информацию о данной книге мы будем размещать в Интернете на странице по адресу http://www.or.uni-bonn.de/~vygen/co.html; Бонн, август 2007 г. Бернард Корте и Йене Фиген Предисловие к третьему изданию С момента появления первого издания данной книги прошло пять лет. За это время нам удалось внести множество улучшений и значительно расширить ее материал. Одно из наиболее важных таких изменений — это новая глава про задачи о размещении
Предисловие ко второму изданию 13 предприятий. Еще восемь лет назад для этого важного класса NP-трудных задач не было известно ни одного приближенного алгоритма, имеющего константную точность приближения. Недавно, однако, появилось несколько интересных и совершенно различных подходов к решению, обладающих хорошими гарантиями точности получаемых решений. Все это делает данную область чрезвычайно привлекательной, в том числе и для учебных целей. В действительности материал данной главы возник из конспектов спецкурса про задачу о размещении предприятий. Также были значительно расширены многие другие главы. Среди нового материала отметим фибоначчиевы кучи, новый алгоритм Фуджисиге поиска максимального потока, потоки во времени, алгоритм Скрейвера минимизации субмодулярных функций и алгоритм Робинса — Зеликовского приближения дерева Штейнера. Было улучшено изложение многих доказательств, а также добавлено множество новых упражнений и ссылок на литературу. Мы благодарим всех приславших свои отзывы на второе издание, и в частности Такао Асано, Ясухито Асано, Ульриха Бреннера, Штефана Хельда, Томио Хирату, Дирка Мюллера, Казуо Муроту, Дитера Раутенбаха, Мартина Скутеллу, Маркуса Струзину и Юр- гена Вербера. Заметки Такао Асано, а также правки к главе 22, предложенные Юргеном Вербером, без сомнения, помогли улучшить изложение во многих местах текста. Нам вновь хотелось бы отметить участие со стороны Союза немецких академий наук, а также Академии наук земли Северный Рейн-Вестфалия. Мы признательны им за непрекращающуюся помощь в рамках проекта «Дискретная математика и ее приложения», финансируемого Министерством образования и науки Германии, а также землей Северный Рейн-Вестфалия. Бонн, май 2005 г. Бернард Корте и Йене Фиген Предисловие ко второму изданию Для нас было большим сюрпризом узнать, что тираж первого издания данной книги был раскуплен уже примерно через год после выпуска. Мы были чрезвычайно польщены многочисленными положительными, а временами даже восторженными комментариями и отзывами как от знакомых нам специалистов, так и от более широкой читательской аудитории. Хочется поблагодарить наших коллег, которые помогли нам обнаружить в первом издании ряд опечаток и других погрешностей. В частности, мы признательны Ульриху Бреннеру, Андрашу Франку, Бернду Гертнеру и Рольфу Мёрингу. Конечно же, все неточности, обнаруженные на настоящий момент, были исправлены во втором издании. Также были обновлены ссылки в списке литературы. Кроме того, в предисловии к первому изданию обнаружился существенный пробел. Мы указали всех, кто помогал нам при написании этой книги, но забыли упомянуть о поддержке со стороны различных организаций. Пришла пора исправить этот недочет. Очевидно, что в процессе написания книги, занявшем без малого семь лет, мы получали поддержку со стороны множества различных грантов и фондов. Нам бы особенно хотелось отметить двусторонний венгеро-германский исследовательский проект при поддержке Венгерской академии наук и Немецкого научно-исследовательского общества, а также два долгосрочных совместных исследовательских проекта Немецкого научно-исследовательского общества. Мы благодарим Министерство науки и технологий Франции, Фонд Александра фон Гумбольдта за поддержку в рамках Премии Гумболь- та и Комиссию европейских сообществ за участие в двух проектах DONET. Мы также
14 Предисловие к первому изданию искренние признательны Союзу немецких академий наук и Академии наук земли Северный Рейн-Вестфалия. Их помощь в рамках проекта «Дискретная математика и ее приложения», поддерживаемого Министерством образования и науки Германии, а также землей Северный Рейн-Вестфалия, сыграла чрезвычайно важную роль. Бонн, октябрь 2001 г. Бернард Корте и Йене Фиген Предисловие к первому изданию Комбинаторная оптимизация — одно из наиболее молодых и активно развивающихся направлений дискретной математики, в немалой степени служащее сегодня движущей силой для развития последней. Свой самостоятельный статус комбинаторная оптимизация получила примерно 50 лет назад. В данной книге описаны основополагающие идеи, теоретические результаты и алгоритмы комбинаторной оптимизации. Книга была задумана как продвинутый учебник для студентов-старшекурсников и аспирантов, которым одновременно могли бы пользоваться и исследователи, находя в нем актуальное описание современного состояния дел в интересующих их разделах. Книга также включает в себя необходимые основы теории графов, линейного и целочисленного программирования и теории сложности. Она покрывает как классические, так и более современные темы комбинаторной оптимизации. Основной акцент делается на теоретические результаты и алгоритмы с доказуемо хорошей производительностью. Практические приложения, а также эвристические методы решения задач упоминаются в книге лишь вскользь. Комбинаторная оптимизация своими корнями уходит в комбинаторику, теорию исследования операций и теоретическую информатику. Ее основной мотивацией является идея о том, что тысячи прикладных задач, с которыми мы сталкиваемся в жизни, могут быть сформулированы в виде абстрактных комбинаторных задач оптимизации. Мы фокусируем свое внимание на подробном изучении классических проблем, встречающихся во множестве различных контекстов, а также рассматриваем лежащую в их основе теорию. Многие задачи комбинаторной оптимизации могут быть естественным образом сформулированы в терминах графов, а также в виде (целочисленных) линейных программ. Поэтому в начале книге, сразу после краткого введения мы излагаем основные факты теории графов, а также доказываем необходимые для наших целей результаты теории линейного и целочисленного программирования. Затем мы переходим к изучению классических задач комбинаторной оптимизации: минимальных остовных деревьев, кратчайших путей, потоков в сетях, паросочетаний и матроидов. Большинство задач, изучаемых в гл. 6-14, имеют полиномиальные («эффективные») алгоритмы, в то время как задачи из гл. 15-21 в основном оказываются NP-труд- ными, а поэтому существование для них полиномиальных алгоритмов маловероятно. Для многих из них, впрочем, оказывается возможно предложить хотя бы приближенные алгоритмы с теми или иными гарантиями точности получаемых решений. Мы также рассматриваем несколько дополнительных способов борьбы с подобными «трудными» задачами. Данная книга покрывает заметно больше материала, чем обычный учебник по комбинаторной оптимизации. Например, мы изучаем эквивалентность задач оптимизации и отделения (для случая политопов полной размерности), О(п3)-реализации алгоритмов поиска паросочетаний, основанные на ушных декомпозициях, машины Тьюринга, теорему о совершенных графах, понятие MAXSNP-трудности, алгоритм Кармаркара — Карпа
Предисловие к первому изданию 15 для задачи упаковки в контейнеры, несколько недавно возникших приближенных алгоритмов для мультипотоковых задач, вопросы проектирования «живучих» сетей, а также евклидову задачу коммивояжера. Все эти результаты снабжены детальными доказательствами. Конечно, ни одна книга по комбинаторной оптимизации не может охватить все разнообразие методов и результатов этой области. Приведем лишь несколько примеров важных тем, которые либо описываются совсем кратко, либо вовсе не упоминаются: древесные декомпозиции, сепараторы, субмодулярные потоки, обобщения упаковок путей и паросочетаний (path-matchings), дельта-матроиды, задача о матроидной четности, задачи составления расписаний и выбора оптимального размещения, нелинейные задачи, полуопределенное программирование, анализ средней сложности алгоритмов, продвинутые структуры данных, параллельные и вероятностные алгоритмы, а также теория вероятностно проверяемых доказательств (знаменитая РСР-теорема приводится нами без доказательства). В конце каждой главы приводятся упражнения, в которых можно найти дополнительные результаты и приложения изложенного ранее материала. Некоторые более сложные упражнения отмечены звездочкой. Каждая глава завершается списком ссылок на процитированные литературные источники, а также работ, рекомендуемых для дальнейшего самостоятельного изучения. Данная книга возникла из конспектов нескольких курсов по комбинаторной оптимизации, а также спецкурсов по полиэдральной комбинаторике, приближенным алгоритмам и др. Поэтому ее можно использовать в качестве учебного пособия при чтении как базовых, так и более продвинутых курсов. При написания данной книги мы, конечно же, опирались на другие работы по комбинаторной оптимизации. Большую помощь при подготовке нам оказали многие коллеги и друзья. В особенности нам бы хотелось поблагодарить Андраша Франка, Ласло Ловаса, Андраша Речки, Александра Скрейвера и Золтана Сигети. Наши коллеги и студенты из Бонна Кристоф Альбрехт, Урсула Бюннагель, Томас Эмден-Вайнерт, Матиас Хауптман, Свен Пейер, Рабе фон Рандов, Андре Роэ, Мартин Тимм и Юрген Вербер внимательно прочитали несколько редакций нашей рукописи и помогли ее улучшить. Наконец (но далеко не в последнюю очередь) нам бы хотелось поблагодарить издательство Springer за плодотворное сотрудничество. Бонн, январь 2000 г. Бернард Корте и Йене Фиген
ГЛАВА 1 Введение Начнем с двух примеров. Предприятие располагает станком для сверления отверстий в печатных платах. Поскольку объемы производства велики, необходимо обрабатывать каждую плату как можно быстрее. Невозможно увеличить скорость сверления отверстий, но можно минимизировать время, которое станок затрачивает на перемещение из одного положения в другое. Обычно подобные станки могут перемещаться в двух направлениях: стол, на котором располагается плата, может двигаться горизонтально, а само сверло — вертикально. Поскольку оба движения могут выполняться одновременно, время, необходимое для перевода станка из одного положения в другое, пропорционально максимуму из величин горизонтального и вертикального перемещений. Этот максимум часто называют ^-расстоянием. (Станки более старой конструкции способны одновременно перемещаться только в горизонтальном или вертикальном направлениях; в этом случае время перехода пропорционально ?г -расстоянию, которое равно сумме величин горизонтального и вертикального перемещений.) Путь для сверления задается последовательностью, в которой следует посещать отверстия ръ ..., рп. При этом сумма ХГ=1 &(Рь Pi+i) должна быть минимальной. Здесь d обозначает упомянутое ранее ^-расстояние: для точек Р = (Х>У) ир/ = (*'У) имеем d(p,pO := max{|x — х'\, \у — у'|}. Порядок обхода точек образует перестановку, т. е. биекцию я: {1,..., п] —> {1,..., п}. Конечно, оптимальная перестановка зависит от расположения отверстий. Каждый набор точек на плоскости (отверстий, которые нужно просверлить) задает отдельный экземпляр задачи. Точная постановка задачи такова. Drilling (задача о сверлении) Дано: набор точек ръ..., рп е R2. Надо: найти такую перестановку тг: {1,.. Ей <*(Ря(о>P*(i+i)) минимальна. .,п}-{1,.. ., п}, что сумма Рассмотрим второй пример. Пусть есть набор работ, для каждой из которых известно время выполнения. Каждая работа может выполняться определенным множеством сотрудников. Предполагается, что все сотрудники работают одинаково эффективно и работы могут выполняться несколькими сотрудниками
§1.1. Перебор 17 одновременно. Также один сотрудник может быть назначен на выполнение нескольких работ (но выполнять их он будет уже не одновременно, а последовательно). Нужно завершить все работы как можно скорее. Для того чтобы задать допустимое решение в данной модели, достаточно определить для каждого сотрудника, сколько времени он должен потратить на выполнение каждой из работ (которую он в принципе способен выполнять). Порядок, в котором сотрудники будут заниматься назначенными им работами, не имеет значения. Действительно, время, за которое все работы окажутся полностью выполнены, равно максимуму (по всем сотрудникам) суммарных времен выполнения назначенных им работ. Таким образом, необходимо решить следующую задачу. Job Assignment (задача о назначении работ) Дано: набор чисел 1Ъ ..., tn € М+ (времена выполнения для п работ), число сотрудников т е N и непустое подмножество S, с {1,..., т} сотрудников для каждой из работ i е {1,..., п}. Надо: найти такой набор чисел х^ е R+, где i = 1,..., п и j eSz, что ][]je5 xtj = t,- для всех i = 1,..., п и значение тах^ц m} Sirjes XU минимально. Рассмотренные примеры — это типичные задачи, возникающие в комбинаторной оптимизации. Вопрос о том, как смоделировать практическую проблему в абстрактных терминах комбинаторной оптимизации, в настоящей книге не рассматривается. В действительности общего приема для такого преобразования не существует. Помимо точного описания входных данных и желаемого результата важно суметь отбросить несущественные детали (например, время сверления отверстий, которое не может быть изменено, или порядок выполнения работ сотрудниками). Конечно, нас не интересуют решения задач о сверлении или назначении работ при конкретных входных данных. Вместо этого мы ищем метод, позволяющий решать сразу все задачи таких типов. Начнем с задачи о сверлении. §1.1. Перебор Итак, что же считать решением задачи Drilling? Существует бесконечно много различных вариантов входных данных (конечных наборов точек на плоскости), поэтому мы не можем выписать все возможные варианты вместе с соответствующими оптимальными ответами. Вместо этого нужно найти алгоритм, вычисляющий оптимальное решение для произвольных входных данных. Такой алгоритм существует: переберем все л! возможных способов обхода, для каждого вычислим ?т -длину соответствующего пути и найдем минимум. Суть этого метода можно описать различными способами, отличающимися уровнем детализации и языком, используемым для формализации алгоритма.
18 Глава 1. Введение Безусловно, не стоит считать алгоритмом следующее предписание: «По заданным п точкам найти оптимальное решение и напечатать его». В нем ничего не сказано о том, как именно мы собираемся искать оптимальное решение. Вышеуказанное предложение перебрать все возможные п! способов обхода более осмысленно, но все еще неясно, как именно осуществить перебор. Один из возможных способов таков. Переберем все последовательности длины п, состоящие из чисел 1,..., п, т. е. все пп векторов из множества {1,..., п}п. Сделать это можно по аналогии с процессом счета в позиционной системе счисления: начнем с (1,..., 1,1), затем выпишем (1,..., 1,2) и далее до (1,..., 1, п). После этого переключимся на (1,..., 1,2,1) и т. д. На каждом шаге мы увеличиваем на единицу последнюю координату вектора, за исключением случая, когда там уже стоит п. Тогда перебираем координаты справа налево и находим первую (самую правую), значение которой строго меньше п. Увеличиваем данную координату и устанавливаем в единицу все последующие (стоящие справа) координаты. Этот способ иногда называют перебором с возвратом (backtracking). Возникающий при этом порядок перечисления векторов из множества {1,..., п}п называется лексикографическим (lexicographic order). Определение 1.1. Пусть задана пара векторов xjgM". Скажем, что вектор х лексикографически меньше вектора у, если найдется такой индекс ; е {1,..., п}, что xt = yt для всех i = 1,...,j — 1 и Xj < 35. Перебрав все векторы jc из множества {1, ...,п}п, мы можем проверить каждый из них на наличие совпадающих координат и, если таковых нет, определить, будет ли путь, отвечающий х, короче наилучшего из известных на текущий момент. При необходимости обновим текущий минимум и продолжим перебор. Поскольку представленный алгоритм перебирает все пп векторов, ему необходимо не менее п11 шагов (в действительности даже больше). Данный способ не является оптимальным. Всего существует п\ перестановок множества {1,..., п}, нп\ намного меньше пп. (Например, по формуле Стирлинга имеем п! аь J2nn\ [8]; см. упражнение 1.) Покажем, как перечислить пути примерно за п2 • п! шагов. Рассмотрим следующий алгоритм, перебирающий все перестановки в лексикографическом порядке. Path Enumeration (алгоритм перебора путей) Вход: натуральное число п > 3, множество точек на плоскости {ръ..., рп}. Выход: перестановка п*: {1,..., л} -> {1,..., п}, для которой сумма cost(7r*) := ~ ЕЙ1 <*(Ря*(1> Ря*о+1)) минимальна. (Т) Присвоить n(i) := i и n*(f) := i для всех i = 1,..., п. Присвоить i := п — 1. (2) Пусть к := пип({я(;) + 1,..., п + 1} \{тг(1),..., n{i -1)}).
§1.1. Перебор 19 (3) If к < п then: Присвоить тг(0 := fc. If i = п и cost(Ti) < cost(7U*) then присвоить тг* := я. If i < п then присвоить n(i + 1) := 0 и i := i + 1. If fc = n + 1 then присвоить i := i — 1. If i > 1 goto (2). Начав с (я(0)г=1,...,п = (1,2,3, ...,п — l,n) и i = n — 1, алгоритм на каждом шаге находит следующее возможное значение n(i) (которое не совпадает с я(1),..., n(i — 1)). Если возможных значений для n(i) не осталось (т. е. fc = п +1), то алгоритм уменьшает счетчик i (происходит возврат). В противном случае он присваивает n(i) новое значение. Если i = п, то очередная перестановка найдена. Иначе алгоритм перебирает все возможные значения для переменных n(i + 1),..., я(п), для чего вначале присваивает n(i +1) := 0 и увеличивает i на единицу. Таким образом, все перестановки (тг(1),..., п(п)) порождаются в лексикографическом порядке. Например, начальные итерации для случая п = 6 таковы: = 6, = 5, = 7, = 7, = 5, = 4, = 6, п := (1,2,3,4,5,6), тг:=(1,2,3,4,6,0), п := (1,2,3,4,6,5), п := (1,2,3,5,0,5), я := (1,2,3,5,4,0), к := (1,2,3,5,4,6), i:=5 i:=6 = 5 = 4 = 5 = 6 COSt(7T) < COSt(7T*)? COSt(я) < COSt(7T*)? Поскольку алгоритм сравнивает стоимость каждого пути с путем тг*, наилучшим из найденных на текущий момент, в конце он действительно выдает оптимальный путь. Но сколько шагов придется ему выполнить? Конечно, ответ зависит от того, что считать шагом. Поскольку мы не хотим, чтобы количество шагов зависело от фактической реализации, проигнорируем константные множители. На типовом компьютере шаг ® требует не менее 2п +1 элементарных шагов (по числу присваиваний значений переменным) и не более сп шагов для некоторой константы с. Введем обозначения, которые помогут избежать заботы о константных множителях. Определение 1.2. Пусть заданы две функции f,g: D —> R+. Говорят, что функция / есть 0(g) (и пишут / = 0(g)), а также g = ft(/)), если существуют такие константы a, j3 > 0, что /(*) < ag(x) + /3 для всехxgD. Если / = 0(g) и g = 0(J), то пишут / = 6(g) (или g = G(/)). В этом случае говорят, что / и g имеют одинаковый порядок роста. Обратите внимание на то, что знак равенства в О-символике не симметричен. Чтобы проиллюстрировать определение, положим D = N, и пусть /(п) — число элементарных шагов, выполняемых на шаге ф, a g(n) = п (п е N). Очевидно, в этом случае f = 0(g) (в действительности / = G(g)). Мы говорим
20 Глава!. Введение также, что шаг (Г) требует времени 0{п) (или линейного времени, linear time). Шаг (3) требует константного количества элементарных шагов (т. е. времени 0(1) или константного времени, constant time) за исключением случая fc < п и i = п, когда приходится сравнивать стоимости двух путей. Это сравнение требует времени 0(п). Рассмотрим шаг (2). Простейшая реализация, проверяющая для каждого j € {тг(0 + 1, ...,п} и каждого h е {1,...,i — 1} равенство ; = n(h), требует 0((п — тг(0)0 шагов, что может составить 9(п2). Более удачная реализация шага (2) использует вспомогательный массив, индексируемый числами из множества 1,..., п: (2) For ; := 1 to п do aux(j) := 0. For ; := 1 to i — 1 do aux(7i(j)) := 1. Присвоить к := n(i) +1. While к < n и aux(fc) = 1 do fc := к + 1. Очевидно, при такой реализации каждое выполнение шага (2) занимает лишь 0(п) единиц времени. Мы не станем подробно останавливаться на таких простых приемах в данной книге и будем считать, что читатель способен самостоятельно придумать подобные реализации. Вычислив время работы каждой строки в отдельности, можно оценить общее время выполнения. Количество всех перестановок равно п!, и нужно лишь определить количество действий, совершаемых при переходе от текущей перестановки к последующей. Счетчик i может уменьшаться от п до некоторого индекса i', где возникает новое значение я (О < п. Затем он снова возрастает до i = п. Пока счетчик i сохраняет свое значение, шаги (2) и (3) выполняются по одному разу, исключая случай к < п и i = п; тогда шаги (2) и (3) выполняются дважды. Таким образом, между двумя последовательными перестановками шаги (2) и (3) выполняются не более Лп раз, т. е. всего 0(п2) раз. Итак, общее время работы алгоритма Path Enumeration составляет 0(п2п\). Эту оценку можно слегка улучшить, и более точный анализ показывает, что время работы равно 0(п-п\) (см. упражнение 4). Однако алгоритм по-прежнему требует слишком много времени для больших значений п. Трудность перебора всех путей состоит в том, что их количество растет экспоненциально с увеличением числа точек. Так, уже для 20 точек существует 20! = 2 432 902 008 176 640 000 « 2,4• 1018 различных путей, и даже самому быстрому компьютеру понадобится несколько лет, для того чтобы перебрать их все. Таким образом, полный перебор становится невозможным даже при небольших по размеру входных данных. Основной задачей комбинаторной оптимизации является нахождение более быстрых алгоритмов для задач, подобных рассмотренным. Часто для их решения необходимо найти оптимальный элемент в конечном множестве допустимых решений (в нашем случае — путей, или, что эквивалентно, перестановок). Это множество не выписано явно, а определяется структурой задачи. Алгоритму необходимо использовать эту структуру.
§ 1.2. Время работы алгоритмов 21 В случае задачи о сверлении входные данные для п точек определяются 2п координатами. В то время как простейший алгоритм перебирает все п! возможных путей, не исключено, что найдется метод, находящий оптимальное решение намного быстрее, скажем, за п2 шагов вычисления. Неизвестно, есть ли подобный алгоритм (результаты гл.15 показывают, что его существование маловероятно). И все же есть алгоритмы, намного превосходящие простейший по скорости. § 1.2. Время работы алгоритмов Можно определить понятие алгоритма формально, и мы предложим одну из версий такого определения в § 15.1. Однако подобные формальные модели часто приводят к длинным и запутанным описаниям, как только алгоритм становится достаточно сложным. Возникающая ситуация вполне аналогична доказательствам в математике. Хотя понятие доказательства (вывода) и может быть полностью формализовано, никто не использует подобный формализм при записи доказательств, поскольку они становятся длинными и почти нечитаемыми. По этой причине все алгоритмы в книге описываются неформально, на естественном языке. Несмотря на это, приведенных подробностей должно хватить для того, чтобы даже читатель с небольшим опытом программирования смог реализовать их на компьютере, не прилагая при этом чрезмерных усилий. Поскольку нас не заботят константные множители в оценке времени выполнения, не станем фиксировать определенную вычислительную модель. При подсчете количества элементарных шагов, совершаемых алгоритмом, мы не будем вдаваться в подробности о том, как именно эти шаги выглядят. Примерами таких шагов могут служить присваивания значений переменным, доступ к элементу массива по индексу, конструкции условной (if ...then...else) и безусловной (goto) передачи управления и простейшие арифметические операции, например сложение, вычитание, умножение, деление и сравнение чисел. Для того чтобы задать алгоритм, нужно зафиксировать множество допустимых входов, а также указать последовательность инструкций, каждая из которых может быть далее разложена на элементарные шаги. Для всякого допустимого входа вычисление алгоритма представляет собой однозначно определенную последовательность элементарных шагов, порождающую на выходе некоторый результат. Того, что длина вычисления конечна, часто бывает недостаточно, и вместо этого желательно иметь хорошую верхнюю оценку (зависящую от размера входа) на число элементарных шагов, совершаемых алгоритмом. Обычно вход алгоритма представляет собой последовательность чисел. Если эти числа целые, то их можно задать в двоичной записи. При этом для целого числа а потребуется 0(log(|a| -I- 2)) бит. Рациональные числа записываются путем раздельного указания их числителя и знаменателя. Размером size(x) входа х называется суммарное число бит в двоичной записи его элементов. Определение 1.3. Пусть А — алгоритм, принимающий на вход элементы из множества X. Если для функции /: N —> R+ найдутся такие константы а, /3 > О,
22 Глава!. Введение что на любом входе хе! алгоритм А заканчивает работу, выполнив не более a/(size(*)) + Р элементарных шагов (включая арифметические операции), то говорят, что время работы или временная сложность алгоритма А составляет 0(/)- Определение 1.4. Алгоритм, принимающий на вход рациональные числа, называется полиномиальным (polynomial), если существует такое целое число к, что время его работы можно оценить как 0(пк), где п — размер входа, и для хранения всех промежуточных результатов достаточно 0(пк) бит. Алгоритм, принимающий на вход произвольные числа, называется сильно полиномиальным, если существует такое целое число fc, что время его работы можно оценить как 0(пк) на любом входе, состоящем из п чисел, и, кроме того, данный алгоритм является полиномиальным на входах, состоящих из рациональных чисел. В случае к = 1 мы говорим о линейном алгоритме. Алгоритм, время работы которого полиномиально, но не сильно полиномиально, называется слабо полиномиальным Заметим, что, вообще говоря, время работы на различных входах одной длины может быть различным (для алгоритма перебора путей это было не так), Нас интересует время работы в худшем случае (worst-case running time), т. е. функция /: N —> N, где /(п) —максимум времени работы на входах длины п. Для некоторых алгоритмов точная скорость роста функции / неизвестна, так что приходится довольствоваться оценкой сверху. Время работы в худшем случае может быть чрезмерно пессимистичной мерой, если наихудшие случаи встречаются редко. Иногда более подходящей может оказаться вероятностная модель, предполагающая наличие вероятностного распределения на множестве входных данных, и связанное с ней время работы в среднем (average-case running time). Мы, однако, не будем рассматривать это понятие. Если А — алгоритм, который для всякого входа х еХ вычисляет значение /(*) € Y, то скажем, что А вычисляет функцию /: X —» У. Если функция вычислима некоторым полиномиальным алгоритмом, то говорим, что она полиномиально вычислима. Полиномиальные алгоритмы иногда называют «хорошими» или «эффективными». Само понятие полиномиальное™ было введено Кобхэмом [4] и Эдмонд- сом [5]. В таблице 1.1 приведены примерные времена выполнения алгоритмов с различными оценками сложности. Для заданных размеров входа п показаны времена работы алгоритмов, которым требуется lOOnlogn, 10n2, n3,5, nlogn, 2n и n\ элементарных шагов (считаем, что каждый такой шаг занимает одну наносекунду). Здесь и всюду далее в этой книге log обозначает логарифм по основанию 2. Как следует из таблицы 1.1, полиномиальные алгоритмы оказываются существенно быстрее неполиномиальных на достаточно больших входах. Таблица также иллюстрирует утверждение о том, что константные множители не оказывают большого влияния на асимптотический рост времени работы.
§ 1.2. Время работы алгоритмов 23 Таблица 1.1 п 10 20 30 40 50 60 80 100 200 500 1000 Ю4 Ю5 106 Ю7 ю8 ю10 ю12 lOOnlogn 3 мкс 9 мкс 15 мкс 21 мкс 28 мкс 35 мкс 50 мкс 66 мкс 153 мкс 448 мкс 1 мс 13 мс 166 мс 2с 23 с 266 с 9 часов 46 дней 10п2 1 мкс 4 мкс 9 мкс 16 мкс 25 мкс 36 мкс 64 мкс 100 мкс 400 мкс 2,5 мс Юме 1с 100 с 3 часов 12 дней 3 года 3 • Ю4 лет 3 • Ю8 лет „3,5 3 мкс 36 мкс 148 мкс 404 мкс 884 мкс 2мс 5 мс Юме 113 мс Зс 32 с 28 часов 10 лет 3169 лет Ю7 лет 3 • Ю10 лет fllogn 2 мкс 420 мкс 20 мс 340 мс 4с 32 с 1075 с 5 часов 12 лет 5 • Ю5 лет 3 • Ю13 лет 2п 1 мкс 1 мс 1с 1100 с 13 дней 37 лет 4 • Ю7 лет 4 • Ю13 лет п! 4мс 76 лет 8 • Ю15 лет Таблица 1.2 (а) (б) lOOnlogn 1,19-Ю9 10,8 • Ю9 10п2 60000 189737 П3'5 3868 7468 nlogn 87 104 2п 41 45 п! 15 16 В таблице 1.2 приведены максимальные размеры входных данных, которые могут быть обработаны за один час с помощью указанных выше шести гипотетических алгоритмов. В строке (а) мы по-прежнему предполагаем, что элементарный шаг занимает одну наносекунду. Строка (б) показывает, как изменяются значения при использовании в 10 раз более быстрого компьютера. Полиномиальные алгоритмы могут обрабатывать большие объемы входных данных за разумное время. При этом увеличение скорости работы компьютера в 10 раз не увеличивает существенным образом максимальный размер входа для экспоненциальных алгоритмов, но оказывает такое влияние на полиномиальные.
24 Глава!. Введение Нашей целью является получение (сильно) полиномиальных или даже, если это возможно, линейных алгоритмов. Существуют, однако, задачи, для которых полиномиальных алгоритмов заведомо нет. Есть также такие задачи, для которых нет никакого (даже неполиномиального) алгоритма. (Например, одна из задач, которая может быть решена за конечное, но не полиномиальное время, такова: по заданному регулярному выражению выяснить, задает ли оно пустое множество; см. работу Ахо, Хопкрофта и Ульмана [3]. В упражнении 1 из гл. 15 обсуждается другой пример, а именно алгоритмически неразрешимая задача об остановке.) Почти все задачи, рассматриваемые в этой книге, могут быть разделены на два класса. Для задач из первого класса существуют полиномиальные алгоритмы. Для задач из второго класса существование такого алгоритма составляет открытую проблему. При этом мы знаем, что наличие полиномиального алгоритма для любой из задач второго класса влечет за собой существование подобного алгоритма сразу для всех задач из второго класса. Точная формулировка и доказательство этого утверждения приведены в гл. 15. Задача о назначении работ принадлежит к первому классу, а задача о сверлении — ко второму. Указанные два класса задач делят книгу примерно на две части. Вначале мы занимаемся изучением задач, для которых известны полиномиальные алгоритмы. Затем, начиная с гл. 15, мы переходим к обсуждению более трудных вопросов. Несмотря на то что полиномиальных алгоритмов для них не известно, часто есть методы, существенно превосходящие полный перебор. Более того, для многих задач (включая задачу о сверлении) можно за полиномиальное время найти приближенное решение, имеющее определенную гарантированную точность. § 1.3. Задачи линейной оптимизации Вернемся ко второму из рассмотренных примеров, а именно к задаче о назначении работ. Опишем кратко ряд тем, которые станут центральными в последующих главах. Задача о назначении работ сильно отличается от задачи о сверлении, поскольку для каждого набора входных данных (за исключением тривиальных случаев) в ней существует бесконечно много допустимых решений. Можно переформулировать вопрос, введя переменную Г для обозначения промежутка времени, в течение которого выполненными оказываются все работы: минимизировать Т При УСЛОВИЯХ 2_jXij = ti (* € U> • • • * П})> ie5i (1.1) xtj>0 (ie{l,...,n}, jeSj, J^a (;e{l,...,m}).
§1.4. Сортировка 25 Числа tt и множества St (i = 1,..., п) заданы по условию, значения переменных xtj и Г необходимо найти. Подобная задача оптимизации с линейной целевой функцией и линейными ограничениями называется линейной программой. Несложно видеть, что множество допустимых решений задачи (1.1) —так называемый полиэдр — является выпуклым. Более того, можно показать, что оптимальное значение всегда достигается в одной из «крайних» точек этого множества, причем всего таких крайних точек конечное количество. Тем самым, теоретически оптимальное решение линейной программы может быть найдено путем полного (конечного) перебора. Как мы увидим далее, существуют и более эффективные способы. Несмотря на то что известно несколько алгоритмов для решения линейных программ произвольного вида, эти общие методы обычно менее эффективны, чем специальные алгоритмы, существенно использующие структуру задачи. В нашем случае удобно представить множества St, i = 1,..., п, в виде графа. Для каждой работы i и каждого исполнителя j в графе есть соответствующие вершины. Исполнитель j соединен ребром с работой f, если i может выполнять j (т. е. j е St). Графы представляют собой фундаментальные комбинаторные структуры. Многие задачи комбинаторной оптимизации наиболее удачно выражаются именно в терминах теории графов. Предположим, что время выполнения каждой работы равно одному часу и необходимо выяснить, можно ли выполнить все работы за один час. Таким образом, мы ищем такой набор чисел xtj (i е {1,..., п}, j е St), что 0 < xtj < 1 для всех i и j, 2j€s xtj = 1 Д-7151 всех i = 1, • - •, л и Yiijes хи ^ * Для всех j = 1> • ¦ • * л. Можно показать, что если такое решение существует, то также найдется и целочисленное решение, т. е. решение, в котором каждая переменная х^ равна О или 1. Такое решение эквивалентно назначению каждой работы ровно одному исполнителю, причем каждому исполнителю выдается не более одной работы. Говоря на языке теории графов, возникает паросочетание, покрывающее все работы. Задача нахождения оптимальных паросочетаний представляет собой один из наиболее хорошо изученных вопросов комбинаторной оптимизации. В гл. 2 и 3 мы рассмотрим основы теории графов и линейного программирования. В гл. 4 будет доказано, что линейные программы разрешимы за полиномиальное время. В гл. 5 описываются свойства целочисленных полиэдров. Последующие главы будут посвящены более подробному изучению конкретных классических задач оптимизации. §1.4. Сортировка В заключение рассмотрим частный случай задачи о сверлении, считая, что все отверстия расположены на одной горизонтальной прямой. Таким образом, для каждого отверстия ри i = 1,..., п, задана лишь одна координата. В таком случае решить задачу легко: нужно лишь отсортировать все отверстия в соответствии с их координатами, а затем обойти их сверлом последовательно слева направо. Несмотря на то что по-прежнему существует п\ возможных перестановок, ясно,
26 Глава!. Введение что не требуется рассматривать их все, чтобы найти оптимальный путь сверла. Несложно отсортировать п чисел в порядке неубывания за время 0(п2). Сортировка п чисел за время O(nlogn) требует чуть большего мастерства. Существует несколько алгоритмов, решающих эту задачу; мы опишем широко известный алгоритм сортировки слиянием, работающий следующим образом. Вначале последовательность разделяется на две части примерно равного размера. Каждая из частей сортируется (рекурсивно с применением того же самого алгоритма). В конце две упорядоченные части сливаются. Этот общий подход, называемый «разделяй и властвуй» (divide and conquer), используется весьма часто; см., например, § 17.1. До сих пор нам не встречались рекурсивные алгоритмы. Вообще говоря, любой рекурсивный алгоритм может быть преобразован в последовательный без увеличения времени выполнения, так что использование рекурсии не является обязательным. Но некоторые алгоритмы проще описывать (и реализовывать) в рекурсивной форме, так что мы будем применять ее там, где это оказывается удобно. Merge-Sort (алгоритм сортировки Вход: Выход: последовательность аъ такая перестановка к: всех i = 1, ...,п — 1. слиянием) ..., ап вещественных чисел. {1,.. .,л}-41,.. -,п}, что а *(0 < an(i+l) Для (Т) If п = 1 then присвоить тг(1) := 1, stop (return тг). (2) Присвоить m := I тН. Присвоить р := Merge-Sort(аъ ..., ат). Присвоить а := Merge-Sort(am+1,..., ап). (3) Присвоить к := 1,1 := 1. While к<тпи1<:П — m do: If ap(fc) < CLm+a(i) then присвоить n(k +1 — 1) := p(fc) и к := к + 1 else присвоить n(k + !-l):=m + a(l) и I := I +1. While к < m do: присвоить n(k + 1 — 1) := p (fc) и к := к + 1. While Kn-mdo: присвоить n(k +1 — 1) := m + a(l) и I := I + 1. Для примера рассмотрим последовательность 69, 32, 56, 75, 43, 99, 28. Алгоритм вначале разделяет ее на две — 69, 32, 56 и 75, 43, 99, 28 — и рекурсивно сортирует каждую из частей. В результате для них получаются перестановки р = (2,3,1) и а = (4,2,1,3), отвечающие упорядоченным последовательностям 32, 56, 69 и 28, 43, 75, 99. Далее эти последовательности подвергаются слиянию, как показано ниже: fc:=l, Z:=l; р(1) = 2, cj(1) = 4, ap(1)=32, aa(1) = 28, я(1):=7, Z:=2;
§1.4. Сортировка 27 я(2) я(3) 71(4) я(5) тг(6) я(7) = 2, = 5, = 3, = 1, = 4, = 6, к:=2; к:=3; к:=4; 1:=3; 1:=4; 1:=5. р(1) = 2, ст(2) = 2, ар(1)=32, аа(2)=43, р(2) = 3, ст(2) = 2, ар(2) = 56, аС7(2)=43, р(2) = 3, а(3) = 1, ар(2) = 56, аа(3) = 75, р(3) = 1, <т(3) = 1, ар(3) = 69, аа(3) = 75, ст(3) = 1, аст(з) = 75, cj(4) = 3, аа(4)=99> Теорема 1.5. Алгоритм Merge-Sort корректен и его сложность составляет O(nlogn). Доказательство. Корректность очевидна. Обозначим через Т(п) время работы, т. е. количество шагов, необходимых алгоритму для сортировки входа из п чисел. Заметим, что Г(1) = 1 и Т(п) = Г(|_п/2_|) + Т(\п/2]) + Зп + 6. (Константы в слагаемом Зп + 6 зависят от того, что считать элементарным шагом. От их конкретного значения, впрочем, суть рассуждения не меняется.) Покажем, что отсюда следует неравенство Т(п) < 12nlogn И- 1. В случае п = 1 данное утверждение очевидно, для больших значений п мы докажем его по индукции. Пусть п > 2, тогда, предполагая, что неравенство истинно для 1,..., п — 1, получаем Т{п) < 12[| J log(fn) + 1 + \2\l\ log(fn) + 1 + Зп + 6 = = 12n(logn + 1 -log3) + Зп + 8 < < 12nlogn- уП + Зп + 8< 12nlogn + l, поскольку log 3 > 37/24. ? Конечно, представленный алгоритм годится для сортировки элементов произвольного линейно упорядоченного множества (при условии, что мы можем сравнивать элементы за константное время). Может ли существовать более быстрый алгоритм, скажем, с линейным временем работы? Задача сортировки состоит в выяснении относительного порядка элементов (в рамках содержащего их линейно упорядоченного множества). Предположим, что единственный способ для алгоритма получить информацию об этом порядке — это выполнить сравнение двух элементов. Тогда можно показать, что в худшем случае потребуется не менее B(nlogn) сравнений. Действительно, результат каждого сравнения может быть представлен в виде нуля или единицы; тогда результаты всех сравнений, выполняемых алгоритмом, образуют 0-1-строку (последовательность из нулей и единиц). Заметим, что различные относительные порядки для элементов на входе алгоритма должны приводить к различным 0-1-строкам (иначе алгоритм не сможет различить эти порядки). Для входа из п элементов существует п! возможных порядков, так что должно быть п! различных 0-1 строк, соответствующих процессу сортировки. Поскольку число 0-1-строк с длиной, меньшей I тт 1°? \ \> составляет 2L§ tog(n/2)J _1<2§ К*("/2) = (|)П/2 < „!,
28 Глава 1. Введение мы заключаем, что максимальная длина 0-1 строки, а следовательно, и количество шагов в работе алгоритма не меньше |log5=6(nlogn). В вышеуказанном смысле время работы алгоритма сортировки слиянием оптимально с точностью до константного множителя. Однако существует алгоритм, сортирующий целые числа (или строки в лексикографическом порядке), время работы которого линейно по размеру входа, см. упражнение 8. Алгоритм, сортирующий п целых чисел за время О (п log log п), был предложен Ханем [7]. Нижние границы сложности, подобные полученной выше, известны лишь для весьма небольшого количества задач (не считая тривиальных линейных оценок). Для получения сверхлинейной нижней оценки зачастую приходится ограничивать набор разрешенных элементарных операций. Упражнения 1. Докажите, что для всех п € N справедливо неравенство •(5)" <-«-(?)"¦ Указание. Воспользуйтесь неравенством 1+лг<е*, справедливым для всех xeR. 2. Докажите, что log(n!) = 0(nlogn). 3. Докажите, что л log п = 0(п1+€) для любого е > 0. 4. Покажите, что время работы алгоритма Path Enumeration составляет 0(п-п\). 5. Покажите, что существует полиномиальный алгоритм для задачи о сверлении для случая, когда d — ^-расстояние, если и только если полиномиальный алгоритм существует для 1^ -расстояния. Замечание. Существование этих алгоритмов маловероятно, поскольку в работе Гэри, Грэхема и Джонсона [6] было доказано, что эти разновидности задачи являются А/Р-трудными (подробнее см. гл.15). 6. Предположим, что для некоторой задачи есть алгоритм со временем работы B(n(t + n1/f)), где п—длина входа, at — положительный параметр, значение которого можно выбирать произвольно (в зависимости от п). Каким следует взять значение t, чтобы время работы (как функция от п) имело минимальную скорость роста? 7. Пусть s,t—двоичные строки, обе имеющие длину т. Скажем, что 5 лексикографически меньше, чем t, если найдется такой индекс j е {1,..., т}, что st = tt для всех i = l,...,j — 1 и Sj < tj. Пусть даны п строк, каждая длины т, и мы хотим отсортировать их лексикографически. Докажите, что существует алгоритм с линейным (т.е. составляющим 0(пт)) временем работы. Указание. Разделите строки на группы в зависимости от значения первого бита и отсортируйте каждую группу рекурсивно.
Литература 29 8. Опишите алгоритм, сортирующий набор натуральных чисел аъ...,ап за линейное время (т. е. находящий перестановку тг, для которой апщ < an(i+i) при i = 1,..., п — 1, и имеющий время работы OQogfa! + 1) 4-... 4- log(an + 1)). Указание. Вначале отсортируйте числа по длинам их двоичных записей. Затем примените алгоритм из упражнения 7. Замечание. Этот (а также упомянутый в предыдущем упражнении) алгоритм часто называют поразрядной сортировкой (radix sort). Литература Общая литература [1] Cormen Т. Я., Leiserson С. Е., Rivest R. L., Stein С. Introduction to Algorithms. Second Edition. МГТ Press, Cambridge, 2001. [2] Knuth D. E. The Art of Computer Programming; Vol. 1. Fundamental Algorithms. Addison- Wesley, Reading, 1968 (third edition: 1997). Процитированные работы [3] Aho A. V., Hopcroft J. E., Uilman J. D. The Design and Analysis of Computer Algorithms. Addison-Wesley, Reading, 1974. [4] Cobham A. The intrinsic computational difficulty of functions // Proceedings of the 1964 Congress for Logic Methodology and Philosophy of Science (Y. Bar-Hillel, ed.), North- Holland, Amsterdam, 1964. P. 24-30. [5] Edmonds J. Paths, trees, and flowers // Canadian Journal of Mathematics. 1965. Vol. 17. P. 449-467. [6] Garey M. R., Graham R. L., Johnson D. S. Some NP-complete geometric problems // Proceedings of the 8th Annual ACM Symposium on the Theory of Computing. 1976. P. 10-22. [7] Han Y. Deterministic sorting in О (n log log n) time and linear space // Journal of Algorithms. 2004. Vol. 50. P. 96-105. [8] Stirling J. Methodus Differentialis. London, 1730.
ГЛАВА 2 Графы Графы представляют собой фундаментальную комбинаторную структуру, используемую на протяжении всей книги. В данной главе мы не только приведем ряд стандартных определений и обозначений, относящихся к графам, но также докажем несколько важных теорем и обсудим некоторые фундаментальные алгоритмы. В § 2.1 будут сформулированы основные определения. Затем мы рассмотрим понятия деревьев, циклов и разрезов, которые будут часто встречаться далее. В § 2.2 для них будет доказан ряд важных свойств и соотношений, а также изучены свойства систем множеств, в определенном смысле аналогичных деревьям. Первый алгоритм встретится в § 2.3. Данный алгоритм предназначен для нахождения связных и сильно связных компонент. В § 2.4 будет доказана теорема Эйлера о замкнутых маршрутах, проходящих по каждому ребру ровно один раз. Наконец, в § 2.5 и § 2.6 будут рассмотрены графы, которые можно изобразить на плоскости без самопересечений. § 2.1. Основные определения Неориентированный граф представляет собой тройку (У,Е,Ф), где V и Е — конечные множества, аФ:?->{1су; |х| = 2} — отображение. Ориентированный граф или орграф — это тройка (У,Е, Ф), где V и Е — конечные множества, а Ф: Е —> {(и, ш)еУхУ:у/ w} — некоторое отображение. В зависимости от контекста под термином граф будет пониматься как ориентированный, так и неориентированный граф. Элементы множества V называются вершинами, а элементы множества Е —ребрами. Такие ребра е, е', чпоефе' и Ф(е) = Ф(е'), называются параллельными. Графы без параллельных ребер называются простыми. Для простых графов мы обычно отождествляем ребро е с его образом Ф(е) и пишем G = (V(G),E(G)), где E(G) с {X с V(G): |Х| = 2} (в неориентированном случае) или E(G) с V(G) х V(G) (в ориентированном случае). Часто это упрощенное обозначение используется также и при наличии параллельных ребер, тогда «множество» E(G) может содержать несколько «совпадающих» элементов. Несмотря на это, |E(G)| будет по-прежнему обозначать число ребер, так что для произвольных непересекающихся подмножеств ребер Е и F выполняется соотношение \E\JF\ = \Е\ 4- \F\ (даже если при объединении появляются параллельные ребра). Ддя такого ребра е,
§ 2.1. Основные определения 31 что Ф(е) = {v, w} или ^(е) = (и, w), мы используем обозначение е = {и, w} или е = (v, w) соответственно. Будем говорить, что ребро е = {и, w} или е = (v, w) соединяет вершины vnw. В этом случае ииш смежны. Вершина и тогда называется соседом вершины w (и наоборот). Вершины v и w также служат концами ребра е. Если и — конец ребра е, то мы говорим, что вершина v инцидентна ребру е. Для ориентированного графа скажем, что ребро е = (v, w) выходит из вершины и, служащей началом ребра е, и входит в вершину w, служащую его концом. Два ребра, у которых хотя бы один конец общий, называют смежными. Эта терминология не является единственно возможной. Ребра также иногда называют дугами (arc). (Такое название особенно популярно в случае орграфов.) В некоторых работах под графом понимают объект, который мы называем простым графом, а в случае наличия параллельных ребер говорят о мультиграфах (multigraph). Иногда в графах разрешают петли (loop), т. е. ребра, концы которых совпадают. Однако, если это не сказано явно, мы не допускаем их наличия. Для заданного ориентированного графа G можно рассмотреть его неориентированный образ, т. е. неориентированный граф G' с тем же множеством вершин, который содержит по неориентированному ребру {г;, w} для каждого ориентированного ребра (v,w) в G (так что |E(G')I = |E(G)|). Также скажем, что G — это ориентация графа G'. Подграф графа G = (V(G),E(G)) представляет собой граф Н = (У(Н),Е(Н)), для которого V(H) с V(G) и Е(Н) с E(G). Также говорят, что G содержит подграф Н. Подграф Я является индуцированным подграфом в G, если он образует подграф в G и Е(Я) = {{x,y}eE(G):x,ye V(H)} или ?(Н) = {(xj)€?(G):xjG У(Я)}. Мы также говорим, что Н — это подграф графа G, индуцированный множеством V(H), и пишем Я = G[V(H)]. Подграф Я графа G называется остовным, если V(H) = V(G). Если v Е V(G), то мы обозначаем через G — v подграф графа G, индуцированный множеством V(G)\{u}. Если eeE(G), то полагаем G — е := (V(G),?(G)\{e}). Аналогичные обозначения используются при удалении целого множества вершин или ребер X, в этом случае мы пишем G — X. Добавление нового ребра е обозначается G + е := (V(G),?(G) U {е}). Если G и Я — графы, то через G -I- Я обозначается граф, для которого V(G+H) = V(G) иУ(Я), a E(G+H) представляет собой объединение множеств ?(G) и Е[Н) (считающихся непересекающимися). При этом в G + Я могут возникнуть параллельные ребра. Семейство графов называется вершинно непересекающимся или реберно непересекающимся, если множества вершин (соответственно ребер) этих графов не пересекаются. Графы G и Я называются изоморфными, если существуют такие биекции Фу: V(G) -> У(Я) и Ф?: E(G) -> Е(Я), что Ф?((у, ш)) = (pv(v), Фу(ш)) для всех (и, w) е E{G) (в ориентированном случае) или ФЕ({и, w}) = {Фу(и), Фу(ш)} для
32 Глава 2. Графы всех {и, w} е E(G) (в неориентированном случае). Обычно мы не различаем изоморфные графы. Например, скажем, что граф G содержит подграф Я, если в G есть подграф, изоморфный Я. Пусть задан неориентированный граф G и выбрано подмножество X с V(G). Стягиванием множества X называется преобразование графа G, при котором удаляются вершины из X и ребра из G[X], добавляется новая вершина х и, наконец, каждое ребро вида {и, w), где v € X, w ф X, заменяется на {х, w] (при этом могут возникнуть параллельные ребра). Аналогичное понятие вводится и для ориентированных графов. Результат стягивания обозначается через G/X. Для графа G и подмножеств X, Y с V(G) положим E(X,Y):={{x,y}eE(G):xeX\Y,yeY\X}, если граф G неориентированный, и E+(X,7):={(x,y)eE(G):xeX\y, уеУ\Х}, если граф G ориентированный. Для неориентированного графа G и подмножества X с V(G) обозначим 5(Х) := Е(Х, V(G) \Х). Множество соседей подмножества X определяется как Т(Х) := {и е V(G)\X: Е{Х, {и}) ф 0}. Для ориентированных графов G и X с V[G) мы вводим обозначения 5+(Х) := Е+(Х, V(G) \Х), 5~(Х) := б+(У(G) \X) и 5(Х) := 5+(Х) и б"(Х). Если это необходимо, то в нижнем индексе мы указываем граф G (например, пишем 5G(X)). Для синглетонов, т. е. одноэлементных множеств вершин {и} (v е V(G)), мы пишем 5(v) := 5(М), r(i/) := Г(М), 5+(у) := 5+({v}) и 5"(i/) := 5~({i/}). Степенью вершины у называют значение |5(и)|, равное числу инцидентных ей ребер. В ориентированном случае говорят о входящей степени, которая равна |5~(i/)|, и выходящей степени, равной |5+(у)|, а просто степенью называют сумму \5+{и)| 4- |5~(у)|. Вершина нулевой степени называется изолированной. Граф, в котором все степени вершин равны fc, называется к-регулярным. Для произвольного графа G справедливо тождество Ytv<=v(G) \&(v)\ = 2|?(G)|. В частности, количество вершин нечетной степени четно. В ориентированном случае имеем Ytv<=v(G) 1^+(у)1 = Suevco |5~(^)|. Для доказательства заметим, что каждое ребро учитывается дважды в обеих частях первого тождества и по разу в каждой из частей второго. Столь же нетрудно доказать также следующие полезные утверждения. Лемма 2.1. Для ориентированного графа и пары подмножеств X, Y с V{G) выполняются равенства (а) |5+(Х)| + |5+(7)| = |5+(ХПУ)| + |5+(ХиУ)|-ЫЕ+(Х,У)| + |Е+(У;Х)|; (б) \5~{Х)\ + |5-(7)| = |5-(ХПУ)| + |5"(ХиУ)| + |Е+(Х,У)| + |Е+(Г,Х)|. Для неориентированного графа G и пары подмножеств X,YQ V(G) выполняются равенства (в) \8(X)\ + \5(Y)\ = \6(XnY)\ + \5(XuY)\ + 2\E(X,Y)\; (г) \5(X)\ + \5(Y)\ = \5(X\Y)\ + \8(Y\X)\ + 2\E(XnY,V(G)\(XuYm (д) |Г(Х)1 + |Г(У)|>|Г(ХПУ)1 + №иУ)|.
§ 2.1. Основные определения 33 Доказательство. Оба утверждения доказываются несложным подсчетом. Положим Z := V(G)\(X(J 7). Для доказательства утверждения (а) заметим, что \54x)\ + \54y)\ = \e+(x,z)\ + \e4x,y\x)\ + \e+(y,z)\ + \e+(y,x\y)\ = = \e+(xuy,z)\ + \e+(xny,z)\ + \e+(x,y\x)\ + \e+(y,x\y)\ = = \5+(XUY)\ + \5+(XnY)\ + \E+(X,Y)\ + \E+(Y,X)\. Утверждение (б) следует из (а) обращением всех ребер (заменой {и, w) на (ш, и)). Утверждение (в) следует из (а) заменой каждого неориентированного ребра {v,w} парой противоположно направленных ориентированных ребер {v, w) и (ш, и). Подставляя Y := V(G)\Y в утверждение (в), мы получаем утверждение (г). Чтобы доказать утверждение (д), заметим, что |Г(Х)| + |Г(7)| = |Г(Х U 7)| + |Г(Х) П Г(7)| + |Г(Х) П 7| + + |Г(7) ПХ\ > |Г(Х U 7)| + |Г(Х П 7)|. ? Функция f:2u->R (где U — произвольное конечное множество, а2и — семейство всех подмножеств множества U) называется • субмодулярной, если /(X П 7) + /(X и 7) < /(X) + /(7) для всех X, 7 с U; • супермодулярной, если /(X П 7) + f{X и 7) > f{X) + /(У) для всех X, 7 с I/; • модулярной, если /(X П 7) + /(X U 7) = /(X) + /(7) для всех X, 7 с и. Таким образом, лемма 2.1 показывает, что функции \5+\, \5~\, \5\ и |Г| являются субмодулярными. Впоследствии это наблюдение нам не раз пригодится. Полным называется неориентированный граф, в котором каждая пара различных вершин является смежной. Полный граф на п вершинах обозначается через Кп. Для простого неориентированного графа G его дополнение представляет собой неориентированный граф Я, в котором V(G) = V(H) и сумма G 4- Я образует полный граф. Паросочетание в неориентированном графе G — это множество попарно непересекающихся ребер (т. е. множество ребер, все концы которых различны). Вершинное покрытие в G — это такое множество вершин S с V(G), что всякое ребро в G инцидентно хотя бы одной вершине из S. Реберное покрытие в G — это такое множество ребер F с E(G), что всякая вершина в G инцидентна хотя бы одному ребру из F. Независимое множество в G — это множество попарно несмежных вершин. Граф, не содержащий ребер, называется пустым. Клика — это множество попарно смежных вершин. Утверждение 2.2. Пусть заданы граф G и подмножество X с V(G). Тогда следующие утверждения эквивалентны: (а) X образует вершинное покрытие в G; (б) V(G) \Х образует независимое множество в G; (в) V(G) \Х образует клику в дополнении kG. ?
34 Глава 2. Графы Для семейства множеств или графов & скажем, что F является минимальным по включению элементом семейства &, если & содержит F, но не содержит никакое собственное подмножество (или подграф) графа F. Аналогично F называется максимальным по включению в <^, если F € & и F не является собственным подмножеством (или подграфом) никакого элемента из &. Когда мы говорим просто о минимальном или максимальном элементе, то имеем в виду элемент с минимальной (соответственно максимальной) мощностью. Например, минимальное по включению вершинное покрытие не обязательно является минимальным (см., скажем, граф на рис. 13.1), а максимальное по включению паросочетание не всегда является максимальным. Задачи нахождения максимального паросочетания, максимального независимого множества или клики, минимального вершинного или реберного покрытия в неориентированных графах будут играть важную роль в последующих главах этой книги. Для простого неориентированного графа G реберным графом называется граф (E(G), F), где F = {{еъ е2}: еъ е2 € E(G), \ег П е2\ = 1}. Очевидно, что паросочетания в графе G соответствуют независимым подмножествам в реберном графе, построенном для G. Пусть G — граф, ориентированный или нет. Реберной цепью W в G (из вершины иг в вершину ик+1) называется такая последовательность вершин и ребер иъ еъ v2,..., ик, ек, ик+1, что к > О и е{ = (ui9 ui+1) е E(G) или е{ = {vh ui+1} е E(G) для всех i = 1,..., к. Если дополнительно е{ ф е; для всех i, j, 1 < i < j < к, то W называется маршрутом в G. Маршрут W называется замкнутым, если иг = vk+1. Путем называется такой граф Р = {{иъ..., vk+1}, {еъ ..., ек}), что vt Ф Vj при l<i<j<fc + lH последовательность иъ еъ v2,.^, vk, ек, vk+1 образует маршрут. Мы также говорим, что Р — это путь из иг в ик+1 или ь^-ь^-путь. Вершины иг и ик+1 служат концами пути Р, а вершины v2i...,vk являются промежуточными. Для х, у € У(Р) через Р[ХгУ] мы обозначаем (единственный) подграф графа Р, образующий лг-у-путь. Очевидно, существует реберная цепь из вершины и в вершину w, если и только если существует у-ш-путь. Циклом называется граф {{v1}..., vk), {еъ..., ek}), в котором последовательность иъ еъ v2,..., vk, ek, иг образует такой замкнутый маршрут, что к>2ии(Ф Vj для всех i, j, 1 < i < j < fc. Несложно показать по индукции, что множество ребер замкнутого маршрута можно представить в виде объединения непересекающихся множеств ребер подходящих циклов. Неориентированным путем или неориентированным циклом в ориентированном графе G мы называем подграф, отвечающий пути или циклу соответственно в неориентированном графе, лежащем в G. Длиной пути или цикла мы называем число его ребер. Если путь или цикл является подграфом графа G, то мы говорим о пути или цикле в G. Остовный подграф, являющийся путем в G, называется гамильтоновым путем, а остовный подграф, являющийся циклом, — гамильтоновым циклом. Граф, содержащий гамильтонов цикл, называется гамильтоновым графом. Для вершин и и w через dist(i>, w) или distG(i>, ш) мы обозначаем длину кратчайшего u-w-пути (расстояние от и до w) в графе G. Если у-ш-путей не су-
§ 2.2. Деревья, циклы и разрезы 35 ществует, т. е. вершина w недостижима из и, то мы полагаем dist(i;, w) := оо. В неориентированном случае для всех v, w е V(G) справедливо равенство dist(i>, ш) = dist(w, и). Мы часто будем рассматривать на ребрах графа функцию весов (weight) или стоимостей (cost) с: ?(G) —> R. Тогда для подмножества F с E(G) положим ^(i7) := I]eeFc(e) (и с(^0 = 0)- Таким образом, с продолжается до модулярной функции с: 2?(G) —»R. Кроме того, dist(G c)(i;, w) будет обозначать минимум функции с(Е(Р)) по всем у-ш-путям Р в G. § 2.2. Деревья, циклы и разрезы Неориентированный граф G называется связным, если для всех v,w е V(G) найдется у-ш-путь; в противном случае граф G несвязен. Ориентированный граф называется связным, если связен его неориентированный образ. Максимальные связные подграфы графа G называются связными компонентами графа G. Иногда мы отождествляем связные компоненты с подмножествами вершин, их индуцирующими. Множество вершин X называется связным, если связен подграф, индуцированный множеством X. Такая вершина и, что граф G — v содержит больше связных компонент, чем G, называется точкой сочленения. Аналогично ребро е называется мостом, если граф G—e содержит больше связных компонент, чем G. Неориентированный граф, не содержащий циклов в качестве подграфов, называется лесом. Связный лес называется деревом. Вершина в дереве, степень которой не превосходит единицы, называется листом. Звезда представляет собой дерево, в котором есть не более одной вершины, не являющейся листом. В дальнейшем будет дан ряд эквивалентных определений деревьев и их ориентированных аналогов. Нам потребуется следующий критерий связности. Утверждение 2.3. 1. Неориентированный граф G является связным, если и только если 5[Х) ф 0 для всех таких X, что 0/Ic V(G). 2. Пусть G — ориентированный граф, и пусть г е V(G). Тогда для каждой вершины v е V{G) найдется r-v-путъ, если и только если 5+(Х) ф 0 для всех таких X с V(G), что геХ. Доказательство. Докажем утверждение 1. Если существует такое множество X с V(G), что г е X, v е V(G) \Х и 5(Х) = 0, то г-у-пути быть не может, так что граф G несвязен. С другой стороны, если граф G несвязен, то не существует r-и -пути для некоторых вершин г ни. Пусть R — множество вершин, достижимых из г. Имеем rGR, v?Rh5 (R) = 0 (последнее — в силу максимальности). Утверждение 2 доказывается аналогично. ? Теорема 2.4. Пусть G — неориентированный граф с п вершинами. Тогда следующие утверждения эквивалентны: (а) G является деревом; (б) G имеет п — 1 ребер и не содержит циклов;
36 Глава 2. Графы (в) G имеет п — 1 ребер и является связным; (г) граф G связен, и каждое его ребро является мостом; (д) G обладает свойством 5(Х) ф 0 для всех X, 0 ф X с V(G), но удаление любого ребра нарушает это свойство; (е) G является лесом, но добавление любого ребра приводит к появлению цикла; (ж) G содержит единственный путь между любой парой вершин. Доказательство. Импликация (а)=>(ж) следует из того, что объединение двух различных путей, соединяющих заданную пару вершин, содержит цикл. Импликации (ж)=>(д)=>(г) следуют из утверждения 2.3(1). Импликация (г)=>(е) тривиальна. Рассмотрим импликации (е)=>(б)=>(в). Они следуют из того, что для леса с п вершинами, т ребрами и р связными компонентами справедливо равенство п = т-\-р. (Его доказательство несложно провести индукцией по т.) Обратимся к импликации (в)=»(а). Пусть G — связный граф, содержащий п — 1 ребро. Пока в графе G есть циклы, будем разрушать их, удаляя ребра по одному. Предположим, что всего было удалено к ребер. Получившийся граф все еще связен, не имеет циклов и содержит m = п — 1 — к ребер. Таким образом, п = т + р = п — 1 — fc + 1, и, следовательно, fc = 0. ? В частности, из импликации (г)=»(а) следует, что граф связен, если и только если он содержит остовное дерево, т. е. остовный подграф, являющийся деревом. Ориентированный граф называется ветвлением (branching), если его неориентированный образ образует лес и в каждую вершину входит не более одного ребра. Связное ветвление называется ориентированным деревом (arborescence). По теореме 2.4 ориентированное дерево с п вершинами содержит п — 1 ребро, так что существует ровно одна такая вершина г, что 5~(г) = 0. Эта вершина называется корнем. Рассмотрим вершину v, принадлежащую ветвлению. Тогда вершины w, для которых существует ребро {v, w), называются сыновьями вершины v. Для сына w вершины v последняя называется родителем. Вершины без сыновей называются листьями. Теорема 2.5. Пусть G — ориентированный граф с п вершинами, г — вершина графа G. Тогда следующие утверждения эквивалентны: (а) G представляет собой ориентированное дерево с корнем г; (б) G представляет собой ветвление с п — 1 ребрами, и 5~(г) = 0; (в) G содержит п — 1 ребер, и каждая вершина достижима из г; (г) каждая вершина достижима из г, но удаление любого ребра нарушает это свойство; (д) G удовлетворяет условию 5+ (X) ф 0 для всех таких X с V(G), что геХ, но удаление любого ребра нарушает это свойство; (е) 5~(г) = 0, и для каждой вершины v € V(G)\{r} существует единственный путь из г в и; (ж) 5~(г) = 0, |5~(i;)| = 1 для всех и е. V(G)\{r}, uG не содержит циклов.
§ 2.2. Деревья, циклы и разрезы 37 Доказательство. Импликации (а)=>(б) и (в)=>(г) следуют из теоремы 2.4. Рассмотрим импликацию (б)=»(в). Имеем |5~(z;)| = 1 для всех и е V(G)\{r}. Следовательно, для любой вершины и существует r-y-путь (начнем движение в вершине и и будем каждый раз выбирать единственную входящую дугу, пока не придем в г). Эквивалентность (г)<=>(д) вытекает из утверждения 2.3(2). Докажем импликацию (г)=ф(е). Любое ребро из 5~{г) можно удалить, не нарушая достижимости из г. Предположим, что для некоторой вершины и е V(G) найдутся два r-y-пути Р и Q. Без ограничения общности можно считать, что Е(Р) не является подмножеством E(Q) (в противном случае можно поменять Р и Q местами). Пусть е — последнее ребро в Р, которое не встречается в Q. Тогда после удаления е любая вершина по-прежнему достижима из г. Перейдем к импликации (е)=>(ж). Если каждая вершина достижима из г и |5~(у)| > 1 для некоторой вершины и е V(G)\{r}, то найдутся два маршрута из г в у. Пусть G содержит цикл С. Рассмотрим вершину v е. V(C) и г-у-путь р. Пусть х — первая вершина в Р, принадлежащая С. Тогда существуют два маршрута из г в л:: Р[Г}Х], а также Р[г х] с добавленным в конец С. Наконец, рассмотрим импликацию (ж)=ф(а). Если |5~(z;)| < 1 для всех вершин v € V(G), то каждый ненаправленный цикл является также направленным. ? Разрез в ненаправленном графе G представляет собой множество ребер вида 5(Х) для некоторого непустого множества X с V(G). В ориентированном графе G множество 5+(Х) образует ориентированный разрез, если 0/Хс V(G) и 5~(Х) = 0, т. е. ни одно ребро не входит в множество X. Мы говорим, что множество ребер F с E(G) разделяет две вершины s и t, если вершина t достижима из 5 в G, но не в (V(G), Е (G) \F). Пусть s — заданная вершина, тогда s-t-разрезом в ненаправленном графе называют разрез вида 5(Х) для некоторого X с V(G), удовлетворяющего условиям seX nt^X.B направленном графе s-t-разрезом называют такое множество ребер 5+(Х), что s € X и t ф X. Соответственно r-разрез в направленном графе — это множество ребер вида 5+(Х) для некоторого X с V(G), удовлетворяющего условию гбХ. Ненаправленный разрез в направленном графе представляет собой множество ребер, образующее разрез в его неориентированном образе, т. е. множество 5{Х) для некоторого непустого множества X с V(G). Лемма 2.6 (Минти [24]). Пусть G — ориентированный граф, в котором выбрано ребро е € E(G). Предположим, что е покрашено в черный цвет, а все остальные ребра покрашены в красный, черный и зеленый цвета. Тогда ровно одно из приведенных ниже утверждений истинно: (а) найдется неориентированный цикл, содержащий е, все ребра которого красные и черные, причем все черные ребра имеют одинаковую ориентацию; (б) найдется неориентированный разрез, содержащий е, все ребра которого зеленые и черные, причем все черные ребра имеют одинаковую ориентацию.
38 Глава 2. Графы Доказательство. Положим е = (х,у). Далее пометим некоторые вершины графа G в соответствии со следующей процедурой. Вначале пометим у. Пусть вершина и уже помечена, a w еще нет. Тогда пометим w в случае, если найдется черное ребро (v, w), красное ребро (v, w) или красное ребро (ш, и). В этом случае обозначим также pred(u;) := и. Когда вышеописанный процесс расстановки пометок закончится, возможны два случая. Случай 1: вершина х была помечена. В этом случае вершины х, pred(jt), pred(pred(x)), ..., у образуют неориентированный цикл со свойством (а). Случай 2: вершина х не была помечена. Пусть тогда R состоит из всех помеченных вершин. Очевидно, неориентированный разрез 5+(R) U 5~(R) обладает свойством (б). Предположим, что одновременно существуют неориентированный цикл С со свойством (а) и неориентированный разрез 5+{Х) и 5~(Х) со свойством (б). Все ребра в их (непустом) пересечении черные, все они имеют одинаковую ориентацию относительно С, и все они одновременно выходят из X либо входят в X, Это, очевидно, невозможно. ? Ориентированный граф называется сильно связным, если существуют путь из 5 в t и путь из t в s для всех 5, t е V(G). Сильно связные компоненты орграфа представляют собой максимальные сильно связные подграфы. Следствие 2.7. В орграфе G каждое ребро принадлежит либо (направленному) циклу, либо направленному разрезу. Более того, следующие утверждения эквивалентны: (а) G представляет собой сильно связный орграф; (б) G не содержит ориентированного разреза; (в) граф G связен, и всякое его ребро принадлежит ориентированному циклу. Доказательство. Первое утверждение легко следует из леммы Минти (достаточно объявить все ребра черными). Это наблюдение также доказывает импликацию (6)=» (в). Импликация (а)=>(б) следует из утверждения 2.3(2). Докажем импликацию (в)=»(а). Пусть г е V(G)—произвольная вершина. Мы докажем, что существует г-и-путъ для всех и е V(G). Предположим, что это не так, тогда согласно утверждению 2.3(2) найдется подмножество X с V(G), для которого ге!и 5+(Х) = 0. Поскольку граф G связен, имеем 5+(Х) и 5~(Х) Ф 0 (согласно утверждению 2.3(1)), так что е е 5~(Х). Но тогда е не может принадлежать циклу, поскольку в графе нет выходящих из X ребер. ? Следствие 2.7 и теорема 2.5 показывают, что орграф сильно связен, если и только если для каждой вершины и он содержит ориентированное дерево с корнем в v. Орграф называется ациклическим, если он не содержит (ориентированных) циклов. По следствию 2.7 орграф ациклический, если и только если каждое его ребро принадлежит некоторому ориентированному разрезу. Более того, ор-
§ 2.2. Деревья, циклы и разрезы 39 граф ациклический, если и только если каждая его сильно связная компонента содержит по одной вершине. Вершины ациклического орграфа могут быть упорядочены следующим полезным образом. Определение 2.8. Пусть G — орграф. Топологический порядок на G представляет собой такое упорядочение вершин V(G) = {vl9...,vn}, что для всякого ребра {v{, Uj) е Е (G) справедливо неравенство i < j. Утверждение 2.9. Для орграфа существует топологический порядок в том и только в том случае, если орграф ациклический. Доказательство. Если орграф содержит цикл, то, очевидно, для него не может существовать топологического порядка. Покажем справедливость обратного утверждения индукцией по числу ребер. Если в графе нет ребер, то подойдет любое упорядочение его вершин. Иначе пусть е е E(G); тогда ребро е принадлежит ориентированному разрезу 5+(Х) по следствию 2.7. Выпишем вершины графа G[X] в топологическом порядке, а за ними — вершины графа G — X также в топологическом порядке (оба упорядочения существуют по индуктивному предположению). Полученная последовательность образует топологический порядок на G. ? Циклы и разрезы играют также важную роль в алгебраической теории графов. С графом G мы свяжем линейное пространство RE^G\ элементами которого будут векторы (хе)ееЕ^, имеющие |E(G)| вещественных координат. Следуя результатам Берже [1], кратко обсудим два важнейших линейных подпространства bRe(g). Пусть G — орграф. С каждым неориентированным циклом С в G мы свяжем вектор С(С) е {-1,0,1}?(G). Для е <? е(С) положим ?(С)е = 0. Для е е Е(С) положим ?(С)е е {—1,1}, причем знак выберем таким образом, чтобы изменение направления всех ребер е, для которых ?(С)е = —1, приводило к появлению направленного цикла. Аналогично с каждым ненаправленным разрезом D = 5(Х) в G свяжем вектор ?(D) е {-1,0,1}?(G), где ?(D)e = 0 для всех е ф D, ?(D)e = -1 для всех е € 5~{Х) и C(D)e = 1 для всех е е 5+(Х). Отметим, что эти векторы определены лишь с точностью до умножения на —1. Однако подпространства в RE^G\ порожденные множеством векторов, связанных с ненаправленными циклами и ненаправленными разрезами в G, определены корректно. Они называются пространством циклов и пространством коциклов в G соответственно. Утверждение 2.10. Пространство циклов и пространство коциклов взаимно ортогональны. Доказательство. Пусть С — произвольный ненаправленный цикл, a D = 5(Х) — произвольный ненаправленный разрез. Мы утверждаем, что скалярное произведение С (С) и ?(D) равно нулю. Поскольку изменение направления любого ребра не меняет данного скалярного произведения, мы можем считать, что D представляет собой ориентированный разрез. Но тогда требуемое утверждение следует из того факта, что любой цикл входит в множество X столько же раз, сколько выходит из X. ?
40 Глава 2. Графы Покажем теперь, что сумма размерностей пространства циклов и пространства коциклов составляет |E(G)|, т.е. равна размерности всего пространства на ребрах графа. Множество неориентированных циклов (неориентированных разрезов) называется базисом циклов (базисом коциклов), если связанные с ними векторы образуют базис в пространстве циклов (соответственно в пространстве коциклов). Пусть G— граф (ориентированный или неориентированный), а Г — максимальный подграф без неориентированных циклов. Для каждого ребра е е E(G)\E(T) рассмотрим единственный цикл вГ + еи назовем его фундаментальным циклом ребра е относительно Т. Более того, для каждого е е Е(Т) найдется такое множество X с V(G), что 5G(X) П Е(Т) = {е} (действительно, рассмотрим связную компоненту графа Г — е). Мы называем 5G(X) фундаментальным разрезом ребра е относительно Г. Теорема 2.11. Пусть G — орграф, а Т—максимальный подграф без неориентированных циклов. Тогда множество из \E(G)\E(T)\ фундаментальных циклов относительно Т образует базис циклов в G, а множество из \Е(Т)\ фундаментальных разрезов относительно Т образует базис коциклов в G. Доказательство. Векторы, связанные с фундаментальными циклами, линейно независимы, поскольку каждый фундаментальный цикл содержит ребро, не принадлежащее другим фундаментальным циклам. Аналогичное утверждение справедливо для фундаментальных разрезов. Поскольку данные линейные пространства ортогональны по утверждению 2.10, сумма их размерностей не превосходит |В(6)| = |В(0)\В(Г)1 + |В(Г)|. П Фундаментальные разрезы обладают следующим полезным свойством, которым мы будем далее часто пользоваться. Пусть Т — орграф, неориентированный образ которого является деревом. Рассмотрим семейство & := {Се: е е Е(Т)}, где для е = (х, у) е Е(Т) через Се обозначена связная компонента графа Т — е, содержащая у (так что 5(Се) служит фундаментальным разрезом ребра е относительно Г). Если Т представляет собой ориентированное дерево, то любые два элемента семейства & либо не пересекаются, либо вложены друг в друга. В общем же случае семейство & является бескроссинговым. Определение 2.12. Система подмножеств — это пара (У,&), где U — непустое конечное множество, а & — семейство подмножеств множества U. Система (U, &) называется бескроссинговой (cross-free), если для любых двух подмножеств Х,У€^ хотя бы одно из четырех множеств X \ Y, Y \Х, X П Y, U \ [X U Y) пусто. Система (U, &) называется ламинарной (laminar), если для любых двух подмножеств 1,У€^ хотя бы одно из трех множеств X\Y,Y\X, XC\Y пусто. В литературе системы подмножеств также известны как гиперграфы. На рис. 2.1(a) приведен пример ламинарной системы {{а}, {Ъ, с}, {а, Ъ, с}, {а, Ъ, с, d], {/}, {/, g}}. Иначе ламинарные системы называют вложенными. Ламинарность системы множеств (U, &) не зависит от выбора U, так что мы иногда для краткости будем говорить, что & образует ламинарное семейство. Однако система может быть или не быть бескроссинговой в зависимости
§ 2.2. Деревья, циклы и разрезы 41 а Ь,с Рис. 2.1 (а) (б) Рис. 2.2 от выбора носителя U. Если U содержит элемент, не принадлежащий ни одному из множеств в &, то семейство & бескроссинговое, если и только если оно ламинарное. Пусть г е U — произвольный элемент. Из определения следует, что система множеств (С/, &) бескроссинговая, если и только если семейство 9' := {X € &: г ? X} U {1/\Х: X € 9, г € X} ламинарно. Учитывая это, бескроссинговые семейства зачастую изображают аналогично ламинарным. Например, на рис. 2.2(a) представлено бескроссинговое семейство {{b,c,d,e,/}, {с}, {а, Ъ,с), {е}, {a, b,c,d,f}, {e,f}}; при этом каждый прямоугольник задает множество, состоящее из элементов, лежащих вне него. В то время как ориентированные деревья приводят к понятию бескроссинго- вых семейств, обратное также верно: каждое бескроссинговое семейство может быть представлено деревом в следующем смысле. Определение 2.13. Пусть Г — такой орграф, что его неориентированный образ является деревом. Пусть U — конечное множество и </?: U —> V(T). Положим
42 Глава 2. Графы «?:={Se:e€ Е(Т)}, где для е = (х,у) введено обозначение Se := {s € [/: c^(s) лежит в той же связной компоненте графа Т — е, что и у}. Тогда (Г, у) называется древесным представлением для системы (U, &). Примеры такого представления приведены на рис. 2.1(6) и 2.2(6). Утверждение 2.14. Пусть (U, &) — система подмножеств, имеющая древесное представление (Г, у). Тогда система (У,&) является бескроссинговой. Если Т образует ориентированное дерево, то система (U, &) ламинарна. Более того, всякое бескроссинговое семейство допускает древесное представление, а для ламинарных семейств в качестве Т можно взять ориентированное дерево. Доказательство. Если (Г, (/?) образует древесное представление системы (U, &) и е = (v, ш), f — (х, у) € Е(Т), то мы имеем неориентированный v-x-путъ Р в Т (без учета ориентации ребер). Возможны четыре случая. Если w,y $ V(P), то Sen Sf = 0 (поскольку Г не содержит циклов). Если w ?V(P) и у е V(P), то Se с sf. Если у ? V(Р) и w е V(Р), то S/ с Se. Если ш, у е У(Р), то SeUSf = U. Таким образом, система (У,&) бескроссинговая. Если Г — ориентированное дерево, то последний случай невозможен (иначе хотя бы одна вершина пути Р имела бы два входящих ребра), так что & ламинарно. Для доказательства обратного утверждения рассмотрим произвольное ламинарное семейство &. Положим V(T) :=&\J {г} и Е(Т) := {{X, Y) е & х &: X э Y ф 0 и не существует такого Z € &9 что X э Z э У} и { (г, X): X = 0 е j^ или X — максимальный элемент в &}. Пусть (/? (х) :=X, где X — минимальное множество в &, содержащее х, и с/? (х) :=г, если ни одно множество из & не содержит х. Очевидно, Г представляет собой ориентированное дерево с корнем г, а (Г, </?) служит древесным представлением семейства &. Пусть теперь ^ — бескроссинговое семейство подмножеств множества U. Выберем ret/. Как отмечено выше, семейство &':={Xe&:r?X}\J{U\X:Xe&,reX} ламинарное, поэтому обозначим через (Г, у) древесное представление семейства (У, &'). Теперь для всякого ребра е е Е(Т) возможны три случая. Если Se €. & и U\Se е &, то заменим ребро е = (х,у) на пару ребер (x,z) и (y,z), где z — новая вершина. Если Se & & и U\Se е &, то заменим ребро е = (х,у) на (у,х). Если Se е ^ и U\Se ? &, то никаких действий не требуется. Пусть в результате получается граф Г'. Тогда (Г', </?) образует древесное представление для(У,&). ? Приведенный выше результат упомянут в работе Эдмондса и Джайлса [12], но, видимо, был известен и ранее. Следствие 2.15. Ламинарное семейство различных подмножеств множества U содержит не более 2\U\ элементов. Бескроссинговое семейство различных подмножеств множества U содержит не более 4\U\ — 2 элементов.
§2.3. Связность 43 Доказательство. Рассмотрим вначале случай ламинарного семейства & различных собственных подмножеств множества U и докажем, что \&\ < 2\U\ — 2. Пусть (Г, у) —древесное представление семейства &, где в качестве Г выбрано ориентированное дерево с наименьшим количеством вершин. Для каждой вершины w е V(T) либо выполняется неравенство |5+(ш)| > 2, либо найдется такой элемент х е U, что у(х) = w, либо выполнены оба утверждения. (Для корня это следует из того, что иф&, для листьев — из того, что 0 ? &, а для всех остальных вершин — из минимальности Г.) Может существовать не более \U\ таких вершин w, что с/?(лг) = w для некоторого х € U, и не более [\ЕСП|/2J вершин ш, для которых |5+(ш)| > 2. Тогда |Е(Г)| + 1 = |У(Г)| < Щ + |Е(Г)|/2 и, значит, \9\ = \Е(Т)\ < 2\U\ -2. Пусть теперь ([/, &) — бескроссинговое семейство, удовлетворяющее условию 0, U ф &, и пусть г е [/. Семейство &' := {X е&: г <?X}u{U\X: X е&, г еX} ламинарное, поэтому \&'\ <2|[/|—2. Следовательно, |<^| <2|<^'| <4|?/|—4. Для завершения доказательства достаточно учесть при подсчете в качестве возможных элементов семейства & подмножества 0 и U. ? §2.3. Связность Связность представляет собой важное понятие теории графов. Для многих задач оказывается достаточно ограничиться случаем связных графов, поскольку в общем случае задача может быть решена для каждой связной компоненты в отдельности. Таким образом, обнаружение связных компонент графа представляет собой фундаментальную задачу. Мы опишем простой алгоритм, который находит путь из заданной вершины 5 до всех остальных вершин, достижимых из 5. Этот алгоритм подходит как для ориентированных, так и для неориентированных графов. В неориентированном случае он строит максимальное дерево, содержащее вершину s; в ориентированном случае — максимальное ориентированное дерево с корнем в 5. Graph Scanning (алгоритм сканирования графа) Вход: граф G (ориентированный или неориентированный) и вершина 5. Выход: множество R вершин, достижимых из s, и множество Г с E(G)9 для которого (Я, Г) образует ориентированное дерево с корнем 5 (если граф G ориентированный) или обычное неориентированное дерево (если граф G неориентированный). ® Положим R := {s}, Q := {s} и Г := 0. © If Q = 0 then stop else выбрать v e Q.
44 Глава 2. Графы (3) Выбрать w е V(G) \R, так что е = {у, w) е E(G) или е = {и, w} е E(G). If вершины w не существует then положить Q := Q\{i>}. Goto (2). 0 Положить R := R U {w}, Q := Q U {w} и Т := Т U {е}. Goto ©. Утверждение 2.16. Алгоритм Graph Scanning корректен. Доказательство. В любой момент (R, Г) представляет собой неориентированное дерево или ориентированное дерево с корнем в 5. Предположим, что в конце работы найдется вершина w е V(G)\R, достижимая из s. Обозначим через Р произвольный s-w-путь, и пусть {х, у} или (х, у) — такое ребро пути Р, что х € R и у ? R, Поскольку вершина х была добавлена к R, она также была добавлена к Q в некоторый момент времени работы алгоритма. Алгоритм не остановится до тех пор, пока вершина х не будет удалена из Q. Но это может произойти лишь на шаге (3), когда не существует таких ребер {х, у} и (х, у), что у ф R. ? Поскольку это первый алгоритм на графах из представленных в книге, остановимся подробнее на некоторых деталях его реализации. Первый вопрос касается способа задания графа. Существует несколько естественных вариантов. Например, можно использовать матрицу, в которой каждая строка отвечает вершине, а каждый столбец — ребру. Такая матрица называется матрицей инцидентности неориентированного графа G и имеет вид А = {av>^)v^v{G)yeeE{G)y гДе {1, если и е е; О, если v f. е. Матрица инцидентности ориентированного графа G определяется как А = = (av,e)v<=V(G),e<EE(G)> гДе {—1, если и = х; 1, если и = у; О, еслиу^{х,у}. Конечно, такой способ хранения графа не слишком эффективен, поскольку в каждом столбце матрицы есть лишь два ненулевых элемента. Объем памяти, необходимый для хранения матрицы инцидентности, очевидно, равен 0{пт), гдеп:=|У(С)|ит:=|Е(а)|. Более компактным является способ, при котором и строки, и столбцы матрицы отвечают множеству вершин. Матрица смежности простого графа G представляет собой 0-1-матрицу А = (.aU}W)V}Wev(G)> Д^151 которой auw = 1, если и только если {v, w} € ?(G) или (и, w) е E(G). Для графов с параллельными ребрами мы положим avw равным числу ребер, идущих из и в w. Матрица смежности требует памяти 0(п2) для хранения простого графа. Матрица смежности является подходящей, если граф плотный, т. е. количество его ребер имеет порядок в(п2). Для разреженных графов, скажем, содержащих 0(п) ребер, есть намного более эффективный способ хранения. Будем
§2.3. Связность 45 хранить число вершин в графе, а также список ребер (запоминая для каждого ребра его концы). Если мы пронумеруем все вершины числами от 1 до п, то объем памяти (измеряемый количеством бит) для хранения одного ребра составит О (log л). Таким образом, всего потребуется O(mlogn) бит памяти. Простое хранение множества ребер графа не всегда достаточно для эффективной работы с ним. Почти все алгоритмы на графах требуют перечисления ребер, инцидентных заданной вершине. Таким образом, придется помнить отдельный список ребер для каждой вершины. В случае ориентированного графа вместо одного списка потребуются даже два — один для входящих ребер, другой для выходящих. Эта структура данных называется списками смежности и является одной из наиболее популярных. Для прямого доступа к спискам ребер каждой вершины нам потребуются указатели на начала и концы этих списков. Эти указатели потребуют дополнительно 0{п log m) бит памяти. Таким образом, общий объем памяти для хранения графа в виде списков смежности составляет О (n log т + т log п) бит. На протяжении этой книги мы считаем, что если на вход алгоритма подается граф, то он представлен списками смежности. Как и для элементарных операций над числами (см. §1.2), мы предполагаем, что элементарные операции над вершинами и ребрами отнимают константное время. К таким операциям относится получение концов ребра, а также начала списка смежности вершины. Время работы будет измеряться в терминах параметров пит. Алгоритм со временем работы 0[т + п) будет называться линейным. Для обозначения числа вершин и ребер в графе мы всегда будем использовать переменные пит. Для многих алгоритмов без ограничения общности можно считать, что рассматриваемый граф простой и связный, а значит, п — 1 < т < п2. Среди множества параллельных ребер часто достаточно рассмотреть лишь одно, а отдельные связные компоненты можно рассматривать отдельно. Эта предобработка может быть заранее выполнена за линейное время; см. упражнение 16 и следующие за ним. Теперь мы можем проанализировать время работы алгоритма Graph Scanning. Утверждение 2.17. При подходящей реализации время работы алгоритма Graph Scanning составляет 0[т). Связные компоненты неориентированного графа могут быть найдены за линейное время. Доказательство. Будем предполагать, что граф G задан списками смежности. Представим множество Q простым списком, тогда шаг (2) будет занимать константное время. Для каждой вершины х, добавленной в Q, будем помнить указатель current(x), отмечающий текущее ребро списка ребер 5(х) или 5+(х) (данный список является частью входных данных для алгоритма). Изначально current(x) указывает на первый элемент списка. На шаге (3) данный указатель смещается вперед. Когда конец списка достигнут, мы удаляем х из Q и далее никогда х в Q не вставляем. Таким образом, общее время работы пропорционально сумме числа вершин, достижимых из s, и числа ребер, т. е. 0(т).
46 Глава 2. Графы Для того чтобы выделить связные компоненты, запустим данный алгоритм один раз и проверим, справедливо ли равенство R = V(G). Если да, то граф связен. Иначе R образует одну из связных компонент. Запустим теперь алгоритм для произвольной вершины s' е. V(G)\R. Данный процесс будет продолжаться до тех пор, пока все вершины не окажутся просмотрены, т. е. добавлены к R. Как и ранее, ни одно ребро не будет просмотрено дважды, так что время работы останется линейным. ? Интерес представляет порядок, в котором вершины выбираются на шаге (3). Очевидно, про него мало что можно сказать, если не уточнить, как именно происходит выбор вершины и е Q на шаге (2). Часто используются следующие два метода, называемые поиском в глубину (depth-first search, DFS) и поиском в ширину (breadth-first search, BFS). В алгоритме DFS в качестве и е Q берется вершина, которая была добавлена в Q последней. Иными словами, Q реализовано в виде LIFO-стека (last-in-first-out). В алгоритме BFS в качестве v е Q выбирается вершина, которая была добавлена в Q первой. В этом случае Q реализуется с помощью FIFO-очереди (first-in-first-out). Алгоритм, подобный DFS, был описан еще до 1900 г. в работе Тремо и Тарри; см. работу Кёнига [21]. Одно из первых упоминаний алгоритма BFS, видимо, можно найти в работе Мура [25]. Деревья (R, Г), которые строят алгоритмы DFS и BFS, называются DFS-деревом и BFS-деревом соответственно. Для BFS-дерева справедливо следующее важное свойство. Утверждение 2.18. BFS-дерево содержит кратчайшие пути от s до всякой вершины, достижимой из s. Значения distG(s, и) для всех вершин v € V(G) могут быть вычислены за линейное время. Доказательство. Применим алгоритм BFS к паре (G, s) с двумя изменениями: изначально (на шаге ф) положим Z(s) := 0, а на шаге 0 выполним присваивание l{w) := l{v) + 1. Тогда, очевидно, 1{у) = dist(RT)(s, и) для всех i/eRb любой момент времени работы алгоритма. Более того, если v — текущая обрабатываемая вершина (выбранная на шаге (2)), то к текущему моменту в графе нет вершины weR, для которой l{w) >l(v) +1 (поскольку вершины обрабатываются в порядке неуменьшения I-значений). Предположим, что после завершения работы алгоритма найдется вершина w € V(G), для которой distG(s, w) < dist(RT)(s, w). Среди всех таких вершин w выберем ту, для которой расстояние от s в графе G минимально. Пусть Р — кратчайший s-w-путь в G, и пусть е = (v, w) или е = {и, w} — последнее ребро пути Р. Тогда distG(s, и) = dist(RT)(s, и), но е не принадлежит Г. Более того, l{w) = dist(RT)(s, w) > distG(s, w) = distG(s, v) + 1 = dist(RT)(s, v) + 1 = l(v) + 1. Данное неравенство совместно с предыдущим наблюдением показывает, что вершина w не была элементом множества R в тот момент, когда вершина v удалялась из Q. Но это противоречит шагу (3) и наличию ребра е. ? Данный результат также следует из корректности алгоритма Дейкстры для задачи о кратчайших путях, который может рассматриваться как обобщение ал-
§2.3. Связность 47 горитма BFS на случай, когда ребрам графа приписаны неотрицательные длины (см. §7.1). Покажем теперь, как выделить в орграфе сильно связные компоненты. Конечно, данная задача может быть легко решена путем запуска п раз алгоритма DFS (или BFS). Однако существует способ найти сильно связные компоненты, просмотрев каждое ребро лишь дважды. Strongly Connected Components (алгоритм поиска сильно связных компонент) Вход: орграф G. Выход: отображение comp: V(G) —> N, указывающее для каждой вершины номер содержащей ее сильно связной компоненты. (Т) Положить R := 0. Положить N := 0. (2) For all и е V(G) do: If v ф R then вызвать Visitl(u). (3) Положить R := 0. Положить К := 0. 0 For i := |V(G)| down to 1 do: If г/>_1(0 ^ R then присвоить К := К + 1 и вызвать Visit2(i/j-1(i)). Visitl(y) ® Положить R := R U {и}. (2) For all w: (у, w) е ?(G) do: If w ? R then вызвать Visitl(w). (3) Присвоить N := N + 1, ip(v) := N и ip^W) := v. Visit2(y) ® Положить R := R U {i/}. (2) For all w: (w, i/) G E(G) do: If w ? R then вызвать Visit2(w). (3) Положить сотр(у) := К. На рис. 2.3 приведен пример работы данного алгоритма. Первый DFS-обход перечислит вершины в порядке a, g, b, d, е, / и построит дерево, показанное на средней части рисунка; числа рядом с вершинами представляют собой их г/ьзначения. Вершина с — единственная не достижимая из а; она получает наибольшее значение i/j(c) = 7. Второй DFS-обход начинается с вершины с, но не может достичь ни одной другой вершины, поскольку идет по ребрам в обратную сторону. Далее просматривается вершина а (поскольку гр^а) = 6). Теперь достижимыми оказываются вершины b, g и /. Наконец алгоритм просматривает d,
48 Глава 2. Графы и достижимой оказывается вершина е. Сильно связными компонентами будут {с}, {a,b,/,g}n{d,e}. Итак, первый DFS-обход строит некоторую нумерацию вершин графа. Во время второго DFS-обхода рассматривается обращенный граф, а вершины обрабатываются в порядке уменьшения номеров, назначенных первым обходом. Каждая связная компонента DFS-леса, построенного на втором обходе, представляет собой антидерево (anti-arborescence), т. е. граф, получающийся из ориентированного дерева обращением всех ребер. Покажем, что эти антидеревья задают сильно связные компоненты графа. Теорема 2.19. Алгоритм Strongly Connected Components корректно строит сильно связные компоненты, и время его работы линейно. Доказательство. Время работы, очевидно, составляет 0(п + т). Вершины из одной сильно связной компоненты всегда попадут в одну компоненту любого DFS-леса, так что у них будут одинаковые comp-значения. Требуется доказать, что любая пара вершин и и v, для которой comp(u) = comp(i>), действительно принадлежит одной сильно связной компоненте. Пусть г(и) и r(v) — вершины, достижимые из и и и соответственно и имеющие наибольшее ^-значение. Имеем comp(u) = сотр(у), т.е. иии лежат в одном и том же антидереве DFS-леса, построенного на втором этапе. Поэтому г := г(ц) = г{у) представляет собой корень данного антидерева. Таким образом, вершина г достижима из и и v. Поскольку вершина г достижима из и и гр(г) > ^(и), вершина г не могла быть добавлена к R после и во время первого DFS-обхода. Тем самым первый DFS- лес содержит r-u-путь. Иными словами, вершина и достижима из г. Аналогично вершина и достижима из г. Итак, вершина и достижима из и и наоборот, так что иии действительно лежат в одной сильно связной компоненте. ? Данный алгоритм интересен также тем, что он заодно решает и другую задачу: по заданному ациклическому графу найти его топологический порядок. Заметим, что стягивание сильно связных компонент любого орграфа приводит к ациклическому орграфу. Согласно утверждению 2.9 для полученного ациклического орграфа существует топологический порядок. В действительности этот
§2.3. Связность 49 порядок задается значениями comp(i;), которые вычисляет алгоритм Strongly Connected Components. Теорема 2.20. Алгоритм Strongly Connected Components находит топологический порядок графа, получаемого из исходного графа G стягиванием всех сильно связных компонент. В частности, для любого орграфа можно построить его топологический порядок или установить его отсутствие за линейное время. Доказательство. Пусть X и У—две сильно связные компоненты орграфа G. Предположим, что рассматриваемый алгоритм присвоил значения comp(jc) = кг для всех х е X и сотр(у) = к2 для всех у е У, причем кг < fc2. Докажем, что тогда Е+(У,Х) = 0. Предположим, что существует ребро (у, х) е Е (G), для которого уеУихеХ. Все вершины из X были добавлены в R во время второго DFS-обхода до первой вершины из У. В частности, в момент просмотра ребра (у, х) на втором DFS- обходе выполнялись свойства х е R и у ? R. Тогда вершина у была добавлена кЯдо того, как значение К было увеличено, что противоречит неравенству сотр(у) ф сотр(х). Итак, comp-значения, вычисленные алгоритмом, задают топологический порядок для орграфа, получающегося из исходного стягиванием сильно связных компонент. Второе утверждение теоремы теперь следует из утверждения 2.9, а также из того наблюдения, что орграф ациклический, если и только если все его сильно связные компоненты состоят из отдельных вершин. ? Линейный алгоритм выделения сильно связных компонент был впервые предложен Карзановым [18] и Тарджаном [30]. Задача нахождения топологического порядка (либо установления факта его отсутствия) была решена ранее (см. работу Кана [17] и книгу Кнута [19]). Как BFS, так и DFS встречаются как вспомогательные процедуры во многих комбинаторных алгоритмах. Некоторые примеры таких алгоритмов будут приведены в последующих главах. Иногда нас будет интересовать связность более высокого порядка. Пусть к > 2. Неориентированный граф, содержащий более fc вершин и остающийся связным даже после удаления любых fc — 1 вершин, называется к-связным. Граф, содержащий не менее двух вершин, называется к-реберно связным., если он остается связным после удаления любых fc — 1 ребер. В частности, связный граф, содержащий не менее трех вершин, является 2-связным (2-реберно связным), если и только если он не содержит точек сочленения (соответственно мостов). Максимальные значения fc и I, для которых граф G является fc-связным или Z-реберно связным, называются вершинной связностью и реберной связностью графа G соответственно. При этом граф называется 1-связным (или, что эквивалентно, 1-реберно связным), если он связен. Несвязный граф имеет нулевые вершинную и реберную связности. Блоками неориентированного графа называют максимальные по включению связные подграфы без точек сочленения. Каждый блок либо представляет собой максимальный 2-связный подграф, либо состоит из моста, либо состоит из изолированной вершины. Два блока могут пересекаться не более чем по одной
50 Глава 2. Графы вершине, а вершина, принадлежащая более чем одному блоку, служит точкой сочленения. Блоки неориентированного графа могут быть найдены за линейное время аналогично тому, как работает алгоритм поиска сильно связных компонент; см. упражнение 20. Сейчас мы докажем полезную теорему о структуре 2-связных графов. Будем строить граф последовательно, начиная с единственной вершины и добавляя на каждом шаге по «уху». Определение 2.21. Пусть G— граф (ориентированный или нет). Ушная декомпозиция (ear decomposition) графа G представляет собой такую последовательность г, Ръ..., Рк, где G = ({г}, 0) + ?! + ... + Рк, что каждый Pt —либо путь, в котором концы и только они принадлежат {r}uV(P1)u...U V^P^), либо цикл, в котором ровно одна вершина лежит в {г} и У(Рг) и... U V(Pi_i) (i е {1,..., к}). Элементы (пути и циклы) Ръ...,Рк называются ушами (ear). Если fc > 1, Рг представляет собой цикл длины не менее 3, а Р2,..., Рк — пути, то ушная декомпозиция называется собственной. Теорема 2.22 (Уитни [35]). Неориентированный граф является 2-связным, если и только если для него существует собственная ушная декомпозиция. Доказательство. Очевидно, что цикл длины не менее 3 является 2-связным. Более того, если граф G является 2-связным, то таковым будет и граф G + Р, где Р представляет собой х-у-путь, х,у е V(G) и х ф у. Действительно, удаление любой вершины не нарушает связности. Итак, всякий граф, для которого существует собственная ушная декомпозиция, является 2-связным. Покажем обратное. Пусть G — 2-связный граф. Пусть G' — минимальный простой подграф графа G; очевидно, G/ также 2-связен. Поскольку граф G' не может быть деревом, он содержит цикл. Поскольку граф G' простой, он (а значит, и G) содержит цикл длины не менее 3. Обозначим через Я максимальный подграф графа G, для которого существует собственная ушная декомпозиция; существование Я было установлено выше. Предположим, что подграф Я не является остовным. Поскольку граф G связен, найдется такое ребро е = {х, у} е Е(G), что х е V(H) и у ф V{H). Пусть z — вершина в V(H)\{x}. Поскольку граф G—х связен, существует путь Р из у в z в графе G—х. Обозначим через %' первую вершину этого пути (если идти по нему от у), которая принадлежит У(Я). Тогда путь Р[У)2'] + е может быть добавлен в качестве уха, что противоречит максимальности Я. Следовательно, подграф Я остовный. Каждое ребро из E(G)\E(H) может быть добавлено в качестве уха, поэтому Н = G. ? Аналогичная характеризация 2-реберно связных неориентированных и сильно связных ориентированных графов приводится в упражнении 21. § 2.4. Эйлеровы и двудольные графы В одной из своих работ Эйлер рассмотрел вопрос о построении маршрута, проходящего по каждому из семи мостов Кенигсберга ровно по одному разу. Данная
§ 2.4. Эйлеровы и двудольные графы 51 задача послужила отправной точкой создания теории графов. Эйлер показал, что исходная задача не имеет решения. Для этого он рассмотрел соответствующий граф и свел задачу к поиску маршрута, проходящего по всем ребрам ровно один раз. В графе оказалось более одной вершины нечетной степени, откуда следовала неразрешимость задачи. Определение 2.23. Эйлеров обход графа G представляет собой замкнутый маршрут, содержащий все ребра. Неориентированный граф G называется эйлеровым, если степени всех его вершин четные. Орграф G называется эйлеровым, если |5"(i;)| = \5+(v)\ для всех v е V(G). Несмотря на то что Эйлер не доказал достаточность и, более того, не сформулировал вышеуказанные свойства явно, следующий результат обычно приписывают ему. Теорема 2.24 (Эйлер [13], Хирхольцер [15]). Связный {ориентированный или неориентированный) граф содержит эйлеров обход, если и только если он является эйлеровым. Доказательство. Необходимость условий на степени вершин очевидна. Действительно, вершина, встречающаяся на эйлеровом маршруте к раз (или fc +1 раз, если она одновременно является первой и последней вершиной), должна иметь входящую степень к и выходящую степень fc (в ориентированном случае) или степень 2fc (в неориентированном случае). Для доказательства достаточности рассмотрим длиннейший (по числу ребер) маршрут W = vl9 еъ и2,..., vk, ек, ик+1. В частности, он должен содержать все ребра, выходящие из ик+1, а значит, vk+1 = иг по условию и свойствам степеней. Следовательно, маршрут W замкнут. Предположим, что W содержит не все ребра. Поскольку граф G связен, найдется ребро е € Е (G), которое не принадлежит W, но хотя бы один из его концов, скажем vi9 встречается в W. Тогда ребро е может быть объединено с маршрутом vi3 е{, vi+1,..., ек, vk+1 = иъ еъ v2,..., е{_ъ vt, и полученный маршрут будет длиннее, чем W. П Рассматриваемый алгоритм принимает на вход только связные эйлеровы графы. Заметим, что проверить граф на связность (см. теорему 2.17) и эйле- ровость (очевидно) можно за линейное время. Алгоритм выбирает начальную вершину, а затем вызывает некоторую вспомогательную рекурсивную процедуру. Опишем данную процедуру сначала для неориентированных графов. Euler's Algorithm (алгоритм Эйлера) Вход: неориентированный связный эйлеров граф G. Выход: эйлеров обход W в G. (Т) Выбрать иг € V(G) произвольным образом. Return W := Euler(G, v{).
52 Глава 2. Графы Euler(G, i^) (5) Положить W := иг и х := z^. (2) If 5(х) = 0 then goto 0 else пусть е € 5(jc), скажем е = {*, у}. (3) Положить W := W, е, у и х := у. Положить E(G) := E(G) \{е}. Goto ®. (4) Пусть i^, еъ v2, е2,..., i^, е&» t^+i — последовательность W. For i := 2 to к do: Положить WJ := Euler(G, vt). (5) Положить W := vl9 еъ W2, e2,..., Wfc, efc, i>fc+1. Return W. Для орграфов шаг (2) нужно изменить следующим образом: (2) If 5+(х) = 0 then goto 0 else пусть е е 5+(х), скажем е = (х, у). Мы можем проанализировать обе версии (неориентированную и ориентированную) одновременно. Теорема 2.25. Алгоритм Эйлера работает корректно. Время его работы составляет 0(т + п), где п = \V(G)\ ит = |E(G)|. Доказательство. Покажем, что если граф G эйлеров и и € V(G), то вызов алгоритма Euler(G, и) строит эйлеров обход связной компоненты Ga графа G, содержащей иг. Для доказательства воспользуемся индукцией по |E(G)|. Случай ? (G) = 0 тривиален. Учитывая условия на степени, получаем, что в момент выполнения шага @ справедливо равенство vk+1 =х = иг. Следовательно, в этот момент W представляет собой замкнутый маршрут. Пусть G' обозначает граф G в данный момент. Очевидно, граф G/ также эйлеров. Для каждого ребра е е Е(G^ П E(G') существует наименьшее такое значение i е {2,..., к}, что е лежит в той же компоненте связности графа G', что и vt (заметим, что вершина иг = vk+1 является изолированной в G'). Тогда по индуктивному предположению е принадлежит Wt. Итак, замкнутый маршрут W, определенный на шаге (5), действительно является эйлеровым обходом графа Gx. Время работы алгоритма линейно, поскольку каждое ребро удаляется сразу же после просмотра. ? Мы будем неоднократно использовать алгоритм Эйлера как вспомогательную процедуру в последующих главах. Иногда интерес представляет вопрос о том, как сделать заданный граф эйлеровым путем добавления или стягивания ребер. Пусть G — неориентированный граф, и пусть F — семейство неупорядоченных пар вершин графа V(G) (не обязательно ребер). Семейство F называется нечетным соединением (odd join), если граф (V(G),E(G) UF) эйлеров. Семейство F называется нечетным покрытием (odd cover), если граф, получающийся из G путем стягивания множеств вершин
§ 2.4. Эйлеровы и двудольные графы 53 всех связных компонент (V(G),F), эйлеров. Оба понятия эквивалентны в следующем смысле. Теорема 2.26 (Аосима и Ири [7]). Для любого неориентированного графа справедливы следующие утверждения. 1. Всякое нечетное соединение является нечетным покрытием. 2. Всякое минимальное нечетное покрытие является нечетным соединением. Доказательство. Пусть G — неориентированный граф. 1. Рассмотрим произвольное нечетное соединение F. Построим граф G', стянув связные компоненты графа (V(G),F) в G. Каждая из этих компонент содержит четное число вершин нечетной степени (относительно F, а значит, поскольку F является нечетным соединением, и относительно G). Итак, степени всех вершин полученного графа четные, а значит, F — нечетное покрытие. 2. Рассмотрим минимальное нечетное покрытие F. Учитывая минимальность, заключаем, что (V(G),F) представляет собой лес. Покажем, что условие |5F(i/)| = |5G(y)| (mod 2) выполняется для всех и е V(G). Выберем произвольную вершину и е V(G). Обозначим через Сг, ..., Ск связные компоненты графа (V(G), F) — v, содержащие такую вершину w, что {v, w] е F. Поскольку множество F образует лес, получаем, что k = \5F(y)\. Поскольку F служит нечетным покрытием, стягивание множества X:=V(C1)U...UV(Ck)u{v] в G порождает вершину четной степени, т. е. |5G(X)| четно. С другой стороны, из минимальности F следует, что F\{{i>, ш}} не является нечетным покрытием (для любой такой вершины w, что {и, w} е F). Значит, |5G(V(Q))| нечетно для всех i = 1,..., к. Поскольку к 2|5G(V(Q))| = |5G(X)| + |5G(l;)|-2|?G({y},y(G)\X)| + 2 J] \EG(.Ct,Cj)\, i=l Ki<j<k мы заключаем, что четность к совпадает с четностью |5G(i^)|. ? Мы еще вернемся к задаче превращения графа в эйлеров в § 12.2. Двудольное разбиение неориентированного графа G — это такое разбиение множества вершин V(G) =АиВ, что подграфы, индуцированные множествами А и В, пусты. Граф называется двудольным, если он имеет двудольное разбиение. Простой двудольный граф G, удовлетворяющий условиям V(G) = A U В, \А\ = п, \В\ = т и E(G) = {{а,Ь}: а е Л, Ъ € В}, обозначается через Knm (и называется полным двудольным графом). Для двудольного графа G запись G = (Л U В, E(G)) означает, что подграфы G[A] и G[B] пусты. Утверждение 2.27 (Кёниг [20]). Неориентированный граф является двудольным, если и только если он не содержит нечетных циклов (т. е. циклов нечетной длины). Существует линейный алгоритм, который по заданному неориентированному графу G находит либо двудольное разбиение, либо нечетный цикл.
54 Глава 2. Графы Доказательство. Предположим, что граф G допускает двудольное разбиение V(G) = AL)В, а замкнутый маршрут ul9еъ v2,..., vk,ек, vk+1 задает цикл в G. Без ограничения общности можно считать, что иг е А. Но тогда и2 ? В, v3 е А, и т. д. Заключаем, что ц е Л, если и только если i нечетно. Но ик+1 = иг е А, так что fc должно быть четным. При доказательстве достаточности мы можем предполагать, что граф G связен, поскольку граф является двудольным, если и только если каждая его компонента двудольна (а связные компоненты могут быть выделены за линейное время, см. утверждение 2.17). Выберем произвольную вершину s eV(G) и применим алгоритм BFS к (G,s), чтобы вычислить расстояния от 5 до v для всех v € V(G) (см. утверждение 2.18). Пусть Г — полученное в результате BFS- дерево. Положим А := {и е V(G): distG(s, и) четно} и В := V(G) \ А. Если в G[A] или в G[B] найдется ребро е = {х, у], то х-у-путь в Т совместно с этим ребром е образуют нечетный цикл в G. Если же таких ребер нет, то мы получаем двудольное разбиение. ? §2.5. Планарность Графы часто изображают на плоскости. Граф называется планарным, если он может быть нарисован на плоскости так, чтобы никакие два его ребра не пересекались. Для формализации этого определения нам потребуются дополнительные топологические понятия. Определение 2.28. Простая жорданова кривая представляет собой образ непрерывной инъективной функции у: [0,1] —»R2; ее концы — это точки (/?(0) и </>(1). Замкнутая жорданова кривая — это образ непрерывной функции у: [0,1] —> R2, для которой (/?(0) = </?(1) и у?(т) Ф у(т7) при 0 < т < т7 < 1. Ломаной называется простая жорданова кривая, представляющая собой объединение конечного множества отрезков. Многоугольник — это замкнутая жорданова кривая, являющаяся объединением конечного числа отрезков. Пусть R = R2\ J, где J — объединение конечного множества отрезков. Определим связную область в R как класс эквивалентности относительно отношения, при котором две точки в R эквивалентны, если они могут быть соединены ломаной, лежащей внутри Я. Определение 2.29. Для того чтобы задать планарное вложение (planar embedding) графа G, нужно указать инъективное отображение гр: V(G) -* R2, а также выбрать для каждого ребра е = {х, у] € E(G) ломаную Je с концами гр^х) И1р(у). При этом должно соблюдаться условие {Je\mx),xP{y)})n({xP{v):veV{G)}u (J J«/)=0. V e'€E(G)\{e} J Граф называется планарным, если у него есть планарное вложение. Пусть G — планарный граф с некоторым фиксированным планарным вложением Ф = (гр, (Je)eeE(G))- Удалим из плоскости точки, отвечающие вершинам,
§2.5. Планарность 55 а также ломаные, отвечающие ребрам. Оставшееся множество R:=R2\(mv):veV(G)}u\Jje) разбивается на открытые связные подмножества, которые называются гранями вложения Ф. Например, граф Кл, очевидно, планарный, однако граф К5 таковым не является. Упражнение 28 показывает, что ограничение образов ребер только отрезками (вместо произвольных жордановых кривых) не имеет существенного значения. Далее мы покажем, что для простых графов достаточно рассматривать только отрезки прямых. Наша цель — охарактеризовать семейство планарных графов. Следуя работе Томассена [32], сначала докажем следующий топологический факт, представляющий собой вариант теоремы о жордановых кривых. Теорема 2.30. Пусть J—многоугольник. Тогда множество R2\J разбивается ровно на две связные области, границей каждой из которых является J. Если J — ломаная, то R2\ J состоит ровно из одной связной области. Доказательство. Пусть J — прямоугольник, р € R2\ J и q е J. Тогда существует ломаная в (R2\J) U {q}, соединяющая р и q: она начинается в точке р, идет по прямой по направлению к q, пока не подойдет достаточно близко к J, далее проходит в малой окрестности множества J. (Мы использовали простой топологический факт, состоящий в том, что расстояние между несвязными компактными множествами, в частности несвязными отрезками J, строго больше нуля.) Отсюда следует, что р лежит в той же области R2\J, что и некоторые точки, достаточно близкие к q. Множество J является объединением конечного числа отрезков. Точка q при этом лежит на одном или двух из них. Пусть число е > 0 таково, что круг с центром в точке q и радиусом е не пересекает других отрезков множества J; тогда, очевидно, этот круг пересекает не более двух областей. Так как р € R2 \ J и q € J были выбраны произвольно, исходный многоугольник делит плоскость не более чем на две области, и каждая из них имеет J в качестве границы. Поскольку вышенаписанное имеет место и в случае, если J—ломаная, a q — ее конец, множество R2\ J состоит ровно из одной области. Вернемся к случаю, когда J представляет собой многоугольник. Нам осталось доказать, что множество R2\ J содержит более одной области. Для любой точки р е R2\J и любого угла а рассмотрим луч la, начинающийся в точке р и идущий под углом а. Множество Jnla представляет собой объединение точек и замкнутых отрезков. Эти точки и отрезки будем называть компонентами. Пусть сг(р, 1а) обозначает количество таких компонент J П 1а, что при движении вдоль J и прохождении через них мы входим и выходим по разные стороны от 1а (т. е. количество «пересечений» J и 1а; например, на рис. 2.4 имеем cr(p,ZJ = 2).
56 Глава 2. Графы Рис. 2.4 Заметим, что для любого угла а значения I lim сг(р, 1а_€)-сг(р, 1а)\ и I lim сг(р, 1а+€)-сг(р, 1а)I 'е->0, е>0 ' 'е->0,е>0 ' представляют собой четные числа: оба они равны удвоенному числу таких «компонент» пересечения J Г\1а (точек и отрезков), в которые J входит и выходит по одну сторону относительно прямой 1а. Тогда g{p, а) := (cr(p, la) mod 2) представляет собой непрерывную функцию от а. Следовательно, данная функция является константой. Обозначим эту константу через g(p). Очевидно, значения g(p) одинаковы для точек р на любой прямой, не пересекающей J, поэтому g(p) является константой на каждой области. При этом g(p) ф g(q) для всех таких точек р, q, что отрезок, соединяющий р и q, пересекает J ровно один раз. Отсюда следует, что плоскость разбита не менее чем на две области. D Ровно одна из вышеуказанных граней, так называемая внешняя грань, является неограниченной. Утверждение 2.31. Пусть G — 2-связный граф с планарным вложением Ф. Тогда каждая его грань ограничена циклом и каждое ребро лежит на границе ровно двух граней. Более того, число граней равно \E(G)\ — \V(G)\ + 2. Доказательство. Из теоремы 2.30 следует, что оба утверждения верны, если G является циклом. В общем случае 2-связного графа применим индукцию по количеству ребер, используя теорему 2.22. Рассмотрим собственную ушную декомпозицию графа G, и пусть Р — последнее ухо, представляющее собой путь с концами х и у. Пусть G' — граф до добавления последнего уха, и пусть Ф' — ограничение Ф на G7. Пусть Ф = (я/>, (t/e)eGE(G)). Пусть ?' — грань вложения Ф', содержащая \j je\mx),ip(y)i ееЕ(Р) По индуктивному предположению грань F' ограничена циклом С. Цикл С содержит вершины х иу, поэтому С представляет собой объединение двух х-у-путей Qx, Q2 в G'. Применим теорему 2.30 для каждого из циклов Qx + Р и Q2 + Р.
§2.5. Планарность 57 Получим F/U{xP(x),^y)}=F1UF2(j[jJe, ееЕ(Р) где Рх и F2 —две грани графа G, ограниченные Qa + Р и Q2 + Р соответственно. Следовательно, граф G имеет на одну грань больше, чем G'. С учетом равенства |E(G) \E(G0I = |V(G) \ V(G7)| + 1 индуктивный переход завершен. ? Представленное доказательство принадлежит Татту. Из него также легко следует, что циклы, ограничивающие конечные грани, образуют базис циклов (упражнение 29). Последняя часть утверждения 2.31 известна как формула Эйлера; она справедлива для всех связных графов. Теорема 2.32 (Эйлер [14], Лежандр [23]). Для всякого связного графа G с произвольным планарным вложением количество граней равно \E(G)\ — |V(G)| + 2. Доказательство. Мы только что доказали это утверждение для 2-связных графов (утверждение 2.31). Более того, оно тривиально, если |V(G)| = 1, и следует из теоремы 2.30, если \E(G)\ = 1. Если \V(G)\ = 2 и \E(G)\ > 2, то мы можем разбить одно ребро е, тем самым увеличив количество вершин и количество ребер на единицу и сделав граф 2-связным, а затем применить утверждение 2.31. Итак, можно считать, что G имеет точку сочленения х. Воспользуемся индукцией по числу вершин. Пусть Ф — вложение графа G. Пусть Сг,...,Ск — связные компоненты графа G—x, и пусть Ф; — ограничение Ф на Gt := G\V[C{) U {х}] при i = l,...Д. Множество внутренних (ограниченных) граней вложения Ф представляет собой непересекающееся объединение множеств внутренних граней вложений Ф?, i = 1,..., к. Применяя предположение индукции к (G;, Ф^), i = 1,..., к, получаем, что общее количество внутренних граней для (G, Ф) равно к к ?(1ВД)1 - |V(G?)| + 1) = \E(G)\ -? №)\{х}| = \E(G)\ - |V(G)| + 1. i=l i=l Если учесть также и внешнюю грань, то получим требуемый результат. ? В частности, количество граней не зависит от конкретного вложения. Средняя степень простого планарного графа меньше 6. Следствие 2.33. Пусть G — 2-связный простой планарный граф, кратчайший цикл которого имеет длину к. (Число к также называется обхватом (girth) графа G.) Тогда G имеет не более чем (п —2)7—9 Ре^еР- Любой простой планарный граф, содержащий п>3 вершин, имеет не более Зп — 6ребер. Доказательство. Сначала предположим, что G — 2-связный граф. Пусть дано некоторое вложение Ф графа G, и пусть г — число граней. По формуле Эйлера (теорема 2.32) г = |?(G)| — \V(G)\ + 2. Из утверждения 2.31 следует, что каждая грань ограничена циклом, т. е. хотя бы к ребрами, и каждое ребро лежит на границе ровно двух граней. Поэтому кг < 2|E(G)|. Объединяя эти два результата, получаем \E(G)\-\V(G)\ + 2 < ||E(G)|, следовательно, \E(G)\ < (п-2)^^.
58 Глава 2. Графы Если граф G не является 2-связным, то добавим ребра между несмежными вершинами и сделаем его 2-связным, сохранив при этом планарность. Из первой части доказательства следует, что в графе не более чем (п — 2) -^—г ребер, включая добавленные. ? Сейчас мы покажем, что некоторые конкретные графы не являются планар- ными. Следствие 2.34. Графы К5 и К33 не являются планарными. Доказательство. Это непосредственно вытекает из следствия 2.33: граф К5 имеет 5 вершин, но 10 > 3 • 5 — 6 ребер; граф К33 является 2-связным, имеет обхват 4 (поскольку он двудольный) и 9 > (6 — 2) j—5 ребер. ? Рис. 2.5 Данные графы, изображенные на рис. 2.5, являются минимальными непла- нарными графами. Докажем, что в некотором смысле каждый непланарный граф содержит К5 или К33. Чтобы уточнить формулировку, нам понадобится следующее определение. Определение 2.35. Пусть G и Я—два неориентированных графа. Граф G является минором графа Я, если существуют такой подграф Я' графа Я и такое подразбиение У(Я') = Vi U... U Vk его множества вершин на связные подмножества, что при стягивании всех вершин Уъ..., Vk получается граф, изоморфный G. Другими словами, граф G — минор графа Я, если он может быть получен из Я последовательностью операций следующих типов: удалить вершину, удалить ребро или стянуть ребро. Поскольку ни одна из этих операций не нарушает планарность, любой минор планарного графа также планарен. Поэтому граф, имеющий минор К5 или К33, не может быть планарным. Теорема Куратовского утверждает, что обратное также верно. Рассмотрим вначале 3-связные графы и докажем следующую лемму (которая играет важную роль в так называемой теореме Татта о колесе). Лемма 2.36 (Татт [33], Томассен [31]). Пусть G — 3-связный граф, имеющий не менее пяти вершин. Тогда существует такое ребро е, что граф G/e также является 3-связным.
§2.5. Планарность 59 Доказательство. Пусть такого ребра нет. Тогда для каждого ребра е = {v, w] найдется такая вершина х, что граф G — {v, w, х) несвязен, т. е. содержит компоненту связности С, для которой \V{C)\ < |V(G)| — 3. Выберем е, х и С так, чтобы значение |V(C)| было минимальным. Вершина х имеет соседа у в С, поскольку в противном случае С была бы компонентой связности в G—{v, w] (но G — 3-связный граф). По нашему предположению граф G/{x, у} не является 3-связным, т. е. существует такая вершина z, что граф G — {х, у, z) несвязен. Поскольку {и, w} е. E(G), существует компонента связности D в G — {х, у, z}, которая не содержит ни и, ни ш. Однако компонента D содержит соседа d вершины у, поскольку иначе D была бы компонентой связности графа G — {x,z} (а это противоречит тому, что граф G является 3-связным). Поэтому d е V(D) П У (С), следовательно, D — подграф графа С. Поскольку у е V(C)\V(D), получаем противоречие с минимальностью |V(C)|. ? Теорема 2.37 (Куратовский [22], Вагнер [34]). Всякий 3-связный граф является планарным, если и только если он не содержит графов К5 и К33 в качестве миноров. Доказательство. Так как необходимость очевидна (см. выше), докажем достаточность. Поскольку граф Кл, очевидно, планарный, докажем утверждение индукцией по количеству вершин. Пусть G — 3-связный граф, содержащий более пяти вершин и не имеющий миноров К5 и К33. По лемме 2.36 существует такое ребро е = {и, w}, что граф G/e является 3-связным. Пусть Ф = (i/j, C/gOe'eECG/e)) —планарное вложение графа G/e, существующее по предположению индукции. Пусть х — вершина в G/e, образующаяся при стягивании е. Рассмотрим граф (G/e) — х и возьмем в качестве его планарного вложения ограничение Ф. Поскольку граф (G/e) —х является 2-связ- ным, каждая грань ограничена циклом (утверждение 2.31). В частности, грань, содержащая точку гр(х), ограничена циклом С. Пусть уъ..., yk G У (С) — соседи вершины и, отличные от w и пронумерованные в циклическом порядке. Разобьем тогда С на такие непересекающиеся по ребрам пути Рь i = 1,..., к, что Pt является yi-yi+i-путем (yfc+1 := уг). Допустим, существует такой индекс i е {1,..., к}, что Г(ш) с {v} и V(Pf). Тогда планарное вложение графа G может быть легко получено модификацией Ф. Докажем, что другие случаи невозможны. Во-первых, если w имеет трех соседей среди уъ ..., ук, то в графе есть минор К5 (см. рис. 2.6(a)). Далее, если Г(ш) = {и, уь у-} для некоторых i < j, то i + 1 < ; и (i,;) Ф (1, fc) (иначе обе вершины у- и у- лежали бы в Р{ или J*); см. рис. 2.6(6). В противном случае найдется сосед z вершины w в V(Pi)\{yi,yi+i) для некоторого i и другой сосед z' ? V(Pj) (рис. 2.6(b)). В обоих случаях существуют четыре вершины у, z, у', z' на цикле С, идущие в указанном порядке и удовлетворяющие условиям у,у' е. Г(у) hz,z'g Г(ш). Отсюда следует, что в графе есть минор К33. ? Из доказательства сразу следует, что всякий 3-связный простой планарный граф имеет планарное вложение, при котором каждое ребро переходит в отре-
60 Глава 2. Графы (а) (б) (в) Рис. 2.6 зок, а каждая грань (за исключением внешней) является выпуклой (упражнение 32(a)). Общий случай теоремы Куратовского может быть сведен к случаю 3-связного графа склеиванием планарных вложений максимальных 3-связных подграфов. Другой вариант состоит в использовании следующей леммы. Лемма 2.38 (Томассен [31]). Пусть G — граф с не менее чем пятью вершинами, который не является 3-связным и не содержит миноров К5 и К33. Тогда найдутся две такие несмежные вершины и, w е V{G), что граф G + е, где е = {и, w} — новое ребро, не содержит миноров К5 и К33. Доказательство. Воспользуемся индукцией по |V(G)|. Пусть граф G такой, как описано выше. Без ограничения общности можно считать, что граф G простой. Если он несвязен, то мы можем просто добавить ребро е, соединяющее две различные компоненты связности. Поэтому далее будем считать, что он связен. Поскольку G не является 3-связным, существует такое множество X = {х, у] из двух вершин, что граф G — X несвязен. (Если граф G даже не 2-связный, то мы можем выбрать точку сочленения х и ее соседа у.) Пусть С — компонента связности графа G — X, G2 := G[V(C) U X] и G2 := G — V(C). Сначала докажем следующее утверждение. Утверждение. Пусть v,w е ViG^) — две такие вершины, что добавление ребра е = {v,w} в G приводит к появлению минора К33 или К5. Тогда хотя бы один из графов G1-\-e-\-fuG2 + f содержит минор К5 или К33, где f — новое ребро, соединяющее х и у. Чтобы доказать это утверждение, рассмотрим вершины v,w е V{G{), являющиеся концами ребра е = {и, w}, и предположим, что существуют такие попарно непересекающиеся связные множества вершин Z1,...,Zt графа G + e, что после стягивания каждого из них остается подграф К5 (t = 5) или К33 (t = 6). Заметим, что невозможна ситуация, при которой Zt сV^GJ \XnZj сV(G2) \Х для некоторых i, j е {1,..., t}. Действительно, в этом случае множество таких Zk, что Zk П X ф 0 (существует не более двух подобных множеств Zk), разделяет Zt и Zj, что противоречит 3-связности графов К5 и К33.
§2.5. Планарность 61 Поэтому возможны два случая. Если ни одно из Zl5..., Zt не является подмножеством множества V(G2) \Х, то Gx + е + / также содержит минор К5 или К33 —достаточно рассмотреть множество Zt П V(GX) (i = 1,..., t). Аналогично если ни одно из Zly..., Zt не является подмножеством множества V(GX) \Х, то G2 + / содержит минор К5 или К33 (рассмотрим подмножества ZinV(G2)wii = l,...,t). Тем самым вспомогательное утверждение доказано. Рассмотрим теперь случай, когда G содержит точку сочленения х, а у— сосед вершины х. Выберем другого соседа z вершины х так, что у и z лежат в различных компонентах связности графа G—x. Без ограничения общности считаем, что z е. V(GX). Предположим, что добавление ребра е = {у, z) создает минор К5 или К33. Из утверждения следует, что хотя бы один из графов Gx + е и G2 содержит минор К5 или К33 (с уже добавленным ребром {х, у}). Но тогда Gx или G2, а значит, и G, содержат минор К5 или К33, что противоречит сделанному предположению. Итак, можно считать, что граф G является 2-связным. Выберем теперь такие вершины х, у е V(G), что граф G — {х, у] несвязен. Если {х, у} ? E(G), то просто добавим ребро / = {х,у}. Если при этом возникнет минор К5 или К33, то из утверждения следует, что Ga + / или G2 + / содержит такой минор. Поскольку в каждом из графов Gb G2 существует дг-у-путь (иначе в графе G была бы точка сочленения), существует минор К5 или К33 в G, что снова приводит нас к противоречию. Теперь можно считать, что / = {х, у} g?(G). Предположим, что хотя бы один из графов G{ (i € {1,2}) не является планарным. Тогда данный граф Gt содержит не менее 5 вершин. Поскольку он не содержит миноров К5 или К33 (они также были бы минорами в G), из теоремы 2.37 следует, что G{ не является 3-связным. Поэтому мы можем применить предположение индукции к Gt. Согласно доказанному утверждению если добавление ребра в Gt не приводит к возникновению миноров К5 и К33 в Gt, то это также не приведет к появлению таких миноров hbG. Следовательно, можно считать, что графы Gx и G2 планарные; пусть Ф: и Ф2 — их планарные вложения. Пусть Ft—такая грань вложения Ф^, что / лежит на границе, и пусть zi —другая вершина на границе грани ?ь zt ? {х, у} (i = 1,2). Утверждается, что добавление ребра {zly z2} (см. рис. 2.7) не приводит к появлению миноров К5 и К33.
62 Глава 2. Графы Предположим противное: добавление {zltz2} и стягивание некоторых попарно непересекающихся связанных множеств вершин Zl9..., Zt приведет к появлению подграфов К5 (t = 5) или К33 (t = 6). Предположим сначала, что не более одного множества Zt является подмножеством множества V^G^) \ {х, у}. Тогда граф G'2, получающийся из G2 добавлением одной вершины w и ребер, идущих из w в вершины х, у и z2, также содержит минор К5 или К33. (Здесь w отвечает стянутому множеству Z{ с V^GJ\{х,у}.) Получаем противоречие, так как существует планарное вложение графа G2: достаточно дополнить Ф2, расположив w внутри F2. Поэтому мы можем считать, что ZlyZ2 с V^G^Xfoy}. Аналогично можно считать, что Z3iZA с V(G2)\{x,y}. Без ограничения общности можно считать, что zx ф Zx и z2 ф Z3. Следовательно, минора К5 быть не может, так как Z1 и Z3 не являются смежными. Более того, единственно возможными общими соседями для Z1 и Z3 являются Z5 и Z6. Поскольку в графе К33 две вершины либо смежны, либо имеют трех общих соседей, случай минора К33 также невозможен. ? Теорема 2.37 и лемма 2.38 приводят к теореме Куратовского. Теорема 2.39 (Куратовский [22], Вагнер [34]). Ненаправленный граф является планарным, если и только если он не содержит К5 и К33 в качестве миноров. ? На самом деле Куратовский доказал более сильное утверждение (см. упражнение 33). Из доказательства достаточно легко получается алгоритм проверки на планарность, имеющий полиномиальное время работы (см. упражнение 32(6)). Существует также алгоритм, время работы которого линейно. Теорема 2.40 (Хопкрофт и Тарджан [16]). Существует алгоритм, имеющий линейное время работы и находящий планарное вложение заданного графа или выясняющий, что граф не является планарным. ? § 2.6. Планерная двойственность В данном параграфе мы введем важное понятие двойственности планарных графов. На протяжении этого параграфа мы допускаем присутствие петель в графах, т. е. ребер с совпадающими концами. При планарном вложении петли, конечно же, представляются замкнутыми многоугольниками вместо ломаных. Отметим, что формула Эйлера (теорема 2.32) справедлива также и для графов с петлями. Этот факт следует из того, что, подразбивая петлю е (т. е. заменяя е = {и, и] на пару параллельных ребер {и, w], {w, v), где w — новая вершина) и корректируя нужным образом вложение (заменяя многоугольник Je двумя ломаными, объединение которых есть Je), мы увеличиваем как число ребер, так и число вершин на единицу, но не меняем число граней. Определение 2.41. Пусть G — ориентированный или неориентированный граф (возможно, содержащий петли), и пусть Ф = bi),{Je)e^E{G))—планарное вложение графа G. Определим планарно двойственный граф G*, вершинами которого будут грани вложения Ф, а множеством ребер — {е*: е е E(G)}, где е*
§ 2.6. Планарная двойственность 63 соединяет грани, инцидентные Je (если Je инцидентно лишь одной грани, то е* будет петлей). В ориентированном случае для ребра е = (v, w) мы ориентируем е* = (Flf F2) таким способом, что грань Fx оказывается «по правую сторону» при прохождении Je от ip(v) к tp(w). Граф G* снова будет планарным. Действительно, очевидно, существует такое планарное вложение (я/j*, (Je*)e*eE(G*)) графа G*, что ip*(F) е F для всех граней F вложения Ф и для каждого ребра е е Е (G) справедливы равенства Je*n({#):yeV(G)}U (J j/)=0 V /GE(G)\{e}7 и | Je* П Je| = 1. При этом если e* представляет собой петлю, то грань, ограниченная Je*, содержит ровно один конец ребра е. Такое вложение называют стандартным вложением для G*. (б) Рис. 2.8 Структура планарно двойственного графа зависит от выбора вложения для исходного графа. Действительно, рассмотрим пару вложений одного и того же графа, показанных на рис. 2.8. Планарно двойственные графы, отвечающие этим вложениям, не изоморфны, поскольку второй граф содержит вершину степени четыре (соответствующую внешней грани), в то время как первый граф 3-регу- лярен. Утверждение 2.42. Для произвольного неориентированного связного планарного графа G с выбранным планарным вложением пусть G* — его планарно двойственный граф со стандартным вложением. Тогда (G*)* = G. Доказательство. Пусть (гр, (Je)ee?(G)) — фиксированное вложение графа G, и пусть (гр*, C/e0e*eE(G*)) — стандартное вложение для графа G*. Рассмотрим грань F графа G*. Граница грани F содержит Je* хотя бы для одного ребра е*, так что F содержит гр{и) для одного из концов и ребра е. Таким образом, каждая грань графа G* содержит хотя бы одну вершину графа G. Применяя формулу Эйлера (теорема 2.32) к G* и к G, получаем, что число граней графа G* равно \E(G*)\ - W(G*)\ + 2 = \E(G)\- (|?(G)| - |V(G)| + 2) + 2 = |V(G)|. Значит, каждая грань графа G* содержит ровно одну вершину графа G. Отсюда мы заключаем, что граф, планарно двойственный к G*, изоморфен G. ?
64 Глава 2. Графы Требование связности графа G существенно: заметим, что граф G* связен всегда, даже если граф G несвязен. Теорема 2.43. Пусть задан связный планарный неориентированный граф G с произвольным вложением. Множество ребер любого цикла в G соответствует минимальному разрезу в G*, а любой минимальный разрез в G соответствует множеству ребер некоторого цикла в G*. Доказательство. Пусть Ф = (хр, (Je)eeE(G)) — фиксированное планарное вложение графа G. Рассмотрим цикл С в G. По теореме 2.30 множество R2 \ |Jee?(C) Je распадается ровно на две связные области. Пусть А и В — множества граней вложения Ф, попадающих во внутреннюю и внешнюю области соответственно. Имеем V(G*) = А и В и EG*(A, В) = {е*: е е Е(С)}. Поскольку множества Аи В связны в G*, множество EG*(A, В) действительно задает минимальный разрез. Обратно, пусть 5G(A) — минимальный разрез в G, а Ф* = 00*, (Je)ee?(G*)) — стандартное вложение графа G*. Пусть также а е А и Ъ е V(G) \ А. Заметим, что область R:=R2\({fM:i;€V(G*)}uU^) V e<=5G(A) J не содержит ломаной, соединяющей 'ф(а) и ^(Ъ)- Действительно, последовательность граней графа G*, проходимых такой ломаной, задавала бы путь от а к Ь в G, не содержащий ребер из 5G(A). Итак, Я состоит по крайней мере из двух связных частей. Тогда, очевидно, граница каждого из них должна содержать цикл. Отсюда следует, что множество F := {е*: е е 5G(A)} содержит множество ребер некоторого цикла С в G*. Имеем {e*:ee?(C)}c{e*:eGF} = 5G(A), и по ранее доказанному множество {е*: е € Е(С)} образует минимальный разрез в (G*)* = G (см. утверждение 2.42). Значит, {е*:ее?(С)} = 5G(A). ? В частности, е* является петлей, если и только если е представляет собой мост, и наоборот. Для ориентированных графов из представленного выше доказательства вытекает следующий результат. Следствие 2.44. Пусть G — связный планарный орграф с некоторым фиксированным планарным вложением. Тогда множество ребер любого цикла в G соответствует минимальному ориентированному разрезу в G* и наоборот. ? Другое интересное следствие теоремы 2.43 таково. Следствие 2.45. Пусть G — связный неориентированный граф с произвольным планарным вложением. Тогда граф G двудольный, если и только если граф G* эйлеров, и наоборот, граф G эйлеров, если и только если граф G* двудольный. Доказательство. Заметим, что связный граф эйлеров, если и только если всякий минимальный разрез имеет четную мощность. По теореме 2.43 граф G двудольный, если граф G* эйлеров, и граф G эйлеров, если граф G* двудольный. Согласно утверждению 2.42 обратное также верно. ?
Упражнения 65 Для заданного графа G абстрактно двойственным называется граф G', для которого существует биекция х°- E(G) —> F(G') со следующим свойством: произвольное подмножество F является множеством ребер цикла, если и только если х (Ю образует минимальный разрез в G', и наоборот. Теорема 2.43 показывает, что любой планарно двойственный граф является также абстрактно двойственным. Обратное неверно. Однако, как показал Уитни [36], граф имеет абстрактно двойственный, если и только если он планарен (упражнение 39). Мы еще вернемся к данному понятию двойственности в § 13.3 при изучении матроидов. Упражнения I. Пусть G— простой неориентированный граф с п вершинами, который изоморфен собственному дополнению. Докажите, что тогда п (mod 4) е {0,1}. 2 (Дирак [11]). Докажите, что всякий простой неориентированный граф G, в котором \5(v)\ > -г\V(G)\ при всех и е V(G), является гамильтоновым. Указание, Рассмотрите длиннейший путь в G и соседей его концов. 3. Докажите, что всякий простой неориентированный граф G, в котором |F(G)| > ('V^G2 ~ *)> является связным. 4. Пусть G — простой неориентированный граф. Покажите, что либо G, либо его дополнение является связным. 5. Докажите, что во всяком простом неориентированном графе, содержащем более одной вершины, найдется пара вершин одинаковой степени. Докажите, что всякое дерево (кроме состоящего из одной вершины) содержит не менее двух листьев. 6. Пусть Т—дерево с к листьями. Покажите, что Г содержит не более fc — 2 вершин степени не меньше 3. 7. Докажите, что всякое дерево Т содержит такую вершину и, что все связные компоненты графа Т—и содержат не более |У(Г)|/2 вершин. Как найти эту вершину за линейное время? 8. Пусть G — связный неориентированный граф, a (V(G),F)—лес в G. Докажите, что найдется такое остовное дерево (V(G), Г), что F с т с E(G). 9. Пусть (V,^) и (V,F2)—такая пара лесов, что |FX| < |F2|. Докажите, что найдется ребро е е F2 \Fl9 для которого (V, Fa и {е}) тоже будет лесом. 10. Пусть {V, F{) и (У,F2) —такая пара ветвлений, что 2|F2| < |F2|. Докажите, что найдется ребро е еF2\Fly для которого граф (У,Fx и {е}) также будет ветвлением. II. Докажите, что любой разрез в неориентированном графе представляется в виде объединения непересекающихся минимальных разрезов. 12. Рассмотрим неориентированный граф G, а также цикл С и разрез D. Покажите, что значение |F(C) HD| четно. 13. Покажите, что всякий неориентированный граф имеет разрез, содержащий по крайней мере половину его ребер.
66 Глава 2. Графы 14. Пусть (U, &) — бескроссинговая система подмножеств, для которой \U\>2. Докажите, что & содержит не более 4\U\ — 4 различных элементов. 15 (Камион [9], Крестен [10]). Пусть G — связный неориентированный граф. Покажите, что существуют такая ориентация G' графа G и такое остовное ориентированное дерево Г в G', что множество фундаментальных циклов относительно Г в точности совпадает с множеством направленных циклов в G'. Указание. Рассмотрите дерево поиска в глубину. 16. Опишите линейный алгоритм для следующей задачи: по заданному представлению графа G в виде списков смежности вычислить аналогичное представление для максимального простого подграфа графа G. При этом не следует предполагать, что параллельные ребра графа G перечислены в выходных списках смежности подряд. 17. Покажите, что существует линейный алгоритм, который по заданному графу G (ориентированному или нет) находит в нем цикл или выясняет, что цикла не существует. 18. Опишите простой линейный алгоритм, находящий топологический порядок в заданном ациклическом графе (при этом использовать алгоритм поиска сильно связных компонент не разрешается). 19. Пусть G — связный неориентированный граф, s е V (G), а Г — DFS-дерево, получающееся в результате запуска алгоритма DFS на паре (G,s). Тогда 5 называется корнем дерева Г. Вершина х служит предком (ancestor) вершины у в Г, если х лежит на (единственном) 5-у-пути в Г. Вершина х является родителем (parent) вершины у, если ребро {х, у} лежит на s-y-пути в Г. Вершина у является сыном (потомком) вершины х, если х служит родителем (предком) вершины у. Отметим, что согласно данному определению каждая вершина является собственным потомком и собственным предком. Каждая вершина, кроме s, имеет ровно одного родителя. Докажите следующие утверждения. (а) Для всякого ребра {и, w} е ?(G) вершина v служит предком или потомком вершины w в Г. (б) Вершина v является точкой сочленения графа G, если и только если выполнено хотя бы одно из двух условий: • v =s и |5T(iO| > 1, # u/sh найдется такой сын w вершины v, что в G нет ребер, соединяющих собственного предка вершины и (т. е. предка, отличного от и) с потомком вершины w. 20*. Используя упражнение 19, разработайте линейный алгоритм для нахождения блоков в неориентированном графе. Дяя решения задачи рекурсивно подсчитайте во время работы алгоритма DFS значения а{х) :=пип{/(ш): ш=хили {w,y}eE(G)\T для некоторого потомка у вершины х}. Здесь (R, Т) — DFS-дерево (с корнем 5), а числа / определяют порядок, в котором вершины добавляются к R (см. алгоритм Graph Scanning). Если для некоторой
Упражнения 67 вершины х е R\{s} справедливо неравенство а(х) > f(w), где w — родитель вершины х, то вершина w должна быть корнем или точкой сочленения. 21 (Роббинс [27]). Докажите следующие утверждения. (а) Неориентированный граф является 2-реберно связным, если и только если он содержит не менее двух вершин и для него существует ушная декомпозиция. (б) Ориентированный граф является сильно связным, если и только если для него существует ушная декомпозиция. (в) Ребра неориентированного графа G, содержащего не менее двух вершин, могут быть ориентированы так, что получившийся орграф будет сильно связным, если и только если граф G является 2-реберно связным. 22. Турниром (tournament) называется орграф, неориентированный образ которого является простым полным графом (т. е. содержит ровно одно ребро между каждой парой различных вершин). Докажите, что в любом турнире есть гамильтонов путь (Редей [26]). Докажите, что в любом сильно связном турнире есть гамильтонов цикл (Камион [8]). 23. Пусть G — неориентированный граф. Докажите, что существует такая ориентация G' графа G, что ||6+,(z;)| — |5~,(i;)|| < 1 для всех и е. V(G'). 24. Докажите, что если связный неориентированный простой граф эйлеров, то его реберный граф гамильтонов. Справедливо ли обратное утверждение? 25. Докажите, что всякий связный двудольный граф допускает единственное двудольное разбиение. Докажите, что любой недвудольный неориентированный граф содержит нечетный цикл в качестве индуцированного подграфа. Докажите, что неориентированный граф G является двудольным, если и только если множество E(G) может быть разбито на разрезы. 26. Докажите, что всякий сильно связный ориентированный граф, неориентированный образ которого не является двудольным, содержит ориентированный цикл нечетной длины. 27*. Пусть G — неориентированный граф. Древесная декомпозиция графа G представляет собой пару (Г, (/?), где Т —дерево, а функция ip: V(T) —> 2V(G) обладает следующими свойствами: • для всех е е E(G) найдется такая вершина teV(T), что е с y(t); • для всех и е V(G) множество {t е У (Г): и е </?(t)} является связным в Т. Шириной древесной декомпозиции (Г, (/?) называется значение max |(/?(0|-1. teV(T) Древесной шириной (treewidth) графа G называется минимум ширины его древесной декомпозиции. Данное понятие было введено Робертсоном и Сеймуром [28]. Покажите, что простые графы с древесной шириной не более 1 — это в точности леса. Более того, покажите, что следующие утверждения эквивалентны (здесь G — неориентированный граф): (а) G имеет древесную ширину не более 2; (б) G не содержит К4 в качестве минора;
68 Глава 2. Графы (в) граф G может быть получен из пустого графа последовательным добавлением мостов, удвоением и подразбиением ребер. (Удвоение ребра е = {и, w} е ? (G) означает, что мы добавляем еще одно ребро с концами v и ш; подразбиение ребра е = {и, w} е. E{G) состоит в добавлении вершины х и замене е на два ребра {и, х}у {х, ш}.) Замечание. Учитывая конструкцию, представленную в п. (в), такие графы называют последовательно-параллельными (series-parallel). 28. Покажите, что если граф G допускает планарное вложение, при котором ребра реализуются с помощью произвольных жордановых кривых, то он также допускает планарное вложение, при котором ребра реализуются ломаными. 29. Пусть G — 2-связный граф, для которого выбрано планарное вложение. Покажите, что множество циклов, ограничивающих его конечные грани, образует базис циклов графа G. 30. Обобщите формулу Эйлера (см. теорему 2.32) на случай несвязных графов. 31. Покажите, что существуют ровно пять Платоновых графов (соответствующих Платоновым телам; см. упражнение 11 в гл.4), т.е. 3-связных планарных регулярных графов, все грани которых ограничены одинаковым числом ребер. Указание. Используйте формулу Эйлера (теорема 2.32). 32. Выведите из доказательства теоремы Куратовского (теорема 2.39) следующие утверждения. (а) Всякий 3-связный простой планарный граф допускает планарное вложение, при котором каждое ребро реализуется в виде отрезка, а каждая грань (кроме внешней) выпукла. (б) Существует полиномиальный алгоритм проверки графа на планарность. 33* (Куратовский [22]). Пусть заданы граф G и ребро е = {и, w} G E(G). Говорят, что граф Н получается из графа G путем подразбиения ребра е, если V(H) = V(G) и {х} и Е(Я) = (E(G)\{e}) U {{v,x}, {х, w}}. Граф, получающийся из G с помощью последовательности подразбиений ребер, называется подразбиением графа G. (а) Очевидно, если Н содержит подразбиение графа G, то G является минором графа Я. Покажите, что обратное неверно. (б) Докажите, что граф, содержащий К33 или К5 в качестве минора, также содержит подразбиение графа К33 или К5. Указание. Изучите, что происходит при стягивании ребра. (в) Выведите, что граф планарный, если и только если он не содержит подграфа, являющегося подразбиением графа К33 или К5. 34. Покажите, что нижеперечисленные утверждения эквивалентны: (а) для каждой бесконечной последовательности графов G1? G2,... есть такая пара индексов i < j, что Gt является минором графа G;-; (б) пусть ^ — класс графов со следующим свойством: для любого G е ^ и всякого минораН графа G справедливо включение Яе^ (иными словами, принадлежность классу ^ является наследственным свойством (hereditary property)); тогда существует такое конечное множество графов 3?, что ^ состоит из всех графов, не содержащих графа из ЭС в качестве минора.
Литература 69 Замечание. Эти утверждения доказаны Робертсоном и Сеймуром [29] и составляют основной результат их серии работ о минорах графов. Теорема 2.39 и упражнение 27 показывают примеры характеризаций классов графов в терминах запрещенных миноров, упомянутых в п. (б). 35. Пусть G — планарный граф с вложением Ф, и пусть С — цикл в G, ограничивающий некоторую грань относительно Ф. Докажите, что тогда существует вложение Ф' графа G, для которого С ограничивает внешнюю грань. 36. (а) Пусть G — несвязный граф с произвольным планарным вложением, a G*—двойственный граф со стандартным вложением. Докажите, что (G*)* получается из G путем последовательного применения следующей операции, до тех пор пока граф не станет связным: разрешается выбрать пару вершин хну, принадлежащих различным компонентам связности и находящихся на одной грани, и стянуть {х,у}. (б) Обобщите следствие 2.45 на случай произвольного планарного графа. Указание. Используйте утверждение (а) и теорему 2.26. 37. Пусть G — связный орграф с фиксированным планарным вложением, a G* —двойственный граф со стандартным вложением. Как связаны между собой графы G и (G*)*? 38. Докажите, что если планарный орграф является ациклическим (сильно связным), то его двойственный орграф сильно связный (ациклический). Верно ли обратное утверждение? 39 (Уитни [36]). (а) Покажите, что если граф G имеет абстрактно двойственный граф и Я — минор графа G, то Я также имеет абстрактно двойственный граф. (б)* Покажите, что ни у К5, ни у К33 нет абстрактно двойственного графа. (в) Выведите, что граф является планарным, если и только если у него есть абстрактно двойственный граф. Литература Общая литература [1] Berge С. Graphs. Second Edition. Elsevier, Amsterdam, 1985. [2] Bollobds B. Modern Graph Theory. Springer, New York, 1998. [3] Bondy J. A. Basic graph theory: paths and circuits // Handbook of Combinatorics; Vol. 1 (R. L. Graham, M. Grotschel, L. Lovasz, eds.), Elsevier, Amsterdam, 1995. [4] Bondy J. A, Murty U. S. R. Graph Theory. Springer, New York, 2008. [5] Diestel R. Graph Theory. Fourth Edition. Springer, New York, 2010. [6] Wilson R. J. Introduction to Graph Theory. Fifth Edition. Addison-Wesley, Reading, 2010. Процитированные работы [7] Aoshima К., Iri M. Comments on F. Hadlock's paper: finding a maximum cut of a planar graph in polynomial time // SIAM Journal on Computing. 1977. Vol. 6. P. 86-87.
70 Глава 2. Графы Camion P. Chemins et circuits hamiltoniens des graphes complets // Comptes Rendus Hebdomadaires des Seances de l'Academie des Sciences (Paris). 1959. T. 249. P. 2151- 2152. Camion P. Modulaires unimodulaires // Journal of Combinatorial Theory A. 1968. Vol. 4. P. 301-362. Crestin J. P. Un algorithme d'orientation des aretes d4in graphe connexe fini // Mimeo- graphe du Seminaire sur les Problemes Combinatoires, Institut Henri Poincare, Paris, 1969. Dirac G. A. Some theorems on abstract graphs // Proceedings of the London Mathematical Society. 1952. Vol. 2. P. 69-81. Edmonds J., Giles R. A min-max relation for submodular functions on graphs // Studies in Integer Programming (P. L. Hammer, E. L. Johnson, B. H. Korte, G. L. Nemhauser, eds.), North-Holland, Amsterdam 1977. (Annals of Discrete Mathematics; Vol.1). P. 185-204. Euler L. Solutio problematis ad geometriam situs pertinentis // Commentarii Academiae Petropolitanae. 1736. Vol. 8. P. 128-140. Euler L. Demonstratio nonnullarum insignium proprietatum quibus solida hedris pla- nis inclusa sunt praedita // Novi Commentarii Academiae Petropolitanae. 1758. Vol. 4. P. 140-160. Hierholzer C. Uber die Moglichkeit, einen Linienzug ohne Wiederholung und ohne Unter- brechung zu umfahren // Mathematische Annalen. 1873. Bd. 6. S. 30-32. Hopcroft J. ?., Tarjan R. E. Efficient planarity testing // Journal of the ACM. 1974. Vol. 21. P. 549-568. Kahn A. B. Topological sorting of large networks // Communications of the ACM. 1962. Vol.5. P.558-562. Карзанов А. В. Экономный алгоритм нахождения бикомпонент графа // Труды 3-й Зимней школы по математическому программированию и смежным вопросам (Дрогобыч, 1970). Вып. 2. М.: Изд-во МИСИ, 1970. С. 343-347. Knuth D. Е. The Art of Computer Programming; Vol. 1. Fundamental Algorithms. Addison- Wesley, Reading, 1968 (third edition: 1997). Konig D. Uber Graphen und Ihre Anwendung auf Determinantentheorie und Mengen- lehre // Mathematische Annalen. 1916. Bd. 77. S. 453-465. Konig D. Theorie der endlichen und unendlichen Graphen. Teubner, Leipzig 1936; reprint: Chelsea Publishing Co., New York, 1950. Kuratowski K. Sur le probleme des courbes gauches en topologie // Fundamenta Mathematical 1930. T.15. P. 271-283. Legendre A. M. Elements de Geometric Firmin Didot, Paris, 1794. Minty G. J. Monotone networks // Proceedings of the Royal Society of London. Ser. A. 1960. Vol. 257. P. 194-212. Moore E. F. The shortest path through a maze // Proceedings of the International Symposium on the Theory of Switching; Part II. Harvard University Press, 1959. P. 285-292. Redei L. Ein kombinatorischer Satz // Acta Litt. Szeged. 1934. Bd. 7. S. 39-43. Robbins H. E. A theorem on graphs with an application to a problem of traffic control // American Mathematical Monthly. 1939. Vol.46. P.281-283.
Литература 71 [28] Robertson N., Seymour P. D. Graph minors II: algorithmic aspects of tree-width // Journal of Algorithms. 1986. Vol. 7. P. 309-322. [29] Robertson N.t Seymour P. D. Graph minors XX: Wagner's conjecture // Journal of Combinatorial Theory. Ser. B. 2004. Vol. 92. P. 325-357. [30] Tarjan R. E. Depth first search and linear graph algorithms // SIAM Journal on Computing. 1972. Vol.1. P. 146-160. [31] Thomassen C. Planarity and duality of finite and infinite graphs // Journal of Combinatorial Theory. Ser. B. 1980. Vol. 29. P. 244-271. [32] Thomassen С Kuratowski's theorem // Journal of Graph Theory. 1981. Vol. 5. P. 225-241. [33] Tutte W. T. A theory of 3-connected graphs // Proceedings of the Koninklijke Nederlandse Akademie van Wetenschappen. Ser. A. 1961. Vol. 64. P. 441-455. [34] Wagner K. Uber eine Eigenschaft der ebenen Komplexe // Mathematische Annalen. 1937. Bd. 114. S. 570-590. [35] Whitney H. Non-separable and planar graphs // Transactions of the American Mathematical Society. 1932. Vol. 34. P. 339-362. [36] Whitney H. Planar graphs // Fundamenta Mathematicae 1933. Vol. 21. P. 73-84.
ГЛАВА 3 Линейное программирование В этой главе мы рассмотрим наиболее важные факты, касающиеся линейного программирования. Несмотря на то что данная глава является самодостаточной, она не претендует на роль всеобъемлющего пособия. Читателю, не знакомому с линейным программированием, стоит обратить внимание на книги, ссылки на которые приведены в конце главы. Общий вид задачи линейного программирования таков. Linear Programming (задача линейного программирования) Дано: матрица А е Rmxn и вектор-столбцы b е Rm, с € Rn. Надо: найти такой вектор-столбец х е Rn, что Ах < Ъ и значение сгх максимально, либо выяснить, что множество {х € R": Ах < Ь} пусто, либо определить, что для всех а е R найдется такой вектор-столбец х е Rn, что Ах < Ъ и стх > а. Здесь стх обозначает скалярное произведение векторов. Запись х < у для векторов х и у (одинаковой размерности) означает, что указанное неравенство выполняется покоординатно. Если размеры матриц и векторов не указаны, то всегда предполагается, что они соответствуют друг другу (в смысле операции умножения). Мы часто будем опускать знак транспозиции вектор-столбцов и обозначать скалярное произведение, например, сх. Через 0 мы обозначаем как само число нуль, так и вектор или матрицу, все компоненты которых нулевые (размеры этих векторов и матриц всегда будут ясны из контекста). Линейная программа (ЛП) представляет собой экземпляр вышеуказанной задачи. Мы часто записываем линейную программу в виде тах{сх: Ах < Ь}. Допустимым решением линейной программы тах{ос: Ах < Ь) называется такой вектор х, что Ах < Ь. Допустимое решение, доставляющее искомый максимум, называется оптимальным решением. Как указано в формулировке задачи, возможны две ситуации, при которых ЛП не имеет решения. А именно, ЛП может быть несовместной, т. е. Р := {х eRn: Ах <Ь} = 0. ЛП может также быть неограниченной, т. е. для всех а е R найдется такой вектор х е Р, что сх > а. В случае, когда ЛП не является несовместной или неограниченной, она имеет оптимальное решение.
Глава 3. Линейное программирование 73 Утверждение 3.1. Пусть заданы Р = {х eRn: Ах < Ъ) Ф 0 и с е Ш1, причем 5 := sup{cTx: х е Р} < со. Тогда найдется вектор zeP, для которого cTz = 6. Доказательство. Рассмотрим матрицу U, столбцы которой образуют ортонор- мированный базис ядра матрицы А, т. е. UJU = I, AU = 0 и rank(A') = п, где А' := (^т). Положим Ь' := (?). Покажем, что для всякого у еР найдется такая подсистема А!'х < Ъ" системы А'х < Ь', что матрица А!1 невырожденна, у' := (А")~1Ъ" е Р и сТу' > сту. Поскольку существует лишь конечное множество таких подсистем, один из векторов у' доставляет максимум (сту7 = б). Отсюда будет следовать доказываемое утверждение. Итак, пусть у € Р. Обозначим тогда через к (у) ранг матрицы А", где А"х < < Ъ"— максимальная подсистема (содержащаяся в системе А'х < Ъ'), для которой А!'у — Ь". Предположим, что к (у) < п. Покажем, как найти у' е Р, для которого сту' > сту и к (у 0 > к{у). После не более чем п шагов мы получим вектор у', для которого к (у0 = п, что и требовалось. Если UTy Ф О, то положим у' := у — UUTy. Поскольку у + XUUJc е Р для всех А е R, справедливо неравенство sup{cT(y + XUUTc) :AeR}<5<°°,a значит, cTU = 0 и сУ = сту. Более того, Ay*=Ay-AUUTy = Ay и UJy' = UJy-UTUUJy = 0. Теперь предположим, что UTy = 0. Пусть и фОи А" и = 0. Через atx < fa мы обозначим ?-ю строку системы Ах < Ь. Пусть /х :=min{Pi~a*y : atu > о} и к: :=тзху(~а(У : afi; <о}, где min0 = оо и max0 = —оо. Имеем к < 0 < /х, и хотя бы одно из чисел к- и /х конечно (поскольку A'v Ф 0, но UTv = 0). Для скаляра А е R, к < А < /х, имеем А" (у + Ai/) = А"у + AA"i/ = А"у = Ъ" и А(у Н- Ai>) = Ay + AAi> < b, т. е. у + Ai> € Р. Следовательно, учитывая, что sup{cTx: х е Р} < со, получаем /х < со при cTi; > 0 и к > —оо, поскольку cTv < 0. Более того, если cTv > 0 и /х < со, мы имеем <2i(y + /хи) = fa для некоторого i. Аналогично, если cTv < 0 и к > — оо, имеем а^(у + ки) = fa для некоторого i. Итак, в каждом из рассмотренных случаев мы нашли вектор у' ? Р, для которого сТу' > сТу и к (у 0 > к(у) + 1. ? Доказанное утверждение позволяет использовать запись max{cTx: Ах < Ь} вместо sup{cTx: Ах < Ъ}. Многие задачи комбинаторной оптимизации могут быть сформулированы в виде линейных программ. Для этого мы используем кодирование допустимых решений в виде векторов в Rn для некоторого п. В § 3.5 будет показано, как свести задачу оптимизации линейной функции на конечном множестве векторов S к решению линейной программы. Несмотря на то что множество допустимых решений данной ЛП содержит не только векторы из S, но и их выпуклые комбинации, мы увидим, что среди оптимальных решений всегда будет элемент множества S.
74 Глава 3. Линейное программирование В § 3.1 мы изучим терминологию и основные факты о полиэдрах, т. е. множествах Р = {х е Rn: Ах < 5} допустимых решений линейных программ. В § 3.2 и 3.3 мы опишем симплекс-метод, который будет также использован для вывода теоремы двойственности и сопутствующих ей результатов (§ 3.4). Линейная двойственность представляет собой крайне важное понятие, которое явно или неявно присутствует почти по всех разделах комбинаторной оптимизации. На протяжении всей книги мы будем часто ссылаться на результаты § 3.4 и 3.5. §3.1. Полиэдры Задача ЛП состоит в максимизации или минимизации линейной целевой функции от конечного числа переменных с соблюдением конечного числа линейных неравенств. Таким образом, множество допустимых решений представляет собой пересечение конечного числа полупространств. Множества такого вида называются полиэдрами. Определение 3.2. Полиэдр в R" — это множество вида P = {xeRn:Ax:<b} для некоторой матрицы А е. Жтхп и вектора Ъ е Rm. Если АиЪ рациональны, то Р образует рациональный полиэдр. Ограниченный полиэдр также называется политопом. Обозначим через rank(A) ранг матрицы А. Размерностью dimX непустого множества ICR" называется значение п — max{rank(A): А — такая (п х п)-матрица, что Ах = Ау для всех х, у € х}. Полиэдр РС1П имеет полную размерность, если dimP = п. Иными словами, полиэдр имеет полную размерность, если и только если он содержит внутреннюю точку. В большинстве случаев на протяжении данной главы оказывается несущественным, с каким пространством мы работаем — вещественным или рациональным. Нам потребуются следующие определения. Определение 3.3. Пусть Р := {х: Ах < Ъ} — непустой полиэдр. Если с — ненулевой вектор, для которого значение 5 := тах{ос: х е Р} конечно, то множество {х: сх = 5} называется опорной гиперплоскостью для Р. Грань полиэдра Р — это либо сам полиэдр Р, либо его пересечение с его опорной гиперплоскостью. Точка х, для которой {х} является гранью, называется вершиной полиэдра Р, а также базисным решением системы Ах < Ь. Утверждение 3.4. Пусть Р = {х: Ах < Ъ] — полиэдр, F с р. Тогда следующие утверждения эквивалентны: (а) F представляет собой грань полиэдра Р; (б) существует такой вектор с, что значение 5 := max{cx: х еР} конечно uF = {xeP:cx = 5}; (в) F = {х е Р: А'х = Ь'} ^ 0 для некоторой подсистемы А'х < Ъ' системы Ах<Ъ.
§3.1. Полиэдры 75 Доказательство. Утверждения (а) и (б), очевидно, эквивалентны. Докажем импликацию (в) => (б). Если множество F = {х € Р: А'х = Ь'} непусто, то пусть с — сумма строк матрицы А', а 5 — сумма координат вектора Ъ'. Тогда, очевидно, сх<:5 для всех х е Р и F = {х е Р: сх = 5}. Докажем импликацию (6)=»(в). Рассмотрим такой вектор с, что значение 5 :=тах{сх: х е Р} конечно и F = {х е Р: сх = 5}. Пусть А'х < Ь' — максимальная подсистема системы Ах < Ь, для которой А'х = Ь' для всех х sF. Пусть А"х < Ъ" — оставшаяся часть системы Ах < Ь. Заметим вначале, что для каждого неравенства а"х < /3" системы А"х < Ь" (i = 1,..., к) найдется такая точка xt е F, что а"х( < /3". Пусть х* := -г 5]?==1 xf — центр тяжести этих точек (если к = О, то возьмем произвольную точку x*eF). Имеем х* е F и а"х* < j3" для всех i. Докажем, что равенство А'у = Ь' не может выполняться при yeP\F. Предположим, что у еР\Р. Справедливо неравенство су <5. Теперь рассмотрим точку z := х* + е(х* — у) для достаточно малого е > 0; в частности, в должно быть меньше, чем ' ^ , для всех таких i е {1,..., fc}, что а"х* > а"у. Имеем cz > 8, следовательно, z ? Р. Тогда найдется такое неравенство ах < /3 системы Ах < Ь, что az> /3. Значит, ах* > ау. Неравенство ах < /3 не может принадлежать системе А"х < Ъ", поскольку иначе получаем в —ах* az = ах* + ва(х* - у) < ах* + fl^_y)a(x* - у) = /3 (согласно выбору е). Следовательно, неравенство ах < ^ принадлежит системе А'х < Ь'. Учитывая, что ay = a(x* + i(x*-s))</3, получаем требуемый результат. ? Укажем тривиальное, но важное следствие. Следствие 3.5. Если задача тах{сх: х е Р} является ограниченной, а полиэдр Р непуст, то множество точек, в которых достигается максимум, образует грань полиэдра Р. ? Отношение «быть гранью» транзитивно. Следствие 3.6. Пусть Р — полиэдр, aF — его грань. Тогда F тоже полиэдр. Более того, множество F' с F образует грань полиэдра Р, если и только если оно образует грань полиэдра F. ? Максимальные грани полиэдра, отличные от него самого, особенно важны. Определение 3.7. Пусть Р — полиэдр. Фасетой полиэдра Р называется максимальная грань, отличная от Р. Неравенство сх<:8 называется задающим фасету для Р, если сх < 8 для всех хеРи{хеР:сх = 5} образует фасету полиэдра Р. Утверждение 3.8. Пусть Р с {х е Rn: Ах = Ь} — непустой полиэдр размерности п — rank (А). Пусть А'х < Ъ'—минимальная система неравенств, для которой
76 Глава 3. Линейное программирование Р = {х: Ах = Ь, А'х < Ъ'}. Тогда каждое неравенство А'х < Ъ' является задающим фасету полиэдра Р, а каждая фасета полиэдра P задается неравенством вида А'х < Ь'. Доказательство. Если Р = {х € Rn: Ах = Ь}, то у полиэдра Р нет фасет и утверждение тривиально. Пусть А'х < Ь' — минимальная система неравенств, для которой Р = {х: Ах = Ь, А'х < Ь'}, и пусть а'х < /3' — одно из ее неравенств, а А"* < Ъ" — оставшаяся часть системы А'х < Ъ'. Пусть у — вектор, для которого Ау = Ь, А"у < Ъ" и а'у > /3' (такой вектор у существует, поскольку неравенство а'х < 13' не является избыточным). Выберем такой вектор х е Р, что А'х < Ь' (такой вектор существует, поскольку dimP = п — rank(А)). Положим Р'-а'х, z:=x+ —, —(у — х). а'у — а'хKJ J Имеем a'z = /3' и A"z < b". Тогда, поскольку г, Р'-а'х Л О < ^ < 1, а! у — а'х получаем, что z е Р. Следовательно, F := {х е Р: а'х = /3'} ^ 0 и F / Р (так как дс G P\F). Таким образом, F является фасетой полиэдра Р. По утверждению 3.4 каждая фасета определяется неравенством из системы А'х < Ъ'. ? Другой важный класс граней (кроме фасет) составляют минимальные грани (т. е. грани, которые не содержат в себе меньших граней). Справедлив следующий факт. Утверждение 3.9 (Хоффман и Краскал [14]). Пусть Р = {х: Ах < Ь} — полиэдр. Непустое подмножество F с р является минимальной гранью полиэдра Р, если и только если F = {х: А'х = Ь'} для некоторой подсистемы А'х < Ъ' системы Ах<Ъ. Доказательство. Если F — минимальная грань полиэдра Р, то по утверждению 3.4 найдется подсистема А'х < Ъ' системы Ах < Ь, удовлетворяющая условию F = {* е Р: А'х = Ь'}. Возьмем максимальную подсистему А'х < Ь'. Пусть А"х < < Ъ" — минимальная подсистема системы Ах < Ь, для которой F = {х: А'х = Ъ', А"х < Ъ"). Докажем, что подсистема А"х < Ъ" пуста, т. е. не содержит ни одного неравенства. Предположим, рассуждая от противного, что подсистема А"х < Ъ" содержит некоторое неравенство а"х < /3". Поскольку последнее не является избыточным в описании F, согласно утверждению 3.8 заключаем, что множество F' := {х: А'х = Ъ', А"х < Ъ", а"х = /3"} является фасетой полиэдра F. По следствию 3.6 множество F' также является гранью полиэдра Р, что противоречит предположению о том, что F — минимальная грань полиэдра Р. Пусть теперь 0 ф F = {х: А'х = b'}QP для некоторой подсистемы А'х < Ъ' системы Ах < Ь. Очевидно, фасета F не имеет граней кроме самого F. По утвержде-
§3.1. Полиэдры 77 нию 3.4 полиэдр F является гранью полиэдра Р. Тогда из следствия 3.6 получаем, что F образует минимальную грань полиэдра Р. ? Следствие 3.5 и утверждение 3.9 показывают, что задача линейного программирования может быть решена за конечное время путем решения системы линейных уравнений А'х = У для каждой подсистемы А'х < Ь' системы Ах < Ъ. Более эффективный способ состоит в использовании симплекс-метода, который будет описан в следующем параграфе. Еще одно следствие утверждения 3.9 таково. Следствие 3.10. Пусть Р = {х е Rn: Ах < Ъ) — полиэдр. Тогда все его минимальные грани имеют размерность п — rank (А). Минимальными гранями политопа служат его вершины. ? Данное следствие объясняет, почему полиэдры {х е Rn: Ах < Ъ), для которых rank (Л) = п, иногда называются точечными (pointed). Действительно, их минимальные грани являются точками. В завершение данного параграфа отметим несколько свойств полиэдральных конусов. Определение 3.11. (Выпуклый) конус — это такое множество С с Rn? что для всяких х, у е С и А, ц> 0 справедливо включение Хх + \ху € С. Конус С называется порожденным системой хъ..., xk, если хъ ..., xk е С и для всякого х е С к найдутся такие числа Аъ..., Хк > 0, что х = 2ui=1 Х{х{. Конус называется конечно порожденным, если он порождается некоторым конечным набором собственных векторов. Полиэдральным конусом называется полиэдр вида {х: Ах < 0}. Очевидно, что полиэдральные конусы действительно являются конусами. Мы покажем, что полиэдральные конусы являются конечно порожденными. На протяжении текущего параграфа I будет обозначать единичную матрицу. Лемма 3.12 (Минковский [18]). Пусть С = {х е Мп: Ах < 0} — полиэдральный конус. Тогда С порождается множеством, составленным из некоторых решений систем вида My = b'. Здесь каждая матрица М состоит из п линейно независимых строк матрицы ( J и Ъ' = ±е;- для некоторого базисного вектора е;. Доказательство. Пусть А — (m х п)-матрица. Рассмотрим всевозможные системы вида My = Ь', где М состоит из п линейно независимых строк матрицы f J, а У = ±е; для некоторого базисного вектора е;. Пусть уъ ..., yt — те решения данных систем равенств, которые принадлежат С. Докажем, что С порождается векторами уъ..., yt. Пусть вначале С = {х: Ах = 0}, т. е. С является линейным подпространством. Запишем С в виде {х: А'х = 0}, где матрица А' составлена из максимального множества линейно независимых строк матрицы А. Пусть матрица V состоит из таких строк матрицы 7, что (А — невырожденная квадратная матрица. Тогда С порождается решениями системы (/О* = О' где Ъ = ±eJ> J = 1> • • • > dim С.
78 Глава 3. Линейное программирование Для доказательства в общем случае воспользуемся индукцией по размерности конуса С. Если С не является линейным подпространством, то найдется такой вектор z е С, что —z ф С. Тогда найдется строка а матрицы А, для которой az < 0. Пусть матрица А' образована произвольным максимальным набором строк матрицы А, удовлетворяющим следующим условиям: строки (^ J линейно независимы (свойство 1), а также существует вектор z е. С, для которого A'z = 0 и az < 0 (свойство 2). Пусть у — произвольный вектор, для которого А'у = 0 и ау = —1. Докажем, что у ?С. Пусть для z выполнено свойство 2, т.е. z е С, A!z = 0 и az < 0. Пусть В — множество вектор-строк Ъ матрицы А, для которых Ъу > 0. Каждый вектор ЬеВ должен быть линейно независим от а и А'. В противном случае Ъ = сА' + 5а для некоторого вектора с и числа 5, а значит, 0>bz=cA'z + 5az = 5az, следовательно, 5 > 0, что противоречит условию 0 < by = сА'у + 5ау = —5. Предположим, что множество В непусто. Пусть \i := minjr^: Ъев\. Имеем \х < 0. Тогда z; :=z — fiyGC A'z' = A'z — [iA!y = 0, az' = az — \iay < 0 и существует такой вектор Ь/ е В, что bV = 0. Это противоречит максимальности А7. Таким образом, В = 0, т. е. у е С. Следовательно, по построению найдется такой индекс 5 е {1,...,t}, что А/у5 = 0иау5 = -1. Возьмем теперь произвольный вектор zgC. Пусть аъ ..., ат — строки матрицы А и /х :=min|——: i = 1, ...,m, a;ys < Ok Имеем (i>0. Пусть fc — индекс, на котором достигается минимум. Рассмотрим вектор z := z — fiys. По опре- / akZ -л делению числа \х имеем а& = ая a^ys для всех j = 1,..., m, и, значит, afcys z'gC'^IxgC: afcx = 0}. Множество С' образует конус, размерность которого на единицу меньше таковой для С (поскольку akys < 0 и у5 е С). По индуктивному предположению С7 порождается подмножеством уъ ..., yt, так что я/ = X[=i ^гУг для некоторых Аъ ..., At > 0. Полагая Я7 := As И- /х (с учетом неравенства 1л>0) и Ц := Af (i т^ s), мы получаем z = z' + juys = ][]?:=1A[yj. ? Таким образом, полиэдральные конусы являются конечно порожденными. Истинность обратного утверждения будет установлена в конце § 3.4. §3.2. Симплекс-метод Старейшим и одним из самых известных алгоритмов для задачи линейного программирования служит симплекс-метод Данцига [10]. Предположим вначале, что полиэдр задачи содержит хотя бы одну вершину и что некоторая его вершина задана на входе. Позднее мы покажем, как решается общая задача ЛП. Для множества J индексов строк мы будем обозначать через Aj подматрицу матрицы А, составленную из строк с индексами из J, а через Ь3 будем обозначать подвектор вектора Ь, составленный из координат, индексы которых лежат в J. Мы также используем сокращения а{ := Ащ и f}t := Ьщ.
§3.2. Симплекс-метод 79 Simplex (симплекс-метод) Вход: матрица А € Kmxn и вектор-столбцы Ъ € Rm, с € Кл; вершина х полиэдра P:={xeRn:Ax< b}. Выход: вершина х полиэдра Р, в которой достигается тах{сх: х € Р}, или такой вектор w € Rn, что Aw < 0 и cw > 0 (в этом случае задача ЛП неограничена). (Т) Выбрать множество из п индексов строк J, для которых матрица Aj невы- рожденна и AjX = bj. © Вычислить c(Aj)~l и расширить полученный вектор нулями, образовав такой вектор у, что с = уА и все элементы у вне J нулевые. If у>0 then stop. Return хи у. (3) Выбрать минимальный индекс i, для которого у? < 0. Пусть w — столбец матрицы —{Aj)~l с индексом i, тогда выполняются равенства Aj\^w = 0 и atw = — 1. If Лш < 0 then stop. Return ш. 0 Пусть Я :=min| ———: j G {1,..., m], a^w > 0 j и j — наименьший индекс строки, на котором достигается вышеуказанный минимум. (5) Положить J := (J\{i}) u{j} их :=х +Aw. Goto (2). Шаг ф основывается на утверждении 3.9 и может быть выполнен с помощью алгоритма исключения Гаусса (см. §4.3). Правила выбора индексов i и j на шагах (3) и 0 (часто называемые правилами выбора опорных индексов) предложены Блэндом [7]. Если выбирать произвольные индексы i, для которых yt < 0, и произвольные ;, доставляющие минимум на шаге 0, то на некоторых входных данных алгоритм может зациклиться. Правила Блэнда не являются единственными, позволяющими избежать зацикливания. Другой способ (так называемые лексикографические правила) также гарантирует конечность времени работы, как было показано ранее Данцигом, Орденом и Вульфом [11]. Перед тем как доказывать корректность симплекс-метода, сделаем следующее наблюдение (часто называемое свойством «слабой двойственности»). Утверждение 3.13. Пусть х и у — допустимые решения линейных программ max{cx: Ах: < Ь} (3.1) и min{yb: уТА = ст,у> 0} (3.2) соответственно. Тогда сх < yb. Доказательство. Имеем сх — {уА)х = y(Axr) < уЪ. ?
80 Глава 3. Линейное программирование Теорема 3.14 (Данциг [10], Данциг, Орден и Вульф [11], Блэнд [7]). Алгоритм Simplex заканчивает свою работу, совершив не более ("Ч итераций. Если он возвращает векторы хиу на шаге (2), то данные векторы служат оптимальными решениями линейных программ (3.1) и (3.2) соответственно, причем сх = уЪ. Если же алгоритм возвращает вектор w на шаге (3), то cw > 0 и линейная программа (3.1) неограничена. Доказательство. Докажем вначале, что следующие утверждения выполняются на любом шаге алгоритма: (а) хеР; (б) Ajx = by, (в) подматрица А3 невырожденна; (г) cw>0; (д) А^О. Утверждения (а) и (б) изначально верны. Шаги (2) и (3) обеспечивают выполнение условий cw = уАш = —yt > 0. Согласно шагу 0 из того, что х е Р, следует, что Я > 0. Утверждение (в) следует из того, что Дд^ш = 0 и a^w > 0. Осталось доказать, что шаг (5) сохраняет истинность утверждений (а) и (б). Покажем, что если х € Р, то также х + Яш е Р. Для произвольного индекса строки к возможны два случая. Если akw < 0, то (учитывая неравенство Я > 0) получаем, что afc(x + Xw) < afcx < /3fc. Иначе Я < — —, и, значит, ak{x + Xw) <akx + akw——— = /3fc. akw (Действительно, Я выбирается на шаге 0 как максимальное число, удовлетворяющее условию х + Xw G Р.) Для доказательства утверждения (б) заметим, что после шага 0 мы имеем Aj\{i}W = 0 и Я = JQ ш; , так что ^j\{i}(x + Au;)=AJ\{i}x = bJ\m и аДдс + Яш) = а/дс + ауш Jfl ш; =fi. Следовательно, после шага (5) равенство AjX = bj снова выполнено. Итак, свойства (а)-(д) действительно выполняются на любой итерации. Если алгоритм вернет векторы х и у на шаге (2), то х и у будут допустимыми решениями задач (3.1) и (3.2) соответственно. Вектор х будет вершиной полиэдра Р согласно свойствам (а), (б) и (в). Более того, сх = у Ах = yb, поскольку координаты вектора у обращаются в нуль вне множества J. С учетом утверждения 3.13 этим доказана оптимальность векторов хиу. Если алгоритм остановится на шаге (3), то программа (3.1) действительно является неограниченной, поскольку в этом случае х + цш е Р при /х > 0, а также cw > 0 по свойству (г). Наконец, покажем, что алгоритм всегда заканчивает работу за конечное число шагов. Пусть J(fc) и х^ — множество J и вектор х на итерации к симплекс- метода соответственно. Если алгоритм не завершил работу после (т J итераций,
§3.2. Симплекс-метод 81 то найдутся такие индексы к < I, что J(fc) = J(z). По свойствам (б) и (в) имеем х(к) _. ^.(0 Согласно утверждениям (г) и (д) значение сх не уменьшается. Кроме того, оно строго увеличивается при Я > 0. Следовательно, Я равно нулю на всех итерациях fc, fc + 1,..., I — 1, и x(fc) = x(fc+1) = ... = x®. Пусть ft — наибольший индекс, покидающий множество J на одной из итераций fc,..., I — 1, скажем, на итерации р. Индекс ft также должен быть добавлен к J на некоторой итерации qe{fc, ...,Z — 1}. Пусть теперь у' — значение у на итерации р, и пусть и/ — значение w на итерации q. Имеем у'Aw' — cw' > 0. Тогда пусть г — индекс, для которого y'rarw' > 0. Поскольку у'г ф 0, индекс г принадлежит J(p). Если бы выполнялось неравенство г > ft, индекс г принадлежал бы J(q) и J(q+1), и мы бы имели arw' = 0. Итак, г < ft. Согласно выбору i на итерации р мы имеем у'т < 0, если и только если г = ft, и согласно выбору j на итерации q мы имеем aTw' > 0, если и только если г = ft (напомним, что Я = 0 и агх^ = агх^ = /Зг, поскольку г G j(p)). Полученное противоречие завершает доказательство. ? Кли и Минти [16], а также Эйвис и Хватал [6] построили примеры, когда симплекс-методу (с использованием правила Блэнда) придется совершить порядка 2П итераций на линейных программах с п переменными и 2п ограничениями, тем самым показав, что данный метод не является полиномиальным. На настоящий момент неизвестно, существует ли правило выбора опорных индексов, приводящее к полиномиальному алгоритму. Однако Богвардт [8] показал, что время работы в среднем (для входных данных, выбираемых из некоторого естественного распределения) полиномиально ограничено. Шпильман и Тэн [21] ввели в рассмотрение так называемый сглаженный анализ: для каждого фиксированного выхода они рассмотрели среднее время работы относительно небольших случайных изменений выходных данных. Максимум из этих средних времен работы оказался полиномиально ограниченным. Келнер и Шпильман [15] предложили рандомизированный полиномиальный алгоритм для задачи линейного программирования, схожий с симплекс-методом. При грамотной реализации симплекс-метод также оказывается весьма быстрым на практике, см. § 3.3. Покажем теперь, как решать линейные программы общего вида с помощью симплекс-метода. Точнее говоря, мы покажем, как найти начальную вершину. Поскольку существуют полиэдры, у которых нет ни одной вершины, вначале мы перепишем задачу ЛП в несколько иной форме. Пусть тах{сх: Ах < Ь} — рассматриваемая задача ЛП. Подставим вместо jc выражение y — zn перепишем программу в эквивалентном виде: тах{(с -с) (У) : (A -A) g) < Ь, у,z> о}. Итак, без ограничения общности мы можем предполагать, что наша ЛП имеет вид тах{сх: А'х < Ъ', А"х < b", х > 0}, (3.3) где Ь' >0иЬ" < 0. Вначале запустим симплекс-метод на входе: min {(tА")х + ty: А'х < Ь', А"х + у> Ъ", х, у > О}, (3.4)
82 Глава 3. Линейное программирование где I — вектор, все элементы которого равны 1. Поскольку условия (*) =0 задают вершину, мы сможем это сделать. Данная линейная программа, очевидно, является ограниченной, поскольку минимум в ней не может быть меньше ИЬ". Для всякого допустимого решения х задачи (3.3) вектор [у/ *Ан J служит оптимальным решением задачи (3.4) со значением целевого функционала W. Следовательно, если минимум в задаче (3.4) превосходит значение ИЬ", то задача (3.3) несовместна. В противоположном случае пусть (х) — оптимальная вершина для задачи (3.4), в которой достигается значение ИЬ". Докажем, что х служит вершиной полиэдра задачи (3.3). Для доказательства заметим вначале, что А"х + у = Ъ". Пусть пит — размерности векторов хиу соответственно; тогда согласно утверждению 3.9 существует множество S, состоящее из п + т неравенств задачи (3.4), которые обращаются в равенства, причем подматрица, отвечающая этим п + т неравенствам, невырожденна. Пусть S' — подмножество неравенств из систем А'х < У и х > 0, которые принадлежат S. Пусть S" состоит из тех неравенств из системы А"х < Ь" для которых соответствующие неравенства из систем А"х + у>Ъ" и у>0 одновременно принадлежат S. Очевидно, \S' U S"| > \S\ — m = п, и неравенства из S' U S" линейно независимы и обращаются на векторе л: в равенства. Итак, х обращает п линейно независимых неравенств из задачи (3.3) в равенство, а значит, действительно служит вершиной. Теперь мы можем запустить симплекс-метод для решения задачи (3.3), начав с х. § 3.3. Реализация симплекс-метода Представленное описание симплекс-метода было простым, но приводило к эффективной его реализации. Как мы сейчас увидим, нет необходимости решать систему линейных уравнений на каждой итерации заново. Для того чтобы пояснить основную идею, мы начнем с некоторого вспомогательного факта (который в действительности нам далее не понадобится). Убедимся, что для ЛП вида тах{сх: Ах = Ъ, х > 0} вершины могут быть заданы не только подмножествами множества строк, но также и подмножествами множества столбцов. Для матрицы А и множества J индексов столбцов будем обозначать через А7 подматрицу, составленную исключительно из столбцов, принадлежащих множеству J. Через Aj будем обозначать подматрицу матрицы А со строками из множества I и столбцами из множества J. Иногда порядок строк и столбцов будет для нас важен: если J = (jl9..., jk) — вектор индексов строк (столбцов), то через Aj (А7) мы обозначаем матрицу, i-я строка (?-й столбец) которой совпадает с jrR строкой (jrM столбцом) матрицы A (i = 1,..., к). Утверждение 3.15. Рассмотрим полиэдр Р := {х: Ах = Ь, х > 0}, где А—матрица, аЪ — вектор. Тогда х служит вершиной полиэдра Р, если и только если х е Р и столбцы матрицы А, отвечающие положительным координатам вектора х, линейно независимы.
§ 3.3. Реализация симплекс-метода 83 Доказательство. Пусть А — (mxn)-матрица. Обозначим X := \~ J и У := L J. Пусть также N := {1,..., п} и М := {п + 1,..., п + т}. Для множества индексов J с N U М размера п положим J :=(N U М) \ J. Тогда матрица Xj^ невырожденна, если и только если матрица -X*[nj невырожденна, что, в свою очередь, равносильно невырожденности матрицы Х^. Если х является вершиной полиэдра Р, то по утверждению 3.9 существует такое множество J с N UM, что | J\ = п, матрица Xj невырожденна и XjX = Ь'3. Тогда координаты вектора х из множества NHJ равны нулю. Более того, матрица Х^ невырожденна, и, значит, столбцы матрицы ANnJ линейно независимы. Обратно, пусть х е Р, и пусть множество столбцов матрицы Л, отвечающих положительным координатам вектора х, является линейно независимым. Тогда, добавляя подходящие базисные столбцы, мы получим невырожденную подматрицу Х^, для которой xt = 0 для всех ieN\B. Значит, матрица Х- невырожденна, и ХУх = Ъ'Б. Следовательно, по утверждению 3.9 точка х является вершиной в в полиэдра Р. ? Следствие 3.16. Пусть {Ху)еР'.= {{Ху)'-Ах + У = Ъ,х>0,у>0}. Тогда (^) является вершиной полиэдра Р, если и только если столбцы матри- цы (Л J), отвечающие положительным координатам вектора Iх), линейно независимы. Более того, х является вершиной полиэдра {х: Ах < Ъ, х> 0}, если и только если L *. J является вершиной полиэдра Р. ? Изучим теперь поведение симплекс-метода, примененного к ЛП вида тах{сх: Ах < Ь, х > 0}. Теорема 3.17. Пусть А е Rmxn, Ъ е Rm и с е R71. Пусть А' := (~7), Ь' := (°) ис:= (сТ, 0). Пусть В € {1,..., п И- т}т — такой набор из т индексов, что матрица (А 1)в невырожденна. Пусть J Q{Y,...,n + m) —множество оставшихся незадействованными п индексов. Пусть, наконец, QB := ((Л /)в)-1. Тогда (1) матрица A'j невырожденна; (2) (Ъ'-А'х)3 = 0, (Ь' -А'х)в = QBb и сТх = cBQBb, где х := (А'^Ъ вГь U ,АЛ v — ГлМ-1у. (3) если у — такой вектор, что ув = 0и уТА' = с1, то у1 = cBQB(A I) — с; (4) если i^J и w — такой вектор, что A[w = — 1 и Лд.,ш = 0, то А'вю = = QB(A/)1; ( | ^ (5) если обозначить Тв := —^ — —-— \,топо заданным ВиТв мы \ с QB(A /)-с I cJx J можем вычислить В* и Т# за время 0(m(n + m)), где В' получается из В заменой j на i,aiu j получаются на шагах (2)-0 симплекс-метода {примененного к А', Ь', с и множеству индексов J). Матрица Тв называется симплекс-таблицей относительно базиса В.
84 Глава 3. Линейное программирование Доказательство. 1. Пусть N := {1,..., п}. Поскольку матрица (А /)в невырож- денна, матрица CA')j\ ^ также невырожденна, а значит, и матрица А!3 также невырожденна. 2. Первое утверждение прямо следует из равенства AjX = Ъ'г Тогда Ъ = Ах + 1(Ъ-Ах) = (А 1){Ъ'-А'х) = (А 1)В(Ъ'-А'х)в и стх = сф'-А'х) = св{Ъ' -А'х)в = cBQBb. 3. Для доказательства заметим, что {cBQB(A I)-c)B = cBQB(A I)B-cB = 0 и {cBQB(A I) -c)A' = cbQb(A I)A'-cT(-I) = c\ 4. Это прямо следует из соотношения О = (A l)A'w = (А /)В(А» + (A iy\U{A'A{i)w) + (А Щ^ш) = = (А I)B(A'Bw)-(A I)1. 5. Согласно утверждению 3 вектор у на шаге (2) симплекс-метода задается последней строкой матрицы Тв. Если у > 0, то мы останавливаемся (х и у оптимальны). Иначе за время 0(п + тп) можно найти i — первый индекс, для которого yt < 0. Если i-й столбец матрицы Тв не содержит положительных элементов, то мы останавливаемся (ЛП неограничена, а требуемый вектор w указан в утверждении 4). Иначе по утверждениям 2 и 4 получаем, что значение Я на шаге 0 симплекс-метода задается равенством А = min { ^fly)j: J б {1,. ¦., m}, (QB(A /)%>()}, и среди индексов, на которых достигается минимум, ; представляет собой тот, для которого j-я компонента набора В минимальна. Таким образом, мы можем вычислить j за время 0(тп), рассматривая i-й и последний столбцы матрицы Тв. Так мы найдем В'. Обновленная таблица Т# вычисляется следующим образом. Разделим j-ю строку на значение в ;-й строке и i-м столбце. Затем добавим подходящее кратное j-й строки ко всем строкам, с тем чтобы в i-м столбце всюду, кроме ;-й строки, были нули. Заметим, что эти преобразования сохраняют структуру текущей матрицы, а именно, она имеет вид Г Q(A I) \Qb \ V v(A I)-с vb J для некоторой невырожденной матрицы Q и некоторого вектора и, и, кроме того, справедливы равенства Q(A t)B' = I и (у (Л 1) — с)в =0. Поскольку Qnv определены однозначно, а именно Q = QB/ ии = св QB/, обновленная таблица Гв/ корректно вычисляется вышеуказанными операциями за время О (т (п + гл)). ?
§ 3.3. Реализация симплекс-метода 85 Рассмотрим ЛП вида тах{сх: А'х < Ь', А"х < Ъ", х > 0}, где А' е Rm/xn, А" е Rm"xn, b'>0 и b" < 0. Сначала мы запустим симплекс-метод для задачи min{(UA")x + tу: А'х < Ь', А"х + у> Ь", х} у > О} с начальной таблицей К -А" Ы" 0 -I г i 0 0 0 I 0 V -Ъ" 0 отвечающей базисному решению х = 0, у = 0. Затем будем выполнять итерации симплекс-метода, как указано в п. 5 теоремы 3.17. Если алгоритм завершит работу с оптимальным значением Ub, то мы модифицируем симплекс-таблицу следующим образом. Умножим некоторые строки на —1, тем чтобы ни один из столбцов с номерами п + т" + т' Л-1,..., п + т" + + тЧ т" (четвертая часть таблицы (3.5)) не был базисным вектором, удалим четвертую часть таблицы (т. е. столбцы с номерами п + т" + т! +1,..., п + т" + + т! + т") и заменим последнюю строку на (—с, 0,0,0). Затем добавим подходящие кратные остальных строк к последней строке, чтобы получить нули на т! Л- т" позициях, отвечающих столбцам с различными базисными векторами. Эти столбцы будут образовывать базис. В результате получится симплекс-таблица для исходной задачи ЛП относительно указанного базиса. Следовательно, мы можем продолжать выполнять итерации симплекс-метода, как указано в п. 5 теоремы 3.17. Оказывается, часто можно поступить более эффективно. Предположим, что мы хотим решить задачу ЛП вида min{cx: Ах > Ъ, х > 0} с очень большим числом неравенств, которые заданы неявно. При этом мы можем эффективно решать следующую вспомогательную задачу: по заданному вектору х > 0 определить, верно ли условие Ах> Ь, а если нет, то найти нарушенное неравенство. Мы применим симплекс-метод к двойственной задаче max{yb: уА < с, у > 0} = max{by: AJy <с,у> 0}. Пусть b := (bT, 0). Для базиса В положим QB := ((Ат/)в)-1 и сохраним лишь правую часть симплекс-таблицы Qb 1 QBc Л bBQB \bJx J' Последняя строка полной симплекс-таблицы имеет вид b QB(AT /) — b. Для выполнения итерации нам нужно проверить условия b QB > 0 и b QBAJ — b>0 и найти отрицательную координату, если такая существует. Эту проверку можно свести к решению вышеуказанной вспомогательной задачи для х = (b QB)T. Мы породим соответствующий столбец полной симплекс-таблицы, но будем
86 Глава 3. Линейное программирование помнить его лишь на протяжении текущей итерации. После обновления сокращенной симплекс-таблицы мы можем снова удалить его. Эта техника известна как улучшенный симплекс-метод и метод генерации столбцов. Примеры ее применения мы приведем позднее. §3.4. Двойственность Теорема 3.14 показывает, что между линейными программами (3.1) и (3.2) имеется связь. Этот факт мотивирует следующее определение. Определение 3.18. Пусть задана линейная программа тзх{сх: Ах < Ь}. Тогда двойственной к ней называется линейная программа вида min{yb: уА = с, у > 0}. В этом случае об исходной программе тах{сх: Ах < Ь} часто говорят как о прямой. Утверждение 3.19. Программа, двойственная к двойственной, эквивалентна исходной. Доказательство. Пусть задана прямая ЛП вида тах{сх: Ах < Ь}. Двойственной к ней будет программа min{yb: уА = с,у> 0}, или, что эквивалентно, —Ь" &МЙ}- (Каждое условие типа равенства может быть заменено на два неравенства.) Тогда программа, двойственная к двойственной, такова: -min I zc-z'c: (A -A -i)[z'\=-b,z,z',w>o\, а последняя эквивалентна программе — min{—сх: —Ax — w = —Ъ, w>0] (здесь мы заменили х на z' — z). Исключая переменные нежесткости ш, мы видим, что полученная программа эквивалентна исходной прямой. ? Сформулируем и докажем теперь важнейшую теорему линейного программирования, а именно теорему двойственности. Теорема 3.20 (фон Нейман [20], Гейл, Кун и Такер [13]). Если оба полиэдра Р := :={х: Ах<:Ь} uD:={y: уА=с,у>0} непусты, momaxfcx: xeP}=min{yb: y^D}. Доказательство. Если полиэдр D непуст, то он содержит вершину у. Запустим симплекс-метод для вычисления min{yb: у е D], начав с вершины у. Согласно утверждению 3.13 существование точки дс € Р гарантирует, что min{yb: у € D} ограничен. Тогда по теореме 3.14 симплекс-метод найдет оптимальные решения у и z для линейной программы min{yb: у € D} и ее двойственной. Однако, как следует из утверждения 3.19, двойственной программой будет тзх{сх: хеР}. Тогда имеем yb = cz, что и требовалось. ?
§3.4. Двойственность 87 Можно сформулировать даже более сильное утверждение о связи между оптимальными решениями прямой и двойственной линейных программ. Следствие 3.21. Пусть тах{сх: Лл: < Ь} и min{yb: уА = с, у > 0} — пара из прямой и двойственной линейных программ. Пусть х и у соответственно — допустимые решения, т.е. Ах < Ъ, уА = с и у > 0. Тогда следующие утверждения эквивалентны: (а) векторы х и у оба являются оптимальными решениями соответствующих программ] (б) сх = уЪ; (в) у(Ъ-Ах) = 0. Доказательство. Эквивалентность утверждений (а) и (б) сразу следует из теоремы двойственности 3.20. Эквивалентность утверждений (б) и (в) следует из того, что y(b — Ах) =yb — уАх = yb — cx. ? Свойство (в), справедливое для оптимальных решений, часто называется дополняющей нежесткостью (complementary slackness). Его можно также выразить следующим образом: точка х* е Р = {х: Ах < Ь} служит оптимальным решением задачи тах{сх: хеР}, если и только если с представляется в виде неотрицательной комбинации строк матрицы А, соответствующих неравенствам из системы Ах < Ь, которые в точке х* обращаются в равенство. Отсюда также следует такой результат. Следствие 3.22. Пусть Р = {х: Ах < Ь} — полиэдр u0^Z ср. Тогда множество векторов с, для которых каждая точка z^Z является оптимальным решением задачи max{cx: х е Р}, образует конус, порожденный строками матрицы А', где А'х < Ъ' —максимальная подсистема системы Ах < Ъ, удовлетворяющая условию A'z — Ъ' для всех zeZ. Доказательство. Найдется точка z € conv(Z), для которой все остальные (не попавшие в систему A!z < b) неравенства системы Ах < Ъ выполняются строго. Пусть с — вектор, для которого всякий элемент множества Z, а значит, и z в том числе, является оптимальным решением задачи тах{слг: х € Р}. По следствию 3.21 существует такой вектор у > 0, что с = уА', т. е. с представляется в виде неотрицательной линейной комбинации строк матрицы А!. Обратно, для всякой строки а!х < J87 системы А'х < У и для zgZ мы имеем a'z = р' = maxfa'x: х е Р}. ? Следствие 3.21 может быть записано в несколько иной форме. Следствие 3.23. Рассмотрим пару min{cx: Ах > Ъ, х > 0} и max{yb: уА < с, у > 0} из прямой и двойственной задач ЛП. Пусть х и у — допустимые решения, т. е. Ах > Ъ, у А < с и х, у > 0. Тогда следующие утверждения эквивалентны: (а) векторы х и у одновременно являются оптимальными решениями; (б) сх = уЪ; (в) (с-уА)х = 0иу(Ь-Ах) = 0.
88 Глава 3. Линейное программирование Доказательство. Эквивалентность утверждений (а) и (б) можно установить, применяя теорему двойственности 3.20 к задаче max{(-c)x:(:f><(-b)}. Рассмотрим утверждения (б) и (в). Заметим, что у(Ъ—Ах) < 0 < (с—уА)х для любых допустимых решений х и у, а также у (Ь — Ах) = (с — уА)х, если и только если уЪ = сх. ? Условия из утверждения (в) часто называются прямыми и двойственными условиями дополняющей нежесткости соответственно. Теорема двойственности имеет многочисленные приложения к комбинаторной оптимизации. Одна из причин ее важности состоит в том, что оптимальность решения может быть доказана путем указания допустимого решения двойственной ЛП с тем же значением целевого функционала, что и в прямой задаче. Разберемся теперь со случаем неограниченной и несовместной задачи. Теорема 3.24. Существует такой вектор х, что Ах < Ь, если и только если уЪ>0 для всех таких векторов у>0, что у А = 0. Доказательство. Если существует вектор х, для которого Ах < Ъ, то уЬ > уАх = 0 для всех таких векторов у > 0, что уА = 0. Рассмотрим следующую задачу ЛП: — min{Uw: Ах — w <b, w>0}. (3.6) Переписывая ее в стандартной форме, получаем ™Ф -•)?)=« :;)©«(?)}¦ Двойственная задача такова: -{» .)(>):(? _0,)Ш = (-°,и**°}. или, что эквивалентно, min{yb: уА = 0, 0 < у < И}. (3.7) Поскольку задачи (3.6) и (3.7) имеют решение (х = 0, w = |b|, у = 0), мы можем применить теорему 3.20. Итак, оптимальные значения в задачах (3.6) и (3.7) совпадают. Система Ах < b имеет решение, если и только если оптимальное значение задачи (3.6) нулевое, откуда и следует доказываемое утверждение. ? Итак, факт отсутствия решения у системы линейных неравенств вида Ах < b может быть установлен путем предъявления такого вектора у > 0, что уА = 0 и уЪ < 0. Упомянем еще две эквивалентные формулировки теоремы 3.24. Следствие 3.25. Существует такой вектор х>0, что Ах<Ь, если и только если неравенство уЬ > 0 справедливо для всякого вектора у > 0, удовлетворяющего условию уА > 0. Доказательство. Применим теорему 3.24 к системе (_г)**Мп)- П
§3.4. Двойственность 89 Следствие 3.26 (Фаркаш [12]). Существует такой вектор х > О, что Ах = Ь, если и только если уЬ> О для всякого вектора у, удовлетворяющего условию уА>0. Доказательство. Применим следствие 3.25 к системе f .Jjc < (_ь)> х ^ О- п Следствие 3.26 обычно называют леммой Фаркаша. Из нее, а также из теоремы 3.24 и следствия 3.25 по отдельности следует теорема двойственности 3.20. Наличие такой импликации интересно тем, что вышеупомянутые варианты леммы Фаркаша имеют несложные прямые доказательства (которые были известны еще до возникновения симплекс-метода); см. упражнения 11 и 12. Теперь мы располагаем средством для доказательства несовместности задачи ЛП. Что же насчет доказательства неограниченности? Ответ на этот вопрос содержится в следующей теореме. Теорема 3.27. Если задача ЛП неограничена, то двойственная к ней задача несовместна. Если задача ЛП имеет оптимальное решение, то оптимальное решение есть и у двойственной к ней задачи. Доказательство. Первое свойство сразу следует из утверждения 3.13. Для доказательства второго свойства предположим, что (прямая) задача ЛП тах{ос: Ах < Ь} имеет оптимальное решение х*, но двойственная задача min{yb: уА=с, у >0} несовместна (неограниченной она не может быть по первому свойству). Другими словами, не существует такого вектора у > 0, что АТу = с. Применив лемму Фаркаша (следствие 3.26), получим такой вектор z, что zAT > 0 и zc < 0. Но тогда вектор х* — z является допустимым решением прямой задачи, поскольку А(х* — z) = Ах* — Az<b. При этом с(х* — z) > сх*, что противоречит оптимальности х*. ? Итак, для пары задач ЛП возможны четыре случая: либо обе задачи имеют оптимальные решения (и тогда значения их оптимумов совпадают), либо одна из них несовместна и другая неограничена, либо обе задачи несовместны. Отметим также следующий факт. Следствие 3.28. Совместная задача ЛП вида тах{сх: Ах < Ъ) ограничена, если и только если вектор с содержится в конусе, порожденном строками матрицы А. Доказательство. Задача ЛП ограничена, если и только если ее двойственная задача совместна, т. е. существует такой вектор у > 0, что уА = с. ? Лемма Фаркаша также позволяет доказать, что каждый конечно порожденный конус является полиэдральным. Теорема 3.29 (Минковский [18], Вейль [23]). Конус является полиэдральным, если и только если он конечно порожден. Доказательство. Конечная порожденность всякого полиэдрального конуса была установлена ранее; см. лемму 3.12. Рассмотрим теперь конус С, порожденный векторами аъ ..., at. Требуется показать, что он является полиэдральным. Пусть А — матрица, строками которой служат векторы аъ ..., at.
90 Глава 3. Линейное программирование По лемме 3.12 конус D := {х: Ах < 0} порождается некоторым набором векторов Ъъ..., bs. Пусть В — матрица со строками Ьг, ..., bs. Докажем, что тогда С = {х:Вх<0}. Поскольку bjat = atbj < 0 для всех i и j, имеем С с {х: Вх < 0}. Предположим теперь, что существует такой вектор w ?С, что Bw < 0. Условие w &С означает, что не существует вектора и > 0, для которого Ати = w. По лемме Фаркаша (следствие 3.26) найдется вектор у, для которого yw < 0 и Ау > 0. Итак, —yeD. Конус D порождается набором Ъъ..., bs, поэтому —у = zB для некоторого z > 0. Но тогда 0 < — yw = zBw < 0 — противоречие. ? § 3.5. Выпуклые оболочки и политопы В данном параграфе мы установим еще несколько полезных фактов, касающихся политопов. В частности, мы покажем, что политоп — это в точности множество, являющееся выпуклой оболочкой конечного множества точек. Начнем с того, что напомним несколько простых определений. Определение 3.30. Пусть заданы векторы хъ..., хк е Rn и числа Я1?..., Хк > 0, для которых 2ji=i ^i = 1- Тогда х = 2ji=i ^-ixi называется выпуклой комбинацией векторов хъ ..., хк. Множество XQMJ1 называется выпуклым, если \х+(1—Л)уеХ для всех х, у € X и Я е [0,1]. Выпуклая оболочка множества X обозначается через conv(X) и представляет собой множество, состоящее из всех выпуклых комбинаций точек из X. Экстремальная точка множества X — это такой элемент х е. X, что х ф conv(X\{x}). Итак, множество X выпукло, если и только если все выпуклые комбинации точек из X снова попадают в X. Выпуклая оболочка множества X — это наименьшее выпуклое множество, содержащее X. Более того, пересечение семейства выпуклых множеств снова выпукло. В частности, полиэдры являются выпуклыми множествами. Докажем теперь теорему о конечном базисе политопа — фундаментальный результат, который кажется очевидным, но с трудом поддается прямому доказательству. Теорема 3.31 (Минковский [18], Штейниц [22], Вейль [23]). Множество образует политоп, если и только если оно представляет собой выпуклую оболочку конечного множества точек. Доказательство (Скрейвер [5]). Пусть Р = {х €Ш71: Лх<Ь} — непустой политоп. Очевидно, что Р= {х: (?)ес}, гдеС= {(*) eRn+l: Х> 0, Ах-ХЬ < о}. Здесь С — полиэдральный конус, поэтому по теореме 3.29 он порождается конечным множеством ненулевых векторов, скажем ( ^ J,...,(*fc J. Поскольку политоп Р ограничен, все числа Xt ненулевые. Без ограничения общности будем считать, что все Х{ равны 1. Тогда х е Р, если и только если (Э-*(?)+--*Й)
Упражнения 91 для некоторых /хъ..., [лк > 0. Иными словами, Р— выпуклая оболочка точек х1}...,хк. Пусть теперь Р — выпуклая оболочка точекx1,...,xkeRn. Тогда х е Р, если и только если (*J еС, где С — конус, порожденный набором (*Ч,..., П?Ч- По теореме 3.29 конус С полиэдральный, следовательно, С={(*):Л* + ЬА<о}. Получаем, что Р = {х е R71: Ах + Ь < 0}. ? Следствие 3.32. Политоп является выпуклой оболочкой множества своих вершин. Доказательство. Рассмотрим политоп Р. По теореме 3.31 выпуклая оболочка его вершин образует некоторый политоп Q. Очевидно, Q^P. Предположим, что найдется точка zgP\Q. Тогда существует такой вектор с, что cz> max{oc: хеQ}. Опорная гиперплоскость {х: сх = тах{су: у €Р}} политопа Р определяет его грань, не содержащую вершин. Это, однако, невозможно по следствию 3.10. ? Доказанные выше теорема 3.31 и следствие 3.32, а также приводимое далее следствие 3.33 образуют фундамент полиэдральной комбинаторики. На протяжении всей книги мы будем неоднократно ссылаться на них. Для заданного множества Е (носителя) и подмножества X ?Е определим характеристический вектор X (относительно Е) как такой вектор х е {0,1}?, что хе = 1 при е е X и хе = 0 при е е Е\Х. Следствие 3.33. Пусть (Е, &) — система множеств, а Р — выпуклая оболочка характеристических векторов элементов множества &. Пусть также задана функция с: Е —> R. Тогда тах{сдс: х е Р} = тах{с(Х): X е &}. Доказательство. Неравенство max{cx: х е Р} > max{cpQ: X е &} тривиально. Обратно, пусть х — оптимальное решение задачи тах{сл:: х ЕР} (заметим, что Р является политопом по теореме 3.31). По определению Р вектор х равен выпуклой комбинации характеристических векторов уъ ..., ук элементов множества &• x = Yti=i ^iYi Для некоторых Аъ..., Хк > 0, где 2i=1 А; = 1. Поскольку сх = J]i=1AiCyi, имеем cyi > сх хотя бы для одного индекса i е {1,..., fc}. Соответствующий вектор у{ является характеристическим для некоторого множества Y е&, удовлетворяющего условию c(Y) = су{> сх. ? Упражнения 1. Пусть Н — гиперграф, F с У (Я), х, у: F —> R. Требуется найти такие отображения х, у: V(H) \F —> R, чтобы сумма S(maxx(iO — minx(u) + maxy(v) — miny(i;)) v yee i»€e u€e yee J ee?(H) была минимальной. Покажите, что данная задача может быть сформулирована в виде ЛП.
92 Глава 3. Линейное программирование Замечание. Данный вопрос представляет собой упрощенную версию важной задачи, возникающей при проектировании СБИС (сверхбольших интегральных схем — very large scale integration, или сокращенно VLSI). Вершины гиперграфа Я отвечают элементам, которые необходимо разместить на чипе. Расположение некоторых элементов (принадлежащих F) фиксировано заранее. Основная практическая трудность (опущенная в рассмотренной формализации) заключается в том, что элементы не должны пересекаться. 2. Множество векторов хъ..., хк называется аффинно независимым, если не существует такого вектора Я е Rfc\{0}, что Ят1 = 0 и X 1=1^1*1 = 0- Пусть 0 ф X с шп. Покажите, что максимальная мощность аффинно независимого множества элементов множества X равна dimX + 1. 3. Пусть Р, Q е Rn — полиэдры. Докажите, что тогда замыкание множества conv(P U Q) образует полиэдр. Постройте пример полиэдров Р и Q, для которых conv(P U Q) не является полиэдром. 4. Покажите, что задача нахождения наибольшего шара, содержащегося в заданном полиэдре, может быть сформулирована в виде линейной программы. 5. Пусть Р — полиэдр. Докажите, что размерность любой его фасеты на единицу меньше размерности самого полиэдра Р. 6. Пусть F — минимальная грань полиэдра {х: Ах < Ь}. Докажите, что тогда Ах = Ау для всех х, у € F. 7. Пусть заданы матрица А е Rmxn и векторы Ъ е Rm, с е Rn и и е Zn. Рассмотрим задачу линейного программирования тах{сх: Ах < Ь, 0 < х < и}. Докажите, что если данная задача имеет оптимальное решение, то она также имеет оптимальное решение, в котором не более т координат являются нецелыми. 8. Сформулируйте программу, двойственную к программе (1.1) для задачи о назначении работ. Предложите несложный алгоритм, строящий решения для прямой и двойственной линейных программ в случае, когда есть всего две работы. 9. Пусть G —орграф, с: E(G) -> R+, ЕЪЕ2 с E(G), s,t е V(G). Рассмотрим следующую линейную программу: минимизировать \\ с(е)Уе e€?(G) при условиях уе > zw — zv (е = (v, w) е E(G)), zt-zs = l, ye>0 (e€Ex), ye<0 (e€E2). Докажите, что существуют такое оптимальное решение (у, z) и такое 5 е X с ^ V(G) \{t}, что уе = 1 для всех е е 5+(Х), уе = -1 при е е б~(Х) \Ег и уе = 0 для всех остальных ребер е. Указание. Рассмотрите условия дополняющей нежесткости для ребер, входящих и выходящих из множества {и е V(G): z^ < zs}.
Упражнения 93 10. Пусть Ах < Ъ — система линейных неравенств от п переменных. Умножая каждую строку на положительное число, можно превратить первый столбец матрицы А в вектор, состоящий лишь из чисел 0, —1 и 1. Тогда система Ах < Ъ может быть эквивалентно переписана в виде а[х' <bt (i = l,...,m1), -хг + а^х' < bj (;' = т1 + 1,..., т2), хг + о!кх' <Ък (к = т2 +1,..., т), где х/ = (х2,..., хп) и dp ..., о!ш — строки матрицы А с отброшенным первым элементом. Тогда можно элиминировать (исключить) переменную хг. А именно, покажите, что система Ах < Ъ имеет решение, если и только если решение есть у системы а[х' < bf (i = 1,..., m^, a'jx'-bj < Ьк-а'кх' (; = ml + 1,...,m2, к = m2 + 1,...,m). Покажите, что, применив данный метод последовательно несколько раз, мы получим алгоритм, решающий систему неравенств Ах < Ъ (или устанавливающий, что она несовместна). Замечание. Данный метод известен как метод исключения Фурье — Моцкина: он был предложен Фурье, а впоследствии изучен Моцкиным [19]. Можно также показать, что данный метод не является полиномиальным. 11 (Кун [17]). Используйте метод исключения Фурье — Моцкина (упражнение 10) для прямого доказательства теоремы 3.24 . 12. Покажите, что из теоремы 3.24 следует теорема двойственности 3.20. 13 (Моцкин [19]). Докажите следующую теорему о декомпозиции полиэдров: любой полиэдр Р может быть представлен в виде Р = {х + с:л:еХ, се С}, где X — политоп, а С — полиэдральный конус. 14*. Пусть Р — рациональный полиэдр, a F — его грань. Покажите, что множество {с: cz = max{cx: х е Р} для всех z GF} образует рациональный полиэдральный конус. 15 (Каратеодори [9]). Докажите теорему Каратеодори: если X с Rn и у € econv(X), то найдутся такие векторы хъ..., хп+1 еХ, что у econv({x1,..., хп+1}). 16. Докажите следующее обобщение теоремы Каратеодори (упражнение 15): если X с шп и у, z € conv(X), то найдутся такие векторы хъ ..., хп е X, что у econv({s,*!,...,*„}). 17. Докажите, что экстремальными точками полиэдра служат его вершины и только они. 18. Пусть Р — непустой политоп. Рассмотрим граф G(P), вершинами которого являются вершины политопа Р, а ребра отвечают одномерным граням политопа Р. Пусть х — произвольная вершина политопа Р, а с — вектор, для которого стх < max{cTz: z е Р}. Докажите, что тогда найдется такой сосед у вершины х в G(P), что стх < сту. 19*. Используя упражнение 18, докажите, что G(P) является п-связным для любого п-мерного политопа Р (п > 1).
94 Глава 3. Линейное программирование 20. Пусть Р с Rn — политоп (не обязательно рациональный) и у ф Р. Докажите, что существует такой рациональный вектор с, что шах{сх: х е Р} < су. Покажите, что данное утверждение неверно для полиэдров общего вида. 21. Пусть X с Rn — непустое выпуклое множество, X — его замыкание, у ? X. Докажите следующие утверждения. (а) Существует и единственна точка в X, находящаяся на минимальном расстоянии от точки у. (б) Существует такой вектор а € Rn \ {0}, что атх < ату для всех хеХ. (в) Если у ^ X, то существует такой вектор аеЕ", что атх < а1 у для всех (г) Если X ограничено и у ф X, то существует такой вектор а е Qn, что атх < ату для всех х € X. (е) Всякое замкнутое выпуклое множество совпадает с пересечением всех замкнутых полупространств, в которых оно содержится. Литература Общая литература [1] Bertsimas D., Tsitsiklis J. N. Introduction to Linear Optimization. Athena Scientific, Belmont, 1997. [2] Chvdtal V. Linear Programming. Freeman, New York, 1983. [3] Matousek J., Gartner B. Understanding and Using Linear Programming. Springer, Berlin, 2007. [4] Padberg M. Linear Optimization and Extensions. Second Edition. Springer, Berlin, 1999. [5] Schrijver A. Theory of Linear and Integer Programming. Wiley, Chichester, 1986. Процитированные работы [6] Avis D.y Chvdtal V. Notes on Bland's pivoting rule // Mathematical Programming Study. 1978. Vol. 8. P. 24-34. [7] Bland R. G. New finite pivoting rules for the simplex method // Mathematics of Operations Research. 1977. Vol. 2. P. 103-107. [8] Borgwardt K.-H. The average number of pivot steps required by the simplex method is polynomial // Zeitschrift fur Operations Research. 1982. Vol.26. P. 157-177. [9] Caratheodory C. Uber den Variabilitatsbereich der Fourierschen Konstanten von positiv- en harmonischen Funktionen // Rendiconto del Circolo Matematico di Palermo. 1911. Vol.32. P. 193-217. [10] Dantzig G. B. Maximization of a linear function of variables subject to linear inequalities // Activity Analysis of Production and Allocation (Т. С Koopmans, ed.), Wiley, New York, 1951. P. 359-373. [11] Dantzig G. В., Orden A., Wolfe P. The generalized simplex method for minimizing a linear form under linear inequality restraints // Pacific Journal of Mathematics. 1955. Vol. 5. P. 183-195. [12] Farkas G. A Fourier-fele mechanikai elv alkalmazasai // Mathematikai es Termeszettu- domanyi Ertesito. 1894. Vol. 12. 0.457-472.
Литература 95 [13] Gale D., Kuhn H. W., Tucker A. W. Linear programming and the theory of games // Activity Analysis of Production and Allocation (Т. C. Koopmans, ed.), Wiley, New York, 1951. P. 317-329. [14] Hoffman A. J., Kruskal J. B. Integral boundary points of convex polyhedra // Linear Inequalities and Related Systems (H. W. Kuhn, A. W. Tucker, eds.), Princeton University Press, Princeton, 1956. (Annals of Mathematical Study; №38). P. 223-246. [15] Kelner J.A., Spielman D.A. A randomized polynomial-time simplex algorithm for linear programming // Proceedings of the 38th Annual ACM Symposium on Theory of Computing. 2006. P. 51-60. [16] Klee V., Minty G. J. How good is the simplex algorithm? // Inequalities III (O. Shisha, ed.), Academic Press, New York, 1972. P. 159-175. [17] Kuhn H. W. Solvability and consistency for linear equations and inequalities // The American Mathematical Monthly. 1956. Vol. 63. P. 217-232. [18] Minkowski H. Geometrie der Zahlen. Teubner, Leipzig, 1896. [19] Motzkin T. S. Beitrage zur Theorie der linearen Ungleichungen (Dissertation). Azriel, Jerusalem, 1936. [20] Neumann J. von. Discussion of a maximum problem // Working paper. Published in: John von Neumann, Collected Works; Vol. VI (A.H.Taub, ed.), Pergamon Press, Oxford, 1963. P. 27-28. [21] Spielman D.A., Teng S.-H. Smoothed analysis of algorithms: why the simplex algorithm usually takes polynomial time // Journal of the ACM. 2004. Vol. 51. P. 385-463. [22] Steinitz E. Bedingt konvergente Reihen und konvexe Systeme // Journal fur die reine und angewandte Mathematik. 1916. Bd. 146. S. 1-52. [23] Weyl H. Elementare Theorie der konvexen Polyeder // Commentarii Mathematici Helveti- ci. 1935. Bd. 7. S. 290-306.
ГЛАВА 4 Алгоритмы линейного программирования Наибольшее влияние на развитие теории оптимизации оказали три типа алгоритмов для задачи линейного программирования: симплекс-метод (см. §3.2), методы внутренней точки и метод эллипсоидов. Каждый из этих алгоритмов имеет свои недостатки. В отличие от двух других методов, ни для одного из вариантов симплекс-метода на настоящий момент не установлена полиномиальность. В § 4.4 и 4.5 мы опишем метод эллипсоидов и докажем, что он представляет собой полиномиальный алгоритм для задачи линейного программирования. Однако метод эллипсоидов оказывается слишком неэффективным для использования на практике. Алгоритм внутренней точки и (даже несмотря на экспоненциальную сложность в худшем случае) симплекс-метод гораздо более эффективны. Оба эти алгоритма применяются на практике для решения задач ЛП. Как метод эллипсоидов, так и метод внутренней точки подходят для более широкого класса задач выпуклой оптимизации, а именно для так называемых полуопределенных программ. Преимуществами симплекс-метода и метода эллипсоидов является то, что они не требуют явного задания линейной программы. Достаточно лишь представить оракул (подпрограмму), который проверяет заданный вектор на допустимость, а если он недопустим, то предъявляет нарушенное ограничение. Этот аспект будет подробно изучен для метода эллипсоидов в § 4.6. Из него следует возможность решения многих задач комбинаторной оптимизации за полиномиальное время. В действительности для некоторых задач этот способ является единственным известным, приводящим к полиномиальному алгоритму. По этой причине в настоящей книге мы сосредоточимся на методе эллипсоидов, а не на методе внутренней точки. Необходимым требованием для наличия полиномиального алгоритма является существование оптимального решения, двоичная запись которого имеет длину, полиномиально ограниченную по размеру входа. В § 4.1 мы докажем, что данное свойство выполнено для задачи линейного программирования. В § 4.2 и 4.3 мы кратко напомним некоторые полезные и несложные алгоритмы, которые понадобятся нам в дальнейшем, в частности широко известный метод исключения Гаусса для решения систем линейных уравнений.
§ 4.1. Размеры записи вершин и граней 97 § 4.1. Размеры записи вершин и граней Объектами задачи линейного программирования являются векторы и матрицы. Поскольку для линейного программирования неизвестно ни одного сильно полиномиального алгоритма, при анализе времени работы мы ограничимся случаем рациональных входных данных. Будем предполагать, что все числа на входе заданы в двоичной системе счисления. Для того чтобы оценить размер (число бит) такого представления, введем обозначение: size(n) := 1 + TlogCN + 1)] для целых чисел п е. Z и size(r) := size(p) + size(q) для рациональных чисел г = p/q, где p,q взаимно просты (т. е. их наибольший общий делитель равен 1). Для задания вектора х = (хх,..., хп) е Qn мы перечисляем его координаты, поэтому size(jc) := п + sizeQq) + ... 4- size(xn). Для матрицы А € Qmxn с элементами atj имеем size(A) := тп + J] • . size(a?;). Конечно, точный выбор подобных выражений отчасти случаен, но, как обычно, нас интересуют значения с точностью до константных множителей. Для полиномиальных алгоритмов важно, что размеры чисел не сильно увеличиваются при элементарных арифметических операциях. Утверждение4.1. Если гъ...,гп —рациональные числа, то size(r2... гп) < sizef/i) +... + size(rn); sizeCfi +... + гп) < 2(size(r!) +... + size(rn)). Доказательство. Для целых чисел sl9..., sn, очевидно, имеем size{s1... sn) < size(sx) +... + size(sR) и sizefci +... + 5rt) < sizefci) +... + size(sn). Пусть теперь rt = Pi/qi, где pt и qt — ненулевые числа (i = 1,..., n). Тогда sizefo ... rn) < size(p!... pn) + size(q!... qn) < size^) +... + size(rn). Для доказательства второго свойства заметим, что знаменатель qx... qn имеет размер не более size(q2) + ... + size(qn). Числитель же представляет собой сумму чисел qx... q?_1piq?_l_1... qn (i = 1,..., п), так что его абсолютная величина не превосходит CI.PiI + ••• + IPnDki •••4nl- Итак, размер числителя ограничен сверху значением size(ri) +... + size(rn). ? Первое из доказанных выше свойств показывает также, что мы часто можем предполагать без ограничения общности, что все числа в описании задачи являются целыми. А именно, каждое из этих чисел можно умножить на произведение их знаменателей. Для случая сложения и скалярного произведения векторов справедливо следующее утверждение. Утверждение 4.2. Пусть х, у е Qn —рациональные векторы, тогда size(x + у) < 2(size{x) + size (у)); size(xTy) < 2(size(х) + size(y)).
98 Глава 4. Алгоритмы линейного программирования Доказательство. Используя утверждение 4.1, получаем п size(x + у) = п + 2_j size(Xi + yt) < n n < n + 2 V^ size(Xj) + 2 Y^ size(yi) = 2(size(x) + size(y)) — 3n i=l i=l и f n \ n size(xTy) = size f ^ х{у{ J < 2 ^ sizefoy,) < n n < 2 У^ size(Xi) + 2 V] size(y-) = 2(size(x) + size(y)) — An. ? i=l i=l Рост размеров чисел оказывается ограниченным и при более сложных операциях. Напомним, что определителем матрицы А = (ay)1<ij<ri называется значение п det А := ]Г sgn(7r) ]~[ аи(0, (4.1) neSn i=l где Sn — множество всех перестановок {1,..., п}, a sgn(7i) —знак перестановки п (равный 1, если я может быть получена из тождественной перестановки четным числом транспозиций, и —1 в противном случае). Утверждение 4.3. Для любой квадратной матрицы А с рациональными значениями выполняется неравенство size (det Л) < 2 size (Л). Доказательство. Запишем atj = Ptj/q^, где числа pij9 qtj взаимно просты. Пусть теперь det Л = p/q, где р и q также взаимно просты. Тогда |det А| < Пг jCIPo'l + *) и |q| < Ylij tei/l- Получаем size(q) < size(A) и, используя соотношение |р| = |(1е1А|-М<П(|Ро1 + 1)1Чо1. и заключаем, что size(p) < /^(size(py) + 1 + size(q?;0) = size(A). П U Используя данное наблюдение, мы можем доказать следующий факт. Теорема 4.4. Предположим, что рациональная задача ЛП вида тах{сдс: Ах < Ь} имеет оптимальное решение. Тогда она имеет такое оптимальное решение х, что size(x) < 4n(size(A) + size(b)), и координаты вектора х по отдельности имеют размер не более 4(size(A) + size(b)). Если дополнительно Ъ = е{ или Ъ = — е{ для некоторого базисного вектора еь то существуют невырожденная подматрица А! матрицы А и оптимальное решение х, удовлетворяющие условию size(x) < 4nsize(A')- Доказательство. По следствию 3.5 максимум в задаче достигается на некоторой грани F полиэдра {х: Ах < Ь}. Пусть F' с F — минимальная грань. По утверждению 3.9 имеем F' = {х: А'х = Ь'} для некоторой подсистемы А'х < У си-
§ 4.1. Размеры записи вершин и граней 99 стемы Ах < Ь. Без ограничения общности считаем, что строки матрицы А7 линейно независимы. Возьмем в А' максимальное множество линейно независимых столбцов, обозначим эту подматрицу через А" и приравняем остальные координаты к нулю. Тогда вектор х = (А")_1Ь', расширенный нулями, служит оптимальным решением задачи ЛП. По правилу Крамера координаты вектора х задаются равенствами = detA'" Х) detA"' где А!" получается из А" заменой ;-го столбца на Ъ'. Из утверждения 4.3 следует оценка size(x) <п + 2n(size(A"0 + size(A")) < 4n(size(A//) + size(b')). Если b = ±et, то |det(Aw)l представляет собой абсолютное значение определителя некоторой подматрицы в А. ? Размер записи грани политопа, заданного своими вершинами, можно оценить следующим образом. Лемма 4.5. Пусть Р с Rn —рациональный политоп. Пусть также задано такое число Г € N, что size(x) < Т для всех вершин х. Тогда Р = {х: Ах<*Ъ), где Ах<*Ъ — некоторая система линейных неравенств, в которой каждое неравенство ах < /3 удовлетворяет условию size(a) + size(/3) < 75п2Т. Доказательство. Предположим вначале, что политоп Р имеет полную размерность. Пусть F = {хеР: ах = /3} — такая фасета политопа Р, что Р с {х: ах < /3}. Пусть уъ ..., yt — вершины фасеты F (согласно утверждению 3.6 они будут также вершинами политопа Р). Пусть с — решение системы Мс = еъ где М — (t х п)-матрица, i-я строка которой равна yt — уг (i = 2,..., t), а первая строка образует базисный вектор, линейно независимый от остальных строк. Заметим, что гапк(М) = п (поскольку dimF = п — 1). Таким образом, имеем ст = ка для некоторого к е R\{0}. По теореме 4.4 справедливо неравенство size (с) < Лп size(M0, где М' — невырожденная (п х п)-подматрица матрицы М. Согласно утверждению 4.2 имеем size(M0 < 4пТ и sizefc7^) < 2(size(с) + sizef^)). Тогда для размера неравенства стх < 5 (или стх > 5 при к < 0), где 5 := стуг = к/3, имеем оценку size(c) + size(5) < 3 size(c) + 2Г < 48п2Г + 2Г < 50п2Г. Комбинируя эти неравенства по всем фасетам F, получаем описание политопа Р. Если Р = 0, то доказываемое утверждение тривиально, так что будем предполагать, что политоп Р не имеет полной размерности и не пуст. Пусть V — множество вершин политопа Р. Для s = (sx,..., sn) € {—1,1}п пусть Ps — выпуклая оболочка множества V и {х + s^: х е У, i = 1,..., п}. Каждое множество Ps является политопом полной размерности (см. теорему 3.31), а размер любой его вершины не превосходит Т + п (см. свойство 3.32). Итак, Ps описывается системой неравенств размера не более 50п2 (Г -I- п) < 75п2Т (заметим, что Г > 2п). Поскольку Р = П5е{-1 i}n Ps> на этом доказательство завершено. ?
100 Глава 4. Алгоритмы линейного программирования § 4.2. Цепные дроби Говоря, что числа в промежуточных вычислениях некоторого алгоритма не растут слишком быстро, мы подразумеваем, что для записи рационального числа p/q используются взаимно простые числитель р и знаменатель q. Это предположение не вызывает никаких трудностей в случае, если для любой пары чисел мы можем легко найти их наибольший общий делитель. Эта задача решается с помощью одного из старейших из известных человечеству алгоритмов. Euclid GCD (алгоритм Евклида) Вход: пара натуральных чисел р и q. Выход: наибольший общий делитель d чисел р и q, т. е. такое число d, что p/dnq/d являются взаимно простыми целыми числами. ® While р > 0 и q > 0 do: If р < q then положить q := q — I - \p else положить p := p — I - Jq. (2) Return d := max{p, q}. Теорема 4.6. Алгоритм Евклида корректен. Число итераций в нем не превосходит size(p) H-size(q). Доказательство. Корректность алгоритма следует из того факта, что множество общих делителей чисел р и q не изменяется на протяжении работы алгоритма, до тех пор пока одно из чисел не обратится в нуль. На каждой итерации р или q уменьшается не менее чем в два раза, так что всего алгоритм совершает не более log р + log q + 1 итераций. ? Поскольку все числа, встречающиеся в процессе вычисления, не превосходят р или q, представленный алгоритм является полиномиальным. Близким к алгоритму Евклида является метод построения разложения в цепную дробь. Используя это разложение, для произвольного числа можно найти рациональное приближение с ограниченным сверху знаменателем. А именно, пусть задано положительное вещественное число х. Положим х0:=хи далее будем вычислять последовательно xi+1 := ——¦=—г для i = 1,2,..., пока не окажется, что xk е N для некоторого к. Тогда имеем х = х0 = [х0\ + — = |*oJ + 1 = L*oJ + Xl LxiJ + т- L*iJ + —S" L*2J + ^ Утверждается, что данная последовательность конечна, если и только если число х рационально. Импликация в одну сторону легко получается из того наблюдения, что xi+1 рационально, если и только если х{ рационально. Доказательство в обратную сторону также несложно. Если х = p/q, то работа вышеописанной процедуры эквивалентна запуску алгоритма Евклида для пары р и q.
§4.2. Цепные дроби 101 Это наблюдение также показывает, что для заданного рационального числа p/q, где р, q > 0, (конечная) последовательность хъ х2,..., хк, определенная выше, может быть вычислена за полиномиальное время. Нижеследующий алгоритм практически совпадает с алгоритмом Евклида за тем исключением, что он дополнительно находит числа gt и ht. Далее мы докажем, что последовательность (й Ai)i€N сходится к х. Continued Fraction Expansion (алгоритм разложения в цепную дробь) Вход: натуральные числа р и q (пусть х := p/q). Выход: такая последовательность (л*=pI-/<ji)i==ofi,...> что х0 = - и xi+l := ——-j (Т) Положить i := 0, р0:= р и q0 := q. Положить g_2 := 0, g_x := 1, h_2 := 1 и h_a := 0. (2) While qt Ф 0 do: Положить at := I—J. Положить g( := а&_г + &_2. Положить ht := аД^ + ht_2. Положить qi+1 := Р{ — а&{. Положить pi+1 := qt. Положить i := i + 1. Покажем, что члены последовательности g^/ft; служат хорошими приближениями к х. Перед тем как переходить к доказательству, установим несколько вспомогательных фактов. Утверждение 4.7. Следующие свойства верны на любой итерации i представленного алгоритма: (а) at > 1 (кроме, возможно, случая i = 0) и ht > h{_i, (б) я-Л-а/ц-1 = (-1)'; (в) M-i+gifr* РЛ-1+«Л-2 (г) ft/^i ^ *> есл^ i четно, и gi/ht > х, если i нечетно. Доказательство. Свойство (а) очевидно. Свойство (б) легко доказывается по индукции. При i = 0 мы имеем ft-ify — &fri_i = g-ih0 = 1, а для всех i > 1 справедливо равенство Si-ify - Sihi-i = ft-i (аА-\ + hi-i) - hi-i faigi-i + Zi-i) = 8i-ihi-2 ~ hi-i8i-2- Свойство (в) также доказывается по индукции. При i = 0 имеем Pf&-i+fr&-2 = Pf 1 + 0 =х РЛ-1+ЧЛ-2 0 + ф-1
102 Глава 4. Алгоритмы линейного программирования При i > 1 получаем Pigj-l+<ligi-2 _ qi-l(fli-lft-2+&-3) + (Pi-l-fli-lgi-l)ft-2 _ <Li-lgi-3+Pi-lgi-2 PiK-1 + ЯЛ-2 4i-l (Oi-l^i-2 + hi-3) + (Pi-1 - ai-l4i-l)hi-2 4i-lK-3 + Pi-lK-2 ' Наконец, докажем свойство (г). Заметим, что g_2/h_2 = 0 < х < <» = g_i/h_ly а затем применим индукцию. Для доказательства индуктивного перехода воспользуемся тем фактом, что функция монотонна при а > 0 и f(Pi/qt) = я: по свойству (в). ? Теорема 4-8 (Хинчин [13]). Пусть заданы рациональное число а и натуральное число п. Тогда рациональное число )3, для которого знаменатель не превосходит п, а разность \а — )3| минимальна, может быть найдено за полиномиальное {по сумме size(n) + size (а)) время. Доказательство. Запустим алгоритм разложения в цепную дробь для х := а. Если алгоритм остановится при qt = 0 и й?_х < п, то положим /3 = g^/ft^ = а по утверждению 4.7(b). Иначе пусть i — максимальный индекс, для которого ht < тг, и пусть t — максимальное целое число, для которого thi+h^ < п (см. утверждение 4.7(a)). Поскольку а{+Лк{ + ht_i = hi+1 > п, имеем t < ai+1. Утверждается, что одно из чисел л, ._ gi ТХ7Т„ „ ._ ?&+&-! служит оптимальным решением. Знаменатели обоих чисел не превышают п. Если i четно, то у < х < z по утверждению 4.7(г). Аналогично если i нечетно, то имеем у > х > z. Покажем, что любое рациональное число p/q, заключенное между у и z, имеет знаменатель больше п. Заметим, что . . \hjgi-i-hj-\gi\ 1 '* Л hiCthi + hi-i) ftfCAi + fci-i) (с учетом утверждения 4.7(6)). С другой стороны, \z-y\ = z-P- q q J 1 _hi_1 + (t + l)hi следовательно, q > h^ + (t + l)fti > п. П Представленное выше доказательство приведено в книге Грётшеля, Ловаса и Скрейвера [1]. В ней также можно найти некоторые важные обобщения доказанного факта. § 4.3. Метод исключения Гаусса Один из наиболее важных алгоритмов в линейной алгебре носит название «метод исключения Гаусса». Как следует из его названия, он применялся Гауссом, но известен был намного ранее (см. историческую справку в книге Скрейвера [3]). Метод исключения Гаусса используется для определения ранга матрицы,
§ 4.3. Метод исключения Гаусса 103 для вычисления определителей и для решения систем линейных уравнений. Данный метод часто встречается в виде подпрограммы в алгоритмах линейного программирования, например в шаге (I) симплекс-метода. Пусть задана матрица А е Qmxri. Метод исключения Гаусса работает с расширенной матрицей Z = (В С) е Qmxfa+m)# Изначально В = А и С = J. Алгоритм преобразует В к виду (L ** J с помощью следующих элементарных операций: перестановка строк и столбцов, добавление к одной строке кратных другой строки и (на заключительном этапе) умножение строк на ненулевые скаляры. На каждой итерации матрица С изменяется так, что на протяжении работы остается справедливым свойство С А = В, где А получается из А путем перестановки строк и столбцов. Первая часть алгоритма (шаги (2) и (3)) преобразует В к верхнетреугольному виду. Рассмотрим, к примеру, матрицу Z после двух итераций; она будет иметь вид ... (Л • • • о о • • о о . . о \) Если z33 ф 0, то следующий шаг состоит в вычитании третьей строки, умноженной на zi3/z33, из i-й строки для i = 4,..., m. Если z33 = 0, то мы производим обмен третьей строки и/или третьего столбца с другой строкой или столбцом. Отметим, что при обмене двух строк мы также должны обменять соответствующие столбцы матрицы С, для того чтобы сохранился инвариант С А = В. Для поддержания матрицы А на протяжении работы мы храним перестановки строк и столбцов А в виде переменных row(i), i = 1,..., m, и col(;), ; = 1,..., п. Тогда ^ = (^row(i),col(;))iG{l,...,m}j€{l,...,n}- Вторая часть алгоритма (шаги 0 и (5)) проще первой, поскольку на ее протяжении не производится перестановок строк или столбцов. Gaussian Elimination (алгоритм исключения Гаусса) Вход: матрица A = (a0)eQmxn. Выход: ранг г матрицы А, максимальная невырожденная подматрица А! — = (flrowCOiCoico^UeU,...^} матрицы Л, определитель d = det А', а также обратная матрица (Л7)"1 = fe,n+;)иец,...>г}- (Т) Присвоить г := 0 и d := 1. Присвоить ztj := а^, row(i) := i и col(;) := j (i = 1,..., m, ; = 1,..., n). Присвоить zin+j := 0 и %i n+i:— 1 для всех i, j, 1 ^ i, j ^ m, i Ф j. (Zii/0 0 0 Z\2 z22^0 0 Z13 Z23 Z33 Z\n • ' z2n • • z3n V о 1 0 0 *2,n+l 1 0 Z3,n+1 Z3,n+2 1 0 zm,n+l zm,n+2 О
104 Глава 4. Алгоритмы линейного программирования (2) Пусть р е {г + 1,..., т] и q е {г +1,..., п}, причем zpq ^ 0. If таких р и q не существует then goto (4). Присвоить г := г + 1. If р ф г then обменять zpj и z^ (j = 1,..., п + m), обменять ^ п+р и г?>п+г (i = 1,..., m), а также обменять row(p) и row(r). If q ф г then обменять ziq и zir (i = 1,..., т) и обменять col(q) и col(r). (3) Присвоить d:=d-zrr. For i :=r + l to m do: Присвоить a := z^/z^. For ; := r to n + r do: ztj := Zy — az^-. Goto (2). @ For fc := r down to 2 do: For i := 1 to fc — 1 do: Присвоить a := zik/zkk. For ; := fc to n + r do: ztj := ztj — azkj. (5) For fc := 1 to r do: Присвоить a := l/zfcfc. For ; := 1 to n + r do: zfcj := azfcj. Теорема 4.9. Алгоритм Gaussian Elimination работает корректно и завершается за 0(mnr) шагов. Доказательство. Вначале заметим, что всякий раз перед выполнением шага (2) имеем za ф0 для всех iе{1,..., г} и г^ = 0 для всех ; € {1,..., г} и i€ {; +1,..., m}. Следовательно, det((z0-)i,je{l,2,...,r}) = *и*22 ...zrr = dф0. Поскольку в квадратной матрице добавление кратного одной строки к другой строке не изменяет значение определителя (этот широко известный факт следует прямо из определения (4.1)), имеем det((z0Oue{iA...,r}) = det((arow(0>coia))U€{1A...,r}) в любой момент времени перед шагом (5), а значит, определитель d вычисляется правильно. Далее, А' — невырожденная (г х г)-подматрица матрицы А. Поскольку матрица (Zij)ie{it...tm}je{it...tn} в конце работы имеет ранг г, а преобразования не изменяют ранг, матрица А также имеет ранг г. Более того, равенство т / j zi,n+/arow0"),col(k) = zik для всех i е {1,..., m} и fc e {1,..., n} (т. е., в наших обозначениях, С А = В) справедливо на всем протяжении работы алгоритма. (Заметим, что для любого j = г + 1,..., т всегда справедливы равенства Zjn+j = 1 и zin+j = 0 при i ф j.)
§ 4.3. Метод исключения Гаусса 105 Поскольку (Zy-)ije{i,2,-,r} в момент окончания работы является единичной матрицей, матрица (А7)-1 также вычислена правильно. Количество шагов алгоритма, очевидно, составляет 0(гтп + г2(п + г)) = 0(тпг). ? Для доказательства полиномиальности метода исключения Гаусса нам осталось установить, что все числа, возникающие в процессе его работы, имеют размеры, полиномиально ограниченные относительно размера входа. Этот факт не является тривиальным и доказывается следующим образом. Теорема 4.10 (Эдмондс [5]). Алгоритм Gaussian Elimination является полиномиальным. Каждое число, возникающее в процессе его работы, может быть записано с использованием 0(т(т + п) size(A)) бит. Доказательство. Вначале докажем, что все числа, встречающиеся на шагах (2) и (3) алгоритма, равны 0, 1 или частному определителей некоторых подматриц матрицы А. Для этого заметим, что значения ztj при i < г или ; < г более не изменяются алгоритмом. Значения ztj при j >п + г равны 0 (если j фп + i) или 1 (если j = п + i). Более того, для всех 5 е {г + 1,..., т] и t е {г + 1,..., п + т] мы имеем _ ^et((2u)t6{l,2,...,r,s},jg{l,2,...,r,t}) %st~ det((z0)U€{1>2v..jr}) (Это равенство можно доказать с использованием разложения определителя det((Zy-)i€|lj2,...,r,s},j€{i,2,...,r,t}) по последней строке с учетом того, что zsj = 0 для всех 5 € {г +1,..., т] и всех j е{1,..., г}.) Как уже отмечалось в доказательстве теоремы 4.9, справедливо равенство det((Zy)lJG{1)2,...,r}) =det((arow(i) со1(;))ие{12)...,г}), поскольку добавление кратного одной строки к другой строке квадратной матрицы не изменяет ее определителя. Аналогичным образом det((zij)iG|12v..,r,s}j€{i,2,...,r,t}) = det((arow(i)jCOlQ))ie{1)2,...,r,s},jG{i,2,...,r,t}) при s е {г +1,..., т] и t е {г + 1,..., п}. Более того, det((Zy)iG{lj2,...,r,s},j€{i)2,...,r,n+t}) = det((arow(f)jCol(J))iG{lj2)...)r)s}\{t}jG{i,2,...,r}) для всех s G {г + 1,..., т} и t е {1,..., г}. Последнее свойство получается из разложения определителя в левой части (после шага (Г)) по столбцу п +1. Итак, на любом из шагов (2) и (3) числа ztj равны 0, 1 или частному определителей двух подматриц А. Следовательно, согласно утверждению 4.3 каждое из чисел на шаге (2) и (3) может быть записано с использованием 0(size(A)) бит. Заметим наконец, что шаг 0 эквивалентен применению шагов (2) и (3) при подходящих значениях р и q (при этом порядок просмотра первых г строк и столбцов меняется на обратный). Следовательно, всякое число, возникающее на шаге 0, записывается с использованием o(size((Zy)lG^1 m}je^v..jm+n})) бит, что составляет 0(m(m + п) size (А)). Наиболее простой способ поддержания короткой записи для чисел ztj состоит в использовании несократимых дробей (т. е. таких, у которых числитель
106 Глава 4. Алгоритмы линейного программирования и знаменатель взаимно просты). Такой формы записи можно достичь, запуская алгоритм Евклида после каждой операции над числами. Общее время работы при этом будет полиномиальным. ? Несложно также реализовать метод исключения Гаусса в виде сильно полиномиального алгоритма (см. упражнение 4). Итак, мы можем проверить за полиномиальное время, является ли заданное множество векторов линейно независимым. Можно также вычислить за полиномиальное время определитель и обратную матрицу для всякой невырожденной матрицы. (Обмены строк и столбцов, производимые алгоритмом, лишь меняют знак определителя.) Более того, справедливо следующее утверждение. Следствие 4.11. По заданной матрице А е Qmxn и вектору Ъ € Qm можно найти за полиномиальное время такой вектор х е Qn, что Ах = Ъ, или выяснить, что такого вектора не существует. Доказательство. Вычислим, используя метод исключения Гаусса, максимальную невырожденную подматрицу А' = (ar0w(i),coic/))ue{i,...,r} матрицы А, а также обратную матрицу (АО-1 = (*i>n+j)Ue{1>...,r}. Далее положим хсо10) := ??=12J>+fcbrow(fc) для всех j = 1,..., г и хк := 0 для всех к ф {col(l),..., col(r)}. Тогда при i = 1,... г мы получим п г г г / , ai<m(i)jxj = ^j arow(i),colU)*colO") = 2и arow(i),col(j) 2^j ZJ>+fckrow(k) = j=l j=l j=l fc=l r r = 2-J ^row(fc) Z-J aroMi),co\(j)ZJ,n+k = brow(0* fc=l j=l Остальные строки матрицы А с индексами, не попадающими в множество {row(l),..., row(r)}, являются линейными комбинациями рассмотренных строк, поэтому либо вектор х удовлетворяет условию Ах = Ь, либо вектора с таким свойством не существует. ? § 4.4. Метод эллипсоидов В этом параграфе мы изучим так называемый метод эллипсоидов, изначально разработанный Юдиным, Немировским [9] и Шором [16] для задач нелинейной оптимизации. Хачиян [12] показал, что подходящая его модификация позволяет решать задачи ЛП за полиномиальное время. Наше изложение во многом опирается на работы Грётшеля, Ловаса и Скрейвера [8]), Блэнда, Гольдфарба и Тодда [4], а также книгу Грётшеля, Ловаса и Скрейвера [1], которую мы рекомендуем для дальнейшего изучения темы. В первом приближении идея метода эллипсоидов такова. Как мы покажем в утверждении 4.16, достаточно либо найти произвольное допустимое решение задачи ЛП, либо установить ее несовместность. Наша цель — найти допустимое решение задачи ЛП. Предположим, что изначально нам известен эллипсоид,
§ 4.4. Метод эллипсоидов 107 заведомо содержащий все решения задачи (в качестве такого эллипсоида можно взять достаточно большой шар). На каждой итерации к мы проверяем, не окажется ли центр хк текущего эллипсоида допустимым решением. Если да, то алгоритм завершает работу. Иначе построим гиперплоскость, проходящую через хк и такую, что все решения задачи располагаются по одну сторону от нее. Теперь вместо целого эллипсоида область поиска сужается до полуэллипсоида (в котором по-прежнему содержатся все решения). Возьмем минимальный эллипсоид, целиком содержащий вышеуказанный полуэллипсоид, и продолжим итерации. Определение 4.12. Эллипсоид представляет собой множество вида Е(Д,x) = {z€Rn:(z-хУА'1 (z-х) < 1} для некоторой симметричной положительно определенной (п х п)-матрицы Л. Отметим, что множество В(х, г) := Е(г2/, х) (где J — единичная (п х п) -матрица) образует п-мерный евклидов шар с центром х и радиусом г. Как известно, объем эллипсоида Е(Л, х) равен volume(E(A, х)) = л/detA volume (В (0,1)) (см. упражнение 7). Для заданного эллипсоида Е(А, х) и гиперплоскости {z: az = ах} минимальный эллипсоид E(A;,xf), содержащий полуэллипсоид Е1 = {z G Е(Л, х): az > ах), называется эллипсоидом Лёвнера—Джона для Е' (см. рис. 4.1). Его параметры задаются следующими формулами: А' = -^~т(а- -ттЬъЛ, х' = х + ^гЪ, Ъ = -^=Аа. n2-iv n + 1 J' n + 1 ' yfc^Aa Одна из трудностей метода эллипсоидов состоит в том, что вычисление Ъ сопровождается извлечением квадратного корня. Данное вычисление выполняется приближенно, и, поскольку нам придется иметь дело с ошибкой округления, Рис. 4.1
108 Глава 4. Алгоритмы линейного программирования необходимо слегка увеличить радиус следующего эллипсоида. Приведем более подробное описание, которое учитывает данное обстоятельство. Ellipsoid (метод эллипсоидов) Вход: число л € N, л > 2, число N € N, вектор х0 € Qn и число R е Q+, R > 2. Выход: эллипсоид ?(An,jcn). (1) Присвоить р := \6N + log(9n3)"|. Присвоить А0 := R2/, где I— единичная (л х л)-матрица. Присвоить fc := 0. (2) Выбрать произвольный вектор ак € Qn \ {0}. (3) Присвоить Ък := —p=Afcafc. Присвоить хк+1 :« х*+1 := xfc + ^pybfc. Присвоить Afc+1 :« Л*+1 := ^±3 ^ _ -A_bfcbfcT). (Здесь знак :ъ обозначает, что вычисление производится с точностью до р двоичных разрядов после запятой; при этом матрица Ак+1 должна оставаться симметричной.) (4) Присвоить fc := fc + 1. If fc < N then goto (2) else stop. Итак, на каждой из N итераций вычисляется приближение Е(Ак+1,хк+1) к минимальному эллипсоиду, содержащему Е(Ак, хк) П {z: akz > акхк}. Остались непроясненными два вопроса, а именно, как найти ак и как выбирать N. Мы обратимся к ним в следующем параграфе, а сейчас докажем несколько лемм. Пусть ||х||—евклидова норма вектора х, а ||А|| := тах{||Ах||: ||х|| = 1} — норма матрицы Л. Для симметричных матриц ||Л|| совпадает с максимумом из модулей собственных значений, а в общем случае ||Л|| = тах{л:тЛдс: ||дс|| = 1}. Первая лемма утверждает, что множество Ек :=Е(Ак, хк) действительно представляет собой эллипсоид. Более того, абсолютные значения чисел, участвующих в его описании, не превышают R2 • 2N + 2slze(*o). Следовательно, каждая итерация метода эллипсоидов состоит из О (л2) шагов вычисления, на каждом из которых мы оперируем числами длиной 0(р + size(afc) -I- size(R) + size(jc0)) бит. Лемма 4.13 (Грётшель, Ловас и Скрейвер [8]). Пусть к € {0,1,...,N}. Тогда матрица Ак положительно определена и справедливы неравенства IM<||x0||+R-2fc, ||AJ|<R2-2fc и \\А?\\<ВГ2-4к. Доказательство. Воспользуемся индукцией по fc. Для fc = 0 утверждения леммы очевидны. Предположим, что они верны для некоторого fc > 0. Прямым вычис-
§4.4. Метод эллипсоидов 109 лением несложно показать, что (А* ri _ 2п2 ( 1 2 <^< ^ ^fc+iJ ~ 2п2 + з V к n-1 aJkAkak J' (4.2) Таким образом, СА?+1)-1 раскладывается в сумму положительно определенной и неотрицательно определенной матриц, а значит, является положительно определенной. Следовательно, матрица А?+1 также положительно определена. Заметим, что для любых неотрицательно определенных матриц АиВ справедливо неравенство ||А|| < ||А + В||. Следовательно, KJI = 2п2 + 3 2п2 Ак- гКЫ <^\\Ak\\<%R>.2K n + lUkU*\ Поскольку (п х п)-матрица, все элементы которой равны 1, имеет норму п, матрица Ак+1 — Ак+1, все элементы которой по абсолютной величине не превышают 2~р, имеет норму не более п • 2~р. Отсюда получаем \\Ак+1\\ < ||А*+1|| + ||Afc+1 - А*+1|| < fR2 ¦ 2к + п ¦ 2-г < R2 ¦ 2к+1 (здесь мы воспользовались грубой оценкой 2_р < 1/п). Из линейной алгебры известно, что для всякой симметричной положительно определенной (п х п) -матрицы А существует такая симметричная положительно определенная матрица В, что А = ВВ. Полагая Ак = ВВ для В = Вт, мы получаем _ \\Акак\\ _ А аткА2как _ А (Вак)тАк(Вак) гг— к_г yjalAkak \ акАкак N УЬак) Wak) Используя эту оценку (а также снова индуктивное предположение), получаем \\xk+i\\ < 11**11 + jTTi llbkll + Itot+i -K+iW < < Hxoll + R ¦ 2k + ^R• 2fc-a + Vii• 2-p < ||x0|| + R¦ 2k+\ Оценим норму (A?+1)_1 из условий (4.2) и равенства ||aka?|| = акак: _ 2п2 Л. !,, 2 alBA-klBak\ _2n2 + 3\J|A* " + п-1 alBBak )^ 2n 2n2 ^(HVll + ^llVll) < ^l|A^||<3R-2-4fc. (4.3) Пусть Я— наименьшее собственное значение матрицы Ак+1, и пусть и — собственный вектор, отвечающий Я, причем ||i>|| = 1. Тогда, используя соотношение А?+1 = СС, справедливое для подходящей симметричной матрицы С, мы получаем Я = v'Ak+1v = v'A*k+1v + v4Ak+1-A*k+1)v = vrc"^-iCv + vT(Ak+1 - A*k+1)v > > II (А^ГЧГ1 - ||Afc+1 - A*+1|| > k2 • 4"fc -n ¦ 2"" > R2 ¦ 4~{k+1\
по Глава 4. Алгоритмы линейного программирования где использовано неравенство 2 р < ^- • 4 к. Поскольку А > О, матрица Ак+1 положительно определена. Более того, Покажем теперь, что на каждой итерации текущий эллипсоид содержит пересечение Е0 и предыдущего полуэллипсоида. Лемма 4.14. Для всех к = О,..., N — 1 справедливо вложение Ек+1 2{хеЕкПЕ0: акх > акхк}. Доказательство. Пусть х е ЕкП Е0, причем акх > акхк. Используя равенство (4.2), произведем следующие вычисления: (х-4+1ПА*к+1Г\х-х*+1) = = Нп^ ((.х-хк)тА7\х-хк) + -^г(х-хкУ-^р^(.х-Хк) + 2n2 + 3V/ к п-1К *¦' alAkakK kJ + (п + 1)ЧЬА bfc+""l «1ДА J n + 1 Г* bfc+n-la^aJJ- ^ ((,-xfc)V(x-xfc) + -A_(x-xfcr^-(x-xk) + 2п2 2п2 + (n + l)H1+n-l-/ n + 1 ,/^Т^- Il+n-l)J- \°-кпк^к Поскольку xeiifc, получаем, что (л:—xfc)TAfc1(x—хк) < 1. Введем обозначение *1(х-хк) t := тогда VakAkak ^-^+1)т(4+1ГН--4+1)<^(1 + ^2 + ^Т-А0- Поскольку Ь^Л^1^ = 1 и Ь^А"1 (х — хк) = t, имеем 1>(х- хк)тА-г (х - хк) = (х-хк- tbfc)T A"1 (х-хк- tbk) + t2> t2, так как матрица Aj"1 положительно определена. Таким образом, из неравенства акх > акхк получаем, что 0 < t < 1, откуда следует, что (*-** )Т(А* )-\х-х*)< 2п4 *k+i' v*k+i' ^ k+*J 2п4 + п2-3' Осталось оценить ошибку, возникшую при округлении: Z := Цх-ХыУ^АыГКх-х^-к-х^ПА^ГНх-х^ < < |(х-xfc+i)T(At+i)-1 (л^+i -**+i)| + \(.х*к+1-хк+1У(Ак+1Г\х-х*к+1)\ + + \(х-х*к+1У({Ак+1Г1-{Ак+1Г*Кх-х*к+1)\ < < Нх-х^Н • IKAt+a)"1!! • ||**+1 -хк+1\\ + \\х*к+1-хк+1\\ ¦ IKA^r1!! • II*-^Н +
§4.4. Метод эллипсоидов 111 +11*-4+1112 • II0W-1II • 11К+1)-г|| • IK+1 -Afc+1||. Используя лемму 4.13 и условие хе?0, мы получаем lk-xfc+1||<||x-Xol| + |kfc+1-x0||<R + R-2N и \\x-x*+1\\<\\x-xk+1\\ + ^i-2^<R-2N+1. Теперь воспользуемся неравенством (4.3) и получим Z < 2(R • 2N+1) (Я"2 ¦ 4N) (VE ¦ 2~р) + (R2 ¦ 4N+1) (R~2 • 4N) (3JT2 • 4N_1) (n • 2"p) = = 4RT1 ¦ 23N v^ • 2"p + 3iT2 ¦ 26JVn ¦ 2~p < 26iVn ¦ 2~p < -Ц 9n2 по определению p. Комбинируя полученные оценки вместе, получаем (х-хк+1Г(Ак+1ГЧх-хк+1) < 2n4fn42_3 + ^j < 1. П На каждой итерации объем текущего эллипсоида уменьшается в постоянное число раз. Лемма 4.15. Для всех к = О,..., N — 1 справедливо неравенство volume(Efc+1) < i/(5„) volume (Efc) Доказательство (Грётшель, Ловас и Скрейвер [1]). Запишем volume(Efc+1) = jdetAk+l = /detA*+1 JdetAk+1 volume(?fc) V detAfc V detAfc V detAJ+1 и оценим два множителя по отдельности. Вначале заметим, что detA*+1 V 2п2 J V n + 1 <4aJ detAfc aka[Ak Матрица -jj— имеет единичный ранг, а число 1 является ее единственным CZfcAfcQfc ненулевым собственным значением (которому отвечает вектор ак). Определитель матрицы равен произведению собственных значений, поэтому detA^l - (2П2 + Зу(1 _ _2Л з/(2п) е-2/п _ -1/(211) detAfc "I 2n2 i V1 n + l)^e е ~е где мы использовали оценку 1 + х < е* для всех х и неравенство ( ——г 1 < е-2 при п > 2. Для оценки второго множителя воспользуемся неравенством (4.3) и хорошо известным фактом, гласящим, что det? < ||В||П для любой матрицы В: ^±1 = det(/ + {А*к+1ГЧАк+1 -4+1)) < < II' + (^+i)_1(Afc+1 -л*+1)||" < (||Л| + IKAj^r1!! • \\Ак+1-Ак+1\\)п < < (1 + (R-24fc+1)(n • 2-"))" < (l + ^j-)" < e1^ — 4 R2 (здесь также использовано неравенство 2 р < 3 N < здк+i)-
112 Глава 4. Алгоритмы линейного программирования Теперь мы можем заключить, что volume(?fc+1) _ /detAj^ JdetAk+1 1/(4n) 1/(20n) 1/(5n) volume(?fc) V detAfc VdetA*+1^e e e §4.5. Теорема Хачияна В данном параграфе мы докажем теорему, установленную Хачияном и гласящую, что метод эллипсоидов, примененный к задаче линейного программирования, приводит к полиномиальному алгоритму. Докажем вначале, что для наших целей достаточно предъявить алгоритм, проверяющий совместность систем линейных неравенств. Утверждение 4.16. Предположим, что существует полиномиальный алгоритм для решения следующей задачи: по заданной матрице А е Qmxri и вектору Ъ е Qm нужно установить, пусто ли множество {х: Ах < Ь}. Тогда существует полиномиальный алгоритм для задачи линейного программирования, который находит базисное оптимальное решение, если оно существует. Доказательство. Пусть задана ЛП вида тах{ос: Ах < Ь}. Проверим вначале, что прямая и двойственная программы являются совместными. Если хотя бы одна из них несовместна, то с учетом теоремы 3.27 доказательство завершено. Иначе по следствию 3.21 достаточно построить элемент множества {(*, у): Ах < Ь, уА = с, у > 0, сх = уЪ]. Покажем (используя индукцию по fc), что решение совместной системы из fc неравенств и I равенств сводится к к вызовам подпрограммы, проверяющей полиэдр на пустоту, и некоторой дополнительной работе, требующей полиномиального времени. Для к = О решение может быть легко найдено с помощью метода исключения Гаусса (следствие 4.11). Пусть теперь к > 0. Пусть ах < /3 — одно из неравенств системы. Вызвав подпрограмму, мы сможем проверить, становится ли система несовместной при замене ах < j3 на ах = /3. Если да, то данное неравенство избыточно и может быть отброшено (см. утверждение 3.8). Если же нет, то заменим неравенство на равенство. В обоих случаях мы уменьшаем число неравенств, так что к полученной системе применимо предположение индукции. Если у системы есть базисные допустимые решения, то вышеописанная процедура найдет одно из таковых. Действительно, получающийся в итоге комплект условий содержит максимальную совместную подсистему системы Ах = Ъ. ? Перед тем как применить метод эллипсоидов, необходимо позаботиться о том, чтобы полиэдр был ограниченным и имел полную размерность. Утверждение 4.17 (Хачиян [12], Гач и Ловас [7]). Пусть заданы матрица AeQmxn и вектор Ъ е Qm. Система Ах < Ь имеет решение, если и только если решением обладает система Ах < Ъ + el, -RU < х < RI,
§4.5. Теорема Хачияна 113 где I — вектор, все координаты которого равны 1, 1/в = 2п • 24(size(A)+slze(b)) и д = ^ _|_ 24(size(A)+size(b))# Если система Ах < Ъ имеет решение, то volume({xeRn: Ax<b + e1l, -RU<x<RU}) > (—^Ьй))". Доказательство. Ограничения вида —RU < jc < RU не влияют на совместность задачи по теореме 4.4. Предположим теперь, что система Ах < Ь не имеет решения. По теореме 3.24 (разновидность леммы Фаркаша) найдется такой вектор у > О, что уА = 0 и уЪ = —1. Применяя теорему 4.4 к min{Uy: у > О, Лту = 0, Ьту = —1}, мы заключаем, что вектор у может быть выбран так, чтобы его координаты по модулю были меньше 24(size(A)+slze(b)). Таким образом, у(Ъ + el) < -1 + (n + i)24(size^+size(b»6 < 0. Снова применяя теорему 3.24, получаем, что система Ах < Ъ + el не имеет решений. Для доказательства второго утверждения заметим, что если вектор х € Rn таков, что Ах < Ъ, и его координаты по модулю не превосходят R — 1 (см. теорему 4.4), то множество {х е Rn: Ах < Ъ + el, — Rl < х < М} содержит все такие точки z, что Hz-xlU < 21е(А). ? Заметим, что вышеописанные изменения в системе неравенств приводят к росту ее размера не более чем в 0(т + п) раз. Теорема 4.18 (Хачиян [12]). Существует полиномиальный алгоритм для задачи линейного программирования (с рациональными входными данными). Данный алгоритм находит базисное допустимое решение задачи, если оно существует. Доказательство. Согласно утверждению 4.16 достаточно уметь проверять совместность системы вида Ах: < Ь за линейное время. Преобразуем данную систему, как указано в утверждении 4.17. Получим политоп, который либо пуст, либо (2е \п —^ттг) • n2slze(A) J Запустим метод эллипсоидов, полагая х0 = 0, R = n(l + 24(slze(A)+slze(b))), N = = |"10n2(21ogn + 5(size(A) + size(b)))"|. На каждом шаге (2) мы проверяем справедливость условия хк € Р. В случае положительного ответа работа завершена. Иначе возьмем нарушенное неравенство ах < {} системы Ах < Ъ и положим ак := -а. Покажем, что если алгоритм не обнаружит точку хк е Р за N итераций, то политоп Р пуст. Для доказательства заметим, что Р с ?fc для всех к: при fc = 0 это очевидно из построения Р и R, а шаг индукции описан в лемме 4.14. Итак, мы имеем Р QEN. Вводя обозначение s := size (А) + size(b), по лемме 4.15 получаем volume(EN) < volume(E0)e"N/(5n) < (2R)ne"N/(5n) < < (2п(1 + 24s))nn-4ne-l0ns < п~2п • 2~5ns.
114 Глава 4. Алгоритмы линейного программирования С другой стороны, из того, что Р Ф 0, следует, что volume(P) >{^Т= (^)" = и"2" • 2—, и мы получаем противоречие. ? Оценивая время работы при решении задачи тах{ас: Ах < Ь} вышеизложенным методом, мы получим асимптотику 0((п + m)9(size(A) -I- size(b) + size(c))2) (упражнение 9), которая полиномиальна, но совершенно непригодна для практических применений. На практике используются либо симплекс-метод, либо алгоритмы внутренней точки. Впервые полиномиальный алгоритм внутренней точки для решения задач линейного программирования был предложен Кармар- каром [10]. Мы не приводим его в данной книге. На текущий момент не известно ни одного сильно полиномиального алгоритма для задачи линейного программирования. Однако Тардош [18] показала, что существует алгоритм для решения задач вида тах{сх: Ах < Ь}, время работы которого полиномиально зависит исключительно от величины size (Л). Для многих задач комбинаторной оптимизации, в которых А представляет собой 0-1-матрицу, этот способ приводит к сильно полиномиальному алгоритму. Результат Тардош был обобщен Франком и Тардош [6]. § 4.6. Задачи отделения и оптимизации Описанный выше метод (в частности, утверждение 4.16) требует, чтобы рассматриваемый полиэдр был задан явно путем указания списка определяющих его неравенств. Более подробный анализ, однако, показывает, что эти требования можно ослабить. Достаточно лишь иметь подпрограмму, которая по заданному вектору х выясняет, выполняется ли условие х еР, а если нет, то предъявляет отделяющую гиперплоскость, т. е. строит такой вектор а, что ax> тах{ау: у€Р}. Мы докажем этот факт для политопов полной размерности. Общий (и более сложный) случай приведен в работе Грётшеля, Ловаса и Скрейвера [1] (или Падберга [15]). Результаты, изложенные в настоящем параграфе, получены Грёт- шелем, Ловасом и Скрейвером [8], а также независимо Карпом и Пападимит- риу [11] и Падбергом и Рао [14]. Опираясь на результаты данного параграфа, мы можем решать линейные программы определенного вида, несмотря на то что отвечающие им политопы имеют экспоненциально много фасет. Многочисленные примеры такого рода встретятся нам далее; см., например, следствие 12.22 или теорему 20.34. Переходя к двойственной ЛП, можно также изучать линейные задачи с большим числом переменных. Пусть PCR" — политоп полной размерности или, в более общем случае, ограниченное выпуклое множество полной размерности. Предположим, что нам известна размерность м, а также два таких шара В(х0, г) и В(х0,Я), что В(х0, г) с р с B(jc0, R). При этом мы не предполагаем известной систему неравенств, определяющую Р. В действительности подобное предположение бессмыс-
§ 4.6. Задачи отделения и оптимизации 115 ленно, если мы хотим научиться решать линейные задачи с экспоненциальным числом ограничений за полиномиальное время, а также оптимизировать линейные функционалы на выпуклых множествах, задаваемых нелинейными ограничениями. Ниже мы докажем, что при некоторых естественных предположениях мы можем оптимизировать линейный функционал по полиэдру Р за полиномиальное время (не зависящее от числа ограничений) при условии, что мы располагаем так называемым отделяющим оракулом. Последний представляет собой подпрограмму, решающую следующую задачу. Separation (задача отделения) Дано: Надо: выпуклое множество Р с Rny вектор у € Q71. либо выяснить, что у € Р, либо найти такой вектор при всех х е Р. deQn, что dx <dy Отметим, что при у ф Р искомый вектор d заведомо существует, если Р — рациональный полиэдр или выпуклый компакт (см. упражнение 21 из гл. 3). Мы считаем, что множество Р задано с помощью подобного отделяющего оракула, и хотим построить алгоритм с оракулом, решающий задачу оптимизации и использующий оракул как черный ящик. В алгоритме с оракулом мы можем в любой момент задать оракулу запрос и получить правильный ответ за один шаг. При таком способе оракул рассматривается как подпрограмма, время работы которой не учитывается. (Формальное определение данного понятия будет дано в гл. 15.) Оказывается также, что часто достаточно иметь оракул, решающий задачу отделения приближенно. Говоря точнее, мы предполагаем наличие оракула для следующей слабой задачи отделения. Weak Separation (слабая Дано: Надо: задача отделения) выпуклое множество Р с Rn9 вектор с € Q", либо найти такой вектор d € Q*, что вектор у' € Р, что су < dx < dy при всех х € Р. число 6 с/ + е, > 0, вектор у либо €Qn. найти такой Используя слабо отделяющий оракул, мы сможем решать линейные программы приближенно. Weak Optimization (слабая задача оптимизации) Дано: число п е N, вектор с € Qn, число в > 0, выпуклое множество Р Я Rn, заданное оракулом, решающим слабую задачу отделения для Р, с и е/2. Надо: найти такой вектор у € Р, что су > sup{cx: х € Р} — е.
116 Глава 4. Алгоритмы линейного программирования Отметим, что последние два определения отличаются от тех, что приведены, например, в работе Грётшеля, Ловаса и Скрейвера [8]. Однако эти подходы по сути эквивалентны; указанные выше формы определений понадобятся нам также в § 18.3. Нижеследующий вариант метода эллипсоидов решает слабую задачу оптимизации для случая ограниченных выпуклых множеств полной размерности. Grotschel — Lovasz — Schrijver Algorithm (алгоритм Грётшела—Ловаса — Скрейвера) Вход: число п € N, п > 2, вектор с € Qn, число е, О < е < 1, выпуклое множество Р СЕ", заданное оракулом, решающим слабую задачу оптимизации для Р, с и е/2, точка х0 € Qn и такие числа г, Re Q+, что В(х0,г)срсв(х0,Я). Выход: вектор у* € Р, для которого су* > sup{cx :xgP}-6. (1) Присвоить R := max{R, 2}, г := min{r, 1} и 7 := max{||c||, 1}. Г 6.R^Y и Присвоить N := 5п2 In |. Присвоить у* :=х0. (2) Запустить алгоритм Ellipsoid, при этом значение ак на шаге (2) вычислять следующим образом. Запустить оракул слабой задачи отделения для у = хк. If оракул вернул такой вектор у' е Р, что су < су' + е/2 then: If су' > су* then присвоить у* := у7. Присвоить ак := с. If оракул вернул такой вектор d е Qn, что dx < dy для всех х е Р then: Присвоить ak:=—d. Теорема 4.19. Алгоритм Grotschel - Lovasz - Schrijver (алгоритм Грётшела — Ловаса — Скрейвера) корректно решает слабую задачу оптимизации для ограниченных выпуклых множеств полной размерности. Время его работы составляет 0(пва2 + n4a/(size(c), size(e), п size(x0) + п3а)), R2Y где а = log—- и f (size (с), size (е), size (у)) — оценка времени работы оракула слабой задачи отделения для Р со входом с, е, у. Доказательство (Грётшель, Ловас и Скрейвер [8]). Время работы каждой из N = 0(п2а) итераций метода эллипсоидов составляет О (n2(n2a + size(R) + size(jc0) + q)) плюс время на один вызов оракула, где q —размер выхода оракула. По лемме 4.13 имеем size (у) < n(size(x0) + size(R) + N),
§ 4.6. Задачи отделения и оптимизации 117 поэтому общее время работы равно 0{пла(п2а + size(x0) + /(size(c), size(e), п size(x0) + n3a))), как и указано выше. По лемме 4.14 имеем {xGP:cx>cy* + |} QEN. Пусть z G Р — такой вектор, что cz > sup{ac: jc g P} — e/6. Можно считать, что cz > су* + e/2; в противном случае доказательство завершено. Рассмотрим выпуклую оболочку U, построенную для z и (п — 1)-мерного шара В(х0, г)Г\{х: сх = сх0} (см. рис.4.2). Имеем Uср, и, следовательно, множество U' := {х G U: сх > су* + е/2} содержится в EN. Объем множества U' составляет volume(L/0 =volume([/)(cz-cy,-6/2)" = V^r"-1^^" (cz-^-e/2)", V J V J\ CZ-CXQ J n l Tl\\c\\ V CZ-CXq J где через Vn обозначен объем п-мерного единичного шара. Так как volume (I/') < < volume (EN), а из леммы 4.15 следует оценка volume(?N) < e"N/(5n) volume(E0) = е"^/(5п)УпКп, получаем, что V»-l„IMI\1/n CZ С учетом неравенства cz —сдс0 < ||с|| • ||я — х0|| < \\c\\R имеем ЭП-1 \i/n _ ^2 7^3' cz-cy*- f < Hc||e-^5^R(gS)1/n < 2||с||е-^^2^ <? и, значит, су* > ся — ^ е > sup{cx: xsP} — e. П Конечно же, обычно нас интересует точное значение оптимума. Ограничимся рассмотрением рациональных политопов полной размерности. Нам понадобится некоторое предположение о размере записи вершин политопа.
118 Глава 4. Алгоритмы линейного программирования Лемма 4.20. Пусть п е N, а Р с Rn —рациональный политоп. Пусть также x06Qn — внутренняя точка политопа Р. Пусть Т е N, причем size(x0) < log Г и size(x) < log Т для всех вершин х политопа Р. Тогда В(х0, г) с р с В(х0, R), где г.= ±Т-379п2 иц~2пТ. п Более того, пусть К := 4T2n+l, и пусть также с е Zn. Определим значение с! := Кпс + (1,К,...,/С1-1). Тогда оптимум max{c/x: х е Р} достигается на единственном векторе х*9 для всех остальных вершин у политопа Р справедливо неравенство с'{х* — у) > Т~2п, а х* также является оптимальным решением задачи тзх{сх: х € Р}. Доказательство. Для любой вершины х политопа Р имеем ||х|| < пТ и ||лг0|| < пТ, так что ||х-дс0|| <2пТ ихеВ(х0,Я). Докажем вложение В(х0, г) с р. Рассмотрим фасету F = {х еР: ах = /3} политопа Р. По лемме 4.5 мы можем считать, что size(a) + size(^) < 75n2logT. Предположим, что существует точка у € F, для которой \\у — х0\\ < г. Тогда \ах0-р\ = \ах0-ау\ < ||а|| • ||у-х0|| < n-2size«*V < Г"304"2. Но, с другой стороны, можно оценить size(ax0 — /3) следующим образом: size(ax0 - /3) < 4(size(a) + size(x0) + size(/S)) < ЗООп2 log Г + 4 log T < 304n2 log Т. Так как ах0 Ф fi (точка х0 внутренняя для Р), получаем, что \ах0 — /3\> г_304п , — противоречие. Для доказательства остальных утверждений рассмотрим вершину х* политопа Р, максимизирующую значение с'х, и пусть у—другая вершина политопа Р. По предположению о размерах вершин политопа Р запишем х* — у = -z, где a е {1,2,..., Т2п — 1} и z — целый вектор, координаты которого по абсолютной величине не превышают К/2. Тогда 0 < с'(х* - у) = \ [Кпс% + J] К'~Ч1 ¦ Поскольку Кп > ХГ=1^1 l\zi\> получаем, что cz > 0, и, значит, сх* > су. Таким образом, х* действительно максимизирует сх на Р. Более того, z^O, поэтому с'(х*-у)>±>Г ¦2п как и требовалось. ? Теорема 4.21. Пусть п € N и с € Qn. Пусть Р с Rn—рациональный политоп, и пусть x0e.Qn — внутренняя точка политопа Р. Пусть Т е N, причем size(x0) < < log Г и size(x) < log Г для всех xgP. По заданным п, с, х0, Т, а также полиномиальному оракулу для слабой задачи отделения от Р вершина х* политопа Р, в которой достигается тах{стх: хеР}, может быть найдена за время, полиномиальное по п, log Г и size (с).
§ 4.6. Задачи отделения и оптимизации 119 Доказательство (Грётшель, Ловас и Скрейвер [8]). Применим вначале алгоритм Грётшеля—Ловаса — Скрейвера для решения слабой задачи оптимизации. При этом выберем с', г и R в соответствии с леммой 4.20 и положим е := 2гг+3. (Предварительно вектор с следует превратить в целочисленный путем умножения его на произведение знаменателей координат; это преобразование увеличивает его размер не более чем в 2п раз.) Алгоритм Грётшеля—Ловаса — Скрейвера возвращает такой вектор у € Р, что с'у > с'х* — е, где х* — оптимальное решение задачи тах{с'х: х е. Р}. По теореме 4.19 время его работы составляет О (п6а2 + n4a/(size(c'), size(e), п size(x0) + п3а)) = = О (пва2 + n4a/(size(c'), 6п log Т, п log Т + n3a)), где a = log R2maxr{j|c/||>1} < к^Цбп5!400"2 - 2size(c/)) = 0{п2 log Г + size(c')) и / — полиномиальная верхняя оценка на время работы оракула для слабой задачи отделения для Р. Поскольку size (с7) < 6п2 log Г + 2 size (с), общая оценка сложности оказывается полиномиальной по n, log Г и size (с). Докажем, что \\х* — у\\ < —¦$• Для доказательства представим у в виде выпуклой комбинации вершин х*, xl9..., хк политопа Р: к к i=\ i=0 Теперь, используя лемму 4.20, получаем к к е > с\х* - у) = ? V(**" *i) > J] А*Г-2п = (1 - А0)Г- -2п i=l i=l 2п так что 1 — Я0 < еГ . Итак, ||у-х*|| ^Adta-xl < (1-Я0)-2К<4пТ2п+1е< ^. 1=1 Тогда при округлении каждой координаты вектора у до ближайшего рационального числа со знаменателем, не превосходящим Г, мы получим вектор х*. Такое округление может быть выполнено за полиномиальное время с использованием теоремы 4.8. ? Мы доказали, что при некоторых предположениях оптимизация по политопу возможна, если мы располагаем отделяющим оракулом. В заключение главы отметим, что обратное утверждение также справедливо. Нам понадобится понятие полярности: для множества X с Rn полярой X называется множество Х° := {у € Rn: утх < 1 для всех х е X}. Для политопов полной размерности операция взятие поляры обладает рядом полезных свойств.
120 Глава 4. Алгоритмы линейного программирования Теорема 4.22. Пусть Р — политоп в Rn, для которого 0 является внутренней точкой. Тогда (1) Р° образует политоп, для которого 0 также внутренняя точка; (2) {р°у = Р; (3) х является вершиной политопа Р, если и только если неравенство хТу < 1 определяет фасету политопа Р°. Доказательство. 1. Пусть Р — выпуклая оболочка множества точек хъ...,хк (см. теорему 3.31). По определению Р° = {у е Rn: yTxt < 1 для всех i е. {1,..., к}}, т. е. Р° представляет собой полиэдр, а неравенства, задающие фасету полиэдра Р°, отвечают вершинам политопа Р. Более того, точка 0 является внутренней для Р°, поскольку она удовлетворяет всему конечному комплекту условий, причем строго. Предположим, что полиэдр Р° неограничен, т. е. существует такой вектор w еШп\ {0}, что aw е Р° для всех а > 0. Тогда awx < 1 для всех а > 0 и для всех х е Р, так что wx < 0 для всех х е Р. Но это значит, что 0 не может быть внутренней точкой политопа Р. 2. Очевидно, Р с (р°)°. Для доказательства обратного вложения предположим, что z е (Р°)°\Р. Тогда найдется неравенство сТх < 5, которое выполнено для всех х G Р, но не для z. Имеем 5 > 0, поскольку 0 является внутренней точкой политопа Р. Тогда -=с^Р°, но ^cTz> 1, а это противоречит предположению о том, что z е (Р°)°. 3. Как уже было установлено в п. 1, неравенства, определяющие фасеты полиэдра Р°, задаются вершинами политопа Р. Обратно, пусть xl9...,xk — вершины политопа Р, тогда P:=conv({|x1,x2,...,xk})^P и 0 является внутренней точкой политопа Р. Теперь из п. 2 следует, что Р° фР°. Значит, {yGM^yTjt1<2,yTxi<l(i = 2,...,fc)}=PV^°={yeMri:yT^<l(i = l,...,fc)}. В итоге неравенство xjy < 1 определяет фасету полиэдра Р°. ? Теперь мы можем доказать следующее утверждение. Теорема 4.23. Пусть п € N и у е Qn. Пусть Р с R"—рациональный политоп, и пусть x0GQn — его внутренняя точка. Пусть Т е N, причем size(x0) < log Г и size(jc) < log Т для всех вершин х политопа Р. Пусть заданы п, у, х0, Т и оракул, для произвольного вектора с е. Qn возвращающий вершину х* политопа Р, в которой достигается тах{стдс: х е Р}. Тогда слабая задача отделения для Р и у может быть решена за время, полиномиальное по п, log Т и size (у). Более того, в случае уфР мы можем найти неравенство, определяющее фасету политопа Р, которое нарушено в точке у. Доказательство. Рассмотрим множество Q:={x—xq:xgP}h поляру Q°. Пусть хъ ..., хк — вершины политопа Р, тогда Q° = {z € Rn: zJ{x{ -x0) < 1 для всех i € {1,..., fc}}.
Упражнения 121 По теореме 4.4 имеем size О) < 4п(4п log Г + Зп) < 28п2 log Г для всех вершин z политопа Q°. Заметим, что задача отделения для Р и у эквивалентна задаче отделения для Q и у — х0. По теореме 4.22 справедливы равенства q = (Q°)° = {х: z* < 1 для всех z е Q°}, поэтому задача отделения для Qn у — х0 эквивалентна нахождению max{(y-x0)Tx: х € Q°}. Поскольку всякая вершина политопа Q° отвечает неравенству, задающему фасету политопа Q (а значит, и Р), осталось показать, как найти вершину, в которой достигается тах{(у — х0)тлг: х € Q°}. Для этого применим теорему 4.21 к Q°. По теореме 4.22 политоп Q° имеет полную размерность и точка 0 лежит внутри него. Ранее мы показали, что размеры вершин политопа Q° не превышают 28п2 log Т. Следовательно, осталось показать, как находить решения задачи отделения для Q° за полиномиальное время. Однако данная задача сводится к оптимизации по Q, которая выполняется с помощью оракула, оптимизирующего по Р. ? В заключение отметим, что Вайдья [19] предложил еще один алгоритм, который работает быстрее метода эллипсоидов и из которого также следует эквивалентность задачи оптимизации и отделения. Однако данный метод, видимо, также не годится для практического использования. Упражнения 1. Пусть Л — невырожденная рациональная (п х п) -матрица. Докажите, что size (Л-1) < 4п2 size (Л). 2* (Гуманс [неопубликовано]). Пусть п > 2, с € Rn и уъ ..., ук е {—1,0,1}п, причем 0 < cTyi+1 < 2сТУ1 для * = 1> • • • Д "~ 1- Докажите, что тогда к < Зп log п. Указание. Рассмотрите линейную программу max{y1Tx:yfcTx = l, (у<-2#+1)т* > 0 (i = 1, ...,fc-1)} и вспомните доказательство теоремы 4.4. 3 (Грётшель, Ловас и Скрейвер [1]). Рассмотрим последовательность чисел hi} возникающую в алгоритме разложения в цепную дробь. Докажите, что ht > Fi+1 для всех i, где F( обозначает i-e число Фибоначчи (F2 = F2 = 1 и Fn = Fn_x + Fn_2 для n>3). Докажите, что '.-^(МЧ^Л- Покажите также, что число итераций алгоритма разложения в цепную дробь составляет О (log q).
122 Глава 4. Алгоритмы линейного программирования 4 (Эдмондс [5]). Предложите сильно полиномиальный алгоритм, реализующий метод исключения Гаусса. Указание. Пусть матрица А целая. Вспомните доказательство теоремы 4.10 и заметьте, что в качестве d можно взять общий знаменатель ее элементов. 5*. Пусть хъ ..., хк е R*, d := 1 4- dimfxj,..., хк}, Яъ ..., Хк е R+, причем Si=i \ — 1 и х := Zii=i ^-Л- Покажите, как найти такой набор чисел /х1?..., fik € R+, среди которых должно быть не более d ненулевых, что ?i=1 М* = 1 и х = ^{=11Л{Х{ (см. упражнение 15 из гл. 3). Докажите, что все вычисления можно проделать за время О ((к + О3). Указание. Примените метод исключения Гаусса к матрице A eR(z+1)xfc, где i-й столбец равен f J. Если d < к, то пусть w е Rfc — вектор с координатами шсо1ф := •= zUd+1 (i = 1,..'., d), ^col(d+1) := -1 и шсо1(0 := 0 (i = d + 2,..., к); заметьте, что Aw = 0. Добавляя подходящие кратные w к Я, исключите хотя бы один вектор, а затем повторите процесс. 6. Пусть А = (? v. J G Rnxn — такая симметричная неотрицательно определенная матрица, что а>0иЬеRn_1. Пусть А':=\ ! т и I/ := « . Докажите, что матрицы А = UTA'U и С ЪЪТ являются неотрицательно определенными. Повторяя эти шаги несколько раз, докажите, что для любой неотрицательно определенной матрицы А найдется такая матрица U, что А = UTU, причем матрица U может быть вычислена с произвольной точностью за время 0(п3). (Скрытая в О-символике константа может зависеть от точности. Кроме того, разрешается использовать приближенное вычисление квадратного корня как элементарную операцию.) Замечание. Такое представление называется разложением Холецкого. Точное его вычисление в общем случае невозможно, поскольку матрица U может быть иррациональной. 7*. Пусть А — симметричная неотрицательно определенная [п х п)-матрица. Пусть v1,...,vn — п взаимно ортогональных собственных векторов матрицы А, отвечающих собственным значениям Хъ ..., Яп. Без ограничения общности будем считать, что \\v{\\ = 1 для всех i = 1,..., п. Докажите, что тогда Е(А,0)={1Л1^1и1 + ... + ^п^К»п--1*еШп, 1И|<1}. (Собственные векторы соответствуют осям симметрии эллипсоида.) Покажите, что отсюда следует равенство volume(E(A, 0)) = VdetA volume (Б (0,1)). 8. Пусть Е(А,х) с R" — эллипсоид, а е R", и пусть Е(А\х') — эллипсоид, определенный на с. 107. Докажите, что тогда {z е Е(А, x):az> ах} с Е(А\ х').
Литература 123 9. Докажите, что алгоритм из теоремы 4.18 решает задачу ЛП вида тах{слг: Ах < Ь} за время 0((п + m)9(size(A) + size(b) + size(c))2). 10. Покажите, что предположение ограниченности политопа в теореме 4.21 является избыточным. А именно, можно определить, является ли задача ЛП ограниченной, и если да, то найти оптимальное решение. 11*. Пусть Р с м3 —трехмерный политоп, для которого начало координат служит внутренней точкой. Снова рассмотрим граф G(P), вершины которого отвечают вершинам политопа Р, а ребра соответствуют одномерным граням политопа Р (см. упражнения 18 и 19 из гл. 3). Покажите, что G(P°) является планарно двойственным к G(P). Указание. Стайниц [17] доказал, что для всякого простого 3-связного пла- нарного графа G найдется такой трехмерный политоп Р, что G = G(P). 12*. Пусть G — простой связный неориентированный граф. Докажите, что линейная программа минимизировать /J xuw e={v,w}eE(G) при условиях J]x»'>[^Sl2 + 5lSll (veVW> SQV{G)\{v}), weS xuw < xuv + xvw (u, u,we V(G)), xvw >0 {v, w € V(G)), xvv = 0 (i/€V(G)) может быть решена за полиномиальное по |V(G)| время. Замечание. Данная программа может рассматриваться как релаксация задачи об оптимальном линейном упорядочении; см. упражнение 8 из гл. 19. 13. Докажите, что поляра полиэдра снова является полиэдром. Для каких полиэдров Р выполняется условие (Р°)° = Р? Литература Общая литература [1] Grotschel М., Lovdsz L., Schrijver A. Geometric Algorithms and Combinatorial Optimization. Springer, Berlin, 1988. [2] Padberg M. Linear Optimization and Extensions. Second edition. Springer, Berlin, 1999. [3] Schrijver A. Theory of Linear and Integer Programming. Wiley, Chichester, 1986. Процитированные работы [4] Bland R. G., Goldfarb D., Todd M. J. The ellipsoid method: a survey // Operations Research. 1981. Vol.29. P. 1039-1091. [5] Edmonds J. Systems of distinct representatives and linear algebra // Journal of Research of the National Bureau of Standards. Ser. B. 1967. Vol. 71. P. 241-245.
124 Глава 4. Алгоритмы линейного программирования [6] Frank A., Tardos Ё. An application of simultaneous Diophantine approximation in combinatorial optimization // Combinatorica. 1987. Vol. 7. P. 49-65. [7] Gdcs P., Lovdsz L. Khachiyan's algorithm for linear programming // Mathematical Programming Study. 1981. Vol. 14. P. 61-68. [8] Grotschel M., Lovdsz I., SchrijverA. The ellipsoid method and its consequences in combinatorial optimization // Combinatorica. 1981. Vol. 1. P. 169-197. [9] Юдин Д. Б., Немировский А. С. Информационная сложность и эффективные методы решения выпуклых экстремальных задач // Экономика и Математические методы. 1976. Т. 12. С. 357-369. [10] Karmarkar N. A new polynomial-time algorithm for linear programming // Combinatorica. 1984. Vol. 4. P. 373-395. [11] Karp R. M., Papadimitriou С. H. On linear characterizations of combinatorial optimization problems // SIAM Journal on Computing. 1982. Vol. 11. P. 620-632. [12] Хачиян Л. Г. Полиномиальный алгоритм в линейном программировании // Доклады АН СССР. 1979. Т. 244. С. 1093-1096. (English translation in Soviet Mathematics Doklady, vol.20, №2,1979, p. 191-194.) [13] ХинчинА.Я. Цепные дроби. Изд. 4-е. М.: Наука, 1978. [14] Padberg М. W., Rao М. R. The Russian method for linear programming III: Bounded integer programming. Research Report 81-39, New York University, 1981. [15] Padberg M. W. Linear Optimization and Extensions. Springer, Berlin, 1995. (Algorithms and Combinatorics; Vol. 12). [16] Шор H. 3. Метод отсечения с расширением пространства для решения задач выпуклого программирования // Кибернетика. 1977. Т. 13. С. 94-96. [17] Steinitz Е. Polyeder und Raumeinteilungen // Enzyklopadie der Mathematischen Wis- senschaften. 1922. Bd.3. S. 1-139. [18] Tardos Ё. A strongly polynomial algorithm to solve combinatorial linear programs // Operations Research. 1986. Vol. 34. P. 250-256. [19] Vaidya P. M. A new algorithm for minimizing convex functions over convex sets // Mathematical Programming. 1996. Vol. 73. P. 291-341.
ГЛАВА 5 Целочисленное программирование В этой главе мы рассмотрим линейные программы с дополнительными условиями целочисленное™ (integrality constraints). Integer Programming (целочисленное программирование) Дано: матрица А € Zmxn и векторы Ъ € Zm, с € Z". Надо: найти такой вектор х € Z", что Ах < Ь и значение сх максимально, либо определить, что {х € Zn: Лдс < Ь} = 0, либо определить, что sup{or: х € Zn, Ах < b} = оо. Мы не станем рассматривать смешанные целочисленные программы (mixed integer program), т. е. линейные программы, в которых условия целочисленное™ накладываются лишь на некоторое подмножество переменных. Большая часть теории линейного и целочисленного программирования может быть обобщена на этот случай естественным образом. Практически любую задачу комбинаторной оптимизации можно сформулировать в виде целочисленной программы. Множество допустимых решений в таких программах представляется в виде {х: Ах < b, х € Z71} для некоторой матрицы А и некоторого вектора Ь. Множество Р := {х € Rn: Ах < Ъ) является по- Рис.5.1
126 Глава 5. Целочисленное программирование лиэдром. Обозначим через Р7 = {х: Ах < Ь}7 выпуклую оболочку целых векторов в Р. Мы называем Р7 целочисленной оболочкой полиэдра Р. Очевидно, Р7 с р. Если полиэдр Р ограничен, то Р7 также является политопом по теореме 3.31 (см. рис. 5.1). Мейер [34] доказал следующую теорему. Теорема 5.1. Для любого рационального полиэдра Р его целочисленная оболочка Pj образует рациональный полиэдр. Доказательство. Пусть Р = {х: Ах < Ь}. По лемме 3.12 рациональный полиэдральный конус С := {(х, ?): х е Rn, ? > О, Ах — ?Ь < 0} порождается конечным множеством рациональных векторов. Будем считать, не ограничивая общности, что С порождается набором (х1э 1),..., (xfc, 1), (yl9 0),..., (уг, 0), где точки хъ...,хк рациональные, a yi,...,Ji целые (этого можно добиться, умножая элементы из конечного множества порождающих на подходящие целые положительные скаляры). Рассмотрим политоп ( к i к . 4=1 i=l i=\ * Заметим, что QQ Р. Пусть zb ...,zm — все целые точки в Q. По теореме 3.29 конус С', порожденный векторами (уъ 0),..., (уь 0), (zl91),..., (zm, 1), полиэдрален, т. е. может быть записан в виде {(х, ?): Мх + ?d < 0} для подходящей рациональной матрицы М и рационального вектора d. Докажем, что Р7 = {х: Мх < —d}. Докажем вложение «с». Рассмотрим произвольный вектор х е Р П Zn. Имеем (х, 1) € С, т. е. х = Xii=i ^Л+ Si=i ^i-ft Д-7151 некоторых к"х,..., кк > 0, удовлетворяющих условию J].=1 к? = 1 и А2,..., Aj >0. Тогда вектор с := 2i=ilAJ.yi целый, а значит, и х — с также целый. Более того, k I х - с = ^ к{х( + ]TJ(A? - |Af J)yf Е Q, i=l i=l следовательно, x — c = z{ для некоторого i. Таким образом, (х,1) = (с,0) + (х-с,1)еС', и, значит, Мх + d < 0. Докажем вложение «2». Рассмотрим такой вектор х, что Мх < —d, т. е. (х, 1) е С'. Тогда х = 2l=i А^ + 2Hi МЛ Д^ некоторых А2,..., Аг, \1Ъ..., \хш > 0, удовлетворяющих условию 2 Hi Mi = *• ^ез ограничения общности мы считаем, что I > 1 и /хх > 0. Пусть А? := \Xil\i\ для i = 1,..., I. Тогда (гг + vjj, 1) е С для всех i = 1,..., I и v > 0, и, значит, вектор I I т i=l i=\ i=2 можно представить в виде выпуклой комбинации целых точек из Р. ?
§ 5.1. Целочисленная оболочка полиэдра 127 Доказанное утверждение в общем случае не является справедливым для иррациональных полиэдров, см. упражнение 1. По теореме 5.1 задача целочисленного программирования может быть записана в виде max{cTx: х е Р7}, где Р = {х:Ах<Ъ}. В §5.1 мы докажем обобщение теоремы Мейера 5.1 (см. теорему 5.8). После небольшой подготовительной работы (см. § 5.2) в § 5.3 и 5.4 мы изучим признаки, при которых полиэдр является целым (т. е. выполняется равенство Р = Рг). Отметим, что в этом случае целочисленная программа оказывается эквивалентной своей линейной релаксации (LP relaxation), возникающей путем отбрасывания условия целочисленное™, а значит, может быть решена за полиномиальное время. Несколько примеров задач комбинаторной оптимизации, приводящих к таким программам, мы встретим в следующих главах. В общем случае, однако, задачи целочисленного программирования намного труднее задач линейного программирования, и полиномиальных алгоритмов для них неизвестно. Это и не удивительно, поскольку мы можем сформулировать многие кажущиеся трудными комбинаторные задачи в виде целочисленных программ. Несмотря на это, в § 5.5 мы обсудим общие методы построения целочисленных оболочек путем последовательного отсечения частей множества P\Pj. Хотя эти методы и не дают полиномиальных алгоритмов для общей задачи, в некоторых случаях они оказываются полезными. Наконец, в § 5.6 мы опишем эффективный способ поиска приближенного решения целочисленной программы. § 5.1. Целочисленная оболочка полиэдра Как и линейные программы, целочисленные программы могут быть несовместными или неограниченными. Для заданного полиэдра Р оказывается непросто выяснить, пуста ли его целочисленная оболочка Р7. Однако если целочисленная программа совместна, то ее ограниченность можно проверить путем рассмотрения линейной релаксации. Утверждение 5.2. Пусть Р = {х: Ах < Ъ] —рациональный полиэдр, целочисленная оболочка которого непуста, и пусть с — некоторый вектор (не обязательно рациональный). Тогда оптимум max{cx: х е Р} ограничен, если и только если тах{ос: х е Р7} ограничен. Доказательство. Предположим, что тах{сх: я: е Р} неограничен. Тогда по следствию 3.28 система уА = с, у > 0 не имеет решения. По следствию 3.26 найдется такой вектор z, что cz < О и Az > 0. Тогда линейная программа minjez: Az > 0, —U < z < И} совместна. Пусть z* — ее оптимальное базисное решение. Вектор z* рационален, поскольку он является вершиной рационального политопа. Умножая z* на подходящее натуральное число, получим целый вектор w, для которого Aw > 0 и cw < 0. Пусть и е Р7 — произвольный целый вектор. Тогда и — kw е Р7 для всех k е N, поэтому задача max{cx: х е Р7} неограничена. Утверждение в обратную сторону тривиально. ?
128 Глава 5. Целочисленное программирование Определение 5.3. Пусть А — целая матрица. Субопределителем матрицы А называется значение detB для некоторой квадратной подматрицы В в А (полученной взятием произвольных подмножеств строк и столбцов). Через S(A) мы обозначаем максимум абсолютных величин субопределителей матрицы А. Лемма 5.4. Пусть С = {х: Ах < 0} — полиэдральный конус, где А — целая матрица. Тогда С порождается конечным множеством целых векторов, координаты каждого из которых по абсолютной величине не превышают S(A). Доказательство. По лемме 3.12 конус С порождается некоторыми из векторов У\> • • • у Уи гДе Для каждого i вектор yt служит решением системы My = У, в которой М состоит из п линейно независимых строк матрицы (. J и У = ±е, для некоторого базисного вектора е,. Положим zt := IdetMly^. По правилу Крамера вектор zt целый, причем H^H» < 2(A). Поскольку данная оценка верна для каждого i, множество {zl9..., zt] обладает требуемыми свойствами. ? Аналогичная лемма будет использоваться в следующем параграфе. Лемма 5.5. Всякий рациональный полиэдральный конус С порождается таким конечным набором целых векторов {aly...,at}, что всякий целый вектор в С представляется в виде неотрицательной целочисленной комбинации векторов аъ..., at. {Такой набор векторов называется базисом Гильберта конуса С.) Доказательство. Пусть С порождается целыми векторами Ъъ ..., bk. Обозначим через аъ..., at множество всех целых векторов в политопе {k1b1 + ... + Xkbk:0<Xi<l(i = l,...,k)}. Утверждается, что множество {a1,...,at} образует базис Гильберта конуса С. Данные векторы действительно порождают весь конус С, поскольку bl9...,bk встречаются среди аг,..., at. Для произвольного целого вектора х е С найдутся такие скаляры \xx,...,\ik> > 0, что х = /iibi +... + jufcbfc = LMiJb2 +... + LMfcJbfc + (Mi - LMiJ)bi +... + (|Lifc - lUkDh, так что x можно представить в виде неотрицательной целочисленной комбинации векторов аъ ..., at. ? Важное свойство целочисленных программ состоит в том, что оптимальные целые и дробные решения оказываются не слишком далекими друг от друга. Теорема 5.6 (Кук и др. [13]). Пусть А — целая [т х п)-матрица, и пусть b е Rm, сеЕ" — произвольные векторы. Положим Р := {х: Ах <^Ь},и пусть Pj ф 0. 1. Предположим, что у служит оптимальным решением задачи тах{ос: х € Р}. Тогда найдется такое оптимальное целое решение z задачи тах{сх: х € Р7}, что||2~у||00<п2(А). 2. Пусть у служит целым допустимым решением задачи тах{ас: х € Р7}, но не является оптимальным. Тогда существует такое целое допустимое решение zsPh что cz> су и \\z — ylU < nS(A).
§ 5.1. Целочисленная оболочка полиэдра 129 Доказательство. Оба утверждения доказываются почти одинаковым образом. Пусть вначале у е Р — произвольный вектор. В случае 1 пусть z* е Р П Ъп — оптимальное решение задачи тах{сх: х е Р7} (отметим, что Р7 = {х: Ах < [bj}7 является полиэдром по теореме 5.1, а значит, максимум достигается в некоторой точке), а в случае 2 пусть z*GPnZn —такой вектор, что cz* > су. Разделим систему условий Ах < Ь на две: Агх < Ьг и А2х < Ь2, так, чтобы выполнялись неравенства А^* > Агу и A2z* < А2у. Тогда z* — у принадлежит полиэдральному конусу С :={х: Агх > О, А2х < 0}. Конус С порожден некоторыми из векторов xt (i = 1,..., 5). По лемме 5.4 векторы xt можно считать целыми, причем Н^Ц» < S(A) для всех i. Поскольку z* — у е С, существуют неотрицательные числа Хъ ..., Xs, для которых z* — у = Xi=i ^Л- Можно считать, что среди Х{ не более п ненулевых. Для вектора \i = (/il5..., /is), координаты которого удовлетворяют условиям 0 < /ij < Х{ (i = 1,..., 5), положим S S i=l i=l и заметим, что z^P: из первого разложения для zM следует, что A^z^ < Aa2* < b^ а из второго — что A2z^ < Л2у < Ь2. Рассмотрим две возможности. А. Пусть найдется такой индекс i е {1,..., 5}, что Х{ > 1 и сх{ > 0. Пусть z := := у H-Xj. Имеем cz > су, поэтому случай 1 невозможен. В случае 2 если вектор у целый, то вектор z является целым решением системы Ах < Ъ, для которого cz > су и ||z-y|L = IklU < 2(A). Б. Пусть для всех i е {1,..., 5} из того, что Х{ > 1, следует, что сх{ < 0. Обозначим S z:=zLAJ=z*-]TLAiJxi. 1=1 Вектор z целый и принадлежит Р, причем cz > cz* и s II* -УII- < 1>< - L^J) Nil- < n S(A). i=l Таким образом, как в случае 1, так и в случае 2 вектор z является искомым. ? В качестве следствия мы получаем оценку на размер оптимальных решений задач целочисленного программирования. Следствие 5.7. Если Р = {х е Qn: Ах < Ь}—рациональный полиэдр и задача max{cx: х е Р7} имеет оптимальное решение, то данная задача также имеет оптимальное решение х, для которого size(x) < 13n(size(A) + size(b)). Доказательство. По утверждению 5.2 и теореме 4.4 задача max{cx: х е Р} имеет такое оптимальное решение у, что size (у) < 4n(size(A) + size(b)). По теореме 5.6(1) найдется такое оптимальное решение х задачи тах{ос: х е Р7}, что
130 Глава 5. Целочисленное программирование II*~"УН» ^ и 2(A). Согласно утверждениям 4.1 и 4.3 мы имеем size(x) < 2 size (у) + 2п size(n S(A)) < < 8n(size(A) + size(b)) + 2n log n + An size(A) < 13n(size(A) + size(b)). П Из теоремы 5.6(2) вытекает следующее утверждение. Пусть задано допустимое решение задачи целочисленного программирования х. Тогда оптимальность этого решения можно установить путем проверки векторов вида х + у, где сдвиги у пробегают конечное множество, зависящее лишь от матрицы А. Наличие подобного конечного проверочного множества (test set), существование которого было впервые доказано Грейвером [28], позволяет доказать нижеследующую фундаментальную теорему целочисленного программирования. Теорема 5.8 (Вулси [44], Кук и др. [13]). Для всякой целой (т х п)-матрицы А существует целая матрица М, элементы которой по абсолютной величине ограничены п2пЕ(А)п, удовлетворяющая следующему условию: для всякого вектора Ъ е Qm найдется такой рациональный вектор d, что {x:Ax<b}7 = {x:Mx<d}. Доказательство. Можно считать, что А ф 0. Пусть С — конус, порожденный строками матрицы А. Пусть L := {z € Zn: ЦгЦ,» < п 2(A)}. Для каждого подмножества К с L рассмотрим конус Ск:=Сп{у: zy <0 для всех z € К}. Согласно доказательству теоремы 3.29 и лемме 5.4 имеем Ск = {у: Uy < 0} для некоторой целой матрицы U (строками которой являются порождающие векторы конуса {х: Ах < 0}, а также векторы из К), элементы которой по абсолютной величине не превышают п S(A). Следовательно, по лемме 5.4 существует конечное множество G(K) целых векторов, порождающее Ск, координаты которых по абсолютной величине не превышают E(U) < п\(п Е(А))П < п2пЕ(А)п. Пусть М — матрица с множеством строк |JKCL G{K). Поскольку С0 = С, можно считать, что строки матрицы А также являются строками матрицы М. Рассмотрим теперь произвольный вектор Ь. Если система Ах < Ъ не имеет решений, то мы можем расширить Ъ до вектора d произвольным образом. При этом {х: Мх < d} с {х: Ах < Ъ} = 0. Если система Ах < Ъ имеет решения, но ни одно из них не является целым, то положим У :=b—A't, где А! получается из А путем взятия абсолютной величины каждого элемента. Тогда задача Ах < Ъ' не имеет решения, поскольку всякое решение последней дает (после округления) целое решение для задачи Ах<Ь. Тогда мы вновь дополняем Ь' до d произвольным образом. Будем теперь считать, что система Ах<,Ь имеет целое решение. Для у е С положим 5у := тах{ух: Ах < b, х целый} (по следствию 3.28 этот максимум ограничен при всех у е С). Достаточно показать, что {х: Ах < b}j = \х: ух < 5у для всех у е |J G(K) 1. (5.1)
§ 5.2. Унимодулярные преобразования 131 Вложение «с» тривиально. Для доказательства обратного вложения рассмотрим произвольный вектор с, для которого задача тах{сх: Ах < b, х — целый вектор} ограничена, и пусть х* — точка оптимума. Докажем неравенство сх < сх* для всех х, удовлетворяющих неравенствам в правой части соотношения (5.1). По утверждению 5.2 задача линейного программирования тах{слг: Ах < Ъ) ограничена, так что по следствию 3.28 мы имеем с^С. Пусть К := {z е L: А(х* + z) < b}. По определению cz < 0 для всех z е К, так что csCg. Таким образом, найдутся такие неотрицательные числа Ау (у е G(K)), что с=2 V- Теперь докажем, что х* служит оптимальным решением для задачи тах{ух: Ах<Ъ, х — целый вектор} для всякого у е G(K). Действительно, по теореме 5.6(2) из обратного предположения следует существование такого вектора z € К, что yz > 0, а это невозможно, поскольку у еС^. Окончательно получаем Z *у*у=Z v**=(Е v)«*=^*- yeG(K) yeG(K) y^G{K) Тогда неравенство сх < сх* представимо в виде неотрицательной линейной комбинации неравенств ух < 5у при у € G(JC). Тем самым соотношение (5.1) доказано. ? В работе Лассерра [33] приводится близкий к рассмотренному результат. § 5.2. Унимодулярные преобразования В настоящем параграфе мы докажем две леммы, которые потребуются нам в дальнейшем. Квадратная матрица называется унимодулярной, если все ее элементы целые, а определитель равен 1 или —1. Следующие три типа унимоду- лярных матриц представляют для нас особый интерес. Пусть п € N, р € {1,..., п} и q € {1,...,п}\{р}. Рассмотрим матрицы вида (ay)i,j€{i,...,n}* задаваемые следующим образом: {1, если i = ;V=p, ( 1, если i = j ф. {p,q}, -1, если i = j = р, atj = I 1, если {i,;} = {р, q}, О иначе; у 0 иначе; {1, если i = j, -1, если (i,;) = (р, q), О иначе.
132 Глава 5. Целочисленное программирование Данные матрицы, очевидно, являются унимодулярными. Если U — матрица одного из указанных выше типов, то переход от произвольной матрицы А (содержащей п столбцов) к AU эквивалентен применению одной из трех элементарных операций к А: • умножение столбца на —1; • перестановка двух столбцов; • вычитание одного столбца из другого. Последовательность операций указанного вида называется унимодулярным преобразованием. Очевидно, произведение унимодулярных матриц является унимодулярным. Можно показать, что матрица унимодулярна, если и только если она получается из единичной матрицы применением цепочки унимодулярных преобразований (или, что эквивалентно, представляет собой произведение матриц одного из трех указанных типов); см. упражнение 6. Этот факт нам далее не потребуется. Утверждение 5.9. Матрица, обратная к унимодулярной, сама унимодулярна. Для любой унимодулярной матрицы U отображения x*->Uxux^xU представляют собой биекции множества Zn. Доказательство. Пусть U — унимодулярная матрица. По правилу Крамера матрица, обратная к унимодулярной, является целочисленной. Поскольку (det [/)(det IT1) = detiUU'1) = detl = 1, матрица l/_1 также унимодулярна. Второе утверждение немедленно следует из первого. ? Лемма 5.10. Для любой рациональной матрицы А с линейно независимыми строками существует такая унимодулярная матрица U, что произведение AU имеет вид (В 0), где В — невырожденная квадратная матрица. Доказательство. Предположим, что мы нашли унимодулярную матрицу U, для которой AU = (с DJ, где В— некоторая невырожденная квадратная матрица. (Вначале положим U = I, D = А, а части, обозначенные через В, С и 0, объявим пустыми.) Пусть (5Ъ ..., 5к) — первая строка матрицы D. Применим такое унимоду- лярное преобразование, чтобы все числа 5t были неотрицательными, а сумма 2 i=i &i была минимальной. Без ограничения общности можно считать, что 5г > > 52 > ... > 5к. Тогда 5г > 0, поскольку строки матрицы А (а значит, и матрицы AU) линейно независимы. Если 52 > 0, то, вычитая второй столбец матрицы D из первого, мы уменьшим значение ??=15?. Значит, 52 = 53 = ... = 5к = 0. Таким образом, мы можем расширить В на одну строку и один столбец и далее действовать аналогично. ? Получаемая матрица В в действительности является нижнетреугольной. Действуя чуть более аккуратно, можно также построить так называемую эрмитову нормальную форму для А. В следующей лемме дается критерий существования целого решения системы уравнений, аналогичный лемме Фаркаша.
§ 5.3. Тотальная двойственная целочисленность 133 Лемма 5.11. Пусть А—рациональная матрица, и пусть Ъ—рациональный вектор-столбец. Тогда система Ах = Ь имеет целое решение, если и только если вектор уЪ оказывается целым для произвольного рационального вектора у, для которого вектор уА целый. Доказательство. Необходимость очевидна: если х и уА — целые векторы и выполняется равенство Ах = Ъ, то значение уЪ = уАх целое. Для доказательства достаточности предположим, что величина уЪ оказывается целой, если вектор уА целый. Можно считать, что система Ах = Ъ не содержит избыточных равенств, т. е. для всех у ф О из того, что уА — 0, вытекает, что уЪ ф 0. Пусть т — число строк матрицы А. Если rank(A) < т, то множество {у: уА = 0} содержит ненулевой вектор у' и у" := ^гтсУ' удовлетворяет условиям у"А = 0 и у"Ь = \/2фЪ. Следовательно, строки матрицы А линейно независимы. По лемме 5.10 существует такая унимодулярная матрица U, что AU = (В 0), где В — невырожденная матрица размера mxm. Поскольку матрица B~lAU = = (I 0) целая, для каждой строки у матрицы В-1 число yAU целое, и, значит, по утверждению 5.9 вектор уА целый. Следовательно, значение уЪ будет целым для каждой строки у матрицы В-1, откуда вытекает, что вектор В~гЬ целый. Итак, Jj( 0 J представляет собой целое решение системы Ах = Ъ. П § 5.3. Тотальная двойственная целочисленность В этом и последующем параграфах мы сосредоточим внимание на целых полиэдрах. Определение 5.12. Полиэдр Р называется целым, если Р = Р7. Теорема 5.13 (Хоффман [31], Эдмондс и Джайлс [17]). Пусть Р—рациональный полиэдр. Тогда следующие утверждения эквивалентны: (а) полиэдр Р целый; (б) на каждой грани полиэдра Р найдется целый вектор; (в) на каждой минимальной грани полиэдра Р найдется целый вектор; (г) на каждой опорной для Р гиперплоскости найдется целый вектор; (д) на каждой рациональной опорной для Р гиперплоскости найдется целый вектор; (е) оптимум тзх{сх :хеР} достигается на целом векторе для любого такого с, что указанный оптимум конечен; (ж) оптимум тах{сдг: jc е Р} целый для всякого такого целого с, что указанный оптимум конечен. Доказательство. Докажем вначале импликации (а)=>(б)=>(е)=>(а), затем (б)=> =>(г)=>(д)=»(в)=»(б) и наконец (е)=>(ж)=>(д). Докажем импликацию (а)=>(б). Пусть F — грань, скажем F = РГ\Н, где Я — опорная гиперплоскость, и пусть х € F. Если Р = Р7, то вектор х представляет собой выпуклую комбинацию целых точек в Р, поэтому он принадлежит Н, а значит, и F.
134 Глава 5. Целочисленное программирование Импликация (б)=>(е) прямо следует из утверждения 3.4, поскольку множество {уеР: су=тах{сх: хеР}} образует грань полиэдра Р для всякого вектора с, для которого указанный максимум конечен. Докажем импликацию (е)=>(а). Пусть найдется вектор у € P\PIt Тогда (поскольку Pj представляет собой полиэдр по теореме 5.1) существует неравенство ах < /3, справедливое для всех точек полиэдра Р7 и такое, что ау > /3, В этом случае свойство (е), очевидно, оказывается нарушенным, поскольку оптимум тзх{ах: х € Р} (конечный по утверждению 5.2) не достигается ни на каком целом векторе. Импликация (б)=ф(г) также очевидна, поскольку пересечение опорной гиперплоскости с Р образует грань полиэдра Р. Импликации (г)=>(д) и (в)=>(б) тривиальны. Докажем импликацию (д)=>(в). Пусть Р = {х: Ах < Ь}. Можно считать, что А и b целые. Пусть F = {х: А'х = Ъ'} — минимальная грань полиэдра Р, для которой система А'х < Ъ' образует подсистему системы Ах < b (здесь мы используем утверждение 3.9). Если система А'х = Ъ' не имеет целых решений, то по лемме 5.11 существует такой рациональный вектор у, что вектор с := у А' целый, но вектор 5 := уЪ' целым не является. Добавление целых чисел к координатам вектора у не нарушает данного свойства {А' и Ъ' оба целые), так что можно предполагать, что все координаты вектора у положительны. Заметим, что Я := {х: сх = 5} — рациональная гиперплоскость, не содержащая целых векторов. Покажем наконец, что Я является опорной гиперплоскостью, откуда будет следовать, что Я П Р = F. Поскольку пересечение F с я тривиально, достаточно показать, что Я П Р с F. Но при х е Я П Р мы имеем уА'х = сх = 5 = уЪ', так что у (А'х — Ь') = 0. Поскольку у > 0 и А'х < Ь', мы получаем, что А'х = Ь', и, значит, XGF. Импликация (е)=>(ж) тривиальна. Покажем в заключение, что (ж)=>(д). Пусть Я = {х: сх = 5} — рациональная опорная для Р гиперплоскость. Тогда тах{слг: х е Р} = 5. Предположим, что Я не содержит целых векторов. Тогда по лемме 5.11 существует такое число у, что вектор ус целый, но у5 ? Z. Следовательно, max{(|y|c)x: хеР} = |7|тах{сх: хеР} = \у\5 фХ, что противоречит сделанному предположению. ? См. также работы Гомори [27], Фалкерсона [20] и Хватала [10], в которых приводятся более ранние частные результаты из этой серии. Согласно равносильности (а)<=>(б) и следствию 3.6 каждая грань целого полиэдра сама является целым полиэдром. Эквивалентность свойств (е) и (ж) из теоремы 5.13 мотивирует определение TDI-систем (введенное Эдмондсом и Джайлсом). Определение 5.14 (Эдмондс и Джайлс [17]). Система линейных неравенств Ах < b называется тотально двойственно целочисленной (totally dual integral или TDI), если задача минимизации в равенстве тах{ос: Ах < b} = min{yb: уА = с, у > 0}
§ 5.3. Тотальная двойственная целочисленность 135 (справедливом в силу линейной двойственности) имеет целое оптимальное решение у для всех целых векторов с, для которых указанный минимум конечен. Используя данное определение, мы получаем такое следствие импликации (ж)=>(а) из теоремы 5.13. Следствие 5.15. Пусть Ах < Ъ — TDI-система, в которой матрица А рациональная, а вектор Ъ целый. Тогда полиэдр {х: Ах < Ь} является целым. ? Тотальная двойственная целочисленность, однако, не является свойством самого полиэдра (см. упражнение 8). В общем случае TDI-система содержит больше неравенств, чем необходимо для описания полиэдра. Добавление дополнительных неравенств, справедливых во всех точках полиэдра, не нарушает тотальной двойственной целочисленности. Утверждение 5.16. Если Ах<;Ъ — TDI-система, aax<:fi — неравенство, справедливое для всех решений задачи {х: Ах < Ь}, то система Ах < Ъ, ах < /3 также обладает свойством TDI. Доказательство. Пусть с — такой целый вектор, что минимум min{yb + у/3: уА + у а = с, у > 0, у>0] конечен. Неравенство ах < /3 справедливо для всех решений задачи {х: Ах < Ъ), поэтому min{yb: уА = с, у > 0} = тах{сх: Ах < Ъ) = тах{сх: Ах < Ъ, ах < /3} = = min{yb + у/3: уА И- уа = с, у>0, у>0]. Первый минимум достигается на некотором целом векторе у*, поэтому у = у*, у = 0 представляет собой целое оптимальное решение второй задачи минимизации. ? Теорема 5.17 (Джайлс и Пуллибланк [22]). Для любого рационального полиэдра Р существует рациональная TDI-система Ах<:Ъ,в которой матрица А целая и Р = {х: Ах < Ь}. Вектор Ъ может быть выбран целым, если и только если полиэдр Р целый. Доказательство. Пусть Р = {х: Сх < d}, где С и d целые. Без ограничения общности можно считать, что Р Ф 0. Для всякой минимальной грани F полиэдра Р положим KF := {с: cz = max{cx: х е Р} для всех z е F}. По следствию 3.22 и теореме 3.29 множество KF представляет собой рациональный полиэдральный конус. По лемме 5.5 существует целый базис Гильберта a1,...,at, порождающий KF. Пусть УР — система неравенств вида агх < тах{агх: хеР}, ..., atx < max{atx: х еР}. Объединив системы из УР (по всем минимальным граням F), получим систему вида Ах < Ь. Заметим, что если полиэдр Р целый, то вектор Ъ также целый. Более того, Р с {х: Ах < Ь}.
136 Глава 5. Целочисленное программирование Рассмотрим произвольный целый вектор с, для которого тах{сх: х е Р} конечен. Множество векторов, на которых достигается данный максимум, представляет собой грань полиэдра Р. Обозначим через F минимальную грань, удовлетворяющую условию cz = тах{сх: х е Р} для всех zeF. Пусть 5?F — система вида агх < fil9..., atx < /3t. Тогда с = Ххах +... + Xtat для некоторых неотрицательных целых чисел Хъ ..., At. Добавляя нулевые координаты к Я^,..., Xt, получим такой целый вектор Я > О, что ЯЛ = с, а значит, сх = (ЯЛ)х = Я(Лх) < ЯЬ = Я (Ля) = = (XA)z = cz для всех таких х, что Лх < Ь, и всех zeF. Применяя данное рассуждение к каждой строке с матрицы С, получаем Сх < d для всех таких х, что Ах < Ь. Следовательно, Р = {х: Лх < Ь}. Более того, для произвольного с вектор Я будет оптимальным решением двойственной линейной программы min{yb: у > О, уЛ = с}. Значит, система Лх < b обладает свойством TDI. Если полиэдр Р целый, то по построению вектор Ь оказывается целым. Обратно, если вектор Ъ может быть выбран целым, то по следствию 5.15 полиэдр Р должен быть целым. D В действительности для рационального полиэдра полной размерности существует единственная минимальная TDI-система, его описывающая (Скрейвер [39]). Докажем (это утверждение понадобится нам в дальнейшем), что всякая «грань» TDI-системы снова обладает свойством TDI. Теорема 5.18 (Кук [11]). Пусть Ах < Ь, ах < /3— TDI-система с целым вектором а. Тогда система Лх < Ь, ах = /3 также обладает свойством TDL Доказательство (Скрейвер [5]). Рассмотрим такой целый вектор с, что значение тах{сх: Лх<Ь, ах = /3} = тт{уЬ + (Я —/i)j3: у,Я,/х>0, уА-\-(Х—^)а = с] (5.2) конечно. Пусть данные оптимумы достигаются при х*, у*, Я*, /i*. Положим с! := := с + \^л*]а и заметим, что значение тах{с'х: Лх < Ь, ах < /3} = min{yb + Я/3: у, Я > 0, уАЛ-Ха = с'} (5.3) конечно, поскольку х := х* служит допустимым решением для задачи на максимум, а у := у*, Я := Я* + Г/i*] — /i* образуют допустимое решение для задачи на минимум. Поскольку система Лх < Ь, ах < /3 обладает свойством TDI, минимум из соотношения (5.3) достигается в целой точке у, Я. Положим наконец у:=уу Х:=Х и /i := Г/х*~|. Утверждается, что (у, Я, /i) образует целое оптимальное решение для задачи на минимум из соотношения (5.2). Очевидно, точка (у, Я, /х) является допустимой для задачи на минимум из соотношения (5.2). Более того, уЪ + (А - д)/3 = уЪ + Я/3 - Г/Л/з < у*ь + (я* + Г/Л - м*)/з - Г/Л/з, поскольку (у*, Я* + [ju*] — /х*) —допустимое решение для задачи на минимум из соотношения (5.3), а (у, Я) служит оптимальным решением. Получаем, что уЪ + (Я - ju)/3 < y*b + (Я* - ju*)/3,
§ 5.4. Тотально унимодулярные матрицы 137 поэтому (у, A, /i) является целым оптимальным решением для задачи на минимум из соотношения (5.2). ? Отметим следующие свойства, являющиеся прямыми следствиями из определения TDI-систем. Система Ах = Ь, х > О обладает свойством TDI, если задача min{yb: уА> с} имеет целое оптимальное решение у для всякого целого вектора с, для которого данный минимум конечен. Система Ах < Ь, х > О обладает свойством TDI, если задача min{yb: уА > с, у > 0} имеет целое оптимальное решение у для всякого целого вектора с, для которого данный минимум конечен. Естественным кажется вопрос, существует ли такая матрица А, что система Ах: < Ь, х > 0 обладает свойством TDI для всех целых векторов Ь. Оказывается, таким свойством обладают тотально унимодулярные матрицы и только они. § 5.4. Тотально унимодулярные матрицы Определение 5.19. Матрица А называется тотально унимодулярной, если определитель каждой ее квадратной подматрицы равен 0, +1 или —1. В частности, каждый элемент тотально унимодулярной матрицы должен быть равен 0, +1 или —1. Основной результат настоящего параграфа таков. Теорема 5.20 (Хоффман и Краскал [32]). Целочисленная матрица А тотально унимодулярна, если и только если для любого целого вектора Ъ полиэдр {х: Ах < Ь, х > 0} является целым. Доказательство. Рассмотрим (тхп)-матрицу А и положим Р:={х: Ах<:Ь, х>0}. Заметим, что минимальными гранями полиэдра Р являются вершины. Для доказательства необходимости предположим, что матрица А тотально унимодулярна. Пусть Ъ — произвольный целый вектор, ах — вершина полиэдра Р. Вектор х служит решением системы А'х = Ь', где А'дс < Ь' представляет собой некоторую подсистему системы (jx ^ (0). Здесь А! — невырожденная (п х п) -матрица. Поскольку матрица А тотально унимодулярна, |det А'| = 1, следовательно, по правилу Крамера вектор х = (А')-1^ целый. Докажем теперь достаточность. Предположим, что вершины полиэдра Р являются целыми для всякого целого вектора Ь. Пусть А! — произвольная невырожденная (к х /с)-подматрица матрицы А. Требуется доказать, что |det А'\ = 1. Без ограничения общности будем считать, что А' содержит элементы из к строк и столбцов матрицы А. Рассмотрим целочисленную (m х т)-матрицу Б, состоящую из первых к и последних т — к столбцов матрицы (А /) (см. рис. 5.2). Очевидно, |detB| = = |detA'|. Для доказательства равенства |detB| = 1 покажем, что матрица В-1 целочисленная. Поскольку detBdetB-1 = 1, отсюда будет следовать, что |detB| = 1, как и требовалось. Фиксируем индекс i е {1,..., т} и докажем, что вектор В~хе{ целый. Выберем произвольный целый вектор у, для которого z := у + В~ге( > 0. Тогда вектор
138 Глава 5. Целочисленное программирование к п-к к т — к т — к А \ I О О I (AJ) О О Рис. 5.2 b:=Bz=By+et целый. Добавим нулевые координаты кz и получим вектор z', для которого (А I) z' — Bz = b. Теперь вектор z", состоящий из первых п координат вектора z', принадлежит Р. Более того, для него п линейно независимых условий, а именно первые fc и последние п — к неравенств в системе С$У<©. обращаются в равенство. Следовательно, z" служит вершиной полиэдра Р. Согласно сделанному предположению вектор z" целый. Но тогда и вектор z' должен быть целым: первые п его координат являются координатами вектора z", а последние m координат — это переменные нежесткости Ъ — Az" (где А и Ъ целые). Итак, вектор z целый, а значит, и вектор B~xei = z — y также будет целым. ? Представленное доказательство принадлежит Вейнотту и Данцигу [43]. Следствие 5.21. Рассмотрим целочисленную матрицу А и запишем для нее соотношение линейной двойственности: тах{ас: Ах < Ь, х > 0} = min{yb: у > 0, уА > с}. Тогда матрица А является тотально унимодулярной, если и только если для всех целых векторов Ъ и с как минимум, так и максимум в вышеуказанном равенстве достигаются на целых векторах {если данные оптимумы конечны). Доказательство. Утверждение следует из теоремы Хоффмана — Краскала 5.20 с учетом того, что транспонирование матрицы сохраняет свойство тотальной унимодулярности. ?
§ 5.4. Тотально унимодулярные матрицы 139 Переформулируем данные утверждения в терминах тотальной двойственной целочисленное™ следующим образом. Следствие 5.22. Целочисленная матрица А является тотально унимодуляр- ной, если и только если для любого вектора Ъ система Ах < Ъ, х > 0 обладает свойством TDL Доказательство. Если матрица А (а значит, и АТ) является тотально унимоду- лярной, то по теореме Хоффмана — Краскала для любого вектора Ъ и для любого целого вектора с минимум min{yb: уА > с, у > 0} достигается на целом векторе (при условии, что данный минимум конечен). Другими словами, система Ах < Ъ, х > 0 обладает свойством TDI для любого вектора Ь. Для доказательства обратного утверждения предположим, что система Ах < Ъ, х > 0 обладает свойством TDI для любого целого вектора Ь. Тогда по следствию 5.15 для любого целого вектора Ъ полиэдр {х: Ах < Ъ, х > 0} будет целым. По теореме 5.20 это означает, что матрица А тотально унимодулярна. ? Представленный способ — не единственный, позволяющий вывести свойство TDI для некоторой системы из свойства тотальной унимодулярности. Нижеследующая лемма показывает альтернативный метод рассуждения, который будет далее неоднократно использоваться (теоремы 6.14,19.17 и 14.12). Лемма 5.23. Пусть Ах < Ъ, х > 0 — система неравенств, в которой А € Rmxn иЪ е Rm. Предположим, что для любого вектора с е U1, для которого задача min{yb: уА> с, у > 0} имеет оптимальное решение, она также имеет оптимальное решение у*, в котором строки матрицы А, отвечающие ненулевым координатам вектора у*, образуют тотально унимодулярную матрицу. Тогда система Ах < Ъ, х ^ 0 обладает свойством TDL Доказательство. Пусть с € Zn, и пусть у* — оптимальное решение задачи min{yb: уА> с, у ^ 0}, для которого строки матрицы А, отвечающие ненулевым координатам вектора у*, образуют тотально унимодулярную матрицу А'. Докажем, что справедливо равенство min{yb: уА > с, у > 0} = min{yb7: уА' >с,у> 0}, (5.4) где вектор У состоит из координат вектора Ъ, отвечающих строкам матрицы А'. Для доказательства неравенства «<» в соотношении (5.4) заметим, что линейная программа в правой части получается из линейной программы в левой части обращением в нуль некоторых переменных. Неравенство «>» вытекает из того факта, что вектор у* с отброшенными нулевыми координатами служит допустимым решением для линейной программы в правой части. Поскольку матрица А' тотально унимодулярна, задача минимизации в правой части равенства (5.4) имеет целое оптимальное решение (по теореме Хоффмана— Краскала 5.20). Дополняя данное решение нулевыми координатами, мы получаем целое оптимальное решение для задачи в левой части равенства (5.4), существование которого и требовалось доказать. ?
140 Глава 5. Целочисленное программирование В следующей теореме приводится один весьма полезный критерий тотальной унимодулярности. Теорема 5.24 (Гуила-Ури [23]). Матрица А = (ау) е zmxn является тотально унимодулярной, если и только если для любого подмножества RQ {1,...,т} существует такое разбиение R = R1U R2, что ^ atj - ^ а0 е {-1,0,1} для всех j = 1,..., п. Доказательство. Пусть А — тотально унимодулярная матрица, и пусть выбрано множество Rс {1,..., т}. Положим dr := 1 при г GR и dr :=0 при ге {1,..., т}\R. (-•¦) )П {х: хА< \\dA\ хА> [\<1а\, x<d, х>о} Матрица I —АТ I также является тотально унимодулярной, следовательно, по теореме 5.20 политоп целый. Более того, он непуст, поскольку содержит вектор -d. Следовательно, данный политоп содержит целую вершину; обозначим ее через z. Полагая Rx := := {г € R: zr = 0} и R2 := {г € R: zT = 1}, мы получим (? ау - Е ао) = (d - 2z^A е bi, о, i}n, как и требовалось. Докажем теперь обратное утверждение. Индукцией по fc мы покажем, что любая (fc х /с)-подматрица имеет определитель 0, 1 или —1. При fc = 1 данный факт прямо следует из условия теоремы при \R\ = 1. Пусть теперь fc > 1 и В = (Ьц-)^-€ц „ ^ —невырожденная (fc х /с)-подматрица матрицы А. По правилу Крамера элементы матрицы В-1 имеют вид , _ , где В' получается из В заменой столбцов на базисные векторы. По индуктивному предположению detB7 е {—1,0,1}. Тогда элементы матрицы В* := (det В)В-1 могут быть равны лишь —1,0,1. Пусть Ъ\ — первая строка матрицы В*. Имеем ЩВ = (detB)e1} где ех —первый базисный вектор. Пусть R := {i: b*. Ф 0}. Тогда при j = 2,..., fc имеем 0 = = (b^B)j = 5]f€R bj.by-, поэтому размер \{i е R: btj ф 0}| четен. По условию существует такое разбиение R = RlUR2, что 1>у-ЕьУе ы,о,1} IGR, IGRo для всех j. Тогда при ; = 2,..., fc мы имеем ]>]ieR Ьц — SieR fy/ = 0. Если также XieR Ьа — XiGR frii = 0» то сумм3 строк из R1 равна сумме строк из R2, что противоречит предположению о невырожденности матрицы В (поскольку Rф0). Итак, ieRi ieR2
§ 5.4. Тотально унимодулярные матрицы 141 и тогда уВ е {еъ -ег}, где ( 1 при ieR1} у{ := < -1 при i G Я2, у О при i ? R. Поскольку Ъ\В = (detB)e1 и матрица В невырожденна, имеем b*E{(detB)y,-(detB)y}. Векторы у и Ь\ ненулевые, а их элементы равны лишь —1,0,1, следовательно, |detB| = l. ? Применим данный критерий к матрицам инцидентности графов. Теорема 5.25. Матрица инцидентности неориентированного графа G является тотально унимодулярной, если и только если граф G двудольный. Доказательство. По теореме 5.24 матрица инцидентности М графа G тотально унимодулярна, если и только если для любого подмножества X с V(G) существует такое разбиение X = А и В, что E{G [А]) = Е(G [В]) = 0. По определению такое разбиение существует, если и только если граф G[X] двудольный. ? Теорема 5.26. Матрица инцидентности любого орграфа является тотально унимодулярной. Доказательство. Утверждение следует из теоремы 5.24, достаточно положить R2 := R и R2 := 0 для любого подмножества R с V(G). ? Приложения теорем 5.25 и 5.26 будут приведены в последующих главах. Теорема 5.26 допускает интересное обобщение на случай бескроссинговых семейств. Определение 5.27. Пусть G — орграф, и пусть & — семейство подмножеств множества V(G). Односторонняя матрица инцидентности разрезов (one-way cut-incidence matrix) для & — это матрица М = (тх,e)xe^,e€E(G)j гДе (1, еслиееб+(Х), Шх,е~[0, еслие?5+(Х). Двусторонняя матрица инцидентности разрезов (two-way cut-incidence matrix) для & — это матрица М = (mXfe)Xe^e€E(G), где —1, если е е 5~(Х), тх,е=,{ 1» еслиее5+(Х), О иначе. Теорема 5.28. Пусть G — орграф, a (V(G),&) — бескроссинговая система множеств. Тогда двусторонняя матрица инцидентности разрезов для & является тотально унимодулярной. Если семейство & ламинарное, то и односторонняя матрица инцидентности разрезов для & является тотально унимодулярной.
142 Глава 5. Целочисленное программирование Доказательство. Обозначим через & произвольное бескроссинговое семейство подмножеств V(G). Рассмотрим вначале случай, когда & ламинарно. Воспользуемся теоремой 5.24. Покажем, что все необходимые условия выполнены. Фиксируем подмножество Ж с &. Рассмотрим древесное представление (tree representation) (Г, (/?) семейства Ж. Здесь Г — ориентированное дерево с корнем г (утверждение 2.14). В обозначениях определения 2.13 имеем Ж = = {Se:ee Е(Т)}. Положим &г := {S(Vtlv) е 9L: distr(r, ш) четно} и &2 := Я\Яг. Заметим, что для любого ребра / е E(G) множество таких ребер е е Е(Г), что / € 5+(Se), образует путь Pf в Т (возможно, имеющий нулевую длину). Таким образом, |{Х € Яг: / € 5+(Х)}\ - \{Х е Я2: / е 5+(Х)}\ € {-1,0,1}, как и требует определение односторонней матрицы инцидентности разрезов. Более того, для любого ребра / множество ребер е е Е(Т), для которых / е 5~{Se), образует путь Qf в Г. Пути Pf и Qf имеют общий конец, поэтому |{Х€^1:/е5+(Х)}|-|{Х€^2:/€5+(Х)}|- - \{Х € Яг: / € 5"(Х)}| + \{Х е <%2: f е 5"(Х)}| е {-1,0,1}, как и требует определение двусторонней матрицы инцидентности разрезов. Пусть теперь (V(G), &) —произвольная бескроссинговая система множеств. Рассмотрим семейство 9' := {X е &: г ? X} U {У(G) \Х: X € J*; г € X} для некоторого фиксированного элемента г е V(G). Семейство &' ламинарно. Двусторонняя матрица инцидентности разрезов & является подматрицей матрицы (_м), где М—двусторонняя матрица инцидентности разрезов для &', поэтому она также является тотально унимодулярной. ? В случае бескроссинговых семейств общего вида односторонняя матрица инцидентности разрезов не является тотально унимодулярной; см. упражнение 13. Необходимое и достаточное условие ее тотальной унимодулярности приведено в работе Скрейвера [40]. Двусторонние матрицы инцидентности разрезов бескроссинговых семейств известны также под названием сетевых матриц (упражнение 14). Сеймур [42] показал, что все тотально унимодулярные матрицы могут быть получены из сетевых матриц а также еще двух других фиксированных тотально унимодулярных матриц при помощи операций специального вида. Этот глубокий результат показывает существование полиномиального алгоритма, проверяющего заданную матрицу на тотальную унимодулярность (Скрейвер [5]). § 5.5. Секущие плоскости В предыдущих параграфах мы изучали целочисленные полиэдры. Для произвольного полиэдра Р справедливо вложение Р э Р7. В случае, когда мы хотим решить целочисленную линейную программу тах{ос: х€Р7}, естественной пред-
§ 5.5. Секущие плоскости 143 ставляется идея отсечь некоторые части полиэдра Р, с тем чтобы получившееся множество снова оказалось полиэдром Р' удовлетворяющим условию РэР' э Р7. При удачном стечении обстоятельств оптимум тах{сх: х е Р'} будет достигаться на целом векторе. В противном случае мы можем повторить процедуру отсечения для Р' и получить новый полиэдр Р" и т. д. Изложенный прием лежит в основе метода секущих плоскостей (cutting plane method). Впервые он был предложен Данцигом, Фалкерсоном и Джонсоном [16] для некоторой частной оптимизационной задачи (а именно, задачи коммивояжера). Гомори [26,27] разработал алгоритм, позволяющий решать задачи целочисленного программирования общего вида с помощью метода секущих плоскостей. В данном параграфе мы ограничимся изучением теоретических аспектов задачи. Алгоритм Гомори не имеет полиномиальной оценки сложности и в той форме, в которой он был первоначально изложен, не является практичным. Однако общая идея метода секущих плоскостей часто и успешно применяется на практике. Эти практические аспекты мы обсудим в § 21.6. Дальнейшее изложение в основном следует работе Скрейвера [5]. Определение 5.29. Пусть Р с Rn — выпуклое множество. Положим J":=n*i. рсн где пересечение берется по всем рациональным аффинным полупространствам Н = {х:сх<5}, содержащим Р. Положим Р(0) := Р и P(f+1) := (Р(0)'. Полиэдр Р(0 называется i-м сечением Гомори—Хватала для полиэдра Р. Как мы покажем далее, если Р представляет собой рациональный полиэдр, то Р1 также является рациональным полиэдром. Поэтому Р2Р' 2 Р(2) 2 ... 2 Pi и Pj = (POj- Отметим, что Дадуш, Дей и Вилма [15] доказали, что если Р — произвольный выпуклый компакт, то Р' является рациональным политопом. Утверждение 5.30. Для любого рационального полиэдра Р = {х: Ах < Ъ} справедливо равенство Р' = {х: Ах < \иЪ\ для всех таких и>0, что вектор иА целый}. Доказательство. Отметим вначале два факта. Для любого такого рационального аффинного полупространства Н = {х: сх < 5}, что вектор с целый, очевидно, справедливо равенство Н/ = Н1с{х:сх<[5\}. (5.5) Если в дополнение к уже сказанному координаты вектора с взаимно просты (т. е. их наибольший общий делитель равен 1), то Н/ = Н1 = {х:сх<[5\}. (5.6) Для доказательства равенства (5.6) рассмотрим произвольный целый вектор с с взаимно простыми координатами. По лемме 5.11 гиперплоскость {х: сх = = [5J} содержит целый вектор у. Для произвольного рационального вектора
144 Глава 5. Целочисленное программирование х е {х: сх < [5\] рассмотрим такое число а е N, что вектор ах целый. Тогда получим х = -(ах-(а-1)у) + ^-у, т. е. х представляет собой выпуклую комбинацию целых точек в Я. Следовательно, л: € Я/з откуда и вытекает равенство (5.6). Перейдем теперь к основной части доказательства. Чтобы установить вложение вида «с», заметим, что для любого вектора и > О множество {х: иАх < иЬ] представляет собой полупространство, содержащее Р, поэтому из формулы (5.5) и целочисленное™ матрицы иА получаем, что Р/ с.{х: иАх < [ub\}. Докажем теперь вложение «2». Если Р = 0, то данное утверждение очевидно, поэтому будем считать, что Р ф 0. Пусть Я = {х: сх < 5} — произвольное рациональное полупространство, содержащее Р. Без ограничения общности вектор с можно считать целым, а его координаты — взаимно простыми. Заметим, что 5 > тах{сх: Ах < b} = тт{иЪ: иА = с, и > 0}. Пусть теперь и* — произвольное оптимальное решение задачи на минимум. Тогда для любого элемента г € {х: иАх < [ub\ для всех таких векторов и > 0, что вектор иА целый} с с{х:и*Ах<[и*Ъ\} мы имеем cz = u*Az < [и*Ъ\ < [5\. Отсюда с учетом равенства (5.6) следует, что z е Я7. ? Далее мы докажем, что для любого рационального полиэдра Р существует такое число t, что Р1 = Р®. Таким образом, метод секущих плоскостей Гомори будет последовательно решать линейные программы для полиэдров Р, Р' Р" и т.д., до тех пор пока оптимум не окажется целым. На каждом шаге будет добавляться лишь конечное число новых неравенств, а именно тех, которые соответствуют TDI-системе, задающей текущий полиэдр (вспомним теорему 5.17). Теорема 5.31 (Скрейвер [38]). Пусть Р = {х: Ах < Ь} — полиэдр, причем система Ах < Ъ обладает свойством TDI, матрица А целая, а вектор Ъ рациональный. Тогда Р' = {х: Ах < [Ь\}. В частности, для любого рационального полиэдра Р множество Р' также является рациональным полиэдром. Доказательство. Утверждение тривиально, если полиэдр Р пуст, поэтому будем считать, что Р ф0. Очевидно, Р' с {х: Ах < |_bjb Для доказательства вложения в обратную сторону рассмотрим такой вектор и > 0, что произведение иА целое. Согласно утверждению 5.30 достаточно доказать, что иАх < \иЪ\ для всех таких х, что Ах < \Ъ\. Как мы знаем, иЪ > тах{иАл:: Ах < b} = min{yb: у > 0, уА = иА}.
§ 5.5. Секущие плоскости 145 Поскольку система Ах < Ъ обладает свойством TDI, минимум достигается на некотором целом векторе у*. Тогда из неравенства Ах < |_bj следует, что иАх = у*Ах < у*[Ъ\ < [у*Ъ\ < [иЬ\. Второе из сформулированных утверждений следует из теоремы 5.17. ? Для доказательства основной теоремы настоящего параграфа нам потребуются две дополнительные леммы. Лемма 5.32. Если F — грань рационального полиэдра Р, то F' = P'n F. Более того, p(i) = р(0 nF для всех i е N. Доказательство. Пусть Р = {х: Ах < Ь}, где матрица А целая, вектор Ъ целый, а система Ах^Ь обладает свойством TDI (см. теорему 5.17). Пусть тогда F = {х: Ах < Ъ, ах = jS} — такая грань полиэдра Р, что неравенство ах < j3 выполняется для векторов из Р, причем вектор а и скаляр j3 целые. Согласно утверждению 5.16 системы Ах < Ъ и ах < /3 обладают свойством TDI, а значит, по теореме 5.18 системы Ах < Ъ, ах = /3 также обладают свойством TDI. Значение /3 целое, следовательно, Р' HF = {х: Ах < [Ъ\, ах = /3} = {х:Ах<: [Ь\, ах < [fi\, ах > Г/3"|} = F'. Здесь мы дважды воспользовались теоремой 5.31. Заметим, что множество F' либо пусто, либо образует грань полиэдра Р'. Для завершения доказательства достаточно воспользоваться индукцией по i. А именно, для всякого i множество F(l) либо пусто, либо служит гранью полиэдра P(l), при этом F(0 = Р(0 ПF(i_1) = Р(0 П (Р('_1) C\F)= P(i) OF. П Лемма 5.33. Пусть Р — полиэдр в Rn, a U—унимодулярная (п х п)-матрица. Положим /(Р) := {Ux: х € Р}. Тогда /(Р) снова является полиэдром. Более того, если полиэдр Р рациональный, то (/(Р))' = /(Р7) и (/(Р))7 = /(Р/). Доказательство. Поскольку отображение /: Rn —»Rn, х •-> Ux, является линейной биекцией, первое утверждение, очевидно, справедливо. Поскольку ограничения отображений / и /_1 на множество Zn также образуют биекции (согласно утверждению 5.9), мы имеем (/G>))/ = conv({y eZn:y = Ux,xeP}) = = conv({y € Rn: у = Ux, x e P, x € Zn}) = = conv({y G Rn: у = Ux, x e P7}) = /(P7). Пусть P = {x: Ax < b}, где Ax < b — TDI-система, матрица А целая, а вектор b рациональный (см. теорему 5.17). Тогда по определению система AU~lx < Ъ также обладает свойством TDI. Применяя теорему 5.31 дважды, получаем (/(Р))' = {х: Аи~гх < ЪУ = {х: AU~lx < |bj} =/(Р')- П Теорема 5.34 (Скрейвер [38]). Для всякого рационального полиэдра Р существует такое число t, что Р® = Р7.
146 Глава 5. Целочисленное программирование Доказательство. Рассмотрим рациональный полиэдр РвМ". Будем доказывать теорему индукцией по п + dim Р. Случай Р = 0 тривиален, случай dim Р — О также несложен. Предположим, что Р не является полиэдром полной размерности. Тогда Р Я: К для некоторой рациональной гиперплоскости К. Если К не содержит целых векторов, то К = {х: ах = /3} для некоторого целого вектора а и некоторого нецелого скаляра /3 (по лемме 5.11). Но, следовательно, Р' с {х: ах < L/3J, ах ^ Г/3"|} = 0 = Р7. Если /С содержит целый вектор, скажем К = {х: ах = j3}, где вектор а целый и скаляр /3 целый, то можно считать, что /3 = 0, поскольку утверждение теоремы инвариантно относительно параллельных переносов на целые векторы. По лемме 5.10 существует такая унимодулярная матрица U, что all = aev Поскольку утверждение теоремы также инвариантно относительно преобразований вида х »-> и~гх (по лемме 5.33), можно считать, что а = аег. Тогда первая координата любого вектора из Р равна нулю, и, значит, можно уменьшить размерность пространства на единицу, а затем применить индуктивное предположение (заметим, что ({0} х Q)7 = {0} х Qj и ({0} х Q)(t) = {0} х Qw для любого полиэдра Q в Mn_1 и любого числа t € N). Пусть теперь полиэдр Р = {х: Ах < Ь} имеет полную размерность. Без ограничения общности можно считать матрицу А целой. По теореме 5.1 найдутся такая целая матрица С и такой целый вектор d, что Р7 = {х: Сх < d}. В случае Pi = 0 мы полагаем С :=And:=b—A/t, где А! получается из А взятием модулей всех элементов. (Отметим, что {х: Ах < Ъ — А'И} = 0.) Рассмотрим неравенство вида сх < 5 в системе Сх < d. Докажем, что P(s)CH:={x:cx<5} для некоторого числа s е N. Из этого, очевидно, будет следовать утверждение теоремы. Вначале заметим, что существует такой скаляр /3 > 5, что Р с {х: сх < ft}: если Pt = 0, то этот факт следует из выбора С и d; если же Р7 ф 0, то это следует из утверждения 5.2. Предположим, что доказываемое утверждение ложно, т. е. существует такой целый скаляр у, что 5 < у < /3, и для него существует такое число s0 € N, что рЫ с {х: сх < у}, но при этом не существует такого числа s еN, что Р^ с {х: сх < <г-1Ь Заметим, что max{cx: xeP(s)} = у для всех 5 > s0, поскольку если тах{ос: х е P(s)} < 7 для некоторого 5, то p(s+Vc{x:cx<y-l}. Положим F := P(So) п{х: сх = у]. Множество F образует грань полиэдра P(So), и dim F<n = dim Р. По индуктивному предположению существует такое число sl9 что F(5l) = Fj с Р7 п {х: сх = у] = 0.
§ 5.6. Лагранжева релаксация 147 Применяя лемму 5.32 к F и P(So), мы получим 0 = F(Sl) = p<5°+si) n F = p(so+si) n {*: ex = у]. Следовательно, max{cx: л: e p(so+si)} <y — противоречие. ? Из доказанной теоремы вытекает следующее утверждение. Теорема 5.35 (Хватал [10]). Для любого политопа Р существует такое число t, что P(t) = Р7. Доказательство. Политоп Р ограничен, поэтому существует такой рациональный политоп Q^P, что Qj = Pl (для доказательства возьмем гиперкуб, содержащий Р, а затем для каждой целой точки z, лежащей в гиперкубе, но не в Р, пересечем его с рациональным полупространством, содержащим Р, но не z; см. упражнение 20 из гл. 3). По теореме 5.34 имеем Q(t) = Q7 для некоторого t. Следовательно, Рг с рЮ с qW = Q7 = Р7, а значит, P(t) = Р7. П Число t называется рангом Хватала (Chvatal rank) для Р. Если политоп Р не является ни ограниченным, ни рациональным, то утверждение теоремы может оказаться ложным; см. упражнения 1 и 17. Более эффективный алгоритм, строящий целочисленную оболочку двумерного полиэдра, был найден Харвеем [29]. Вариант метода секущих плоскостей, который за полиномиальное время приближенно решает задачу линейной оптимизации для целого полиэдра, заданного оракулом отделения, был описан Бойдом [8]. Кук, Каннан и Скрейвер [14] обобщили процедуру Гомори—Хватала на случай задачи смешанного линейного программирования. Эйзенбранд [18] показал, что задача выяснения для заданного рационального полиэдра Р, лежит ли заданный рациональный вектор в Р', является coNP-полной. § 5.6. Лагранжева релаксация Пусть задана целочисленная линейная программа тах{сх: Ах < Ъ, А'х < Ъ', х — целый вектор}. Предположим, что данную программу существенно проще решить, если отбросить условия А'х < Ь'. Обозначим Q := {х G Zn: Ах < Ъ) и будем считать, что мы можем оптимизировать линейные целевые функционалы по множеству Q (это верно, например, в случае conv(Q) = {х: Ах < Ь}). Метод лагранжевых релаксаций представляет собой способ, позволяющий избавиться от некоторых ограничений в задаче, представляющих для нас трудность (в рассмотренном случае это были условия А'х < Ъ'). Вместо того чтобы вводить явные ограничения, видоизменим целевую функцию так, чтобы штрафовать недопустимые решения. Говоря точнее, вместо задачи оптимизации тах{сТх: А'х <Ъ',хе Q} (5.7) мы будем рассматривать (для любого вектора Я > 0) следующую задачу: LR(A) := max{cTx + АТ(Ь' - А'х) :xeQ}. (5.8)
148 Глава 5. Целочисленное программирование Для любого А > О значение LR(A) представляет собой легко вычислимую верхнюю оценку для задачи (5.7). Задача (5.8) называется лагранжевой релаксацией задачи (5.7), а координаты вектора А называются множителями Лагранжа. Метод лагранжевых релаксаций полезен при решении задач нелинейного программирования, однако здесь мы ограничимся изучением (целочисленных) линейных программ. Конечно, нас будет интересовать как можно более точная верхняя оценка. Заметим, что отображение А >-> LR(A) является выпуклой функцией. Следующая процедура субградиентной оптимизации (subgradient optimization) может использоваться для поиска минимума функции LR(A): Начнем с произвольного вектора А(0) > 0. На итерации i, имея вектор A(l), найдем вектор х®, максимизирующий выражение стх + (Aw)T(b'—А'х) по всем х е Q (иными словами, вычислим LR(AW)). Заметим, что LR(A)-LR(A(0) > (А-А(0)т(Ь'-Л'х(?)) для всех А, т. е. Ъ' — А'х® представляет собой субградиент функции LR в точке Aw. Положим A(i+1) := max{0, Aw - ф' -А'х®)} для некоторого tt > 0. Поляк [36] показал, что если lim^oo tt = 0 и ?|10 ^ = °°5 то lim LR(A(0) = min{LR(A): А > 0}. i—>оо Более подробно вопрос о сходимости метода субградиентной оптимизации изучен в работах Гоффена [25], Антрейчера и Вулси [7]. Задача нахождения наилучшей оценки указанного вида, т. е. вычисления min{LR(A): А > 0}, иногда называется лагранжево двойственной для задачи (5.7). Далее мы докажем, что данный минимум всегда достижим, за исключением случая, когда {jc: Ах < Ь, А'х < Ъ'} = 0. Другой интересный вопрос состоит в том, насколько точной оказывается эта оценка. Ее качество, конечно же, зависит от структуры исходной задачи. В § 21.5 мы встретимся с приложением к задаче коммивояжера, для которой метод лагранжевых релаксаций оказывается чрезвычайно эффективным. Следующая теорема позволяет оценить качество верхней оценки. Теорема 5.36 (Джефрион [21]). Пусть с € Rny А' е Rmxn иЪ' е Rm. Рассмотрим такое множество Q с Rn, что conv(Q) образует полиэдр. Предположим, что задача тах{сТх: А'х < b', х е conv(Q)} имеет оптимальное решение. Обозначим LR(A) := max{cTx + АТ(Ь' - А'х) :xeQ]. Тогда inf {LR(A): А > 0} (оптимальное значение лагранжево двойственной задачи для тах{стх: А'х < b', х е Q}) достигается на некотором векторе А, а минимум совпадает с тах{стдг: А'х < <Ъ'У xeconv(Q)}. Доказательство. Пусть conv(Q) = {х: Ах < Ь}. Дважды применяя теорему двойственности линейного программирования 3.20 и производя несложные преоб-
§5.6. Лагранжева релаксация 149 разования, получаем max{cTx: х е conv(Q), А'х < Ъ'} = = тах{стх: Ах < Ь, А'х < Ъ'} = = min{ATb' + yTb:yTA + ATA' = cT, у>0, Х>0} = = min { АТЬ' + min{yTb: утА = ст - АТД', у > 0}: А > 0} = = min {АТЬ' + max{(cT - XJA')x: Ах < Ъ}: А > О} = = min {max{cTx + AT(b' - А'х): х € conv(Q)}: А ^ О} = = min{max{cTx + AT(b' -А'х) :xeQ}:X>0} = = min{LR(A): А>0}. Задача, фигурирующая в третьей строке, представляет собой линейную программу, откуда следует существование вектора А, на котором достигается минимум. ? В частности, если мы имеем линейную программу тах{сх: А'х < Ь', Ах < b, х целый}, где полиэдр {х: Ах < Ь} целый, то лагранжево двойственная задача (при релаксации условий А'х < Ь', как указано выше) дает ту же верхнюю оценку, что и стандартная линейная релаксация тах{сх: А'х < Ь', Ах < Ь}. Если полиэдр {х: Ах < Ь} не целый, то верхняя оценка, получаемая методом лагранжевых релаксаций, в общем случае является более точной (хотя и труднее вычислимой). Пример применения данного метода приведен в упражнении 21. Техника лагранжевых релаксаций также может использоваться для приближенного решения линейных программ. Рассмотрим, например, задачу о назначении работ (см. формулу (1.1) из §1.3). Задача может быть эквивалентно переписана в виде minjr: Yixu>ti(i = l,...,n),(x,T)ep\, (5.9) где P представляет собой политоп |(х,Г):0<дсу <t? (? = l,...,n, jeSt), Ya ^<Г0" = 1,...,4 г<2'*}" Применим метод лагранжевых релаксаций и рассмотрим задачу LR(A) := min {г + J] Xt (tt - ]Г хЛ : (x, T) e p\. (5.10) Специальный вид данной линейной программы позволяет легко решить ее для любого вектора А с помощью простого комбинаторного алгоритма (упражнение 23). Если обозначить через Q множество вершин политопа Р (см. следствие 3.32), то далее можно применить теорему 5.36 и заключить, что оптимальное значение лагранжево двойственной задачи max{LR(A): А > 0} совпадает с оптимальным значением задачи (5.9).
150 Глава 5. Целочисленное программирование Упражнения 1. Положим Р := {(*, у) € R2: у < у/2х}. Докажите, что множество Р7 не является полиэдром. Постройте пример полиэдра Р, для которого даже замыкание множества Р7 не будет полиэдром. 2. Пусть Р = {х е. Rk+l: Ах < Ъ) — рациональный полиэдр. Покажите, что множество conv(P П (Zk х R1)) образует полиэдр. Указание. Обобщите прием из доказательства теоремы 5.1. Замечание. Данное утверждение лежит в основе теории смешанного целочисленного программирования. См. книгу Скрейвера [5]. 3* (Кук, Фонлупт и Скрейвер [12]). Докажите следующий целочисленный аналог теоремы Каратеодори (см. упражнение 15 из гл. 3). Для всякого полиэдрального конуса С, всякого базиса Гильберта {аъ ...,at} конуса С и всякой целой точки я: € С найдутся такие 2п — 1 векторов среди alf...,at, что х представляется в виде неотрицательной целочисленной комбинации данных векторов. Указание. Рассмотрите оптимальное базисное решение для линейной программы max{y fl.: уА = х,у > 0} (где строками матрицы А служат векторы аъ...,at)} а затем округлите его координаты в меньшую сторону. Замечание (Брунс и др. [9]). Оценка 2п—1 была улучшена Себе [41] до 2п—2. Известно, что ее нельзя заменить на число, меньшее \тп\. 4 (Скрейвер [39]). Пусть С = {х: Ах > 0} — рациональный полиэдральный конус, а Ъ — некоторый вектор, удовлетворяющий условию Ьх > 0 для всех х G С\{0}. Покажите, что существует единственный минимальный по включению целочисленный базис Гильберта для С. 5 (Кук и др. [13]). Пусть А — целочисленная (m х п) -матрица, Ъ и с — векторы, а у — оптимальное решение задачи тах{сх: Ах < b, х — целый вектор}. Докажите, что существует такое решение z для задачи тах{ос: Ах < Ь}, для которого Hy — zlloo < nS(A). 6. Докажите, что всякая унимодулярная матрица получается из единичной с помощью подходящей последовательности унимодулярных преобразований. Указание. Вспомните доказательство леммы 5.10. 7*. Докажите, что существует полиномиальный алгоритм, который по заданной целочисленной матрице А и целому вектору Ъ находит такой целый вектор х, что Ах = Ь, или выясняет, что искомого вектора не существует. Указание. См. доказательства леммы 5.10 и леммы 5.11. 8. Рассмотрим две системы: (1 i)feH3 и 0 -OfeK)- Очевидно, они определяют один и тот же полиэдр. Докажите, что первая из них обладает свойством TDI, а вторая — нет. 9. Пусть а Ф 0 — целый вектор, а Р — рациональное число. Докажите, что неравенство ах < )3 образует TDI-систему, если и только если координаты вектора а взаимно просты.
Упражнения 151 10. Пусть Ах < Ъ — TDI-система, к е N, а > 0 — рациональное число. Покажите, что система -г Ах < аЪ также обладает свойством TDI. Более того, докажите, что система аАх < аЪ не обязательно обладает свойством TDI. 11. Опираясь на теорему 5.25, докажите теорему Кёнига 10.2 (см. упражнение 2 из гл.11), которая утверждает, что размер максимального паросочетания в двудольном графе совпадает с размером минимального вершинного покрытия в нем. 12. Покажите, что матрица ( 1 1 1\ А = -1 1 0 v 1 о о; не является тотально унимодулярной, но при этом полиэдр {х: Ах = Ь} целый для всех целых векторов Ъ (Немхаузер и Вулси [4]). 13. Пусть G - орграф ({1,2,3,4}, {(1,3), (2,4), (2,1), (4,1), (4,3)}), и пусть & := {{1,2,4}, {1,2}, {2}, {2,3,4}, {4}}. Докажите, что система (V(G), &) бескрос- синговая, но односторонняя матрица инцидентности разрезов для & не тотально унимодулярна. 14*. Пусть G и Г — такие орграфы, что V(G) = V(T), а неориентированный образ орграфа Т является деревом. Для вершин v, w е V(G) обозначим через Р{у, w) единственный неориентированный путь изувшв дереве Г. Пусть М = = (mf,e)/€E(T),e€?(G) —матрица, задаваемая равенствами {1, если (х, у) € E{P{v, w)) и (х, у) е Е(Р{у, у)), -1, если (х, у) € Е{Р{у, ш)) и (х, у) е E(P(v, х)), 0, если(х,у)?Е(РО;,и;)). Матрицы, получающиеся таким образом, называются сетевыми (network). Покажите, что класс сетевых матриц совпадает с классом двусторонних матриц инцидентности разрезов бескроссинговых систем множеств. 15. Интервальной называется 0-1-матрица, единичные элементы в каждой строке которой идут подряд. Докажите, что интервальные матрицы являются тотально унимодулярными. Замечание. Хохбаум и Левин [30] предложили способ эффективного решения задач оптимизации для таких матриц. 16. Рассмотрим следующую задачу об упаковке отрезков (interval packing). Пусть задан список отрезков [ah bt], i = 1,..., п, снабженных весами съ ..., сп, а также число fceN. Требуется найти такое подмножество отрезков максимального веса, что всякая точка покрывается не более чем к отрезками из выбранного подмножества. (а) Сформулируйте данную задачу в виде линейной программы (без требования целочисленное™ переменных). (б) Рассмотрим случай к = 1. Какой комбинаторный смысл имеет двойственная линейная программа? Покажите, как решить эту двойственную линейную программу с помощью простого комбинаторного алгоритма.
152 Глава 5. Целочисленное программирование (в) Используя результат из п. (б), получите алгоритм для задачи упаковки интервалов для случая к = 1, время работы которого составляет 0(п log п). (г) Придумайте простой алгоритм со сложностью 0(п log п) для случая произвольного к и единичных весов. Замечание. См. также упражнение 11 из гл. 9. 17. Рассмотрим множества Р := {(х, у) € R2: у = л/Ъг, х > 0} и Q := {(jc, у) е R2: у = V2x}. Докажите, что P(t) = РфР1 для всех t е N и Q' = R2. 18. Пусть Р — выпуклая оболочка трех точек (0,0), (0,1) и (fc, 1/2) в R2, где fceN. Покажите, что р*2*-1) ^Р,, но Р(ад = Р7. 19*. Пусть Р с [0,1]п — политоп, содержащийся в единичном гиперкубе и такой, что Р/ = 0. Докажите, что Р^ = 0. Замечание. Эйзенбранд и Шульц [19] доказали, что для любого политопа Р ^ [Q> 1]п справедливо равенство Р^п (1+1°sn)D = р/# См. также работы Покутты и Шульца [35], Ротфосса и Санита [37]. 20. В данном упражнении мы применим метод лагранжевых релаксаций к системам линейных уравнений. Пусть Q — конечное множество векторов в Rn, с е Rn, A' G Rmxn иЬ'б Rm. Докажите, что min{max{cTx + Я7^ -А'х): х е Q}: Я е Rm} = max{cTy: у е conv(Q), А> = Ь'}. 21. Рассмотрим нижеследующую задачу о размещении предприятий (facility location). Пусть задано множество из п потребителей с требованиями db..., dn и т предприятий, каждое из которых может быть открыто или нет. Для каждого предприятия i = 1,..., т известна стоимость ft его открытия, объем производства щ и расстояние ctj до каждого потребителя j = 1,..., п. Задача состоит в том, чтобы определить множество открываемых предприятий и выбрать для каждого потребителя одно открытое предприятие. Общая сумма требований всех потребителей, назначенных данному предприятию, не должна превосходить объема производства на нем. При этом необходимо минимизировать суммарную стоимость открытия предприятий плюс сумму расстояний от каждого потребителя до выбранного предприятия. В терминах целочисленного программирования задача может быть сформулирована так: U i j i Примените метод лагранжевых релаксаций двумя способами, вначале релаксируя условия J]. djXij < щу{ для всех i, а затем релаксируя условия ][] • xtj = 1 для всех j. Какая из этих лагранжево двойственных задач дает более точную оценку? Замечание. Полученные лагранжевы релаксации будут изучены в упражнении 7 из гл. 17. 22* (Гуманс и Скутелла [24]). Рассмотрим следующую задачу о размещении предприятий без пропускных способностей. Пусть заданы числа п, т, ft и ctj
Литература 153 (i = 1,..., т, j = 1,..., n). Задача состоит в нахождении оптимума min j J] СуХу + J] /iЯ: J] *i; = 1, *у < Уь Хц, Уг е {0,1} |. ij i i ' Для подмножества SC{l)#..,n} обозначим через c(S) суммарную стоимость предприятий, снабжающих потребителей из S, т. е. i,j i i В задаче распределения стоимости требуется установить, можно ли распределить общую стоимость с({1,..., п}) между покупателями так, что ни одно из подмножеств потребителей S не будет платить более c(S). Иными словами, требуется выяснить, существуют ли такие числа ръ..., рп, что J]/Li Pj = C(U> • • • >п}) и 2;Gs ft ^ с(^) Д-71* всех ^с{1,...,п}. Покажите, что ответ положительный, если и только если с({1,..., п}) совпадает с i,j i i т. е. условия целочисленное™ могут быть отброшены. Указание. Примените метод лагранжевых релаксаций к вышеописанной задаче ЛП. Для каждого множества множителей Лагранжа разложите возникающую задачу минимизации в набор задач минимизации на полиэдральных конусах. Какие векторы служат порождающими для этих конусов? 23. Опишите комбинаторный алгоритм, позволяющий (без использования линейного программирования) решить задачу (5.10) для произвольных (но при этом фиксированных) множителей Лагранжа А. Какую наилучшую оценку сложности вы можете получить? Литература Общая литература [1] Bertsimas D.} Weismantel R. Optimization Over Integers. Dynamic Ideas, Belmont, 2005. [2] Cook W.J., Cunningham W.H., Pulleyblank W.R., Schrijver A. Combinatorial Optimization. Wiley, New York, 1998, Chapter 6. [3] Jiinger M., Liebling Т., Naddef D., Nemhauser G., Pulleyblank, W., Reinelt G., Rinaldi G. Wohey L. (Eds.). 50 Years of Integer Programming 1958-2008. Springer, Berlin, 2010. [4] Nemhauser G. L., Wolsey L.A. Integer and Combinatorial Optimization. Wiley, New York, 1988. [5] Schrijver A. Theory of Linear and Integer Programming. Wiley, Chichester, 1986. [6] Wolsey L. A. Integer Programming. Wiley, New York, 1998.
154 Глава 5. Целочисленное программирование Процитированные работы [7] Anstreicher К. М., Wolsey L. A. Two «well-know» properties of subgradient optimization // Mathematical Programming. Ser. B. 2009. Vol. 120. P. 213-220. [8] Boyd E. A. A fully polynomial epsilon approximation cutting plane algorithm for solving combinatorial linear programs containing a sufficiently large ball // Operations Research Letters. 1997. Vol. 20. P. 59-63. [9] Bruns W., Gubeladze J., Henk M., Martin A., Weismantel R. A counterexample to an integral analogue of Caratheodory's theorem // Journal fur die Reine und Angewandte Mathematik. 1999. Bd.510. S. 179-185. [10] Chvatal V. Edmonds' polytopes and a hierarchy of combinatorial problems // Discrete Mathematics. 1973. Vol.4. P.305-337. [11] Cook W. Operations that preserve total dual integrality // Operations Research Letters. 1983. Vol. 2. P. 31-35. [12] Cook W., Fonlupt J., SchrijverA. An integer analogue of Caratheodory's theorem // Journal of Combinatorial Theory. Ser. B. 1986. Vol. 40. P. 63-70. [13] Cook W., Gerards A., Schrijver A., Tardos Ё. Sensitivity theorems in integer linear programming // Mathematical Programming. 1986. Vol. 34. P. 251-264. [14] Cook W., Kannan R., SchrijverA. Chvatal closures for mixed integer programming problems // Mathematical Programming. 1990. Vol. 47. P. 155-174. [15] Dadush D., Dey S. S., Vielma J. P. On the Chvatal — Gomory closure of a compact convex set // Mathematical Programming. Ser. A. 2014. Vol.145. P. 327-348. [16] Dantzig G., Fulkerson R., Johnson S. Solution of a large-scale traveling-salesman problem // Operations Research. 1954. Vol. 2. P. 393-410. [17] Edmonds J., Giles R. A min-max relation for submodular functions on graphs. In: Studies in Integer Programming (P. L. Hammer, E. L. Johnson, B. H. Korte, G. L. Nemhauser, eds.), North-Holland, Amsterdam, 1977. (Annals of Discrete Mathematics; Vol.1). P. 185-204. [18] Eisenbrand F. On the membership problem for the elementary closure of a polyhedron // Combinatorica. 1999. Vol. 19. P. 297-300. [19] Eisenbrand F., Schulz A. S. Bounds on the Chvatal rank of polytopes in the 0/1-cube // Combinatorica. 2003. Vol. 23. P. 245-261. [20] Fulkerson D. R. Blocking and anti-blocking pairs of polyhedra // Mathematical Programming. 1971. Vol.1. P. 168-194. [21] Geoffrion A. M. Lagrangean relaxation for integer programming // Mathematical Programming Study. 1974. Vol. 2. P. 82-114. [22] Giles F. R.} Pulleyblank W. R. Total dual integrality and integer polyhedra // Linear Algebra and Its Applications. 1979. Vol. 25. P. 191-196. [23] Ghouila-HouriA. Caracterisation des matrices totalement unimodulaires // Comptes Ren- dus Hebdomadaires des Seances de l'Academie des Sciences (Paris). 1962. T. 254. P. 1192- 1194. [24] Goemans M.X., Skutella M. Cooperative facility location games // Journal of Algorithms. 2004. Vol. 50. P. 194-214. [25] Goffin J. L. On convergence rates of subgradient optimization methods // Mathematical Programming. 1977. Vol. 13. P. 329-347.
Литература 155 Gomory R. E. Outline of an algorithm for integer solutions to linear programs // Bulletin of the American Mathematical Society. 1958. Vol. 64. P. 275-278. Gomory R. E. An algorithm for integer solutions of linear programs // Recent Advances in Mathematical Programming (R. L. Graves, P. Wolfe, eds.), McGraw-Hill, New York, 1963. P. 269-302. Graver J. E. On the foundations of linear and integer programming I // Mathematical Programming. 1975. Vol. 9. P. 207-226. Harvey W. Computing two-dimensional integer hulls // SIAM Journal on Computing. 1999. Vol. 28. P. 2285-2299. Hochbaum D. S., Levin A. Optimizing over consecutive l's and circular l's constraints // SIAM Journal on Optimization. 2006. Vol. 17. P. 311-330. Hoffman A. J. A generalization of max flow-min cut // Mathematical Programming. 1974. Vol.6. P.352-359. Hoffman A. J., Kruskal J. B. Integral boundary points of convex polyhedra // Linear Inequalities and Related Systems (H. W. Kuhn, A. W. Tucker, eds.), Princeton University Press, Princeton, 1956. (Annals of Mathematical Study; Vol.38). P. 223-246. Lasserre J. B. The integer hull of a convex rational polytope // Discrete & Computational Geometry. 2004. Vol. 32. P. 129-139. Meyer R. R. On the existence of optimal solutions to integer and mixed-integer programming problems // Mathematical Programming. 1974. Vol. 7. P. 223-235. Pokutta S.t Schulz A. S. On the rank of cutting-plane proof systems // Integer Programming and Combinatorial Optimization; Proceedings of the 14th International IPCO Conference (F. Eisenbrand, F. B. Shepherd, eds.), Springer, Berlin 2010. (Lecture Notes in Comput. Sci.; Vol.6080). P.450-463. Поляк Б. Т. Общий метод решения экстремальных задач // Доклады АН СССР. 1967. Т. 174. С. 33-36. (English translation in Soviet Mathematics Doklady, vol. 8,1967, p. 593- 597.) Rothvofc Т., Sanita L. 0/1 polytopes with quadratic Chvatal rank. Manuscript, 2012. SchrijverA. On cutting planes // Combinatorics 79; Part II (M. Deza, I. G. Rosenberg, eds.), North-Holland, Amsterdam 1980. (Annals of Discrete Mathematics; Vol.9). P. 291-296. Schrijver A. On total dual integrality // Linear Algebra and its Applications. 1981. Vol. 38. P. 27-32. SchrijverA. Packing and covering of crossing families of cuts // Journal of Combinatorial Theory. Ser. B. 1983. Vol. 35. P. 104-128. SeboA. Hilbert bases, Caratheodory's theorem and combinatorial optimization // Integer Programming and Combinatorial Optimization (R. Kannan and W. R. Pulleyblank, eds.), University of Waterloo Press, 1990. Seymour P. D. Decomposition of regular matroids // Journal of Combinatorial Theory. Ser. B. 1980. Vol. 28. P. 305-359. Veinott A. F., Jr., Dantzig G. B. Integral extreme points // SIAM Review. 1968. Vol. 10. P. 371-372. Wolsey L. A. The b-hull of an integer program // Discrete Applied Mathematics. 1981. Vol.3. P. 193-201.
ГЛАВА 6 Остовные деревья Рассмотрим следующую практическую задачу. Телефонная компания собирается арендовать некоторое подмножество из существующих телефонных кабелей, каждый из которых соединяет пару городов. Арендованных кабелей должно быть достаточно, чтобы соединить все города вместе, а их общая стоимость должна быть минимальной. Естественным кажется представить телефонную сеть в виде графа: его вершины отвечают городам, а ребра — кабелям. По теореме 2.4 минимальные связные остовные подграфы заданного графа — это остовные деревья. Итак, мы ищем остовное дерево (spanning tree) минимального веса, где весом подграфа Г графа G с весами с: E(G) —> R называется величина с(Е(Т)) = Х1ееЕ(т) с(е)- Мы также называем с(е) стоимостью ребра е. Рассмотренная выше комбинаторная задача оказывается очень простой, но одновременно важной. Она входит в ряд тех проблем комбинаторной оптимизации, исследование которых началось почти век назад. Первый алгоритм был предложен Борувкой [10,11]; см. также работу Нешетршила, Милковой и Нешетр- шиловой [44]. Данная задача напоминает задачу о сверлении, в которой ищется кратчайший путь, проходящий через все вершины полного графа. Однако теперь вместо кратчайшего пути мы ищем кратчайшее остовное дерево. Несмотря на то что количество остовных деревьев даже больше, чем количество путей (Кп содержит п!/2 гамильтоновых путей и пп~2 различных остовных деревьев; см. теорему 6.2), вопрос об оптимальном остовном дереве оказывается существенно проще. В действительности, как мы увидим в § 6.1, для решения годится простая жадная стратегия. У неориентированных деревьев существуют также ориентированные аналоги (называемые по-английски arboresences). По теореме 2.5 они представляют собой минимальные остовные подграфы ориентированных графов, где все вершины достижимы от корня. Ориентированная версия задачи о минимальном остовном дереве (minimum spanning tree problem), называемая задачей об ориентированном дереве минимального веса (minimum weight arborescence problem), сложнее, поскольку жадная стратегия теперь неприменима. Решение ориентированной задачи будет изложено в § 6.2. Поскольку для данных задач известно множество эффективных комбинаторных алгоритмов, нет особого смысла решать их с помощью линейного программирования. Несмотря на это, интересным представляется тот факт, что соответ-
§ 6.1. Минимальные остовные деревья 157 ствующие политопы (выпуклые оболочки характеристических векторов остовных деревьев; см. следствие 3.33) могут быть описаны некоторым естественным образом. Этому вопросу будет посвящен § 6.3. Наконец, в § 6.4 мы докажем несколько классических результатов, относящихся к теории упаковок остовных деревьев. § 6.1. Минимальные остовные деревья В данном параграфе мы изучим следующие две задачи. Maximum Weight Forest (задача о лесе максимального веса) Дано: неориентированный граф G, веса с: E(G) -> R. Надо: найти лес максимального веса в G. Minim | Дано: Надо: um Spanning Tree (задача неориентированный граф о минимальном остовном дереве) G, Becac:E(G)-»R. найти остовное дерево минимального веса в G граф G не связен. или установить, что Мы докажем, что данные задачи эквивалентны. Чтобы уточнить понятие эквивалентности, скажем, что задача & линейно сводится к задаче i2, если найдутся такие функции / и g, что каждая из них вычислима за линейное время и / переводит экземпляр х задачи & в экземпляр /(х) задачи ?И, a g переводит решение для /(*) в решение для х. Если задача 2? линейно сводится к 21 и задача ?1 линейно сводится к 3?, то данные задачи называются эквивалентными. Утверждение 6.1. Задача о лесе максимального веса и задача о минимальном остовном дереве эквивалентны. Доказательство. Пусть задан экземпляр (G, с) задачи о лесе максимального веса. Удалим все ребра отрицательного веса, обозначим с'(е) := —с(е) для всех е € Е (G), а затем добавим минимальное множество ребер F (с произвольными весами), чтобы сделать граф связным. Обозначим получившийся граф через G'. Тогда экземпляр (G', с') задачи о минимальном остовном дереве эквивалентен исходному в следующем смысле: рассмотрим остовное дерево минимального веса для (G' с7) и удалим из него ребра F. В итоге получится лес максимального веса для (G, с). Обратно, пусть задан экземпляр (G, с) задачи о минимальном остовном дереве. Обозначим с'{е) := К — с(е) для всех е е E(G), где К = 1 + maXe€?(G) с(е). Тогда экземпляр (G, с') задачи о лесе максимального веса эквивалентен исходному, поскольку все остовные деревья содержат одинаковое количество ребер (теорема 2.4). ? Мы вернемся к теме сведения одной задачи к другой в гл. 15. В оставшейся части параграфа мы будем рассматривать лишь задачу о минимальном остов-
158 Глава 6. Остовные деревья ном дереве. Вначале подсчитаем количество допустимых решений. Следующее утверждение известно как теорема Кэли. Теорема 6.2 (Сильвестр [49], Кэли [12]). Для всех п е N количество различных остовных деревьев в Кп равно пп~2. Доказательство. Пусть tn — количество остовных деревьев в Кп. Пусть *n,fc := {№, /): В — ветвление, У(В) = {1,..., п}, |Е(В)| = к, /: Е(В) -> {1,..., fc} — биекция}. Каждое остовное неориентированное дерево допускает ровно п способов ориентации (отвечающих всевозможным способам выбора корня), и существует (п — 1)! перестановок на множестве его ребер, поэтому |fi*nffl_il = (п — 1)! • п • tn. Более того, \@П)0\ = 1- Покажем, что \BBni+1\ = n(n — i — l)\0Bni\, откуда будет следовать, что |^n_il = лл—1 (п — 1)! | ^9„fo I И> значит, tn = пп~2. Для каждого элемента (В, /) е &П}{+\ обозначим через g{B, /) е ^ln f результат удаления ребра /-1(i +1). Теперь всякий элемент (В' /) € Лп t служит образом в точности п(п — i — 1) элементов из 9&пх+\- Действительно, мы добавляем ребро е = (у, ш) и полагаем /(e) := i + 1. При этом существует п способов выбрать и (подойдет любая вершина), а затем п — i — l способов выбрать w (выбор производится среди корней связных компонент ветвления В' не содержащих и), ? Докажем теперь следующие условия оптимальности. Теорема 6.3. Рассмотрим экземпляр (G, с) задачи о минимальном остовном дереве, и пусть Т — некоторое остовное дерево в G. Тогда следующие утверждения эквивалентны: (а) дерево Т оптимально; (б) для каждого ребра е = {х, у} е Е(G) \Е(Т) на х-у-пути в Т нет ребер, вес которых больше, чем вес ребра е; (в) для каждого ребра е е Е(Т) его вес минимален в множестве 5(V(С)), где С — одна из связных компонент графа Т — е; (г) найдется такое упорядочение Е(Т) = {ег,..., еп_г}, что для всех i е {1,..., п — 1} существует множество X с V(G), для которого ребро et имеет минимальный вес среди 5(Х) и е, ^ 5(Х) для всех j е {1,..., i — 1}. Доказательство. Докажем импликацию (а)=>(б). Предположим, что условие (б) нарушается. Рассмотрим ребро е = {х,у} е E(G)\E(T), и пусть / — ребро на х-у-пути в Т, для которого с(/) > с(е). Тогда (Г — /) + е представляет собой остовное дерево с меньшим весом. Докажем импликацию (б)=>(в). Пусть условие (в) нарушается. Выберем ребро е G Е(Т), связную компоненту С для Г-еи ребро / = {х, у} е 5(V(C)), для которого с(/) < с(е). Заметим, что на х-у-пути в Г должно лежать ребро из множества 5(У(С)), но единственным таким ребром является е. Итак, условие (б) также нарушено. Докажем импликацию (в)=>(г). Упорядочим ребра произвольным образом и положим X := У(С).
§ 6.1. Минимальные остовные деревья 159 Докажем импликацию (г)=>(а). Пусть множество Е(Т) = {еъ..., еп_1) удовлетворяет условию (г), и пусть Г* — оптимальное остовное дерево, для которого значение i := min{h е {1,..., п — 1}: eh фЕ(Т*)} максимально. Покажем, что i = оо, т. е. Г = Г*. Предположим противное, и пусть тогда X с V(G) —такое подмножество, что е{ служит ребром минимального веса в 5{Х) и е,- ф 5(Х) для всех ; е {1,..., i — 1}. Множество Г* + е{ содержит цикл С. Поскольку е{ еЕ{С) П 5{Х), еще хотя бы одно ребро f (f ф et) из С должно лежать в 5(Х) (см. упражнение 12 из гл. 2). Заметим, что множество (T*+et) —f образует остовное дерево. Поскольку Г* оптимально, имеем с{е{) > с(/). Но поскольку / е 5(Х), также справедливо неравенство с(/) > с{е{). Более того, если / = е;- еЕ(Г), то ; > i. Итак, с(/) = с(е?), и (Г* + ef) — / представляет собой еще одно оптимальное остовное дерево, что противоречит максимальности i. ? Нижеследующий «жадный» алгоритм для задачи о минимальном остовном дереве был предложен Краскалом [40]. Его можно рассматривать как частный случай более общего жадного метода, который будет изучаться в § 13.4. Обозначим п := \V(G)\ итп:= \E(G)\. Kruscal's Algorithm (алгоритм Краскала) Вход: Выход: связный неориентированный граф G, веса с E(G) остовное дерево Г, имеющее минимальный вес. -*Ж. I (Т) Упорядочить ребра по весу: c(ex) < с(е2) < ... < с(ет). (2) Присвоить Г := (V(G), 0). (3) For i := 1 to m do: If T + et не содержит циклов then присвоить Г := Т + е^ Теорема 6.4. Алгоритм Краскала корректен. Доказательство. Очевидно, что алгоритм Краскала строит некоторое остовное дерево Г. Для этого дерева выполняется условие (б) теоремы 6.3, а значит, Г оптимально. ? Время работы алгоритма Краскала составляет 0(тп): ребра можно упорядочить по весу за время O(mlogm) (теорема 1.5), а проверка графа с п ребрами на наличие цикла может быть выполнена за время 0(п) (достаточно запустить алгоритм DFS (или BFS) и проверить, есть ли в графе ребра, не лежащие в DFS- (или BFS-) дереве). Поскольку эти действия нужно повторять т раз, общая оценка времени работы составляет 0(т log т + тп) = 0(тп). Однако возможна более эффективная реализация. Теорема 6.5. Существует реализация алгоритма Краскала, время работы которой составляет O(mlogn). Доказательство. Избавимся вначале от параллельных ребер: среди каждого комплекта параллельных ребер достаточно оставить одно с наименьшим весом.
160 Глава 6. Остовные деревья Теперь можно считать, что т = 0(п2). Поскольку сложность шага (Т), очевидно, составляет O(mlogm) = O(mlogn), мы сосредоточим внимание на шаге (3). Опишем структуру данных, позволяющую поддерживать в процессе работы множество связных компонент дерева Г. На шаге (5) мы должны проверить, приводит ли к появлению цикла добавление ребра е{ = {v} w} к Г. Это эквивалентно проверке того, попадают ли вершины и и w в одну и ту же связную компоненту. Рассматриваемая реализация поддерживает такое ветвление В, что V {B)=V (G). При этом связные компоненты ветвления В будут порождаться ровно теми же подмножествами вершин, что и связные компоненты дерева Г. (Отметим, однако, что в общем случае В нельзя получить из Т путем задания ориентации на ребрах.) При проверке ребра е{ = {v, w} на шаге (3) мы находим корень rv ориентированного дерева В, содержащего и, и аналогично находим корень rw ориентированного дерева В, содержащего ш. Время, уходящее на этот поиск, пропорционально сумме длин Гу-у-пути и гш-ш-пути в Б. Далее мы покажем, что эти длины всегда будут не более log п. Проверим теперь равенство rv = rw. Если rv ф гш, то вставим et в Г. Мы также должны добавить ребро к В. Пусть h(r) обозначает максимальную длину пути в В, начинающегося в вершине г. Если h(rv) > h(rw), то добавим ребро (ги, гш) к В, иначе добавим ребро (гш, rv) к В. Если h(rv) = h(rw), то данное преобразование увеличивает h(rv) на единицу, в противном случае новый корень имеет то же значение h, что и ранее. Итак, мы можем легко поддерживать значения h для корней ориентированных деревьев. Вначале мы, конечно, имеем В := (V(G), 0) и h(v) := 0 для всех v € V(G). Докажем, что ориентированное дерево В с корнем в г содержит не более 2h(r) вершин. Из этого будет следовать, что ft (г) < log п, и доказательство на этом завершится. В начале работы данное утверждение, очевидно, справедливо. Покажем, что его истинность сохраняется при добавлении ребра (х, у) к В. Если значение h(x) не изменяется при добавлении, то доказательство тривиально. Иначе имеем ft(jc) = ft (у) до добавления, а значит, каждое из двух объединяемых ориентированных деревьев содержит не менее вершин. Тогда объединенное дерево с корнем в вершине х содержит не менее 2 • 2h(x) = 2hW+1 деревьев, как и утверждалось. ? Вышеописанную реализацию можно дополнительно ускорить с помощью следующего приема: как только мы вычислили корень rv ориентированного дерева из В, содержащего заданную вершину и, все ребра на ry-i;-nyra Р могут быть удалены, а вместо них добавлены ребра (гх,х) для всех х е V(P)\{rv]. Весьма непростой анализ приведенной модификации (называемой эвристикой сжатия путей) показывает, что время работы шага (3) становится почти линейным. Более точно, оно составляет 0(ma(m, п)), где а(тп, п) представляет собой так называемую обратную функцию Аккермана (Тарджан [7,50]). Укажем теперь еще один широкоизвестный алгоритм для задачи о минимальном остовном дереве, предложенный Ярником [34] (см. также работу Корте и Нестерила [39]), Дейкстрой [18] и Примом [46].
§ 6.1. Минимальные остовные деревья 161 Prim's Вход: Выход: Algorithm (алгоритм Прима) связный остовное неориентированный граф G, веса с E(G) дерево Т, имеющее минимальный вес. ->R. (Т) Выбрать v е V(G). Присвоить Т := ({у}, 0). (2) While У(Г) ф V(G) do: Выбрать ребро е е 5G(V(T)) минимального веса. ПоложитьТ := Т + е. Теорема 6.6. Алгоритм Прима корректен. Время работы этого алгоритма составляет 0(т + п2). Доказательство. Корректность следует из выполнения условия (г) теоремы 6.3. Чтобы убедиться в этом, достаточно перебрать ребра дерева Г в том порядке, как они выбирались алгоритмом. Перейдем к оценке времени работы. Как и ранее, вначале мы избавимся от параллельных ребер. Для достижения оценки 0(п2) будем поддерживать для каждой вершины v е V(G)\V(T) самое дешевое ребро е е E(V(T), {v}). Все выбранные таким способом ребра будем называть кандидатами. Инициализация множества кандидатов после шага (Г) требует времени 0(п). Каждый поиск самого дешевого ребра среди множества кандидатов занимает время О(п). Обновление множества кандидатов выполняется путем сканирования списка ребер, инцидентных вершине, добавляемой к У (Г), а значит, также занимает время 0(п). Поскольку цикл в шаге (2) совершает п — 1 итераций, мы получаем общую оценку сложности О (п2). ? Время работы данного алгоритма может быть улучшено применением более эффективных структур данных. Обозначим lTv := min{c(e): е € E(V(T), {и})}. Будем поддерживать множество {(у, lTv): v е V(G)\V(T), lTu < оо} в виде структуры данных, называемой приоритетной очередью или кучей, которая позволяет вставлять новый элемент, находить и удалять элемент (у, I) с наименьшим значением I (называемым ключом), а также уменьшать ключ I элемента (и, I). В этих предположениях алгоритм Прима может быть записан следующим образом. (1) Выбрать veV(G). Присвоить Т := ({и}, 0). Пусть lw := оо для всех w е V(G)\{v]. (2) While У(Г) ф V(G) do: For e = {v, w} GE(M, V(G)\V(T)) do: If c(e) < lw < oo then присвоить lw := c(e) и выполнить decreasekey(n>, lw). If lw = oo then присвоить lw := c(e) и выполнить insert(u;,/ш). (1;,/^) := deletemin.
162 Глава 6. Остовные деревья Пусть е € E(V(T), {и}), причем с(е) = lv. Присвоить Т :=Т + е. Существует несколько подходов к реализации кучи. Один из наиболее эффективных способов (так называемая фибоначчиева куча) был предложен Фредма- ном и Тарджаном [26]. Дальнейшее изложение основано на работе Скрейвера [6]. Теорема 6.7. Существует структура данных, хранящая конечное множество (изначально пустое), в котором с каждым элементом w связано вещественное число d(w), называемое ключом. При этом данная структура способна выполнить за время 0(т + р + п\о%р) любую последовательность, состоящую из следующих типов операций: • р операций insert {добавление элемента w с ключом d(w)); • п операций deletemin (найти и удалить элемент w, ключ которого d(w) минимален); • т операций decreasekey (для заданного элемента w уменьшить его ключ d(w) до указанного значения). Доказательство. Текущее множество элементов, обозначаемое через U, будет храниться в виде фибоначчиевой кучи. Последняя представляет собой ориентированное корневое дерево (U, Е), снабженное функцией <р: U —> {0,1}, обладающей следующими свойствами. 1. Если (w, v) е Е, то d(w) < d(v). (Это свойство называется порядком кучи.) 2. Для всех w е U сыновей вершины w можно упорядочить в виде 1,..., |5+(ш)|, так что i-й сын вершины и удовлетворяет условию \5+(v)\ + (p(v)>i — l. 3. Пусть w и и являются различными корнями (5~(w) = 5~(v) = 0). Тогда \5+(w)\^\5+(v)\. Из свойства 2 следует еще одно свойство. 4. Если вершина w имеет исходящую степень не меньше к, то из w достижимы не менее (V2)k вершин. Докажем свойство 4 индукцией по к. Случаи к = 0 и к = 1 тривиальны. Пусть w — вершина, для которой |5+(ш)| >к>1,и пусть и — сын вершины w, для которого \5+(v)\^k — 2 (и существует по свойству 2). Применим индуктивное предположение к и в графе (U,E) и к w в графе (U,E\{(w, и)}). Получим, что изииш достижимы не менее (V2)k~2 и (у/2)к~г вершин (соответственно). Учитывая, что (V2)k < (V2)k~2 + (л/2)к"\ получаем свойство 4. Среди прочего доказанное свойство 4 показывает, что |5+(ш)| < 21og|[/| для всех w GU. Таким образом, учитывая свойство 3, заключаем, что корни дерева (U,Е) могут быть заданы такой функцией Ъ: {0,1,..., |_21og|[/|J} —> U, что b(\5+(w)\) = w для каждого корня w. Отметим, что равенство b(i) = w не означает, что |5+(ш)| = i или что w является корнем. Кроме вышеперечисленного для каждой вершины будем поддерживать дву- связный список сыновей (в произвольном порядке), указатель на родителя (если он есть) и исходящую степень. Покажем теперь, как реализовать операции insert, deletemin и decreasekey.
§ 6.1. Минимальные остовные деревья 163 Операция insert (у, d{v)) реализуется следующим образом. Сначала присвоим if {и) := О, а затем вызовем следующую подпрограмму. plant(i;) (I) Присвоить г := b(\5+(v)\). If г служит корнем, причем г ф и и |5+(r)| = |5+(i>)| then: If d(r) < d{v) then добавить (r, v) к E, plant(r). If d(v) < d(r) then добавить (и, г) к Е, plant(i;). else присвоить b(\5+(v)\) := v. Поскольку (U, Е) образует ветвление, данная рекурсивная процедура завершает работу за конечное время. Заметим также, что при ее работе поддерживаются свойства 1, 2 и 3. Операция deletemin реализуется путем сканирования массива b(i), где i = = 0,..., [2 log \U\\, в поисках элемента w с минимальным значением d{w). После этого вершина w удаляется вместе с инцидентными ребрами, а затем для каждого (бывшего) сына v вершины w применяется подпрограмма plant (у). Операция deleteminfi;, d(u)) более сложна. Пусть Р — длиннейший путь в дереве (У, Е), заканчивающийся в вершине и и такой, что все промежуточные вершины w удовлетворяют равенству <^(ш) = 1. Положим </?(ш) := 1 — 4>(w) для всех w е V(P)\{v}, удалим все ребра Р из Е, а затем вызовем подпрограмму plant (я) для каждой вершины z е У(Р), которая служит корнем нового леса. Докажем, что данные преобразования сохраняют истинность свойства 2. Для этого достаточно рассмотреть родителя начальной вершины х пути Р, если он существует. Но тогда х не является корнем и ц>{х) меняется с 0 на 1, «расплачиваясь» за потерю сына. Подсчитаем окончательное время работы. Поскольку <р увеличивается не более т раз (не более одного раза на каждую операцию decreasekey), у также и уменьшается не более т раз. Тогда сумма длин путей Р во всех операциях decreasekey не превосходит т + т. Итак, всего удаляется не более 2т + 2п logp ребер (поскольку каждая операция deletemin может удалить не более 2 logp ребер) . Следовательно, всего добавляется не более 2т+2п log р+р — 1 ребер. Таким образом, для общего времени работы справедлива оценка 0(т + р + п log р). ? Следствие 6.8. Алгоритм Прима, реализованный с помощью фибоначчиевых куч, решает задачу о минимальном остовном дереве за время 0{m + n log п). Доказательство. Всего выполняется не более п — 1 операций insert, п — 1 операций deletemin и т операций decreasekey. ? При более сложной реализации время работы может быть уменьшено до О(m log j3(п, т)), где /3(п, т) = min{i: logw п < т/п}; см. работы Фредмана и Тар- джана [26], Габоу, Галила и Спенсера [31], а также Габоу и др. [32]. Наиболее быстрый из известных на текущий момент детерминированных алгоритмов описан в работе Петти и Рамачандран [45]. Данный алгоритм работает асимпто-
164 Глава 6. Остовные деревья тически не медленнее алгоритма Шазель [13]; сложность последнего составляет 0(та(т, п)), где а — обратная функция Аккермана. Используя другую вычислительную модель, Фредман и Уиллард [27] смогли достичь линейного времени работы. Более того, существует рандомизированный алгоритм, находящий остовное дерево минимального веса за линейное в среднем время (Каргер, Клейн и Тарджан [35]; подобные рандомизированные алгоритмы, всегда находящие оптимальное решение, называются алгоритмами Лас-Вегаса). Этот алгоритм использует (детерминированную) процедуру, проверяющую заданное остовное дерево на оптимальность. Линейный алгоритм для этой подзадачи был найден Диксоном, Раух и Тарджаном [19]; см. также работу Кинг [37]. Задача о минимальном остовном дереве для случая планарных графов может быть (детерминированно) решена за линейное время (см. работу Черитона и Тарджана [14]). Задача нахождения минимального остовного дерева для множества из п точек на плоскости решается за время O(nlogn) (упражнение 14). В этом случае алгоритм Прима оказывается весьма эффективным, поскольку существуют специальные структуры данных, позволяющие быстро находить ближайших соседей на плоскости. § 6.2. Ориентированные деревья минимального веса Задача о лесе максимального веса и задача о минимальном остовном дереве обобщаются на ориентированный случай следующим образом. Maximum Weight Branching (задача о ветвлении максимального веса) Дано: орграф G, веса с: ?(G) —> R. Надо: найти в G ветвление максимального веса. Minimum Weight Arborescence (задача об ориентированном дереве минимального веса) Дано: орграф G, веса с: E(G) —> R. Надо: найти в G остовное ориентированное дерево минимального веса или выяснить, что такого не существует. В некоторых случаях важно уметь заранее выбрать корень у дерева. Minimum Weight Rooted Arborescence (задача о корневом ориентированном дереве минимального веса) Дано: орграф G, вершина г € V(G), веса с: ?(G) -»Ж. Надо: найти в G остовное ориентированное дерево с корнем г минимального веса или выяснить, что такого не существует.
§ 6.2. Ориентированные деревья минимального веса 165 Как и в неориентированном случае, все эти три задачи эквивалентны. Утверждение 6.9. Задача о ветвлении максимального веса, задача об ориентированном дереве минимального веса и задача о корневом ориентированном дереве минимального веса попарно эквивалентны. Доказательство. Пусть задан экземпляр (G, с) задачи об ориентированном дереве минимального веса. Положим с'(е) := К — с(е) для всех е е E(G), где К = = 1-1- See?(G) lc(e)l- Тогда экземпляр (G, с') задачи о ветвлении максимального веса эквивалентен исходному, поскольку для любой такой пары ветвлений В, В' что \Е(В)\ > \Е(В')\, выполняется неравенство с;(Е(В)) > с'(Е(В')) (и ветвления с п — 1 ребрами как раз и являются остовными ориентированными деревьями). Для заданного экземпляра (G, с) задачи о ветвлении максимального веса обозначим G' := (V(G) и {г}, E(G) U {(г, и): и е V(G)}). Пусть с'(е) := -с(е) при е е E(G) и с(е) := 0 при е е E(G') \E(G). Тогда экземпляр (G' г, с7) задачи о корневом ориентированном дереве минимального веса, очевидно, эквивалентен исходному. Наконец, пусть задан экземпляр (G, г, с) задачи о корневом ориентированном дереве минимального веса. Положим G,:=(V(G)U{s},E(G)U{(s,r)}) и с«5,г)):=0. Тогда экземпляр (G', с) задачи об ориентированном дереве минимального веса эквивалентен исходному. ? На протяжении оставшейся части параграфа мы будем заниматься исключительно задачей о ветвлении максимального веса. Данная задача не столь проста, как ее неориентированный вариант — задача о лесе максимального веса. Например, всякий максимальный по включению лес является максимальным по числу ребер. Однако жирные ребра на рис. 6.1 образуют максимальное по включению ветвление, которое Рис. 6.1 не является максимальным по числу ребер. Напомним, что ветвлением мы называем граф В, в котором |5^(х)| < 1 для всех jc е У (В) и неориентированный образ которого является лесом. Иными словами, ветвление представляет собой ациклический орграф В, в котором |5^ (*)| ^ 1 Для всех х е. У(В); см. теорему 2.5(ж). Утверждение 6.10. Пусть В — орграф, в котором \5~(х)\ < 1 для всех х G У (В). Тогда В содержит (ориентированный) цикл, если и только если (неориентированный) цикл есть в неориентированном графе, лежащем в основе В. ? Пусть теперь G — орграф с функцией весов с: E(G) —> R+. Ребра отрицательного веса можно заранее отбросить, поскольку они не могут встретиться в оптимальном ветвлении. Первая идея на пути к правильному алгоритму состоит в выборе для каждой вершины наилучшего ребра, входящего в рассматриваемую вершину. Конечно, получившийся граф может содержать циклы. Поскольку ветв-
166 Глава 6. Остовные деревья ление не может содержать циклов, нам придется удалить по крайней мере одно ребро на каждом из них. Следующая лемма показывает, что удаление одного ребра является достаточным. Лемма 6.11 (Карп [36]). Пусть В0 — такой подграф максимального веса в G, что |5~ (и)\ < 1 для всех v eV(B0). Тогда существует такое оптимальное ветвление В в G, что для всякого цикла С в В0 справедливо равенство \Е(С) \Е(В)\ = 1. Доказательство. Пусть В — оптимальное ветвление в G, содержащее максимально возможное число ребер из В0. Пусть С — произвольный цикл в Б0. Пусть Е(С)\Е(В) = {(аъЬх),..., (afc,bk)}; предположим, что к>2и вершины аъ Ьъ а2, Ь2, а3, ..., Ък встречаются на цикле С в указанном порядке (см. рис. 6.2). Докажем, что В содержит Ъ—Ъ^-путь для всякого i = 1,..., fc (b0 := bfc), и получим противоречие, поскольку данные пути образуют замкнутый циклический маршрут в Б, а ветвление не может содержать таковых. Пусть ie{l,...,fc}. Достаточно показать, что ветвление В содержит некоторый bi-bi_l -путь. Рассмотрим подграф В\ для которого V{B') = V{G) и Е(В') := {(х, у) € ?(В): у ф bj U {(af) Ь*)}. Тогда множество В' не может быть ветвлением, поскольку оно также было бы оптимальным и содержало бы больше ребер из В0, чем В. Значит (по утверждению 6.10), В' содержит цикл, в частности, В содержит bi~arnyTb Р. Поскольку к > 2, путь Р не может целиком содержаться в С. Обозначим через е последнее ребро пути Р, не лежащее на С. Очевидно, е = (х, Ь^_а) для некоторой вершины х, так что Р (а значит, и Б) содержит Ъ—Ъ^-путь. ? Основная идея алгоритма Эдмондса [20] заключается в следующем. Построим вначале оптимальный подграф В0, как указано выше, а затем стянем каждый цикл В0 в G. Выбирая веса ребер в образовавшемся орграфе Gx подходящим образом, мы можем добиться, чтобы оптимальное ветвление в Gx соответствовало оптимальному ветвлению в G. Edmonds' Branching Algorithm (алгоритм Эдмондса поиска оптимального ветвления) Вход: орграф G, веса с: E(G) -»R+. Выход: ветвление максимального веса В в G. (Т) Присвоить i := 0, G0 := G, с0 := с. (2) Пусть В{ — подграф максимального веса в Gb в котором \5^ (i/)| < 1 для BcexueVfBj).
§ 6.2. Ориентированные деревья минимального веса 167 (3) If В{ не содержит цикла then присвоить В := Вь goto (5). (4) Пусть ^ — множество циклов в В{. Стянуть данные циклы. Пусть V(GM) :=VU (V(Gi)\ {Jсе* v^)- Для е = (и, ш) е E(Gi) обозначить е7 = (i/, ш7) и &i+i(e') := е, где у7 = С, если у € У(С) при Се^иу^и, если i; ф {]&=<# v(c)> и и/ = С, если ш е V(C) при Се^иш^ш, если ш ф. |JCe^ V(C). Пусть ^(Gj+1) := {е7 = (у7, ш7): е € Я (G?), у7 ф ш7} (при этом могут возникнуть параллельные ребра). Для всех таких е = {и, w) е E(G?), что е7 = (i/, ш7) е E(Gi+1), присвоить ci+l(e0 :~ ci(.e)> если w' ? *%> и ci+i(e0 := Cf(e) — с?(а(е, С)) + Ci(ec), если ш7 = С Е ^, где а(е, С) е 5^(ш) и ес — произвольное ребро графа С минимального веса. Присвоить i := i + 1, goto (2). (5) While i > 0 do: Присвоить В7 := (y(Gw), {Ф?(е): e e E(B)}). For каждого цикла С в В^ do: If существует ребро е G б~,(У(С)) then присвоить Е(В7) := Е(В7) U (В (С) \{а(е, С)}) else присвоить Е(В7) := Е(В7) U (Е(С) \{ес}). Присвоить В := В7 и i := i — 1. Данный алгоритм открыли независимо Чу и Лю [15] и Бок [9]. Теорема 6.12 (Эдмондс [20]). Алгоритм Эдмондса корректен. Доказательство. Покажем, что всякий раз на шаге (§) граф В представляет собой оптимальное ветвление в G{. Это утверждение тривиально при первом выполнении шага (5). Итак, необходимо показать, что каждый раз на шаге (5) мы превращаем оптимальное ветвление В в Gt в оптимальное ветвление В7 в G^. Пусть В*_а — произвольное ветвление в Gt_ly удовлетворяющее условию |Е(С)\Я(В*_г)| = 1 для любого цикла С в В^. Пусть В* получается из В*_х путем стягивания циклов В?_!. Тогда В* служит ветвлением в Gj. Более того, имеем ci-i(B*_1)<q(B*)+ J (^(BCCM-q.xCec)). С: цикл в Bf_! По индуктивному предположению В служит оптимальным ветвлением в Gi9 так что с{[В) > q(B*). Отсюда получаем ci-i(Bl1)<ci(B)+ Ya (ci-i№(c))-ci-i(ec))q-i№0. С: цикл в Bf_!
168 Глава 6. Остовные деревья Эти неравенства совместно с леммой 6.11 показывают, что В! является оптимальным ветвлением в G^. D Данное доказательство предложено Карпом [36]. Исходное доказательство Эдмондса основывалось на технике линейного программирования (см. следствие 6.15). Несложно видеть, что время работы алгоритма поиска оптимального ветвления составляет О(шп), где т — \E{G)\ и п = |V(G)|. Действительно, всего производится не более п итераций (т. е. i < п на протяжении алгоритма), и каждая итерация выполняется за время 0(т). Наилучшая известная оценка для данной задачи была получена Габоу и др. [32] с помощью фибоначчиевых куч. Время работы данного алгоритма составляет 0(m + n log п). § 6.3. Полиэдральные описания Полиэдральное описание задачи о минимальном остовном дереве выглядит следующим образом. Теорема 6.13 (Эдмондс [21]). Пусть G — связный неориентированный граф и п := |V(G)|. Тогда политоп Р:= |jc € [0,1]?(G) : ^хе = п-1, J хе < |Х|-1 для всехХ, 0^XcV(G)\ *¦ eeE(G) esE(G[X]) ' является целым. Его вершины служат в точности характеристическими векторами остовных деревьев в G. (Политоп Р называется политопом остовных деревьев графа G.) Доказательство. Пусть Г — некоторое остовное дерево G, и пусть х — характеристический вектор для Е(Т). Очевидно (по теореме 2.4), что х е Р. Более того, поскольку х е {0,1}E(G), данная точка должна быть вершиной политопа Р. С другой стороны, пусть х — целая вершина политопа Р. Тогда х представляет собой характеристический вектор для множества ребер некоторого подграфа Я, содержащего п — 1 ребер и ни одного цикла. По теореме 2.4 отсюда снова следует, что Н является остовным деревом. Итак, достаточно доказать, что политоп Р целый (см. теорему 5.13). Рассмотрим веса с: E(G) —> R, и пусть Т—дерево, получающееся в результате работы алгоритма Краскала, примененного к задаче (G, с) (считаем, что неоднозначности при сортировке ребер одинакового веса разрешаются произвольным образом). Положим Е(Т) — {fl9..., fn-i), где индексы ребер обозначают порядок, в котором они просматриваются алгоритмом. В частности, с(/х) < ... < c(Jn_i). Пусть Хк с у(G) — связная компонента графа (V(G), {fl9..., /fc}), содержащая fk (fc = l,...,n-l). Пусть x* —характеристический вектор для Е(Т). Покажем, что х* является оптимальным решением линейной программы
§ 6.3. Полиэдральные описания 169 минимизировать /^ с{е)хе eeE(G) При УСЛОВИЯХ 2_i *е = п — 1, eeE(G) J] хе< |Х|-1 (0^XCV(G)), e<=E(G[X]) хе>0 (ee?(G)). Для каждого подмножества X, 0^XcV(G), введем двойственную переменную zx. Также введем двойственную переменную zv^ для условия вида равенства. Тогда двойственная программа будет иметь вид максимизировать — V (\Х\ — l)zx 0фхсу(в) при условиях — }> zx < с(е) (е е E(G)), eCXCV(G) zx>0 (0^XcV(G)). Заметим, что здесь не требуется, чтобы двойственные переменные zV(g) были неотрицательными. Для к = 1,..., п — 2 положим z^ := с(/г) — c(/fc), где I — первый индекс, больший к, для которого /гПХкф0. Пусть также s*(G) :=— с(/п_!) и z? := 0 для всех X ^ {Хъ ..., Хп_г}. Тогда для каждого ребра е = {v, w} мы имеем -S 4 = СШ> eCXCV(G) где i — наименьший индекс, для которого u,w GXt. Более того, с(/;) < с(е), так как и и w лежат в различных связных компонентах графа (V(G), {/i,..., /i-i})- Таким образом, я* является допустимым двойственным решением. Для всех таких ребер е е ? (G), что х* > О, справедливо включение е е Е(Г), и, значит, ecxcv(G) что означает, что соответствующее неравенство двойственной задачи превращается в равенство. Наконец, из того, что z% > О, следует, что подграф Т[Х] связен, а значит, соответствующее неравенство прямой задачи превращается в равенство. Иными словами, для построенных допустимых решений справедливы условия дополняющей нежесткости, а значит (по следствию 3.23), х* и z* служат оптимальными решениями для прямой и двойственной ЛП соответственно. ? В действительности мы доказали, что система неравенств из теоремы 6.13 является тотально двойственно целочисленной. Заметим, что таким образом можно получить альтернативное доказательство корректности алгоритма Крас- кала (теорема 6.4). Другое описание политопа остовных деревьев приводится
170 Глава 6. Остовные деревья в упражнении 19. Существует также способ записи задачи в виде линейной программы полиномиального размера; см. упражнение 20. Если мы заменим условие SeeE(G) хе = п — 1 на ^ееЕ^ хе < п — 1, то получим выпуклую оболочку характеристических векторов всех лесов в G (упражнение 21). Обобщением этих результатов служит характеризация, предложенная Эдмондсом для политопа матроида (теорема 13.21). Перейдем теперь к полиэдральному описанию задачи о корневом ориентированном дереве минимального веса. Вначале докажем классический результат, принадлежащий Фалкерсону. Напомним, что r-разрезом называется множество ребер вида 5+(S) для некоторого подмножества S с V(G), удовлетворяющего условию г eS. Теорема 6.14 (Фалкерсон [29]). Пусть G — орграф с весами с: E(G) —> Z+ и выделенной вершиной г е V(G), содержащий остовное ориентированное дерево с корнем г. Тогда минимальный вес остовного ориентированного дерева с корнем г равен наибольшему числу таких г-разрезов Съ ..., Q (не обязательно различных), что всякое ребро е содержится не более чем в с[е) из данных разрезов. Доказательство. Пусть А — матрица, столбцы которой индексируются ребрами, а строки представляют собой всевозможные характеристические векторы r-разрезов. Рассмотрим ЛП min{cx: Ах > И, х > 0} и двойственную к ней max{Uy: уА < с, у > 0}. Тогда (согласно утверждению (д) из теоремы 2.5) нам необходимо показать, что для всякого неотрицательного целого вектора с и прямая, и двойственная программы имеют оптимальные целые решения. По следствию 5.15 из этого мы сможем заключить, что система Ах > U, х > 0 является тотально двойственно целочисленной. Воспользуемся леммой 5.23. Поскольку двойственная ЛП является совместной, только если значения с неотрицательны, будем считать, что с: Е (G) —> Z+. Пусть у — оптимальное решение задачи max{Uy: уА<с, у> 0}, для которого сумма рис\з 2 w*i2 (6.D принимает максимально возможное значение. Мы утверждаем, что семейство множеств & := {X: ys-(x)> 0} ламинарно. Действительно, пусть X, Y е &, причем ХПУ/0, X\Y /0и Y\X ф 0 (рис. 6.3). Обозначим е := min{y5-(x),y5-(y)}. Положим У5~(Х) := У5~(Х) ~ е> У'5-(у) := У5-(у) ~ е, У5-(ХПУ) := У5-(ХПУ) + €> y'5-(XUY) := У5-(Хи?) + €
§ 6.4. Упаковки деревьев 171 и у'(5) := y(S) для всех остальных r-разрезов S. Заметим, что у'А < уЛ, так что у' является допустимым двойственным решением. Поскольку Ну = Ну7, это решение также оптимально. Это, однако, противоречит выбору у, поскольку сумма (6.1) принимает большее значение для у', (Для любых чисел а>Ь> > о d> О, удовлетворяющих условию a + d = b + c, справедливо неравенство a2 + d2>b2 + c2.) Пусть А! — подматрица матрицы А, составленная из строк, отвечающих элементам множества &. Тогда А' представляет собой одностороннюю матрицу инцидентности разрезов для некоторого ламинарного семейства. (Строго говоря, вместо G необходимо рассмотреть граф, получающийся из него обращением направлений всех ребер.) По теореме 5.28 матрица А' тотально унимодулярна, как и требовалось. ? Отсюда также следует обещанное полиэдральное описание задачи. Следствие 6.15 (Эдмондс [20]). Пусть G — орграф с весами с: E(G) -> М+ а выделенной вершиной г е V(G), содержащий остовное ориентированное дерево с корнем г. Тогда ЛП вида min\сх: х > 0, /^ хе > 1 для всех такихX с V(G), что г еХ\ ^ ее5+(Х) ' имеет целое оптимальное решение {служащее характеристическим вектором остовного ориентированного дерева минимального веса с корнем г, возможно расширенного некоторыми ребрами нулевого веса). ? Описания выпуклой оболочки характеристических векторов всех ветвлений, а также остовных ориентированных деревьев с корнем г приводятся в упражнениях 22 и 23. § 6.4. Упаковки деревьев В случае, когда нас интересуют упаковки более одного дерева в графе, на помощь приходят классические результаты Татта, Нэш-Вильямса и Эдмондса. Вначале мы приведем теорему Татта об упаковке остовных деревьев в неориентированном графе. Рассматриваемое нами доказательство по большей части принадлежит Мадеру (см. книгу Дистеля [17]) и опирается на следующую лемму. Лемма 6.16. Пусть G — неориентированный граф, и пусть F = (F1? ...,Ffc) — такой набор из к реберно непересекающихся лесов в G, что размер \E(F)\ максимален. Здесь E(F) := |Ji=1 E(Fi). Пусть е е E(G)\E(F). Тогда найдется такое подмножество X с V(G), что е с X и подграф Ft[X] связен для всех i е {1,..., к}. Доказательство. Рассмотрим два набора остовных деревьев размера к, а именно F' = {F[,..., Ffi и F" = (F",..., F%). Скажем, что F" получается из F' заменой е1 на е" если F" = (i^\eO U е" для некоторого ; и F" = F! для всех хф j. Пусть & — множество всех наборов размера к, состоящих из реберно пересекающихся лесов, которые получаются из F последовательностью таких замен. Положим
172 Глава 6. Остовные деревья Е :=E(G)\ ( f)F,e? E(F')) и G := (V(G), Е). Имеем FG <f, значит, ееЕ. Пусть X — множество вершин связной компоненты множества G, содержащей е. Докажем, что подграф Ft[X] является связным для всех i. Утверждение. Для произвольных F' = (F[,...,Fjjе& и е-{v, w}€E(G[X]) \F(F') существует v-w-путъ в F.'[X] для всех i G {1,..., к}. Для доказательства фиксируем произвольный индекс i G {1,..., к]. Поскольку F' G & и размер |F(F')| = |Е(^)1 максимален, граф F[ + ё содержит цикл С. Далее, для всех е' G Е(С) \ {ё} имеем F'e, G &, где Fe', получается из F' заменой е' на ё. Отсюда видно, что Е[С) С?, и, значит, С —ё—и-ш-путь в F-[X]. Утверждение доказано. Поскольку подграф G[X] связен, достаточно доказать, что для каждого ребра ё = {и, w} G F(G[X]) и каждого индекса i найдется v-w-тгутъ в Ft[X]. Пусть ё= {и, w} GE(G[X]). Так как ееЁ, найдется набор F' = {F[,..., FJJ G &, для которого ё^ F(F'). По доказанному утверждению найдется f-w-путь в F/[X] для всех i. Итак, мы доказали, что существует такая последовательность F = F^°\F^\ ..., F^ =F' элементов множества &, что F^r+1^ получается из F^ заменой одного ребра (г = 0,..., s — 1). Достаточно показать, что из существования у-ш-пути в F>r+1) [X] следует наличие и-ш-тгути в iyr) [X] (г — О,..., s — 1). Предположим, что F.(r+1) получается из F.(r) заменой ег на ег+1, и пусть Р — 1>-ш-путь в F>r+1) [X]. Если Р не содержит ег+1 = {х, у}, то он также является путем в /уг) [X]. Иначе er+1 gF(G[X]). Рассмотрим тогда х-у-путь Q в Jyr) [X], существующий по утверждению. Поскольку (F(P)\{er+1}) UF(Q) содержит v-w-иутъ в F^ [X], доказательство на этом завершено. ? Теперь мы можем доказать теорему Татта о непересекающихся остовных деревьях. Мулътиразрезом в неориентированном графе G называется множество ребер вида 5{ХЪ ..., Хр) := 5(Хг) и ... U 5(Хр) для некоторого разбиения V (G) = Хг U Х2 U... U Хр множества вершин на непустые подмножества. В случае р = 3 мультиразрез также называют 3-разрезом. Заметим, что обычные разрезы являются мультиразрезами с р = 2. Теорема 6.17 (Татт [51], Нэш-Вильямс [42]). Неориентированный граф G содержит к реберно непересекающихся остовных деревьев, если и только если для всякого мулътиразреза 5{ХЪ ..., Хр) справедливо неравенство \5(Хъ...,Хр)\>к(р-1). Доказательство. Сначала докажем необходимость. Рассмотрим набор Тъ...,Тк реберно непересекающихся остовных деревьев в G, и пусть 5(ХЪ ..., Хр) — произвольный мультиразрез. Стягивая каждое из подмножеств Хъ ..., Хр, получим граф G', в котором вершинами служат Хъ...,Хр, а ребра отвечают ребрам мультиразреза. Деревья Тъ ..., Тк отвечают реберно непересекающимся связным подграфам Т[,... ,Т^в G'. Каждое из деревьев Т[,..., Т? содержит не менее р — 1 ребер, поэтому G' (а значит, и мультиразрез) содержит не менее fc(p — 1) ребер.
§ 6.4. Упаковки деревьев 173 Достаточность докажем индукцией по |V(G)|. В случае п := |V(G)| < 2 утверждение справедливо. Пусть теперь п > 2. Предположим, что неравенство \5(Хъ...,Хр)\>к(р-1) справедливо для всякого мультиразреза 5(ХЪ ..., Хр). Рассматривая разбиение на одноэлементные подмножества, мы видим, что G содержит не менее к(п — 1) ребер. Более того, условие теоремы сохраняется при стягивании вершин, так что по индуктивному предположению граф G/X содержит fc реберно непересекающихся остовных деревьев для всякого подмножества X с V (G), состоящего не менее чем из двух вершин. Пусть F = (Fi9..., Fk) —такой набор из к реберно непересекающихся лесов в G, что мощность \E(F)\ максимальна. Здесь, как и ранее, E(F) := Ui=i^№)- Утверждается, что каждый из подграфов Ft является остовным деревом. В противном случае \E(F)\ <к(п—1), а значит, существует ребро eeE(G) \E(F). По лемме 6.16 найдется такое подмножество X с V(G), что еСХи граф Ft [X] связен для любого i. Поскольку \Х\ > 2, граф G/X содержит fc реберно непересекающихся остовных деревьев F[,...,F'k. Тогда F[ вместе с Ft[X] образует остовное дерево в G для всякого i, и все эти fc остовных деревьев не пересекаются по ребрам. ? Перейдем теперь к рассмотрению аналогичной задачи в случае орграфов, а именно к упаковкам остовных корневых деревьев. Теорема 6.18 (Эдмондс [22]). Для орграфа G с выделенной вершиной г е V(G) максимальное число реберно непересекающихся остовных ориентированных деревьев с корнем г совпадает с минимальной мощностью г-разрезов. Доказательство. Пусть fc — минимальная мощность r-разреза. Очевидно, в графе существует не более fc реберно непересекающихся остовных ориентированных деревьев с корнем г. Докажем существование fc таких деревьев индукцией по fc. Случай fc = 0 тривиален. Предположим, что нам удастся построить такое остовное ориентированное дерево А с корнем г, что min |5+(S)\B(A)| > fc-1. (6.2) Тогда мы сможем применить индуктивное предположение и завершить доказательство. Предположим, что мы уже построили некоторое ориентированное дерево А с корнем г (не обязательно остовное), для которого условие (6.2) выполнено. Пусть R с V(G) — множество вершин, покрытых деревом А. Вначале R = {г}; если же R = V(G), то рассуждение завершено. Пусть R ф V(G). Назовем множество X с V (G) критическим, если выполнены следующие условия: (а) геХ; (б) XUR?V(G); (в) |5+(X)\fi(A)| = k-l. В случае, если ни одного критического множества нет, множество А может быть расширено путем добавления произвольного ребра, выходящего из R.
174 Глава 6. Остовные деревья Рис. 6.4 Пусть X — максимальное по включению критическое множество и е = (х, у) — ребро, для которого xeR\X и у € У (G) \ (R U X) (см. рис. 6.4). Такое ребро обязательно найдется, поскольку \5^m{RUX)\ = \5^RUX)\>k>k-l = \5l_m{X)l Добавим теперь е к Л. Очевидно, A + е представляет собой ориентированное дерево с корнем г. Покажем, что условие (6.2) по-прежнему выполнено. Предположим, что найдется такое подмножество У, 4ToreYcV(G)n\5+(Y)\E(A + e)\<k-l.Torfl,<ixeY, y?Yn 15+(У) \Е(А)\ = к -1. По лемме 2.1(a) имеем k-l + k-l = \5^EiA){X)\^\5+G_m)(Y)\> >\5^_E{A)(XuY)\ + \5^E{A)(XnY)\>k-l + k-l, поскольку г е X П У и у € V(G)\(X U У). Таким образом, в данной цепочке неравенства всюду должны обращаться в равенства, и, в частности, мы имеем I5g-e(a) (* U У)| = fc -1. Поскольку у е V(G) \ (X U У U R), множество X U У критическое. Но с учетом условия х е У \Х это противоречит максимальности множества X. ? Приведенное выше доказательство принадлежит Ловасу [41]. Фуджисиге [28] обобщил данный результат на случай упаковки ориентированных деревьев, имеющих заданные (не обязательно совпадающие) корни и заданные покрывающие подмножества вершин. Одновременное обобщение теорем 6.17 и 6.18 было получено Франком [24]. Хорошая характеризация (смысл этого термина будет объяснен в гл. 15) для задачи об упаковке остовных ориентированных деревьев с произвольными корнями дается в следующей теореме, которую мы приводим без доказательства. Теорема 6.19 (Франк [25]). Орграф G содержит к реберно непересекающихся остовных ориентированных деревьев, если и только если неравенство J]|5-(Xl)|>fc(p-l) 1=1 справедливо для всякого набора попарно непересекающихся непустых подмножеств Хъ ..., Хр с y(G). ? Еще один интересный вопрос состоит в том, как много требуется лесов, для того чтобы покрыть заданный граф. Ответ на него содержится в следующей теореме. Теорема 6.20 (Нэш-Вильямс [43]). Множество ребер неориентированного графа G представимо в виде объединения к лесов, если и только если |E(G[X])| < < fc(|X|-1) для всехХ,0^ХС V(G).
Упражнения 175 Доказательство. Необходимость данных условий очевидна, поскольку ни один лес не может иметь более \Х\ — 1 ребер внутри подмножества вершин X. Для доказательства достаточности предположим, что |E(G[X])| < к{\Х\ — 1) для всех X, 0 ф X с V(G), и пусть F = (F1?..., Fk) —такой набор из к реберно непересекающихся лесов в G, что размер \E(F)\ = | |J .=1 E(Ff)| максимален. Утверждается, что E(F) = ?(G). Действительно, пусть существует ребро е е E(G) \E(F). По лемме 6.16 найдется такое подмножество X с V(G), что е с X и подграф Ft [X] связен для любого i. В частности, \E(.G[X])\> >i + k(\x\-i), |{e}uLJE№])| ' 1=1 ' что противоречит предположению. ? Ориентированная версия данной задачи рассматривается в упражнении 29. Обобщение теорем 6.17 и 6.20 для матроидов см. в упражнении 19 из гл. 13. Упражнения 1 (Прюфер [47]). Докажите теорему Кэли 6.2, для чего покажите, что следующая конструкция определяет взаимно однозначное соответствие между остов- ными деревьями в Кп и векторами из {1,..., п}п~2. Для заданного дерева Г с множеством вершин V(T) = {1,..., п}, п > 3, обозначим через v лист с наименьшим номером и положим аг равным номеру соседа листа и в дереве. Определим рекурсивно а (Г) := (al9..., ап_2), где (а2,..., ап_2) = а(Т-и). 2. Докажите, что существует ровно (п + 1)п_1 ветвлений В на множестве вершин V(B) = {1,..., п}. 3. Пусть рп — вероятность того, что вершина с номером 1 оказывается листом дерева Г, если Т выбирается случайно и равновероятно среди всех деревьев на множестве вершин {1,..., п}. Чему равен предел lim^,» рп? 4. Пусть (У, Тг) и (V, Т2) — пара деревьев на общем множестве вершин У. Докажите, что для любого ребра е^Тг найдется такое ребро /gT2, что графы (V, (Tj \ {е}) и {/}) и (V, (Г2 \ {/}) U {е}) являются деревьями. 5. Пусть (G, с) — экземпляр задачи о минимальном остовном дереве, причем граф G связен и с(е) / с(е') для любой пары различных ребер е ие\ Докажите, что существует единственное оптимальное решение для (G, с). 6. Пусть заданы неориентированный граф G с весами с: Е(G) —>R и вершина и е V(G). Требуется найти остовное дерево минимального веса, в котором v не является листом. Разрешима ли эта задача за полиномиальное время? 7. Пусть задан неориентированный граф G с весами с: ?(G) —> R. Требуется найти такое множество ребер е, что существует минимальное остовное дерево в G, содержащее е. (Иными словами, требуется построить объединение множества ребер всех минимальных остовных деревьев в G.) Покажите, как решить эту задачу за время О {тип). 8. Для заданного неориентированного графа G с произвольными весами с: E{G) —> R требуется найти связный подграф минимального веса. Решается ли эта задача эффективно?
176 Глава 6. Остовные деревья 9. Рассмотрим следующий алгоритм (иногда называемый жадным алгоритмом исключения наихудших элементов, см. §13.4). Переберем все ребра в порядке неувеличения весов. Будем удалять текущее просматриваемое ребро, если только оно не является мостом. Подходит ли данный алгоритм для решения задачи о минимальном остовном дереве? 10 (Тарджан [7]). Рассмотрим следующий алгоритм, основанный на «раскрашивании» ребер. Вначале все ребра графа бесцветные. Будем применять нижеследующие правила, до тех пор пока все ребра не окажутся окрашены. Синее правило. Выберем разрез, не содержащий ни одного синего ребра. Среди бесцветных ребер разреза возьмем ребро минимального веса и покрасим его в синий цвет. Красное правило. Выберем простой цикл, не содержащий красных ребер. Среди бесцветных ребер этого цикла найдем ребро максимального веса и покрасим его в красный цвет. Покажите, что хотя бы одно из данных правил всегда применимо, пока в графе есть бесцветные ребра. Более того, докажите, что данный алгоритм поддерживает следующий «инвариант раскраски»: существует оптимальное остовное дерево, содержащее все синие ребра и ни одного красного. (Следовательно, данный алгоритм корректно решает задачу о минимальном остовном дереве.) Покажите, что алгоритм Краскала и алгоритм Прима являются его частными случаями. 11. Предположим, что требуется найти в неориентированном графе остовное дерево Г, в котором максимальный вес ребра минимален. Как решить эту задачу? 12. Верно ли, что максимальная длина пути в дереве, задающем фибонач- чиеву кучу, составляет O(logn), где п — число элементов в куче? 13. Покажите, что две фибоначчиевы кучи, содержащие пг и п2 элементов соответственно, могут быть объединены за время 0(log(n1 + п2)). Итоговая фибоначчиева куча будет содержать все пх + п2 элементов. 14 (Шеймос и Хой [48]; см. также работу Чжоу, Шеной и Николса [52].). Для заданного конечного множества точек V с R2 диаграмма Вороного состоит из областей Py:={x€R2:||x-i;||2 = min||x-u;||2}, где и е У. Триангуляция Делоне множества V представляет собой граф (У, {{i/, ш}су,у/ш, \PvnPw\ > 1}). Минимальное остовное дерево для V — это дерево Г, в котором V(T) = V и сумма длин ^t{v w}<=e(t) Wv~~w\\2 минимальна. Докажите, что всякое минимальное остовное дерево является подграфом триангуляции Делоне. Замечание. С учетом того, что триангуляция Делоне может быть построена за время 0(п logп) (где п = \V\; см. например работу Форчуна [23] и книгу Кнута [38]), отсюда следует алгоритм с оценкой времени O(nlogn), решающий задачу о минимальном остовном дереве для множества точек на плоскости.
Упражнения 177 15. Можно ли выяснить за линейное время, содержит ли заданный орграф остовное ветвление? Указание. Для того чтобы найти кандидата для корня ветвления, выберите произвольную вершину, а затем двигайтесь по ребрам в обратном направлении, пока это возможно. Если при движении обнаружится цикл, то стяните его. 16. Можно ли найти в заданном графе за линейное время максимальное по мощности ветвление? Указание. Вначале выделите сильно связные компоненты. 17. Согласно утверждению 6.9 задача об ориентированном дереве минимального веса сводится к задаче о ветвлении максимального веса. Однако она также может быть решена непосредственно с помощью модифицированного алгоритма Эдмондса поиска оптимального ветвления. Покажите, как именно. 18 (Магнанти и Вулси [5]). Докажите, что политоп остовных деревьев неориентированного графа G (см. теорему 6.13), для которого п := |V(G)|, является в общем случае собственным подмножеством политопа jxe[0,l]?(G) : 2*е = и-1, ^хе>1 для всех X, 0cXcV(G) ^ eeE(G) ее5(Х) Указание. Чтобы доказать, что данный политоп не является целым, рассмотрите граф, указанный на рис. 6.5 (числа на ребрах обозначают их веса). 19 (Магнанти и Вулси [5]). Из упражнения 18 следует, что разрезные условия не являются доста- ^ точными для описания политопа остовных деревьев. Однако если использовать мультиразрезы, то получится точное описание. А именно, докажите, что политоп остовных деревьев неориентированного графа G, п := |V(G)|, состоит из всевозможных векторов х е [0,1]?(G), удовлетворяющих условиям Рис. 6.5 хе = п — 1 и \]хе**к~ 1 Для всех мультиразрезов С = 5{ХЪ ...,Хк). ee?(G) ееС 20*. Пусть G — неориентированный граф, в котором п := \V(G)\. Докажите, что следующая система линейных неравенств с 0(п3) переменными и ограничениями задает политоп, ортогональная проекция которого на подпространство переменных х совпадает с политопом остовных деревьев в G: хе>0 (eeE(G)), zn^w > 0 ({u,u} eE(G), w eV(G)\{u,v}), ^]jce = n-l, xe=zUjV}W + zVyll}W (e = {u,i;}e?(G), w €V(G)\{u,v}), ee?(G) {u,v}<=5(v)\{e} Замечание. См. работу Конфорти, Корнуэхолса и Дзамбелли [16], в которой приведен обзор подобных расширенных формулировок комбинаторных линейных программ. s
178 Глава 6. Остовные деревья 21. Докажите, что выпуклая оболочка характеристических векторов всех лесов в неориентированном графе G представляет собой политоп Р:= \хе [0,1]?(G) : ]Г хе < \Х\ -1 для всех X,0/XC v(G) ^ esE(G[X]) Замечание. Поскольку условие ^Le(=E(G[x])xe = \V(Q)\ ~ 1 задает опорную гиперплоскость, из этого утверждения следует теорема 6.13. Более того, данное утверждение является частным случаем теоремы 13.21. 22*. Докажите, что выпуклая комбинация характеристических векторов всех ветвлений в орграфе G (branching polytope) совпадает с множеством векторов х е [0,1]?^, удовлетворяющих условиям ]>] хе < \Х\ -1 для всех X, 0 ф X с y(G) и ^ хе < 1 для всех и е V(G). e€E(G[X]) ee5-(v) Указание. Данное утверждение представляет собой частный случай теоремы 14.13. 23*. Пусть G — орграф, г е V(G). Докажите, что политопы j^[0,l]E(G): *e = 0(eeS-(r)), ? хе = 1 (ye V(G)\{r}), ^ ее 5" (и) ^] хе < |Х| -1 для всех X,0/XC V(G)| e€?(G[X]) ' И {^[ОДрЬ *е = 0(ее5"(г)), 2*е = 10>еПС)\{г}), ^хе>1 для всех г € X с V(G) [ ее5+(Х) J одновременно равны выпуклой оболочке множества характеристических векторов остовных ориентированных деревьев с корнем в г. 24. Докажите, что всякий 2/с-реберно связный граф содержит к попарно реберно непересекающихся остовных деревьев. 25. Пусть G — орграф, г € V(G). Докажите, что граф G можно представить в виде объединения к непересекающихся остовных ориентированных деревьев с корнем г, если и только если его неориентированный образ можно представить в виде объединения fc остовных деревьев и |5~(х)| = к для всех х Е V(G)\{r}. 26. Пусть G — орграф, г Е V(G). Предположим, что G содержит к реберно непересекающихся путей из г до любой другой вершины, причем удаление любого ребра нарушает это свойство. Докажите, что любая вершина графа G, кроме г, имеет ровно fc входящих ребер. Указание. Используйте теорему 6.18.
Литература 179 27*. Докажите утверждение из упражнения 26 без использования теоремы 6.18. Сформулируйте и докажите вершинный вариант задачи. Указание. Пусть и — вершина, в которую входит более к ребер. Возьмем тогда к реберно непересекающихся г-у-путей. Покажите, что всякое ребро, входящее в i> и не лежащее на этих путях, может быть удалено. 28. Предложите полиномиальный алгоритм, находящий максимальное по размеру множество реберно непересекающихся остовных ориентированных деревьев (с заданным корнем г) в орграфе G. Замечание. Наиболее быстрый из известных алгоритмов принадлежит Га- боу [30]; см. также работу Габоу и Ману [33]. 29 (Франк [25]). Докажите, что множество ребер орграфа G может быть покрыто к ветвлениями, если и только если выполнены следующие два условия: (а) |5"(у)| < к для всех и е V(G); (б) |?(G[X])| < к(\Х\ -1) для всех X с y(G). Указание. Воспользуйтесь теоремой 6.18. Литература Общая литература [1] Ahuja R. К., Magnanti Т. L., Orlin J. В. Network Flows. Prentice-Hall, Englewood Cliffs, 1993, Chapter 13. [2] Balakrishnan V. K. Network Optimization. Chapman and Hall, London, 1995, Chapter 1. [3] Cormen T. H., Leiserson С E.f Rivest R. L., Stein C. Introduction to Algorithms. Third Edition. MIT Press, Cambridge, 2009, Chapter 23. [4] Gondran M., MinowcM. Graphs and Algorithms. Wiley, Chichester, 1984, Chapter 4. [5] Magnanti T. L., Wolsey L. A. Optimal trees // Handbooks in Operations Research and Management Science; Volume 7: Network Models (M. O. Ball, T. L. Magnanti, C. L. Monma, G. L. Nemhauser, eds.), Elsevier, Amsterdam, 1995. P. 503-616. [6] SchrijverA. Combinatorial Optimization: Polyhedra and Efficiency. Springer, Berlin, 2003, Chapters 50-53. [7] Tarjan R. E. Data Structures and Network Algorithms. SIAM, Philadelphia, 1983, Chapter 6. [8] Wu B. Y., Chao K.-M. Spanning Trees and Optimization Problems. Chapman & Hall/CRC, Boca Raton, 2004. Процитированные работы [9] Bock F. C. An algorithm to construct a minimum directed spanning tree in a directed network // Developments in Operations Research, Volume I (B. Avi-Itzhak, ed.), Gordon and Breach, New York, 1971. P. 29-44. [10] Boruvka О. О jistem problemu minimalnim // Praca Moravske Pfirodovedecke Spolnec- nosti. 1926. Ob.3. S.37-58 [in Czech]. [11] Boruvka O. Pffspevek k feseni otazky ekonomicke stavby. Elektrovodnfch siti // Elektro- technicky Obzor. 1926. Ob. 15. S. 153-154 [in Czech]. [12] CayleyA. A theorem on trees // Quarterly Journal on Mathematics. 1889. Vol. 23. P. 376-378.
180 Глава 6. Остовные деревья Chazelle В. A minimum spanning tree algorithm with inverse-Ackermann type complexity // Journal of the ACM. 2000. Vol. 47. P. 1028-1047. Cheriton D., Tarjan R. E. Finding minimum spanning trees // SIAM Journal on Computing. 1976. Vol. 5. P. 724-742. Chu Y., Liu T. On the shortest arborescence of a directed graph // Scientia Sinica. 1965. Vol.4. P. 1396-1400; Mathematical Review. Vol.33, # 1245. Conforti M., Cornuejols G., Zambelli G. Extended formulations in combinatorial optimization // 40R. 2010. Vol. 8. P. 1-48. Diestel R. Graph Theory. Springer, New York, 1997. Dijkstra E. W. A note on two problems in connexion with graphs // Numerische Mathe- matik. 1959. Vol. 1. P. 269-271. Dixon В., Rauch M., Tarjan R. E. Verification and sensitivity analysis of minimum spanning trees in linear time // SIAM Journal on Computing. 1992. Vol. 21. P. 1184-1192. Edmonds J. Optimum branchings // Journal of Research of the National Bureau of Standards. Ser. B. 1967. Vol. 71. P. 233-240. Edmonds J. Submodular functions, matroids and certain polyhedra // Combinatorial Structures and Their Applications; Proceedings of the Calgary International Conference on Combinatorial Structures and Their Applications 1969 (R. Guy, H. Hanani, N. Sauer, J. Schonheim, eds.), Gordon and Breach, New York, 1970. P. 69-87. Edmonds J. Edge-disjoint branchings // Combinatorial Algorithms (R. Rustin, ed.), Algorithmic Press, New York, 1973. P. 91-96. Fortune S. A sweepline algorithm for Voronoi diagrams // Algorithmica. 1987. Vol. 2. P. 153-174. Frank A. On disjoint trees and arborescences // Algebraic Methods in Graph Theory (L. Lovasz, V. T. Sos, eds.), North-Holland, Amsterdam, 1981. (Colloq. Math. Soc. Janos Bolyai; Vol.25). P. 159-169. Frank A. Covering branchings // Acta Scientiarum Mathematicarum (Szeged). 1979. Vol.41. P. 77-82. Fredman M. L., Tarjan R. E. Fibonacci heaps and their uses in improved network optimization problems // Journal of the ACM. 1987. Vol. 34. P. 596-615. Fredman M. L., Willard D. E. Trans-dichotomous algorithms for minimum spanning trees and shortest paths // Journal of Computer and System Sciences. 1994. Vol. 48. P. 533-551. Fujishige S. A note on disjoint arborescences // Combinatorica. 2010. Vol. 30. P. 247-252. Fulkerson D. R. Packing rooted directed cuts in a weighted directed graph // Mathematical Programming. 1974. Vol. 6. P. 1-13. Gabow H. N. A matroid approach to finding edge connectivity and packing arborescences // Journal of Computer and System Sciences. 1995. Vol. 50. P. 259-273. Gabow H. N., Galil Z., Spencer T. Efficient implementation of graph algorithms using contraction // Journal of the ACM. 1989. Vol. 36. P. 540-572. Gabow H. N., Galil Z., Spencer Г., Tarjan R. E. Efficient algorithms for finding minimum spanning trees in undirected and directed graphs // Combinatorica. 1986. Vol. 6. P. 109-122. Gabow H. N., Manu K. S. Packing algorithms for arborescences (and spanning trees) in capacitated graphs // Mathematical Programming. Ser. B. 1998. Vol. 82. P. 83-109.
Литература 181 Jarnik V. О jistem problemu minimalnim // Praca Moravske Pffrodovedecke Spolecnosti. 1930. Ob. 6. S. 57-63. Karger D., Klein P. N.t Tarjan R. E. A randomized linear-time algorithm to find minimum spanning trees // Journal of the ACM. 1995. Vol. 42. P. 321-328. Karp R. M. A simple derivation of Edmonds' algorithm for optimum branchings // Networks. 1972. Vol. 1. P. 265-272. King V. A simpler minimum spanning tree verification algorithm // Algorithmica. 1997. Vol.18. P. 263-270. Knuth D. E. Axioms and hulls. Springer, Berlin 1992. (Lecture Notes in Comput. Sci.; Vol.606). Korte В., Nesetril J. Vojtech Jarnfk's work in combinatorial optimization // Discrete Mathematics. 2001. Vol.235. P. 1-17. Kruskal J. B. On the shortest spanning subtree of a graph and the travelling salesman problem // Proceedings of the AMS. 1956. Vol. 7. P. 48-50. Lovdsz L. On two minimax theorems in graph // Journal of Combinatorial Theory. Ser. B. 1976. Vol. 21. P. 96-103. Nash-Williams C. S. J. A. Edge-disjoint spanning trees of finite graphs // Journal of the London Mathematical Society. 1961. Vol.36. P.445-450. Nash-Williams C. S. J. A. Decompositions of finite graphs into forests // Journal of the London Mathematical Society. 1964. Vol. 39. P. 12. Nesetril J., Milkovd E., Nesetfilovd H. Otakar Boruvka on minimum spanning tree problem. Translation of both the 1926 papers, comments, history // Discrete Mathematics. 2001. Vol.233. P.3-36. Pettie 5., Ramachandran V. An optimal minimum spanning tree algorithm // Journal of the ACM. 2002. Vol.49. P. 16-34. Prim R. C. Shortest connection networks and some generalizations // Bell System Technical Journal. 1957. Vol. 36. P. 1389-1401. Priifer H. Neuer Beweis eines Satzes tiber Permutationen // Arch. Math. Phys. 1918. Vol.27. P.742-744. Shamos M. J., Hoey D. Closest-point problems // Proceedings of the 16th Annual IEEE Symposium on Foundations of Computer Science. 1975. P. 151-162. Sylvester J. J. On the change of systems of independent variables // Quarterly Journal of Mathematics. 1857. Vol.1. P. 42-56. Tarjan R. E. Efficiency of a good but not linear set union algorithm // Journal of the ACM. 1975. Vol. 22. P. 215-225. Tutte W. T. On the problem of decomposing a graph into n connected factor // Journal of the London Mathematical Society. 1961. Vol. 36. P. 221-230. Zhou H.y Shenoy N.} Nicholls W. Efficient minimum spanning tree construction without Delaunay triangulation // Information Processing Letters. 2002. Vol. 81. P. 271-276.
ГЛАВА 7 Кратчайшие пути Одной из наиболее известных проблем комбинаторной оптимизации является задача поиска кратчайшего пути между двумя заданными вершинами ориентированного или неориентированного графа. Shortest Path (задача о кратчайшем пути) Дано: граф G (ориентированный или нет), веса с: ?(G) -* Ж и пара вершин s,teV(G). Надо: найти кратчайший s-t-путь Р, т. е. путь, вес которого с(Е(Р)) минимален, или установить, что вершина t не достижима из s. Эта задача, очевидно, имеет множество практических приложений. Как и задача о минимальном остовном дереве, она часто встречается в качестве подзадачи для более сложных комбинаторных проблем. В действительности, если разрешить произвольные веса, решить задачу о кратчайших путях совсем не просто. Например, если все веса равны —1, то s-t-пути веса 1 — |V(G)| —это в точности гамильтоновы s-t-пути. Определить, существует ли такой путь в графе, — это сложная проблема (см. упражнение 17(6) из гл.15). Задача станет намного проще, если мы ограничимся неотрицательными весами или хотя бы запретим отрицательные циклы. Определение 7.1. Пусть G — граф (ориентированный или неориентированный) с весами с: E{G) —>R. Тогда функция с называется консервативной, если в графе нет цикла отрицательного суммарного веса. В § 7.1 мы представим несколько алгоритмов для задачи о кратчайшем пути. Первый из них требует неотрицательности весов, а второй работает с произвольной консервативной функцией весов. Алгоритмы, приведенные в § 7.1, способны вычислять за один запуск кратчайшие s-i>-nyra для всех v е V(G) без существенного увеличения времени работы. Иногда нас будут интересовать расстояния между всеми парами вершин. Эта задача будет изучена в § 7.2. Поскольку наличие отрицательных циклов приводит к трудностям в решении, полезно также уметь распознавать факт их наличия. Если отрицательных
§ 7.1. Кратчайшие пути от фиксированного источника 183 циклов нет, то несложно найти цикл минимального общего веса. Другая интересная задача состоит в поиске цикла, средний вес которого минимален. Как мы увидим в § 7.3, ориентированный вариант задачи может быть эффективно решен похожими методами. Поиск кратчайших путей в неориентированном графе оказывается более сложным. Исключением является случай неотрицательных весов ребер. Тогда каждое неориентированное ребро может быть эквивалентно заменено на пару противоположных ориентированных ребер того же веса. Однако этот способ не годится для ребер отрицательного веса, поскольку появятся отрицательные ориентированные циклы. Мы вернемся к задаче нахождения кратчайших путей в неориентированном графе с консервативной функцией весов в §12.2 (следствие 12.13). Здесь и далее мы рассматриваем случай ориентированного графа G. Не ограничивая общности, можно считать, что граф G связный и простой. Действительно, в каждом наборе параллельных ребер достаточно оставить одно ребро, вес которого минимален. § 7.1. Кратчайшие пути от фиксированного источника Все изучаемые в этой книге алгоритмы основаны на следующем наблюдении, иногда называемом принципом оптимальности Беллмана, которое составляет ядро метода динамического программирования. Утверждение 7.2. Пусть G — орграф с консервативной функцией весов с: Е (G) -»R. Пусть также заданы число к е N и пара вершин s и w. Рассмотрим путь Р — кратчайший среди всех s-w-путей, состоящих не более чем из к ребер. Обозначим через е = (v, w) последнее ребро данного пути. Тогда путь P[s v] (т. е. Р без последнего ребра е) является кратчайшим среди всех s-v-путей, состоящих из не более чем к — 1 ребер. Доказательство. Предположим, что существует s-f-путь Q, который короче P[s>v], причем |E(Q)| <fc-1. Тогда c(E(Q))+c(e) <с(Е(Р)). Если Q не содержит ш, то Q + е образует s-w-путь, который короче Р, иначе путь Q[S)W] имел бы длину с№Ю[,,ш])) = c(E((Q) + c{e)-c(E{Q[WtU] + е)} <c(?(P))-c(E(Q[u,>i;] + е)) <с(Е(Р)), поскольку Q[W)V] + е представляет собой цикл, а функция с консервативна. В обоих случаях получаем противоречие с предположением о том, что Р служит кратчайшим 5-ш-путем из не более чем fc ребер. ? Аналогичный результат справедлив для неориентированных графов с неотрицательными весами ребер и для ациклических орграфов с произвольными весами. Из доказанного следуют рекурсивные формулы dist(s, 5) = 0 и dist(s, w) = = min{dist(s, v) + c((i>, w)): (i>, w) € ?(G)} для всех w e V(G)\{s}. Тем самым в случае ациклического орграфа задача о кратчайшем пути оказывается решенной (упражнение 7). Структура утверждения 7.2 также объясняет, отчего большинство алгоритмов вычисляют кратчайшие пути от 5 до всех остальных вершин. Действительно,
184 Глава 7. Кратчайшие пути если найден кратчайший s-t-путь Р, то с ним найдены и кратчайшие s-u -пути для всех вершин и, лежащих на Р. Поскольку мы не можем сказать заранее, какие именно вершины окажутся на Р, кажется естественным вычислять кратчайшие s-u -пути для всех и. Весь этот набор s-u -путей может быть представлен в компактном виде; для этого необходимо помнить для каждого (непустого) пути его последнее ребро. Рассмотрим вначале случай неотрицательных весов ребер, т. е. положим с: E(G) —> R+. Если все веса равны 1, то задача о кратчайшем пути решается алгоритмом BFS (утверждение 2.18). В случае весов вида с: E(G) —> N можно заменить каждое ребро е на путь из с(е) единичных ребер и снова воспользоваться алгоритмом BFS. Однако это может привести к образованию экспоненциального числа ребер. Действительно, напомним, что размер входа для данной задачи составляет , ^ Gl nlogm + mlogn + /^logc(e) J, ^ e<=E(G) ' men = \V(G)\Km = \E(G)\. Намного более эффективным является следующий алгоритм, предложенный Дейкстрой [16]. Он оказывается весьма похожим на алгоритм Прима для задачи о минимальном остовном дереве (§ 6.1). Dijkstra's Algorithm (алгоритм Дейкстры) Вход: орграф G, веса с: E(G) -* 3R+ и выделенная вершина s е V(G). Выход: кратчайшие пути от s до всех вершин и € V(G) вместе с их длинами. Более точно, в качестве ответа требуется получить значения 1(у) и р(и) для всех v € V(G) \ {s}. Здесь 1{и) —длина кратчайшего s-u-пути, который получается из кратчайшего s-p(и)-пути добавлением в конец ребра (р(у), f). Если вершина и не достижима из s, то l(v) = <» ир(и) не определено. (Т) Присвоить Z(s) := 0. Присвоить l(v) := оо для всех v е V(G) \{s}. Присвоить R := 0. (2) Найти вершину и е V(G) \R, для которой 1{у) = ттшбУ(С)^ l(w). (3) Присвоить R := R U {v}. 0 For all weV(G)\R: (у, w) e E(G) do: If l{w) > l{v) + c((y, w)) then присвоить l(w) := l(v) + c((y, w)) и р(ш) := и. (5) If Я ^ V(G) then goto ®. Теорема 7.3 (Дейкстра [16]). Алгоритм Дейкстры корректен. Доказательство. Докажем, что следующие свойства выполняются на всем протяжении работы алгоритма:
§ 7.1. Кратчайшие пути от фиксированного источника 185 (а) для всех таких и е V(G)\{s}, что 1{и) < °о? выполняются условия p(v) е R, l(p(v)) + с({р(и), и)) = 1(и) и последовательность v, р(и), р(р{и)), ... содержит s; (б) для всех и е R справедливо равенство l(v) = dist(G c)(s, и). Эти утверждения, очевидно, выполняются после шага ®. На шаге 0 значение l{w) уменьшается до l(v) + c((i>, w)) и р(ш) полагается равным v, лишь если 1/€йиш^Я. Поскольку последовательность v, р(у),' p(p(f))> • • • содержит 5, но при этом не содержит ни одной вершины вне R, в частности w, свойство (а) сохраняется при шаге 0. Свойство (б) тривиально выполнено для и = s. Предположим, что на шаге (3) вершина i>eV(G) \ {s} добавляется в R и существует 5-у-путь Р в G, более короткий, чем Цу). Пусть у — первая вершина на пути Р, принадлежащая (V(G)\R) и {и}, и пусть х — предшественник вершины у на пути Р. Поскольку х е R, согласно шагу 0 по индуктивному предположению имеем НУ) < Кх) +с((х,у)) = dist(G,c)(5,x) + с((х,у)) < c(?(P[s,y])) < с(Е(Р)) < Z(i;), что противоречит выбору v на шаге (2). П Время работы, очевидно, составляет 0{п2). Эту оценку можно улучшить с помощью фибоначчиевых куч. Теорема 7.4 (Фридман и Тарджан [20]). Время работы алгоритма Дейкстры, основанного на фибоначчиевых кучах, составляет 0{т + п logn), где п = |V(G)| um = \E(G)\. Доказательство. Применим теорему 6.7. В процессе работы мы поддерживаем множество {(v,l(y)): и е V(G)\R, l(v) < оо}. Тогда шаги © и (3) сводятся к операциям deletemin, в то время как обновление l(w) на шаге 0 вызывает операцию insert, если значение 1{ги) было бесконечным, и decreasekey в противном случае. ? В случае неотрицательных весов это лучшая из известных сильно полиномиальных оценок для задачи о кратчайшем пути. (При использовании других моделей вычислений Фредману и Уилларду [21], а также Торупу [40] и Раману [38] удалось добиться чуть меньшего времени работы.) Если веса представляют собой целые числа из фиксированного диапазона, то существует простой линейный алгоритм (упражнение 3). В общем случае для весов вида с: E(G) —> {0,...,cmax} можно получить оценки 0(тloglogcmax) (Джонсон [27]) иО(т + Пд/к^стах) (Ахуджа и др. [9]). Эти результаты были улучшены Торупом [41] до 0{т 4- nloglogcmax) и 0(т 4- п log logn), но даже последняя оценка сложности годится лишь для целочисленных весов, и алгоритм не является сильно полиномиальным. Для общих неотрицательных весов Орлин и др. [34] предложили алгоритм со сложностью 0(mlog(2 + nk/m)), где fc — число различных весов ребер. Для планарных диграфов линейный алгоритм найден Хензингер и др. [24]. Наконец отметим, что Торуп [39] описал линейный алгоритм, находящий крат-
186 Глава 7. Кратчайшие пути чайшие пути в неориентированном графе с неотрицательными целыми весами. См. также работу Петти и Рамачандран [36]; эта статья содержит множество полезных ссылок. Перейдем теперь к алгоритму для общего консервативного случая задачи. Moore — Bellman—Ford Algorithm (алгоритм Мура — Беллмана—Форда) Вход: орграф G, веса с: E(G) —> К и выделенная вершина s € V(G). Выход: отрицательный цикл С в G или кратчайшие пути от s до всех вершин и € V{G) и их длины. Точнее говоря, во втором случае мы получаем для всех v € V(G) \{s} значения I(и) и p(v). Здесь l(v)—длина кратчайшего s-u-пути, который получается из кратчайшего s-p (и)-пути добавлением в конец ребра {p(y)t v). Если вершина и не достижима из 5, то l(v) = оо и р(у) не определено. (Т) Присвоить l(s) := О и l(v) := оо для всех и е V(G)\{s}. Пусть п := |V(G)|. (2) For i := 1 to n -1 do: For каждого ребра {у, w) e E(G) do: If г(ш) > Z(y) + c([v, w)) then присвоить ?(ш) := l(v) + c((y, ш)) и р(ш) := i;. (3) If существует такое ребро (v, w) е E(G), что Z(u;) > l(u) + c((y, ш)), then присвоить xn := ш, хп_г :=v и хп_1_г := p(xn_i) для i = 1,..., п — 1 и выдать произвольный цикл С в графе (V(G), {(*i_i, xt): i = 1,..., п}). Теорема 7.5 (Мур [31], Беллман [12], Форд [19]). Алгоритм Мура—Беллмана — Форда корректен. Время его работы составляет 0(пт). Доказательство. Оценка 0(пт) на время работы является очевидной. В любой момент работы алгоритма пусть для вершины и е V(G) число к(и) показывает номер итерации, на которой значение 1(у) последний раз уменьшалось, и пусть к(и) := 0 в случае, когда l(v) не изменялось после шага ф. Пусть F := {(р(у),у):у € V(G), fc(y) > 0} и F' := {(v, w) € E(G): Z(u/) > Z(y) + c((i/, w))}. Докажем, что справедливы след)оощие утверждения: (а) 1(у) >1{х) + с((х, у)) и fc(jf) > fc(y) -1 для всех (х, у) € F; (б) если подграф F U F' содержит цикл С, то С имеет отрицательный вес. Для доказательства п. (а) заметим, что I(у) = I(х) + с((х, у)) и к(х) > fc(y) — 1, когда р(у) полагается равным д\ Кроме того, значения 1(х) не увеличиваются, a fc(x) —не уменьшаются.
§ 7.1. Кратчайшие пути от фиксированного источника 187 Для доказательства п. (б) рассмотрим цикл С в (V(G), FUF'). По свойству (а) имеем 2 с((1/,ш))= J] (c((imi/)) + «iO-Z(u/))<0. (у,ш)€Е(С) (у,ш)€?(С) Отсюда следует п. (б), кроме случая, когда Е(С) с F. Если в какой-то момент присваивание р(у):=х порождает в графе (V(G), F) цикл С, то непосредственно перед вставкой выполнялось условие (дс, у) е F', а значит, С представляет собой отрицательный цикл. Если на шаге (3) алгоритм находит ребро (у, ш) eF', то fc(i>) = п — 1, и, значит, fc(Xi) > i при i = п — 2,..., 1. Поэтому последовательность х0,..., хп определена корректно и содержит повторяющийся элемент. Тогда на шаге (3) алгоритм действительно обнаружит цикл С, который по свойству (б) будет иметь отрицательный вес. Если по окончании шага (2) мы получим l{w) < l(v) + c{{v, w)) для всех ребер (v, w) е F(G), то 2 c((i/,u/))= J] (c((i/,u/)) + I(i;)-Z(ii;))>0 (у,ш)е?(С) (и,ш)€?(С) для любого цикла С в G[R], где R := {v е V(G): l(v) < оо}. Следовательно, G[R] не содержит отрицательных циклов. Тогда по свойству (б) подграф (R, F) ациклический. Более того, из условия xgR\{s} следует, что р(х) еЯ, а значит, (R,F) образует ориентированное дерево с корнем в вершине s. По свойству (а) значения 1(х) задают минимальные длины s-дс-пути в (R,F) для всех xgR(b любой момент времени). Утверждается, что после к итераций алгоритма значение 1(х) не превосходит длины кратчайшего s-x-пути, состоящего из не более чем к ребер. Это утверждение легко доказать по индукции. Пусть Р — кратчайший s-дг-путь из не более чем к ребер, и пусть (ш, х) — последнее ребро пути Р. Тогда, применяя утверждение 7.2 к G[R], заключаем, что P[S}W] является кратчайшим s-w-путем из не более чем к — 1 ребер. При этом по предположению индукции после к — 1 итераций справедливо неравенство l(w) < c(F(P[s ш])). Но на fc-й итерации среди прочих было также просмотрено и ребро (ш, х). После его просмотра имеем l{x)<l(w) + c{(w,x))<c(E(P)). Поскольку ни один путь не может содержать более п — 1 ребер, корректность алгоритма доказана. ? Заметим, что если функция с консервативна, то подграф (R,F) является ориентированным деревом, содержащим кратчайшие пути от s до всех вершин, достижимых из 5. Его также иногда называют деревом кратчайших путей. Данный метод до сих пор остается самым быстрым из известных сильно полиномиальных алгоритмов для задачи о кратчайшем пути (с консервативными весами). Алгоритм, в котором используется масштабирование, был предложен Гольдбергом [22] и имеет время работы 0(yn^nlog(|cmin| + 2)), где все веса
188 Глава 7. Кратчайшие пути предполагаются целыми и не меньшими cmin. Для планарных орграфов Мозес и Вульфф-Нильсен [32] получили алгоритм, сложность которого составляет 0(nlog^n/(loglogn)). В случае, когда орграф G содержит отрицательные циклы, не найдено полиномиальных алгоритмов для задачи о кратчайшем пути (в этих предположениях задача является NP-трудной; см. упражнение 17(6) из гл. 15). Основная сложность здесь состоит в том, что утверждение 7.2 перестает быть верным для произвольных весов. Неясно, как вместо произвольной реберной цепи получить именно путь. Если в графе нет отрицательных циклов, то кратчайшая реберная цепь представляет собой путь плюс, возможно, несколько циклов нулевого веса, которые могут быть удалены. В свете вышесказанного важным кажется вопрос о том, как доказать отсутствие отрицательных циклов в орграфе. Здесь оказывается полезным следующее понятие, введенное Эдмондсом и Карпом [17]. Определение 7.6. Пусть G— орграф с весами с: E(G) —> R. Рассмотрим функцию п: V(G) —> R. Определим приведенную стоимость для ребра (х,у) € E(G) относительно п как Ся((*> У)) := с((*,У)) + я(*) - п(у). Если сп (е) > О для всех е е Я (G), то значения тг называются допустимыми потенциалами. Теорема 7.7. Пусть G — орграф с весами с: E(G) —»R. Допустимые потенциалы для (G, с) существуют, если и только если функция с консервативна. По заданному орграфу G и весам с: E(G) —> R за время 0(пт) мы можем либо построить допустимые потенциалы, либо найти отрицательный цикл. Доказательство. Если п —допустимый потенциал, то для всякого цикла С имеем 0<J]c*(e)== Е (Ф) + гсМ-я(у)) = ]Гс(е) ееЕ(С) e=(x,y)GE(C) ееЕ(С) (потенциалы взаимно уничтожаются). Таким образом, функция с консервативна. Для того чтобы найти отрицательный цикл и допустимые потенциалы, добавим новую вершину 5 и проведем ребра (s, и) нулевой стоимости для всех i> е V(G). Затем запустим алгоритм Мура — Беллмана—Форда. На выходе получим либо отрицательный цикл (который, конечно, не содержит s), либо числа 1{и) < оо для всех и е V(G). Последние и задают искомые допустимые потенциалы. ? Данное утверждение представляет собой некий специальный вид линейной двойственности; см. упражнение 9. На практике известны более эффективные алгоритмы для обнаружения отрицательных циклов; см. работу Черкасского и Гольдберга [14]. § 7.2. Кратчайшие пути между всеми парами вершин Пусть теперь нам требуется найти в заданном орграфе кратчайший s-t-путь для всех упорядоченных пар вершин (5, t).
§ 7.2. Кратчайшие пути между всеми парами вершин 189 All Pairs Shortest Paths (задача о кратчайших путях между всеми парами вершин) Дано: орграф G и консервативные веса с: E{G) -»R. Надо: найти числа Zst и вершины pst для всех таких $,t€ V(G), что 5 ф t. Здесь Zst —длина кратчайшего s-t-пути, a (pst, t) — последнее ребро на таком пути (если он существует). Конечно, мы могли бы просто запустить алгоритм Мура — Беллмана — Форда п раз, по одному разу для каждой вершины s. Это бы привело к оценке сложности 0{п2т). Однако есть более эффективный способ, предложенный Базараа и Лэнгли [11], а также Джонсоном [26]. Теорема 7.8. Задача о кратчайших путях между всеми парами вершин может быть решена за время 0(гпп + п2 logn), где п = |V(G)| um = |E(G)|. Доказательство. Пусть задан орграф G с весами с. Построим вначале набор допустимых потенциалов я. По следствию 7.7 это можно сделать за время 0(nm). Затем для каждой вершины s е V(G) запустим вычисление кратчайших путей от 5, используя приведенные стоимости сп вместо с. Для любой вершины t получившийся s-t-путь будет также кратчайшим относительно с, поскольку замена весов с на приведенные веса сп изменит длину любого s-t-пути ровно на константу tt(s) — n(t). Поскольку приведенные стоимости неотрицательны, на каждой итерации можно использовать алгоритм Дейкстры. Тогда по теореме 7.4 общее время работы составит 0(mn + п(т + п log п)). ? Мы вновь используем подобную идею в гл. 9 (в доказательстве теоремы 9.13). Петти [35] показал, как уменьшить время работы до 0(тп + п2 log logn); данная оценка является наилучшей на текущий момент. Для плотных графов с неотрицательными весами результат Чаня [13], получившего сложность 0(——-х ), дает небольшое улучшение. В случае, если веса всех ребер — ^ 1о^ п J небольшие положительные целые числа, оценка сложности может быть улучшена с помощью быстрого умножения матриц; см., например, работу Цвика [43]. Решение задачи о кратчайших путях между всеми парами вершин позволяет также вычислить метрическое замыкание. Определение 7.9. Пусть задан граф G (ориентированный или неориентированный) с консервативными весами с: ?(G) —» R. Метрическое замыкание (G9c) представляет собой пару (G,c), где G — простой граф на множестве вершин V(G), содержащий для всех таких х,у е V(G), что х ф у, ребро е = {х,у} (или б = (х, у) в случае орграфа G), если и только если вершина у достижима из х в G. В случае достижимости вес данного ребра равен с(е) = dist(G с)(лс, у). Следствие 7.10. Пусть G — орграф с консервативными весами с: E(G) —> Rлибо неориентированный граф с неотрицательными весами с: E(G) —> R+. Тогда можно найти метрическое замыкание множества (G, с) за время 0(тп + п2 log п).
190 Глава 7. Кратчайшие пути Доказательство. Если граф G неориентированный, то заменим каждое ребро на пару противоположных ориентированных ребер. Затем решим получившуюся задачу о кратчайших путях между всеми парами вершин. ? Оставшаяся часть параграфа посвящена алгоритму Флойда—Уоршолла — еще одному методу со сложностью 0(п3) для задачи о кратчайших путях между всеми парами вершин. Основным преимуществом алгоритма Флойда—Уоршолла является его простота. Без ограничения общности будем считать, что все вершины графа пронумерованы числами 1,..., п. Floyd — WarshaU Algorithm (алгоритм Флойда—Уоршолла) Вход: орграф G с множеством вершин V(G) = {1,..., п} и консервативные Becac:?(G)->K. Выход: матрицы (Iy)i<ij<n и (Ро*)ки<п» гДе Uj —длина кратчайшего пути из i в j, a (Pijyj) —последнее ребро на этом пути (если он существует). (Т) Присвоить ltj := c((i, j)) для всех (i, j) е E(G). Присвоить ltj := оо для всех таких (i, j) е (V(G) х V(G)) \E(G), что i Ф j. Присвоить la := 0 для всех L Присвоить ptj := i для всех i, j € V(G). (2) For j := 1 to n do: For i := 1 to n do: Ifi^j then: For к := 1 to n do: Ifk^j then: If lik > l(j + ljk then присвоить lik := l(j + ljk и p?fc := pjk. Теорема 7.11 (Флойд [18], Уоршолл [42]). Алгоритм Флойда — Уоршолла корректен. Время его работы составляет 0(п3). Доказательство. Оценка времени работы очевидна. Утверждение. По окончании выполнения алгоритмом внешнего цикла для j = = 1,2,..., ;0 переменная lik содержит длину кратчайшего i-k-nymu с промежуточными вершинами v лишь из множества {1,..., j0} (для всех iuk),a (pik, k) — последнее ребро такого пути. Будем доказывать это утверждение индукцией по j0 = 0,..., п. Для ;0 = О оно справедливо согласно шагу ф, а для ;0 = п из него следует корректность алгоритма. Предположим, что утверждение верно для некоторого ;0 € {0,..., п — 1}, и покажем, что оно также справедливо и для j0 + 1. Для любых i и к в процессе выполнения внешнего цикла для ; = j0 + 1 число lik (содержащее по индуктивному предположению длину кратчайшего i-fc-пути с промежуточными вершинами и лишь из множества {1, ...,;0}) будет заменено на kj0+i + !/+!,&, если
§ 7.3. Минимальные средние циклы 191 данное значение окажется меньше. Осталось показать, что соответствующий i-(j0 + 1)-путь Р и (;'о + 1)-/с-путь Q не имеют общих внутренних вершин. Предположим, что существует внутренняя вершина, принадлежащая одновременно Р и Q. Рассмотрим конкатенацию P + Q. Каждый замкнутый маршрут, являющийся частью пути P + Q, имеет неотрицательный вес по предположению. Сокращая все такие маршруты, мы получим i-fc-путь R, все промежуточные вершины и которого лежат в множестве {1,..., ;0}. Длина пути R не превосходит kj0+i + lj0+i,k (и> в частности, строго меньше значения lik перед началом внешнего цикла для ; = ;0 + 1). Получаем противоречие с индуктивным предположением, так как все внутренние вершины пути R содержатся в множестве {1,..., ;0}. ? Как и алгоритм Мура — Беллмана — Форда, алгоритм Флойда—Уоршолла может быть использован для обнаружения отрицательных циклов (см. упражнение 13 и работу Хугарди [25]). Задача о кратчайших путях между всеми парами вершин в неориентированном графе с произвольными консервативными весами ребер оказывается более сложной; см. теорему 12.14. § 7.3. Минимальные средние циклы Используя вышеизложенные алгоритмы для поиска кратчайших путей, несложно найти в заданном орграфе с консервативными весами цикл минимального веса (см. упражнение 14). Другая близкая задача состоит в нахождении цикла, средний вес которого минимален. Directed Minimum Mean Cycle (задача о минимальном среднем цикле в орграфе) Дано: орграф G с весами с: E(G) —> R. Надо: найти цикл С, средний вес .... которого минимален, или устано- вить, что орграф G ациклический. В данном параграфе мы научимся решать эту задачу с помощью динамического программирования аналогично тому, как это делается в других алгоритмах кратчайших путей. Мы могли бы предполагать, что орграф G сильно связен, поскольку всегда можно найти сильно связные компоненты за линейное время (теорема 2.19), а затем решить задачу для каждой компоненты отдельно. Впрочем, для следующей минимаксной теоремы достаточно предположить, что существует вершина s, из которой достижимы все остальные вершины орграфа. При этом мы будем рассматривать не только пути, но и произвольные реберные цепи (где вершины и ребра могут повторяться). Теорема 7.12 (Карп [28]). Пусть G — орграф с весами с: E(G) —> R. Рассмотрим такую вершину s е V(G), что любая вершина достижима из s. Для всех х е V(G)
192 Глава 7. Кратчайшие пути и к е Z+ пусть Fk(x) := minj^ с((ун, ^)): ц, = 5, ifc = х, (ц_ъ ц) € E(G) для всех i J —минимальный вес реберной цепи длины к от s до х (в случае ее отсутствия мы используем специальное значение оо). Пусть /x(G, с) —минимальный средний вес цикла в G (при этом /z(G, с) = со, если орграф G ациклический). Тогда справедливо равенство Lt(G,c)= mm max -2-^—r^-1. jcgV(G) 0<fc<n-l n — K Ffc(x)<oo Доказательство. Если орграф G ациклический, то Рп(х) = оо для всех х е V(G), так что утверждение теоремы выполнено. Будем далее считать, что fj,(Gy с) < оо. Вначале докажем, что если ju(G, с) = 0, то К(х)-К(х) Л nun max , = 0. XGV(G) 0<k<n-l П —К Ffc(jc)<» Пусть для орграфа G выполняется равенство fi(G, с) = 0. Тогда G не содержит отрицательных циклов. Функция с консервативна, поэтому К (х) > distrG сч (s, x) = min К (x), так что max -^—г^- ^ 0. Fk(x)«x> Покажем, что найдется вершина х, для которой неравенство обращается в равенство, т.е. Fn(x) = dist(Gc)(s,х). Пусть С — произвольный цикл нулевого веса в G, и пусть w е У (С). Обозначим через Р кратчайший s-ш-путь, за которым следует повторенный п раз цикл С. Пусть Р' состоит из п начальных ребер пути Р, и пусть х — конец пути Р'. Поскольку Р представляет собой реберную цепь минимального веса из5вш, любой ее начальный отрезок, в частности Р' также образует реберную цепь минимального веса. Значит, Fn(x) = с(Е(Р')) = dist(Gc)(s,x). Доказав теорему для случая /x(G, с) = 0, перейдем теперь к общему случаю. Заметим, что добавление константы 5 к весам всех ребер изменяет /x(G, с) и Fn(x)-Fk(x) mm max -^^—TJsl-J- xeV(G) 0<k<n-l П — К Fk(x)<*> на одну и ту же величину, а именно на 5. Полагая 5 := —/i(G, с), мы приходим к уже разобранному случаю ix{G, с) = 0. ? На доказанной теореме основан следующий алгоритм. Minimum Mean Cycle (алгоритм поиска минимального среднего цикла) Вход: орграф G с весами с: E(G) -> R. Выход: цикл С, имеющий минимальный средний вес, либо сообщение о том, что орграф G ациклический.
§ 7.3. Минимальные средние циклы 193 (Т) Добавить к G новую вершину s с ребрами (s, х), удовлетворяющую условию c((s, х)) := 0 для всех х е V(G). (2) Присвоить п := |V(G)|, F0(5) := 0 и F0(x) := оо для всех х е V(G)\{s}. (3) For fc := 1 to п do: For all x <= V(G) do: Присвоить Fk(x) := oo. For all (ш,х) G 5~(x) do: If Fk^{w) + c((w, *)) < Ffc(x) then: Присвоить Ffc(x) := Ffc_x(ii;) + с((ш, x)) и pfc(x) := ш. (4) Fn(x) = oo для всех x e V(G) then stop (орграф G ациклический). (5) Пусть x — вершина, для которой значение max — 77— минимально. CKfc<n—1 П — К. Fk(x)«* (6) Выдать в качестве С произвольный цикл в реберной цепи 5 = Pl(P2(- • • (РпМ) • • •))> • • • > Pn-l(Pn М)> Рп00> *• Следствие 7.13 (Карп [28]). Алгоритм Minimum Mean Cycle корректен. Время его работы составляет 0(пт). Доказательство. Шаг ® не создает новых циклов в G, но при этом позволяет применить теорему 7.12. Очевидно, что на шагах (2) и (3) алгоритм корректно вычисляет значения Fk(x). Таким образом, если алгоритм останавливается на шаге 0, то G действительно является ациклическим орграфом. Рассмотрим вход (G, с'), где с'(е) := с(е) —/x(G, с) для всех е е F(G). На этом экземпляре задачи алгоритм работает точно так же, как и для (G, с). Единственное различие состоит в замене значений F на Fk(x) = Fk(x) — fc/i(G, с). Согласно выбору х на шаге (5) по теореме 7.12, учитывая, что /x(G, с7) = 0, мы получаем F^(x) = miiio^fc^.! F^x). Следовательно, произвольная реберная цепь в G, идущая из 5 в х, содержащая п ребер и имеющая длину F^(jc) относительно с', состоит из кратчайшего s-x-пути, к которому добавляется один или более циклов нулевого веса. Все эти циклы имеют средний вес ii{G, с) относительно с. Следовательно, каждый цикл в реберной цепи минимального веса, состоящей из п ребер и идущей из 5 в х (где вершина х выбрана на шаге (5)), является циклом минимального среднего веса. Такой цикл будет найден на шаге (6). Наибольший вклад во время работы алгоритма вносит шаг (3), который выполняется за время 0(пт). При этом шаг (5) занимает лишь 0(п2) единиц времени. ? Этот алгоритм не может быть использован для поиска цикла минимального среднего веса в неориентированном графе с весами на ребрах. См. упражнения 10 и 18 из гл. 12. Ряд алгоритмов для более общих задач о минимальном среднем значении были предложены Мегиддо [29,30] и Радзиком [37]. См. также упражнение 10 из гл. 12.
194 Глава 7. Кратчайшие пути Упражнения 1. Пусть G — граф (ориентированный или нет) с весами с: Е (G) —> Z+, в котором выделены такие вершины s, t е V(G), что вершина t достижима из s. Покажите, что минимальная длина s-t-пути равна максимальному числу разрезов, отделяющих 5 и t и таких, что каждое ребро е содержится не более чем в с(е) из них. 2. Рассмотрим алгоритм Дейкстры и предположим, что нас интересует лишь кратчайший s-t-путь до заданной вершины t. Покажите, что его работу можно прекратить, как только на шаге (2) окажется, что v = t или 1{и) = оо. 3 (Дайал [15]). Предположим, что веса ребер являются целыми числами от 0 до С для некоторой константы С. Можно ли модифицировать алгоритм Дейкстры для этого частного случая так, чтобы он стал линейным? 4. Пусть заданы орграф G, веса с: Е (G) —> R+ и паразершин s, t е V(G). Предположим, что существует ровно один кратчайший s-t-путь Р. Можно ли найти кратчайший s-t-путь среди путей, отличных от Р, за полиномиальное время? 5. Модифицируйте алгоритм Дейкстры так, чтобы решать задачу о критическом пути. Последняя формулируется так: по заданным орграфу G, функции с: E(G) —> R и вершинам syt е V(G) найти s-t-путь, в котором самое длинное ребро имеет минимально возможную длину. 6. Пусть G — орграф, и пусть s,te V(G). Свяжем с каждым ребром е е ?(G) произвольное число г(е) (его надежность), где 0 < г(е) < 1. Надежность пути Р полагается равной произведению надежностей составляющих его ребер. Задача состоит в нахождении s-t-пути максимальной надежности. (а) Покажите, что после перехода к логарифмам мы получаем в точности задачу о кратчайшем пути. (б) Покажите, как решить задачу (за полиномиальное время), не используя логарифмирование. 7. Пусть G — ациклический орграф, с весами с: E{G) —> R, и пусть заданы вершины s, t, е V(G). Покажите, как найти кратчайший s-t-путь в G за линейное время. 8. Пусть G — ациклический орграф, с весами с: E(G) -> R, и пусть заданы вершины s, t, g V(G). Покажите, как найти объединение всех длиннейших s-t-ny- тей в G за линейное время. 9. Докажите теорему 7.7, используя линейную двойственность, в частности теорему 3.24. 10. Пусть G — орграф с консервативными весами с: E(G) —> R. Пусть также заданы такие вершины s,te V(G), что вершина t достижима из s. Докажите, что минимальная длина s-t-пути в G равна максимальному значению n{t) — n(s), где п—допустимый потенциал для (G, с). 11 (Гольдберг и Харрелсон [23]). Пусть G — сильно связный орграф с весами с: E(G) —> R+. Пусть заданы непустое множество L с y(G) и вершины s, t € V(G). Положим я(у) := min{0,nun(dist(Gc)(t,Z)-dist(G>c)(i;,I))} для и G V(G). Докажите следующие утверждения.
Упражнения 195 (а) Функция п задает допустимые потенциалы. (б) Всякий кратчайший s-t-путь в (G, сп) является кратчайшим s-t-путем b(G,c). (в) Имеет место включение {i/eV(G): dist(GjC7r)(s,y)<dist(G)C7r)(s,t)} с {veV(G): dist(GjC)(s,i;)<dist(G)C)(s,t)}. Замечание. Если в заданном графе большого размера требуется решать много задач о кратчайших путях, то может оказаться полезным заранее посчитать расстояния от всех вершин до некоторого специальным образом выбранного подмножества L с y(G) (его элементы называются ориентирами). Свойства (а), (б), (в) и упражнение 2 показывают, что расстояния до ориентиров могут быть использованы для быстрого поиска s-t-путей для большого числа пар s и t. Для этого нужно применить алгоритм Дейкстры к (G, сп). 12 (Орлин [33]). Пусть G —орграф, V(G) =АиВ и E(G[B]) = 0. Более того, предположим, что \5(v)\ < к для всех и еВ. Пусть заданы вершины 5, t е V(G) и консервативные веса с: E(G) —> R. Докажите, что кратчайший s-t-путь может быть найден за время 0(|A|fc|E(G)|), а если веса с неотрицательны, то за время от2). 13. Предположим, что мы запустили алгоритм Флойда—Уоршолла на входе (G, с) с произвольными весами с: ?(G) —> R. Докажите, что числа lit (i = 1,..., п) остаются неотрицательными на протяжении его работы, если и только если веса с консервативны. 14. Покажите, как найти за полиномиальное время в заданном орграфе с консервативными весами цикл минимального веса. Можно ли это сделать за время 0(п3)? Указание. Модифицируйте подходящим образом алгоритм Флойда—Уоршолла. Замечание. В случае произвольных весов эта задача включает в себя определение того, является ли заданный орграф гамильтоновым (а это NP-трудно; см. гл. 15). Способ нахождения минимального цикла в неориентированном графе (с консервативными весами) описан в § 12.2. 15. Пусть G — полный (неориентированный) граф с весами с: E(G) -* R+. Покажите, что (G, с) является собственным метрическим замыканием, если и только если выполняется неравенство треугольника: c({*,y})+c({y,z})>c({x,z}) для любых трех различных вершин х, у, z е. V(G). 16 (Альбрехт и др. [10]). Ограничения на скорость работы микросхем могут быть представлены в виде орграфа G с весами ребер с: ?(G) -*R+. Вершины соответствуют ячейкам памяти, ребра обозначают пути обработки данных, а веса соответствуют верхним оценкам на время прохождения сигнала. Важной задачей при проектировании сверхбольших интегральных схем является нахождение оптимального тактирования элементов, т. е. такого отображения a: V(G) —> R, что a{v) + с((у, ш)) < а(ш) + Г для всех {у, w) е E(G), и числа Г, которое должно
196 Глава 7. Кратчайшие пути быть минимальным. (Число Т представляет собой длительность такта микросхемы, а а (и) и а(у) + Г обозначают «время отправления» и наиболее позднее возможное «время прибытия» сигнала в элемент и соответственно.) (а) Сведите задачу нахождения оптимального значения Т к задаче о минимальном среднем цикле в орграфе. (б) Покажите, как эффективно найти оптимальные значения a(v). (в) Обычно некоторые из чисел a(v) заданы заранее. Покажите, как решать задачу в этом случае. 17. Покажите, что следующий вариант алгоритма Minimum Mean Cycle также работает правильно. Не будем добавлять новую вершину s. Вместо шагов ® и (2) положим F0(x) := 0 для всех х € V(G). Литература Общая литература [1] Ahuja R. К., Magnanti Т. L., Orlin J. В. Network Flows. Prentice-Hall, Englewood Cliffs, 1993, Chapters 4 and 5. [2] Cormen T. H., Leiserson C. ?., Rivest R. L., Stein C. Introduction to Algorithms. Third Edition. МГТ Press, Cambridge, 2009, Chapters 24 and 25. [3] Dreyfus S. E. An appraisal of some shortest path algorithms // Operations Research. 1969. Vol.17. P. 395-412. [4] Gallo G., Pallottino S. Shortest paths algorithms // Annals of Operations Research. 1988. Vol.13. P. 3-79. [5] Gondran M., MinowcM. Graphs and Algorithms. Wiley, Chichester, 1984, Chapter 2. [6] Lawler E. L. Combinatorial Optimization: Networks and Matroids. Holt, Rinehart and Winston, New York, 1976, Chapter 3. [7] SchrijverA. Combinatorial Optimization: Polyhedra and Efficiency. Springer, Berlin, 2003, Chapters 6-8. [8] Tarjan R. E. Data Structures and Network Algorithms. SIAM, Philadelphia, 1983, Chapter^ Процитированные работы [9] Ahuja R. K., Mehlhorn K., Orlin J. В., Tarjan R. E. Faster algorithms for the shortest path problem // Journal of the ACM. 1990. Vol. 37. P. 213-223. [10] Albrecht C, Korte В., Schietke J., Vygen J. Maximum mean weight cycle in a digraph and minimizing cycle time of a logic chip // Discrete Applied Mathematics. 2002. Vol. 123. P. 103-127. [11] Bazaraa M. S., Langley R. W. A dual shortest path algorithm // SIAM Journal on Applied Mathematics. 1974. Vol.26. P.496-501. [12] Bellman R. E. On a routing problem // Quarterly of Applied Mathematics. 1958. Vol. 16. P. 87-90. [13] Chan Т. M. More algorithms for all-pairs shortest paths in weighted graphs // SIAM Journal on Computing. 2010. Vol. 39. P. 2075-2089.
Литература 197 Cherkassky В. V., Goldberg А. V. Negative-cycle detection algorithms // Mathematical Programming. Ser.A. 1999. Vol.85. P.277-311. Dial R. B. Algorithm 360: shortest path forest with topological order // Communications of the ACM. 1969. Vol. 12. P. 632-633. Dijkstra E. W. A note on two problems in connexion with graphs // Numerische Mathe- matik. 1959. Vol. 1. P. 269-271. Edmonds J., Karp R. M. Theoretical improvements in algorithmic efficiency for network flow problems // Journal of the ACM. 1972. Vol. 19. P. 248-264. Floyd R. W. Algorithm 97—shortest path // Communications of the ACM. 1962. Vol. 5. P. 345. Ford L. R. Network flow theory. Paper P-923, The Rand Corporation, Santa Monica, 1956. Fredman M. L., Tarjan R. E. Fibonacci heaps and their uses in improved network optimization problems // Journal of the ACM. 1987. Vol. 34. P. 596-615. Fredman M. L., Willard D. E. Trans-dichotomous algorithms for minimum spanning trees and shortest paths // Journal of Computer and System Sciences. 1994. Vol. 48. P. 533-551. Goldberg A. V. Scaling algorithms for the shortest paths problem // SIAM Journal on Computing. 1995. Vol.24. P.494-504. Goldberg A. V., Harrelson C. Computing the shortest path: A* search meets graph theory // Proceedings of the 16th Annual ACM-SIAM Symposium on Discrete Algorithms. 2005. P. 156-165. Henzinger M. R., Klein P., Rao S., Subramanian S. Faster shortest-path algorithms for planar graphs // Journal of Computer and System Sciences. 1997. Vol. 55. P. 3-23. Hougardy S. The Floyd—Warshall algorithm on graphs with negative cycles // Information Processing Letters. 2010. Vol. 110. P. 279-281. Johnson D. B. Efficient algorithms for shortest paths in sparse networks // Journal of the ACM. 1977. Vol. 24. P. 1-13. Johnson D. B. A priority queue in which initialization and queue operations take О (log log D) time // Mathematical Systems Theory. 1982. Vol.15. P. 295-309. Karp R. M. A characterization of the minimum cycle mean in a digraph // Discrete Mathematics. 1978. Vol. 23. P. 309-311. Megiddo N. Combinatorial optimization with rational objective functions // Mathematics of Operations Research. 1979. Vol.4. P.414-424. Megiddo N. Applying parallel computation algorithms in the design of serial algorithms // Journal of the ACM. 1983. Vol. 30. P. 852-865. Moore E. F. The shortest path through a maze // Proceedings of the International Symposium on the Theory of Switching, Part II, Harvard University Press, 1959, 285-292. Mozes S., Wulff-Nilsen C. Shortest paths in planar graphs with real lengths in О (-—p—J time //Algorithms — Proceedings of the 18th European Symposium on Algorithms (ESA), Part II (M. de Berg, U. Meyer, eds.), Springer, Berlin, 2010. (Lecture Notes in Comput. Sci.; Vol.6347). P.206-217. [33] Orlin J. B. A faster strongly polynomial minimum cost flow algorithm // Operations Research. 1993. Vol.41. P.338-350.
198 Глава 7. Кратчайшие пути [34] Orlin J. В., Madduri К.у Subramani К., Williamson М. A faster algorithm for the single source shortest path problem with few distinct positive lengths // Journal of Discrete Algorithms. 2010. Vol.8. P. 189-198. [35] Pettie S. A new approach to all-pairs shortest paths on real-weighted graphs // Theoretical Computer Science. 2004. Vol.312. P.47-74. [36] Pettie S., Ramachandran V. Computing shortest paths with comparisons and additions // SIAM Journal on Computing. 2005. Vol. 34. P. 1398-1431. [37] Radzik T. Parametric flows, weighted means of cuts, and fractional combinatorial optimization // Complexity in Numerical Optimization (P. M. Pardalos, ed.), World Scientific, Singapore, 1993. [38] Raman R. Recent results on the single-source shortest paths problem // ACM SIGACT News. 1997. Vol. 28. P. 81-87. [39] Thorup M. Undirected single-source shortest paths with positive integer weights in linear time // Journal of the ACM. 1999. Vol. 46. P. 362-394. [40] Thorup M. On RAM priority queues // SIAM Journal on Computing. 2000. Vol. 30. P. 86-109. [41] Thorup M. Integer priority queues with decrease key in constant time and the single source shortest paths problem // Journal of Computer and System Sciences. 2004. Vol. 69. P. 330-353. [42] Warshall S. A theorem on boolean matrices // Journal of the ACM. 1962. Vol. 9. P. 11-12. [43] Zwick U. All pairs shortest paths using bridging sets and rectangular matrix multiplication // Journal of the ACM. 2002. Vol. 49. P. 289-317.
ГЛАВА 8 Потоки в сетях В этой и последующей главах мы займемся изучением потоков в сетях. Пусть фиксирован орграф G с пропускными способностями (capacity) ребер и: E(G) —»R+ и двумя выделенными вершинами: s [источником) и t {стоком). Четверка (G, и, s, t) иногда будет называться сетью. Основной мотивацией для изучения потоков служит следующая практическая задача: пусть есть система труб, по которой может течь жидкость. Для каждой трубы известно ее сечение, определяющее максимальный объем жидкости, который может быть пропущен по данной трубе за единицу времени. При этом считается, что скорость течения жидкости по всем трубам одинакова, а трубы способны пропускать поток лишь в одну сторону. Требуется так спланировать движение жидкости из точки s в точку t, чтобы за единицу времени мы могли прокачивать максимально возможный объем. Решение этой задачи будет называться максимальным потоком. Говоря формально, введем следующее определение. Определение 8.1. Для заданного орграфа G с пропускными способностями ребер и: E(G)->R+потоком называется такая функция/: E(G)-»R+, что/(e) < u (е) для всех е е E(G). Избыток потока / в вершине и € V(G) равен «,(!;):=?/(e)-?/(e). Мы говорим, что / удовлетворяет закону сохранения потока в вершине и, если exf(v) = 0. Поток, удовлетворяющий закону сохранения в каждой вершине, называется циркуляцией. Для заданной сети (G, и, 5, t) назовем s-t-потоком поток /, удовлетворяющий условиям eXf(s) <0и exf(v) = 0 для всех и е V(G)\{s, t}. Назовем величиной s-t-потока / значение value (/) := —ехДд). Сформулируем теперь основную задачу настоящей главы — задачу о максимальном потоке. Max Flow (задача о максимальном потоке) Дано: сеть (G, и, 5, t). Надо: найти s-t-поток максимальной величины. Без ограничения общности можно считать, что орграф G простой, поскольку параллельные ребра можно заранее объединить.
200 Глава 8. Потоки в сетях Данная задача имеет многочисленные приложения. В качестве примера рассмотрим задачу о назначении работ. Пусть даны п заданий, их времена выполнения гъ..., tn € R+ и непустые подмножества St с {1,... 9 т} исполнителей, которые могут участвовать в выполнении задания i е {1,...,п}. Рассмотрим такие числа Ху е R+ для всех i = 1,..., п и j е St (показывающие, как долго исполнитель j работает над заданием i), что все задания будут выполнены, т. е. Sjes xij = fi для всех * = 1, • • •, и. Наша цель состоит в том, чтобы минимизировать время, за которое задания будут выполнены, т. е. Т(х) := maxj^ X]i:j€S xtj. Вместо того чтобы решать эту задачу методами линейного программирования, мы ищем комбинаторный алгоритм. Применим бинарный поиск для определения оптимума Т(дс). Нам потребуется для заданного значения Г находить такие числа xtj € R+, что ^е5. xtj = t{ для всех i и ^{.^8. xtj < Т для всех j. Представим множества St с помощью (двудольного) графа, в котором каждому заданию i отвечает вершина vi9 каждому исполнителю j — вершина wjy а также для всех j е. S{ присутствует ребро (vh Wj). Добавим еще две дополнительные вершины s и ?, а также проведем ребра (s, ut) для всех i и {Wj, t) для всех j. Обозначим получившийся граф через G. Введем пропускные способности ребер и: E{G) —»R+, полагая u((s, ut)) := t{ и u(e) := T для всех остальных ребер. Тогда допустимые решения х, для которых Т{х) < Г, очевидным образом соответствуют 5-?-потокам величины ХГ=1 ^ в ^' ")• Де^" ствительно, данные потоки являются максимальными. В § 8.1 мы опишем базовый алгоритм для решения задачи о максимальном потоке и применим его для доказательства теоремы о максимальном потоке и минимальном разрезе — одного из наиболее известных результатов комбинаторной оптимизации, показывающего связь задачи о максимальном потоке с задачей о s-t-разрезе минимальной пропускной способности. Более того, мы покажем, что для целых пропускных способностей всегда существует оптимальный поток, который также является целым. Как мы увидим в § 8.2, из комбинации этих двух результатов следует теорема Менгера о непересекающихся путях. В § 8.3, 8.4 и 8.5 мы рассмотрим эффективные алгоритмы для решения задачи о максимальном потоке. Затем мы обратимся к задаче поиска минимальных разрезов. В § 8.6 мы опишем элегантный способ представления минимальных пропускных способностей s-t-разрезов (совпадающих с величинами максимальных s-t-потоков) для всех пар вершин s и t. В § 8.7 будет показано, как реберная связность (или, что эквивалентно, минимальная пропускная способность разреза) в неориентированном графе может быть найдена более эффективно, чем с помощью многократного вычисления максимальных потоков. § 8.1. Теорема о максимальном потоке и минимальном разрезе Задача о максимальном потоке может быть легко записана в виде линейной программы:
§ 8.1. Теорема о максимальном потоке и минимальном разрезе 201 максимизировать У^ хе — \] хе e<=5+(s) e<=5-(s) при условиях ^Г Хе = ]Г] Хе (l/G V(G) \ {s, t}), ее5_(и) ee5+(i;) xe<u(e) (ee?(G)), xe^0 (eeE(G)). Поскольку эта программа, очевидно, ограничена и нулевой поток / = 0 всегда допустим, получаем следующий результат. Утверждение 8.2. Задача о максимальном потоке всегда имеет оптимальное решение. П Более того, по теореме 4.18 существует полиномиальный алгоритм для ее решения. Один лишь факт его наличия, однако, нас не устроит. Вместо этого мы будем искать комбинаторный алгоритм (в котором не используется линейное программирование). Напомним, что s-t-разрезом в G называется такое множество ребер б+(Х), что 5 е X и t е V(G) \Х. Пропускной способностью s-t-разреза называется сумма пропускных способностей его ребер. Под минимальным s-t-разрезом мы будем понимать s-t-разрез, пропускная способность которого (относительно и) минимальна в G. Лемма 8.3. Для любого такого подмножества А с V(G), что s € A, t ^ А, и любого s-t-потока / справедливы следующие утверждения: (а) value(/) = ?е€5+(А) /(e) -?eG5-(A) /(e); (б) Value(/) < Еее5+(А) U^' Доказательство. Докажем утверждение (а). Закон сохранения потока выполняется для всех вершин и е A\{s}, поэтому /(e). (А) value(/) = ^ /(e) - ? /(e) = ? ( Z /(e) - J] /(e)) = J] / W - J] Утверждение (б) следует из неравенств 0 < /(e) < u(e), справедливых для любого ребра е е E(G). ? Иными словами, величина максимального потока не превосходит пропускной способности минимального s-t-разреза. В действительности всегда достигается равенство. Для доказательства этого факта нам потребуется понятие увеличивающего пути, которое затем будет многократно использовано в других главах. Определение 8.4. Для орграфа G положим G := (V(G),E(G) u{e:eG E(G)}), где для ребра е = (v, w) eE(G) мы обозначаем через е" новое ребро, идущее из w в v. Назовем е" обратным ребром для е и наоборот. Заметим, что если е = (и, ш), е' = (ш, у) е E(G), то ей е' — это два различных параллельных ребра в G.
202 Глава 8. Потоки в сетях Для заданного графа G с пропускными способностями ребер и: ?(G) —> R+ и потока / определим остаточные пропускные способности (residual capacities) uf: Е( G) —> R+ равенствами иДе) := u(e) — /(e) и иДе") := /(e) для всех е е E(G). Остаточный граф Gf представляет собой орграф (V(G), {eeE(G):u/(e)>0}). Пусть заданы поток / и путь (или цикл) Р в Gf. Увеличением (augmentation) потока / вдоль Р на величину у называется следующее преобразование, выполняемое для каждого ребра е е Е (Р): если е Е E(G), то увеличить /(e) на у, иначе (если е = е^ для е0 € Е(G)) уменьшить /(е0) на у. Для заданной сети (G, и, 5, t) и s-t-потока / назовем /-увеличивающим путем s-t-путь в остаточном графе Gf. Используя это понятие, можно изложить следующий естественный алгоритм для задачи о максимальном потоке (Форд и Фалкерсон [30]). Ограничимся вначале случаем целых пропускных способностей. Ford — Fulkerson Max Flow (алгоритм Форда — Фалкерсона) Вход: сеть (G, и, s, t) с пропускными способностями ребер и: E(G) -* Z+. Выход: максимальный по величине s-t-поток. (Т) Присвоить /(e) := 0 для всех е е E(G). (2) Найти /-увеличивающий путь Р. If такого нет then stop. (3) Вычислить у := min иЛе). W ее?(Р) J Дополнить / вдоль Р на величину у, goto Ребра, на которых достигается минимум на шаге (3), иногда называются критическими (bottleneck edge). Выбор у гарантирует, что обновленная функция / по-прежнему задает поток. Поскольку Р представляет собой s-t-путь, закон сохранения выполняется для всех вершин, кроме 5 и t. Найти произвольный увеличивающий путь несложно (достаточно найти произвольный s-t-путь в Gf). Однако этот путь следует выбирать аккуратно. В действительности если разрешить иррациональные пропускные способности и при этом выбирать увеличивающие пути неудачным образом, то алгоритм может вовсе не закончить работу (упражнение 2). Но даже в случае целых пропускных способностей алгоритму может потребоваться экспоненциально много шагов увеличения. Этот факт можно продемонстрировать на примере простой сети, показанной на рис. 8.1, где числа на ребрах обозначают их пропускные способности (NeN). Если выбирать увеличивающий путь длины 3 на каждой итерации, то всякий раз величина потока
§ 8.1. Теорема о максимальном потоке и минимальном разрезе 203 будет увеличиваться лишь на единицу, так что всего потребуется 2N итераций. При этом размер входа составляет O(logN), поскольку пропускные способности, конечно, записываются в двоичной системе. Проблема с большим количеством шагов, совершаемых алгоритмом, будет преодолена в § 8.3. Теперь утверждается, что когда (и если) алгоритм остановится, то / действительно будет максимальным потоком. Теорема 8.5. Произвольный s-t-поток / является максимальным, если и только если не существует /-увеличивающего пути. Доказательство. Если существует увеличивающий путь Р, то, используя шаг (3) алгоритма Форда — Фалкерсона, мы найдем поток большей величины, так что поток / не максимальный. Если не существует увеличивающего пути, то это означает, что сток t не достижим из источника s в Gf. Пусть R — множество вершин, достижимых из s в Gf. По определению Gf имеем /(e) = и{е) для всех е е 5+(R) и /(e) = 0 для всех е € 5~(R). Теперь по лемме 8.3(a) получаем value(/) = ^ и(е), откуда в силу леммы 8.3(6) следует максимальность потока /. ? В частности, для любого максимального s-t-потока найдется s-t-разрез, пропускная способность которого равна величине потока. С учетом леммы 8.3(6) отсюда следует центральный результат теории потоков, известный как теорема о максимальном потоке и минимальном разрезе. Теорема 8.6 (Форд и Фалкерсон [29], Данциг и Фалкерсон [23]). В произвольной сети максимальная величина s-t-потока совпадает с минимальной пропускной способностью s-t-разреза. ? Альтернативные доказательства этого факта были предложены Элиасом, Файн- штейном и Шенноном [27]. Теорема о максимальном потоке и минимальном разрезе также легко следует из линейной двойственности, см. упражнение 9 из гл. 3. Если все пропускные способности в сети целые, то значение у на шаге (3) алгоритма Форда — Фалкерсона всегда будет целым. Поскольку величина максимального потока конечна (утверждение 8.2), алгоритм остановится после конечного числа шагов. Поэтому получаем такое важное следствие. Следствие 8.7 (Данциг и Фалкерсон [23]). Если все пропускные способности в сети целые, то существует целый максимальный поток. ? Это утверждение (иногда называемое теоремой о целочисленном потоке) также может быть легко доказано с использованием тотальной унимодулярности матрицы инцидентности орграфа (упражнение 3). Мы завершим этот параграф еще одним простым, но полезным наблюдением— теоремой о потоковой декомпозиции. Теорема 8.8 (Галлаи [37], Форд и Фалкерсон [4]). Пусть (G, и, s, t) — сеть, а / — s-t-поток в G. Тогда существуют такое семейство 9>, состоящее из s-t-nymeu,
204 Глава 8. Потоки в сетях ц такое семейство Ч>, состоящее из циклов в G, вместе с соответствующими весами w: 3> U <€ —> R+, что /(e) = SpG^u^eGE(p) ШУ) для всех е € E{G), Ер6* ш(Р) =value(/) u |^| + |V| < |E(G)|. Более того, если поток / целый, то веса w также могут быть выбраны целыми. Доказательство. Будем строить &>, <€ и w индуктивно по числу ребер с ненулевым потоком. Предположим, что существует ребро е, для которого /(e) > 0; в противном случае утверждение тривиально. Рассмотрим максимальный маршрут W, проходящий через е, в котором потоки по всем ребрам положительны и (за исключением, быть может, концов) не повторяются. Тогда W содержит не более п ребер. Более того, либо W содержит цикл Р, либо W представляет собой путь Р. Во втором случае Р начинается в вершине s и заканчивается в вершине t и при этом f(5~(s)) = f(5+(t)) = 0 (в силу максимальности W и закона сохранения потока). Пусть ш(Р) := minee?(P) /(e). Положим /'(е) := /(e) — ш(Р) для всех е € Е(Р) и f'(e) :=/(е) для е &Е(Р). Для окончания доказательства достаточно применить предположение индукции к /7. ? Из доказательства также следует алгоритм со сложностью 0(тп), строящий указанную декомпозицию потока. § 8.2. Теорема Менгера Рассмотрим следствие 8.7 и теорему 8.8 в частном случае, когда все пропускные способности равны 1. Тогда целые s-t-потоки могут рассматриваться как наборы, состоящие из непересекающихся по ребрам s-t-путей и циклов. Отсюда получаем следующее важное утверждение. Теорема 8.9 (Менгер [57]). Пусть G — граф (ориентированный или нет), sut — две его различные вершины и k е N. Тогда существуют к реберно непересекающихся s-t-путей, если и только если после удаления произвольного подмножества из fc — 1 ребер вершина t по-прежнему достижима из s. Доказательство. Необходимость очевидна. Для доказательства достаточности в ориентированном случае рассмотрим сеть (G, и, s, t) с единичными пропускными способностями (и = 1), в которой вершина t достижима из s даже после удаления произвольного подмножества из fc — 1 ребер. Отсюда следует, что минимальная пропускная способность s-t-разреза составляет по меньшей мере fc. По теореме о максимальном потоке и минимальном разрезе 8.6 и следствию 8.7 существует целый s-t-поток величины не меньше fc. По теореме 8.8 этот поток может быть разложен в сумму целых потоков вдоль s-t-путей (и, возможно, некоторых циклов). Поскольку все пропускные способности равны 1, получаем хотя бы fc реберно непересекающихся s-t-путей. Докажем достаточность в неориентированном случае. Пусть G — неориентированный граф с такими вершинами s и t, что вершина t достижима из s даже после удаления любого подмножества из fc — 1 ребер. Это свойство, очевидно,
§8.2. Теорема Менгера 205 хе е • • v w Уе Рис. 8.2 сохраняется, если заменить каждое неориентированное ребро е = {и, w} на пять ориентированных ребер (и, хе), (w, хе), (хе, уе), (уе, v), (уе, w), где хе и уе — пара новых вершин (см. рис. 8.2). Получаем орграф G', в котором по доказанному существует к реберно непересекающихся s-t-путей. Эти пути легко преобразуются в fc реберно непересекающихся s-t-путей в G. ? В свою очередь, несложно вывести теорему о максимальном потоке и минимальном разрезе (хотя бы в случае рациональных пропускных способностей) из теоремы Менгера. Рассмотрим теперь вариант теоремы Менгера, в котором путям запрещается пересекаться по вершинам. Назовем набор путей внутренне непересекающимся, если никакие два из них не имеют общих ребер или внутренних вершин. Несмотря на то что такие пути могут иметь общие концы, внутренне непересекающиеся пути иногда называются вершинно непересекающимися (при условии, что их концы фиксированы). Теорема 8.10 (Менгер [57]). Пусть G — граф {ориентированный или нет), s и t — две его различные не смежные вершины и k е N. Тогда существуют к внутренне непересекающихся s-t-путей, если и только если после удаления произвольного подмножества изк — 1 вершин (отличных от s ut) вершина t по-прежнему достижима из s. Доказательство. Необходимость снова очевидна. Достаточность в ориентированном случае выводится из ориентированной версии теоремы 8.9 с помощью следующего дополнительного построения. Заменим каждую вершину v в G на две вершины v' и v", соединенные ребром (i/, v"). Каждое ребро (и, w) в G заменяется на ребро (у", и/)- Всякое подмножество из fc — 1 ребер в новом графе G', удаление которого нарушает достижимость t' из s" задает подмножество из не более чем fc — 1 вершин графа G, не содержащее s или t, при удалении которого вершина t перестает быть достижимой из 5. Более того, реберно непересекающиеся s^-t'-nyra в новом графе отвечают внутренне непересекающимся s-t-путям в исходном графе. Неориентированный случай доказываемой теоремы получается с использованием конструкции из доказательства теоремы 8.9 (рис. 8.2). ? Следующее утверждение является важным следствием теоремы Менгера. Следствие 8.11 (Уитни [77]). Неориентированный граф G, содержащий не менее двух вершин, является к-реберно связным, если и только если между произволъ-
206 Глава 8. Потоки в сетях ной парой s, t е V (G) различных вершин можно провести к реберно непересекающихся s-t-nymeu. Неориентированный граф G, содержащий более к вершин, является к-связ- ным, если и только если между произвольной парой s, t е V(G) различных вершин можно провести к внутренне непересекающихся s-t-nymeu. Доказательство. Первое утверждение непосредственно следует из теоремы 8.9. Для доказательства второго утверждения рассмотрим неориентированный граф G, содержащий более fc вершин. Если в G существует подмножество из к — 1 вершин, удаление которых нарушает связность, то в нем не может быть к внутренне непересекающихся s-t-путей для всякой пары 5, t е V(G) различных вершин. Обратно, пусть для некоторых различных вершин 5, t е. V(G) в G нет к внутренне непересекающихся s-t-путей. Рассмотрим два случая. Если 5 и t не являются смежными, то по теореме 8.10 граф G содержит к — 1 вершин, удаление которых разделяет s и t. Если же s и t соединены набором F, состоящим из параллельных ребер (|F| > 1), то в графе G — F не существует набора из fc — |F| внутренне непересекающихся s-t-путей, так что по теореме 8.10 в нем найдется подмножество X из fc—|F| — l вершин, удаление которых разделяет s и t. nycn>i;€Vr(G)\(Xu{s, t}). Тогда вершина v не может быть одновременно достижима из s и t в (G — F)—X. Пусть вершина и не достижима из s (другой случай аналогичен). Тогда и и s лежат в различных связных компонентах графа G — (X U {t}). ? Важную роль во многих приложениях играет задача поиска реберно или вер- шинно (или внутренне) непересекающихся путей между несколькими парами вершин. Следующие четыре варианта теоремы Менгера (ориентированный и неориентированный, а также вершинный и реберный) соответствуют четырем вариантам задачи о непересекающихся путях. Disjoint Paths (задача о непересекающихся путях) Дано: два ориентированных/неориентированных графа (G, Я) с общим множеством вершин. Надо: найти семейство 0})/€?(н)> состоящее из таких реберно/вершинно непересекающихся путей в G, что для всякого ребра / = (t, s) или / = {t,s} в Н путь Pf представляет собой s-t-путь. Такое семейство называется решением (solution) для задачи (G,H). Скажем, что путь Pf реализует ребро /. Ребра графа G называются сетевыми (supply edge), а ребра графа Я—ребрами требований (demand edge). Вершина, инцидентная одному из ребер требований, называется терминалом. Выше мы рассматривали частный случай, когда Я состоит из к параллельных ребер. Общий вид задачи о непересекающихся путях будет обсуждаться в гл. 19. Сейчас мы лишь отметим следующий полезный частный случай теоремы Менгера.
§ 8.3. Алгоритм Эдмондса — Карпа 207 Утверждение 8.12. Пусть (G, Я) —экземпляр ориентированной задачи о ребер- но непересекающихся путях, в котором Н состоит из множества параллельных ребер, а граф G + H эйлеров. Тогда задача (G, Я) имеет решение. Доказательство. Поскольку граф G + Н эйлеров, каждое ребро, в частности / е Е(Я), принадлежит некоторому циклу С. Возьмем в качестве первого пути в решении С — /, удалим С, а затем применим индукцию. ? § 8.3. Алгоритм Эдмондса — Карпа В упражнении 2 в конце этой главы будет показано, что шаг (2) алгоритма Форда — Фалкерсона требует уточнения (в противном случае алгоритм может никогда не закончить работу). Вместо того чтобы выбирать произвольный увеличивающий путь, полезно обратить внимание на кратчайший таковой, т. е. на увеличивающий путь, состоящий из минимального числа ребер. Основываясь на этой простой идее, Эдмондс и Карп [26] получили первый полиномиальный алгоритм для задачи о максимальном потоке. Edmonds — Кагр Max Flow (алгоритм Эдмондса — Карпа для максимального потока) Вход: сеть (G, и, s,t). Выход: максимальный по величине s-t-поток. (1) Присвоить /(e) := 0 для всех е е E(G). (2) Найти кратчайший /-увеличивающий путь Р. If такого пути нет then stop. (3) Вычислить у := min иЛё). ее?(Р) Дополнить / вдоль Р на величину у, goto (2). В представленном алгоритме Форда — Фалкерсона на шаге (2)мы используем процедуру BFS (см. §2.3). Лемма 8.13. Пусть fl9 /2, ... — такая последовательность потоков, что fi+1 получается из / с помощью увеличения вдоль кратчайшего ^-увеличивающего пути Pt. Тогда (а) №)|<№+1)| для всех к; (б) |?(Pfc)| + 2 < \Е(Рг)\ для всех таких к < I, что Рк U Рг содержит пару противоположных ребер. Доказательство. Для доказательства п. (а) рассмотрим граф G1} получающийся из Рк U Рк+1 удалением пар противоположных ребер. (Ребра, принадлежащие одновременно Рк и Рк+1, встречаются в Gx дважды.) Каждый простой подграф
208 Глава 8. Потоки в сетях графа Gx является подграфом графа Gfk, поскольку всякое ребро из E(Gfk+i) \E(Gfk) должно быть обратно к ребру из Рк. Построим орграф Нъ для чего возьмем вершины графа Gx и добавим две копии ребра (t,s). Очевидно, граф Gx + Нг эйлеров. Тогда согласно утверждению 8.12 в нем есть два реберно непересекающихся s-t-пути Q1 и Q2. Поскольку E(Gi) c.E(Gfk), оба пути Qx и Q2 являются fk-увеличивающими. Путь Рк был кратчайшим fk-увеличивающим путем, поэтому |?(Рк)| ^ |?(Qi)l и |?G\)I ^ |?(Q2)I- Следовательно, 2|E(Pfc)| < |E(Qa)| + \ЕШ\ < №)1 < \Е(Рк)\ + |E(Pfc+1)|, а значит, |E(Pfc)|<|E(Pfc+1)|. Докажем п. (б). С учетом п. (а) достаточно доказать утверждение для таких k, Z, что к < i < I и Р{ U Pz не содержит пары обратных ребер. Как и ранее, рассмотрим орграф G1? получающийся из Рк и Рх удалением всех пар обратных ребер. Мы снова утверждаем, что всякий простой подграф графа G2 является подграфом для Gfk. Действительно, заметим, что Е(Рк) C?(G/jt), Е(Рг) с E(Gfi) и любое ребро из E(Gfi) \E(Gfk) служит обратным к ребру в одном из путей Рк, Рк+1,..., Рг_г. Однако согласно выбору к и I среди этих путей лишь Рк содержит ребро, обратное к ребру из Pz. Пусть граф Нг снова состоит из двух копий ребра {t,s). Поскольку граф Gx + Нг эйлеров, по утверждению 8.12 найдутся два реберно непересекающихся s-t-пути Q1 и Q2. Как и ранее, Q1 и Q2 оба являются fk-увеличивающими. Граф Рк был кратчайшим среди /^увеличивающих путей, поэтому |E(Pfc)| < |E(Qi)l и |E(PJ| < |E(Q2)|. Заключаем, что 2|E(Pfc)| < IBCQJI + |E(Q2)| < |E(Pfc)| + |E(PZ)| - 2 (поскольку мы удалили хотя бы два ребра). На этом доказательство завершено. ? Теорема 8.14 (Эдмондс и Карп [26]). При любых пропускных способностях ребер алгоритм Эдмондса—Карпа совершает не более тп/2 увеличений, где тип — число ребер и вершин соответственно. Доказательство. Пусть Ръ Р2,... — увеличивающие пути, выбираемые алгоритмом Эдмондса — Карпа. Учитывая выбор значения у на шаге (3), заключаем, что каждый увеличивающий путь содержит хотя бы одно критическое ребро. Для произвольного ребра е рассмотрим подпоследовательность Pt ,Pt ,..., состояющую из увеличивающих путей, содержащих е в качестве критического ребра. Очевидно, между увеличениями вдоль путей Pt и Р1+1 должно произойти хотя бы одно увеличение вдоль пути Pk (i, <к< iJ+1), содержащего е\ По лемме 8.13(6) имеем |E(i* )| + 4 < |?(Pfc)| + 2 < 1^№.+1)1 для всех ;. Если ни 5, ни t не являются концом ребра е, то 3 < |E(Pi)| < п — 1 для всех j, так что может быть не более п/4 увеличивающих путей, содержащих е в качестве критического ребра. В противном случае не более одного увеличивающего пути может содержать е или е" в качестве критического ребра.
§ 8.4. Алгоритмы Диница, Карзанова и Фуджисиге 209 Поскольку всякий увеличивающий путь, использованный алгоритмом, содержит хотя бы одно ребро из G в качестве критического, всего может быть не более |Е( G )| • - = -у увеличивающих путей. ? Следствие 8.15. Алгоритм Эдмондса—Карпа решает задачу о максимальном потоке за время 0(т2п). Доказательство. По теореме 8.14 всего производится не более тп/2 шагов увеличения. Каждый такой шаг использует процедуру BFS и потому занимает 0(т) единиц времени. ? § 8.4. Алгоритмы Диница, Карзанова и Фуджисиге Примерно в то же время, когда Эдмондс и Карп нашли полиномиальный алгоритм для задачи о максимальном потоке, Диниц [24] независимо предложил еще более быстрый алгоритм. В его основе лежит следующее определение. Определение 8.16. Пусть заданы сеть (G, и, s, t) и s-t-поток /.Послойный граф Gh для Gf представляет собой орграф (V(G), {e = (x,y)€E(G/): distG/(s, лг) + 1 = distG/(s,y)}). Заметим, что послойный граф ацикличен. Данный граф может быть легко построен с помощью алгоритма BFS за время 0(т). При этом s-t-пути в Gf будут в точности кратчайшими s-t-путями в Gf. Лемма 8.13(a) утверждает, что длина кратчайшего увеличивающего пути в алгоритме Эдмондса — Карпа не уменьшается. Назовем последовательность применяемых увеличивающих путей одной и той же длины фазой алгоритма. Пусть / — поток в начале фазы. Доказательство леммы 8.13(6) показывает, что все пути, использованные в данной фазе, должны быть увеличивающими путями в Gf. Следовательно, все эти пути должны быть s-t-путями в послойном графе Gf. Все увеличения, производимые алгоритмом в течение одной фазы, могут рассматриваться как блокирующий поток в сети Gf. Определение 8.17. Для заданной сети (G, u, s, t) назовем s-t-поток / блокирующим, если граф (V(G), {е е E(G): /(e) < и(е)}) не содержит s-t-пути. Отметим, что блокирующий поток в общем случае не обязан быть максимальным. Эти наблюдения мотивируют следующий вид алгоритма. Dink's Algorithm (алгоритм Диница) Вход: сеть (G, u, s, t). Выход: максимальный по величине s-t-поток /. (Т) Присвоить /(e) := 0 для всех е Е E(G). © Построить послойный граф Gh для Gf.
210 Глава 8. Потоки в сетях (3) Найти блокирующий s-t-поток /' в (G^, uf). If /' = 0 then stop. (4) Увеличить / с помощью /' goto (2). Увеличение / с помощью /' конечно же, означает увеличение значений /(e) на f'(e) для всех е € E(G^) П E(G) и уменьшение /(e) на /'(Ю Для всех таких eeE(G), что е e?(G?). Теорема 8.18 (Диниц [24]). Алгоритм Диница корректен и завершает работу не более чем за л фаз. Доказательство. Если алгоритм завершил работу, то в графе G\ нет s-t-пути, и, значит, такового нет и в Gf. Осталось доказать, что длина кратчайшего увеличивающего пути (которая должна быть одним из чисел 1,2, ...,п — 1,оо) строго увеличивается с каждой новой фазой. Рассмотрим поток / в начале некоторой итерации, и пусть / — поток, получающийся из / увеличением на шаге (4). Заметим, что distG (5, у) < distG (s, х) для всех ребер е = (х, у) е Gf \ Gh, а также для ребер (х,у), обратных к ребрам G^. При этом distG (s,y) = distG (s,x) + 1 для всех ребер е = (х, у) е E(G^). Поскольку всякий увеличивающий относительно / путь содержит лишь ребра из E{Gf) U {е": е е E(G^)}, а также хотя бы одно ребро, не лежащее в G^, данный путь должен иметь длину более distG (s, t). П Отметим, что шаг (2) (на котором используется процедура BFS) и шаг 0 могут быть выполнены за линейное время. Осталось показать, как эффективно искать блокирующий поток в ациклическом графе. Диниц получил для этой подзадачи оценку 0(пт) (этот несложный результат описан в упражнении 19). Сейчас мы опишем более быстрый алгоритм, принадлежащий Карзанову. Он базируется на следующем важном определении. Определение 8.19 (Карзанов [52]). Пусть задана сеть (G, и, s, t). Тогда s-t-nped- поток — это функция /: E(G) —> R+, удовлетворяющая условиям /(e) < и(е) для всех е G E(G) и ех/(у) > 0 для всех v е V(G) \ {s}. Вершина и е V(G) \ {s, t} называется активной, если exf(v) > 0. Очевидно, s-t-предпоток является 5-Г-потоком, если и только если активные вершины отсутствуют. Это простое наблюдение также понадобится нам в следующем параграфе. Теорема 8.20 (Карзанов [52]). Пусть граф G ациклический. Тогда блокирующий поток в сети (G, и, s, t) может быть найден за время 0{п2), где п = |V(G)|. Доказательство. Построим вначале для данного графа топологический порядок V(G) = {v1}v2,...,vn} (см. теорему 2.20). Для каждой вершины v, кроме 5 и t, алгоритм будет поддерживать список выходящих из нее ребер и стек (изначально пустой), элементами которого являются пары из 5~(v) х R+. Исходно все вершины помечены как незамороженные. В процессе работы алгоритм также поддерживает s-t-предпоток /. Положим исходно /(e) := и{е) для каждого ребра е = (5, v) е 5+(s) и положим пару (е, и(е))
§ 8.4. Алгоритмы Диница, Карзанова и Фуджисиге 211 на стек для v. Для всех остальных ребер е исходно присвоим /(e) := 0. Будем повторять следующие два типа шагов, до тех пор пока в сети не исчезнут все активные вершины. Шаг проталкивания просматривает вершины в топологическом порядке. Пока вершина и активна и существует ребро е = (и, ш), для которого /(e) < и(е), где вершина w не является замороженной, мы увеличиваем /(e) на 5 := min{u(e) —/(e), exf(u)} и помещаем (е, 5) на стек вершины ш. Шаг балансировки обрабатывает активную вершину ut для максимального i. Удалим верхнюю пару (е, 5) (т. е. пару, которая была добавлена последней) со стека вершины vt и уменьшим /(e) на 5' := min{5, ехД^)}. Если вершина vi все еще активна, продолжим работу со следующей парой, лежащей на стеке. В конце вершина ut объявляется замороженной. Если к вершине vt применяется операция балансировки, то в тот момент все такие вершины vjy что j > i, не активны, так что потоки по входящим в них ребрам не будут далее уменьшаться. Это следует из того, что поток по ребрам уменьшается при балансировке в соответствии с содержимым стека, а именно — вначале на ребрах, по которым поток был увеличен в последнюю очередь. Следовательно, вершина vt больше никогда не станет активной. Таким образом, каждая вершина подвергается балансировке не более одного раза, и число итераций при этом не превосходит п. Каждый шаг проталкивания требует времени 0(п + р), где р — число ребер, по которым произошло насыщающее проталкивание. Заметим, что насыщенное ребро далее не рассматривается шагом проталкивания. Значит, общее время всех проталкиваний составляет 0(п2 + т), и столько же времени уходит на все балансировки. После каждого шага проталкивания вершина t остается не достижимой из 5 или любой активной вершины в графе (V(G), {е е E(G): /(e) < н(е)}). Следовательно, по окончании работы алгоритма / образует блокирующий поток. ? Приведем также альтернативное доказательство, которое предложили Мал- хотра, Кумар и Махешвари [56]. Второе доказательство теоремы 8.20. Построим вначале топологический порядок для графа G (см. теорему 2.20). Для вершины v € V(G) обозначим через G^v и G>v подграфы, индуцированные всеми вершинами вплоть до у и от и и далее соответственно. Изначально имеем /(e) = 0 для всех е е E(G). Положим а:=тт{пш{иД5"^ и пусть v — вершина, в которой этот минимум достигается. Найдем u-t-поток g величины а в G>v (если только не окажется, что и = t). Для этого просмотрим вершины в топологическом порядке. Для каждой такой вершины ш, что w = v или все ее предшественники уже были обработаны, положим 13 := а в случае w = v и /3 := g(5^(u;)) иначе. Также обозначим 5q{w) = {еъ..., ек} и положим g(e;) ^пипЦ^), ft -?f=i gfo)} для ; = 1,..., fc.
212 Глава 8. Потоки в сетях Аналогично найдем s-u-поток gf величины а в графе G<v (кроме случая v = s), для чего просмотрим вершины в порядке, обратном топологическому. Присвоим /(e) :=/(е) +g(e) +g'(e) для всех е eE(G). Если у е {5, t}, то остановимся; / будет блокирующим потоком. Если же v $ {s, t}, то удалим вершину v и инцидентные ей ребра и продолжим итерации. Этот алгоритм завершает работу не более чем за п — 1 итераций. Его корректность очевидна. При подходящей реализации он просматривает каждую дугу не более одного раза, до того как она будет насыщена. В каждой итерации достаточно просмотреть п—2 ребра (по одному в каждой вершине) в дополнение к тем, которые стали насыщенными на текущей итерации. Если поддерживать в процессе работы значения щ{5^[у)) и uf{5^{u)), то для нахождения а и и на каждой итерации понадобится время 0(h). Общее время работы алгоритма будет равно О (т + п2). ? Следствие 8.21. Для задачи о максимальном потоке существует алгоритм, время работы которого составляет 0(п3). Доказательство. Достаточно воспользоваться алгоритмом из теоремы 8.20, для того чтобы выполнять шаги (3) в алгоритме Диница. ? Дальнейшие улучшения были получены Черкасским [19], Галилом [35], Гали- лом и Наамадом [36], Шилоахом [64], Слитором [67], а также Слитором и Тарджа- ном [68]. В двух последних работах описан алгоритм со сложностью 0(т logn), находящий блокирующий поток в ациклической сети с помощью структуры данных, называемой динамическим деревом (dynamic tree). При использовании этого метода в качестве подпрограммы в алгоритме Диница получаем алгоритм для задачи о максимальном потоке с оценкой O(mnlogn). Однако мы не станем здесь приводить ни одного из этих алгоритмов (см. работу Тарджана [13]), поскольку в следующем параграфе будет описан еще более быстрый метод. Мы завершим данный параграф описанием слабополиномиального алгоритма, предложенного Фуджисиге [32] и интересного в первую очередь своей простотой. Fujishige's Algorithm (алгоритм Фуджисиге) Вход: Выход: сеть (G, и, 5, t) с пропускными способностями ребер и максимальный по величине s-t-поток /. Е(Р) ->Z+. (Т) Присвоить /(e) := 0 для всех е е E(G). Присвоить а := max{u(e): е е E(G)}. (2) Присвоить i := 1, щ := s, X := 0 и Ь(у) := 0 для всех и € V(G). (3) For таких ребер е = (vi9 w) е 5J (ut)9 что w ? {иъ..., vt}, do: Присвоить b(w) := Ь(ш) + uf(e). If b(w) > a then присвоить X :=XU {w}. 0 If X = 0 then: Присвоить a := [a/2\. If a = 0 then stop else goto (2).
§ 8.4. Алгоритмы Диница, Карзанова и Фуджисиге 213 (5) Присвоить i := i + 1. Выбрать вершину vt е X и присвоить X := Х\ {i/J. If ц ^ t then goto (3). (6) Присвоить /3(t) := а и ]8(i;) := 0 для всех и e V(G) \{t}. While i > 1 do: For таких ребер e = (p, i^) e 5~ (i/^), что p e {i^,..., i^}, do: Присвоить /3' := min{j8(i7i), uf{e)}. Дополнить / вдоль e на величину /3'. Присвоить p(vt) := jBfa) - j8' и j8(p) := /?(p) + j8'. Присвоить i := i — 1. (7) Goto (2). Теорема 8.22. Алгоритм Фуджисиге корректно решает задачу о максимальном потоке для простых орграфов G и целых пропускных способностей и: E(G) —> Z+ за вредил 0(mn logumax), где п := |V(G)|, т := \E(G)\, umax := max{a(e): е е E(G)}. Доказательство. Назовем итерацией последовательность шагов, завершающуюся шагом 0 или (7). На шагах (2)-(5) для последовательности вершин иъ.,.,и{ всегда справедливо неравенство b(uj) = Uf{E+({vl9..., vHl}9 {vj})) >а при ; = 2,...,i. На шаге (6) поток / увеличится, при этом сохраняется инвариант J] vGv(g) P(v) = a> а значит, в результате получается s-t-поток с величиной на а единиц больше. Таким образом, после не более чем п — 1 итераций произойдет первое уменьшение значения а. Когда на шаге 0 мы уменьшим а до а' = [ ^ J > ^, то получим s-t-разрез 5+ ({i^,..., i>J) bG^ пропускной способностью менее a(|V(G)| — i) (поскольку b(v) = Uf{JE+{{vl9..., ut}, {v})) < a для всех и € V(G)\{vlf..., vt}). По лемме 8.3(6) максимальный 5-Г-поток в Gf имеет величину, меньшую а(п — i)< < За'п. Следовательно, после менее чем Ъп итераций значение а будет снова уменьшено. Когда а уменьшится с 1 до 0, мы получим s-t-разрез нулевой пропускной способности в Gf, и, значит, поток / окажется максимальным. До достижения нулевого значения а уменьшается не более 1 + log umax раз, а каждая итерация отнимает время 0(т), поэтому общее время работы алгоритма составляет О (тп log umax). ? Описанный метод масштабирования оказывается полезным во многих случаях и еще встретится нам в гл. 9. Фуджисиге [32] также описал вариант алгоритма, в котором не используется масштабирование и на шаге (5) в качестве и( выбирается вершина, для которой достигается оптимум maxtbO^yeVtG)^!,...,^}}. Получающийся в этом случае порядок вершин называется МС-порядком и встретится далее в § 8.7. Время работы этого варианта алгоритма оказывается чуть большим, при этом он также не является сильно полиномиальным (Шиура [66]). См. упражнение 24.
214 Глава 8. Потоки в сетях § 8.5. Алгоритм Гольдберга — Тарджана В этом параграфе мы опишем так называемый алгоритм проталкивания-переоценки, предложенный Гольдбергом и Тарджаном [39]. Для его времени работы мы получим оценку 0(п2у/т). Более сложные реализации, в которых используются динамические деревья (Слитор и Тарджан [68]), приводят к потоковым алгоритмам со сложностью О \пт log — J (Гольдберг и Тарджан [39]), а также О \пт log (—^/log umax + 2 J J, где umax — максимум пропускных способностей, которые предполагаются целыми (Ахуджа, Орлин и Тарджан [15]). Наилучшими известными на сегодняшний день оценками являются 0(nmlog2+m/(jl\ogn^n) (Кинг, Рао и Тарджан [53]) и 0(min{m1/2,n2/3}mlog(n2/m)logumax) (Гольдберг и Рао [38]). По определению и теореме 8.5 поток / является максимальным s-t-потоком, если и только если выполнены следующие условия: • exf(v) = 0 для всех и е V(G) \ {s, t}; • не существует /-увеличивающего пути. В обсуждавшихся до сих пор алгоритмах первое условие было выполнено постоянно, а работа завершалась, когда оказывалось выполненным второе условие. Алгоритм Push-Relabel начинает с функции /, удовлетворяющей второму условию, и затем поддерживает его постоянно. Данный алгоритм останавливается, когда выполненным оказывается также и первое условие. Здесь / не будет образовывать s-t-поток в процессе работы алгоритма (кроме как в момент его окончания), а будет s-t-предпотоком (см. определение 8.19). Определение 8.23. Пусть заданы сеть (G, и, s, t) и s-t-предпоток /. Пометки расстояний задаются функцией гр: V{G) —> Z+, удовлетворяющей условиям гр (t) = О, гр(s)=n:=\V(G)\n\p(v) <гр(и>)+1 для всех [v, w) eE(Gf). Ребро е = (v, w)^e(g) называется допустимым., если е е E{Gf) и гр(и) = гр{т) + 1. Если через гр обозначены пометки расстояний, то значение гр(и) (при и ф s) должно быть нижней оценкой на расстояние до t (выраженное числом ребер в кратчайшем y-t-пути) в графе Gf. Алгоритм Push-Relabel, описываемый далее, поддерживает в процессе своей работы s-t-предпоток / и пометки расстояний гр. Он начинает с предпотока, который совпадает с пропускными способностями на ребрах, выходящих из s, и равен нулю на всех остальных. Начальные пометки расстояний выбираются так: i/j(s) = п и гр(у) — 0 для всех вершин v € V(G) \ {s}. Затем алгоритм выполняет операции push (изменяющие /) и relabel (изменяющие гр) в произвольном порядке. Push-Relabel (алгоритм проталкивания-переоценки) Вход: сеть (G, и, s, t). Выход: максимальный по величине s-t-поток /.
§ 8.5. Алгоритм Гольдберга — Тарджана 215 (Т) Присвоить /(e) := и(е) для всех е е 5+(s). Присвоить /(e) := 0 для всех е е E(G) \ 5+(s). (2) Присвоить i/j(s) := п := |V(G)| и я/>(ьО := 0 для всех и е V(G)\{s}. (3) While есть хотя бы одна активная вершина do: Пусть v — активная вершина. If ни одно из ребер е е 5J (и) не является допустимым then relabel(u), else пусть е е 5J (у) —допустимое ребро, push(e). push(e) (1) Присвоить у := minfeXf(у), И/(е)}, где v — начало ребра е. (2) Дополнить / вдоль е на величину у. relabel(y) (I) Присвоить i/j(i>) := min{il)(w) + 1: (и, ш) е б J (у)}. Утверждение 8.24. Во время выполнения алгоритма Push-Relabel функция / остается s-t-предпотоком, а гр остаются пометками расстояний относительно /. Для любой вершины v € V(G) значение гр(и) строго увеличивается при каждом вызове relabel (и). Доказательство. Необходимо показать, что процедуры push и relabel сохраняют указанные свойства. Ясно, что после выполнения операции push функция / остается s-t-предпотоком. Операция relabel вовсе не меняет / Если происходит вызов relabel (и) и до его начала гр являются пометками расстояний, то число гр(и) строго увеличивается (поскольку ни одно из ребер е € 5? (v) не допустимо). При этом значения гр остаются корректными пометками расстояний. Покажем наконец, что после операции push пометки расстояний гр являются корректными относительного нового предпотока. Для этого необходимо проверить неравенство гр(а) < грф) +1 для всех новых ребер (а, Ь) в Gf. Пусть произошел вызов push (е) для некоторого ребра е = {v, w). Тогда единственным новым ребром в Gf будет ребро, обратное к е, а для него мы имеем гр(ш) = гр(и) — 1, поскольку е допустимо. ? Лемма 8.25. Пусть / — s-t-предпоток, агр — пометки расстояний относительно /. Тогда (а) сток s достижим из любой активной вершины и в Gf; (б) если вершина w достижима из v в Gf для некоторых v, w € V(G), то гр(и) <гр(ш) + п-1; (в) сток t не достижим из источника s в Gf.
216 Глава 8. Потоки в сетях Доказательство. Докажем утверждение (а). Пусть и — произвольная активная вершина. Обозначим через R множество вершин, достижимых из v в Gf. Тогда /(e) = 0 для всех е е 5^(R). Таким образом, 2 еХ/(ш) = J /М - Е /W < °- weR ee5-(R) e<=5+{R) Однако вершина и активна, значит, exf(v) > О, и, следовательно, должна существовать вершина w е R, для которой ехДш) < 0. Поскольку / образует s-t-пред- поток, этой вершиной должен быть источник s. Докажем утверждение (б). Предположим, что существует v-w-путь в Gf, скажем, состоящий из вершин и = и0, иъ..., ик = ш. Поскольку гр являются пометками расстояний относительно /, мы имеем гр(vt) < ip (vi+i) +1 для i = 0,..., к—1. Значит, гр(и) < ip(w) + fc. Отметим также, что к < п — 1. Утверждение (в) следует из п. (б), поскольку i/j(s) = п и я^(0 = 0. ? Используя свойство (в), мы можем доказать следующий факт. Теорема 8.26. По окончании работы алгоритма f представляет собой максимальный s-t-поток. Доказательство. Функция / задает s-t-поток, поскольку в конце работы алгоритма активные вершины отсутствуют. Из леммы 8.25(b) следует, что /-увеличивающих путей нет. Тогда по теореме 8.5 поток / максимален. ? Остается вопрос о том, как много вызовов push и relabel производит алгоритм. Лемма 8.27. 1. Для любой вершины и е V(G) значение ip(y) не уменьшается и в любой момент работы алгоритма удовлетворяет условию гр (и) < 2п — 1. 2. Оценка расстояния для любой вершины меняется не более 2п — 1 раз. Общее увеличение суммы Xyev(G) V4y) за времяработы алгоритма не превосходит 2п2-п. Доказательство. Вспомним (см. утверждение 8.24), что значение гр(и) строго увеличивается с каждым вызовом процедуры relabel(y). Более того, гр(и) изменяется лишь при вызове relabel(z;), когда вершина v активна. По лемме 8.25(a) и (б) имеем гр (v) < гр (s) + п—1 = 2п—1. Отсюда вытекают утверждения 1 и 2. ? Исследуем теперь вопрос о числе операций push. Будем различать насыщающие проталкивания (те, после выполнения которых справедливо равенство uf[e) = 0) и ненасыщающие проталкивания. Как обычно, мы полагаем m := \E(G)\ (ип:=|У(С)|). Лемма 8.28. Число насыщающих проталкиваний не превосходит 2тп. Доказательство. После каждого насыщающего проталкивания из вершины и в вершину w следующее подобное проталкивание не может произойти, до тех пор пока значение ip{w) не увеличится по крайней мере на 2, не будет выполнено обратное проталкивание из w в и и, наконец, значение ip(v) не увеличится
§ 8.5. Алгоритм Гольдберга — Тарджана 217 хотя бы на 2. С учетом леммы 8.27(1) отсюда следует, что по каждому ребру [v, w) G ? (G ) может происходить не более п насыщающих проталкиваний. ? Число ненасыщающих проталкиваний в общем случае может достигать п2т (упражнение 25). Если всякий раз на шаге (3) выбирать активную вершину и с максимальной оценкой гр{и), то можно получить лучшую оценку. Можно считать, что п<:т<:П2. Лемма 8.29. Если на шаге (5) алгоритма Push-Relabel всякий раз выбирать в качестве и активную вершину с максимальной оценкой гр{и), то число насыщающих проталкиваний будет не более 8п2у/т. Доказательство. Рассмотрим величину^* :=тах{гр(у): v active} и назовем фазой промежуток времени между последовательными ее изменениями. Поскольку гр* увеличивается лишь при переоценках, ее общее увеличение не превосходит 2п2. Изначально гр* = 0, поэтому данная величина уменьшается не более 2п2 раз, а число фаз алгоритма меньше 4п2. Назовем фазу дешевой, если на ее протяжении произошло не более у/т ненасыщающих проталкиваний, и дорогой в противном случае. Очевидно, за время всех дешевых фаз происходит не более 4п2у/т ненасыщающих проталкиваний. Обозначим Ф:= J] \{weV(G):rl>{w)<rl>(v)}\. veV(G) : v активна Вначале Ф < п2. Шаг переоценки может увеличить Ф не более чем на п. Насыщающее проталкивание может увеличить Ф не более чем на п. Ненасыщающее проталкивание не увеличивает Ф. Поскольку в конце работы алгоритма справедливо равенство Ф = 0, общее уменьшение величины Ф не превосходит п2 + п(2п2 - п) + n(2mn) < 4mn2. Рассмотрим теперь ненасыщающие проталкивания, произошедшие во время дорогой фазы. Каждое из них проталкивает поток по такому ребру (у, w), что гр(и) = гр* = гр[ш) +1. При этом вершина и перестает быть активной, а вершина w может стать активной. Поскольку фаза заканчивается либо исчезновением последней активной вершины v, удовлетворяющей условию гр(и) = гр*, либо выполнением переоценки, множество вершин w, для которых гр(ш) = гр*, остается неизменным на протяжении фазы. Поскольку фаза является дорогой, это множество содержит более у/т вершин. Тогда каждое ненасыщающее проталкивание во время дорогой фазы уменьшает Ф хотя бы на у/т. Таким образом, общее число ненасыщающих проталкиваний на дорогих фазах не превосходит 4тп2/ у/т = An2 у/т. ? Это доказательство было предложено Черияном и Мельхорном [18]. Окончательно получаем следующий результат. Теорема 8.30 (Гольдберг и Тарджан [39], Чериян и Махешвари [17], Тунчел [73]). Алгоритм Push-Relabel корректно решает задачу о максимальном потоке, и при подходящей реализации время его работы составляет 0(п2у/т).
218 Глава 8. Потоки в сетях Доказательство. Корректность следует из теоремы 8.26. Будем, как указано в лемме 8.29, выбирать всякий раз на шаге (3) в качестве v активную вершину с максимальным значением гр(и). Для того чтобы делать это быстро, станем поддерживать двусвязные списки L0, ...,L2n_i, где L{ содержит все активные вершины v с оценкой гр(и) = i. Во время операций push и relabel эти списки можно обновлять за константное время. Вначале станем просматривать список Lt для i = 0. Когда для вершины выполняется переоценка, увеличиваем при необходимости значение L Когда список Lt для текущего значения i отказывается пустым (после того как последняя активная вершина на этом уровне оказывается обработанной), мы начинаем уменьшать i, пока не найдем непустой список Lt. По лемме 8.27(2) значение i увеличивается не более 2п2 раз, поэтому i также уменьшается не более 2п2 раз. В качестве дополнительной структуры данных мы также поддерживаем для каждой вершины и двусвязный список Av, состоящий из допустимых ребер, выходящих из v. Эти списки обновляются при каждой операции push за константное время, а на выполнение операции relabel (и) уходит дополнительно время, пропорциональное общему числу ребер, инцидентных v. Итак, вызов процедуры relabel(u) требует времени 0(\5G(v)\), и по лемме 8.27(2) общее время, затрачиваемое на переоценку, составляет 0{тп). Каждый вызов процедуры push занимает константное время, и по леммам 8.28 и 8.29 общее число проталкиваний равно 0{п2</т). П §8.6. Деревья Гомори—Ху Любой алгоритм, решающий задачу о максимальном потоке, также подходит для решения следующей задачи о минимальном разрезе. Min Cut (задача о минимальном разрезе) Дано: сеть (G, и, s, t). Надо: найти s-t-разрез в G минимальной пропускной способности. Утверждение 8.31. Задача о минимальном разрезе может быть решена за то же время, что и задача о максимальном потоке, в частности за время 0(п2у/т). Доказательство. Для заданной сети (G, и, s, t) найдем максимальный s-t-no- ток /. Рассмотрим множество X, состоящее из всех вершин, достижимых из 5 в Gf. Множество X может быть построено с помощью обхода графа за линейное время (утверждение 2.17). По лемме 8.3 и теореме 8.5 множество 5^{Х) образует s-t-разрез минимальной пропускной способности. Оценка 0(п2у/т) для времени работы алгоритма следует из теоремы 8.30 (она, конечно, не является наилучшей возможной). ? В этом параграфе мы рассмотрим задачу нахождения минимальной пропускной способности s-t-разрезов для всех пар вершин s,t в неориентированном графе G с пропускными способностями ребер и: E(G) —> М+.
§ 8.6. Деревья Гомори—Ху 219 Эта новая задача легко сводится к старой. Нужно решить задачу о максимальном потоке для всех пар s, t е V (G) в сети (G' и', s, t), где (G\ и') получается из (G, и) заменой каждого неориентированного ребра {v, w} на пару ориентированных ребер (и, w), (w, i>), для которых пропускные способности определяются как и'((у, w)) = u'((w, и)) = u({v, w}). Таким образом, мы найдем минимальные s-t-разрезы для всех s, t, выполнив (" J вычислений максимального потока. В настоящем параграфе мы изложим элегантный метод, принадлежащий Гомори и Ху [40], который требует лишь п — 1 вычислений максимального потока. Некоторые приложения этого подхода будут описаны в § 12.3 и § 20.3. Определение 8.32. Пусть G — неориентированный граф с пропускными способностями ребер и: E(G) —> R+. Для пары вершин s, t е V (G) обозначим через Ast их локальную реберную связность, т. е. минимальную пропускную способность разреза, отделяющего s и t. Значение реберной связности графа, очевидно, совпадает с минимальной локальной реберной связностью в нем, вычисленной относительно единичных пропускных способностей. Лемма 8.33. Для всех вершин i, j, k €. V (G) выполняется неравенство Xik>min{Xij,Xjk}. Доказательство. Пусть 5(A) —такой разрез, что ieA, fceV(G) \ А и u(5(A))=Aifc. Если ; е А, то 5(A) разделяет j и fc, так что и(5(А)) > \jk. Если ; е У (G) \ А, то 5(A) разделяет i и ;, следовательно, и(5(А)) > Ау. Во всех случаях Aifc = u(6(A)) ^ ^minfA^AyJ. ? В действительности это условие является не только необходимым, но и достаточным для того, чтобы числа (Л>у)г<1 ;<п, удовлетворяющие условию Xtj = А^, задавали локальную реберную связность для некоторого графа (упражнение 31). Определение 8.34. Рассмотрим неориентированный граф G и функцию пропускных способностей и: E(G) —> R+. Дерево Г называется деревом Гомори—Ху для (G, и), если V(T) = V(G) и Ast = min u(5G(Ce)) для всех 5,t€ V(G), eeE(Pst) где Pst — (единственный) s-t-путь в Г и для ребра е е Е(Г) через Се и V(G) \Се обозначены связные компоненты графа Т — е (иными словами, 5G(Ce) представляет собой фундаментальный разрез для е относительно Г). Далее мы увидим, что для каждого неориентированного графа существует дерево Гомори — Ху. Отсюда следует, что в любом неориентированном графе G существует такой список из п—1 разрезов, что для любой пары вершин s, t€ V(G) минимальный s-t-разрез присутствует в этом списке. Это утверждение оказывается неверным для орграфов: Елинек и Маеда [46] построили для любого п е N такой орграф Gen вершинами и пропускными способностями ребер и: E(G)->R+, что множество {min{u(5+(X)): s<EXcy(G)\{t}}: s,teV(G), s^t} содержит (n + 2)(n —1)/2 различных значений.
220 Глава 8. Потоки в сетях В общем случае в качестве дерева Гомори—Ху нельзя взять подграф графа G. Например, пусть G = К33 и и = 1. Тогда Ast = 3 для всехs,t? V(G). Легко видеть, что деревья Гомори—Ху для (G, и) представляют собой звезды, содержащие пять ребер. Основная идея, лежащая в основе алгоритма построения дерева Гомори — Ху, такова. Выберем вначале произвольную пару вершин s,te V(G) и построим некоторый минимальный s-t-разрез, скажем 5(Л). Положим В := V(G)\A. Стянем теперь подмножество А (или В) в одну вершину, выберем произвольные s', t' еВ (или s' t' е А соответственно) и найдем минимальный s'-t'-разрез в стянутом графе G'. Будем продолжать этот процесс, всякий раз выбирая пару вершин s\ t', еще не разделенную ни одним из уже построенных разрезов. На каждом шаге будем стягивать (для каждого разреза Е(А',В'), полученного к текущему моменту) подмножество А' или В' в зависимости от того, какая из этих частей не содержит ни s\ ни t'. В конечном итоге каждая пара вершин окажется разделенной. Всего при этом будет построено п — 1 разрезов. Ключевым является наблюдение, что минимальный s'-t'-разрез в стянутом графе G' также служит минимальным s'-t'-раз- резом в графе G. Это утверждение будет доказано ниже. Отметим, что после стягивания подмножества А вершин в (G, и) пропускная способность ребер в G' совпадает с пропускной способностью соответствующих ребер в G. Лемма 8.35. Пусть G — неориентированный граф с пропускными способностями v: E(G) —> R+. Рассмотрим пару s, t е V(G), и пусть 5(A)—минимальный s-t-разрез в (G, и). Пусть теперь s' t' е V(G) \А, a (G' v') получается из (G, v) стягиванием подмножества А в одну вершину. Тогда для любого минимального s'-t'-разреза 5 (К U {А}) в (G', и') множество 5 (К U Л) образует минимальный s'-t'-разрез в (G, и). Доказательство. Рассмотрим значения s, t, A, s', t' G' v\ выбранные, как указано выше. Без ограничения общности будем считать, что 5 е А. Достаточно доказать, что существует минимальный s'-t'-разрез 5(Л7) в (G, и), для которого А с А'. Пусть 5(C) — произвольный минимальный s'-t'-разрез в (G, и). Снова без ограничения общности предполагаем, что sgC. Функция у (5(-)) субмодулярна (см. лемму 2.1(c)), поэтому v(5(A))+v(5(C))>v(5(ADC))+v(5(AuC)). Но 5 (АП С) представляет собой s-t-разрез, так что и(5(АГ\С)) > Xst = и(5(А)). Следова- ^ тельно, и (5 (А и С)) < и (5 (С)) = Asy, а значит, 5 (A U С) является минимальным s'-t'-разре- зом; см. рис. 8.3. ? Опишем теперь алгоритм, строящий дерево Гомори — Ху. Вершинами промежуточ- Рис. 8.3 ных деревьев Г, возникающих в процессе его A V(G)\A
§8.6. Деревья Гомори—Ху 221 работы, будут подмножества вершин исходного графа. Эти подмножества образуют разбиение V(G). Вначале в Т присутствует лишь одна вершина, а именно V(G). На каждой итерации алгоритм выбирает вершину-подмножество в Г, содержащее хотя бы две вершины графа G. Данная вершина дерева Г разделяется на две. Gomory—Ни Algorithm (алгоритм Гомори—Ху) Вход: неориентированный граф G с пропускными способностями ребер u:?(G)-*R+. Вьисод: дерево Гомори—Ху Т для (G, и). ® Присвоить У(Г) := {V(G)} и Е(Г) := 0. (2) Выбрать такое подмножество X е. V(T), что |Х| > 2. If такого X нет then goto (6). (3) Выбрать вершины s,teX, s^t. For каждой связной компоненты С графа Т — X do: Обозначить Sc := (J У. YeV(C) Пусть (G7 и7) получается из (G, и) стягиванием Sc в одну вершину ис каждой связной компоненты С графа Т — Х. (В частности, V(G') =Xu{i;c:C — связная компонента графа Т — Х}.) (4) Найти минимальный s-t-разрез 5(А7) в (G7 и7). Пусть В7 := V(G7) \А'. Присвоить А := ( (J Sc) U (Л7 п X) и В := ( (J Sc) U (В7 П X). исеА'\Х uceB'\X (5) Присвоить V(T) := (У(Г) \ {X}) U {Л П X, В П X}. For каждого ребра е = {X, У} е Е (Г), инцидентного вершине X, do: If У с Л then присвоить е7 := {Л П X, У} else присвоить е7 := {В П X, У}. Присвоить Е(Т) := (Е(Г)\{е}) U {е7} и ш(е7) := ш(е). Присвоить Е(Т) := Е(Т) U {{А П X, В П X}}. Присвоить ш({АПХ,ВПХ}) :=и7(бс/(Л7)). Goto®. (6) Заменить все вершины {х} е. У (Г) на х. Заменить все ребра {{х}, {у}} е Е(Т) на {х,у}. Stop. Модификация дерева Г, выполняемая на шаге (5), показана на рис. 8.4. Для доказательства корректности алгоритма сформулируем вначале следующее вспомогательное утверждение. Лемма 8.36. Всякий раз в конце шага 0 выполняются следующие утверждения: (а) AUB = V(G); (б) Е(А, В) образует минимальный s-t-разрез в (G, и).
222 Глава 8. Потоки в сетях Рис. 8.4 Доказательство. На протяжении работы алгоритма Гомори—Ху элементами семейства V(T) служат непустые подмножества множества V(G). Более того, семейство У (Г) задает разбиение V(G). Отсюда сразу следует свойство (а). Докажем теперь свойство (б). На первой итерации данное утверждение тривиально (поскольку G' = G). Докажем, что оно сохраняется и на последующих итерациях. Пусть Съ ..., Ск — связные компоненты графа Т — X. Будем стягивать их одну за другой. Для i = О,..., к пусть (Gf, щ) получается из (G, и) путем стягивания каждого из подмножеств Sc ,..., Sc. в одну вершину. Таким образом, (Gfc, ик) представляет собой граф с пропускными способностями, обозначенный как (G' и') на шаге (3). Утверждение. Для любого минимального s-t-разреза 5{А{) в [G{, щ) множество 5(Л1_г) задает минимальный s-t-разрез в {С1{_ъ щ_г), где ._ J ^ ^ ^^ U Sct> если Vct е Ai> \ А{, если vc. $. А{.
§ 8.6. Деревья Гомори — Ху 223 Применяя это утверждение последовательно для fc, к — 1,..., 1, мы получим свойство (б). Для доказательства утверждения рассмотрим минимальный s-t-разрез 5{At) в (Gj, щ). Согласно предположению об истинности свойства (б) на предыдущих итерациях 5(SC.) является минимальным Si-tt-разрезом в (G, и) для некоторых Si, tt е V(G). Более того, s,t е V(G) \SC.. Для завершения доказательства достаточно применить лемму 8.35. ? Лемма 8.37. В любой момент работы алгоритма {до того как будет достигнут шаг (6)) для каждого ребра е G Е(Т) выполняется равенство w(e) = u[5G[\Jz)), ZeCe где Се и V(T)\Ce — связные компоненты графа Т — е. Более того, для любого ребра e = {P,Q} еЕ(Т) найдутся такие вершины р еР uqeQ, что Apq = w{e). Доказательство. Оба утверждения тривиальны в начале работы алгоритма, когда в Т нет ребер. Покажем, что истинность этих утверждений сохраняется и далее. Пусть X — вершина дерева Г, выбранная на шаге (2) на одной из итераций алгоритма. Рассмотрим значения 5, t, Af, В', А, В, определенные далее на шагах (3) и 0. Без ограничения общности будем считать, что sgA'. Ребра дерева Т, не инцидентные X, не затрагиваются шагом (5). Для нового ребра {АПХ, ВПХ} значение ш(е), очевидно, оказывается правильным. Таким образом, имеем Ast = ш(е), seAnX, teBDX. Рассмотрим теперь ребро е = {X, У), которое на шаге (5) заменяется на е'. Без ограничения общности предполагаем, что YC.A, так что е' = {АГ\ X, Y). Считая, что утверждения леммы были справедливы для е, докажем, что они остаются справедливыми для е'. Для первого из утверждений это очевидно, поскольку w{e) — ш(еО и значение u(5G( |JZ€C z)) не меняется. Рассмотрим второе из утверждений леммы. ^—^ Можно предполагать, что существуют такие вер- ( *я \ шины р еХ, qe Y, что Apq = w{e). Если pGAnX, I J то доказательство завершено, поэтому будем ^-^-^ далее считать, что р е В П X (см. рис. 8.5). Утверждается, что Asq=Apq. Поскольку Apq = = ш(е) = ш(е') и s е А П X, отсюда будет следовать доказываемое свойство. По лемме 8.33 имеем Asq > min{Ast, Аф, Apq}. Так как по лемме 8.36(6) множество Е{А,В) образует минимальный s-t-разрез и поскольку s,q € А, из леммы 8.35 следует, что значение Asq не меняется при стягивании В. С учетом рис 8 5 того, что t,p е. В, это значит, что добавление ребра {t,p} с произвольно большой пропускной способностью не меняет Xsq. Следовательно, Asq > min{Ast, Apq}. Заметим теперь, что Ast > Apq поскольку минимальный s-t-разрез Е(А, В) также разделяет р и q. Итак, имеем Asq > Apq.
224 Глава 8. Потоки в сетях Для доказательства равенства заметим, что ш(е) совпадает с пропускной способностью разреза, разделяющего X и Y, а значит, также 5 и q. Следовательно, Xsq<w(e) = Xpq. На этом доказательство завершено. ? Теорема 8.38 (Гомори и Ху [40]). Алгоритм Гомори—Ху корректен. Каждый неориентированный граф обладает деревом Гомори—Ху, причем такое дерево может быть найдено за время 0(п3у/1п). Доказательство. Время работы алгоритма Гомори—Ху, очевидно, доминиру- ется (п — 1)-кратным вычислением минимального s-t-разреза (все остальные действия можно выполнять за время 0(п3)). Отсюда с учетом утверждения 8.31 получаем оценку 0(п3,/т). Докажем, что дерево Г, построенное алгоритмом, действительно является деревом Гомори—Ху для (G, и). Очевидно, что для Г справедливо равенство V(Г)=V(G). Рассмотрим вершины 5, teV(G). Пусть Pst — (единственный) s-t-путь в Т. Для всякого ребра е еЕ(Т) пусть Се и V(G) \Се — связные компоненты графа Г-е. Поскольку 5(Се) служит s-t-разрезом для всех е € E(P5t), имеем Ast< min u(5(Ce)). e&E{Pst) С другой стороны, применяя несколько раз лемму 8.33, мы получаем Xst > min Xvw. {v,w}eE(Pst) Применим теперь лемму 8.37 в момент времени непосредственно перед выполнением шага (6) (где каждая из вершин X в дереве Г является сиглетоном). Получим Xst> min u(5(Ce)), eeE(Pst) откуда следует требуемое равенство. ? Похожий алгоритм для рассматриваемой задачи (возможно, несколько более удобный в реализации) был предложен Гасфилдом [41]. Для случая орграфов Чунг, Лау и Леунг [21] показали, как найти размеры минимальных s-t-разрезов для всех пар 5, t € V(G) за время 0(т2,38). § 8.7. Минимальные разрезы в неориентированных графах Предположим, что нас интересует минимальный разрез в неориентированном графе G с пропускными способностями ребер и: Е (G) —> R+. Такой разрез можно найти без участия дерева Гомори—Ху, вычислив п — 1 максимальных потоков. Нужно лишь построить минимальные s-t-разрезы для некоторой фиксированной вершины 5 и каждой вершины t е V(G) \{s}. Для этой задачи, однако, существуют намного более эффективные алгоритмы.
§ 8.7. Минимальные разрезы в неориентированных графах 225 Хао и Орлин [42] обнаружили алгоритм со сложностью 0(nmlog(n2/m)), вычисляющий минимальный разрез. В своей работе они использовали модифицированный вариант алгоритма Push-Relabel. Для случая, когда нас интересует лишь реберная связность графа (т. е. все пропускные способности равны единице), наиболее быстрый алгоритм на текущий момент принадлежит Габоу [33]. Время его работы составляет где A(G) — реберная связность (заметим, что 2т > Ап). Алгоритм Габоу основан на технике матроидных пересечений. Отметим, что задача о максимальном потоке для неориентированного графа с единичными пропускными способностями также может быть решена быстрее, чем в общем случае (Каргер и Левин [49]). Нагамочи и Ибараки [58] обнаружили совершенно иной алгоритм для вычисления минимального разреза в неориентированном графе, в котором вовсе не используются вычисления максимальных потоков. В данном параграфе мы приводим этот алгоритм в упрощенной форме, предложенной Штёром и Вагнером [70], а также независимо Франком [31]. Начнем со следующего определения. Определение 8.39. Пусть задан неориентированный граф G с пропускными способностями ребер и: Е(G) —»R+. Назовем перестановку vl9...,vn его вершин МС-порядком, если для всех i е {2,..., п} справедливо равенство J] и{е) = max J] u(e). e€E({i;lf...,i;i_1},{i;i}) 3*{l'""n]eeE{{v1,...,vi-1},{vJ}) (Здесь аббревиатура «MC» обозначает «максимальная связность»; по-английски этот порядок называется maximum adjacency order или сокращенно MA-order.) Утверждение 8.40. Для заданного неориентированного графа G с пропускными способностями ребер и: E(G) —> R+ его МС-порядок может быть найден за время 0(т+ п log п). Доказательство. Рассмотрим следующий алгоритм. Вначале положим a{v) := 0 для всех и е V(G). Затем для i := 1,..., п выполним следующие действия. Выберем вершину ut с максимальным значением а среди множества V(G) \ {иг,..., z;f_j} (в случае наличия более одного максимума разрешая неоднозначность произвольным образом). Положим а(у) := а{у) + /^ и{е) для всех и е У(С)\{иг, ...,vt}. eeE({i7,},{!/}) Корректность алгоритма очевидна. Если использовать при реализации фи- боначчиеву кучу и хранить в ней вершины и с ключами —a{v), то по теореме 6.7 мы получим время работы 0(т + п logn). Действительно, всего будет п операций insert, п операций deletemin и не более т операций decreasekey. ? Лемма 8.41 (Штёр и Вагнер [70], Франк [31]). Пусть G — неориентированный граф сп:= \V(G) \ > 2 вершинами, пропускными способностями ребер и: Е(G) —> R+
226 Глава 8. Потоки в сетях и МС-порядком иъ ..., ип. Тогда ее5(уп) Доказательство. Очевидно, достаточно лишь доказать неравенство «>». Применим индукцию по сумме |V(G)| + |E(G)|. При |V(G)| < 3 утверждение тривиально. Можно считать, что в графе нет ребра е = {vn_1} vn} е E(G), поскольку иначе его можно было бы удалить (при этом и левая, и правая части равенства уменьшатся ровно на и(е)) и применить индуктивное предположение. Обозначим значение выражения в правой части через R. Ясно, что Vi,...9 ип_г является МС-порядком для графа G — vn. Тогда по индуктивному предположению Указанное выше неравенство справедливо, поскольку иъ ..., ип служит МС-порядком для G. Последнее равенство верно, поскольку {ип_ъип} ф E(G). Итак, AG > Л°-и" > R. С другой стороны, vl9..., vn_2, vn представляет собой МС-порядок для G—ип_г. Тогда по индуктивному предположению eG?({un},{yi,-^n-2}) поскольку снова {ип_ъ ип} ф E(G). Итак, Я^ > ^^ГГ1 = R- Теперь по лемме 8.33 имеем Я„ v > minIA,, v ,XV v }> R. D r un-lun *¦ un-lvn-2J vn-2vnJ Отметим, что существование такой пары вершин х, у, что Я^ = Х]ее5(*) и№> было ранее доказано Мадером [54]. Факт их наличия также легко следует из существования дерева Гомори—Ху (упражнение 33). Теорема 8.42 (Нагамочи и Ибараки [58], Штёр и Вагнер [70]). Минимальный разрез в неориентированном графе с неотрицательными пропускными способностями может быть найден за время 0(тп + п2 log п). Доказательство. Можно считать, что заданный граф G простой, поскольку параллельные ребра можно объединить. Обозначим через X(G) минимальную пропускную способность разреза в G. Алгоритм работает следующим образом. Положим G0:=G. На i-м шаге (i = 1,..., п—1) выберем вершины х, у е V(G^), для которых *?-* = ? «м- По утверждению 8.40 и лемме 8.41 этот выбор можно осуществить за время 0(m + n log п). Положим г{ := Я^-1, zt := х и обозначим через G; результат стяги- вания подмножества {х,у} в G;_a. Заметим, что A(Gi_1)=min{A(G(),ri}, (8.1)
Упражнения 227 поскольку минимальный разрез в G^ либо разделяет х и у (в этом случае его пропускная способность равна у{), либо нет (тогда стягивание {х, у} не изменяет его пропускной способности). После того как будет построен граф Gn_lf имеющий лишь одну вершину, выберем индекс к е {1,..., п — 1}, для которого значение ук минимально. Утверждается, что 5(Х) образует минимальный разрез в G, где через X обозначено множество вершин в G, стянутых в вершину zk графа Gk_x, Действительно, согласно соотношению (8.1) справедливо равенство A(G) = minf^,..., Yn-i) = Yk> а ук совпадает с пропускной способностью разреза 5(Х). ? Рандомизированный алгоритм для нахождения минимального разреза (работающий правильно с высокой вероятностью) будет обсуждаться в упражнении 37. Более того, мы увидим, что вершинная связность графа может быть найдена с использованием 0(п2) вычислений максимального потока в графе с единичными пропускными способностями (упражнение 38). В этом параграфе мы изучили задачу минимизации функции f(X) :=u(5(X)) по непустым подмножествам X с V(G). Заметим, что функция /: 2V^ -* R+ является субмодулярной и обладает свойством симметрии (т. е. /(А) = f(V(G) \ А) для всех А). Представленный здесь алгоритм был обобщен Кейранном [62] на случай задачи минимизации произвольной симметричной субмодулярной функции; см. § 14.5. Задача поиска максимального разреза в графе намного сложнее и будет изучаться в § 16.2. Упражнения 1. Пусть (G, и, s, t) — сеть, а 5+(Х) и 5+(Y) — пара минимальных s-t-разре- зов в (G, и). Покажите, что 5+(Х ПУ)и5+(1и Y) также служат минимальными s-t-разрезами в (G, и). 2 (Форд и Фалкерсон [4]). Покажите, что в случае иррациональных пропускных способностей алгоритм Форда — Фалкерсона может не завершить работу за конечное время. Указание. Рассмотрите сеть, представленную на рис. 8.6. Отрезки обозначают ребра, пропускающие поток в обе стороны. Все ребра имеют пропускные способности S=1/(1—сг), кроме и((х1? уг)) = 1, и({х2, зъ)) — а> и((*з> Уз)) = и((*4> J4)) = v2* гДе а = d/5 -1)/2. Заметим, что ап = ап+1 + ап+2.
228 Глава 8. Потоки в сетях 3*. Пусть G— орграф, а М — его матрица инцидентности. Докажите, что для всех с, Z, и е. ZE^G\ где I < и, справедливо равенство maxjcjc: х е ZE(G), I < х < и, Мх = О} = = min{у'и-у"\: у' у" е Z+(G), zM+ у'-у" = с для некоторого z е ZV(G)}. Покажите, что отсюда выводятся теорема 8.6 и следствие 8.7. 4 (Хоффман [44]). Докажите теорему Хоффмана о циркуляции: в заданном орграфе G с нижними и верхними пропускными способностями I, и: E(G) -» R+, удовлетворяющими условию 1{е) < и(е) для всех е € ?(G), существует циркуляция /, для которой 1{е) < /(e) < и(е) для всех е е E(G), если и только если 2 Z(e) < J] u(e) для всех X с V(G). е€5~(Х) eG5+(X) Замечание. Из теоремы Хоффмана о циркуляции, в свою очередь, несложно получить теорему о максимальном потоке и минимальном разрезе. 5 (Пикар и Кейранн [61]). Рассмотрим сеть (G, u, s, t), максимальный s-t-no- ток / и остаточный граф Gf. Построим орграф Я из Gf следующим образом. Стянем множество вершин S, достижимых из источника s, в новую вершину vs. Аналогично стянем множество вершин Г, из которых достижим сток t, в новую вершину ит. Наконец, стянем каждую сильно связную компоненту X в Gf—(SUT) в новую вершину их. Заметим, что орграф Н ациклический. Докажите, что существует взаимно однозначное соответствие между такими множествами X с V(G), что 5?(Х) образует минимальный s-t-разрез в (G, и), и множествами Y с У (Я), для которых 5^(Y) образует ориентированный i;T-i;s-разрез в Я (т. е. ориентированный разрез в Я, разделяющий ит и us). Замечание. Данное утверждение также справедливо без всяких стягиваний и для графа Gf вместо Я. Однако утверждение в той форме, в которой оно было сформулировано выше, понадобится нам далее в § 20.4. 6. Пусть G — орграф, снабженный функциями с, с': E(G) —> R. Нас интересует подмножество X с V(G), для которого s € X, ? ^ X и разность 2c(e)-JV(e) ееб+(Х) ееб-(Х) минимальна. (а) Покажите, как свести эту задачу к задаче о минимальном разрезе. (б) Рассмотрим частный случай с = с'. Можете ли вы предложить линейный алгоритм для этой задачи? 7* (Филлипс и Дессуки [60]). Пусть G — ациклический орграф, снабженный отображениями сг, т, с: E(G) —> R+. Пусть также задано число С € R+. Требуется найти такое отображение х: Е (G) —> R+, что а (е) < х (е) < т (е) для всех е е Е (G) и 5LeE(G)(T(e) ~~х(е)Ме) ^ С. Среди всех допустимых решений мы хотим минимизировать длину (относительно х) длиннейшего пути в G. Мотивация этой задачи такова. Ребра графа соответствуют заданиям, <т(е) и т(е) обозначают минимальное и максимальное времена выполнения зада-
Упражнения 229 ния е, а с(е) обозначает стоимость уменьшения времени выполнения задания е на единицу. Если есть два задания е = (i,j) ие' = ОД)? то задание е должно быть завершено до того, как начнется работа над е'. В нашем распоряжении имеется фиксированный бюджет С, и требуется минимизировать общее время выполнения всех заданий. Покажите, как решить данную задачу с помощью методов теории потоков. Этот способ известен под названием техники оценки и анализа программ (PERT, program evaluation and review technique) или метода критического пути (СРМ, critical path method). Указание. Введите источник s и сток t. Вначале выберите х = т, а затем последовательно уменьшайте длину длиннейшего s-t-пути (относительно х), тратя на это как можно меньше средств. Воспользуйтесь упражнением 8 из гл. 7, упражнением 9 из гл. 3 и упражнением 6. 8* (Форд и Фалкерсон [29], Ху [45]). Рассмотрим сеть (G, с, 5, t), в которой граф G планарный и остается таковым даже после добавления ребра е = (s, t). Рассмотрим следующий алгоритм. Начнем с потока / = 0, и пусть G' := Gf. На каждом шаге рассмотрим контур В той грани графа G'+e, которая содержит е (относительно некоторого фиксированного плоского вложения). Нарастим поток / вдоль пути В — е. Пусть G' состоит лишь из прямых ребер графа Gf. Будем повторять итерации, пока сток t остается достижимым из источника s в G'. Докажите, что данный алгоритм корректно находит максимальный s-t-no- ток. Используя теорему 2.40, покажите, что при подходящей реализации время работы алгоритма составляет 0(гг2). Замечание. Данная задача может быть решена за время 0(п). Для планар- ных сетей общего вида известен алгоритм со сложностью 0(п logn); см. работы Вейе [76], а также Боррадайль и Клейна [16]. 9. Покажите, что ориентированная реберная версия теоремы Менгера 8.9 также следует прямо из теоремы 6.18. 10 (Тарджан [71]). Пусть G — неориентированный граф. Докажите, что можно вычислить за линейное время такую ориентацию G' для G, что для всех и, w е V(G) выполнено следующее свойство: если G содержит пару реберно непересекающихся у-ш-путей, то G/ содержит (ориентированный) v-w-путъ. Указание. Используйте процедуру DFS. 11. Пусть G — орграф с консервативными весами с: Е (G) —> R и такой парой вершин 5, t е V(G), что вершина t достижима из s. Предположим, что для всякого ребра е е E(G) справедливо равенство dist(G_e>c)(s, t) = dist(Gc)(s, t). Докажите, что тогда существуют два реберно непересекающихся кратчайших s-t-пути в (G,c). 12. Рассмотрим неориентированный граф G, обладающий реберной связностью fc е N. Пусть в нем выделены (не обязательно различные) вершины и0, иъ..., vk G V(G). Докажите, что найдутся реберно непересекающиеся пути Ръ ...,Рк, где Pi — UQ-Vi-путъ (* = 1,...,fc).
230 Глава 8. Потоки в сетях 13. Рассмотрим граф G (ориентированный или нет), тройку вершин х, у, z и такие числа а, /3 е. N, что а < Хху, /3 < А^и а + /3 < тах{Аху, А^}. Докажите, что существует а таких х-у-путей и /3 таких jxr-z-путей, что все эти а + /3 путей попарно реберно непересекающиеся. 14 (Мадер [55] и Шилоах [65]). Пусть G— орграф, для всякой пары вершин s и t содержащий fc реберно непересекающихся s-t-путей (такой граф называется сильно fc-реберно связным). Пусть Н — произвольный орграф, в котором V(H) = V(G) и \Е{Н)\ = fc. Докажите, что экземпляр (G, Я) ориентированной реберной задачи о непересекающихся путях имеет решение. 15 (Су [69]). Пусть G— орграф, содержащий не менее fc ребер. Докажите, что G содержит fc реберно непересекающихся s-t-путей для каждой пары вершин s и t, если и только если для любых fc различных ребер ei = (*i,yi), .••, ек = (хк,ук) орграф G — {еъ ..., ек} содержит к реберно непересекающихся остовных ориентированных деревьев Тъ ..., Тк, где Т{ имеет корень в вершине yt (i = 1,..., fc). Замечание. Данное утверждение обобщает упражнение 14. Указание. Используйте теорему 6.18. 16. Рассмотрим орграф G с пропускными способностями с: E(G) —> R+ и выделенной вершиной г е V(G). Можно ли найти r-разрез минимальной пропускной способности за полиномиальное время? Можно ли найти за полиномиальное время ориентированный разрез минимальной пропускной способности (или выяснить, что граф G сильно связен)? Замечание. Ответ на первый вопрос позволяет решать задачу отделения для политопа, возникающего в задаче о корневом ориентированном дереве минимального веса; см. следствие 6.15. 17. Авиакомпания хочет выполнять заданный набор запланированных рейсов, используя как можно меньше самолетов. Все имеющиеся в ее распоряжении самолеты одного типа. Для каждого рейса известны время отправления и длительность полета. Также для каждой пары рейсов i и ; известно, сколько времени потребуется для подготовки самолета, завершившего рейс i, к рейсу ; (это время зависит, в частности, от того, где завершился рейс i и где начнется рейс j). Покажите, как эффективно найти допустимое расписание полетов, минимизирующее количество самолетов. 18. Пусть G — ациклический орграф. Докажите, что величина блокирующего s-t-потока в сети (G,u,s,t) составляет не менее l/lVfG)! от величины максимального s-t-потока. Докажите, что данная оценка точна с точностью до постоянного множителя. 19. Покажите, как найти блокирующий поток в ациклической сети за время 0(ппг) путем последовательного увеличения вдоль путей, состоящих из ненасыщенных ребер. Для нахождения таких путей используйте процедуру DFS. Покажите, как получить оценку сложности 0(тп) в случае, если все ребра, кроме инцидентных 5 и t, имеют единичную пропускную способность.
Упражнения 231 20* (Карзанов [51], Эвен и Тарджан [28]). Пусть (G, и, s, t) — сеть, в которой ii(e) = 1 для всех ребер е е E(G), кроме, возможно, тех, которые инцидентны 5 или t. (а) Покажите, что максимальный s-t-поток можно найти за время 0(тп2^3). (б) Пусть также граф G обладает тем свойством, что для любой вершины i> е V(G) \{5, t} справедливо равенство |5~(у)| = 1 или \5+(v)\ = l. Покажите, что максимальный s-t-поток может быть найден за время 0(т</п). Указание. Рассмотрим работу алгоритма Диница, и пусть в какой-то момент в остаточной сети не осталось увеличивающих путей короче [и2/31 (для п. (а)) и \</п\ (для п. (б)). Оцените число оставшихся итераций с помощью второй части упражнения 19. 21. Назовем s-t-предпоток / максимальным, если значение ех^ (t) максимально. (а) Покажите, что для любого максимального предпотока / существует такой максимальный поток /' что f'{e) < /(e) для всех е е E(G). (б) Покажите, как преобразовать максимальный предпоток в максимальный поток за время 0(пт). 22. Пусть (G, и, s, t) —такая сеть, что G — t представляет собой ориентированное дерево. Покажите, как найти в ней максимальный s-t-поток за линейное время. Указание. Используйте процедуру DFS. 23* (Фиген [75]). Пусть (G,u,s,t) — такая сеть, что неориентированный образ графа G — {s, t} образует лес. Покажите, как найти в ней максимальный s-t-поток за линейное время. 24. Рассмотрим вариант алгоритма Фуджисиге, модифицированного следующим образом. На шаге ©выберем такую вершину vt е V(G) \{vl9...9 у{_г }, что значение b(vt) максимально. Кроме того, вместо шага 0алгоритм должен останавливаться, если b(v) = 0 для всех v е V(G) \ {vlf..., vt}. Наконец, в начале шага (6) положим j3(t) := minj=2 b(J). Тогда значения X и а окажутся более не нужны. (а) Покажите, что этот вариант алгоритма корректен. (б) Пусть ак равно значению minj=2b(;) на итерации к (или нулю, если алгоритм останавливается до достижения итерации к). Покажите, что тогда n^zSt+i ai ^ afc/2 Для всех к. Выведите отсюда, что число итераций составляет 0(nlogumax). (в) Покажите, как реализовать итерацию, чтобы она выполнялась за время 0(m + nlogn). 25. Докажите, что всякий алгоритм Push-Relabel выполняет 0(п2т) ненасыщающих проталкиваний вне зависимости от выбора вершины v на шаге (3). 26. Пусть [G,u,s,t) — сеть, / — s-t-предпоток, а гр — пометки расстояний относительно /, причем гр(и) < 2п для всех и е V(G). Положим \p'(v) := min{distG/(i;, t), п + distG/(i>, s), 2п} для всех и G V(G). Докажите, что функция я// задает пометки расстояний относительно /и^< ip'.
232 Глава 8. Потоки в сетях Замечание. Практика показывает, что если в процессе работы периодически, например после каждых п операций relabel, заменять гр на г//, то скорость выполнения алгоритма Push-Relabel повышается. 27. Пусть задан ациклический орграф G с весами с: E(G) -> R+. Требуется найти максимальный по весу ориентированный разрез в G. Покажите, что данная задача сводится к задаче о минимальном разрезе. Указание. Используйте упражнение 6. 28. Пусть задан ациклический орграф G с весами с: E(G) -> R+. Требуется найти такое максимальное по весу подмножество ребер F с Я (G), что ни один из путей в G не содержит более одного ребра из F. Покажите, что данная задача эквивалентна поиску максимального по весу ориентированного разреза в G (и, значит, может быть решена за время 0(п3) с помощью результатов упражнения 27). 29. Пусть G — орграф, р: V(G) —» R. Покажите, как найти такое подмножество X с V(G), что 5+{Х) = 0 и значение р{Х) минимально. Замечание. Эта модель может использоваться для описания процесса открытой разработки месторождений. Здесь р(и) обозначает (возможно, отрицательную) выгоду от разработки пласта и, а ребро (vy w) соответствует ограничению, что нельзя разрабатывать пласт и, до тех пор пока не разработан пласт w. 30. Пусть заданы неориентированный граф G с пропускными способностями ребер и: Е (G) —> R+ и такое множество Г с У (G), что \Т\>2. Требуется найти такое подмножество X с V(G), что Т Г\Х ф0, Т\Х^0и сумма Х1е«=5(х) н(е) минимальна. Покажите, как решить эту задачу за время 0(п4), где п = |V(G)|. 31 (Гомори и Ху [40]). Пусть заданы такие неотрицательные числа Xij9 1 < < i, j < п, что Яц = Xji и Al7c > min{Ay, Aj7J для любых трех различных индексов i, j, k е {1,..., п}. Покажите, что существует такой граф G с множеством вершин V(G) = {1,..., п} и пропускными способностями ребер и: E(G) —> R+, что его значениями локальной реберной связности являются в точности числа Ау. Указание. Рассмотрите остовное дерево максимального веса в (Кп, с), где c({i,j}):=A0-. 32. Пусть G — неориентированный граф с пропускными способностями ребер и: E(G) -* R+, и пусть Т с V(G), причем размер |Г| четен. Тогда Г-разрез в G представляет собой разрез вида 5(Х), где размер \Х П Т\ нечетен. Предложите полиномиальный алгоритм, находящий Г-разрез минимальной пропускной способности в (G, и). Указание. Используйте дерево Гомори—Ху. (Решение этого упражнения приведено в § 12.3.) 33. Пусть G — простой неориентированный граф, содержащий не менее двух вершин. Предположим, что степень каждой вершины в G не меньше fc. Докажите, что найдутся такие вершины 5 и t, что в графе есть хотя бы к ребер- но непересекающихся s-t-путей. Что можно сказать в случае, если ровно одна вершина графа имеет степень меньше fc? Указание. Рассмотрите дерево Гомори—Ху для G. 34. Рассмотрим задачу вычисления реберной связности A(G) неориентированного графа (с единичными пропускными способностями). В §8.7 показано,
Упражнения 233 что ее можно решить за время 0(тп) в предположении, что МС-порядок вершин для неориентированного графа с единичными пропускными способностями может быть найден за время 0(т + п). Как решать данную подзадачу? 35* (Франк [не опубликовано]). Пусть G— неориентированный граф с МС- порядком иъ...,ип. Пусть k%v — максимальное число внутренне непересекающихся u-v-пугей в G. Докажите, что к^ v = \E({un},{vlf...,i7„_i})| (данное равенство представляет собой вершинный аналог леммы 8.41). Указание, Докажите по индукции, что к„ у. = |?({ij-}, {vl9..., ^})|, где Gtj = = G[{vl9..., vt} U {Uj}]. Для этого предположите, не ограничивая общности, что ty, vt] $ E(G), выберите минимальное подмножество Z с {уъ..., vi_1}9 разделяющее Vj и vt (теорема Менгера 8.10), и рассмотрите максимальный индекс ft < i, для которого vh?Z и вершина uh смежна с vt или Vj. 36*. Неориентированный граф называется хордальным, если он не содержит циклов длины 4 и более в качестве индуцированных подграфов. Порядок вершин ul9...,vn неориентированного графа G называется симплициальным, если из того, что {ui9 15}, {ui9 vk}eE(G), следует, что {uj9 vk}eE(G) для всех i<j<fc. (а) Докажите, что граф, допускающий симплициальный порядок, является хордальным. (б) Пусть G — хордальный граф, a vl9...9vn — его МС-порядок. Докажите, что обратный порядок vn9 vn_l9 ...9Vi является симплициальным. Указание. Воспользуйтесь упражнением 35 и теоремой Менгера 8.10. Замечание. Утверждение о том, что граф является хордальным, если и только если для него существует симплициальный порядок, было установлено Ро- узом [63]. 37 (Каргер и Штейн [50], Каргер [48]). Пусть G — неориентированный граф с пропускными способностями ребер и: ?(G) -* R+. Пусть также задано такое подмножество 0 фА с V(G), что 5(A) образует разрез минимальной пропускной способности в G. 2 (а) Покажите, что ii(5(A)) < -u(E(G)). (Указание. Рассмотрите тривиальные разрезы 5(х), х е V(G).) (б) Будем считать, не ограничивая общности, что и(5(А)) > 0, и рассмотрим следующую процедуру. Выберем случайное ребро в графе и стянем его. При этом ребро е будет выбираться с вероятностью u(e)/u(E(G)). Будем повторять данную операцию, пока в графе не останется лишь две вершины. Докажите, что вероятность того, что фиксированное ребро из 5(A) не будет стянуто в процессе вышеописанных операций, составляет не менее 2/((п — 1)п). (в) Покажите, что если запустить описанный в п. (б) рандомизированный алгоритм kn2 раз, то некоторый минимальный разрез 5(A) будет найден с вероятностью не ниже 1 — е~2к. (Алгоритмы подобного типа, вероятность правильного ответа в которых положительна, называются алгоритмами Монте-Карло.) 38. Покажите, что значение вершинной связности заданного неориентированного графа может быть вычислено за время 0(n2'5m). Указание. Вспомните доказательство теоремы Менгера и воспользуйтесь результатами упражнения 20.
234 Глава 8. Потоки в сетях Замечание, Более быстрые алгоритмы для этой задачи были предложены в работах Хензингер, Рао и Габоу [43], а также Габоу [34]. 39 (Нагамочи и Ибараки [59]). Пусть G — связный неориентированный граф с пропускными способностями ребер и: E(G) —>R+. Требуется найти 3-разрез минимальной пропускной способности, т. е. множество ребер, удаление которого разбивает G хотя бы на три связные компоненты. Пусть п := \V(G)\ > 4. Рассмотрим последовательность 5(ХХ), 5(Х2),..., составленную из всевозможных разрезов, упорядоченных по неубыванию пропускной способности: и(5(Хг)) < и(5(Х2)) < ... Предположим, что нам известны первые 2п — 2 элемента этой последовательности (замечание: они могут быть вычислены за полиномиальное время с помощью алгоритма, предложенного Вазирани и Яннакакисом [74]). (а) Покажите, что для некоторых индексов i,; е {1,..., 2п—2} все множества Xi\Xj} Xj\Xi, Xi ПXj и V(G)\(Xt UXj) непусты. (б) Покажите, что существует 3-разрез, пропускная способность которого составляет не более ^"(Sftn^)- (в) Для произвольного i = 1,..., 2п — 2 рассмотрим множество ребер 5(Xt) плюс минимальный разрез в G — Хь а также 5(Xf) плюс минимальный разрез в G[Xt]. Получим набор 3-разрезов размера не более An — 4. Докажите, что один из них является оптимальным. Замечание. Данный метод был обобщен на случай fc-разрезов (при произвольном фиксированном к) в работе Камидои, Иосиды и Нагамочи [47]; см. также работу Торупа [72]. Задача нахождения оптимального 3-разреза, разделяющего заданную тройку вершин, намного сложнее; см. работы Далхауса и др. [22] и Чунга, Каннингема и Танга [20]. 40. Пусть G — неориентированный граф с пропускными способностями ребер и: E(G) -> Z+. (а) Покажите, что если 5(Х) и 5(7) —два минимальных разреза, для которых XC\Y^0nXUY^ V(G), то 5(X\Y) П 5(Y\X) = 0. (б) Предположим, что минимальная пропускная способность разреза нечетна. Покажите, что семейство подмножеств вершин X, для которых 5(Х) образует минимальный разрез, является бескроссинговым и, значит, существует не более п — 1 минимальных разрезов. Замечание. Е. А. Диниц, А. В. Карзанов и М. В. Ломоносов [25] показали, что в общем случае существует не более f" J минимальных разрезов. Эти разрезы могут быть описаны с помощью так называемого кактусного представления (cactus representation), обобщающего древесные представления (tree representation). См. также книгу Франка [6]. Литература Общая литература [1] Ahuja R. К., Magnanti Т. L., Orlin J. В. Network Flows. Prentice-Hall, Englewood Cliffs, 1993.
Литература 235 [2] Cook W.J., Cunningham W.H., Pulleyblank W.R., Schrijver A. Combinatorial Optimization. Wiley, New York, 1998, Chapter 3. [3] Cormen T. Я, Leiserson C. E., Rivest R. L., Stein C. Introduction to Algorithms. Third Edition. MIT Press, Cambridge, 2009, Chapter 26. [4] Ford L. R.} Fulkerson D. R. Flows in Networks. Princeton University Press, Princeton, 1962. [5] Frank A. Connectivity and network flows // Handbook of Combinatorics; Vol. 1 (R. L. Graham, M. Grotschel, L. Lovasz, eds.), Elsevier, Amsterdam, 1995. [6] Frank A. Connections in Combinatorial Optimization. Oxford University Press, Oxford, 2011. [7] Goldberg A. V., Tardos Ё., Tarjan R. E. Network flow algorithms // Paths, Flows, and VLSI- Layout (B. Korte, L. Lovasz, H. J. Promel, A. Schrijver, eds.), Springer, Berlin, 1990. P. 101- 164. [8] Gondran M., Minoux M. Graphs and Algorithms. Wiley, Chichester, 1984, Chapter 5. [9] Jungnickel D. Graphs, Networks and Algorithms. Third Edition. Springer, Berlin, 2007. [10] Phillips D. Г., Garcia-Diaz A. Fundamentals of Network Analysis. Prentice-Hall, Engle- wood Cliffs, 1981. [11] Ruhe G. Algorithmic Aspects of Flows in Networks. Kluwer Academic Publishers, Dordrecht, 1991. [12] SchrijverA. Combinatorial Optimization: Polyhedra and Efficiency. Springer, Berlin, 2003, Chapters 9,10,13-15. [13] Tarjan R. E. Data Structures and Network Algorithms. SIAM, Philadelphia, 1983, Chapter 8. [14] Thulasiraman K.} Swamy M. N. S. Graphs: Theory and Algorithms. Wiley, New York, 1992, Chapter 12. Процитированные работы [15] Ahuja R. K.t Orlin J. В., Tarjan R. E. Improved time bounds for the maximum flow problem // SIAM Journal on Computing. 1989. Vol. 18. P. 939-954. [16] Borradaile G., Klein P. An 0(n log n) algorithm for maximum sr-flow in a directed planar graph // Journal of the ACM. 2009. Vol. 56. Article 9. [17] Cheriyan J., Maheshwari S. N. Analysis of preflow push algorithms for maximum network flow // SIAM Journal on Computing. 1989. Vol. 18. P. 1057-1086. [18] Cheriyan J., Mehlhorn K. An analysis of the highest-level selection rule in the preflow- push max-flow algorithm // Information Processing Letters. 1999. Vol. 69. P. 239-242. [19] Черкасский Б. В. Алгоритм построения максимального потока в сети с трудоемкостью (0{n2Jp) действий // Математические методы в экономических исследованиях. Вып. 7. М.: Наука, 1977. С. 117-126. [20] CheungHynz {Cheung, К. К. Я.) К. К. Я, Cunningham W. Я., Tang L. Optimal 3-terminal cuts and linear programming // Mathematical Programming. 2006. Vol. 106. P. 1-23. [21] Cheung H. Y., Lau L. C, Leung К. M. Graph connectivities, network coding, and expander graphs // Proceedings of the 52nd Annual IEEE Symposium on Foundations of Computer Science. 2011. P. 197-206. [22] Dahlhaus ?., Johnson D. S., Papadimitriou С. Я., Seymour P. D., Yannakakis M. The complexity of multiterminal cuts // SIAM Journal on Computing. 1994. Vol. 23. P. 864-894.
236 Глава 8. Потоки в сетях [23] Dantzig G. В., Fulkerson D. R. On the max-flow min-cut theorem of networks // Linear Inequalities and Related Systems (H. W. Kuhn, A. W. Tucker, eds.), Princeton University Press, Princeton 1956. P. 215-221. [24] Диниц E.A. Алгоритм решения задачи о максимальном потоке в сети со степенной оценкой // Доклады АН СССР. 1970. Т. 194. С. 754-757. (English translation in Soviet Mathematics Doklady, vol. 11,1970, p. 1277-1280.) [25] Диниц E.A., Карзанов А. В., Ломоносов M. В. О структуре системы минимальных реберных разрезов графа // Исследования по Дискретной Оптимизации / Под ред. А. А. Фридмана. М.: Наука, 1976. С. 290-306. [26] Edmonds J., Karp R. M. Theoretical improvements in algorithmic efficiency for network flow problems // Journal of the ACM. 1972. Vol. 19. P. 248-264. [27] Elias P., Feinstein A., Shannon С. E. Note on maximum flow through a network // IRE Transactions on Information Theory, IT-2.1956. P. 117-119. [28] Even S., Tarjan R. E. Network flow and testing graph connectivity // SIAM Journal on Computing. 1975. Vol. 4. P. 507-518. [29] Ford L. R., Fulkerson D. R. Maximal Flow Through a Network // Canadian Journal of Mathematics. 1956. Vol. 8. P. 399-404. [30] Ford L. R., Fulkerson D. R. A simple algorithm for finding maximal network flows and an application to the Hitchcock problem // Canadian Journal of Mathematics. 1957. Vol. 9. P. 210-218. [31] Frank A. On the edge-connectivity algorithm of Nagamochi and Ibaraki. Laboratoire Artemis, IMAG, Universite J. Fourier, Grenoble, 1994. [32] Fujishige S. A maximum flow algorithm using MA ordering // Operations Research Letters. 2003. Vol. 31. P. 176-178. [33] Gabow H. N. A matroid approach to finding edge connectivity and packing arborescen- ces // Journal of Computer and System Sciences. 1995. Vol. 50. P. 259-273. [34] Gabow H. N. Using expander graphs to find vertex-connectivity // Journal of the ACM. 2006. Vol. 53. P. 800-844. [35] Galil Z. An 0(V5/3E2/3) algorithm for the maximal flow problem // Acta Informatica. 1980. Vol. 14. P. 221-242. [36] Galil Z., Namaad A. An 0[EV log2 V) algorithm for the maximal flow problem // Journal of Computer and System Sciences. 1980. Vol. 21. P. 203-217. [37] Gallai T. Maximum-minimum Satze tiber Graphen // Acta Mathematica Academiae Sci- entiarum Hungaricae. 1958. Vol. 9. P. 395-434. [38] Goldberg A. V., Rao S. Beyond the flow decomposition barrier // Journal of the ACM. 1998. Vol. 45. P. 783-797. [39] Goldberg A. V., Tarjan R. E. A new approach to the maximum flow problem // Journal of the ACM. 1988. Vol. 35. P. 921-940. [40] Gomory R. E., Ни Т. С. Multi-terminal network flows // Journal of SIAM. 1961. Vol. 9. P. 551-570. [41] Gusfleld D. Very simple methods for all pairs network flow analysis // SIAM Journal on Computing. 1990. Vol.19. P. 143-155. [42] Hao J., Orlin J. B. A faster algorithm for finding the minimum cut in a directed graph // Journal of Algorithms 17 (1994), 409-423.
Литература 237 Henzinger М. R., Rao S., Gabow H. N. Computing vertex connectivity: new bounds from old techniques // Journal of Algorithms. 2000. Vol. 34. P. 222-250. Hoffman A. J. Some recent applications of the theory of linear inequalities to extremal combinatorial analysis // Combinatorial Analysis (R. E. Bellman, M. Hall, eds.), AMS, Providence 1960. P. 113-128. Ни Т. С. Integer Programming and Network Flows. Addison-Wesley, Reading, 1969. Jelinek F., Mayeda W. On the maximum number of different entries in the terminal capacity matrix of oriented communication nets // IEEE Transactions on Circuit Theory. 1963. Vol.10. P. 307-308. Kamidoi У., Yoshida N., Nagamochi H. A deterministic algorithm for finding all minimum fc-way cuts // SIAM Journal on Computing. 2007. Vol. 36. P. 1329-1341. Karger D. R. Minimum cuts in near-linear time // Journal of the ACM. 2000. Vol. 47. P. 46-76. Karger D. R., Levine M. S. Finding maximum flows in undirected graphs seems easier than bipartite matching // Proceedings of the 30th Annual ACM Symposium on Theory of Computing. 1998. P. 69-78. Karger D. R., Stein С A new approach to the minimum cut problem // Journal of the ACM. 1996. Vol.43. P.601-640. Карзанов А. В. О нахождении максимального потока в сетях специального вида и некоторых приложениях // Математические вопросы управления производством / Под ред. Л. А. Люстерника. Вып. 5. М.: Изд-во МГУ, 1973. С. 81-94. Карзанов А. Б.Нахождение максимального потока в сети методом предпотоков // Доклады АН СССР. 1974. Т. 215, №1. С. 49-52. (English translation in Soviet Mathematics Doklady, vol.15, №2,1974, p. 434-437.) King V., Rao S., Tarjan R. E. A faster deterministic maximum flow algorithm // Journal of Algorithms. 1994. Vol.17. P. 447-474. Mader W. Uber minimal n-fach zusammenhangende, unendliche Graphen und ein Ex- tremalproblem // Arch. Math. 1972. Vol. 23. P. 553-560. Mader W. On a property of n edge-connected digraphs // Combinatorica. 1981. Vol. 1. P. 385-386. Malhotra V. M., Kumar M. P., Maheshwari S.N. An 0(|V|3) algorithm for finding maximum flows in networks // Information Processing Letters. 1978. Vol. 7. P. 277-278. Menger K. Zur allgemeinen Kurventheorie // Fundamenta Mathematicae. 1927. Vol. 10. P. 96-115. Nagamochi H., Ibaraki T. Computing edge-connectivity in multigraphs and capacitated graphs // SIAM Journal on Discrete Mathematics. 1992. Vol. 5. P. 54-66. Nagamochi H., Ibaraki T. A fast algorithm for computing minimum 3-way and 4-way cuts // Mathematical Programming. 2000. Vol. 88. P. 507-520. Phillips S.y Dessouky M. I. Solving the project time/cost tradeoff problem using the minimal cut concept // Management Science. 1977. Vol. 24. P. 393-400. Picard J., Queyranne M. On the structure of all minimum cuts in a network and applications // Mathematical Programming Study. 1980. Vol. 13. P. 8-16. Queyranne M. Minimizing symmetric submodular functions // Mathematical Programming. Ser. B. 1998. Vol. 82. P. 3-12.
238 Глава 8. Потоки в сетях [63] Rose D. J. Triangulated graphs and the elimination process // Journal of Mathematical Analysis and Applications. 1970. Vol. 32. P. 597-609. [64] Shiloach Y An 0(nl log21) maximum-flow algorithm. Technical Report STAN-CS-78-802, Computer Science Department, Stanford University, 1978 [65] Shiloach Y Edge-disjoint branching in directed multigraphs // Information Processing Letters. 1979. Vol. 8. P. 24-27. [66] Shioura A. The MA ordering max-flow algorithm is not strongly polynomial for directed networks // Operations Research Letters. 2004. Vol. 32. P. 31-35. [67] Sleator D. D. An O(nmlogn) algorithm for maximum network flow. Technical Report STAN-CS-80-831, Computer Science Department, Stanford University, 1978. [68] Sleator D. D., Tarjan R. E. A data structure for dynamic trees // Journal of Computer and System Sciences. 1983. Vol. 26. P. 362-391. [69] Su X. Y. Some generalizations of Menger's theorem concerning arc-connected digraphs // Discrete Mathematics. 1997. Vol. 175. P. 293-296. [70] Stoer M., Wagner F. A simple min cut algorithm // Journal of the ACM. 1997. Vol. 44. P. 585-591. [71] Tarjan R. E. Depth first search and linear graph algorithms // SIAM Journal on Computing. 1972. Vol.1. P. 146-160. [72] Thorup M. Minimum k-way cuts via deterministic greedy tree packing // Proceedings of the 40th Annual ACM Symposium on Theory of Computing. 2008. P. 159-165. [73] Tuncel L. On the complexity preflow-push algorithms for maximum flow problems // Algorithmica. 1994. Vol.11. P. 353-359. [74] Vazirani V. V., Yannakakis M. Suboptimal cuts: their enumeration, weight, and number // Automata, Languages and Programming; Proceedings of the 19th ICALP conference (W. Kuich, ed.), Springer, Berlin, 1992. (Lecture Notes in Comput. Sci.; Vol.623). P. 366-377. [75] Vygen J. On dual minimum cost flow algorithms // Mathematical Methods of Operations Research. 2002. Vol.56. P. 101-126. [76] Weihe K. Maximum (5, t)-flows in planar networks in 0(|V|log|V|) time // Journal of Computer and System Sciences. 1997. Vol. 55. P. 454-475. [77] Whitney H. Congruent graphs and the connectivity of graphs // American Journal of Mathematics. 1932. Vol. 54. P. 150-168.
ГЛАВА 9 Потоки минимальной стоимости В настоящей главе мы покажем, как учесть стоимости ребер в потоковых задачах. Рассмотрим, например, сведение задачи о назначении работ к задаче о максимальном потоке, упомянутое во введении к гл. 8. Для того чтобы учесть различие в оплате работников, можно назначить ребрам стоимости. Цель теперь будет состоять в том, чтобы добиться выполнения всех работ к указанному моменту времени, заплатив при этом минимальную общую стоимость. Существуют, конечно, и другие приложения. Второй способ обобщения, предполагающий введение множества источников и стоков, носит более технический характер. В § 9.1 мы рассмотрим общую задачу и ее важные частные случаи. В § 9.2 будет установлен критерий оптимальности для задачи о потоке минимальной стоимости, на основе которого в § 9.3, 9.4, 9.5 и 9.6 мы предложим набор алгоритмов. Большинство из них основаны на методах поиска циклов минимального среднего веса или кратчайшего пути, изложенных в гл. 7, которые используются в них как подпрограммы. В заключительном параграфе 9.7 мы рассмотрим приложение стоимостных потоков к так называемым потокам во времени. § 9.1. Постановка задачи Итак, нам снова дан орграф G с пропускными способностями ребер и: Я (G) —»R+. В дополнение к этому известны числа с: E(G) —> R, показывающие стоимости ребер. Кроме того, мы разрешаем множественные источники и стоки. Определение 9.1. Пусть заданы орграф G, пропускные способности ребер и: E(G) -»R+ и такие числа Ъ: V(G) -* R, что Xyev(G) b(p) = 0. Тогда Ъ-потоком в (G,u) называется функция /: E(G) —> R+, для которой /(e) < и{е) для всех е е E{G) и Х;ее5+0,) /(e) - Ее€5-(и) Де) = ь(") Д™ всех v G У(Ф- Таким образом, b-поток при Ъ = 0 является циркуляцией. Значение b(v) называется балансом в вершине и. Значение \b(v)\ иногда называется предложением (supply) при b{v) > 0 или спросом (demand) при b(v) < 0. Вершины и, для которых b{v) > 0, называются источниками, а те, для которых Ъ(и) < 0, называются стоками. Теорема 9.2 (Гейл [18]). Пусть G — орграф с пропускными способностями ребер и: E(G) —» R+. Пусть также заданы числа b: V(G) —> R, удовлетворяющие
240 Глава 9. Потоки минимальной стоимости условию Xуgv(g) Ь(и) = 0. Тогда b-поток существует, если и только если J] и{е) > J] b(v) для всех X с V(G). eeS+(X) veX Найти такой b-поток или выяснить факт его отсутствия можно за время 0{п2</т), где п := |V(G)| а т := |?(G)|. Доказательство. Рассмотрим орграф G', получающийся из G добавлением двух новых вершин s и t, а также ребер (5, i>), (у, t) с пропускными способностями "((^, ьО) := max{0, Ъ(и)} и u((f, t)) := max{0, —b(v)} для всех и € V(G). Положим В:= J] u((s,i;))= J] u((u,t)). u€V(G) u€V(G) Тогда b-потоки в (G, и) являются в точности сужениями s-t-потоков величины В в (G' и) на множество E(G). По теореме о максимальном потоке и минимальном разрезе 8.6 в (G' и) существует s-t-поток величины В, если и только если Xee5+,({s}ux) "(е) ^ # для каждого подмножества X с V(G). Заметим, что 2] "00 = 2 M(e)+B + J](maxtO,-b(i;)}-max{0,b(i;)}) = ee5+,({s}uX) eeSj(X) ^еХ ee5j(X) у€Х откуда и следует первое из утверждений. Для того чтобы найти b-поток или убедиться в отсутствии такового, достаточно решить задачу о максимальном потоке в (G' и, s, t). Оценка на время работы этого метода следует из теоремы 8.30. ? В данной главе мы будем изучать задачу нахождения b-потока минимальной стоимости. Min Cost Flow (задача о потоке минимальной стоимости) Дано: орграф G, пропускные способности ребер и: ?(G) --> R+, такие числа b:V(G)-»R, ЧТО 2ueV(G) k(^) ~~ ®> и веса с: E((j) —> R. Надо: найти b-поток /, имеющий минимальную стоимость c(f):=?/(e)c(e) eeE(G) (или выяснить, что такого потока не существует). Иногда будет удобно разрешить также бесконечные пропускные способности. В этом случае экземпляр задачи может оказаться неограниченным, но этот факт несложно установить заранее; см. упражнение 5. Отметим, что (в противоположность многим другим задачам, например задаче о максимальном потоке) при изучении задачи о потоке минимальной стоимости мы не можем считать, не ограничивая общности, что входной граф является простым.
§ 9.1. Постановка задачи 241 Задача о потоке минимальной стоимости оказывается весьма общей и обладает рядом интересных частных случаев. В случае отсутствия пропускных способностей (и = оо) получается, как иногда говорят, задача о перевозке. Еще более узкий частный случай, известный также как транспортная задача, был сформулирован Хичкоком [23] и др. Hitchcock (задача Хичкока) Дано: Надо: орграф G с таким разбиением V(G) = предложения Ь(у) > 0 для i/ € А и ?vev(G) Hv) = 0; веса с: ?(G) -> R. найти Ь-поток / в (G, со), который = AUB, спроса имеет 4to?(G)caxB —b(v) > 0 для минимальную (или выяснить, что такого потока не существует). ; значения и еВ, где стоимость В задаче Хичкока без ограничения общности можно считать, что значения с неотрицательны. Действительно, добавляя константу а ко всем весам, мы увеличиваем стоимость каждого b-потока на одну и ту же величину, а именно на а ^IveA Ь(у)- Поэтому часто рассматривается лишь частный случай, при котором значения с неотрицательны и Е (G) = А х В. Очевидно, всякий экземпляр задачи Хичкока может быть записан в виде экземпляра задачи о потоке минимальной стоимости на двудольном графе с бесконечными пропускными способностями. Менее очевидным является тот факт, что всякий экземпляр задачи о потоке минимальной стоимости может быть преобразован в эквивалентный (хотя и больший по размеру) экземпляр задачи Хичкока. Лемма 9.3 (Орден [31], Вагнер [43]). Всякий экземпляр задачи о потоке минимальной стоимости с п вершинами и т ребрами может быть преобразован в эквивалентный экземпляр задачи Хичкока сп-\-т вершинами и 2т ребрами. Доказательство. Пусть (G, и, Ъ, с) — экземпляр задачи о потоке минимальной стоимости. Рассмотрим эквивалентный экземпляр (G' А', В', Ь'', с') задачи Хичкока, определяемый следующим образом. Положим А! := E(G), В' := V(G) и G' := (Ах U В7, Ег U Е2), где E1:={ttx,y),x):(x,y)eE(G)} и Е2 := {((х,у),у): (х,у) €E(G)}. Пусть с'((е,*)) := 0 при (е,х) е Ег и с'((е,у)) := с(е) при (е,у) е Е2- Наконец, пусть Ъ'{е) := и{е) при е е E{G) и Ъ'{х) := Ь(х) - ]Г ц(е) при х е V(G). Пример такого построения приведен на рис. 9.1. Докажем, что данные экземпляры эквивалентны. Пусть / — b-поток в (G, и). Положим f'((e,y)) := /(e) и f'{{e,x)) := u(e) — /(e) для всех е = (х,у) е E(G). Очевидно, /х служит ^-потоком графа G7, причем с' (/0 = с(/).
242 Глава 9. Потоки минимальной стоимости Цх)=4 b'(ei) = 5 ~—— Ь'(е2)=4 Ыу) = -i---ir--"b(z) = -з ь,(ез) = 7 u(ex) = 5, u(e2)=4, u(e3) = 7 Рис. 9.1 ¦ ь'М = ЬЧУ) = "5 b7(z) = -10 U = оо Обратно, если /' — b'-поток в G', то, полагая /((*, у)) := /'(((*, у)> у))> мы получаем b-поток в G, для которого с(/) = с7(/0- ? Приведенное выше доказательство принадлежит Форду и Фалкерсону [17]. § 9.2. Критерий оптимальности В данном параграфе мы докажем несколько простых результатов, касающихся стоимостных потоков. В их числе будет критерий оптимальности решения, который послужит основой для алгоритмов, излагаемых в последующих параграфах. Мы снова воспользуемся понятиями остаточного графа и увеличивающего пути. Продолжим веса с на орграф G, полагая с(е") := — с(е) для всех ребер е е E(G). Наше определение остаточного графа имеет то преимущество, что вес ребра в остаточном графе Gf не зависит от потока /. Определение 9.4. Пусть заданы орграф G с пропускными способностями и Ь-по- ток / Тогда /-увеличивающим циклом называется цикл Gf. Следующее простое наблюдение окажется полезным. Утверждение 9.5. Рассмотрим орграф G с пропускными способностями ребер и: E(G) —» R+. Пусть / и /' — b-потоки в (G,u). Тогда функция g: E(G) —> R+, определенная равенствами g[e) :=max{0,//(e)—/(e)} и g(e") :=max{0,/(e)— f{e)} для e € E(G), является циркуляцией в G. Более того, g(e) = О для всех е ф E{Gf) uc(g) = ctf)-c{f). Доказательство. В каждой вершине и е V( G) мы имеем ? g(e) - J] g(e) = J] (/'(е) -/(e)) - ? (/'(е) -/(e)) = b(i/) - b(w) = О, e&5i^(v) e&5Z+(v) ee5t.(v) ee5~(v) g g ° u «—> так что g задает циркуляцию в G. Для ребра е е Е (G) \E(Gf) возможны два случая. Если е е Е (G), то /(e) = и(е) и потому f'(e) < /(e), следовательно, g(e) = 0. Если же е = е~0 для некоторого е0 е E(G), то /(е0) = 0 и, значит, g(t0) = 0.
§ 9.2. Критерий оптимальности 243 Последнее из утверждений проверяется тривиально: cfe) = 2 с(еЫе) = J] с(е)/'(е) - ? с(е)/(е) = с(/') - с(/). П eeE(G) eeE(G) eeE(G) Точно так же, как эйлеровы графы могут быть разбиты на циклы, циркуляции можно разложить на потоки вдоль циклов. Утверждение 9.6 (Форд и Фалкерсон [17]). Для любой циркуляции f в орграфе G существует набор <&, состоящий из не более чем \E(G)\ циклов в G и положительных чисел h(C) (С Е *#), удовлетворяющих условию /(e) = 2cev,eG?(c) НС) для всехе eE(G). Доказательство. Данное утверждение представляет собой частный случай теоремы 8.8. ? Докажем теперь обещанный критерий оптимальности. Теорема 9.7 (Клейн [29]). Пусть (G,u,b,c)—экземпляр задачи о потоке минимальной стоимости. Тогда b-поток / имеет минимальную стоимость, если и только если не существует /-увеличивающего цикла отрицательной общей стоимости. Доказательство. Если существует /-увеличивающий цикл С с весом у < О, то поток / можно нарастить вдоль С на некоторую величину е > О и получить новый b-поток /' стоимость которого меньше исходной на — у е. Таким образом, / не является потоком минимальной стоимости. Пусть теперь / — b-поток, стоимость которого не минимальна, а значит, существует другой b-поток /' с меньшей стоимостью. Рассмотрим функцию g, определенную, как указано в утверждении 9.5. Тогда g задает циркуляцию, для которой c(g) < 0. Согласно утверждению 9.6 функция g может быть разложена в набор потоков по циклам. Поскольку g{e) = 0 для всех е ф E(Gf), все эти циклы являются /-увеличивающими. Хотя бы один из них должен иметь отрицательную общую стоимость, откуда и следует утверждение теоремы. ? Этот результат был, в сущности, впервые установлен А. Н. Толстым [40] и затем переоткрывался несколько раз и в различных формах. Одна из его возможных эквивалентных переформулировок такова. Следствие 9.8 (Форд и Фалкерсон [17]). Пусть {G,u,b,c)—экземпляр задачи о потоке минимальной стоимости. Тогда b-поток / имеет минимальную стоимость, если и только если существуют допустимые потенциалы для (Gf, с). Доказательство. Как следует из теоремы 9.7, / является b-потоком минимальной стоимости, если и только если граф Gf не содержит отрицательных циклов. По теореме 7.7 отсутствие таковых в [Gf, с) эквивалентно наличию допустимых потенциалов. ? Допустимые потенциалы могут также рассматриваться как решения задачи линейного программирования, двойственной к задаче о потоке минимальной
244 Глава 9. Потоки минимальной стоимости стоимости. Этот факт можно установить с помощью нижеследующего альтернативного доказательства критерия оптимальности. Второе доказательство следствия 9.8. Запишем задачу о потоке минимальной стоимости в виде следующей задачи ЛП: максимизировать У^ — с{е)хе eeE(G) при условиях ^xe-^xe = b(v) (veV(G)), ^ ee5+(v) ee5~(v) jce<u(e) (eeE(G)), xe>0 (e€E(G)). Двойственная к приведенной выше задача такова: максимизировать /^ b(v)yv + У. u(e)ze veV(G) eeE(G) (9.2) при условиях Уу — Уи) + *е^ ~с(е) (е = (v> w) € E(G)), ze>0 (eeE(G)). Пусть x — произвольный b-поток, т. е. допустимое решение программы (9.1). По следствию 3.23 вектор х является оптимальным, если и только если существует такое допустимое двойственное решение (у, z) программы 9.2), что х и (у, z) удовлетворяют условиям дополняющей нежесткости: *е(и(е)— хе) =0 и хе(с(е) + ze + Уи ~~Уш) =® ДЛЯ ВСвХ б = (l>, ш) G E(G). Итак, вектор х оптимален, если и только если найдется пара векторов (у, z), для которых О = — ze < с(е) +yv — yw при е = (v, w) е Е (G), хе <и{е) и с(е) + Уу — yw = —яе < 0 при е = (i>, w) е Е (G), хе> 0. Данные условия эквивалентны существованию такого вектора у, что c(e)+yv-yw>0 для всех остаточных ребер е = {v, w) е E(GX), т. е., иными словами, существованию допустимого потенциала у для (Gx, с). ? § 9.3. Алгоритм сокращения вдоль минимальных средних циклов Заметим, что из теоремы Клейна немедленно следует алгоритм: найдем произвольный b-поток (с помощью вычисления максимального потока, как рассказано выше), а затем будем последовательно увеличивать его вдоль циклов отрицательного веса, до тех пор пока таковые не исчезнут. Однако если наша
§ 9.3. Алгоритм сокращения вдоль минимальных средних циклов 245 цель состоит в получении полиномиального алгоритма, то нужно быть аккуратными в выборе цикла (см. упражнение 7). Подходящей является стратегия, при которой на каждой итерации в качестве увеличивающего цикла мы выбираем тот, средний вес которого минимален. Cancel Minimum Mean Cycles (алгоритм сокращения вдоль минимальных средних циклов) Вход: орграф G, пропускные способности ребер и: E(G) -* R+, такие числа b: V(G) -> R, что 2y€V(G) Ь(у) = 0, а также веса с: E(G) -* R. Выход: Ь-поток / минимальной стоимости. (Т) Найти Ь-поток /. (2) Найти цикл С в Gf, средний вес которого минимален. If вес цикла С неотрицателен (или граф Gf ациклический) then stop. (3) Вычислить у := min щ(е). Нарастить / вдоль С на величину у. Goto (2). ееВ(С) Как указано в § 9.1, шаг ф можно выполнить с помощью любого алгоритма для задачи о максимальном потоке. Для шага (2) можно использовать метод, изложенный в § 7.3. Докажем, что итоговый алгоритм заканчивает свою работу за полиномиальное число итераций. Доказательство будет отчасти аналогично приведенному в § 8.3. Пусть ju(/) — минимальный средний вес цикла в Gf. Тогда теорема 9.7 утверждает, что Ь-поток / оптимален, если и только если /i(/) > 0. Покажем вначале, что значение /i(/) не уменьшается в процессе работы алгоритма. Более того, мы покажем, что оно строго увеличивается после каждых |E(G)| итераций. Как обычно, через пит мы обозначаем число вершин и ребер в G соответственно. Лемма 9.9. Рассмотрим такую последовательность b-потоков fi, /2,..., ft, что при i = 1,..., t — 1 справедливо неравенство ii{f{) < 0 и поток fi+1 получается из ft путем увеличения вдоль цикла Q, имеющего минимальный средний вес в Gf. Тогда (а) /i(/fc) < ju(/fc+i) для всех к; (б) /i(/fc) < —z^vUi) для всех таких к<1, что объединение Ск U Q содержит пару противоположных ребер. Доказательство. Для доказательства утверждения (а) рассмотрим пару соседних потоков /fc, /fc+1 в данной последовательности. Рассмотрим также эйлеров граф Я, получающийся из (V(G), Е(Ск) L)E(Ck+1)) удалением пар обратных ребер. (Ребра, встречающиеся одновременно и в Ск, и в Cfc+1, учитываются дважды.) Каждый простой подграф Н является подграфом графа Gfk, поскольку всякое ребро в E(Gf )\E(Gf) имеет обратное ребро в Е(Ск). Поскольку граф Я эйле-
246 Глава 9. Потоки минимальной стоимости ров, он может быть разложен в циклы, и каждый из этих циклов имеет средний вес не менее /i(/fc). Следовательно, с(Е(Н)) > ц(/к)\Е(Н)\. Общий вес каждой пары обратных ребер равен нулю, поэтому с(Е(Н)) =c(B(Cfc)) + c(E(Cfc+1)) =Kfk)\E(Ck)\+Kfk+i)\E(Ck+1)l Учитывая, что |Е(Я)| < \Е(Ск)\ + |fi(Cfc+1)|, получаем M(/fc)(I^Cj| + |E(Cfc^ а значит, /x(/fc+1) > /i(/fc). Перейдем к доказательству утверждения (б). С учетом свойства (а) достаточно доказать его для таких индексов к, Z, что fc < i < I и Q U Q не содержит пар обратных ребер. Как и в доказательстве свойства (а), рассмотрим эйлеров граф Я, получающийся из (V(G), E(Cfc) UE(Q)) удалением пар обратных ребер. Каждый простой подграф Я является подграфом графа Gfk, поскольку всякое ребро в Е (Q) \E(Gfk) имеет обратное ребро в одном из циклов Ск, Ск+Ъ ..., Сг_г. Но с учетом выбора к и I среди этих циклов лишь Ск содержит ребра, обратные к ребрам Q. Отсюда, как и в п. (а), получаем, что с(Е(Н)) > fi(fk)\E(H)\ и с(Е(Я)) = /i(A)|E(Cfc)H-M(/z)l^(Q)|. Поскольку |Е(Я)| < |?(Cfc)| Н |E(Q)I (хотя бы два ребра были удалены), имеем откуда и следует неравенство ju(/fc) < —^-^ мШ- ? Следствие 9.10. В процессе выполнения алгоритма сокращения вдоль минимальных средних циклов значение |/i(/)| уменьшается хотя бы в два раза после каждых тп итераций. Доказательство. Пусть Ск, Ск+1,..., Ск+т — циклы, использованные в последовательных итерациях алгоритма. Каждый из этих циклов содержит хотя бы одно ребро, являющееся критическим (такое ребро исчезает из остаточного графа после увеличения), поэтому должна найтись пара циклов, скажем Q и С; (fc < i < j < к + m), в объединении которых одно из ребер встречается вместе со своим обратным. По лемме 9.9 тогда получаем м(Л) < иШ < ^2 мО§) < ^=2 /*СЛч™)- Итак, значение |/х(/)| уменьшается хотя бы в —= раз после каждых т итера- П (П — 2\П -9 1 ций. Для завершения доказательства осталось заметить, что ( 1 < е z < -. ? Из доказанного уже следует, что алгоритм работает за полиномиальное время в случае целых стоимостей ребер: значение |jlz(/)| не превосходит |cmin| в начальный момент, где cmin обозначает минимальную стоимость ребра. Кроме того, |jix(/)| уменьшается хотя бы в два раза после каждых тп итераций. Тогда
§ 9.3. Алгоритм сокращения вдоль минимальных средних циклов 247 после 0(mnlog(n|cmin|)) итераций значение /х(/) станет больше чем —1/п. Если все стоимости ребер целые, то отсюда будет следовать, что д(/) > 0, и алгоритм завершит свою работу. Таким образом, по следствию 7.13 время работы алгоритма составит 0(m2n2 log(n|cminQ). Более того, для задачи о потоке минимальной стоимости можно получить даже сильно полиномиальную оценку сложности. Впервые такая оценка (для другого метода) была получена Тардош [39]. Теорема 9.11 (Гольдберг и Тарджан [19]). Время работы алгоритма сокращения минимальных средних циклов, решающего задачу о потоке минимальной стоимости, составляет О (т3п2 log п). Доказательство. Покажем, что после каждых mn(Jlogn] + 1) итераций хотя бы одно ребро становится фиксированным, т. е. поток по этому ребру далее не изменяется. Следовательно, всего будет не более О (т2п log п) итераций. С использованием теоремы 9.2 (для оценки сложности шага ®) и следствия 7.13 (для оценки сложности шага (2)) получается доказываемое утверждение. Пусть / — поток на одной из итераций, и пусть /'— поток тп([logп\ + 1) итераций спустя. Определим веса с' равенством с'(е) := c(e)—ji(f/) (е е E(Gf>)). Обозначим через п допустимые потенциалы для (Gf, с') (существующие по теореме 77). Тогда имеем 0 < с'л(е) = сп(е) — ju(/'), следовательно, сп(е) > \i(f) для всех е € E(Gf). (9.3) Пусть теперь С — цикл минимального среднего веса в Gf, выбранный алгоритмом для увеличения потока /. Поскольку по следствию 9.10 выполняются неравенства li(f) < 2^nl+V(/0 < 2n/i(/') (см. рис. 9.2), получаем 2 сп{е) = Jс(е) = /х(Я№)| < 2пМ(/0|?(С)|. ееЕ(С) е€Е(С) Выберем теперь ребро е0 GE(C), для которого ся(е0) < 2n/i(//). Согласно неравенству (9.3) получим е0 ^ E(Gf>). Ii(f) 2n/i(/') ii(f') о 1 1 1 1 Рис. 9.2 Утверждение. Для любого такого Ъ-потока /" что е0 е E(Gf>), справедливо неравенство /i(/") < /i(/'). Отсюда по лемме 9.9(a) следует, что ребро е0 более не появится в остаточном графе, а значит, по прошествии mn([lognl +1) итераций от того момента, когда ребро е0 попало в С, поток по ребрам е0 и е^ окажется фиксированным, как и требовалось.
248 Глава 9. Потоки минимальной стоимости Для доказательства рассмотрим такой Ь-поток /" что е0 € E(Gf>). Применим утверждение 9.5 к потокам /' и /" и получим такую циркуляцию g, что g(e) = О для всех е ^ E(Gf/) и g(e^) > 0 (поскольку е0 е E(Gf») \E(Gf)). С зачетом утверждения 9.6 циркуляция g может быть представлена в виде суммы потоков по /'-увеличивающим циклам. Один из этих циклов, скажем W, должен содержать ребро е^. Тогда, используя оценку сп(е~0) = —сп(е0) > —2п/х(//) и применяя неравенство (9.3) ко всем ребрам е е E(W) \ {е^}, мы получим нижнюю оценку на общий вес цикла W: c(E(W)) = J] с^е) > -2"М(/0 + (п - 1)м(/0 > -пм(/0- eeE(W) Но цикл, обратный к W, является /"-увеличивающим (этот факт можно заметить, поменяв /' и /" местами), и его общий вес строго меньше n/i(/'). Это значит, что Gf> содержит искомый цикл, средний вес которого строго меньше /х(/0, что и утверждалось. ? Многочисленные обобщения алгоритма сокращения вдоль минимальных средних циклов были предложены Карзановым и МакКормиком [28]. § 9.4. Алгоритм последовательного увеличения вдоль кратчайших путей Еще один алгоритм можно получить из следующей теоремы. Теорема 9.12 (Джуэлл [27], Ири [26], Бузакер и Гоуэн [11]). Пусть задан экземпляр задачи о потоке минимальной стоимости (G, и, Ъ, с), и пусть f — Ь-поток минимальной стоимости. Рассмотрим кратчайший (относительно с) s-t-путь в Gf {для некоторых s и t) и обозначим его через Р. Нарастим f вдоль пути Р на минимальную остаточную пропускную способность этого пути, и результирующий поток обозначим через /'. Тогда f будет Ь'-потоком минимальной стоимости (для некоторых чисел Ъ'). Доказательство. Поток /' очевидно, будет {/-потоком при подходящем выборе Ь'. Предположим, что /' не будет Ь'-потоком минимальной стоимости. Тогда по теореме 9.7 найдется цикл С в Gf с отрицательным общим весом. Рассмотрим граф Я, получающийся из (V(G),E(C) и Е(Р)) удалением пар обратных ребер. (Как обычно, ребра, встречающиеся одновременно в С и Р, учитываются дважды.) Для любого ребра е € E(Gf) \E(Gf) обратное к е ребро должно лежать в Е(Р). Следовательно, всякий простой подграф Н является подграфом в Gf. Поскольку / имеет минимальную стоимость среди b-потоков, ни один из циклов в Gf, а значит, и в Я, не может иметь отрицательного веса. Имеем с(Е(Н)) = с(Е(С)) + с(Е(Р)) < с(Е(Р)). Более того, Я представляется в виде объединения s-t-пути и некоторых циклов. Ни один из этих циклов не может иметь отрицательного веса. Значит, Я, а вместе с ним и Gf, содержит s-t-путь, вес которого меньше, чем вес пути Р. Это противоречит выбору P. D
§ 9.4. Алгоритм последовательного увеличения вдоль кратчайших путей 249 Если исходные веса ребер являются консервативными, то в начале работы мы можем выбрать / = 0 в качестве оптимальной циркуляции (b-потока при Ъ = 0). В общем случае придется действовать более сложным образом. Насытим все ребра отрицательной стоимости, т. е. положим /(e) := и{е) для всех eGF:={e/eE(G): с(е') <0} и /(e) :=0 для всех ee?(G) \F. Задача свелась к нахождению [/-потока минимальной стоимости в (G/? ну), где b'(v) = b(i/) + exf(u) при vgV(G). Если разрешены бесконечные пропускные способности, то потребуются дополнительные преобразования; см. упражнение 5. Successive Shortest Path (алгоритм последовательного увеличения вдоль кратчайших путей) Вход: орграф G, пропускные способности ребер и: E(G) -*R+, такие числа Ъ: V{G) ->R, что ?и€у(С)b{v) = 0, и консервативные веса с: E(G) -+R. Выход: b-поток / минимальной стоимости. (D Присвоить Ъ' := Ъ и /(e) := 0 для всех е е E(G). (2) If b' = 0 then stop else: Выбрать вершину s, для которой b'(s) > 0. Выбрать вершину t, для которой b7(t) < 0 и t достижима из s в Gf. If такой вершины t не существует then stop (b-потока не существует). (3) Найти s-t-путь Р в Gf, имеющий минимальный вес. (4) Вычислить г := mini min uf(е), b'(s), — b'(t)\. e€E(P) ^ J Присвоить b7(5) := b'(s)-y и b7(0 := b'(0 + r- Нарастить / вдоль P на величину f. Goto®. Если в задаче разрешены произвольные пропускные способности, то с приведенным выше алгоритмом связаны те же самые трудности, что и с алгоритмом Форда — Фалкерсона (см. упражнение 2 из гл. 8; в нашем случае потребуется дополнительно объявить все стоимости нулевыми). Поэтому будем далее предполагать, что числа и и b целые. Тогда очевидно, что алгоритм заканчивает свою работу после не более чем В := ¦= Yav<=v(g) 1^(^)1 увеличений. По теореме 9.12 получившийся в итоге поток оптимален, если оптимальным является начальный поток. Последнее верно, поскольку веса с консервативны. Кроме того, если на шаге © алгоритм объявит, что b-потока не существует, то будет прав. Доказать этот факт несложно, и мы оставляем его читателю в качестве упражнения 13. На каждом шаге увеличения алгоритму необходимо вычислять кратчайший путь. Поскольку возможны отрицательные веса, для этого придется использовать алгоритм Мура — Беллмана — Форда со временем работы 0(пт) (теорема 7.5). Тогда общая сложность алгоритма составит 0(Впт). Однако, как и в до-
250 Глава 9. Потоки минимальной стоимости казательстве теоремы 7.8, можно добиться того, чтобы во всех вычислениях кратчайших путей (кроме первого) использовались неотрицательные веса. Теорема 9.13 (Томидзава [41], Эдмондс и Карп [14]). Пусть значения и, Ь целые. Тогда для алгоритма последовательного увеличения вдоль кратчайших путей имеется реализация со сложностью 0(nm+B(m+nlogn)), где В=- Xyev(G) 1^(^)1- Доказательство. Будем строить для каждой итерации i алгоритма увеличения вдоль кратчайших путей допустимые потенциалы щ: V(G) —> R. Начнем с произвольных допустимых потенциалов я0 для (G, с). Согласно следствию 7.7 таковые существуют и могут быть найдены за время 0(тп). Пусть теперь /{_г — поток перед итерацией L Тогда будем выполнять вычисление кратчайшего пути на итерации i относительно приведенных стоимостей сщ_г вместо с. Более того, дополним граф Gfii до G'f_ , для чего добавим ребра (t, и) с нулевым весом для всех v € V(G) (эта надстройка нужна для того, чтобы все вершины были достижимы из s). Пусть lt(v)—длина кратчайшего s-u-пути в Gff относительно весов сщ_г. Положим тогда щ{и) := щ^и) + li(y). Докажем индукцией по i, что потенциалы п{ являются допустимыми для [Gf.,c). Это утверждение, очевидно, справедливо при i = 0. Фиксируем индекс i > 0 и рассмотрим произвольное ребро е = (х, у) € E(Gfii). Тогда (по определению lt и индуктивному предположению) мы имеем kiy) < kM + сщ_г(в) = k(x) + с(е) + ян(х) - ям(у), следовательно, сщ(е) = с(е) + щ(х) - щ{у) = с(е) + щ_^х) + 1{{х) - щ_г(у) -Цу) > 0. Дяя любого ребра е = (х, у) е Pf (где Pj — увеличивающий путь на итерации Г) справедливо равенство kiy) = kM + с„^ (е) = Zf (х) + с(е) + ям(х) - тс^Су), а значит, ся (е) = 0. При этом ребро, обратное к е, также имеет нулевой вес. Поскольку каждое ребро в E(Gf.) \E(Gf ) служит обратным к ребру на Рь функция сп. действительно задает неотрицательные веса на E(Gf^). Заметим, что на итерации i кратчайшие s-t-пути в Gfii относительно с в точности являются кратчайшими s-t-путями в Gi относительно сп._г Действительно, на них не могут встречаться дополнительно добавленные ребра, выходящие из t, и, кроме того, для любого s-t-пути Р справедливо равенство сп^ (Р) -с(Р) = п^г (s) - щ_г (t). Итак, для вычисления кратчайших путей (кроме первого) мы можем воспользоваться алгоритмом Дейкстры, который имеет сложность 0(т + nlogn) при реализации на основе фибоначчиевых куч (см. теорему 7.4). Поскольку всего возможно не более В итераций, для общего времени работы оказывается справедливой оценка О (пт + В(т + п log п)). ?
§ 9.4. Алгоритм последовательного увеличения вдоль кратчайших путей 251 Время работы алгоритма, основанного на теореме 9.13, в общем случае будет экспоненциально большим, если, конечно, значение В не оказывается малым. При В = 0(п) данный способ является самым быстрым из известных. Одно из его приложений описывается в § 11.1. В оставшейся части параграфа мы покажем, как модифицировать алгоритм, с тем чтобы уменьшить количество вычислений кратчайших путей. Будем считать, что пропускные способности всех ребер бесконечны. По лемме 9.3 общий вид задачи о потоке минимальной стоимости может быть сведен к рассматриваемому. Основная идея, предложенная Эдмондсом и Карпом [14], заключается в следующем. На протяжении ряда начальных итераций мы будем рассматривать лишь те увеличивающие пути, по которым можно протолкнуть достаточно большой объем потока (обозначим его через у) Вначале положим у = 2^°sbmax^y а затем, когда будут невозможны увеличения на величину у, уменьшим у в два раза. После [log bmaxJ +1 итераций мы получим у = 1 и завершим работу (здесь снова предполагается, что значения Ъ целые). Подобный метод масштабирования оказывается полезным во многих задачах (см. также упражнение 14). Подробное описание алгоритма выглядит следующим образом. Capacity Scaling Max Flow (алгоритм масштабирования пропускных способностей) Вход: орграф G с бесконечными пропускными способностями и(е) = оо (е € E(G)), такие числа b: V(G) —> Z, что ?i>€V(g) b(v) = 0, и консервативные веса с: ?(G) —> М. Выход: Ь-поток / минимальной стоимости. (Т) Присвоить Ъ' := Ь и /(e) := 0 для всех е е E(G). Присвоить у = 2LlogbmaxJ, где bmax = max{b(y): v € V(G)}. (2) If У = 0 then stop else: Выбрать вершину s, для которой b'(s) > у. Выбрать вершину t, для которой b'(t) ^ — Т и t достижима из 5 в Gf. If таких вершин s или t не существует then goto (5). (3) Найти s-t-путь Р в Gf, имеющий минимальный вес. 0 Положить b'(s) := b'(s) -у и b'{t) := bf{t) + 7. Нарастить / вдоль Р на величину у. Goto (2). (5) If у = 1 then stop (b-потока не существует) else присвоить у := у/2, goto (2). Теорема 9.14 (Эдмондс и Карп [14]). Представленный алгоритм корректно решает задачу о потоке минимальной стоимости при целых значениях Ь, бес-
252 Глава 9. Потоки минимальной стоимости конечных пропускных способностях и консервативных весах. При подходящей реализации время его работы составляет 0(п(т + nlogn)log(2 + bmax)), где bmax = max{b(u): и eV(G)}. Доказательство. Как и ранее, корректность алгоритма прямо следует из теоремы 9.12. Заметим, что в любой момент его работы остаточная пропускная способность ребра либо бесконечна, либо составляет целое кратное числа у. Для получения требуемой оценки сложности алгоритма рассмотрим фазы, т. е. интервалы его работы, на которых у не изменяется. Докажем, что на каждой фазе выполняется не более п увеличений. Пусть у, f и У — соответствующие значения в начале некоторой фазы. Положим S := {и е V(G): b'(v) > у}, S+ ~ {v е V(G): b'(v) > 2y], T:={ue V(G): b» < -у} и T+ := {v e V(G): b'(v) < < — 2y}. Пусть R — множество вершин, достижимых из некоторого элемента S+ в Gf. Заметим, что S+ с R, Кроме того, имеем R П Т+ = 0, поскольку в противном случае предыдущая фаза не могла закончиться. Пусть (sf, tj), i = 1,..., fc, — пары вершин (s, t) в текущей фазе (в этой последовательности, конечно, возможны повторения). Поскольку 5J (R) = 0, имеем \{i:SieR, t^R}|<|{i:s^R, tf€R}|. Таким образом, число итераций fc на текущей фазе может быть оценено как fc<|{i:si,tl.€R}| + 2|{i:si^R, tteR}\ + \{i: si,ti?R}\ = = \{i:tieR}\ + \{i:si?R}\<\TnR\ + \S\R\<n, где второе с конца неравенство справедливо в силу соотношений Т+ П R = 0 hS+\R = 0. Это означает, что общее число поисков кратчайших путей на протяжении всего алгоритма составляет 0(п log(2 + bmax)). Используя метод потенциальных преобразований для ускорения вычисления кратчайших путей (см. доказательство теоремы 9.13), мы получаем для сложности алгоритма оценку 0{mn + n log(2 + bmax) (m + п log n)). ? Это был первый полиномиальный алгоритм для задачи о потоке минимальной стоимости. С помощью ряда дополнительных модификаций можно получить и сильно полиномиальную оценку сложности. Речь о ней пойдет в следующем параграфе. § 9.5. Алгоритм Орлина Алгоритм масштабирования пропускных способностей, изложенный в предыдущем параграфе, может быть улучшен. Основная идея этого изменения заключается в том, что если в некоторый момент времени работы алгоритма масштабирования пропускных способностей поток по некоторому ребру превосходит 2пу, то данное ребро можно стянуть. Более точно, заметим, что поток по такому ребру далее всегда будет оставаться положительным (а значит, его приведенная
§ 9.5. Алгоритм Орлина 253 стоимость относительно любых допустимых потенциалов в остаточном графе нулевая). Действительно, возможно не более п увеличений потока на величину у, еще п на величину у/2 и т. д. Суммарное общее изменение потока по ребру за оставшееся время работы алгоритма окажется меньше чем 2пу. Мы опишем алгоритм Орлина без явного использования стягиваний. Такой подход упрощает описание, особенно с точки зрения реализации алгоритма. В процессе работы множество F будет содержать ребра (и их обратные), которые могут быть стянуты. Граф (V(G), F) всегда будет получаться из леса путем замены каждого неориентированного ребра на два ориентированных (идущих в противоположных направлениях). В каждой связной компоненте (V(G),F) в процессе работы будет поддерживаться выделенная вершина — представитель компоненты. При этом гарантируется, что представитель компоненты является единственной несбалансированной вершиной этой компоненты. С учетом этих свойств нам понадобится выполнять больше увеличений на каждой фазе, но их число при этом увеличится не более чем на Any. Для вершины х обозначим через г{х) представителя связной компоненты (V(G),F), содержащей х. Пусть также G'— подграф графа G, содержащий ребра из F и все ребра вида (х, у), где г(х) / г(у). Ребра вне G' не будут использоваться алгоритмом. Излагаемый далее алгоритм Орлина не требует целочисленности Ь. При этом он подходит лишь для задач без ограничения на пропускные способности (см., однако, лемму 9.3). Orlin's Вход: Выход > Algorithm (алгоритм Орлина) орграф G с бесконечными пропускными способностями (е € E(G))t такие числа b: V(G) -* R, что 2yeV(G) b(v) = 0, вативные веса с: F(G) —> R. b-поток / минимальной стоимости. и(е) = оо и консер- (1) Присвоить Ь' := Ъ и /(e) := 0 для всех е е E(G). Присвоить г (и) :=и для всех и е V(G). Присвоить F := 0 и G' := G. Присвоить у = max Ib't^OI- (2) If Ь' = 0 then stop. (3) Выбрать вершину 5, для которой b'(s) > у. If такой вершины s не существует then goto (4). Выбрать вершину t, для которой b'(t) < —у и t достижима из 5 в Gf. If такой вершины t не существует then stop (b-потока не существует). Goto (5). (4) Выбрать вершину t, для которой b'(t) < —^—у. If такой вершины t не существует then goto (6).
254 Глава 9. Потоки минимальной стоимости Выбрать вершину s, для которой b'(s) > -у и t достижима из s в Gf. If такой вершины s не существует then stop (b-потока не существует). (5) Найти s-t-путь Р в Gi, имеющий минимальный вес. Присвоить b'(s) := b'(s) - у и Ь'(0 := b'(t) + у. Нарастить / вдоль Р на величину у. Goto (2). (6) If /(e) = 0 для всех е € E(G') \F then присвоить у := mini ?, max Ib'fiOl [ else присвоить у := у/2. © While существует ребро е = (х, у) е Е (G') \F, для которого /(e) > бпу, do: Присвоить F := F U {е, е"}. Пусть л:7 := г(х) и у7 := г(у). Пусть Q — х'-у'~щть в F. 1?Ь/М>0 then нарастить / вдоль Q на величину Ъ'{х'} else нарастить / вдоль пути, обратного Q, на величину — Ъ'{х'). Присвоить Ь'(у') := Ъ'{у') + Ъ'{х') и Ь'М := 0. For all е' = (v, w) € E(G0 \F: {r(v), r(w)} = {x\ y'} do: Присвоить E{G') := E{Gf) \ {e'}. Присвоить r{z) := у' для всех вершин z, достижимых из у' в F. (§) Goto ©. Представленный алгоритм принадлежит Орлину [33]. См. также работу Плот- кина и Тардош [36]. Вначале докажем его корректность. Назовем интервал между двумя последовательными изменениями у фазой. Вершина v будет называться важной, если |Ь7(у)| > ^——у- Фаза заканчивается, когда в графе не остается важных вершин. Лемма 9.15. Число увеличений, выполняемых на шаге (5) на одной фазе, не превосходит суммы числа важных вершин в начале этой фазы и числа увеличений, совершенных на шаге (7) в начале данной фазы. Доказательство. Каждое увеличение, совершаемое на шаге (5), уменьшает величину ueV(G) хотя бы на единицу. При этом увеличение на шаге © не может увеличить Ф более чем на единицу. Более того, в начале фазы Ф совпадает с числом важных вершин. ? Лемма 9.16. Алгоритм Орлина корректно решает задачу о потоке минимальной стоимости с консервативными весами. В любой момент времени в процессе его работы / представляет собой (Ъ — Ъ')-поток минимальной стоимости.
§ 9.5. Алгоритм Орлина 255 Доказательство. Прежде всего докажем, что / всегда является {Ъ — b') -потоком. В частности, требуется показать, что значения / всегда неотрицательны. Отметим, что в любой момент времени величина потока на каждом ребре E(Gf)\F, а значит, и остаточная пропускная способность обратного ребра, является целым кратным числа у. Более того, мы утверждаем, что остаточная пропускная способность любого ребра е е F является строго положительной. Действительно, рассмотрим ребро е, попавшее в множество F во время некоторой у-фазы (т. е. фазы с заданным значением у). На данной фазе может произойти не более п — 1 увеличений на шаге (7), каждое из которых имеет величину, строго меньшую 2у. Кроме того, на шаге (5) происходит не более 2п — 1 увеличений потока на величину у (см. лемму 9.15). Изучим, как может изменяться поток по ребру е, после того как оно попало в F. В рассматриваемой фазе на шаге (7) поток изменяется менее чем на 2пу. Далее, в рассматриваемой фазе на шаге (5) поток изменяется менее чем на 2пу, в следующей фазе на шаге (5) он изменяется менее чем на 2vl- и т. д. Тем самым, общее изменение потока по ребру оказывается меньше бпу. Следовательно, на каждом из ребер F n?(G) поток всегда остается положительным. Итак, функция / всегда принимает неотрицательные значения, а значит, задает (Ь — Ъ') -поток. Покажем теперь, что / всегда является (Ь — Ъ') -потоком минимальной стоимости. Исходно это утверждение верно, поскольку веса с консервативны. Пока / образует оптимальный (Ь — Ь')-поток, всякий и-ш-путь в (V(G), F) является кратчайшим у-ш-путем в Gf (наличие более короткого пути означало бы присутствие отрицательного цикла в G/). Сохранение оптимальности теперь следует из теоремы 9.12. Действительно, путь Р на шаге (5) и путь Q на шаге © являются кратчайшими в G'f и (V(G),F) соответственно, а значит, ив Gf (отметим, что для любого ребра (и, w) eE(Gf) \E(G'f) существует v-w-путъ b(V(G),F)). Осталось показать, что если алгоритм останавливается на шаге (3) или 0, получив Ъ'фО, то b-потока не существует. Пусть алгоритм остановился на шаге (3). Тогда имеется такая вершина s, что bf(s) > ^—-у, но нет вершины t, достижимой из 5 в Gf, для которой бы выполнялось неравенство bf{t) < —7. Обозначим через R множество вершин, достижимых из s в Gf. Поскольку / является (Ь — Ь7)-потоком, имеем ^]xeR(b(x) — Ь'{х)) = 0. Следовательно, 2 Нх) = J] ь'оо = Ь'(Ю + 2 ъ' М > °» jcgR xeR x<=R\{s} но при этом 5J(R) = 0. Отсюда следует, что b-потока не существует. Аналогичное рассуждение показывает отсутствие b-потока в случае, когда алгоритм останавливается на шаге 0. ? Оценим теперь время работы. Лемма 9.17 (Плоткин и Тардош [36]). Если вершина z является важной в некоторый момент времени работы алгоритма, то связная компонента (V(G), F), содержащая z, увеличится на одной из последующих \2 log п + log т] + 3 фаз.
256 Глава 9. Потоки минимальной стоимости Доказательство. Пусть для вершины z в начале некоторой фазы оказывается выполнено неравенство \b'(z)\ > ^——Уъ гДе Y = Yi- Пусть у0— значение у на предыдущей фазе (считаем, что уо = 2у\, если рассматриваемая фаза является первой). Наконец, пусть у2 — значение у спустя \2 log л + log т] + 2 фаз. Имеем Уо/2 > yi> 4n2my2. Пусть Ь^ и /а —значения Ь' и / в начале угфазы соответственно, а &2 и /2 — значения Ь' и / в конце у2-Фазь1 соответственно. Обозначим через Z связную компоненту графа (V(G),F), в которую попадает z в начале ft-фазы. Предположим, что данная компонента остается неизменной в течение последующих T21ogn + logm] + 3 фаз. Заметим, что шаг ® гарантирует выполнение равенств Ъ'{у) = О для всех таких вершин и, что г{и) фи. Следовательно, Ъ'{у) = О для всех v eZ\{z} и 2]bw-b;w=5](bw-bi(jc)) = 2 лм- Z aw- (9-4) *€Z xeZ ee5+(Z) ee5~(Z) Правая часть содержит целое кратное у0, а значит, Следовательно, \ъ < ^П < IK(*)| < ^Го < Го - Jri- (9-5) > hi- (9-6) n \1иЪЩ xeZ Как и в формуле (9.4), мы имеем S /2(е) - 2 /2(е) = 2 bW "ВД- e(=5+(Z) ee5"(Z) *eZ „ -1 Применяя неравенство (9.6) и оценку \b'2(z)\ < у2> получаем п Е I/2&0I > I Z bWl " |b2(z)l > Ь - V^ > (4nm" Dr2 > ^(бп|). eG5+(Z)u5"(Z) *eZ Итак, существует хотя бы одно ребро е, ровно один конец которого лежит в Z и для которого выполнено неравенство /2(е) > 6п-^. С учетом шага © алгоритма То отсюда следует, что множество Z будет увеличено в начале у-фазы. ? Теорема 9.18 (Орлин [33]). Алгоритм Орлина корректен и решает задачу о потоке минимальной стоимости без ограничений на пропускные способности и при консервативных весах за время 0(п log п{т-\-п log п)). Доказательство. Корректность была доказана выше (лемма 9.16). На каждой фазе шаг (7) занимает 0(m(i + 1)) единиц времени, где i — число итераций цикла «пока». Заметим, что общее число таких итераций не превышает п — 1, поскольку количество связных компонент графа (V(G), F) уменьшается с каждой итерацией. Согласно шагам (6) и © возможно не более [log п] + 3 последовательных фаз без важных вершин. Тогда по лемме 9.17 общее число фаз составляет 0(п log m).
§ 9.5. Алгоритм Орлина 257 По лемме 9.15 общее число увеличений на шаге (5) не превышает п — 1 плюс число пар вида (у, z), где z— важная вершина в начале f-фазы. По лемме 9.17 с учетом того, что для всех таких вершин v, что г (и) ф v, поддерживается равенство Ъ'{у) = О, число упомянутых пар не превышает значения O(logm), умноженного на число подмножеств вершин, служащих в некоторый момент работы алгоритма связными компонентами графа (V(G),F). Семейство таких подмножеств ламинарно, поэтому их может быть не более 2п—1 (следствие 2.15). Значит, всего на шаге (5) происходит О (n logm) увеличений. Используя метод из теоремы 9.13, мы получаем оценку О (тп log т + (п log т)(т + п log п)) на общее время работы. Поскольку среди множества параллельных ребер можно оставить лишь одно, самое дешевое, граф можно предполагать простым. Тогда т = 0{п2) и logm = O(logn). ? Полученная оценка является наилучшей известной в случае задачи о потоке минимальной стоимости без ограничений на пропускные способности. Теорема 9.19 (Орлин [33]). Задача о потоке минимальной стоимости общего вида может быть решена за время 0(тlogт(т 4- nlogn)), где п = |V(G)| и m = \E(G)l Доказательство. Применим преобразование из леммы 9.3. Нам потребуется решить задачу о потоке минимальной стоимости без ограничений на пропускные способности на двудольном графе Я, в котором V(H) = A! U В\ где А' = E(G) и В' = V(G). Поскольку граф Я ациклический, исходные допустимые потенциалы можно найти за время 0(|Е(Я)|) = 0(т). Как показано выше (теорема 9.18), общее время работы доминируется О(тlogm) вычислениями кратчайших путей в подграфе Я с неотрицательными весами. Перед запуском алгоритма Дейкстры применим следующее преобразование ко всякой вершине а е А', не являющейся концом искомого пути: добавим ребро (Ь, Ь') для каждой пары ребер (Ь,а), (а,Ъ') и положим его вес равным сумме весов ребер (Ь, а) и (а, Ъ')\ затем удалим а. Полученный в результате экземпляр задачи о кратчайших путях, очевидно, эквивалентен исходному. Поскольку каждая вершина в А' имеет четыре инцидентных ребра в Я, получившийся граф содержит 0(т) ребер и не более п + 2 вершин. Предобработка каждой вершины занимает константное время, т. е. всего 0(т). Столько же времени уходит на то, чтобы превратить кратчайший путь в преобразованном графе в кратчайший путь в исходном. Аналогично времени 0(т) достаточно для того, чтобы восстановить оценки расстояний алгоритма Дейкстры для удаленных вершин исходного графа. Получаем общее время работы 0((m log m) (m + п log п)). ? Для задачи о потоке минимальной стоимости общего вида полученная оценка является наилучшей известной. Алгоритм с той же оценкой сложности, работающий непосредственно на сетях с ограничениями на пропускные способности, был описан Фигеном [42].
258 Глава 9. Потоки минимальной стоимости § 9.6. Сетевой симплекс-метод Задача о потоке минимальной стоимости представляет собой частный случай задачи линейного программирования. Применяя к ней симплекс-метод и используя тот факт, что возникающая программа имеет специальный вид, мы получим так называемый сетевой симплекс-метод. Для полноты изложения охарактеризуем вначале множество базисных решений задачи (при доказательстве корректности это описание нам не потребуется). Определение 9.20. Рассмотрим экземпляр (G,u,b,c) задачи о потоке минимальной стоимости. Тогда b-поток / в (G, и) называется остовным решением (spanning tree solution), если граф (V(G), {е ЕЕ (G): 0 < /(e) < и(е)}) не содержит неориентированных циклов. Утверждение 9.21. Экземпляр задачи о потоке минимальной стоимости либо имеет оптимальное решение, являющееся остовным, либо вовсе не имеет оптимальных решений. Доказательство. Рассмотрим произвольное оптимальное решение /. Пусть существует неориентированный цикл С в графе (V(G), {е € E(G): 0</(e) < u(e)}). Тогда в Gf мы имеем два ориентированных цикла С' и С", получающихся из С. Пусть в — минимальная остаточная пропускная способность ребер из множества Е(С') U Е(С"). Тогда, увеличивая / на величину е вдоль С7 и С", мы получим пару допустимых решений, обозначаемых /' и /" соответственно. Поскольку 2с(/) = с(/') + с(/"), оба решения /' и /" являются оптимальными. Хотя бы одно из них содержит меньше таких ребер е, что 0 < /(e) < и{е), чем /. Таким образом, применяя описанную процедуру, менее чем через |E(G)| шагов мы получим оптимальное решение, имеющее остовный вид. ? Следствие 9.22. Рассмотрим экземпляр (G, и, Ь, с) задачи о потоке минимальной стоимости. Тогда базисные решения линейной программы { xeR?^: 0 <хе < и{е) (е gE(G)), J] ^" S xe = b(v) (veV(G)) в точности являются остовными решениями задачи (G, и, Ь, с). Доказательство. Утверждение 9.21 показывает, что каждое базисное решение является остовным. Для заданного остовного решения / рассмотрим неравенства вида хе > 0, где е е E(G) и /(e) = 0, хе < и{е), где е е E(G) и /(e) = и{е), а также ^хе-^Гхе = Ъ(и) ее5+(и) е€=5~(у) для всех вершин и, кроме одной вершины в каждой связной компоненте (V(G), {е е ?(G): 0 < /(e) < u(e)}). Все эти |E(G)| неравенств выполняются для / как равенства, а соответствующая подматрица является невырожденной. Следовательно, / является базисным решением. ?
§ 9.6. Сетевой симплекс-метод 259 В остовном решении каждое ребро имеет один из трех типов: ребро с нулевым потоком, насыщенное ребро или ребро, поток по которому положителен, но меньше пропускной способности. Будем считать, что граф G связен. Тогда третий класс ребер можно расширить до связного остовного подграфа без неориентированных циклов (т. е. превратить его в остовное дерево, откуда и происходит термин «остовное решение»). Определение 9.23. Пусть (G, и, Ь, с) — экземпляр задачи о потоке минимальной стоимости, причем граф G связен. Тогда остовной структурой называется четверка (г, Г,L,17), где г е V(G), E(G) = Т и L и U, \Т\ = \V(G)\ - 1 и (V(G), Г) не содержит неориентированных циклов. Введем понятие b-потока, связанного с остовной структурой (г, Г, L, U). Данный поток / определяется равенствами • /(e) := 0 при eel, • /(e) := и{е) при е е [/, • /(Ю := YtveCe Ъ0>) + Zee[/n5-(Ce) "(е) ~XUl/n5+(Ce) "W ПРИ е G Г> ГДе Д^ Реб" ра е = (у, ш) через Се обозначена связная компонента графа (V(G), Г\{е}), содержащая у. Четверка (г, Г, L, (7) называется допустимой, если 0 < /(e) < iz(e) для всех е Е Г. Назовем ребро (v, w) в Т нисходящим, если i> принадлежит неориентированному r-ш-пути в Г, иначе назовем его восходящим. Четверка (г, Г, L, U) называется сильно допустимой, если 0 < /(e) < и(е) для каждого нисходящего ребра е е Г и 0 < /(e) < и(е) для каждого восходящего ребра е € Т. Функция п: V(G) —> R, однозначно определяемая равенствами я (г) = 0 и ся(е) = 0 для всех е е Г, задает связанные с остовной структурой (г, ГД, 10 потенциалы (potential associated with a spanning tree structure). Очевидно, что b-поток / связанный с произвольной остовной структурой, удовлетворяет равенствам Е/м-?]/&)=к*) е&5+(у) ee5~(v) для всех v € V(G) (при этом он вовсе не обязан быть допустимым Ь-потоком). Более того, заметим следующее. Утверждение 9.24. Пусть заданы экземпляр (G, и, Ъ, с) задачи о потоке минимальной стоимости и остовная структура (r,T,L,U). Тогда b-поток / и потенциалы п, связанные с ней, могут быть вычислены за время 0(т) и 0(п) соответственно. Более того, если значения Ъии целые, то целыми также будут значения /. Также если значения с целые, то и значения п будут целыми. Доказательство. Потенциалы, связанные с (г, T,L, U), могут быть вычислены простым просмотром ребер графа Г и им обратных. Кроме того, b-поток, связанный с (г, Г, L, U), может быть вычислен за линейное время путем сканирования вершин в порядке неувеличения расстояний от г. Заявленные свойства целочисленное™ прямо следуют из построения. ?
260 Глава 9. Потоки минимальной стоимости В процессе работы сетевой симплекс-метод поддерживает сильно допустимую остовную структуру и постепенно изменяет ее, добиваясь оптимальности. Заметим, что из следствия 9.8 легко вытекает следующий критерий оптимальности. Утверждение 9.25. Пусть (г, Г, L, U) — допустимая остовная структура, an — связанные с ней потенциалы. Предположим, что • сЛе) ^ 0 для всехeeLu • сп{е) < 0 для всех eGU. Тогда b-поток, связанный с (г, Г, L, U), оптимален. ? Отметим, что п{и) также совпадает с длиной r-y-пути в G, состоящего лишь из ребер графа Г или им обратных. Рассмотрим ребро е = (v, w) еЕ(G). Возьмем е и добавим к нему w-v-тгугъ, состоящий лишь из ребер графа Г и им обратных. Получающийся цикл назовем фундаментальным циклом С ребра е. Вершина цикла С, ближайшая к г в Г, называется его пиком. Итак, для ребра e = (v,w)?T величина сп(е) = с(е) + n(v)—n(w) представляет собой стоимость проталкивания единицы потока вдоль фундаментального цикла е. Есть несколько способов получить начальную допустимую остовную структуру. Например, можно найти некоторый b-поток (решая задачу о максимальном потоке), затем применить процедуру из доказательства утверждения 9.21, выбрать г произвольным образом и, наконец, определить T,L,U в соответствии с полученным потоком (расширяя при необходимости множество Г). Другой вариант состоит в применении «первой фазы» симплекс-метода. Однако оба эти способа могут не дать сильно допустимого решения. Простейший способ исправить ситуацию заключается в добавлении вспомогательных ребер большой стоимости и достаточной пропускной способности между г и всеми остальными вершинами. Более точно, для каждого стока и е V(G)\{r} мы добавим ребро (г, и) с пропускной способностью — Ъ{у), а для всех остальных вершин v е V(G) \ {г} — ребро {v, г) с пропускной способностью Ъ(у) + 1. Стоимость каждого вспомогательного ребра должна быть достаточно большой, чтобы их было невыгодно использовать в оптимальном решении. Например, в качестве стоимости можно взять число 1 + (|V(G)| — 1) maxeeE(G) |с(е)| (упражнение 20). Теперь в качестве Г мы можем взять множество всех вспомогательных ребер, в качестве L — множество всех исходных ребер и положить U := 0. Полученная остовная структура будет сильно допустимой. Network Simplex (сетевой симплекс-метод) Вход: экземпляр (G, и, Ь, с) задачи о потоке минимальной стоимости и сильно допустимая остовная структура (г, Т, LtU). Выход: оптимальное решение /. (Т) Вычислить b-поток / и потенциалы я, связанные с (г, Г, L, U). (2) Выбрать такое ребро е eL, что сп (е) < 0, либо такое ребро е е U, что сп (е) > 0. If такого ребра е не существует then stop.
§ 9.6. Сетевой симплекс-метод 261 (3) Пусть С — фундаментальный цикл для е (если е е L) или для е" (если eel/). Пусть у :=с7Г(е). @ Пусть 5 := min uf (е') ие' — ребро, на котором достигается минимум. е'€Е(С) (Если таких ребер несколько, то выбрать последнее при движении по циклу С в соответствии с его ориентацией, начиная с вершины-пика.) Выбрать такое ребро е0 е Е (G), что е' совпадает либо с е0, либо с е^. (5) Удалить е из L или U. Присвоить Г := (Г U {е}) \ {е0}. If е' = е0 then добавить е0 в [7 else добавить е0 в L. (6) Нарастить / на величину 5 вдоль С. Пусть X — связная компонента графа (V(G), Г\{е}), содержащая г. If е е 5+(Х) then присвоить я(ь>) := n(v) + 7 для всех и е V(G) \Х. If е е 5~(Х) then присвоить п{у) := л(и) — у для всех v е V(G) \Х. Goto (2). Отметим, что вместо выполнения шага (6) мы могли бы просто перейти к шагу ф, поскольку смысл шага (6) заключается ровно в вычислении потока / и потенциалов я, связанных с новой остовной структурой. Также отметим, что возможен случай е = е0, тогда X = V(G), а Г и тг не изменяются, однако при этом ребро е переходит из множества L в U (или наоборот) и 5 = и{е). Теорема 9.26 (Данциг [13], Каннингем [12]). Сетевой симплекс-метод завершает работу за конечное число итераций и находит оптимальное решение. Доказательство. Вначале заметим, что на шаге (6) / остается b-потоком, а тг — потенциалами, связанными с (г, Г, L, U). Докажем теперь, что остовная структура, поддерживаемая алгоритмом, является сильно допустимой. Выбор значения 5 гарантирует, что неравенства О < /(e) < и{е) сохраняются для всех е, а значит, остовная структура остается допустимой. Поскольку на ребрах на пути от конца ребра е' до пика цикла С минимум на шаге 0 не достигается, они сохраняют положительную остаточную пропускную способность и после увеличения. Рассмотрим теперь ребра на пути от пика цикла С до начала ребра е7. Требуется показать, что обратные к ним после увеличения имеют положительную остаточную пропускную способность. Если 5 > 0, то данное утверждение очевидно. В противном случае (при 5 = 0), поскольку остовная структура была сильно допустимой до увеличения, ни ребро е, ни ребро *ё не могут принадлежать данному пути (т. е. е = е0 или 5~(Х) П Е (С) П {е, е"} Ф 0). Наконец, ребра, обратные к тем, что лежат на пути от пика цикла С к началу ребра е или *ё, имели положительную остаточную пропускную способность. Согласно утверждению 9.25 если алгоритм закончит свою работу, то найденный им поток / будет оптимальным. Покажем, что алгоритм не может выполнить две итерации с одной и той же парой (/, тг), значит, каждая остовная структура встречается в процессе его работы не более одного раза.
262 Глава 9. Потоки минимальной стоимости На каждой итерации стоимость потока уменьшается на величину \у\5. Поскольку у ф 0, требуется рассмотреть лишь те итерации, на которых 5 = 0. В этом случае стоимость потока остается прежней. Если е ф е0, то е е L П 5~(Х) или е € U П 5+(Х), значит, сумма ^у€У(С) 7г(и) строго уменьшается (хотя бы на \у\). Наконец, если 5 = 0 и е = е0, то а(е) = 0, X = V(G), потенциалы п остаются прежними и размер |{е е L: с^Се) < 0}| + \{е е С/: сп{е) > 0}| строго уменыиает- ся. Отсюда следует, что алгоритм не может выполнить две итерации с одной и той же остовной структурой. ? Несмотря на то что сетевой симплекс-метод не является полиномиальным, он весьма эффективен на практике. Орлин [34] предложил вариант сетевого симплекс-метода, работающий за полиномиальное время. Полиномиальные двойственные версии сетевого симплекс-метода были описаны Орлином, Плоткиным и Тардош [35], а также Армстронгом и Цзинем [10]. § 9.7. Потоки во времени Рассмотрим теперь потоки во времени (flows over time), иногда также называемые динамическими потоками (dynamic flows). Теперь величина потока по ребру может зависеть от времени, а поток, входящий в ребро, достигает его конца с некоторой заданной задержкой. Определение 9.27. Пусть (G, i/, s, t) — сеть с временами транзита I: E(G) -> R+ и временным горизонтом Т € R+. Тогда s-t-потпок во времени f (s-t-flow over time) представляет собой набор измеримых по Лебегу функций /е: [0, Т] —> R+ для всех е € E(G), где /е(т) < и{е) для всех т € [0, Г] и е е E(G), а также max{0,a—1{е)} а exf(v,a):=Y< \ /eOOdr-J] |/е(т)с*т>0 (9.7) для всех ug V (G)\{s} пае [0,Г]. Значение /е(т) называется мощностью потока (rate of flow), поступающего в ребро е в момент времени т (и покидающего данное ребро спустя время 1{е)). Условие (9.7) разрешает возникновение избытков потока, как и в случае s-t-пред- потоков. Естественная задача состоит в максимизации потока, прибывающего в сток t. Max Flow Over Time (задача о максимальном потоке во времени) Дано: сеть (G, и, s, t), времена транзита I: ?(G) —> R+ и временной горизонт Г€Е+. Надо: найти s-t-поток во времени /, для которого величина value(/) := := ехД*:, Г) максимальна.
§ 9.7. Потоки во времени 263 В заключение главы мы изложим результат Форда и Фалкерсона [16], доказавших, что данная задача сводится к задаче о потоке минимальной стоимости. Теорема 9.28. Задача о максимальном потоке во времени имеет решение с такой же оценкой сложности, что и задача о потоке минимальной стоимости. Доказательство. Пусть экземпляр задачи (G, и, 5, t, I, Т) задан, как указано выше. Рассмотрим новое ребро е' = (t, s) и новый граф G' := G + е'. Положим ц(е') := := u(E(G)) +1, с(е7) := —Т и с(е) := 1{е) для всех е € E(G). Рассмотрим экземпляр (G', и, О, с) задачи о потоке минимальной стоимости. Пусть /' — его оптимальное решение, т. е. циркуляция минимальной стоимости (относительно с) в (G', и). Согласно утверждению 9.6 циркуляция /' может быть разложена в потоки по циклам, т. е. найдутся такое семейство <? циклов bG'h такие положительные числа h: ^ -> R+, что /'О) = Y* {МС) :Се^,еб Е(С)}. Поскольку /' имеет минимальную стоимость, получаем, что с(Е(С)) < 0 для всех Се^. Рассмотрим такой цикл Се^, что с(Е(С)) < 0. Тогда С должен проходить через е'. Для ребра е = (у, ш) е Е(С)\{е'} обозначим через d^ расстояние от s до i; в (С, с). Положим №) := Z{h(C) : С G *' С^(С)) < °' е G Е(С)' de<T< de -С(В(С))} для е е Е (G) и т е [0, Г]. Итак, мы определили s-t-поток во времени, при котором в промежуточных вершинах не возникает избытков (т. е. ех^(у, а) = 0 для всех veV(G)\ {s, t] и всех а е [0, Г]). Более того, Т-Ке) value(/*) = ]T Г /;(T)dT = -J]c(e)//W. Докажем, что поток /* оптимален. Для этого рассмотрим произвольный s-t-поток во времени /. Положим /е(т) := 0 для всех е е E(G) и т ^ [0, Г]. Пусть п{у) := Г + min{0,dist(G/>c)(s,i>)} при у € V(G). Поскольку G', не содержит отрицательных циклов (см. теорему 9.7), набор п задает допустимые потенциалы в (G'„ с). Имеем value(/) = ex/(t, Г) < J] ex/i/, тф)) ueV(G) с учетом условий (9.7), n{t) = Г, rc(s) = 0 и 0 < п(и) < Г для всех и е V(G). Следовательно, value(/)< J] e=(y,u;)e?(G) J] (я(ш)-1(е)-я(и))и(е) = e=(u,u;)e?(G): n(w)—l(e)>n(y)
264 Глава 9. Потоки минимальной стоимости = 2 {.n{w)-l(e)-n{y))f'{e)= ? (я(и/)-с(е)-я(1/))/'(е) = e=(y,u;)e?(G) e=(u,u;)GE(G/) = ~2 c(e)/'(e)=valueCr). ? e=(v,w)eE(G') Другие варианты задач о потоках во времени оказываются существенно более сложными. Используя технику минимизации субмодулярных функций (см. гл. 14), Хопп и Тардош [25] решили так называемую задачу о быстрейшей перевозке (quickest transshipment problem) с несколькими источниками и стоками для случая целых времен транзита. Задача поиска потока во времени минимальной стоимости является NP-трудной (Клинц и Вёгингер [30]). Более подробную информацию можно найти в работе Флейшер и Скутеллы [15], где также приведен ряд приближенных алгоритмов. Упражнения 1. Покажите, что задача о максимальном потоке может рассматриваться как частный случай задачи о потоке минимальной стоимости. 2 (Хоффман [24]). Пусть G— орграф с нижними и верхними пропускными способностями I, и: E(G) —> R+, где 1(e) < и(е) для всех е е E(G), и пусть заданы числа Ъъ b2: V(G) —> R, причем Ъг(и) < b2(v) для всех и е V(G). Докажите, что поток /, удовлетворяющий условиям 1(e) < /(e) < и(е) для всех е €. E(G) и bi(v) < 2 f& ~ 2 -f(е) < b2^ Д™ всех v G VW> ee5+(v) ее 5" (у) существует, если и только если J] и(е) > maxjj] b^i/), - ? b2(u)} + J] Z(e) для всех X с V(G). ееб+(Х) ^еХ yeV(G)\X J ееб-(Х) Замечание. Данное утверждение обобщает упражнение 4 из гл. 8 и теорему 9.2. 3 (Форд и Фалкерсон [17]). Докажите следующую теорему, принадлежащую Оре [32]. Пусть заданы орграф G и неотрицательные числа а(х), Ь(х) для всех х е V(G). Тогда в G найдется такой остовный подграф Я, что |5+(х)| = а(х) и |5~(х)| = Ъ(х) для всех х е. V(G), если и только если jcgV(G) xeV(G) И J] а(х) < J] min{b(y), |Sj(X\{y}) n 5~(y)\} для всех X с V(G). хеХ y€V(G) 4. Рассмотрим экземпляр (G, u, с, b) задачи о потоке минимальной стоимости, в котором с(е)>0 для всех е е? (G). Пусть F — множество ребер е е?(G), для которых существует такое оптимальное решение /, что /(e) > 0. Докажите, что любой цикл в (V(G), F) состоит исключительно из ребер е с нулевым весом с(е).
Упражнения 265 5. Рассмотрим вариант задачи о потоке минимальной стоимости, в котором для некоторых ребер е выбраны бесконечные пропускные способности (и(е) = оо). (а) Покажите, что экземпляр задачи неограничен, если и только если существует отрицательный цикл, все ребра которого имеют бесконечные пропускные способности. (б) Покажите, как определить за время 0(п3 + т), является ли экземпляр задачи неограниченным. (в) Покажите, что в каждом ограниченном экземпляре задачи все бесконечные пропускные способности можно эквивалентно заменить конечными. 6* (Хассин [22]). Пусть (G, и, с, Ь) — экземпляр задачи о потоке минимальной стоимости. Скажем, что потенциалы тг: V(G) —> R оптимальны, если существует такой Ь-поток / минимальной стоимости, что тг являются допустимыми потенциалами для (Gf, с). (а) Докажите, что потенциалы тг: V(G) —> R оптимальны, если и только если для всех X с V{G) выполнены неравенства Ь(Х)+ J] u(e)< J] и(е). ее5-(Х):сп(е)<0 е<=5+(Х): ся(е)<0 (б) Покажите, как найти для заданных потенциалов тг: V (G) —>R множество X, нарушающее условия (а), либо установить, что данные условия выполнены. (в) Пусть известны оптимальные потенциалы, покажите тогда, как найти Ь-поток минимальной стоимости за время 0(п3). Замечание. Данные утверждения лежат в основе целого класса так называемых алгоритмов сокращения разрезов для задачи о потоке минимальной стоимости. 7. Рассмотрим следующую алгоритмическую схему для задачи о потоке минимальной стоимости: вначале найдем произвольный b-поток. Затем, пока есть отрицательные увеличивающие циклы, будем увеличивать текущий поток вдоль них (всякий раз выполняя увеличение на максимально возможное значение). Как было показано в §9.3, если в качестве очередного цикла всякий раз выбирать цикл с минимальным средним весом, то в итоге получится сильно полиномиальный алгоритм. Докажите, однако, что без этого уточнения при неудачном выборе циклов алгоритм может вовсе не закончить работу. (Используйте конструкцию из упражнения 2 гл. 8.) 8. Рассмотрим задачу из упражнения 2 с весами с: E(G) —> R. Как найти поток минимальной стоимости, удовлетворяющий ограничениям из упражнения 2? (Сведите эту задачу к стандартной задаче о потоке минимальной стоимости.) 9. Ориентированная задача китайского почтальона может быть сформулирована следующим образом: для заданного сильно связного простого орграфа G с весами с: Е (G) —> R+ найти такую функцию /: ? (G) —> N, что граф, содержащий /(e) копий каждого ребра е gE(G), является эйлеровым и сумма 2eeE(G) с(е)/(е) минимальна. Как решить данную задачу за полиномиальное время? (Неориентированная задача китайского почтальона будет рассматриваться в §12.2.)
266 Глава 9. Потоки минимальной стоимости 10*. Задача о дробном b-паросочетании определяется следующим образом. Пусть заданы неориентированный граф G, пропускные способности ребер и: E(G) -> R+, числа Ъ: V(G) -> R+ и веса с: E(G) -* R. Требуется найти такую функцию /: E(G) -> R+, что /(e) < и(е) для всех е е E(G) и ?е€5(у) /(e) < b(i;) для всех и е V(G) и сумма ^]eeE(G) с(е)/(е) максимальна. (а) Покажите, как решить данную задачу путем сведения ее к задаче о потоке минимальной стоимости. (б) Пусть числа Ъ и и целые. Покажите, что в этом случае задача о дробном b-паросочетании имеет полуцелое оптимальное решение / (т. е. 2/(е) е Z для BcexeeE(G)). Замечание. Целочисленная задача о b-паросочетании максимального веса будет изучена в § 12.1. 11 * (Аркин и Сильверберг [9]). Предложите комбинаторный полиномиальный алгоритм для задачи об упаковке отрезков, рассмотренной в упражнении 16 гл. 5. 12. Рассмотрим линейную программу вида тах{сл:: Ах < Ь}, где все элементы матрицы А равны —1, 0, или 1, причем в каждом столбце матрицы присутствует не более одного значения 1 и не более одного значения —1. Покажите, что данная линейная программа эквивалентна экземпляру задачи о потоке минимальной стоимости. 13. Докажите, что алгоритм последовательного увеличения вдоль кратчайших путей корректно выясняет, существует ли Ь-поток. 14 (Грётшель и Ловас [21]; см. также работы Шульца, Вейсмантеля и Циг- лера [37] и Шульца и Вейсмантеля [38]). Метод масштабирования, введенный в § 8.4 и 9.4, может рассматриваться более широко. Пусть Ф — семейство систем множеств, каждая из которых содержит пустое множество. Предположим, что существует алгоритм, решающий следующую задачу: по заданной системе множеств {Е, &) е Ф, весам с: Е —> Z+ и множеству Хе,? найти такое множество Y е &, что с (7) > с(Х), или установить, что такого Y не существует. Предположим также, что данный алгоритм имеет время работы, полиномиальное по size (с). Докажите, что тогда существует алгоритм, находящий множество максимального веса Хе& для заданной системы (Е,«?)еФи весов с: Е —»Z+, время работы которого полиномиально по size (с). 15. Докажите, что алгоритм Орлина всегда находит остовное решение. 16. Докажите, что на шаге (7) алгоритма Орлина значение бпу можно заменить на 5пу. 17. Рассмотрим вычисление кратчайших путей с неотрицательными весами (с помощью алгоритма Дейкстры) в алгоритмах из § 9.4 и 9.5. Докажите, что даже в случае графов с параллельными ребрами это вычисление можно выполнить за время 0(п2), если мы располагаем списками инцидентности графа G, упорядоченными по стоимостям ребер. Выведите отсюда, что время работы алгоритма Орлина составляет 0(mn2 logm). 18* (Гольдберг и Тарджан [3]). Алгоритм Push-Relabel (см. § 8.5) может быть обобщен на случай задачи о потоке минимальной стоимости. Пусть задан экземпляр задачи (G, и, Ъ, с) с целыми стоимостями с и требуется найти Ь-по-
Упражнения 267 ток / и допустимые потенциалы п в {Gf, с). Вначале положим я := 0 и насытим все ребра с отрицательной стоимостью. Затем применим шаг (3) из алгоритма Push-Relabel со следующими изменениями. Ребро е будет считаться допустимым, если esE(Gf) и сп(е) < 0. Вершина и будет активной, если Ъ{у) + exf(v) > 0. Операция relabel (у) будет выполнять присваивание n{v) :=тах{тг(ш) — с(е) — 1: е = (v,w) eE(Gf)}. Для выполнения операции push(e), где е € 5+(v), будем выбирать у := min{b(v) + exf(v), uf(e)}. (а) Докажите, что число операций relabel составляет 0(п2|стах|), где стах= тахс(е). eeE(G) Указание. Для любой активной вершины и должна существовать вершина ш, достижимая в Gf из v, для которой b(w) + ех^(ш) < 0. Заметьте, что значение Ь(ш) не изменялось алгоритмом, и вспомните доказательства лемм 8.25 и 8.27. (б) Покажите, что общее время работы составляет 0(ji2mcmax). (в) Докажите, что данный алгоритм находит оптимальное решение. (г) Примените технику масштабирования и получите алгоритм со сложностью 0(n2mlogcmax) для задачи о потоке минимальной стоимости с целыми стоимостями с. 19. Рассмотрим экземпляр (G, и, Ъ, с) задачи о потоке минимальной стоимости, где и и Ъ целые. Известно, что если существует b-поток в (G, и), то существует целочисленный b-поток минимальной стоимости. Докажите данный факт, используя (а) алгоритм сокращения вдоль минимальных средних циклов, (б) алгоритм увеличения вдоль кратчайших путей, (в) соображения тотальной унимодулярности. 20. Пусть (G, и, с, Ь) — экземпляр задачи о потоке минимальной стоимости. Рассмотрим такое ребро ё е ?(G), что c(e)>(|V(G)|-l) max |с(е)|. e€?(G)\{e} Докажите, что если существует такой b-поток / в (G, и), что /(e) = 0, то равенство /(e) = 0 справедливо для любого оптимального решения /. 21. Пусть заданы сеть (G, и, 5, t) с целыми временами транзита I: E(G) —> Z+ и временным горизонтом Г ? N, число У е R+ и стоимости с: E(G) -> R+. Требуется найти такой s-t-поток во времени /, что value (/) = V и стоимость т 2С00 f/eWdT e<EE(G) J минимальна. Покажите, как решать эту задачу в предположении, что значение Г является константой. Указание. Рассмотрите расширенную во времени сеть, содержащую по копии графа G для каждого дискретного момента времени.
268 Глава 9. Потоки минимальной стоимости Литература Общая литература [1] Ahuja R. К., Magnanti Т. L., Orlin J. В. Network Flows. Prentice-Hall, Englewood Cliffs, 1993. [2] Cook W.J., Cunningham W.H., Pulleyblank W.R., Schrijver A. Combinatorial Optimization. Wiley, New York, 1998, Chapter 4. [3] Goldberg A. V., Tardos Ё., Tarjan R. E. Network flow algorithms // Paths, Flows, and VLSI-Layout (B. Korte, L. Lovasz, H. J. Promel, A. Schrijver, eds.), Springer, Berlin, 1990. P. 101-164. [4] Gondran M., Minoux M. Graphs and Algorithms. Wiley, Chichester, 1984, Chapter 5. [5] Jungnickel D. Graphs, Networks and Algorithms. Third Edition. Springer, Berlin, 2007, Chapters 10 and 11. [6] Lawler E. L. Combinatorial Optimization: Networks and Matroids. Holt, Rinehart and Winston, New York, 1976, Chapter 4. [7] Ruhe G. Algorithmic Aspects of Flows in Networks. Khrwer Academic Publishers, Dordrecht, 1991. [8] Skutella M. An introduction to network flows over time // Research Trends in Combinatorial Optimization (W. J. Cook, L. Lovasz, J. Vygen, eds.), Springer, Berlin, 2009. P. 451-482. Процитированные работы [9] Arkin E. M., Silverberg E. B. Scheduling jobs with fixed start and end times // Discrete Applied Mathematics. 1987. Vol. 18. P. 1-8. [10] Armstrong R. D., Jin Z. A new strongly polynomial dual network simplex algorithm // Mathematical Programming. 1997. Vol. 78. P. 131-148. [11] Busacker R. G., Gowen P. J. A procedure for determining a family of minimum-cost network flow patterns // ORO Technical Paper 15, Operational Research Office, Johns Hopkins University, Baltimore, 1961. [12] Cunningham W. H. A network simplex method // Mathematical Programming. 1976. Vol. 11. P. 105-116. [13] Dantzig G. B. Application of the simplex method to a transportation problem // Activity Analysis and Production and Allocation (T. C. Koopmans, ed.), Wiley, New York, 1951. P. 359-373. [14] Edmonds J.y Karp R. M. Theoretical improvements in algorithmic efficiency for network flow problems // Journal of the ACM. 1972. Vol. 19. P. 248-264. [15] Fleischer L., Skutella M. Quickest flows over time // SIAM Journal on Computing. 2007. Vol.36. P. 1600-1630. [16] Ford L. R., Fulkerson D. R. Constructing maximal dynamic flows from static flows // Operations Research. 1958. Vol.6. P.419-433. [17] Ford L. R., Fulkerson D. R. Flows in Networks. Princeton University Press, Princeton, 1962. [18] Gale D. A theorem on flows in networks // Pacific Journal of Mathematics. 1957. Vol. 7. P. 1073-1082. [19] Goldberg A. V., Tarjan R. E. Finding minimum-cost circulations by cancelling negative cycles // Journal of the ACM. 1989. Vol. 36. P. 873-886.
Литература 269 Goldberg A. V., Tarjan R.E. Finding minimum-cost circulations by successive approximation // Mathematics of Operations Research. 1990. Vol. 15. P. 430-466. Grotschel M., Lovdsz L. Combinatorial optimization // Handbook of Combinatorics; Vol. 2 (R. L. Graham, M. Grotschel, L. Lovasz, eds.), Elsevier, Amsterdam, 1995. Hassin R. The minimum cost flow problem: a unifying approach to dual algorithms and a new tree-search algorithm // Mathematical Programming. 1983. Vol. 25. P. 228-239. Hitchcock F. L. The distribution of a product from several sources to numerous localities // Journal of Mathematical Physics. 1941. Vol. 20. P. 224-230. Hoffman A. J. Some recent applications of the theory of linear inequalities to extremal combinatorial analysis // Combinatorial Analysis (R. E. Bellman, M. Hall, eds.), AMS, Providence, 1960. P. 113-128. Hoppe В., Tardos Ё. The quickest transshipment problem // Mathematics of Operations Research. 2000. Vol. 25. P. 36-62. Iri M. A new method for solving transportation-network problems // Journal of the Operations Research Society of Japan. 1960. Vol. 3. P. 27-87. Jewell W. S. Optimal flow through networks // Interim Technical Report. №8. МГТ, 1958. KarzanovA. V., McCormick S. T Polynomial methods for separable convex optimization in unimodular linear spaces with applications // SIAM Journal on Computing. 1997. Vol. 26. P. 1245-1275. Klein M. A primal method for minimum cost flows, with applications to the assignment and transportation problems // Management Science. 1967. Vol. 14. P. 205-220. Klinz В., Woeginger G. J. Minimum cost dynamic flows: the series-parallel case // Networks. 2004. Vol.43. P. 153-162. Orden A. The transshipment problem // Management Science. 1956. Vol. 2. P. 276-285. Ore O. Studies on directed graphs I // Annals of Mathematics. 1956. Vol. 63. P. 383-406. Orlin J. B. A faster strongly polynomial minimum cost flow algorithm // Operations Research. 1993. Vol.41. P.338-350. Orlin J. B. A polynomial time primal network simplex algorithm for minimum cost flows // Mathematical Programming. 1997. Vol. 78. P. 109-129. Orlin J. В., Plotkin S.A., Tardos Ё. Polynomial dual network simplex algorithms // Mathematical Programming. 1993. Vol. 60. P. 255-276. Plotkin S.A., Tardos Ё. Improved dual network simplex // Proceedings of the 1st Annual ACM-SIAM Symposium on Discrete Algorithms. 1990. P. 367-376. Schulz A. S., Weismantel R., Ziegler G. M. 0/1-Integer Programming: optimization and augmentation are equivalent // Algorithms — ESA'95 (P. Spirakis, ed.), Springer, Berlin, 1995. (Lecture Notes in Comput. Sci.; Vol 979). P. 473-483. Schulz A. S., Weismantel R. The complexity of generic primal algorithms for solving general integer problems // Mathematics of Operations Research. 2002. Vol. 27. P. 681-692. Tardos Ё. A strongly polynomial minimum cost circulation algorithm // Combinatorica. 1985. Vol. 5. P. 247-255. Толстой A. H. Методы нахождения наименьшего суммового при планировании перевозок // Планирование перевозок. Сб. 1. М.: Транспечать НКПС, 1930. С. 23-55. (См. Schrijver A. On the history of the transportation and maximum flow problems // Mathematical Programming. 2002. Vol.91. P.437-445.)
270 Глава 9. Потоки минимальной стоимости [41] Tomizawa N. On some techniques useful for solution of transportation network problems // Networks. 1971. Vol.1. P. 173-194. [42] Vygen J. On dual minimum cost flow algorithms // Mathematical Methods of Operations Research. 2002. Vol.56. P. 101-126. [43] Wagner H. M. On a class of capacitated transportation problems // Management Science. 1959. Vol. 5. P. 304-318.
ГЛАВА 10 Максимальные паросочетания Теория паросочетаний представляет собой важнейший классический раздел комбинаторной оптимизации. Если явно не сказано иного, то графы, рассматриваемые на протяжении данной главы, предполагаются неориентированными. Напомним также, что паросочетанием называется множество ребер, попарно не имеющих общих концов. Основная задача выглядит следующим образом. Maximum Matching (задача о максимальном паросочетаний) Дано: неориентированный граф G. Надо: найти максимальное по размеру паросочетание в G. Поскольку взвешенная версия данной задачи оказывается существенно сложнее, мы отложим ее анализ до гл. 11. Но даже в том виде, в котором она была сформулирована выше, когда мы интересуемся лишь размером паросочетания, задача уже имеет интересные приложения. К примеру, предположим, что в задаче о назначении работ все работы имеют одинаковое время выполнения, скажем, один час. От нас требуется выяснить, сможем ли мы закончить выполнение всех работ за один час. Иными словами, для заданного двудольного графа G с разбиением на доли V(G) = А и В мы ищем такие числа х: E(G) —> R+, что Хееб(а) х№ = 1 Для каждой работы а е А и ?eG5(b) х{е) < 1 для каждого сотрудника Ъ е В. Данную задачу можно переписать в виде системы линейных неравенств х > 0, Мх < И, М'х > П. Легко проверить, что по теореме 5.25 матрицы М и М' являются тотально унимодулярными. Тогда из теоремы 5.20 следует, что если у данной системы существует произвольное (возможно, дробное) решение х, то у нее также есть и целое решение. Заметим теперь, что целыми решениями данной системы в точности являются характеристические векторы паросочетаний в G, покрывающих все множество Л. Определение 10.1. Рассмотрим граф G и паросочетание М в G. Тогда вершина и называется покрытой паросочетанием М, если vGe для некоторого ребра ееМ; иначе вершина v называется свободной относительно М. Паросочетание М называется совершенным, если М покрывает все вершины. В § 10.1 мы рассмотрим паросочетания в двудольных графах. С алгоритмической точки зрения данная задача сводится к задаче о максимальном потоке.
272 Глава 10. Максимальные паросочетания Теорема о максимальном потоке и минимальном разрезе, а также понятие увеличивающих путей получают в данном контексте интересную интерпретацию. Паросочетания в графе общего вида (не обязательно двудольном) не сводятся напрямую к потокам в сетях. В § 10.2 и 10.3 мы изложим два необходимых и достаточных условия наличия совершенного паросочетания в графе общего вида. В § 10.4 будут рассмотрены факторкритические графы (те, в которых для любой вершины v € V(G) есть паросочетание, покрывающее все вершины, кроме и) Такие графы играют важную роль в алгоритме Эдмондса для задачи о максимальном паросочетании, описанном в § 10.5, а также его взвешенной версии, которая будет представлена позднее в § 11.2 и 11.3. § 10.1. Двудольные паросочетания Задача о максимальном паросочетании оказывается проще, если граф G двудольный, поэтому вначале мы рассмотрим именно этот случай. В данном параграфе мы считаем, что для заданного двудольного графа G предполагается фиксированным двудольное разбиение V(G) = А и В. Поскольку граф G можно считать связным, данное разбиение определено, в сущности, однозначно (упражнение 25 из гл.2). Для графа G будем обозначать через v(G) максимальную мощность паросочетания в G, а через t(G) — минимальную мощность вершинного покрытия в G. Теорема 10.2 (Кёниг [32]). Если граф G двудольный, то v(G) = t(G). Доказательство. Рассмотрим граф G' = (V(G) и {s, t}, E(G) U {{5,а}: а е А} и {{Ь, t}:beB}). Тогда v(G) совпадает с максимальным числом внутренне непересекающихся s-t-путей, a t(G) — с минимальным числом вершин, удаление которых делает вершину t не достижимой из s. Теперь доказываемое утверждение непосредственно следует из теоремы Менгера 8.10. ? Очевидно, что неравенство v(G) < t(G) выполнено для любого графа (не обязательно двудольного), однако в общем случае в равенство оно не обращается (например, для графа К3 оно строгое). Теорема Кёнига имеет множество эквивалентных переформулировок. Одной из наиболее известных, видимо, является теорема Холла. Теорема 10.3 (Холл [27]). Рассмотрим двудольный граф G с двудольным разбиением V(G) = А U В. Тогда в G существует паросочетание, покрывающее множество А, если и только если \Г(Х)\ > \Х\ для всех XQA. (10.1) Доказательство. Необходимость очевидна. Для доказательства достаточности предположим, что в G нет паросочетания, покрывающего А, т. е. v(G) < \А\. По теореме 10.2 отсюда следует неравенство t(G) < |Л|.
§ 10.1. Двудольные паросочетания 273 Рассмотрим такие подмножества А' с А, В' с в, что Af U В' покрывают все ребра и \А' UB'| < |Л|. Очевидно, Т{А\А') с в'. Следовательно, |Г(А\А01 < 1^1 < |Л| - lA^ = lAXA'L и, значит, условие Холла (10.1) оказывается нарушенным. ? Отметим также, что теорему Холла несложно доказать и непосредственно. Нижеследующее доказательство принадлежит Халмошу и Вогану [28]. Второе доказательство теоремы 10.3. Покажем, что во всяком графе G, удовлетворяющем условию Холла (10.1), существует паросочетание, покрывающее А. Воспользуемся индукцией по размеру |Л|. Случаи |Л| = 0 и \А\ = 1 тривиальны. Пусть \А\ > 2. Возможны два случая. Если |Г(Х)| > |Х| для всякого непустого собственного подмножества X множества А, то возьмем произвольное ребро {а,Ь} (а € А, Ъ е В), удалим его концевые вершины и применим индукцию. Меньший граф удовлетворяет условию Холла, поскольку разность |Г(Х)| — |Х| могла уменьшиться не более чем на единицу для любого X с А\{а}. Предположим теперь, что есть непустое собственное подмножество X множества А, для которого |Г(Х)| = |Х|. По индуктивному предположению существует паросочетание, покрывающее X в графе G[XU Г(Х)]. Утверждается, что данное паросочетание может быть расширено до паросочетания в G, покрывающего А. Снова по индуктивному предположению требуется показать, что граф G[{A\X) U (В\Г(Х))] удовлетворяет условию Холла. Для этого заметим, что для любого подмножества Y с А\Х в исходном графе G выполняются соотношения |ГСП\Г(Х)| = |Г(ХиУ)|-|Г(Х)|>|ХиУ|-|Х| = |У|. ? Частный случай теоремы Холла представляет собой так называемая «теорема о свадьбах». Теорема 10.4 (Фробениус [20]). Рассмотрим двудольный граф G с заданным двудольным разбиением V(G) =A\JB. Тогда G содержит совершенное паросочетание, если и только если \А\ = |В| и \Г(Х)\ > \Х\ для всех ХС.А. ? Теорема Холла имеет множество приложений, некоторые из них упомянуты в упражнениях 4-7. Доказательство теоремы Кёнига 10.2 также показывает, что задача поиска максимального паросочетания в двудольном графе может быть решена алгоритмически. Теорема 10.5. Задача о максимальном паросочетании в двудольном графе G может быть решена за время О(пгп), где п = \V{G)\ ит = |E(G)|. Доказательство. Рассмотрим двудольный граф G с двудольным разбиением V(G) = А U В. Добавим вершину s и соединим ее со всеми вершинами доли Л. Аналогично добавим вершину t и соединим ее со всеми вершинами доли В. Направим ребра от 5 к Л, от А к В и от В к t. Положим пропускные способности всех ребер равными единице. Тогда максимальный целый s-t-поток в полученной сети соответствует максимальному по мощности паросочетанию (и наоборот).
274 Глава 10. Максимальные паросочетания Применим для поиска максимального s-t-потока (а значит, и максимального паросочетания) алгоритм Форда — Фалкерсона. Данный алгоритм закончит свою работу после не более чем п шагов увеличения. Поскольку каждый такой шаг требует времени О(гл), отсюда получается требуемая оценка сложности. ? Данный результат, в сущности, был впервые доказан Куном [34]. В данной задаче можно также воспользоваться техникой кратчайших увеличивающих путей (см. алгоритм Эдмондса — Карпа). Действуя таким способом, можно получить алгоритм с оценкой сложности 0(^/п(т + п)), предложенный Хопкрофтом и Карпом [29], а также А. В. Карзановым [30]. Данный алгоритм будет обсуждаться в упражнениях 10 и 11. Небольшое улучшение алгоритма Хопкрофта — Карпа приводит к алгоритмам со временем работы 0( пл/т^- ) (Альт и др. [8]) / _log(n2/m)N А ^я _ „ п V Vlogn^ и О ипу/п—т 1 (Федер и Мотвани [18]). Для случая плотных графов последняя оценка является наилучшей известной. Переформулируем понятие увеличивающего пути в контексте паросочета- ний. Определение 10.6. Пусть G — граф (двудольный или нет), а М — паросочетание в G. Тогда путь Р называется М-чередующимся (M-alternating), если множество Е(Р)\М образует паросочетание. М-чередующийся путь называется М-увеличивающим (M-augmenting), если он имеет положительную длину и его концы являются свободными относительно М. Несложно проверить, что М-увеличивающие пути имеют нечетную длину. Теорема 10.7 (Петерсен [41], Берж [10]). Пусть G — граф {двудольный или нет) с некоторым паросочетанием М. Тогда М максимально, если и только если не существует М-увеличивающего пути. Доказательство. Если имеется М-увеличивающий путь Р, то симметрическая разность М АЕ(Р) образует паросочетание большего размера, чем М, так что М не максимально. С другой стороны, если существует паросочетание М' для которого |М'| > |М|, то симметрическая разность МАМ' распадается в набор не пересекающихся по вершинам чередующихся циклов и путей. В данном наборе хотя бы один путь должен быть М-увеличивающим. ? Данный факт был впервые отмечен Петерсеном и вновь открыт Бержем. Сейчас за ним закрепилось название «теоремы Бержа». В двудольном случае данное утверждение, конечно, следует из теоремы 8.5. § 10.2, Матрица Татта Рассмотрим теперь задачу поиска максимального паросочетания с алгебраической точки зрения. Пусть задан простой неориентированный граф G. Обозначим через G' орграф, получающийся из G ориентацией всех его ребер в произвольном направлении. Пусть также задан вектор переменных х = (хе)ееЕ(о- Опреде-
§10.2. Матрица Татта 275 лим матрицу Татта следующим образом: {X{v,w}> если (и>ш) G E(G'), -x{ViW}, если (ш, и) е E{G'), 0 иначе. Матрица М, обладающая свойством М = —Мт, называется кососимметрической. Матрица TG(x) зависит от выбора ориентации ребер G', однако, как оказывается, ее ранг зависит лишь от самого графа G. Отметим, что определитель detTG(x) представляет собой полином от переменных хе (е € E(G)). Теорема 10.8 (Татт [48]). Граф G содержит совершенное паросочетание, если и только если полином det TG(x) не является тождественно нулевым. Доказательство. Пусть V(G) = {иъ ..., vn}. Обозначим через Sn множество всех перестановок множества {1,..., п}. По определению п neSn i=l Пусть S'n:={neSn:f]t!hVmto}. v i=l J Каждая перестановка я е Sn соответствует ориентированному графу Hn:={V(G)A(vi9vni0):i = l3...9n})9 где для каждой вершины х справедливы равенства \57, (х)| = |б+ (х)| = 1. Для перестановок tceS^ орграф Нп представляет собой подграф графа G'. Если существует такая перестановка п €S^, что Ня состоит из четных циклов, то в графе G есть совершенное паросочетание. Действительно, для его построения забудем про ориентацию ребер (вернувшись обратно в G) и возьмем каждое второе ребро вышеуказанных циклов. В противном случае для каждой перестановки п е. S'n найдется другая перестановка г(тг) eS^, для которой Яг(71) получается из Нп обращением направления нечетного цикла, проходящего через вершину с минимальным номером. Очевидно, г(г(тг)) = тт. Заметим, что sgn(^) = sgn(r(7r)), т. е. данные перестановки имеют одинаковый знак. Действительно, если обращаемый нечетный цикл состоит из вершин vh> ••-> ^2fc+i' где п$) = Ь+i С/ = 1> • ¦ • >2fc) и ^(Wi) = h, то Кгс) получается применением 2fc транспозиций: при ; = 1,..., к обменяем n(i2j-i) и 7i(i2k)> а затем n(i2j) и 7i(i2fc+1). Более того, п п TV =-TV 1 1 Vi,Vn® 1 1 ^«^г(я)(0 i=l i=l
276 Глава 10. Максимальные паросочетания Таким образом, соответствующие слагаемые в сумме neS'n i=l попарно взаимно уничтожаются. Это происходит для всех пар я, г(тг) е S^, поэтому мы заключаем, что полином det Гс(дс) тождественно нулевой. Итак, если G не имеет совершенного паросочетания, то detTG(x) представляет собой тождественный нуль. С другой стороны, если в G есть совершенное паросочетание М, то рассмотрим перестановку я, определяемую равенствами тг(0 := j и n(J) := i для всех {viy Vj] е. М. Соответствующее слагаемое Пс^ГМ) i=l ееМ не может взаимно уничтожаться ни с одним другим, так что det TG(x) не является тождественно нулевым. ? Изначально Татт опирался на теорему 10.8 для доказательства своего основного результата о паросочетаниях — теоремы 10.13, которая будет приведена далее. При этом теорема 10.8 не дает хорошей характеризации свойства «иметь максимальное паросочетание». Трудность состоит в следующем. Несложно подсчитать определитель матрицы, составленной из чисел (теорема 4.10). Но если ее элементами являются переменные, то сделать это намного труднее. Однако из доказанной теоремы следует вероятностный алгоритм для задачи о максимальном паросочетании. Следствие 10.9 (Ловас [36]). Пусть х = (*e)eeE(G)— случайный вектор, в котором каждая координата выбирается независимо и равномерно из отрезка [0,1]. Тогда с вероятностью 1 ранг матрицы TG(x) равен удвоенному размеру максимального паросочетания. Доказательство. Предположим, что ранг матрицы TG(x) равен fc, т. е., скажем, первые fc строк данной матрицы линейно независимы. Положим Гс(х) (А ВЛ У-ВТ CJ' где А — кососимметрическая (fc х /с)-матрица, а матрица (А В) имеет ранг fc. Тогда найдется такая матрица D, что D(Л В) = (—Вт С). Имеем ADT =—(DA)T=В, следовательно, матрица А имеет ранг fc. Итак, главная подматрица А матрицы TG(x) является невырожденной, а значит, по теореме 10.8 подграф, порожденный соответствующим множеством вершин, имеет совершенное паросочетание. В частности, fc четно, и G содержит паросочетание мощности fc/2. С другой стороны, если G имеет паросочетание мощности fc, то определитель главной подматрицы Г' строки и столбцы которой отвечают 2fc вершинам, покрытым паросочетанием М, не может быть тождественно нулевым по теореме 10.8. Множество векторов jc, для которых detT^x) = 0, имеет меру нуль. Значит, с вероятностью 1 ранг матрицы TG(x) больше либо равен 2fc. ?
§ 10.3. Теорема Татта 277 Конечно, на обычном цифровом компьютере нельзя выбрать случайные чис. ла из отрезка [0,1]. Однако можно показать, что достаточно рассматривать случайные числа из конечного множества вида {1,2,..., N}. При достаточно большом значении N вероятность ошибки становится сколь угодно малой (Ловас [36]). Алгоритм Ловаса может быть также использован для нахождения самого максимального паросочетания (а не только его размера). Более подробно о вероятностных алгоритмах поиска максимальных паросочетании можно прочитать в работах Рабина и Вазирани [42], Мулмулея, Вазирани и Вазирани [40], Мучи и Санковски [39]. Отметим также, что Джилен [24] показал, как выполнить дерандомизацию алгоритма Ловаса. Хотя время работы получающегося в итоге алгоритма хуже, чем у алгоритма Эдмондса (см. §10.5), данный подход оказывается важен для некоторых обобщений задачи о максимальном паросочетании (см., например, работу Джилена и Иваты [25]). § 10.3. Теорема Татта Рассмотрим теперь задачу о максимальном паросочетании в случае графа общего вида. Необходимым условием наличия совершенного паросочетания в таком графе является четность размера каждой его связной компоненты. Как показывает граф К13 (см. рис. 10.1(a)), данное условие не является достаточным. (а) (б) 6 Рис. 10.1 Причина, по которой К13 не может иметь совершенного паросочетания, заключается в следующем. В данном графе есть вершина (помеченная на рисунке черным цветом), удаление которой приводит к появлению трех нечетных (т. е. имеющих нечетное число вершин) связных компонент. Рассмотрим другой, более сложный пример графа на рис. 10.1(6). Имеет ли данный граф совершенное паросочетание? Если мы удалим три черные вершины, то получим пять нечетных связных компонент (и одну четную). Если бы в графе было совершенное паросочетание, то хотя бы одна вершина каждой из этих нечетных компонент
278 Глава 10. Максимальные паросочетания была бы соединена с одной из черных вершин. Это, однако, невозможно, поскольку число нечетных связных компонент превосходит число черных вершин. Более общим образом, для подмножества X с V(G) обозначим через qG{X) число нечетных связных компонент графа G—X. Тогда граф, в котором для некоторого подмножества X с V(G) выполняется неравенство qG{X) > \Х\, не может иметь совершенного паросочетания. Действительно, в противном случае для каждой нечетной компоненты графа G—X существовало бы хотя бы одно ребро паросочетания, соединяющее эту компоненту с X, что невозможно, поскольку число нечетных компонент превосходит размер множества X. Теорема Татта утверждает, что данное условие является также достаточным. Определение 10.10. Скажем, что граф G удовлетворяет условию Татта, если qG{X) < \Х\ для всех X с V(G). Непустое подмножество X с V(G) называется барьером, если qG{X) = \Х\. Для доказательства достаточности условия Татта нам потребуется сформулировать несложное наблюдение и дать важное определение. Утверждение 10.11. Для любого графа G и любого подмножества X с V(G) выполняется соотношение qG(X)-\X\ = \V(G)\ (mod 2). ? Определение 10.12. Граф G называется факторкритическим, если для любой вершины и е V(G) в графе G — v есть совершенное паросочетание. Паросочета- ние называется почти совершенным, если оно покрывает все вершины, кроме одной. Теперь мы можем привести доказательство теоремы Татта. Теорема 10.13 (Татт [48]). Граф G содержит совершенное паросочетание, если и только если он удовлетворяет условию Татта: qG{X) < |Х| для всех X с y(G). Доказательство. Необходимость условия Татта была показана выше. Докажем теперь его достаточность, для чего воспользуемся индукцией по размеру |V(G)| (случай \V{G)\ < 2 тривиален). Пусть G — граф, удовлетворяющий условию Татта. Размер |V(G)| не может быть нечетным, поскольку тогда выполнялось бы неравенство qG{0) > 1 и условие Татта оказалось бы нарушенным. Итак, по утверждению 10.11 величина |Х| — qG{X) должна быть четной для всякого X с V(G). Поскольку \V{G)\ четно и условие Татта выполнено, каждое одноэлементное множество является барьером. Возьмем максимальный по включению барьер X. Граф G — X содержит \Х\ нечетных связных компонент. Граф G — X не может иметь четных связных компонент, поскольку иначе множество Xu{v}, где и — произвольная вершина в одной из четных компонент, также образовывало бы барьер (граф G — (X U {v}) содержит |Х| + 1 нечетных компонент), что противоречит максимальности множества X.
§10.3. Теорема Татта 279 Теперь докажем, что каждая нечетная связная компонента графа G—X является факторкритической. Для доказательства рассмотрим произвольную нечетную связную компоненту С графа G —X и выберем в ней вершину veV(C). Если граф С — v не имеет совершенного паросочетания, то по индуктивному предположению найдется подмножество Y с V(C)\{i>}, для которого qc-v(X) > \Y\. По утверждению 10.11 значение qc-v(Y) ~~ 1^1 четно, а значит, qC-v(Y)>\Y\ + 2. Поскольку X, Y и {и} попарно не пересекаются, получаем qG(X U 7 U М) = qG{X) - 1 + qc(Y U {i/}) = = \X\-l + qc^(y)>\X\-l + \Y\ + 2 = \X\JY\J{v}\. Итак, множество XU YU {v} образует барьер, что противоречит максимальности множества X. Рассмотрим теперь двудольный граф G' с двудольным разбиением V(G') = = X и Z, получающийся при удалении ребер, у которых оба конца лежат в X, и стягивании нечетных связных компонент графа G — X в отдельные вершины. Обозначим множество вершин, образовавшихся при стягивании и отвечающих нечетным компонентам, через Z. Осталось показать, что граф G' содержит совершенное паросочетание. Если это не так, то по теореме Фробениуса 10.4 найдется подмножество А с Z, для которого |ГС/(А)| < \А\. Тогда qG(TGf(A)) > \А\ > |ГС/(Л)|, что является противоречием. ? Приведенное выше доказательство принадлежит Андерсону [9]. Условие Татта дает хорошую характеризацию для задачи о совершенном паросочетании: в любом графе есть либо совершенное паросочетание, либо так называемое множество Татта X, доказывающее, что совершенного паросочетания не существует. Важным следствием теоремы Татта является так называемая формула Бержа — Татта. Теорема 10.14 (Берж [11]). Справедливо равенство 2v(G) +xma?)(qG(X) - |Х|) = |V(G)|. Доказательство. Рассмотрим произвольное подмножество X с V(G). Тогда любое паросочетание оставляет непокрытыми не менее qG{X) — \Х\ вершин. Значит, 2v(G) + qG(J04*|<|V(G)|. Для доказательства обратного неравенства положим fc:= max (qG(X)-\X\). XCV(G) Получим из графа G новый граф Я, добавив к нему к вершин, каждая из которых соединена со всеми исходными вершинами.
280 Глава 10. Максимальные паросочетания Если мы докажем, что Н содержит совершенное паросочетание, то получим 2v{G) + к > 2v(H)-k = \V(H)\ -к = |V(G)|, и теорема будет доказана. Предположим, что в Н нет совершенного паросочетания. Тогда по теореме Татта найдется подмножество Y с V(H), для которого qH(Y) > \Y\. Согласно утверждению 10.11 число к имеет ту же четность, что и |V(G)|, следовательно, |V(H)| четно. Поэтому Y ф 0 и, значит, qH(Y) > 1. Но тогда Y содержит все вновь добавленные вершины, следовательно, qG(Y HV(G)) =qH(Y) > \Y\ = \YП V(G)| + fc, что противоречит выбору fc. П В заключение параграфа сформулируем утверждение, которое понадобится нам в дальнейшем. Утверждение 10.15. Рассмотрим граф G и такое подмножество X с V(G), что |V(G)| — 2v(G) = qG(X) — \Х\. Тогда любое максимальное паросочетание в G состоит из совершенного паросочетания в каждой из четных связных компонент графа G — X, почти совершенного паросочетания в каждой из нечетных связных компонент графа G—X,a также набора ребер, соединяющих все вершины из множества X с различными нечетными связными компонентами графа G — X. ? Позднее мы увидим (теорема 10.32), что множество X может быть выбрано таким способом, чтобы каждая из нечетных связных компонент графа G — X являлась факторкритической. § 10.4. Ушные декомпозиции факторкритических графов В этом параграфе мы приведем некоторые результаты, касающиеся факторкритических графов, которые потребуются нам в дальнейшем. В упражнении 21 из гл. 2 мы видели, что графы, допускающие ушную декомпозицию, — это в точности 2-реберно связные графы. Теперь нас будут интересовать только нечетные ушные декомпозиции. Определение 10.16. Ушная декомпозиция называется нечетной, если каждое ухо в ней имеет нечетную длину. Теорема 10.17 (Ловас [35]). Граф является факторкритическим, если и только если он имеет нечетную ушную декомпозицию. Более того, начальная вершина этой декомпозиции может быть выбрана произвольным образом. Доказательство. Пусть G — граф с фиксированной нечетной ушной декомпозицией. Докажем, что G является факторкритическим, для чего воспользуемся индукцией по числу ушей. Пусть Р — последнее ухо в выбранной декомпозиции. Будем считать, что Р идет из вершины х в вершину у. Рассмотрим граф G', отвечающий моменту непосредственно перед добавлением Р. Требуется пока-
§ 10.4. Ушные декомпозиции факторкритических графов 281 зать, что для любой вершины и € V(G) граф G — v содержит совершенное па- росочетание. Если и не является внутренней вершиной пути Р, то этот факт следует из индуктивного предположения (добавим каждое второе ребро пути Р к совершенному паросочетанию bG'-u). Если и — внутренняя вершина пути Р, то ровно один из путей P[VtX] и Р[У}У] должен быть четным. Будем считать, что таковым является P[V}X]. По индуктивному предположению найдется совершенное паросочетание в G' — х. Добавляя каждое второе ребро путей Р[У}У] и P[U}X], мы получаем совершенное паросочетание в G — и. Докажем теперь обратное утверждение. Выберем начальную вершину z ушной декомпозиции произвольным образом, и пусть М — почти совершенное паросочетание в G, покрывающие вершины из множества V(G)\{z}. Предположим, что нам уже удалось построить нечетную ушную декомпозицию для такого подграфа G', что z € V(G') и М П E(G') образует почти совершенное паросочетание в G'. Если G = G', то доказательство на этом завершено. В противном случае, вспоминая, что граф G связен, можно найти такое ребро е = {х, у] е ?(G) \E(G'), что х е V(G'). Если у е V(G'), то ребро е можно считать следующим ухом. Иначе пусть N — почти совершенное паросочетание в G, покрывающее вершины из множества V(G)\{y}. Симметрическая разность MAN, очевидно, содержит ребра некоторого y-z-пути Р. Пусть w — первая вершина пути Р (при движении от у), которая лежит в V(G'). Последнее ребро пути Р' := Р[У}Ш] не может содержаться в М (поскольку ни одно ребро из М не выходит из V(G0), а первое ребро не может содержаться в N. Поскольку путь Р' является M-N-чередующимся, размер |?(Р01 должен быть четным, так что вместе с ребром е данный путь образует следующее ухо. ? В действительности нам удалось построить нечетную ушную декомпозицию специального вида. Определение 10.18. Пусть заданы факторкритический граф G и почти совершенное паросочетание М. Тогда М-чередующейся ушной декомпозицией (M-alter- nating ear decomposition) для G называется ушная декомпозиция, в которой каждое ухо служит М-чередующимся путем или таким циклом С, что |Е(С) ПМ| +1 = = \Е(С)\М\. Ясно, что начальной вершиной М-чередующейся ушной декомпозиции должна быть вершина, не покрытая паросочетанием М. Из доказательства теоремы 10.17 немедленно вытекает следующий результат. Следствие 10.19. Для любого факторкритического графа G и любого почти совершенного паросочетания М в G существует М-чередующаяся ушная декомпозиция. ? Далее нас будут интересовать исключительно М-чередующиеся ушные декомпозиции. Ловас и Пламмер [3] предложили следующий интересный способ хранения М-чередующихся декомпозиций. Определение 10.20. Пусть G — факторкритический граф, а М — почти совершенное паросочетание в G. Пусть также г, Ръ ..., Рк — М-чередующаяся ушная
282 Глава 10. Максимальные паросочетания декомпозиция графа G, а /х,</>: V(G) -> V(G) —пара функций. Тогда будем говорить, что функции /I и </? ассоциированы с ушной декомпозицией г,Рг,...,Рк, если • /х(х) = у при {х, у} е М; • v (х) = у при {х, у} е ВД \М их^{г}и У(Ра) и... и У(РМ); • /х(г) = (/?(г) = г. В случае, когда М фиксировано, мы также называем функцию (р ассоциированной с г,Ръ ...,Рк. Если М — какое-либо фиксированное почти совершенное паросочетание, а [л, <р ассоциированы с двумя М-чередующимися ушными декомпозициями, то эти декомпозиции отличаются лишь порядком ушей. Более того, явный список их ушей может быть построен за линейное время. Ear Decomposition (алгоритм построения ушной декомпозиции) Вход: факторкритическии граф G, функции /i, кр, ассоциированные с некоторой М-чередующейся ушной декомпозицией. Выход: М-чередующаяся ушная декомпозиция г, Ръ..., Рк. (Т) Положить X := {г}, где г — вершина, для которой ju(r) = г. Положить к := 0 и создать пустой стек. (2) If X = V(G) then goto ®. If стек не пуст then обозначить через и € V(G) \Х конец пути, лежащего на вершине стека, else выбрать v е V(G)\X произвольно. (3) Присвоить х := и, у := /i(u) и Р := ({*, у}, {{х, у}}). While <?(vM) = х do: Присвоить Р :=Р + {х, </?(*)} + {</?(*), /х((/?(х))} и х := //((/?(*))• While </?(<? Су)) = у do: Присвоить Р:=Р + {у, </?(у)} + My), /i(</?(y))} и у := /х((/?(у)). Присвоить Р := Р + {*, <р(х)} + {у, </?(у)}. Теперь Р представляет собой ухо, содержащее у в качестве внутренней вершины. Положить Р на вершину стека. (4) While оба конца пути Р, лежащего на вершине стека, содержатся в X do: Удалить Р со стека, положить к := к + 1, Pfc := Р и X := X U V(P). Goto®. (5) For all {у, 2} € E(G) \ (ВД) U... U E(PJ) do: Присвоить к := к + 1 и Pfc := ({у, z}, {{у, z}}). Утверждение 10.21. Пусть G — факторкритическии граф, а \х,ц — функции, ассоциированные с М-чередующейся ушной декомпозицией. Тогда данная ушная
§ 10.4. Ушные декомпозиции факторкритических графов 283 декомпозиция единственна с точностью до порядка ушей. При этом алгоритм Ear Decomposition корректно строит список составляющих ее ушей и завершает работу за линейное время. Доказательство. Рассмотрим М-чередующуюся ушную декомпозицию ©, ассоциированную CjUHf Единственность ^ и корректность алгоритма следуют из того очевидного факта, что каждый путь Р, вычисляемый алгоритмом на шаге (3), действительно является ухом в 9). Время работы шагов (1)-0 составляет 0(|V(G)|), при этом шаги (5) занимают время 0(|E(G)|). ? Наиболее важное свойство функций, ассоциированных с чередующейся ушной декомпозицией, выражается в следующей лемме. Лемма 10.22. Рассмотрим факторкритический граф G и функции /х, </>, ассоциированные с некоторой М-чередующейся ушной декомпозицией. Пусть г — вершина, не покрытая паросочетанием М. Тогда для ecexxeV(G) максимальный по включению путь, задаваемый своим начальным отрезком х, ju(x), (/?(/i(*)), м(^(м00))> V>(ju(v(mM))), является M-чередующимся x-r-путем четной длины. Доказательство. Пусть х е V(G) \ {г} и Pt — первое ухо, содержащее х. Очевидно, некоторый начальный фрагмент последовательности х, /i(x), </?(ju(x)), juOGu(x))), </?(/i(</?(/i(>)))), ... должен образовывать отрезок Q пути Pt от х до у, где у е {г} и V(Pi) и... U V(Pi_i). Поскольку рассматриваемая ушная декомпозиция является М-чередующейся, последнее ребро участка Q не лежит в М. Следовательно, Q имеет четную длину. Если у = г, то утверждение доказано. В противном случае применим индукцию по i. ? Утверждение, обратное лемме 10.22, не является истинным. Контрпример представлен на рис. 10.2. (Жирным выделены ребра паросочетания. Стрелка от и к v на ребре обозначает, что (р(и) = и.) Здесь функции [I и {р также задают чередующиеся пути к вершине, не покрытой паросочетанием. Однако \х и (р не являются ассоциированными с какой-либо чередующейся ушной декомпозицией. При изучении алгоритма взвешенного паросочетания (§ 11.3) нам потребуется быстрая процедура, позволяющая обновлять чередующуюся ушную декомпозицию при изменении паросочетания. Несмотря на то что доказательство теоремы 10.17 является алгоритмическим (по модулю умения находить максимальное паросочетание в графе), изложенный там метод слишком неэффективен. Вместо того чтобы строить новую декомпозицию заново с нуля, научимся использовать старую.
284 Глава 10. Максимальные паросочетания Лемма 10.23. Пусть заданы факторкритический граф G и пара почти совершенных паросочетаний М иМ\а также функции /х, ф, ассоциированные с М-чередующейся ушной декомпозицией. Тогда функции \х!', у'\ ассоциированные с М/-чередующейся ушной декомпозицией, могут быть найдены за время 0(|V(G)|). Доказательство. Обозначим через и вершину, не покрытую паросочетанием М, а через vf — вершину, не покрытую паросочетанием М'. Пусть Р — v'-v-путъ в М Д М'9 скажем Р = х0, хъ..., хк, где х0 = v' и хк = v. Явный список ушей исходной М-чередующейся декомпозиции может быть построен по /i и у с помощью алгоритма Ear Decomposition за линейное время (утверждение 10.21). В действительности, поскольку мы можем не рассматривать уши длины 1, шаг (5) может быть опущен. Тогда общее число просмотренных ребер не превышает ~ (IV'(G)I — 1) (см. упражнение 20). Предположим, что мы уже построили М'-чередующуюся ушную декомпозицию остовного подграфа G[X] для некоторого X с V(G), где v' е X (изначально X := {у7}). Конечно, ни одно М7-ребро не выходит из X. Положим р := max{i € {0,..., к}: xt е X} (см. рис. 10.3). Будем поддерживать на каждом шаге значение р и множество ребер 5(Х)Г\М. Обновление этих данных при расширении X, очевидно, возможно за общее линейное время. Покажем теперь, как расширять текущую ушную декомпозицию. На каждом шаге мы будем добавлять одно или несколько ушей. Общее время, уходящее на выполнение шага, будет пропорционально суммарному числу ребер в этих новых ушах. • V Рис. 10.3
§ 10.4. Ушные декомпозиции факторкритических графов 285 Случай 1: \5{Х) ПМ| > 2. Рассмотрим ребро / € 5(Х)Г\М, где xp?f. Очевидно, / принадлежит М-М'-чередующемуся пути, который может быть добавлен в качестве следующего уха. Время, уходящее на поиск этого уха, пропорционально его длине. Случай 2: |5(Х) ПМ\ = 1. Тогда v ?Х ие = {хр,хр+1} — единственное ребро в 5(Х) П М. Пусть Я' — л:р+1-1;-путь, задаваемый функциями jlihi/j (см. лемму 10.22). Первым ребром пути R' будет е. Пусть теперь q — минимальный индекс i€ {р+2, р+4,..., к}, для которого xt eV(R') и У(К'г 0 П{*v+i,..., хк} = 0 (см. рис. 10.4). Обозначим Д := RFv. ,. Тогда путь R состоит из вершин xD, <?(xD), /i((/?(xp)), ^?(ju((/?(xp))), ..., xq и может быть построен за время, пропорциональное его длине. •»-»» «. в Рис. 10.4 Рассмотрим теперь множества S:=E{R)\E{G[X]), D:=(MAMO\(?(G[X])uE(PM)) и Z:=SAD. Множества S и D состоят из М-чередующихся путей и циклов. Заметим, что всякая вершина вне X имеет степень 0 или 2 относительно Z. Более того, каждая вершина вне X имеет два инцидентных ребра из Z, причем одно из них принадлежит М'. (Здесь мы существенно опираемся на способ выбора q.) Итак, все связные компоненты С графа (V(G), Z), удовлетворяющие условию Е(С) П 5{Х) ф 0, могут быть добавлены в качестве ушей. Когда это добавление завершится, множество S\Z = S Г) (М А М') будет представлять собой объединение не пересекающихся по вершинам путей, каждый из которых может быть добавлен в качестве уха. Поскольку е € D \S с Z, получаем, что Z П 5(Х) ф 0, так что хотя бы одно такое ухо будет добавлено. Осталось показать, что время, затрачиваемое на вышеописанные действия, действительно пропорционально общему числу ребер в добавляемых ушах. Очевидно, достаточно показать, как строить S за время 0(|S|). Затруднения создают отрезки пути R, лежащие внутри X. Однако их точный вид нас не заботит, так что мы будем «сокращать» эти пути, как только это возможно. Для того чтобы добиться этого, немного изменим значения if.
286 Глава 10. Максимальные паросочетания Рис. 10.5 Более точно, рассмотрим случай 2. Пусть R[a,b]—максимальный отрезок пути R внутри X, для которого афЪ. Положим у := /х(Ь); здесь у является предшественником Ъ на пути R. Положим ip(x) :=у для всех вершин х, лежащих на отрезке R[a,y] и таких, что длина R[Xty] нечетна. При этом не имеет значения, соединены лих и у ребром или нет. Пример такой перестройки приведен на рис. 10.5. Время, требуемое на коррекцию значений у, пропорционально числу просмотренных ребер. Заметим, что эти изменения \р не нарушают свойств из леммы 10.22. При этом значения </? не используются нигде, кроме подзадачи нахождения М-чередующихся путей, ведущих в у, в случае 2. Теперь время, затрачиваемое на нахождение отрезков пути R, лежащих внутри X, становится заведомо пропорциональным сумме количества этих отрезков и числа ребер, просмотренных в X впервые. Поскольку число отрезков внутри X не превышает числа новых ушей, добавляемых на текущем шаге, общее время работы оказывается линейным. Случай 3: 5(Х) ПМ = 0. Тогда и е X. Просмотрим уши (исходной) М-чере- дующейся ушной декомпозиции в порядке их следования. Пусть R — первое ухо в этом списке, для которого V(R) \Х ф 0. Аналогично случаю 2 пусть S:=E(R)\E(G[X]), D:=(MAM/)\?(G[I]) и Z:=SAD. Как и ранее, все связные компоненты С графа (V(G), Z), удовлетворяющие условию Е(С) П 5{Х) ф 0, могут быть добавлены в качестве ушей. Когда данные уши будут добавлены, S\Z будет представлять собой объединение не пересекающихся по вершинам путей, каждый из которых может быть добавлен в качестве уха. Общее время работы в случае 3, очевидно, является линейным. ?
§ 10.5. Алгоритм Эдмондса поиска максимального паросочетания 287 § 10.5. Алгоритм Эдмондса поиска максимального паросочетания Напомним, что по теореме Бержа 10.7 паросочетание в графе является максимальным, если и только если не существует увеличивающего пути. Поскольку этот факт справедлив в том числе и для недвудольных графов, увеличивающие пути можно использовать в основе общего алгоритма поиска максимальных паросочетаний. Однако теперь совсем не очевидно, как найти увеличивающий путь (либо установить, что такого не существует). В двудольном случае (теорема 10.5) было достаточно помечать вершины, достижимые из некоторой непокрытой вершины вдоль чередующихся реберных цепей. Поскольку в графе отсутствовали нечетные циклы, все вершины, достижимые по чередующимся реберным цепям, были также достижимы и по чередующимся путям. В случае графа общего вида это свойство более не является верным. Рассмотрим пример на рис. 10.6 (жирным выделены ребра паросочетания М). Если начать из вершины уъ то мы получим чередующуюся реберную цепь vly v2, v3, и4, v5, ve, v7, v5, и4, vQ, которая не обра- с* зует пути. В процессе движения мы прошли по нечетному циклу v5, ив, и7. Заметим, что в данном случае увеличивающий путь существует (уъ и2, v3, и7, v6, и5, ^4» v8)> однако неясно, как алгоритм мог бы его найти. Сложность возникает в тот момент, когда мы встречаем нечетный цикл. Удивительным образом, мы можем избавиться от него путем стягивания его в одну вершину. Оказывается, полученный после стягивания граф содержит совершенное паросочетание, если и только если таковое было в исходном графе. В этом приеме и заключается общая идея алгоритма Эдмондса поиска максимального паросочетания. Мы формализуем ее далее в лемме 10.25, после того как дадим ряд необходимых определений. Определение 10.24. Рассмотрим граф G и паросочетание М в G. Соцветием (blossom) в G относительно М называется факторкритический подграф С графа G, для которого _ lMnE(C)|=inCj' \ Вершина подграфа С, не покрытая паросочетанием М ПЕ(С), называется базой соцветия С. Соцветие, которое мы видели в приведенном выше примере (рис. 10.6), порождается множеством вершин {и5, ив, и7]. Заметим, что в данном случае есть и другие соцветия. Согласно нашему определению любой одновершинный подграф также образует соцветие. Сформулируем теперь лемму о стягивании соцветий. Лемма 10.25. Рассмотрим граф G, паросочетание М в G и соцветие С в G (относительно М). Предположим, что существует М-чередующийся v-г-путь Q
288 Глава 10. Максимальные паросочетания четной длины от вершины и, не покрытой паросочетанием М, до базы г соцветия С, где E(Q) П Е(С) = 0. Обозначим через G' и М' граф и паросочетание, получающиеся u3GuM после стягивания У(С) в одну вершину. Тогда М является максимальным паросочетанием в G, если и только если М' является максимальным паросочетанием в G'. Доказательство. Предположим, что М не является максимальным паросочетанием в G. Множество N :=М Л Е(Q) образует паросочетание той же мощности, так что оно также максимально. Тогда по теореме Бержа 10.7 существует N-уве- личивающий путь Р в G. Заметим, что N не покрывает г. Хотя бы один из двух концов пути Р, скажем дс, не лежит в С. Если Р и С не пересекаются, то обозначим через у другой конец пути Р. В противном случае пусть у — первая вершина на пути Р (при движении от дс), принадлежащая С. Пусть Р' получается из Р[Х)У] при стягивании У (С) в G. Концы пути Р' не покрыты N' (паросочетанием в G', получающимся из N при стягивании). Следовательно, Р' представляет собой А/7-увеличивающий путь в G1. Итак, N' не является максимальным паросочетанием в G', а значит, таковым не будет и М' (поскольку их размеры совпадают). Для доказательства обратного утверждения предположим, что М' не является максимальным паросочетанием в G'. Пусть Nf — паросочетание большего размера в G'. Тогда Nf отвечает паросочетанию N0 в G, покрывающему не более одной вершины С в G. Поскольку подграф С факторкритический, N0 может быть расширено добавлением fc := ^ ребер до паросочетания N в G. При этом |N| = |N0| -I- fc = |N'| + fc > \M'\ + fc = \M\, поэтому M не является максимальным паросочетанием в G. ? Требование достижимости базы соцветия из вершины, не покрытой паросочетанием М, по М-чередующемуся пути четной длины является существенным. Например, соцветие, порожденное подмножеством {и4, и6, v7, v2, v3] на рис. 10.6, не может быть стянуто без разрушения единственного увеличивающего пути. При поиске увеличивающего пути мы будем строить чередующийся лес. Определение 10.26. Пусть заданы граф G и паросочетание М в G. Чередующийся лес относительно М в G — это лес F в G, обладающий следующими свойствами. 1. Множество V(F) содержит все вершины, не покрытые паросочетанием М. Каждая связная компонента графа F содержит ровно одну непокрытую вершину— ее корень. 2. Назовем вершину и е V(F) внешней или соответственно внутренней, если она находится на четном или соответственно нечетном расстоянии от корня связной компоненты, содержащей и. (В частности, корни являются четными вершинами.) Все внутренние вершины графа F имеют степень 2. 3. Для любой вершины i> е V(F) однозначно определенный путь из и до корня связной компоненты, содержащей и, является М-чередующимся. Пример чередующегося леса представлен на рис. 10.7. Жирные ребра образуют паросочетание. Черные вершины являются внутренними, а белые — внешними.
§ 10.5. Алгоритм Эдмондса поиска максимального паросочетания 289 Утверждение 10.27. В любом чередующемся лесу число внешних вершин, не являющихся корнями, совпадает с числом внутренних вершин. Доказательство. Каждая внешняя вершина, не являющаяся корнем, имеет ровно одну внутреннюю вершину-соседа, расстояние до которой от корня меньше. Это соответствие, очевидно, задает биекцию между внешними вершинами (кроме корней) и внутренними вершинами. ? Говоря неформально, алгоритм Эдмондса работает следующим образом. Имея некоторое паросочетание М, мы строим М-чередующийся лес F. Вначале он состоит из множества S непокрытых вершин и не содержит ребер. На очередном шаге алгоритма мы рассматриваем соседа у внешней вершины х. Пусть Р(х) — (однозначно определенный) путь в F от х до корня. Нас интересуют три возможных случая, отвечающие трем типам операций («наращивание», «увеличение» и «стягивание»). Случай 1: у ? V(F). Тогда нарастим лес, добавляя {х, у} и ребро паросочетания, покрывающее у. Случай 2: у служит внешней вершиной другой компоненты связности графа F. Тогда мы увеличиваем М вдоль пути Р(х) и {х, у} и Р(у). Случай 3: у служит внешней вершиной той же самой компоненты связности графа F (с корнем q). Пусть г — первая вершина графа Р(х) (при движении от х), которая также лежит на Р(у). (Корень г может быть одной из вершин х,у.) Если вершина г не является корнем, то ее степень должна быть не меньше 3.
290 Глава 10. Максимальные паросочетания Следовательно, г обязательно является внешней вершиной. Тогда С:=Р(дс)[х>г]и{х,у}иР(у)[у,г] образует соцветие, содержащее не менее трех вершин. Стянем С. Если ни один из перечисленных случаев не выполняется, то все соседи внешних вершин являются внутренними. Докажем, что тогда М максимально. Пусть X — множество внутренних вершин, s := |Х|, и пусть t — число внешних вершин. Тогда граф G — X содержит t нечетных компонент (каждая внешняя вершина является изолированной в G — X), следовательно, qG(X) — \Х\ = t — s. По формуле Бержа — Татта (точнее, в силу неравенства, дающего верхнюю оценку на размер паросочетания) относительно любого паросочетания должно оставаться хотя бы t — s не покрытых вершин. Однако, с другой стороны, число вершин, непокрытых паросочетанием М, т. е. число корней дерева F, равно в точности t — s согласно утверждению 10.27. Следовательно, паросочетание М действительно является максимальным. Остановимся теперь подробнее на деталях реализации, которые в данном случае совсем не тривиальны. Сложность состоит в том, как производить стягивания в графе эффективно, чтобы исходный граф мог быть впоследствии восстановлен. Операции стягивания при этом могут затрагивать уже стянутые подмножества. Излагаемый далее метод основан на работе Ловаса и Пламмера [3]. Вместо того чтобы выполнять операции стягивания явно, мы разрешим нашему лесу содержать соцветия. Определение 10.28. Пусть заданы граф G и паросочетание М в G. Подграф F графа G называется цветущим лесом общего вида относительно М, если существует такое разбиение V(F) = Уг и V2 и ... U Vk, что Ft := F[Vj] образует максимальный факторкритический подграф в F, причем \М П E(Ft)\ = (\Vt\ — 1)/2 (i = 1,...,fc), и после стягивания каждого подмножества Vl9...,Vk мы получаем чередующийся лес F', Подграф Ft называется внешним соцветием или соответственно внутренним соцветием, если Vt представляет собой внешнюю или соответственно внутреннюю вершину в F'. Вершины, принадлежащие внешнему (соответственно внутреннему) соцветию, называются внешними (соответственно внутренними). Цветущий лес общего вида, в котором каждое внутреннее соцветие состоит из одной вершины, называется особым. На рис. 10.8 изображена связная компонента особого цветущего леса с пятью нетривиальными внешними соцветиями. Эта компонента отвечает одной из связных компонент чередующегося леса на рис. 10.7. Смысл направлений на ребрах будет разъяснен позднее. Все вершины графа G, не принадлежащие особому цветущему лесу, называются свободными (out-of-forest). Заметим, что лемма о стягивании соцветия 10.25 применима лишь ко внешним соцветиям. Однако на протяжении данного параграфа мы будем работать лишь с особыми цветущими лесами. Цветущие леса общего вида появятся лишь при изучении алгоритма взвешенных паросочетаний в гл. 11.
§ 10.5. Алгоритм Эдмондса поиска максимального паросочетания 291 Рис. 10.8 Для хранения специального цветущего леса F будем использовать следующие структуры данных. Для каждой вершины х е V(G) заведем три переменные /л(х), ip(х) и р(х), обладающие следующими свойствами: "«={?. ч>М = \ х, если вершина х не покрыта паросочетанием М, если {х, у} € М, если х $. V(F) или л: — база внешнего соцветия, если {х,у} еE(F)\М их — внутренняя вершина, где {х,у} е Е (F) \М, х — внешняя вершина и функции fi и </? ассоциированы с М-чередующейся ушной декомпозицией соцветия, содержащего х, (10.2) (10.3) х, если х не является внешней вершиной, р(х) = { у, если х — внешняя вершина и у — база внешнего соцветия в F, содержащего х. (10.4) Для внешней вершины и обозначим через P(v) максимальный путь, задаваемый последовательностью вершин у, /х(у), (/?(/i(u)), ju((/?(jlc(iO)), ?>(m(^(m(iO)))> ••• Имеют место следующие свойства.
292 Глава 10. Максимальные паросочетания Утверждение 10.29. Пусть F — специальный цветущий лес относительно паросочетания М, и пусть [л, ip: V(G) —> V(G) — функции, удовлетворяющие условиям (10.2) и (10.3). Тогда (а) для любой внешней вершины и путь Р(и) является чередующимся v-q-ny- тем3 где q — корень дерева в F, содержащего и; (б) вершина х является • внешней, если и только если ц(х) = х или <^(/л(л:)) ^мМ; • внутренней, если и только если (/?(д(х)) = /х(х) и ц>(х) Ф х; • свободной, если и только если /л{х) фх, ц>{х)=хи </?(//(*)) = м(х). Доказательство. Для доказательства утверждения (а) сначала заметим, что согласно условию (10.3) и лемме 10.22 некоторый начальный отрезок v, ii(y), 4>{ц(р)), м(у(м(у)))» v(/i(vGLt(l0)))> ••• образует М-чередующийся путь четной длины до базы г соцветия, содержащего у. Если г не является корнем дерева, содержащего и, то вершина г покрыта паросочетанием М. Следовательно, вышеуказанный фрагмент можно продолжить ребром паросочетания {г, /i(r)}, а затем ребром {//(г), </?(/х(г))} (поскольку вершина /х(г) внутренняя). Но </>(/х(г)) снова будет внешней вершиной, так что утверждение доказано по индукции. Докажем утверждение (б). Если вершина х внешняя, то либо она является корнем, т. е. /i(x) = х, либо длина пути Р(х) не меньше 2, т. е. </?(/х(х)) ф /i(x). Если вершина х внутренняя, то /х(х) служит базой внешнего соцветия, так что по свойству (10.3) имеем </?(ju(x)) = /х(х). Более того, длина пути P(ii(x)) не меньше 2, а значит, ip(x) Ф х. Если вершина х свободная, то по определению она покрыта паросочетанием М, а значит, в соответствии с условием (10.2) имеем //(х) / х. Очевидно, вершина /х(лс) также свободна, поэтому из условия (10.3) следует, что ip(x) =х и </>(//(*)) =/х(х). Заметим, что любая вершина является либо внутренней, либо внешней, либо свободной. Кроме того, для любой вершины х либо jjl{x) = х или (/?(/i(x)) Ф /х(х), либо </?(/x(jc)) = /i(x) и </?Qc) Ф х, либо /i(x) ф х, ip(x) = х и (/?(/i(x)) = /i(x), т. е. и удовлетворяет ровно одному из трех комплектов условий, указанных в п. (б) настоящего утверждения. На этом доказательство завершено. ? На рис. 10.8 стрелки на ребрах от и kv означают, что </?(и) = и. Приведем теперь подробное описание алгоритма. Edmonds' Cardinality Matching Algorithm (алгоритм Эдмондса поиска максимального Вход: Выход: граф G. максимальное паросочетание в графе {x,ii(x)}. паросочетания) G, состоящее из ребер вида (Т) Присвоить /i(u) := v, (р(у) := v, p(v) := v и scanned(y) :=fabe для всех yeV(G).
§ 10.5. Алгоритм Эдмондса поиска максимального паросочетания 293 © If scanned(y) = true для всех внешних вершин и, then stop else пусть х — внешняя вершина, для которой scanned(x) = false. (3) Пусть у — такой сосед вершины х, что вершина у свободна (или вершина у внешняя и р{у) ф рМ). If такого у нет then присвоить scanned(дс) := true, goto (2). (4) («наращивание») If вершина у свободна then присвоить </?(у) := х, goto (3). (5) («увеличение») If пути Р{х) и Р{у) не имеют общих вершин then Присвоить ii{sp{y)) := v, /x(i/) := y(v) для всех вершин i> е V(P(x)) U V(P(y)), находящихся на нечетном расстоянии от х или у на Р(х) или Р(у) соответственно. Присвоить ju(x) := у. Присвоить /i(y) := х. Присвоить ip{и) := и, p{v) := и, scanned(y) :=false для всех v е V(G). Goto®. (6) («стягивание») Пусть г — первая вершина из V(P(x)) П V(P(y)), для которой р(г) = г. For all и € V(?(*)[*,r]) и У(Р(у)[у г]), находящихся на нечетном расстоянии от х или у на Р(х)[хг] или Р(у)[у,г] соответственно и таких, что Р&ШФ г, do: Присвоить (/?((/?(f)) *= ^. If р{х)фг then присвоить (/?(х) := у. If р{у)фг then присвоить (/?(у) := х. For all и е V(G): p{v) е V(P(x)[jc,r]) U V(P(y)[y,r]) do: Присвоить p(v) := г. Goto (3). Пример изменения значений у при стягивании приведен на рис. 10.9 (здесь шаг (6) применен к вершинам х и у на рис. 10.8). Лемма 10.30. Следующие утверждения справедливы в любой момент работы алгоритма Эдмондса: (а) ребра вида {лг,/х(х)} образуют паросочетание в М; (б) ребра {х, /х(х)} и {х, (^(х)} образуют особый цветущий лес F относительно М (с добавлением некоторых изолированных ребер паросочетания); (в) для F выполняются условия (10.2), (10.3) и (10.4). Доказательство. Для доказательства утверждения (а) заметим, что единственное место, где значения \i изменяются, — это шаг (5). Выполняемое на нем увеличение, очевидно, корректно. Докажем утверждение (б). Поскольку после шагов (I) и (5) мы, очевидно, получаем цветущий лес без ребер и на шаге @ цветущий лес корректно нара-
294 Глава 10. Максимальные паросочетания Рис. 10.9 щивается добавлением двух ребер, осталось лишь проверить шаг (6). Вершина г либо является корнем, либо имеет степень хотя бы 3, так что она внешняя. Новое соцветие состоит из множества вершин B:={ve V(G):p(v) е V(P(x)[x>r]) U V(P(y)[y,r])}. Рассмотрим такое ребро {и, и] цветущего леса, что иеВиифВ. Множество F[B] содержит почти совершенное паросочетание, поэтому ребро {и, и] принадлежит паросочетанию, только если оно совпадает с {г, ju(r)}. Более того, вершина и была внешней до применения шага®. Факторкритичность множества F[B] вытекает из существования М-чередующейся ушной декомпозиции (см. п. (в)) и теоремы 10.17. Отсюда следует, что F продолжает оставаться особым цветущим лесом. Перейдем к утверждению (в). Нетривиальным является лишь тот факт, что после стягивания значения juhi/j оказываются ассоциированными с чередующейся ушной декомпозицией нового соцветия. Пусть х и у—две внешние вершины в одной компоненте связности особого цветущего леса, и пусть г — первая вершина на пути V(P(x)) П V{P(y)), для которой р(г) = г. Как и ранее, пусть В — множество вершин нового соцветия. Отметим, что значение ip(v) не изменяется для таких вершин v е В, что р{у) = г. Тогда ушная декомпозиция старого соцветия В/ := {v е V(G): р{у) = г}
§ 10.5. Алгоритм Эдмондса поиска максимального паросочетания 295 является начальным фрагментом для ушной декомпозиции соцветия В. Следующее ухо состоит из Р(х)[^], Р(у)[уУ] и ребра {х,у}, где х' и у'— первые вершины на Р(х) и Р(у) соответственно, принадлежащие В'. Наконец, для каждого уха Q старого внешнего соцветия В" с в ребра Q\(E(P(x)) U Е(Р(у))) задают ухо новой ушной декомпозиции соцветия В. ? Теорема 10.31 (Эдмондс [14]). Алгоритм Эдмондса корректно находит максимальное паросочетание за время 0(п3), где л = |V(G)|. Доказательство. Из леммы 10.30 и утверждения 10.29 следует, что алгоритм корректно строит некоторое паросочетание. Рассмотрим момент окончания работы. Пусть Мир — паросочетание и особый цветущий лес, упомянутые в лемме 10.30 (свойства (а) и (б)). Ясно, что любой сосед у внешней вершины х либо является внутренней вершиной, либо принадлежит тому же соцветию (т. е. р(у)=рШ- Для того чтобы доказать максимальность паросочетания М, обозначим через X множество внутренних вершин, а через В — множество базовых вершин внешних соцветий в F. Тогда всякая вершина, не покрытая паросочетанием, принадлежит В, а покрытые вершины соцветия В отображаются ребрами паросочетания на вершины из множества X: |B| = |X| + |V(G)|-2|M|. (10.5) С другой стороны, внешние соцветия в F образуют нечетные связные компоненты в графе G — X. Следовательно, всякое паросочетание оставляет хотя бы \В\ — \Х\ вершин непокрытыми. Согласно соотношению (10.5) паросочетание М не покрывает в точности |В| — \Х\ вершин, а потому является максимальным. Изучим теперь время работы. Согласно утверждению 10.29(6) состояние любой вершины (внутренняя, внешняя или свободная) может быть вьшснено за константное время. Каждый из шагов 0, (5), (6) может быть выполнен за время 0(п). Между двумя последовательными увеличениями шаги 0 или (6) выполняются не более 0(п) раз, поскольку количество неподвижных точек функции у каждый раз уменьшается. Более того, между двумя последовательными увеличениями ни одна вершина не просматривается (т. е. не выбирается в качестве х на шаге (2)) более одного раза. Таким образом, время, затрачиваемое алгоритмом между двумя последовательными увеличениями, составляет 0(п2), откуда следует оценка 0(п3) для общего времени работы. ? Микали и Вазирани [38] улучшили время работы до 0(y/n т). В основе их алгоритма лежат результаты, указанные в упражнении 10. Присутствие соцветий делает задачу поиска максимального по включению множества вершин- но непересекающихся кратчайших увеличивающих путей более трудной, чем в двудольном случае. (Метод блокирующих увеличений вдоль кратчайших путей в двудольном случае был изучен ранее Хопкрофтом и Карпом [29], а также Карзановым [30], см. упражнение 11.) См. также работу Вазирани [49]. Текущая наилучшая оценка сложности для задачи о максимальном паросочетании ^ ^ ( г- log(n2/m) л в графе общего вида составляет 01 т^/п —-, I и совпадает с таковой для
296 Глава 10. Максимальные паросочетания двудольного случая. Данный алгоритм был предложен Гольдбергом и Карзано- вым [26], а также Фремут-Пегером и Юнгникелем [19]. Основываясь на представленном алгоритме, мы можем теперь легко доказать структурную теорему Галлаи — Эдмондса. Она была впервые установлена Галлаи, а ее конструктивное доказательство следует из алгоритма Эдмондса поиска максимального паросочетания. Теорема 10.32 (Галлаи [23]). Пусть G — произвольный граф. Обозначим через Y множество, состоящее из вершин, не покрываемых хотя бы одним максимальным паросочетанием. Обозначим также через X множество соседей множества Y в V(G)\Y, а через W—множество всех оставшихся вершин. Тогда (а) любое максимальное паросочетание в G содержит совершенное паросочетание в G[W], почти совершенные паросочетания в связных компонентах графа G[Y],a также набор ребер, устанавливающих соответствие между всеми вершинами из множества X и различными связными компонентами графа G[Y]; (б) связные компоненты графа G[Y] являются факторкритическими; (в) 2v(G) = |V(G)|-qG(X) + |X|. Мы называем тройку W, X, Y декомпозицией Галлаи — Эдмондса для графа G (см. рис. 10.10). W Рис. 10.10 Доказательство. Применим алгоритм Эдмондса и рассмотрим паросочетание М и особый цветущий лес F, возникающие в конце работы. Пусть X' — множество внутренних вершин, Y' — множество внешних вершин, aW' — множество свободных вершин. Вначале докажем, что множества X', Y', W' удовлетворяют свойствам (а)-(в), а затем заметим, что X = X', Y = Y', и W = W'. Из доказательства теоремы 10.31 следует, что 2v(G) = |V(G)| — qG(X') + \Х'\. Применим утверждение 10.15 к X'. Поскольку нечетные связные компоненты графа G — X' в точности являются внешними соцветиями леса F, свойство (а) выполняется для X', Y', W'. Поскольку внешние соцветия факторкритические, свойство (б) также имеет место. Поскольку свойство (а) выполнено для X', Y', и W' любое максимальное паросочетание должно покрывать все вершины в V{G)\Y'. Другими словами,
Упражнения 297 Y с у\ Докажем, что справедливо также обратное включение У' с у. Пусть v — внешняя вершина леса F. Тогда множество М Л E(P(v)) образует максимальное паросочетание М\ и М' не покрывает v. Таким образом, v GY. Итак, У = У'. Отсюда следует, что Х = Х' i&W = W'. Теорема доказана. ? Упражнения 1. Пусть G — граф, аМ1?М2 —два максимальных по включению паросоче- тания в G. Докажите, что \Мг\ < 2|М2|. 2 (Кёниг [33], Галлаи [22]). Пусть a(G)— максимальный размер независимого множества в G, и пусть ?(G) — минимальная мощность реберного покрытия. Докажите следующие утверждения: (а) a(G) + t(G) = |V(G)| для любого графа G; (б) v(G) + ?(G) = \V(G)\ для любого графа G без изолированных вершин; (в) ?(G) = a(G) для любого двудольного графа G без изолированных вершин. 3 (Кёниг [31]; см. также работу Рицци [43] или теорему 16.16). Докажите, что во всяком fc-регулярном двудольном графе найдется к попарно непересекающихся совершенных паросочетаний. Выведите отсюда, что в графе с максимальной степенью fc множество ребер может быть разбито на к паросочетаний. 4* (Фалкерсон [21]). Частично упорядоченным множеством или посетом (poset) называется множество S вместе с частичным порядком на S, т. е. отношением R с S х S, которое является рефлексивным ((х, х) е R для всех л: € 5), антисимметричным (если (х, у) е R и (у, х) е R, то х = у) и транзитивным (если (х, у) еЯ и (у, z) gR, то (х, z) €R). Два элемента x,yeS называются сравнимыми, если (х, у)еЯ или (у, х) ? R, иначе они называются несравнимыми. Цепью (chain) называется подмножество попарно сравнимых элементов множества S. Аналогично антицепью (antichain) называется подмножество попарно несравнимых в S элементов. Докажите, используя теорему Кёнига 10.2, следующее утверждение, принадлежащее Дилворту [13]. В конечном посете максимальный размер антицепи равен минимальному числу цепей, на которые может быть разбит данный посет. Указание. Возьмите пару копий z/ и v" для каждого элемента и е S и рассмотрите граф, в котором есть ребра вида {i/, ш"} для всех (у, ш) е R. 5 (Шпернер [45]). (а) Пусть S = {1,2,..., п} и 0 < к < п/2. Обозначим через А и В семейства всех fc-элементных и (fc + 1)-элементных подмножеств множества S соответственно. Построим двудольный граф G = (AUB, {{a,b}: аеА, ЬеВ, а с Ь}). Докажите, что G содержит паросочетание, покрывающее Л. (б)* Докажите лемму Шпернера: максимальное число подмножеств п-эле- ментного множества, среди которых ни одно не содержится в другом, составляет Чп/2\)- 6. Рассмотрим систему множеств {U, У). Инъективная функция Ф: У —> U, удовлетворяющая условию <i>(S) е S для всех S е «У, называется системой различных представителей (system of distinct; representatives) семейства У. Докажите следующие утверждения.
298 Глава 10. Максимальные паросочетания (а) (Холл [27]). Семейство «У имеет систему различных представителей, если и только если объединение любых к множеств из У имеет размер не меньше fc. (б) (Мендельсон и Далмедж [37]). Для ueU положим г(и) := \{Sе5?: иеS}\. Пустьп:=\У\ H^'=2s€^ l^l=SuGi/r(u)- Предположим,что \S\<N/(n—1) для всех S е У и г(u) < N/(п — 1) для всех ueU. Тогда У имеет систему различных представителей. 7 (Мендельсон и Далмедж [37]). Пусть G—двудольный граф с двудольным разбиением V(G) = А и В. Предположим, что S с А, Г с в и существуют паросочетание, покрывающее S, и паросочетание, покрывающее Т. Докажите, что тогда существует паросочетание, покрывающее S и Г. 8. Имеется множество заявок от студентов на посещение семинаров. В своей заявке каждый студент указал ровно три семинара, которые он хотел бы посещать. Два семинара оказались очень популярными и были выбраны 40 студентами; на остальные семинары было получено меньше заявок. (а) Докажите, что для каждого студента можно так выбрать семинар (с учетом его заявок), что ни на один из семинаров не будет назначено более 13 студентов. (б) Покажите, как найти это назначение за время 0(п2), где п — число семинаров. 9. Покажите, что в любом простом графе на п вершинах, имеющем минимальную степень fc, есть паросочетание размера min{fc, [п/2\}. Указание. Воспользуйтесь теоремой Бержа 10.7. 10 (Хопкрофт и Карп [29], Карзанов [30]). Пусть G— граф, а М — паросочетание в G, не являющееся максимальным. (а) Покажите, что существует v(G) — \М\ вершинно непересекающихся М-уве- личивающих путей в G. Указание. Вспомните доказательство теоремы Бержа 10.7. (б) Докажите, что существует М-увеличивающий путь в G, длина которого не более —г-^—пгтт. v(G)-|M| (в) Пусть Р — кратчайший М-увеличивающий путь в G, а Р' — произвольный (М Д Е(Р))-увеличивающий путь. Тогда |Е(Р01 > |Е(Р)| + |Е(Р ПР')|. Рассмотрим следующий общий метод поиска максимальных паросочетаний. Начнем с пустого паросочетания, а затем на каждом шаге будем увеличивать текущее паросочетание вдоль кратчайшего увеличивающего пути. Рассмотрим последовательность Ръ Р2,... увеличивающих путей, выбранных таким образом. Согласно утверждению (в) имеем |E(Pfc)| < |?№c+i)l Для вс^х fc. (г) Покажите, что если |E(Pi)| = \E(J))\ при i ф j, то Р( и Pj не пересекаются по вершинам. (д) Используйте утверждение (б) и докажите, что последовательность |E(Pi)|, ^(^2)L • • • содержит не более 2^v{G) + 2 различных значений. 11* (Хопкрофт и Карп [29], Карзанов [30]). Пусть G—двудольный граф. Рассмотрим метод, изложенный в упражнении 10. (а) Докажите, что по заданному паросочетанию М объединение всех кратчайших М-увеличивающих путей в G может быть найдено за время 0{п + т).
Упражнения 299 Указание. Используйте разновидность поиска в ширину, двигаясь по ребрам, лежащим и не лежащим в паросочетаний, попеременно. (б) Рассмотрим последовательность итераций алгоритма, на протяжении которых длина увеличивающего пути не меняется. Покажите, что всю эту последовательность итераций можно выполнить за время 0(п + т). Указание. Вначале примените утверждение (а), а затем найдите пути последовательно с помощью алгоритма DFS. Помечайте вершины, которые уже были посещены. (в) Используя утверждение (б) вместе с результатом упражнения 10 (д), постройте алгоритм, решающий задачу о максимальном паросочетаний в двудольном графе за время 0(т/п(т + п)). Замечание. Это упражнение можно рассматривать как частный случай упражнения 20(6), из гл. 8. 12. Пусть G—двудольный граф с двудольным разбиением V(G) = A U В, А = {аъ..., ак}, В = {Ъъ ..., Ък). Для произвольного вектора х = (*e)eeE(G) определим матрицу MG{x) = (m^.)i<i,j<fc равенствами х {хе, если е = {аь Ь-} е E(G), rrr. := i lJ [0 иначе. Ее определитель detMG(x) представляет собой полином от х = (*e)eeE(G)- Докажите, что G содержит совершенное паросочетание, если и только если detMG(jc) не равен тождественно нулю. 13. Перманентом квадратной матрицы M=(mij)1<ij<n называется выражение п per(M):= J] Пт*.*ГО> neSn i=l где Sn — множество перестановок {1,..., п}. Докажите, что простой двудольный граф G содержит ровно per(MG(U)) совершенных паросочетаний, где матрица MG{x) определена, как в предыдущем упражнении. 14. Дважды стохастической называют квадратную матрицу с неотрицательными элементами, в которой суммы по всем строкам и столбцам равны 1. Целые дважды стохастические матрицы называются перестановочными. Фаликман [17] и Егорычев [15] доказали, что для любой дважды стохастической (п х п)-матрицы М справедливо неравенство рег(М) > п\/пп, которое обращается в равенство, если и только если каждый элемент матрицы М равен 1/п. (Данное утверждение составляет знаменитую гипотезу ван дер Вардена; см. также работу Скрейвера [44].) Брегман [12] доказал, что для любой 0-1-матрицы М со строковыми суммами гъ...,гп справедливо неравенство рег(М) < (г^.)1^1 •... • (гп\)1^Гп. Используя данные результаты, а также упражнение 13, докажите следующее утверждение. Пусть G — простой fc-регулярный двудольный граф с 2п вершинами, и пусть <t>(G) —число совершенных паросочетаний в G. Тогда
300 Глава 10. Максимальные паросочетания 15 (Петерсен [41]). Докажите, что всякий 3-регулярный граф, содержащий не более двух мостов, имеет совершенное паросочетание. Бывают ли 3-регуляр- ные графы без совершенных паросочетании? Указание. Используйте теорему Татта 10.13. 16* (Андерсон [9]). Пусть G— граф, п := |V(G)| четно и для всякого подмножества X с V(G), удовлетворяющего условию \Х\ < Зп/4, справедливо неравенство U > fin Г(х) \хеХ I Докажите, что G содержит совершенное паросочетание. Указание. Пусть S — множество, на котором нарушается условие Татта. Докажите, что число связных одновершинных компонент в графе G — S не превосходит maxjO, g \S\ — -nj. Рассмотрите отдельно случаи \S\ > п/4 и \S\ < п/Л. 17. Докажите, что неориентированный граф G является факторкритиче- ским, если и только если он связен и v(G) = v(G — v) для всех v е V{G). 18. Докажите, что число ушей в любых двух нечетных ушных декомпозициях факторкритического графа G одинаково. 19*. Для заданного 2-реберно связного графа G обозначим через ip(G) минимальное число четных ушей в его ушной декомпозиции (см. упражнение 21(a) из гл. 2). Покажите, что для любого ребра е е E(G) выполняется одно из двух равенств ip(G/e) = </?(G) + 1 или 4>{G/e) = ip(G) — 1. Замечание. Функция (/?(G) изучалась в работах Сигети [47], а также Сегеди и Сегеди [46]. 20. Докажите, что минимальный факторкритический граф G (т. е. такой граф, что удаление любого ребра нарушает свойство факторкритичности) содержит не более -z (|V(G)| — 1) ребер. Покажите, что эта оценка точна. 21. Продемонстрируйте работу алгоритма максимального паросочетания Эдмондса на примере графа, изображенного на рис. 10.1(6). 22. Пусть задан неориентированный граф. Можно ли найти в нем реберное покрытие минимального размера за полиномиальное время? 23*. Для заданного неориентированного графа G ребро называется не покрываемым паросочетанием, если оно не содержится ни в одном из совершенных паросочетании. Как найти множество не покрываемых паросочетанием ребер за время 0(п3)? Указание. Вначале найдите совершенное паросочетание в G. Затем постройте для каждой вершины и множество не покрываемых паросочетанием ребер, инцидентных и. 24. Пусть G — граф, М — максимальное паросочетание в G, a Fx и F2 — пара особых цветущих лесов относительно М, каждый из которых состоит из максимально возможного числа ребер. Покажите, что множества внутренних вершин лесов Fx и F2 совпадают. 25 (Эрдёш и Галлаи [16]). Пусть G — fc-связный граф, в котором 2v(G) < < \V(G)\ — 1. Докажите следующие неравенства: (a) v(G) > к; (б) t(G) < 2v(G) — fc. Указание. Используйте теорему Галлаи — Эдмондса 10.32.
Литература 301 26. Предложите реализацию алгоритма Эдмондса поиска максимального паросочетания, имеющую сложность O(mnlogn). Указание. Основная трудность состоит в обновлении значений р на шаге (6). Используйте структуру данных из теоремы 6.5 для поддержания значений р в неявном виде (обновления и запросы будут требовать времени O(logn)). Литература Общая литература [1] Gerards А. М. Н. Matching // Handbooks in Operations Research and Management Science; Vol. 7: Network Models (M. O. Ball, T. L. Magnanti, C. L. Monma, G. L. Nemhauser, eds.), Elsevier, Amsterdam, 1995. P. 135-224. [2] Lawler E. L. Combinatorial Optimization; Networks and Matroids. Holt, Rinehart and Winston, New York, 1976, Chapters 5 and 6. [3] Lovdsz L., Plummer M. D. Matching Theory. Akademiai Kiado, Budapest, 1986, and North- Holland, Amsterdam, 1986. [4] Papadimitriou С. H., SteiglitzK. Combinatorial Optimization; Algorithms and Complexity. Prentice-Hall, Englewood Cliffs, 1982, Chapter 10. [5] Pulleyblank W. R. Matchings and extensions // Handbook of Combinatorics; Vol. 1 (R. L. Graham, M. Grotschel, L. Lovasz, eds.), Elsevier, Amsterdam, 1995. [6] SchrijverA. Combinatorial Optimization: Polyhedra and Efficiency. Springer, Berlin, 2003, Chapters 16 and 24. [7] Tarjan R. E. Data Structures and Network Algorithms. SIAM, Philadelphia, 1983, Chapter 9. Процитированные работы [8] Alt H., Blum N., Mehlhorn K., Paul M. Computing a maximum cardinality matching in a bipartite graph in time О (n1'5 y/m/log ri) // Information Processing Letters. 1991. Vol.37. P.237-240. [9] Anderson I. Perfect matchings of a graph // Journal of Combinatorial Theory. Ser. B. 1971. Vol.10. P. 183-186. [10] Berge C. Two theorems in graph theory // Proceedings of the National Academy of Science of the U. S. 1957. Vol. 43. P. 842-844. [11] Berge C. Sur le couplage maximum d'un graphe // Comptes Rendus Hebdomadaires des Seances de 1'Academie des Sciences (Paris) Ser. I Math. 1958. T.247. P. 258-259. [12] Брегман Л. M. Некоторые свойства неотрицательных матриц и их перманентов // Доклады АН СССР. 1973. Т. 211. С. 27-30. (English translation in Soviet Mathematics Doklady, vol.14,1973, p. 945-949.) [13] Dilworth R. P. A decomposition theorem for partially ordered sets // Annals of Mathematics. 1950. Vol.51. P. 161-166. [14] Edmonds J. Paths, trees, and flowers // Canadian Journal of Mathematics. 1965. Vol. 17. P. 449-467. [15] Егорычев Г. П. Доказательство гипотезы Ван дер Вардена для перманентов // Сиб. мат. журн. 1981. Т. 22(6). С. 65-71.
302 Глава 10. Максимальные паросочетания [16] Erdos P., Gallai Т. On the minimal number of vertices representing the edges of a graph // Magyar Tudomanyos Akademia; Matematikai Kutato Intezetenek Kozlemenyei. 1961. Vol.6. 0.181-203. [17] Фаликман Д. И. Доказательство гипотезы Ван дер Вардена о перманентах дважды стохастических матриц // Математические заметки. 1981. Т. 29. С. 931-938. (English translation in Math. Notes of the Acad. Sci. USSR, v. 29,1981, p. 475-479.) [18] Feder Г., Motwani R. Clique partitions, graph compression and speeding-up algorithms // Journal of Computer and System Sciences. 1995. Vol. 51. P. 261-272. [19] Fremuth-Paeger C, Jungnickel D. Balanced network flows VIII: a revised theory of phase- ordered algorithms and the 0(<fnm\og(n2/m)/log n) bound for the nonbipartite cardinality matching problem // Networks. 2003. Vol.41. P. 137-142. [20] Frobenius G. Uber zerlegbare Determinanten // Sitzungsbericht der Koniglich Preussi- schen Akademie der Wissenschaften. 1917. Bd. XVIII. S. 274-277. [21] Fulkerson D. R. Note on Dilworth's decomposition theorem for partially ordered sets // Proceedings of the AMS. 1956. Vol. 7. P. 701-702. [22] Gallai T. Uber extreme Punkt- und Kantenmengen. Annales Universitatis Scientiarum Bu- dapestinensis de Rolando Eotvos Nominatae; Sectio Mathematica. 1959. Vol. 2. P. 133-138. [23] Gallai T. Maximale Systeme unabhangiger Kanten // Magyar Tudomanyos Akademia; Matematikai Kutato Intezetenek Kozlemenyei. 1964. Vol. 9. 0.401-413. [24] Geelen J. F. An algebraic matching algorithm // Combinatorica. 2000. Vol. 20. P. 61-70. [25] Geelen J., Iwata S. Matroid matching via mixed skew-symmetric matrices // Combinatorica. 2005. Vol. 25. P. 187-215. [26] Goldberg A. V., Karzanov A. V. Maximum skew-symmetric flows and matchings // Mathematical Programming. Ser. A. 2004. Vol.100. P. 537-568. [27] Hall P. On representatives of subsets // Journal of the London Mathematical Society. 1935. Vol. 10. P. 26-30. [28] Halmos P. R., Vaughan H. E. The marriage problem // American Journal of Mathematics. 1950. Vol. 72. P. 214-215. [29] HopcroftJ. E.} Karp R. M. An n5/2 algorithm for maximum matchings in bipartite graphs // SIAM Journal on Computing. 1973. Vol. 2. P. 225-231. [30] Карзанов А. В. Точная оценка алгоритма нахождения максимального потока, примененного к задаче о «представителях» // Вопросы Кибернетики. Труды семинара по комбинаторной математике (Москва, 1971). М.: Советское Радио, 1973. С. 66-70. [31] Konig D. Uber Graphen und ihre Anwendung auf Determinantentheorie und Mengen- lehre // Mathematische Annalen. 1916. Bd. 77. S. 453-465. [32] Konig D. Graphs and matrices // Matematikaies Fizikai Lapok. 1931. Vol. 38. 0.116-119 [in Hungarian]. [33] Konig D. Uber trennende Knotenpunkte in Graphen (nebst Anwendungen auf Determinanten und Matrizen) // Acta Litteratum ac Scientiarum Regiae Universitatis Hungar- icae Francisco-Josephinae (Szeged). Sectio Scientiarum Mathematicarum. 1933. Vol. 6. P. 155-179. [34] Kuhn H. W. The Hungarian method for the assignment problem // Naval Research Logistics Quarterly. 1955. Vol. 2. P. 83-97.
Литература 303 [35] Lovdsz L. A note on factor-critical graphs // Studia Scientiarum Mathematicarum Hun- garica. 1972. Vol. 7. P. 279-280. [36] Lovdsz L. On determinants, matchings and random algorithms // Fundamentals of Computation Theory (L.Budach, ed.), Akademie-Verlag, Berlin, 1979. P. 565-574. [37] Mendelsohn N. S., Dulmage A. L. Some generalizations of the problem of distinct representatives // Canadian Journal of Mathematics. 1958. Vol. 10. P. 230-241. [38] Micali S., Vazirani V. V. An 0(V1/2E) algorithm for finding maximum matching in general graphs // Proceedings of the 21st Annual IEEE Symposium on Foundations of Computer Science. 1980. P. 17-27. [39] Mucha M., Sankowski P. Maximum matchings via Gaussian elimination // Proceedings of the 45th Annual IEEE Symposium on Foundations of Computer Science. 2004. P. 248-255. [40] Mulmuley K., Vazirani U. V, Vazirani V V Matching is as easy as matrix inversion // Combinatorica. 1987. Vol.7. P. 105-113. [41] Petersen J. Die Theorie der regularen Graphs // Acta Mathematics 1891. Vol. 15. P. 193-220. [42] Rabin M. O., Vazirani V. V. Maximum matchings in general graphs through randomization // Journal of Algorithms. 1989. Vol. 10. P. 557-567. [43] Rizzi R. Konig's edge coloring theorem without augmenting paths // Journal of Graph Theory. 1998. Vol. 29. P. 87. [44] Schrijver A. Counting 1-factors in regular bipartite graphs // Journal of Combinatorial Theory. Ser.B. 1998. Vol.72. P. 122-135. [45] Sperner E. Ein Satz tiber Untermengen einer endlichen Menge // Mathematische Zeit- schrift. 1928. Bd. 27. S. 544-548. [46] SzegedyB., Szegedy C. Symplectic spaces and ear-decomposition of matroids // Combinatorica. 2006. Vol. 26. P. 353-377. [47] Szigeti Z. On a matroid defined by ear-decompositions // Combinatorica. 1996. Vol. 16. P. 233-241. [48] Tutte W. T. The factorization of linear graphs // Journal of the London Mathematical Society. 1947. Vol.22. P. 107-111. [49] Vazirani V. V. A theory of alternating paths and blossoms for proving correctness of the О (WE) general graph maximum matching algorithm // Combinatorica. 1994. Vol.14. P. 71-109.
ГЛАВА 11 Взвешенные паросочетания Поиск оптимальных недвудольных взвешенных паросочетании представляет собой одну из наиболее сложных комбинаторных задач, разрешимую за полиномиальное время. В данной главе мы распространим алгоритм Эдмондса поиска максимального паросочетания на взвешенный случай и получим для этой задачи алгоритм со сложностью 0(п3). Данный алгоритм имеет множество приложений, некоторые из них будут упомянуты среди упражнений, а также в § 12.2. Задача о взвешенных паросочетаниях может быть сформулирована следующими двумя основными способами. Maximum Weight Matching (задача о взвешенных паросочетаниях) Дано: неориентированный граф G и веса с: E(G) -* R. Надо: найти паросочетание максимального веса в G. Minimum Weight Perfect Matching (задача о взвешенных совершенных паросочетаниях) Дано: неориентированный граф G и веса с: E(G) —> R. Надо: найти совершенное паросочетание минимального веса в G или выяснить, что G не содержит совершенных паросочетании. Утверждение 11.1. Задача о паросочетании максимального веса и задача о совершенном паросочетании минимального веса эквивалентны. Доказательство. Пусть задан экземпляр (G, с) задачи о совершенном паросочетании минимального веса. Положим с'{е) := К — с(е) для всех ребер е е E(G), где К := 1 + Xe(E?(G) k(e)|. Тогда любое паросочетание максимального веса в (G, с') является паросочетанием максимального размера, а значит, задает решение задачи о совершенном паросочетании минимального веса в (G,c) (если оно существует). Обратно, пусть (G, с) — экземпляр задачи о паросочетании максимального веса. Пусть Я — граф, в котором V(H):={(i;,i):i;€V(G),i€{l,2}}
§ 11.1. Задача о назначениях 305 и Е(Н) := {{(и, 0, (ш, 0}: {v, w} е E(G), i е {1,2}} U {{(i/, 1), (v, 2)}: i/ e V(G)}. Иными словами, Я состоит из двух копий графа G, причем между парами копий всех вершин проведены вспомогательные ребра. Граф Я содержит совершенное паросочетание. Положим c'{{{v, 1), (ш, 1)}) := — с(е) для всех ребер е = = {v, w} е E(G) и с'{е) := 0 для остальных ребер е е Я(Я). Тогда совершенное паросочетание минимального веса М в (Я, с') порождает паросочетание максимального веса в (G, с). Для доказательства этого факта достаточно рассмотреть множество {{и, w} е ?(G): {(v, 1), (w, 1)} е М}. ? В дальнейшем мы будем изучать лишь задачу о совершенном паросочетании минимального веса. Как и в предыдущей главе, мы начнем с изучения случая двудольного графа (§11.1). После изложения общей схемы алгоритма взвешенных паросочетании в § 11.2 мы потратим некоторое время на изучение деталей реализации (§11.3) и получим алгоритм со сложностью 0(п3). В некоторых случаях полезно находить оптимальные решения сразу для множества экземпляров задачи о паросочетаниях, в которых веса отличаются лишь на небольшом числе ребер. В этом случае, как будет показано в § 11.4, нет необходимости каждый раз решать задачу заново. Наконец, в § 11.5 мы изучим политоп паросочетании, т. е. выпуклую оболочку множества характеристических векторов всех паросочетании. Описание близкого к нему по сути политопа совершенных паросочетании будет использовано при построении алгоритма поиска взвешенных паросочетании. И обратно, из данного алгоритма будет прямо следовать корректность нашего описания политопа. § 11.1. Задача о назначениях Задачей о назначениях называют задачу о совершенном паросочетании минимального веса в двудольном графе. Она представляет собой одну из классических проблем комбинаторной оптимизации. Впервые она, по-видимому, была поставлена в работе Монжа [23]. Как и в доказательстве теоремы 10.5, задачу о назначениях можно свести к задаче о потоке в сети. Теорема 11.2. Задача о назначениях может быть решена за время 0(nm+n2logn). Доказательство. Пусть G—двудольный граф с разбиением на доли V(G) =AUB. Будем считать, что |Л| = \В\ = п. Добавим вершину 5 и соединим ее со всеми вершинами доли Л. Аналогично добавим другую вершину t и соединим ее со всеми вершинами доли В. Ориентируем ребра графа от s к А, от А к В и от В к t. Положим везде пропускные способности равными 1, а стоимости добавленных ребер будем считать нулевыми. Тогда любой целый s-t-поток величины п будет отвечать совершенному па- росочетанию той же стоимости и обратно. Итак, нам требуется решить задачу о потоке минимальной стоимости. Для этого мы применим алгоритм последовательного увеличения вдоль кратчайших путей (см. §9.4). Общая величина
306 Глава 11. Взвешенные паросочетания потока составляет п, поэтому по теореме 9.13 время его работы будет составлять 0(nm + n2 log п). ? Данный алгоритм является наиболее быстрым среди известных. По сути он эквивалентен «венгерскому методу», придуманному Куном [18] и Манкре- сом [24], представляющему собой старейший полиномиальный алгоритм для задачи о назначениях (см. упражнение 9). Полезно получить описание задачи о назначениях в терминах линейного программирования. Оказывается, в задаче целочисленного программирования mini J]c(eK:^e{0,l}(e€E(G)), ?xe = 1 {и € V(G))\ e€?(G) ee5(v) ' требования целочисленности можно опустить (заменив условие хе е {0,1} на хе>0). Двойственная линейная программа здесь такова: max \ У, zv: zv + zw ^ с(е) Для всех е = iu> w) G ?(G) [. ^eV(G) ' Основываясь на этом, мы получаем следующую переформулировку венгерского алгоритма. Утверждение 11.3. Пусть G — граф с весами с: E(G) —> R. Рассмотрим такой вектор z е RV(G), что zv + zw<: с(е) для всех е = {и, w} е E(G). Построим граф Gz:=(v(G),{e = {v,w}eE(G):zv + zw = c(e)}). Пусть М — паросочетание в Gz, a F — максимальный чередующийся лес в Gz относительно М. Пусть X и Y — множества внутренних и внешних вершин соответственно. 1. Если паросочетание М является совершенным, то оно будет совершенным паросочетанием минимального веса в G. 2. Если rG(y) сх для всех yeY,mo М будет максимальным паросочетанием в G. 3. Иначе положим е := min{min{c(e)~^~*" :e = {v, w} eE(G[Y])}, mm{c(e)-zv-zw:e = {v,w}e5G(Y)n5G(V(F))}}, z'v :=zv — e при и e X, z'v := zv + e при и e У uz'v:=zv при v e V(G) \ V(F). Тогда zv + zw < c(e) для всех e = &> w} G ?(G)> M u ?(F) ^ E(G*') u rcv Су) \Хф0для некоторого у е Y. Доказательство. Утверждение 1 следует из условий дополняющей нежесткости: для любого другого совершенного паросочетания М' мы имеем X с(е) = X *" + X (c№~zv-zw)> ееМ' yeV(G) е={у,ш}еМ' i;€V(G) ueV(G) е={и,ш}еМ ееМ
§ 11.1. Задача о назначениях 307 Утверждение 2 следует из формулы Бержа — Татта (теорема 10.14): каждая внешняя вершина является нечетной компонентой связности в графе G — X, а паросочетание М оставляет ровно \Y\ — \Х\ вершин непокрытыми. Утверждение 3 следует из выбора значения е. ? Отметим, что данный результат оказывается справедливым также и для недвудольных графов. Если граф G двудольный, то после каждого двойственного изменения в случае 3 мы можем либо нарастить чередующийся лес, либо увеличить размер паросочетания. В конце концов мы придем к случаю 1, т. е. получим совершенное паросочетание минимального веса, которое также будет отвечать оптимальному решению линейной программы, поскольку характеристические векторы матрицы М и z удовлетворяют условиям дополняющей нежесткости (см. следствие 3.21). Следовательно, политоп Q, представленный в нижеследующей теореме, является целым. Далее мы дадим другое доказательство этого факта. Теорема 11.4. Пусть G — граф. Рассмотрим политопы Р := Jх е R+(G): J]xe < 1 для всех и е V(G)\ U Q:= \xeRE+{G): ^хе = 1 для всех v е V(G)j, называемые политопом дробных паросочетаний и политопом дробных совершенных паросочетаний в G соответственно. Если граф G двудольный, то полито- пыР uQ являются целыми. Доказательство. Если граф G двудольный, то его матрица инцидентности является тотально унимодулярной по теореме 5.25. Следовательно, по теореме Хофф- мана — Краскала 5.20 политоп Р является целым. Политоп Q образует грань политопа Р, поэтому он также целый. ? Известно интересное следствие из доказанного факта, касающееся дважды стохастических матриц. Дважды стохастическая матрица представляет собой квадратную матрицу с неотрицательными элементами, в которой сумма чисел в каждой строке и каждом столбце равна 1. Целочисленные дважды стохастические матрицы называются перестановочными. Следствие 11.5 (Биркгофф [7], фон Нейман [26]). Любая дважды стохастическая матрица М представляется в виде выпуклой комбинации подходящих перестановочных матриц Ръ...,Рк (т. е. М = сгРг + ... + скРк для таких неотрицательных скаляров с1з...,ск, что сг +... + ск = 1). Доказательство. Пусть М = (rny-)i,je{i,...,n} —дважды стохастическая (n х ^-матрица, а Кпп — полный двудольный граф с разбиением на доли {аъ ...,ап}и й{Ьъ..., Ъп]. Для каждого ребра е — {аь Ь^еЕ(Кпп) положим xe = mtj. Поскольку матрица М дважды стохастическая, вектор х лежит в политопе дробных совершенных паросочетаний Q графа Кпп. По теореме 11.4 и следствию 3.32 вектор х
308 Глава 11. Взвешенные паросочетания может быть представлен в виде выпуклой комбинации целых вершин политопа Q. Эти вершины, очевидно, соответствуют перестановочным матрицам. ? Данное следствие, часто называемое теоремой Биркгоффа — фон Неймана, может быть также доказано непосредственно (см. упражнение з). В литературе изучались также некоторые более общие варианты задачи о назначениях, см. работу Буркарда, Делл'Амико и Мартелло [8]. § 11.2. Общая схема алгоритма поиска взвешенного паросочетания Цель этого и следующего параграфов — описать полиномиальный алгоритм для задачи о совершенном паросочетании минимального веса в графах общего вида. Данный алгоритм принадлежит Эдмондсу [11] и опирается на идеи его алгоритма для задачи о паросочетании максимального размера (см. §10.5). Опишем вначале общие идеи, лежащие в основе алгоритма, не углубляясь в детали реализации. Пусть задан граф G с весами с: E(G) -> R. Задача о совершенном паросочетании минимального веса может быть записана в виде следующей целочисленной линейной программы: mini J]c(e)xe: xes {0,1} (е€E(G)), J*e = 1 0> € V(G))}. Если A — подмножество множества V(G), имеющее нечетную мощность, то любое совершенное паросочетание должно содержать нечетное количество ребер в 5{А), в частности хотя бы одно. Поэтому к программе можно добавить условия вида е<=5(А) На протяжении данной главы мы будем использовать обозначение ^:={ЛС y(G): |А| нечетно}. Рассмотрим теперь линейную релаксацию данной программы: минимизировать \\ с(е)хе eeE(G) (in) при условиях хе > 0 (ее ?(G)), ?хе = 1 (i/€V(G)), ееб(и) 2*е>1 (А€^, |А|>1). ее5(А) Впоследствии мы докажем, что политоп, описываемый условиями (11.1), является целым, а значит, данная линейная программа описывает задачу о совершенном паросочетании минимального веса (в этом заключается утверждение
§ 11.2. Общая схема алгоритма поиска взвешенного паросочетания 309 теоремы 11.15, составляющей основной результат данной главы). При доказательстве корректности алгоритма указанный факт нам не потребуется, но мы будем использовать эту линейную программу в качестве мотивации при изложении алгоритма. Для того чтобы построить двойственную программу для задачи (11.1), мы добавим по переменной zA для каждого неравенства прямой программы, т. е. для каждого множества А е si. Двойственная линейная программа такова: максимизировать У, za АеЛ при условиях zA > 0 (А € j4, \А\ > 1), (11.2) ]Г zA<c(e) (eeE(G)). Аел/:ее5{А) Заметим, что при и € V(G) не требуется неотрицательности двойственных переменных z^vy Алгоритм Эдмондса, к изложению которого мы переходим, представляет собой прямо-двойственный алгоритм. Он начинает свою работу с пустого паросочетания (хе = 0 для всех е е. E(G)) и допустимого двойственного решения {2 min{c(e): е е 5(A)}, если \А\ = 1, 0 иначе. В любой момент работы алгоритма z образует допустимое двойственное решение, причем *е>0=> X! *А = с(е); *Л>0=>^]хе<1. (11.3) Ае^:ее5(Л) ее5(А) Алгоритм останавливается, когда х превращается в характеристический вектор совершенного паросочетания (т. е. становится допустимым решением прямой задачи). Тогда с учетом условий дополняющей нежесткости (11.3) (следствие 3.23) мы получаем пару из оптимальных прямого и двойственного решений. Поскольку вектор х служит оптимальным решением для задачи (11.1) и при этом является целочисленным, он представляет собой характеристический вектор совершенного паросочетания минимального веса. Пусть задано допустимое двойственное решение z. Назовем ребро е жестким (tight), если отвечающее ему двойственное неравенство обращается в равенство, т. е. если X *А = с(е). Л€а^:е€5(А) В любой момент времени текущее паросочетание будет состоять исключительно из жестких ребер. Алгоритм работает в соответствии с утверждением 11.3 (которое справедливо даже для недвудольных графов). Однако если граф G не является двудольным, то в нем могут появиться соцветия. Если стянуть их, то работу алгоритма можно будет продолжить, однако при этом для некоторых Bejtf возникнут двойственные переменные zB > 0.
310 Глава 11. Взвешенные паросочетания Будем далее обозначать через Gz граф, получающийся из G удалением всех ребер, которые не являются жесткими, а также стягиванием всех таких множеств В, что zB > 0, в отдельные вершины. В любой момент семейство & := := [В е j4\ \В\ = 1 или zB > 0} будет оставаться ламинарным, а для каждого элемента Вей будет существовать факторкритический подграф с множеством вершин В, состоящий лишь из жестких ребер. Вначале семейство 38 состоит лишь из одноэлементных подмножеств. Каждая итерация алгоритма устроена следующим образом. Вначале мы находим максимальное по размеру паросочетание М в Gz, для чего используем алгоритм Эдмондса. Если паросочетание М является совершенным, то на этом работа алгоритма завершена. А именно, мы можем расширить М до совершенного паросочетания в G, добавляя к нему лишь жесткие ребра. Поскольку условия (11.3) выполнены, возникающее при этом паросочетание является оптимальным. В противном случае рассмотрим разложение Галлаи — Эдмондса W, X, Y для графа Gz (см. теорему 10.32). Для каждой вершины и графа Gz обозначим через В(и) е && множество вершин, стягивание которых приводит к образованию v. Произведем коррекцию двойственного решения следующим образом (см. рис. 11.1). Для каждой вершины v GX уменьшим zB^ на некоторую положительную величину е. Для каждой связной компоненты С в GZ[Y] увеличим zA на е, где А = IJuec^^)- Заметим, что жесткие ребра, из которых состоит текущее паросочетание, остаются жесткими, поскольку по теореме 10.32 все ребра паросочетания с одним концом в X имеют другой конец в Y. (Действительно, все ребра чередующегося леса, с которым мы работаем, остаются жесткими.) Возьмем в качестве е максимальное возможное значение, для которого сохраняется допустимость двойственного решения. Поскольку в текущем графе отсутствует совершенное паросочетание, число связных компонент графа Gz [Y] превосходит |Х|. Следовательно, указанное двойственное изменение увеличивает значение двойственной целевой функции ^Aej^ zA хотя бы на е. Если значение е можно взять произвольно большим, то двойственная линейная программа (11.2) является неограниченной, а значит, прямая линейная программа (11.1) несовместна (см. теорему 3.27). Таким образом, в G нет совершенного паросочетания. Поскольку мы изменяем текущее двойственное решение, граф Gz также меняется. А именно, в нем могут появиться новые жесткие ребра, и некоторые новые подмножества вершин могут оказаться стянутыми. (Эти множества отвечают компонентам множества Y, состоящим более чем из одной вершины.) Кроме того, некоторые ранее стянутые множества могут быть «восстановлены». (Они соответствуют элементам множества X, состоящим более чем из одной вершины, двойственные переменные для которых стали равны нулю.)
§ 11.3. Реализация алгоритма поиска взвешенного паросочетания 311 Будем продолжать вышеуказанные итерации, до тех пор пока в графе не будет найдено совершенное паросочетание. Как мы покажем далее, представленная процедура заканчивает работу за конечное время. Этот факт будет следовать из того, что между двумя последовательными увеличениями размера паросочетания каждый шаг (наращивание, стягивание или восстановление) увеличивает количество внешних вершин. § 11.3. Реализация алгоритма поиска взвешенного паросочетания Перейдем теперь от неформального описания алгоритма к изложению подробностей его реализации. Как и в алгоритме Эдмондса поиска максимального паросочетания, мы стягиваем соцветия явным образом, а вместо этого сохраняем их ушные декомпозиции. Существует, однако, несколько трудностей. Шаг стягивания в алгоритме Эдмондса поиска максимального паросочетания приводит к возникновению внешнего соцветия. При выполнении шага увеличения две связные компоненты цветущего леса становятся свободными. Поскольку двойственное решение при этом не изменяется, мы должны сохранить информацию об этих соцветиях. Тем самым, мы приходим к концепции так называемых свободных соцветий. На шаге наращивания мы можем «дотянуться» до свободного соцветия, которое при этом станет внешним или внутренним. Тем самым, нам приходится иметь дело с обобщенными цветущими лесами. Другая сложность состоит в том, что иногда нам придется восстанавливать ранее сжатые соцветия одно за другим. Более точно, пусть значение zA становится равным нулю для некоторого внутреннего соцветия Л. При этом могут существовать такие подмножества А' с А, что \А'\ > 1 и zA> > 0. Тогда нам придется восстановить соцветие А, но не меньшие соцветия, содержащиеся внутри А (кроме тех, которые оказываются внутренними и двойственные переменные которых также нулевые). На протяжении работы алгоритма мы поддерживаем ламинарное семейство ^ с si, в котором содержатся по крайней мере все одноэлементные подмножества. Все элементы семейства 9& являются соцветиями. При этом zA = 0 для всех А ? &. Семейство 9& является ламинарным и при работе алгоритма задается своим древесным представлением (см. утверждение 2.14). Для удобства обозначений мы будем последовательно нумеровать все соцветия в Я9 кроме одноэлементных. На протяжении работы алгоритма мы храним ушные декомпозиции всех соцветий в 38. Переменные ju(x) при х € V(G), как и ранее, задают текущее паросочетание М. Мы обозначаем через Ь1{х),..., Ъкх(х) соцветия в Я, содержащие х, не считая одноэлементных. При этом Ькх(х) обозначает наибольшее (по включению) из этих соцветий. Для каждой вершины х е V(G) и i = 1,..., кх мы поддерживаем переменные р1[х) и ipl(x), где р1{х) обозначает базу соцветия Ъ1(х), а функции /i(x) и у*(х) (для всех таких х и j, что bj(x) = i) ассоциированы с М-чередующейся ушной декомпозицией соцветия i.
312 Глава 11. Взвешенные паросочетания Х6 = Х(х5)6 *i = /Д*о) У2 = Р(Уо) Уз = м(у2) ¦а(Уъ) ЪУв = Х(У5) Рис. 11.2 Конечно, после каждого увеличения паросочетания нам придется обновлять структуры, задающие соцветия ((/? и р). Обновление р выполняется легко. Обновление ip также можно выполнить за линейное время по лемме 10.23. Для внутренних соцветий нам понадобится помнить кроме базы также вершину, ближайшую к корню дерева в обобщенном цветущем лесе, а также соседа в следующем внешнем соцветии. Дяя каждой базы х внешнего соцветия две указанные вершины будут обозначаться через а(х) и # (<т(х)). См. пример на рис. 11.2. С использованием этих переменных мы можем восстановить чередующиеся пути к корню дерева. Поскольку соцветия должны сохраняться при увеличениях паросочетания, нам придется выбирать такие увеличивающие пути, после применения которых каждое соцветие по-прежнему будет содержать почти совершенное (покрывающее все вершины, кроме одной) паросочетание. Пример на рис. 11.2 показывает, что при выборе пути следует проявлять определенную осторожность. А именно, на рисунке изображены два вложенных внутренних соцветия, одно из которых порождается множеством {х3,х4,х5}у а другое — {хъ х2, х3, х4, х5}. Если при поиске чередующегося пути от х0 к корню х6 мы будем рассматривать ушную декомпозицию лишь большего из них, то в результате получится последовательность (х0,хг,х4,хБ = а(х1)ух6 = #C*r5)). После увеличения вдоль пути (у6,У5>У4>Уз>У2>У1>Уо>х0,х1,хл,х59х6) в фактор- критическом графе, порожденном множеством {х3,х4,х5}, наше паросочетание более не будет почти совершенным. Итак, нам нужно уметь находить чередующийся путь внутри каждого соцветия, который содержит четное число ребер из каждого вложенного соцветия. Этого можно достичь следующим образом. BlossomPath (путь в соцветии) Вход: вершина х0. Выход: М-чередующийся путь Q(x0) из х0 в ркх°(х0).
§ 11.3. Реализация алгоритма поиска взвешенного паросочетания 313 (Т) Присвоить h := О и В := {b;Qt0): j = 1,..., кХо}. (2) Whiles/р^о(х0) do: Присвоить x2h+1 := м(х2/1) и x2h+2 := ?>4*2h+i)> гДе i = min{; € {1,..., fcX2/i+i}: bj(x2h+1) € в}. Добавить к В все соцветия из ??, содержащие x2h+2, но не x2h+1. Удалить из В все соцветия, базой которых служит x2h+2. Присвоить h := h + 1. (3) Выдать в качестве Q(x0) путь, состоящий из вершин лг0, хъ ..., x2h. Утверждение 11.6. Время работы процедуры BlossomPath составляет 0(гг). Множество MA?(Q(x0)) содержит почти совершенное паросочетание в каждом из соцветий. Доказательство. Проверим вначале, что описанная процедура действительно находит некоторый путь. В самом деле, если мы вышли из соцветия Л, то мы более никогда в него не войдем. Это следует из того, что стягивание всех максимальных вложенных соцветий для любого соцветия в 9& приводит к возникновению графа, представляющего собой цикл с возможными дополнительными ребрами (это свойство будет поддерживаться алгоритмом). В начале каждой итерации В представляет собой список всех соцветий, которые либо содержат х0, либо в которые мы вошли по ребру, не принадлежащему паросочетанию, и до сих пор не вышли. Путь, который строит процедура, выходит из каждого соцветия в В по ребру паросочетания. Следовательно, число ребер паросочетания в каждом соцветии является четным, что доказывает второе из заявленных свойств. Для того чтобы описанная процедура выполнялась за время 0(п), необходимо позаботиться об эффективном обновлении множества В. Будем хранить В в виде упорядоченного списка. Если использовать древесное представление для SB, то с учетом того факта, что в каждое соцветие мы входим и выходим не более одного раза, время работы можно оценить как 0(п + |^|). Осталось заметить, что \38\ = 0(п), поскольку семейство Я ламинарное. ? Итак, нахождение увеличивающего пути сводится к применению процедуры BlossomPath внутри соцветий и использованию функций /х и х Для переходов между соцветиями. Предположим, что мы обнаружили пару смежных внешних вершин х, у, принадлежащих различным деревьям обобщенного цветущего леса. Применим к х и у процедуру TreePath (см. далее). Объединение построенных путей вместе с ребром {х, у] и будет искомым увеличивающим путем. TreePath (путь в дереве) Вход: Выход: внешняя вершина v чередующийся путь Piv) из v до корня дерева в цветущем лесе.
314 Глава 11. Взвешенные паросочетания (Т) Пусть Р(у) изначально состоит лишь из v. Положить х := и. (2) Положить у := ркх(х). Положить Q(x) := BlossomPath(x). Добавить Q(x) в конец P(v). If /i(y) = у then stop. (3) Присвоить P(v) := P(v) + {у, ju(y)}. Положить Qicr^y))) :=BlossomPath((j(/x(y))). Добавить обращенный путь Q(cr(/z(y))) в конец P(v). Положить P(v) := P{v) + М/Ду)), * №(j)))b Присвоить x := *(cr(jLt(y))), goto ®. Вторая основная трудность для эффективной реализации алгоритма состоит в вычислении значений е. Обобщенный цветущий лес, возникающий после выполнения всех шагов наращивания, стягивания и увеличения, порождает декомпозицию Галлаи — Эдмондса W, X, Y для графа Gz. Здесь W состоит из всех свободных соцветий, X содержит все внутренние соцветия, а У состоит из внешних соцветий. Для упрощения обозначений положим с({и, w}) := <*>, если [и, w} ? E(G). Более того, введем обозначение slack(i>, w) := c({v, w}) — /^ zA. Итак, ребро {v, w} является жестким, если и только если slack(i>, w) = 0. Положим тогда := min{zA: А — максимальное по включению внешнее соцветие, \А\ > 1}; := min{slack(x, у): вершина х внешняя, вершина у свободная}; *з = 7г min{slack(x, у): х,у вершины внешние и принадлежат различным соцветиям}; e:=mm{e1,e2,e3}. Это значение е является максимальным из тех значений, при изменении на которые сохраняется допустимость двойственных переменных. Если е = оо? то программа (11.2) неограничена, а значит, программа (11.1) несовместна. В этом случае G не имеет совершенного паросочетания. Очевидно, что значение е может быть вычислено за конечное время. Однако для того чтобы получить алгоритм с общей сложностью 0(п3), нам необходимо найти е за время 0{п). Это несложно сделать для еъ однако для вычисления е2 и е3 нам понадобятся дополнительные структуры данных. Для всякого Ле J положим Са'= 2 *в- ВеЯ:А?В Мы будем обновлять эти значения при всяком изменении двойственного решения. Эти изменения несложно выполнить за линейное время (используя древес-
§ 11.3. Реализация алгоритма поиска взвешенного паросочетания 315 ное представление для &). Тогда е2 = пип{с({л:, у}) — (^ — ?{yj: вершина х внешняя, вершина у свободная}, ез = « min{c({x, у}) — ^ — ?{у}: вершины х, у внешние, {*, у} % В для всех В е &}. Для каждой внешней вершины и и каждого AG J, кроме тех, для которых существует такое соцветие ВеШ, что Л и {и} с в, введем переменные tA и тА. Здесь тА— вершина в А, на которой достигается минимум slack(i>, тА), a t^ := slack(i>, т^) + Л + ?Л, где А — сумма значений ? на всех произошедших двойственных шагах. Заметим, что tA не меняется, пока вершина и остается внешней иАе^. Наконец, положим tA := min{t^: v ? А, вершина и внешняя}. Имеем е2 = min{slack(i>, тА): вершина и внешняя, ЛеЛ — максимальное свободное соцветие} = = min{tA — Л — (А: As Я — максимальное свободное соцветие} и аналогично е3 = 2 min{tA — А — ?А: А€. <% — максимальное свободное соцветие}. Несмотря на то что при вычислении е2 и е3 нам нужны лишь значения tA для максимальных свободных и максимальных внешних соцветий в Я, мы будет поддерживать эти переменные также для внутренних соцветий и немаксимальных соцветий, поскольку эти значения понадобятся нам в дальнейшем. Внешние, но не максимальные соцветия не могут стать внешними максимальными, до того как произойдет увеличение. После каждого увеличения, однако, все указанные переменные пересчитываются заново. В начале работы, после каждого увеличения паросочетания, а также когда вершина и становится внешней (не будучи ранее таковой), нам нужно найти значения т А и tA и, возможно, обновить tA для всех AG Я (кроме тех, которые являются внешними, но не максимальными). Это можно выполнить следующим образом. Update (обновить) Вход: Выход: внешняя вершина v. обновленные значения тА, tA V И tA для всех Ае&. \ ® For х € V(G) do: Присвоить т**} := х и t^ := с({и, х}) — ?{у} + А. (2) For А е дВ: \А\ > 1 (в порядке неуменьшения размера) do: Присвоить т„ := тА и tA := tA' — ?А/ + ?А, где А' — максимальное собственное подмножество А в Я, для которого разность tA>— ?А' минимальна.
316 Глава 11. Взвешенные паросочетания (3) For Ле J: и ? Ау кроме тех, которые являются внешними, но не максимальными, do: Присвоить tA := min{tA, t*}. Очевидно, что представленный алгоритм выполняет ровно те же действия, что указаны в определении т^ и tyA. Важно отметить, что время его работы является линейным. Лемма 11.7. Если семейство 98 ламинарно, то при подходящей реализации процедура Update имеет сложность 0(п). Доказательство. Согласно утверждению 2.15 ламинарное семейство подмножеств V(G) имеет размер не более 2|V(G)| = 0(п). В случае, если 3 представлено в виде дерева, очевидно, существует реализация данного алгоритма с линейной сложностью. ? Продолжим формальное описание алгоритма. Вместо того чтобы определять, какие вершины являются внутренними, а какие внешними, на основании значений /i, ф и р, мы будем явно помечать каждую вершину как внутреннюю, внешнюю или свободную. Weighted Matching (алгоритм поиска взвешенного паросочетания) Вход: граф G, веса с: E{G) -> R. Выход: совершенное паросочетание минимального веса в G, представленное набором ребер вида {х, /*(*)}, либо сообщение об отсутствии совершенного паросочетания в G. ® Присвоить 98 := {{v}: и е V(G)} и К := 0. Присвоить А := 0. Присвоить Z{v} := т> min{c(e): е е 5(и)} и ?{у} := z^ для всех и € V(G). Присвоить kv := 0, /i(i>) := и, p°(v) := и и <p°(v) := и для всех и е V(G). Пометить все вершины как внешние. (2) Присвоить tA := оо для всех А е 98. For all и: v — внешняя вершина do: Updated). (3) («двойственный шаг») Присвоить ег := min{zA: А — максимальный внутренний элемент семейства &, \А\ > 1}. Присвоить е2 := min{tA — А — ?А: А — максимальный свободный элемент семейства 99]. Присвоить е3 := min | ^ (tA — А — ?л): А — максимальный внешний элемент семейства 98 }. Присвоить е := min^, е2, е3}. If е = оо then stop (в G нет совершенного паросочетания). For каждого максимального внешнего элемента А в 9В do:
§ 11.3. Реализация алгоритма поиска взвешенного паросочетания 317 Присвоить zA := zA + г и ?А/ := ?А/ + г для всех таких А' € 53, что А' с Л. For каждого максимального внутреннего элемента А в % do: Присвоить zA := zA — г и ?А/ := ?А/ — е для всех таких А' € ??, что А' с Л. Присвоить А := А + е. 0 If е = ^ then goto (§). If е = е2 и t* — А — ?А = slack(x, у) = 0, х — внешняя вершина, у е А — свободная вершина then goto (5). If е = е3 и t* — А — ?А = slack(x, у) = 0, х, у — внешние вершины, А — максимальный внешний элемент семейства Лд^Л,уеЛ then: Пусть путь Р(х) := TreePath(x) задается последовательностью {х = х0, хъ x2i..., x2h)- Пусть путь Р(у) := TreePath(y) задается последовательностью СУ = Уо>УъУ2>--->У2./). If Р(х) и Р(у) не пересекаются по вершинам then goto (6) else goto (7). (5) («наращивание») Положить сг(рку(у)) := у и # (у) := х. Пометить все вершины и, для которых pkv(v) = рку{у), как внутренние. Пометить все вершины v, для которых /x(pfcu(iO) = рку(у), как внешние. For каждой новой внешней вершины и do: Update(u). Goto (3). (6) («увеличение») For i := 0 to h -1 do: Присвоить /x(x2l+1) := x2i+2 и ju(x2i+2) := *2i+1. For i := 0 to j -1 do: Присвоить /i(y2i+1) := y2i+2 и /i(y2?+2) := ya+i- Присвоить /i(x) := у и /i(y) := я\ Пометить все вершины v, для которых концом пути TreePath(y) является либо x2h, либо y2j, как внешние. Обновить все значения ipl(v) и pl(v) (используя лемму 10.23). If (л(и) Ф и для всех и then stop else goto (5). (7) («стягивание») Пусть г = x2h> = у2у — первая внешняя вершина на пути V(P(x)) П У{Р(уУ), для которой ркг(г) = г. Пусть Л:={ие V(G): рЧ") € V(P (x)[x>r]) U V(P(y)[y,r])}. Присвоить К := JC + 1, & := 3? U {A}, zA := 0 и ?A := 0. For all v eAdo: Присвоить kv := kv + 1, bkv(v) := K, pkv[v) := r, yku(v) := (/?fcu_1(i;). For i := 1 to h' do: If pfc*2i_1(*2i) 7^ г then присвоить (/^i (*2.) := *2i-i- If pfcjC2i-1_1(x2i-i) / r then присвоить (/?fc*2i-i (дс2?_1) := x2i. For i := 1 to ;' do: If pky^x{y2d Ф r then присвоить ч?ку* (y2i) := y2i_1# If p^i-i-^y^j) ^ r then присвоить (/?fc^-i (y^) := y2i.
318 Глава 11. Взвешенные паросочетания If ркх~1(х) Ф г then присвоить укх(х) := у. If р1^'1^) ф г then присвоить ^{у) := х. For каждой внешней вершины и ? A do: Присвоить tf:=tf'—?Л/ и т^ :=т^', где А' — максимальное собственное подмножество А в SB, для которого разность t^ — ?А/ минимальна. Присвоить tA := min{t^: v — внешняя вершина и не существует такого A6J, что A U {у} с А}. Пометить все вершины и € А как внешние. For каждой новой внешней вершины и do: Updated). Goto (3). (8) («восстановление») Пусть Ae^l — максимальное внутреннее соцветие, для которого zA = О и |Л| > 1. Присвоить д& := @\{А}. Пусть у := cr(pfcy(i;)), для некоторой вершины и е А. Пусть путь Q(y) := BlossomPath(y) задается последовательностью (У = г0, п, г2,..., г2г_ъ r2Z = р^(у)). Пометить все такие вершины veA, что pfcu * (и) ^ V(Q(y)), как свободные. Пометить все такие вершины и е А, что pfcu~1(i;) = r2i_i для некоторого i, как внешние. For all и G A: pfcy-1(iO = г2? для некоторого i (v остается внутренней) do: Присвоить а{рки~г(и)) := г- и #(/}•) := г)-_1э где ; := min{;' € {0,..., 21}: рКГ\Ту) = рк»~\у)}. For all v G Л do: Присвоить kv := kv — 1. For каждой новой внешней вершины и do: Update(u). Goto (3). Заметим, что в представленном алгоритме возможен случай е = 0. Переменные т^ не используются алгоритмом явно. Пример выполнения шага восстановления (D показан на рис. 11.3. (Происходит восстановление соцветия из 19 вершин. Два из пяти вложенных соцветий становятся свободными, два становятся внутренними, а одно — внешним.) Перед тем как приступить к анализу алгоритма, разберем основные шаги его работы на примере. Рассмотрим граф, изображенный на рис. 11.4(a). Вначале алгоритм полагает Ца) = Z{d} = Z{h} = 2, Z{b} = z{c} = z{f} = 4 и z{e}=z{g}=6. На рис. 11.4(6) отмечены параметры нежесткости (slack). Итак, в начале работы ребра {a, d}, {а, h}, {b, с}, {b, /}, {с, /} являются жесткими. Следовательно, на первой итерации мы получим 6 = 0. Будем считать, что алгоритм просматривает вершины в алфавитном порядке. Тогда первыми шагами будут увевличить(а, d), увеличить (b, с), нарастить (/, Ь).
§ 11.3. Реализация алгоритма поиска взвешенного паросочетания 319 Рис. 11.3 Рис. 11.4 (а) о с (б) 9d о е о g о о п had о е о / 8 Рис. 11.5
320 Глава 11. Взвешенные паросочетания (б) о е о g Рис. 11.6 Текущий обобщенный цветущий лес представлен на рис. 11.5(a). Следующими шагами станут , _ ч „ стянуть(/, с), нарастить(п, а), после чего мы получили преобразованный обобщенный цветущий лес, показанный на рис. 11.5(6). Теперь, когда мы исчерпали все жесткие ребра, потребуется изменение двойственных переменных. На шаге (3) мы получим е = е3 = 1, скажем А = {Ь, с, /} и т^ = с. Новыми двойственными переменными будут Z{b,cf} = 1, z{a} = 1, *{d} = z{h} = 3, z{b} = z{c} = z{f} = 4, z{e} = z{g} = 7. Текущие параметры нежесткости показаны на рис. 11.6(a). Следующим шагом увеличить (d, с). Соцветие {Ь, с, /} становится свободным (рис. 11.6(6)). Как и ранее, на шаге (3) получаем е = е3 = 0, поскольку ребро {е, /} жесткое. Следующими шагами будут нарастить(е, /), нарастить(й, а). Приходим к ситуации, изображенной на рис. 11.7(a). Теперь в графе не осталось жестких ребер, инцидентных внешним вершинам. На шаге (3) мы имеем е = ег = 1 и получаем новый набор двойственных переменных 2{ъ,сЛ = 0, z{a} = 0, z{d} = z{h} = z{b} = z{c} = z{f} = 4, z{e} = z{g} = 8. Новые значения нежесткости показаны на рис. 11.7(6). Поскольку двойственная переменная для внутреннего соцветия {Ь, с, /} стала равна нулю, нам понадобится шаг восстановитьЦЬ, с, /}). Возникающий в итоге обобщенный цветущий лес показан на рис. 11.8(a). После очередного изменения двойственных переменных для е = е3 = 1/2 мы получаем z{a} = -0>5> z{c} - z{f} = 3,5, z{b} = z{d} = z{h} = 4,5, z{e} = z{g} = 8,5
§ 11.3. Реализация алгоритма поиска взвешенного паросочетания 321 (а) hQ d Ф б о е g (a) hQ d Ф ьф е 6 о g Рис. 11.7 (б) Рис. 11.8 (значения нежесткости (slacks) приведены на рис. 11.8(6)). Заключительными шагами будут стянуть(с2, е), увеличить^, К), после чего алгоритм завершит работу. В итоге получится паросочетание М = = {{^,/}, {Ь,с}, {a,d}, {g,h}}. Можно проверить, что вес паросочетания М равен 37 и совпадает с суммой значений двойственных переменных.
322 Глава 11. Взвешенные паросочетания Докажем теперь, что алгоритм работает корректно. Утверждение 11.8. В процессе работы алгоритма Weighted Matching поддерживаются следующие свойства, 1. Для всех j е {1,..., К] положим X(j) := {v е V(G): j е {b\v),...,bk»(v)}}. Тогда семейство a = {X(j):j = l,...,K}\J{{v}:veV(G)} является ламинарным. Множества Vr := {и: pkv(y) = г] при г е V{G), для которых pkr(r) = г, являются в точности максимальными элементами семейства 3. Внутри каждого Vr все вершины помечены либо как внешние, либо как внутренние, либо как свободные. Каждый из подграфов (Vr, {{v,^(.v)}:v^Vr\{r}} U {{!/,/*(!/)}: i/eVr\{r}}) является соцветием с базой г. 2. Ребра {х, [л(х)} образуют множество М, которое является паросочетанием, а также задает почти совершенное паросочетание внутри каждого соцветия из SB. 3. При b = 1,...,К переменные (л(и) и yl(v), рассматриваемые для таких и и i, что bl(v) = Ь, ассоциированы с М-чередующейся ушной декомпозицией G[XQ>)]. 4. Ребра {х, jii(x)} и {х, ipl(x)} для всех xui,a также ребра {сг{х), #(сг(х))} для всех баз х максимальных внутренних соцветий являются жесткими. 5. Ребра {х9 /i(x)}, {х, ц>кх(х)} для всех внутренних или внешних вершин х, а также ребра {сг(х), х(^М)} ^^л всех баз х максимальных внутренних соцветий образуют обобщенный цветущий лес F относительно М. Пометки вершин («внутренняя», «внешняя», «свободная») согласованы с лесом F. 6. При стягивании максимальных вложенных соцветий в любом таком соцветии Be SB, что \В\ > 1, образуется цикл (с возможными дополнительными ребрами). 7. Для любой внешней вершины и процедура TreePath строит М-чередующий- ся v-г-путь, где г — корень дерева в F, содержащего v. Доказательство. Данные свойства, очевидно, верны изначально (после того как шаг (2) был выполнен впервые). Покажем, что их истинность сохраняется на протяжении работы алгоритма. Это легко видеть для свойства 1 (с учетом шагов (7) и (§)). Для свойства 2 это следует из утверждения 11.6 и предположения, что свойства 6 и 7 выполнены к моменту увеличения. Тот факт, что свойство 3 продолжает выполняться после стягивания, доказывается так же, как в невзвешенном случае (см. лемму 10.30(b)). Значения у пересчитываются после увеличения паросочетания и более не изменяются. Истинность свойства 4 поддерживается за счет шага (3). Легко видеть, что благодаря шагу (5) свойство 5 сохраняется. Действительно, соцветие, содержащее у, было свободным. Поэтому, полагая х (у) :=хи <j{v) :=у,
§ 11.3. Реализация алгоритма поиска взвешенного паросочетания 323 где и — база соцветия, мы делаем это соцветие внутренним. Кроме того, соцветие, содержащее /i(pfcy(y)), было внешним, а становится внутренним. На шаге (6) две связные компоненты обобщенного цветущего леса становятся свободными, так что свойство 5 сохраняется. На шаге (7) вершины в новом соцветии становятся внешними, поскольку вершина г ранее была внешней. На шаге (8) для таких вершин v е А, что рки~г(и) ф V(Q(y)), также имеем ju(pfcy(iO) Ф V(Q(y)), так что они становятся свободными. Для всех остальных вершин v е А имеем рки~г{и) = гк для некоторого к. Поскольку {ru ri+1}eM, если и только если индекс i четен, вершина v становится внутренней, если и только если к нечетно. Свойство 6 справедливо, так как любое новое соцветие возникает из нечетного цикла на шаге ©. Рассмотрим свойство 7. Достаточно показать, что значения сг(х) и #(сг(х)) выбираются правильно для всех баз х максимальных внутренних соцветий. Это легко проверить как для шага (5), так и для шага (§). ? Утверждение 11.8(1) показывает, почему на шагах (3) и (8) алгоритма максимальные элементы семейства 99 оказываются внутренними, внешними или свободными соцветиями. Покажем теперь, что алгоритм поддерживает допустимость двойственного решения. Лемма 11.9. В любой момент работы алгоритма вектор z образует допустимое двойственное решение. Если е = оо, то в G не существует совершенного паросочетания. Доказательство. Для всех А е jtf \ 9& всегда справедливо равенство zA = 0. Значение zA может уменьшиться лишь для тех соцветий А е. 99, которые являются максимальными (в 9&) и внутренними. Таким образом, выбор ег гарантирует, что значение zA остается неотрицательным для всех таких А, что \А\ > 1. Выясним, могут ли нарушаться ограничения 2ле.^:ее5(А) za ^с(е). Если значение ^Ае^:е(=5(А) za увеличивается на шаге (3), то ребро е должно соединять либо внешние и свободные вершины, либо два различных внешних соцветия. Таким образом, максимальное значение е, для которого z все еще удовлетворяет неравенству ?AG^. eG5(A) zA < с(е), равно в точности slack(e) в первом случае и -z slack(e) во втором. Итак, требуется доказать, что е2 и е3 вычисляются правильно: е2 = min{slack(i>, w): вершина и внешняя, вершина w свободная} и е3 = 7г min{slack(i;, w): вершины v, w внешние, pkv(v) ф pkw(w)}. Утверждается, что в любой момент работы алгоритма для любой внешней вершины и и любого А е 99, для которых не существует такого А е 99, что Аи{у}с А, выполняются следующие условия: (а) <еА; (б) slack(i>,т^) = min{slack(i;,и):иеА};
324 Глава 11. Взвешенные паросочетания (в) %А = ^1вея:Асв2;в>и ПРИ этом А равно сумме значений е на всех предыдущих двойственных шагах; (г) dack(i/,T*) = tf-A-CA; (д) tА=min{ t^: вершина и внешняя и не существует такого множества А € №, что A U {и} с А]. Свойства (а), (в) и (д) очевидны. Свойства (б) и (г) выполняются в момент вычисления т^ (на шаге (7) или в процессе работы Update(iO), а затем slack(i;, и) уменьшается в точности на ту же величину, на которую увеличивается значение А + Сл (с учетом свойства (в)). Из свойств (а), (б), (г) и (д) следует, что значение е3 вычисляется правильно. Предположим, что е = оо, т. е. е может быть выбрано произвольно большим без нарушения двойственной допустимости. Поскольку двойственный целевой функционал tz на шаге (3) увеличивается хотя бы на е, двойственная линейная программа (11.2) является неограниченной. Тогда по теореме 3.27 прямая линейная программа (11.1) несовместна. ? Отсюда уже легко вытекает корректность алгоритма. Теорема 11.10. Если представленный алгоритм завершает работу на шаге (6), то ребра {х, /i(x)} образуют совершенное паросочетание минимального веса в G. Доказательство. Обозначим через х характеристический вектор паросочетания М, состоящего из ребер {х, /x(jc)}. Условия дополняющей нежесткости *е>0=> J] zA = c{e), *А>0=>5]*е = 1 А€^:ее5(Л) е€5(Л) выполнены. Первое из них следует из того, что все ребра паросочетания являются жесткими (утверждение 11.8(4)), а второе следует из утверждения 11.8(2). Поскольку построенные прямое и двойственное решения являются допустимыми (лемма 11.9), оба они должны быть оптимальными (следствие 3.23). Таким образом, я: является оптимальным решением линейной программы (11.1), причем целочисленным. Значит, совершенное паросочетание М действительно имеет минимальный вес. ? Мы пока не доказали, что предложенный алгоритм всегда завершает работу. Исправим этот недочет. Теорема 11.11. Время работы алгоритма Weighted Matching между любыми двумя последовательными увеличениями текущего паросочетания составляет 0(п2). Общее время его работы равно 0(п3). Доказательство. По лемме 11.7 и утверждению 11.8(1) время работы процедуры Update линейно. Шаги (2) и (6) требуют времени 0(п2) на каждое увеличение, а шаги (3) и 0 требуют времени 0(h). Более того, каждый из шагов (5), (7) и (8) может быть выполнен за время 0(nk), где к — число новых внешних вершин. (На шаге (7) число максимальных собственных подмножеств А' множества А, которые приходится рассматривать алгоритму, не превышает 2fc + 1, поскольку
§ 11.4. Перестройка оптимальных решений 325 каждое второе вложенное соцветие внутри создаваемого нового соцветия должно быть внутренним.) Поскольку внешние вершины продолжают оставаться внешними до следующего увеличения, общее время, затрачиваемое на шагах (5), (7) и (8) между последовательными увеличениями, составляет 0{п2). Более того, каждое срабатывание шагов (5), (7) и (8) приводит к созданию хотя бы одной новой внешней вершины. Поскольку хотя бы один из шагов ®, (6), (7), (8) выполняется на каждой итерации, число итераций между двумя последовательными увеличениями составляет 0(п). Отсюда следует оценка 0(п2) на время работы алгоритма между последовательными увеличениями. Поскольку увеличений всего возможно не более п/2, общее время работы равно 0(п3). ? Следствие 11.12. Задача о совершенном паросочетании минимального веса может быть решена за время 0(п3). Доказательство. Утверждение следует из теорем 11.10 и 11.11. ? Впервые реализацию алгоритма Эдмондса для задачи о совершенном паросочетании минимального веса, имеющую сложность 0(п3), предложил Габоу [13] (см. также работы Габоу [14] и Лол ера [2]). Теоретически наилучшее время работы, а именно 0(тп + п2 logn), было также получено Габоу [15]. Совершенное паросочетание минимального веса в планарных графах может быть найдено за время 0{п3^2logn) с помощью метода «разделяй и властвуй», как показали Липтон и Тарджан [19, 20]. В своей работе они опирались на тот факт, что планарные графы имеют «сепараторы» небольшого размера. Для евклидовых экземпляров задачи (в которых граф является полным, его вершинами служат точки на плоскости, а веса отвечают расстояниям) Варадараджан [29] предложил алгоритм со сложностью 0(п3^2 log5 п). Практически эффективные реализации алгоритма описываются в работах Мельхорна и Шефера [22], Кука и Роэ [9], а также Колмогорова [17]. С их помощью становится возможным находить оптимальные решения для экземпляров задачи, содержащих миллионы вершин. Каннингем и Марш [10] описали «прямой» алгоритм поиска взвешенных паросочетании, постоянно поддерживающий совершенное паросочетание и получающий допустимое двойственное решение лишь в самом конце работы. § 11.4. Перестройка оптимальных решений В данном параграфе мы докажем несколько полезных результатов, касающихся алгоритма Weighted Matching. Эти утверждения позволяют быстро находить оптимальные решения при «небольшом» изменении экземпляра задачи и потребуются нам в § 12.2. Фиксируем экземпляр (уже решенной) задачи и добавим к нему две новые вершины. Лемма 11.13. Пусть [G,c]—экземпляр задачи о совершенном паросочетании минимального веса. Выберем пару вершин s,t ? V(G). Предположим, что мы
326 Глава 11. Взвешенные паросочетания запустили алгоритм Weighted Matching для экземпляра (G — {5, t}, с). Тогда совершенное паросочетание минимального веса относительно (G, с) может быть найдено за время 0(п2). Доказательство. Добавление двух новых вершин требует дополнительной инициализации используемых структур данных. В частности, при v е {s, t} мы пометим вершину и как внешнюю, положим fi(u) := и, добавим {и} к 38 и положим k„ :=0, p°(v) :=v, <p°(v) :=v и См := zv := min{ic({s, t}), min{c({v, w}) - ?{ш}: w e V(G)\{s, t}} }, где предполагается, что c(e) := oo при e^E(G). Затем запустим алгоритм Weighted Matching, начиная с шага (2). По теореме 11.11 после 0(п2) шагов алгоритм произведет увеличение текущего паросочетания и завершит работу. При этом будет получено совершенное паросочетание минимального веса в (G, с). ? Докажем еще один результат. Лемма 11.14 (Вебер [30], Болл и Деригс [6]). Предположим, что мы запустили алгоритм Weighted Matching для экземпляра (G,c). Рассмотрим вершину s е V(G). Пусть задана такая функция с': E{G) —> R, что с'{е) = с(е) для всех е ^ 5(5). Тогда совершенное паросочетание минимального веса относительно (G, с') может быть найдено за время 0(п2). Доказательство. Построим граф G' из G, для чего добавим новые вершины х, у, ребро {s, х), а также ребра вида {и, у} для всех {v, s] е Е(G). Для этих ребер положим с({и, у}) := c'{{v, s}). Вес ребра {5, х} может быть выбран произвольным образом. Затем найдем с помощью леммы 11.13 совершенное паросочетание минимального веса в (G' с). Удаляя ребро {s, х} и заменяя ребро паросочетания {v,y} на {v,s}, мы получим совершенное паросочетание минимального веса для^с'). ? Аналогичный результат для «прямого» (в смысле линейной программы) алгоритма поиска взвешенного паросочетания был установлен Каннингемом и Маршем [10]. § 11.5. Политоп паросочетании Из корректности алгоритма поиска взвешенного паросочетания следует полученное Эдмондсом описание политопа совершенных паросочетании. Как и ранее, мы будем использовать обозначение j# := {AC V(G): \А\ нечетно}. Теорема 11.15 (Эдмондс [11]). Пусть G — неориентированный граф. Политоп совершенных паросочетании в G, т. е. выпуклая оболочка характеристических векторов всех совершенных паросочетании в G, представляет собой множество векторов х, удовлетворяющих условиям хе>0 (e€E(G)), 2*е = 1 (veV(G)), e<E5(v)
§ 11.5. Политоп паросочетаний 327 ее5(А) Доказательство. По следствию 3.32 достаточно доказать, что все вершины представленного политопа являются целыми. Согласно теореме 5.13 это будет следовать из того, что задача минимизации имеет оптимальное целое решение для любых весов. Однако представленный ранее алгоритм Weighted Matching как раз и находит подобное решение для любых весов (см. доказательство теоремы 11.10). ? Альтернативное доказательство будет дано в § 12.3 (см. замечание после теоремы 12.18). Можно также описать политоп паросочетаний, т. е. выпуклую оболочку характеристических векторов всех паросочетаний в неориентированном графе G. Теорема 11.16 (Эдмондс [11]). Политоп паросочетаний для графа G представляет собой множество векторов х е R+ , удовлетворяющих условиям \] хе < 1 для всех v е V(G) и \] хе ^ ~\— ^ля всех А е d. ее5(и) eeE(G[A]) Доказательство. Поскольку характеристический вектор любого паросочетания, очевидно, удовлетворяет данным неравенствам, осталось лишь доказать обратное включение. Рассмотрим такой вектор х е R+ , что ^ее5(и) хе ^ 1 ПРИ и е V(G) и ?e€?(G[A]) хе ^ (1^1 ~~ 1)/2 при Ле^. Докажем, что х выражается в виде выпуклой комбинации характеристических векторов некоторых паросочетаний. Воспользуемся тем же приемом, что и в доказательстве утверждения 11.1: пусть Я — граф с множеством вершин V(H):={(v,i):veV(G),ie{l,2}} и множеством ребер Е(Н) := {{(у, 0, (ш, i)}: {v, w} е E(G), i € {1,2}} U {{(у, 1), (i/, 2)}: и € V(G)}. Иными словами, граф Я состоит из двух копий графа G, причем в нем есть ребра, соединяющие копии каждой вершины. Положим y{(v,i)Aw,i)}:= хе №* всех е = {и, ш} g?(G) и i € {1,2}, и пусть y{{VflUv,2)} := г-Ee€5G(i/) *е Для всех i; € V(G). Мы докажем, что вектор у принадлежит политопу совершенных паросочетаний графа Я. Тогда мы можем рассмотреть подграф, индуцированный множеством {(v, 1): и е V(G)}. Данный подграф изоморфен G, и, значит, х выражается в виде выпуклой комбинации характеристических векторов некоторых паросочетаний в G, что и требовалось доказать. Очевидно, у е R+(H) и Jee5 (и) уе = 1 для всех и € У(Я). Для того чтобы доказать, что у принадлежит политопу совершенных паросочетаний графа Я, воспользуемся теоремой 11.15. Итак, пусть X с У (Я), причем \Х\ нечетно. Дока-
328 Глава 11. Взвешенные паросочетания V(G) {(v,l):veV(G)} {(v,2):veV(G)} Рис. 11.9 ЖеМ, ЧТО Ее€5н(Х) Уе > 1- ПУСТЬ А в с = {veV(G):(v,l)eX,(v,2)tX}, = {veV(G):(v,l)<=X,(v,2)eX}, = {veV(G):(v,l)tX,(v,2)eX}. Поскольку |Х| нечетно, либо А, либо С должно иметь нечетный размер. Без ограничения общности будем считать, что \А\ нечетно. Положим At := {(a,i):as А} и В; := {(Ь, 0: Ь е В} для i = 1,2 (см. рис. 11.9). Тогда ee5H(X) ueAj e€5H(u) eeECHtAj) ееЕдСА^В!) ееЕн(В2,А2) = S S^"2 Е *е>ИХ|-(|Л|-1) = 1. П yeAj еебн(у) e<=E(G[A]) В действительности можно доказать более сильный результат. Теорема 11.17 (Каннигхэм и Марш [10]). Для всякого неориентированного графа G система линейных неравенств хе>0 (eeE(G)), ?*е<1 {veV(G))3 es5(u) обладает свойством TDL \A\-l (А€Д |А|>1) Доказательство. Для произвольного вектора с: ?(G) —> Z рассмотрим задачу оптимизации max^]ee?(G) с(е)хе при вышеуказанных условиях. Двойственная линейная программа такова:
§ 11.5. Политоп паросочетаний 329 yv+ > —-г—zA v<=V{G) Аел/,[А|>1 при условиях 5]уу+ X] *А>с(е) (eeE(G)), y„>0 (i/€V(G)), zA>0 (Aerf, |A|>1). Пусть (G, с) — минимальный контрпример, т. е. такой экземпляр, для которого не существует целочисленного оптимального двойственного решения, причем сумма |V(G)| + |E(G)| + 2>(e)| eeE(G) минимальна. Тогда с(е)>\ для всех ребер е (любое ребро с неположительным весом можно удалить) и G не содержит изолированных вершин (иначе их также можно удалить). Более того, докажем, что для любого оптимального решения (у, z) справедливо равенство у=0. Действительно, пусть yv>0 для некоторого veV(G). Тогда из условий дополняющей нежесткости (следствие 3.23) вытекает, что Хее5(и) хе= 1 для любого прямого оптимального решения х. Тогда, уменьшая значение с(е) на единицу для всех е G 5(у), мы получаем экземпляр (G, с') меньшего размера, для которого оптимум задачи ЛП меньше на единицу (здесь мы опираемся на целочисленность прямой задачи, т. е. на теорему 11.16). Поскольку (G,c) образует наименьший контрпример, существует целое оптимальное двойственное решение (y'z') для (G,c'). Увеличивая y'v на единицу, мы получаем целое оптимальное двойственное решение для (G, с) — противоречие. Пусть теперь у = 0, и пусть z — оптимальное двойственное решение, для которого сумма 2 И12*а (11-4) Ае^,|А|>1 принимает максимально возможное значение. Докажем, что семейство & := := {A: zA > 0} ламинарно. Действительно, предположим, что найдутся множества X,Y е &, для которых X\Y ф 0, Y \Х ф <Z> ъ X C\Y ф 0. Положим е := := min{zx, zY} > 0. Если \Х П Y\ нечетно, то \Х U Y\ также нечетно. Положим zx := zx — е, z'Y := := zY — е, zxnY := zxnY + в (если только не окажется, что \Х П У| = 1), zXuY := :=zxuY + е и z'A :=zA для всех остальных множеств А. Пара (у, z') также является допустимым двойственным решением. Более того, данное решение также является оптимальным. Это противоречит максимальности выражения (11.4). Если \Х П Y\ четно, то |Х\7| и \Y\X\ нечетны. Положим z'x := zx — е, zY := := zY — в, zL Y := zx\Y + e (кроме случая |Х\У| = 1), z'y,x := zY\x + e (кроме случая \Y\X\ = 1) и z'A := zA для всех остальных множеств А. Положим y'v := е для v еХ C\Y и у^:=0 для и ?Х П У. Тогда пара (у', z') является допустимым
330 Глава 11. Взвешенные паросочетания двойственным решением, причем ueV(G) A€j*,|A|>1 А€^,|А|>1 , ^|Х\У|-1 , |У\Х|-1 |Х|-1 |Г|-1^_ v ]*Ы* + Ч 2 + 2 2 2~~)~ Zj ""2~**' А€^,|А|>1 а значит, данное решение также оптимально. Это противоречит тому факту, что для любого оптимального двойственного решения (у' z') выполняется равенство у' = 0. Пусть теперь А е J*i причем za^Zh множество Л максимально по включению. Положим в := zA — [zA J > 0. Пусть Аъ ..., Ак — максимальные собственные подмножества множества А, принадлежащие &. Эти подмножества не могут пересекаться, поскольку & ламинарно. Полагая z'A := zA — е и z'A := zA. + е для i = 1,..., к (и z'D := zD для всех остальных D € ^), мы получаем другое допустимое двойственное решение (у = 0, z') (поскольку вектор с целый). Тогда имеем -2-гв< Zj -2-*в, BGj^,|B|>1 B(=j*,\B\>1 что противоречит оптимальности исходного двойственного решения (у = 0, z). ? Данное рассуждение принадлежит Скрейверу [27]. Другие доказательства представлены в работах Ловаса [21] и Скрейвера [28]. Последнее из них не опирается на теорему 11.16. Более того, заменяя $]e€5(i/) хе < 1 на Хееб(и) хе =: 1 при i> е V(G) в теореме 11.17, мы получаем альтернативное описание политопа совершенных паросочетаний, которое также обладает свойством TDI (по теореме 5.18). Теорема 11.15 может быть легко выведена из этого факта; однако система неравенств из теоремы 11.15 в общем случае не обладает свойством TDI (в качестве контрпримера можно рассмотреть граф Кл). Из теоремы 11.17 также следует формула Бержа — Татта (теорема 10.14; см. упражнение 15). Обобщения доказанных результатов будут обсуждаться в § 12.1. Упражнения 1 (Эгервари [12]). Докажите, используя теорему 11.4, взвешенную версию теоремы Кёнига 10.2. 2. Опишите для заданного двудольного графа G выпуклую оболочку характеристических векторов всех (а) вершинных покрытий, (б) независимых подмножеств, (в) реберных покрытий. Покажите, что отсюда следуют теорема 10.2 и утверждения из упражнения 2(в) гл. 10. Указание. Воспользуйтесь теоремой 5.25 и следствием 5.21.
Упражнения 331 3. Предложите прямое доказательство теоремы Биркгоффа—фон Неймана 11.5. 4 (Балински [5]; см. также работу Ловаса [21]). Пусть G— граф, а Р — политоп дробных совершенных паросочетаний в G. Докажите, что вершинами политопа Р являются в точности те векторы х, для которых {|, если е е Е(Сг) и... и Е(Ск), 1, если е е М, О иначе, где Съ ..., Ск — вершинно непересекающиеся нечетные циклы, аМ — совершенное паросочетание в G — №(&) U... U V(Ck)). 5. Пусть G—двудольный граф с разбиением на доли V = A U В, где А = = {аъ...,ар}, В = {Ъъ..., bq}. Пусть также заданы веса ребер с: E(G) —> R. Требуется найти сохраняющее порядок паросочетание максимального веса М (т. е. такое, что для любых двух ребер {аь b;}, {at>, by }gM, для которых i < if, справедливо неравенство ; < ;')• Предложите решение данной задачи со сложностью 0(п3). Указание. Используйте динамическое программирование. 6. Докажите, что в любой момент времени работы алгоритма Weighted Matching справедлива оценка \&8\ < Зп/2. 7 (Болл и Деригс [6]). Пусть G — граф с неотрицательными весами с: Е (G) —> —> R+. Пусть М — паросочетание, возникшее в некоторый промежуточный момент работы алгоритма поиска взвешенного паросочетания, и пусть X — множество вершин, покрытых паросочетанием М. Докажите, что вес любого паросочетания, покрывающего X, не меньше веса паросочетания М. 8. Говорят, что граф с целыми весами на ребрах является циклически четным, если суммарный вес любого цикла в нем четен. Покажите, что алгоритм Weighted Matching, будучи примененным к циклически четному графу, в процессе работы сохраняет данное свойство (относительно переменных нежесткости на ребрах), а также поддерживает целое двойственное решение. Выведите отсюда существование полуцелого оптимального двойственного решения z (т. е. такого, что вектор 2z целый). 9. Для частного случая двудольных графов алгоритм Weighted Matching сильно упрощается. Укажите, какие части этого алгоритма потребуется оставить, а какие являются лишними. Замечание. После удаления лишних частей мы получим так называемый венгерский алгоритм для задачи о назначениях (Кун [18]). Данный алгоритм может также рассматриваться как эквивалентный процедуре, описанной в доказательстве теоремы 11.2. 10. Пусть G — полный граф, а веса с: E(G) -> R+ удовлетворяют неравенству треугольника, т. е. с({х, z}) <с({х, у})+с{[у, z}) для всех х, у, zs V(G). Покажите, что существует такое оптимальное решение z для программы (11.2), что z > 0. 11. Предложите решение за время 0(п3) для задачи о критическом ребре паросочетания (bottleneck matching problem), состоящей в нахождении совершенного паросочетания М, для которого значение max{c(e): е еМ} минимально.
332 Глава 11. Взвешенные паросочетания 12. Покажите, что следующая задача о реберном покрытии минимального веса разрешима за полиномиальное время: задан неориентированный граф G с весами с: E(G) -> R, требуется найти в нем реберное покрытие наименьшего веса. 13 (Грётшель и Пуллибланк [16]). Пусть заданы неориентированный граф G с весами с: E(G) —> R+ и парой вершин s и ?. Требуется найти кратчайший s-t-путь, состоящий из четного (либо нечетного) числа ребер. Сведите данную задачу к задаче о совершенном паросочетаний минимального веса. Указание. Возьмите две копии графа G, для каждой вершины соедините ее копии ребром нулевого веса, затем удалите s и г (или — в случае путей нечетной длины — 5 и копию t). 14 (Наддеф и Пуллибланк [16]). Пусть G — fc-регулярный и (fc — 1)-реберно связный граф с четным числом вершин и весами ребер с: E(G) -* R+. Докажите, что существует такое совершенное паросочетание М в G, что с(М) > j-c(E(G)). 1 * Указание. Покажите, что вектор т U лежит в политопе совершенных паросочетаний. 15*. Покажите, что из теоремы 11.17 вытекают следующие факты: (а) формула Бержа — Татта (теорема 10.14); (б) теорема 11.15; (в) существование оптимального полуцелого решения для двойственной линейной программы (11.2) (см. упражнение 8). Указание. Воспользуйтесь теоремой 5.18. 16. Известно, что политоп дробных совершенных паросочетаний Q графа G совпадает с политопом совершенных паросочетаний, если граф G двудольный (теорема 11.4). Рассмотрите первое сечение Гомори—Хватала Q' для Q (см. определение 5.29). Докажите, что Q' всегда совпадает с политопом совершенных паросочетаний. Литература Общая литература [1] Gerards А. М. Н. Matching // Handbooks in Operations Research and Management Science; Vol. 7: Network Models (M. O. Ball, T. L. Magnanti, C. L. Monma, G. L. Nemhauser, eds.), Elsevier, Amsterdam, 1995. P. 135-224. [2] Lawler E. L. Combinatorial Optimization; Networks and Matroids. Holt, Rinehart and Winston, New York, 1976, Chapters 5 and 6. [3] Papadimitriou C. H., Steiglitz K. Combinatorial Optimization; Algorithms and Complexity. Prentice-Hall, Englewood Cliffs, 1982, Chapter 11. [4] Pulleyblank W. R. Matchings and extensions // Handbook of Combinatorics; Vol. 1 (R. L. Graham, M. Grotschel, L. Lovasz, eds.), Elsevier, Amsterdam, 1995. Процитированные работы [5] Balinski M. L. Establishing the matching polytope // Journal of Combinatorial Theory. 1972. Vol. 13. P. 1-13.
Литература 333 Ball М. О., Derigs U. An analysis of alternative strategies for implementing matching algorithms // Networks. 1983. Vol. 13. P. 517-549. Birkhoff G. Tres observaciones sobre el algebra lineal // Revista Universidad Nacional de Tucuman. Ser. A. 1946. T. 5. P. 147-151. Burkard R., Dell'Amico M., Martello S. Assignment Problems. SIAM, Philadelphia, 2009. Cook W., Rohe A. Computing minimum-weight perfect matchings // INFORMS Journal of Computing. 1999. Vol. 11. P. 138-148. Cunningham W. H., Marsh A. B. A primal algorithm for optimum matching // Mathematical Programming. Study. 1978. Vol. 8. P. 50-72. Edmonds J. Maximum matching and a polyhedron with (0,1) vertices // Journal of Research of the National Bureau of Standards. Ser. B. 1965. Vol. 69. P. 125-130. Egervdry E. Matrixok kombinatorikus tulajdonsagairol // Matematikai es Fizikai Lapok. 1931. Vol.38. 0.16-28 [in Hungarian]. Gabow H. N. Implementation of algorithms for maximum matching on non-bipartite graphs. Ph. D. Thesis, Stanford University, Dept. of Computer Science, 1973. Gabow H. N. An efficient implementation of Edmonds' algorithm for maximum matching on graphs // Journal of the ACM. 1976. Vol. 23. P. 221-234. Gabow H. N. Data structures for weighted matching and nearest common ancestors with linking // Proceedings of the 1st Annual ACM-SIAM Symposium on Discrete Algorithms. 1990. P. 434-443. Grotschel M., Pulleyblank W. R. Weakly bipartite graphs and the max-cut problem // Operations Research Letters. 1981. Vol. 1. P. 23-27. Kolmogorov V. Blossom V: a new implementation of a minimum cost perfect matching algorithm // Mathematical Programming. Computation. 2009. Vol. 1. P. 43-67. Kuhn H. W. The Hungarian method for the assignment problem // Naval Research Logistics Quarterly. 1955. Vol. 2. P. 83-97. Lipton R. J., Tarjan R. E. A separator theorem for planar graphs // SIAM Journal on Applied Mathematics. 1979. Vol. 36. P. 177-189. Lipton R. J., Tarjan R. E. Applications of a planar separator theorem // SIAM Journal on Computing. 1980. Vol.9. P.615-627. Lovdsz L. Graph theory and integer programming // Discrete Optimization I (P. L. Hammer, E. L. Johnson, В. H. Korte, eds.), North-Holland, Amsterdam, 1979. (Annals of Discrete Mathematics; Vol.4). P. 141-158. Mehlhorn K., Schafer G. Implementation of O(nmlogn) weighted matchings in general graphs: the power of data structures // Algorithm Engineering; WAE-2000 (S. Naher, D.Wagner, eds.). (Lecture Notes in Comput. Sci.; Vol.1982). P.23-38; also electronically in The ACM Journal of Experimental Algorithmics. 2002. Vol. 7. Monge G. Memoire sur la theorie des deblais et des remblais // Histoire de l'Academie Royale des Sciences. 1784. T. 2. P. 666-704. Munkres J. Algorithms for the assignment and transportation problems // Journal of the Society for Industrial and Applied Mathematics. 1957. Vol. 5. P. 32-38. NaddefD., Pulleyblank W.R. Matchings in regular graphs // Discrete Mathematics. 1981. Vol.34. P.283-291.
334 Глава 11. Взвешенные паросочетания [26] von Neumann J. A certain zero-sum two-person game equivalent to the optimal assignment problem // Contributions to the Theory of Games II (H. W. Kuhn, ed.), Princeton University Press, Princeton, 1953. (Ann. of Math. Stud.; Vol. 28). P. 5-12. [27] SchrijverA. Short proofs on the matching polyhedron // Journal of Combinatorial Theory. Ser. B. 1983. Vol. 34. P. 104-108. [28] SchrijverA. Min-max results in combinatorial optimization // Mathematical Programming; The State of the Art —Bonn 1982 (A. Bachem, M. Grotschel, B. Korte, eds.), Springer, Berlin, 1983. P. 439-500. [29] Varadarajan K. R. A divide-and-conquer algorithm for min-cost perfect matching in the plane // Proceedings of the 39th Annual IEEE Symposium on Foundations of Computer Science. 1998. P. 320-329. [30] Weber G. M. Sensitivity analysis of optimal matchings // Networks. 1981. Vol. 11. P. 41-56.
ГЛАВА 12 b-паросочетания и Г-соединения В этой главе мы рассмотрим еще две задачи комбинаторной оптимизации: задачу о b-паросочетании максимального веса (§ 12.1) и задачу о Г-соединении минимального веса (§12.2). Обе задачи могут рассматриваться как обобщения задачи о совершенном паросочетании минимального веса. Некоторые их частные случаи представляют самостоятельный интерес. Одновременно обе эти задачи могут быть сведены обратно к задаче о совершенном паросочетании минимального веса. Для них известны прямые комбинаторные полиномиальные алгоритмы, а также полиэдральные описания. Поскольку в обоих случаях задача отделения оказывается разрешимой за полиномиальное время, обе задачи также можно решить за полиномиальное время с помощью метода эллипсоидов (см. §4.6). Точнее говоря, задача отделения может быть сведена к поиску Г-разреза минимальной пропускной способности; см. § 12.3 и § 12.4. (Для заданного подмножества Г под Г-разрезом понимается разрез вида 5(Х), для которого размер \Х П Г| нечетен.) В свою очередь поиск минимального Г-разреза может быть выполнен с помощью теории потоков. §12.1. Ь-паросочетания Определение 12.1. Пусть G — неориентированный граф с целыми пропускными способностями ребер и: Е (G) —> N и {оо}. Пусть также заданы числа b: V(G) —> N. Тогда b-паросочетанием в (G, и) называется такая функция /: E(G) —> Z+, что /(e) < u(e) для всех е € E(G) и Хееб(и) /(е) ^ ^(у) Я™1 всех v G У(Ф- В случае и = 1 мы говорим о простых b-паросочетаниях в G. Заданное Ь-паросочетание / называется совершенным, если Хее5Ы /(е) = b(v) для всех v е V(G). Если Ъ = 1, то пропускные способности не имеют значения и мы возвращаемся назад к обычным паросочетаниям. Простые b-паросочетания иногда называются Ъ-факторами. С учетом ограничений на значения функции / их также можно рассматривать как подмножества ребер. В гл. 21 нас будут интересовать совершенные простые 2-паросочетания, т. е. такие подмножества ребер, что каждая вершина инцидентна ровно двум из них.
336 Глава 12. Ь-паросочетания и Г-соединения Maximum Weight b-Matching (задача о Ь-паросочетании максимального веса) Дано: граф G, пропускные способности ребер и: E(G) —> N и {<»}, веса с: E(G) -> R и числа b: V(G) -»N. Надо: найти b-паросочетание / в (G, и), вес которого 2е<=Е(о с(е)/(е) максимален. Алгоритм Эдмондса поиска взвешенных паросочетаний может быть обобщен также и на случай b-паросочетаний (Марш [21]). Мы не станем приводить соответствующую модификацию, а вместо этого дадим полиэдральное описание и покажем, что задача отделения может быть решена за полиномиальное время. Отсюда с помощью метода эллипсоидов получается полиномиальный алгоритм (см. следствие 3.33). Политоп b-паросочетаний для (G, и) определяется как выпуклая оболочка семейства всех b-паросочетаний в (G, и). Рассмотрим вначале случай бесконечных пропускных способностей [и = °о). Теорема 12.2 (Эдмондс [11]). Рассмотрим неориентированный граф G и функцию b: V(G) —>N. Политоп b-паросочетаний для (G, <*>) представляет собой множество векторов х G R+ , удовлетворяющих следующим условиям: 2*e<b(i,) (veV(G)); ее5(у) ee?(G[X]) v<=X Доказательство. Поскольку всякое b-паросочетание, очевидно, удовлетворяет данной системе неравенств, достаточно доказать обратное включение. Итак, пусть задан такой вектор х g R+ , что ^ее5^ хе < b(v) для всех и G V(G) и 2eeE(G[x])хе ^ [о Sugx^)! Д-7151 всех X ? V(G). Покажем, что х можно пред- ставить в виде выпуклой комбинации некоторых Ь-паросочетаний. Построим новый граф Я, для чего расщепим каждую вершину v на b(v) копий. Положим Xv := {(v, i): i G {1,..., b(v)}} при и G V(G), V(H) := Uugv(g) xv и Е(Я) := {{v', w'}: {u, w} G E(G), v' g Xv> u/ g Xw}. Пусть ye := ^^у^,ш} для всех ребер е = {i/, и/} G Е(Я), у' G Ху, и/ G Хш. Утверждается, что вектор у разлагается в выпуклую комбинацию характеристических векторов паросочетаний в Я. Тогда, стягивая подмножества Xv {и G V(G)) в Я, мы вернемся к графу G и вектору х, получив при этом искомое разложение х в виде выпуклой комбинации b-паросочетаний в G. Для того чтобы доказать, что у лежит в политопе паросочетаний графа Я, воспользуемся теоремой 11.16. Условие ^es5rv-\ уе ^ 1> очевидно, справедливо для всех и G У(Я). Пусть С с У (Я) — подмножество нечетного размера |С|. Покажем, ЧТО Ее€Е(Н[С]).Уе <|(|С|"1)-
§12.1. b-паросочетания 337 Если Xv с С или XVC\C = 0 для всех и € V(G), то требуемое условие сразу следует из неравенств, справедливых для х. Иначе пусть a,be Xv, aeC,b ?С. Тогда ее?(Н[С]) сеС\{а} ее?({с},С\{с}) ее?({а},С\{а}) сеС\{а} ее5(с)\{{с,Ъ}} ее?({а},С\{а}) с€С\{а} ее5(с) ее?({Ь},С\{а}) ее?({а},С\{а}) = Е Z^<ici-i. ? с<=С\{а} ееб(с) Отметим, что вышеописанная конструкция приводит к алгоритму поиска оптимальных b-паросочетаний. В общем случае время его работы будет экспоненциальным. Однако в частном случае, когда XJyeV(G) b(u) = О(п), задачу о b-паросочетании максимального веса (при бесконечных пропускных способностях) можно решить указанным способом за время 0(п3) (воспользовавшись алгоритмом поиска взвешенных паросочетаний; см. следствие 11.12). Пулли- бланк [23,24] описал фасеты данного политопа и показал, что система линейных неравенств из теоремы 12.2 является тотально двойственнно целочисленной. Рассмотрим теперь обобщение на случай, в котором разрешены конечные пропускные способности. Теорема 12.3 (Эдмондс и Джонсон [12]). Рассмотрим неориентированный граф G и функции и: E(G) —>Nu{oo}ub: V(G) —> N. Политоп b-паросочетаний для (G, и) представляет собой множество векторов х е R+ , удовлетворяющих следующим условиям: хе<и(е) (eeE(G)); 2*e<b(i/) (veV{G)); ee5(v) eeE(G[X]) eeF L ^ veX eeF J* Доказательство. Докажем вначале, что всякое b-паросочетание х удовлетворяет указанным условиям. Это очевидно для всех из них, кроме условий третьего вида. Для доказательства заметим, что для любого такого вектора х е. R+ , что хе < и{е) (е € E(G)) и ?e65(u) хе < b(y) (ye V(G)), справедливо соотношение eeE(G[X]) eeF КиеХ ee5(v) eeF ee5(X)\F J KveX eeF J Если вектор x целый, то левая часть также целая, а значит, правую часть можно округлить вниз до ближайшего целого.
338 Глава 12. b-паросочетания и Г-соединения Рассмотрим теперь такой вектор х € R+ , что хе < и(е) для всех е е E(G), Иеб5(У) *е < Ь(У) ДЛЯ ВСеХ У ? V(G) И ee?(G[X]) eeF L VueX eeF У J для всех X с V(G) и F с 5(X). Покажем, что вектор х представим в виде выпуклой комбинации b-паросочетаний в (G, и). Обозначим через Я граф, получающийся из G разбиением каждого ребра е = {v, w}, для которого и{е) ф оо, двумя новыми вершинами, обозначаемыми (е, и) и (е, ш). (Вместо е в графе Я будут присутствовать ребра {и, (е, v)}, {(е, у), (е, ш)} и {(е, ш), ш}.) Для новых вершин положим Ь((е, у)) := Ь((е, ш)) := и(е). Для каждого подразбитого ребра е = {и, w} положим y{vxe,v)} :=У{(е,ш),ш} :=хе и У{(е,и),(е,и>)} := ц(е) "~ хе- Для каждого исходного ребра е, удовлетворяющего условию и(е) = оо, положим уе :=xe. Утверждается, что у принадлежит политопу b-паросочетаний Р для (Я, оо). Воспользуемся теоремой 12.2. Очевидно, у € R+ ^ и Х]ееб(и) Уе ^ Ь(у) для всех v € У(Я). Предположим, что найдется такое подмножество А с V{H), что ееЕ(Н[А]) L аеА Положим В := А П V(G). Для каждого ребра е = {и, w] € E(G[B]) можно считать, что (е, v), (е, ш) е Л, поскольку в противном случае добавление (е, и) и (е, ш) не нарушает свойства (12.1). С другой стороны, можно предполагать, что из того, что (е, и) е А, следует, что и € А. Действительно, если (е, v), (е, w) € А, но при этом и ф А, то ребра (е, i>) и (е, ш) можно удалить из А без нарушения свойства (12.1). Если (е, v) € А, но у, (е, ш) ^ А, то мы можем удалить (е, у) из А. Оставшиеся возможные типы ребер изображены на рис. 12.1. Пусть F:={e = {v,w}eE(G):\An{(e,v),(e,w)}\ = l}. Имеем (12.1) 2 *е+2*е= J] Уе" ? "(в) > :Е(НШ) e6E(G[B]), u(e)<°° eGE(G[B]) e€F ee?(H[A]) eeE(G[B]) u(e)< a€A J eeE(G[B]), ^ueB eeF u(e)<oo что противоречит сделанному предположению. Итак, у е Р, и, более того, вектор у принадлежит грани LeP: ^ze = b(v) fljm всех v GV(H)\V(G)\ ^ e(=5(v) ' политопа Р. Поскольку вершины данной грани служат также вершинами политопа Р, вектор у представим в виде выпуклой комбинации Ь-паросочетаний
§12.2. Г-соединения минимального веса 339 Рис. 12.1 fl9..., fm в (Я, оо), каждое из которых удовлетворяет равенству ^ее5^ fi(e)=b(v) для всех и е У(Я) \ V(G). Отсюда следует, что условие fttlv, (е, v)}) = /,({(е, ш), ш}) < и(е) справедливо для каждого подразбитого ребра е = {и, w] е E(G). Возвращаясь обратно от Я к G, заключаем, что вектор х представим в виде выпуклой комбинации b-паросочетаний в (G, и), ? Обе конструкции, использованные в доказательствах теорем 12.2 и 12.3, были предложены Таттом [29]. С их помощью можно также доказать следующее обобщение теоремы Татта 10.13 (см. упражнение 4). Теорема 12.4 (Татт [28]). Рассмотрим граф G с функциями и: E(G) —> N U {оо} и Ь: V(G) -* N. Тогда (G, и) содержит совершенное Ъ-паросочетание, если и только если для любых двух непересекающихся подмножеств X, Y с V(G) число связных компонент С в графе G — X — Y, для которых сумма J]b(c)-h ? ii(e) CGV(C) e<=EGmC),Y) нечетна, не превышает vex yeY^ee5(y) ' eeEG(X,Y) § 12.2. ^соединения минимального веса Рассмотрим следующую задачу: почтальону нужно доставить почту на своем участке. Для этого он должен начать от почтового отделения, пройти по каждой улице хотя бы один раз и в конце вернуться назад в почтовое отделение. Требуется найти для него минимальный по длине маршрут. Эта проблема известна как задача китайского почтальона (Гуань [16]). Карту улиц мы, конечно же, будем моделировать с помощью графа, который можно дополнительно предполагать связным. (В противном случае почтальону
340 Глава 12. b-паросочетания и Г-соединения придется использовать улицы, отсутствующие на карте. При подходящем уточнении эта задача оказывается А/Р-трудной; см. упражнение 17(г) из гл. 15.) Из теоремы Эйлера 2.24 следует, что маршрут почтальона, проходящий по каждому ребру ровно один раз (т. е. эйлеров обход), существует, если и только если степень каждой вершины четна. Если граф не является эйлеровым, то некоторые ребра придется использовать более одного раза. С учетом теоремы Эйлера можем сформулировать задачу китайского почтальона в следующем виде: для заданного графа G с весами с: E(G) —> R+ требуется найти такую функцию п: E(G) —> N, что граф G', получающийся из G заменой каждого ребра eeE(G) на п(е) параллельных копий, будет эйлеровым, а сумма ?e€?(G) п(еМе) минимальной. Данные наблюдения верны как в ориентированном, так и в неориентированном случае. В ориентированном случае задача может быть решена с помощью методов теории потоков (упражнение 9 из гл. 9). Далее мы будем рассматривать исключительно случай неориентированных графов. При решении нам понадобится алгоритм поиска взвешенного паросочетания. Очевидно, не имеет смысла проходить по ребру е более двух раз, поскольку тогда мы могли бы вычесть 2 из п(е) и получить решение, которое будет заведомо не хуже исходного. Итак, задача состоит в нахождении подмножества J с E(G), имеющего минимальный вес и такого, что граф (V(G),?(G) U J) (получающийся из J удвоением ребер) эйлеров. В этом параграфе мы изучим обобщение данной задачи. Определение 12.5. Пусть заданы неориентированный граф G и подмножество Г с V(G). Т-соединением (Г-join) называется такое подмножество J с E(G), что размер пересечения \J П 5(х)\ нечетен, если и только если х е Г. Minimum Weight Г-Join (задача о Г-соединении минимального веса) Дано: неориентированный граф G, веса с: E(G)—>Rи подмножество TQV(G). Надо: найти Г-соединение в G, имеющее минимальный вес, или выяснить, что его не существует. Задача о Г-соединении минимального веса служит одновременным обобщением для нескольких комбинаторных задач. • Если веса с неотрицательны и Г представляет собой множество вершин нечетной степени в G, то мы получаем неориентированную задачу китайского почтальона (при условии что граф G связен). • Если Т = 0, то Г-соединения представляют собой в точности эйлеровы подграфы. Поэтому пустое множество образует 0-соединение минимального веса, если и только если веса с консервативны. • Если |Г| = 2, скажем Г = {s, t}, то всякое Г-соединение представимо в виде объединения s-t-пути и, возможно, некоторых циклов. Поэтому если веса с консервативны, то задача о Г-соединении минимального веса эквивалентна
§ 12.2. Г-соединения минимального веса 341 задаче о кратчайшем пути в неориентированном графе. (Отметим, что ранее (в гл. 7) нам не удалось решить задачу о кратчайшем пути в неориентированном графе за исключением тривиального случая неотрицательных весов.) • Если Г = V(G), то Г-соединения мощности |V(G)|/2 в точности отвечают совершенным паросочетаниям. Следовательно, задача о совершенном паро- сочетании минимального веса может быть сведена к задаче о Г-соединении минимального веса путем добавления достаточно большой константы к весам всех ребер. Начнем изучение задачи со следующего простого факта. Утверждение 12.6. Пусть G — граф, Т, Т' с y(G). Рассмотрим Т-соединение J и Т-соединение J'. Тогда множество J A J' представляет собой (Т АТ')-соединение. Доказательство. Для каждой вершины и е V(G) имеем IS^^MNIS^I + IS^f^NK^nrl + K^nn^K^JnCrArOl (mod 2). ? Основной целью данного параграфа является получение полиномиального алгоритма для задачи о Г-соединении минимального веса. Вопрос о наличии хотя бы одного Г-соединения может быть решен совсем просто. Утверждение 12.7. Пусть G — граф, Г с V(G). Тогда существует Т-соединение в G, если и только если для всякой связной компоненты С графа G размер \V(C) П Т\ оказывается четным. Доказательство. Если J представляет собой Г-соединение, то для каждой связной компоненты С графа G мы имеем J]uev(c) 1^ n ^(y)l = %\J П ?(С)|, так что значение \J П 5(v)\ нечетно для четного числа вершин v € V(C). Поскольку J образует Г-соединение, это означает, что размер |У(С) П Г| четен. Обратно, пусть размер |У(С) П Т\ четен для каждой связной компоненты С графа G. Тогда можно разбить Г на пары {иъ wx), ...,{vk, wk}, где k = |Г|/2, причем вершины vt и wt принадлежат одной и той же связной компоненте для всех i = 1,..., к. Пусть Р{ — произвольный ^-шгпуть (i = 1,..., к). Положим J := Е(Рг) А Е(Р2) А... А Е(Рк). Согласно утверждению 12.6 множество J будет Г-соединением. ? Будем называть Г-соединение оптимальным, если оно имеет минимальный вес. Несложно заметить, что справедлив следующий критерий оптимальности. Утверждение 12.8. Т-соединение J в графе G с весами с: E(G) —> R оптимально, еслии только если для каждого цикла С в G справедливо неравенство c(JflE(C)) < <с(Е(С)\Л Доказательство. Если c{J П Е{С)) > c{E[C)\J), то J А Е{С) является Г-соединением, вес которого меньше веса Г-соединения J. С другой стороны, пусть J' образует Г-соединение, для которого c(Jf) < c(J). Подмножество J' A J эйлерово, а значит, представляется в виде объединения циклов. Хотя бы один из этих циклов С должен удовлетворять условию c(J П Е(С)) > c(Jf П Е(С)) = с{Е(С) \ J). ?
342 Глава 12. b-паросочетания и Г-соединения Данное утверждение можно рассматривать как частный случай теоремы 9.7. Покажем теперь, как решить в случае неотрицательных весов задачу о Г-соединении минимального веса путем сведения ее к задаче о совершенном паросоче- тании минимального веса. Основная идея этого сведения изложена в следующей лемме. Лемма 12.9. Пусть заданы граф G, веса с: E(G) —> R+ и подмножество Г с V(G). Каждое оптимальное Т-соединение в G представимо в виде дизъюнктного объединения множества ребер \Т\/2 путей, концы которых различны и принадлежат Г, и, возможно, некоторого количества циклов нулевого веса. Доказательство. Воспользуемся индукцией по размеру |Г|. Случай Г = 0 тривиален, поскольку минимальный вес 0-соединения равен нулю. Пусть J — произвольное оптимальное Г-соединение в G. Без ограничения общности можно считать, что J не содержит циклов нулевого веса. Согласно утверждению 12.8 множество J не содержит также циклов положительного веса. Поскольку веса с неотрицательны, J образует лес. Рассмотрим пару листьев х, у, лежащих в одной связной компоненте этого леса. Тогда \J П 5{х)\ = \J П 5(у)| = 1. Пусть Р — х-у-путь, проходящий по ребрам из J. Имеем х,у е Г, и J\E(P) образует (Г\{дс,у})-соединение минимального веса (действительно, наличие более легкого (Г\{л:,у})-соединения У означало бы, что Г-соединение J' АЕ(Р) легче, чем J). Утверждение леммы теперь следует из индуктивного предположения. ? Теорема 12.10 (Эдмондс и Джонсон [13]). В случае неотрицательных весов задача о Т-соединении минимального веса может быть решена за время 0(п3). Доказательство. Рассмотрим экземпляр задачи (G, с, Г). Решим вначале задачу о кратчайших путях между всеми парами вершин для (G, с). (Более точно, мы превратим G в орграф, для чего заменим каждое неориентированное ребро на два противоположных ориентированных ребра того же веса.) По теореме 7.8 на это уйдет время 0(тп + n2logn). В частности, мы построим метрическое замыкание (G, с) для (G, с) (см. следствие 7.10). _ Найдем совершенное паросочетание минимального веса М в (G[T],c). По следствию 11.12 на это потребуется время 0(п3). Согласно лемме 12.9 вес с{М) не превышает минимального веса Г-соединения. Для каждой пары {х,у} € М рассмотрим кратчайший х-у-путь в G (он был найден выше). Обозначим через J симметрическую разность множеств ребер всех таких путей. Очевидно, J служит Г-соединением в G. Более того, c{J) < с{М), а значит, множество J оптимально. ? Этот метод не годится в случае отрицательных весов, поскольку в графе могут возникать отрицательные циклы и мы теряем возможность искать кратчайшие пути. Однако, оказывается, задача о Г-соединении минимального веса с произвольными весами может быть сведена к случаю неотрицательных весов. Теорема 12.11. Рассмотрим граф G с весами c:?(G)-»Eu выделенным подмножеством Г с V(G). Пусть Е~—множество ребер отрицательного веса, aV~ —
§ 12.2. Г-соединения минимального веса 343 множество вершин, инцидентных нечетному числу ребер отрицательного веса. Построим функцию d: E(G) —> R+, положив d(e) := |с(е)|. Тогда J А Е~ служит Т-соединением минимального с-веса, если и только если J образует (Т А У~)-соединение минимального d-eeca. Доказательство. Поскольку Е~ представляет собой ^'-соединение, по утверждению 12.6 получаем, что J А Е~ образует Г-соединение, если и только если J является (Г А V~) -соединением. Более того, для любого подмножества J с E(G) мы имеем c(J АЕ~) =c(J\E~) + c(E~\J) = = d(J\E") + c(E-\J) + c(JnE-)+d(JnE-)=d(J)H-c(E-). Поскольку значение с(Е~) постоянно и не зависит от J, теорема доказана. ? Следствие 12.12. Задача о Т-соединении минимального веса может быть решена за время 0(п3). Доказательство. Данный факт непосредственно следует из теорем 12.10 и 12.11. ? Теперь мы можем решить задачу о кратчайшем пути в неориентированном графе. Следствие 12.13. Задача нахождения кратчайшего пути между двумя заданными вершинами неориентированного графа с консервативными весами может быть решена за время 0(п3). Доказательство. Пусть s и t — пара выделенных вершин. Положим Т := {5, t} и применим следствие 12.12. После удаления циклов нулевого веса получившееся Г-соединение представляет собой множество ребер кратчайшего s-t-пути. ? Конечно, отсюда также следует алгоритм со сложностью 0(mn3), находящий цикл минимального веса в неориентированном графе с консервативными весами (его, в частности, можно применять для вычисления обхвата графа). В случае, если мы хотим решить задачу о кратчайших путях между всеми парами вершин в неориентированном графе, не обязательно выполнять ПМ вычислений оптимальных взвешенных паросочетаний отдельно (это привело бы к алгоритму со временем работы 0(п5)). Используя результаты из § 11.4, можно доказать следующую теорему. Теорема 12.14. Задача вычисления кратчайших путей между всеми парами вершин в неориентированном графе G с консервативными весами с: E(G) —> R может быть решена за время 0(п4). Доказательство. С учетом теоремы 12.11 и доказательства следствия 12.13 нам требуется найти для каждой пары s,te V(G) оптимальное ({s, t} A V~)-соединение относительно весов d(e) := |с(е)|, где V~ — множество вершин, инцидентных нечетному числу отрицательных ребер. Положим d({x, у}) := dist(Gd)(x, у) для всех х,у е V(G), и пусть Нх — полный граф на множестве X A V~ (X с V(G)).
344 Глава 12. b-паросочетания и Г-соединения Согласно доказательству теоремы 12.10 достаточно уметь находить совершенное паросочетание минимального веса в (Н{5,ф d) для всех s и t. Предлагаемый О (п4)-алгоритм работает следующим образом. Построим вначале функцию d (см. следствие 7.10) и запустим алгоритм поиска взвешенного паросочетания для экземпляра задачи (Я0, d). Это можно сделать за время 0(п3). Покажем, как найти для каждой пары s и t совершенное паросочетание минимального веса в (H{s,t}> d) за время 0(п2). Возможны четыре случая. Случай 1: s, t ^ V". Тогда добавим данную пару вершин и выполним повторную оптимизацию по лемме 11.13. За время 0(п2) мы получим совершенное паросочетание минимального веса в (H{st},d). Случай 2: s, t е V~. Тогда построим граф Я7, добавив две вспомогательные вершины s', t' и два ребра {s, s'}, {t, t'} с произвольными весами. Выполним повторную оптимизацию по лемме 11.13 и удалим пару вспомогательных ребер из получившегося совершенного паросочетания минимального веса в Я'. Случай 3: s е V~ и t ? V~. Тогда построим граф Я' добавив t, вспомогательную вершину 5х и ребро {s, s'} (произвольного веса) в дополнение к ребрам, инцидентным t. Выполним повторную оптимизацию по лемме 11.13 и удалим ребро {s, s'} из получившегося совершенного паросочетания минимального веса в Я7. Случай 4: s ^ V~ и t € V~. Данный случай симметричен случаю 3. ? Габоу [14] удалось улучшить оценку сложности для данной задачи до 0(min{n3, nm log п}). § 12.3. Г-соединения и Г-разрезы В данном параграфе мы получим полиэдральное описание задачи о Г-соеди- нении минимального веса. Напомним, что при описании политопа совершенных паросочетаний (теорема 11.15) каждый разрез 5{Х) с нечетным |Х| порождал неравенство. Теперь же нам потребуется ввести ограничение для каждого Г-разреза. Под Т-разрезом (T-cut) понимается множество вида 5(Х), где \Х П Т\ нечетно. Полезным окажется следующее несложное наблюдение. Утверждение 12.15. Рассмотрим неориентированный граф G и такое подмножество ГС V(G), что \Т\ четно. Тогда для любого Т-соединения J и любого Т-разреза С справедливо соотношение J П С Ф 0. Доказательство. Пусть С = 5(Х), тогда \Х П Г| нечетно. Следовательно, число ребер в пересечении J ПС должно быть нечетным, в частности ненулевым. ? Усиление данного утверждения приведено в упражнении 12. Из утверждения 12.15 следует, что минимальный размер Г-соединения не меньше максимального числа попарно непересекающихся по ребрам Г-разрезов. В общем случае равенства может и не быть, как показывает пример G = К4 и Г = V(G). Однако для случая двудольных графов равенство достигается. Теорема 12.16 (Сеймур [27]). Рассмотрим двудольный граф G и такое подмножество Г с V{G)9 что в G существует Т-соединение. Тогда минимальный размер
§ 12.3. Г-соединения и Г-разрезы 345 Т-соединения совпадает с максимальным числом попарно непересекающихся по ребрам Т-разрезов. Доказательство (Себе [26]). Достаточно доказать неравенство «<». Воспользуемся индукцией по размеру |V(G)|. Если Г = 0 (в частности, если |V(G)| = 1), то утверждение тривиально. Итак, можно считать, что |V(G)| > |Г| > 2. Обозначим через t(G, Г) минимальный размер Г-соединения в G (t(G, Г) = оо, если Г-соединения не существует). В процессе рассуждения мы несколько раз применим утверждение 12.8 (для единичных весов) и утверждение 12.6. Можно считать, что в G существует Г-соединение, поскольку в противном случае пустое множество образует Г-разрез и мы можем повторить его неограниченное число раз. Выберем такие вершины а,Ъ е V(G), что значение t(G, Г А {а} Л {Ь}) минимально. Обозначим Г' := Г А {а} А {Ь}. В качестве одного из возможных вариантов выбора а и Ъ годятся концы ребра в минимальном Г-соединении (заметим, что Г ф 0), поэтому t(G, Г7) < t(G, Г), а значит, а Ф Ъ и Г' = Г А {а, Ь}. Утверждение. Для любого минимального Т-соединения J в G выполняются равенства \J п б(а)| = \J п 5(Ь)| = 1. Для доказательства обозначим через J минимальное Г-соединение, а через J' — минимальное Г-соединение. Множество J A J' представляет собой объединение непересекающихся по ребрам a-b-пути Р и некоторых циклов Съ ..., Ск. Имеем \E(Ci) П J\ = |?(Q) П J'\ для всех i, поскольку J и J' оба являются минимальными. Тогда \J А Е(Р)\ = |J'|, и, значит, множество J" := J А Е(Р) также образует минимальное Г-соединение. Далее, 3"П5(а) = J"П5(Ь) = 0, поскольку если, скажем, {b, b7} е J" то 7/7\{{Ь, Ь7}} образует (Г А {а} А {Ь^-соединение, для которого t(G, Г А {а} А {Ьх}) < |J"| = |J7| = t(G, ГО, что противоречит выбору а и Ь. Получаем, что |J П 5(а)| = |J П 5(Ь)| = 1, откуда и следует требуемое утверждение. Тогда, в частности, а, Ь е Г. Пусть теперь J — минимальное Г-соединение в G. Стянем подмножество В := {b} и Г(Ь) в новую вершину ив и обозначим получившийся граф через G*. Граф G* также является двудольным. Положим Г* := Г\В, если |Г П В\ четно, и Г* := (Г\В) U {vB} в противном случае. Множество J*, возникающее из J при стягивании подмножества В, очевидно, является ^-соединением в G*. Поскольку подмножество Г(Ь) независимо в G (напомним, что граф G двудольный), из доказанного выше факта следует равенство \J\ = |J*| +1. Осталось показать, что J* образует минимальное Г*-соединение в G*, поскольку тогда t(G, Г) = |J| = |J*| 4-1 = t(G*, Г*) + 1 и утверждение теоремы будет доказано по индукции (заметим, что 5(b) представляет собой Г-разрез в G, не пересекающийся с E(G*)). Предположим, что J* не является минимальным Г*-разрезом в G*. Тогда по утверждению 12.8 найдется такой цикл С* в G*, что |J* П Я(С*)| > |E(C*)\J*|. Поскольку граф G* двудольный, имеем |J* ПЕ(С*)| > \E(C*)\J*\ + 2. Множество Е(С*) в G* соответствует некоторому множеству Q в G. При этом Q не может быть циклом, поскольку \J П Q| > |Q\J| и J представляет собой минимальное Г-соединение. Значит, Q образует х-у-путь в G для некоторых х,у € Г(Ь), хфу.
346 Глава 12. b-паросочетания и Г-соединения Обозначим через С цикл в G, образованный из Q добавлением ребер {х, Ъ) и {Ъ,у}. Поскольку J — минимальное Г-соединение в G, получаем, что |JDE(C)| < \E(C)\J\ < |E(C*)\J*| + 2< |J*flE(C*)| < |JnE(C)|. Следовательно, вышеуказанные неравенства должны обращаться в равенства, в частности {х, Ь}, {Ь, у} ? J и |J П Е(С)| = |Е(С) \7|._Итак, J := J А Е(С) также задает минимальное Г-соединение, для которого | J П 5(Ь)| = 3. Это, однако, противоречит доказанному выше факту. ? Следствие 12.17. Рассмотрим граф G, функцию с: E(G) —> Z+ и подмножество Г с V(G), для которого в G существует Т-соединение. Пусть к—минимальный вес Т-соединения в G. Тогда существуют такие Т-разрезы Съ..., C2fc, что каждое ребро е е Е (G) содержится не более чем в 2с (е) из них. Доказательство. Обозначим через Е0 множество ребер нулевого веса. Построим двудольный граф G', для чего стянем связные компоненты графа (y(G),?0) и заменим каждое ребро е на путь длины 2с(е). Обозначим через Г' множество вершин в G7, отвечающих связным компонентам X графа (V(G), Е0), для которых |ХПГ| нечетно. Утверждение. Минимальный размер Т'-соединения в G' равен 2к. Для доказательства вначале заметим, что указанный минимальный размер не может превосходить 2fc, поскольку каждое Г-соединение J в G соответствует Г-соединению в G' размера не более 2c(J). Обратно, рассмотрим произвольное Г-соединение 3' в G7. Оно соответствует множеству ребер J в G. Положим r:=rA{u€V(G): |5(i/)nJ| нечетно}. Тогда каждая связная компонентах графа (V(G), Е0) содержит четное число вершин из Г (поскольку \5{Х) П J| = \Х П Г| (mod 2)). Согласно утверждению 12.7 граф (V(G),E0) содержит Г-соединение J, a J U J образует Г-соединение в G с весом c{J) = \J'\/2. Утверждение доказано. По теореме 12.16 существует набор из 2к попарно непересекающихся по ребрам Г-разрезов в G'. Переходя назад в граф G, мы получаем набор из 2fc таких Г-соединений в G, что каждое ребро е содержится не более чем в 2с (е) из них. ? Карзанов [19] предложил эффективный алгоритм, находящий подобную оптимальную упаковку Г-разрезов. Понятие Г-разреза также играет ключевую роль в приведенном ниже описании полиэдра Г-соединений. Теорема 12.18 (Эдмондс и Джонсон [13]). Рассмотрим неориентированный граф G, функцию весов с: E(G) —> R+ и такое подмножество Т с V(G), что в G существует Т-разрез. Тогда характеристический вектор всякого Т-соединения минимального веса представляет собой решение следующей задачи ЛП: min \ сх: х > 0, \] хе^^ д-71* всех Т-разрезов С \. ^ ееС ' {Данный полиэдр носит название полиэдра Т-соединений графа G.)
§ 12.3. Г-соединения и Г-разрезы 347 Доказательство. Из утверждения 12.15 следует, что характеристический вектор любого Г-соединения удовлетворяет приведенным условиям. Более того, с учетом утверждения 12.7 каждый 0-1-вектор, удовлетворяющий условиям, является характеристическим для множества ребер, содержащего Г-соединение. Следовательно, согласно импликации (ж) =>(е) из теоремы 5.13 достаточно показать, что значение целевого функционала в точке минимума представленной задачи ЛП является целым для любых целых весов с, для которых задача ограничена, т. е. для всех с: E(G) —> Z+. Итак, пусть с: E(G) —>Z+. Обозначим через к минимальный вес Г-соединения в G (относительно с). По следствию 12.17 найдется такой набор из Г-разрезов С\> • • • у Огк в G, что всякое ребро е содержится не более чем в 2с(е) из них. Итак, для любого допустимого решения х вышеприведенной задачи ЛП имеем 2к 2cx>YiYiX*> 2к> i=l eeCt что доказывает, что значение в точке оптимума задачи ЛП равно fc. ? Из доказанного следует теорема 11.15. Действительно, пусть G — граф, содержащий совершенное паросочетание. Положим Г := V(G). Тогда по теореме 12.18 значение min \ сх: х > 0, V^ хе > 1 для всех Г-разрезов С [ ^ ееС > является целым для всех с е Z?(G), для которых минимум конечен. По теореме 5.13 данный полиэдр целый, а значит, целой является и его грань \ х е R?(G): V^ хе > 1 для всех Г-разрезов С, /^ хе = 1 для всех и € V (G) [. ^ ееС e€5(i;) * Можно также построить описание выпуклой оболочки множества характеристических векторов всех Г-соединений (упражнение 16). Из теорем 12.18 и 4.21 (а также следствия 3.33) следует наличие полиномиального алгоритма для задачи о Г-соединении минимального веса. При этом, однако, необходимо уметь решать за полиномиальное время подзадачу отделения для представленного выше полиэдра. Эта подзадача, очевидно, эквивалентна проверке наличия Г-разреза, пропускная способность которого меньше единицы (если рассматривать х как вектор пропускных способностей). Достаточно научиться решать следующую задачу о минимальном Г-разрезе. Minimum Capacity Г-Cut (задача о минимальном Г-разрезе) Дано: граф G, пропускные способности ребер и: Е(G) —> М+, непустое множество Г с V(G) четного размера. Надо: найти Г-разрез в G, имеющий минимальную пропускную способность.
348 Глава 12. b-паросочетания и Г-соединения Заметим, что, решив задачу о минимальном Г-разрезе, мы также получаем решение задачи отделения для политопа совершенных паросочетаний (см. теорему 11.15; Г := V(G)). В следующей теореме показано, что для решения задачи о минимальном Г-разрезе достаточно рассмотреть фундаментальные разрезы дерева Гомори—Ху. Напомним, что построить дерево Гомори—Ху для неориентированного графа с заданными пропускными способностями можно за время 0(п4) (теорема 8.38). Теорема 12.19 (Падберг и Рао [22]). Рассмотрим неориентированный граф G с пропускными способностями ребер и: E(G) —> R+. Пусть И — дерево Гомори — Ху для (G, и). Пусть также задано непустое подмножество Г с V(G) четного размера. Тогда среди фундаментальных разрезов графа Н найдется Т-разрез минимальной пропускной способности. В частности, Т-разрез минимальной пропускной способности может быть найден за время 0(п4). Доказательство. Пусть 5G(X) — Т-разрез минимальной пропускной способности в (G, и). Пусть J — такое множество ребер е в Я, что |Се П Г| нечетно, где Се — связная компонента графа И —е. Поскольку \5Лх)\ = ^КпТ\ = \{х}пТ\ (mod 2) е<=5н(х) для всех х е V(G), множество J образует Г-соединение в Н. По утверждению 12.15 существует ребро / е 5Н(Х) П J. Имеем u(SG(X)) > min{ii(5G(7)): \Y n/| = 1} = u(5G(Cf))> поэтому 5G(Cf) представляет собой Г-разрез минимальной пропускной способности. ? §12.4. Теорема Падберга — Рао Теорема 12.19 была обобщена в работе Летчфорда, Рейнельта и Тейса [20]. Лемма 12.20. Рассмотрим неориентированный граф G, содержащий хотя бы одно ребро, подмножество Г с V(G) четного размера и функции с, с!: E(G) —> R+ U {оо}. Тогда существует алгоритм с оценкой сложности О (п.4), находящий такие подмножествах сV(G) uFC5(X),4mo |Xnr| + |F| нечетноисумма^Ае&5^С)^?с{е)Л- + SeeF с (е) минимальна. Доказательство. Поскольку добавление ребер е, для которых с(е) = 0 и cf{e) = оо, не изменяет задачи, мы можем считать, что граф G связен. Положим d{e) := := min{c(e), с'(е)} (е е E(G)). Обозначим Е' := {е € E(G): с'(е) < с(е)} и V' := {и е V[G): |5#(i/)| нечетно}. Пусть Т' := Г А V'. Заметим, что для всякого подмножества X с V(G) справедливы соотношения \Х П Г| + \5(Х) п В'1 = \Х П Г| + \Х П У'\ = \Х П Т'\ (mod 2).
§12.4. Теорема Падберга — Рао 349 Алгоритм строит дерево Гомори—Ху Я для задачи (G, d). Для каждого ребра / е Е(Я) пусть Xf — множество вершин связной компоненты Я — /. Пусть gf е е 5G(Xf) — ребро, для которого значение \c'(gf) — c(gf)\ минимально. Обозначим также Ff := 5G{Xf) п ?', если \Xf П Т'\ нечетно, nFf:= (5G(Xf) П Я') Л {gf} в противном случае. Наконец, выберем такое ребро / е Е (Я), что сумма минимальна, и выдадим X:=^HF:=JcyB качестве результата. Общее время работы алгоритма, очевидно, совпадает со временем построения дерева Гомори—Ху. Рассмотрим оптимальные подмножества X* с V(G) и F* с 5(Х*), т. е. такие подмножества, что |Х* П Т\ + |F*| нечетно и сумма ^е€5 (x*)\f* с(е) + 2e€F* с'(е) минимальна. Случай 1: \Х* П Г7! нечетно. Тогда множество ребер / е Е(Я), для которых |Xj П Т'\ нечетно, образует Г-соединение в Я и, значит, имеет непустое пересечение с Г-разрезом 5Н(Х*). Пусть /€бн(Х*), где \Xf Г\Т'\ нечетно. По определению дерева Гомори—Ху имеем d(5G{Xf))<d(5G(X*)) и J] с(е) + 2с/^ = сг^№/)). Случай 2: |Х* П Т'\ четно. Выберем ребро g* е 5G(X*), для которого значение |c'(g*) — c(g*)| минимально. Единственный цикл вЯ + g* содержит ребро /€бн(Х*). Тогда J] с(е) + 2 сЧе) = d(5G(X*)) + |c'(g*) -c(g*)| > e€5G(X*)\F* eeF* >d(5G(X/)) + |c,(g*)-c(g*)|^ J] c(e) + ]Tc'(e). Здесь первое неравенство следует из определения дерева Гомори—Ху (заметим, что / е. 5Н(Х*)), а второе неравенство — из того, что g* е 5G(Xf). ? Используя доказанную теорему, мы можем решить задачу отделения для политопа b-паросочетаний (теорема 12.3) за полиномиальное время. Данный результат известен как теорема Падберга — Рао. Летчфорд, Рейнельт и Тейс [20] упростили доказательство, а также улучшили оценку на время работы. Теорема 12.21 (Падберг и Рао [22], Летчфорд, Рейнельт и Тейс [20]). Для заданного неориентированного графа G, а также функций и: E(G) —> N U {<»}, b: V(G) —> N задача отделения для политопа b-паросочетаний, отвечающего экземпляру (G, и), может быть решена за время 0(пЛ). Доказательство. Пусть задан такой вектор х € R+ , что хе < и{е) для всех е е E{G) и ^ее5 (и) хе < b(i>) для всех и е V(G) (эти тривиальные условия можно проверить за линейное время). Нам требуется проверить последний набор условий, указанный в теореме 12.3. Из доказательства теоремы 12.3 мы знаем,
350 Глава 12. b-паросочетания и Т-соединения что данные условия выполнены автоматически, если Ъ{Х) + u(F) четно. Они оказываются нарушенными, если и только если Ъ{Х)-2 Y, *e + J](u(e)-2xe)<l ee?(G[X]) eeF для некоторых подмножеств ХС. V(G) и FC5(X), для которых b(X)+u(F) нечетно. Расширим граф G до графа G, добавив новую вершину z и ребро {z, и] для всех и € V(G). Пусть Г := {v е V(G): Ъ(и) нечетно}, где b{z) := J]veV(G) b(v). Обозначим Е' := {е е E(G): u(e) конечно и нечетно}. Положим с(е) := хе и с'(е) := и{е)—хе при е €?', с(е) := min{xe,u(e) — хе}, с'{е) := оо при е еE(G)\Е' и, наконец, c({s, i/}) := b(i;) ~I]ee5G(z,) *e и c'fe "}) := » при i; € V(G). Для подмножества X с y(G) обозначим Dx := {e e 5G(X) \E': u(e) < 2xe}. Тогда для всех X с у (G) и F с 5G(X) П ?' имеем |Xnr| + |F|=b(X) + u(FUDx) (mod 2) и c(5G(X)\F)+c/(F) = 2(b(i;)-2^V Z ** + + ^] min{xe,u(e)-xe} + ^](u(e)-xe) = ee5G(X)\E' e€F = b(X)-2 Y, *е+2(и(е)-2хе). eeE(G[X]) eeFUDx Поэтому из существования таких подмножеств X с V(G) и F с 5G(X), что c(5q(X) \F) + c'(F) < 1, вытекает включение F с ?'. Без ограничения общности можно считать, что z ф X (в противном случае можно перейти к дополнению), и, значит, Ь(Х)-2 2 хе+J](u(e)-2xJ<l. e€?(G[X]) eeFUDx Обратно, если Ь(Х)-2 J] хе + 2^еЬ2хе)<1 e€E(G[X]) e€F для некоторых X с V(G) и F с 5G(X), то без ограничения общности можно считать, что Dx CF CDxuF', и, следовательно, c(5G(Z)\(F\Dx)) +c'(F\Dx) <J. Итак, задача отделения сводится к нахождению таких подмножеств X с У (G) и F с 5G(X), что |Х П Г| + \F\ нечетно и сумма c(5q(X) \F) + c'{F) минимальна. Такие подмножества можно найти по лемме 12.20. ? Обобщение данного результата получили Капрара и Фискетти [10]. Из теоремы Падберга — Рао вытекает следующий факт. Следствие 12.22. Задача о b-паросочетании максимального веса может быть решена за полиномиальное время.
Упражнения 351 Доказательство. По следствию 3.33 достаточно решить задачу ЛП из теоремы 12.3. С учетом теоремы 4.21 достаточно иметь полиномиальный алгоритм для задачи отделения. Существование такого алгоритма доказано в теореме 12.21. ? Марш [21] обобщил алгоритм Эдмондса поиска взвешенного паросочета- ния на случай задачи о b-паросочетании максимального веса. Полученный им комбинаторный алгоритм, конечно, является намного более практичным, чем метод эллипсоидов. Однако теорема 12.21 представляет самостоятельный интерес (см., например, §21.4). См. также работу Жерара [3]. Комбинаторный сильно полиномиальный алгоритм для данной задачи был описан Ансти [7], а для невзвешенного случая — Гольдбергом и Карзановым [15]. Упражнения 1. Покажите, что совершенное простое 2-паросочетание минимального веса в неориентированном графе G может быть найдено за время 0(пв). 2* (Скрейвер [5]). Пусть G— неориентированный граф с парой функций Ьъ Ъ2: V(G)—>N. Постройте описание выпуклой оболочки таких функций /: Я(G)—>Z+, что biG/X^/CeXbaG;). ее5(у) Указание. Для непересекающихся подмножеств X,Y ^V(G) рассмотрим условия Е/оо- 2 /(exU(5>M-2biCy) e€E(G[X]) eeE(G[Y])uE(Y,Z) L ^ x&X y&Y где Z := V(G) \ (X U У). Воспользуйтесь теоремой 12.3. 3*. Можно ли далее обобщить результат упражнения 2 путем введения нижних и верхних пропускных способностей на ребрах? Указание. Это обобщение может рассматриваться как неориентированный вариант задачи из упражнения 2 из гл. 9. Дальнейшие обобщения этих задач и задачи о Г-соединении минимального веса содержится в работах Эдмондса и Джонсона [13], а также Скрейвера [5]. Соответствующий политоп хорошо изучен, для него известно даже тотально двойственное целочисленное описание. 4*. Докажите теорему 12.4. Указание. Для доказательства достаточности воспользуйтесь теоремой Татта 10.13 и построениями из доказательств теорем 12.2 и 12.3. 5. Политоп степеней подграфов (subgraph degree polytope) графа G определяется как выпуклая оболочка множества всех таких векторов Ъ е Z+ , что G содержит совершенное простое b-паросочетание. Докажите, что размерность данного политопа равна \V{G)\ — k, где к обозначает число связных двудольных компонент графа G. 6*. Рассмотрим неориентированный граф. Нечетно-циклическим покрытием (odd cycle cover) называется подмножество ребер, содержащее хотя бы одно ребро из каждого нечетного цикла. Покажите, как найти нечетно-циклическое •
352 Глава 12. b-паросочетания и Г-соединения покрытие минимального веса в планарном графе за полиномиальное время (считая веса ребер неотрицательными). Годится ли ваш метод для случая произвольных весов? Указание. Рассмотрите неориентированную задачу китайского почтальона в планарно двойственном графе и воспользуйтесь теоремой 2.26, а также следствием 2.45. 7 (Хэдлок [17]). Рассмотрим задачу о разрезе максимального веса для случая планарных графов. Для заданного неориентированного планарного графа G с весами с: ?(G) —> R+ требуется найти разрез максимального веса. Можно ли решить данную задачу за полиномиальное время? Указание. Воспользуйтесь упражнением 6. Замечание. Для графов общего вида данная задача является NP-трудной; см. теорему 16.6. 8. Пусть задан граф G с весами с: E(G) —>R+ и выделенным подмножеством Т с V(G), для которого \Т\ четно. Построим граф G', для чего положим y(G') := {(у, е): и € е € E(G)} U {и: v € V(G), |5G(z/)| + \{и] П T\ нечетно}, E(G'):={{(v,e)^w,e)}:e = {v,w}eE(G)}u U {{(у, е), (i/, /)}:!/€ V(G), е, / е 5G(i;), е ^ /} U U {{v,(v,e)}:veeeE(G), z7eV(G')}, атакжес/({(у, е), (ш,е)}) :=с(е) прие = {и, u;}gE(G) и с/(е/) = 0 для всех остальных вершин е' графа G'. Покажите, что совершенное паросочетание минимального веса в G' отвечает Т-соединению минимального веса в G. Является ли это сведение более предпочтительным с вычислительной точки зрения по сравнению с тем, что было применено в доказательстве теоремы 12.10? 9*. Следующая задача объединяет понятие простого совершенного Ь-паро- сочетания и Г-соединения. Пусть заданы неориентированный граф G с весами с: E(G) -> R, разбиение множества вершин V(G) = R U S и Г, а также функция Ъ : R —> Z+. Требуется найти минимальное по весу множество ребер J с ?(G), для которого |J П 5(i0| = b(u) при у е R, |J п 5(у)| четно при и е S и |J П 5(у)| нечетно при уеТ. Покажите, как свести данную задачу к задаче о совершенном паросочетании минимального веса. Указание. Воспользуйтесь построениями из § 12.1 и упражнения 8. 10 (Карзанов [18], Барахона [9], Бабенко и Карзанов [8]). Рассмотрим следующую неориентированную версию задачи о минимальном среднем цикле. Пусть задан неориентированный граф G с весами с: E(G) -*R. Требуется найти цикл С в G, средний вес которого с(?(С))/|?(С)| минимален. Пусть задан экземпляр (G, с) данной задачи. Обозначим через ® множество 0-соединений в G. Для а е R и X € 0 обозначим са(Х) := с(Х) — а|Х| и са(Х) := с(Х)/|Х| -а. Докажите следующие утверждения. (а) Для любых а е R за время 0(п3) можно найти такой элемент Хе^, что са(Х) минимально.
Упражнения 353 (б) Рассмотрим такое значение а е R, что ca(Y) < 0 для всех Y е ??, и пусть X е $ — элемент с минимальным значением са(Х). Тогда существует такой элемент Ye Of, что ca+b(Y) < 0, где Ь = са(Х). (в) Рассмотрим следующую процедуру. Положим вначале а = тах{с(е): е е E(G)}. Найдем элемент 1е^, для которого значение са(Х) минимально. Закончим работу, если са(Х) = 0. В противном случае заменим а на а + са(Х) и продолжим итерации. Покажите, что размер \Х\ уменьшается с каждой итерацией. (г) Покажите, что алгоритм из п. (в) находит оптимальное решение за время 0(п5). Замечание. Время работы может быть улучшено до 0{п2т + п3 log п). В сущности тот же алгоритм годится также и для других задач о минимальном среднем. 11. Пусть заданы граф G и подмножество Г с V(G). Опишите линейный алгоритм, находящий произвольное Г-соединение в G или выясняющий, что такого не существует. Указание. Рассмотрите остовный лес в G. 12. Пусть G — неориентированный граф с выделенным подмножеством вершин Г с V(G), для которого \Т\ четно, и подмножеством ребер F с Е(G). Докажите, что F имеет непустое пересечение со всяким Г-соединением, если и только если F содержит Г-разрез. Аналогично F имеет непустое пересечение со всяким Т-разрезом, если и только если F содержит Г-соединение. 13. Рассмотрим граф G и подмножество F с E{G). Докажите, что существует такое множество Л, что F с А с E[G) и граф (V(G),A) эйлеров, если и только если в G нет такого разреза В, что В с F и \В\ нечетно. 14*. Пусть G — планарный 2-связный граф с фиксированным плоским вложением. Обозначим через С цикл, ограничивающий внешнюю грань. Пусть также задано подмножество Г с У(С), имеющее четную мощность. Докажите, что минимальный размер Г-соединения совпадает с максимальным числом попарно непересекающихся Г-разрезов. Указание. Рассмотрите такую раскраску ребер цикла С в красный и синий цвета, что при движении вдоль С смена цвета происходит в точности в вершинах из Г. Рассмотрите планарно двойственный граф, расщепите вершину, обозначающую внешнюю грань, на красную и синюю копии и примените теорему Менгера 8.9. 15 (Эдмондс и Джонсон [13]). Докажите теорему 12.18, используя теорему 11.15 и построение из упражнения 8. 16. Пусть заданы неориентированный граф G и подмножество Г с V(G), размер которого \Т\ четен. Докажите, что выпуклая оболочка множества характеристических векторов всех Г-соединений в G представляет собой множество всех векторов х е [0,1]E(G), удовлетворяющих условиям J] xe + J](l-xe)>l ee5G(X)\F eeF для всех подмножеств X с V(G) и F с 5G(X), для которых \Х П Г| + \F\ нечетно.
354 Глава 12. b-паросочетания и Г-соединения Указание. Воспользуйтесь теоремами 12.18 и 12.11. 17. Пусть задан неориентированный граф G. Покажите, что конус, порождаемый характеристическими векторами всех циклов в G, задается условиями х е RE(G): х > О, \] х(е') > х{е) для всех разерзов С в G и е € С е'еС\{е} Указание. Воспользуйтесь упражнением 16. 18 (Барахона [9]). Запишите неориентированную задачу о минимальном среднем цикле в виде линейной программы, содержащей полиномиальное число переменных и неравенств. Указание. Воспользуйтесь упражнением 17, добавьте условие x(E(G)) — 1, а также примените теорему о максимальном потоке и минимальном разрезе. Замечание. Поскольку нам потребовалось ввести дополнительные переменные, такой способ задания называется расширенной формулировкой. Барахона [9] также показал, как решить задачу о Г-соединении минимального веса, начав с произвольного Г-соединения, а затем, последовательно применяя утверждение 12.8, искать средние минимальные циклы, считая веса ребер из текущего Г-соединения умноженными на —1. Число итераций при этом оказывается ограничено величиной 0{т2 log п). Следовательно, задачу о Г-соединении минимального веса (а значит, и задачу о совершенном паросочетании минимального веса) можно свести к решению полиномиального числа линейных программ полиномиального размера. Несмотря на это, описание взвешенных паросочетании в виде задачи ЛП полиномиального размера на настоящий момент неизвестно (см. работу Яннакакиса [30]). 19 (Рицци [25]). Пусть заданы неориентированный граф G и подмножество rcy(G), размер которого \Т\ = 2к четен. Докажите, что минимальный размер Г-разреза в G совпадает с минимумом суммы min^ As.t., взятой по всем разбиениям на пары Г = {sl9 tl9s2, t2,...,sk, tk}. (Здесь Xst обозначает максимальное число попарно реберно непересекающихся s-t-путей.) Как обобщить данную формулу на взвешенный случай? Указание. Воспользуйтесь теоремой 12.19. 20. В данном упражнении мы опишем алгоритм для задачи о минимальном Г-разрезе, в котором не используются деревья Гомори—Ху. Алгоритм является рекурсивным. Он получает на вход G, и, Г и работает следующим образом. 1. Вначале найдем такое подмножество Xcy(G), что ГПХ^0 иТ\Хф0, причем значение и{Х) '=^ее5 (Х) и{е) минимально (см. упражнениеЗО из гл. 8). Если \Т Г)Х\ оказывается нечетным, то работа алгоритма завершена (возвращаем X). 2. Иначе применим алгоритм рекурсивно вначале к G, и и Г ПХ, а затем к G, ни Г\Х. Получим множество Y с V(G), для которого |(ГПХ)П7| нечетно и и (7) минимально, а также множество Z с V(G), для которого |(Г\Х) П Z\ нечетно и u{Z) минимально. Без ограничения общности будем считать, что Т\Х ?Y и ХПТ %Z (иначе заменим Y на V(G) \Y и/или Z на V(G)\Z). 3. Если и{Х П Y) < u{Z \Х), то в качестве ответа вернем X П Y, а иначе вернем Z\X.
Литература 355 Покажите, что данный алгоритм корректен и имеет сложность 0(п5), где n = \V(G)\. 21. Покажите, как решать задачу о b-паросочетании минимального веса в частном случае, когда числа b(v) четные для всех и € V(G), за сильно полиномиальное время. Указание. Используйте сведение к задаче о потоке минимальной стоимости, как указано в упражнении 10 из гл. 9. Литература Общая литература [1] Cook W.J. у Cunningham W.H., Pulleyblank W.R., Schrijver A. Combinatorial Optimization. Wiley, New York, 1998, Sections 5.4 and 5.5. [2] Frank A. A survey on Г-joins, Г-cuts, and conservative weightings // Combinatorics, Paul Erdos is Eighty; Vol. 2 (D. Miklos, V. T. Sos, T. Szonyi, eds.), Bolyai Society, Budapest, 1996. P. 213-252. [3] Gerards A. M. H. Matching // Handbooks in Operations Research and Management Science; Vol. 7: Network Models (M. O. Ball, T. L. Magnanti, С L. Monma, G. L. Nemhauser, eds.), Elsevier, Amsterdam, 1995. P. 135-224. [4] Lovdsz L., Plummer M. D. Matching Theory. Akademiai Kiado, Budapest, 1986, and North- Holland, Amsterdam, 1986. [5] Schrijver A. Min-max results in combinatorial optimization; Section 6 // Mathematical Programming; The State of the Art — Bonn 1982 (A. Bachem, M. Grotschel, B. Korte, eds.), Springer, Berlin, 1983. P. 439-500. [6] Schrijver A. Combinatorial Optimization: Polyhedra and Efficiency. Springer, Berlin, 2003, Chapters 29-33. Процитированные работы [7] Anstee R. P. A polynomial algorithm for b-matchings: an alternative approach // Information Processing Letters. 1987. Vol. 24. P. 153-157. [8] Babenko M. A. and Karzanov A. V. Minimum mean cycle problem in bidirected and skew- symmetric graphs // Discrete Optimization. 2009. Vol. 6. P. 92-97. [9] Barahona F. Reducing matching to polynomial size linear programming // SIAM Journal on Optimization. 1993. Vol. 3. P. 688-695. [10] Caprara A., Fischetti M. |0, -J-Chvatal— Gomory cuts // Mathematical Programming. 1996. Vol. 74. P. 221-235. [11] Edmonds J. Maximum matching and a polyhedron with (0,1) vertices // Journal of Research of the National Bureau of Standards. Ser. B. 1965. Vol. 69. P. 125-130. [12] Edmonds J., Johnson E. L. Matching: A well-solved class of integer linear programs // Combinatorial Structures and Their Applications; Proceedings of the Calgary International Conference on Combinatorial Structures and Their Applications 1969 (R. Guy, H. Hanani, N. Sauer, J. Schonheim, eds.), Gordon and Breach, New York, 1970. P. 69-87. [13] Edmonds J., Johnson E. L. Matching, Euler tours and the Chinese postman // Mathematical Programming. 1973. Vol. 5. P. 88-124.
356 Глава 12. b-паросочетания и Г-соединения [14] Gabow Н. N. An efficient reduction technique for degree-constrained subgraph and bidi- rected network flow problems // Proceedings of the 15th Annual ACM Symposium on Theory of Computing. 1983. P. 448-456. [15] Goldberg A. V., KarzanovA. V. Maximum skew-symmetric flows and matchings // Mathematical Programming. Ser.A. 2004. Vol.100. P. 537-568. [16] Guan M. Graphic programming using odd and even points // Chinese Mathematics. 1962. Vol.1. P. 273-277. [17] Hadlock F. Finding a maximum cut of a planar graph in polynomial time // SIAM Journal on Computing. 1975. Vol. 4. P. 221-225. [18] Карзанов А. В. О минимальных по среднему весу разрезах и циклах ориентированного графа // Качественные и приближенные методы исследования операторных уравнений / Под ред. В. С. Климова. Ярославль: Изд-во ЯрГУ, 1985. С. 72-83. (English translation in American Math. Soc. Transl., Ser. 2, v. 158,1994, p. 47-55.) [19] Карзанов А. В. Алгоритм максимальной упаковки нечетнополюсных разрезов и его приложения // Исследования по прикладной теории графов / Под ред. А. С. Алексеева. Новосибирск: Наука СО, 1986. С. 126-140. (English translation in American Math. Soc. Transl., Ser. 2, v. 158,1994, p. 57-70.) [20] Letchford A. N., Reinelt G., Theis D. O. Odd minimum cut sets and b-matchings revisited // SIAM Journal on Discrete Mathematics. 2008. Vol.22. P. 1480-1487. [21] Marsh A. B. Matching algorithms. Ph. D. thesis, Johns Hopkins University, Baltimore, 1979. [22] Padberg M. W., Rao M. R. Odd minimum cut-sets and Ь-matchings // Mathematics of Operations Research. 1982. Vol. 7. P. 67-80. [23] Pulleyblank W. R. Faces of matching polyhedra. Ph. D. thesis, University of Waterloo, 1973. [24] Pulleyblank W. R. Dual integrality in b-matching problems // Mathematical Programming. Study. 1980. Vol.12. P. 176-196. [25] Rizzi R. Minimum Г-cuts and optimal T-pairings // Discrete Mathematics. 2002. Vol. 257. P. 177-181. [26] Sebo A. A quick proof of Seymour's theorem on Г-joins // Discrete Mathematics. 1987. Vol.64. P. 101-103. [27] Seymour P. D. On odd cuts and multicommodity flows // Proceedings of the London Mathematical Society. (3). 1981. Vol.42. P. 178-192. [28] Tutte W. T. The factors of graphs // Canadian Journal of Mathematics. 1952. Vol. 4. P. 314-328. [29] Tutte W. T. A short proof of the factor theorem for finite graphs // Canadian Journal of Mathematics. 1954. Vol. 6. P. 347-352. [30] Yannakakis M. Expressing combinatorial optimization problems by linear programs // Journal of Computer and System Sciences. 1991. Vol. 43. P. 441-466.
ГЛАВА 13 Матроиды Многие комбинаторные задачи можно сформулировать в следующем общем виде. Пусть задана система множеств (Е, &), т. е. заданы конечное множество Е и семейство <^С2?. Пусть также известна функция стоимостей с: & —> R. Требуется найти элемент &, стоимость которого минимальна (или максимальна). В дальнейшем мы ограничимся изучением модулярных функций с, т. е. будем считать, что с(Х) = с(0) + ^хеХ(с({х}) — с(0)) для всех X с ?. Иными словами, нам известны стоимости отдельных элементов, задаваемые функцией с: Е -* R, и далее мы полагаем с(Х) = ^ееХ с(е)- В этой главе мы ограничимся изучением тех комбинаторных задач, в которых & образует так называемую «систему независимости» (т. е. замкнуто относительно взятия подмножеств) или даже более специальный объект — «матроид». Результаты, которые мы получим, обобщают некоторые факты, касающиеся комбинаторных задач, изученных в более ранних главах. В § 13.1 мы введем понятие системы независимости и матроида и покажем, что в этих терминах удается описать множество оптимизационных задач. Известно несколько эквивалентных систем аксиом для матроидов, некоторые из них мы приводим в § 13.2. В § 13.3 будет изучено интересное отношение двойственности, возникающее на матроидах. Основной причиной, обуславливающей важность понятия матроида, является возможность решения задач оптимизации для них с помощью жадного алгоритма. Этот алгоритм будет проанализирован в § 13.4. Затем мы перейдем к изучению задачи оптимизации по пересечению двух матроидов. Как будет показано в § 13.5 и 13.7, эту задачу можно решить за полиномиальное время. Похожими методами можно также решить задачу покрытия матроида независимыми подмножествами, ей мы посвятим § 13.6. § 13.1. Системы независимости и матроиды Определение 13.1. Система множеств [Е, &) называется системой независимости, если выполнены следующие условия: (Ml) 0е&; (М2) если X с Y е &, то X е &. Множества из семейства & называются независимыми, а множества из семейства 2?\ &—зависимыми. Минимальные по включению зависимые множества называются циклами, а максимальные по включению независимые множества —
358 Глава 13. Матроиды базами. Для X с. Е максимальные по включению независимые подмножества множества X называются базами множества X. Определение 13.2. Пусть (?, &) — система независимости. Для подмножества ХС.Е определим его ранг равенством г(Х) := тах{|У |: Y с X, Y е &}. Более того, определим замыкание множества X как подмножество а(Х) := {у <=Е: r(XU {у}) = г(Х)}. На протяжении данной главы (Е, &) будет обозначать систему независимости, а с: Е —> R — функцию стоимостей. Мы сосредоточимся на следующих двух задачах. Independence System Maximization (задача максимизации для системы независимости) Дано: система независимости (Е, &) и функция с: Е —> R. Надо: найти такой элемент X е ^ что с(Х) := Хеех с(е) максимально. Independence System Minimization (задача минимизации для системы независимости) Дано: Надо: система независимости (?, &) найти базу В, для которой с{В) и функция с: Е —> минимально. R. Представленное выше описание входа алгоритма весьма расплывчато. Множество Е и функцию стоимостей с можно задать явным образом, как обычно. Однако семейство J^, как правило, не указывают явно путем перечисления всех его элементов. Вместо этого предполагается известным оракул, который по заданному подмножеству F с Е выясняет, справедливо ли условие F е &. Мы вернемся к этому вопросу в § 13.4. Приводимый ниже список демонстрирует, что многие из задач комбинаторной оптимизации действительно имеют одну из двух указанных форм. 1. Maximum Weight Stable Set (задача о независимом подмножестве максимального веса). Заданы граф G и веса с: V(G) —> R. Требуется найти независимое подмножество X в G, имеющее максимальный вес. Здесь Е = V(G) и & = {F с Е: F независимо в G}. 2. Travelling Salesman (задача коммивояжера). Заданы полный неориентированный граф G и веса с: E(G) —> R+. Требуется найти гамильтонов цикл минимального веса в G. Здесь Е = E(G) и & = {F QE: F — подмножество ребер гамильтонова цикла bG}. 3. Shortest Path (задача о кратчайшем пути).
§ 13.1. Системы независимости и матроиды 359 Заданы граф G (ориентированный или нет), функция с: E(G) —»R и пара вершин 5, t е V(G), где вершина t достижима из s. Требуется найти кратчайший s-t-путь в G относительно длин с. Здесь Е — Е (G) и & = {F с Е: F подмножество ребер s-t-пути}. 4. Knapsack (задача о рюкзаке). Заданы число п е N, неотрицательные числа ciy wt (К i < п), а также число W. Требуется найти такое подмножество S с {1,... ,п}, что ^jeS oj < W и сумма ?jeS с, максимальна. ЗдесьЕ = {1,...,л}и^ = {УСБ: ?j6Fu$<W}. 5. Minimum Spanning Tree (задача о минимальном остовном дереве). Заданы связный неориентированный граф G и веса с: E(G) —> R. Требуется найти остовное дерево минимального веса в G. Здесь Е = E(G), а элементами семейства & служат множества ребер лесов bG. 6. Maximum Weight Forest (задача о лесе максимального веса). Заданы неориентированный граф G и веса с: E(G) -> R. Требуется найти лес максимального веса в G. Здесь система {Е, &) совпадает с таковой в задаче 5. 7. Steiner Tree (задача о дереве Штейнера). Заданы связный неориентированный граф G, веса с: E{G) —>R+ и множество терминалов Т с V(G). Требуется найти дерево Штейнера для Г, т. е. такое дерево S, что Г с y(S) и E(S) с E(G), причем вес c(E(S)) минимален. Здесь Е = E(G), а & состоит из подмножеств ребер всевозможных деревьев Штейнера для Г. 8. Maximum Weight Branching (задача о ветвлении максимального веса). Заданы орграф G и веса с: E(G) —> R. Требуется найти ветвление максимального веса в G. Здесь ? = E(G), а ^ состоит из множеств ребер всех ветвлений в G. 9. Maximum Weight Matching (задача о паросочетании максимального веса). Заданы неориентированный граф G и веса с: E(G) —> R. Требуется найти паросочетание максимального веса в G. Здесь Е = E(G), а & совпадает с множеством паросочетании в G. Этот список содержит как А/Р-трудные задачи (1, 2, 4, 7), так и полиномиально разрешимые (5, 6, 8, 9). Задача 3 является А/Р-трудной в приведенной выше форме, но становится полиномиально разрешимой, если потребовать неотрицательность весов (понятие NP-трудности будет введено в гл. 15.) Определение 13.3. Система независимости образует матроид, если (МЗ) для любых X, Y G &, \Х\ > \Y\, существует такой элемент х е X\Y, что Y U {х} е JF. Для данной структуры был выбран термин «матроид», поскольку она в определенном смысле обобщает понятие матрицы. Суть этого обобщения становится понятной при рассмотрении первого примера из приводимого далее списка.
360 Глава 13. Матроиды Утверждение 13.4. Следующие системы независимости (Е, &) являются мат- роидами: (а) Е совпадает с множеством столбцов матрицы А, заданной над некоторым полем, и & := {F с Е: столбцы матрицы F линейно независимы над данным полем}; (б) Е совпадает с множеством ребер некоторого неориентированного графа G, и& :={FCE: (V(G), F) образует лес}; (в) Е представляет собой конечное множество, задано неотрицательное целое число k,u&:={FCE:\F\< к}; (г) Е совпадает с множеством ребер некоторого неориентированного графа G, S—устойчивое подмножество в G, fcs е Z+ (s е S), и & := {F с Е: |5F(s)| < ks для всех s €. S}; (д) Е совпадает с множеством ребер некоторого орграфа G, S с V(G), fcs е Z+ (s е S), и & := {F с Е: |5~(s)| < ks для всех s е S}. Доказательство. Во всех перечисленных случаях очевидно, что [Е, &) действительно является системой независимости. Осталось доказать, что для данных систем выполняется свойство (МЗ). В примере (а) этот факт хорошо известен из алгебры, а в примере (в) он является тривиальным. Докажем свойство (МЗ) для примера (б). Пусть заданы элементы X, Y е &, и пусть Y U {х} ? & для всех х ? X\Y. Покажем, что |Х| < \Y\. Для каждого ребра x = {u,w}eX его концы и иш содержатся в одной и той же связной компоненте графа (V(G),7). Следовательно, каждая связная компонента Z с V(G) графа (V(G),X) содержится в связной компоненте графа (V(G), 7). Тогда число р связных компонент леса (V(G), X) не меньше, чем число q связных компонент леса (V(G), У), поэтому \V(G)\ - \Х\ = р > q = \V(G)\ - \Y\, следовательно, |Х| < \Y\. Из)^чим теперь подробнее свойство (МЗ) в примере (г). Пусть X, Y € &, причем |Х| > |У|. Обозначим S' := {seS: |5y(s)| = fcs}. Поскольку |Х|> \Y\ и |5x(s)| <ks для всех s е S7, существует такой элемент е е X \ Y, что e$.5(s) для всех 5 е S'. Тогда 7u{e}Gjf. Наконец, в примере (д) доказательство совпадает с приведенным выше, нужно лишь заменить в рассуждении 5 на 5~. ? Некоторые из этих матроидов имеют специальные названия. Так, матроид из примера (а) называется линейным матроидом матрицы А. Пусть М — матроид. Если существует такая матрица А над полем F, что М совпадает с линейным матроидом для Л, то Ж называется представимым над полем F. Существуют матроиды, не являющиеся представимыми ни над каким полем. Матроид из примера (б) называется циклическим матроидом графа G и будет иногда обозначаться через M{G). Матроид, являющийся циклическим для некоторого графа (в котором могут встречаться петли), называется графическим. Матроид, описанный в примере (в), называется равномерным. В нашем списке систем независимости, приведенном в начале этого параграфа, матроидами оказываются лишь графические матроиды из задач 5 и 6. Дня того чтобы показать, что остальные системы независимости из этого
§ 13.1. Системы независимости и матроиды 361 списка не образуют матроидов, удобно воспользоваться следующей теоремой (см. упражнение 1). Теорема 13.5. Пусть (Е, &) — система независимости. Тогда следующие утверждения эквивалентны: (МЗ) если X, Y е & и \Х\ > \Y\, то найдется такой элемент х е X\Yy что Yu{x}e&; (МЗ') если X,Y G ^ и \Х\ = \Y\ + 1, то найдется такой элемент xeX\Y, что Yu{x}e&; (МЗ") для любого подмножества X СЕ все его базы имеют одинаковый размер. Доказательство. Импликации (МЗ)<=>(МЗ') и (МЗ)=>(МЗ") очевидны. Для доказательства импликации (МЗ")=>(МЗ) рассмотрим такие множества X, Y е ^ что \Х\ > \Y\. По свойству (МЗ") множество Y не может быть базой для X и Y. Тогда должен существовать такой элемент хе (XUY)\Y = X\Y, что 7u{x}g«?. ? Для произвольной системы независимости иногда оказывается полезным рассмотреть еще одну ранговую функцию. Определение 13.6. Пусть (Е, &) — система независимости. Для подмножества X СЕ определим его нижний ранг равенством р(Х) := min{|Y|: Y с х, Y е & и Y и {х} ? & для всех х € X\Y}. Ранговое отношение для (?, &) задается равенством Утверждение 13.7. Пусть {Е,&) — система независимости. Тогда q(E, &) < 1. Более того, (Е, &) представляет собой матроид, если и только если q{E, &) = 1. Доказательство. Неравенство q{E, &) < 1 следует из определения, а равенство q{E, &) = 1, очевидно, эквивалентно свойству (МЗ"). ? Для оценки рангового отношения удобным оказывается следующее утверждение. Теорема 13.8 (Хаусман, Дженкинс и Корте [22]). Рассмотрим систему независимости (Е, &). Если для любых AG& и esE подмножество A U {е} содержит не более р циклов, то q[E, &)>1/р. Доказательство. Рассмотрим подмножество F с Е, и пусть J, К—две его базы. Покажем, что |J|/|JC| > 1/р. Пусть J\K={el9.. .,et}. Построим последовательность К=К0,Кг, ...,Kt, состоящую из таких независимых подмножеств J U К, что J П К с к{, К{ П {еъ ..., ej = = {еъ ..., е{] и \К(_г \Kt\ < р при i = 1,..., t. Поскольку Kt U {ei+1} содержит не более р циклов и каждый такой цикл пересекается с Kt\J (так как J независимо), существует такое подмножество X с Kt\J, что |Х| < р и (Kt\X) U {ei+1} е &. Положим Ki+1 := (К{\Х) U {ei+1}.
362 Глава 13. Матроиды Имеем J с Kte &. Поскольку J образует базу множества F, получаем, что J = Kt. Тогда t \K\J\=Yi\Ki_1\Ki\<pt = p\J\K\, i=l следовательно, \K\ < р |J|. П Из доказанного утверждения следует, что в примере 9 мы имеем q{E, &) > > 1/2 (см. также упражнение 1 из гл. 10). В действительности q{E, &) = 1/2, если и только если G содержит путь длины 3 в качестве подграфа (иначе q{E, &) = 1). Для системы независимости из примера 1 ранговое отношение может быть сколь угодно малым (достаточно взять в качестве G звезду). В упражнении 6 мы изучим ранговые отношения для других примеров систем независимости. § 13.2. Другие системы аксиом для матроидов В данном параграфе мы рассмотрим другие системы, задающие понятие матроида. Они характеризуют фундаментальные свойства семейства баз, ранговой функции, оператора замыкания, а также семейства циклов матроида. Теорема 13.9. Пусть заданы конечное множество Е и семейство его подмножеств 38 с 2е. Тогда 98 является множеством баз некоторого матроида [Е, &), если и только если выполнены следующие условия: (81) тф®\ (82) для любых Вг,В2е 38 и хеВг\В2 существует такой элемент у еВ2\Въ что (Вг\{х})и{у}е38. Доказательство. Множество баз любого матроида удовлетворяет условиям (В1) (по свойству (Ml)) и (В2). Действительно, для любых баз Въ В2 и элемента х еВг \В2 множество Вх \{х} является независимым. По свойству (МЗ) найдется такой элемент у^В2 \ВЪ что множество (Вг \ {х}) и {у} независимо. Оно должно быть базой, поскольку все базы в матроиде имеют одинаковый размер. С другой стороны, пусть 38 удовлетворяет условиям (В1) и (В2). Покажем вначале, что все элементы семейства 9& имеют одинаковый размер. Предположим противное: выберем элементы ВЪВ2 е Л, для которых \Вг\ > \В2\ и размер пересечения \В1 П В2\ максимален. Пусть х е Вг \В2. По условию (В2) найдется такой элемент у е В2 \ВЪ что {Bl \ {х}) U {у} € gt, что противоречит максимальности \Вг Г\В2\. Положим теперь & := {F ? Е: существует такое множество Be 38, что F с в}. Пара (Е, &) образует систему независимости, а ^ является семейством ее баз. Для того чтобы доказать, что (Е, &) удовлетворяет условию (МЗ), возьмем произвольные множества X, Y е &, для которых |Х| > \Y\. Пусть X с вг е 08 и Y с в2 €. 38, где Вг и В2 выбраны так, чтобы размер пересечения \Вг Г\В2\ был максимальным. Если В2 П (X\Y) ф 0, то доказательство завершено, поскольку мы можем расширить Y.
§ 13.2. Другие системы аксиом для матроидов 363 Докажем, что противоположный случай, в котором В2 П (X\Y) = 0, невозможен. Действительно, по сделанному предположению получаем \ВгПВ2\ + \Г\Вг\ + |(В2\В1)\7| = \В2\ = \Вг\ > \ВгПВ2\ + |Х\У|. Поскольку |Х\У| > \Y\X\ > №\Вг\, отсюда следует, что (Б2\Б1)\7^0. Выберем элемент у е (B2\B!)\7. По условию (В2) существует элемент х € В^В^ для которого (В2\{у}) U {х} € <%, что противоречит максимальности \Вг ПВ2\. П Еще одно утверждение похожего типа приведено в упражнении 8. Важнейшим свойством матроида является субмодулярность его ранговой функции. Теорема 13.10. Пусть заданы конечное множество Е и функция г: 2? —> Z+. Тогда следующие утверждения эквиваленты: (а) г—ранговая функция матроида (Е, &) (при этом & = {F с ?: r(F) = |Е|}); (б) для всех X,Y се выполняются условия (R1) г(Х)<\Х\; (R2) eaiuXCY,mor(X)<r(Y); (R3) г(Хи7) + г(ХПУ)<г(Х) + г(У); (в) для всех X С.Е и х,у € Е выполняются условия (R10 г(0) = О; (R2') r(X) < r(X U {у}) < г{Х) + 1; (R3') если r[X U {х}) = r{X U {у}) = r(X), mo r(X U {х, у}) = г(Х). Доказательство. Докажем импликацию (а)=>(б). Если г служит ранговой функцией для системы независимости (Е, &), то условия (R1) и (R2), очевидно, выполнены. Если (Е, &) образует матроид, то для него также справедливо свойство (R3). Действительно, пусть X, Y с Е. Обозначим через А базу множества X П У. По свойству (МЗ) множество А может быть расширено до базы А и В множества X, а также до базы (Л U В) U С множества X и У. Тогда Л и С является независимым подмножеством множества У, следовательно, г(Х)+г(У)>|ЛиВ| + |ЛиС| = 2|Л| + |Е| + |С| = |ЛиВиС| + |Л| = г(ХиУ) + г(ХПУ). Докажем импликацию (б)=>(в). Свойство (RlO следует из свойства (R1). Неравенство r{X) < r{X и {у}) следует из свойства (R2). По свойствам (R3) и (R1) имеем r(X U {у}) < г(Х) + г({у}) - г(Х П {у}) < г (X) + г({у}) < г(Х) + 1, откуда вытекает свойство (R27). Свойство (R3') тривиально в случае х = у. При х Ф у мы имеем, с учетом свойств (R2) и (R3), 2г(Х) < г(Х) + г(Х U {х, у}) < г(Х U {х}) + r(X U {у}), откуда получается свойство (R3').
364 Глава 13. Матроиды Докажем импликацию (в)=ф(а). Рассмотрим функцию г: 2Е —> Z+, удовлетворяющую свойствам (RlO-(R30. Обозначим &:={F?E:r(F) = \F\]. Утверждается, что пара (?, &) образует матроид. Свойство (Ml) следует из свойства (R10- Из свойства (R2') вытекает, что г(Х) < |Х| для всех X с ?. Если У е. &, у € У и X := У \ {у}, то мы имеем |Х| +1 = |У | = r(Y) = r(X U {у}) < г(Х) + 1 < |Х| + 1, следовательно, Xej^. Таким образом, свойство (М2) доказано. Рассмотрим теперь такие множества X,Y е &, что |Х| = \Y\ + 1. Положим X \ Y = {хг,..., хк}. Допустим, что свойство (МЗ') нарушается, т. е. г (У U {xj) = \Y \ при i = 1,..., к. Тогда по свойству (R3') имеем r(YU {хг, xt}) = r(Y) при i = 2,..., к. Применяя данное рассуждение последовательно несколько раз, получаем г (У) = = r(Y U {хъ ..., хк}) = r(X UY)> г(Х) — противоречие. Таким образом, (Е, &) действительно является матроидом. Для доказательства того, что г служит для него ранговой функцией, нам необходимо доказать равенство г(Х) = тах{|У|: У с X, r(Y) = |У|} для всех X с Е. Пусть X с ?. Обозначим через У максимальное подмножество множества X, для которого r(Y) = |У|. Для всех х е X \ У мы имеем г (У и {х}) < \Y | +1, а значит, по свойству (R27) справедливо равенство r(Y и {х}) = |У|. Применяя несколько раз последовательно свойство (R3'), получаем, что г(Х) = |У|. П Теорема 13.11. Рассмотрим конечное множество Е и функцию а: 2Е —> 2?. Функция а описывает операцию замыкания в матроиде (?, ^), если и только если следующие условия выполняются для всех X,Y QE и х,у еЕ: (51) X с ст(Х); (52) если X с У с Е, то ст(Х) с сг(У); (53) сг(Х) = ст(с7(Х)); (54) если у ф а(Х) иуе сг(Х и {*}), тохе сг(Х и {у}). Доказательство. Если а действительно задает замыкание в матроиде, то свойство (S1), очевидно, выполнено. Для произвольных X с у и z € сг(Х) из свойств (R3) и (R2) следует, что г(Х) + г(У) = r(X U {г}) + г(У) > г ((X U {z}) П У) + г (X U {z} U У) ^ г(Х) + г(У U {*}), а значит, г е ст(У). Тем самым, свойство (S2) доказано. Применяя несколько раз последовательно свойство (R3'), получаем г(сг(Х)) = = г(Х) для всех X, откуда вытекает свойство (S3). Докажем свойство (S4). Предположим, что существуют такие X, х,у, что у $ а(Х), у G а(Х U {х}) их<? а(Х и {у}). Тогда r(Xu{y}) = r(X) + l, r(Xu{x,y}) = r(Xu{x}) и г(Хи{х,у}) = г(Хи{у}) + 1. Таким образом, r(X U {х}) = г(Х) + 2, что противоречит свойству (R2').
§ 13.2. Другие системы аксиом для матроидов 365 Докажем теперь обратное утверждение. Пусть а: 2Е —> 2Е — фикция, удовлетворяющая условиям (S1)-(S4). Положим &:={ХЯЕ:х? а(Х\{х}) для всех х € X}. Докажем, что пара (Е, &) образует матроид. Свойство (Ml) тривиально. Для подмножества Хсуе^и элемента х еХ мыимеемх^а(У\{х})2а(Х\{х}),такчтоХе^ исвойство (М2) справедливо. Для доказательства свойства (МЗ) нам потребуется следующий факт. Утверждение. Если X е& uY се, причем \Х\ > \Y\, тоХ% <j(Y). Докажем данное утверждение индукцией по \Y\Х\. Если Y с X, то возьмем хеX\Y. Поскольку Хе^ имеем хфа(Х\{х}) 2 сг(У) по свойству (S2). Следовательно, х gX\<j(Y), как и требовалось. Если \Y\X\ > О, то рассмотрим элемент у eY\X. По индуктивному предположению существует элемент х е Х\сг(У\{у}). Если х ? <т(У), то доказательство завершено. Иначе х ? сг(У\{у}), но х е сг(У) = ст((У\{у}) U {у}), так что по свойству (S4) имеем у е сг((У\{у}) и {х}). По свойству (S1) получаем YCa{(Y\{y})u{x}), и, значит, а (У) Qa((Y \{у})и{х}) по свойствам (S2) и (S3). Применяя индуктивное предположение к X и (У \ {у}) и {х} (заметим, что х фу), мы получаем X % cr((Y\{y}) U {*}). Таким образом, X ? cr(Y), как и требовалось. Доказав данное утверждение, мы теперь можем легко проверить свойство (МЗ). Пусть X, У € &, причем |Х| > |У|. По доказанному утверждению существует элемент х е X \ а (У). Для всех г € У и {х} мы имеем z ^ а (У \ {z}), поскольку У е ^ их^ ст(У) = сг(У\{д:}). По свойству (S4) из того, что z ф a(Y\{z}) и х ^ сг(У), следует, что z ? сг((У \ {z}) и {*}) 2 <т((У U {х}) \ {z}). Значит, У и {х} е ^. Итак, свойство (МЗ) действительно выполнено, и пара (Е, ^) образует матроид. Обозначим через г его ранговую функцию, а через сг' — операцию замыкания. Осталось показать, что а = а'. По определению ст'{Х) = {у € Е: r{X U {у}) = г(Х)} и г(Х) = тах{|У|: У с х, у ? а (У \ {у}) для всех yeY} для всехX СЕ. Пусть X с Е. Для доказательства вложения сг'{Х) ^cr{X) рассмотрим элемент z G <j'{X) \Х. Пусть У — база множества X. Поскольку r(Y U {*}) < г(Х U {*}) = r(X) = \Y\ < |У U {z}\, мы получаем, что у ? сг((У U {z}) \ {у}) для некоторого у е У и {z}. Если у = z, то получаем z ? сг(У). Иначе по свойству (S4) и в силу условия у ? сг(У\{у}) имеем z е сг(У). Следовательно, по свойству (S2) получаем, что z е сг(Х), откуда с учетом свойства (S1) вытекает вложение crf(X) с сг{Х). Пусть теперь z ? сг'(Х), т. е. r(X U {z}) > г(Х). Обозначим через У базу множества X U {z}. Тогда zeY n\Y\{z}\ = \Y\-l = r(X U {z}) -1 = r(X). Следовательно, У \ {z} служит базой множества X, поэтому X с сг'(У \ {z}) с сг(У \{z}), и, значит, сг(Х) с сг(У\{z}). Поскольку z ф a(Y\{z}), ползаем, что z ? сг{Х). П
366 Глава 13. Матроиды Теорема 13.12. Рассмотрим конечное множество Е и семейство *& с 2?. Тогда <& является множеством циклов системы независимости (Е, &), где & = {F сЕ:не существует такого С еЧ?, что С с F}, если и только если выполнены следующие условия: (С1) 0 $ V; (С2) для любых Cl,C2ecg из того, что d с С2, следует, что d — С2. Более того, если <& образует множество циклов системы независимости {Е, &), то следующие утверждения эквивалентны: (а) пара (Е, &) образует матроид; (б) для любых X е.? и esE множество X U {е} содержит не более одного цикла; (СЗ) для любых таких СЪС2 G *&, что Сг Ф С2 и е G СгГ\ С2, существует элемент С3 G <?, для которого С3 с (d и С2) \ {е}; (СЗ') для любых Сг,С2 G Ч>, е G d П С2 и f G Сг\С2 существует элемент С3 G <?, для которого f G С3 Я (d U С2) \ {е}. Доказательство. По определению множество циклов любой системы независимости удовлетворяет условиям (С1) и (С2). Если <% удовлетворяет условию (С1), то {Е, &) является системой независимости. Если *€ дополнительно удовлетворяет условию (С2), то ^ представляет собой множество циклов некоторой системы независимости. Докажем импликацию (а)=>(СЗ'). Пусть ^ — семейство циклов некоторого матроида, и пусть С1,С2ес?, е€.СгГ\С2и f еСг\С2. Дважды применяя свойство (R3), получаем |C1|-l + r((C1UC2)\{e,/}) + |C2|-l = = г(d) + г((d U С2) \ {е, /}) + г(С2) > > r(d) + r((d U С2) \ {/}) + r(C2 \ {е}) > > г(d \ {/}) + r(d U d) + r(d \ {в}) = = |C1|-l + r(C1UC2) + |C2|-l. Итак, r((d U d) \{е, /}) = Kd и С2). Пусть В — база множества (d U d) \{е, /}• Тогда В U {/} содержит цикл С3> для которого /еСз^^и С2) \ М, как и требовалось. Импликация (СЗ')=>(СЗ) тривиальна. Докажем импликацию (С3)=>(б). Если X G J*" и X и {е} содержит пару циклов Сг, С2, то из условия (СЗ) получаем, что (d и С2) \ {е} ? &. Однако (d U d) \ М является подмножеством множества X. Импликация (б)=>(а) следует из теоремы 13.8 и утверждения 13.7. ? Из указанных выше свойств мы будем особенно часто использовать свойство (б). Для множества X G & и элемента е G ?, для которого X и {е} ^ ^, будем обозначать через С(Х, е) единственный цикл в X и {е}. Если X U {е} G «^ то положим С(Х, е) := 0.
§13.3. Двойственность 367 §13.3. Двойственность Еще одним важным понятием теории матроидов является двойственность. Определение 13.13. Пусть (Е, &) — система независимости. Определим двойственную систему независимости для (Е, &) как (Е, &*), где jr* = {fC?; существует такая база В системы (Е, &), что F П В = 0}. Очевидно, что система, двойственная системе независимости, снова является системой независимости. Утверждение 13.14. Справедливо равенство (Е, &**) = (Е, J^). Доказательство. Имеем F е ^** <=> существует такая база В* системы (Е, J^*), что F П В* = 0 <=> существует такая база В системы (Е, J*"), что F П (Е \В) = 0 <=Ф <=> F е <^. П Теорема 13.15. Рассмотрим систему независимости (Е, ^), двойственную систему независимости (Е, ^*), и пусть г и г* — соответствующие ранговые функции. Тогда (а) (Е, с^) является матроидом, если и только если (В, &*) является мат- роидом (Уитни [33]); (б) если (В, &) образует матроид, то г*(Е) = \F\ + r(E\F) - г(Е) при F СЕ. Доказательство. С учетом утверждения 13.14 в п. (а) достаточно доказать лишь импликацию в одну сторону. Итак, пусть (Е, &) — матроид. Определим функцию q: 2е —> Z+ равенством q (F): = \F | + г(Е \ Е) — г(Е). Докажем, что q удовлетворяет условиям (Rl), (R2) и (R3). Тогда из теоремы 13.10 следует, что q является ранговой функцией для матроида. Поскольку, очевидно, q(F) = |F|, если и только если F е ^*, получаем, что q = г*, а значит, утверждения (а) и (б) доказаны. Докажем теперь сформулированное выше утверждение. Функция q удовлетворяет условию (R1), поскольку г удовлетворяет условию (R2). Проверим, что q удовлетворяет условию (R2). Рассмотрим подмножества X с у с Е. Поскольку (В, ^) является матроидом, условие (R3) выполняется для г, так что г{Е\Х) + 0 = г((Е\7) U (У\Х)) + r(0) < r{E\Y) + г(7\Х). Поэтому r{E\X)-r(E\Y)<r{Y\X)<\Y\X\ = \Y\-\X\ (заметим, что г удовлетворяет условию (R1)) и, значит, q{X) < q(Y). Осталось показать, что q удовлетворяет условию (R3). Рассмотрим подмножества X,Y се. Поскольку г удовлетворяет условию (R3), мы имеем q(XUY) + q(XC\Y) = = \Х U У | + \Х П Y\ + г(? \ (X U У)) + г (Е \ (X П 7)) - 2г(?) = = |Х| + |У| + г((?\Х)п(Е\У)) + г((?\Х)и(?\У))-2г(Е)< <|X| + |y| + r(?\X) + r(?\y)-2r(?)=q(X)+q(y). П
368 Глава 13. Матроиды Ранее мы ввели для каждого графа G его циклический матроид Jt{G). У данного матроида, конечно же, есть двойственный. Для планарного графа G с фиксированным вложением также определен планарно двойственный граф G* (который, вообще говоря, зависит от выбора вложения для G). Интересно отметить, что эти понятия двойственности оказываются согласованными. Теорема 13.16. Пусть G — связный планарный граф с произвольным фиксированным плоским вложением, a G* — его планарно двойственный граф. Тогда (Говоря формально, данные матроиды изоморфны, т. е. совпадают с точностью до переименования элементов носителя.) Доказательство. Для подмножества Т с?(G) обозначим Г* := {е*:ееE(G)\T}, где е* —ребро, двойственное к е. Нам нужно доказать следующий факт. Утверждение. Подмножество Т является множеством ребер остовного дерева в G, если и только если Г* является множеством ребер остовного дерева в G*. ——¦—* Поскольку (G*)* = G (по утверждению 2.42) и (Г*) = Г, достаточно доказать импликацию в одну сторону. Итак, пусть Г с Е (G), где Г* — множество ребер остовного дерева в G*. Граф (V(G), Г) должен быть связным, поскольку иначе его связная компонента будет задавать разрез, двойственное множество к которому содержит цикл в Г* (теорема 2.43). С другой стороны, если (V(G), Т) содержит цикл, то двойственное множество ребер содержит разрез и, значит, граф (V(G*), Г*) не является связным. Таким образом, (V(G), Г) действительно является остовным деревом в G. ? Из доказанного следует, что если граф G является планарным, то (^(G))* будет графическим матроидом. Если же для произвольного графа G матроид {M[G)Y является графическим, скажем (^f(G))* = Jt{G'}, то очевидно, что G' будет абстрактно двойственным графом для G. По упражнению 39 из гл. 2 обратное утверждение также имеет место: граф G является планарным, если и только если он имеет абстрактно двойственный (Уитни [32]). Отсюда вытекает, что матроид (^(G))* является графическим, если и только если граф G планарен. Заметим, что из теоремы 13.16 немедленно следует формула Эйлера (теорема 2.32). Действительно, рассмотрим связный планарный граф G с выбранным плоским вложением, и пусть M{G) —циклический матроид для G. По теореме 13.15(6) справедливо равенство r(E(G)) + r*(E(G)) = |?(G)|. Поскольку r(E(G)) = |V(G)| — 1 (данный ранг равен числу ребер в остовном дереве) и r*(E(G)) = |V(G*)| — 1 (по теореме 13.16), заключаем, что число граней графа G равно |V(G*)| = |?(G)| — |V(G)| + 2, как и утверждает формула Эйлера. (Впрочем, данный способ рассуждения не является полностью корректным, поскольку мы использовали формулу Эйлера при доказательстве утверждения 2.42, которое, в свою очередь, было использовано в нашем доказательстве теоремы 13.16.) Двойственность в системах независимости имеет несколько интересных приложений к полиэдральной комбинаторике. Система множеств (Е, &) назы-
§13.3. Двойственность 369 вается клаттером (clutter), если X <fi Y для всех X,Y €&. Для системы (Е, &), образующей клаттер, определим блокирующий клаттер следующим образом: BL{E, &) := (Е, {X с Е: X П Y ф 0 для всех Уб^ причем X минимально по включению среди множеств с таким свойством}). Для заданной системы независимости (Е, &) и ей двойственной (Е, &*) пусть ^ и ^* — семейства их баз, а ^ и *#* — семейства циклов соответственно. (Двумя указанными способами можно получить всякий клаттер, за исключением & = 0 и & = {0}.) Из определений немедленно следует, что (Е, &&*) = BL{E, <%) и (Е, <#*) = BL{E, &). С учетом утверждения 13.14 отсюда вытекает равенство BL(BL{E,&)) = (Е,&), справедливое для любого клаттера (Е,^"). Приведем несколько примеров клаттеров (Е, J*") и их блокирующих клаттеров (Е, ^"О- Во всех указанных случаях Е = E(G) для некоторого графа G: 1) 9* — семейство остовных деревьев, а &1 — семейство минимальных разрезов; 2) & — семейство ветвлений с корнем г,а^ — семейство минимальных г-раз- резов; 3) & — семейство s-t-путей, а &' — семейство минимальных разрезов, разделяющих 5 и t (в этом примере можно рассматривать как ориентированные, так и неориентированные графы); 4) 9 — семейство циклов в неориентированном графе, а &1 — семейство дополнений к максимальным лесам; 5) & — семейство циклов в оргафе, а 9' — семейство минимальных по включению подмножеств ребер, удаление которых делает граф ациклическим (по-английски такое подмножество называются feedback edge set); 6) 9 — семейство минимальных по включению множеств ребер, стягивание которых делает граф сильно связным, а &1 — семейство минимальных ориентированных разрезов; 7) & — семейство минимальных по включению Г-соединений, а,?' — семейство минимальных по включению Г-разрезов. В каждом из указанных случаев несложно проверить заявленное свойство взаимного блокирования: для случаев 1 и 2 оно прямо следует из теорем 2.4 и 2.5, для случаев 3, 4 и 5 оно тривиально, для случая 6 оно вытекает из следствия 2.7, а для случая 7 — из утверждения 12.7. В отдельных случаях блокирующий клаттер дает возможность охарактеризовать задачу минимизации для системы независимости при неотрицательной функции стоимости. Определение 13.17. Пусть (Е, &) — клаттер, (Е, &') — его блокирующий клаттер, а Р — выпуклая оболочка характеристических векторов элементов семейства &. Скажем, что (Е, &) обладает свойством максимального потока и минимального разреза (или MFMC-свойством, от английского Max-Flow-Min-Cut), если справедливо равенство {х + у:х<ЕР, ye R* } = | я: е R* : ^ хе > 1 для всех В е &'\.
370 Глава 13. Матроиды Пары клаттеров с данным свойством приведены в примерах 2 и 7 из нашего списка (см. теоремы 6.15 и 12.18), а также 3 и 6 (см. упражнение 11). Следующая теорема устанавливает связь между формулировкой задачи в терминах покрытия упаковки и формулировкой в терминах покрытия двойственной задачи, а также позволяет вывести одни минимаксные соотношения из других. Теорема 13.18 (Фалкерсон [19], Леман [27]). Пусть (Е, &) — клаттер, а (Е, &f) — его блокирующий клаттер. Тогда следующие утверждения эквивалентны: (а) (Е, &) обладает MFMC-свойством; (б) (Е, J*"') обладает MFMC-свойством; (в) для любой функции с: Е —> R+ справедливо равенство min{c(A): Ае&} = max] Ну: у еRf', ^Г ув < с(е) для всехе еЕ[. В€^:ееВ Доказательство. Поскольку BL(E, J^) = BL{BL(E, &)) = (Е, ^), достаточно доказать импликации (а)=>(в)=>(б). Импликация (б)=>(а) тогда будет доказана, если поменять местами ^и,?'. Докажем импликацию (а)=>(в). Согласно следствию 3.33 для любой функции с: Е —> R+ мы имеем равенства min{c(A): А € &} = min{cx: х е Р} = min{c(x + у): х е Р, у е R*}, где Р — выпуклая оболочка множества характеристических векторов элементов семейства &. Из этого равенства, MFMC-свойства и теоремы о линейной двойственности 3.20 мы получаем утверждение (в). Докажем импликацию (в)=>(б). Обозначим через Р' выпуклую оболочку множества характеристических векторов элементов семейства &'. Нам нужно показать, что справедливо равенство {х + у: х е Р' у е R*} = | х е R*: ^Гхе>1 для всех А е & \. Поскольку вложение «с» тривиально следует из определения блокирующего клаттера, докажем обратное вложение. Итак, пусть задан такой вектор с е R^, что 2е€А се > 1 для всех А е ^. По свойству (в) имеем 1 < min{c(A) :AG«f} = max \ Ну: у е R^', У] ув < с(е) для всех е е Е [. ^ Ве&'.ееВ ' Пусть тогда у е R^ —такой вектор, что Ну = 1 и ^Ве&': ееВ Ув ^ с(е) ДОЯ всех е е Е. Тогда равенства хе := 2 в €«?•': ееВ Ув (е ? Е) задают вектор х е Р\ для которого х < с, следовательно, cefx + yixGP'yGR^}. ? В качестве примера из доказанного утверждения легко получается теорема о максимальном потоке и минимальном разрезе 8.6. Действительно, пусть задана сеть (G,u,s,t). Согласно упражнению 1 из гл. 7 минимальная длина s-t-пути в (G, и) равна максимальному числу таких s-t-разрезов, что всякое ребро е
§ 13.4. Жадный алгоритм 371 содержится не более чем в и{е) из них. Следовательно, клаттер s-t-путей (см. пример 3 в приведенном выше списке) обладает MFMC-свойством, а значит, этим свойством обладает и двойственный к нему клаттер. Применяя теперь свойство (в) к клаттеру минимальных s-t-разрезов, получим в точности теорему о максимальном потоке и минимальном разрезе. Заметим, однако, что теорема 13.18 не гарантирует наличие целого вектора, в котором достигается максимум задачи (в), даже при условии целочисленно- сти с. Пример клаттера Г-соединений при G = Кл и Г = V(G) показывает, что в общем случае такого вектора может и не быть. § 13.4. Жадный алгоритм Пусть, как и ранее, (Е, J*") — система независимости, для которой задана функция с: Е —> R+. Рассмотрим задачу максимизации для (?, &, с) и сформулируем для нее два «жадных алгоритма». При этом можно считать все веса неотрицательными, поскольку элементы отрицательного веса не могут встречаться в оптимальном решении. Предположим далее, что система (Е, &) задана с помощью оракула. В первом из рассматриваемых алгоритмов мы будем использовать оракул независимости, т. е. оракул, который по заданному множеству F с Е выясняет, выполняется условие F е J*" или нет. Best-In Greedy (жадный алгоритм включения наилучших элементов) Вход: система независимости (Е, &), заданная с помощью оракула независимости; веса с: Е —> R+. Выход: множество F € &. (Т) Упорядочить элементы множества Е = {еъе2,...,еп} так, чтобы выполнялись неравенства с(ег) > с(е2) > ... ^ с(еп). (2) Присвоить F := 0. (3) For i := 1 to п do: If F U {ej ? & then присвоить F :=FU {et}. Для второго алгоритма нам потребуется более сложный оракул. По заданному подмножеству F QE этот оракул будет выяснять, содержится ли какая-либо база в F. Будем называть такой оракул оракулом надмножеств баз. Worst-Out Greedy (жадный алгоритм исключения наихудших элементов) Вход: система независимости (?, ^), заданная с помощью оракула независимости; веса с: Е -* R+. Выход: база F системы (?, &).
372 Глава 13. Матроиды (Т) Упорядочить элементы множества Е = {еъ е2,..., еп) так, чтобы выполнялись неравенства с(ех) < с(е2) < ... < с(еп). (2) Присвоить F := Е. (3) For i := 1 to п do: If F\{eJ содержит базу then присвоить F := F\{eJ. Перед тем как приступить к анализу этих алгоритмов, рассмотрим подробнее используемые ими оракулы. Возникает интересный вопрос, являются ли они полиномиально эквивалентными, т. е. можно ли симулировать работу одного из этих оракулов с помощью полиномиального алгоритма, использующего вызовы второго оракула. Представляется, что оракул независимости и оракул надмножеств баз не являются полиномиально эквивалентными. Действительно, рассмотрим систему независимости для TSP (см. пример 2 в списке из §13.1). Для заданного множества ребер несложно проверить (см. упражнение 14), является ли оно независимым, т. е. подмножеством гамильто- нового цикла. (Напомним, что речь идет о полном графе.) С другой стороны, проверка того, содержит ли заданное множество ребер гамильтонов цикл, — это сложная задача (она является А/Р-полной; см. теорему 15.25). Обратно, для системы независимости в задаче о кратчайшем пути (пример 3) легко выяснить, содержит ли заданное множество ребер s-t-путь. При этом неизвестно, можно ли проверить, независимо ли заданное множество (является ли оно подмножеством s-t-пути), за полиномиальное время (Корте и Монма [26] доказали А/Р-полноту этой задачи). Для случая матроидов данные оракулы являются полиномиально эквивалентными. В качестве другого примера пары эквивалентных оракулов укажем оракул ранга и оракул замыкания, возвращающие ранг и замыкание заданного подмножества Е соответственно (упражнение 17). Однако даже для матроидов другие естественные примеры оракулов не являются полиномиально эквивалентными. Например, оракул, возвращающий для заданного FQE минимальный размер зависимого подмножества F, сильнее, чем оракул независимости (Хаусман и Корте [23]). Аналогичным образом можно сформулировать жадные алгоритмы для задачи минимизации. Несложно видеть, что жадный алгоритм включения наилучших элементов для задачи максимизации в системе (Е, J*", с) соответствует жадному алгоритму исключения наихудших элементов для задачи минимизации в системе {Е, &*, с). Действительно, добавление элемента к F в первом из них отвечает удалению элемента из F во втором. Отметим также, что алгоритм Крас- кала (см. § 6.1) является жадным алгоритмом включения наилучших элементов для задачи минимизации в циклическом матроиде. В заключение данного параграфа мы приведем несколько результатов, касающихся качества решений, находимых жадными алгоритмами. Теорема 13.19 (Дженкинс [24], Корте и Хаусман [25]). Рассмотрим систему независимости (Е, &). Для заданной функции с: Е —> R+ обозначим через G[E, &,с) стоимость решения, находимого жадным, алгоритмом включения наилучших
§ 13.4. Жадный алгоритм 373 элементов для задачи максимизации, а через ОРТ(?, &, с) — стоимость оптимального решения. Тогда д(?;^)<0рт(?^с)<1 для всех с: Е —»R+. Существует такая функция стоимости, для которой данная оценка является точной. Доказательство. Пусть Е = {еъ е2,..., еп}, с: Е —> R+ и с(еа) > с(е2) > ... > с(еп). Обозначим через Gn решение, находимое жадным алгоритмом включения наилучших элементов (при указанном выше упорядочении элементов Е), а через Оп — оптимальное решение. Обозначим Е;- := {ег,..., е;}, G, :=GnПЕ;- и 0; :=Оп ПЕ;- О' = 0,..., п). Положим dn := с(еп) и dj := с(е;) — c(eJ+1) при j = 1,..., п — 1. Поскольку 0; е JF имеем |0;-| < г(Е;). Поскольку G, является базой для Ej3 справедливо неравенство Щ\> p(Ej). Используя данные неравенства, получаем п п п л c(Gn) = j](|G,| - Щ_г\) c(ej) = J] \Gj\ dj > ]TJ p№,) dj > q{E, &) J] r(E;) dj > n n > q(E, &) Y, \Oj\ dj = q{E, ^) J](|q,| - \0Hl\) c(e;) = q(B, ^) c(On). (13.1) Наконец, покажем, что данная нижняя оценка является точной. Выберем такое подмножество F с е и такие базы Въ В2 в F, что Положим ( 1 при е е F, с(е) := < [О при eeE\F и упорядочим еъ...,еп так, чтобы выполнялись условия с(ех) > с(е2) > ... > с(еп) и В2 = {еъ ..., e(Bi|}. Тогда G(E, ^, с) = |#il и ОРТ(Е, &, с) = |В2|, а значит, нижняя оценка достигается. ? В частном случае мы получаем так называемую теорему Эдмондса — Радо. Теорема 13.20 (Радо [30], Эдмондс [14]). Система независимости (Е,&) образует матроид, если и только если жадный алгоритм включения наилучших элементов находит оптимальное решение задачи максимизации для (?, &, с) при всех функциях стоимости с: Е —»R+. Доказательство. По теореме 13.19 мы имеем q{E, &) < 1, если и только если существует функция стоимости с: Е —> R+, для которой жадный алгоритм включения наилучших элементов не находит оптимального решения. По утверждению 13.7 неравенство q{E, &) < 1 справедливо, если и только если {Е, &) не является матроидом. ? Данный случай является одним из немногих, когда мы даем описание интересующей нас структуры в терминах ее алгоритмического поведения. Мы также можем получить полиэдральное описание.
374 Глава 13. Матроиды Теорема 13.21 (Эдмондс [13]). Пусть {Е, &) —матроид, а г: 2Е -> Z+ — его ранговая функция. Тогда политоп матроида {Е, &), т. е. выпуклая оболочка характеристических векторов всех элементов &, равен \ х € R?: х > О, ^ хе < г(Л) для всех А с Е У. Доказательство. Очевидно, данный политоп содержит характеристические векторы всех независимых множеств. Согласно следствию 3.32 достаточно показать, что все вершины данного политопа являются целыми. По теореме 5.13 данное утверждение эквивалентно тому, что задача max| сх: х>0, ^хе < г(Л) для всех А с Е [ (13.2) имеет целое оптимальное решение для любой функции с: Е —> R. Без ограничения общности считаем, что с(е) S* 0 для всех е, поскольку если е е Е и с(е) < 0, то для любого оптимального решения х задачи (13.2) будет выполняться условие хе = 0. Обозначим через х оптимальное решение задачи (13.2). Заменим в формуле (13.1) величину \Oj\ на 2ееЕ хе 0 = 0,..., и). Получим неравенство c(Gn) > > 2ее? с(е)*е- Итак, жадный алгоритм включения наилучших элементов строит подмножество, характеристический вектор которого также является оптимальным решением задачи (13.2). ? Применяя доказанное утверждение к графическому матроиду, мы получаем теорему 6.13. Как и в данном частном случае, в общей ситуации мы получаем тотальную двойственную целочисленность задачи. Обобщение этого результата будет доказано в § 14.2. Вспомним сделанное ранее замечание о соответствии между жадным алгоритмом включения наилучших элементов в задаче максимизации для {Е, &, с) и жадным алгоритмом исключения наихудших элементов в задаче минимизации для (Е, «^* с). Оно подсказывает, что у теоремы 13.19 должен быть следующий двойственный аналог. Теорема 13.22 (Корте и Монма [26]). Рассмотрим систему независимости [Е, &). Для заданной функции с: Е —> R+ обозначим через G{E, &, с) решение, находимое жадным алгоритмом исключения наихудших элементов в задаче минимизации. T0Zda 1 < G(g.*c) < mav lfl-P*(F) m ,. 1 < OPT(*,*c) < $g \F\-r*(F) (13'3) для всех с: E —> R+, где p* и г* —ранговые функции для двойственной системы независимости (Е,&*). Существует такой пример функции стоимости, при котором верхняя оценка становится точной. Доказательство. Будем использовать обозначения, введенные при доказательстве теоремы 13.19. По построению G, U (E\Ej) содержит базу множества Е, но (Gj U (?\Ej)) \ {е} не содержит базы множества Е для любого е е Gjt j = 1,..., п.
§ 13.4. Жадный алгоритм 375 Другими словами, Ej\Gj служит базой для Ej относительно системы (Е, <^*), так 4To|?,|-|G,|>p*GSj)- Поскольку Оп с E\(Ej\Oj) и Оп является базой, заключаем, что ЕДО,- независимо в (Е, ^*), а значит, Щ - \05\ < r*(Ej). Получаем Для получения верхней оценки достаточно проделать вычисление, аналогичное (13.1). Покажем теперь, что верхняя оценка точна. Для этого положим f 1 при е е Е, с(е) := < [О при e<=E\F, где Е СЕ — подмножество, на котором достигается максимум в неравенстве (13.3). Пусть Вг — база множества Е относительно системы (Е, J*"*), где \Вг\ = p*(F). Упорядочим элементы еъ ..., еп так, чтобы выполнялись условия с(еа) > с(е2) > > ...> c(ej и ?х = {еъ...,e|Bi|}. Тогда получим G{E, &,с) = \Р\-\Вг\ и OPT(E,J^,c) = |F| —r*(F). П При использовании жадного алгоритма ис- 2 2 М > 2 ключения наихудших элементов для задачи мак- • • • симизации или алгоритма включения наилучших рис 13 ^ элементов для задачи минимизации невозможно получить положительную нижнюю или конечную верхнюю оценку для дроби G(E, &, с)/ОРТ(Е, «^, с). Для доказательства достаточно рассмотреть задачу нахождения минимального по включению вершинного покрытия максимального веса или максимального по включению независимого множества минимального веса в простом графе, изображенном на рис. 13.1. Однако в случае матроидов не имеет значения, используем ли мы жадный алгоритм включения наилучших элементов или жадный алгоритм исключения наихудших элементов. Действительно, все базы имеют одинаковый размер, поэтому задача минимизации для (Е, «^, с) эквивалентна задаче максимизации для (Е, &, с'), где с'(е) := М — с(е) для всех ееЕиМ:=1 + тах{с(е): е € Е}. Отсюда, в частности, следует, что алгоритм Краскала (§ 6.1) строит оптимальные решения для задачи о минимальном остовном дереве. Из теоремы Эдмондса — Радо 13.20 также вытекает следующая характериза- ция оптимальных fc-элементных решений задачи максимизации. Теорема 13.23. Пусть (Е,&) —матроид, с: E^>R,keN иХе&, причем \Х\ = к. Тогда с{Х) = тах{с(У) :Уб^, |7| = к}, если и только если выполняются следующие два условия: (а) для всех таких у еЕ\Х, что X и {у} ф &, и всех хеС(Х, у) справедливо неравенство с(х) > с(у); (б) для всех таких у е Е\Х, что X U {у} € J*", и всех х € X справедливо неравенство с(х) > с(у).
376 Глава 13. Матроиды Доказательство. Необходимость очевидна: действительно, если одно из условий оказывается нарушенным для некоторых у и х, то fc-элементное множество X' := {X U {у}) \ {х} €. 9 имеет вес, больший, чем у X. Для доказательства достаточности положим 9' := {F е 9: \F\ < к} и с'(е) := := с{е) +М для всех е е Е, где М = тах{|с(е)|: е е Е}. Упорядочим множество Е = {еъ ..., еп} так, чтобы выполнялись неравенства c'(ei) > ... > с'(еп) и, кроме того, для всех таких i, что с'(е?) = с'(е{+Л) и ei+1 е X, выполнялось включение е{ е X (т. е. при равенстве весов элементы множества X должны идти первыми). Пусть X1 — решение, найденное жадным алгоритмом включения наилучших элементов, запущенным для (Е, 9\ с'). При этом считаем, что на шаге ® элементы были упорядочены, как указано выше. Поскольку (Е, &') образует матроид, по теореме Эдмондса — Радо 13.20 имеем с(Х') + кМ = с'(Х') = max{c'Q0: Y € 9'} = тах{с(У): Y е 9, \Y\ = к] + кМ. Для завершения доказательства покажем, что X = X'. Мы знаем, что \Х\ = к = |Х'|. Предположим, что X Ф Х\ и пусть е{ ^Х'\Х, где i минимально. Тогда X П {еъ ..., е(_г} =Х'п {еъ ..., еи}. Теперь если Xu{et} ?9, то из п. (а) следует, что С(Х, et) с X', — противоречие. Если же XU{ej е<^, то из п. (б) следует, что ХСХ'а это также невозможно. ? Мы будем использовать доказанную теорему в § 13.7. Ее частный случай, когда матроид (Е, 9) графический и к = г(Е), является частью утверждения теоремы 6.3. § 13.5. Пересечение матроидов Определение 13.24. Для заданных систем независимости (Е, &г) и (Е, 92) определим их пересечение как (Е, 9г П J^2)- Пересечение произвольного конечного числа систем независимости определяется аналогично. Ясно, что результат снова оказывается системой независимости. Утверждение 13.25. Любая система независимости (Е, 9) представима в виде пересечения конечного числа матроидов. Доказательство. Согласно теореме 13.12 каждый цикл С в (Е, 9) определяет матроид (Е, {F с Е: C\F ф 0}) (этот факт также легко следует из определения). Пересечение всех таких матроидов и дает систему (Е, 9). ? Поскольку пересечение матроидов в общем случае не является матроидом, не следует надеяться найти оптимальное независимое (относительно всех пересекаемых систем) множество с помощью жадного алгоритма. Однако из следующего результата вместе с теоремой 13.19 вытекает существование оценки точности для решения, находимого жадным алгоритмом включения наилучших элементов.
§ 13.5. Пересечение матроидов 377 Утверждение 13.26. Если система (Е,&) представляет собой пересечение р матроидов, то q{E,&) > 1/р. Доказательство. По теореме 13.12(6) для любых X е & и е е Е множество Хи{е] содержит не более р циклов. Доказываемое утверждение следует теперь из теоремы 13.8. ? Особый интерес представляют системы независимости, задаваемые пересечением двух матроидов. Важнейшим примером служит задача о паросочетаниях в двудольном графе G = (Л U ?,?). Если обозначить & := {F с Е: F образует паросочетание в G}, то {Е, &) является пересечением двух матроидов. А именно, положим &i := {F с Е: |5F(x)| < 1 для всех х е А}, &2 := {F с Е: \5F(x)\ < 1 для всех х е В}. Согласно утверждению 13.4(г) системы [Е, &г), {Е, <^2) будут матроидами. Очевидно, 9 = &х П 9г. В качестве второго примера рассмотрим систему независимости, состоящую из всех ветвлений в орграфе G (пример 8 из списка, приведенного в начале §13.1). Первый матроид состоит из всевозможных подмножеств ребер, для которых всякая вершина имеет не более одного входящего ребра (см. утверждение 13.4(д)), а второй матроид является циклическим матроидом M{G) для неориентированного графа, лежащего в основе G. Перейдем теперь к описанию алгоритма Эдмондса, решающего следующую задачу. Matroid Intersection (задача пересечения матроидов) Дано: два матроида (Е, &г), (?, <^2)> заданные оракулами независимости. I Надо: найти такое множество F € ^ П &г, что размер |F| максимален. Начнем изложение со следующей леммы. Напомним, что для множества Хе^ и элемента esE через С{Х,е) обозначается цикл в X и {е} (как мы знаем, он определен однозначно), если X U {е} ф &, и С{Х, е) = 0в противном случае. Лемма 13.27 (Франк [17]). Рассмотрим матроид (Е, &). Пусть Х^^,и пусть x1,...,xs(=Xuy1,...,ys(?X, причем (а) xkeC(X,yk)npuk = l,...,s; (б) Xj <? С{Х, ук) npuKj <k<s. Тогда (X\{xl,...,xs})u{yl,...,ys}G&. Доказательство. Положим Хг := {X\ {хъ ..., xr}) и {уъ ..., уг}. Покажем, используя индукцию, что XrG& для всех г. При г = 0 данное утверждение тривиально. Предположим, что Хг_г е & для некоторого г € {1,..., 5}. Если Хг_г U {yr} е &, то немедленно получаем Xr е &. Иначе Хг_г и {уг} содержит единственный цикл С
378 Глава 13. Матроиды Е\Х Рис. 13.2 (по теореме 13.12(6)). Поскольку С(Х,уг) с хг_г и {уг} (по условию (б)), получаем С = С(Х,уг). Но тогда по условию (а) имеем xr е С(Х,уг) = С, так что Xr = (Xr_1u{yr})\{xr}e& П Идея, лежащая в основе алгоритма Эдмондса пересечения матроидов, состоит в следующем. Вначале положим X = 0 и будем расширять множество X по одному элементу на каждой итерации. Поскольку в общем случае может не найтись такого элемента е, что X и {е} е &г П &2) будем искать «чередующиеся пути» (alternating paths). Для упрощения описания удобно ввести вспомогательный граф. Будем обозначать фундаментальные циклы вида С(Х,е) в (Е, &t) через Q(X,e) (i = l,2). Фиксируем текущее множество Хе^П^и определим вспомогательный орграф Gx следующим образом: {1)'={(х,у):уеЕ\Х,хеС1(Х,у)\{у}}} = {(у,х):уеЕ\Х,хеС2(Х,у)\{у}}, Ах Л2) лх = (E,A?UA?). Положим также Sx~{y^E\X:X^{y}^^}, Tx:={yeE\X:XU{y}e&2} (см. рис. 13.2) и найдем кратчайший путь из Sx в Тх. Данный путь позволит нам увеличить множество X. (Если Sx П 7^ ф 0, то возникающий путь имеет нулевую длину, так что X можно расширить элементом из Sx П 7^.) Лемма 13.28. Пусть Хб^П&2. Рассмотрим последовательность вершин у0, хъ Уъ • • • > xs> ys кратчайшего y0-ys-nymu в Gx (идущих в указанном порядке), где y0eSxuys<=Tx.TozdaX'~(Xu{y0,...,ys})\{x1,...,xs}<=&1n&2.
§ 13.5. Пересечение матроидов 379 Е\Х Рис. 13.3 Доказательство. Покажем вначале, что X U {у0}, хъ ..., xs и уъ ..., ys удовлетворяют условиям леммы 13.27 относительно &г. Заметим, что X и {у0} е &ъ поскольку у0 е Sx. Условие (а) выполнено, так как (х,, yf) е А% для всех j, а условие (б) следует из того, что рассматриваемый путь нельзя «сократить». Отсюда следует, что X' е ^. Во-вторых, покажем, что XL) {ys}, xs, х5_ъ ..., хг и у8_ъ ..., уъ у0 удовлетворяют условиям леммы 13.27 относительно &2. Заметим, что XU {ys} ?&2> поскольку ys е Тх. Условие (а) выполнено, поскольку (35-1, *,) ^Ах для всех ;, а условие (б) выполнено, так как иначе путь можно бьшо бы сократить, как и выше. Итак, X' € 9г. ? Докажем теперь, что если в Gx не существует Sx-7^-nyTH, то множество X уже имеет максимальный размер. Нам понадобится следующий простой факт. Утверждение 13.29. Рассмотрим два матроида [Е, &г) и [Е, &2) с ранговыми функциями ггиг2. Тогда для любого множества F е «^ П &2 и любого подмножества Q с Е справедливо неравенство \F\ < ^(Q) + r2(E\Q). Доказательство. Из того, что F П Q е &ъ следует, что |F n Q| < fi(Q). Аналогично из условия F\Qg«?2 следует, что |F\Q| < r2(E\Q). Складывая данные неравенства, получаем требуемое утверждение. ? Лемма 13.30. Множество Хе J^n J^ имеет максимальный размер, если и только если в графе Gx не существует Sx-Tx-nymu. Доказательство. Если в Gx есть Я^-Т^-пути, то среди таковых можно выбрать кратчайший. Применим лемму 13.28 и получим множество X' е. &г П&2 большего размера. Иначе пусть R — множество вершин, достижимых из Sx в Gx (см. рис. 13.3). Имеем R П Тх = 0. Пусть гг и г2 — ранговые функции для J^ и &2 соответственно.
380 Глава 13. Матроиды Докажем, что r2(R) = \Х П R\. Предположим противное, тогда существует такой элемент у е R\X, что (X ПR) и {у} е &2. Поскольку X и {у} ф &2 (с учетом условия у ф Тх), цикл С2(Х,у) должен содержать элемент х G X\R. Но тогда условие (у, х) е Ах означает, что существует ребро, выходящее из R. Это противоречит определению множества R. Докажем теперь, что гг(Е\К) = \X\R\. Снова предположим противное, тогда существует элемент у е (E\R)\X, для которого (X\R) и {у} е &г. Поскольку X и {у} Ф &\ (с учетом условия у ^ Sx), цикл Сг(Х,у) должен содержать элемент х е X ПК. Но тогда условие (х,у) е А% означает, что существует ребро, выходящее из R. Это противоречит определению множества R. Из доказанного вытекает, что \Х\ = г2(Я) + r1(E\R). В силу утверждения 13.29 отсюда следует оптимальность найденного множества. ? Из представленного выше доказательства также вытекает следующее минимаксное равенство. Теорема 13.31 (Эдмондс [13]). Пусть (Е, &г) и (Е, &2) — два матроида с ранговыми функциями ггиг2. Тогда тах{|Х| :Хб^П^2} = min{r1(Q) + r2(E\Q): Q с ?}. П Приведем теперь подробное описание алгоритма Эдмондса. Edmonds Matroid Intersection (алгоритм Эдмондса пересечения матроидов) Вход: два матроида (Е, &{) и (?, &2), заданные оракулами независимости. Bbtxod: множество X € &г п «^2* имеющее максимальный размер. (Т) Положить X := 0. (2) For all у G Е \X, i е {1,2} do: Построить Q(X, у) := {х € X U {у}: X U {у} ? ^, {X U {у}) \ {*} € ^}. (3) Построить Sx, 7^ и Gx, как указано выше. (4) Применить BFS и найти кратчайший Sx-Tx-iryib Р в Gx. If такого не существует then stop. (5) Положить X := X Л V(P), goto (2). Теорема 13.32. Алгоритм Эдмондса решает задачу пересечения матроидов за время О(|Е|30), где в —максимальная сложность запроса куказанным оракулам независимости. Доказательство. Корректность следует из лемм 13.28 и 13.30. Шаги (2) и (3) выполняются за время О(|Е|20), а шаг 0 — за время 0(|Е|2). Поскольку всего возможно не более |?| наращиваний, общая сложность составляет О(|Е|30). ?
§ 13.6. Разбиение матроидов 381 Более быстрые алгоритмы пересечения матроидов приведены в работах Каннингема [12], а также Габоу и Сюй [21]. Отметим, что задача нахождения максимального по размеру множества в пересечении трех матроидов является NP-трудной; см. упражнение 17(в) из гл. 15. § 13.6. Разбиение матроидов Вместо пересечения матроидов можно рассматривать их объединение, определяемое следующим образом. Определение 13.33. Пусть (Е, &г),..., (Е, &к) — к матроидов. Будем говорить, что множество X с. Е допускает разбиение, если существует такое разбиение X = Хг U... U Хк, что Xt G J*", при i = 1,..., fc. Пусть & — семейство всех подмножеств Е, допускающих разбиение. Тогда система (Е, &) называется объединением или суммой матроидов (Е, &г),..., (Е, &к). Мы докажем, что объединение матроидов снова является матроидом. Более того, с помощью техники пересечения матроидов мы сможем решить следующую задачу. Matroid Partition (задача разбиения матроидов) Дано: Надо: число к € N, к матроидов независимости. (S,<^i),. .,№,^fc), заданных оракулами найти допускающее разбиение множество X с Е максимального размера. Основная теорема теории матроидных разбиений такова. Теорема 13.34 (Нэш-Вильямс [28]). Пусть (Е, &{),..., (Е, &к) —матроиды с ранговыми функциями гг,..., rk, и пусть (Е, &) — их объединение. Тогда (Е, &) является матроидом, ранговая функция г которого определяется равенством г(Х)=тт^\Х\А\ + ^г{(А)У Доказательство. Система (Е, &), очевидно, является системой независимости. Пусть X с Е. Докажем вначале, что г(Х)=тт(\Х\А\ + ^г№)). Для любого допускающего разбиение множества Y с х (т. е. Y = Y1 и... U Yk, где Yt € &{ при i = 1,..., к) и любого множества А с х мы имеем к к \Г\ = \Г\А\ + \ГПА\<\Х\А\ + ^№пА\<\Х\А\+^П{А), i=i i=i
382 Глава 13. Матроиды следовательно, г(Х)<тт(\Х\А\ + ^г№)). - ^ i=i J С другой стороны, положим X' := X х {1,...,к}. Зададим два матроида на множестве X1. Для Q с X' и i е {1,..., к} обозначим Qi := {е е X: (е, i) е Q}. Пусть ^1:={QCX/: QiG^i для всех i = l,...,k}HJt2:={QCX': QinQj=0 для всех i^j}. Очевидно, системы {Х\ J{) и {Xfy J2) являются матроидами, а их ранговые функции задаются равенствами s^Q) := J*=1 r^Qi) и s2(Q) := | (J*=1 Qj\, где Q с X'. Семейство всех подмножеств множества X, допускающих разбиение, можно описать следующим образом: {ас.Х: существует такая функция /: A—>{l,...,fc}, что {(е,/(е)): eGAjG^n^}. Итак, допускающее разбиение подмножество максимального размера является общим независимым подмножеством для Ух и J2i имеющим максимальный размер. По теореме 13.31 этот максимальный размер равен min{51(Q)+52(X,\Q):QCX,b Если минимум достигается на подмножестве Q с х\ то для A:=Q1C)...nQk мы имеем к к к r(X)=51(Q)+s2(X,\Q)=J]n(Qi) + \Х\Г\Ъ \>^ПШ + \Х\А\. i=i i=i i=i Таким образом, мы указали множество А с X, для которого к ^П(А) + \Х\А\<г(Х). 1=1 Получив формулу, выражающую значения ранговой функции г, покажем теперь, что эта функция субмодулярна. По теореме 13.10 отсюда будет следовать, что система (Е, &) образует матроид. Для доказательства субмодулярности рассмотрим множества X, У с ? и выберем такие подмножества А с X, В с у, что к к г(Х) = |*\А|+]Гг?(А) и г(?) = \?\В\+^П(В). i=i i=i Тогда к г(Х) + г(П = |Х\Л| + |Г\Б|+5](^(А) + г,(В))> |(Xur)\(AUB)| + i=i к + \(XnY)\(AnB)\ + ^(ri(AUB) + ri(AnB))>r(XUY) + r(XnY). П i=i Построение, использованное в приведенном выше доказательстве (Эдмондс [13]), позволяет свести задачу разбиения матроидов к задаче пересечения мат-
§ 13.7. Взвешенное пересечение матроидов 383 роидов. Сведение в обратную сторону также возможно (см. упражнение 21), так что эти задачи могут считаться эквивалентными. Отметим, что мы можем найти за полиномиальное время максимальное независимое множество в объединении произвольного числа матроидов, при том что задача пересечения более чем двух матроидов уже не поддается эффективному решению. § 13.7. Взвешенное пересечение матроидов Рассмотрим теперь более общий, взвешенный вариант задачи о пересечении матроидов. Weighted Matroid Intersection (задача о взвешенном пересечении Дано: Надо: два матроида (?, &{) и (Е, &2) веса с: Е—> R. найти множество X € «^ П ^2у матроидов) заданные оракулами независимости; вес которого с(Х) максимален. Для данной задачи мы опишем прямо-двойственный алгоритм, принадлежащий Франку [17]. Он обобщает алгоритм Эдмондса пересечения матроидов. Как и ранее, мы начнем сХ :=Xo = 0,a затем будем увеличивать размер множества на каждом шаге на единицу. Действуя таким образом, мы получим множества Х0,..., Хт е &х п <^2> гДе \Хк\ = к (к = О,..., т) и m = max{|X| ilG^n ^2}. Каждое множество Хк будет оптимальным, т. е. с{Хк) = тах{с(Х): X е ^ П 9Ъ \Х\ = к}. (13.4) Таким образом, в конце нам достаточно будет лишь выбрать оптимальное множество среди Х0,..., Хт. Основная идея алгоритма состоит в разделении весов. В любой момент времени мы будем поддерживать две такие функции сг, с2: Е —> R, что сг (е) + с2 (е)=с(е) для всех е е Е. Для каждого к будет поддерживаться следующее свойство: Ci(Xk) = max{q(X): X е 9Ь \Х\ = к} (i = 1,2). (13.5) Из него, очевидно, вытекает условие (13.4). Для получения условия (13.5) мы воспользуемся критерием оптимальности из теоремы 13.23. Вместо Gx, БхиТх будем рассматривать лишь подграф G и подмножества S, Т. Weighted Matroid Intersection (алгоритм взвешенного пересечения матроидов) Вход: два матроида (?, &х) и (Е, &2)> заданные оракулами независимости; веса с: Е —¦ R. Выход: множество Х€^П&ъ имеющее максимальный вес.
384 Глава 13. Матроиды Ф ® 0 ® Присвоить fc := 0 и Х0 := 0. Присвоить (^(е) := с(е) и с2(е) := 0 для всех ееЕ. For all у е Е\Хк, i е {1,2} do: nocTpoHTbQ(Xfc,y):={x€XkU{y}:XfcU{y}^^i, (XfcU{y})\{x}€^}. Найти множества Л(2) s г Найти значения = {(x,y):yefi\Aik,jc€C1(Jfk,y)\{y}}, = {(y,x):yeE\Xfc, xeC2(Xfc,y)\{y}}, = {уеЕ\Хк:Хки{у}е&1}, = {ye?\Xfc:XfcU{y}ejr2}. m2 S f G = max{c1(y):yeS}, = тах{с2(у):уеГ}, = {yeS:c1(y) = m1}, = {yeT:c2(y) = m2b = {(Jc,y)eA«:c1W = c1(y)}, = {(уд)бАЙ:с2М = с2(у)}) = (E,A(1)UA(2)). Применить BFS и найти множество R вершин, достижимых из S в G. If ЯП Г ф0 then: Найти S-Г-путь Р в G с минимальным числом ребер, присвоить *k+i := хк A V(P) и fc := fc +1. Goto®. © Вычислить *! ^minfCiW-qfy): (х,у) €6"+(1)(R)}, е2 := min{c2(x) -с2(у): (у,х) е 5+2)(R)}, е3 := minfm! -сг(у): у е S\R}, е4 := min{m2 - с2(у): у G Г П R}, е := minta, е2, е3> е4} (считая при этом, что min0 := <»). (8) If е < оо then: Присвоить CiCx) := (^(х) — в и с2(х) := с2(х) + е для всех х е R. Goto®. If е = оо then: Выбрать среди Х0, Хъ..., Хк множество X с максимальным весом. Stop.
§ 13.7. Взвешенное пересечение матроидов 385 Более ранние варианты данного алгоритма содержатся в работах Эдмондса [15] и Лолера [6]. Для доказательства корректности нам понадобится следующее обобщение леммы 13.27. Лемма 13.35 (Франк [17]). Пусть заданы матроид (Е, &), веса с: Е —> R и множество X е &. Рассмотрим такие элементы хъ... ,хг^Х и уъ... ,ухф.Х, что (а) Xj € С(Х,yj) и c(Xj) = c(yj) npuj = l,...,I; (б) xt ? C(X, y^ или c&i) > c(jj) при 1 < i < j < Z u c(xt) > cty) при К j < i < I. Тогда (X\{xl9...,xl})u{y1,...,yl}e& Доказательство. Воспользуемся, как и ранее, индукцией по I. Случай I = 1 тривиален в силу свойства (а). Положим \х = min[=1 с(х{), и пусть h — индекс, на котором достигается минимум. Пусть X' := (X\{xh}) U {yh}. По свойству (а) имеем X' е &. Покажем, что С(Х' у-) = С{Х, yj) для всех j ф h; тогда свойства (а) и (б) будут также выполнены для множества X' и оставшихся индексов {1,..., 1} \ {ft}, так что утверждение будет доказано по индукции. Пусть j Ф ft. Предположим, что С{Х\ у-) ф С(Х, у;). Тогда xh е С{Х, у,). Но из свойств (а) и (б) следует, что /i = c(xh) > с(у;) = с(дс;) > //, — противоречие. ? Теорема 13.36 (Франк [17]). Алгоритм Weighted Matroid Intersection решает задачу о взвешенном пересечении матроидов за время 0(|Е|4 + |Е|30), где в — максимальная сложность запросов к оракулам независимости. Доказательство. Пусть т — конечное значение к (тот факт, что алгоритм всегда заканчивает работу, будет показан позднее). В процессе работы алгоритм строит множества Х0,ХЪ ...,Хт. В момент завершения работы справедливы условия ег = е2 = е3 = еЛ = оо? так что Т не достижимо из S в графе [Е, Л(1) U А(2)). Тогда по лемме 13.30 получаем m = \Xm\ = max{|X| ile^fl^}. Для доказательства корректности покажем, что на любой итерации справедливы условия Хк € «^ П &2 и (13.5). Поскольку мы поддерживаем инвариант с = с1 + с2, отсюда вытекает равенство с(Хк) = тах{с(Х): X G ^ П &2, №\ = ^} для всех к = 0,..., т, и, значит, алгоритм работает корректно. Вначале 1с = О)Хк = 0б<?1П^2и условие (13.5) тривиально. Докажем, что эти свойства сохраняются на протяжении всех итераций алгоритма. Сначала заметим, что из условия (13.5) и теоремы 13.23(a) следует, что 1) сг(х) > сг(у) для всех (х,у) е А(1) \ А(1); 2) с2(х) > с2(у) для всех (у, х) е А(2) \ А(2). Рассмотрим вначале итерацию, при которой R П Т Ф 0. Тогда на шаге (5) мы находим путь Р, состоящий, скажем, из вершин у0, хъ уъ ..., хь уг (идущих в указанном порядке). Аналогично тому, как это делалось в доказательстве леммы 13.28, покажем, что (Е, &г), X U {yob хъ ..., хг и уъ ..., yz удовлетворяют условиям леммы 13.35. Действительно, условие X и {у0} е «^ следует из того, что у0 е S. Условие (а) леммы 13.35 следует из того, что (л:;, у-) е А^ при j = 1,...,/, а условие (б) следует из неравенства 1 и того факта, что Р служит кратчайшим путем в G. Значит, Хк+1 е &г.
386 Глава 13. Матроиды Аналогично (?, j^2), %к и (УгЬ хь • • • > х\ и У1-ъ • • • > Уо удовлетворяют условиям леммы 13.35. Здесь условие Xfc и {yj G <^2 следует из того, что уг G Т. Условие (а) леммы 13.35 вытекает из того, что у/_ъ Xj) G Л(2) при j = 1,..., I, а условие (б) следует из неравенства 2 и того факта, что Р — кратчайший путь в G. Тем самым, Итак, мы показали, что Хк+1 е &г П <-^2. Чтобы доказать, что -Xjt+i удовлетворяет условию (13.5), воспользуемся теоремой 13.23. По определению G имеем сг (Хк+1) = сг (Хк) + сг (у0) и с2№c+i) = с2(Хк)+с2 (ys). Поскольку Хк удовлетворяет соотношению (13.5), условия (а) и (б) из теоремы 13.23 должны выполняться относительно Хк и каждого из матроидов 9\ и ^2. По определению S и у0 GS оба условия продолжают выполняться для Хк и {у0} и ^. Следовательно, с^Х^) = сх(Хк и {у0}) = тах^ОО :Y е&ъ \Y\ = k + 1}. Более того, по определению Г и yz е Г условия (а) и (б) из теоремы 13.23 продолжают выполняться для Хк U {yj и ^2, следовательно, c2(Xfc+1) = с2{Хк U {yz}) = = тах{с2(У): Y G <^2, |7| = fc + 1}. Другими словами, равенство (13.5) действительно выполнено для Хк+1. Рассмотрим теперь итерацию, при которой RDT = 0, так что функции сх и с2 изменяются на шаге (8). Покажем вначале, что е > 0. Поскольку по определению R мы имеем 5^ (Я) = 0, из неравенств 1 и 2 немедленно следует, что ег > 0 и е2 > 0. Неравенство г^ > сх (у) выполняется при всех у €S. Если, кроме того, уфЯ, то у ^ S, так что mx > сх(у). Следовательно, е3 > 0. Аналогично е4 > 0 (с учетом условия Г П R = 0). Итак, ? > 0. Теперь мы можем доказать, что шаг (8) сохраняет справедливость условия (13.5). Пусть с^ — обновленная функция съ т. е. ( Сл {х) — е, если х G К, с'(х) := J 1 [сх(х), если х ?R. Покажем, что Хк и с'х удовлетворяют условиям теоремы 13.23 относительно J^. Докажем свойство (а). Рассмотрим элементы у еЕ\Хких<Е Сг(Хк,у)\{у}. Предположим, что с^(х) < (^(у). Поскольку сг(х) > С\{у) ие>0, получаем, что л: g R и у ^ R. Поскольку также (х,у) G А^, получаем е < ^ < сг(х) — сг(у) = = (с7х (х) + е) — с[ (у) — противоречие. Докажем теперь свойство (б). Пусть х GХк и у G Е\Хк, причем Хк U {у} G ^. Предположим теперь, что ^(у) > с^(х). Поскольку сг(у) < Ш! < сг(х), ползаем, что xgR и у ^R. С учетом условия у GS имеем е < е3 ^гп1—сг(<у) <са(*) —сг(у) = = {с\ {х) + е) — с'г (у) — противоречие. Рассмотрим теперь модифицированную функцию с2 и обозначим ее через с2, т.е. {Со (л:) + е, если x6R, с2(лг), еслилг^К. Покажем, что Xfc и с2 удовлетворяют условиям теоремы 13.23 относительно ^2.
Упражнения 387 Действуя аналогично, для доказательства свойства (а) рассмотрим элементы у еЕ\Хк ихеС2(Хк,у)\{у}. Предположим, что с'2(х) <с'2{у). Поскольку с2(х) > > с2(у), получаем, что у е R и х ? R. Поскольку также (у, х) € А^2\ получаем е < е2 < с2[х) — с2{у) = с'2(х) — (с'2{у) — е) — противоречие. Докажем свойство (б). Пусть х е Хк и у е Е\Хк, причем Хк и {у} е &2. Предположим теперь, что с'2(у) > с'2{х). Поскольку с2(у) < т2 < с2(х), получаем, что у е R и х ^ R. С учетом свойства у € Г имеем ? < г4 < т2 — с2(у) < с2(х) — с2(у) = = c^Qc) — (с'2{у) — е) — противоречие. Итак, мы показали, что свойство (13.5) сохраняется при выполнении шагов (8), и, значит, алгоритм работает корректно. Изучим теперь время его работы. Заметим, что после каждого изменения весов на шаге (8) обновленные множества S, Т и R, вычисляемые затем на шагах 0 и (5), являются надмножествами старых множеств S, Г и R соответственно. Если е = е4 < оо? то происходит наращивание (увеличение fc). Иначе размер множества R увеличивается немедленно (на шаге (§)) хотя бы на единицу. Итак, между последовательными наращиваниями шаги 0-® повторяются не более \Е\ раз. Поскольку время выполнения шагов 0-(8) составляет 0(|Е|2), общее время, затрачиваемое между двумя наращиваниями, составляет 0(|Е|3) плюс 0(|Е|2) вызовов оракула (на шаге (2)). Поскольку всего происходит m < |Е| наращиваний, требуемая оценка сложности доказана. ? Время работы данного алгоритма может быть легко уменьшено до О(|Е|30) (упражнение 23). Упражнения 1. Докажите, что все системы независимости, приведенные в начале §13.1, кроме примеров 5 и 6, в общем случае не являются матроидами. 2. Покажите, что равномерный матроид, состоящий из четырех элементов и имеющий ранг 2, не является графическим. 3. Докажите, что всякий графический матроид представим над любым полем. 4. Пусть G — неориентированный граф, и пусть задано число К е N. Рассмотрим семейство &, состоящее из подмножеств E(G), являющихся объединениями К лесов. Докажите, что система (?(G), &) является матроидом. 5. Пусть G—двудольный граф с двудольным разбиением V(G) =A\JB, и пусть (А, &) — матроид. Докажите, что тогда система (В, {Y с в: Y = 0 или 3 X е &: G [X U Y] содержит совершенное паросочетание}) также является матроидом. 6. Получите точные нижние границы для ранговых отношений систем независимости, указанных в начале § 13.1. 7. Пусть У — конечное семейство конечных множеств. Множество Т называется трансверсалью (transversal) (или системой различных представителей)
388 Глава 13. Матроиды для У, если существует такая биекция Ф: Т —»<У, что t G Ф(г) для всех t еТ. (Необходимое и достаточное условие существования трансверсали приведено в упражнении 6 из гл. 10.) Пусть семейство У имеет хотя бы одну трансверсаль. Докажите, что семейство трансверсалей У образует множество баз некоторого матроида. 8. Рассмотрим конечное множество Е и семейство 9$ с 2Е. Покажите, что № является множеством баз некоторого матроида (Е, &), если и только если выполнены следующие условия: (Bl) m ф 0; (В2) для любых В1уВ2е <% и у е В2\Вг существует такой элемент х € Вг \В2, чго(Вг\{х})и{у}еа. 9. Рассмотрим граф G. Пусть & — семейство всех множеств X с V(G), для которых существует максимальное паросочетание, не покрывающее ни одной вершины из X. Докажите, что (V (G), &) образует матроид. Какой матроид будет двойственным к заданному? 10. Покажите, что равенство Jt{G*} = (^(G))* также справедливо для несвязных графов G (что, тем самым, усиливает теорему 13.16). Указание. Воспользуйтесь результатами упражнения 36(a) из гл. 2, 11. Покажите, что клаттеры из примеров 3 и 6 из списка в §13.3 обладают MFMC-свойством. (Воспользуйтесь теоремой 19.17.) Покажите, что клаттеры из примеров 1, 4 и 5 в общем случае не обладают MFMC-свойством. 12*. Клаттер (Е, &) называется бинарным (binary), если для любого нечетного fc и любых множеств Хъ ..., Xk е & существует такое множество У€^, что Y с Xj А... Л Хк. Докажите, что клаттер минимальных Г-соединений и клаттер минимальных Г-разрезов (см. пример 7 из списка в § 13.3) являются бинарными. Докажите, что клаттер является бинарным, если и только если |АПВ| нечетно для всех Ае«?и всех В е J*"', где (Е, &') — блокирующий клаттер. Выведите отсюда, что клаттер бинарный, если и только если его блокирующий клаттер бинарный. Замечание. Классификация бинарных клаттеров, обладающих MFMC-свойством, была дана Сеймуром [31]. 13*. Пусть Р — полиэдр блокирующего типа (polyhedron of blocking type), т.е. x + yeP для всех xsP и у>0. Блокирующий полиэдр (blocking polyhedron) для Р определяется равенством В(Р) := {z: zTx > 1 для всех х е Р}. Докажите, что В(Р) снова является полиэдром блокирующего типа и В(В(Р)) = Р. Замечание. Ср. с теоремой 4.22. 14. Как проверить (за полиномиальное время), является ли заданное множество ребер полного графа G подмножеством некоторого гамильтонова цикла в G? 15. Докажите, что если (?, &) образует матроид, то жадный алгоритм включения наилучших элементов максимизирует любую целевую функцию (по-английски называемую bottleneck function) c(F) = min{ce: e e F} по всем базам. 16. Пусть (E, J*") образует матроид и задана такая функция с: Е —» R, что с(е) ф с{е') для всех е Ф е', а также с(е) / 0 для всех е. Докажите, что задача максимизации и задача минимизации для (?, &, с) имеют единственное оптимальное решение.
Упражнения 389 17* (Хаусман и Корте [23]). Докажите, что для случая матроидов оракулы независимости, надмножеств баз, замыкания и ранга являются полиномиально эквивалентными. Указание. Для того чтобы показать, что ранговый оракул сводится к оракулу независимости, воспользуйтесь жадным алгоритмом включения наилучших элементов. Для сведения оракула независимости к оракулу надмножеств баз примените жадный алгоритм исключения наихудших элементов. 18. Пусть задан неориентированный граф G. Требуется раскрасить его ребра в минимальное число цветов так, чтобы ребра любого его цикла С были покрашены хотя бы в два различных цвета. Покажите, что для данной задачи существует полиномиальный алгоритм. 19 (Эдмондс и Фалкерсон [16]). Пусть заданы fc матроидов (Е, &г),..., (Е, &к) с ранговыми функциями гъ ..., гк. Докажите, что множество X Я: Е допускает разбиение, если и только если |А| < $]f=i riCA) Для всех АСХ. Получите отсюда в качестве частного случая теорему 6.20. 20. Рассмотрим матроид (Е, &) с ранговой функцией г. Докажите (используя теорему 13.34) следующие утверждения: (а) матроид (Е, &) содержит fc попарно непересекающихся баз, если и только если кг (А) + \Е\А\> fcr(E) для всех АСЕ; (б) матроид (Е, &) содержит fc независимых множеств, объединение которых дает Е, если и только если fcr(A) > \А\ для всех АСЕ. Покажите, что теорема 6.20 и теорема 6.17 являются частными случаями указанных утверждений. 21 (Эдмондс [13]). Пусть (Е, &г) и (Е,&2)—матроиды. Пусть X — максимальное по включению подмножество, допускающее разбиение относительно (Е, J^) и (Е,<^*): X = Хг и Х2, где Хг € &х и Х2 € Щ. Пусть В2 2 Х2 — база семейства &*. Докажите, что тогда Х\В2 является максимальным по размеру множеством в «^ П &2. 22 (Радо [29]). Рассмотрим систему множеств (Е, 5f), и пусть (Е, &) — матроид с ранговой функцией г. Покажите, что У содержит трансверсаль, независимую относительно (Е,&), если и только если r{[jBemB)>\^\ для всех &&су. Указание. Вначале опишите, используя теорему 13.34, ранговую функцию матроида, относительно которого независимые множества являются в точности трансверсалями (см. упражнение 7). Затем примените теорему 13.31. 23. Покажите, что время работы алгоритма взвешенного пересечения матроидов (см. теорему 13.36) может быть уменьшено до О(|Е|30). 24 (Крогдал [неопубликовано]). Пусть (Е,^) и (Е,^2) —матроиды, с: Е—>R. Пусть выбраны такие множества Х0,..., Хт € «^ П &2, что |Xfc| = fc и c(Xk) = = max{c(X) iXG^n &2, \X\ = fc} для всех fc. Докажите, что при fc = 1,..., т — 2 справедливо неравенство с(Хк+1) -с(Хк) < с(Хк) -с(Хк_г). 25 (Эдмондс [13]; Франк и Тардош [18]; Габоу [20]). Рассмотрим следующую задачу. Заданы орграф G с весами на ребрах, вершина s с V(G) и число fc. Тре-
390 Глава 13. Матроиды буется найти подграф минимального веса Н в G, содержащий к реберно непересекающихся путей от 5 до любой другой вершины. Покажите, что данная задача сводится к задаче о взвешенном пересечении матроидов. Указание. См. упражнение 26 из гл. 6 и упражнение 4 из настоящей главы. 26. Пусть А и В—два конечных множества размера п е N, G = (А U В, {{а, Ь}: а е А, Ь е В}) — полный двудольный граф, а е А и с: ?(G) —> R — функция стоимостей. Пусть 2t — семейство множеств ребер всех таких остовных деревьев Г в G, что |5г(а)| = 2 для всех а е А\{а}. Покажите, что множество минимальной стоимости в 2? может быть найдено за время 0(п7). Сколько ребер при этом окажутся инцидентными а? Литература Общая литература [1] Bixby R. Е., Cunningham W. Н. Matroid optimization and algorithms // Handbook of Combinatorics; Vol. 1 (R. L. Graham, M. Grotschel, L. Lovasz, eds.), Elsevier, Amsterdam, 1995. [2] Cook W.J., Cunningham W.H., Pulleyblank W.R., SchrijverA. Combinatorial Optimization. Wiley, New York, 1998, Chapter 8. [3] Faigle U. Matroids in combinatorial optimization // Combinatorial Geometries (N. White, ed.), Cambridge University Press, 1987. [4] Frank A. Connections in Combinatorial Optimization. Oxford University Press, Oxford, 2011. [5] Gondran M., Minoux M. Graphs and Algorithms. Wiley, Chichester, 1984, Chapter 9. [6] Lawler E. L. Combinatorial Optimization; Networks and Matroids. Holt, Rinehart and Winston, New York, 1976, Chapters 7 and 8. [7] Oxley J. G. Matroid Theory. Oxford University Press, Oxford, 1992. [8] von Randow R. Introduction to the Theory of Matroids. Springer, Berlin, 1975. [9] Recski A. Matroid Theory and its Applications. Springer, Berlin, 1989. [10] SchrijverA. Combinatorial Optimization: Polyhedra and Efficiency. Springer, Berlin, 2003, Chapters 39-42. [11] Welsh D.J. A. Matroid Theory. Academic Press, London, 1976. Процитированные работы [12] Cunningham W. H. Improved bounds for matroid partition and intersection algorithms // SIAM Journal on Computing. 1986. Vol. 15. P. 948-957. [13] Edmonds J. Submodular functions, matroids and certain polyhedra // Combinatorial Structures and Their Applications; Proceedings of the Calgary International Conference on Combinatorial Structures and Their Applications 1969 (R. Guy, H. Hanani, N. Sauer, J. Schonheim, eds.), Gordon and Breach, New York, 1970. P. 69-87. [14] Edmonds J. Matroids and the greedy algorithm // Mathematical Programming. 1971. Vol.1. P. 127-136.
Литература 391 [15] Edmonds J. Matroid intersection // Discrete Optimization I (P. L. Hammer, E. L. Johnson, В. H. Korte, eds.), North-Holland, Amsterdam, 1979. (Annals of Discrete Mathematics; Vol.4). P.39-49. [16] Edmonds J., Fulkerson D. R. Transversals and matroid partition // Journal of Research of the National Bureau of Standards. Ser. B. 1965. Vol. 69. P. 67-72. [17] Frank A. A weighted matroid intersection algorithm // Journal of Algorithms. 1981. Vol. 2. P. 328-336. [18] Frank A, Tardos Ё. An application of submodular flows // Linear Algebra and Its Applications. 1989. Vol. 114/115. P. 329-348. [19] Fulkerson D. R. Blocking and anti-blocking pairs of polyhedra // Mathematical Programming. 1971. Vol.1. P. 168-194. [20] Gabow H. N. A matroid approach to finding edge connectivity and packing arborescences // Journal of Computer and System Sciences. 1995. Vol. 50. P. 259-273. [21] Gabow H. N., Xu Y. Efficient theoretic and practical algorithms for linear matroid intersection problems // Journal of Computer and System Sciences. 1996. Vol. 53. P. 129-147. [22] Hausmann D., Jenkyns T.A., Korte B. Worst case analysis of greedy type algorithms for independence systems // Mathematical Programming. Study. 1980. Vol. 12. P. 120-131. [23] Hausmann D., Korte B. Algorithmic versus axiomatic definitions of matroids // Mathematical Programming. Study. 1981. Vol.14. P. 98-111. [24] Jenkyns T. A. The efficiency of the greedy algorithm // Proceedings of the 7th S-E Conference on Combinatorics, Graph Theory, and Computing, Utilitas Mathematica, Winnipeg, 1976. P. 341-350. [25] Korte В., Hausmann D. An analysis of the greedy algorithm for independence systems // Algorithmic Aspects of Combinatorics (B. Alspach, P. Hell, D. J. Miller, eds.), North-Holland, Amsterdam, 1978. (Annals of Discrete Mathematics; Vol.2). P. 65-74. [26] Korte В., Monma C. L. Some remarks on a classification of oracle-type algorithms // Nu- merische Methoden bei graphentheoretischen und kombinatorischen Problemen; Bd. 2 (L.Collatz, G.Meinardus, W. Wetterling, eds.), Birkhauser, Basel, 1979. S. 195-215. [27] Lehman A. On the width-length inequality // Mathematical Programming. 1979. Vol. 17. P. 403-417. [28] Nash-Williams C. S. J. A. An application of matroids to graph theory // Theory of Graphs; Proceedings of an International Symposium in Rome 1966 (P. Rosenstiehl, ed.), Gordon and Breach, New York, 1967. P. 263-265. [29] Rado R. A theorem on independence relations // Quarterly Journal of Math. Oxford. 1942. Vol. 13. P. 83-89. [30] Rado R. Note on independence functions // Proceedings of the London Mathematical Society. 1957. Vol. 7. P. 300-320. [31] Seymour P. D. The matroids with the Max-Flow Min-Cut property // Journal of Combinatorial Theory. Ser. B. 1977. Vol. 23. P. 189-222. [32] Whitney H Planar graphs // Fundamenta Mathematicae. 1933. Vol. 21. P. 73-84. [33] Whitney H. On the abstract properties of linear dependence // American Journal of Mathematics. 1935. Vol. 57. P. 509-533.
ГЛАВА 14 Обобщения матроидов Есть несколько заслуживающих внимания способов обобщить понятие мат- роида. В § 13.1 мы уже встречались с понятием системы независимости, которая получается, если из набора аксиом матроидов исключить свойство (МЗ). В §14.1 мы рассмотрим гридоиды, которые возникают, если вместо (МЗ) отбросить аксиому (М2). Далее мы покажем, что некоторые виды политопов, называемые полиматроидами, тесно связаны с матроидами и субмодулярными функциями и приводят к усилению ряда ранее доказанных теорем. Обсуждению полимат- роидов посвящен § 14.2. В § 14.3 и 14.4 мы рассмотрим два подхода к задаче минимизации произвольной субмодулярной функции. В одном из них используется метод эллипсоидов, а другой приводит к комбинаторному алгоритму. Для важного частного случая симметрической субмодулярной функции существует более простой алгоритм, который мы изучим в § 14.5. §14.1. Гридоиды По определению система множеств (Е, &) образует матроид, если и только если она обладает следующими свойствами: (Ml) 0е^; (М2) еслиХсуе^тоХе^; (МЗ) если X, Y е & и \Х\ > \Y|, то существует элемент х € X \У, для которого Y U {х} е &. Если отбросить свойство (МЗ), то мы получим понятие системы независимости, которое обсуждалось в § 13.1 и 13.4. Исключим теперь вместо него свойство (М2). Определение 14.1. Гридоид (greedoid) представляет собой систему множеств (Е, ^), удовлетворяющую свойствам (Ml) и (МЗ). Вместо свойства монотонности (М2) выполняется свойство доступности. А именно, назовем систему множеств (Е, &) доступной (accessible), если при 0€«?и любом X € &\{0} существует такой элемент х е X, что Х\{х} е &. Гридоиды являются доступными (это свойство легко следует из аксиом (Ml) и (МЗ)). Будучи более широким классом, чем матроиды, гридоиды, с одной стороны, обладают богатой структурой и, с другой стороны, обобщают многие понятия, кажущиеся на первый взгляд не связанными. Начнем их изучение со следующего результата.
§14.1. Гридоиды 393 Теорема 14.2. Пусть (Е, &) — доступная система множеств. Тогда следующие утверждения эквивалентны: (а) для любых таких XQY с Е uz € Е\ У, что X U {z} е & и У € &, выполняется условие Yu{z} G &\ (б) система & замкнута относительно объединения. Доказательство. Для доказательства импликации (а) =>(б) рассмотрим множества X, У е &. Покажем, что X и У е &. Пусть Z — максимальное по включению множество, удовлетворяющее условиям Ze^Hlczcxuy. Предположим, что Y\Z ф0. Применяя несколько раз свойство доступности к У, мы получим множество Y' е &, для которого Y' с Z, и такой элемент у е У \Z, что Y' и {у} е &. Применим теперь условие (а) к Z, Y' и у. Получим Z и {у} е J^, что противоречит выбору Z. Импликация (б) =>(а) тривиальна. ? Если выполнены условия теоремы 14.2, то будем называть систему (Е, &) антиматроидом. Утверждение 14.3. Каждый антиматроид является гридоидом. Доказательство. Рассмотрим антиматроид (Е,&), т. е. доступную и замкнутую относительно объединений систему множеств. Для доказательства свойства (МЗ) рассмотрим такие множества X, У € &, что |Х| > |У|. Поскольку система (Е,^) доступна, существует упорядочение X = {хъ ...,хп} множества X, при котором {хъ..., jcJ е J*" при i = 0,..., п. Пусть i е {1,..., п} — минимальный индекс, для которого х{ ? У. Тогда У U {xt} = У U {хх,..., xt} е ^ (поскольку семейство «^ замкнуто относительно объединения). ? Другой эквивалентный способ определить понятие антиматроида основан на операторе замыкания. Утверждение 14.4. Рассмотрим такую систему множеств (Е, &), что & замкнуто относительно объединения u0Ef. Положим Т(Л) := р|{х с Е: Л с х, Е\Х е &}. Тогда т является оператором замыкания, т. е. удовлетворяет свойствам (S1)- (S3) из теоремы 13.11. Доказательство. Рассмотрим множества X с у с Е. Вложения X с т(Х) с т(У) тривиальны. Для доказательства свойства (S3) предположим, что существует элемент у е т(т(Х))\т(Х). Тогда у eY для всех таких У с Е, что т(Х) с у и Е\У е &, но при этом существует такое множество Z с Е\{у}, что X с z и E\Z G ^. Отсюда вытекает, что т(Х) % Z, — противоречие. ? Теорема 14.5. Рассмотрим такую систему множеств (Е, J*"), что «^ замкнуто относительно объединения и 0 е J*l Тогда система (Е, &) доступна, если и только если оператор замыкания т, определенный в утверждении 14.4, обладает свойством антизамены: если X с Е, у, z е Е\т(Х), y/zuzGT(lU {у})> ^о
394 Глава 14. Обобщения матроидов Доказательство. Если система (F, &) доступна, то свойство (МЗ) вытекает из утверждения 14.3. Для доказательства свойства антизамены рассмотрим такие X с Е, В := Е\т(Х) и y,z е В, что z ф А := E\z(X и {у}). Заметим, что Ае&, Be&nACB\{y,z}. Применяя свойство (МЗ) к Л и Б, мы получим элемент Ъ е В\А с Е\[ХUА), для которого A U {b} G ^. Множество Л и {Ъ} не может содержаться в?\(Хи {у}) (иначе выполнялось бы включение т(Хи{у}) С?\(ли{Ь}), что противоречит равенству т(Х U {у}) = Е\А). Следовательно, Ь = у. Итак, мы имеем AU {у} € &, и, значит, т(Х U {z}) С?\(Ли {у}). Мы доказали, что у ^ т(Х U {z}). Покажем обратное. Пусть Ле^\{0}, и пусть X :=Е\А. Мы имеем т(Х) = X. Пусть a G А — такой элемент, что размер |т(Х и {а})\ минимален. Докажем, что т(Х U {а}) = X U {а}, т. е. А\{а} € Л Предположим обратное, тогда Ьет(Хи {а})\(Хи {а}). По свойству антизамены мы имеем а^т(Хи {Ь}). Более того, т(Х U {Ь}) с т(т(Х U {а}) U {Ь}) = т(т(Х U {а})) = т(Х U {а}). Значит, т(Х U {Ь}) образует собственное подмножество т(1и {а}), что противоречит выбору а. ? Свойство антизамены, указанное в теореме 14.5, отличается от свойства (S4). В то время как условие (S4) из теоремы 13.11 представляет собой свойство линейных оболочек в Rn, новое свойство описывает выпуклые оболочки в Rn. Действительно, если y^z,z<? conv(X) и z е conv(X и {у}), то, очевидно, у ф conv(X U {z}). Итак, для любого конечного множества Е cRn система (?, {X с Е: X П conv(F \Х) = 0}) образует антиматроид. Гридоиды обобщают матроиды и антиматроиды, но при этом содержат в себе и другие интересные структуры. Одним из примеров является структура соцветий, возникающая в алгоритме Эдмондса поиска максимального паросочетания (см. упражнение 1). Другой пример описан ниже. Утверждение 14.6. Пусть G — граф {ориентированный или неориентированный) с выделенной вершиной г е V(G). Пусть & — семейство всех множеств ребер ориентированных деревьев в G с корнем г или неориентированных деревьев в G, содержащих г (не обязательно остовных). Тогда (?(G), &) является гридоидом. Доказательство. Свойство (Ml) тривиально. Докажем справедливость свойства (МЗ) в ориентированном случае (аналогичные рассуждения годятся и для неориентированного). Рассмотрим два ориентированных дерева (X^FJ и (X2,F2) в G с корнем г, для которых |FX| > |F2|. Тогда \Хг\ = \F^\ + 1 > |F2| + 1 = \Х2\, так что мы можем взять х е Хг\Х2. Следовательно, r-x-путь в (X1,F1) содержит такое ребро (v, ш), что и е Х2 и w ф Х2. Это ребро можно добавить к (Х2, F2), откуда следует, что F2 и {(и, w)} е ^. ? Этот гридоид называется ориентированным (неориентированным) гридоидом ветвлений (branching greedoid) графа G.
§14.1. Гридоиды 395 Задача поиска максимального по весу остовного дерева в связном графе G с неотрицательными весами представляет собой задачу максимизации для циклического матроида M{G). Жадный алгоритм включения наилучших элементов в данном случае совпадает с алгоритмом Краскала. Теперь данная задача получает еще одну переформулировку: требуется найти максимальное по весу множество Fe^, где (E(G), &) — неориентированный гридоид ветвлений в G. Опишем теперь общий вид жадного алгоритма для гридоида. В частном случае матроидов он в точности совпадает с жадным алгоритмом включения наилучших элементов, изложенным в § 13.4. Если же мы применим его к неориентированному гридоиду ветвлений с модулярной стоимостной функцией с, то он превратится в алгоритм Прима. Greedoid Greedy (алгоритм жадный для гридоида) Вход: гридоид (?,&) и функция с: 2Е —> К, заданные оракулом, который для произвольного множества XQE сообщает, выполнено ли условие X € &у а также вычисляет с(Х). Выход: множество F € &. (1) Присвоить F := 0. (2) Выбрать такой элемент eeE\F, что Fи{е} е& и вес c{FU{е}) максимален. If такого е не существует then stop. (3) Присвоить F := F U {е}, goto (2). Даже в случае модулярных функций стоимостей с данный алгоритм не всегда находит оптимальное решение. Однако мы можем хотя бы охарактеризовать те гридоиды, для которых он работает правильно. Теорема 14.7. Пусть (Е, &) — гридоид. Алгоритм Greedoid Greedy находит множество F € & максимального веса для любой функции весов с: 2Е —> R+, если и только если (Е, J*") обладает так называемым сильным свойством замены: для всех Ае&, максимального по включению множества В в &, удовлетворяющего условию А с В, и такого элемента хеЕ\В, что Аи{х}е&, существует элемент у € В\А, для которого А и {у} е & и (В\ {у}) и {х} е &. Доказательство. Пусть (Е, &) — гридоид с сильным свойством замены, и пусть с: Е —> R+. Рассмотрим решение А — {аъ ..., аг}, найденное с помощью жадного алгоритма для гридоида, в котором элементы выбирались в порядке аъ ..., аг. Пусть В = {аъ ..., ak}uB/ — такое оптимальное решение, что к максимально, и предположим, что к < I. Применив сильное свойство замены к {аъ ..., ак}, В и ак+1, получим, что существует элемент у е В', для которого {аъ ..-,ак,у}е& и (В\у) U {ак+1} G JF. Согласно выбору ак+1 на шаге (2) в жадном алгоритме для гридоида мы имеем с(ак+1) > с(у), и, значит, с((В\у) и {ак+1}) > с{В), что противоречит выбору В.
396 Глава 14. Обобщения матроидов Обратно, пусть (?, &) — гридоид, не обладающий сильным свойством замены. Пусть А е &, В максимально по включению в &, A Q В и х е Е\ВУ где Аи{х}е«? и для всех таких у е?\ А, что Аи{у}е^, мы имеем (В\у)и{х}ф&. Положим У:={уеВ\Л:Ли {у} е ^}. Также определим с(е) := 2 при е е В \ Y, с{е) := 1 при е € 7 и {*} и с(е) :=0 при е €Е \ (В U {*}). Тогда жадный алгоритм для гридоида может вначале выбрать элементы множества А (поскольку они имеют вес 2), а затем выбрать х. Работа алгоритма закончится построением множества F е ^, которое не может быть оптимальным, поскольку c(F) < с{В U {х}) — 2 < < с(Ви{х})-1 = с(В) иВе&. ? В действительности задача оптимизации модулярной функции по произвольному гридоиду А/Р-трудна. Это утверждение вытекает из следствия 15.24 и следующего факта. Утверждение 14.8. Задача определения по заданному неориентированному графу G и числу к е N, содержит ли G вершинное покрытие размера fc, линейно сводится к следующей задаче: для заданного гридоида (Е, &) (определяемого оракулом принадлежности) и функции с: Е —> R+ найти множество F €«? с максимальным весом c(F). Доказательство. Пусть G — произвольный неориентированный граф, и пусть выбрано число fc € N. Положим D := V(G) U Е (G) и &:={XC.D: для всех e = {v, w}sE(G)C\X выполнено условие vgX или шб!}. Тогда (D, 3?) является антиматроидом, поскольку эта система доступна и замкнута относительно объединения. Поэтому, в частности, по утверждению 14.3 она будет гридоидом. Рассмотрим семейство &' :={X<E&:\X\<\E(G)\ + k]. Поскольку при переходе к нему свойства (Ml) и (МЗ) сохраняются, (D, &') также будет гридоидом. Положим с(е) := 1 при е е Е (G) и с(у) := О при и € V(G). Тогда существует такое множество F е &', что c(F) = |E(G)|, если и только если в G существует вершинное покрытие размера fc. ? С другой стороны, существуют интересные классы функций, которые поддаются максимизации по любым гридоидам, например функции вида c(F) :=min{c'(e): eeF}, где с!: Е ->М+ (упражнение 2). Более подробную информацию на эту тему можно найти в книге Корте, Ловаса и Шрадера [6]. §14.2. Полиматроиды Теорема 13.10 показывает тесную связь между матроидами и субмодулярными функциями. Субмодулярные функции определяют следующий интересный класс полиэдров.
§14.2. Полиматроиды 397 Определение 14.9. Полиматроид представляет собой политоп вида Р(/):= lxeRE:x>0, J\e </(А) для всех А с Л, где Е — конечное множество, а /: 2Е —> R+ — субмодулярная функция. Несложно видеть, что для любого полиматроида функцию / можно выбрать так, чтобы выполнялось равенство /(0) = 0 и / была монотонной (см. упражнение 6). Здесь функция /: 2Е —> R называется монотонной, если /(X) < /(У) при X с Y с е. Первоначальное определение, предложенное Эдмондсом, отличается от нашего; см. упражнение 7. Более того, отметим, что термин «полиматроид» иногда используется для обозначения пары (Е, /), а не задаваемого ей политопа. Если / служит ранговой функцией матроида, то Р(/) представляет собой выпуклую оболочку характеристических векторов независимых подмножеств данного матроида (см. теорему 13.21). Как мы знаем, жадный алгоритм включения наилучших элементов находит оптимум любой заданной линейной функции на политопе матроида. Аналогичный жадный алгоритм также применим для полиматроидов общего вида. Будем предполагать, что функция / монотонна. Polymatroid Greedy (алгоритм жадный для полиматроида) Вход: конечное множество Е и такая субмодулярная монотонная функция /: 2е -»R+ (заданная оракулом), что /(0) > 0; вектор с € RE. Выход: вектор л: е Р(/), для которого значение сх максимально. (Т) Упорядочить Е = {еъ..., еп] так, чтобы выполнялись неравенства с(ег) >...> с(ек) >0> c(efc+1) > > c(ej. (2) 1?к>1 then присвоить x(e2) := /({еа}). Присвоить х(е() := /({еъ ..., ej) -/({еъ ..., е(_г}) для i = 2,..., к. Присвоить х(е{) := 0 для i = к + 1,..., п. Утверждение 14.10. Пусть Е = {ег, ..., еп] и f: 2Е —> R — такая субмодулярная функция, что f(0)>O.Рассмотрим функцию Ъ: Е—»М, для которой Ъ(е{) </({ех}) и Ь(е?) < /({еъ ..., ej) -/({еъ ..., ен}) при i = 2,..., п. Тогда ?aGA Ъ(а) < /(А) для всех AQE. Доказательство. Воспользуемся индукцией по i = тах{;: е; е А}. Утверждение тривиально при А = 0 и А = {е^. Если i > 2, то 2 Ь(а) = ^ Ь(а) + Ь(е,) < /(A\{eJ) + Ь(е*) < </(A\{ei})+/({e1,...,e,»-/({e1,...,ei_1})</(A), где первое неравенство следует из предположения индукции, а третье — из свойства субмодулярности. ?
398 Глава 14. Обобщения матроидов Теорема 14.11. Алгоритм Polymatroid Greedy корректен, т. е. находит такой вектор х е Р(/), что значение сх максимально. Если функция f принимает лишь целые значения, то вектор х также целый. Доказательство. Пусть xgM? — вектор, найденный жадным алгоритмом для полиматроида для входных данных Е, f тс. По определению если / принимает целые значения, то вектор х также целый. Поскольку функция / монотонна, имеем х > 0, и, значит, х е Р(/) согласно утверждению 14.10. Пусть теперь существует такой вектор у € R^, что су > сх. Аналогично доказательству теоремы 13.19 положим dj :=с(е;) — c(eJ+1) (; = 1,..., к — 1) и dk := c(efc). Тогда к j к к j 2 dj 2х^=сх < су < X c(ej)y(ej)=S dJ 2 укд- j=\ i=l j=l j=l i=l Так как dj > 0 для всех ;, существует такой индекс j е {1,..., к}, что j j i=l i=l однако, поскольку ^]-=1 х(е{) = /({е1?..., е;}), отсюда следует, что у ф Р(/). ? Как и в случае матроидов, пересечение двух полиматроидов поддается анализу. Следующая теорема о пересечении полиматроидов имеет многочисленные следствия. Теорема 14.12 (Эдмондс [9,10]). Пусть Е — конечное множество и предположим, что /, g: 2е —> R+ — субмодулярные функции. Тогда система х>0, Y,xe<f(A) (АСЕ), е&А 2*е<?(Л) (АСЕ) ееА обладает свойством TDI. Доказательство. Рассмотрим пару из прямой и двойственной задач ЛП: max \ сх: х > 0, /J хе < f(A) и У^ хе < g(A) для всех А с ? I ^ е€А ееА ' И min | 2^^Уа + #(а)*а) '-У,г>0, ^Г (Уа + Za) >седля всех е е Е L MCE АС?,ееА ' Для доказательства тотальной двойственной целочисленное™ мы воспользуемся леммой 5.23. Рассмотрим функцию с: E(G) —> Ъ, и пусть (у, z) —такое оптимальное двойственное решение, что сумма
§14.2. Полиматровды 399 ^(Уа + *а)\А\'\Е\А\ (14.1) минимальна. Докажем, что семейство & := {А с Е: уА > 0} представляет собой цепь, т. е. для любых А, В е & мы имеем либо А с. в, либо В с д. Для доказательства этого факта предположим, что А, В е ^, причем Л П В ^ А и АП В ф В. Обозначим е := min{yA,yB}. Положим у'А := уА — е, у'в := ув — в, Уапв := Улпв + е, уАив := уЛив + б и y'(S) := y(S) для всех остальных S с ?. Поскольку у7, z задают допустимое двойственное решение, оно также будет оптимальным (в силу субмодулярности функции /), что противоречит выбору у, поскольку значение (14.1) оказывается меньше для у7, z. Рассуждая аналогично, можно показать, что семейство &' :={АСЕ: zA> 0} также является цепью. Пусть теперь МиМ' — матрицы, столбцы которых отвечают элементам множества Е, а строки представляют собой характеристические векторы элементов семейств & и &' соответственно. По лемме 5.23 достаточно показать, что матрица (..,) тотально унимодулярна. Воспользуемся теоремой Гуила-Ури 5.24. Рассмотрим такое множество строк 32, скажем &L = {Аъ ..., Ар,Въ ...,Bq}, что Аг 2 ... 2 Ар и Вг 2 ... 2Bq. Положим 9tx := {At: i нечетно} U {Bf: i четно} и ffi2 ~9t\9t\. При всех ee? мы имеем {Reffi: eeR} = {Al9..., APe} и {Въ..., Bq} для некоторых индексов pe e {0,..., p} и qe € {0,..., q}, поэтому разность суммы строк в 0^г и суммы строк в 3?2 образует вектор, состоящий лишь из чисел —1,0,1. Таким образом, условия теоремы 5.24 выполнены. ? Можно также находить оптимумы линейных функций на пересечении двух полиматроидов. Однако эта задача не столь проста, как в случае одного поли- матроида. Например, можно применить метод эллипсоидов при условии, что нам удастся решить задачу отделения для каждого полиматроида. Мы вернемся к этому вопросу в § 14.3. Следствие 14.13 (Эдмондс [9]). Рассмотрим матроиды {Е,М\) и (Е,Л2) с ранговыми функциям гг и г2. Тогда выпуклая оболочка множества характеристических векторов элементов пересечения Л\ П М2 представляет собой политоп \xsRE+: ^ хе < minfaCA), г2(А)} для всех А с Е1. Доказательство. Поскольку функции гг и г2 неотрицательны и субмодулярны (по теореме 13.10), вышеуказанная система неравенств обладает свойством TDI (по теореме 14.12). Поскольку гг и г2 принимают целые значения, данный политоп целый (см. следствие 5.15). Имеем гг(А) < \А\ для всех АСЕ, поэтому все вершины (выпуклой оболочкой множества этих вершин по следствию 3.32 и будет данный политоп) представляют собой 0-1-векторы и, значит, являются характеристическими векторами общих независимых подмножеств (элементов семейства М\ П Ж?). С другой стороны, каждый такой характеристический вектор удовлетворяет указанным неравенствам (по определению ранговой функции). ?
400 Глава 14. Обобщения матроидов Полагая М\ — Mi, мы, конечно же, получаем отсюда описание политопа матроида (теорема 13.21). Теорема 14.12 имеет и другие интересные следствия. Следствие 14.14 (Эдмондс [9]). Пусть Е — конечное множество и предположим, что fg: 2е —» R+ — такие монотонные субмодулярные функции, что /(0) = = g(0) = 0. Тогда max{Ux: х е Р(/) nP(g)} = min(/(A) + g(E\A)). Более того, если fug принимают целые значения, то существует целый вектор х, на котором достигается максимум. Доказательство. По теореме 14.12 задача, двойственная к задаче max{ Ujc : х € Р (/) n Р (g)}, т.е. min | ^ (/(Л)уА + g(A)zA) :y,z>0, ^] (уА + zA) > 1 для всех е е ? МСЕ АСЕ,ееА имеет целое оптимальное решение у, z. Положим В := [J А и C:=[J А. А:уА>1 A:zA>l Тогда В U С = Е. Функции / и g субмодулярные и неотрицательные, и мы имеем /(0) = g(0) = 0, поэтому 2(ЯЛ^а + *(А)*л) > /(В) + g(C). АС? Учитывая, что ? \В с с и функция g монотонна, мы заключаем, что данная сумма не меньше /(В) +g(E\B). Этим доказано неравенство «>». Доказательство обратного неравенства «<» тривиально, поскольку для любого подмножества А с Е можно построить допустимое двойственное решение (у, z), полагая уА := 1, zE\A := 1 и объявляя все остальные координаты нулями. Целочисленность прямо следует из теоремы 14.12 и следствия 5.15. ? Теорема 13.31 является частным случаем доказанного утверждения. Более того, отсюда следует также такой результат. Следствие 14.15 (Франк [15]). Пусть Е — конечное множество, a f,g: 2Е —> R — такие функции, что f супермодулярна, g субмодулярна и f < g. Тогда существует такая модулярная функция h: 2Е —> R, что f < h < g. Если функции fug принимают целые значения, то функцию h можно также выбрать целой. Доказательство. Без ограничения общности можно считать, что /(0) = g(0) и /(?) = g(?). Положим М := 2 max{|/(A)| + |g(A)|: А с Е}. Пусть/' (A) :=g(E)-f(E\A)+M\A\ng?(A) :=g(A) -/(0) +М|А| для всех А с Е. функции /; и g7 неотрицательны, субмодулярны и монотонны. Применяя
§ 14.3. Минимизация субмодулярных функций 401 следствие 14.14, получим max{Ujc: х€?(/')nP(g')} = min(/'(A) +g'(E\A)) = A?E = min{g{E)-f(E\A)+M\A\ + g(E\A)-f(0) + M\E\A\)>g(E)-f(0) + M\E\. Выберем тогда такой вектор х е Р(/') П P(gO> что Их = g(E) — /(0) + М\Е\. Если / и g целые, то х также можно взять целым. Положим h!{A) := ^ееАхе и ft(A) := h'(A) + /(0) — М|Л| для всех А с ?. Функция h модулярна. Более того, для всех AQE мы имеем hW<g'W+f(0)-M\A\=g(A) и h(A) = tx-h\E\A)+f(0)-M\A\>g(E)+M\E\-M\A\-f'(E\A)=f(A). П Для доказанного утверждения легко прослеживается аналогия с выпуклыми и вогнутыми функциями; см. также упражнение 10. § 14.3. Минимизация субмодулярных функций Задача отделения для полиматроида Р(/) и вектора х сводится к поиску такого множества А, что /(A) < 2ееЛ х{е). Таким образом, для ее решения достаточно научиться искать множество Л, минимизирующее g{A), где g(A):=/(A)-2>(e). ееА Отметим, что если функция / субмодулярна, то g также субмодулярна. Это наблюдение показывает, что задача минимизации субмодулярной функции представляет самостоятельный интерес. Альтернативная мотивация к изучению вопроса о минимизации субмодулярных функций состоит в том, что такие функции можно рассматривать как дискретные аналоги выпуклых (следствие 14.15 и упражнение 10). Частный случай данной задачи уже был решен в § 8.7: поиск минимального разреза в неориентированном графе можно рассматривать как задачу минимизации некоторой симметричной субмодулярной функции /: 2и —> R+ по множествам из 2и \ {0, U}. Перед тем как вернуться к этому частному случаю, покажем, как производить минимизацию субмодулярных функций общего вида. Для простоты ограничимся случаем целочисленных субмодулярных функций. Submodular Function Minimization (задача минимизации субмодулярной функции) Дано: конечное множество U и субмодулярная функция /: 2и —> Ъ (заданная в виде оракула). Надо: найти подмножество X с и, для которого значение /(X) минимально.
402 Глава 14. Обобщения матроидов Грётшель, Ловас и Скрейвер [18] показали, как решить данную задачу с помощью метода эллипсоидов. Идея состоит в использовании бинарного поиска для нахождения минимума. Этот прием сводит задачу к задаче отделения от полиматроида. С учетом эквивалентности задач отделения и оптимизации (§ 4.6) достаточно уметь оптимизировать линейные функции по полиматроидам. Это, однако, легко сделать с помощью жадного алгоритма для полиматроида. Вначале установим верхнюю оценку на значение |/(S)| по всем S с [/. Утверждение 14.16. Для любой субмодулярной функции f:2u-+Zu произвольного множества S с и справедливы неравенства /([/) - Y, тах{0,/(М) -/(0)} < /(S) < /(0) + J] тах{0, /({и}) -/(0)}. u(=U ueU В частности, такое число В, что |/(S)| < В для всех S с и, может быть найдено за линейное время с использованием \U\ + 2 вызовов оракула для /. Доказательство. Многократно применяя свойство субмодулярности, для непустого множества 5С[/ получаем (считая, что х е S) /(s) < -/(0)+/(s\{*})+/({*}) < . < -|s|/(0)+/(0)+2/({*}). xeS Аналогично для S с U получаем (считая, что у GU\S) /(s)>-/({j})+/(su{y})+/(0)^...>-Xi/ay})+/(^)+i^\5i/(0). ? yeu\s Утверждение 14.17. Следующая задача может быть решена за полиномиальное время: по заданному конечному множеству U, субмодулярной и монотонной функции f: 2и —> Z+ (заданной оракулом), удовлетворяющей условию /(S) > 0 при S ф 0, такому числу В е N, что /(S) < В для всех S с [/, и вектору x€Zj требуется выяснить, верно ли, что х eP(J). В случае отрицательного ответа требуется вернуть множество S с и, для которого Xyes х(и) > /(^)- Доказательство. Описанная выше задача представляет собой задачу отделения для полиматроида Р(/). Воспользуемся теоремой 4.23. Отметим, что задача оптимизации для Р(/) уже была решена ранее, а именно: жадный алгоритм для полиматроида может найти максимум произвольной линейной функции на P(J) (см. теорему 14.11). Проверим остальные условия теоремы 4.23. Поскольку нулевой вектор и базисные векторы все содержатся в Р(/), можно взять х0 := el в качестве внутренней точки, где е = 1/(|С/| + 1). Имеем size(x0) = 0(\U\ log\U\). Более того, любая вершина политопа P(J) может быть получена применением жадного алгоритма к полиматроиду (к некоторой целевой функции; см. теорему 14.11) и, следовательно, имеет размер 0(|l/|(2 + log В)). Отсюда следует, что задача отделения может быть решена за полиномиальное время. По теореме 4.23 если х ? P(f), то мы получим неравенство, задающее фасету политопа Р(/), которое нарушается в точке jc. Данное неравенство отвечает такому множеству S с [/, 4ToI]u€Sx(i;)>/(S). ?
§ 14.3. Минимизация субмодулярных функций 403 Если функция / не является монотонной, то доказанное утверждение нельзя применить непосредственно. Вместо этого мы построим другую функцию. Утверждение 14.18. Пусть /: 217 —» R — субмодулярная функция и /3 е R. Тогда функция g: 2и -» R, задаваемая условием *(Х):=/(Х)-/3 + 2](/(1/\{е})-/(1/)), ееХ является субмодулярной и монотонной. Доказательство. Субмодулярность функции g прямо следует из субмодулярности функции /. Для доказательства монотонности функции g рассмотрим подмножество X с U и элемент е е U\X. Тогда g(Xu{e})-g(I) = /(Xu{e})-/(I)+/([/\{e})-/(C/)>0) поскольку функция / субмодулярна. ? Теорема 14.19. Задача минимизации субмодулярной функции может быть решена за время, полиномиальное по сумме \U\ + logmax{|/(S)|: S с и). Доказательство. Пусть U — конечное множество. Будем считать, что функция / задана в виде оракула. Вычислим вначале такое значение В е N, что |/(S)| < В для всех S с и (см. утверждение 14.16). Поскольку функция / субмодулярна, для всех е е U и для всех X с и\ {е} мы имеем /({е}) -/(0) > f(X U {е}) -f{X) > f(]U)-f(.U\{e}). (14.2) Если для некоторого eeU справедливо неравенство /({е}) — /(0) < 0, то согласно неравенствам (14.2) существует оптимальное множество S, содержащее е. В этом случае рассмотрим экземпляр задачи (С/7,В,/7), полагая U' := U\{e} и /7(Х) := f(X U {е}) при X с 1Г\{е}, найдем множество S' с [/7 для которого значение /'(S7) минимально, и выдадим S := S7 U {е}. Аналогично если /([/) — f(U\ {е}) > 0, то согласно неравенствам (14.2) существует оптимальное множество S, не содержащее е. В таком случае достаточно минимизировать сужение / на U\{e}. В обоих случаях размер носителя уменьшается. Итак, можно предполагать, что /({е}) — /(0) > 0 и f(U\{e}) — /(?/) > 0 для всех ее[/. Положим х{е) := f{U\{e}) — /([/). Для произвольного целого /3, удовлетворяющего условиям — В < /3 </(0), определим g(X) :=/(Х)—j3+2е€Х *(е)- По утверждению 14.18 функция g является субмодулярной и монотонной. Более того, мы имеем g(0) = /(0) — /3>0и g({e}) = /({е}) — j3 + л:(е) > 0 для всех е е U, следовательно, g(X) > 0 для всех 0 ^ X C.JJ. Воспользуемся теперь утверждением 14.17 и проверим, справедливо ли условие х eP(g). Если да, то f{X) > /3 для всех X с и, и задача решена. Иначе мы получим такое множество S, что /(S)<jB. Применим теперь бинарный поиск: выбирая значение /3 на каждом шаге подходящим образом, мы найдем за 0(log(2B)) итераций такие числа /3* е € {-В,-В + 1,...,/(0)}, что /СЮ > /3* для всех X с и, но /(S) < /3* + 1 для некоторого S CU. Данное множество S минимизирует /. ?
404 Глава 14. Обобщения матроидов Первый сильно полиномиальный алгоритм для рассматриваемой задачи, также основанный на методе эллипсоидов, был предложен Грётшелем, Ловасом и Скрейвером [19]. Комбинаторные алгоритмы для решения задачи минимизации субмодулярной функции за сильно полиномиальное время были найдены Скрейвером [31] и независимо Иватой, Флейшер и Фуджисиге [22]. В следующем параграфе мы опишем алгоритм Скрейвера. § 14.4. Алгоритм Скрейвера Пусть заданы конечное множество U и субмодулярная функция /: 217 —> Z. Будем считать, не ограничивая общности, что U = {1,..., п] и /(0) = 0. На протяжении работы алгоритм Скрейвера [31] поддерживает точку х в так называемом полиэдре баз функции /, определяемом как JxeR17: ^х(и)</(А)длявсехАС[/, ^x(u) = f(U)\. *• иеА u<=U ' Отметим, что множество вершин данного полиэдра баз в точности совпадает с множеством векторов Ьч для всевозможных линейных порядков < на множестве U, где Ь^(ц) := f({v eU:u< u})-f({v eU:v< и}) {и G U), Данный факт, который нам далее не понадобится, может быть доказан способом, аналогичным тому, что был использован в теореме 14.11 (см. упражнение 14). В процессе работы точка х поддерживается в виде явно заданной выпуклой комбинации х = ХгЬ^ + ... + ХкЪ<к вышеуказанных вершин. В начале работы возьмем fc = 1 и выберем любой линейный порядок. Для линейного порядка < и элементов s, и е U обозначим через -<s,u линейный порядок, который получается из -< перемещением и на позицию непосредственно перед s. Более того, пусть хи —характеристический вектор элемента и (и е U). Schrijver's Algorithm (алгоритм Скрейвера) Вход: конечное множество 1/ = {1,...,п}и субмодулярная функция /: 2и —> Z, для которой /(0) = 0 (заданная в виде оракула). Выход: подмножество X си, для которого значение f(X) минимально. (1) Присвоить к := 1, взять в качестве -<г произвольный линейный порядок на U и положить х := Ь*1. (2) Построить орграф D := ([/, Л), где А = {(и, v) :u<{v для некоторого i е {1,..., fc}}. (3) Пусть Р :={v G U: x(v) > 0} и N := {v е U: х(и) < 0}, пусть также X — множество вершин, не достижимых из Р в орграфе D. If N с х then stop else пусть d(v) — расстояние от Р до и в D.
§ 14.4. Алгоритм Скрейвера 405 (4) Выбрать вершину teJV, достижимую из Р, для которой пара (d(t), t) лексикографически максимальна. Выбрать максимальную вершину s, удовлетворяющую условиям (5, г) € А Hd(s) = d(t)-1. Найти такой индекс i е {1,..., fc}, что размер а := \{v: s -<tv <t t}\ максимален (число индексов, на которых данный максимум достигается, будет обозначаться через /3). (5) Найти такое число е, что 0 < е < — x(t), и представить х' := х + е(х1 ~ Xs) в виде явной выпуклой комбинации не более п векторов, выбранных среди Ь<г,..., b4fc и b^'u для всех таких и е 1Г, что s -<f u ^f t, с тем дополнительным свойством, что вектор Ъ<{ запрещается использовать при x'{t) < 0. (6) Присвоить х := х', переобозначить векторы в выпуклой комбинации х через Ь^1,..., Ъ<к', присвоить fc := fc', goto (2). Теорема 14.20 (Скрейвер [31]). Алгоритм Скрейвера корректен. Доказательство. Алгоритм завершает работу в тот момент, когда D не содержит больше пути из Р в N, и выдает множество X вершин, не достижимых из Р. Очевидно, N ex с 1/\Р, так что ^и&хх^ ^ Xuew*^) Д7151 всех W - ^- Более того, не существует ребер, входящих в X, так что либо X = 0, либо для всех ; е {1,..., fc} существует такая вершина и е X, что X = {ug[/:u^ у}. Следовательно, по определению 2и<=х ^ (и) = /(X) для всех ; € {1,..., fc}. Более того, согласно утверждению 14.10 имеем ^ueWb<j(ii) < f(W) для всех W C.JJ и j е {1,..., fc}. Отсюда для всех W CU получаем к к fc fc ueX ueXj=l j=l ueX следовательно, X образует оптимальное решение. ? Лемма 14.21 (Скрейвер [31]). Каждая итерация алгоритма требует времени 0(п3 + уп2), где у— время, уходящее на один вызов оракула. Доказательство. Достаточно показать, что шаг (5) может быть выполнен за время О(п3 + уп2). Пусть х = ХХЬ<1 +... + Xkb<k ns^tt. Докажем вначале следующее утверждение. Утверждение. Для некоторого 5>0 вектор 5(х*~~xs) может быть представлен в виде выпуклой комбинации векторов Ъ^' — Ъ<1, где s <{v <{ t, причем данное представление может быть найдено за время 0(уп2). Для доказательства этого факта нам понадобится ряд предварительных наблюдений. Пусть5-<iv <i t. По определению Ь^ (и) = Ъ<{(и), где и<ts или u^iV.
406 Глава 14. Обобщения матроидов Поскольку функция / субмодулярна, для 5 <i и -<t v мы имеем Ъ<\и) =/({ш € U: ш <l'v и}) -f({w <=U:w <l'v и}) < < f({w eU:w<i u})-f({w <=U:w<iii}) = b^(u). Более того, при и = v мы имеем И"(у) =/({ш е U: w ^ v}) -/({и/ е 17: и; ч*'у у}) = = /({ш€1Г: u/^;s}uM)-/({u/€l/: и;Ч;5})> > /({и/ eU:w<t v})-f({w е 17: w ^ v}) = b^(v). Наконец заметим, что ueU иеи Поскольку утверждение тривиально в случае, если Ъ^' = Ъ<1 для некоторого v, s -<i v <i t, можно считать, что Ь^' (у) > Ь^(и) для всех таких v. Положим рекурсивно V<iW<it к„ := тъ ^ 0 для s <tv <it\i получим поскольку для всех и, s<tu <t t, и сумма по всем координатам равна нулю. Для завершения доказательства вспомогательного утверждения теперь достаточно положить и умножить каждое из ки на 5. Рассмотрим теперь е := тт{\{5, — x{t)} и положим х' := х + e(^f — #s). Если е = Af5 < —x(t), то имеем x'^Xjb^ + X^vib^-b^), т. е. х7 является выпуклой комбинацией векторов Ь** (j е {1,..., /с} \ {i}) и Ь4*' (s -<i v <{t). Если в = — x(t), то в данном выражении мы дополнительно могли воспользоваться вектором Ъ<{. Наконец, упростим за время 0(п3) построенную выпуклую комбинацию, оставив в ней не более п векторов, как показано в упражнении 5 из гл. 4. ? Лемма 14.22 (Фиген [32]). Алгоритм Скрейвера завершает работу за 0(п5) итераций.
§ 14.4. Алгоритм Скрейвера 407 Доказательство. Если после того, как на шаге (5) был добавлен новый вектор Ь^ , в орграфе появляется ребро (и, w), то на данной итерации справедливо соотношение s<tw <tv <t t. Таким образом, на данной итерации имеем d{w) < < d{s) + 1 = d(t) < d(v) + 1, и появление нового ребра не может уменьшить расстояние от Р до любого элемента и е U. Поскольку шаг (5) гарантирует, что элементы не добавляются к множеству Р, на протяжении работы расстояние d{u) не уменьшается для всех ugU. Назовем этапом последовательность итераций, на протяжении которых пара (t, s) не изменяется. Заметим, что этап состоит из 0(п2) итераций, поскольку пара (a, fi) лексикографически уменьшается на каждой итерации в пределах этапа. Осталось доказать, что всего возможно 0(гг3) этапов. Как следует из выбора t и s, на итерации с t = t* не может появиться ребра, концом которого будет t*. Кроме того, вершина и может быть добавлена в N, только если v = s,a. тогда d{v) <d{t). Поэтому этап может завершиться хотя бы по одной из следующих причин: (а) для некоторой вершины и е U расстояние d(y) увеличилось; (б) вершина t была, удалена из N; (в) ребро (s, t) было удалено из А. Подсчитаем отдельно число возможных этапов каждого из этих трех типов. Очевидно, возможно не более 0(п2) этапов типа (а). Рассмотрим тип (б). Докажем, что для любой вершины t* eU возможно 0(п2) итераций, на протяжении которых t = t* и x'(t) = 0. Это легко видеть: между двумя любыми подобными итерациями значение d(v) должно измениться для некоторой вершины и е U, а это может произойти 0(п2) раз, поскольку значения d могут лишь увеличиваться. Таким образом, всего возможно 0(п3) этапов типа (б). Покажем наконец, что возможно 0(п3) этапов типа (в). Достаточно установить, что по окончании очередного такого этапа значение d(t) обязано измениться, до того как начнется следующий подобный этап с той же парой (t, 5). Ддя вершин syteU вершину s мы назовем t-скучной, если (s, t) $А или d(t) < < d(s). Пусть s*, t* g U. Рассмотрим промежуток времени с того момента, когда этап с s = 5* и t = t* завершился, поскольку ребро (s*, t*) было удалено из А, и до следующего изменения d(t*). Докажем, что все вершины v е {5*,..., п} являются t*-скучными на протяжении этого промежутка времени. Тогда для завершения доказательства достаточно будет положить и = s*. В начале рассматриваемого промежутка каждая из вершин v е {s* +1,..., п} является ?* -скучной согласно выбору s = s* на итерации, непосредственно предшествующей началу промежутка. Вершина 5* также является t*-скучной, поскольку ребро (s*, t*) удалено из А. Поскольку значение d(t*) остается неизменным на протяжении рассматриваемого промежутка и d(v) не уменьшается для любой вершины v, достаточно лишь проанализировать вновь добавляемые ребра. Предположим, что для некоторой вершины v е {5*, ...,п} ребро (у, t*) оказывается добавлено к А после итерации, на которой была выбрана пара (s, t).
408 Глава 14. Обобщения матроидов Тогда согласно сделанным ранее замечаниям на данной итерации справедливо соотношение s :<i t* <t и <t t, и, значит, d(t*) < d(s) + 1 = d(t) < d(v) + 1. Рассмотрим два возможных случая. Если s > и, то d(t*) < d(s), поскольку либо t* = 5, либо вершина 5 была ?*-скучной и (s, t*) е А. Если же s < v, то имеем d(t) < < d{y). Последнее неравенство следует либо из равенства t = v, либо из выбора s и того факта, что (v, i) € Л. В обоих случаях d(t*) < d(i>) и вершина и остается Г*-скучной. П Из теоремы 14.20, леммы 14.21 и леммы 14.22 вытекает следующий результат. Теорема 14.23. Задача минимизации субмодулярной функции может быть решена за время 0(п8 + уп7), где у — время, уходящее на вызов оракула. ? Ивата [20] предложил полностью комбинаторный алгоритм (в котором используются лишь сложения, вычитания, сравнения и вызовы оракула, но не используются умножения и деления). Он также улучшил время работы алгоритма (Ивата [21]). На текущий момент наиболее быстрый сильно полиномиальный алгоритм принадлежит Орлину [28]; время его работы составляет 0(пв + уп5). § 14.5. Симметрические субмодулярные функции Субмодулярная функция /: 2и —> R называется симметрической, если f(A) = = f(U\A) для всех А с и. В этом частном случае задача минимизации субмодулярной функции является тривиальной, поскольку 2/(0) = /(0) + /(?/) < /(А) + /(1ДА) = 2/(А) для всех А Я: U, откуда вытекает, что пустое множество является оптимальным. Следовательно, задача может представлять интерес, только если этот тривиальный случай явным образом исключается из рассмотрения. Итак, будем искать такое непустое собственное подмножество А множества U, что значение /(А) минимально. Обобщая алгоритм из § 8.7, Кейранн [29] обнаружил сравнительно простой комбинаторный алгоритм для данной задачи, требующий лишь 0(п3) вызовов оракула. Следующее утверждение представляет собой обобщение леммы 8.41 (упражнение 16). Лемма 14.24. Пусть задана симметрическая субмодулярная функция f: 2и —> R, и пусть п :=\U\> 2. Тогда можно найти такие элементы х,у eU, что хфу и /({*}) = т*п{/СЮ: хеХ с U\{y}}, за время 0(п2в), где в — оценка времени одного вызова оракула для /. Доказательство. Упорядочим множество U = {иъ ...,ип], для чего выполним следующие действия для к = 1,..., п — 1. Предположим, что элементы иъ..., ик_г уже выбраны; пусть ик_г := {иъ...,ик_г}. Для подмножества С с и положим wk(C):=f(C)-l{f(C\Uk_1)+f{CUUk_1)--f{Uk_1)).
§ 14.5. Симметрические субмодулярные функции 409 Отметим, что функция Wy. также является симметрической. Пусть ик — элемент множества U\Uk_i, который максимизирует значение Щс({ик}). Наконец, пусть ип — единственный элемент, оставшийся в и\{иъ ..., ип_г}. Очевидно, что описанное построение порядка иъ..., ип возможно за время 0(п2в). Утверждение. Для всех к = 1,..., п — 1 и всех таких хуу е U\Uk_1} что хфу и wk({x}) < wk({y}), справедливо равенство wk({x}) = mm{wk(C): хеС с U\{y}}. Докажем данное утверждение индукцией по к. При fc = 1 оно тривиально, поскольку ша(С) = 9/(0) Д™ всех С с и. Пусть теперь к > 1 и х,у е U\Uk_lf причем хфу и wk({x}) < wk({y}). Далее, рассмотрим такое подмножество Z с [/, что ик_г ? Z, и пусть г е Z \ ик_г. Согласно выбору элемента ик_г мы имеем w^^iz}) < шк_г({ик_1}); тогда по индуктивному предположению получаем 1ик_г({г}) < u;fc_1(Z). Более того, из субмодулярности функции / вытекает соотношение K(Z) - wk_^Z)) - {wk{{z}) - w^ ({*})) = = \ (/(Z U Uk_2) - /(Z и i/fc_!) -/(f/fc_2) + /№-1))- - \ (/({*} U Uk_2) -/({*} U 17M) ~f{Uk_2) + /(l/fc_!)) = = i (/(Z U l/fc_2) + /({*} U I/M) -/(Z U l/M) -/({*} U l/M)) > 0. Следовательно, u;fc(Z) — wfc({z}) > wk_^{Z) — шк_г({г}) > 0. Для завершения доказательства утверждения рассмотрим такое подмножество С с и, что хеСиу^С. Возможны два случая. Случай 1: ик_г ф С. Тогда по доказанному выше неравенству при Z = Cnz=x получаем wk(C) > wk({x}), как и требовалось. Случай 2: ик_г е С. Применим тогда доказанное неравенство к Z = U\C nz = y и получим шк(С) = wk(U\C) > wk({y}) > wk({x}). Доказательство вспомогательного утверждения завершено. Применяя его при к = п — 1, х = ипи у = ип_ъ мы получаем "Vi({un}) = minfuv.iCC) :un€CC LAK^}}. Поскольку ^„-i(C) = /(C) -1 (/({un}) + /(1/\{ип_х}) -/(t/n_2)) для всех таких С с [/, что un е С и un_x ^ С, отсюда следует утверждение леммы (возьмем х :=ипи у := ип_г). П Приведенное выше доказательство было предложено Фуджисиге [16]. Дальнейшее рассуждение можно провести аналогично доказательству теоремы 8.42. Теорема 14.25 (Кейранн [29]). Для заданной симметрической субмодулярной функции/: 2U—>R непустое собственное подмножество А множества U, на котором достигается минимум /(А), может быть найдено за время 0(п3в), где в — время одного вызова оракула для /.
410 Глава 14. Обобщения матроидов Доказательство. Если \U\ = 1, то задача тривиальна. В противном случае применим лемму 14.24 и найдем такие два элемента х, у е U, что /({*}) = min{/(J0: х € X с [/\ {у}}. На это уйдет время О(п20). Затем рекурсивно найдем непустое собственное подмножество множества [/\{х}, минимизирующее функцию /': 2и^^ —> R, которая задается равенствами /'СЮ := /СЮ при у?Х и /'СЮ •= f(XU {х}) при у е X. Несложно заметить, что функция /' симметрическая и субмодулярная. Пусть Y с 1/ДМ — непустое множество, минимизирующее /'. Без ограничения общности можно считать, что у € У (поскольку функция /' симметрическая). Утверждается, что либо множество {*}, либо множество Y U {х} минимизирует функцию / (по всем непустым собственным подмножествам множества U). Для доказательства рассмотрим произвольное подмножество С с U, удовлетворяющее условию х е С. Если у ? С, то имеем /({*}) < /(С) согласно выбору х и у. Если у € С, то /(С) = /'(С\{*}) > /7(У) = /(7 U {*}). Итак, /(C)>min{/({x}),/(7uW)} для всех непустых собственных подмножеств С множества I/. Для того чтобы получить требуемое время работы, мы, конечно же, не можем строить функцию /' в явном виде. Вместо этого будем хранить разбиение множества U, изначально состоящее из одноэлементных подмножеств. На каждом шаге рекурсии мы объединяем те два из подмножеств текущего разбиения, которые содержат х и у. Таким образом, значения функции /' могут быть найдены эффективно (с использованием оракула для /). ? Данный результат был далее обобщен Нагамочи и Ибараки [27], а также Рицци [30]. Упражнения 1. Пусть G — неориентированный граф, а М — максимальное паросочета- ние в G. Обозначим через & семейство всех подмножеств X с E(G), для которых существует специальный цветущий лес F относительно М, удовлетворяющий условию E(F) \М = X. Докажите, что система (Е (G) \М, &) является гридоидом. Указание. Воспользуйтесь упражнением 24 из гл. 10. 2. Пусть (Е,&) — гридоид, с': Е —> R+. Рассмотрим функцию вида c(F) := := min{c'(e): е € F}, заданную для подмножеств F с Е. Покажите, что жадный алгоритм для полиматроида при применении к (?, Яис находит максимальное по включению подмножество F € ^, для которого значение c(F) максимально. 3. В данном упражнении будет показано, что гридоиды могут быть также описаны в терминах формальных языков (см. определение 15.1). Пусть Е — конечное множество. Язык L над алфавитом Е называется гридоидным языком, если (а) L содержит пустую строку; (б) х{ ф Xj для всех (*!,..., хп) gLh1<i<;<7i; (в) (хъ ...,хп_г) €L для всех (хг, ...,xn)eL;
Упражнения 411 (г) если (*!,...,хп), (у1? ...,ут) еL, где т < п, то существует такой индекс i € {1,..., п}, что (у1?..., ут, xt) е L. Язык L называется антиматроидным, если он удовлетворяет свойствам (а), (б), (в), а также следующему свойству: (г') если (хъ ..., хп), (уъ..., ут) е L, причем {хъ ..., хп) % {уъ ..., ут}, то существует такой индекс i е {1,..., п}, что (уъ..., ym, jc^) е L. Докажите, что язык L над алфавитом Е является гридоидным языком (антиматроидным языком), если и только если система множеств [Е, &) является гридоидом (антиматроидом), где & := {{хъ ..., л:п}: (хъ..., хп) е L}. 4. Пусть U — конечное множество, /: 2и —> R. Докажите, что функция / субмодулярна, если и только если /(X U {у, z}) —f(XU {у}) </(XU {*}) — f(X) для всех таких X с [/ и у, z е С/, что у / z. 5. Рассмотрим сеть (G, u,s, t) и положим U:=5+(s). Обозначим P:={xeR^: существует такой s-t-поток / в (G, и), что /(e) = хе для всех е е [/}. Докажите, что Р является полиматроидом. 6. Пусть Р — полиматроид. Покажите, что существует такая субмодулярная и монотонная функция /, что /(0) = 0 и Р = Р(/). 7*. Докажите, что непустой компакт PCRJ является полиматроидом, если и только если (а) для всех х, у, 0 < х < у е Р, выполнено условие х е Р; (б) для всех хе!"и всех таких у, z < х, что элементы y,zeP являются максимальными с данным свойством (т. е. если у<ш<хишеР, то ш = у, а если z < ш < х и ш е Р, то w = z), справедливо равенство Ну = tz. Замечание. Данное определение было приведено в оригинальной работе Эд- мондса [9]. 8. Докажите, что жадный алгоритм для полиматроида, примененный к вектору сеR^, все координаты которого положительны, и субмодулярной, но не обязательно монотонной функции /: 2Е —> R, где /(0) > 0, находит оптимум max \ сх: У, хе ^ /(Л) Для всех ^ ^ Е \ • ^ ееА ' 9 (Франк [14]). Докажите теорему 14.12 в частном случае, когда / и g служат ранговыми функциями матроидов. Для этого постройте целые оптимальные решения по векторам сх и с2, получающимся в результате применения алгоритма взвешенного пересечения матроидов. 10* (Ловас [26]). Пусть S — конечное множество, и пусть задана функция /: 2s —> R. Определим функцию /': R+ —> R следующим образом. Для любого вектора х €R^ существуют такие однозначно определенные числа к €Z+, Хъ..., Хк > О и последовательность множеств 0 с 7\ с Т2 с ... с Тк с S, что х = X;=i ^чу?Т*> гДе XTi —характеристический вектор множества Tt. Тогда /'(*) := 2]i=1 Я^/(7^). Докажите, что функция / субмодулярна, если и только если функция /' выпукла. 11 (Йенсен и Корте [23], Ловас [25]). Пусть Е — конечное множество, и пусть /: 2е —> R+ — такая субмодулярная функция, что /({е}) < 2 для всех еб?.
412 Глава 14. Обобщения матроидов (Пару (?,/) иногда называют 2-полиматроидом.) Задача о полиматроидном паросочетании (polymatroid matching problem) состоит в нахождении максимального по размеру подмножества X ?Е, удовлетворяющего условию f(X) = 2\Х\. (Функция / при этом, конечно, задается в виде оракула.) Пусть Еъ...,Ек — попарно непересекающиеся неупорядоченные пары, и пусть (Е, &) — матроид (заданный оракулом независимости), где Е=Ег и... UЕк. Задача о матроидном паросочетании при разбиении на пары (matroid parity problem) состоит в нахождении максимального по размеру множества J с {1,... ук}, удовлетворяющего условию [JieI Et е &. (а) Покажите, что задача о матроидном паросочетании при разбиении на пары полиномиально сводится к задаче о полиматроидном паросочетании. (б)* Покажите, что задача о полиматроидном паросочетании полиномиально сводится к задаче о матроидном паросочетании при разбиении на пары. Указание. Воспользуйтесь алгоритмом для задачи минимизации субмодулярной функции. (в)* Покажите, что не существует алгоритма для задачи о полиматроидном паросочетании, время работы которого полиномиально по размеру |Е|. (Одна задача называется полиномиально сводящейся к другой, если первая может быть решена за полиномиальное время с помощью алгоритма, имеющего доступ к оракулу, решающему вторую задачу; см. гл. 15.) Замечание. Полиномиальный алгоритм для одного из важных частных случаев данной задачи был предложен Ловасом [24,25]. 12. Функция /:2s—»Ru{oo} называется кроссингово субмодулярной (crossing submodular), если для любых таких множеств X, У с S, что ХПУффиХиУфБ, справедливо неравенство f{X) + /(У) > f{X U У) + f{X П У). Задача о субмодулярном потоке (submodular flow problem) заключается в следующем. Пусть заданы орграф G, функции Z: E(G)—>RU{—<»}, u: ?(G) —>Ru{oo}, с: E(G) —> R и кроссингово субмодулярная функция b: 2V(G) ->1и{оо}. Тогда допустимый субмодулярный поток представляет собой функцию /: E(G) —> R, удовлетворяющую условиям 1(e) < /(e) < и{е) для всех е е E(G) и J^fW-YtfieXbiX) ееб-(Х) ее5+(Х) для всех X с V(G). Требуется выяснить, существует ли хотя бы один допустимый поток, и в случае положительного ответа найти такой поток, стоимость которого 2eeE(G) с(е)/(е) МИНИМаЛЬНа. Покажите, что данная задача обобщает задачу о потоке минимальной стоимости и задачу оптимизации линейной функции по пересечению двух полимат- роидов. Замечание. Данная задача о субмодулярном потоке, введенная Эдмондсом и Джайлсом [11], может быть решена за сильно полиномиальное время; см. работу Фуджисиге, Река и Циммермана [17]. См. также работу Флейшер и Иваты [13].
Литература 413 13* (Эдмондс и Джайлс [11]). Покажите, что система неравенств, задающая допустимые субмодулярные потоки (упражнение 12), обладает свойством TDI. Покажите, что отсюда следуют теоремы 14.12 и 19.17. 14. Докажите, что множество вершин полиэдра баз субмодулярной функции /, для которой /(0) = 0, в точности совпадает с множеством векторов вида Ь* для всевозможных линейных порядков -< на U. Здесь Ьч(ц) := f({v <=U:v< u})-f({v sU:u< и}), ueU. Указание. См. доказательство теоремы 14.11. 15. Пусть /: 2и —> R — такая субмодулярная функция, что /(0) = 0, и пусть В(/) — ее полиэдр баз. Докажите, что min{/(X): X с [/} = max! ^ z{u): z(A) < min{0, /(Л)} для всех А с и = max|2 min{0, у {и)}: у еВ(/) Указание. Воспользуйтесь следствием 14.14 или корректностью алгоритма Скрейвера. 16. Покажите, что лемма 8.41 является частным случаем леммы 14.24. 17 (Фейге, Миррокни и Вондрак [12]; в данной работе приводятся также более сильные результаты). Пусть /: 2и —>R — субмодулярная функция. Пусть R — случайное подмножество множества U, в которое каждый элемент попадает независимо с вероятностью 1/2. Докажите следующие утверждения: (а)Ехр(/(Л))>|(/(0)+/(1/)); (б) для всех А с и справедливо неравенство Ехр(/(Д)) > |(/(0) +/(А) +/(1/\А) +/(!/)); (в) если функция / неотрицательна, то Exp(/(R)) > - тахдсиДА)- Указание. Для доказательства п. (б) примените свойство (а) дважды. Замечание. Из п. (в) следует наличие вероятностного 4-приближенного алгоритма для задачи максимизации субмодулярной функции (в предположении ее неотрицательности). Данная задача не может быть решена точно за полиномиальное количество обращений к оракулу. Литература Общая литература [1] Bixby R. Е., Cunningham W. Н. Matroid optimization and algorithms // Handbook of Combinatorics; Vol. 1 (R. L. Graham, M. Grotschel, L. Lovasz, eds.), Elsevier, Amsterdam, 1995. [2] BjornerA., Ziegler G. M. Introduction to greedoids // Matroid Applications (N. White, ed.), Cambridge University Press, Cambridge, 1992. •
414 Глава 14. Обобщения матроидов [3] Frank A. Connections in Combinatorial Optimization. Oxford University Press, Oxford, 2011. [4] Fujishige S. Submodular Functions and Optimization. Second Edition. Elsevier, Amsterdam, 2005. [5] Iwata S. Submodular function minimization // Mathematical Programming. Ser. B. 2008. Vol.112. P. 45-64. [6] Korte В., Lovdsz L., Schrader R. Greedoids. Springer, Berlin, 1991. [7] McCormick S. T. Submodular function minimization // Discrete Optimization (K. Aardal, G. L. Nemhauser, R. Weismantel, eds.), Elsevier, Amsterdam, 2005. [8] SchrijverA. Combinatorial Optimization: Polyhedra and Efficiency. Springer, Berlin, 2003, Chapters 44-49. Процитированные работы [9] Edmonds J. Submodular functions, matroids and certain polyhedra // Combinatorial Structures and Their Applications; Proceedings of the Calgary International Conference on Combinatorial Structures and Their Applications 1969 (R. Guy, H. Hanani, N. Sauer, J. Schonheim, eds.), Gordon and Breach, New York, 1970. P. 69-87. [10] Edmonds J. Matroid intersection // Discrete Optimization I (P. L. Hammer, E. L. Johnson, В. H. Korte, eds.), North-Holland, Amsterdam, 1979. (Annals of Discrete Mathematics; Vol.4). P.39-49. [11] Edmonds J., Giles R. A min-max relation for submodular functions on graphs // Studies in Integer Programming (P. L. Hammer, E. L. Johnson, В. H. Korte, G. L. Nemhauser, eds.), North-Holland, Amsterdam, 1977. (Annals of Discrete Mathematics; Vol.1). P. 185-204. [12] Feige U., Mirrokni V. S., Vondrdk J. Maximizing non-monotone submodular functions // SIAM Journal on Computing. 2011. Vol.40. P. 1133-1153. [13] Fleischer L., Iwata S. Improved algorithms for submodular function minimization and sub- modular flow // Proceedings of the 32nd Annual ACM Symposium on Theory of Computing. 2000. P. 107-116. [14] Frank A. A weighted matroid intersection algorithm // Journal of Algorithms. 1981. Vol. 2. P. 328-336. [15] Frank A. An algorithm for submodular functions on graphs // Bonn Workshop on Combinatorial Optimization (A. Bachem, M. Grotschel, B. Korte, eds.), North-Holland, Amsterdam, 1982. (Annals of Discrete Mathematics; Vol.16). P. 97-120. [16] Fujishige S. Another simple proof of the validity of Nagamochi and Ibaraki's min-cut algorithm and Queyranne's extension to symmetric submodular function minimization // Journal of the Operations Research Society of Japan. 1998. Vol. 41. P. 626-628. [17] Fujishige S., Rock H., Zimmermann U. A strongly polynomial algorithm for minimum cost submodular flow problems // Mathematics of Operations Research. 1989. Vol. 14. P. 60-69. [18] Grotschel M., Lovdsz L., SchrijverA. The ellipsoid method and its consequences in combinatorial optimization // Combinatorica. 1981. Vol. 1. P. 169-197. [19] Grotschel M., Lovdsz L., Schrijver A. Geometric Algorithms and Combinatorial Optimization. Springer, Berlin, 1988. [20] Iwata S. A fully combinatorial algorithm for submodular function minimization // Journal of Combinatorial Theory. Ser. B. 2002. Vol. 84. P. 203-212.
Литература 415 [21] Iwata S. A faster scaling algorithm for minimizing submodular functions // SIAM Journal on Computing. 2003. Vol. 32. P. 833-840. [22] Iwata S., Fleischer L., Fujishige, S. A combinatorial, strongly polynomial-time algorithm for minimizing submodular functions // Journal of the ACM. 2001. Vol. 48. P. 761-777. [23] Jensen P. M., Korte B. Complexity of matroid property algorithms // SIAM Journal on Computing. 1982. Vol.11. P. 184-190. [24] Lovdsz L. Matroid matching and some applications // Journal of Combinatorial Theory. Ser. B. 1980. Vol. 28. P. 208-236. [25] Lovdsz L. The matroid matching problem // Algebraic Methods in Graph Theory; Vol. II (L.Lovasz, V.T.Sos, eds.), North-Holland, Amsterdam, 1981, 495-517. [26] Lovdsz L. Submodular functions and convexity // Mathematical Programming: The State of the Art —Bonn 1982 (A.Bachem, M.Grotschel, B. Korte, eds.), Springer, Berlin, 1983. [27] Nagamochi H., Ibaraki T. A note on minimizing submodular functions // Information Processing Letters. 1998. Vol. 67. P. 239-244. [28] Orlin J. B. A faster strongly polynomial time algorithm for submodular function minimization // Mathematical Programming. 2009. Vol. 118. P. 237-251. [29] Qu.eyra.nne M. Minimizing symmetric submodular functions // Mathematical Programming. Ser. B. 1998. Vol. 82. P. 3-12. [30] Rizzi R. On minimizing symmetric set functions // Combinatories 2000. Vol. 20. P. 445-450. [31] SchrijverA. A combinatorial algorithm minimizing submodular functions in strongly polynomial time // Journal of Combinatorial Theory. Ser. B. 2000. Vol. 80. P. 346-355. [32] Vygen J. A note on Schrijver's submodular function minimization algorithm // Journal of Combinatorial Theory. Ser. B. 2003. Vol. 88. P. 399-402.
ГЛАВА 15 NP-полнота В настоящее время полиномиальные алгоритмы известны для многих задач комбинаторной оптимизации; некоторые наиболее важные из таких алгоритмов описаны в настоящей книге. Однако существует множество интересных задач, для которых вопрос существования полиномиального алгоритма остается открытым. Несмотря на то что мы не можем доказать, что искомых алгоритмов не существует, можно показать, что из наличия полиномиального алгоритма для единственной «сложной» (точнее говоря, А/Р-трудной) задачи следует существование полиномиальных алгоритмов практически для всех задач, обсуждаемых в данной книге (более точно—для всех NP-простых задач). Чтобы формализовать эти понятия и доказать сформулированное утверждение, нам потребуется фиксировать модель вычислений, т. е. дать точное определение алгоритма, имеющего полиномиальное время работы. В § 15.1 мы обсудим понятие машины Тьюринга. Эта теоретическая модель не слишком удобна для описания сложных алгоритмов. Однако утверждается, что она эквивалентна неформальному понятию об алгоритме: каждый алгоритм, представленный в данной книге, теоретически может быть задан с помощью машины Тьюринга, причем возникающее при этом увеличение времени работы полиномиально ограничено сверху. Мы обсудим этот факт подробнее в § 15.2. В § 15.3 вводится понятие задачи разрешения, а также классов Р и NP. В то время как класс NP содержит большинство задач разрешения, встречающихся в этой книге, класс Р включает в себя лишь те из них, для которых существуют полиномиальные алгоритмы. В настоящее время вопрос о равенстве Р = NP является открытым. Хотя далее нам встретится много задач из класса NP, для которых полиномиальные алгоритмы не найдены, никто пока не может строго доказать, что таких алгоритмов не существует. Мы дадим определение сводимости одной задачи к другой и уточним, что значит, что одна задача по крайней мере настолько же сложна, как другая. В этом смысле наиболее сложные задачи из класса NP — это так называемые А/Р-трудные задачи. Для них полиномиальные алгоритмы существуют, если и только если Р = NP. В §15.4 мы опишем первую NP-полную задачу, называемую Satisfiability («выполнимость»). В § 15.5 мы докажем А/Р-полноту некоторых других задач разрешения, которые оказываются более тесно связанными с комбинаторной оптимизацией. Наконец, в § 15.6 и § 15.7 мы обсудим ряд дополнительных понятий, а также рассмотрим обобщение на случай оптимизационных задач.
§ 15.1. Машина Тьюринга 417 § 15.1. Машина Тьюринга В этом параграфе представлена чрезвычайно простая модель вычислений — так называемая машина Тьюринга. Входом и выходом данной машины являются двоичные строки, а сама машина может рассматриваться как последовательность простых инструкций, преобразующих вход в выход. Определение 15.1. Алфавит — это конечное множество, состоящее хотя бы из двух элементов и не содержащее специального символа U (который мы будем использовать для обозначения пробела). Для заданного алфавита А назовем строкой над А конечную последовательность элементов множества А. Обозначим через Ап множество строк длины п, а через А* := (Jn€Z Ап — множество всех строк над А. Условимся считать, что Л° содержит ровно один элемент — пустую строку. Языком над А называется подмножество множества Л*. Элементы языка часто называют словами. Если х е Ап, то длину строки обозначают size(x) :=п. Мы часто будем работать с алфавитом А = {О,1} и множеством {0,1}* всех 0-1-строк (или двоичных строк). Компоненты 0-1-строки иногда называют ее битами. Так, существует ровно одна 0-1-строка длины нуль, а именно пустая строка. Пусть задан некоторый фиксированный алфавит Л. Машина Тьюринга получает на вход строку хеА*. Входная строка считается дополненной пробелами (обозначаемыми через и) до бесконечной в обе стороны строки 5б(Ли {u})z. Эта строка s может рассматриваться как лента, по которой перемещается головка, способная выполнять операции чтения и записи. За один шаг лишь одна (текущая) позиция может быть считана и записана. За один шаг головка также может быть сдвинута на одну позицию в строке. Машина Тьюринга задается множеством из N + 1 инструкций, пронумерованных числами 0,..., N. Сначала исполняется инструкция 0, при этом начальная позиция головки равна 1. Каждая инструкция предписывает прочитать бит на текущей позиции и в зависимости от его значения выполнить следующие действия: записать вместо текущего бита некоторый заданный элемент из Л и {и}, а затем, возможно, переместить текущую позицию головки на один символ влево или вправо и, наконец, перейти к указанной инструкции, которая будет выполняться следующей. Существует специальная инструкция, обозначаемая —1, которая отмечает конец вычисления. Компоненты бесконечной строки s, стоящие на позициях 1, 2, 3, ... до первого символа U (не включительно), определяют выходную строку, т. е. ответ машины. После этих предварительных замечаний определим машину Тьюринга более формально. Определение 15.2 (Тьюринг [29]). Пусть А — алфавит, и пусть А := А и {и}. Машина Тьюринга с алфавитом А определяется функцией Ф: {0,..., N] х Л -> {-1,..., N] х А х {-1,0,1}
418 Глава 15. Л/Р-полнота для некоторого N е Z+. Вычисление машины Ф на входе х, где х е Л*, — это конечная или бесконечная последовательность троек вида (n^,s^, я^), где nw Е {—1,..., N}, sw G Л и ttw е Z (i = 0,1,2,...). Данные значения определяются рекурсивно следующим образом (при этом п^ обозначает текущую инструкцию, s® обозначает текущую строку («содержимое ленты»), а п^ — текущую позицию головки). Сначала определяем п(0) := 0, Sj := Xj для 1 < j < < size(x), 5. := U для всех j < 0 и j > size(x), а также тг^ := 1. Если (nw, 5(l), 7TW) уже определено, то возможны два случая. Если nw Ф —1, то пусть (т, сг, 5) := Ф (п(0,s®0). Положим n('+1) := т, s^1} := a, sf+1) := s}° для ; € Z\{ttw} и я('+1) := я(0 +*5. Если n(l) = —1, то последовательность на этом заканчивается. Положим йте(Ф, х) := i. Определим значение output (Ф, х) € Ак, где к := min{j € N: sf} = u} -1, равенством output^, x)j := s. при ; = 1,..., к. Если возникающая последовательность бесконечна (т. е. nw 7^ — 1 для всех i), то положим г\те(Ф,х) := оо. В этом случае значение output^, х) не определено. Конечно, в первую очередь нам интересны такие машины Тьюринга, вычисление которых конечно или даже полиномиально ограничено по длине. Определение 15.3. Пусть А — алфавит. Вычислительной задачей называется пара {X, R), где X с А* —язык и R с х х Л* —такое бинарное отношение, что для всех х еХ существует у € А*, для которого {х, у) е Д. Пусть Ф — такая машина Тьюринга с алфавитом А, что пте(Ф, х) < оо и (х, оШрШ:(Ф, х)) е R для всех хеХ. Тогда говорят, что Ф вычисляет {X, R). Если существует такой многочлен р, что для всех х е X справедливо неравенство йте(Ф, х) < p(size(x)), то Ф называется полиномиальной машиной Тьюринга. Если \{у € Л*: (х, у) е R}\ = 1 для всех х € X, то можно определить функцию /: X —> Л* условием (х, /(*)) е Я и сказать, что Ф вычисляет /. В случае, если X = Л* и /: X -> {0,1}, говорят, что Ф разрешает язык L := {х е X: f{x) = 1}. Если существует некоторая полиномиальная машина Тьюринга, вычисляющая функцию / (или разрешающая язык L), то говорят, что функция / вычислима за полиномиальное время (или язык L разрешим за полиномиальное время соответственно). Чтобы сделать эти определения более понятными, приведем пример. Машина Тьюринга Ф:{0,...,3}х{0,1,и}-^{-1,...,3}х{0,1,и}х{-1,0,1} вычисляет функцию прибавления единицы п •-> п + 1 (п € N). При этом числа считаются представленными в обычном двоичном виде: Ф(0,0) = (0,0,1 © While s^U do тг:=тг-Ы. Ф(0,1) = (0,1,1) Ф(0,1_1) = (1,U,-1) п:=п-1.
§15.2. Тезис Чёрча 419 ф(1,1) Ф(1,0) ф(1,|_|) *(2,0) Ф(3,0) ф(з,и) = (1,0,-1) = (-1,1,0) = (2.U.1) = 0,1,1) = (3,0,1) = (-1,0,0) (Т) While sn = 1 do sn := 0, п := If sn = 0 then sn := 1, stop. n:=n + l. (2) s„ := 1, n := n + 1. While sn = 0 do n := it +1. sn := 0, stop. Заметим, что некоторые значения Ф не определены, поскольку они никогда не используются алгоритмом. Комментарии в правой части иллюстрируют вычисление. Инструкции (2) и (3) используются, только если вход состоит из одних единиц, т. е. п = 2к — 1 для некоторого fc е N. Для всех входов х справедливо неравенство йте(Ф, х) < 3 size(x) + 3, поэтому Ф является полиномиальной машиной Тьюринга. В следующем параграфе будет показано, что приведенное выше определение согласуется с нашим неформальным представлением о полиномиальном алгоритме, описанном в § 1.2. А именно, каждый полиномиальный алгоритм, представленный в данной книге, может быть смоделирован некоторой полиномиальной машиной Тьюринга. §15.2. Тезис Чёрча Машина Тьюринга является наиболее привычной теоретической моделью для описания алгоритмов. Хотя она и может показаться весьма ограниченной, машина Тьюринга является столь же мощной, как и любая другая естественная вычислительная модель. А именно, множество вычислимых функций (а также множество функций, вычислимых за полиномиальное время) остается одним и тем же для любой естественной вычислительной модели. Это утверждение, известное как тезис Чёрча, конечно, слишком расплывчато, чтобы его доказывать. Однако существуют сильные результаты об эквивалентности моделей, его подтверждающие. К примеру, любая программа на каком-либо общераспространенном языке программирования, таком как СИ, может быть смоделирована машиной Тьюринга. В частности, все программы из этой книги могут быть переписаны как машины Тьюринга. Обычно подобная запись весьма громоздка и неудобна (поэтому мы никогда не будем к ней прибегать), но теоретически это преобразование возможно. Более того, любая функция, вычислимая за полиномиальное время программой на СИ, также вычислима за полиномиальное время на машине Тьюринга (и наоборот). Поскольку реализация сложных программ на машине Тьюринга оказывается нетривиальной задачей, в качестве промежуточного шага мы рассмотрим машину Тьюринга с двумя строками (лентами) и двумя независимыми головками для чтения и записи, по одной на каждой ленте. Определение 15.4. Пусть А — алфавит, А := A U {и}. Двулентпочная машина Тьюринга определяется функцией Ф: {0,..., N} х А2 -> {-1,..., N} х Л2 х {-1,0,1}2
420 Глава 15. NP-полнота для некоторого N е Z+. Вычисление Ф на входе х, где х е. А*,— это конечная или бесконечная последовательность пятерок вида где п(0 е {-1,..., N}, s(0, t(0 е Л и тг(0, рш € Z (i = 0,1,2,.. .)• Данные значения определяются рекурсивно следующим образом. Сначала определяем п(0) := 0, 5. := Xj для 1 < j < size(x), s. := U для всех j < 0 и j > size(x), t,- := U для всех j€Z,a также тг(0) := 1 и р(0) := 1. Если (n(l),s(l), tw, 7r(l),pw) уже определено, то возможны два случая. Если пю 7^-1, то пусть (т, а, т, 5, е) :=Ф(гг(0,5^0, t%). Положим n(i+1) :=т, s^] :=а, s«+1) :=s» для; €Z\{7cffl}, $» :=т, ^'+" :=Jm дня j 6Z\{p«b ^+1) :=^(0 + 5 ир^):=р(0 + б. Р Если п^ = —1, то последовательность на этом заканчивается. Значения йте(Ф,л:) и output(Ф,х) определяются так же, как и в случае одноленточной машины Тьюринга. Машины Тьюринга более чем с двумя лентами определяются аналогично, но они нам не понадобятся. Перед тем как приступить к описанию стандартных операций на двуленточной машине Тьюринга, заметим, что двуленточная машина Тьюринга может быть промоделирована обыкновенной (одноленточной) машиной Тьюринга. Теорема 15.5. Пусть А — алфавит, и пусть Ф:{0,...,А[}х(Аи{и})2->{-1,...^}х(Ли{и})2х{-1,0,1}2 — двуленточная машина Тьюринга. Тогда существуют такой алфавит В 2 А и такая {рдноленточная) машина Тьюринга Ф/:{0,...,^}х(Ви{и})-^{-1,...,^}х(Би{и})х {-1,0,1}, что output^', х) = output^, х) и time^', х) = 0(йте(Ф, х))2 для всех х е Л*. Доказательство. Будем обозначать через 5 и t состояния ленты машины Ф. Обозначим также через п и р позиции головок данной машины (см. определение 15.4). Ленту машины Ф' обозначим через и, а позицию ее головки через гр. Закодируем обе строки 5, t и обе позиции головок я, р в виде единой строки и. Для этого каждый символ щ строки и представим четверкой (s;, pj91;, rj), где Sj и tj — соответствующие символы в s и t, а значения р;, rj- е {0,1} показывают, находятся ли головки первой и второй лент в позиции j, т. е. р; = 1, если и только если тс = ;, и /} = 1, если и только если р = ;. Положим теперь В := (Ах {0,1} х А х {0,1}). Элементы а е А будем отождествлять с четверками вида (а, 0, U, 0). (Так мы сможем подавать на вход новой машине строки из А*.) Первый шаг машины Ф' состоит в инициализации меток рг и гх значением 1: Ф'(0, (., 0,., 0)) = (1, (., 1,., 1), 0) ® к := гр, р := я/>. Здесь точка соответствует произвольному значению (которое не изменяется при выполнении инструкции).
§15.2. Тезис Чёрча 421 Покажем теперь, как реализовать произвольную инструкцию вида Ф(т, а, т) = (т', а', т', 5, в). Сначала мы должны найти позиции пир. Удобно считать, что наша единственная головка гр уже находится в той из позиций я и р, которая расположена левее, т. е. гр = пип{тг, р}. Нам нужно найти вторую позицию из пары пир. Для этого будем сканировать строку и слева направо и на каждом шаге проверять, выполнены ли равенства sn = а и tp = т. Когда требуемая позиция будет найдена, мы сможем выполнить требуемую операцию (записать новые символы в s и t, переместить головки п и р и перейти к следующей инструкции). Ниже мы приводим блок программы, реализующий инструкцию вида Ф(т, сг, т) = (т', а', т', б, в) для т = 0. Для каждого m мы имеем \А\ таких блоков, по одному для каждого варианта сг и т. Второй блок для т = 0 начинается с шага (13), а первый блок для т' — с шага (м), где М := 12\А\ т' + 1. Итого получаем А/7 = 12(JV + 1)|Л| . Как и ранее, точка обозначает произвольное значение, которое не изменяется. Аналогично ? и ? — произвольные элементы множеств А\{а} и А\{т} соответственно. Мы предполагаем, что вначале выполнено равенство гр = min{7r, р}. Заметим, что шаги @), (и) и (12) гарантируют выполнение этого свойства в конце: (1) If \p = n,sxl> фа goto @. If гр = р, ty Ф т goto @. If гр = п goto ©. Ifxp = p goto (б). (2) While xl)?pdo\l):=xl) + l. If fy / т then i/> := г/> -1, goto @. ty :=т', -0 :=я/> + е. (3) p:=-0, ^:=-0 + l- 0 While гр фп do гр :=гр — 1. s^ := а', гр:=гр + 5. (5) n :=гр,гр :=гр — 1. Goto ©. (6) While яр фп do ip—ip + l. If s^ фа then гр :=гр — 1, goto @. 5^ :=а',гр :=гр + 5. (7) n :=гр,гр :=гр + 1. (8) While гр ф p йогр :=гр — 1. Ц := т', гр:=гр + е. (9) р:=гр,гр:=гр-1. ф'(1,< ф'си ф'а,1 ф'си ф'ц,< *'(2,( Ф'(2,( Ф'(2,( Ф'(3,( Ф'(4,< Ф'(4,< Ф'(5,< Ф'(6,1 Ф'(6, 1 Ф'(6,( Ф'(7,1 Ф'(8,| Ф'(8,( Ф'(9,( :c,i,.,.)) :.,.,?,D) >,1,т,1)) >,1,.,0)) :.,о,т,1)) :.,.,., о» :.,.,с,1)) ;.,.,т,1)) :.,.,., о» ;.,о,.,.)) >,i,.,o) :.,о,.,о) :.,о,.,.)) :сл,.,о) >,i,.,-,)) ;.,о,.,о) :.,.,.,о)) :.,.,t,d) ;.,.,., о» = = = = = = = = = = = = = = = = = = = (13, (?,1,., 0,0) (13,(.,.,§,1),о) (2,(ст,1,т,1),0) (2,(ст,1,.,0),0) (6,(.,0,т,1),0) (2,(.,.,.,0),1) (12,(.,.,?,1),-1) (3,(.,.,т',0),е) (4,(.,.,.,1),1) (4, (., 0,., .),-1) (5, (а', 0,., 0,5) (10, (.,1,., 0,-D (6, (., 0,., 0,1) (12, (С, 1,., 0,-D (7, (а', 0,., 0,5) (8,(.,1,.,0,1) (8,(.,.,.,0),-1) (9,(.,.,т',0),е) (10, (.,.,.,!),-!)
422 Глава 15. NP-полнота ф'(ю, (.,.,.,.)) Ф'(П,(.,0,.,0)) ф'(11,0,1,.,.)) Ф'(П,0,0,.,1)) Ф'(12,(.,0,.,0)) Ф'(12,(.,1,.,.)) Ф'(12, (.,.,.,!)) = (И, С,- = (п, (.,о, = (м,(.,1, = ШЛ;0, = (12, (.,0, = (13,(.,1, = (13,0,.,. ,.),-!) -,0),1) ,.),о) ,1),0) -,0),-1) -,.),0) ,1),0) @ гр :=г/> —1. (п) While хр <? {п, р) do хр : Goto©. @ While хр <? {п,р} do хр : = хр + 1. = хр-1. Любое вычисление, выполняемое машиной Ф', проходит через не более чем \А\ подобных блоков для каждого шага вычисления машиной Ф. Количество шагов внутри каждого блока не превосходит 2|тг — р | + 10. Поскольку значение \А\ является константой и \п—р\ не превосходит йте(Ф, х), весь процесс работы машины Ф моделируется с помощью машины Ф7 за 0((Нте(Ф, х))2) шагов. В конце мы должны выполнить очистку выходной строки: заменить каждый символ (сг,.,.,.) на (сг, О, U, 0). Это, очевидно, не более чем удваивает общее количество операций. ? С помощью двуленточной машины Тьюринга уже не так трудно реализовать более сложные операции, которые понадобятся нам при описании алгоритмов. А именно, рассмотрим алфавит А = {0,1, #}. Будем кодировать набор из произвольного конечного числа переменных в виде строки jc0##1#x1##10#x2##11#X3##100#x4##101#x5## ..., (15.1) которую будем хранить на первой ленте. Каждая группа (кроме самой первой) содержит двоичное представление индекса i, за которым следует значение х{ (являющееся бинарной строкой). Первая переменная х0 и вторая лента используются в качестве регистров для промежуточных результатов шагов вычисления. Доступ к переменным по произвольным индексам за константное время для машины Тьюринга невозможен вне зависимости от того, сколько лент она имеет. При моделировании алгоритма на двуленточной машине Тьюринга, работающего с переменными xi9 нам довольно часто придется просматривать первую ленту целиком в поисках нужной переменной. Более того, если длина строки, хранящей значение переменной, изменяется, то записанная справа подстрока должна быть сдвинута. Несмотря на это, каждая стандартная операция (т. е. каждый элементарный шаг алгоритма) может быть выполнена за 0(12) вычислительных шагов двуленточной машины Тьюринга, где I —текущая длина строки (15.1). Попробуем пояснить эти рассуждения на конкретном примере. Рассмотрим инструкции, добавляющие к лг5 значение, хранящееся в переменной, индекс которой записан в х2. Чтобы найти значение лг5, мы сканируем первую ленту в поиске подстроки ##101#. Затем мы копируем подстроку, следующую за найденной, вплоть до символа # (не включая его) на вторую ленту. Этого легко достичь, поскольку у нас есть две отдельные читающие и пишущие головки. Затем мы копируем строку со второй ленты в х0. Если новое значение х0 короче или длиннее старого, то нам придется сдвинуть остаток строки (15.1) влево или вправо.
§15.2. Тезис Чёрча 423 Далее мы должны найти переменную, индекс которой хранится в переменной х2. Для этого скопируем сначала значение х2 на вторую ленту. Далее будем сканировать первую ленту, проверяя индекс каждой переменной (сравнивая его со строкой на второй ленте побитово). Когда мы встретим искомый индекс переменной, то скопируем значение данной переменной на вторую ленту. Теперь прибавим число, хранящееся в переменной х0, к числу на второй ленте. (Несложно построить машину Тьюринга, выполняющую эту операцию.) В процессе вычисления суммы мы можем выписывать ответ прямо на вторую ленту (поверх одного из слагаемых). В конце сложения искомый результат окажется выписан на второй ленте, и нам нужно будет скопировать его в х5. Если потребуется, сдвинем подстроку справа от х5 в нужную сторону. Все описанные выше действия могут быть проделаны на двуленточной машине Тьюринга за 0{12) шагов вычисления (на самом деле все действия, кроме сдвигов строки (15.1), могут быть выполнены за 0(1) шагов). Понятно, что аналогичные программы можно составить и для некоторых других стандартных операций, включая умножение и деление. По определению 1.4 алгоритм работает за полиномиальное время, если существует такое значение k е N, что число элементарных шагов ограничено выражением вида 0(пк) и любое значение, возникающее на промежуточных шагах, занимает 0(пк) бит, где п — размер входа. Более того, в промежуточные моменты времени алгоритм хранит не более 0(пк) чисел. Следовательно, длины строк, записанных на каждой из лент двуленточной машины Тьюринга, моделирующей работу такого алгоритма, не превосходят 1 = 0(пк • пк) = 0(п2к). Тогда время работы такой машины ограничено сверху значением 0{пк{п2к)2) = 0{пЪк). Последняя оценка полиномиальна по длине входа. Возвращаясь к теореме 15.5, можно сделать вывод, что для любой функции / существует полиномиальный алгоритм, вычисляющий /, если и только если существует полиномиальная машина Тьюринга, вычисляющая /. Поэтому в оставшейся части этой главы мы будем считать понятия алгоритма и машины Тьюринга эквивалентными. Более подробно вопросы эквивалентности различных машинных моделей рассматриваются в работах Хопкрофта и Ульмана [20], Льюиса и Пападимит- риу [23], а также ван Эмде Боаса [17]. Другая распространенная модель (которая близка к нашей неформальной модели из § 1.2) — RAM-машина (см. упражнение 3), которая выполняет арифметические операции за константное время. Существуют также модели, разрешающие лишь операции над отдельными битами (или целыми числами фиксированной длины). Такие модели более реалистично описывают работу с большими числами. Очевидно, сложение и сравнение натуральных чисел длиной п бит может быть выполнено за О(п) битовых операций. Для умножения (и деления) очевидный метод работает за 0(п2) двоичных операций, однако известен алгоритм Шёнхаге и Штрассена [27], требующий лишь O(nlognloglogn) двоичных операций для умножения гг-битовых целых чисел. Данный результат был впоследствии улучшен Фюрером [18]. Отсюда, конечно, следует алгоритм с аналогичной сложностью для сложения и сравнения
424 Глава 15. NP-полнота рациональных чисел. Отметим, что для класса полиномиальных вычислений все модели являются эквивалентными, однако конкретный вид функции сложности в разных моделях может значительно различаться. То, что для кодирования входных данных мы используем лишь 0-1-строки (или строки над любым другим фиксированным алфавитом), в принципе не исключает возможности работы с некоторыми типами вещественных чисел, например с алгебраическими числами (если х € R — fc-й в порядке возрастания вещественный корень многочлена р, то число х может быть закодировано указанием значения fc, а также степени и коэффициентов многочлена р). Однако не существует способа представить все вещественные числа в цифровом компьютере. Действительно, существует несчетное множество вещественных чисел и лишь счетное множество 0-1-строк. На протяжении этой главы мы будем придерживаться классического подхода и ограничимся лишь рациональными входами. В завершение параграфа дадим формальное определение алгоритмов, использующих оракул. Данное определение будет основано на понятии двулен- точной машины Тьюринга. Рассматриваемый тип алгоритмов может вызвать оракула в любой момент вычислений. Для записи запроса к оракулу и чтения его ответа используется вторая лента. Вызов оракула будет обозначаться с помощью специальной инструкции —2. Определение 15.6. Пусть А — алфавит, А := А и {и}, и пусть (X,R) — задача вычисления, где X с А*. Машина Тьюринга с оракулом, использующая (X, R), — это функция Ф:{0,...,А[}хЛ2-^{-2,...^}хЛ2хК0,1}2 для некоторого NgZ+. Процесс вычисления на ней определяется аналогично таковому для двуленточной машины Тьюринга с учетом следующих отличий. Изначально мы полагаем time(0) := 0. Пусть на каком-либо шаге вычислений i мы получаем Ф(п»5®,С®) = (-2,а,т,5,е) для некоторых сг, т, 5, е. Данная инструкция обозначает вызов оракула и выполняется следующим образом. Рассмотрим строку на второй ленте х е Ак, к := min{; е. N: t. = и} — 1, где х, := t® при ; = 1,..., к. Если х € X, то содержимое второй ленты перезаписывается так: t. = 35 Для J = 1> • • • > size (у) и si^e(y)+i = и> где У G ^* — такое слово, что (х, у) е R. После вызова оракула вычисление продолжается, причем time(l+1) := timew +1 + size(y) и n(l+1) := n(l) -I-1. Остальные части определения остаются без изменений. В частности, для обычных шагов (не приводящих к вызову оракула) мы полагаем time(l+1) := time(l) +1. Работа машины завершается, как обычно, при nw = —1, и в конце мы полагаем йте(Ф, х) := timew. Понятие выхода определяется так же, как и для двуленточной машины Тьюринга. Все представленные определения, касающиеся машин Тьюринга, могут быть распространены и на случай вычислений с оракулом. Заметим, что ответ оракула не обязательно однозначно определен, поэтому для одного и того же вхо-
§15.3. Классы? иNP 425 да возможны различные последовательности вычислений. При доказательстве корректности или оценке времени работы алгоритма с оракулом нам придется рассматривать все возможные вычисления, т. е. все возможные способы выбора оракула. Из результатов настоящего параграфа следует, что существование полиномиального алгоритма (с оракулом) эквивалентно существованию полиномиальной машины Тьюринга (с оракулом). §15.3. Классы Р и NP Большая часть теории сложности основана на задачах разрешения. Задачи разрешения— это особые вычислительные задачи. Любой язык L с {о, 1}* может быть интерпретирован как задача разрешения: пусть дана 0-1-строка и нужно решить, принадлежит ли она L. Больший интерес, однако, представляют такие задачи, как следующая. Hamiltonian Circuit (задача о гамильтоновом цикле) Дано: ненаправленный граф G. Вопрос: есть ли в G гамильтонов цикл? Мы всегда предполагаем, что вход эффективно закодирован в виде двоичной строки; иногда мы расширяем наш алфавит другими символами. К примеру, мы предполагаем, что граф задается списком смежности, и такой список может быть закодирован двоичной строкой длины 0(nlogm + mlogn), где пит — число вершин и ребер соответственно. Предполагается, что кодирование всегда эффективно, т. е. длина такой строки полиномиально ограничена сверху минимально возможной длиной закодированной строки. Не все двоичные строки могут быть входами задачи Hamiltonian Circuit, но только те из них, которые задают ненаправленный граф. Для большинства интересных задач разрешения входные данные — это подходящее подмножество 0-1-строк. Требуется, чтобы мы могли за полиномиальное время определить, является ли произвольная строка возможным входом или нет. Определение 15.7. Задача разрешения — это пара 9 = {X, У), где X — разрешимый за полиномиальное время язык и7СХ. Элементы множества X называются экземплярами задачи 9; элементы множества Y — положительными экземплярами, элементы множества X\Y — отрицательными экземплярами. Задача разрешения (X, Y) может быть рассмотрена как вычислительная задача {X, {{х, 1): х е Y] и {(*, 0): х € Х\У}). Поэтому алгоритм для задачи разрешения {X, Y) —это алгоритм, вычисляющий функцию /: X —»{0,1}, определенную соотношениями /(х) = 1 для х sY и f(x) = 0 для х € X \ Y. Приведем еще два примера задач разрешения, соответствующих изученным ранее задачам оптимизации Linear Programming и Integer Programming.
426 Глава 15. NP-полнота Linear Inequalities (задача о линейных неравенствах) Дано: матрица А € Zmxn и вектор Ъ € Zm. Вопрос: существует ли такой вектор х € Qn, что Ах < Ь? Integer Linear Inequalities (задача о целочисленных Дано: Вопрос: матрица AeZmxn линейных неравенствах) и вектор существует ли такой вектор b€Zm. jceZ", что Ах < Ь? Определение 15.8. Класс всех задач разрешения, для которых существуют полиномиальные алгоритмы, обозначается Р. Иначе говоря, элемент класса Р— это такая пара {X, Y), что Y с х с {о, 1}*, где и X, и 7 — языки, разрешимые за полиномиальное время. Чтобы доказать, что задача лежит в классе Р, обычно описывают полиномиальный алгоритм. В соответствии с результатами § 15.2 существует полиномиальная машина Тьюринга для каждой задачи из класса Р. По теореме Хачияна 4.18 задача Linear Inequalities принадлежит классу Р. Неизвестно, принадлежат ли задачи Integer Linear Inequalities или Hamiltonian Circuit классу P. Сейчас мы введем еще один класс, обозначаемый NP, который содержит эти задачи и большинство задач, обсуждаемых в этой книге. Теперь мы не настаиваем на том, чтобы алгоритм был полиномиальным, а только требуем существования для каждого положительного экземпляра задачи сертификата, который может быть проверен за полиномиальное время. Например, для задачи Hamiltonian Circuit возможный сертификат — это просто гамильтонов цикл. Легко проверить, является ли данная строка двоичным представлением гамильтонова цикла. Заметим, что мы не требуем сертификата для отрицательных экземпляров. Дадим формальное определение. Определение 15.9. Задача разрешения 2? = [X, Y) принадлежит классу Д/Р, если существуют такой многочлен р и такая задача разрешения &' = [Х\ Yf) из Р, где X' := {х#с: х е X, с € {0,1}^№Щ} что Y = {у GX: существует строка с € {0, i}LpCsize(>-))J^ ддд КОторой у#с е Y;}. Здесь запись х#с обозначает конкатенацию строки х, символа # и строки с. Строка с, для которой у#с е Y\ называется сертификатом для у (поскольку с доказывает, что у е У). Алгоритм для 2?' называется алгоритмом проверки сертификата. Утверждение 15.10. Справедливо включение Р с NP. Доказательство. Можно положить р тождественно равным нулю. Алгоритм для 2?' просто удаляет последний символ входа <ос#», а затем применяет алгоритм для 9. ?
§15.3. Классы? иNP 427 Неизвестно, верно ли равенство Р = NP. Этот вопрос представляет собой одну из важнейших открытых задач теории сложности. Приведем пример задачи из NP, для которой неизвестно, лежит ли она в Р. Утверждение 15.11. Задача Hamiltonian Circuit принадлежит NP. Доказательство. Дяя каждого положительного экземпляра G возьмем любой его гамильтонов цикл в качестве сертификата. Проверку того, является ли данное множество ребер гамильтоновым циклом заданного графа, очевидно, можно осуществить за полиномиальное время. ? Утверждение 15.12. Задача Integer Linear Inequalities принадлежит NP. Доказательство. В качестве сертификата возьмем вектор решения.. Если существует решение, то по следствию 5.7 существует также и решение полиномиальной длины. ? Название NP означает «nondeterministic polynomial». Чтобы пояснить его природу, введем понятие недетерминированного алгоритма. Для нас это также удобный повод определить рандомизированные алгоритмы в целом (об этом понятии мы уже упоминали ранее). Главное свойство рандомизированных алгоритмов состоит в том, что их вычисление основывается не только на входных данных, но и на некоторых случайных битах. Определение 15.13. Рандомизированным алгоритмом для вычисления функции /: S —> Г называется алгоритм, вычисляющий функцию g:{s#r:seS, г е {0,1}вд}-* Г, где fc: S —> Z+. Для каждого экземпляра s е S алгоритм может использовать k(s) е Z+ случайных бит. Время работы измеряется только относительно size(s); поэтому рандомизированные алгоритмы, работающие полиномиальное время, могут использовать только полиномиальное число случайных бит. Естественно, нас интересует такой алгоритм, только если / и g связаны. В идеальном случае, если g(s#r) = /(s) для всех 5 е S и всех г е {0,1}вд, говорят об алгоритме Лас-Вегаса. Алгоритм Лас-Вегаса всегда вычисляет правильный результат, но время его работы может отличаться от запуска к запуску на одном и том же входе s. Иногда интересны и менее надежные алгоритмы. Пусть существует положительная вероятность р правильного результата, не зависящая от входа, т. е. п. ^r|{r€{0,l}^:g(5#r) = /(5)}|^ „ р := шг гг. > О. Тогда данный алгоритм называется алгоритмом Монте-Карло. Если Т = {0,1} и для каждого такого s^S, что /(s) = 0, для всех г е {0, l}fc(s) выполнено условие g(s#r) = 0, то мы получаем рандомизированный алгоритм с односторонней ошибкой. Если к тому же для всех таких s G S, что /(s) = 1, существует хотя бы одно значение г € {0,1}ад, для которого g(s#r) = 1, то алгоритм называется недетерминированным.
428 Глава 15. NP-полнота С другой стороны, рандомизированный алгоритм может рассматриваться как алгоритм с оракулом, где оракул выдает случайный бит (0 или 1) в случае вызова. Недетерминированный алгоритм для задачи разрешения всегда возвращает «нет» для отрицательных экземпляров, и для каждого положительного экземпляра существует вероятность, что он вернет «да». Легко доказать следующее утверждение. Утверждение 15.14. Задача разрешения принадлежит классу NP, если и только если для нее существует полиномиальный недетерминированный алгоритм. Доказательство. Пусть 9 = (X, Y) — задача разрешения в NP, и пусть задача 9' = {Х\ У') определена аналогично определению 15.9. Тогда полиномиальный алгоритм для 9' является к тому же и недетерминированным алгоритмом для 9: неизвестный сертификат просто заменяется на набор случайных бит. Поскольку число случайных бит ограничено сверху многочленом от size (л:), хеХ, время работы тоже ограничено полиномом. Обратно, если для 9 = {X, Y) имеется полиномиальный недетерминированный алгоритм, в котором используется к(х) случайных бит для входа х, то существует такой многочлен р, что к{х) < p(size(x)) для каждого экземпляра х. Определим X' := {х#с: xeX,ce{0, i}LpW«M)J} и Y1 := {х#с е X': g{x#r) = 1, г состоит из первых к(х) бит строки с}. Тогда по определению недетерминированного алгоритма имеем (X',Y')eP и Y = {у € X: существует такая строка с € {0, i}^slze^^} что у#с е Y'}. D Большинство задач разрешения, встречающихся в комбинаторной оптимизации, принадлежат классу NP. Для многих из них неизвестно, существует ли полиномиальный алгоритм, их решающий. Однако можно сказать, что некоторые задачи не легче, чем другие. Чтобы дать точное определение, введем важное понятие полиномиального сведения, которое годится для вычислительных задач общего вида. Определение 15.15. Пусть 9г и 92 — вычислительные задачи. Говорят, что 9\ полиномиально сводится к 92, если существует полиномиальный алгоритм с оракулом для 9Ъ использующий 92. Следующее наблюдение является главной причиной для введения этого понятия. Утверждение 15.16. Если задача 9г полиномиально сводится к92и существует полиномиальный алгоритм, решающий 92, то существует и полиномиальный алгоритм для 9^- Доказательство. Пусть А2 — такой алгоритм для 92i что timeCA2> у) ^ Pi (size(y)) для всех экземпляров у из 92. Пусть Аг — алгоритм с оракулом для 9Ъ использующий 92 и такой, что Х\те(Аъ х) < p^sizeOO) для всех экземпляров хиз^. Тогда, заменяя вызовы оракула в Ах на подпрограммы, эквивалентные А2, полу-
§ 15.4. Теорема Кука 429 чим алгоритм А3 для 2РХ. Для всех экземпляров х из ^, для которых size(jc) = п, имеем time(A3j*) ^ PiM * P2(Pi(n))- Действительно, может быть не более Р\(п) вызовов оракула в Аъ и ни один из экземпляров 9>2, выданных алгоритмом Аъ не может быть длиннее Pi(n). Поскольку в качестве р1 и р2 можно выбрать многочлены, А3 будет алгоритмом, работающим за полиномиальное время. ? Теория NP-сложности основана на особом типе полиномиального сведения, который определен только для задач разрешения. Определение 15.17. Пусть 9\ = {X^,Y{) и &2 = (Х2,Y2)—задачи разрешения. Говорят, что 9^ полиномиально преобразуется в 92, если существует функция f:Xl^X2, вычислимая за полиномиальное время и такая, что /(хг) е Y2 для всеххгеУги /(хг) еX2\Y2 для всехх1 еХг\Уг. Другими словами, положительные экземпляры преобразуются в положительные, а отрицательные экземпляры преобразуются в отрицательные. Очевидно, что если задача 2Р\ полиномиально преобразуется в 9>2, то &х также полиномиально сводится к 9г. Полиномиальные преобразования также иногда называются сведениями Карпа, в то время как общие полиномиальные сведения также известны как сведения Тьюринга. Оба вида сведений, очевидно, являются транзитивными. Определение 15.18. Задача разрешения 9 eNP называется NP-полной, если все другие задачи из класса NP полиномиально преобразуются к задаче 9. Из утверждения 15.16 следует, что если полиномиальный алгоритм существует хотя бы для одной NP-полной задачи, то Р = NP. Конечно, данное выше определение окажется бессмысленным, если не существует NP-полных задач. Следующий параграф посвящен доказательству существования NP-полной задачи. § 15.4. Теорема Кука В своей новаторской работе [15] Кук доказал, что так называемая задача выполнимости (Satisfiability) является NP-полной. Чтобы сформулировать и доказать его результат, нам понадобятся следующие определения. Определение 15.19. Пусть X — конечное множество булевых переменных. Истинностная оценка для X — это функция Т: X —> {true,false}. Продолжим Г на множество L := X и {х: х е X}, полагая Т(х) := true, если Т(х) :=false, и наоборот (так что х может рассматриваться как отрицание элемента х). Элементы множества L называются литералами над X. Клауза над X — это множество литералов над X. Клауза соответствует дизъюнкции своих литералов, поэтому она выполняется при заданной истинностной оценке, если и только если хотя бы один из входящих в нее литералов имеет значение true. Семейство клауз над X называется выполнимым, если и только если существует истинностная оценка, выполняющая все клаузы.
430 Глава 15. А/Р-полнота Поскольку мы рассматриваем конъюнкцию дизъюнкций литералов, фактически мы имеем дело с булевыми формулами (см. упражнение 21) в конъюнктивной нормальной форме. К примеру, семейство {{хъ х2], {х2, х3}, {хг,х2,х3}, {xl9x3}} соответствует булевой формуле (*i Vx2) Л (х2 Vx3) Л (хг Ух2 Vx3) Л (хг Vдс3). Она выполнима, как показывает истинностная оценка T(xx) :=true, Г(х2) :=false и Г(лг3) := true. Теперь мы готовы определить задачу выполнимости. ! Satisfiability (задача выполнимости) Дано: Вопрос: множество X переменных и семейство является ли 5? выполнимым? клауз X над X. Теорема 15.20 (Кук [15]). Задача Satisfiability является NP-полной. Доказательство. Задача Satisfiability принадлежит классу NP, поскольку всякая выполняющая истинностная оценка служит сертификатом для положительного экземпляра, причем этот сертификат, конечно, может быть проверен за полиномиальное время. Пусть теперь 9 = (X, Y) —любая другая задача из NP. Требуется показать, что 9 полиномиально преобразуется в задачу Satisfiability. По определению 15.9 имеются многочлен р и задача разрешения 9' = [Х\ У') в Р, где X' := {х#с: хеХ,се{0, 1}1р(*»М)]} и У = {у еХ: существует такая строка с е {0, i}LpCsize(^))J^ что у#с G ^/j. Пусть Ф: {0,..., N} х А -> {-1,..., N} х А х {-1,0,1} — полиномиальная машина Тьюринга для 9' с алфавитом А, и пусть А :=Ли {и}. Пусть q — такой многочлен, что time(<l>, х#с) <q(size(x#c)) для всех экземпляров х#с € X'. Заметим, что size(x#c) = size(x) + 1 + [p(size(x))J. Сейчас мы построим семейство клауз 5?(х) над некоторым множеством V{x) булевых переменных для каждого такого х е X, что 5? (х) выполнимо, если и только если х е Y. Обозначим Q := q(size(x) +1 + Lp(size(x))J). Тогда Q — верхняя граница для длины любого вычисления машины Ф на входе х#с при любом с е {0, i}Lp(size(x))j Множество V{x) содержит следующие булевы переменные: • vija для всех 0 < i < Q, —Q < j < Q и а е. А; • wijn для всех 0 < i < Q, —Q < j < Q и — 1 < п < N. Неформальный смысл этих переменных таков: vij(T показывает, содержит ли в момент времени i (т. е. после i шагов вычислений) j-я позиция строки символ сг, a wijn показывает, верно ли, что в момент времени i головка находится на ;-й позиции строки и выполнена п-я инструкция.
§ 15.4. Теорема Кука 431 Таким образом, если (nw, sw, rc^)i=01) — вычисление машины Ф, то нужно взять uijcr равным true, если и только если s. = а. Также следует взять wijn равным true, если тг(1) = j и nw = п. Семейство клауз ЗГ(х) должно быть выбрано так, чтобы оно обладало выполняющей истинностной оценкой, если и только если существует такая строка с, что output(Ф, х#с) = 1. Для построения %?{х) перечислим необходимые свойства, а затем переведем их на формальный язык. В любой момент времени каждая позиция строки содержит уникальный символ: • {vija: а <= А} для О < i < Q и -Q < ; < Q; • {Vija, Vijr) для 0 < i < Q, -Q < j < Q, а, т G Л, а ^ т. В любой момент времени головка находится над единственной позицией строки, и, кроме того, исполняется единственная инструкция: • {wijn: - Q < j < Q, -1 < п < N} для 0 < i < Q; • {wijn, wiyn,} для 0 < i < Q, -Q < j, j' < Q и -1 < n, n' < N, (;, п) ф (/, n'). Алгоритм начинает работу на входе х#с для некоторого с е {0, i}L^(slzeW)J: • {u0J}X.} для 1 < ; < size(x); • {yO,size(x)+l,#}» , size(x)+1+/,0? y0, size(x)+l+j,l } для 1< j < Lp(size(x))J; • Wj,li} дая ~~Q ^J^Oh size(x) + 2 + [p(size(x))J < ; < Q; • {и>оюЬ Алгоритм работает корректно: • {Ъцс7> Щп, vi+1J)T}, {vij(7, wijn, wi+1J+5tm} для 0 < i < Q, -Q < ; < Q, a e А и 0 < n < N, где Ф(п, сг) = (m, т, 5). Когда алгоритм достигает инструкции —1, он останавливается: • {й>и-ъ ">i+u,-ib {^i,j,-ь "и,** vi+u,cr} для 0 < i < Q, -Q < ; < Q и а е Л. Позиции ленты, над которыми не было головки, остаются без изменений: • {vija, щ,п, vi+1J}(7} для 0 < i < Q, а е А, -1 < п < N и -Q < ;, j' < Q, j ф j'. Выходом алгоритма является значение 1: • {vQ,i,i}>{vQt2)U}- Длина строки, кодирующей 5?{х), составляет 0(Q3 logQ), поскольку всего есть 0(Q3) вхождений литералов, а для записи индекса каждого из них требуется О (logQ) символов. Поскольку Q полиномиально зависит от size(x), существует полиномиальный алгоритм, который строит ЗГ(х) по х. Заметим, что р, Ф и q фиксированы и не являются частью входа этого алгоритма. Остается показать, что ЗГ(х) выполнимо, если и только если х е Y. Пусть 2?(х) выполнимо. Рассмотрим тогда истинностную оценку Г, выполняющую все клаузы. Пусть с е {0, i}L^(slzeW)^ где с,- = 1 для всех таких j, что
432 Глава 15. NP-полнота T(vo,size(x)+i+j,i) — true, и Cj = 0 иначе. По построению значения переменных отражают вычисление Ф на входе х#с. Поэтому output(Ф, х#с) = 1. Поскольку Ф — алгоритм проверки сертификата, х — положительный экземпляр. Обратно, если х е Y, то пусть с — произвольный сертификат для х. Пусть (nw,sw,7rw)i=01 m — вычисление Ф на входе х#с. Положим T(vijcr) := true, если и только если s> = о, и T(wijn) = true, если и только если п^ = j и п^ = п. Для i := m + 1,..., Q положим r(i/Uj(T) := r(i/f_1J/y) и r(u/Un) •= r(">i-i,j,n) Для всех ;, п и сг. Тогда Г — истинностная оценка, выполняющая ЗГ(х), что и требовалось доказать. ? Существуют и другие NP-полные задачи помимо задачи Satisfiability; их примеры нам неоднократно встретятся на протяжении книги. Теперь, когда NP-полнота одной задачи уже установлена, становится гораздо проще доказывать NP-полноту других задач. Чтобы показать, что некоторая задача разрешения 9 является А/Р-полной, достаточно показать, что 9 е NP и задача Satisfiability (или любая другая задача, про которую мы знаем, что она NP-полная) полиномиально преобразуется в 9. Поскольку полиномиальное преобразование транзитивно, этого будет достаточно. В некоторых случаях чрезвычайно полезна будет NP-полнота следующего частного случая задачи Satisfiability. 3Sat (задача 3-выполнимости) Дано: Вопрос: множество X переменных и семейство которых содержит ровно три литерала. является ли 5? выполнимым? X клауз над X, каждая из Чтобы показать Л/Р-полноту задачи 3Sat, заметим, что любая клауза может быть заменена на эквивалентное множество 3Sat-miay3. Утверждение 15.21. Пусть X—множество переменных и Z — клауза над Хек литералами. Тогда существуют такое множество Y изне более чем max{fc—3,2} новых переменных и такое семейство 3?' из не более чем max{fc — 2,4} клауз над XUY, что каждый элемент из ??' содержит три литерала и для любого семейства *W клауз над X множество Wu{Z} выполнимо, если и только если УиОР' выполнимо. Более того, такое семейство %?' может быть найдено за время О (к). Доказательство. Если клауза Z содержит три литерала или меньше, то положим 2Г' := {Z}. Пусть Z содержит более трех литералов, скажем, Z = {Хъ ..., Хк]. Выберем множество Y = {уъ ..., yfc_3} из к — 3 новых переменных и положим 2? := {{Яъ Я2, уг}, {у1з Я3, у2], {у2, Я4, у3},..., {ук-4, Як_2, Л-зЬ {у*-з> К-ъ К)} • Если Z = {Яь Я2}, то выберем новую переменную уг (Y := {уг}) и положим &':={{bi,b2,yi},{bi,b2,yi}}-
§ 15.5. Основные Л/Р-полные задачи 433 Если Z = {Ах}, то выберем множество Y = {уъ у2} из двух переменных и положим _ _ _ _ & := {{яъ Уъ УгЬ Ui, Уъ УгЬ Ui> Уъ УгЬ Ui> Уь Уг}} • Заметим, что в любом экземпляре задачи Satisfiability клауза Z может быть эквивалентно заменена клаузами из ЗГ'. ? Теорема 15.22 (Кук [15]). Задача 3Sat является NP-полной. Доказательство. Как частный случай задачи Satisfiability, задача 3Sat, конечно, лежит в NP. Покажем теперь, что задача Satisfiability полиномиально преобразуется в 3Sat. Рассмотрим любое семейство i2f клауз Z1?..., Zm. Мы должны построить такое новое семейство f2f' клауз с тремя литералами на клаузу, что & выполнимо, если и только если выполнимо 2Г7. Для этого заменим каждую клаузу Zt на эквивалентное множество клауз, каждая из которых состоит из трех литералов. По утверждению 15.21 это можно сделать за линейное время. ? Если мы разрешим каждой клаузе содержать только один или два литерала, то возникающая при этом задача (называемая 2Sat) уже может быть решена за линейное время (см. упражнение 8). § 15.5. Основные NP-полные задачи Карп [21] показал, что работа Кука имеет множество приложений для вопросов комбинаторной оптимизации. Для начала рассмотрим следующую задачу. Stable Set (задача о независимом Дано: Вопрос: граф G и число к. множестве) существует ли независимое множество из к вершин? Теорема 15.23 (Карп [21]). Задача Stable Set является NP-полной. Доказательство. Очевидно, что задача Stable Set принадлежит классу NP. Покажем, что задача Satisfiability полиномиально преобразуется в Stable Set. Пусть 3f — семейство клауз 1Ъ ..., Zm, Zt = {Аа,..., Xik.} (i = 1,..., m), где Ay —литералы над некоторым множеством переменных X. Требуется построить такой граф G, что G имеет независимое множество размера т, если и только если существует истинностная оценка, выполняющая все т клауз. Для каждой клаузы Zt рассмотрим клику из к{ вершин, соответствующих литералам в клаузе. Вершины, отвечающие различным клаузам, соединены ребром, если и только если литералы противоречат друг другу. Формально говоря, положим V(G) := {vtj: 1 < i < m, 1 < ; < fcj и E(G) := {{vijy ukl}: (i = fc и ; ф1) или (Ац- = х и Хк1 = х для некоторого х € X)}.
434 Глава 15. Л/Р-полнота *2 *3 Рис. 15.1 Пример данного построения приведен на рис. 15.1 (здесь т = 4, Z1 = {хъ х2, х3}, Z2 = {хъ *зЬ Z3 = {*2> *з} и Z4 = {хъ х2, х3}). Предположим, что граф G имеет независимое множество размера т. Тогда его вершины соответствуют попарно совместимым литералам, принадлежащим различным клаузам. Полагая каждый из этих литералов равным true (а остальные переменные выбирая произвольно), мы получаем истинностную оценку, выполняющую все т клауз. Обратно, если некоторая истинностная оценка выполняет все т клауз, то выберем в каждой клаузе по литералу, равному true. Множество соответствующих вершин тогда определяет независимое множество размера т в G. ? Здесь важно, что число к является частью входа: для каждого фиксированного к за время 0(пк) можно выяснить, содержит ли данный граф из п вершин независимое множество размера к (просто проверяя все возможные множества из к элементов). Интересны следующие две задачи, связанные с данной. Vertex Cover (задача о Дано: Вопрос: вершинном покрытии) граф G и число fc. существует ли вершинное покрытие мощности Лс? Clique (задача Дано: Вопрос: граф G о клике) и число к. имеет ли граф G клику мощности к? Следствие 15.24 (Карп [21]). Задачи Vertex Cover и Clique NP-полны. Доказательство. По утверждению 2.2 задача Stable Set полиномиально преобразуется как в задачу Vertex Cover, так и в задачу Clique. ?
§ 15.5. Основные NP-полные задачи 435 Вернемся теперь к известной задаче о гамильтоновом цикле (уже рассмотренной в §15.3). Теорема 15.25 (Карп [21]). Задача Hamiltonian Circuit является NP-полной. Доказательство. То, что эта задача лежит в классе NP, очевидно. Докажем, что задача 3Sat полиномиально преобразуется в Hamiltonian Circuit. Пусть дано семейство 3f клауз Z1,...,Zm над X = {хг,...,хп), где каждая из клауз содержит три литерала. Требуется построить граф G, который является гамильтоновым, если и только если 2Г выполнимо. Сначала определим два типа объектов, которые неоднократно пригодятся нам для построения G. Рассмотрим граф, изображенный на рис. 15.2(a), и назовем его А. Пусть А служит подграфом графа G и ни одна вершина графа А, кроме и, и', v, i/, не инцидентна никакому другому ребру графа G. Тогда любой гамильтонов цикл в G должен проходить граф А одним из двух способов, изображенных на рис. 15.3(a) и (б). Таким образом, мы можем заменить А на два ребра с дополнительным условием, что любой гамильтонов цикл в G должен содержать ровно одно из них (рис. 15.2(6)). Теперь рассмотрим граф В, изображенный на рис. 15.4(a). Будем считать, что он является подграфом графа G и ни одна вершина графа В, кроме и и и!, не инцидентна никакому другому ребру графа G. Тогда ни один гамильтонов (а) (б) и i • 1 > < > 1 > < > ( > 4 > < и' > > • и •- 0 •- V и Рис. 15.2 (а) (б) v и Рис. 15.3
436 Глава 15. Л/Р-полнота *i \ 4 Рис. 15.4 цикл в G не проходит через все ребра еъ е2, е3. Более того, легко проверить, что для любого подмножества S с {еъ е2, е3} существует гамильтонов путь из и в и' в В, который содержит S, но не содержит ни одного ребра из {еъ е2, е3} \S. Будем изображать В, как показано на рис. 15.4(6). Перейдем теперь к построению G. Для каждой клаузы введем отдельную копию графа В и соединим эти копии последовательно друг за другом. Между первой и последней копиями графа В вставим по две вершины для каждой переменной, все следующие друг за другом. Затем удвоим для каждой переменной х отвечающее ей ребро между двумя вершинами; эти два ребра будут соответствовать клаузам х и х. Ребра еъ е2 и е3 в каждой копии графа В теперь соединены через копию графа Л с ребрами, отвечающими первому, второму и третьему литералу нужной клаузы соответственно. Указанные построения выполняются последовательно: когда вводится копия подграфа А для ребра е = {и, и}, соответствующего некоторому литералу, ребро, инцидентное и на рис. 15.2(a), берет на себя роль е — теперь именно это ребро отвечает данному литералу. Пример построения для множества {{х1у х2, х3], {х1у х2, х3}, {хг, х2, х3}} приведен на рис. 15.5. Докажем, что граф будет G гамильтоновым тогда и только тогда, когда 2Г выполнимо. Пусть С — гамильтонов цикл. Определим истинностную оценку следующим образом: присвоим литералу значение true, если и только если С содержит соответствующее ребро. По свойствам объектов АиВ каждая клауза содержит литерал, который равен true. Обратно, любая выполняющая истинностная оценка задает множество ребер, соответствующих литералам, равным true. Поскольку каждая клауза содержит литерал, равный true, этот набор ребер может быть дополнен до маршрута в G. ? Идея данного доказательства принадлежит Пападимитриу и Стейглицу [11]. Задача о том, содержит ли заданный граф гамильтонов путь, также является NP-полной (упражнение 17(a)). Более того, в задаче о гамильтоновом цикле или пути можно легко преобразовать ненаправленный случай к направленному заменой каждого ненаправленного ребра на пару противоположно направленных ребер. Поэтому направленная версия задачи также А/Р-полна.
§ 15.5. Основные iVP-полные задачи 437 Рис. 15.5 Еще одна фундаментальная NP-полная задача такова. 3-Dimensional Matching (задача о трехмерном паросочетании, 3DM) Дано: непересекающиеся множества U, V, W равной мощности и подмножество Т с и х V х W. Вопрос: существует ли такое подмножество М множества Г, что \М\ = \U\ и для различных (u, v, ш), (и!', v', w') € М выполняются неравенства Теорема 15.26 (Карп [21]). Задача 3DM является NP-полной. Доказательство. Тот факт, что данная задача лежит в классе NP, очевиден. Требуется полиномиально преобразовать задачу Satisfiability в 3DM. Пусть дано семейство ЗГклауз Z1,...,Zm над X = {хг,...,хп}. Построим экземпляр ([/, V, W, Г) задачи 3DM, который является положительным, если и только если i2f выполнимо.
438 Глава 15. NP-полнота Положим U := {х(, х(: i = 1,..., п; j = 1,..., m}, V:={af:i = l,...,n; ; = 1, ...,m}u {z;j: ; = 1, ...,m}U U {c3k: к = 1,..., n -1; j = 1,..., m}, W:={b/:i = l,...,n; ; = 1, ...,m} и{ш': ; = 1, ...,m}u U{dj:k = l,...,n-1; ; = l,...,m}, 7\ := {(x/, a/, b/), (*/, a/+1, b(): i = 1,..., n; j = 1,..., m}, где a™+1 := a], T2:={0c(,vj,wj):i = l,...,n; ; = l,...,m; x^Z^U U {(*/, v\ wj): i = 1,..., n; j = 1,..., m; x? e Z,}, r3:={(x/,4,4),(x/,4,d^):i = l,...,n;; = l,...,m; fc = 1, ...,n-l}, Т^^иТзиГз. Для иллюстрации этого построения рассмотрим рис. 15.6, на котором т = 2, Zx = {хъ х2\, Z2 = {хъ х2]. Каждый треугольник отвечает элементу из Тг и Г2. Элементы 4, d? и тройки из Г3 не изображены. 2 2 Рис. 15.6 Предположим, что ([/, V, W, Г) — положительный экземпляр, и пусть М с т — решение. Поскольку aj( и Ъ\ появляются только в элементах из Tl9 для каждого i либоМПГ^Кдс/^Ь/):^ В первом случае мы полагаем х{ равным false, во втором — true. Более того, для каждой клаузы Z;- имеем (А;, i>;, ш-7) е М, где А е Z;- — некоторый литерал. Поскольку AJ не участвует ни в одном элементе изМпГ1} этот литерал равен true, и, значит, мы получаем выполняющую истинностную оценку. Обратно, выполняющая истинностная оценка задает множество Мг с тг мощности пт и множество М2 Q Т2 мощности тп, удовлетворяющие следующему
§ 15.5. Основные А/Р-полные задачи 439 условию: для различных (и, и, ш), (и!', и'', и/) € Ml U M2 выполняются неравенства ифи'\v фу' и w ф ц/. Объединение Мх U М2 легко дополнить (п — \)т элементами из Г3 до решения экземпляра задачи 3DM. ? Рассмотрим теперь следующую задачу, которая выглядит просто, но неизвестно, решается ли она за полиномиальное время. Subset Sum (задача о подмножестве с заданной суммой) Дано: натуральные числа съ..., сп, К. Вопрос: существует ли такое подмножество S с {1, ...,п}, что ]?. &scj — К? Следствие 15.27 (Карп [21]). Задача Subset Sum является NP-полной. Доказательство. Очевидно, что задача Subset Sum лежит в NP. Покажем, что задача 3DM полиномиально преобразуется в задачу Subset Sum. Пусть (U, V, W, Г) — экземпляр задачи 3DM. Без ограничения общности можно считать, что U и V U W = = {иъ ..., u3m}. Положим S := {{а, Ь, с}: (а, Ь, с) е Т} и S = {s1}..., sj. Обозначим 3m c,:=2> + 1)i-1 (j = l,...,n) и К:=^п + 1Г\ Значение cjt записанное в виде (п + 1)-ичного числа, может быть рассмотрено как вектор инцидентности множества s;- (j = 1,..., п). Значение К состоит лишь из 1. Поэтому каждое решение экземпляра задачи 3DM соответствует такому подмножеству R множества S, что Xis.eRcJ- = К, и наоборот. Более того, size(c;) < size(iC) = O(mlogn), так что приведенное выше построение действительно определяет полиномиальное преобразование задач. ? Следующая задача является важным частным случаем задачи Subset Sum. Partition (задача о разбиении) Дано: натуральные числа съ..., сп. Вопрос: существует ли подмножество S Я {1,..., п}, для которого Следствие 15.28 (Карп [21]). Задача Partition является NP-полной. Доказательство. Покажем, что задача Subset Sum полиномиально преобразуется в задачу Partition. Пусть съ..., сп, К — экземпляр задачи Subset Sum. Добавив элемент In i=i (если только он не равен нулю), получим экземпляр съ..., сп+1 задачи Partition.
440 Глава 15. NP-полнота Случай 1: 2К < $]Г=1 ct- ТогДа Д7151 любого I Q{l9...,n} имеем /t с{ = К, если и только если /^ ct = /J q. ie/ ieJu{n+l} ie{l,...,n}\J Случай 2: 2iC > X?=i ci- Тогда для любого J с {l,..., n} имеем /^Cj = К, если и только если У с? = \ с,. iel iel ie{l,...,n+l}\J В обоих случаях получаем положительный экземпляр задачи Partition, если и только если исходный экземпляр задачи Subset Sum был положительным. ? В заключение отметим следующий факт. Теорема 15.29. Задача Integer Linear Inequalities является NP-полной. Доказательство. В утверждении 15.12 мы уже показали, что данная задача лежит в классе NP. Любая из рассмотренных выше задач может быть легко сформулирована в виде экземпляра задачи Integer Linear Inequalities. К примеру, экземпляр задачи Partition cl9...,cn является положительным, если и только если множество {х е Z": 0 < х < И, 2сТх = ст1} непусто. ? §15.6. Класс coNP Определение класса NP несимметрично относительно положительных и отрицательных экземпляров. К примеру, неизвестно, принадлежит ли следующая задача классу NP: пусть дан граф G, верно ли, что G не является гамильтоновым? Введем следующие определения. Определение 15.30. Для задачи разрешения 9 = {X, Y) определим ее дополнение как задачу разрешения (X, X\Y). Класс coNP состоит из всех задач, дополнения которых лежат в NP. Задача разрешения 9 € coNP называется coNP-полной если все задачи из coNP полиномиально преобразуются к 9. Очевидно, что дополнение к задаче из Р также лежит в Р. С другой стороны, обычно считается, что NP Ф coNP (хотя этот факт и не доказан). Для этой гипотезы NP-полные задачи играют особую роль. Теорема 15.31. Задача разрешения coNP-полна, если и только если ее дополнение является NP-полным. Если NP ф coNP, то ни одна из coNP-полных задач не лежит eNP. Доказательство. Первое утверждение следует прямо из определения. Предположим, что 9 = (X, Y) е NP является coNP-полной задачей. Пусть ?1 = (У, W) — произвольная задача из coNP. Покажем, что ?1 е NP. Поскольку задача 9 является coNP-полной, ?1 полиномиально преобразуется в 9. Поэтому существует полиномиальный алгоритм, который преобразует любой экземпляр и задачи ?1 в такой экземпляр х = f(v) задачи 9, что х е. Y,
§15.6. Класс coNP 441 если и только если v € W. Заметим, что size(x) < p(size(iO) для некоторого фиксированного многочлена р. Поскольку 9 еА/Р, существуют такой многочлен q и такая задача разрешения 9' = (X', У) в Р, где X' := {х#с: x<=X,ce{0, l}^sizeM)J}, что Y = {у € X: существует строка с е {0, i}te(slzeCy))Ja для которой у#с е У7} (см. определение 15.9). Определим задачу разрешения (V', W'), взяв V := {i/#c: i/ € У, с е {0, i}^size^))J} и v#c е. W', если и только если f{v)#d е У7, где строка с! состоит из первых Lq(size(/(iO))J символов строки с. Заметим, что (V7, W7) € Р. Поэтому по определению Q е NP. Отсюда следует, что coNP с А/р, и тогда в силу симметрии NP = coNP. ? Если можно показать, что задача лежит в классе NP П соА/Р, то говорят, что она имеет хорошую характеризацию (Эдмондс [16]). Это означает, что как для положительных, так и для отрицательных экземпляров существуют сертификаты, которые могут быть проверены за полиномиальное время. Теорема 15.31 показывает, что задача, допускающая хорошую характеризацию, вероятно, не может быть А/Р-полной. Например, утверждение 2.9, теорема 2.24 и утверждение 2.27 доказывают, что хорошие характеризации есть у следующих задач: является ли граф ациклическим, содержит ли он эйлеров обход и является ли граф двудольным соответственно. Конечно, это наблюдение не слишком интересно, поскольку все эти задачи могут быть легко решены за полиномиальное время. Более интересный результат получается для аналога задачи Linear Programming. Теорема 15.32. Задача Linear Inequalities лежит в NPncoNP. Доказательство. Утверждение сразу следует из теоремы 4.4 и следствия 3.24. ? Конечно, истинность этой теоремы также следует из наличия полиномиального алгоритма для задачи Linear Programming, т. е. теоремы 4.18. Однако до того как был открыт метод эллипсоидов, теорема 15.32 была единственным подтверждением того, что задача Linear Inequalities, вероятно, не является А/Р-полной. Это давало надежду найти полиномиальный алгоритм для задачи Linear Programming (которая может быть сведена к задаче Linear Inequalities по утверждению 4.16). Данная надежда, как мы теперь знаем, полностью оправдалась. Похожая история связана со следующей известной задачей. Prime (задача о простом числе) 1 Дано: Вопрос: число п € N (в двоичном является ли п простым? представлении).
442 Глава 15. NP-полнота Рис. 15.7 Очевидно, что задача Prime принадлежит классу coNP. Пратт [26] доказал, что она также принадлежит классу NP. Наконец, Агравал, Кайал и Саксена [14] доказали, что Prime е Р, найдя удивительно простой алгоритм, время работы которого составляет О (log7,54-6 п) (для любого е > 0). До этого лучший известный детерминированный алгоритм для задачи Prime принадлежал Адлеману, Померансу и Румели [13], и время его работы составляло 0((logn)clogloglogn) для некоторой константы с. Поскольку размер входа задачи составляет O(logn), данная оценка не является полиномиальной. Завершим настоящий параграф диаграммой включений классов NP и coNP (рис. 15.7). Ладнер [22] показал, что если Р ф NP, то существуют задачи в А/Р\Р, которые не являются А/Р-полными. Однако пока не будет доказана гипотеза Р ф NP, остается возможность, что все области на рис. 15.7 сливаются в одну. § 15.7. NP-трудные задачи Обобщим теперь наши результаты на вычислительные задачи общего вида и, в частности, на задачи оптимизации. Определение 15.33. Вычислительная задача 9 называется NP-трудной, если все задачи из NP полиномиально сводятся к 9. Заметим, что это определение также применимо к задачам разрешения и оно симметрично (в отличие от NP-полноты): задача разрешения является Д/Р-трудной, если и только если ее дополнение является таковым. А/Р-трудные задачи по крайней мере столь же трудны, как и самые трудные задачи в NP, но некоторые из них могут быть сложнее, чем любая задача в NP. Задача, которая полиномиально сводится к некоторой задаче класса NP, называется NP-npocmou. Задача, одновременно являющаяся и NP-трудной, и JVP-простой, называется NP- эквивалентной. Другими словами, задача А/Р-эквивалентна, если и только если она полиномиально эквивалентна задаче Satisfiability, где две задачи 9 и ?1
§ 15.7. Л/Р-трудные задачи 443 называются полиномиально эквивалентными, если 9 полиномиально сводится к 21, а ?1 полиномиально сводится к 9. Отметим следующее свойство. Утверждение 15.34. Пусть 9 —NP-эквивалентная вычислительная задача. Тогда для 9 существует (точный) полиномиальный алгоритм, если и только если P = NP. ? Конечно, все NP-полные задачи и все coNP-полные задачи являются NP-эк- вивалентными. Почти все задачи, обсуждаемые в этой книге, NP-простые, поскольку они полиномиально сводятся к задаче Integer Programming (обычно этот факт тривиален, и мы его даже не отмечаем отдельно). Теперь формально определим интересующий нас тип задач оптимизации. Определение 15.35. NP-задача оптимизации — это четверка 9 = (X, (Sx)x&x, с, goal), где • X—язык над {0,1}, разрешимый за полиномиальное время; • Sx — непустое подмножество множества {0,1}* для каждого х е X; существует такой многочлен р, что size(y) < p(size(x)) для всех х е. X и у е Sx, и язык {(х,у): х е X, у е Sx} разрешим за полиномиальное время; • с: {(х,у): х е Х,у е Sx} ^> Q — функция, вычислимая за полиномиальное время; • goal е {max, min}. Элементы множества X называются экземплярами задачи 9. Для каждого экземпляра х элементы множества Sx называются допустимыми решениями для х. Обозначим ОРТ(х) := goal{c(x, у): у е. Sx}. Оптимальное решение для экземпляра х представляет собой такое допустимое решение у, что с{х, у) = OPT(jc). Эвристика для 9 — это алгоритм А, который для каждого входа х е X, где Sx Ф 0, вычисляет некоторое допустимое решение у е. Sx. Мы иногда будем писать А(х) := с(х, у). Если А{х) = ОРТ(х) для всех таких х € X, что Sx Ф 0, то А является точным алгоритмом для 9. В зависимости от контекста с(х, у) часто называют стоимостью, весом, выигрышем или длиной элемента у. Если с неотрицательно, то говорят, что задача оптимизации имеет неотрицательные веса. Значения с предполагаются рациональными числами; как обычно, мы считаем их закодированными в виде двоичных строк. Большинство интересных задач оптимизации попадают в этот класс, но есть несколько исключений (см., например, упражнение 24). Задача оптимизации {X, (SX)X(EX, с, goal) может рассматриваться как вычислительная задача {X, {{х, у): х е X, у е Sx, с{х, у) = ОРТ(х)}). Поэтому понятие полиномиального сведения также применимо и к задачам оптимизации. Теорема 15.36. Каждая NP-задача оптимизации является NP-npocmou. Доказательство. Пусть 9 = {X, (Sx)xf=x, с, goal) —NP-задача оптимизации. Полиномиально сведем 9 к задаче разрешения В е NP. Как обычно, будем называть строку у G {0,1}р, где р е Z+, лексикографически большей, чем строка
444 Глава 15. NP-полнота s G {0, l}q, q G Z+, если и только если у Ф s и у- > s, для j = min{i G N: yt Ф sj, где у := —1 для i > p и st := — 1 для i > q. Если goal = max, то определим 21 так: пусть даны х G X, у € Q и s ? {0,1}*; существует ли такая строка у G Sx, что с(х, у) > у и у равна 5 или лексикографически больше, чем 5? Если goal = min, тогда с(х, у)>у заменяется на с[х, у) < у. Заметим, что ?1 принадлежите? (у служит сертификатом). Полиномиально сведем 9 к В следующим образом. Поскольку с вычислимо за полиномиальное время, существует такая константа d € N, что size (с (х, у)) < (size(x) + p(size(x)))d =: к(х) для всех х G X и у G Sx. Поэтому ОРТ(дс) G [—2к^х\ 2к№], и |с(х,у) — с(х,у')\ — целочисленное кратное числа 2~fcM для всех хеХ и у,у' gSx. Пусть дан экземпляр х G X. Сначала вычислим к(х), а затем найдем ОРТ(х) бинарным поиском. Для этого начнем с а := —2fcW и /3 := 2fcW. На каждой итерации применяем оракул ко входу (дс, у, s0), где у = (а + /3)/2, a s0 — пустая строка. Если ответ положительный, то полагаем а := у, а иначе j3 := у. После 2fc + 2 итераций мы получим ^ — а < 2~к^х\ Тогда фиксируем у := а и выполним еще 2p(size(x)) вызовов оракула для вычисления такого решения y^Sx, что с{х, у) > а. При i := 1,..., p(size(x)) последовательно вызываем оракул для входов (х, a, s?^) и (х, а, s*_a), где s; получается из строки 5 добавлением символа ; G {0,1}. Если оба ответа положительные, то полагаем st -=s]_v если только первый положителен, то полагаем st := s?_v а если оба ответа отрицательные, то st := Si_i. Несложно видеть, что sp^size^ —лексикографически максимальная строка у, для которой у G Sx и с(х, у) = ОРТ(х). П Большинство задач, которые будут обсуждаться с этого момента, также являются NP-трудными, и обычно мы будем доказывать это построением полиномиального сведения от АГР-полных задач. В качестве первого примера рассмотрим задачу Max-2Sat: пусть дан экземпляр задачи Satisfiability с ровно двумя литералами в каждой клаузе; требуется найти истинностную оценку, которая максимизирует число выполненных клауз. Теорема 15.37 (Гэри, Джонсон и Стокмейер [19]). Задача Max-2Sat является NP-трудной. Доказательство. Построим сведение от задачи 3Sat. Пусть дан экземпляр I задачи 3Sat с клаузами Съ ...,Ст. Построим экземпляр V задачи Max-2Sat добавлением новых переменных Уь^, ...,ym,zm и заменой каждой клаузы Q = {Л>г> Л>2, А3} на четырнадцать клауз следующего вида: {Ai,zJ, {Яъ^}, {A2,sJ, {A2,sJ, {A3,zJ, {A3,zJ, {y,zj, {y,?J, {Ai,yJ, {A2,yJ, {A3,yJ, {Ai,A2b {AbA3L {A2,A3}. Заметим, что не существует истинностной оценки, выполняющей более чем 11 из этих 14 клауз. Более того, если 11 из этих клауз выполнены, то как минимум одно из значений Аъ А2, А3 должно быть true. С другой стороны, если одно из значений АЪА2, А3 равно true, то положим у- := Ах Л А2 Л А3 и zt := true, чтобы выполнить 11 из этих клауз.
§ 15.7. NP-трудные задачи 445 Отсюда следует, что для I существует истинностная оценка, выполняющая все т клауз, если и только если для V существует истинностная оценка, которая выполняет 11т клауз. ? Вопрос о том, всякая ли А/Р-трудная задача 9 е NP является АГР-полной, остается открытым (напомним, что между полиномиальным сведением и полиномиальным преобразованием есть различие; см. определения 15.15 и 15.17). В упражнениях 22 и 23 будут обсуждаться две А/Р-трудные задачи разрешения, которые не лежат в NP. См. также упражнение 2 из гл. 19. Если Р ф А/Р, то не существует точного полиномиального алгоритма ни для какой А/Р-трудной задачи. Однако могут существовать псевдополиномиальные алгоритмы. Определение 15.38. Пусть 9 — задача разрешения или задача оптимизации, в которой каждый экземпляр х состоит из списка неотрицательных целых чисел. Обозначим через largest(x) наибольшее из этих чисел. Алгоритм для 9 называется псевдополиномиальным, если его время работы ограничено многочленом от size(x) и largest(x). К примеру, существует простой псевдополиномиальный алгоритм для задачи Prime, который проверяет простоту натурального числа п, пробуя делить его на каждое из чисел от 2 до Li/nJ. Другой пример таков. Теорема 15.39. Существует псевдополиномиалъный алгоритм для задачи Subset Sum. Доказательство. Пусть дан экземпляр съ..., сп, К задачи Subset Sum. Построим орграф G с множеством вершин {0, ...,п} х {0,1,2,...,К"}. Для каждого j е € {1,..., п) добавим ребра ((; -1, i), 0', 0) d = 0,1,..., К) и ((; -1, i), (;, i + с,)) (i = 0,l,...,tf-Cj). Заметим, что любой путь из (0,0) в (;, Г) соответствует такому подмножеству S с {1,... 9;}, что Yikes ck = Un наоборот. Таким образом, для решения экземпляра задачи Subset Sum достаточно проверить, содержит ли G путь из (0,0) в (п, К). Это можно сделать, используя алгоритм обхода графа, за время 0{пК), поэтому в итоге мы получаем псевдополиномиальный алгоритм. ? Приведенный выше метод также является псевдополиномиальным алгоритмом для задачи Partition, поскольку п 2 Yfi ^ \ larSest(ci> • • • > О- Обобщение этого алгоритма будет изучено в § 17.2. Если все числа на входе не слишком большие, то псевдополиномиальный алгоритм может быть достаточно эффективным. Поэтому полезно следующее определение. Определение 15.40. Для задачи разрешения 9 = (X, Y) или для задачи оптимизации 9 = (X, (Sx)xeX, с, goal) и подмножества X' с X экземпляров задачи
446 Глава 15. NP-полнота определим ограничение 9 на X' как 9' = (Х\ X' П Y) или 9' = (Х\ (Sx)xeX>, с, goal) соответственно. Пусть 9 —такая задача разрешения или задача оптимизации, что каждый экземпляр состоит из списка чисел. Фиксируем многочлен р. Пусть 9Р — ограничение задачи 9 на множество экземпляров х, состоящих из неотрицательных целых чисел и таких, что largest(x) < p(size(x)). Тогда задача 9 называется сильно NP-трудной, если существует такой многочлен р, что задача 9Р является NP-трудной. Задача 9 называется сильно NP-полной, если 9 е NP и существует такой многочлен р, что задача 9Р является NP-полной. Утверждение 15.41. Если Р Ф NP, то не существует (точного) псевдополиноми- алъного алгоритма ни для какой сильно NP-трудной задачи. ? Приведем несколько известных примеров. Теорема 15.42. Задача Integer Programming является сильно NP-трудной. Доказательство. Для любого ненаправленного графа G целочисленная программа max{Ux: AreZv(G\ 0<x<U, xv+xw^l, где {v, w} eE(G)} имеет оптимальное значение не меньше fc, если и только если G содержит независимое множество мощности fc. Поскольку fc < |V(G)| для всех нетривиальных экземпляров (G, fc) задачи Stable Set, доказываемый результат следует из теоремы 15.23. ? Travelling Salesman (задача коммивояжера, TSP) Дано: полный граф Кп (п > 3) и веса с: Е(Кп) -> R+. Надо: найти гамильтонов цикл Г, вес которого 2е€?(г) с(е) минимален. Вершины экземпляра задачи TSP часто называют городами, а веса — расстояниями. Теорема 15.43. Задача TSP является сильно NP-трудной. Доказательство. Покажем, что задача TSP является А/Р-трудной, даже если ограничиться экземплярами, в которых расстояния равны 1 или 2. Опишем полиномиальное сведение от задачи Hamiltonian Circuit. Пусть дан граф G на п > 3 вершинах. Построим следующий экземпляр задачи TSP. Возьмем по одному городу на каждую вершину графа G, и пусть расстояние равно 1, если ребро лежит в E(G), и 2 в противном случае. Тогда очевидно, что граф G гамильтонов, если и только если длина оптимального маршрута задачи TSP равна п. ? Это доказательство также показывает, что следующая задача разрешения не проще задачи TSP: пусть даны экземпляр задачи TSP и целое число fc; существует ли маршрут длины fc или короче? Похожее утверждение верно для большого класса дискретных задач оптимизации. Утверждение 15.44. Пусть & и &' — (бесконечные) семейства конечных множеств, и пусть 9 —следующая задача оптимизации: даны множество Е е &
Упражнения 447 и функция с: Е —> Z; найти множество F с Е, где F е. &' и c(F) минимально (или выяснить, что такого множества F не существует). Тогда задача & может быть решена за полиномиальное время, если и только если следующая задача разрешения может быть решена за полиномиальное время: даны экземпляр (Е, с) задачи & и целое число к; верно ли, что ОРТ((Е, с)) < fc? Если задача оптимизации NP-трудна, то таковой является также и задача разрешения. Доказательство. Достаточно показать, что существует алгоритм с оракулом для задачи оптимизации, использующий задачу разрешения (обратное очевидно). Пусть (Е, с)—экземпляр задачи g?. Определим сначала значение ОРТ((Е, с)) с помощью бинарного поиска. Так как существует не более чем 1 + ^]ее?: |с(е)| < < 2slze(c) возможных значений, мы можем сделать это за 0(size(c)) итераций, каждая из которых включает вызов оракула. Затем мы последовательно выясняем для каждого элемента из Е, существует ли оптимальное решение без него. Это может быть сделано увеличением веса элемента (скажем, на 1) и проверкой, увеличило ли это изменение значение оптимального решения. Если да, мы возвращаем старый вес, иначе сохраняем увеличенный вес. После проверки всех элементов множества Е те элементы, веса которых не удалось увеличить, задают оптимальное решение. ? Примерами задач, где этот результат применим, являются задачи TSP, Maximum Weight Clique, Shortest Path, Knapsack и многие другие. Шульц [28] и Орлин, Паннен и Шульц [24] доказали похожий результат для задачи Integer Programming. Упражнения 1. Покажите, что класс всевозможных языков имеет большую мощность, чем класс всех машин Тьюринга. Выведите отсюда, что существуют языки, которые не могут быть разрешены машиной Тьюринга. Машины Тьюринга могут быть заданы с помощью строк в бинарном алфавите. Рассмотрим знаменитую проблему остановки: по заданной паре таких бинарных строк х и у, что х кодирует некоторую машину Тьюринга Ф, требуется выяснить, верно ли, что пте(Ф, у) < °°. Докажите, что проблема остановки является неразрешимой (т. е. не существует алгоритма, ее решающего). Указание. Предположив, что искомый алгоритм А существует, постройте машину Тьюринга, которая, получив строку х, вначале запускает алгоритм А на входе (х, х), а затем останавливается, если и только если output(A, (х, х)) = 0. 2. Постройте машину Тьюринга, сравнивающую пару строк: она должна принимать на вход строку вида а#Ъ, где а,Ъ е {0,1}*, и выдавать 1, если а = Ь, и 0, если афЪ. 3. Еще одной широко известной вычислительной моделью является RAM- машина. В ее распоряжении есть бесконечная последовательность регистров хъ х2,..., а также еще один выделенный регистр, называемый аккумулятором (Асе).
448 Глава 15. NP-полнота WRITE LOAD LOADI STORE STOREI ADD SUBTR HALF IFPOS HALT к к к к к к к i Каждый регистр может хранить произвольно большое целое число (возможно, отрицательное). Программа для RAM-машины представляет собой последовательность команд. Всего существует десять различных типов команд (их смысл указан в правой части таблицы): Асе := к; Асе := хк\ Асс:=хХк; Хк l=z/\.СС'} хХк :=Асс; Асе :=Асс + хк; Асе :=Асс — хк; Асе := [Асс/2\; If Асе > О then goto ©; Stop. Рассмотрим программу для RAM-машины, состояющую из т команд, имеющих один из представленных выше типов (при этом fceZHie{l,...,m}). Выполнение программы начинается с команды под номером 1, а затем продолжается в соответствии с представленным описанием (мы не станем приводить здесь формального определения). Вышеуказанный список возможных типов команд может быть расширен. Скажем, что новая команда может быть реализована в RAM-модели за время п, если все ее вхождения можно заменить на последовательность RAM-команд известного типа (с сохранением поведения), так что при этом общее число шагов в любом вычислении возрастет не более чем в п раз. (а) Покажите, что следующие команды могут быть реализованы с помощью подходящих программ для RAM-модели за константное время: IFNEG i If Асе < 0 then goto ©; IFZERO i If Ace = 0 then goto ©. (б)* Покажите, что команды SUBTR и HALF могут быть реализованы RAM-программами, использующими лишь оставшиеся восемь типов команд, за время 0(size(Xfc)) и 0(size(Acc)) соответственно. (в)* Покажите, что следующие команды могут быть реализованы RAM-программами за время 0(п), где п = max{size(xfc), size(Acc)}: MULT к Асс:=Асс-хк; DIV к Асс~ [Асс/хк\; MOD к Асе :=Асе mod хк. 4*. Рассмотрим функцию /: {0,1}* —> {0,1}*. Покажите, что если существует машина Тьюринга Ф, которая вычисляет /, то существует и RAM-программа
Упражнения 449 (см. упражнение 3), для которой вычисление на входе х (записанном в регистре Асе) завершается после О (size(х) + йте(Ф, х)) шагов, причем в конце Асе = /(*). Покажите, что если существует RAM-программа, которая вычисляет для всякого аргумента х (записанного в Лес) значение f(x) (и записывает результат в Асе) не более чем за g(size(x)) шагов, то существует и машина Тьюринга, вычисляющая функцию / за время 1±пе(Ф, х) = 0(g(size(jt))3). 5. Докажите, что следующие задачи разрешения принадлежат классу NP. (а) Пусть заданы графы G и Я. Изоморфен ли граф G некоторому подграфу Я? (б) Пусть задано натуральное число п (записанное в двоичной системе). Существует ли тогда такое простое число р, что п = рр? (в) Пусть заданы матрица А е zmxn и вектор Ъ е Zm. Является ли полиэдр Р = {х: Ах < Ь} ограниченным? (г) Пусть заданы матрица А е zmxn и вектор Ъ е Zm. Является ли полиэдр Р = {х: Ах < Ь} неограниченным? 6. Докажите, что если 9 eNP, то существует такой полином р, что задача 9 может быть решена с помощью (детерминированного) алгоритма, имеющего сложность 0(2р(г1)). 7. Докажите, что множество задач разрешения, принадлежащих классу NP, является счетным. 8. Пусть 3f — экземпляр задачи 2Sat, т. е. набор клауз из двух литералов над множеством переменных X. Рассмотрим орграф G(i2f), имеющий следующий вид: V(G) представляет собой множество всевозможных литералов над X. В графе присутствует ребро (Аъ А2) е Е(G), если и только если клауза {Аъ А2} принадлежит ЗГ. (а) Покажите, что если для некоторой переменной х как х, так и х лежат в одной компоненте сильной связности графа G(i2f), то экземпляр f2f не выполним. (б) Докажите свойство, обратное к свойству (а). (в) Предложите линейный алгоритм для задачи 2Sat. 9. Предложите линейный алгоритм, который для любого экземпляра задачи Satisfiability находит истинностную оценку, выполняющую хотя бы половину клауз. 10. Пусть задан экземпляр задачи Satisfiability, в котором каждая клауза имеет вид {х}, {х} или {х, у}, где хиу — переменные. Пусть также всем клаузам приписаны неотрицательные веса. Найдите (за полиномиальное время) истинностную оценку, для которой суммарный вес выполненных клауз максимален. Указание. Сведите данную задачу к задаче о минимальном разрезе. 11. Рассмотрим задачу 3-Occurrence Sat, представляющую собой разновидность задачи Satisfiability, где в каждой клаузе встречаются не более трех литералов, а каждая переменная входит не более чем в три литерала. Покажите, что эта задача является NP-полной. 12 (Пападимитриу [10]). Рассмотрим (не обязательно биективное) кодирование к:: {0,1}т -> {0,1}т, где т > 2. Для вектора х = (х1з..., хп) € {0,1}т х ... х х {0,1}т = {0,1}пт обозначим к(х) := (кС^),..., к(хп)), а для задачи разрешения
450 Глава 15. Л/Р-полнота 9 = {X, У), в которой X с Unez+{°> У™* положим к(д>) := ({*(*) : х € X}, {к(х): х € У}). Докажите следующие утверждения. (а) Для всех способов кодирования к и всех ^ е NP справедливо включение к(9)еЫР. (б) Если /с(^) еР для всех способов кодирования к: и всех 9 е Р, то Р = А/Р. 13. Докажите, что задача о независимом подмножестве является А/Р-полной даже в классе графов с максимальной степенью не выше 4. Указание. Воспользуйтесь упражнением 11. 14. Докажите, что следующая задача о доминирующем множестве является А/Р-полной. Пусть заданы неориентированный граф G и число fc е N. Существует ли такое множество X с y(G), что \Х\ < fc и X U Г(Х) = V(G)? Указание. Постройте сведение от задачи о вершинном покрытии. 15. Задача Clique является А/Р-полной. Остается ли она А/Р-полной (в предположении, что Р Ф NP), если ограничиться (а) двудольными графами, (б) планарными графами, (в) 2-связными графами? 16. Для каждого из представленных ниже вариантов задачи докажите, что он либо лежит в Р, либо является А/Р-полным. Пусть задан неориентированный граф G, содержит ли тогда G (а) цикл длины хотя бы 17, (б) цикл, содержащий хотя бы половину вершин, (в) цикл нечетной длины, (г) клику, содержащую хотя бы половину вершин, (д) такую пару клик, что всякая вершина графа лежит хотя бы в одной из них? 17. Докажите, что следующие задачи являются АГР-полными. (а) Hamiltonian Circuit и Directed Hamiltoian Circuit (задачи о гамильто- новом цикле и об ориентированном гамильтоновом цикле). Пусть задан граф G (ориентированный или неориентированный). Содержит ли G гамильтонов путь? (б) Shortest Path (задача о кратчайшем пути). Пусть заданы граф G (ориентированный или неориентированный), веса ребер с: E(G) —* Z, пара вершин s, t е V(G) и целое число fc. Существует ли s-t-путь веса не более fc? (в) 3-Matroid Intersection (задача о пересечении трех матроидов). Пусть заданы (с помощью оракулов независимости) три матроида (Е, ^), (Е, &2)> №> ^з) и число fc € N. Требуется выяснить, существует ли такое множество F € ^ П &2 П &3> ЧТО \р\ ** к- (г) Chinese Postman (задача китайского почтальона). Пусть заданы такие неориентированные графы G и Я, что V (G) = V(H), веса с: Я (Я) —»Z+ и целое число fc. Существует ли такое подмножество F с Е(Я), что c(F) < fc и граф (V(G),E(G) UF) является связным эйлеровым?
Упражнения 451 18. Предложите для представленных ниже задач разрешения полиномиальный алгоритм или докажите их NP-полноту. (а) Пусть заданы неориентированный граф G и подмножество Т с V(G). Существует ли остовное дерево в G, для которого все вершины из множества Г являются листьями? (б) Пусть заданы неориентированный граф G и подмножество Т с V(G). Существует ли остовное дерево в G, все листья которого лежат в Г? (в) Пусть заданы орграф G, веса ребер с: ?(G)—>R, подмножество Tcy(G) и число к. Существует ли такое ветвление В, что \5+(х)| < 1 для всех хеГ и с(В)>к? 19. Докажите, что следующая задача разрешения принадлежит классу coNP. Пусть заданы матрица А € Qmxn и вектор b € Qn. Является ли полиэдр {х: Ах < Ъ) целым? Указание. Воспользуйтесь утверждением 3.9, леммой 5.11 и теоремой 5.13. Замечание. Неизвестно, лежит ли данная задача в NP. 20. Докажите, что следующая задача принадлежит классу coNP. Пусть заданы матрица А е zmxn и вектор Ъ е Zm. Требуется выяснить, является ли полиэдр Р = {* е Rn: Ах < Ъ) целым. Замечание. Данная задача является coNP-полной, как показано в работе Пападимитриу и Яннакакиса [25]. 21. Определим понятие булевой формулы. Рассмотрим множество переменных X. Тогда true к false являются булевыми формулами над X нулевой длины, литералы являются булевыми формулами над X длины один, а булевы формулы над X длины к > 2 представляют собой строки вида (гр A i//) и (ip V я//), где гр — булева формула длины I е N, а я// — булева формула длины V € N, причем 1 + 1' = к. Пусть задана оценка переменных Т: X —> {true, false}. Продолжим ее на множество булевых формул над X, для чего положим Т((гр А я//)) := Т(гр) А Г(я//) и Т((гр V я//)) := Г(я/>) V Г(я//). Две булевы формулы гр и я// над X называются эквивалентными, если Т(гр) = Г(я//) для всех оценок Г: X —> {true, /aZse}. Докажите, что следующая задача, называемая задачей о булевой эквивалентности, является соА/Р-трудной. Пусть заданы две булевы формулы над множеством переменных X. Являются ли они эквивалентными? 22. Покажите, что следующая задача является NP-трудной (при этом неизвестно, лежит ли она в классе NP): пусть задан экземпляр задачи Satisfiability; верно ли, что большинство оценок переменных делают все клаузы истинными? 23. Покажите, что задача Partition полиномиально сводится к следующей задаче (которая тем самым является А/Р-трудной; при этом неизвестно, лежит ли она bNP). K-th Heaviest Subset (задача о fc-м по весу подмножестве) Дано: целые числа cly...,cn,K,L. Вопрос: существуют ли К различных подмножеств Si,...,SK ? {1, ...,п}, для которых ]?J€S Cj > L для всех i = 1,..., К?
452 Глава 15. JVP-полнота 24. Докажите, что следующая проблема, называемая задачей логической минимизации, может быть решена за полиномиальное время, если и только если Р = NP. Пусть заданы множество переменных X и булева формула от переменных X. Требуется найти эквивалентную булеву формулу от X, имеющую минимальную длину. Указание. Воспользуйтесь упражнением 21. Замечание. Неизвестно, является ли данная задача NP-простой. Литература Общая литература [1] Aho А. V., Hopcroft J. Е., Ullman J. D. The Design and Analysis of Computer Algorithms. Addison-Wesley, Reading, 1974. [2] Arora S., Barak B. Computational Complexity: A Modern Approach. Cambridge University Press, New York, 2009. [3] Ausiello G.t Crescenzi P., Gambosi G., Kann V., Marchetti-Spaccamela A., Protasi M. Complexity and Approximation: Combinatorial Optimization Problems and Their Approxima- bility Properties. Springer, Berlin, 1999. [4] Bovet D. В., Crescenzi P. Introduction to the Theory of Complexity. Prentice-Hall, New York, 1994. [5] Garey M. R., Johnson D. S. Computers and Intractability: A Guide to the Theory of NP-Com- pleteness. Freeman, San Francisco, 1979, Chapters 1-3, 5, and 7. [6] Goldreich O. Computational Complexity: A Conceptual Perspective. Cambrige University Press, New York, 2008. [7] Horowitz E., Sahni S. Fundamentals of Computer Algorithms. Computer Science Press, Potomac, 1978, Chapter 11. [8] Johnson D. S. The NP-completeness column: an ongoing guide // Journal of Algorithms starting with Vol. 4 (1981). [9] Karp R. M. On the complexity of combinatorial problems // Networks. 1975. Vol. 5. P. 45-68. [10] Papadimitriou С. H. Computational Complexity. Addison-Wesley, Reading, 1994. [11] Papadimitriou C. H., Steiglitz K. Combinatorial Optimization: Algorithms and Complexity. Prentice-Hall, Englewood Cliffs, 1982, Chapters 15 and 16. [12] Wegener I. Complexity Theory: Exploring the Limits of Efficient Algorithms. Springer, Berlin, 2005. Процитированные работы [13] Adleman L. M., Pomerance C, Rumely R. S. On distinguishing prime numbers from composite numbers // Annals of Mathematics. 1983. Vol. 117. P. 173-206. [14] Agrawal M., Kayal N., Saxena N. PRIMES is in P // Annals of Mathematics. 2004. Vol. 160. P. 781-793. [15] Cook S. A. The complexity of theorem proving procedures // Proceedings of the 3rd Annual ACM Symposium on the Theory of Computing. 1971. P. 151-158.
Литература 453 [16] Edmonds J. Minimum partition of a matroid into independent subsets // Journal of Research of the National Bureau of Standards. Ser. B. 1965. Vol. 69. P. 67-72. [17] van Emde Boas P. Machine models and simulations // Handbook of Theoretical Computer Science; Vol. A; Algorithms and Complexity (J. van Leeuwen, ed.), Elsevier, Amsterdam, 1990. P. 1-66. [18] Ftirer M. Faster integer multiplication // SIAM Journal on Computing. 2009. Vol. 39. P. 979-1005. [19] Garey M. R., Johnson D. S., Stockmeyer L. Some simplified NP-complete graph problems // Theoretical Computer Science. 1976. Vol. 1. P. 237-267. [20] Hopcroft J. E., Ullman J. D. Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, Reading, 1979. [21] Karp R. M. Reducibility among combinatorial problems // Complexity of Computer Computations (R. E.Miller, J.W.Thatcher, eds.), Plenum Press, New York, 1972. P. 85-103. [22] Ladner R. E. On the structure of polynomial time reducibility // Journal of the ACM. 1975. Vol.22. P. 155-171. [23] Lewis Я. R.} Papadimitriou С Я. Elements of the Theory of Computation. Prentice-Hall, Englewood Cliffs, 1981. [24] Orlin J. В., Punnen A P., Schulz A. S. Integer programming: optimization and evaluation are equivalent // Algorithms and Data Structures — Proceedings of the 11th Algorithms and Data Structures Symposium (F. Dehne, M. Gavrilova, J.-R. Sack, CD. Toth, eds.), Springer, Berlin, 2009. (Lecture Notes in Comput. Sci.; Vol.5664). P.519-529. [25] Papadimitriou С. Я., Yannakakis M. On recognizing integer polyhedra // Combinatorica. 1990. Vol. 10. P. 107-109. [26] Pratt V. Every prime has a succinct certificate // SIAM Journal on Computing. 1975. Vol. 4. P. 214-220. [27] Schonhage A., Strassen V. Schnelle Multiplikation grofser Zahlen // Computing. 1971. Vol.7. P.281-292. [28] Schulz A. S. On the relative complexity of 15 problems related to 0/1-integer programming // Research Trends in Combinatorial Optimization (W. J. Cook, L. Lovasz, J. Vygen, eds.), Springer, Berlin, 2009. P. 399-428. [29] Turing A. M. On computable numbers, with an application to the Entscheidungsprob- lem // Proceedings of the London Mathematical Society. (2). 1936. Vol. 42. P. 230-265; 1937. Vol. 43. P. 544-546.
ГЛАВА 16 Приближенные алгоритмы В этой главе мы введем важное понятие приближенного алгоритма. До сих пор мы имели дело в основном с задачами, разрешимыми за полиномиальное время. В оставшихся главах мы рассмотрим некоторые стратегии работы с NP-трудными задачами комбинаторной оптимизации, и в этом контексте прежде всего должны быть упомянуты приближенные алгоритмы. В идеальном случае гарантируется, что решение отклоняется от оптимального лишь на константу. Определение 16.1. Абсолютный приближенный алгоритм для задачи оптимизации 9 — это алгоритм А, решающий эту задачу за полиномиальное время, для которого существует такая константа к, что |A(/)-OPT(J)|<fc для любого экземпляра I задачи 9. К сожалению, абсолютные приближенные алгоритмы известны для очень малого числа классических NP-трудных задач оптимизации. В § 16.3 мы обсудим два важных примера: задачу о реберной раскраске и задачу о вершинной раскраске в планарных графах. В большинстве случаев приходится довольствоваться относительной оценкой погрешности (relative performance guarantee). Здесь придется ограничиться лишь задачами с неотрицательными весами. Определение 16.2. Пусть 9 — задача оптимизации с неотрицательными весами, к > 1. Полиномиальный алгоритм А для задачи 9 называется к-приближен- ным алгоритмом (fc-factor approximation algorithm), если ? ОРТ(/) < AQ) < к OPT(J) для всех экземпляров / задачи 9. Мы также говорим, что алгоритм А имеет оценку погрешности или гарантию погрешности fc. Первое неравенство применяется для задач максимизации, второе—для задач минимизации. Заметим, что для экземпляров J, для которых OPT(J) = О, требуется строить точное решение. Приближенные алгоритмы с оценкой точности 1 являются точными полиномиальными алгоритмами. Иногда данное выше определение обобщается на случай, когда fc является функцией от экземпляра I, а не константой. Мы встретимся с таким примером в следующей главе.
§ 16.1. Задача о покрытии множества 455 В § 13.4 мы видели, что жадный алгоритм включения наилучших элементов для задачи максимизации системы независимости (?, &) имеет погрешность l/q(E, &) (см. теорему 13.19). В последующих параграфах и главах мы приведем примеры других алгоритмов, удовлетворяющих данным выше определениям, а также проанализируем приближаемость различных NP-трудных задач. Начнем с задач о покрытии. § 16.1. Задача о покрытии множества В этом параграфе мы сосредоточим внимание на следующей довольно общей задаче. Minimum Weight Set Cover (задача о минимальном взвешенном покрытии множества) Дано: Надо: система множеств (U, У), для которой [jSey S = найти минимальное по весу покрытие системы подсемейство 32 с у, что (JRe# R = U. U; веса с: (U,sr), т У . е. -»К+. такое При с = 1 данная задача называется задачей о минимальном покрытии множества. Другой интересный частный случай возникает, если \{S е. У: х е S}\ = 2 для всех х е U; это задача о минимальном взвешенном вершинном покрытии. Действительно, для данного графа G и функции с: V(G) —> R+ соответствующий экземпляр задачи определяется равенствами U := ?(G), У :— {5(и): и е V(G)} и с(5{и)) :=с{и) для всех и е V(G). Поскольку задача о минимальном взвешенном вершинном покрытии NP-трудна даже при единичных весах (теорема 15.24), задача о минимальном покрытии множества также NP-трудна. Джонсон [58] и Ловас [65] предложили простой жадный алгоритм для задачи о минимальном покрытии множества: на каждой итерации следует брать множество, которое покрывает максимальное количество еще не покрытых элементов. Хватал [32] обобщил этот алгоритм на взвешенный случай. Greedy Set Cover (алгоритм жадный для задачи о Вход: Выход: система множеств (С/, У), веса с: 5*-*R+. покрытие множествами 91 покрытии удовлетворяющая условию системы (У, У). множества) Us€yS = = U; (Г) Присвоить Ж := 0 и W := 0. (2) While W ф U do: Выбрать множество Rey\f, для которого R\ W ф 0 и . . , мини- \R\W\ мально. Присвоить & :=&u{R}hW :=WL\R.
456 Глава 16. Приближенные алгоритмы Очевидно, что время работы данного алгоритма составляет 0(|1Г| • \У |). Можно доказать следующую оценку погрешности. Теорема 16.3 (Хватал [32]). Для любого экземпляра ([/, <У, с) задачи о минимальном взвешенном покрытии множества алгоритм Greedy Set Cover находит покрытие, вес которого не превосходит Н(г) ОРТ([/, У, с), где г := maxSe5, |S| uH(r) = l + ± + ... + i. Доказательство. Пусть (U, У, с) — экземпляр задачи о минимальном взвешенном покрытии множества, а 32 = {Rj, ...,Rfc}—решение, найденное описанным выше алгоритмом, где Rt — множество, выбранное на i-й итерации. Для j = О,..., к положим Wj := |J-=1 R*. Для каждого ееС/ определим j (е) := min{ j е {1,..., к}: е е R;} — номер итерации, на которой элемент е был покрыт. Положим „(е) .= 'Око) УК)- \Rm\Wm^\- Фиксируем подмножество Sey и положим к' := max{j(e): е €S}. Имеем k' it' X>)=S S yw=Sijr[wiisn^\wM)i= eeS i=l e<ES:j(e)=i i=l ' * fc' k' i=l l l i=l l благодаря выбору R; на шаге (2) (заметим, что S\ Vt^_x / 0 при i = 1,..., к'). Обозначив st := \S\ W^J, получим eeS i=l i=l k' = c(S) J](Hfe) -H(si+1)) = c(S)(H(5l) -H(5fc4l)) < с(5)Н(51). i=l Поскольку sa = |S| < г, получаем Xees У(е) ^ c0>)# (/О- Просуммируем по всем S е б из оптимального покрытия ^ и получим к к SeffeeS e(=U i=l ee[/:;(e)=i i=l Более точный анализ погрешности невзвешенного случая приведен в работе Славика [79]. Раз и Сафра [74] установили, что найдется такая константа О О, что при РфЫРне существует алгоритма с оценкой погрешности с In \U\. В действительности оценка погрешности с In | U | не может быть достигнута при с < 1, если только не окажется, что всякая NP-сложная задача может быть решена за время о(п°(1°з1о*п)) (Фейге [38]).
§ 16.1. Задача о покрытии множества 457 Задача о минимальном взвешенном реберном покрытии, очевидно, является частным случаем задачи о минимальном взвешенном покрытии множества. В теореме 16.3 мы имеем г = 2, следовательно, для этого частного случая вышеописанный метод является ^-приближенным алгоритмом. Однако данная задача может быть также решена оптимально за полиномиальное время; см. упражнение 12 из гл. 11. Для задачи о минимальном вершинном покрытии вышеописанный алгоритм принимает следующий вид. Greedy Vertex Cover (алгоритм жадный для задачи о вершинном покрытии) Вход: граф G. Выход: вершинное покрытие R графа G. (1) Присвоить R := 0. (2) While E(G) / 0 do: Выбрать вершину и е V(G) \R максимальной степени. Присвоить R:=Ru{v} и удалить все ребра, инцидентные и. Этот алгоритм выглядит весьма естественно, и можно задаться вопросом, для какого к он является k-приближенным алгоритмом. Как ни удивительно, такого к не существует. В самом деле, оценка, данная в теореме 16.3, является почти наилучшей возможной. Теорема 16.4 (Джонсон [58], Пападимитриу и Стейглиц [70]). Для любого п>3 существует такой экземпляр G задачи о минимальном вершинном покрытии, что пН(п — 1) + 2 < |V(G)| < пН(п — 1) + п, в графе G максимальная степень вершины равна п — 1, OPT(G) = п, а представленный выше алгоритм может построить вершинное покрытие, содержащее \V(G)\ — п вершин. Доказательство. Для каждого n>3ni<n положим А1п := $]j=2 [^ I и V(Gn) := {аъ ..., aAn-i, Ъъ ..., Ъп, съ..., сп}; E(Gn):={{bi,ci}:i = l,...,n}U —1 Ai ujj (J {{a^b^iO'-^-l^ + l^^O-Alr1^}- Заметим, что \V(Gn)\ = 2n + A^-1, А^^пЩп-У-п и А^"1 > nH(n-l)-n-(n-2). На рис. 16.1 изображен граф G6. Если мы применим алгоритм к графу Gn, он может сначала выбрать вершину аАп-\ (поскольку у нее максимальная степень), затем последовательно вершины
458 Глава 16. Приближенные алгоритмы аАп-\_ъ аАп-1_2,..., аг. После этого останутся п взаимно не пересекающихся ребер, так что потребуется добавить еще п вершин. Следовательно, построенное вершинное покрытие состоит из А"-1 + п вершин, тогда как оптимальное вершинное покрытие {Ъъ ...,Ъп) имеет размер п. ? Тем не менее, существуют 2-приближенные алгоритмы для задачи о минимальном вершинном покрытии. Наиболее простой из них был придуман Гав- рилом (см. работу Гэри и Джонсона [3]). А именно, нужно лишь найти любое максимальное по включению паросочетание М и взять концы всех ребер из М. Очевидно, получится вершинное покрытие, которое содержит 2|М| вершин. Поскольку любое вершинное покрытие должно содержать \М\ вершин (ни одна вершина не покрывает два ребра из М), мы получили 2-приближенный алгоритм. Как легко видеть, полученная оценка погрешности точна (просто рассмотрим граф, состоящий из произвольного количества попарно не пересекающихся ребер). Как ни странно, описанный выше алгоритм является наилучшим известным приближенным алгоритмом для задачи о минимальном вершинном покрытии. Далее мы покажем, что найдется такое число к> 1, для которого не существует fc-прибли- женного алгоритма, если только не выполняется равенство P=NP (теорема 16.46). Более того, при условии Р ф NP не существует уже приближенного алгоритма с погрешностью 1,36 (Динур и Сафра [36]). См. также работу Кхота и Регева [60]. Тем не менее, алгоритм Гаврила может быть обобщен на взвешенный случай. Мы приведем алгоритм Бар-Иегуды и Эвена [19], который применим к общей задаче о минимальном взвешенном покрытии множества. Bar-Yehuda — Even Algorithm (алгоритм Бар-Иегуды — Эвена) Вход: система множеств (U, $?), удовлетворяющая условию {JSeyS = U; веса с: 5* ->R+. Выход: покрытие 9L системы (U, У).
§ 16.1. Задача о покрытии множества 459 ® Присвоить ^:=0и1У:=0. Присвоить у(е) := 0 для всех eel/. Присвоить c'(S) :=c(S) для всех Sey. (2) While W / f/ do: Выбрать элемент eG[/\W. Пусть КеУ, причем e eЯ и значение с'(Я) минимально. Присвоить у(е) := c'(R). Присвоить c'(S) := c'(S) — у(е) для всех таких Sey, что е е S. Присвоить 9t := ^ U {Я} и W := W U Я. Теорема 16.5 (Бар-Иегуда и Эвен [19]). Для любого экземпляра (У,У,с) задачи о минимальном взвешенном покрытии множества алгоритм Бар-Иегуды — Эвена находит покрытие, вес которого не превосходит р ОРТ([/, У, с), где р := := maxe€[7 \{S е У: е е S}|. Доказательство. Задача о минимальном взвешенном покрытии множества может быть записана в виде целочисленной линейной программы min{cx: Ах > И, х е {0,I}5"}, где строки матрицы А соответствуют элементам множества U, а столбцы соответствуют векторам инцидентности множеств из У. Оптимум линейной релаксации min{cx: Ах > И, х > 0} будет нижней оценкой для ОРТ([/, 5*, с) (отбрасывание условий х < И не меняет значения оптимума этой ЛП). Следовательно, по предложению 3.13 оптимальное значение двойственной ЛП max{yl: уА < с, у > 0} также будет нижней оценкой для ОРТ([/, Sf9 с). Заметим теперь, что в любой момент работы алгоритма справедливо неравенство c'{S) > 0 для всех S е «У. Пусть у обозначает вектор у в момент завершения алгоритма. Имеем у > 0 и 2e€S у(е) < c(S) для всех S е У, т. е. у является допустимым решением двойственной ЛП, и yU < тах{у 1: уА < с, у > 0} < ОРТ(С/, 5", с). Наконец, заметим, что Re# Re^eeR e(=U Поскольку в случае вершинного покрытия р = 2, мы получаем 2-приближен- ный алгоритм для задачи о минимальном взвешенном вершинном покрытии. Первый 2-приближенный алгоритм был придуман Хохбаум [53]. Она предложила искать оптимальное решение у двойственной ЛП из представленного
460 Глава 16. Приближенные алгоритмы выше доказательства и включить в ответ все множества S, удовлетворяющие равенству ^]e&s у{^) = c(S). В качестве альтернативы можно найти оптимальное решение X прямой ЛП и взять все множества S, для которых xs>l/p. Преимуществом алгоритма Бар-Иегуды — Эвена является то, что в нем в явном виде не используется линейное программирование. Фактически его можно легко реализовать за время 0(?8еу \S\). Это наш первый пример прямо-двойственного приближенного алгоритма. Более сложные примеры будут представлены в § 20.4 и 22.3. § 16.2. Задача о максимальном разрезе В этом параграфе мы рассмотрим еще одну фундаментальную задачу. Max-Cut (задача о разрезе максимального веса) Дано: неориентированный граф G и веса с: E(G) —> R+. Надо: найти разрез в G с максимальным весом. В отличие от нахождения разрезов минимального веса, обсуждаемых в § 8.7, нахождение максимального разреза представляет собой сложную задачу. Она является NP-трудной в сильном смысле; даже ее частный случай с = 1 (так называемая задача о максимальном разрезе) является трудным. Теорема 16.6 (Гэри, Джонсон и Стокмейер [46]). Задача о максимальном разрезе является NP-трудной. Доказательство. Мы докажем утверждение путем сведения от задачи Max-2Sat (см. теорему 15.37). Для произвольного экземпляра задачи Max-2Sat с п переменными и т клаузами мы построим граф G, вершинами которого являются литералы. Кроме того, в графе есть дополнительная вершина z. Для каждой переменной х добавим Зт параллельных ребер между х и х. Для каждой клаузы {А, А'} добавим три ребра {АД7}, {A,z} и {A',z}. Таким образом, всего в G имеется 2п + 1 вершин и Зт(п +1) ребер. Докажем, что в G максимальная мощность разреза равна Зтп + 2t, где t — максимальное число клауз, которые могут оказаться одновременно выполненными. Действительно, пусть задана истинностная оценка переменных, при которой истинными являются t клауз. Обозначим множество истинных литералов через X. Тогда |5G(X)| = Зтп + 2t. Обратно, если имеется множество X с V(G), удовлетворяющее условию \5G(X)\> Зтп Л-а, то без ограничения общности можно считать, что z &Х (иначе заменим X на V(G) \Х), а для каждой переменной х справедливо равенство \Х П {х, х}\ = 1 (иначе заменим X на X А {х}, увеличив при этом мощность разреза). Итак, мы можем установить все литералы из X в значение true и получить истинностную оценку, при которой выполняются не менее а/2 клауз. ?
§ 16.2. Задача о максимальном разрезе 461 Довольно просто найти 2-приближенный алгоритм для задачи о разрезе максимального веса. Пусть V(G) = {vl9...,vn}. Положим вначале X := {иг} и затем при i = 3,..., п добавим v{ в X, если eeE(vi,{v1,...,vi_1}nX) e€E(i/i,{i>i,...,i'f-i}\X) (Анализ этого алгоритма несложен и остается читателю в качестве упражнения 9.) Долгое время не было известно более качественного приближенного алгоритма. Наконец Гуманс и Уильямсон [48] смогли построить более точный алгоритм, используя технику полуопределенного программирования. Оставшаяся часть данного параграфа опирается на их работу. Пусть G— неориентированный граф с весами с: E(G) —> R+. Без ограничения общности можно считать, что V(G) = {1,..., п}. Для всех i,;, 1 < i,; < п, положим q; := c({i, j}), если {i, j} е Е (G), и су := 0 иначе. Тогда задача о разрезе максимального веса состоит в том, чтобы найти подмножество SC{l,...,n}, максимизирующее сумму ^ieS je{1 n}\s ctj. Выражая S через у е {—1,1}п, где у{ = 1, если и только если i € S, мы можем переформулировать задачу следующим образом: максимизировать - \\ су(1~~УьУ/) Ki<j<n при условиях Jj G {—1,1} (i = 1, ...,п). Переменные у? могут рассматриваться как одномерные векторы с единичной нормой. Будем теперь считать их многомерными векторами с единичной евклидовой нормой. Тогда получится следующая интересная релаксация: максимизировать - \\ cijO- — yiyj) Ki<j<n (16.1) При УСЛОВИЯХ Ух^^т (* = !>••• >п)- Здесь mGN,aym = (xGEm: ||лг||2 = 1} — единичная сфера в Rm. Например, для треугольника (п = 3, с12 = с13 = с23 = 1) оптимум достигается в точках на единичной окружности R2, являющихся вершинами равностороннего треугольника, т. е. ух = (0,-1), у2 = (—/3/2,1/2) и у3 = (-/3/2,1/2), откуда находим оптимальное значение 9/4. При этом вес максимального разреза равен 2. Однако задача (16.1) интересна тем, что можно построить ее «почти точное» решение за полиномиальное время. Идея решения заключается в том, чтобы не рассматривать явно ни переменные уь ни даже их размерность. Вместо этого вводится (п х п)-матрица вида (j?y-)?;=1 п. Матрица X симметрична и положительно полуопределена тогда и только тогда, когда она может быть записана в виде ВТВ для некоторой матрицы В, поэтому можно заменить исходную формулировку на эквивалентную:
462 Глава 16. Приближенные алгоритмы максимизировать - У, ciiO-~xij) Ki<j<n при условиях xti = 1 (i = 1,..., п), (16.2) матрица X = (Xy-)i<ij<n симметрична и положительно полуопределена. Зная решение задачи (16.2), можно получить решение задачи (16.1), в котором т < п, а значение целевой функции почти такое же, как в задаче (16.2). Для этого нужно найти разложение Холецкого, что можно сделать за время 0(п3) (при этом возникает ошибка округления, которая, к счастью, может быть сделана произвольно малой; см. упражнение 6 из гл.4). Задача (16.2) называется полуопределенной релаксацией (semidefinite programming relaxation). Как мы сейчас покажем, согласно теореме 4.19 эта задача может быть решена приближенно за полиномиальное время методом эллипсоидов. Сначала заметим, что в данной задаче мы оптимизируем линейный целевой функционал на выпуклом множестве вида Р := {х = (x(/)i<u<n ^ №пхп: матрица X симметрична и положительно полуопределена, xit = l (i = 1,..., п)}. 2 Проецируя Р на подпространство, натянутое на —-z— свободных переменных, получаем множество Р' '•= {(*u)i<i«tf<n: (ху)1<и<п еР с xti := 1 и xjt := xtj для i < ;}. Обратим внимание на то, что ни Р, ни Р' не являются полиэдрами. Однако множество Р' выпуклое, ограниченное и имеет полную размерность. Утверждение 16.7. Множество Р' выпуклое. Более того, В (О,1/п) ср;с в (о, п). Доказательство. Выпуклость следует из того простого факта, что выпуклая комбинация положительно полуопределенных матриц снова положительно полуопределена. Чтобы доказать первое включение, заметим, что если X — симметрическая (п х п) -матрица, в которой диагональные элементы равны 1, а недиагональные по модулю не превосходят 1/п, то для любого d е Rn имеем п dJXd = J] *iAdJ > 2^2 Е M+Xirf ~ (2"-2)l*yl • 1<Н1) > U=i 1ф} т. е. матрица X положительно полуопределена. Чтобы доказать второе включение, заметим, что все недиагональные элементы произвольной матрицы из Р имеют значения, по модулю не превосходящие 1. Следовательно, евклидова норма вектора, составленного из элементов над главной диагональю, не превышает п. ?
§ 16.2. Задача о максимальном разрезе 463 Осталось показать, что задача отделения для Р' может быть решена за полиномиальное время. Для этого можно воспользоваться методом исключения Гаусса. Теорема 16.8. Для данной симметрической матрицы XeQnxn за полиномиальное время можно определить, является ли X положительно полуопределенной, или найти вектор d е Q71, удовлетворяющий условию dTXd < О, если он существует. Доказательство. Если хпп < О, то возьмем d = (О,..., 0,1) и получим dTXd < 0. Если хпп =0nxriJ/0 для некоторого ; < п, то определим d следующим образом: х- dj := -1, dn := -^- + xnj и d{ := 0 при i е {1,...,п-1}\{;}. Получим dTXd = Xjj - 2xnj (g- + xnj) = -2(xnj)2 < 0, и тем самым мы снова показали, что матрица X не является положительно полуопределенной. В оставшихся случаях будем понижать размерность. Если xnj = 0 для всех ;, то последние строка и столбец могут быть удалены: матрица X положительно полуопределена, если и только если матрица X' := (Xy)ij=i,...>ri-i положительно полуопределена. Более того, если вектор с е Qn_1 удовлетворяет неравенству сТХ/с < 0, то положим d := \i) и получим dTXd < 0. Будем теперь считать, что хпп > 0. Рассмотрим матрицу yt fv _ XniXnj \ х -1*« Хпп )и=1^^ что соответствует одной итерации метода исключения Гаусса. Напомним, что матрица X' положительно полуопределена тогда и только тогда, когда матрица X положительно полуопределена. Для вектора с е Qn_1, удовлетворяющего неравенству стХ/с < 0, положим ( —2сл d:= Имеем п-1 п-1 dTXd =J]di (Xij + lTXni)d) + 2 X d-XnA + dnXnn = n-1 = cJX'c+ Y, с*^сД1-2 + 1) = cTX'c < 0. • 1 *' В итоге получим полиномиальный алгоритм. Чтобы убедиться, что числа, используемые при вычислении, не слишком велики, обозначим рассматриваемые матрицы через Х^п\ Х^п~г\..., X(fc) (Xw € QIXI) и предположим, что на итерации п + 1 — к мы обнаружили, что матрица Х^ = (yij)ij=i}...}k не является положительно полуопределенной (т. е. укк < 0 или укк = 0 и ykj ф 0 при некотором
464 Глава 16. Приближенные алгоритмы j < fc). При этом нам известен вектор с е Qfc, для которого стХ^с < 0 и size(c) < < 2 size(X(fc)). Теперь вектор d е Qn, удовлетворяющий условию dTXd < О, может быть построен, как описано выше. Заметим, что d служит решением системы линейных уравнений Md = ll), где j-я строка матрицы М является • ;-м единичным вектором, если ; < fc, • ;-м единичным вектором, если j > fc и j-я строка матрицы X® нулевая, • ;-й строкой матрицы X(j), продолженной нулями, в остальных случаях. Следовательно, используя теорему 4.4, получаем size(d) < 4n(size(M) + size(c)). Тем самым, по теореме 4.10 размер size(d) оказывается полиномиальным. ? Следствие 16.9. Задача отделения для Р' может быть решена за полиномиальное время. Доказательство. Пусть заданы элементы O^Oi <?<j<n и Y = C)fy)i<ij<n— симметрическая матрица, определенная условиями уа = 1 для всех i и yjt := ytj при i < j. Применим теорему 16.8. Если матрица Y положительно определена, то задача решена. В противном случае будет найден вектор d Е Qn, удовлетворяющий условию dTYd < 0. Тогда -?di>dTYd-Yid?=Y*2didjyiP i=l i=l Ki<j<n НО n У^ 2didjzij > — У] d? для всех z е Р'. l<i<j<n i=l Следовательно, (did/)1<i<;<n задает отделяющую гиперплоскость. ? Из доказанного вытекает следующий результат. Теорема 16.10. Для любого экземпляра задачи о разрезе максимального веса можно найти за время, полиномиальное по п, size((Cy)1<i<J<n) и size(e), матрицу Y = (Jij)i<ij<n G р> для которой 2 cy(l-y0-)>max| J] си(1-ху): (ху)1<и<пеР> -е. l<i<j<n ^Ki<j<n ' Доказательство. Применим теорему 4.19, используя утверждение 16.7 и следствие 16.9. ? Полуопределенные программы, подобные задаче (16.2), могут также быть решены приближенно алгоритмами внутренней точки, которые более эффективны, чем метод эллипсоидов. Детали см. в работе Ализаде [11]. Как было упомянуто выше, зная близкое к оптимальному решение задачи (16.2), можно получить решение задачи (16.1) с почти таким же значением целевого функционала, воспользовавшись разложением Холецкого. Это решение состоит из набора векторов у{ е Rm (i = 1,..., п) для некоторого т < п.
§ 16.2. Задача о максимальном разрезе 465 Так как (16.1) — релаксация нашей изначальной задачи, получаем, что оптимум не превосходит \ ?1<ККп с0-(1 -у^) + е. Векторы у{ лежат на единичной сфере. Возьмем теперь случайную гиперплоскость, проходящую через начало координат, и возьмем в качестве S множество таких индексов i, что yt лежат по одну (фиксированную) сторону от этой гиперплоскости. Случайная гиперплоскость, проходящая через начало координат, задается случайной точкой на (ш — 1)-мерной сфере. Она может быть получена выборкой т независимых вещественных чисел из стандартного нормального распределения. Последнее, в свою очередь, может быть получено из независимых случайных величин, равномерно распределенных на [0,1]. Детали см. в книге Кнута [61] (§3.4.1). Приведем теперь полностью алгоритм, полученный Гумансом и Уильям- соном. Goemans — Williamson Max Cut (алгоритм Гуманса—Уильямсона для задачи о максимальном разрезе) Вход: число п € N, числа c(j > 0, где 1 < i < j < п. Выход: множество S с {1,..., п}. (1) Решить задачу (16.2) приближенно, т. е. найти такую симметричную положительно полуопределенную матрицу X = (xij)1<ij<n, что xti = 1 при i = 1,..., п и Z1<i<J<n с0(1 -xtj) > 0,9995 • ОРТЦ6.2). (2) Применить к X разложение Холецкого и найти такие векторы уъ ..., уп е е Rm, что т < п и yJyj ** xtj для всех i, j е {1,..., п}. (3) Взять случайную точку а на единичной сфере {х G Rm: ||х||2 = 1}. 0 Присвоить S := {i е {1,..., п}: аТу( > 0}. Теорема 16.11. Алгоритм Гуманса — Уилъямсона для задачи Max Cut завершает работу за полиномиальное время. Доказательство. См. предшествующие рассуждения. Наиболее вычислительно тяжелый шаг, а именно ®, может быть выполнен за полиномиальное время по теореме 16.10. Мы можем положить е = 0,00025 Si^i<Knc0'' поскольку 2 2i<i</<n ctj является нижней оценкой для оптимального целевого значения (достигающейся случайным выбором подмножества SC{l,ttt,n})H, следовательно, нижней оценкой для оптимального значения в задаче (16.2). ? Докажем теперь оценку погрешности. Теорема 16.12 (Тумане и Уильямсон [48]). Алгоритм Гуманса — Уилъямсона для задачи Max Cut находит множество S, для которого математическое ожидание
466 Глава 16. Приближенные алгоритмы величины 2i€S j$scij составляет не менее 0,878 от максимально возможного значения. Доказательство. Пусть, как и раньше, Ут — единичная сфера в Rm, и пусть Н(у) :~ {* е ^т '• *ТУ ^ 0} — полусфера с полюсом в точке у е 5^. Для подмножества А с ут положим ,,му- volume(A) mAj"~ volume^)' Тем самым мы определили вероятностную меру на 5?т. Имеем \S П {i, j}| = 1 с вероятностью ц(Н(у{) ЛЯ(у;)), где А — симметрическая разность. Заметим, что Н{у{) AH(yj) представляет собой объединение двух сферических двуугольников, каждый из которых образован углом arccosCy.7}/-). Поскольку объем пропорционален углу, имеем М(Я(и) Д Я(з5)) = ± arccos^). Утверждение. Для всех 13 е [—1,1] выполняется неравенство -arccos/3> 0,8785 ^^. я ' 'ww~ 2 При /3 = 1 получаем равенство. Более того, с помощью несложных оценок можно показать, что arccos# . у 1 mm ——-s- = nun — J.XXJJ.X ¦% О 11ХХА1 Л . , -кр<1 1-р o<r<7il-cosr sinr где значение у' определяется соотношением cos у' + у' sin у' — 1. Имеем 2,3311< у'< 2,3312 и ^^> ¦ п* >1,38. ' sin у7 sm 2,3311 1,38 ^ 0,8785 Поскольку > —^—» утверждение доказано. Оценим математическое ожидание суммы $]ies jgs су " J] сф(Н{уд ДНО})) = J] су? arccosO^) ^ > 0,8785 • i J] су(1 -yJyj) w 0,8785 • ± J] c0(l -xy) > > 0,8785 • 0,9995 • OPT(16.2) > 0,878 • OPT(16.2) > > 0,878 ¦ max J ]T ctj,: S с {1,..., n)j. П Итак, мы получили вероятностный приближенный алгоритм с оценкой погрешности 1/0,878 < 1,139. Махаджан и Рамеш [69] показали, как дерандомизи- ровать этот алгоритм и получить детерминированный приближенный алгоритм с точностью 1,139. Тем не менее, при Р Ф NP не существует приближенного алгоритма с точностью 1,062 (Хостад [51], Пападимитриу и Яннакакис [71]). Другие интересные приложения полуопределенного программирования к комбинаторной оптимизации описаны в работе Ловаса [68].
§16.3. Раскраски 467 §16.3. Раскраски В этом параграфе мы кратко обсудим еще два хорошо известных частных случая задачи о минимальном покрытии множества. А именно, нас будут интересовать разбиения множества вершин графа на независимые множества, а также множества ребер графа на паросочетания. Определение 16.13. Пусть G — неориентированный граф. Вершинная раскраска графа G — это такое отображение /: V(G) -»N, что f(v) ф f(w) для всех {v, w} е E(G). Реберная раскраска графа G — это такое отображение /: E(G) —> N, что /(e) ф /(е') для всех е, е' € E(G), удовлетворяющих условиям е ф е' и е П е' Ф 0. Числа f[v) и /(e) называются цветами вершины и и ребра е. Другими словами, множества вершин или ребер с одинаковым цветом (значением /) должны быть независимыми подмножествами или паросочетаниями соответственно. Разумеется, мы заинтересованы в том, чтобы использовать как можно меньше цветов. Vertex Дано: Надо: . Coloring (задача о вершинной раскраске) неориентированный граф G. найти раскраску вершин /: V(G) —»{1,. значением к. .., к} графа G с минимальным Edge Coloring (задача с Дано: Надо: > реберной раскраске) неориентированный граф G. найти раскраску значением к. ребер/:E(G)-* {!,..., к} графа G с минимальным Сведение этих задач к задаче о покрытии подмножествами не кажется особенно полезным, поскольку тогда для задачи о вершинной раскраске нам пришлось бы выписать все максимальные по включению независимые множества, а для задачи о реберной раскраске пришлось бы работать с максимальными по включению паросочетаниями. В обоих случаях рассматриваемых объектов может быть экспоненциально много. Значение оптимума в задаче о раскраске вершин (т. е. минимальное необходимое число цветов) называется хроматическим числом графа. Значение оптимума в задаче о раскраске ребер называется реберно-хроматическим числом, а иногда также хроматическим индексом. Обе задачи о раскраске NP-трудны. Теорема 16.14. Следующие задачи распознавания являются NP-полными: (а) (Хольер [55]) определить, имеет ли данный простой граф реберно-хро- матическое число, равное 3. (б) (Стокмейер [80]) определить, имеет ли данный планарный граф хроматическое число, равное 3. ?
468 Глава 16. Приближенные алгоритмы Эти задачи остаются NP-трудными, даже если граф имеет максимальную степень 3 в случае (а) и максимальную степень 4 в случае (б). Утверждение 16.15. Для любого графа можно определить за линейное время, имеет ли он хроматическое число, меньшее 3, и если да, то найти оптимальную раскраску. Аналогичное утверждение верно и для реберно-хроматического числа. Доказательство. Хроматическое число графа равно 1 тогда и только тогда, когда в нем нет ребер. По определению графы с хроматическим числом 2 — это в точности двудольные графы. Согласно предложению 2.27 за линейное время можно проверить, является ли граф двудольным, и в случае положительного ответа найти его доли, т. е. раскраску вершин в два цвета. Чтобы проверить, что реберно-хроматическое число графа G меньше 3 (а если да, то найти оптимальную раскраску ребер), достаточно рассмотреть задачу о раскраске вершин в реберном графе для графа G. Очевидно, эти задачи эквивалентны. ? Также задача о реберной раскраске может быть решена для случая двудольных графов. Теорема 16.16 (Кёниг [62]). Реберно-хроматическое число двудольного графа G равно максимальной степени вершин в G. Доказательство. Доказательство проведем индукцией по |E(G)|. Рассмотрим граф G с максимальной степенью fc, и пусть e = {v,w] — его произвольное ребро. По предположению индукции в графе G — е существует раскраска ребер / с fc цветами. Найдутся такие два цвета i,; е {1,..., fc}, что /(е7) Ф i для всех е' е 5(v) и /(У) Ф ) Для всех е' G 5(w). Если i = j, то для обоснования шага индукции достаточно продолжить / на G, покрасив е в цвет i. Максимальная степень вершин графа Н = (V(G), {е' е E(G) \ {е}: Де') е {i, j}}) равна 2, и в этом графе вершина v имеет степень не более 1. Рассмотрим наибольший по включению путь Р в Н с концом в у. На пути Р цвета ребер чередуются. Следовательно, w не может быть другим концом пути Р. Поменяем местами цвета i и ; вдоль Р и продолжим раскраску ребер на G, покрасив е в цвет ;. ? Максимальная степень вершин является очевидной нижней оценкой для реберно-хроматического числа в любом графе. Как демонстрирует граф К3, эта оценка не всегда достигается. Следующая теорема показывает, как найти реберную раскраску любого простого графа, число цветов в которой не более чем на один больше, чем в оптимальной. Теорема 16.17 (Визинг [82]). Пусть G — неориентированный граф с максимальной степенью вершин fc. Тогда существует реберная раскраска G, в которой используется не более fc + 1 цветов. Данная раскраска может быть найдена за полиномиальное время.
§16.3. Раскраски 469 rt(y5-i) = n(yt) Рис. 16.2 Доказательство. Доказательство проведем индукцией по |E(G)|. Если в G нет ребер, то утверждение тривиально. Иначе возьмем произвольное ребро е={х, у0}; по предположению индукции существует раскраска / ребер графа G—е, в которой используется к + 1 цветов. Для каждой вершины v фиксируем цвет n(v) е е {1, ...,fc + l}\{/(w): w е 5с_е(ь0}, отсутствующий в и. Построим, начиная с вершины у0, максимальную относительно продолжения последовательность у0, уъ ..., yt различных соседей вершины х, удовлетворяющую условию niy^) = f({x, yj) при i = 1,..., t. Если ни одно из ребер, инцидентных х, не покрашено в цвет n(yt), то мы построим реберную раскраску /' графа G из /, для чего положим /'({*> Yi-i)) := := f({x> yj) (i = 1> • • • > 0 и f'({x, yt}) := n(yt). Иначе предположим, что существует инцидентное вершине х ребро цвета n(yt). Из максимальности t следует, что /({*, У5}) = иЫ Для некоторого 5 е {1,..., t -1}. Рассмотрим максимальный путь Р в графе (V(G), {е' eE(G-e): /(е') е {n(x),n(yt)}}), выходящий из yt (в данном графе максимальная степень вершины равна 2; см. рис. 16.2). Разберем три случая, в каждом из которых построим раскраску // ребер графа G. Если путь Р заканчивается в вершине х, то {у5, х} — его последнее ребро. Построим раскраску /' из /, обменяв цвета п(х) и n{yt) вдоль Р и взяв /'({*> Yt-i)):= :=/({*,yf}) (i = l,...,s). Если путь Р заканчивается в вершине ys_l5 то его последнее ребро покрашено в цвет п(х), так как цвет n(yt) = f({x,ys}) = n(ys_i) отсутствует в у5_2. Построим раскраску /' из / следующим образом: обменяем цвета п(х) и n(yt) вдоль? и положим /'({*, #_!}):=/({*, yj) (i = l,...,s-l) и/'({*,ys-i}):=ri(x). Если же путь Р не заканчивается ни в х, ни в ys_l5 то построим раскраску /' из /, обменяв цвета п{х) и n(yt) вдоль Р и взяв /'({*> У1-1}) •= /({*>#}) (i = l,...,t) и/'({*,yj):=n(x). П
470 Глава 16. Приближенные алгоритмы Из доказательства теоремы Визинга следует абсолютный приближенный алгоритм для задачи о реберной раскраске для случая простых графов. Если разрешить параллельные ребра, то утверждение теоремы Визинга становится неверным. Действительно, заменив каждое ребро треугольника К3 на г параллельных ребер, мы получим 2г-регулярный граф с реберно-хроматическим числом Зг. Займемся теперь изучением задачи о вершинной раскраске. Максимальная степень также дает верхнюю оценку на хроматическое число. Теорема 16.18. Пусть G — неориентированный граф с максимальной степенью fc. Тогда существует вершинная раскраска графа G, в которой используется не более к +1 цветов, причем эта раскраска может быть найдена за линейное время. Доказательство. Следующий жадный алгоритм, очевидным образом, находит такую раскраску. ? Greedy Coloring (алгоритм жадный для задачи о раскраске) Вход: неориентированный граф G. Выход: раскраска вершин графа G. (D Пусть V(G) = fa,-.,*U- (2) For i := 1 to n do: Присвоить /(i>j):=min{keN: k^fty) для всех таких j<i,что ijerfa)}. Для полных графов и нечетных циклов, несомненно, требуется fc +1 цвет, где fc — максимальная степень, но оказывается, что для всех остальных графов достаточно fc цветов (см. Брукс [26]). Однако максимальная степень не является нижней оценкой на хроматическое число: хроматическое число любой звезды К1п (п €. N) равно 2. Поэтому приведенные результаты не дают приближенного алгоритма. На самом деле для задачи о вершинной раскраске в общем случае неизвестно алгоритма с приемлемой оценкой погрешности; см. работу Ханны, Линиала и Сафры [59]. Цукерман [85] показал, что если Р ф NP, то для любого фиксированного е > 0 не существует полиномиального алгоритма с точностью п1_е, вычисляющего хроматическое число любого графа с п вершинами. Поскольку максимальная степень не является оценкой снизу для хроматического числа, можно попробовать рассмотреть в качестве подобной оценки максимальный размер клики. Очевидно, что если граф G содержит клику размера fc, то хроматическое число этого графа не меньше fc. Как показывает пример цикла длины 5, хроматическое число может превышать размер максимальной клики. В действительности бывают графы со сколь угодно большим хроматическим числом, не содержащие подграфов вида К3. Этот факт обуславливает следующее определение, предложенное Бержем [23,24].
§16.3. Раскраски 471 Определение 16.19. Граф G называется совершенным, если хШ) = ь>Ш) Для любого индуцированного подграфа Я графа G, где % Ш) — хроматическое число, а со (Я) — максимальный размер клики в Я. Рассмотрим следующую задачу распознавания: для заданного совершенного графа требуется выяснить, равно ли к его хроматическое число. Из вышесказанного сразу следует, что эта задача имеет хорошую характеризацию (лежит в NPDcoNP). Некоторые примеры совершенных графов приведены в упражнении 15. Полиномиальный алгоритм распознавания совершенных графов был найден Чудновской и др. [29]. Берж [23] предположил, что граф является совершенным тогда и только тогда, когда в нем не содержится (в качестве индуцированного подграфа) нечетный цикл длины пять или более, а также дополнение до такого цикла. Эта утверждение составляет так называемую сильную теорему о совершенном графе. Она была доказана Чудновской и др. [30]. Намного раньше Ловас [64] доказал более слабое утверждение, гласящее, что граф является совершенным, если и только если его дополнение совершенно. Этот результат известен как слабая теорема о совершенном графе. Для ее доказательства нам потребуется следующая лемма. Лемма 16.20. Пусть G — совершенный граф, и пусть выбрана вершина х G V(G). Тогда граф G':={V(G)u{y},E(G)u{{y,v}:ve{x}ur(x)}), получающийся из G добавлением новой вершины у, соединенной с вершиной х и всеми ее cocedsmu, также является совершенным. Доказательство. Применим индукцию по |V(G)|. Случай |V(G)| = 1 тривиален, так как граф К2 совершенен. Пусть теперь G — совершенный граф, содержащий не менее двух вершин. Рассмотрим вершину х е V(G), и пусть граф G' получается из G добавлением новой вершины у, соединенной с вершиной х и всеми ее соседями. Достаточно показать, что co(G7) = #(G')3 поскольку для собственных подграфов Я графа G' утверждение верно по предположению индукции (либо граф Я является подграфом графа G и, следовательно, совершенен, либо он получается из собственного подграфа графа G добавлением вершины у, как описано выше). Поскольку G' можно легко раскрасить в % (G) +1 цветов, мы можем считать, что co{G') = co(G). Тогда вершина х не содержится ни в какой максимальной клике графа G. Пусть / — раскраска вершин графа G в #(G) цветов, и пусть X := {v € V(G): f(u) = /(*)}. Имеем co(G-X) = X{G-X) = X(G)-l = co{G)-l, и, следовательно, co(G — {X\ {х})) = co{G) — 1 (так как х не принадлежит никакой максимальной клике графа G). Поскольку (X\M)u{y} = V(G')\V(G-(X\{x})) — независимое множество, получаем, что X(G') = X(.G-(X\{x})) + l = co(G-(X\{x})) + l = a>(G) = co(G'). П
472 Глава 16. Приближенные алгоритмы Теорема 16.21 (Ловас [64], Фалкерсон [43], Хватал [31]). Для простого графа G следующие утверждения эквивалентны: (а) граф G совершенный; (б) дополнение к G совершенно; (в) политоп независимых множеств, т. е. выпуклая оболочка всех характеристических векторов независимых множеств графа G, задается условиями | х е M+(G): ^ xv < 1 для всех клик S в G \. (16.3) ^ veS ' Доказательство. Мы докажем импликации (а)=>(в)=>(б). Этого достаточно, поскольку, применяя импликацию (а)=>(б) к дополнению графа G, мы получим импликацию (б)=>(а). Докажем импликацию (а)=»(в). Политоп независимых множеств, очевидным образом, содержится в множестве (16.3). Чтобы доказать обратное включение, возьмем произвольный рациональный вектор х в политопе (16.3). Тогда можно записать xv = pv/q, где q е N и pv е. Z+ для v € V(G). Заменим каждую вершину и на клику размера pv, т. е. рассмотрим граф G', определяемый следующим образом: V(G') := {(i;,i):ve V(G), 1 < i < pv], E(G') := {{(i;, 0, (i/, j)}:ve V(G), 1 < i < j < pv} U U {{(v, i), (w,;)}: {i/, w} € E(G), 1 < i < pw, 1 < J < Рш} • Из леммы 16.20 следует, что граф G' совершенный. Для произвольной клики X' в G' ее проекция на G (также являющаяся кликой) определяется как X :={и s V(G): (v, i) е X7 для некоторого i]. Имеем 1^,|<2а, = 9 2лг"<5- иеХ veX Таким образом, co{G') < q. Поскольку граф G' совершенный, для него существует раскраска вершин /, в которой используется не более q цветов. Для вершины и е V(G) и индекса i = 1,..., q положим aiv := 1, если f({y, j)) = i для некоторого ;, и aiv := 0 в противном случае. Тогда SiLi aUv = Pv ПРИ всех v G У(С), и, следовательно, вектор v q JveV(G) q *—i l i=l является выпуклой комбинацией характеристических векторов независимых множеств (здесь а{ = (aiv)v&v{G)). Докажем импликацию (в)=>(б). Покажем индукцией по |V(G)|, что если политоп (16.3) целый, то дополнение к графу G совершенно. Поскольку графы с менее чем тремя вершинами совершенны, можно считать, что |V(G)| > 3 и политоп (16.3) целочисленный.
§16.3. Раскраски 473 Требуется показать, что множество вершин любого индуцированного подграфа Я графа G можно разбить на а[Н) клик, где а (Я) —размер максимального независимого подмножества в Я. Для собственных подграфов Я это следует из предположения индукции, поскольку (по теореме 5.13) любая грань целого политопа (16.3) снова является целым политопом. В частности, целой будет грань, задаваемая опорной гиперплоскостью xv = 0 (и € V(G) \ V(H)). Тем самым, остается доказать, что множество V(G) может быть разбито на a{G) клик. Выражение Их = a{G) задает опорную гиперплоскость для политопа (16.3), следовательно, множество | х G R+(G): ^Г xv < 1 для всех клик S в G, ^xv = a{G) \ (16.4) ^ veS veV(G) ' является гранью этого политопа. Эта грань содержится в некоторых фасетах. Все эти фасеты не могут одновременно иметь вид {х € (16.3): xv = 0} для некоторых и (иначе в их пересечении лежало бы начало координат). Поэтому существует некоторая клика S в G, удовлетворяющая условию Xues xv = 1 Для всех д: из множества (16.4). Следовательно, эта клика S пересекается с каждым максимальным независимым множеством в G. По предположению индукции множество вершин графа G — S можно разбить на a{G — S) = a(G) — 1 клик. Для завершения доказательства достаточно добавить к ним S. ? Данное доказательство было найдено Ловасом [67]. Для случая совершенных графов система неравенств, задающая множество (16.3), обладает свойством TDI (упражнение 16). Ценой некоторых дополнительных усилий можно доказать, что для совершенных графов задача о вершинной раскраске, задача о независимом подмножестве максимального веса и задача о клике максимального веса могут быть решены за сильно полиномиальное время. Несмотря на то что все эти задачи в общем случае NP-трудны (см. теорему 15.23, следствие 15.24 и теорему 16.14(6)), существует число, которое всегда заключено между размером максимальной клики и хроматическим числом и может быть вычислено за полиномиальное время с помощью метода эллипсоидов. Это число представляет собой значение тета-функции для графа-дополнения. Само понятие тета-функ- ции было введено Ловасом [66]). Детали этого построения, однако, не слишком просты; см. работу Грётшеля, Ловаса и Скрейвера [49]. Одна из наиболее известных задач теории графов — это проблема четырех красок. В ней спрашивается, любая ли планарная карта может быть раскрашена в четыре цвета так, что никакие две страны с общей границей не будут покрашены в один цвет. Если мы посмотрим на страны как на области на плоскости и рассмотрим двойственный планарный граф, то придем к следующему эквивалентному вопросу: всякий ли планарный граф допускает раскраску вершин в четыре цвета? Аппель и Хакен [12], а также Аппель, Хакен и Кох [13] доказали, что ответ на этот вопрос положительный: хроматическое число любого планарного графа не превосходит 4. Более простое доказательство теоремы о четырех красках (которое, тем не менее, основывается на автоматической проверке возникающих в анализе
474 Глава 16. Приближенные алгоритмы случаев с помощью компьютера) представлено Робертсоном и др. [76]. Мы докажем следующий более слабый результат, известный как теорема о пяти красках. Теорема 16.22 (Хивуд [52]). Любой планарный граф допускает вершинную раскраску с использованием не более пяти цветов, причем такая раскраска может быть найдена за полиномиальное время. Доказательство. Применим индукцию по |V(G)|. Можно считать, что граф G простой. Зафиксируем произвольное планарное вложение Ф = 00, (Je)eeE(G)) графа G. По следствию 2.33 в графе G найдется вершина и степени пять или меньше. По предположению индукции для графа G — v существует раскраска вершин / с использованием не более пяти цветов. Предположим, что вершина и имеет степень 5 и все ее соседи покрашены в различные цвета (иначе мы легко можем продолжить раскраску на G). Пусть юъ w2, w3, w4, w5 — соседи вершины v, перечисленные в порядке, в котором ломаные J{VtW] выходят из v. Докажем, что в графе G — v не существует вершинно непересекающихся путей Р из вершины шг в вершину ш3 и Q из вершины w2 в вершину ш4. Для этого возьмем и^-Шз-путь Р, и пусть С — цикл в G, образованный из пути Р и ребер {и, шг}, {и, w3}. По теореме 2.30 множество R2\ IJee?(C) Je распадается на две связные области, а вершина v лежит на границе обеих областей. Следовательно, w2 и ш4 принадлежат различным областям, а значит, любой ш2-ш4-путь в G — v должен содержать вершину из G. Пусть X — связная компонента графа G[{x€V(G)\{i;}:/W€{/(ii^),/(ii^)}}], содержащая шг. Если X не содержит w3, то можно обменять цвета в X, после чего продолжить раскраску на G, покрасив v в прежний цвет вершины шг. Таким образом, можно считать, что и^-Шз-путь Р содержит лишь вершины цветов /(шх) и/Оз). Аналогично если не существует ш2-ш4-пути Q, содержащего лишь вершины цветов /(ш2) и /(ш4), то доказательство можно считать завершенным. Но обратное означает, что в графе G — v существуют вершинно непересекающиеся пути Р из вершины шг в вершину ш3 и Q из вершины ш2 в вершину w4, что невозможно. ? Таким образом, мы получили вторую А/Р-трудную задачу, для которой существует абсолютный приближенный алгоритм. Действительно, из теоремы о четырех красках следует, что хроматическое число недвудольного планарного графа может быть равно лишь 3 или 4. С использованием полиномиального алгоритма Робертсона и др. [75], который раскрашивает любой планарный граф в четыре цвета, получаем абсолютный приближенный алгоритм, использующий не более одного лишнего цвета. Фюрер и Рагхавачари [44] обнаружили третью естественную задачу, которая может быть приближена с аддитивной ошибкой величины 1: для данного ненаправленного графа найти остовное дерево, в котором максимальная степень
§ 16.4. Схемы приближения 475 была бы наименьшей (среди всех остовных деревьев). Эта проблема обобщает задачу о гамильтоновом пути и, следовательно, является NP-трудной. Предложенный указанными авторами алгоритм также обобщается на более общий случай, относящийся к задаче о дереве Штейнера: для данного множества Т с V(G) найти такое дерево S в G, что V(T) с у(5) и максимальная степень вершины в S минимальна. Сингх и Лау [78] нашли обобщение на случай остовных деревьев минимального веса с ограниченными степенями. С другой стороны, следующая теорема показывает, что в предположении, что Р ф NP, для многих задач не существует абсолютного приближенного алгоритма. Утверждение 16.23. Пусть & и &' — (бесконечные) семейства конечных множеств, и пусть 2? —следующая задача оптимизации: по данному множеству Е G ^ и функции с: Е —» Z найти такое множество F се, что Е <?&' и значение с(Е) минимально (или определить, что такого множества F не существует). Тогда для & существует абсолютный приближенный алгоритм, если и только если задача 2? может быть решена точно за полиномиальное время. Доказательство. Предположим, что существуют полиномиальный алгоритм А и целое число к, удовлетворяющие условию \А((Е,с))-ОРТ((Е,с))\<к для всех экземпляров (Е, с) задачи 9>. Покажем, как за полиномиальное время найти точное решение задачи &. Для данного экземпляра (Е, с) задачи 9 построим новый экземпляр (Е, с'), где с'(е) := (к + 1)с(е) для всех е е Е. Очевидно, оптимальное решение останется прежним. Но если теперь применить А к новому экземпляру, то мы получим |A((E,cO)-OPT((E,cO)|<fc, и, значит, А((Е, с')) = ОРТ((Я, с7)). ? Примерами задач, к которыми применимо доказанное утверждение, являются задача минимизации для системы независимости, а также аналогичная задача максимизации (достаточно умножить с на —1). В частности, данное утверждение распространяется на все задачи из списка в § 13.1. § 16.4. Схемы приближения Вспомним, что в предыдущем параграфе мы обсуждали абсолютный приближенный алгоритм для задачи о реберной раскраске. Для него также несложно получить относительную оценку погрешности. Действительно, несложно выяснить, равно ли реберное хроматическое число заданного графа 1 или 2 (предложение 16.15). Поэтому теорема Визинга также дает приближенный алгоритм с точностью 4/3. С другой стороны, из теоремы 16.14(a) следует, что для этой задачи не существует fc-приближенного алгоритма при всех fc < 4/3 (кроме случая р = NP).
476 Глава 16. Приближенные алгоритмы Таким образом, из существования абсолютного приближенного алгоритма в общем случае не следует существования fc-приближенного алгоритма для некоторого к > 1. Мы столкнемся с похожей ситуацией в задаче об упаковке в контейнеры, которая будет обсуждаться в гл. 18. Это наблюдение приводит к следующему определению. Определение 16.24. Пусть 9 — задача оптимизации с неотрицательными весами. Асимптотическим k-приближенным алгоритмом для 9 называется полиномиальный алгоритм А для 9, для которого существует такая константа с, что .. ? OPT(J) - с < А(1) < fc OPT(J) + с для всех экземпляров I задачи 9. Мы также говорим, что А имеет асимптотическую оценку погрешности, равную fc. (Асимптотическая) точность приближения для задачи оптимизации 9 с неотрицательными весами определяется как точная нижняя грань всех чисел fc, для которых существует (асимптотический) fc-приближенный алгоритм для 9, или оо, если для этой задачи вообще не существует (асимптотического) приближенного алгоритма. Например, точность приближения для вышеупомянутой задачи о реберной раскраске равна 4/3 (кроме случая Р = NP), но асимптотическая точность приближения равна 1 (причем не только для простых графов; см. работу Сандерса и Штойрера [77]). Особый интерес представляют задачи оптимизации с (асимптотической) точностью приближения, равной 1. Для этих задач введем следующие понятия. Определение 16.25. Пусть 9 — задача оптимизации с неотрицательными весами. Схема приближения для 9 — это такой алгоритм А, получающий на вход экземпляр / задачи 9 и число е > О, что для каждого фиксированного е он является приближенным алгоритмом фактора (1 + е) для 9. Асимптотическая схема приближения для 9 — это пара алгоритмов (А, А') со следующими свойствами. Алгоритм А' является полиномиальным алгоритмом, который принимает на вход число е > О и выдает число се. Алгоритм А принимает на вход экземпляр J задачи 9 и число е > 0 и выдает допустимое решение для J, удовлетворяющее неравенствам -^ ОРТЦ) -с€ < А(1, е) < (1 + е) ОРТ(Л + се. Для каждого фиксированного е время работы алгоритма А ограничено полиномом от size (J). (Асимптотическая) схема приближения называется полностью полиномиальной (асимптотической) схемой приближения, если ее время работы и максимальный размер любого числа, появляющегося в процессе вычислений, ограничены полиномом от size(J) + size(e) + 1/е. В литературе можно встретить аббревиатуры PTAS (polynomial time approximation scheme) для (полиномиальных) схем приближения и FPAS или FPTAS
§ 16.4. Схемы приближения 477 (fully polynomial time approximation scheme) для полностью полиномиальных схем приближения. Можно считать, что в случае отсутствия абсолютных приближенных алгоритмов полностью полиномиальные схемы приближения—лучшее, на что мы можем надеяться, когда имеем дело с NP-трудными задачами оптимизации (по крайней мере, пока стоимость любого допустимого решения является неотрицательным целым числом, а это можно предполагать во многих случаях без ограничения общности). Утверждение 16.26. Пусть 9 — [X, (Sx)xeX, с, goal) —задача оптимизации, в которой значения с являются неотрицательными целыми числами. Пусть алгоритм А таков, что для каждого экземпляра I задачи 9 и числа е > О он вычисляет допустимое решение I, удовлетворяющее неравенствам -^ ОРТЦ) < А{1, е) < (1 + е) ОРТЦ), и его время работы ограничено полиномом от size(Z) + size(e). Тогда задача 9 может быть решена точно за полиномиальное время. Доказательство. Для заданного экземпляра I запустим вначале А на входе Ц, 1). Положим б := -— ( . и заметим, что е ОРТЦ) < 1. Теперь запустим А на входе Ц, е). Поскольку значение size (в) ограничено полиномом от size(J), данная процедура составляет полиномиальный алгоритм. Если 9 — задача минимизации, то имеем А{1, е) < (1 + е) OPT(J) < ОРТЦ) + 1, откуда с учетом целочисленное™ с следует оптимальность найденного решения. Аналогично если 9 — задача максимизации, то имеем А{1, е) > Y^-e ОРТЦ) > (1 - е) ОРТЦ) > ОРТЦ) -1. ? К сожалению, полностью полиномиальные схемы приближения существуют только для очень небольшого числа задач (см. теорему 17.11). Более того, даже из существования полностью полиномиальной схемы приближения не следует наличие абсолютного приближенного алгоритма, и примером здесь служит задача о рюкзаке. В гл. 17 и 18 мы обсудим две задачи (о рюкзаке и об упаковке в контейнеры), для которых существуют полностью полиномиальная схема приближения и полностью полиномиальная асимптотическая схема приближения соответственно. Для многих задач эти два типа схем приближения совпадают. Теорема 16.27 (Пападимитриу и Яннакакис [72]). Пусть 9 —задача оптимизации с неотрицательными весами. Предположим, что для каждой константы к существует полиномиальный алгоритм, который определяет, имеет ли данный экземпляр оптимальное значение не более к, и если да, то находит оптимальное решение. Тогда для 9 существует схема приближения, если и только если для 9 существует асимптотическая схема приближения.
478 Глава 16. Приближенные алгоритмы Доказательство. Импликация слева направо очевидна. Предположим, что для 9 существует асимптотическая схема приближения (А, А'). Опишем схему приближения для 9. Пусть выбрано фиксированное число е > 0. Можно считать, что е < 1. Положим е' := —-——J < | и сначала запустим А' на входе е\ в результате чего получим константу се/. Для заданного экземпляра J затем проверим, ограничено ли значение OPT(J) числом 2с6//е. Для каждого фиксированного е последнее является константой, так что мы сможем ответить на поставленный вопрос за полиномиальное время и, если ОРТ СО < 2се//б, найти оптимальное решение. Иначе применим А к / и е' и получим решение со значением V, удовлетворяющее неравенствам ^7 ОРТЦ) - cv < V < (1 + е') ОРТ(7) + сб/. Мы утверждаем, что найденное решение имеет достаточно большое значение целевой функции. Действительно, имеем се/ < - ОРТ(/), следовательно, V < (1 + еО ОРТ(/) + се/ < (l + |) OPT(J) + | OPT(J) = (1 + e) OPT(/) и V > ^ту OPT(7) - § OPT(J) = 22 + 2ee2 0PT(/) " ! 0PT(/) = = (1^7 + §) OPT(J) - | ОРТЦ) = ^ OPT(/). П Таким образом, определение асимптотической схемы приближения имеет смысл только для тех задач, в которых ограничение константным оптимальным значением сохраняет трудность (например, упаковка в контейнеры или задачи о раскраске). Во многих случаях такое ограничение приводит к задаче, которая может быть решена за полиномиальное время некоторым полным перебором. § 16.5. Задача о максимальной выполнимости Ранее мы рассмотрели задачу о выполнимости (Max-Sat) и доказали ее А/Р-полно- ту. В этом параграфе мы проанализируем соответствующую задачу оптимизации. Max-Sat (задача о максимальной выполнимости) Дано: множество переменных X, семейство клауз ЗГ над X, функция весов с: 2f->R+. Надо: найти такую истинностную оценку Г для переменных X, что суммарный вес клауз из ЗГ, которые выполнены при значениях Т, максимален. Как мы увидим, задача поиска приближенного решения Max-Sat служит хорошим примером использования вероятностного метода в теории алгоритмов. Исторически это приложение было одним из первых.
§ 16.5. Задача о максимальной выполнимости 479 Сначала рассмотрим тривиальный вероятностный алгоритм: придадим каждой переменной значение true независимо с вероятностью 1/2. Очевидно, такой алгоритм строит истинностную оценку, относительно которой каждая клауза Z оказывается истинной с вероятностью 1 — 2~'z'. Обозначим через г случайную величину, принимающую значение true с вероятностью 1/2 и false иначе, и пусть R = (r,r,...,r) — случайная величина, равномерно распределенная по всем наборам истинностных значений (все копии г независимы друг от друга). Обозначим через с(Т) суммарный вес истинных (при заданной истинностной оценке Г) клауз. Тогда математическое ожидание суммарного веса клауз, выполненных для R, составляет Ехр(с(Я)) = 2~] с(^) Prob(Z истинна при оценке R) = Ze2? = J] c(Z)(l -2-lzl) > (1 -Х-*) Y, Ю- (16-5) Z<=2? Ze2? Здесь p := minZ€^ \Z\, a Exp и Prob — математическое ожидание случайной величины и вероятность события соответственно. Поскольку оптимум не может превышать 2Ze^c(Z), математическое ожидание веса решения R не более чем в 1/(1 — 2~р) раз хуже оптимального. Однако нам бы хотелось получить детерминированный приближенный алгоритм. В действительности оказывается возможно превратить описанный (тривиальный) вероятностный алгоритм в детерминированный, сохранив при этом оценку погрешности. Такое преобразование обычно называют дерандомизацией. Будем фиксировать истинностную оценку шаг за шагом. Рассмотрим множество X = {хъ ..., хп]. Пусть мы уже зафиксировали истинностную оценку Г для переменных хъ..., хк (О < к < п). Если теперь выбрать хк+1,..., хп случайно, установив каждую переменную независимо в true с вероятностью 1/2, то математическое ожидание суммарного веса выполненных клауз будет составлять е0 = ExpfcfT^),..., Т(хк), г,..., г)). Если установить хк+1 в true (false), а затем выбрать значения хк+2,..., хп случайно, то математическое ожидание суммарного веса выполненных клауз будет равно ег (соответственно е2). Значения ех и е2 могут рассматриваться как условные математические ожидания. Очевидно, ео — (ei + ег)/2, так что хотя бы одно из значений еъ е2 должно быть не меньше е0. Выберем для переменной хк+1 значение true, если ег > е2, и false в противном случае. Такой прием носит название метода условных вероятностей. Johnson's Max-Sat Algorithm (алгор Вход: Выход: итм Джонсона для задачи множество переменных X функция весов с: f2f —> К+. истинностная оценка Т: X о максимальной выполнимости) = {*i>. —» {true, • • уXnJ> false}. семейство клауз ЗГ над X,
480 Глава 16. Приближенные алгоритмы (Т) For к := 1 to п do: If Exp(c(T(*i), • • •, П*к-1), true, r,..., r)) > > Ехр(с(Г(х!),..., r(xfc_i), /ake, r,..., r)) then присвоить T(xk) := true else присвоить T(xk) :=false. Упомянутые математические ожидания несложно вычислить, используя соотношение (16.5). Теорема 16.28 (Джонсон [58]). Алгоритм Джонсона для задачи Мах-Sat имеет точность 1/(1 — 2~р), где р —максимальный размер клаузы. Доказательство. Определим условные математические ожидания sk := Яхр(с(Т(хг),..., Т(хк), г,..., г)) для к = 0,..., п. Заметим, что sn = с(Т) представляет собой суммарный вес клауз, выполненных алгоритмом, а кроме того, s0 = Ехр(с(Я)) > (1 — 2~р) J]Z€^c(Z) согласно соотношению (16.5). Более того, st > s^ благодаря выбору T{xt) на шаге ф (при i = 1,..., п). Тем самым, sn > s0 > (1 — 2~p)^]ZG2r c(Z). Поскольку оптимум не превосходит ^ize& СС^)> доказательство на этом закончено. ? Поскольку р ^ 1, мы получили в том числе 2-приближенный алгоритм. Однако этот результат не слишком интересен, поскольку существует гораздо более простой способ получить точность 2: установим все переменные в true, затем установим все переменные в/ake и в конце выберем лучшее из этих двух решений. Тем не менее, Чэнь, Фризен и Чжэн [27] показали, что алгоритм Джонсона в действительности имеет точность 3/2. Если в экземпляре задачи нет одноэлементных клауз (р > 2), то рассматриваемый алгоритм имеет точность 4/3 (по теореме 16.28), а при р > 3 его точность улучшается до 8/7. Яннакакис [84] нашел приближенный алгоритм с точностью 4/3 для общего случая задачи. В своей работе он опирался на технику потоков в сетях. Далее мы обсудим более простой приближенный алгоритм, имеющий точность 4/3, предложенный Гумансом и Уильямсоном [47]. Довольно просто представить задачу Max-Sat в виде целочисленной линейной программы. Для заданных множества переменных X = {хъ ..., хп}, семейства клауз ЗГ = {Zly..., Zm} и весов съ ..., ст запишем тп максимизировать У* CjZj при условиях ^<2^# + ][](1-;к) 0 = 1,...,™), i-.Xi&Zj i-.x^Zj yi9 Zj G {0,1} (i = 1,..., n, j = 1,..., m).
§ 16.5. Задача о максимальной выполнимости 481 Здесь равенство у{ = 1 означает, что переменная х{ устанавливается в true, а равенство Zj = 1 означает, что клауза Z; выполнена. Рассмотрим теперь линейную релаксацию этой программы: максимизировать при условиях i-.xtez, Я<1 У1>0 Zj<l zj>0 i-.XiS.Zj -Уд 0 = 1,. a = i... a = i... 0 = 1,- 0 = 1,- ..,т), -,п), ¦ ,п), ..,т), ..,т). (16.6) Пусть (у*, z*) — оптимальное решение задачи (16.6). Установим теперь каждую переменную х{ в true независимо с вероятностью у*. Этот прием известен под названием вероятностного округления (randomized rounding) и был предложен в работе Рагхавана и Томпсона [73]. В итоге получим еще один вероятностный алгоритм для задачи Max-Sat, который может быть дерандомизирован аналогично тому, как это было проделано выше. Пусть гр — случайная величина, принимающая значение true с вероятностью р и значение false с вероятностью 1 — р. Goemans—Williamson Algorithm Max-Sat (алгоритм Гуманса — Уильямсона для задачи о максимальной выполнимости) Вход: множество переменных X = {хг,..., хп}, семейство клауз 2? над X, веса с: 3f —> R+. Выход: истинностная оценка Т: X -* {true,false). (Г) Найти оптимальное решение (у*, z*) линейной программы (16.6) (2) For к := 1 to п do: If Ехр(с(Т(хг),..., Т{хк_г), true, ry*+i,..., r^)) > > Exp(c(r(xx),..., Т(хк_г), false, ry*+i,..., ry*)) then присвоить T(xk) := true else присвоить T(xk) :=false. Теорема 16.29 (Гуманс и Уильямсон [47]). Алгоритм Гуманса — Уильямсона для задачи Max-Sat имеет точность r , .q, где q —максимальный размер клаузы. Доказательство. Обозначим sk := Exp^TO^),..., T(xk), ry* ,..., ry*)) при k = = 0,...,n. Снова имеем st > s^ при i = 1,...,n, и sn = c(T) — суммарный вес
482 Глава 16. Приближенные алгоритмы клауз, выполненных алгоритмом. Тем самым, остается оценить значение s0 = = ExpCcCRyO), где Rr = (ry*,..., rr). При ; = 1,..., m вероятность того, что клауза Z; будет выполнена при оценке Ry*, равна 1-(по-*>)-(п4 Поскольку среднее геометрическое всегда не превосходит среднего арифметического, данная вероятность не меньше -(-4(^*2ча-х))Г> Для доказательства последнего неравенства заметим, что для любого а, 0 < а < 1, и любого fceN выполнено неравенство i-(>-f)'>.(i-(i-{n. Действительно, его части равны при а е {0,1}, и левая часть (как функция от а) выпукла, в то время как правая часть линейная. Таким образом, имеем m s0 = Exp(c(RyO) = /, Cj РгоЬ(клауза Z; истинна при оценке Ry*) > ^ С Г л \Ъ\ (заметим, что последовательность f f 1— г) J монотонно возрастает и сходится к 1/е). Поскольку оптимум в задаче не превосходит оптимального значения линейной релаксации 2™ а zjcj} доказательство на этом завершено. ? Так как в итоге получается приближенный алгоритм с точностью -—=¦ (-^т ^ 1,582). Теперь у нас есть два приближенных алгоритма, которые ведут себя по-разному: первый больше подходит для случая длинных клауз, в то время как второй—для коротких. Будет естественным попытаться их скомбинировать.
§16.6. РСР-теорема 483 Теорема 16.30 (Гуманс и Уильямсон [47]). Для получения приближенного алгоритма с точностью 4/3 для задачи Max-Sat достаточно запустить вместе алгоритм Гуманса — Уильямсона и алгоритм Джонсона, а затем выбрать лучшее из двух найденных ими решений. Доказательство. Воспользуемся обозначениями из представленных выше доказательств. Наш алгоритм будет строить решение, суммарный вес выполненных клауз в котором не меньше max{Exp(c(R)), Exp(c(R^))} > \ ( Ехр(с(Я)) + ЕхрШг))) > Заметим, что в последнем неравенстве для всех к е N: при fc е {1,2} получаем равенство; при к > 3 получаем *-**-(1-й'«-И>§- Поскольку оптимум не превосходит ^^=l z*Cj, теорема доказана. П Дяя задачи Max-Sat были найдены и немного лучшие приближенные алгоритмы (в которых используется полуопределенное программирование); см. работы Гуманса и Уильямсона [48], Махаджана и Рамеша [69], Фейге и Гуманса [40] и Асано [17]. Лучший из известных на сегодняшний день алгоритмов достигает точности 1,256 (Авидор, Беркович и Цвик [18]). Кроме того Белларе и Судан [21] показали, что NP-трудно найти приближение для Max-Sat с точностью выше 74/73. Как мы покажем в следующем параграфе, даже для задачи Max-3Sat (частного случая задачи Max-Sat, в котором каждая клауза содержит в точности три литерала) не существует схемы приближения (если, конечно, Р Ф NP). §16.6. РСР-теорема Многие результаты о неприближаемости основываются на глубокой теореме, которая дает новое описание класса NP. Напомним, что задача распознавания свойства принадлежит классу NP, если и только если существует полиномиальный алгоритм проверки сертификата. Теперь мы рассмотрим вероятностные алгоритмы проверки сертификатов, которые читают экземпляр задачи полностью, но в сертификате проверяют лишь малую часть. Экземпляры, для которых ответ положителен и для которых построен корректный сертификат, принимаются
484 Глава 16. Приближенные алгоритмы такими алгоритмами всегда. Однако иногда эти алгоритмы способны также ошибочно принять и экземпляры, для которых ответ отрицателен. (В последнем случае вместе с экземпляром на вход также поступает некоторый, очевидно, некорректный сертификат.) Какие биты сертификата будут прочитаны, определяется вероятностно и заранее. Более того, выбор позиций для чтения зависит от экземпляра задачи х и 0(log(size(x))) случайных бит. Дадим теперь формальное определение. Пусть s — строка и t е Nfc. Тогда st будет обозначать строку длины к, в которой z-й символ равен ?гму символу строки s (i = 1, ...,fc). Определение 16.31. Задача распознавания свойства (X, У) принадлежит классу PCP(logn, 1), если существуют полином р, константа fceN, функция /: {(*, г): х е X, г е {0, i}U°g(p(size(*)))j} _+ N^ вычислимая за полиномиальное время и такая, что f(x, г) е {1,..., [p(size(x))\}к при всех х и г, и задача распознавания свойства {Х\ У') из класса Р, где Х':={(х,п,у):хеХ, тг е {1,..., Lp(size(x))J}\ re{0,l}fc}, удовлетворяющие следующим условиям: для любого экземпляра xgI если х е У, то существует такая строка с е {0, i}Lp(slzeW)J> что Prob((x, /(*, г), сд^г)) е Y') = 1; если же х ф У, то Prob((x, /Qt, г), c/(jcr)) е У7) < 1/2 для всех с е {0, i}Lp(sizeW)J. Упомянутые выше вероятности рассматриваются относительно равномерного распределения случайных строк г € {0, i}Liog(p(size(*)))j Акроним РСР расшифровывается как «вероятностно проверяемое доказательство» (probabilistically checkable proof). Параметры logn и 1 отражают тот факт, что для экземпляра размера п проверяющий алгоритм использует О (logn) случайных бит и читает 0(1) бит сертификата. Для любого экземпляра с положительным ответом существует сертификат, который всегда принимается. При этом для экземпляров с отрицательным ответом ни одна строка не будет принята как сертификат с вероятностью 1/2 или выше. Заметим, что вероятность ошибки 1/2 может быть эквивалентно заменена на любое число между нулем и единицей (см. упражнение 19). Утверждение 16.32. Справедливо включение PCP(log п, 1) с А/р. Доказательство. Пусть {X, У) е PCP(log п, 1), а обозначения р, k, /, (Х\ Y') имеют тот же смысл, что и в определении 16.31. Пусть X" := {(*, с): х € X, с € {0, i}Lp№*C*))J} в Положим У" := {(*, с) G X": Prob((x, f(x, г), cfM) € Y') = l}. Чтобы доказать, что {X, У) eNP, достаточно показать, что (X", Y") еР. Поскольку существует лишь 2^°^{size{x)))K т. е. не более p(size(x)) строк г е {0, ipgCpCsizeC*)))^
§16.6. РСР-теорема 485 мы можем перепробовать их все по очереди. Для каждой такой строки г вычислим значение f(x, г) и проверим свойство {х, /(х, г), Сд^г)) € Y' (мы пользуемся тем, что {Х\ Y') еР). Общее время работы будет полиномиально по size(x). ? Удивительным образом, оказывается, что вероятностные проверяющие алгоритмы, которые читают лишь константное число бит сертификата, настолько же сильны, как и стандартные (детерминированные) алгоритмы проверки сертификатов, читающие всю подаваемую им на вход информацию. В этом заключается так называемая РСР-теорема. Теорема 16.33 (Арора и др. [15]). Справедливо равенство NP = PCP(log h, 1). Доказательство вложения NP cpcP(log п, 1) весьма сложно и далеко выходит за рамки данной книги. Оно основано на ранних (более слабых) результатах Фейге и др. [41] и Ароры и Сафры [16]. Замкнутое доказательство РСР-теоре- мы 16.33 представлено в работах Ароры [14], Хугарди, Прёмеля и Штегер [56], Аузьелло и др. [2]. РСР-теорема затем последовательно усиливалась в работах Белларе, Голдрейха и Судана [22] и Хостада [51]. Например, число к в определении 16.31 может быть взято равным 9. Новое доказательство РСР-теоремы было предложено Динур [35]. Мы представим некоторые следствия данной теоремы, связанные с непри- ближаемостью задач комбинаторной оптимизации. Начнем с задачи о максимальной клике и задачи о максимальном независимом множестве. А именно, в заданном ненаправленном графе G требуется найти клику или независимое множество максимальной мощности. Вспомним предложение 2.2 (и следствие 15.24): задачи поиска максимальной клики, максимального независимого множества и минимального вершинного покрытия эквивалентны. Тем не менее, из существования 2-приближенного алгоритма для задачи о минимальном вершинном покрытии (§ 16.1) не следует существования приближенного алгоритма для задачи о максимальном независимом множестве или задачи о максимальной клике. А именно, может так случиться, что алгоритм найдет вершинное покрытие С размера п — 2, тогда как оптимум равен п/2 — 1 (где п = |V(G)|). Дополнение V(G)\C будет образовывать независимое множество размера 2, но при этом максимальное независимое множество имеет размер п/2 +1. Этот пример показывает, что преобразование одного алгоритма в другой посредством полиномиального сведения в общем случае не сохраняет оценку погрешности. Специальный тип сведений, лишенный этого недостатка, будет рассмотрен в следующем параграфе. Сейчас же мы выведем неприближаемость задачи о максимальной клике из РСР-теоремы. Теорема 16.34 (Арора и Сафра [16]). В предположении, что РфЫР, не существует 2-приближенного алгоритма для задачи о максимальной клике. Доказательство. Пусть & = (X, Y) — некоторая АГР-полная задача. В соответствии с РСР-теоремой 16.33 имеем g? ePCP(logn, 1). Пусть обозначения р, fc, / и &>' := {Х\ Y') имеют тот же смысл, что и в определении 16.31.
486 Глава 16. Приближенные алгоритмы Для любого элемента х е X построим граф Gx следующим образом. В качестве множества вершин возьмем V(GX) := {(r,a):r<= {0,1}И°8(Р№е(*)))^ а е {0,1}*, (*, /(*, г), a) е У} (задав тем самым все «принимающие запуски» вероятностного алгоритма проверки сертификата). Две вершины (г, а) и (г', а') будут соединены ребром, если at = а', для всех таких i и j, что i-я координата вектора f(x, г) равна ;-й координате вектора /(*, г'). Поскольку ^'еРи существует лишь полиномиальное число случайных строк, граф Gx может быть построен за полиномиальное время (и имеет полиномиальный размер). Если х е Y, то по условию существует такой сертификат с е {0,i}\-P(slze№^ у что (*,/(*, г), с/(х,г)) € Г при всех г € {o,l}Llosfr(sizeM»J. Следовательно, в Gx существует клика размера 2Llos(p(slze(*)))J. С другой стороны, если х ? Y, то в графе Gx не существует клики размера 1 . 2Liog(P(size(x)))j> действительно, предположим, что (г(1),а(1)),..., (r(t),a(t)) — вершины клики. Тогда г^,..., г^ попарно различны. Положим ct := а? в тех случаях, когда fc-я координата вектора /(х, r(j)) равна i, а остальные координаты сертификата с (если таковые есть) выберем произвольным образом. Тем самым мы получим такой сертификат с, что (х, /(*, r(l)), c/(jc ГШ)) е Ух для всех i = 1,..., t. Если х ? У, то t < \ • 2Llos(p(sizeM»J. Итак, с помощью 2-приближенного алгоритма для задачи о максимальной клике мы можем проверить истинность утверждения х е Y, т. е. решить задачу ^. Поскольку задача & является NP-полной, это возможно, только если Р = NP. ? Сведение, примененное в этом доказательстве, было предложено в работе Фейге и др. [41]. Поскольку вероятность ошибки 1/2 в определении 16.31 может быть заменена на любое число между 0 и 1 (упражнение 19), отсюда следует несуществование р-приближенного алгоритма для задачи о максимальной клике при всех р > 1 (при условии Р ф NP). Используя более сложную технику, Цукерман [85] показал, что если Р ф NP, то при любом фиксированном е > 0 ни один полиномиальный алгоритм не может найти максимальный размер клики в графе с п вершинами с точностью п1_б. В этих обозначениях наилучший известный на сегодняшний день алгоритм находит клику размера к log3 n/(n(loglogn)2) (Фейге [39]). Разумеется, аналогичные утверждения также справедливы и для задачи о максимальном независимом множестве (достаточно перейти от графа к его дополнению). Теперь обратимся к следующему частному случаю задачи Max-Sat. Max-3Sat (задача о максимальной 3-выполнимости) Дано: множество переменных X и семейство клауз i2f над X, где каждая клауза состоит ровно из трех литералов. Надо: найти такую истинностную оценку Т для X, что число клауз из ЗГ, выполненных при оценке Г, максимально.
§16.6. РСР-теорема 487 В §16.5 мы представили простой приближенный алгоритм с точностью 8/7 для взвешенного случая задачи Max-3Sat (теорема 16.28). Хостад [51] показал, что это наилучшая возможная оценка. А именно, при P^NP для любого р < 8/7 не может существовать приближенного алгоритма с точностью р для задачи Max-3Sat. Мы докажем следующий более слабый результат. Теорема 16.35 (Арора и др. [15]). Если Р ф NP, то не существует схемы приближения для задачи Max-3Sat. Доказательство. Пусть 9 = {X, У) — некоторая А/Р-полная задача. В соответствии с РСР-теоремой 16.33 имеем 9 ePCP(logn, 1). Выберем значения р, к, f и &' \— [Х\ У') в соответствии с определением 16.31. Для любого х G X построим экземпляр Jx задачи 3Sat. А именно, для каждой случайной строки г е {0, i}Uog(p(size(*)))J определим семейство 3Sat-Knay3 3fr (объединение всех этих семейств и будет составлять Jx). Сначала построим семейство клауз f2fr' с произвольным числом литералов, а затем применим предложение 15.21. Итак, пусть ге{0, ipg(b№eM))j и /(*, г) = (ta,..., tk). Пусть {а(1),..., а(^} — множество строк а € {0,1}к, для которых (х, f(x, г), а) е У'. Если sr = 0, то просто положим f2f' := {{у}, {у}}, где у — некоторая новая, ранее не использованная переменная. Иначе положим с е {0, i}Lp(slze(*))J. Получаем, что (х,/(*, г), c/(xr)) е У' если и только если Последнее эквивалентно формуле Л (V (%=<))• Данная конъюнкция клауз может быть построена за полиномиальное время, поскольку 9' е Р и fc — константа. Введя булевы переменные яъ ..., n\p(size(pc))\> представляющие биты съ ..., c^,(size(x))j, мы получим семейство 5?'г из fcSr клауз (состоящих из 5Г литералов). При этом все клаузы из 5fr7 выполнены, если и только если (х, /(*, г), с/(Х)Г)) € У7. По предложению 15.21 мы можем заменить каждую клаузу из 3fr' эквивалентной конъюнкцией 3Sat-Knay3, причем число клауз увеличится не более чем в max{sr—2,4} раз. Обозначим новое семейство клауз через 3fr. Поскольку sr < 2к, каждое семейство i2fr состоит из не более чем I := к2 max{2fc — 2,4} 3Sat-ioiay3. Итоговый ЗБа1:-экземпляр Jx получается объединением семейств клауз i2fr по всем г. Заметим, что экземпляр Jx может быть построен за полиномиальное время. Теперь пусть х — экземпляр задачи 9 с положительным ответом, тогда согласно определению 16.31 для него существует сертификат с. Этот сертификат определяет набор истинностных значений, при котором Jx выполняется.
488 Глава 16. Приближенные алгоритмы С другой стороны, если х— экземпляр с отрицательным ответом, то одновременно в 3fr может быть выполнено не более половины всех клауз. Тем самым, в этом случае любой набор истинностных значений оставляет не менее половины всех клауз ложными. 21 Итак, при к < /_1 любой fc-приближенный алгоритм для задачи Max-3Sat будет строить для любого выполнимого экземпляра задачи истинностную оцен- * 21-1 л 1 ку, относительно которой доля истинных клауз окажется больше 2/ = 1 — ^т • Следовательно, такой алгоритм позволит определить, верно ли, что хеУ, или нет. Поскольку задача 9 является NP-полной, такой алгоритм может существовать только в случае Р = NP. ? §16.7. L-сведение Цель данного параграфа — показать, что в предположении, что Р ф NP, схем приближения не существует не только для Max-3Sat, но и для некоторых других задач. Так же как и в случае доказательств NP-полноты (§15.5), не обязательно для каждой задачи иметь доказательство, прямо опирающееся на определение класса PCP(logn, 1). Вместо этого можно воспользоваться специальным типом сведения, который сохраняет приближаемость (чего полиномиальное сведение в общем случае не делает). Определение 16.36. Пусть заданы две задачи оптимизации с неотрицательными весами 9 — (X, (Sx)x&x, с, goal) и 9' = {Х\ [S,^x&Xfi с', goal'). L-сведение от 9 к 9' задается указанием пары функций / и g, вычислимых за полиномиальное время, и двух таких констант а, /3 > О, что для каждого экземпляра х задачи 9 справедливы следующие утверждения: (а) f(x) — экземпляр задачи 9\ удовлетворяющий неравенству ОРТ(/(х)) < <аОРТ(х); (б) для любого допустимого решения у' задачи /(х) значение g{x, у') представляет собой такое допустимое решение х, что |c(*,g(*,y')) -ОРТ(х)| < /3|с'(/М,уО -ОРТ(/(х))|. Говорят, что задача 9 L-сводима к задаче 9'9 если существует L-сведение от 9 к 9'. Буква «L» в термине «L-сводимость» означает «линейная». L-сводимость была введена в работе Пападимитриу и Яннакакиса [71]. Из определения сразу следует, что L-сводимость транзитивна. Утверждение 16.37. Пусть заданы три задачи оптимизации с неотрицательными весами 9, 9', 9". Если (/, g, а, /3) —L-сведение от 9 к9\а (/', g' a', ft) — L-сведение от 9' к 9'\ то их композиция (/", g", аа\ /З/З') является L-сведением от 9 к 9", где /"(*) = /'(/(*)) и g"Qt, у") = g(x, g'Qt', у")). ? Основное свойство L-сводимости состоит в том, что она сохраняет приближаемость.
§16.7. L-сведение 489 Теорема 16.38 (Пападимитриу и Яннакакис [71]). Пусть 9 и 2?'— две задачи оптимизации с неотрицательными весами. Пусть (/, g, а, /3) —L-сведение от 9 к &'. Если существует схема приближения для задачи 9\ то существует также схема приближения для задачи 9>. Доказательство. Пусть заданы экземпляр х задачи 9 и число е, О < е < 1. Применим схему приближения 9' к f{x) и е' := в/(2сф). Получим допустимое решение у' для /(*). Выдадим в качестве ответа значение у := g(x, у'), которое будет допустимым решением для х. Поскольку |с(*,у)-ОРТ(*)1 <)3|с/(/(х),У)-ОРТ(/М)| < < Р тах{(1 + еО ОРТ(Дх)) -ОРТ(Дх)), ОРТ(Дх)) - ^7 ОРТ(/(х))} < < 0е' ОРТ(/(*)) < а$е' ОРТ(х) = § ОРТ(х), получаем, что с(х, у) < ОРТ(х) + |с(х, у) - OPT(jc)| < (l + |) OPT(x) и с(х, у) > ОРТ(х) - | ОРТ(х) - с(х, У)1 > (l - §) ОРТ(х) > ^ ОРТ(х). Следовательно, описанный алгоритм представляет собой схему приближения для задачи 9. ? Предыдущая теорема вместе с теоремой 16.35 мотивируют следующее определение. Определение 16.39. Задача оптимизации 9 с неотрицательными весами называется MAXSNP-трудной (MAXSNP-hard), если задача Max-3Sat L-сводима к 9. Сам по себе акроним MAXSNP обозначает некоторый класс задач оптимизации, введенный Пападимитриу и Яннакакисом [71]. Этот класс нам далее не потребуется, поэтому мы опустим его (не вполне тривиальное) определение. Следствие 16.40. Если РфЫР, то ни для одной MAXSNP-трудной задачи не существует схемы приближения. Доказательство. Утверждение непосредственно следует из теорем 16.35 и 16.38. ? Сейчас мы докажем MAXSNP-трудность нескольких задач, предъявив для них L-сведение от задачи Max-3Sat. Начнем со следующего частного случая задачи Max-3Sat. Max-3,3Sat (задача о максимальной 3,3-выполнимости) Дано: множество переменных X и семейство клауз & над X, каждая из которых содержит не более трех литералов, причем ни одна переменная не встречается более чем в трех клаузах. Надо: найти такую истинностную оценку Т для переменных X, что число клауз из 3f, выполненных при оценке Г, максимально.
490 Глава 16. Приближенные алгоритмы NP-трудность этой задачи может быть легко доказана сведением от задачи 3Sat (или Max-3Sat), см. упражнение ц из гл.15. Поскольку это преобразование не является L-сведением, из него не следует MAXSNP-трудность. Нам потребуется гораздо более сложная конструкция, в которой используются так называемые экспандеры. Определение 16.41. Пусть G — неориентированный граф и у > 0 — константа. Граф G называется у-экспандером, если для любого подмножества А с V(G), для которого \А\ < |V(G)|/2, справедливо неравенство |Г(А)| > у\А\. Например, полный граф будет 1-экспандером. Тем не менее, более интересны экспандеры с малым числом ребер. Мы приведем следующую теорему без доказательства (оно весьма сложно). Теорема 16.42 (Айтаи [10]). Существует такая положительная константа у, что для любого заданного четного числа п> 4 можно построить 3-регулярный у-экспандер с п вершинами за время 0(п3 log3 п). Приведенное ниже следствие было упомянуто (и использовано) Пападимит- риу [7], а его правильное доказательство было дано в работе Фернандеса-Баки иЛагергрена [42]. Следствие 16.43. Для любого целого числа п > 3 за время 0(п3 log3 п) можно построить ориентированный граф GcO(n) вершинами и подмножество SCV(G) размера п, для которых выполнены следующие условия: \5'(и)\ + \5+{и)\ < 3 при всех v е V(G); \5~(и)\ + |5+(i;)| = 2 при всех veS; |5+(А)| > min{|Sn А|, |S\A|} для любого А с V(G). Доказательство. Пусть у > 0 — константа из теоремы 16.42. Положим к := \1/у]. Вначале построим 3-регулярный у-экспандер Я, содержащий п или п + 1 вершин, для чего воспользуемся теоремой 16.42. Заменим каждое ребро {v, w] на к параллельных ребер (v, w) и к параллельных ребер (ш, v). Обозначим получившийся граф через Я7. Заметим, что для любого такого А с У(Я'), что \А\ < |У(Я0|/2, мы имеем |5+(А)| = fc|5„(A)| > к|Г„(А)| > ку\А\ > \А\. Аналогично для любого такого А с У(Я'), что \А\ > |У(Я/)|/2, выполняются оценки |б+,(Л)| = fc|5„(V(H0\A)| > к\Гн(УШ')\А)\ > rW(.H')\A\ > \V(H')\A\. Итак, в обоих случаях справедливо неравенство IS^fA)! > min{|A|, |У(Я0\А|}. Разобьем каждую вершину и е. У(Я') на 6fc + 1 вершин xvi (i = 0,..., 6fc), так что каждая вершина, кроме xv0, будет иметь степень 1. Теперь для каждой вершины xvi добавим вершины wvij и yvij (; = 0,..., 6k), соединенные путями
§16.7. L-сведение 491 длины 12к+2, проходящими через wVtU0, и>иЛЛ,..., wvX6k, xv>i, yvX0,..., уиЛ>6к в указанном порядке. Наконец, добавим ребра (yVtij, wvj,i) Для всех v G ^№0* всех i е {0,..., 6к} и всех j е {О,..., 6fc} \ {/}. В итоге для всех v е У (Н') мы получим множество вершин Zv размера (6fc+l) х х (12fc+3). Всего получившийся граф G содержит |V(H')|(6fc + l)(12fc + 3) = 0{п) вершин, каждая степени два или три. По построению G[ZV] содержит min{|X1|, |Х2|} вершинно непересекающихся путей из Хг в Х2 для каждой пары непересекающихся подмножеств Хъ Х2 множества {xvi: i = 0,..., 6fc}. В качестве S возьмем п-элементное подмножество множества {xv0: vgV(H')}. Заметим, что каждая из этих вершин имеет ровно одно входящее и ровно одно исходящее ребро. Осталось доказать, что |5+(А)| > min{|S П А\, \S\A\} для любого А с V(G). Докажем этот факт индукцией по | {и е V (Я0: 0 Ф А П Zv ф Zv} |. Если этот размер равен нулю, т. е. А = (JUGB Zv для некоторого В с V(H'), то имеем |5+(А)| = |5+(В)| > тт{\В\, |У(Я')\В|} > min{|Sn А\, \S\A\}. Иначе возьмем такую вершину и е V{H'), что 0фАпгуф Zv. Пусть Р := {xvi: i = 0,..., 6fc} П А и Q := {xuf: i = 0,..., 6fc}\А. Если \Р\ < 3fc, то по свойству графа G[ZV] имеем \E^ZvnA,Zv\A)\>\P\ = \P\S\^\PnS\>\E^A\ZVJAnZv)\ + \PnSl Применив предположение индукции к A\ZV, мы тем самым получим \5+(A)\>\5+(A\Zv)\ + \PnS\> >mm{|Sn(A\Zj|jS\(A\Zj|} + |PnS|>min{|SnA|,|S\A|}. Аналогично если \Р\ > 3fc + 1, то |Q| < 3fc и по свойству графа G[ZV] имеем |E+(ZunA,Z^A)|>|Q| = |Q\S| + |QnS|>|E+(Z^A,V(G)\(AUZj)| + |QnS|. Применив предположение индукции к A U Zv, получаем |5j(A)|>|5+(AUZj| + |QnS|> >min{|Sn(AUZjUS\(AUZj|} + |QnS|>min{|SnAUS\A|}. П Теперь мы можем доказать следующее утверждение. Теорема 16.44 (Пападимитриу и Яннакакис [71], Пападимитриу [7], Фернандес- Бака и Лагергрен [42]). Задача Мах-3,3Sat является MAXSNP-трудной. Доказательство. Опишем L-сведение (/, g, а, /3) от задачи Max-3Sat. Для построения / обозначим через (X, ЗГ) произвольный экземпляр задачи Max-3Sat. Дяя каждой переменной х € X, которая встречается более чем в трех, скажем в к клаузах, модифицируем экземпляр следующим образом. В каждой клаузе заменим х на новую (и отличную от других) переменную. Тем самым вместо х мы получим набор новых переменных хъ ..., хк. Запишем теперь дополнительные
492 Глава 16. Приближенные алгоритмы ограничения, которые, говоря неформально, будут обеспечивать одинаковость истинностных значений для всех копий хъ..., хк. Построим граф G и подмножество S, как указано в следствии 16.43. Переименуем вершины так, чтобы выполнялось равенство S = {1,..., к}. Теперь для каждой вершины и е V(G)\S введем новую переменную xv, а для каждого ребра (у, ш) € Е (G) введем клаузу {xv, xw}. В целом мы добавим не более §*+»(^1 + 1)ИЛ+з)<я^Т* новых клауз, где у — константа из теоремы 16.42. Применив вышеописанную замену ко всем переменным, мы получим экземпляр (Х\ %') = f{X, 2?) задачи Мах-3,3Sat, для которого справедлива оценка 124 < |3f| +315|~i~|23|2f| < 94б|"-]2|^Г|. Следовательно, ОРТ(Х' 2Г') < \2?\ < 94б|~-] \2?\ < 1892[-] ОРТ(Х, ЗГ), поскольку по крайней мере половину всех клауз любого экземпляра Max-Sat можно сделать истинными (для этого достаточно взять все переменные равными true или false). Тем самым, можно выбрать а := 1892|"1/у"|2 (см. определение L-сведения). Для того чтобы описать g, рассмотрим произвольную истинностную оценку Т' для X'. Сначала построим истинностную оценку Г" для Х\ для которой окажутся выполненными по крайней мере столько же клауз из i2f', сколько их было относительно Г'. Кроме того, относительно Г" будут выполнены все добавленные клаузы (отвечающие ребрам графов G). А именно, фиксируем переменную х, встречающуюся в {X, 2?) более трех раз, и рассмотрим граф G, построенный выше. Положим А:= {и eV(G): T'(xv) = true}. Если \Sf)A\ > \S\A\, то возьмем T"(xv) :=true для всех и € V(G), иначе возьмем T"(xv) :=false для всех v е V(G). Очевидно, что все новые клаузы (соответствующие ребрам графа G) будут при этом выполнены. Существует не более min{|S ПЛ|, |S\A|} старых клауз, выполненных относительно Т\ но не относительно Т". С другой стороны, относительно Т' ложными будут все клаузы вида {xv, xw}, где {у, w) е 5+(Л). По свойствам графа G таких клауз не менее min{|SfiA|, |S\A|}. Теперь Г" определяет истинностную оценку Т=g(X, 3f, Tf) для X очевидным образом: положим Г(лг) := Т"(х) = Т'(х) для всех х еX ПX' и Т{х) := Т"{х{), если х{ — одна из новых переменных, заменившая х при переходе от (X, ЗГ) к [Х\ соотносительно оценки Т ложными будут столько же клауз, сколько и относительно Г". Тем самым, если с(Х, 3f, Г) означает число клауз в экземпляре (X, 2?), истинных при оценке Г, то имеем \Х\ - с{Х, 2f, Г) = 12*1 - с(Х' &, Г") < \&\ - с{Х\ &, Т'). (16.7) С другой стороны, любая истинностная оценка Т для X порождает истинностную оценку Г' для Х\ относительно которой ложными будут столько же
§16.7. L-сведение 493 клауз, сколько их было в X относительно Г. А именно, для каждой переменной х и соответствующего графа G достаточно взять T'{xv) :=Т{х) для всех xv, v е V(G). Следовательно, \х\ - орт(х, зг) > \st\ - ортгх', %'). (16.8) Из оценок (16.7) и (16.8) вытекает, что I орт(х, %)-с{х, аг, г)| = (|аг| -с(х, зг, г)) - (|аг| -орт(х, дг)) < < ОРТ(Х' 2?) - с{Х\ 3f', Г') = |ОРТ(Х' 3f') - с(Х' 3f', Г7)I, где Т — g{X, f2f, Г7). Таким образом, (/, g, а, 1) действительно является L-сведением. ? Представленное рассуждение может быть использовано в качестве отправной точки для других доказательств MAXSNP-трудности. Следствие 16.45 (Пападимитриу и Яннакакис [71]). Частный случай задачи о максимальном независимом множестве в случае графов с максимальной степенью 4 является MAXSNP-трудным. Доказательство. Конструкция, использованная в доказательстве теоремы 15.23, задает L-сведение от задачи Max-3,3Sat к задаче о максимальном независимом множестве, ограниченной на случай графов с максимальной степенью 4. Действительно, для каждого экземпляра {X, ДГ) мы строим такой граф G, что из любой истинностной оценки, при которой истинными оказываются к клауз, можно легко получить независимое множество мощности к и наоборот. ? В действительности задача о максимальном независимом множестве является MAXSNP-трудной, даже если ограничиться случаем 3-регулярных графов (Берман и Фуджито [25]). С другой стороны, для графов с максимальной степенью к простой жадный алгоритм, который на каждом шаге выбирает вершину и минимальной степени и удаляет ее со всеми ее соседями, является приближенным алгоритмом точности (к + 2)/3 (Халдорссон и Радакришнан [50]). Для к = 4 мы получаем 2-приближенный алгоритм. Альтернативный способ (приводящий, однако, к худшей оценке точности, равной 8) состоит в использовании 2-приближенного алгоритма для задачи о минимальном вершинном покрытии и нижеследующей теоремы. Теорема 16.46 (Пападимитриу и Яннакакис [71]). Задача о минимальном вершинном покрытии является MAXSNP-трудной в случае графов с максимальной степенью 4. Доказательство. Рассмотрим тривиальное сведение от задачи о максимальном независимом множестве (см. предложение 2.2), положив /(G) := G и g(G,X) := := v(G) \Х для всех графов G и всех X с V (G). Хотя в общем случае это преобразование не является L-сведением, мы сейчас покажем, что оно будет таковым, если ограничиться графами с максимальной степенью 4. Если в графе G максимальная степень не превосходит 4, то существует независимое множество размера не менее |V(G)|/5. Тем самым, если обозначить
494 Глава 16. Приближенные алгоритмы максимальный размер независимого множества через a(G) и минимальную мощность вершинного покрытия через t(G), то получим a{G)>\{\V{G)\-a{G)) = \T{G) и a{G) — \Х\ = \V(G) \Х\ — t(G) для любого независимого множества X с V(G). Следовательно, (/, g, 4,1) является L-сведением. П Ряд более сильных утверждений содержится в работах Клементи и Треви- зана [33], а также и Хлебика и Хлебиковой [28]. В частности, известно, что не существует схемы приближения для задачи о минимальном вершинном покрытии (в предположении, что Р ф NP). MAXSNP-трудностъ ряда других задач будет установлена в последующих главах; см. также упражнение 22. Упражнения 1. Разработайте 2-приближенный алгоритм для следующей задачи. Для заданного ориентированного графа с весами на ребрах требуется найти ациклический подграф максимального веса. Замечание. Для этой задачи неизвестно fc-приближенного алгоритма для fc<2. 2. Задача о fc-центрах формулируется следующим образом: для заданного неориентированного графа G, весов с: E(G) -> R+ и числа к € N, к < |V(G)|, требуется найти такое множество X с V(G) размера fc, что значение max mindist(i;,x) ueV(G) хеХ минимально. Как обычно, через OPT(G, с, fc) обозначено оптимальное значение. (а) Пусть S — максимальное по включению независимое множество в графе (Y(G), {{v, w}: distO, w) < 2R}). Покажите, что OPT(G, с, \S\ -1) > R. (б) (Хохбаум и Шмойс [54]) Используя п. (а), предложите 2-приближенный алгоритм для задачи о fc-центрах. (в)* (Сюй и Немхаузер [57]) Покажите, что при РфЫР для задачи о fc-центрах не существует r-приближенного алгоритма при г < 2. (Указание. Воспользуйтесь упражнением 14 из гл. 15.) 3. Можно ли найти минимальное вершинное покрытие (или максимальное независимое множество) в двудольном графе за полиномиальное время? 4. Покажите, что оценка погрешности в теореме 16.5 точна. 5 (Бар-Иегуда [неопубликовано]). Покажите, что следующий алгоритм строит 2-приближенное решение для задачи о минимальном вершинном покрытии: построить DFS-дерево и вывести в качестве ответа все вершины с ненулевой исходящей степенью. 6. Покажите, что линейная релаксация min{oc: Мтх > И, х > 0} для задачи о минимальном взвешенном вершинном покрытии, где М является матрицей инцидентности рассматриваемого неориентированного графа и с е R+ , всегда имеет полуцелое оптимальное решение (т. е. в нем встречаются только значения 0,1/2,1). Выведете отсюда еще один 2-приближенный алгоритм.
Упражнения 495 7* (Беккер и Гейгер [20]). Рассмотрим задачу о минимальном взвешенном множестве вершин, разрезающих контуры (minimum weight feedback vertex set problem): для заданного ненаправленного графа G и весов с: V(G) —> R+ найти такое множество вершин X с V(G) минимального веса, что G—X является лесом. Рассмотрим следующий рекурсивный алгоритм А. Если ?(G) = 0, то вернуть A{G, с) := 0. Если |5G(x)| < 1 для некоторой вершины х е V(G), то вернуть A{G,c) := A(G — х, с). Если с(х) = 0 для некоторой вершины х е V(G), то вернуть A(G, с) := {х} U A{G — х,с). Иначе положим . Ф) е := mm . г л. x<=V(G) \6(и)\ к с'{у) \=c{y) — e\5{v)\ {v eV(G)). Пусть X:=A(G,c'). Для всех хеХ выполнить следующее: если G — (X \ {х}) является лесом, то установить X :=X \ {х}. Вернуть A{G, с) := х. Докажите, что представленный метод является 2-приближенным алгоритмом для задачи о минимальном взвешенном множестве вершин, разрезающих контуры. 8. Покажите, что задача о максимальном разрезе является А/Р-трудной даже для простых графов. 9. Докажите, что простой жадный алгоритм для задачи Max-Cut, описанный в начале § 16.2, является 2-приближенным алгоритмом. 10. Рассмотрим следующий метод локальных улучшений для задачи о максимальном разрезе. Начнем с произвольного собственного непустого подмножества S множества V(G). Будем итеративно проверять, может ли какая-либо вершина быть добавлена к S или удалена из S так, что |5(S)| увеличится. Остановимся, если такое улучшение невозможно. (а) Докажите, что описанный метод является 2-приближенным алгоритмом. (Вспомните упражнение 13 из гл. 2.) (б) Может ли этот алгоритм быть обобщен на случай задачи о разрезе максимального веса, где веса ребер неотрицательны? (в) Верно ли, что в случае планарного или двудольного графа данный алгоритм всегда находит оптимальное решение? В обоих случаях существуют полиномиальные алгоритмы (см. упражнение 7 из гл.12 и предложение 2.27). 11. В задаче о максимальном взвешенном направленном разрезе задан орграф G с весами с: E(G) —> R+ и требуется найти такое множество X с V(G), что сумма Sees+pn с(е) максимальна. Покажите, что для этой задачи существует 4-приближенный алгоритм. Указание. Используйте упражнение 10. Замечание (Фейге и Гуманс [40], Хостад [51]). Существует приближенный алгоритм с точностью 1,165. При этом еслиРфЫР, то приближенного алгоритма с точностью 1,09 не существует. 12. Покажите, что функция ((l/n)arccos(y7yj))1<ij<n является выпуклой комбинацией разрезных полуметрик 5R, R с {1,..., п}, где 5я (1, если \Rn{i,j}\ = l, l>j I 0 иначе.
496 Глава 16. Приближенные алгоритмы Указание. Воспользуйтесь равенством ДС{1,...,П} МеЯ i$R J Замечание. Дополнительные результаты по данной теме можно найти в работе Деза и Лоран [34]. 13. Покажите, что для любого п е N существует двудольный граф с 2п вершинами, для которого алгоритму Greedy Coloring потребуется п цветов. Тем самым, алгоритм может давать произвольно плохие результаты. Тем не менее, покажите, что вершины всегда можно упорядочить так, что алгоритм будет находить оптимальную раскраску. 14 (Вигдерсон [83]). Покажите, что любой 3-раскрашиваемый граф G можно раскрасить за полиномиальное время с использованием не более 2у/2п цветов, men:=\V(G)\. Указание. Пока в графе есть вершина и степени не меньше V2n, будем раскрашивать множество Г (у) оптимально с использованием не более двух новых цветов (своих для каждой вершины и) и удалять окрашенные вершины. В конце применим алгоритм Greedy Coloring. 15. Покажите, что следующие классы графов являются совершенными: (а) двудольные графы; (б) интервальные графы (interval graph): ({i>i,...,iU, {{vi9Uj}:i^j9 [al-,bf]n[a/,bj]^0}), где [al9 ba],..., [an, bn] — множество отрезков; (в) хордовые графы (см. упражнение 36 из гл. 8). 16*. Пусть G— неориентированный граф. Докажите, что следующие утверждения эквивалентны: (а) граф G совершенный; (б) для любых весов с: V{G) —> Z+ максимальный вес клики в G равен минимальному числу таких независимых множеств, что каждая вершина v содержится в с (у) из них; (в) для любых весов с: V(G) —> Z+ максимальный вес независимого множества в G равен минимальному числу таких клик, что каждая вершина v содержится в с (и) из них; (г) система неравенств (16.3) обладает свойством TDI; (д) политоп клик графа G, т. е. выпуклая оболочка характеристических векторов клик в G, задается системой \ х е R+ : 2, хи ^ 1 Для всех независимых множеств S в G У; (16.9) ^ veS ' (е) система неравенств (16.9) обладает свойством TDI. Замечание. Политоп (16.9) называется антиблокером политопа (16.3). 17 (Либерхер и Спекер [63]). Экземпляр задачи Мах-Sat называется fc-вы- полнимым, если любые к его клауз могут быть выполнены одновременно. Пусть
Литература 497 rk — точная нижняя грань доли клауз, которые могут быть выполнены в любом fc-выполнимом экземпляре. (а) Докажите, что гг = 1/2. (б) Докажите, что г2 = (\/5 —1)/2. (Указание. Некоторые переменные встречаются в одноэлементных клаузах (без ограничения общности все одноэлементные клаузы можно считать позитивными, т. е. не содержащими отрицания), установим их в true с вероятностью а (для некоторого 1/2 < а < 1). Установим все остальные переменные в true с вероятностью 1/2. Примените технику дерандомизации и выберете подходящее значение а.) (в) Докажите, что г3 > 2/3. 18. Эрдёш [37] показал следующее: для каждой константы fceN (асимптотически) наибольшая доля ребер, которые гарантированно могут находиться в максимальном разрезе, равна 1/2, даже если мы ограничимся лишь графами без нечетных циклов длины к и меньше. (Ср. с упражнением 10(a).) (а) Что можно сказать о случае к = оо? (б) Покажите, как задача о максимальном разрезе может быть сведена к задаче Max-Sat. (Указание. Введите переменную для каждой вершины и клаузы {х, у), {х, у) для каждого ребра {х, у}.) (в) Используя п. (б) и теорему Эрдёша, докажите, что rk < 3/4 для всех к. (Определение гк см. в упражнении 17.) Замечание. Тревизан [81] доказал, что lim^,» гк = 3/4. 19. Докажите, что вероятность ошибки 1/2 в определении 16.31 может быть эквивалентно заменена на любое число между 0 и 1. Выведите из этого (и из доказательства теоремы 16.34), что для задачи о максимальной клике не существует р-приближенного алгоритма для любого р > 1 (при условии Р Ф NP). 20. Докажите, что задача о максимальной клике L-сводима к задаче об упаковке множеств: для данной системы множеств (U, У) найти подсемейство Ж с &> максимального размера, элементы которого попарно не пересекаются. 21. Докажите, что для задачи о минимальном вершинном покрытии не существует абсолютного приближенного алгоритма (при условии Р ф NP). 22 (Пападимитриу и Яннакакис [71]). Докажите, что задача Max-2Sat является MAXSA/P-трудной. Указание. Используйте следствие 16.45. Литература Общая литература [1] Asano Г., Iwama К., Takada Я., Yamashita Y. Designing high-quality approximation algorithms for combinatorial optimization problems // IEICE Transactions on Communica- tions/Electronics/Information and Systems E83-D. 2000. P. 462-478. [2] Ausiello G., Crescenzi P., Gambosi G., Kann V.3 Marchetti-Spaccamela A., Protasi M. Complexity and Approximation: Combinatorial Optimization Problems and Their Approxima- bility Properties. Springer, Berlin, 1999.
498 Глава 16. Приближенные алгоритмы [3] Garey М. R., Johnson D. S. Computers and Intractability; A Guide to the Theory of NP- Completeness. Freeman, San Francisco, 1979, Chapter 4. [4] Hochbaum D. S. Approximation Algorithms for NP-Hard Problems. PWS, Boston, 1996. [5] Horowitz ?., Sahni S. Fundamentals of Computer Algorithms. Computer Science Press, Potomac, 1978, Chapter 12. [6] Shmoys D. B. Computing near-optimal solutions to combinatorial optimization problems // Combinatorial Optimization (W. Cook, L. Lovasz, P. Seymour, eds.), AMS, Providence, 1995. (DIMACS Series in Discrete Mathematics and Theoretical Computer Science; Vol. 20). P. 355-397. [7] Papadimitriou С. H. Computational Complexity, Addison-Wesley, Reading, 1994, Chapter 13. [8] Vazirani V. V. Approximation Algorithms. Springer, Berlin, 2001. [9] Williamson D. P., Shmoys D. B. The Design of Approximation Algorithms. Cambridge University Press, Cambridge, 2011. Процитированные работы [10] Ajtai M. Recursive construction for 3-regular expanders // Combinatorica. 1994. Vol. 14. P. 379-416. [11] Alizadeh F. Interior point methods in semidefinite programming with applications to combinatorial optimization // SIAM Journal on Optimization. 1995. Vol. 5. P. 13-51. [12] Appel K., Haken W. Every planar map is four colorable; Part I; Discharging // Illinois Journal of Mathematics. 1977. Vol. 21. P. 429-490. [13] Appel K., Haken W., Koch J. Every planar map is four colorable; Part II; Reducibility // Illinois Journal of Mathematics. 1977. Vol. 21. P. 491-567. [14] Arora S. Probabilistic checking of proofs and the hardness of approximation problems, Ph. D. thesis, U. С Berkeley, 1994. [15] Arora S., Lund C, Motwani R. Sudan M., Szegedy M. Proof verification and hardness of approximation problems // Journal of the ACM. 1998. Vol. 45. P. 501-555. [16] Arora 5., Safra S. Probabilistic checking of proofs // Journal of the ACM. 1998. Vol.45. P. 70-122. [17] Asano T. An improved analysis of Goemans and Williamson's LP-relaxation for MAX SAT // Theoretical Computer Science. 2006. Vol. 354. P. 339-353. [18] AvidorA.f Berkovitch I., Zwick U. Improved approximation algorithms for MAX NAE-SAT and MAX SAT. Approximation and Online Algorithms — Proceedings of the 3rd WAOA workshop (2005) (Erlebach, Т., Persiano, G., eds.), Springer, Berlin, 2006. (Lecture Notes in Comput. Sci.; Vol. 3879). P. 27-40. [19] Bar-Yehuda R., Even S. A linear-time approximation algorithm for the weighted vertex cover problem // Journal of Algorithms. 1981. Vol.2. P. 198-203. [20] Becker A., Geiger D. Optimization of Pearl's method of conditioning and greedy-like approximation algorithms for the vertex feedback set problem // Artificial Intelligence Journal. 1996. Vol. 83. P. 1-22. [21] Bellare M., Sudan M. Improved non-approximability results // Proceedings of the 26th Annual ACM Symposium on the Theory of Computing. 1994. P. 184-193. [22] Bellare M., Goldreich O., Sudan M. Free bits, PCPs and nonapproximability—towards tight results // SIAM Journal on Computing. 1998. Vol. 27. P. 804-915.
Литература 499 Berge С. Farbung von Graphen, deren samtliche bzw. deren ungerade Kreise starr sind. Wissenschaftliche Zeitschrift, Martin Luther Universitat Halle-Wittenberg, Mathematisch- Naturwissenschaftliche Reihe, 1961. S. 114-115. Berge C. Sur une conjecture relative au probleme des codes optimaux. Communication, 13eme assemblee generate de l'URSI, Tokyo, 1962. Berman P., Fujito T. On approximation properties of the independent set problem for low degree graphs // Theory of Computing Systems. 1999. Vol. 32. P. 115-132. Brooks R.L. On colouring the nodes of a network // Proceedings of the Cambridge Philosophical Society. 1941. Vol. 37. P. 194-197. Chen J., Friesen D. K., Zheng H. Tight bound on Johnson's algorithm for maximum satisfiability // Journal of Computer and System Sciences. 1999. Vol. 58. P. 622-640. Chlebik M., Chlebikovd J. Complexity of approximating bounded variants of optimization problems // Theoretical Computer Science. 2006. Vol. 354. P. 320-338. Chudnovsky M., Cornuejols G., LiuX, Seymour P., Vuskovic K. Recognizing Berge graphs // Combinatorica. 2005. Vol. 25. P. 143-186. Chudnovsky M., Robertson N., Seymour P., Thomas R. The strong perfect graph theorem // Annals of Mathematics. 2006. Vol. 164. P. 51-229. Chvdtal V. On certain polytopes associated with graphs // Journal of Combinatorial Theory. Ser. B. 1975. Vol. 18. P. 138-154. Chvdtal V. A greedy heuristic for the set cover problem // Mathematics of Operations Research. 1979. Vol.4. P.233-235. Clementi A. E. F., Trevisan L. Improved non-approximability results for minimum vertex cover with density constraints // Theoretical Computer Science. 1999. Vol. 225. P. 113-128. Deza M. M., Laurent M. Geometry of Cuts and Metrics. Springer, Berlin, 1997. (Русс, пер.: Деза M. М., Лоран М. Геометрия разрезов и метрик / Пер. с англ. Е. Пантелеевой, П. Сергеева; под ред. В. Гришухина. М: МЦНМО, 2001. 736 с.) Dinur I. The РСР theorem by gap amplification // Journal of the ACM. 2007. Vol. 54. Article 12. Dinur L, Safra S. On the hardness of approximating minimum vertex cover // Annals of Mathematics. 2005. Vol.162. P. 439-485. Erdos P. On bipartite subgraphs of graphs // Mat. Lapok. 1967. Vol. 18. 0.283-288. Feige U. A threshold of In n for approximating set cover // Journal of the ACM. 1998. Vol.45. P.634-652. Feige U. Approximating maximum clique by removing subgraphs // SIAM Journal on Discrete Mathematics. 2004. Vol. 18. P. 219-225. Feige V., Goemans M.X. Approximating the value of two prover proof systems, with applications to MAX 2SAT and MAX DICUT // Proceedings of the 3rd Israel Symposium on Theory of Computing and Systems. 1995. P. 182-189. Feige U., Goldwasser S., Lovdsz L., Safra S.} SzegedyM. Interactive proofs and the hardness of approximating cliques // Journal of the ACM. 1996. Vol. 43. P. 268-292. Ferndndez-Baca D.} Lagergren J. On the approximability of the Steiner tree problem in phylogeny // Discrete Applied Mathematics. 1998. Vol. 88. P. 129-145. Fulkerson D. R. Anti-blocking polyhedra // Journal of Combinatorial Theory. Ser. B. 1972. Vol.12. P. 50-71.
500 Глава 16. Приближенные алгоритмы Purer М., Raghavachari В. Approximating the minimum-degree Steiner tree to within one of optimal // Journal of Algorithms. 1994. Vol. 17. P. 409-423. Garey M. R., Johnson D. S. The complexity of near-optimal graph coloring // Journal of the ACM. 1976. Vol. 23. P. 43-49. Garey M. R., Johnson D. 5., Stockmeyer L. Some simplified A/P-complete graph problems // Theoretical Computer Science. 1976. Vol.1. P. 237-267. Goemans M.X., Williamson D.P. New 3/4-approximation algorithms for the maximum satisfiability problem // SIAM Journal on Discrete Mathematics. 1994. Vol. 7. P. 656-666. Goemans M.X., Williamson D. P. Improved approximation algorithms for maximum cut and satisfiability problems using semidefinite programming // Journal of the ACM. 1995. Vol.42. P. 1115-1145. Grotschel M., Lovdsz L., Schrijver A. Geometric Algorithms and Combinatorial Optimization. Springer, Berlin, 1988. Halldorsson M. M., Radhakrishnan J. Greed is good: approximating independent sets in sparse and bounded degree graphs // Algorithmica. 1997. Vol. 18. P. 145-163. Hastad J. Some optimal inapproximability results // Journal of the ACM. 2001. Vol. 48. P. 798-859. Heawood P. J. Map colour theorem // Quarterly Journal of Pure Mathematics. 1890. Vol.24. P.332-338. Hochbaum D. S. Approximation algorithms for the set covering and vertex cover problems // SIAM Journal on Computing. 1982. Vol. 11. P. 555-556. Hochbaum D. S.} Shmoys D. B. A best possible heuristic for the fc-center problem // Mathematics of Operations Research. 1985. Vol. 10. P. 180-184. Holyer I. The NP-completeness of edge-coloring // SIAM Journal on Computing. 1981. Vol.10. P. 718-720. Hougardy S., Promel H. J., Steger A. Probabilistically checkable proofs and their consequences for approximation algorithms // Discrete Mathematics. 1994. Vol. 136. P. 175-223. Hsu W. L., Nemhauser G. L. Easy and hard bottleneck location problems // Discrete Applied Mathematics. 1979. Vol. 1. P. 209-216. Johnson D. S. Approximation algorithms for combinatorial problems // Journal of Computer and System Sciences. 1974. Vol. 9. P. 256-278. Khanna S., Linial N., Safra S. On the hardness of approximating the chromatic number // Combinatorica. 2000. Vol. 20. P. 393-415. Khot S., Regev O. Vertex cover might be hard to approximate to within 2-е // Journal of Computer and System Sciences. 2008. Vol. 74. P. 335-349. Knuth D. E. The Art of Computer Programming; Vol. 2. Seminumerical Algorithms. Addi- son-Wesley, Reading, 1969 (third edition: 1997). Konig D. Uber Graphen und ihre Anwendung auf Determinantentheorie und Mengen- lehre // Mathematische Annalen. 1916. Bd. 77. S. 453-465. Lieberherr K., Specker E. Complexity of partial satisfaction // Journal of the ACM. 1981. Vol.28. P.411-421. Lovdsz L. Normal hypergraphs and the perfect graph conjecture // Discrete Mathematics. 1972. Vol. 2. P. 253-267. Lovdsz L. On the ratio of optimal integral and fractional covers // Discrete Mathematics. 1975. Vol. 13. P. 383-390.
Литература 501 Lovdsz L. On the Shannon capacity of a graph // IEEE Transactions on Information Theory. 1979. Vol. 25. P. 1-7. Lovdsz L. Graph theory and integer programming // Discrete Optimization I (P. L. Hammer, E. L. Johnson, В. H. Korte, eds.), North-Holland, Amsterdam, 1979. (Annals of Discrete Mathematics; Vol.4). P. 141-158. Lovdsz L. Semidefinite programs and combinatorial optimization // Recent Advances in Algorithms and Combinatorics (B. A. Reed, С Linhares Sales, eds.), Springer, New York, 2003. P. 137-194. Mahajan S., Ramesh H. Derandomizing approximation algorithms based on semidefinite programming // SIAM Journal on Computing. 1999. Vol. 28. P. 1641-1663. Papadimitriou С. H., SteiglitzK. Combinatorial Optimization; Algorithms and Complexity. Prentice-Hall, Englewood Cliffs, 1982. P. 406-408. Papadimitriou С. H., Yannakakis M. Optimization, approximation, and complexity classes // Journal of Computer and System Sciences. 1991. Vol. 43. P. 425-440. Papadimitriou С. H., Yannakakis M. The traveling salesman problem with distances one and two // Mathematics of Operations Research. 1993. Vol. 18. P. 1-12. Raghavan P., Thompson C. D. Randomized rounding: a technique for provably good algorithms and algorithmic proofs // Combinatorica. 1987. Vol. 7. P. 365-374. Raz R., Safra 5. A sub constant error probability low degree test, and a sub constant error probability PCP characterization of NP // Proceedings of the 29th Annual ACM Symposium on Theory of Computing. 1997. P. 475-484. Robertson N., Sanders D. P., Seymour P., Thomas R. Efficiently four-coloring planar graphs // Proceedings of the 28th Annual ACM Symposium on the Theory of Computing. 1996. P. 571-575. Robertson N., Sanders D. P., Seymour P., Thomas R. The four colour theorem // Journal of Combinatorial Theory. Ser. B. 1997. Vol. 70. P. 2-44. Sanders P., Steurer D. An asymptotic approximation scheme for multigraph edge coloring // ACM Transactions on Algorithms. 2008. Vol. 4. Article 21. Singh M., Lau L. C. Approximating minimum bounded degree spanning trees to within one of optimal // Proceedings of the 39th Annual ACM Symposium on Theory of Computing. 2007. P. 661-670. SZaviTc P. A tight analysis of the greedy algorithm for set cover // Journal of Algorithms. 1997. Vol. 25. P. 237-254. Stockmeyer L. J. Planar 3-colorability is polynomial complete // ACM SIGACT News. 1973. Vol.5. P. 19-25. Trevisan L. On local versus global satisfiability // SIAM Journal on Discrete Mathematics. 2004. Vol. 17. P. 541-547. Визинг В. Г. Об оценке хроматического класса р-графа // Дискретный анализ. 1964. Т. 3. С. 23-30. Wigderson A. Improving the performance guarantee for approximate graph coloring // Journal of the ACM. 1983. Vol. 30. P. 729-735. Yannakakis M. On the approximation of maximum satisfiability // Journal of Algorithms. 1994. Vol. 17. P. 475-502. Zuckerman D. Linear degree extractors and the inapproximability of Max Clique and Chromatic Number // Theory of Computing. 2007. Vol. 3. P. 103-128.
ГЛАВА 17 Задача о рюкзаке Задача о совершенном паросочетании минимального веса и задача о взвешенном пересечении матроидов, рассмотренные в предыдущих главах, являются одними из самых «сложных» задач, для которых известны полиномиальные алгоритмы. В этой главе мы, напротив, будем рассматривать задачу, которая в определенном смысле является самой «простой» среди А/Р-трудных. Knapsack (задача о рюкзаке) Дано: неотрицательные целые числа п, съ..., сп, wl9..., wn и W. Надо: найти такое подмножество S Q {1,..., п}, что ^j^s и$ < W и сумма Sjes cj максимальна. Приложения этой задачи возникают всякий раз, когда мы хотим выбрать максимальное по стоимости подмножество ограниченного веса из множества элементов, каждый из которых имеет свой вес и стоимость. Мы начнем изучение с рассмотрения дробной версии задачи в § 17.1. Эту модификацию можно решить за линейное время. Целая задача о рюкзаке NP-труд- на, как будет показано в § 17.2, но для нее существует псевдополиномиальный алгоритм. Комбинируя его с техникой округления, можно получить полиномиальную схему приближения. Этот факт будет доказан в § 17.3. Наконец, в § 17.4 мы обсудим обобщение задачи на случай большего числа размерностей. § 17.1. Дробная задача о рюкзаке и задача о взвешенной медиане Рассмотрим следующую задачу. Fractional Knapsack (дробная задача о Дано: Надо: неотрицательные целые числа п, рюкзаке) съ. найти такие вещественные числа хъ. и сумма 2"=i xjcj максимальна. .,сп, щ,..., ..,ХП€Е[0,1], Wn и Ж что ?>=1 XjWj < W Следующее утверждение показывает, что задача может быть решена с помощью простого алгоритма, заключающегося в надлежащей сортировке элементов.
§ 17.1. Дробная задача о рюкзаке и задача о взвешенной медиане 503 Утверждение 17.1 (Данциг [8]). Пусть заданы такие неотрицательные целые числа съ ..., сп, w1,...,wnuWJ что 2Г=1 Щ>Щ {l*^i^n: ш( = 0} = {1,...,h} и Ch+\ > ch+2 > > ?п_ "Ъ+1 " Wh+2 ' ^ ^п ' Обозначим fc:=minjje{l,...,n}: 2Ш*>ИЧ- Тогда оптимальное решение данного экземпляра задачи о рюкзаке получается по следующим формулам: Xj := 1 при j = 1,..., к — 1, fc-i ху:=0 при; = fc +1, . ..,п. П Сортировка п элементов требует времени O(nlogn) (теорема 1.5), а вычисление значения к выполняется за время 0(п) простым линейным проходом. Хотя представленный данный алгоритм и так достаточно быстрый, время его работы можно улучшить до линейного. Для этого заметим, что изучаемая задача сводится к поиску взвешенной медианы. Определение 17.2. Пусть заданы числа п е N, zl9..., zn е R, wl9..., wn е R+ и Wel,0<W< SfLi wi- Тогда [юъ ..., wn; У\Г)-взвешенной медианой для набора чисел (zl}..., zn) называется такой однозначно определенный индекс z*, что i:zt<z* i:zt<z* Итак, нам предстоит решить следующую задачу. Weighted Median (задача о взвешенной Дано: Надо: натуральное число W, что найти (ш1?.. число п, числа %ъ.. 0 < W < 2м "*¦ медиане) .,*„ €R, wl9 ., шп; W)-взвешенную медиану для ..,wn (*1," €Е+ э*п)« и такое У задачи поиска взвешенной медианы есть важный частный случай — так называемая задача о fc-й порядковой статитстике (selection problem). Selection (задача о fc-й порядковой статистике) Дано: Надо: число п € N, числа zlf . •., Zn € R И ЧИСЛО fc € {1,. найти fc-ю порядковую статистику среди чисел такой индекс i е {1,..., л}, что |{j: z; < zt}\ < к < .,nb *1,-.., №':* 2л> а именно ¦х-
504 Глава 17. Задача о рюкзаке Взвешенная медиана может быть найдена за время О(п). Нижеприведенный алгоритм является взвешенной версией метода, рассмотренного Блюмом и ДР- [7]; см. также работу Фигена [19]. Weighted Median (алгоритм поиска взвешенной медианы) Вход: натуральное число л, числа %ъ..., zn € R, wlt..., wn € R+ и такое число W> что 0 < W < SILi ш1* Выход: (ш1?..., шп; W)-взвешенная медиана для (zl9..., 2П). (1) Разбить последовательность zl9..., zn на блоки по 5 элементов (последний блок может содержать меньше элементов). Найти (рекурсивно) медиану (невзвешенную) в каждом блоке. Пусть М — последовательность этих \п/Ъ\ медиан. (2) Найти (рекурсивно) невзвешенную медиану zm для М. (3) Сравнить каждый элемент с zm. Не умаляя общности, считаем, что z{ < zm при i = 1,..., fc, zf = zm при i = fc + 1,..., l и zt > zm при i = I + 1,..., n. 0 " ElU ^ < W < Sz.=114 then stop (** := «J- If 5]i=1 i^i < W then найти рекурсивно f u^+i,..., wn; W — Xi=i ш1 J -взвешенную медиану для (zl+1,..., zn). Stop. If 2i=i ш1 ^ W then найти рекурсивно (шъ..., wfc; W)-взвешенную медиану для (*!,...,zfc). Stop. Теорема 17.3. Алгоритм Weighted Median корректен, и время его работы составляет 0(п). Доказательство. Корректность алгоритма очевидна. Обозначим время работы алгоритма в худшем случае для п элементов через /(п). Имеем /(п) = 0(п)+/([|1)+0(п)+/(1.[Ц.5 + 1.[|1.2). А именно, рекурсивный вызов на шаге 0 исключает не менее трех элементов из не менее половины 5-элементных блоков. Решением данного рекуррентного соотношения служит f(n) = 0(п). Действительно, ^ < -ттп при п > 37, поэтому /(„)<сп + /(?п)+/(|.?п) для некоторого с и п > 37. С учетом этих наблюдений несложно доказать по индукции, что /(п) < (82с + /(36))п. Отсюда и вытекает требуемая линейная оценка на время работы. ? Из доказанного утверждения немедленно вытекают такие следствия. Следствие 17.4 (Блюм и др. [7]). Задача о k-й порядковой статистике может быть решена за линейное время.
§ 17.2. Псевдополиномиальный алгоритм 505 Доказательство. Положим wt := 1 для всех i = 1,..., п, а также W := к, после чего применим теорему 17.3. ? Следствие 17.5. Дробная задача о рюкзаке может быть решена за линейное время. Доказательство. Полагая zt := —с{/ю{ (i = 1,..., п), получаем сведение дробной задачи о рюкзаке к задаче поиска взвешенной медианы. ? § 17.2. Псевдополиномиальный алгоритм Перейдем теперь к изучению (целочисленной) задаче о рюкзаке. Приемы, применявшиеся в предыдущем параграфе, оказываются полезными и здесь. Утверждение 17.6. Пусть съ ..., сп, шъ ..., wn и W — такие неотрицательные целые числа, что Wj < W для j = 1,..., п, 2Г=1 wi>W и ?l > ^2l. > > Sjl Щ^ W2^ Wn ' Обозначим fc:=min|;e{l,...,n}: J]^>wf- Тогда, взяв лучшее из двух возможных решений {1,..., к — 1} и {к}, мы получим 2-приближенный алгоритм для задачи о рюкзаке со временем работы 0(п). Доказательство. Пусть задан экземпляр задачи о рюкзаке. Числа i е {1,..., п), для которых Wi > W, использовать в любом случае не удастся, поэтому они могут быть заранее исключены из рассмотрения. Далее, если ^]"=1 wt < W, то оптимальным решением будет {1,..., п}. Иначе вычислим значение к, как указано в условии. Для этого сортировка нам не потребуется, и на это уйдет время 0(п). Действительно, как и ранее, мы имеем задачу поиска взвешенной медианы, поэтому применима теорема 17.3. Из утверждения 17.1 следует, что 2?=1 с{ является верхней оценкой на оптимум для дробной задачи о рюкзаке, а значит, и для целочисленной задачи о рюкзаке. Поэтому лучшее из двух возможных решений {1,..., fc — 1} и {к} имеет стоимость не менее половины от оптимальной. ? Больший интерес представляет точное решение задачи о рюкзаке. Однако справедливо следующее наблюдение. Теорема 17.7 (Карп [13]). Задача о рюкзаке NP-трудна. Доказательство. Мы докажем, что задача распознавания, связанная с задачей о рюкзаке, АГР-трудна. А именно, пусть даны неотрицательные целые числа п, съ ..., сп, шъ ..., wn, W и К. Требуется выяснить, существует ли такое подмножество S с {1,... 9 п}, что J]jeS Wj<:W и 2;GS Cj > К. Эта задача распознавания, очевидно, принадлежит классу NP. Чтобы показать, что она Л/Р-трудна, сведем к ней задачу о подмножестве с заданной суммой
506 Глава 17. Задача о рюкзаке (см. следствие 15.27). Пусть заданы числа съ ..., сп, К, являющиеся входными данными для задачи о подмножестве с заданной суммой. Положим ш,- :=с;- (; = 1,..., п) и W :=К. После этого задачи, очевидно, оказываются эквивалентными. ? Поскольку мы не показали, что задача о рюкзаке является Д/Р-трудной в сильном смысле, по-прежнему есть надежда получить псевдополиномиальный алгоритм. Действительно, алгоритм, представленный в доказательстве теоремы 15.39, может легко быть обобщен на рассматриваемый случай. Для этого нужно задать на ребрах графа веса и решить задачу о кратчайшем пути. Это приводит к алгоритму со сложностью 0(nW) (см. упражнение 3). С помощью подобного трюка мы также можем получить алгоритм, время работы которого составляет 0{пС), где С := $]/Li су Сейчас мы дадим явное описание этого алгоритма, не требующее построения вспомогательного графа и поиска кратчайших путей. Этот алгоритм будет основан на простых рекуррентных соотношениях, и поэтому он является частным случаем приема, известного под названием «динамическое программирование». Данный алгоритм, в сущности, был предложен Беллманом [5,6] и Данцигом [8]. Dynamic Programming Knapsack (алгоритм динамического программирования для задачи о рюкзаке) Вход: неотрицательные целые числа п, съ..., сп, w1}..., wn и W, Выход: такое подмножество S с {1,..., п}, что ]?;€5 Wj <W и сумма Sjgs cj максимальна. (1) Обозначить через С верхнюю оценку на оптимум, например С := YiJ=i cj- (2) Присвоить х(0,0) := 0 и х(0, fc) := оо при к = 1,..., С. (3) For ; := 1 to п do: For к := 0 to С do: Присвоить s(j, к) := 0 и x(j, к) := х(; — 1, fc). For fc := Cj to С do: If x(j — 1, к — Cj) + Wj < min{W, x{j, k)} then присвоить x(;, fc) := x(j — 1, fc — с,) + ш, и s(j, fc) := 1. (4) Пусть fc = max{i e {0,..., C}: x(n, i) < °o}. Присвоить S := 0. For ; := n down to 1 do: If s(;, fc) = 1 then присвоить S := S U {;} и fc := fc — с,. Теорема 17.8. Алгоритм Dynamic Programming Knapsack находит оптимальное решение за время 0(пС). Доказательство. Оценка на время работы является очевидной. Переменная x(j, fc) обозначает минимальный суммарный вес такого подмножества SC{1,...,;}, что ^i&s w( < W и $]igS ct = fc. Для всех ; = 1,..., n
§ 17.3. Полиномиальная схема приближения 507 и fc = 0,..., С алгоритм корректно пересчитывает эти значения по рекуррентным формулам {x(j — l,k—Cj) + Wj9 если а<:к и *(; —l,fc—c,) + w,<min{W,:x:(; —l,fc)}, x{j — l,k) иначе. Переменные s(j, к) показывают, какой из данных двух случаев надо выбрать. Таким образом, алгоритм (неявно) перебирает все подмножества 5С{15,.,,п}, за исключением тех, которые невозможны или доминируются другими. Здесь подмножество S доминируется подмножеством S', если На шаге 0 алгоритм выбирает наилучшее подходящее множество. ? Конечно, хочется иметь лучшую верхнюю оценку для С, чем J]"=1 ct. Например, можно взять 2-приближение из утверждения 17.6. Умножая число, полученное в данном приближении, на 2, можно получить верхнюю оценку на оптимум. Эта идея будет использована нами в дальнейшем. Оценка 0(пС) не является полиномиальной от размера входных данных, потому что размер входных данных можно оценить только как 0(п log С + п log W) (мы можем предполагать, что Wj < W для всех j). Но мы все же получили псевдополиномиальный алгоритм, который достаточно эффективен, если числа невелики. Если и веса юъ ..., wn, и значения стоимостей съ ..., сп малы, то самым быстрым является О (пстахштах)-алгоритм, полученный Пизинджером [17] (здесь W := тах{сь ..., сп}, wmax := тах{шъ ..., wj). § 17.3. Полиномиальная схема приближения В этом параграфе мы рассмотрим приближенные алгоритмы для задачи о рюкзаке. Согласно утверждению 16.23 при P^NP задача о рюкзаке не может иметь абсолютной схемы приближения. Однако мы докажем, что задача о рюкзаке имеет полиномиальную схему приближения. Первый подобный алгоритм предложили Ибарра и Ким [12] (авторы при этом опирались на работу Сахни [18]). Поскольку время работы алгоритма динамического программирования для задачи о рюкзаке зависит от С, естественной идеей будет разделить все числа съ...,сп на 2 и округлить полученные значения вниз. Это уменьшит время работы, но может привести к неточности в ответе. В общем случае, взяв Ч-=\^\ (7 = 1,...,п), мы уменьшим время работы в t раз. Потеря в точности в обмен на уменьшение время работы является стандартным приемом при построении схем приближения. Для SC{i9.,.9n] обозначим c(S) := ^ieS cf.
508 Глава 17. Задача о рюкзаке Knapsack Approximation Scheme (схема приближения для задачи о рюкзаке) Вход: неотрицательные целые числа п, с2,..., сп) юъ ..., wn и W; число е > 0. Выход: подмножество SQ {1,..., п}, для которого ?jeS Wj^W и c(S)> j—c(^ для всех таких S' с {1,..., п}, что ?];€S/ Wj < W. (Т) Запустить 2-приближенный алгоритм из утверждения 17.6. Пусть S2 — полученное решение. If с^г) = 0 then присвоить S := Sb stop. (2) Присвоить t := max j 1, eC lJ }. Присвоить Cj := I у J при ; = 1,..., п. (3) Применить алгоритм Dynamic Programming Knapsack к набору (n, съ..., cn, шг,..., wn, W); присвоить С := —-^-. Пусть S2 — полученное решение. 0 If с^г) > c(S2) then присвоить S := Sx else присвоить S := S2. Теорема 17.9 (Ибарра и Ким [12], Гене и Левнер [11]). Алгоритм Knapsack Approximation Scheme задает сильно полиномиальную схему приближения для задачи о рюкзаке. Время ее работы составляет 0(п2 • 1/е). Доказательство. Если алгоритм останавливается на шаге®, то подмножество Sx оптимально по утверждению 17.6. Поэтому можно предполагать, что c(Sa) > 0. Пусть S* — оптимальное решение для исходной задачи. Поскольку 2c(S1) > c(S*) по утверждению 17.6, значение С на шаге (3) является верхней оценкой на оптимум для задачи с округленными стоимостями q. Поэтому, как следует из теоремы 17.8, S2 является оптимальным решением для округленных данных. Отсюда получаем Yicj>YitEi=tTieJ>tTidi=Titdj>Ti(-cJ-^>c^-m- jeS2 jeS2 jeS2 jeS* jeS* jeS* Если t = 1, то S2 оптимально по теореме 17.8. Иначе данные неравенства показывают, что c(S2) > c(S*) — ec^Sj, и, следовательно, (1 + e)c(S) > c(S2) + ec(Sj) > c(S*). Итак, мы получили (1 + е)-приближение для любого фиксированного е > 0. По теореме 17.8 время работы шага (3) оценивается как Остальные шаги алгоритма легко выполнить за время 0(п). П
§ 17.3. Полиномиальная схема приближения 509 Лолер [16] предложил подобную схему приближения, время работы которой составляет 0(nlog(l/e) + 1/е4). Этот результат был улучшен Келлерером и Пферши [14]. К сожалению, не так много задач допускают сильно полиномиальную схему приближения. Чтобы придать этому утверждению точный смысл, рассмотрим задачу максимизации для системы независимости. Заметим, что и в алгоритме динамического программирования для задачи о рюкзаке, и в схеме приближения для задачи о рюкзаке мы использовали некоторым образом введенное отношение доминирования. В наиболее общей форме это понятие можно сформулировать так. Определение 17.10. Пусть заданы система независимости [Е, J*"), функция стоимости с: Е —> Z+, подмножества Sly S2 с Е и число е > 0. Скажем, что подмножество Sa е-доминирует подмножество S2, если r^c(S1)<c(S2)<(l + e)c{S{) и существует подмножество Въ для которого Sx с вг и для любого другого подмножества В2, удовлетворяющего условию S2 с В2, справедливо неравенство а + е)с(В1)>с(В2). e-Dominance (задача об е-доминанте) ! Дано: Надо: система независимости (?, ^), функция е > 0, пара подмножеств Slt S2 с ?. выяснить, является ли подмножество Бг стоимости с ?-> е-доминантой для Z+, S2. число Конечно, система независимости предполагается заданной неявно, например с помощью оракула независимости. Алгоритм динамического программирования для задачи о рюкзаке опирался на понятие 0-доминанты. Оказывается, наличие эффективного алгоритма для задачи поиска е-доминанты играет ключевую роль в вопросе существования сильно полиномиальной схемы приближения. Теорема 17.11 (Корте и Шрадер [15]). Пусть J — семейство систем независимости, а/ — такое семейство (Е, &, с) экземпляров задачи максимизации для системы независимости, что (Е, &) е J и с: Е —> Z+. Пусть У" — такое семейство {Е, &, с, е, Si, S2) экземпляров задачи об е-доминанте, что (Е, &) Е <$. Тогда сильно полиномиальная схема приближения для задачи максимизации для систем независимости, ограниченной системами из ?', существует, если и только если существует алгоритм для задачи поиска е-доминанты, ограниченной системами из J", время работы которого оценивается полиномом от длины входных данных и 1/е. Для доказательства достаточности можно рассмотреть обобщение схемы приближения для задачи о рюкзаке (упражнение 10). Доказательство необходимости несколько сложнее и здесь не приводится. Из данной теоремы вытекает,
510 Глава 17. Задача о рюкзаке что если сильно полиномиальная схема приближения существует, то в ее роли может выступать соответствующее обобщение схемы приближения для задачи о рюкзаке. Близкие результаты также содержатся в работе Вёгингера [20]. Чтобы доказать, что для некоторой оптимизационной задачи не существует сильно полиномиальной схемы приближения, часто бывает полезна следующая теорема. Теорема 17.12 (Гэри и Джонсон [10]). При РфЫР никакая сильно NP-трудная задача оптимизации с целочисленным целевым функционалом, удовлетворяющим неравенству OPT(J) <р, (size(J), largest(J)) для некоторого многочлена р и всех возможных входов I, не может иметь сильно полиномиальной схемы приближения. Доказательство. Предположим, что сильно полиномиальная схема приближения существует. Возьмем тогда 1 € = p(size(J), largest(J)) +1 и получим точный псевдополиномиальный алгоритм. Однако согласно утверждению 15.41 это возможно лишь при Р = NP. ? В следующем параграфе мы рассмотрим задачу, для которой существует псевдополиномиальный алгоритм, но сильно полиномиальной схемы приближения быть не может. § 17.4. Многомерная задача о рюкзаке На протяжении данного параграфа мы будем предполагать фиксированным некоторое значение т е N. Рассмотрим следующую многомерную задачу о рюкзаке. m-Dimensional Knapsack (m-мерная задача о рюкзаке) Дано: Надо: число п е N и неотрицательные целые числа сь wijy и j = l,...,m). ц найти такое подмножество SQ{l9...,n], что ?iGS itfy < j = 1,..., m и сумма 2IGS ct максимальна. G = ц = i,- для ..,п всех Представленная задача является обобщением обычной задачи о рюкзаке (последняя получается при т = 1). Для этого обобщения также существует псевдополиномиальный алгоритм, см. упражнение 11. Тем не менее, сильно полиномиальную схему приближения получить, скорее всего, не удастся. Утверждение 17.13 (Корте и Шрадер [15]). Если Р ф NP, то т-мерная задача о рюкзаке не имеет сильно полиномиальной схемы приближения для любого т>2. Доказательство. Очевидно, достаточно рассмотреть лишь т = 2. Рассмотрим произвольный экземпляр (Р, Q, R, Г) задачи 3DM. Пусть Г = {?ъ ..., tn} с р х Q х R, к := \Р\ = \Q\ = \R\. Не умаляя общности, можем считать, что PUQUR={1,..., 3fc}. Воспользуемся конструкцией, аналогичной той, что была использована в доказа-
§ 17.4. Многомерная задача о рюкзаке 511 тельстве следствия 15.27. При i = 1,...,п пусть ti = {p,q,r)€:P х Q хR. Положим тогда ct = 1, wn = (л + 1)р + (л + l)q + (л + 1)г и u;i2 = (л + l)3fc+1 - ша. Кроме того, пусть Wj = ][]р=1(л + 1)р nW2 = к(п + l)3k+1 — wx. Тем самым мы получаем экземпляр двумерной задачи о рюкзаке. Если существует 3-паросочетание {tt: i е S} (где S с {1,..., п}), то |S| = к и Sies ши = W\, следовательно, 2iGS u^2 = W2. С другой стороны, любое допустимое решение S с {1,... 9 п} данной двумерной задачи о рюкзаке, для которого \S\ = к, удовлетворяет условиям ^iieSwil^W1n ^и>п=к(п + 1)3к+1 -2>i2> k(n + l)3k+1 -W2 = W,. ieS i(=S Отсюда следует, что допустимое решение S, для которого |S| = fc, существует, если и только если ответ в экземпляре (U, V, W, Г) задачи 3DM положителен. Итак, оптимальное значение данного экземпляра двумерной задачи о рюкзаке равно fc, если ответ для экземпляра I положительный, и не превосходит к — 1, если ответ отрицательный. Если бы для задачи существовала сильно полиномиальная схема приближения, то мы могли бы получить (1 + е)-при- ближение при е = 1/fc за полиномиальное время, а значит, смогли бы решить задачу 3DM за полиномиальное время. Поскольку задача 3DM является NP-трудной (теорема 15.26), из этого бы следовало, что Р = NP. ? Однако для этой задачи существует обычная (не сильно полиномиальная) схема приближения. Теорема 17.14 (Фризе и Кларк [9]). При любых фиксированных т € N и е > 0 для т-мерной задачи о рюкзаке существует приближенный алгоритм с точностью 1 + 6. Доказательство. Положим fc := \т/е] и заметим, что fc — константа. Занумеруем все подмножества {1,..., л}, содержащие менее fc элементов. Кроме того, для каждого подмножества SQ{l,...,n}9 для которого |S| = fc, положим S> := {i е {1,..., п}\S: ct > min{c;: ; e S}}. Решим линейную задачу max] ex: ^ и>цхь < Wj f (; = 1,..., m), 0 < x < 1, x^: = 1 (i e S), xt = 0 (i e S>) |. Пусть x — оптимальное базисное решение. Поскольку вектор х обращает не менее л ограничений линейной программы в равенство, он имеет не более т дробных координат. Положим S' := {i е. {1,..., л}: х{ = 1}. Среди всех найденных подмножеств S и S' отберем наилучшее. Сложность данного алгоритма определяется временем, уходящим на решение 0(лк) линейных программ с О (л) переменными и ограничениями. Оптимальное решение либо содержит не более fc — 1 элементов (тогда мы найдем его прямым перебором), либо соответствует 0-1-решению z одной из линейных программ, а именно той, где S содержит fc элементов данного решения
512 Глава 17. Задача о рюкзаке с наибольшей стоимостью. В последнем случае алгоритм построит решение S' (округляя вниз координаты вектора х), которое будет близко к оптимальному по стоимости, поскольку п cz<cx = ^Ci + ^ cfa - [xt\) <^Ci + m max{q: i e {1,..., n} \ (S U S>)} < ieS' i=l i&S' <J]ci + mmin{Ci:ieS}<J]c' + f Ec* ^ Ec<(1 +?) ^ Ес'(1 + е>- D ieS' i<=S' ieS ieS' i<=S' Упражнения 1. Рассмотрим дробную многомерную задачу о рюкзаке, которую определим следующим образом. Экземпляр задачи состоит из натуральных чисел тип, а также чисел ш;, ctj и W{ (l^i^m, 1 < j < п). Требуется найти такие числа *y-e[o,i], что YiZixij=1 да* BCexJи H]=ixijwj<wi д^всех 1> где T!iL\T^=ixiicij минимально. Существует ли комбинаторный полиномиальный алгоритм для этой задачи (в котором не используется линейное программирование)? Указание. Воспользуйтесь сведением к задаче о потоке минимальной стоимости. 2. Рассмотрим следующий жадный алгоритм для задачи о рюкзаке (похожий на алгоритм из утверждения 17.6). Отсортируем индексы так, чтобы выполнялись неравенства cl/w1 > ... > cn/wn. Положим S := 0. Для i от 1 до п выполним следующее: если Sjesufi} Щ ^ ^ то положим S := S U {i}. Покажите, что этот алгоритм не является fc-приближением ни при каком к. 3. Найдите точный О (nW)-алгоритм для задачи о рюкзаке. 4. Рассмотрим следующую задачу: даны неотрицательные целые числа п, сг,..., сп, юъ ..., wn и W. Требуется найти такое подмножество S с {1,... 9 п}, что Sjgs "5^^и сумма 5]j-eS Cj минимальна. Предложите псевдополиномиальный алгоритм для этой задачи. 5*. Можно ли решить целую многомерную задачу о рюкзаке (см. упражнение 1) за псевдополиномиальное время, если значение т фиксировано? 6. Пусть с е {0,..., fc}m и s е [0,1]т. Как узнать за время 0(тк), верно ли, что тах{ос: х Е Z™, sx < 1} < fc? 7. Рассмотрим две лагранжевы релаксации из упражнения 21 гл. 5. Покажите, что одна из них может быть решена за линейное время, другая же сводится к т экземплярам задачи о рюкзаке. 8. Пусть задана константа т е N. Рассмотрим следующую задачу о расписании: заданы п работ и т машин, стоимости с^ е Z+ (i = 1,..., п, j = 1,..., m) и вместительности 7J ? Z+ (j = 1,..., m). Требуется найти такое отображение /: {1,..., п) -> {1,..., т}, что \{i е {1,..., п}: ДО = ;}| < 7} для j = 1,..., т и суммарная стоимость ХГ=1 c(f(0 минимальна. Покажите, что для этой задачи существует сильно полиномиальная схема приближения.
Литература 513 9. Найдите полиномиальный алгоритм для задачи поиска е-доминанты для случая, когда система независимости является матроидом. 10*. Докажите достаточность в теореме 17.11. 11. Для любого фиксированного т € N предъявите псевдополиномиальный алгоритм для m-мерной задачи о рюкзаке. Замечание. Эта задача обобщает упражнение 3. Литература Общая литература [1] Garey М. Я., Johnson D. S. Computers and Intractability; A Guide to the Theory of NP- Completeness. Freeman, San Francisco, 1979, Chapter 4. [2] Kellerer H., Pferschy U., Pisinger D. Knapsack Problems. Springer, Berlin, 2004. [3] Martello 5., Toth P. Knapsack Problems; Algorithms and Computer Implementations. Wiley, Chichester, 1990. [4] Papadimitriou C. H., Steiglitz K. Combinatorial Optimization; Algorithms and Complexity. Prentice-Hall, Englewood Cliffs, 1982, Sections 16.2,17.3, and 17.4. Процитированные работы [5] Bellman R. Notes on the theory of dynamic programming IV—maximization over discrete sets // Naval Research Logistics Quarterly. 1956. Vol. 3. P. 67-70. [6] Bellman R. Comment on Dantzig's paper on discrete variable extremum problems // Operations Research. 1957. Vol. 5. P. 723-724. [7] Blum M., Floyd R. W., Pratt V., Rivest R. L., Tarjan R. E. Time bounds for selection // Journal of Computer and System Sciences. 1973. Vol. 7. P. 448-461. [8] Dantzig G. B. Discrete variable extremum problems // Operations Research. 1957. Vol. 5. P. 266-277. [9] Frieze A. M., Clarke M. R. B. Approximation algorithms for the m-dimensional 0-1 knapsack problem: worst case and probablistic analyses // European Journal of Operations Research. 1984. Vol.15. P. 100-109. [10] Garey M. R., Johnson D. S. Strong iVP-completeness results: motivation, examples, and implications // Journal of the ACM. 1978. Vol. 25. P. 499-508. [11] Gens G. V., Levner E. V. Computational complexity of approximation algorithms for combinatorial problems // Mathematical Foundations of Computer Science (J. Becvar, ed.), Springer, Berlin, 1979. (Lecture Notes in Comput. Sci.; Vol.74). P.292-300. [12] Ibarra О. H., Kim С. E. Fast approximation algorithms for the knapsack and sum of subset problem // Journal of the ACM. 1975. Vol. 22. P. 463-468. [13] Karp R. M. Reducibility among combinatorial problems // Complexity of Computer Computations (R. E. Miller, J. W. Thatcher, eds.), Plenum Press, New York, 1972. P. 85-103. [14] Kellerer H., Pferschy U. Improved dynamic programming in connection with an FPTAS for the knapsack problem // Journal on Combinatorial Optimization. 2004. Vol. 8. P. 5-11. [15] Korte В., Schrader R. On the existence of fast approximation schemes // Nonlinear Programming; Vol. 4 (O. Mangaserian, R. R. Meyer, S. M. Robinson, eds.), Academic Press, New York, 1981. P. 415-437.
514 Глава 17. Задача о рюкзаке [16] Lawler Е. L. Fast approximation algorithms for knapsack problems // Mathematics of Operations Research. 1979. Vol. 4. P. 339-356. [17] Pisinger D. Linear time algorithms for knapsack problems with bounded weights // Journal of Algorithms. 1999. Vol. 33. P. 1-14. [18] Sahni S. Approximate algorithms for the 0/1 knapsack problem // Journal of the ACM. 1975. Vol. 22. P. 115-124. [19] Vygen J. The two-dimensional weighted median problem // Zeitschrift fur Angewandte Mathematik und Mechanik. 1997. Bd. 77. Supplement, S. 433-436. [20] Woeginger G. J. When does a dynamic programming formulation guarantee the existence of a fully polynomial time approximation scheme (FPTAS)? // INFORMS Journal on Computing. 2000. Vol. 12. P. 57-74.
ГЛАВА 18 Задача об упаковке в контейнеры Предположим, что у нас есть п предметов фиксированного размера и некоторое количество контейнеров одинакового объема. Мы хотим упаковать предметы в контейнеры, используя как можно меньше контейнеров. При этом суммарный размер предметов, упакованных в один контейнер, не должен превышать объема контейнера. Без потери общности можно считать, что объем каждого контейнера равен единице. Тогда задача об упаковке в контейнеры (bin packing problem) может быть сформулирована следующим образом. Bin Packing (задача об упаковке в контейнеры) Дано: набор неотрицательных чисел аъ..., ап < 1. Надо: найти такое число к € N и такую функцию /: {1,..., п} —> {1,..., к}, что 2i/(o=; ai ^ 1 Я*151 всех J' € {1* • • • > к} и значение к минимально. Есть не так много задач комбинаторной оптимизации, практическая ценность которых столь очевидна. Например, задаче об упаковке в контейнеры эквивалентна простейшая версия задачи о раскрое (cutting stock problem). А именно, дано несколько листов металла или брусов дерева одинаковой длины (скажем, 1 метр) и числа аъ ..., ап. Требуется разрезать как можно меньше из них так, чтобы в конце получились листы с длинами аъ ..., ап. Хотя экземпляром нашей задачи является некоторый упорядоченный набор J, в котором числа могут повторяться, мы будем использовать запись х е J, чтобы показать, что х является его элементом. Через |/| мы обозначаем длину списка J. Будем также использовать сокращение SUM^,..., ап) :=^]"=1 at. Верна очевидная оценка снизу: [SUM (7)1 < OPT(J) для любого набора I. В § 18.1 мы докажем, что задача об упаковке в контейнеры NP-полна в сильном смысле, и обсудим несложные приближенные алгоритмы, ее решающие. Мы увидим, что не существует алгоритма, который давал бы точность приближения лучше, чем 3/2 (при условии, что Р ф NP). Однако можно достичь сколь угодно хорошего приближения асимптотически: в §18.2 и 18.3 мы опишем сильно полиномиальную схему асимптотического приближения. Для этого нам понадобятся метод эллипсоидов и результаты § 17.
516 Глава 18. Задача об упаковке в контейнеры § 18.1. Жадные эвристики В этом параграфе мы проанализируем некоторые жадные эвристики для задачи об упаковке в контейнеры. Мы не надеемся получить полиномиальный алгоритм решения, так как задача NP-трудна. Теорема 18.1. Следующая задача NP-полна: дан экземпляр I задачи об упаковке в контейнеры, и требуется определить, существует ли решение, в котором используется только два контейнера. Доказательство. Очевидно, что задача лежит в классе NP. Мы сведем задачу о разбиении (которая NP-полна согласно утверждению 15.28) к рассматриваемой задаче распознавания. Даны числа са,..., сп — экземпляр задачи о разбиении. Рассмотрим аъ ..., ап — экземпляр задачи об упаковке в контейнеры, где Очевидно, что предметы можно упаковать в два контейнера, если и только если существует такое подмножество SC{l,...,n}, что jeS j$s Следствие 18.2. Если Р ф NP, то не существует приближенного алгоритма для задачи об упаковке в контейнеры с точностью р < 3/2. ? Для любого фиксированного к существует псевдополиномиальный алгоритм, который для заданного экземпляра задачи I определяет, можно ли разложить объекты в к контейнеров (см. упражнение 1). Однако в общем случае задача NP-полна в сильном смысле. Теорема 18.3 (Гэри и Джонсон [9]). Следующая задача NP-полна в сильном смысле: даны экземпляр I задачи об упаковке в контейнеры и число В, и требуется определить, существует ли решение задачи I, в котором используется ровно В контейнеров. Доказательство. Сведем задачу 3DM к данной (см. теорему 15.26). Пусть задан экземпляр U, V, W, Т задачи 3DM. Построим экземпляр J задачи об упаковке в контейнеры, состоящий из 4|Г| предметов. А именно, в качестве множества предметов возьмем S:= (J {t,(u,t),{v,t),{w,t)}. t=(lL,V,w)eT Положим U = {и1у..., ип}, V = {и1з..., ип} и W = {wly..., wn}. Для каждого х е U и V и W выберем элемент tx € Г, удовлетворяющий условию (х, tx) е S. Для каждого t = (щ, Vj, wk) е Г определим размеры объектов следующим образом: t имеет размер ^ (10N4 + 8-Ш- jN2 - kN3),
§ 18.1. Жадные эвристики 517 (?(10N4 + Ш + 1), если t = tu., ?(llN4 + iN + l), если гфгщ, [ 1 (ION4 + ;N2 + 2), если t = tVj, {Vj, t) имеет размер \ л |^(llN4 + ;N2 + 2), если t^t^, ( ?(10N4 + kN3 + 4), если t = tWk, (wk, t) имеет размер < - у ?(8N4 + kN3 + 4), если t ф tWk, где iV := ЮОп и С := 40N4 +15. Эти объекты задают экземпляр I = {аъ ..., а4|т|) задачи об упаковке в контейнеры. Положим В := \Т\ и покажем, что для I есть упаковка в не более чем В контейнеров тогда и только тогда, когда исходная задача 3DM разрешима, т. е. существует такое подмножество М множества Г размера \М\ = п, что для различных {и, v, w), (и\ i/, u/) е М выполняются неравенства ифи^ифи'ишфш'. Для начала рассмотрим случай, когда задача 3DM разрешима и ее решение — это множество М. Так как разрешимость задачи I с В контейнерами не зависит от выбора tx (х € U U V U W), можно считать, что tx е М для всех х. Теперь для всех t = (u, v, w) е Г упакуем t, (и, t), (у, t), (ш, t) в один контейнер. Таким образом, получено решение, в котором используется \Т\ контейнеров. Теперь рассмотрим обратный случай. Пусть / — это решение задачи I, в котором используется В = \Т\ контейнеров. Так как SUM(J) = |Г|, каждый контейнер должен быть полностью заполнен. Поскольку размеры всех объектов лежат строго между 1/5 и 1/3, каждый контейнер должен содержать ровно четыре предмета. Рассмотрим один контейнер к е {1,..., В}. Так как С J]r/m=fc ai = С = 15 (mod N), контейнер должен содержать один предмет t = (и, v, w) е Г, один предмет (u7, t')eU х Г, один предмет (i/, t") е V х Т и один предмет (u/, t'") GWxT. Поскольку С^]-.д-ч ка^ = С = 15 (mod AT2), имеем и=и'. Аналогично, рассмотрев сумму по модулю N3 и по модулю JV4, получим, что v = v' иш = и/. Таким образом, либо t'=tUi t"=tv и t"'=tw (случай 1), либо t'?tUi t"^tv и t!"?tw (случай 2). Построим множество М, состоящее из тех элементов teT, для которых при упаковке выполнен случай 1. Очевидно, что М будет решением задачи 3DM. Отметим, что все числа, использованные при построении задачи J, полиномиально зависят от размера исходной задачи, а точнее, равны 0(п4). Так как задача 3DM NP-полна (см. теорему 15.26), на этом доказательство завершено. ? Данное доказательство принадлежит Пападимитриу [24]. Даже если Р ф NP, описанный выше результат не исключает возможности существования абсолютного приближенного алгоритма, например, использующего один дополнительный контейнер по сравнению с оптимальным решением. Вопрос о существовании такого алгоритма до сих пор остается открытым.
518 Глава 18. Задача об упаковке в контейнеры Самой простой эвристикой для решения задачи упаковки является следующая. Next Fit («следующий подходящий») Вход: Выход: экземпляр аъ.. решение (fc,/). ., ап задачи об упаковке в контейнеры. (Т) Положить fc := 1 и S := 0. (2) For i := 1 to п do: If S + at > 1 then присвоить fc := к + 1 и S := 0. Положить /(0 := к и S := S + а{. Обозначим через NF(J) количество fc контейнеров, использованных этим алгоритмом для экземпляра I. Теорема 18.4. Время работы алгоритма Next Fit составляет 0(п). Для любого экземпляра I = аъ...,ап справедливы неравенства NF(J) < 2rSUM(/)l -1 < 2 ОРТ(/) - 1. Доказательство. Оценка времени работы алгоритма очевидна. Пусть fc :=NF(J), / — упаковка, найденная алгоритмом Next Fit. Для j = 1,..., [k/2\ имеем i:/(0e{2j-l,2j} Складывая эти неравенства, получим [|J < SUM(J). Так как выражение в левой части — целое число, мы заключаем, что ^<[!J<rsuM(/)i-i. Это доказывает, что fc < 2fSUM(/)l — 1. Второе неравенство очевидно. ? Взяв экземпляр 2е, 1-е, 2е, 1 — в,..., 2е с произвольно малым значением в > 0, мы видим, что эта оценка точна. Таким образом, алгоритм Next Fit дает 2-приближение. Конечно, точность приближения улучшится, если рассматриваемые числа небольшие. Утверждение 18.5. Пусть 0 < у < 1. Для любого экземпляра I = аъ...,ап, удовлетворяющего условию at^y для всех i е {1,..., п}, справедлива оценка NF(/)<[^1. Доказательство. Известно, что J];. д;)=; а(>1 — у при ; = 1,..., NF(J) — 1. Складывая эти неравенства, получим (NF(J) —1)(1 — у) < SUM(J), и, следовательно,
§ 18.1. Жадные эвристики 519 Следующий по своей простоте приближенный алгоритм решения задачи таков. First Fit («первый подходящий») Вход: Выход: экземпляр аг,.. решение (fc,/). ., ап задачи об упаковке в контейнеры. ® For i := 1 to п do: Положить f(i) := min{; GN: Y*h<i:f(h)=jah + ai < l}• (2) Положить к := тах^ц n} /(i). Очевидно, что алгоритм First Fit не может дать результат хуже, чем алгоритм Next Fit. Поэтому алгоритм First Fit также находит 2-приближение. Но на самом деле он даже лучше. Теорема 18.6 (Джонсон и др. [20], Гэри и др. [8]). Для любого экземпляра I задачи об упаковке в контейнеры справедливо неравенство FF(J)<|~g0PTU)} (Здесь FF(J) обозначает количество контейнеров, использованных алгоритмом для экземпляра I.) Кроме того, существуют экземпляры I с произвольно большим значением ОРТ(/), для которых Доказательство этого факта весьма сложно, и мы его опускаем. Отметим, что для небольших значений OPT(J) сильнее оказывается оценка FF(J) < — OPT(J), полученная Ся и Танем [30]. Утверждение 18.5 показывает, что алгоритм Next Fit (а значит, и First Fit) хорошо ведет себя, когда все числа в наборе небольшие. Поэтому естественно было бы обработать вначале большие числа. Следующая модификация алгоритма First Fit рассматривает числа в убывающем порядке. First Fit in Decreasing Order («первый подходящий в порядке убывания») Вход: экземпляр аъ..., ап задачи об упаковке в контейнеры. Выход: решение (fc,/). (Т) Упорядочить числа так, что аг > а2 > ... > ап. (2) Применить алгоритм First Fit. Теорема 18.7 (Симчи-Леви [28]). Алгоритм First Fit in Decreasing Order дает --приближение для задачи об упаковке в контейнеры.
520 Глава 18. Задача об упаковке в контейнеры Доказательство. Пусть / — экземпляр задачи, к := FFD(J) (количество контейнеров, использованных алгоритмом). Положим j := [о^~|. Рассмотрим ;-й контейнер. Если он содержит предмет размера больше 1/2, то во всех контейнерах с меньшим номером не было места для данного предмета, а значит, в них положили предметы до этого. Так как предметы рассматриваются в порядке невозрастания размеров, в наборе есть не менее j предметов размера больше 1/2. Следовательно, ОРТ(7) > j > |fc. Иначе j-й контейнер, а значит, и все контейнеры с большими номерами не содержат предметов размера больше 1/2. Следовательно, контейнеры с номерами ;,; +1,..., fc содержат не менее 2{к—j) +1 предметов, ни один из которых не помещается в контейнеры с номерами 1,...,; — 1. Заметим, что 2Cfc-j) + l>2(fc-(§fc + §)) + l = §fc-|>j-l. Следовательно, OPT(J) > SUM(J) > ; -1, т. е. OPT(J) > j > |fc. ? По следствию 18.2 данная оценка точности является наилучшей возможной (она достигается на экземпляре 0,4; 0,4; 0,3; 0,3; 0,3; 0,3). Однако асимптотически точность приближения этого алгоритма оказывается лучше. Джонсон [17] показал, что FFD(J) < -5- OPT(J) + 4 для любого экземпляра I (см. также работу Джонсона [18]). Бейкер [2] предложил более простое доказательство, из которого следует неравенство FFD(J) < -^- OPT(J) + 3. Юэ [31] улучшил оценку до 11 FFD(J) < — ОРТ (7) + 1. Вопрос был окончательно решен в работе Доша [5]. Теорема 18.8 (Доша [5]). Для любого экземпляра I задачи об упаковке в контей- 11 2 неры справедливо неравенство FFD(J) < — ОРТ (7) + ^, и эта оценка точна. ? Доказательство данного факта слишком сложно, чтобы излагать его в этой книге. Мы, однако, приведем пример последовательности экземпляров I с произвольно большим значением ОРТ(7), для которых FFD(J) = -^- ОРТ(7). (Этот пример взят из работы Гэри и Джонсона [10].) А именно, пусть е > 0 достаточно мало. Положим I 1 {аъ ...,а30т}, где ai=\ 4+е, J+2e, 1 , 4+6' i-2e, если 1 < i < 6т, если 6т < i < 12т, если 12т < i < 18т, если 18т < i < 30т. Оптимальное решение состоит из 6т контейнеров, содержащих Зт контейнеров, содержащих Решение, найденное алгоритмом FFD, состоит из 1 , 1 , 1 о 2+е> 4+6' 4~2е' 1 + 2е, I+2e,i-2e, \ ¦2е.
§ 18.2. Асимптотическая схема приближения 521 6т контейнеров, содержащих - + е, ^ + 2е, 2т контейнеров, содержащих т + в, т + в, - + в, Згл контейнеров, содержащих - — 2е, - — 2е, - — 2е, - — 2е. Таким образом, OPT(J) = 9ти FFD(J) = 11m. Известны и другие алгоритмы для задачи об упаковке в контейнеры, некоторые из них имеют асимптотическую точность приближения лучше 11/9. В следующем параграфе мы покажем, что можно достичь сколь угодно близкой к единице асимптотической точности приближения. В ряде важных на практике случаев необходимо упаковывать предметы в том порядке, в котором они поступают на вход, ничего не зная про предметы, которые придут в будущем. Алгоритмы, которые не используют информацию о будущем, называются онлайн-алгоритмами. Например, Next Fit и First Fit — это онлайн-алгоритмы, а алгоритм First Fit in Decreasing Order таковым не является. Наилучший известный онлайн-алгоритм для задачи об упаковке в контейнеры имеет точность приближения 1,59 (Сейден [27]). С другой стороны, ван Флит [29] доказал, что не существует онлайн-алгоритма для задачи об упаковке в контейнеры, который давал бы асимптотическую точность приближения лучше 1,54. Более слабая нижняя оценка приводится в упражнении 6. § 18.2. Асимптотическая схема приближения В этом параграфе мы покажем, что для любого е > О существует алгоритм с линейным временем работы, который гарантированно находит решение с использованием (1 + е) OPT(J) + 1/е2 контейнеров. Мы начнем с рассмотрения примеров, в которых количество различных размеров в наборе невелико. Обозначим различные числа в нашем экземпляре задачи I через sb..., 5m. Пусть J содержит ровно Ъ{ копий размера st (i = 1,..., m). Пусть Tlf...,TN — всевозможные способы упаковки одного контейнера: {T1,...,TN}:=Uk1,...,kn)eZ™: ^s^l]. Конкретный способ упаковки будем обозначать через 7} = (t;1,..., t;m). Тогда задача об упаковке в контейнеры эквивалентна следующей задаче целочисленного программирования (предложенной Эйземаном [6]): N минимизировать V^ Xj N (18.1) условиях Yltjix}>bi 1—1 J—-l Xj e Z+ G = l,.. 0 = 1,. .,m), -,N).
522 Глава 18. Задача об упаковке в контейнеры В действительности мы хотим, чтобы было верно равенство ^J=1 tjtXj = Ъ{, но рассматриваемое ослабление не изменяет оптимум исходной задачи. Рассмотрим линейную релаксацию задачи (18.1): N минимизировать /^ х, j=i n (18.2) при условиях У, hixi **bt (i = 1,..., m), Xj>o 0" = i,--,Л0. Следующая теорема показывает, что, округлив решение линейной программы (18.2), можно получить решение задачи (18.1) (а значит, и задачи об упаковке в контейнеры), не сильно отличающееся от исходного. Теорема 18.9 (Фернандес де ла Вега и Люкер [7]). Пусть I — экземпляр задачи об упаковке в контейнеры, содержащий т различных чисел. Пусть х — допустимое (не обязательно оптимальное) решение задачи (18.2), содержащее не более т ненулевых координат. Тогда за время 0(|/|) можно найти решение задачи об упаковке в контейнеры, в котором используется не более 2/=i xj + 1 о J контейнеров. Доказательство. Рассмотрим решение [х\, полученное из х округлением вниз каждой координаты. Решение [х\ не дает полной упаковки I (при этом оно также может упаковывать некоторые предметы большее число раз, чем требуется, но это не важно). Неупакованные предметы образуют новый экземпляр задачи, который мы обозначим через V. Заметим, что N т N N SUM(/0 < J^txj- [xj\) ^ tns{ <Y*Xj- YjLXjl- j=l i=l ;=1 j=l Поэтому достаточно упаковать V в не более чем [SUMf/Ol + [(jtl — 1)/2J контейнеров, поскольку после этого суммарное количество контейнеров не будет превосходить f>;j+rsuMcni+l^ j < lz *>l+[^\- Мы рассмотрим два способа упаковки V. Во-первых, вектор \х] — [х\ позволяет упаковать все предметы из V. При этом количество использованных контейнеров будет не больше т, так как х содержит не более т ненулевых координат. Во-вторых, мы можем получить упаковку V, в которой используется 2[SUM(/01 — 1 контейнеров, с помощью алгоритма Next Fit (см. теорему 18.4). Обе упаковки могут быть построены за линейное время. В наилучшей из этих двух упаковок используется не более min{m, 2[SUM(/01 -1} < rSUM(/')l + !!L^L контейнеров. Теорема доказана. ?
§ 18.2. Асимптотическая схема приближения 523 Следствие 18.10 (Фернандес де ла Вега и Люкер [7]). Пусть фиксированы константы т и у > 0. Пусть I — экземпляр задачи об упаковке в контейнеры, содержащий т различных чисел, не меньших у. Тогда за время 0{\1\) можно найти решение, в котором используется не более OPT(J) + \_{т — 1)/2J контейнеров. Доказательство. Используя симплекс-метод (теорема 3.14), мы можем найти базисное оптимальное решение х* задачи (18.2), т. е. вершину соответствующего полиэдра. Так как в любой вершине в равенство обращаются не менее N ограничений (см. утверждение 3.9), вектор х* имеет не более т ненулевых координат. Время, необходимое для поиска х*, зависит только от т и N. Заметим, что N < (m +1)1^, так как в каждом контейнере может быть не более 1/у элементов. Поэтому решение х* может быть найдено за линейное время. Поскольку |"5]/=1 **] < OPT(J), для завершения доказательства достаточно лишь применить теорему 18.9. ? Аналогичный результат может быть получен с использованием метода эллипсоидов (см. теорему 4.18). Этот результат можно улучшить: для фиксированных т и у можно найти точное оптимальное решение за полиномиальное время, поскольку целочисленная программа с фиксированным числом переменных может быть решена за полиномиальное время (Ленстра [23]). Более простой алгоритм для случая фиксированного т рассматривается в упражнении 7. Однако далее столь сильные результаты нам не понадобятся. В следующем параграфе мы снова применим теорему 18.9 и получим полиномиальный алгоритм, дающий такую же точность приближения, даже если тиуне фиксированы (см. доказательство теоремы 18.14). Сформулируем теперь алгоритм Фернандеса де ла Беги—Люкера [7]. Не вдаваясь в подробности, принцип его работы можно описать следующим образом. Сначала разобьем п чисел наш + 2 групп согласно их величине. Далее упакуем группу, состояющую из наибольших чисел, используя по одному контейнеру на каждое число. После этого упакуем т средних групп, округляя каждое число в группе до наибольшего числа из этой группы и применяя следствие 18.10. Наконец, упакуем группу с самыми маленькими числами. Fernandez-de-la-Vega — Lueker Algorithm (алгоритм Фернандеса де л а Веги—Люкера) Вход: экземпляр /=аг,..., ап задачи об упаковке в контейнеры, число е > 0. Выход: решение (к, /) для I. (D Присвоить у := j^ и h := \е SUM(/)"|. (2) Пусть 1г=1,М,К — такая перестановка списка I, что М = К0, yi,Kl9y29...9 Кт-ъ Ут и L, К0, Кг,..., Кт_ъ R — это снова списки, причем выполнены следующие условия: (а) для всех х е L справедливо неравенство х < у;
524 Глава 18. Задача об упаковке в контейнеры (б) для всех х GK0 справедливы неравенства у < х < уг: (в) для всех х €Kt справедливы неравенства у{ < х < yi+1 (i = 1,..., т — 1); (г) для всех х е R справедливо неравенство ут < х; 00 I*! | = ... = 11^.! | = |Я| = h -1 и |1Го1 < h -1. Решение (fc, /) теперь строится с помощью следующих трех шагов. (3) Найти упаковку SR экземпляра R с использованием |R| контейнеров. (4) Рассмотреть задачу Q, состоящую из чисел уъ у2,..., ут, каждое в h экземплярах. Найти упаковку SQ задачи Q с использованием не более чем (т + 1)/2 дополнительных контейнеров по сравнению с оптимальным решением (см. следствие 18.10). Преобразовать SQ в упаковку SM задачи М. (5) Пока есть контейнеры из SR или SM, в которых свободно хотя бы у мест, заполнять их элементами из L. Наконец, найти упаковку чисел, оставшихся в L, используя алгоритм Next Fit. На шаге 0 использована несколько более слабая оценка, чем полученная в следствии 18.10. Легко показать, однако, что это не отражается на корректности. Подобная форма записи пригодится нам в § 18.3. Описанный выше алгоритм определяет асимптотическую схему приближения. А именно, справедливо следующее утверждение. Теорема 18.11 (Фернандес де ла Вега и Люкер [7]). Для любого е, 0 < е < 1/2, и любого экземпляра I задачи об упаковке в контейнеры алгоритм Фернандеса де ла Беги—Люкера находит решение, в котором используется не более чем (1 + е) OPT(J) + 1/в2 контейнеров. Время его работы составляет 0{п • 1/е2) плюс время, необходимое для решения линейной программы (18.2). При фиксированном е время работы алгоритма составляет 0{п). Доказательство. На шаге (2) мы сначала находим L за время 0(п). Затем полагаем m := I—г—J. Так как y(\I\ — \L\) < SUM(J), получаем, что m<|/|-lb|< I/I-ILI < 1 =е + 1 /i ^ eSUM(J) ^ уе е2 ' Мы знаем, что значение у{ должно быть (|/| +1 — (т — i + 1)/i)-m по величине (i = 1,..., т). Поэтому по следствию 17.4 каждое у{ можно найти за время О(п). Наконец, на нахождение каждого из значений К0,Къ...,Кт_ъR мы потратим время 0(п). Таким образом, шаг (2) может быть выполнен за время 0(тп). Заметим, что т = О (1/е2). Шаги (5), 0 и (5) могут быть легко выполнены за время О(п) (не считая решения программы (18.2)). При фиксированном е программа (18.2) может быть решена за время 0(п) (см. следствие 18.10). Оценим теперь точность полученного решения. Пусть к — количество контейнеров, использованных алгоритмом. Обозначим через |SR| и \SM\ количество контейнеров, использованных для упаковки R и М соответственно. Имеем \SR\ < |Д| = h - К е SUM(J) < в ОРТЦ).
§ 18.3. Алгоритм Кармаркара — Карпа 525 Далее, заметим, что OPT(Q) < ОРТ (J). Действительно, i-й наибольший элемент в списке I не превосходит i-ro наибольшего элемента множества Q для всех i = l,..., hm. Следовательно, согласно шагу 0 (по следствию 18.10) имеем \SM\ = \SQ\ < OPT(Q) + ^ < OPT(J) + =Цр. На шаге (5) некоторые из элементов множества L могут быть упакованы в контейнеры SR и SM. Пусть V — список оставшихся элементов множества L. Случай 1: множество I/ непусто. Тогда общий размер элементов в каждом контейнере (кроме, возможно, последнего) больше 1—у, поэтому (1—у)(к — 1) < < SUM(J) < ОРТ (J). Отсюда получаем к < y=T OPT(J) + 1 = (1 + е) OPT(J) + 1. Случай 2: множество I/ пусто. Тогда k < \SR\ + \SM\ < е ОРТ(/) + ОРТ(/) + Щ± < < (1 + е) ОРТ(/) + е+2Уе2 < (1 + е) ОРТ(/) + ^, поскольку в < 1/2. П Конечно, время работы представленного алгоритма растет экспоненциально по 1/е. Однако Кармаркар и Карп показали, как получить сильно полиномиальную схему приближения. О ней и пойдет речь в следующем параграфе. §18.3. Алгоритм Кармаркара — Карпа Алгоритм Кармаркара и Карпа [21] похож на алгоритм из предыдущего параграфа. Однако вместо того, чтобы находить точное решение линейной релаксации (18.2) (см. следствие 18.10), будем теперь решать ее с константной абсолютной погрешностью. Дело осложняется тем, что количество переменных в программе растет экспоненциально по 1/е. С практической точки зрения полезным оказывается метод генерации столбцов, разработанный Гилмором и Гомори [11]. Применяя его, мы получаем разновидность симплекс-метода, которая на практике оказывается эффективной при решении задачи (18.2). Похожие идеи приводят к алгоритму с хорошей теоретической оценкой. Для этого вместо симплекс-метода нужно использовать алгоритм Грётшеля—Ловаса — Скрейвера. В упомянутых выше методах ключевую роль играет двойственная задача линейного программирования. Для задачи (18.2) двойственная задача имеет следующий вид: максимизировать уЪ т при условиях 2_л гпУ1 ^ 1 0" = !> • • • iW)i (18-3) 1=1 yt>0 (i = l,...,m).
526 Глава 18. Задача об упаковке в контейнеры В данной задаче т переменных, но экспоненциально много ограничений. Однако количество ограничений не должно нас беспокоить, если мы умеем решать задачу отделения за полиномиальное время. Оказывается, задача отделения эквивалентна задаче о рюкзаке. Задачу о рюкзаке мы умеем решать с произвольной точностью, значит, мы также умеем решать и слабую задачу отделения. Эта идея позволяет доказать следующее утверждение. Лемма 18.12 (Кармаркар и Карп [21]). Пусть I — экземпляр задачи об упаковке в контейнеры, содержащий т различных чисел, каждое из которых не меньше у. Пусть 5 > 0. Тогда допустимое решение у* двойственной задачи линейного программирования (18.3), отличающееся от оптимального не более чем на 5, может быть найдено за время r\( 6i 2 тпп . т п Л тп\ O^log^ + ^-log^-J. Доказательство. Можно считать, что 5 = 1/р для некоторого натурального числа р. Применим алгоритм Грётшеля—Ловаса — Скрейвера (теорема 4.19). Пусть @ — полиэдр задачи (18.3). Имеем в(х0, \) с [0, у]т с & с [0,1]т с В(*0, у/т), где дг0 — вектор, все координаты которого равны у/2. Докажем, что слабую задачу отделения для двойственной задачи (18.3), т. е. для 9, Ъ и 5/2, можно решить за время 0(пт/5) (независимо от размера вектора у). Тогда из теоремы 4.19 следует, что слабая задача отделения может быть решена за время rmelog2nfH + nfllognifl) О (г у5 5 ь у5 Г откуда с учетом неравенства ||b|| < п вытекает утверждение леммы. Для того чтобы показать, как решить слабую задачу отделения, предположим, что задан вектор у е Qm. Можно считать, что 0 < у < 1, иначе задача тривиальна. Заметим, что вектор у образует допустимое решение, если и только если тзх{ух: х € Z™, xs < 1} < 1, (18.4) где s = (sl9..., 5m) —вектор, координаты которого равны размерам предметов. Программа (18.4) представляет собой частный случай задачи о рюкзаке, поэтому нет надежды решить ее точно. Но в этом нет необходимости, так как слабая задача отделения используется только для нахождения приближенного решения. I Qn I Обозначим у' \— I -F-y\ (округление выполняется покоординатно). Задача maxiy'x: х е Ъ™, xs < 1} (18.5) может быть решена точно с помощью метода динамического программирования, аналогичного алгоритму динамического программирования для задачи о рюкзаке из § 17.2 (см. упражнение 6 из гл. 17). Положим F(0) := 0 и F(k):=min{F(k-yr)+si:ie{l,...,m},yl<k}
§ 18.3. Алгоритм Кармаркара — Карпа 527 при fc = 1,..., Лп/5. Тогда F(fc) —это минимальный размер множества предметов с суммарной ценой к (где цены отдельных предметов задаются вектором у'). Заметим, что максимум в формуле (18.5) меньше либо равен 2п/5, если и только если F(k) > 1 для всех fc € {2п/5 +1,..., Лп/5], Для того чтобы проверить это свойство, потребуется время 0(тп/5). Возможны два случая. Случай 1: максимум в формуле (18.5) не превосходит 2п/5. Тогда -^-у' — допустимое решение задачи (18.3). Более того, *-Ь&/<»|;1-|. Слабая задача отделения решена. Случай 2: существует вектор х € Z™, для которого xs < 1 и у!х > 2п/5. Подходящий вектор л: может быть легко вычислен из значений F(fc) за время 0(тп/5). Имеем ^ о I ^ -1 УХ>2ЦУХ>1- Таким образом, х задает способ упаковки предметов в контейнеры, доказывающий, что решение у недопустимо. Так как zx < 1 для всех ге^3 мы получаем отделяющую гиперплоскость. На этом доказательство завершено. ? Лемма 18.13 (Кармаркар и Карп [21]). Пусть I — экземпляр задачи об упаковке в контейнеры, содержащий т различных чисел, каждое из которых не меньше у. Пусть 5 > 0. Тогда допустимое решение х прямой задачи линейного программирования (18.2), отличающееся от оптимума не более чем на 5 и имеющее не более т ненулевых координат, может быть найдено за время, полиномиальное по п, 1/5 и 1/у- Доказательство. Решим сначала приближенно двойственную задачу линейного программирования, используя лемму 18.12. Получим такой вектор у*, что у*Ь > ОРТ(18.3) — 5. Обозначим через Тк ,..., Тк , все возможные конфигурации контейнеров, которые встречались при указании отделяющих гиперплоскостей в случае 2 предыдущего доказательства. Будем также считать, что в данном списке присутствуют и все базисные векторы (отвечающие конфигурациям, содержащим по одному предмету). Заметим, что число А/7 ограничено сверху количеством итераций в алгоритме Грётшеля—Ловаса — Скрейвера (см. теорему 4.19), поэтому N' = o(m2log^). Рассмотрим линейную программу максимизировать уЪ та при условиях ^] t^M < 1 0 = 1,..., N7), О-8-6) yt>0 (i = l,...,m). Отметим важное обстоятельство: если применить алгоритм Грётшеля — Ловаса — Скайвера к программе (18.6), причем в качестве оракула для слабой
528 Глава 18. Задача об упаковке в контейнеры задачи отделения взять ровно тот, что был использован при решении программы (18.3) (описанный в доказательстве леммы 18.12), то алгоритм будет работать корректно. Поэтому у*Ъ > ОРТ(18.6) — 5. Рассмотрим теперь программу, двойственную к (18.6): N' минимизировать /J хк. n' (18.7) При УСЛОВИЯХ /J tkjiXkj ^ &i (? = 1, ..., т), хк.>0 0 = 1,...,N0. Программа (18.7) получается из (18.2) путем приравнивания к нулю и отбрасывания переменных Xj при j е {1,..., N}\{къ ..., fcN/}. Другими словами, мы разрешаем использовать лишь N' из всех N возможных конфигураций заполнения контейнеров. Имеем ОРТЦ8.7)-5 = ОРТЦ8.6)-5<у*Ъ< ОРТ(18.3) = ОРТ(18.2). Таким образом, достаточно решить программу (18.7). Однако (18.7) — это линейная программа полиномиального размера: она содержит N' переменных и т ограничений; все элементы коэффициентов матрицы не превосходят 1/у, и все правые части не превосходят п. Поэтому по теореме Хачияна 4.18 задача может быть решена за полиномиальное время. Мы получим оптимальное базисное решение х. Вектор х будет вершиной полиэдра, а поэтому будет содержать не более т ненулевых координат. ? Внесем теперь в алгоритм Фернандеса де ла Беги—Люкера одну модификацию. А именно, заменим точное решение задачи (18.2) на то, которое получается по теореме 18.13. Тогда получим следующий факт. Теорема 18.14 (Кармаркар и Карп [21]). Для задачи об упаковке в контейнеры существует сильно полиномиальная схема асимптотического приближения. Доказательство. Применим лемму 18.13, взяв 5 = 1. Получим оптимальное решение х задачи (18.7), в котором будет не более т ненулевых координат. Имеем Их < ОРТ(18.2) + 1. Применяя теорему 18.9, получим целое решение, в котором используется не более [ОРТ(18.2)1 +1 + (т —1)/2 контейнеров, как и требуется на шаге 0 алгоритма Фернандеса де ла Беги—Люкера. Таким образом, утверждение теоремы 18.11 остается верным. Так как m < < 2/е2 и 1/у < 2/е (можно считать, что е < 1), время, необходимое для поиска х, полиномиально зависит от п и 1/в. ? Время работы представленного метода оказывается даже больше О (е-40), поэтому практической ценности данный алгоритм не имеет. Кармаркар и Карп [21] показали, как сократить количество переменных в задаче (18.7) до т (при этом не сильно изменяя значение оптимума), улучшив за счет этого время работы
Упражнения 529 (см. упражнение 12). Плоткин, Шмойс и Тардош [25] смогли получить алгоритм со временем работы 0(п log е-1 + е-6 log е-1). В литературе также были рассмотрены многочисленные обобщения данной задачи. Двумерная задача об упаковке в контейнеры, в которой требуется упаковать прямоугольные предметы со сторонами, параллельными осям, в минимальное количество единичных квадратов (при этом поворачивать предметы не разрешается), не имеет схемы асимптотического приближения (в предположении, что РфЫР) (Бансал и др. [3]). Дополнительную информацию про задачу об упаковке в контейнеры, а также полезные ссылки можно найти в работах Капрары [4], Чжана [32], Янсена, Пределя и Шварца [16]. Упражнения 1. Пусть задано фиксированное число к. Опишите псевдополиномиальный алгоритм, по заданному экземпляру I задачи об упаковке в контейнеры находящий решение, в котором используется не более к контейнеров, или выясняющий, что такого решения нет. 2. Рассмотрим задачу об упаковке в контейнеры для экземпляров аъ ..., ап, где at > 1/3 при i = 1,..., п. (а) Сведите данную задачу к задаче поиска максимального паросочетания. (б) Покажите, как решить данную задачу за время 0(п log п). 3 (Кейранн [26]). Рассмотрим квадратичную задачу о назначениях: пусть заданы матрицы A,BeR"xn и требуется найти такую перестановку тс на {1,..., п}, что сумма Xn=i ai,jbn(i),n{j) минимальна. Покажите, что в предположении, что РфЫР, эта задача не имеет приближенного алгоритма с константной точностью, даже если А — матрица из нулей и единиц, а матрица В задает метрику. Указание. Используйте теорему 18.3. 4. Постройте экземпляр I задачи об упаковке в контейнеры, для которого FF(J) = 17, хотя OPT(J) = 10. 5. Реализуйте алгоритмы First Fit и First Fit in Decreasing Order так, чтобы время их работы составляло 0[п log п). 6. Покажите, что для задачи об упаковке в контейнеры не может существовать онлайн-алгоритма с точностью приближения лучше 4/3. Указание. Предположение РфШ здесь не потребуется. Подобного алгоритма не может существовать, даже если не накладывать никаких ограничений на время его работы. Для доказательства рассмотрите список, состоящий из п предметов размера 1/2 — е, за которыми следуют п предметов размера 1/2 + е. 7. Покажите, что задача об упаковке в контейнеры, в которой предметы имеют фиксированное количество различных размеров, может быть решена за полиномиальное время. Указание. Используя метод динамического программирования, выясните, какие подмножества могут быть упакованы в i контейнеров при i = 1,2 8. Покажите, что шаг (2) алгоритма Фернандеса де ла Беги—Люкера может быть реализован так, чтобы время его работы составляло 0(nlog(l/e)).
530 Глава 18. Задача об упаковке в контейнеры 9 (Капрара [4]). Рассмотрим задачу линейного программирования (18.3) с переменными уь i = 1,..., т (каждой переменной отвечает свой определенный размер предметов). Предположим, что sx > ... > sm. Покажите, что существует оптимальное решение, для которого уг > ... > ут. 10* (Хохбаум и Шмойс [14]). Докажите, что для всякого е > 0 существует полиномиальный алгоритм, для любого экземпляра / = {аъ ..., ап) задачи об упаковке в контейнеры находящий упаковку, в которой используется оптимальное количество контейнеров, но, возможно, нарушаются ограничения по объему на 6. Иными словами, требуется найти такое отображение /: {1,..., п} —> -> {1,..., ОРТ(/)}, что ?д0=. а{ < 1 + б для всех j е {1,..., ОРТ(/)}. Указание. Воспользуйтесь идеями из § 18.2. 11. Рассмотрим задачу о многопроцессорном расписании, которая формулируется следующим образом. Пусть заданы конечное множество заданий А, положительные числа t(a) для всех а еЛ (времена выполнения) и количество процессоров т. Требуется найти такое разбиение Л = Л1иЛ2и...иАт множества А на т попарно непересекающихся подмножеств, что сумма max™ а ^]aGA t(a) минимальна. (а) Покажите, что данная задача NP-полна в сильном смысле. (б) Покажите, что жадный алгоритм, который последовательно назначает работы (в произвольном порядке) наиболее свободной в данный момент машине, находит приближение с точностью 2. (в) (Горовиц и Сахни [15]) Покажите, что для любого фиксированного т задача имеет полностью полиномиальную схему приближения. (г)* (Хохбаум и Шмойс [14]) Используя упражнение ю, покажите, что для задачи о многопроцессорном расписании существует схема приближения. Замечание. Данная задача стала предметом изучения в первой в истории работе, посвященной приближенным алгоритмам (Грэхем [12]). Были изучены многие разновидности задачи о расписании; см. например работы Грэхема и др. [13], а также Лолера и др. [22]. 12* (Кармаркар и Карп [21]). Рассмотрим задачу (18.6), которая использовалась в доказательстве леммы 18.13. Все ограничения за исключением некоторых т ограничений могут быть опущены, при этом оптимум задачи не изменится. Мы не можем найти эти т ограничений за полиномиальное время. Покажите, однако, что можно найти такие т ограничений, что при удалении остальных оптимум в задаче возрастет не сильно (например, не более чем на единицу). Указание. Обозначим через исходную задачу (18.6). Построим последовательно задачи D(1), D(2),..., удаляя все больше и больше ограничений. На каждом шаге решение уw задачи D(l) удовлетворяет неравенству Ъу® > OPT(D(l)) — 5. Множество ограничений оказывается разделенным нат + 1 подмножеств примерно одинакового размера. Для каждого из этих подмножеств проверим, можно ли его удалить. Для того чтобы выполнить эту проверку, нужно рассмотреть задачу D, получаемую удалением соответствующего подмножества неравенств, а затем применить алгоритм Грётшеля—Ловаса — Скрейвера. Обозначим через у такое решение D, что by > OPT(D) — 5. Если by < by® + 5, то проверка
Литература 531 прошла успешно и мы полагаем D^l+1) := D и у^1+1^ := у. Выберите значение 5 подходящим образом. 13* (Джонсон [19]). Подберите е как функцию от SUM(J) так, чтобы получающаяся модификация алгоритма Кармаркара — Карпа имела полиномиальное время работы и гарантированно находила решение, в котором используется не более OPT(f) + О ( °РТ(^°^РТ(/)) контейнеров. Литература Общая литература [1] Coffman Е. G., Garey М. R., Johnson D. S. Approximation algorithms for bin-packing; a survey // Approximation Algorithms for NP-Hard Problems (D. S. Hochbaum, ed.), PWS, Boston, 1996. Процитированные работы [2] Baker В. S. A new proof for the First-Fit Decreasing bin-packing algorithm // Journal of Algorithms. 1985. Vol.6. P.49-70. [3] Bansal N., Correa J. R., Kenyon C, Sviridenko M. Bin packing in multiple dimensions: inapproximability results and approximation schemes // Mathematics of Operations Research. 2006. Vol. 31. P. 31-49. [4] Caprara A. Packing d -dimensional bins in d stages // Mathematics of Operations Research. 2008. Vol. 33. P. 203-215. [5] Dosa G. The tight bound of first fit decreasing bin-packing algorithm is FFD(J) < < — OPT(J) + q // Combinatorics, Algorithms, Probabilistic and Experimental Methodologies (Chen, В., Paterson, M., Zhang, G., eds.), Springer, Berlin, 2007. (Lecture Notes in Comput. Sci.; Vol.4614). P. 1-11. [6] Eisemann K. The trim problem // Management Science. 1957. Vol. 3. P. 279-284. [7] Fernandez de la Vega W., Lueker G. S. Bin packing can be solved within 1 + e in linear time // Combinatorica. 1981. Vol.1. P. 349-355. [8] Garey M. R., Graham R. L., Johnson D. S., Yao A. C. Resource constrained scheduling as generalized bin packing // Journal of Combinatorial Theory. Ser.A. 1976. Vol. 21. P. 257-298. [9] Garey M. R., Johnson D. S. Complexity results for multiprocessor scheduling under resource constraints // SIAM Journal on Computing. 1975. Vol. 4. P. 397-411. [10] Garey M. R., Johnson D. S. Computers and Intractability; A Guide to the Theory of NP- Completeness. Freeman, San Francisco, 1979, p. 127. [11] Gilmore P. C, Gomory R. E. A linear programming approach to the cutting-stock problem // Operations Research. 1961. Vol. 9. P. 849-859. [12] Graham R. L. Bounds for certain multiprocessing anomalies // Bell Systems Technical Journal. 1966. Vol.45. P. 1563-1581. [13] Graham R. L., Lawler E. L., Lenstra J. K., Rinnooy Kan A. H. G. Optimization and approximation in deterministic sequencing and scheduling: a survey // Discrete Optimization II (P. L. Hammer, E. L. Johnson, В. H. Korte, eds.), North-Holland, Amsterdam, 1979. (Annals of Discrete Mathematics; Vol. 5). P. 287-326.
532 Глава 18. Задача об упаковке в контейнеры Hochbaum D. S., Shmoys D. В. Using dual approximation algorithms for scheduling problems: theoretical and practical results // Journal of the ACM. 1987. Vol. 34. P. 144-162. Horowitz ?., Sahni S. K. Exact and approximate algorithms for scheduling nonidentical processors // Journal of the ACM. 1976. Vol. 23. P. 317-327. Jansen K., Prddel L., Schwarz U. M. Two for one: tight approximation of 2D bin packing // Algorithms and Data Structures — Proceedings of the 11th Algorithms and Data Structures Symposium (F. Dehne, M. Gavrilova, J.-R. Sack, С D. Toth, eds.), Springer, Berlin, 2009. (Lecture Notes in Comput. Sci.; Vol.5664). P.399-410. Johnson D. S. Near-Optimal Bin Packing Algorithms. Doctoral Thesis, Dept. of Mathematics, МГТ, Cambridge, MA, 1973. Johnson D. S. Fast algorithms for bin-packing // Journal of Computer and System Sciences. 1974. Vol. 8. P. 272-314. Johnson D. S. The Л/P-completeness column; an ongoing guide // Journal of Algorithms. 1982. Vol. 3. P. 288-300. Section 3. Johnson D. S., Demers A, Ullman J. D., Garey M. R., Graham R. L. Worst-case performance bounds for simple one-dimensional packing algorithms // SIAM Journal on Computing. 1974. Vol. 3. P. 299-325. Karmarkar N., Karp R. M. An efficient approximation scheme for the one-dimensional bin-packing problem // Proceedings of the 23rd Annual IEEE Symposium on Foundations of Computer Science. 1982. P. 312-320. Lawler E. L., Lenstra J. K., Rinnooy Kan A. H. G., Shmoys D. B. Sequencing and scheduling: algorithms and complexity // Handbooks in Operations Research and Management Science; Vol. 4 (S. С Graves, A. H. G. Rinnooy Kan, P. H. Zipkin, eds.), Elsevier, Amsterdam, 1993. Lenstra H. W. Integer Programming with a fixed number of variables // Mathematics of Operations Research. 1983. Vol. 8. P. 538-548. Papadimitriou C. H. Computational Complexity. Addison-Wesley, Reading, 1994. P. 204-205. Plotkin S. A., Shmoys D. В., Tardos Ё. Fast approximation algorithms for fractional packing and covering problems // Mathematics of Operations Research. 1995. Vol. 20. P. 257-301. Queyranne M. Performance ratio of polynomial heuristics for triangle inequality quadratic assignment problems // Operations Research Letters. 1986. Vol. 4. P. 231-234. Seiden S. S. On the online bin packing problem // Journal of the ACM. 2002. Vol. 49. P. 640-671. Simchi-Levi D. New worst-case results for the bin-packing problem // Naval Research Logistics. 1994. Vol.41. P.579-585. van Vliet A. An improved lower bound for on-line bin packing algorithms // Information Processing Letters. 1992. Vol.43. P.277-284. Xia В., Tan Z. Tighter bounds of the First Fit algorithm for the bin-packing problem // Discrete Applied Mathematics. 2010. Vol. 158. P. 1668-1675. Yue M. A simple proof of the inequality FFD(L) < Ц- OPT(L) + 1, VL, for the FFD bin- packing algorithm // Acta Mathematicae Applicatae Sinica. 1991. Vol. 7. P. 321-331. Zhang G. A 3-approximation algorithm for two-dimensional bin packing // Operations Research Letters. 2005. Vol.33. P. 121-126.
ГЛАВА 19 Многопродуктовые потоки и реберно непересекающиеся пути Задача о многопродуктовом потоке представляет собой обобщение задачи о максимальном потоке. А именно, пусть задан орграф с пропускными способностями ребер. Требуется найти такой набор из s-t-потоков для нескольких пар (s, t) (отвечающих, как говорят, различным продуктам) (commodity), что суммарный поток по любому ребру не превышает его пропускной способности. Набор пар (s, t) задается путем указания второго орграфа. По техническим причинам в случае, когда нас интересует s-t-поток, мы будем изображать этот факт ребром из t в s. Говоря формально, мы получаем следующую ориентированную задачу о многопродуктовом потоке. Directed Multicommodity Flow (ориентированная задача о многопродуктовом потоке) Дано: пара орграфов (G,H) с общим множеством вершин, пропускные способности ребер и: E(G) -> R+ и требования Ъ: Е(Н) —» К+. Надо: найти семейство (*-0/еЕ(н)> гДе *f — s-t-поток величины b(J) в G для любого ребра / = (t, s) €Е(Н) и ?/е?(/о xf(e) < u(e) для всех е е?(G). Существует также неориентированный вариант, обсуждение которого мы пока отложим. Ребра графа G называются потоковыми (network edge), а ребра графа Я —ребрами требований (demand edge) или продуктами (commodity). Концы ребер требований называются терминалами. Если и = 1, Ъ = 1 и от значений х требуется целочисленность, то имеем задачу о реберно непересекающихся путях. Иногда рассматривается вариант, в котором на ребрах написаны веса и требуется найти многопродуктовый поток минимальной стоимости. Однако пока нас будет лишь интересовать факт наличия допустимого решения. Конечно, данная задача может быть решена за полиномиальное время с помощью линейного программирования (см. теорему 4.18). Однако возникающие при этом линейные программы весьма велики, так что интересно отметить, что существует также комбинаторный алгоритм для приближенного решения задачи; см. § 19.2. Этот алгоритм использует описание задачи в терминах ЛП. Кроме того, принцип линейной двойственности дает хорошую характеризацию
534 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути рассматриваемой задачи, которая оказывается крайне полезной; она изложена в § 19.1. Однако, в отличие от случая однопродуктового потока, двойственная программа уже не может рассматриваться как задача о минимальном разрезе. Этот вопрос будет изучен в § 19.3 и 19.4. Для многих приложений интерес представляют целочисленные потоки (или наборы путей). В этом случае подходящей оказывается формулировка в виде задачи о непересекающихся путях. Ее частный случай был рассмотрен в § 8.2, где мы установили необходимый и достаточный признак существования к реберно непересекающихся (или внутренне непересекающихся) путей из s в t для фиксированных вершин 5 и t (теоремы Менгера 8.9 и 8.10). Мы покажем, что общая задача о реберно непересекающихся путях является NP-трудной как в ориентированном, так и в неориентированном случае. Несмотря на это, в ряде интересных частных случаев ее можно решить за полиномиальное время; см. § 19.5 и 19.6. § 19.1. Многопродуктовые потоки Мы сосредоточим внимание на ориентированной задаче о многопродуктовом потоке, однако заметим, что все результаты из данного параграфа также справедливы и для неориентированного случая, который формулируется следующим образом. Undirected Multicommodity Flow (неориентированная задача о многопродуктовом потоке) Дано: пара неориентированных графов (G, Я) с общим множеством вершин, пропускные способности ребер и: ?(G)-»R+ и требования Ъ: E(H)—>R+. Надо: найти семейство (xf)feE(H), где для каждого / = {t, 5} € Е(Н) функция xf представляет собой s-t-поток величины Ь(/) в (V(G), {(i/, ш), (ш, v): {vy w} € ?(G)}) и для всех е = {и, w] е E{G). /еЕ(Н) Обе версии задачи о многопродуктовом потоке естественным образом формулируются в виде задачи ЛП (см. аналогичное ЛП-описание для задачи о максимальном потоке в §8.1). Следовательно, они могут быть решены за полиномиальное время (теорема 4.18). На сегодняшний день точные полиномиальные алгоритмы, не использующие линейного программирования, известны лишь для некоторых частных случаев задачи. Построим теперь другое линейное описание задачи о многопродуктовом потоке, которое окажется полезным в дальнейшем. Лемма 19.1. Пусть (G,H,u,b)—экземпляр {ориентированной или неориентированной) задачи о многопродуктовом потоке. Пусть <€—множество циклов
§ 19.1. Многопродуктовые потоки 535 в графе G + H, содержащих ровно одно ребро требований, и пусть М — 0-1-мат- рица, столбцы которой отвечают элементам множества Ч>, а строки—ребрам графа G, причем МеС = 1, если и только если е е С. Аналогично пусть N — 0-1-матрица, столбцы которой отвечают элементам множества Ч>, а строки—ребрам графа Я, причем NfC = 1, если и только если f е С. Тогда всякое решение задачи о многопродуктовом потоке соответствует хотя бы одной точке в политопе {yeRc*:y>0,My<u,Ny = Ъ), (19.1) а каждая точка из данного политопа соответствует единственному решению задачи о многопродуктовом потоке. Доказательство. Для упрощения обозначений будем рассматривать лишь ориентированный случай. Для перехода к неориентированному случаю нужно заменить каждое ребро графа на подграф, изображенный на рис. 8.2. Пусть (а:/)/€?(Н) —решение задачи о многопродуктовом потоке. Для каждого ребра / = (t, 5) €Е (Я) можно разложить s-t-поток xf в набор s-t-путей 9 и набор циклов ?1 (теорема 8.8). А именно, для каждого ребра требований / имеем xf(e)= J w(P) для всех ее?(G), где w: & и?1 ->R+. Положим yP+f := w[P) при Ре& и ус := О при / G С € f, где С — f ? 9. В результате этого построения мы, очевидно, получим такой вектор у > 0, что My < и и Ny = Ь. Обратно, пусть у>0, My <unNy = b. Полагая xf(e):= J] Ус, Се^:е,/е?(С) мы получаем решение задачи о многопродуктовом потоке. ? Теперь, используя технику линейной двойственности, мы можем получить необходимые и достаточные условия разрешимости задачи о многопродуктовом потоке, а также установить связь с задачей о реберно непересекающихся путях. Определение 19.2. Экземпляр (G, Я) (ориентированной или неориентированной) задачи о реберно непересекающихся путях удовлетворяет условиям расстояний, если для любой функции z: E(G) —> R+ справедливо неравенство J] dist(G,z)(s,t)<2*^- <19-2) f=(t,s)€E(H) e€E(G) Экземпляр (G, Я, и, Ъ) задачи о многопродуктовом потоке удовлетворяет условиям расстояний, если для любой функции z: Е (G) -»R+ справедливо неравенство ]Г Ь(/) dist(G)Z)(5, t) < J] u(e)*(e). /=(М)е?(Н) eeE(G) (В неориентированном случае следует заменить (t,s) на {t,s}.)
536 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Левая часть неравенств, выражающих условия расстояний, может быть интерпретирована как нижняя оценка на стоимость решения (относительно стоимостей ребер z), в то время как правая часть представляет собой верхнюю оценку на максимальную возможную стоимость. Теорема 19.3. Условия расстояний являются необходимыми и достаточными для разрешимости задачи о многопродуктовом потоке (как в ориентированном, так и в неориентированном случсшх). Доказательство. Как и ранее, мы будем рассматривать лишь ориентированный случай, а неориентированный получим с помощью замены, изображенной на рис. 8.2. По лемме 19.1 задача о многопродуктовом потоке имеет решение, если и только если полиэдр {у ? R+: My < и, Ny = b} непуст. По следствию 3.25 данный полиэдр пуст, если и только если существуют такие векторы z, w, что z > О, zM + wN > О и zu + wb < 0. (Здесь М и N определены выше, как указано ранее.) Из неравенства zM + wN > 0 вытекает, что — wf < Хеер %е Для любого ребра требований / = (t,s) и каждого s-t-пути Р в G, откуда — wf < dist(Gz)(s, t). Следовательно, существуют векторы z, w, для которых z>0, zM + wN>0и zu + wb<0, если и только если существует такой вектор z > 0, что zu- J] dist(GjZ)(s,t)b(/)<0. f=(t,s)eE(H) На этом доказательство завершено. ? В § 19.2 будет показано, как построить алгоритм для задачи о многопродуктовом потоке, используя линейное описание из леммы 19.1 и двойственное к нему. Из теоремы 19.3 следует, что условия расстояний являются необходимыми для разрешимости задачи о реберно непересекающихся путях, поскольку последнюю можно рассматривать как задачу о многопродуктовом потоке, полагая Ъ = 1, и = 1 и требуя от решения целочисленное™. Другое важное необходимое условие выглядит следующим образом. Определение 19.4. Экземпляр (G, Я) (ориентированной или неориентированной) задачи о реберно непересекающихся путях удовлетворяет разрезным условиям, если для любого подмножества X с V(G) выполняются неравенства • |б?(Х)| > \5jj(X)\ в ориентированном случае или • |5G(X)| > \5Н(Х)\ в неориентированном случае. Экземпляр (G, Я, и, Ъ) (ориентированной или неориентированной) задачи о многопродуктовом потоке удовлетворяет разрезным условиям, если для любого подмножества X с V(G) выполняются неравенства • и(5^(Х)) > Ь(5й(Х)) в ориентированном случае или • u(5G(X)) > b(5H(X)) в неориентированном случае. Следствие 19.5. Фиксируем экземпляр (G, Я) (ориентированной или неориентированной) задачи о реберно непересекающихся путях. Тогда для него справедливы следующие импликации: (G,H) имеет решение => (G, Я) удовлетворяет условиям расстояний => (G, Я) удовлетворяет разрезным условиям.
§ 19.1. Многопродуктовые потоки 537 (а) (б) Доказательство. Первая импликация следует из теоремы 19.3. Для доказательства второй импликации заметим, что разрезные условия представляют собой частный случай условий расстояний, где для подмножества X с V(G) рассматриваются веса вида ( 1, если е е 5+(Х) (ориентированный случай) или %{е) := < ее. 5{Х) (неориентированный случай), ? у О иначе. В общем случае ни одна из этих импликаций не может быть обращена. На рис. 19.1 показаны примеры задач, в которых не существует (целого) решения, однако существует дробное (т. е. решение для релаксации задачи о многопродуктовом потоке). Таким образом, в представленных примерах условия расстояний выполнены. На протяжении настоящего параграфа при изображении сетей мы помечаем одинаковыми числами вершины, соединенные ребром требований. В ориентированном случае необходимо также направить эти ребра требований так, чтобы они стали реализуемыми. (Ребро требований (t,s) или {t,s} называется реализуемым, если вершина t достижима из 5 в потоковом графе.) Два примера, показанных на рис. 19.2, удовлетворяют разрезным условиям (как легко проверить), но не условиям расстояний: в неориентированном примере следует взять z{e) = 1 для всех е € E(G), а в ориентированном — z(e) = 1 для жирных ребер иг(е)=0 для остальных. (б) 1,3 * 7 * т * |2 > • > 2,3 Рис. 19.2
538 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Отметим, что задача проверки того, удовлетворяет ли заданный экземпляр неориентированной задачи о реберно непересекающихся путях разрезным условиям, является NP-трудной (упражнение 2). Это отличает их от условия расстояний, выполнение которого можно проверить за полиномиальное время методами линейного программирования. Для некоторых классов задач о реберно непересекающихся путях разрезные условия являются достаточными для существования решения. Один из подобных классов описан в теореме Менгера. Данный пример можно немного обобщить следующим образом. Лемма 19.6. Пусть задан экземпляр (G, Я) (ориентированной или неориентированной) задачи о реберно непересекающихся путях и выбрана вершина и е V(G). Пусть (G', Н') получается из (G, Я) добавлением новой вершины х и выполнением следующего преобразования для каждого ребра требований /, инцидентного v. Если f = {и, w}, то заменим f на {и, х} и добавим ребро требований {w, х}. Если f = (v, w), то заменим f на (v, х) и добавим потоковое ребро (х, w). Если f = (w, и), то заменим f на (х, и) и добавим потоковое ребро (ш, х). Тогда задача (G\ Я') имеет решение, если и только если задача (G, Я) имеет решение. Более того, (G' Я') удовлетворяет разрезным, условиям, если и только если этим условиям удовлетворяет (G,H). Доказательство. Любое решение задачи (G',H') порождает решение задачи (G, Я) путем удаления новых потоковых ребер. Обратно, всякое решение задачи (G, Я) может быть преобразовано в решение задачи (G' Н') путем добавления новых потоковых ребер. Рассмотрим теперь разрезные условия. Заметим, что для любого подмножества X с У (GO = V(G) U {х} справедливы неравенства |5+(X)|-|5-,(X)|>|5+(X\{jc})|-|5-(X\W)| ИЛИ \5G,(X)\-\5H,(X)\ > \5G(X\{x})\-\5H(X\{x})\, (в ориентированном и неориентированном случае соответственно), причем данные неравенства обращаются в равенства, если \Х П {v, х}\ = 1. ? Теорема 19.7. Пусть (G,H)—экземпляр (ориентированной или неориентированной) задачи о реберно непересекающихся путях. Пусть также существует такая вершина и, что (а) / е 5+(и) для всех f € Е(Н), или (б) / € 5~{у) для всех f е Е(Н) в ориентированном случае, или (в) / € 5(у) для всех f е Е(Н) в неориентированном случае. Тогда (G, Я) имеет решение, если и только если выполняются разрезные условия. Доказательство. По лемме 19.6 задачу можно преобразовать так, чтобы граф Я состоял из набора параллельных ребер. В этом случае достаточность разрезных условий представляет собой переформулировку теоремы Менгера 8.9. ?
§ 19.2. Алгоритмы для задач о многопродуктовом потоке 539 § 19.2. Алгоритмы для задач о многопродуктовом потоке По определению задача о многопродуктовом потоке сводится к линейной программе полиномиального размера. Несмотря на то что отсюда вытекает существование полиномиального алгоритма, использовать этот алгоритм для решения больших экземпляров задачи на практике невозможно, поскольку число переменных в программе чрезвычайно велико. Описание в виде линейной программы (19.1), приведенное в лемме 19.1, выглядит даже хуже, поскольку число переменных в нем экспоненциально. Несмотря на это, как мы сейчас объясним, последнее представление оказывается намного полезнее на практике. Поскольку нас интересует лишь вопрос совместности задачи, рассмотрим линейную программу max{0y: у > О, My <и, Ny = Ъ) и двойственную к ней min{zu + wb: z>0, zM + wN > 0}. Последнюю мы можем переписать в виде min {zu + wb: z > 0, dist(G z) (5, t) > —w (/) для всех / = (t, s) e E (H)}. (В неориентированном случае следует заменить (t,s) на {t,s}.) В данной двойственной программе лишь |E(G)| + |Е(Н)| переменных, однако в ней содержится экспоненциальное число ограничений. Это, однако, не столь важно, так как задача отделения для нее сводится к |Е(Н)| вычислениям кратчайших путей. Поскольку имеет смысл рассматривать только неотрицательные векторы z, мы можем применить алгоритм Дейкстры. Если двойственная программа оказывается неограниченной, то отсюда следует несовместность прямой программы. В противном случае мы получаем оптимальное решение для двойственной программы, но остается неясным, как отсюда найти решение прямой задачи. Форд и Фалкерсон [18] предложили объединить предложенный выше прием с симплекс-методом, что непосредственно позволило найти решение для прямой задачи. Поскольку на каждой итерации симплекс-метода большинство переменных остаются нулевыми, следует помнить лишь о тех переменных, для которых условие неотрицательности ус > 0 не попадает в текущее множество активных строк J. Значения оставшихся переменных не хранятся явно, а вместо этого «порождаются» по мере надобности (в момент, когда условие неотрицательности становится неактивным). Выбор того, какая из переменных должна быть порождена на каждом шаге, эквивалентен задаче отделения для двойственной линейной программы, что в нашем случае сводится к задаче о кратчайших путях. Представленный метод генерации столбцов оказывается весьма эффективным на практике. Даже с учетом всех этих методов существует множество практических экземпляров задачи, которые не могут быть решены оптимально. Однако пред-
540 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути ставленная схема также приводит к приближенному алгоритму. Сформулируем вначале интересующий нас вопрос в виде задачи оптимизации. Maximum Multicommodity Flow (задача о максимальном многопродуктовом потоке) Дано: пара орграфов (G,H) с общим множеством вершин; пропускные способности ребер и: E(G) —> R+. Надо: найти семейство (*-0/€Е(н)> гДе Д™ каждого / = (t, s) е ?(Н) функция Xs представляет собой s-t-поток в G, ?/бЕ(Н) xf(e) < и(е) для всех е € Е(G) и общая величина потока ]?/€Е(н) value(x/) максимальна. Возможны и другие интересные формулировки задачи. Например, мы могли бы искать семейство потоков, для которых требования выполнены с наибольшим возможным корректирующим множителем (так называемая задача о конкурентных потоках), или семейство, для которого все требования выполнены, а ограничения по пропускным способностям нарушены в наименьшей степени. Более того, можно дополнительно вводить стоимости на ребрах. Мы же будем далее рассматривать исключительно задачу о максимальном многопродуктовом потоке; для других вариантов задачи оказываются применимы аналогичные методы. Снова запишем линейную формулировку задачи: maxj J]y(P):y^0, J] у (Р) < и(е) для всех е e?(G) 1. ^Ре?» Р€<3>:ееЕ(Р) ' Здесь 9 обозначает семейство s-t-путей в G для всех (t, s) €?(Н). Двойственная программа такова: min \ zu: z > 0, У, z(.e) ^ 1 Для всех Р € & \ • ^ ееЕ(Р) ' Опишем прямо-двойственный алгоритм, основанный на представленных формулировках, который задает вполне полиномиальную схему приближения. Данный алгоритм в процессе работы поддерживает вектор у > 0 в качестве решения прямой задачи. Это решение не обязано быть допустимым, поскольку мы разрешаем нарушать ограничения на пропускные способности. Вначале у = 0. В конце мы домножим вектор у на подходящую константу, чтобы удовлетворить ограничения. Для того чтобы представлять у эффективным образом, мы будем помнить семейство ??' с ^, состоящее из путей Р, для которых у(Р) > 0. В отличие от ??, размер семейства 9' будет полиномиально ограниченным. Алгоритм также поддерживает двойственный вектор z>0. Изначально имеем z(e) = 5 для всех е е Я (G), где 5 зависит от п и параметра ошибки е. На каждой итерации алгоритм находит двойственное условие, нарушенное в наибольшей мере (отвечающее кратчайшему s-t-пути для (t, 5) € Е(Н) относительно длин ребер z), и увеличивает значения z и у на. данном пути.
§ 19.2. Алгоритмы для задач о многопродуктовом потоке 541 Multicommodity Flow Approximation Scheme (схема приближения для задачи о мультипотоке) Вход: пара орграфов (G, Н) с общим множеством вершин; пропускные способности ребер и: E(G) —> R+ \ {0}; число е, удовлетворяющее ограничениям 0 < е < 1/2. Выход: такие числа у: & -> R+, что ^рез».- ее?(р) У №) ^ "(е) Д-7151 всех е e?(G). (Т) Присвоить у(Р) := 0 для всех РеЛ Присвоить 5 := (п(1 + е))_Г5/б^(1 + е) и z(e) := 5 для всех е е E(G). (2) Пусть Р е ^ —путь, для которого значение z(E(P)) минимально. If z(E(P)) > 1 then goto 0. (3) Пусть у := min u(e). Присвоить y(P) := y(P) + 7. ef=E(P) , er . Присвоить z{e) := z(e) (1 + —гт) для всех e e E(P). Goto (2). "leJ 0 Пусть ? := max -Ц- V y(P). w pG^:eGE(p) y(p) Присвоить y(P) := —-=— для всех Pg^. Данный алгоритм принадлежит Янгу [64], а также Гаргу и Кёнеману [25], и основан на более ранних работах Шахроки и Матулы [60], Шмойса [5] и др. Теорема 19.8 (Гарг и Кёнеман [25]). Алгоритм Multicommodity Flow Approximation Scheme строит допустимое решение, общая величина которого составляет не менее у—- OPT(G, Н, и). Время ее работы оценивается как o(—km{m + п log h) log п), где к = \Е(Н)\, п = \V(G)\ ит = |?(G)|. Таким образом, представленный алгоритм задает вполне полиномиальную схему приближения. Доказательство. На каждой итерации значение z{e) увеличивается на множитель 1 + е хотя бы для одного (критического) ребра е. Поскольку ребро е, для которого z{e) > 1, более не встречается ни на одном пути увеличения, общее число итераций составляет t < m\log1+e(l/5)]. На каждой итерации для определения пути Р нам нужно решить к экземпляров задачи о кратчайших путях с неотрицательными весами. Используя алгоритм Дейкстры (теорема 7.4), мы получаем общее время работы 0(tk(m + п log п)) = О (кт(т + п log п) log1+6 Q) ). Чтобы привести эту оценку к требуемому виду, заметим, что при 0 < е < 1 справедливо неравенство , (\\ log(l/5) ^ r5/e11og(2n) п(^%п\
542 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Здесь мы воспользовались неравенством log(l + е) > е/2, справедливым при 0<е<1. Нам также требуется убедиться, что максимальное число бит, нужных для хранения любого из чисел, возникающих в процессе вычисления, ограничено полиномом от log п + size (и) + size(e) + 1/е. Этот факт очевиден для переменных у. Число 5 может быть сохранено в о(^ size(n(l + e)) + size(e)) = o(-(logn + size(e))) битах. Рассмотрим переменные z. Можно считать, что ограничения и целые, в противном случае в самом начале их можно домножить на произведение знаменателей (см. утверждение 4.1). Тогда знаменатель переменных z в любой момент работы оказывается ограничен произведением пропускных способностей и знаменателем числа 5. Поскольку числитель не более чем в два раза превосходит знаменатель, получается, что размер всех интересующих нас чисел действительно полиномиален по размеру входа и 1/е. Допустимость получаемого решения гарантируется шагом 0. Заметим, что всякий раз, когда мы добавляем у единиц потока на ребре е, мы увеличиваем вес z{e) в (1 + еу/и{е)) раз. Данное значение не меньше (1 + е)г/"(е), поскольку для всех а, 0 < а < 1, справедливо неравенство 1 -I- еа > (1 + е)а (обе части данного неравенства равны при а € {0,1}, левая часть линейна по а, в то время как правая часть выпукла). Поскольку ребро е перестает использоваться, как только оказывается выполненным неравенство z{e) > 1, мы не можем пустить более u(e)(l + log1+6(l/5)) единиц потока по ребру е. Следовательно, ? < 1 + log1+e (i) = log1+e (l±i). (19.3) Обозначим через z® состояние вектора z после итерации i, и пусть Pt и yt обозначают путь Р и число у на итерации i. Мы имеем zVu = z(i-i)u + €YiYAz(i-1\e), откуда i J=l где a(z) := minPe^ z(E(P)). Положим Р := min{zu: z € R+(G), a(z) > l}. Тогда (s(0 -z(0))u > f3a{z{i) -s(0)), и, значит, (а(*ю) -5n)P < a(z(?) -z(0))j3 < (*m -z(0))u. Имеем i a(*w) < 5n + | J] r,a(za_1))- (19-4)
§ 19.2. Алгоритмы для задач о многопродуктовом потоке 543 Докажем теперь, что . t и ? ГЛ 5п + §^ЪФ°~г)) < Sne Pj=1 ' . (19.5) (Здесь е — основание натуральных логарифмов.) Для этого воспользуемся индукцией по L Случай i = 0 тривиален. При i > 0 из неравенства (19.4) и индуктивного предположения получаем i i-i (fSrJ j=i j=i Поскольку 1 + x < e* для всех x > 0, неравенство (19.5) доказано. В частности, из неравенств (19.4), (19.5) и условия окончания работы мы заключаем, что t 1 < a(z(t)) < 5пе '=1 , а значит, j=l Теперь заметим, что общая величина потока, построенного алгоритмом, равна С учетом доказанного выше и оценки (19.3) эта величина не меньше ^1пШ ры1+е) 1пШ ^е?) е in(^) /9Ь(1 + е) ([fl-l)ln(n(l + e)) /»(l-f)ln(l + e) е |"f"|ln(n(l + e)) е в силу выбора 5. Вспомним, что /3 — оптимальное значение двойственной программы, а значит, по теореме линейной двойственности 3.20, также и оптимальное значение прямой задачи. Более того, 1п(1 + ё)> е — е2/2 (это неравенство тривиально при е = 0, и производная левой части больше таковой для правой части для всех е > 0). Следовательно, (l-f)ln(l + e) еЛ_НЫ^]к!> 1 при е < 1/2. Итак, алгоритм находит решение, общая величина которого не меньше j^: OPT(G, Я, и). ? Другой алгоритм, который имеет ту же оценку сложности (однако более сложный анализ), был предложен ранее Григориадисом и Хачияном [26]. Флейшер [17]
544 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути улучшила время работы представленного алгоритма на множитель к. Она заметила, что на шаге (2) достаточно искать лишь приближенный кратчайший путь, а затем использовала этот факт для доказательства того, что нет необходимости выполнять вычисление кратчайшего пути для каждого ребра (t,s) е ?(Я) на каждой итерации. См. также работы Каракостаса [32], Мюллера, Радке и Фи- гена [45], Бьенстока и Ийенгара [10], Чудака и Элеутерио [14]. § 19.3. Наиболее разреженный разрез и MFMC-отношение Рассмотрим следующую обобщенную задачу о наиболее разреженном разрезе. Generalized Sparsest Cut (обобщенная задача о наиболее разреженном разрезе) Дано: экземпляр (С,Я, и, Ъ) неориентированной задачи о многопродуктовом потоке. Надо: найти такое множество X с V(G), что Ь(5Н(Х)) > 0 и отношение u(5G(X))/b(5H(X)) минимально. Частный случай, при котором Я представляет собой полный неориентированный граф и Ь(/) = 1 для всех / € Е(Я), называется задачей о наиболее разреженном разрезе. В ней требуется найти собственное непустое подмножество X u(5G(X)) множества вершин, для которого значение .-_. и/^>х „¦ минимально. Возникаю- \Х\ • \V{G)\X\ щий при этом частный случай неориентированной задачи о многопродуктовом потоке называется однородной задачей о многопродуктовом потоке. Минимальное значение выражения u(5G(X))/b(5H(X)), очевидно, является верхней оценкой на оптимум для экземпляра (G, Я, и, Ъ) задачи о конкурентных потоках. Последняя может быть записана в виде шах {А: у(Р) > 0 (Р € ^), J] у(Р) > АЬ(/) (/ € Е(Я)), 2] у(Р)<и(е) (ee?(G))[, (19.6) Ре&:е(=Е(Р) ' где @>f, f = {t, 5} е E (Я), — семейство s-t-путей в G и & = |J/€E(h) &f- Введем бинарные переменные ze е. {0,1} для всех е € E(G). По смыслу задачи z представляет собой характеристический вектор множества 5G(X). Тогда обобщенная задача о наиболее разреженном разрезе сведется к целочисленной нелинейной программе вида min{^: z б {0,1}*W>, w 6 {0,1}Е™, Ьтш > 0, >w(f) (Ре^./еЯСН))}. (19.7) 2>м e€?(P)
§ 19.3. Наиболее разреженный разрез и MFMC-отношение 545 Утверждение 19.9. Обобщенная задача о наиболее разреженном разрезе эквивалентна программе (19.7), а именно, их оптимальные значения совпадают, и для решения одной из них мы можем получить не худшее решение другой (и наоборот). Доказательство. Рассмотрим множество X с V(G), удовлетворяющее условию Ь(5Н(Х)) > 0. Обозначим через znw характеристические векторы 5G(X) и 5Н(Х) соответственно. Тогда {z, w) будет допустимым решением задачи (19.7) и uTz u(5G(X)) Ьтш Ь(5Н(Х)У Обратно, пусть пара (z, w) образует допустимое решение задачи (19.7). Обозначим через Хъ...,Хр связные компоненты графа (V(G), {е еE(G): z{e) = 0}). Имеем f>(SG№)) р n(5G(J0) tf < 2uTz _ uTz n ^ b(5„№)) * ^ * 2b^J " b^• D i=l Любое допустимое решение задачи (19.7) можно промасштабировать (умножением всех переменных на подходящую положительную константу) и превратить в допустимое решение программы minjuTz: z е R+(G), w e R+(H), bTw = 1, J] «(e) ^ w{J) (P e&f,fe E(H)) (19.8) при этом значение целевого функционала сохранится. Итак, программа (19.8) может рассматриваться как линейная релаксация задачи о наиболее разреженном разрезе. Лемма 19.10. Линейная программа (19.8) может быть решена за полиномиальное время. Доказательство. Если для некоторого ребра f = {t, s}sE(H) вершина t не достижима из 5 в G и Ь(/) > 0, то решение данной линейной программы тривиально и оптимум равен нулю. Иначе существует такое оптимальное решение {z, w), что u;(/)=dist(Gj2)(s, t) для Bcex/ = {t,s}eE(H). Добавим новые переменные d({a,b}) для всех пар вершин a,be V(G) и заменим ограничения ХееЕ(р)*(е) ^ ш(/)> гДе Ре^и/е Е(Н), на эквивалентные: d(e) < z{e) при е е Е (G), w(f) < d(/) при /€Е(Я) nd({a,c})<d({a,b})+d({b,c}) при a,b,ceV(G). К полученной линейной программе полиномиального размера применим теорему 4.18. ? Существует также и комбинаторная вполне полиномиальная схема приближения, аналогичная изложенной в § 19.2, поскольку программа (19.8) является двойственной к программе (19.6), а последняя отвечает задаче о конкурентных потоках (см. упражнение 5). Максимальное значение отношение оптимумов задач (19.7) и (19.8) называется MFMC-отношением (max-flow min-cut ratio) для экземпляра задачи о много-
546 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути продуктовом потоке. Даже в однородном случае (когда граф Н полный и Ъ = 1) данное отношение может достигать значений порядка 6(logn), где п = |У(С)|. Это можно показать с помощью графа-экспандера с единичными пропускными способностями (см. упражнение 6). В следующем параграфе мы покажем, что данное отношение не может быть меньше указанной границы. § 19.4. Теорема Лейтона — Рао Будем использовать решение {z, w) линейной программы (19.8) для построения разреженного разреза. Если решение (z, w) оптимально, то W := uTz представляет собой нижнюю оценку на разреженность ц(5с(Л0) xcv(G)\X\-\V{G)\X\' В дальнейшем часть w нам не понадобится. Следуя методу Лейтона и Рао [38], мы вначале разобьем наш граф на множества небольшого диаметра так, чтобы пропускная способность отвечающего этому разбиению мультиразреза была относительно малой. Лемма 19.11 (Лейтон и Рао [38]). Пусть G — неориентированный граф с весами ребер z: E(G) —> R+ и пропускными способностями и: ?(G) —> R+. Диаметром непустого множества X с V(G) называется значение m3xvu^xdist^Gz^u, и'). Пусть d > 0. Тогда множество V(G) может быть разбито на подмножества V\>..., Vk, диаметр каждого из которых не превышает d, так что общая пропускная способность ребер данного мулътиразреза не превышает (8W4ogn)/d, где W:=?eG?(G)u(eMe). Более того, данное разбиение можно построить за время O(mlogn), где n:=\V(G)\um:=\E(G)\. Доказательство. Рассмотрим вначале некоторые тривиальные случаи. Положим U := u(E(G)). Если U = 0 или d < (8Wlogn)/[/, то нам подойдет разбиение на одноэлементные подмножества. Если W = 0, то в качестве элементов разбиения можно взять связные компоненты графа (V(G), {е € E(G): z{e) = 0}). Иначе имеем W > 0 и е := 2W logп/Ш < -т. Положим z'{e) := \Uz(e)/W] для е € ?(G). Заметим, что ^eG?(G) z'(e)u(e) < 2t/. Применим теперь следующую процедуру, начав с i := 1 и G2 := G. Выберем вершину v{ G V(Gi). Для всех х е Z+ положим где В1 — множество вершин, лежащих в графе (Gb z') на расстоянии не более ? от вершины ut. Выберем наименьшее значение г( > 0, для которого U^+1 < 2eUlr. Положим Vt := Blr. Положим также Gi+1 := Gt — Vt, увеличим i и будем продолжать итерации, до тех пор пока не исчерпаем все вершины.
§ 19.4. Теорема Лейтона — Рао 547 В итоге получается разбиение V(G) = Vl U... и Vk. Для каждого i мы имеем ri ° п — 1 и, значит, 2^-2Ц. < [/; < ™- + V Z'(e)u(e) < Щ. п — 1 ri п — 1 4—J w v ' п — 1 e€E(G) Таким образом, г- < . Для любых двух вершин v, v' е V^ справедливы неравенства dist(GjZ)0,i/) < — dist(Gz/)(i;,i/) < < -^ (dist^^Ci/f, i/) + dist(G)Z0(z;f, у )J < — 2r{ < ^ = d. Кроме того, имеем "(5G|W)) = ^f+1"^ < (26-Щ< eUlri для i = 1,..., к. Суммируя, получаем к к u(5G(V1,...,yfc)) = 5]u(5Gi№))<^e^ = i=l i=l =e [ S+S E u(5g< (ip) <e f2U+S ^"w) <4et/- Описанная процедура может быть реализована аналогично алгоритму Дейкс- тры. На каждой итерации нам достаточно рассмотреть случай х = 0и значения х > 0, для которых 5G.(Blx) ф 5G.(B^_1). После каждого шага мы проверяем равенство г? = х. Если оно не выполнено, то вычисляем значение х' = х + 1 + UI Т-1 u(5Gi.(Bi))j Если 5G. (Br) остается неизменным при ? = х, х + 1,..., х', то х' — наименьшее целое число, для которого u(5Gi(В<,)) = u(8Gl(4)) < (2е -1) (К + (*' -x)u(5Gi (В*х))) = (2е -1)Ц.„ а значит, оно и является искомым значением г{. На итерации i алгоритм совершает 0{^weBi (1 + |5(ш)|)) действий, и, следовательно, время его работы (с использованием фибоначчиевых куч) составляет 0(m + nlogn). ? Теперь мы можем доказать основную теорему, принадлежащую Лейтону и Рао [38].
548 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Теорема 19.12. Пусть G — граф с весами ребер z: E(G) -> R+ и пропускными способностями и: E(G) —> R+. Предположим, что ^ dist(G)Z)(y,i/) = l. {u,Z/}G [ 2 J Обозначим п := \V(G)\. Тогда существует такое непустое собственное подмножество X с V(G), что |x|1nG)U[<36Wlogn' где, как: и ранее, W := Xee?(G) и(е)я(е). Доказательство. Применим вначале лемму 19.11, положив d = 1/п2. Получим разбиение V(G) = Уг и... и Vk. Если ни одно из множеств Vl9...9Vk не содержит более 2п/3 вершин, то будем последовательно объединять два наименьших множества, до тех пор пока их не останется два. Обозначим получившиеся множества через X и V(G)\X. Тогда \X\-\V(G)\X\>l-f и ц(5(Х)) < и(5(Уъ..., Vfc)) < 8 ^^ = 8 Wn2 logn, и, значит, OTnSbi<36Wlog"' как и требовалось. В противном случае одно из этих множеств, скажем Vl9 содержит более 2п/3 вершин и имеет диаметр не более 1/п2. Пусть В% — множество вершин, находящихся от множества Vj на расстоянии не более ?. Тогда Г |Be|.|V(G)\B5|d§>|V1| Г \V(G)\B^\d^ = \V1\YidistiGtZ)(v,V1) = >о do vsvlG) = W^1 S (dist(G,-) (y' yi) + dist(G,,) («Л Vi)) > ^S E (dist(G,z)(y,u/)-d) = <*">« (T) = 2n(n-l)' -^CHS^-sShrW^J.
§ 19.5. Ориентированная задача о реберно непересекающихся путях 549 Получаем eeE(G) BsCV(G) и ,BU^\Bl<3ff. ? Следовательно, существует такое значение ? > О, что ц(Дс(В^)) \Bz\-\V(G)\B;\ Теперь все готово для доказательства основной теоремы. Теорема 19.13 (Лейтон и Рао [38]). Существует О (log п)-приближенный алгоритм для задачи о наиболее разреженном разрезе, и MFMC-отношение для однородной задачи о многопродуктовом потоке составляет O(logn), где п = \V(G)\. Доказательство. Для заданного экземпляра (G, и) потоковой задачи применим лемму 19.10 и получим решение (z, w) задачи ЛП. Без ограничения общности можно считать, что ш(/) = dist(Gz)(s,t) для всех / = {t,s} е Е(Н). Применим теперь теорему 19.12 к сети (G, и) и весам z. Доказываемые утверждения следуют из того, что W представляет собой оптимум линейной программы, а значит, служит оценкой снизу на оптимальное значение в потоковой задаче. ? Данный результат был обобщен на общий случай неориентированной задачи о многопродуктовом потоке в работах Линиала, Лондона и Рабиновича [39], а также Аумана и Рабани [6]; в общем случае MFMC-отношение составляет 0(log|E(H)|). Качество приближения (упомянутое в первой части доказанной теоремы) было улучшено до 0(y/logri) в работах Ароры, Рао и Вазирани [7] с помощью техники полуопределенного программирования. Более эффективные алгоритмы с той же точностью были предложены Аророй, Хазаном и Кале [8], а также Шерманом [61]. Алгоритм для задачи о наиболее разреженном разрезе может быть использован при построении приближенных алгоритмов «разделяй и властвуй» для многих задач оптимизации на графах (см. упражнение 8). Подробный список примеров и ссылок для дальнейшего изучения содержится в работах Лейтона и Рао [38], а также Шмойса [5]. § 19.5. Ориентированная задача о реберно непересекающихся путях Прежде всего заметим, что задача оказывается NP-трудной даже при весьма сильных ограничениях. Теорема 19.14 (Эвен, Итаи и Шамир [15]). В случае, когда граф G ациклический, а Н состоит их двух наборов параллельных ребер, ориентированная задача о реберно непересекающихся путях является NP-трудной,
550 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Рис. 19.3 Доказательство. Рассмотрим экземпляр задачи выполнимости и преобразуем его (полиномиально) в потоковую задачу рассматриваемого вида. А именно, пусть задано семейство i2f = {Z1?...,Zm} клауз над множеством переменных X — {хъ ..., хп}. Построим экземпляр (G, Я) ориентированной задачи о реберно непересекающихся путях, в котором граф G будет ациклическим, а Я состоит из двух наборов параллельных ребер. При этом потоковая задача для (G, Я) будет иметь решение, если и только если ^f будет выполнимым. Граф G будет содержать 2т вершин Я1,...,А2т для каждого литерала А, а также дополнительные вершины s и t, иг,...,ип+1 и Z1}...,Zm. В нем будут ребра (yi9 х}), (pi9 х}), (**", vM), (x?m, vi+1), (х(, x/+1) и (х/, x/+1) для i = 1,..., п и ; = 1, ...,2m — 1. Кроме того, в нем будут ребра (s,*^-1) и (s,jc2j_1) для i = 1,..., п и ; = 1,..., т. Наконец, в графе будут присутствовать ребра (Z,, t) и (A2j, Zj) для j = 1,..., т и всех литералов А, содержащихся в клаузе Z;. Пример построения приведен на рис. 19.3. Пусть Я состоит из ребра (vn+i, v{) и т параллельных копий ребра (t, 5). Покажем, что любое решение для (G,H) отвечает истинностной оценке, для которой все клаузы оказываются выполненными (и обратно). А именно, Щ-ип+гпУТЪ должен проходить или через все вершины х[ (это означает, что переменная xt ложна), или через все вершины х3{ (это означает, что переменная
§ 19.5. Ориентированная задача о реберно непересекающихся путях 551 xt истинна) для всякого L Через каждую из вершин Z; должен пройти ровно один s-t-путь. Это возможно, если и только если указанная выше истинностная оценка делает клаузу Z; истинной. ? Форчун, Хопкрофт и Уилли [20] показали, что ориентированная задача о реберно непересекающихся путях может быть решена за полиномиальное время в случае, если граф G ациклический и |?(Н)| = к для некоторого фиксированного к. Если G не является ациклическим, то, как они показали, задача оказывается NP-трудной даже в случае \Е(Н)\ = 2. С другой стороны, справедливо следующее утверждение. Теорема 19.15 (Нэш-Вильямс [46]). Пусть (G,H)—экземпляр ориентированной задачи о реберно непересекающихся путях, причем граф G + Н эйлеров, а Н состоит лишь из двух наборов параллельных ребер. Тогда экземпляр (G, Н) имеет решение, если и только если выполняются разрезные условия. Доказательство. Вначале воспользуемся теоремой Менгера 8.9 и найдем множество путей, отвечающих первому из наборов параллельных ребер в Я. После удаления этих путей (и соответствующих ребер требований) мы получим экземпляр задачи, для которого справедливы условия предложения 8.12. Следовательно, данный экземпляр имеет решение. ? Используя лемму 19.6, мы можем распространить приведенное выше рассуждение на случай, когда множество Е(Н) может быть разбито на два подмножества, в каждом из которых есть лишь одна вершина с ненулевой входящей степенью либо лишь одна вершина с ненулевой исходящей степенью. Если граф G + Н эйлеров и |?(Н)| = 3, то также существует полиномиальный алгоритм (Ибараки и Поляк [31]). С другой стороны, известен следующий отрицательный результат. Теорема 19.16 (Фиген [62]). Ориентированная задача о реберно непересекающихся путях является NP-трудной в случае, если граф G ациклический, граф G + H эйлеров и Н состоит из трех наборов параллельных ребер. Доказательство. Мы сведем задачу из теоремы 19.14 к рассматриваемой задаче. Итак, пусть (G, Я) — экземпляр ориентированной задачи о реберно непересекающихся путях, в которой граф G ациклический, а Н состоит из двух наборов параллельных ребер. Для каждой вершины и € V(G) положим a(v) := max(0, |5++H(i;)| - |5"+H(i;)|), j8(i/) := max(0, \S^H(u)\ - |5^H(i/)|). Имеем ]>>(i;) - 0(u)) = ? (|5++H(u)| 45^)0 = °> veV(G) i»€V(G) следовательно, yeV(G) v<=V(G)
552 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Построим теперь экземпляр (G' Я') ориентированной задачи о реберно непересекающихся путях. Граф G' будет получаться из G добавлением двух вершин s и t, а также a{v) параллельных ребер (s, и) и /3(и) параллельных ребер (i>, t) для каждой вершины v. Граф Я' будет содержать все ребра графа Я и q дополнительных параллельных ребер (t,5). Данное построение, очевидно, можно выполнить за полиномиальное время. В частности, число ребер в G + Я при этом увеличивается не более чем в 4 раза. Более того, граф G' оказывается ациклическим, граф G/ + Я' эйлеровым, и Я' состоит из трех наборов параллельных ребер. Осталось показать, что задача (G, Я) имеет решение, если и только если задача (G' Я') имеет решение. Из существования решения для (G' Я') следует существование решения для (G,H): достаточно удалить s-t-пути. Итак, пусть &—решение задачи (G,H). Пусть G" — граф, получающийся из G' удалением всех ребер, использованных путями из 2?. Пусть Я" — подграф графа Я' состоящий из q ребер, идущих из вершины t в вершину s. Тогда задача (G" Я") удовлетворяет условиям утверждения 8.12 и, значит, имеет решение. Объединяя 9 с решением задачи (G",#/7), мы получаем требуемое решение задачи (G' Я7). ? Поскольку в графе G + H решение ориентированной задачи о реберно непересекающихся путях может рассматриваться как набор реберно непересекающихся циклов, естественно задаться вопросом, как много реберно непересекающихся циклов может быть в заданном орграфе. Для случая планарных орграфов данный вопрос допускает хорошую характеризацию. А именно, рассмотрим планарно двойственный граф. Для него задача сводится к нахождению максимального числа реберно непересекающихся разрезов. В двойственном орграфе решение описывается следующей широко известной минимаксной теоремой (доказательство которой мы проведем аналогично теореме 6.14). Теорема 19.17 (Луккези и Янгер [42]). Рассмотрим связный (но не обязательно сильно связный) орграф G. Тогда максимальное число реберно непересекающихся ориентированных разрезов в G совпадает с минимальным размером множества ребер, которое содержит хотя бы одно ребро из всякого ориентированного разреза. Доказательство. Рассмотрим матрицу А, в которой столбцы отвечают ребрам графа, а строки представляют собой характеристические векторы всевозможных ориентированных разрезов. Рассмотрим линейную программу min{Ux: Ах > И, х > 0}, и двойственную к ней max{Uj: уА < И, у > 0}. Покажем, что прямая и двойственная линейные программы имеют целые оптимальные решения. Согласно следствию 5.15 достаточно показать, что система Ах > И, х > 0 обладает свойством TDI. Воспользуемся леммой 5.23. Рассмотрим веса с: E(G) —> Z+, и пусть у — такое оптимальное решение задачи max{Uy: уЛ < с, у> 0}, что выражение
§ 19.5. Ориентированная задача о реберно непересекающихся путях 553 J]y54x)\X\2> (19-9) X в котором суммирование производится по всем строкам матрицы А, принимает максимальное значение. Докажем, что система множеств (V(G),^), где & \— {X: У5+(х) > ОЬ является бескроссинговой. Для доказательства рассмотрим такие элементы X, Y е &, что X n Y ф 0, X\Y ф 0, Y\X ф0иXUYф V(G). Тогда 5+(Х П У) и 5+(Х U У) также являются ориентированными разрезами (по лемме 2.1(6)). Пусть в := min{y5+(X), У5+(у)}- Положим у'б+ос):= Убчх) - е> y's+m := У5+т - е> У5+(ХГ\?) 1= У5+(ХП?) + ^. У'бЧХиУ) 1= У5+(ХиУ) + е и y's := ys для всех остальных ориентированных разрезов S. Поскольку вектор у' является допустимым двойственным решением, он также оптимален. Это противоречит выбору у, поскольку значение (19.9) оказывается больше для вектора у'. Пусть теперь А' — подматрица матрицы Л, состоящая из строк, отвечающих элементам множества ^. Тогда Л/ является двусторонней матрицей инцидентности разрезов для бескроссингового семейства. Следовательно, по теореме 5.28 матрица А' является тотально унимодулярной, что и требовалось доказать. ? Комбинаторное доказательство утверждения содержится в работе Ловаса [41]. Франк [22] также приводит алгоритмическое доказательство. Заметим, что множества ребер, пересекающиеся со всеми ориентированными разрезами, в точности совпадают с множествами ребер, стягивание которых превращает орграф в сильно связный. В случае планарно двойственного орграфа эти множества соответствуют множествам ребер, пересекающих все ориентированные циклы. Они известны под названием множества ребер обратной связи (feedback edge sets). Минимальный размер множества ребер обратной связи называется числом обратной связи (feedback number) графа. Задача определения числа обратной связи в общем случае является NP-трудной (Карп [33]). По-видимому, трудна также задача аппроксимации этого числа (Гурусвами и др. [27]). Данная задача, однако, может быть точно решена за полиномиальное время для планарных орграфов. Следствие 19.18. В планарном орграфе максимальное число реберно непересекающихся циклов совпадает с минимальным размером множества ребер, пересекающих все циклы. Доказательство. Пусть G — орграф, который без ограничения общности можно считать связным и не содержащим точек сочленения. Рассмотрим планарно двойственный орграф для G. Применим к нему следствие 2.44 и теорему Лукке- зи—Янгера 19.17. ? Полиномиальный алгоритм для вычисления числа обратной связи для планарных орграфов получается в результате комбинации алгоритма построения планарного вложения (теорема 2.40), алгоритма Грётшеля—Ловаса — Скрейвера (см. теорему 4.21) и алгоритма для задачи о максимальном потоке, используемого
554 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути для решения задачи отделения (см. упражнение 10). Отметим следующее приложение полученных результатов к задаче о реберно непересекающихся путях. Следствие 19.19. Пусть (G, Я) — экземпляр ориентированной задачи о реберно непересекающихся путях, в котором граф G ациклический, а граф G + Я планар- ный. Тогда (G, Я) имеет решение, если и только если удаление любого набора из |Е(Я)| ~ 1 ребер в графе G + H не делает его ациклическим. ? В частности, условия расстояний являются необходимыми и достаточными, и задача может быть решена за полиномиальное время. § 19.6. Неориентированная задача о реберно непересекающихся путях Между ориентированной и неориентированной версиями задачи существует взаимосвязь, описываемая следующей леммой. Лемма 19.20. Пусть (G, Я) —экземпляр ориентированной задачи о реберно непересекающихся пуптх, причем граф G ациклический, a G + H эйлеров. Рассмотрим экземпляр (G7, Я7) неориентированной задачи о реберно непересекающихся путях, получающийся из (G, Я) снятием ориентации с ребер. Тогда всякое решение задачи (G' Я7) также является решением задачи (G, Я) и обратно. Доказательство. Очевидно, что всякое решение задачи (G, Я) также является решением задачи (G' Я'). Для доказательства обратного утверждения применим индукцию по |E(G)|. Если в G нет ребер, то утверждение тривиально. Пусть 9—решение задачи {Gf,H'). Поскольку граф G ациклический, он содержит такую вершину и, что 5^(и) = 0 и 5J (у) Ф 0. Учитывая, что граф G-\-H эйлеров, получаем |5~(у)| = \5+(v)\ + \5+(v)\. Дяя каждого ребра требований, инцидентного вершине v, в 9 должен присутствовать неориентированный путь, начинающийся в v. Поэтому |5j(z;)| > ** |5^(f)| + \5^(v)\. Отсюда вытекает, что |5^(i;)| = 0 и |5?(i0| = |5^(i0|. Следовательно, каждое ребро, инцидентное v, должно проходиться соответствующим путем из 9 в правильном направлении. Пусть теперь G: — граф, получающийся из G удалением ребер, инцидентных v. Получим граф Нг из графа Я следующим образом. Рассмотрим ребро / = (t, и), инцидентное и. Обозначим через w первую внутреннюю вершину пути из 9, отвечающего /. Тогда при t ф w заменим / на (t, w), а в случае t = w удалим /. Граф Gl9 очевидно, является ациклическим, а граф Ga + Нг—эйлеровым. Пусть набор 9г получается из 9 удалением всех ребер, инцидентных v. Тогда 9\ представляет собой решение для экземпляра неориентированной задачи (СрЯ(), отвечающего (G1,Hl). По предположению индукции 9г также является решением задачи (Gj^j). Тогда, добавляя начальные ребра, мы заключаем, что 9 служит решением задачи (G,H). ?
§ 19.6. Неориентированная задача о реберно непересекающихся путях 555 Из доказанного вытекает следующий факт. Теорема 19.21 (Фиген [62]). Неориентированная задача о реберно непересекающихся путях является NP-трудной даже в случае, когда граф G + H эйлеров, а Н состоит из трех наборов параллельных ребер. Доказательство. Сведем задачу, указанную в теореме 19.16, к неориентированной с помощью леммы 19.20. ? Другой частный случай, в котором неориентированная задача о реберно непересекающихся путях оказывается Л/Р-трудной, возникает, если потребовать, чтобы граф G-1-Я был планарным (Миддендорф и Пфейффер [44]). Однако если потребовать от графа G + H планарности и эйлеровости, то задача оказывается полиномиально разрешимой. Теорема 19.22 (Сеймур [59]). Пусть (G,H)—экземпляр неориентированной задачи о реберно непересекающихся путях, в котором граф G + Н является планарным и эйлеровым. Тогда задача (G, Я) имеет решение, если и только если выполнены разрезные условия. Доказательство. Нам нужно лишь показать достаточность разрезных условий. Можно считать, что граф G -h Я связный. Пусть D — планарно двойственный граф для G + H. Пусть F с E(D) — множество двойственных ребер, отвечающих ребрам требований. Тогда разрезные условия совместно с теоремой 2.43 показывают, что для любого цикла С в D справедливо неравенство |Fn?(C)| < \Е(С) \F\. Следовательно, по предложению 12.8 множество F образует минимальное Г-со- единение, где Г := {х € V{D): \F П 5(х)\ нечетно}. Поскольку граф G + H эйлеров, по следствию 2.45 граф D двудольный, следовательно, по теореме 12.16 существуют |F| реберно непересекающихся Г-раз- резов Съ ..., C|F|. Поскольку по предложению 12.15 всякий Г-разрез пересекает F, каждый из разрезов Съ ..., C\F\ должен содержать ровно одно ребро из F. Вернемся к графу G + H. Множества ребер, двойственных к Сг,..., C|F|, представляют собой реберно непересекающиеся циклы, каждый из которых содержит ровно одно ребро требований. Это, однако, означает, что мы получили решение задачи о реберно непересекающихся путях. ? Из доказанной теоремы вытекает существование полиномиального алгоритма для рассматриваемой задачи (см. упражнение 15). Более того, в работе Мацумото, Нисидзеки и Сайто [43] было доказано, что неориентированная задача о реберно непересекающихся путях для планарного и эйлерова графа G + Н может быть решена за время 0(n5/2logn). Себе [58] показал, что для любого фиксированного целого числа к неориентированная задача о реберно непересекающихся путях может быть решена за полиномиальное время, если граф G + H планарный, а Я состоит из к наборов параллельных ребер. Другой известный результат, показывающий полиномиальную разрешимость задачи при определенных предположениях, — теорема Окамуры — Сеймура.
556 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Теорема 19.23 (Окамура и Сеймур [49]). Пусть (G,H)—экземпляр неориентированной задачи о реберно непересекающихся путях, причем граф G + H эйлеров, граф G планарный, а все терминалы лежат на внешней грани. Тогда задача (G, Н) имеет решение, если и только если выполняются разрезные условия. Доказательство. Покажем достаточность разрезных условий индукцией по |V(G)| + |?(G)|. Если |V(G)| < 2, то утверждение очевидно. Можно считать, что граф G является 2-связным, поскольку иначе можно применить индуктивное предположение к блокам G. (Ребра требований, соединяющие различные блоки G, при этом придется подразбить, используя в качестве точек подразбиения точки сочленения G.) Фиксируем некоторое планарное вложение для G. Согласно утверждению 2.31 внешняя грань будет ограничена некоторым циклом С. Назовем множество X с V(G) критическим, если 0 ф X П V(C) Ф V(C) и |адо1 = |адо|. Если критических множеств нет, то для любого ребра е € Е(С) экземпляр (G — е, Н + е) удовлетворяет разрезным условиям. Действительно, значение I^gPOI — \8н(Ю\ четно для всех X с V(G) (поскольку граф G + Н эйлеров). По индуктивному предположению экземпляр (G — е, Н + е) имеет решение, откуда немедленно следует наличие решения для задачи (G, Я). Итак, предположим, что критическое множество существует. Нам потребуется следующий результат. Утверждение. Пусть G' — связный подграф графа G, и пусть Н' — произвольный граф, все концы ребер которого лежат в У (С). Положим fc:=min{|5G,(y)|-|5H,(7)|:0^7cV(G)}G{-2,O}. Тогда существует такое множество X с V(G), что С[Х] образует путь и \5G,(X)\-\5H,(X)\ = k. Для доказательства данного утверждения рассмотрим такое непустое подмножество X с V (G), что 15G/ (X) | — | бн/ (X) | = к и общее число связных компонент в G'[X] и G'[V(G)\X] минимально. Покажем вначале, что оба подграфа G'[X] и G'[V(G)\X] являются связными. Предположим противное, т.е. пусть, скажем, граф GX[X] не связен (второй случай симметричен данному) и содержит связные компоненты Х1,...,Х1. Тогда i k = \5G,(X)\-\5H,(.X)\>Yi{\SG<(.Xi)\-\5H,(Xi)\), 1=1 и, значит, |5G(X;)| — |5HC?Q)| = к для некоторого i е {1,..., I}. В этом случае, заменяя X на Х{, мы уменьшаем число связных компонент в G'[X], не увеличивая при этом число связных компонент в Gf\V(G) \Х]. Это противоречит выбору X. Итак, подграфы G'[X] и G'[V(G)\X] (а значит, также G[X] и G[V(G)\X]) являются связными. Заметим, что 0фХС\У{С)фУ(С), поскольку \5иОО\ = \5&т\-к>\5е(Х)\>0.
§ 19.6. Неориентированная задача о реберно непересекающихся путях 557 Рис. 19.4 Так как граф G планарный, С[Х] представляет собой путь. Утверждение доказано. Применим его к графам G и Я. Пусть X — критическое множество, для которого С[Х] представляет собой путь минимальной длины. ( Обозначим вершины графа С через vlt...,Vi (перечисляя их в порядке следования по циклу), где V(C) П X = {иъ ..., Vj). Положим е := := {fz,Ui}. Выберем такое ребро / = {vb vk} е Е(Н), что 1 < i < ; < к < I (т. е. ut е X, vk ? X) и значение fc максимально возможное (см. рис. 19.4). Теперь рассмотрим графы G' := G — е и Hf := :=(УШ)ЛЕШ)\{Я)и{{и1,и1},&1,ик}}). (Случаи i = 1 и fc = I также возможны; при этом, однако, мы не станем добавлять петель.) Докажем, что экземпляр (G', Я') удовлетворяет разрезным условиям. Тогда по индуктивному предположению задача (G' Н') имеет решение, которое может быть легко преобразовано в решение задачи (G,H). Предположим теперь, что (G',H') не удовлетворяет разрезным условиям, т.е. |бс>(У)| < |бн/(У)| для некоторого подмножества У с V(G). По доказанному можно считать, что С [У] образует путь. При необходимости меняя местами Y и V(G) \ У, мы можем также считать, что ut ? Y. Поскольку \5H'(Y)\ - \8&<У)\ > 0 = |б„(У)| - |5G(F)|, возможны три случая: (а) щ € У, vif vki v{ ? У; (б) v1,vleY, viyvk(?Y; (в) vx G У, vl3 ui9 uk i У В каждом из этих случаев У П У(С) с {vk+1,..., i^-iL откуда согласно выбору / имеем ЕН(Х, У) = 0. Более того, |5С(У)| = |5Н(У)|. Применяя лемму 2.1(b) дважды, получаем |5Н(Х)| + \8Н(Х)\ = |5G(X)| + |5G(7)| = = \5G(XnY)\ + \5G(XuY)\ + 2\EG(X,Y)\> >\5H(XnY)\ + \5H(XuY)\+2\EG(X,Y)\ = = \5H(X)\ + \5H(Y)\-2\EH(X, 7)| + 2|EG(X, Y)\ = = |5H(X)| + |5H(7)| + 2|?G(X,7)| > \5H(X)\ + \5H(Y)\. Следовательно, все указанные неравенства обращаются в равенства. Значит, |5о(ХПУ)| = |5н(ХПУ)|иЕс(Х,У)=0. Итак, случай (в) невозможен (поскольку е е. EG{X, У)); т. е. иг е У. Значит, пересечение X П У непусто, и С[ХПУ] —более короткий путь, чем С[Х], что противоречит выбору X. ?
558 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Из представленного доказательства вытекает полиномиальный алгоритм (см. упражнение 16), решающий неориентированную задачу о реберно непере- секающися путях для рассмотренного частного случая. При подходящей реализации время работы данного алгоритма будет составлять 0(п2) (Беккер и Мель- хорн [9]). В статье Вагнер и Вейе [63] время работы было улучшено до линейного. Франк [23] получил полиномиальный алгоритм для случая, когда условие эйлеровости графа G + H ослаблено до требования четности |5G+H(iO| в вершинах и, не лежащих на внешней грани. Однако условия эйлеровости не могут быть полностью отброшены. Теорема 19.24 (Шверцлер [57]). Неориентированная задача о реберно непере- секающися путях является NP-трудной в случае, если граф G планарный, а все терминалы лежат на внешней грани. Нейвз [2] усилил данный результат, дополнительно потребовав, чтобы граф Я состоял из двух наборов параллельных ребер. Эти результаты о А/Р-полноте также справедливы для случая, когда G представляет собой планарный ациклический орграф. Перед тем как изложить еще один важный результат данного параграфа, мы изучим теорему, касающуюся ориентации смешанных графов, т. е. графов, в которых присутствуют как ориентированные, так и неориентированные ребра. Пусть задан смешанный граф G. Можно ли так направить все его неориентированные ребра, что получившийся орграф будет эйлеровым? Ответ на этот вопрос содержится в следующей теореме. Теорема 19.25 (Форд и Фалкерсон [19]). Пусть G — неориентированный граф, а Н — ориентированный граф, причем V(G) = V(H). Тогда G допускает такую ориентацию G', что орграф G' + Н является эйлеровым, если и только если • 1<5?(у)| + |5^(у)| + \5G(v)\ четно для всех и е V(G) и • |б+(Х)| - \5~{Х)\ < |5G(X)| для всех X с V(G). Доказательство. Необходимость данных условий очевидна. Докажем их достаточность индукцией по |?(G)|. Если E(G) = 0, то утверждение тривиально. Предположим, что G и Н удовлетворяют упомянутым условиям и Е(G) ф 0. Покажем, как превратить некоторое неориентированное ребро е в ориентированное ребро е' таким образом, чтобы графы G—е и Н + е' удовлетворяли указанным условиям. Поскольку степени всех вершин четны, значение |5G(X)| — — (|<5+(Х)| — |5~(Х)|) должно быть четным для всех X с V(G). Данное значение уменьшается на 2, если е' выходит из X, и не меняется в противном случае. Учитывая вышесказанное, назовем множество X критическим, если |5G(X)| = |5^(X)|-|5-(X)|>0. Если критического множества не существует, то придадим произвольное направление любому неориентированному ребру и применим индуктивное предположение. В противном случае пусть X — произвольное критическое множество, и пусть е е 5G(X). Направим ребро е так, чтобы получившаяся при этом дуга
§ 19.6. Неориентированная задача о реберно непересекающихся путях 559 е входила в X. Докажем, что вышеуказанные условия продолжают оставаться истинными. Предположим противное, а именно, пусть существует такое подмножество Y с V(G), что |5++5(У)| - |5~+5(Y)| > |5G_e(7)|. Отсюда следует, что Y было критическим, до того как мы направили е, и е теперь выходит из Y. Применяя лемму 2.1(a) и (б) к функциям \5^\ и \5~\, а также лемму 2.1(b) к |5Н|, мы получаем (до того как ребро е было превращено в ориентированное) 0 + 0 = |5с(Х)|-|5^(Х)| + |5-(Х)| + |5н(Х)|-|5^(7)| + |5-(У)| = = \5G(XnY)\-\5+(XnY)\ + \5-(XnY)\ + \5G(XuY)\-\5+(XUY)\ + + \5-(XuY)\ + 2\EG(X,Y)\>0 + 0 + 2\EG(X,Y)\>0. Следовательно, все приведенные выше неравенства обращаются в равенства, и EG{X, У) = 0, что противоречит существованию ребра е. ? Следствие 19.26. Ребра всякого неориентированного эйлерова графа могут быть ориентированы так, что получится эйлеров орграф. ? Конечно же, данное следствие может быть доказано намного проще. А именно, достаточно построить эйлеров маршрут в исходном неориентированном графе и ориентировать ребра вдоль него. Вернемся теперь к задаче о реберно непересекающихся путях. Теорема 19.27 (Ротшильд и Уинстон [54]). Пусть {G,H) — экземпляр неориентированной задачи о реберно непересекающися путях, в котором граф G + Я эйлеров, а Я представляет собой объединение двух звезд (т. е. существуют две вершины, инцидентные всем ребрам требований). Тогда (G,H) имеет решение, если и только выполняются разрезные условия. Доказательство. Покажем, что разрезные условия являются достаточными. По лемме 19.6 можно считать, что Я содержит лишь два набора параллельных ребер. Отметим, что данное преобразование сохраняет свойство эйлеровости графа G + H. Ориентируем теперь ребра графа Я произвольным образом так, чтобы параллельные ребра имели общее направление (и обозначим результат через Я'). Графы Я' и G удовлетворяют условиям теоремы 19.25, поскольку из разрезных условий вытекают неравенства |5+,(Х)| — \5~,(Х)\ < |5G(X)|, справедливые для всех X с V(G). Следовательно, все ребра графа G можно ориентировать так, чтобы получился орграф G', для которого граф G' + И' будет эйлеровым. Будем рассматривать (G', Я') как экземпляр ориентированной задачи о реберно непересекающихся путях. Отметим, что (G7, Я') удовлетворяет (ориентированным) разрезным условиям, поскольку для всех X с V(G) мы имеем 2|5+(X)| = |5G(X)| + (|5+(X)|-|5-,(X)|) = |5G(X)| + (|5-,(X)|-|5+,(X)|)> > \5Н(Х)\ + (|б-,(Х)| -15+ (Х)\) = 2\5-,(Х)\. Но тогда из теоремы 19.15 вытекает наличие решения, которое (после снятия ориентации) также будет решением задачи (G, Я). ?
560 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Аналогичная теорема справедлива в случае, если граф Н (после снятия направлений с ребер) совпадает с К4 или С5 (циклом длины 5) (Ломоносов [40], Сеймур [55]). В случае Н = К5 достаточными будут условия расстояний (Карза- нов [34]). См. также работу Хираи [29]. Однако если в если в графе Я присутствуют хотя бы три набора параллельных ребер с попарно различными концами, то, как мы знаем из теоремы 19.21, задача становится NP-трудной. С другой стороны, Робертсон и Сеймур нашли полиномиальный алгоритм для случая, когда число ребер требований ограничено. Теорема 19.28 (Робертсон и Сеймур [53]). Для всякого фиксированного значения к существует полиномиальный алгоритм, решающий неориентированную задачу о вершинно непересекающихся путях и неориентированную задачу о реберно непересекающихся путях для случая, когда \Е(Н)\ < к. Отметим, что неориентированная задача о вершинно непересекающихся путях также является NP-трудной; см. упражнение 27. Теорема 19.28 является одним из множества результатов, полученных Робертсоном и Сеймуром в серии работ о минорах графов. Их обсуждение, однако, далеко выходит за рамки настоящей книги. Вышеуказанная теорема была доказана для случая вершинно непересекающихся путей. Для него Робертсон и Сеймур показали, что либо в графе присутствует избыточная вершина (удаление которой не нарушает разрешимости), либо граф допускает древесную декомпозицию небольшой ширины (в последнем случае существует простой полиномиальный алгоритм; см. упражнение 26). Данный результат является весьма глубоким и нетривиальным, однако впоследствии Каварабаяси и Воллан [36] нашли существенно более короткое доказательство. Случай реберно непересекающихся путей легко следует из рассмотренного выше; см. упражнение 27. Несмотря на то что время работы алгоритма составляет 0(п2т), константа в данной оценке зависит от к и растет чрезвычайно быстро. В частности, метод оказывается непрактичным уже при к = 3. Недавно Каварабаяси, Кобаяси и Рид [35] улучшили время работы до 0{п2). Упражнения 1. Пусть (G,H)— экземпляр (ориентированной или неориентированной) задачи о реберно непересекающихся путях, для которой при некоторой функции z: E(G) —> R+ нарушаются условия расстояний (19.2). Докажите, что тогда существует функция z: E(G) —> Z+, для которой нарушается неравенство (19.2). Кроме того, постройте примеры экземпляров, для которых не существует функции z: E(G) —> {0,1}, нарушающей неравенство (19.2). 2 (Себе [неопубликовано]). Покажите, что распознавание того, удовлетворяет ли заданный экземпляр (G, Я) неориентированной задачи о непересекающихся путях разрезным условиям, является NP-трудным. Указание. Постройте полиномиальное сведение от следующей задачи. Пусть заданы неориентированный граф G' и подмножество X с V(G'). Требуется найти подмножество Y с У (GO, для которого |5G/(7)| > |5G/(X)|, либо выяснить, что
Упражнения 561 такого подмножества Y не существует. Данная задача является NP-трудной по теореме 16.6. Далее возьмите Е{Н) := 5G/(X) и E(G) := E(G') \5(Х). Замечание. Рассмотренная задача, очевидно, лежит в классе coNP, однако неизвестно, является ли она coNP-полной. 3. Рассмотрим фиксированное число к е N. Покажите, что по заданному экземпляру (G, Я, и, Ь) (ориентированной или неориентированной) задачи о многопродуктовом потоке, (а) содержащему не более fc терминалов; (б) в котором Я имеет вершинное покрытие размера fc, можно выяснить за полиномиальное время, выполняются ли разрезные условия. 4* (Рагхаван и Томпсон [51]). Пусть задан экземпляр (G,H) неориентированной задачи о реберно непересекающихся путях. Рассмотрим релаксацию для задачи о многопродуктовом потоке и решим линейную программу min{A: AeR,yS*0, My < АН, Ny = l}, где М и N определены в соответствии с леммой 19.1. Пусть (у*, А*) — оптимальное решение.'Будем теперь искать целочисленное решение, т. е. такой набор s-t-путей Pf для каждого ребра требований / = {t, s} € Е (Я), что максимальная нагрузка на потоковое ребро минимальна (под нагрузкой на ребро мы понимаем число проходящих через нее путей) Для этого воспользуемся вероятностным округлением: для каждого ребра требований будем независимо выбирать путь Р с вероятностью уР. шсгл\ Пусть 0 < е < 1, и предположим, что А* > 3 In . Докажите, что с вероятностью не меньше 1-е вышеуказанный вероятностный метод дает целочисленное решение с максимальной загрузкой, не превосходящей Г + ^ЗЯЧп^М. Указание. Воспользуйтесь следующими фактами из теории вероятностей. Если В(тп, N, р) — вероятность не менее тп успехов в N независимых испытаниях Бернулли, каждое из которых имеет вероятность успеха р, то ?((l + j3)Np,N,p)<e-3^ для всех 0 < /3 < 1. Более того, вероятность наступления хотя бы m успехов в N независимых испытаниях Бернулли с вероятностями успехов pl9...,pNne превосходит В(m, N, -^(р! + ... + pN)). 5. Опишите приближенную схему для задачи о конкурентных потоках, используя приближенную схему для задачи о многопродуктовом потоке в качестве подпрограммы. Указание. Используйте бинарный поиск для уменьшения границ, в которых может находиться оптимальное значение; модифицируйте экземпляр задачи, чтобы ограничить возможный поток для каждого продукта пропорционально соответствующему требованию.
562 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Замечание. Можно также видоизменить приближенную схему для задачи о многопродуктовом потоке, чтобы получить прямое решение задачи о конкурентных потоках. См. ссылки на работы в § 19.2. 6. Пусть G — граф-экспандер (см. определение из теоремы 16.42), п := \V(G) | и и(е) := 1 для всех е е ?(G). Покажите, что MFMC-отношение в получающемся экземпляре однородной задачи о многопродуктовом потоке составляет ft(logn). Указание. Сравните значения в левой и правой частях неравенств, отвечающих условиям расстояний и разрезным условиям. 7 (Лейтон и Рао [38]). Пусть G — неориентированный граф, п := V{G) и и: E(G) -* R+. Для заданного значения Ь, 0 < Ь < 1/2, назовем Ь-сбалансирован- ным разрезом такой разрез 5G(X), что Ьп < \Х\ < (1 — Ъ)п. Пусть ОРТь —минимальная пропускная способность b-сбалансированного разреза. Пусть, наконец, Ь' < 1/3. Рассмотрим следующий алгоритм. Положим G0 := G и i := 0. Найдем приближенный наиболее разреженный разрез в графе Gt, и пусть Х{ — наименьшее из двух получившихся множеств вершин. Если |V(Gi)\Xj > (1 —Ь7)п, то положим Gi+1 := G — Хь увеличим i и продолжим итерации. Иначе выдадим разрез 5(X0U...UJQ). (а) Покажите, что 5(Х0 и... UXt) представляет собой {/-сбалансированный разрез. (б) Покажите, что в Gt существует разрез 5(Х), удовлетворяющий неравенству и(5(Х)) < 2 0РТЬ \X\-№Gt)\X\ " (Ъ-Ъ')п2 для любых таких Ь, что Ъ' <Ъ < 1/2. (в) Покажите, что, используя О (log п) -приближенный алгоритм для решения задачи о наиболее разреженном разрезе в качестве подпрограммы (см. теорему 19.13), можно получить оценку |5(x0u...uxi)|<o(^^). Замечание. Отсюда не следует приближенный алгоритм для решения задачи о b-сбалансированном разрезе. В частном случае Ь = 1/2 (называемом задачей о бисекции) Реке [50] предложил О (log п) -приближенный алгоритм. 8 (Хансен [28]). Задача об оптимальном линейном упорядочении состоит в нахождении порядка на множестве п вершин v1,...,vn заданного неориентированного графа G, для которого суммарная длина ^{у. v}<ee(g) \i~J\ минимальна. Воспользуемся упражнением 7 для получения приближенного алгоритма. (а) Покажите, что для любого такого Ъ, 0 < Ъ < 1/2, что bn е N, оптимальная стоимость решения не может быть меньше (1 — 2Ъ)п ОРТь. (б) Рассмотрим следующий алгоритм. Если в графе есть всего одна вершина, то задача тривиальна. Иначе найдем --приближенный разрез 5{Х), как указано в упражнении 7, применим алгоритм рекурсивно к подграфам, порожденным X и V{G)\X, а затем объединим последовательно два получившихся порядка. Покажите, что стоимость получающегося решения не более чем в 0(log2n) раз превышает оптимальную.
Упражнения 563 Замечание. Данная задача является NP-трудной. Наилучший известный алгоритм, имеющий точность приближения О (^/log п log log n), был предложен Чарикаром и др. [12], а также Фейге и Ли [16]. 9. Докажите, что существует полиномиальный алгоритм для ориентированной задачи о реберно непересекающися путях для случая, когда граф G + Н эйлеров, а Я состоит из двух наборов параллельных ребер. 10. Покажите, что по заданному орграфу можно за полиномиальное время найти минимальное по размеру множество ребер, пересекающее все ориентированные разрезы. Покажите, что для случая планарных орграфов число обратной связи может быть вычислено за полиномиальное время. 11. Покажите, что по заданному орграфу можно за полиномиальное время найти минимальное по размеру множество ребер, стягивание которых делает граф сильно связным. 12. Докажите, что утверждение следствия 19.18 не выполняется для графов общего вида (не обязательно планарных). 13 (Фиген [62]). Покажите, что утверждение следствия 19.19 становится ложным, если опустить требование ацикличности графа G. Замечание. В данном случае ориентированная задача о реберно непересекающихся путях является NP-трудной. 14 (Клейнберг [37]; см. также работу Чекури и Ханны [13], где приводятся усиленные результаты). Рассмотрим следующий жадный алгоритм для ориентированной задачи о реберно непересекающихся путях. А именно, пусть задан экземпляр (G,H). Выберем ребро / = (t,s) е Е(Я), для которого значение distG(s, t) минимально. Пусть Pf — кратчайший s-t-путь в G. Удалим / из Я (Я) из E(Pf) из E{G). Будем продолжать итерации, до тех пор пока не исчезнут все реализуемые ребра требований. В результате получится решение для экземпляра (G, Я'), где Я' — подграф графа Я. Пусть Я* — произвольный подграф графа Я, для которого задача (G, Я*) имеет решение. Покажите, что тогда |Е(Я')| > |Е(Я*)|Д/т, где т := |?(G)|. Указание. Рассмотрите момент, когда ни одно из ребер требований уже не может быть реализовано путем длины не более у/т. 15. Докажите, что неориентированная задача о реберно непересекающихся путях разрешима за полиномиальное время в случае, если граф G+H планарный и эйлеров. 16. Покажите, что из доказательства теоремы Окамуры — Сеймура следует полиномиальный алгоритм. 17. Пусть (G, Я) — экземпляр неориентированной задачи о реберно непересекающихся путях. Предположим, что граф G планарный, все терминалы лежат на внешней грани и каждая вершина, не содержащаяся на внешней грани, имеет четную степень. Более того, пусть |5G(X)| > |5„(Х)| для всехХ,0фХс V(G). Докажите, что тогда задача (G, Я) имеет решение. Указание. Воспользуйтесь теоремой Окамуры — Сеймура.
564 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути 18 (Бёш и Тиндел [11]). Обобщая теорему Роббинса (упражнение 21(в) из гл. 2), сформулируйте и докажите необходимые и достаточные условия существования ориентации неориентированных ребер смешанного графа, для которой получающийся орграф является сильно связным. 19. Пусть (G,H) —экземпляр ориентированной задачи о реберно непересекающихся путях, в котором граф G + H эйлеров, граф G планарный и ациклический и все терминалы лежат на внешней грани. Покажите, что задача (G, Н) имеет решение, если и только если выполняются разрезные условия. Указание. Воспользуйтесь леммой 19.20 и теоремой Окамуры — Сеймура 19.23. 20. Докажите теорему 19.25 с помощью методов теории потоков. 21. Предложите два способа выяснить за полиномиальное время, удовлетворяет ли пара (G, Я) условиям теоремы 19.25: один с помощью техники минимизации субмодулярных функций и эквивалентности задач отделения и оптимизации, а другой — с помощью методов теории потоков (см. упражнение 20). 22 (Франк [21], Франк и Тардош [24]). Докажите следующую теорему Нэша- Вильямса [46], которая служит обобщением теоремы Роббинса (см. упражнение 21(b) из гл.2). Ребра неориентированного графа G могут быть ориентированы так, что получившийся граф будет сильно k-реберно связным, (т. е. в нем будет существовать к реберно непересекающихся s-t-путей для любой пары (s, t) € V(G) х V(G)), если и только если G является 2к-реберно связным. Указание. Для доказательства достаточности рассмотрим произвольную ориентацию G1 графа G. Докажите, что система *е<1 (ee?(G')), хе>0 (eeE(G')), е€5"(Х) е€5+,(Х) обладает свойством TDI, для чего воспользуйтесь рассуждением, аналогичным доказательству теоремы Луккези—Янгера 19.17. 23 (Ху [30]). Докажите следующую теорему Ху о двупродуктовом потоке. Экземпляр (G, Н, и, Ъ) неориентированной задачи о многопродуктовом потоке, в котором |?(Н)| = 2, имеет решение, если и только если 2>(e)>J>(/) e<E5G(X) /е5„(Х) для всех X с V(G), т. е. выполнены разрезные условия. Указание. Используйте теорему 19.27. 24. Докажите, что в случае, когда граф G + H эйлеров, а Н состоит из двух наборов параллельных ребер, существует полиномиальный алгоритм для неориентированной задачи о реберно непересекающихся путях. 25*. В данном упражнении рассматриваются экземпляры (G, Я) неориентированной задачи о вершинно непересекающихся путях для случая, когда граф G
Литература 565 планарный, а все терминалы различны (т. е. е П / = 0 для любых ребер требований е и /) и лежат на внешней грани. Пусть (G, Я) — такой экземпляр, в котором дополнительно граф G является 2-связным. Пусть С — цикл, ограничивающий внешнюю грань (см. утверждение 2.31). Докажите, что задача (G, Я) имеет решение, если и только если выполнены следующие условия: (а) граф G + H планарен; (б) ни одно из множеств X с V(G) не разделяет более |Х| ребер требований (говорят, что X разделяет {и, w}, если {u,w} Г)Х ф 0 или если вершина w не достижима из и в G — X). Выведите отсюда, что неориентированная задача о вершинно непересекающихся путях в планарных графах с различными терминалами, лежащими на внешней грани, может быть решена за полиномиальное время. Указание. Для доказательства достаточности условий (а) и (б) рассмотрите следующий индуктивный шаг. Пусть / = {v, w} — такое ребро требований, что хотя бы один из двух v-w-путей на цикле С не содержит других терминалов. Сопоставим ребру / данный путь и удалим это ребро. Замечание. Робертсон и Сеймур [52] расширили данные требования до необходимых и достаточных условий разрешимости неориентированной задачи о вершинно непересекающихся путях с двумя ребрами требований. 26*. Фиксируем число к е N. Докажите, что существует полиномиальный алгоритм для неориентированной задачи о вершинно непересекающихся путях для случая графов с древесной шириной не более к (см. упражнение 27 из гл. 2). Замечание (Нисидзеки, Фиген и Чжоу [48]). Шеффлер [56] доказала, что в действительности для этой задачи существует линейный алгоритм. В противоположность этому неориентированная задача о реберно непересекающихся путях является А/Р-трудной даже для графов с древесной шириной 2. 27. Докажите, что ориентированная задача о вершинно непересекающихся путях и неориентированная задача о вершинно непересекающихся путях являются NP-трудными. Докажите, что из утверждения о вершинно непересекающихся путях из теоремы 19.28 следует утверждение о реберно непересекающихся путях. Литература Общая литература [1] Frank A. Packing paths, circuits and cuts — a survey // Paths, Flows, and VLSI-Layout (B. Korte, L. Lovasz, H. J. Promel, A. Schrijver, eds.), Springer, Berlin, 1990. P. 47-100. [2] Naves G., SeboA. Multiflow feasibility: an annotated tableau // Research Trends in Combinatorial Optimization (W. J. Cook, L. Lovasz, J. Vygen, eds.), Springer, Berlin, 2009. P. 261-283. [3] Ripphausen-Lipa H., Wagner D., Weihe K. Efficient algorithms for disjoint paths in planar graphs // Combinatorial Optimization (W. Cook, L. Lovasz, P. Seymour, eds.), AMS, Providence, 1995. (DIMACS Series in Discrete Mathematics and Theoretical Computer Science; Vol.20). P.295-354.
566 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути [4] SchrijverA. Combinatorial Optimization: Polyhedra and Efficiency. Springer, Berlin, 2003, Chapters 70-76. [5] Shmoys D. B. Cut problems and their application to divide-and-conquer // Approximation Algorithms forNP-Hard Problems (D. S. Hochbaum, ed.), PWS, Boston, 1996. Процитированные работы [6] Aumann Y. and Rabani Y An O(logfc) approximate min-cut max-flow theorem and approximation algorithm // SIAM Journal on Computing. 1998. Vol. 27. P. 291-301. [7] Arora S., Rao S., Vazirani U. Expander flows, geometric embeddings and graph partitioning // Journal of the ACM. 2009. Vol. 56. Article 5. [8] Arora S., Hazan ?., Kale S. ОСд/logn) approximation to Sparsest Cut in 6{n2) time // Proceedings of the 45th Annual IEEE Symposium on Foundations of Computer Science. 2004. P. 238-247. [9] Becker M., Mehlhorn K. Algorithms for routing in planar graphs // Acta Informatica. 1986. Vol.23. P. 163-176. [10] Bienstock D., Iyengar G. Solving fractional packing problems in 0*(l/e) iterations // SIAM Journal on Computing. 2006. Vol. 35. P. 825-854. [11] Boesch F., Tindell R. Robbins's theorem for mixed multigraphs // American Mathematical Monthly. 1980. Vol. 87. P. 716-719. [12] Charikar M., Hajiaghayi M. Г., KarloffH., Rao S. l\ spreading metrics for vertex ordering problems // Algorithmica. 2010. Vol. 56. P. 577-604. [13] Chekuri C, Khanna S. Edge-disjoint paths revisited // ACM Transactions on Algorithms. 2007. Vol.3. Article 46. [14] Chudak F.A., Eleuterio V. Improved approximation schemes for linear programming relaxations of combinatorial optimization problems // Integer Programming and Combinatorial Optimization; Proceedings of the 11th International IPCO Conference (M. Jtinger, V. Kaibel, eds.), Springer, Berlin, 2005. (Lecture Notes in Comput. Sci.; Vol.3509). P.81-96. [15] Even S., Itai A., Shamir A. On the complexity of timetable and multicommodity flow problems // SIAM Journal on Computing. 1976. Vol. 5. P. 691-703. [16] Feige U., Lee J. R. An improved approximation ratio for the minimum linear arrangement problem // Information Processing Letters. 2007. Vol. 101. P. 26-29. [17] Fleischer L. K. Approximating fractional multicommodity flow independent of the number of commodities // SIAM Journal on Discrete Mathematics. 2000. Vol. 13. P. 505-520. [18] Ford L. R., Fulkerson D. R. A suggested computation for maximal multicommodity network flows // Management Science. 1958. Vol. 5. P. 97-101. [19] Ford L. R., Fulkerson D. R. Flows in Networks. Princeton University Press, Princeton, 1962. [20] Fortune S., Hopcroft J., Wyllie J. The directed subgraph homeomorphism problem // Theoretical Computer Science. 1980. Vol. 10. P. 111-121. [21] Frank A. On the orientation of graphs // Journal of Combinatorial Theory. Ser. B. 1980. Vol.28. P.251-261. [22] Frank A. How to make a digraph strongly connected // Combinatorica. 1981. Vol. 1. P. 145-153. [23] Frank A. Edge-disjoint paths in planar graphs // Journal of Combinatorial Theory. Ser. B. 1985. Vol. 39. P. 164-178.
Литература 567 Frank A, Tardos Ё. Matroids from crossing families // Finite and Infinite Sets; Vol. I (A. Hajnal, L. Lovasz, and V. T. Sos, eds.), North-Holland, Amsterdam, 1984. P. 295-304. Garg N., Konemann J. Faster and simpler algorithms for multicommodity flow and other fractional packing problems // SIAM Journal on Computing. 2007. Vol. 37. P. 630-652. Grigoriadis M. D., Khachiyan L. G. Coordination complexity of parallel price-directive decomposition // Mathematics of Operations Research. 1996. Vol. 21. P. 321-340. Guruswami V., Hdstad J., Manokaran R., Raghavendra P., Charikar M. Beating the random ordering is hard: every ordering CSP is approximation resistant // SIAM Journal on Computing. 2011. Vol.40. P.878-914. Hansen M. D. Approximation algorithms for geometric embeddings in the plane with applications to parallel processing problems // Proceedings of the 30th Annual IEEE Symposium on Foundations of Computer Science. 1989. P. 604-609. Hirai H. Metric packing for K3 + K3 // Combinatorica. 2010. Vol. 30. P. 295-326. Ни Т. С. Multi-commodity network flows // Operations Research. 1963. Vol. 11. P. 344-360. Ibaraki Г., Poljak S. Weak three-linking in Eulerian digraphs // SIAM Journal on Discrete Mathematics. 1991. Vol. 4. P. 84-98. Karakostas G. Faster approximation schemes for fractional multicommodity flow problems // ACM Transactions on Algorithms. 2008. Vol. 4. Article 13. Karp R. M. Reducibility among combinatorial problems // Complexity of Computer Computations (R. E. Miller, J. W. Thatcher, eds.), Plenum Press, New York, 1972. P. 85-103. Karzanov A. V. Half-integral five-terminus flows // Discrete Applied Mathematics. 1987. Vol.18. P. 263-278. Kawarabayashi K., Kobayashi Y, Reed B. The disjoint paths problem in quadratic time // Journal of Combinatorial Theory. Ser. B. 2012. Vol. 102. P. 424-435. Kawarabayashi K., Wollan P. A shorter proof of the graph minor algorithm: the unique linkage theorem // Proceedings of the 42th Annual ACM Symposium on Theory of Computing. 2010. P. 687-694. Kleinberg J. Approximation algorithms for disjoint paths problems. PhD thesis, MIT, Cambridge, 1996. Leighton Т., Rao S. Multicommodity max-flow min-cut theorems and their use in designing approximation algorithms // Journal of the ACM. 1999. Vol. 46. P. 787-832. Linial N., London E., Rabinovich Y The geometry of graphs and some of its algorithmic applications // Combinatorica. 1995. Vol. 15. P. 215-245. Lomonosov M. Multiflow feasibility depending on cuts // Graph Theory Newsletter. 1979. Vol.9. P.4. Lovdsz L. On two minimax theorems in graph // Journal of Combinatorial Theory. Ser. B. 1976. Vol. 21. P. 96-103. Lucchesi C. L., Younger D. H. A minimax relation for directed graphs // Journal of the London Mathematical Society II. 1978. Vol. 17. P. 369-374. Matsumoto K., Nishizeki Г., Saito N. Planar multicommodity flows, maximum marchings and negative cycles // SIAM Journal on Computing. 1986. Vol. 15. P. 495-510. MiddendorfM., Pfeiffer F. On the complexity of the disjoint path problem // Combinatorica. 1993. Vol. 13. P. 97-107.
568 Глава 19. Многопродуктовые потоки и реберно непересекающиеся пути Mtiller D., Radke К., Vygen J. Faster min-max resource sharing in theory and practice // Mathematical Programming. Computation. 2011. Vol. 3. P. 1-35. Nash-Williams C. S. J. A. Well-balanced orientations of finite graphs and unobtrusive odd- vertex-pairings // Recent Progress in Combinatorics (W. Tutte, ed.), Academic Press, New York, 1969. P. 133-149. Naves G. The hardness of routing two pairs on one face. Les cahiers Leibniz, Technical Report No. 177, Grenoble, 2009. Nishizeki Г., Vygen J., ZhouX. The edge-disjoint paths problem is NP-complete for series- parallel graphs // Discrete Applied Mathematics. 2001. Vol. 115. P. 177-186. Okamura H., Seymour P. D. Multicommodity flows in planar graphs // Journal of Combinatorial Theory. Ser. B. 1981. Vol. 31. P. 75-81. Racke H. Optimal hierarchical decompositions for congestion minimization in networks // Proceedings of the 40th Annual ACM Symposium on Theory of Computing. 2008. P. 255- 264. Raghavan P., Thompson C. D. Randomized rounding: a technique for provably good algorithms and algorithmic proofs // Combinatorica. 1987. Vol. 7. P. 365-374. Robertson N., Seymour P. D. Graph minors VI; Disjoint paths across a disc // Journal of Combinatorial Theory. Ser.B. 1986. Vol.41. P. 115-138. Robertson N., Seymour P. D. Graph minors XIII; The disjoint paths problem // Journal of Combinatorial Theory. Ser. B. 1995. Vol. 63. P. 65-110. Rothschild В., Whinston A. Feasibility of two-commodity network flows // Operations Research. 1966. Vol.14. P. 1121-1129. Seymour P. D. Four-terminus flows // Networks. 1980. Vol. 10, №1. P. 79-86. Scheffler P. A practical linear time algorithm for disjoint paths in graphs with bounded tree-width. Technical Report No. 396/1994, FU Berlin, Fachbereich 3 Mathematik. Schwarzler W. On the complexity of the planar edge-disjoint paths problem with terminals on the outer boundary // Combinatorica. 2009. Vol. 29. P. 121-126. Sebo A. Integer plane multiflows with a fixed number of demands // Journal of Combinatorial Theory. Ser. B. 1993. Vol. 59. P. 163-171. Seymour P. D. On odd cuts and multicommodity flows // Proceedings of the London Mathematical Society. (3). 1981. Vol.42. P. 178-192. Shahrokhi F., Matula D. W. The maximum concurrent flow problem // Journal of the ACM. 1990. Vol. 37. P. 318-334. Sherman J. Breaking the multicommodity flow barrier for О (y/\og ri) -approximations to sparsest cut // Proceedings of the 50th Annual IEEE Symposium on Foundations of Computer Science. 2009. P. 363-372. Vygen J. NP-completeness of some edge-disjoint paths problems // Discrete Applied Mathematics. 1995. Vol. 61. P. 83-90. Wagner D., Weihe K. A linear-time algorithm for edge-disjoint paths in planar graphs // Combinatorica. 1995. Vol.15. P. 135-150. Young N. Randomized rounding without solving the linear program // Proceedings of the 6th Annual ACM-SIAM Symposium on Discrete Algorithms. 1995. P. 170-178.
ГЛАВА 20 Задачи о проектировании сети Понятие связности играет в комбинаторной оптимизации важнейшую роль. В гл. 8 мы показали, как вычислить связность между любыми двумя вершинами неориентированного графа. Сейчас же нас будут интересовать подграфы, которые удовлетворяют определенным условиям связности («живучести»). В общей форме задача может быть сформулирована следующим образом. Survivable Network Design (задача о проектировании «живучей» сети) Дано: неориентированный граф G, веса с: E(G) —> Е+, требования связности Гуу € Z+ для каждой (неупорядоченной) пары вершин х, у. Надо: найти минимальный по весу остовный подграф Н графа G, для которого в подграфе Я для любых ху у существует не менее гху реберно непересекающихся путей из х в у. Данная задача находит практическое применение, например, при проектировании телекоммуникационных сетей, которые могут сохранять работоспособность при сбоях в линиях связи. Существует вариант рассматриваемой задачи, в котором разрешается брать ребра произвольное число раз (см. работы Гуманса и Бертсимаса [36], Бертсима- са и Тео [15]). Однако этот вариант легко сводится к общему случаю, поскольку мы всегда можем добавить в G достаточное количество параллельных ребер. В § 20.1 и 20.2 мы рассмотрим задачу о дереве Штейнера, которая является широко известным частным случаем общей задачи. Нам будет дано множество терминалов Т с V(G), а требования связности определяются следующим образом: гху = 1 при х,у еТ и гху = 0 в противном случае. Мы ищем кратчайшую сеть, соединяющую все терминалы; такая сеть называется коннектором. Минимальный по включению коннектор является деревом Штейнера. Дадим более формальное определение. Определение 20.1. Пусть заданы неориентированный граф G и подмножество Т с V(G). Коннектором для Т называется такой связный граф У, что Т с У (У). Деревом Штейнера для Т в G называется такое дерево S, что Т QV(S) с V(G) и ?(S) с E(G). Элементы множества Г называются терминалами, а вершины из V(S) \ Т — точками Штейнера для 5.
570 Глава 20. Задачи о проектировании сети Иногда полезно дополнительно требовать, чтобы листья дерева Штейнера были терминалами; очевидно, этого всегда можно достичь удалением ребер. В § 20.3 мы рассмотрим общую задачу о проектировании «живучей» сети, а в § 20.4 и 20.5 получим два приближенных алгоритма. Первый из них быстрее, но второй гарантированно находит 2-приближение за полиномиальное время. § 20.1. Деревья Штейнера В этом параграфе мы рассматриваем следующую задачу. Steiner Tree (задача о дереве Штейнера) Дано: Надо: неориентированный граф G, веса с налов Г с V(G). найти дерево Штейнера S ддя Т в E(G) -»R+ и множество терми- G, имеющее минимальный вес Частные случаи, в которых Т = V(G) (остовное дерево) и |Г| = 2 (кратчайший путь), уже были изучены в гл. 6 и 7. Хотя для обоих этих частных случаев существуют полиномиальные алгоритмы, общая задача NP-трудна. Теорема 20.2 (Карп [46]). Задача о дереве Штейнера NP-трудна даже в случае единичных весов. Доказательство. Мы опишем сведение к задаче о вершинном покрытии, которая является NP-трудной по следствию 15.24. Пусть задан граф G. Рассмотрим граф Я с вершинами V(H) := V(G) U E(G) и ребрами {и, е} для и € е € Е (G) и {v, w} при и, we V(G), ифю. (См. рис.20.1.) Положим с(е) := 1 для всехееЕ(Н) hT:=E(G). Пусть задано вершинное покрытие X с V(G) графа G. Тогда в графе Н можно соединить вершины из множества X деревом из \Х\ — 1 ребер, а затем присоединить каждую из вершин в Г ребром. Так мы получим дерево Штейнера из \Х\ — 1 + |E(G)| ребер. С другой стороны, пусть (Г U X, F) является деревом Штейнера для Г в Я. Тогда X образует вершинное покрытие графа G, причем |F| = |Г U Х\ -1 = \Х\ + \E(G)\ -1. Рис. 20.1
§ 20.1. Деревья Штейнера 571 Таким образом, в G есть вершинное покрытие мощности к, если и только если в Н есть дерево Штейнера Г из fc + |E(G)| — 1 ребер. ? Из этого сведения следует также и более сильный результат. Теорема 20.3 (Берн и Плассман [13]). Задача о дереве Штейнера является МАХ- SNP-трудной даже в случае единичных весов. Доказательство. Представленное выше сведение в общем случае не является L-сведением. Однако оно становится таковым, если степени вершин в G ограничены. По теореме 16.46 задача о минимальном вершинном покрытии для графов с максимальной степенью вершин 4 является MAXSNP-трудной. Для каждого дерева Штейнера (Г UX, F) в Я и отвечающего ему вершинного покрытия X в G имеем |Х| -OPT(G) = (|F| - \E(G)\ + 1) - (ОРТ(Н, Т) - |E(G)| + 1) = |F| -ОРТ(Н, Г). Более того, ОРТ(Я, Т) < 2|Г| -1 = 2|E(G)| -1 и OPT(G) > |?(G)|/4, если степени вершин в G не превышают 4. Следовательно, ОРТ(Н, Г) < 8 0PT(G). Поэтому рассматриваемое сведение действительно является L-сведением. ? Следующие два частных случая задачи о дереве Штейнера также NP-трудны: евклидова задача о дереве Штейнера (Гэри, Грэхем и Джонсон [34]) и манх- эттенская задача о дереве Штейнера (Гэри и Джонсон [34]). В обеих задачах требуется построить сеть (множество отрезков прямых) минимальной суммарной длины, которая соединяет данное множество точек на плоскости. Разница между задачами состоит в том, что в манхэттенском варианте разрешаются только горизонтальные и вертикальные отрезки. В отличие от MAXSNP-труднои задачи о дереве Штейнера для графов, для геометрических случаев существует схема приближения. Один из таких алгоритмов был предложен Аророй [11]. Он также годится для евклидовой задачи коммивояжера и некоторых других геометрических задач. Данный алгоритм будет представлен в § 21.2 (см. упражнение 9 из гл. 21). Для задачи о дереве Штейнера в случае планарных графов также существует схема приближения; см. работу Боррадайль, Клейна и Матьё [18]. Ханан [40] показал, что манхэттенскую задачу о дереве Штейнера можно свести к задаче о дереве Штейнера на конечном сеточном графе. А именно, всегда существует оптимальное решение, для которого все отрезки прямых лежат на сетке, порожденной координатами терминалов. Манхэттенская задача о дереве Штейнера находит применение при проектировании СБИС (сверхбольших интегральных схем), когда электрические элементы должны быть соединены горизонтальными или вертикальными проводниками; см. работы Корте, Прёме- ля и Штегер [51], Мартина [55] и Хетцеля [41]. В этих работах рассматривается задача поиска множества непересекающихся деревьев Штейнера, которая является обобщением задачи о непересекающихся путях из гл. 19. Сейчас мы опишем алгоритм, предложенный Дрейфусом и Вагнером [25]. Этот алгоритм, основанный на динамическом программировании, решает задачу о дереве Штейнера точно, но в общем случае работает экспоненциально долго.
572 Глава 20. Задачи о проектировании сети Алгоритм Дрейфуса — Вагнера находит оптимальное дерево Штейнера для каждого множества Т начиная с двухэлементных множеств. В алгоритме используются следующие рекуррентные формулы. Лемма 20.4. Пусть (G, с, Т) — экземпляр задачи о дереве Штейнера, где G — полный граф, ас — метрика. Для каждого подмножества U с г и вершины х е V(G) \ U положим p(U) := min{c(?(S)): S — дерево Штейнера для U в G}; q(U U {х}, х) := min{c(E(S)): S — дерево Штейнера для U U {х} в G, листья которого лежат в Lf}. Тогда для любых U с V{G), \U\ > 2 и х е V(G)\U выполняются равенства (а) q(l/и {*},*)= min {p(U'u{x})+pau\U')\J{x})), (б) p(U U {x}) = min {min (p(I/) + dist(GjC) (x, y)), yegw Ы& U {у}, у) + dist(G,c)(*, у)) }. Доказательство. Дяя доказательства равенства (а) заметим, что всякое дерево Штейнера S для U и {х}, листья которого лежат в U, является непересекающимся объединением двух деревьев, содержащих л: и хотя бы один элемент множества U. Отсюда вытекает равенство (а). Докажем равенство (б). Неравенство «<» очевидно. Рассмотрим оптимальное дерево Штейнера S для U и {х}. Если |5sQc)| > 2, то p(U U {х}) = c(E(S)) = q(U U {х}, х) = q{U U {х}, х) + dist(GfC)(х, х). Пусть |5s(jc)| = 1. Обозначим через у ближайшую вершину к х в S, которая принадлежит U или удовлетворяет условию |5s(y)| > 3. Выделим два случая: если у G U, то p(U U {х}) = c(E{S)) > p(U) + dist(G,c)(jc, у), иначе p(fj U {х}) = c(E(S)) > mm (q(l/ U {у}, у) + dist(GjC)(х, у)). В правой части равенства (б) стоит минимальное из этих трех значений. ? Из этих рекуррентных формул получаем следующий алгоритм, в котором используется динамическое программирование. Dreyfus—Wagner Algorithm (алгоритм Дрейфуса — Вагнера) Вход: неориентированный граф G, веса с: E(G) —> 3R+, множество Т с V(G). Выход: длина р(Т) оптимального дерева Штейнера для Т в G.
§ 20.1. Деревья Штеинера 573 ® If |Г| < 1 then присвоить р(Т) := 0, stop. Вычислить dist(G с) (х, у) для всех х,у е V (G). Присвоить р({х, у}) := dist(G с) (х, у) для всех х, у е У(G). (2) Forfc:=2to|r|-ldo: For all U с Г: |[/| = к, х е У(G) \ I/, do: Присвоить q(L/ U {х}, х) := min (р(1Г'и{х}) + р((1Г\1Г') и {х})). For all UQT:\U\ = k,xe V(G)\U, do: Присвоить p([/ U {x}) := minjmin (p(?/) + dist(G c)(x, y)), eУТЛ \ Г7 № U {У Ь У) + diSt(G'C) fc У)Я • Теорема 20.5 (Дрейфус и Вагнер [25]). Алгоритм Дрейфуса—Вагнера корректно определяет длину оптимального дерева Штеинера, и время его работы составляет 0(3'п + 2zn2 + тп + п2 logп), где п = \V(G)\ и t = \Т\. Доказательство. Корректность следует из леммы 20.4. На шаге (Т) мы решаем задачу о кратчайших путях между всеми парами вершин, что можно сделать за время 0(тпп + п2 log п) по теореме 7.8. Первый рекурсивный вызов на шаге (2) требует времени 0(3fn), поскольку существует 3f способов представить Г в виде U',U\U'hT\U. Второй рекурсивный вызов на шаге (2), очевидно, требует времени 0(2fn2). ? Представленная реализация алгоритма Дрейфуса — Вагнера находит длину оптимального дерева Штеинера. Само дерево Штеинера можно восстановить, если в процессе работы алгоритма запоминать некоторую дополнительную информацию, подобно тому как это делается для алгоритма Дейкстры (см. § 7.1). Отметим, что в общем случае алгоритм требует экспоненциально много времени и памяти. При фиксированном числе терминалов время работы алгоритма составляет 0(п3). Известен ещё один интересный случай, когда время работы алгоритма полиномиально (и требуемое количество памяти полиномиально). Пусть граф G планарен и все терминалы лежат на внешней грани. Тогда для модификации алгоритма Дрейфуса — Вагнера время работы составляет 0(n3t2) (см. упражнение 3). Для общего случая (с произвольным числом терминалов) время работы было улучшено в работах Фукса и др. [29] и Фигена [61]. Если весами всех ребер являются небольшие целые числа, то более предпочительным оказывается алгоритм Бьёрклунда, Хусфельдта, Каски и Койвисто [16]. Поскольку надеяться на существование точного полиномиального алгоритма для решения задачи о дереве Штеинера в общем случае не стоит, полезно отметить приближенные алгоритмы. В основе некоторых из этих алгоритмов лежит идея приблизить оптимальное дерево Штеинера для Г в G минимальным остовным деревом в подграфе метрического замыкания графа G, индуцированным множеством Г. Теорема 20.6. Пусть G — связный граф с весами с: E(G) —> R+. Обозначим через (G, с) его метрическое замыкание. Пусть также Т с V(G). Если S является опти-
574 Глава 20. Задачи о проектировании сети мольным деревом Штейнера для Т в G, а М—минимальным, оспговным деревом в G[T] (по отношению к с), то с(Е(М)) < 2c(E(S)). Доказательство. Рассмотрим граф Я, содержащий по две копии каждого ребра S. Граф Я эйлеров, поэтому по теореме 2.24 существует эйлеров цикл W в Я. Выпишем по одному разу элементы множества Г в порядке обхода по W. Получим цикл W' в G[T]. Поскольку с удовлетворяет неравенству треугольника (с({х, z}) < с({х, у}) + с({у, z}) < с({х, у}) + с({у, z}) для всех х9 у, z), получаем, что c(W') < c(W) = с(Е(Н)) = 2c(?(S)). Однако W' содержит остовное дерево G[T] (которое можно получить, удалив одно ребро). Теорема доказана. ? Данную теорему опубликовали Джилберт и Поллак [35] (ссылаясь при этом на Е. Ф. Мура), Шухман [23], Коу, Марковски и Берман [54], а также Такаяси и Мацуяма [60]. Из нее сразу же следует алгоритм, дающий 2-приближение. Kou — Markowsky—Berman Algorithm (алгоритм Коу—Марковски — Бермана) Вход: Выход связный граф G, веса с: : дерево Штейнера для Т E(G) —> Е+ и множество bG. rcy(G). (Т) Построить метрическое замыкание (G, с) и кратчайшие пути Pst для всех 5, t е Т. (2) Найти минимальное остовное дерево М в G[T] (относительно с). Положить E(S) := {J{x,y}eEm Е^) и V(S) := U{,,y}eE(M) ПРху1 (3) Вьщать минимальный связный остовный подграф в S. Теорема 20.7 (Коу, Марковски и Берман [54]). Алгоритм Коу—Марковски — Бермана находит 2-приближение для задачи о дереве Штейнера, и время его работы составляет 0(п3), где п — |V(G)|. Доказательство. Корректность и оценка сложности алгоритма сразу же следуют из теоремы 20.6. На шаге ® мы решаем задачу о кратчайших путях между всеми парами вершин, что можно сделать за время 0(п3) (см. теорему 7.8 и следствие 7.10). Шаг (2) можно выполнить за время 0(п2), используя алгоритм Прима (теорема 6.6). Шаг (3) использует поиск в ширину, и время его работы составляет О (п2). ? Мельхорн [56] и Коу [53] предложили реализацию этого алгоритма, время работы которой составляет 0(п2). Идея заключается в замене графа G[T] на аналогичный граф, в котором минимальные остовные деревья также являются минимальными остовными деревьями для G[T].
§ 20.2. Алгоритм Робинса — Зеликовского 575 Само по себе минимальное остовное дерево дает 2-приближение для любого метрического случая задачи о дереве Штейнера. Впервые алгоритм с точностью лучше 2 был получен Зеликовским [64], который предложил метод, дающий -^--приближение. Коэффициент приближения был улучшен до 1,75 Берманом и Рамайером [12], до 1,65 Карпински и Зеликовским [47], до 1,60 Хугарди и Прёмелем [42] и до 1 + (1пЗ)/2 ^ 1,55 Робинсом и Зеликовским [59]. Последний алгоритм будет представлен в следующем параграфе. В работе Бирки и др. [19] был изложен алгоритм, дающий 1,39-приближение. С другой стороны, согласно теореме 20.3 и следствию 16.40 при P^NP данная задача не может иметь схемы приближения. В самом деле, Хлебик и Хлебико- ва [22] показали, что если Р ф NP, то не существует алгоритма, дающего для задачи о дереве Штейнера 1,01-приближение. Еще один алгоритм, находящий оптимальные деревья Штейнера и оказывающийся особенно эффективным для манхэттенского случая задачи, был предложен Вормом, Винтером и Захариазеном [62]. § 20.2. Алгоритм Робинса — Зеликовского Определение 20.8. Полным, деревом Штейнера для множества терминалов Г в графе G назовем дерево Y в G, для которого Т является множеством листьев. Любое минимальное дерево Штейнера для Т можно разложить в набор полных деревьев Штейнера для подмножеств множества Г, называемых его полными компонентами. Объединение полных компонент, содержащих не более к терминалов, назовем к-ограниченным (по отношению к данному множеству терминалов). Более точно, граф Y назовем fc-ограниченным (в G по отношению к Г), если существуют такие полные деревья Штейнера Yt для Г П V(Y{) в G, где |Г П V(Yj)\ < к (i = 1,..., t), что граф, полученный из ({(i,i/):i = l,...,t, veV(Yi)},{{(i,v)AUw)}:i = l>...,t9 ^ш}€ВД)}) стягиванием множества {i: v е. V(Yd) х {v) Д*7151 каждой вершины v е Г, связен, V(Y) = Ui=i ^№) и E(Y) является объединением непересекающихся множеств E(YJ). Заметим, что при этом могут возникнуть параллельные ребра. Определим к-отношение Штейнера равенством {min{c(E(Y)): Y — /с-ограниченный коннектор для Г} 1 min{c(E(Y)): Y — дерево Штейнера для Г} J ' где точная верхняя грань берется по всем экземплярам задачи о дереве Штейнера. Например, 2-ограниченные коннекторы состоят из путей между терминалами. Таким образом, оптимальные 2-ограниченные коннекторы для Г в (G, с) соответствуют минимальным остовным деревьям в [G[T], с); отсюда с учетом теоремы 20.6 заключаем, что р2 < 2. Рассматривая звезды с единичными весами, можно заметить, что р2 = 2 (и в общем случае рк >к/(к — 1)). Если взять точную верхнюю грань только по экземплярам манхэттенской задачи о дереве Штейнера, то коэффициент будет лучше; например, он равен 3/2 для к = 2 (Хванг [43]).
576 Глава 20. Задачи о проектировании сети Теорема 20.9 (Ду, Чжан и Фэн [26]). Справедливо неравенство р2* < (5 + l)/s. Доказательство. Пусть Y является оптимальным деревом Штейнера для экземпляра задачи (G, с, Г). Без ограничения общности можно считать, что У — полное дерево Штейнера (иначе его полные компоненты можно рассмотреть отдельно). Кроме того, размножением вершин и добавлением ребер нулевой длины можно добиться того, чтобы У было полным двоичным деревом. У его корня степень равна 2, а у всех остальных точек Штейнера степень равна 3. Скажем, что вершина и е V(Y) находится на уровне i, если расстояние от нее до корня равно i. Все терминалы находятся на одном и том же уровне h (высота двоичного дерева). Мы построим набор из s таких 2s-ограниченных коннекторов для Г, что их суммарная длина не превосходит (s + 1)с(Е(У)). Для каждой вершины и ? V(Y) построим путь Р(у) в Y из и до некоторого листа, причем так, чтобы все эти пути попарно не пересекались по ребрам. (Например, при построении очередного пути спустимся один раз налево, а затем все время будем двигаться направо.) Для каждого i = 1,..., 5 обозначим через Yt объединение следующих полных компонент: • возьмем поддерево в Y, индуцированное вершинами на уровне до i, а затем добавим к нему пути Р(у) для каждой вершины и на уровне i; • для каждой вершины и на уровне ks + i возьмем поддерево, индуцированное потомками вершины и на уровне вплоть до (к + 1)5 + i, а затем добавим пути P(v) для каждой вершины v на уровне (к + 1)5 + i в этом поддереве (fc=o,...,L^ij_1); • для каждой вершины и на уровне [ J s + i возьмем поддерево, индуцированное всеми потомками вершины и. Ясно, что все эти деревья 2s-ограничены, а объединение всех деревьев в Yt дает У, т. е. некоторый коннектор для Г. Кроме того, каждое ребро Y встречается по одному разу в каждой из компонент Yh не считая присутствия в P(v). Далее, каждый путь Р(и) встречается только в одном Yt. Таким образом, каждое ребро учитывается не более 5 + 1 раз. ? В частности, pfc—>1 при к—>оо. Поэтому не стоит надеяться найти оптимальный fc-ограниченный коннектор за полиномиальное время для фиксированного к. Действительно, эта задача Л/Р-трудна для любого фиксированного к > 4 (Гэри и Джонсон [34]). Оценка в теореме 20.9 точна: Борчерс и Ду [17] доказали, что _ (5 + 1)25 + t Рк ~ s2s +1 для всех к > 2, где к = 2s +1 и 0 < t < 2s. Опишем алгоритм, который начинает с минимального остовного дерева в подграфе метрического замыкания, индуцированного на Г, а затем пытается его улучшить, используя fc-ограниченные полные деревья Штейнера. При этом, однако, на каждом шаге алгоритм добавляет в определенном смысле лишь половину этого дерева Штейнера, его так называемый убыток. Более формально, для
§ 20.2. Алгоритм Робинса — Зеликовского 577 произвольного дерева Штейнера У назовем убытком минимальное по стоимости множество ребер F, соединяющее каждую точку Штейнера степени не меньше 3 с терминалом. Пример дерева Штейнера и его убытка приведен на рис. 20.2 (ребра убытка выделены жирным; при этом стоимость ребра считается пропорциональной его длине). Утверждение 20.10. Рассмотрим полное дерево Штейнера У для множества Т и веса с: Е (У) —> R+. Обозначим через F убыток де- Рис. 20.2 рева У. Тогда c(F) < |с(Е(У)). Доказательство. Фиксируем произвольную вершину г дерева У. Обозначим через U множество точек Штейнера и е У (У) \ Т степени не меньше 3. Для каждой точки v е U рассмотрим Р(и) — минимальный по стоимости путь от и до вершин w € UU Г, которые находятся от г дальше, чем от и. Объединение множеств ребер этих путей соединяет каждый элемент множества U с терминалом. Стоимость данного объединения не превышает половины общей стоимости дерева. ? Вместо того чтобы явно производить стягивание убытков fc-ограниченных полных деревьев Штейнера, мы скорректируем стоимости следующим образом. Утверждение 20.11. Рассмотрим полный граф G, веса с: E{G) —> R+, множество терминалов Т с V(G) и число к > 2. Пусть S с Т и \S\ < fc. Обозначим через У дерево Штейнера для S в G, а через L—убыток дерева У. Пусть с'(ё) := 0 при eGLuc'(e):=c(e) в противном случае. Определим новые веса c/(Y,L): E(G) -*М+ равенством c/(Y,L)({v, w}) := min{c({i;, ш}), dist(yc/)(i;, w)} при v,w € S, v фьи и c/(Y,L)(e) := c(e) для остальных ребер. Тогда существует такое остовное дерево М в G[S], что c/(Y,L)(E(M))+ctt)<c(E(Y)). Кроме того, для каждого k-ограниченного коннектора Н' для Т в G существует такой k-ограниченный коннектор Н для Т в G, что c(E(H))<c/(y,L)(E(HO)+c(L). Доказательство. Первое утверждение доказывается индукцией по |Е(У)|. Можно считать, что У является полным деревом Штейнера (иначе каждую полную компоненту можно рассмотреть отдельно) и \S\ > 2. Тогда L ф 0 и существует терминал v, инцидентный ребру e = {v,w}eL. Применяя предположение индукции к У' := У — е и (S\ {v}) U {ш}, мы получаем остовное дерево М\ для которого сЦу',1\{еЖМ') <с(?(У0)-с(1\{б}) =с(?(У))-с(1). Замена w на и в М не меняет стоимости, поскольку с'{е) = 0.
578 Глава 20. Задачи о проектировании сети Докажем второе утверждение. Пусть Hf — fc-ограниченный коннектор для Г. Заменим каждое ребро е = {и, w} е ?(Н')5 для которого c/(Y, L)(e) < с(е), на кратчайший 1>-ш-путь в (У, с') и удалим параллельные ребра. Тогда полученный граф Н является fc-ограниченным коннектором для Г, удовлетворяющим неравенству с(Е(Н)) = с'(?(Ю) + с(Е(Н) ПL) < c/QT, !)(?(#')) + c(L). ? В процессе работы алгоритма мы будем итеративно изменять веса добавлением ребер, отвечающих полным компонентам. Следующее наблюдение показывает, что при этом приведенная стоимость минимального остовного дерева не будет увеличиваться. Лемма 20.12 (Зеликовский [64], Берман и Рамайер [12]). Пусть задан граф G с весами с: E{G) —> R+ и множеством терминалов Т с V(G). Пусть также задан еще один граф (Г, U) и веса с'': U —> R+. Рассмотрим функцию т: 2и —> R+, где т(Х) — стоимость минимального остовного дерева в (T,E(G[T]) U X). Тогда функция т супермодулярна. Доказательство. Пусть А с U и / € [/. Запустим алгоритм Краскала параллельно на графах G[T] и G[T] + /, рассматривая ребра графа G[T] в том же порядке (по неубыванию стоимостей). Оба алгоритма работают одинаково за тем исключением, что первый не добавит /, а второй не добавит ребро, которое замкнет цикл в G + /, содержащий /. Таким образом, минимальные стоимости остовных деревьев в этих двух графах отличаются на величину min{y: G[T] + / содержит цикл, проходящий через /, суммарная стоимость ребер которого не больше у} — </(/). Ясно, что разница может только уменьшиться, если рассмотреть графы G[T] + А и (G[T] + А) + / вместо G[T] и G[T] + /. Следовательно, m(A)-m(AU{/})<m(0)-m({/}). Рассмотрим теперь подмножества X, Y с и и обозначим Y\X = {уъ ..., yfc}. Положим m{{Z) := m((X П Y) и {yi, ...,yi-i} U Z) для i = 1, ...,fc. Используя доказанное выше свойство, для т{ получаем к m(X)-m(XU7) = 2(m^X\ybrn,((X\7)u{yJ))< к < 2 К-(0) - "Ч(Ы)) = т{Х П 7) - т(7), откуда следует требуемая супермодулярность. D Опишем теперь сам алгоритм. Обозначим через mst(c) стоимость минимального остовного дерева в подграфе (G, с), индуцированного множеством Г. Robins Вход: Выход: • — Zelikovsky Algorithm (алгоритм неориентированный граф G, веса с налов Г с V(G); число fc > 2. дерево Штейнера для Т в G. Робинса : E(G) -» — Зеликовского) М+ и множество терми-
§ 20.2. Алгоритм Робинса — Зеликовского 579 (1) Построить метрическое замыкание (G, с) для (G, с). (2) Выбрать подмножество S, содержащее не более к терминалов, и пару К = (УД), где 7 является оптимальным деревом Штейнера для S, a L — * v ^ mst(c) — mst(c/K) ^ убыток дерева 7, так, чтобы значение _т —- было максимально и не меньше 1. If такое множество не существует then goto (4). (3) Присвоить с := с/К. Goto (2). (4) Найти минимальное остовное дерево в подграфе (G, с), индуцированное множеством Г. Заменить все ребра кратчайшими путями в (G, с7), где с'(е) := 0 при ее! для некоторого L, определенного выше, и с'(е) = с(е) в противном случае. В конце построить минимальный связный остовный подграф в Г. Допустим, что алгоритм остановится на итерации t+1, и пусть 1<Q := (7;, L{) — дерево Штейнера и его убыток, выбранные на i-й итерации (i = 1,..., t). Обозначим через с0 стоимости с после шага (1), а через с{ := с{_^1К{ — веса с после i итераций (i = 1,..., t). Тогда по предложению 20.11 алгоритм построит решение суммарной стоимости не более mst{ct) + J]i=i c(^i)- Обозначим через У* оптимальный fc-ограниченный коннектор для Т, а через Y*,..., 7^ — fc-ограниченные полные деревья Штейнера, объединение которых дает 7*. Обозначим через L* убыток дерева 7* и положим К* = (7*,L*) (j = 1, ...,?*). Наконец, пусть L* := L* и ... U L**. Будем писать с/К* вместо с/К*/... /К^. Из предложения 20.11 получаем следующий результат. Лемма 20.13. Алгоритм находит дерево Штейнера для Т суммарной стоимостью не более mst{ct) + J]i=1 c(Lj). Кроме того, c(E(Y*)) = mst(c/K*) + c(L*). ? Лемма 20.14. Справедливы неравенства mst(ct) < с(Е(7*)) < mst(c0). Доказательство. Очевидно, с(Е(7*)) < mst(c0). Когда алгоритм завершает работу, mst(ct) — mst(ct/K*) < c(L*) для ; = 1,..., t*. Следовательно, по лемме 20.12 имеем mst{ct) - mst(c/K*) < mst{ct) - mst(ct/K*) = e = ^ {mst{ct/Ky ... /K*_J - mst{ctlK\l... /Kf)) < t* t* < J (mst(ct) - mst(ct/K*)) < ? c(i;). Отсюда m5t(ct) < mst{c/K*) + c(L*). П
580 Глава 20. Задачи о проектировании сети Лемма 20.15. Справедливо неравенство t mst(ct) + J] c{Ld < с(ВСП) (l + ^) • 1=1 Доказательство. Пусть i е {1,..., t}. Согласно способу выбора Lt на i-й итерации алгоритма имеем V {mstiCi^-mstdCi^/K*)) mstfa*) - msttcA ^ mst(c?_!) - mst^jK*) pt —Ж)—>Д^ щ > ? > 2 (mstCc^/K*/... /k;_x) - mst^jKH... /*;)) >^i- ctt*) _ mstCc^j) — mstki-i/K*) mstic^ — mstic/K*) ~ 7UF) ' 7UF) (в третьем неравенстве мы использовали лемму 20.12, а в последнем — свойство монотонности). Кроме того, значение выражения в левой части не меньше 1. Следовательно, t t Sc(L;) < > (wstfcvi) — mst(c;)) 7-77-z 7—г , 1ТГ^Л < i=l i=l mst(c0) mst(ct) Поскольку c(E(Y*)) = mst(c/K*) + c(L*) по лемме 20.13 и mst(ct) < c(E(Y*)) < < mst(c0) по лемме 20.14, получаем, что c(E(Y*)) mst(c0)-mst(c/K*) nst[c0) Г «?) dx J max{c(L*),x-mst(c/K*)} " gcfcX J ldx+ J ^d* = m5t(ct) c(L*) /n/Tr4» , . ^T*Nt m5t(c0) — mst(c/K*) = c(E(7*)) - mst(ct) + c(L*) In °^(1>) . Учитывая, что mst(c0) < 2 OPT(G, с, Г) < 2c(E(Y*)) = с(Е(У*)) + mst(c/K*) + c(L*), приходим к неравенству ,„rt(ct)+gc(Ll)<c№Cn)(l + ^jln(l + ^)).
§ 20.3. Проектирование «живучих» сетей 581 Поскольку 0<c(L*)<ic(E(Y*)) (по предложению 20.10) и max{xln(l + i):0<x< |} достигается для х = 1/2 (действительно, производная lnf 1 Ч—J —г всегда положительна), получаем, что t mst(cJ+?c(Z,)<c(E(r))(l + ^). П Изложенное выше доказательство приведено в работе Грёпля и др. [39]. В итоге получаем следующий результат. Теорема 20.16 (Робине и Зеликовский [59]). Алгоритм Робинса — Зеликовского имеет точность pfc(l + (1пЗ)/2) и полиномиальное время работы при всяком фиксированном к. При достаточно больших к погрешность становится меньше 1,55. Доказательство. По лемме 20.13 алгоритм находит дерево Штейнера со стоимостью не более mst(ct) + XI[=i С(Ю- По лемме 20.15 последнее значение не превосходит ръ(1 + (In3)/2). Выбрав к = minflVfG)!, 22233} и применив теорему 20.9, получим коэффициент приближения л (Л ,1пЗЛ < 2234 Л ,1пЗЛ ^- -- Существует не более nfc возможных подмножеств S. Фиксируем такое подмножество. Для построения Y нужно выбрать не более к — 2 точек Штейнера (степени не больше 3). Сделать это можно не более чем пк~2 способами. Для фиксированного Y существует не больше (2fc — 3)fc"2 возможностей построить убыток (с точностью до добавления ребер нулевой стоимости). Следовательно, время работы каждой итерации составляет 0(п2к) (для фиксированного к), а всего алгоритм совершает не более п2к~2 итераций. ? § 20.3. Проектирование «живучих» сетей В этом параграфе мы рассмотрим задачу проектирования сети со свойством «живучести». Перед рассмотрением ее в общей формулировке отметим два частных случая. Если все требования связности г^ равны 0 или 1, то рассматриваемая задача называется обобщенной задачей о дереве Штейнера (обычная задача о дереве Штейнера, конечно же, представляет собой ее частный случай). Первый приближенный алгоритм для решения обобщенной задачи о дереве Штейнера был предложен в работе Агравала, Клейна и Рави [10]. Другим интересным частным случаем является задача о нахождении минимального по весу fc-реберно связного подграфа (здесь гху = к для всех х,у). В упражнении 8 приводится комбинаторный алгоритм, дающий 2-приближение
582 Глава 20. Задачи о проектировании сети для этого частного случая. Там же можно найти дополнительные ссылки на работы, посвященные этому вопросу. Перейдем теперь к общей задаче о проектировании «живучей» сети. Пусть для всех х,у е V{G) заданы требования связности г^. Рассмотрим функцию /: 2y(G) ->Z+, где /(0) :=/(V(G)) :=0 и /(S) :=maxxeS)yeV{G)\s гху для непустого множества S с V(G). Тогда задачу можно сформулировать в виде целочисленной линейной программы следующего вида: минимизировать У^ с(е)хе eeE(G) при условиях ^xe>f(S) (Scy(G)), (2ai) ee5(S) хее{0,1} (eG?(G)). Мы не будем заниматься решением этой целочисленной программы в общей форме, а вместо этого воспользуемся следующим важным свойством функции /. Определение 20.17. Функция f:2u-+Z+ называется правильной, если она удовлетворяет следующим трем условиям: • /(S) = f(U\S) для всех S с U; • /(A U В) < тах{/(А), /(Б)} для всех таких А, В с JJ, что А П В = 0; • /(0) = О. Очевидно, что функция /, определенная выше, является правильной. Понятие правильной функции было введено в работе Гуманса и Уильямсона [38]. Там же приводится алгоритм, дающий 2-приближение для таких правильных функций /, что /(S) е {0,1} для всех S. Для правильных функций /, обладающих свойством /(S) € {0,2} для всех S, Клейн и Рави [50] предложили алгоритм, дающий 3-приближение. Важную роль играет следующее свойство правильных функций. Утверждение 20.18. Всякая правильная функция f:2u-+Z+ является слабо супермодулярной, т. е. для любых А, В си выполняется хотя бы одно из следующих условий: • /(А) + /(В) < /(A U В) + /(А П В); • f(A)+f(B)<f(A\B)+f(B\A). Доказательство. По определению имеем /(А) < шах{/(А\В), /(А П В)}; (20.2) /(В) < тах{/(В\А),/(АПВ)}; (20.3) /(A) = /([7\A)<max{/(B\A),/([/\(AuB))} = max{/(B\A),/(AUB)}; (20.4) /(В) =f(U\B) <тах{/(А\В),/(17\(АиВ))} = тах{/(А\В),/(АиВ)}. (20.5) Рассмотрим четыре случая в зависимости от того, какое из этих четырех чисел /(А\В),/(В\А),/(АПВ),/(АиВ) минимально. Если f(A\B) минимально, то
§ 20.3. Проектирование «живучих» сетей 583 сложим неравенства (20.2) и (20.5). Если f(B\A) минимально, то сложим неравенства (20.3) и (20.4). Если /(AnВ) минимально, то сложим неравенства (20.2) и (20.3). Если /(ЛиВ) минимально, то сложим неравенства (20.4) и (20.5). ? В оставшейся части параграфа мы покажем, как решить линейную релаксацию задачи (20.1): минимизировать \] с(е)хе eG?(G) при условиях ^xe>f(S) (Scy(G)), ^ ^ eeS(S) Хе > 0 (б G E(G)), хе<1 (eeE(G)). К настоящему моменту неизвестно, как решать эту линейную программу за полиномиальное время для произвольной функции / (даже если она обладает свойством слабой супермодулярности). Поэтому ограничимся рассмотрением случая, когда функция / правильная. По теореме 4.21 достаточно уметь решать задачу отделения. Воспользуемся понятием дерева Гомори—Ху. Лемма 20.19. Пусть дан неориентированный граф G с функцией пропускных способностей и е М+ . Пусть также задана правильная функция /: 2V^ —» Z+. Обозначим через Н дерево Гомори—Ху для (G, и). Тогда для каждого непустого подмножества S с V(G) выполняются неравенства W ?e'e5G(S) "И > maxee5H(S) Ee'e5G(Ce) "Mj (б) /(5)<тахе€5н(5)/(Се), где через Се и V(H)\Ce обозначены компоненты связности графа Н — е. Доказательство. Докажем неравенство (а). По определению дерева Гомори — Ху число 5G(Ce) равно минимальной пропускной способности х-у-разреза для каждого е = {х, у] € Е(Н). С другой стороны при {х, у} € 5H(S) в левой части неравенства (а) записана пропускная способность некоторого х-у-разреза. Для доказательства неравенства (б) обозначим через Хъ ..., Хг компоненты связности графа Н — S. Так как граф Н[Х{] связен и Я является деревом, для всех i G {1,..., 1} имеем V(H)\Xt= (J се e<=5H(Xt) (при необходимости следует заменить Се на У(Я) \Се). Поскольку функция / правильная, получаем, что f{Xi)=f(V{G)\Xi)=f(ym\Xi)=f( \JCe)< max /(Се). Чем*) J e€MXl) Поскольку 5Н(Х() с 5H(S), имеем /(S) = /(V(G)\S)=/(UV)< max /№)< max /(Ce). ?
584 Глава 20. Задачи о проектировании сети Покажем теперь, как решать задачу отделения для программы (20.6). Для этого рассмотрим фундаментальные разрезы в дереве Гомори—Ху. Отметим, что явное хранение функции / потребует экспоненциально много памяти, поэтому мы считаем, что / задается в виде оракула. Теорема 20.20. Пусть даны неориентированный граф G и вектор х е R+ \ Пусть также известна правильная функция f: 2V(G) —> Z+ {заданная в виде оракула). Тогда за время 0(п4 + пв) можно найти такое множество S с V(G), что Sees ф хе </(S), или определить, что такого множества не существует. Здесь п = |V(G)|, а 9 — время вычисления оракулом одного значения /. Доказательство. Построим вначале дерево Гомори—Ху И для G, взяв в качестве пропускных способностей значения х. Дерево Н можно построить за время 0(п4) по теореме 8.38. По лемме 20.19(6) для каждого непустого множества S с V(G) существует такое ребро е € 5H(S), что /(S) < /(Се). Тогда по лемме 20.19(a) имеем /(S)-2*e</(Ce)"I>e. e<z5G(S) ee5G(Ce) Следовательно, (/(S) - 2 *е) = max (/(Се) - 2 хе). (20.7) max 0*SCV(G)^ e.MS)' -— ee5c(Ce) Таким образом, задачу отделения для программы (20.6) можно решить, проверив лишь п — 1 разрезов. ? Отметим связь между равенством (20.7) и теоремой 12.19. В отличие от релаксации линейной программы (20.6), шансов найти точное оптимальное целое решение за полиномиальное время нет. Действительно, по теореме 20.2 из возможности находить такое решение будет следовать, что Р = NP. Поэтому для задачи (20.1) мы сконцентрируемся на приближенных алгоритмах. В следующем параграфе мы опишем прямо-двойственный приближенный алгоритм, последовательно добавляющий ребра разреза, для которого требования оказываются нарушенными наиболее сильно. Этот комбинаторный алгоритм показывает хорошую точность, если максимальное требование связности fc := maxScv(G) /(?) не слишком велико. В частности, он дает 2-приближение для случая fc = 1. Последний включает в себя обобщенную задачу о дереве Штейнера. В § 20.5 мы опишем алгоритм, дающий 2-приближение для общего случая. Последний алгоритм, однако, требует решения линейной релаксации программы (20.6). Хотя его и можно выполнить за полиномиальное время, для практических целей этот подход кажется неэффективным. § 20.4. Приближенный прямо-двойственный алгоритм Рассмотрим еще один алгоритм, предложенный в работах Уильямсона и др. [63], Габоу, Гуманса и Уильямсона [31], а также Гуманса и др. [37].
§ 20.4. Приближенный прямо-двойственный алгоритм 585 Пусть заданы неориентированный граф G с весами с: E(G) —> R+ и правильная функция /. Требуется найти множество ребер F, характеристический вектор которого удовлетворяет условиям (20.1). Работа алгоритма состоит из к := maxScy(G) /(S) фаз. Поскольку функция / правильная, имеем к = maxUGV(G) f({v}); таким образом, несложно вычислить к. На р-й фазе (1 < р < fc) рассматривается правильная функция fp, для которой fp(S) := max{/(S) + р — к, 0}. Утверждается, что после р-й фазы текущее множество F (точнее, его характеристический вектор) будет удовлетворять условиям (20.1) относительно fp. Начнем с некоторых определений. Определение 20.21. Пусть заданы правильная функция g и множества F с ?(G) и X с V(G). Будем называть множество X нарушенным относительно (g, F), если |5F(X)| <g(X). Минимальные нарушенные относительно (g, F) множества назовем активными относительно (g, F). Множество F с ?(G) назовем подходящим для g, если никакое множество не является нарушенным относительно (g,F). Скажем, что F является почти подходящим для g, если \5F(Х)\ > g(X) — 1 для всех X с V(G). В процессе работы алгоритма множество F будет поддерживаться почти подходящим для текущей функции fp. Наше внимание будет сконцентрировано на активных множествах. Следующее утверждение играет ключевую роль. Лемма 20.22. Пусть заданы правильная функция g, множество F с E(G), почти подходящее для g, и два нарушенных множества А и В. Тогда или оба множества А\В и В\А являются нарушенными, или оба множества А П В и A U В являются нарушенными. В частности, активные множества по отношению к (g, F) попарно не пересекаются. Доказательство. Утверждение прямо следует из предложения 20.18 и леммы 2.1 (утверждения (в) и (г)). ? Из данной леммы следует, что всего может быть не более п = | V(G) | активных множеств. Покажем, как построить активные множества, для чего аналогично доказательству теоремы 20.20 воспользуемся деревом Гомори — Ху. Теорема 20.23 (Габоу, Гуманс и Уильямсон [31]). Пусть известны правильная функция g {заданная с помощью оракула) и множество F с ?(G), почти подходящее для g. Тогда активные множества относительно (g, F) можно построить за время 0(пЛ + п26). Здесь п = |V(G)|, а в — время, необходимое оракулу для вычисления одного значения g. Доказательство. Построим сначала дерево Гомори—Ху Н для (V(G),F) (считая пропускные способности единичными). По теореме 8.38 можно построить Я за время 0(п4). По лемме 20.19 для каждого непустого множества S с V(G) имеем |5F(S)|> maxJ5F(Ce)| (20.8) ее MS) И g(S)< max g(Ce), (20.9) e<=5H(S) где Ce и V(H) \ Ge — компоненты связности графа H — e.
586 Глава 20. Задачи о проектировании сети Обозначим через А произвольное активное множество. Согласно неравенству (20.9) существует ребро е = {5, t} е 5Н(Л), для которого g(A) < g(Ce). Учитывая неравенство (20.8), получаем |5F(A)| > |5F(Ce)|. Таким образом, 1 = g(A) - |5F(A)| < g{Ce) - |SF(Ce)| < 1, поскольку F является почти подходящим для g. Наша цель — показать, что всюду выше мы имеем равенства, в частности |5F(A)| = |5F(Ce)|. Таким образом, 5F(A) является минимальным s-t-разрезом в (V(G),F). Без ограничения общности предположим, что А содержит t, но не содержит s. Обозначим через G' орграф (V(G), {(v, w), [w, и): {v, w} e F}). Рассмотрим максимальный s-t-поток / в G' и остаточную сеть G' Построим ациклический орграф G" из G'p для чего стянем множество S вершин, достижимых из 5, в вершину vs, а также стянем множество Г вершин, из которых достижима вершина t, в вершину vT, Наконец, стянем каждую компоненту сильной связности X графа GL — (S U Г) в вершину их. Существует взаимно однозначное соответствие между минимальными s-t-разрезами bG'h ориентированными vT-us-разрезами в G" (см. также упражнение 5 из гл. 8). Этот факт легко следует из теоремы о максимальном потоке и минимальном разрезе 8.6 и леммы 8.3). В частности, А является объединением всех таких X, что Vx € V(G"). Поскольку g(A) > |5F(A)| = = |5~,(А)| = value (/) и функция g правильная, существует вершина vx е. V(G"), для которой X с А и g(X) > value (/). Сейчас мы покажем, как найти А. Если g(T) > value(/), то положим Z := Т, иначе обозначим через vz произвольную вершину графа G", для которой g(Z) > > value(/) и g(Y) < value(/) для всех вершин Vy g V(G")\{vz}, из которых достижима вершина uz. Положим В :=Tu\\{Y: uz достижима из iy в G"). Поскольку value(/) < g{Z) = g(V(G)\Z) < max{g(V(G)\B),g(B\Z)} = max{g(B),g(B\Z)} и g(B\Z) < max{g(7): Vy e V(G")\{ifcb У ^ ^} < value(/), имеем g(B)>value(/) = |5-/(B)| = |5F(B)|. Следовательно, множество В является нарушенным относительно (g,F). Поскольку В не является собственным подмножеством множества А (так как А активно) и оба множества АиВ содержат Г, по лемме 20.22 имеем А с в. Но тогда Z = X, так как uz — единственная вершина, для которой Z с в и g(Z) > value(/), и А содержит все множества Y, для которых вершина uz достижима из iy (поскольку 5~, (А) = 0). Следовательно, А = В. Для заданной пары (5, t) множество В, описанное выше, может быть найдено (если оно существует) за линейное время. Для этого требуется построить G" (используя алгоритм поиска сильно связных компонент), а также найти топологический порядок для вершин графа G" (см. теорему 2.20), взяв в качестве
§ 20.4. Приближенный прямо-двойственный алгоритм 587 первой вершины ит. Данную процедуру следует повторять для всех таких упорядоченных пар (s, t), что {s, t} € F(H). Таким образом, мы получаем список из не более чем 2п — 2 кандидатов в активные множества. Основное время уходит на построение 0(п) максимальных потоков bG7h выполнение 0(п2) обращений к оракулу для вычисления g. В конце потребуется еще 0(п2) единиц времени на то, чтобы выбросить из списка те нарушенные множества-кандидаты, которые не являются минимальными. ? Если значение maxScy(G) g(S) невелико (см. упражнение 10), то время работы можно улучшить. Псевдокод описанного алгоритма приводится ниже. Primal-Dual Network Design (прямо-двойственный алгоритм для задачи о проектировании сети) Вход: неориентированный граф G, веса с: F(G) —> R+ и оракул для правильной функции /: 2V^ —> Z+. Выход: множество F с ?(G), являющееся выполняющим для /. (Т) If F(G) не является подходящим для / then stop (задача несовместна). (2) Присвоить F :=0,к := maxu€V(G) /(М) и р := 1. (3) Присвоить i := 0. Присвоить n(v) := 0 для всех и € V(G). Обозначить через j4 семейство активных относительно (F, fp) множеств, где функция fp определена равенством fp(S) := max{/(S) + р — к, 0} для BcexScy(G). 0 While j4 ф 0 do: Присвоить i := i + 1. ,_, . f c(e) — n(v) — n(w) , ill с ^дл\ тЛ Присвоить е:=шш||м1^;7еДоЦ,: e = {v,w}e\JA^5G(A)\FJ, и пусть е{ — ребро, на котором достигается этот минимум. Увеличить п(у) на е для всех v е |JAG^ А. Присвоить F := F U {ej. Обновить л/. (5) For ; := i to 1 do: If F\{e;} является подходящим для fp then присвоить F := F\{e;}. (6) If p = к then stop else присвоить p := p +1, goto (3). По теореме 20.20 проверку на совместность на шаге ® можно выполнить за время 0(п4 + пв). Перед тем как перейти к обсуждению шагов (3) и 0, мы покажем, что множество F, которое вернул алгоритм, действительно является подходящим для /. Обозначим через Fp множество F, полученное к концу р-й фазы (и положим F0 := 0). Лемма 20.24. В процессе выполнения р-й фазы множество F остается почти подходящим для fp и Р\Рр_г является лесом. К концу р-й фазы множество Fp является подходящим для fp.
588 Глава 20. Задачи о проектировании сети Доказательство. Поскольку A(S) = max{0, /(S) + 1 -fc} < max{0, max ДМ) + 1 -fc} < 1 (так как функция / правильная), пустое множество является подходящим для /а. После шага 0 активных множеств больше не остается, поэтому F является подходящим для fp. Шаг ® напрямую поддерживает данное свойство. Следовательно, каждое множество Fp является подходящим для fp, а значит, почти подходящим для fp+l (р = 0,..., fc—1). Чтобы убедиться, что F \ Fp_x представляет собой лес, заметим, что каждое ребро, добавленное в F, принадлежит 5(A) для некоторого активного множества А и является первым ребром из б (Л), добавленным в F на этой фазе (поскольку |5F (А)\ =fp-i(A)). Следовательно, никакое добавленное ребро не создает цикл в F\Fp_x. ? Таким образом, для нахождения j4 можно применить теорему 20.23. Каждая фаза состоит из не более чем п — 1 итераций. Осталось выяснить, как находить значения е и е{ на шаге 0. Лемма 20.25. В пределах одной фазы количество времени, достаточное для вычисления значений е ие{на шаге 0, составляет 0(тп). Доказательство. Фиксируем фазу алгоритма. На каждой итерации будем поступать следующим образом. Сначала присвоим каждой вершине номер активного множества, в котором она лежит (или нуль, если нет такого). Это можно сделать за время 0(п) (заметим, что активные множества попарно не пересекаются по лемме 20.22). Теперь для каждого ребра е можно за время 0(1) вычислить количество активных множеств, которые содержат равно один из концов е. Так можно найти значения е и е{ за время О(ш). Поскольку в фазе не более п — 1 итераций, лемма доказана. ? Отметим, что, усложнив реализацию, Габоу, Гуманс и Уильямсон [31] смогли улучшить время работы до 0(п2^/TogTogn). Теорема 20.26 (Гуманс и др. [37]). Алгоритм Primal-Dual Network Design находит множество F, которое подходит для /. Время его работы составляет 0(kn5 + кп3в). Здесь к = maxScy(G) f(S)>n = |V"(G)|, а в — время работы оракула для f на одном запросе. Доказательство. Множество F является подходящим по лемме 20.24, поскольку Л = /. Оракул для функции fp можно построить из оракула для /; каждый запрос будет выполняться за время 0 + 0(1). Построить активные множества можно за время 0(п4 + п20) (см. теорему 20.23), причем это нужно сделать O(nfc) раз. Найти значения е и ei можно за время 0(п3) для каждой фазы (см. лемму 20.25). Остальные действия легко выполнить за время 0(kn2). ? В упражнении 10 показано, как улучшить время работы до 0(к3п3 + кп3в). Его также можно улучшить до 0(к2п3 + кп2в); для этого придется модифицировать шаг ® и использовать более сложную реализацию (Габоу, Гуманс и Уильям-
§ 20.4. Приближенный прямо-двойственный алгоритм 589 сон [31]). При фиксированном к и в = 0(п) мы, тем самым, получаем алгоритм, время работы которого составляет 0(п3). В частном случае задачи о проектировании «живучей» сети (в которой / определяется условиями связности гху) время работы можно улучшить до 0(к2п2 у/\о%\о%п). Проанализируем теперь точность алгоритма и покажем, что он действительно является прямо-двойственным в смысле линейного программирования. Задача, двойственная к задаче (20.6), выглядит следующим образом: максимизировать V^ /(S) ys — 2_. %е SCV(G) eeE(G) при условиях ^ ys < с(е) + ze (ее E(G)), ,2Q щ S:ee5(S) ys>0 (S С V(G)), ze>0 (e€E(G)). Данная двойственная задача играет в анализе алгоритма ключевую роль. Покажем, что на каждой фазе р алгоритм неявно строит допустимое решение у(р) двойственной задачи. В начале фазы положим у(р) =0. Затем на каждой итерации этой фазы станем увеличивать у^ на е для каждого множества Agj^. Более того, положим если eeFp_l5 иначе. Отметим, что в самом алгоритме нет смысла поддерживать это решение двойственной задачи в явном виде, так как переменные n(v) = ?S: y(ES ys (v e V(G)) уже содержат всю необходимую информацию. Лемма 20.27 (Уильямсон и др. [63]). На любой фазе р пара (у(р), з(р)), определенная выше, является допустимым решением задачи (20.10). Доказательство. Условие неотрицательности, очевидно, выполнено. Ограничения на ребра е е Fp_2 соблюдаются по определению z\ (р) Кроме того, согласно шагу 0 алгоритма имеем J] ys(p) < с(е) для всех е е E(G) \Fp_l9 S:ee5(S) поскольку е добавляется к F, когда достигается равенство, и после этого множества S, для которых е е 5(S), больше не являются нарушенными относительно (F,fp) (напомним, что множество F\{e} 2 i^-i является почти подходящим для /р по лемме 20.24). ? Обозначим через OPT(G, с, /) оптимальное значение целочисленной линейной программы (20.1). Докажем теперь следующий факт.
590 Глава 20. Задачи о проектировании сети Лемма 20.28 (Тумане и др. [37]). Для всех pe{l,...,fc} выполняется неравенство SCV(G) Доказательство. Значение OPT(G, с, /) не меньше оптимума линейной релаксации (20.6). Последний можно оценить снизу через значение целевого функционала для допустимого решения двойственной задачи (по теореме двойственности 3.20). В частности, поскольку (y^p\z^) является допустимым решением двойственной задачи (20.10) по лемме 20.27, отсюда следует, что OPT(G, с, /) > J] /(S) 7s(p) - ? *<*>. SCV(G) e€?(G) Теперь заметим, что для любого SQV(G) переменная ys может стать положительной только в том случае, если S является нарушенным относительно (fp, Fp_x). Следовательно, yw>o => |sVi(s)|</(s) + p-fc-i. Итак, имеем OPT(G, c,f)>Y, /(S) У** ~ Z zeP) = SCV(G) e€E(G) SCV(G) eGFp_j 4S:ee5(S) = S/w%(p}-Si5iv-x®i%(p) = SCV(G) Scy(G) = S (/(S)-|5Fp_i(S)|)yip)>J](fc-P + 1)^(P)- D SCV(G) SCV(G) Лемма 20.29 (Уильямсон и др. [63]). На каждой итерации фазы р справедливо неравенство J]|5MVl(A)|<2|.rf|. Доказательство. Рассмотрим произвольную итерацию на р-й фазе и назовем ее текущей. Обозначим через j4 семейство активных множеств к началу этой итерации, и пусть H:=(MVi)nU5(A)' Отметим, что все ребра из Я обязаны быть добавлены во время текущей итерации или на одной из последующих. Пусть е € Я. Множество Fp \ {е} не является подходящим для fp, иначе е было бы удалено на шаге (5) р-й фазы. Обозначим через Хе множество минимальной мощности, нарушенное относительно (fp,Fp\{e}). Поскольку множество Fp \ {е} 5 Fp_! является почти подходящим для fp, имеем 5F \F _ (Хе) = {е}.
§ 20.4. Приближенный прямо-двойственный алгоритм 591 Докажем, что семейство ЭС \— {Хе: е е Н} ламинарно. Предположим, что существуют два ребра е, е' е Н (скажем, е было добавлено раньше е'), для которых все части Хе\Хе/, Хе>\Хе иХеПХе> не пустые. Поскольку Хе и Хе> являются нарушенными к началу текущей итерации, заключаем, что либо множества Хе и Хе> и Хе С\Хе> оба нарушенные, либо множества Хе\Хе> и Хе>\Хе оба нарушенные (по лемме 20.22). В первом случае l + i^l^^ux^H^ в силу субмодулярности функции \5F \F J (лемма 2.1(b)). Получаем \5FAFpjXeUXe,)\ = \5FAFpjXenXe,)\ = 1, что противоречит минимальности множества Хе или Хе, (поскольку вместо них можно было бы выбрать множество Хе Г)Хе/). Во втором случае по лемме 2.1(г) имеем |5MVi(Xe\*e/)| = \5FAFpjXe,\Xe)\ = 1, и, взяв меньшее из множеств Хе\Хе> и Хе>\Хе, получаем противоречие с минимальностью множества Хе или Хе>. Рассмотрим теперь древесное представление (Г, (р) для семейства ЭС, где Г представляет собой ориентированное дерево (см. предложение 2.14). Для каждого е еН множество Хе является нарушенным к началу текущей итерации, поскольку е еще не было добавлено. Тогда по лемме 20.22 имеем А с Хе или АГ\Хе = 0 для всех Ае я$. Следовательно, для каждого А € л/ множество {(/?(а): а е А} содержит лишь один элемент; обозначим его через </?(А). Назовем вершину и е V(T) занятой, если v = (/?(А) для некоторого Ае^. Докажем, что все вершины Т нулевой исходящей степени являются занятыми. А именно, для каждой вершины и множество 1р~г(и) является минимальным элементом семейства ЭС. Минимальный элемент семейства ЭС является нарушенным к началу текущей итерации, а значит, он содержит активное множество и, следовательно, является занятым. Тогда средняя исходящая степень занятых вершин меньше единицы. Рис. 20.3
592 Глава 20. Задачи о проектировании сети Заметим, что существует взаимно однозначное соответствие между Н, ЗС и Е(Т) (см. рис. 20.3; в части (а) изображено множество Н и элементы семейств si (квадраты) и ЭС (круги); в части (б) изображено дерево Г). Следовательно, для всех и е V(T) имеем \5T(v)\ = |5„({х € V(G): v(x) = v})\ > ? |5,рХ^(А)|. Суммируя по всем занятым вершинам, получаем J] |5MVi(A)|< J \ST(v)\<2\{vsV{T):v3aHxia}\<2\j^\. D Aerf ueV(T) занята Доказательство следующей леммы показывает роль условий дополняющей нежесткости. Лемма 20.30 (Уильямсон и др. [63]). Для всех р е. {1,..., fc} справедливо неравенство _-^ _, , . 2с(е)<2Х;У5(Р)- eGF^Fp.! SCV(G) Доказательство. На любой фазе р алгоритм поддерживает условия дополняющей нежесткости для прямой задачи: eeF\Fp_! => J] ys(p) =Ф). S:ee8(S) Следовательно, eeFp\Fp_j eeFpVF^SieefiCS) У Scy(G) Таким образом, остается показать, что Е^р)|гч\^Д5)|<2Х>]р). (2o.li) SCV(G) SCV(G) К началу р-й фазы у^ = 0, поэтому условия (20.11) выполнены. На каждой итерации левая часть увеличивается на ХА€^ 6I^f \f _г (^)L а правая увеличивается на 2е| j^|. Тогда по лемме 20.29 условия (20.11) остаются выполненными. ? Неравенство (20.11) тесно связано с двойственными условиями дополняющей нежесткости , , ys(p)>0 => |SFp(S)| = /p(S). При этом условие \5F (S)| > fp(S) выполнено все время, поэтому неформально неравенство (20.11) означает, что в среднем справедлива оценка \5F (S)| < 2fp(S). Как мы увидим, из этого факта следует 2-приближение в случае fc = 1. Теорема 20.31 (Гуманс и др. [37]). Алгоритм Primal-Dual Network Design находит множество F, подходящее для /, суммарный вес которого не превосходит 2H(fc) ОРТ'(G, с, /), и время его работы составляет 0(кп5+кп3в). Здесь n = \V(G)\9 fc = maxScv(g) /(S), H(fc) = 1 +1/2 +... + 1/fc, а 9 — время работы оракула для f на одном запросе.
§20.5. Алгоритм Джайна 593 Доказательство. Корректность алгоритма и оценка времени его работы были доказаны в теореме 20.26. Суммарный вес множества F равен eeF р=1 Ve€Fp\Fp_1 J р=1 VSCV(G) J к <2Ti fc^TT 0PT(G'c' /} = 2H{k) 0PT(G'c'л p=l согласно леммам 20.30 и 20.28. ? Приближенный прямо-двойственный алгоритм, рассмотренный в настоящем параграфе, был обобщен в работе Бертсимаса и Тео [14]. Близкая, но явно более сложная задача возникает при рассмотрении вершинной связности вместо реберной (требуется найти подграф, содержащий не менее rtj внутренне вершинно непересекающихся i-j-путей для всех i и j). Некоторые комментарии по поводу этой задачи будут приведены в конце следующего параграфа. § 20.5. Алгоритм Джайна В этом параграфе мы представим алгоритм Джайна [44], дающий 2-прибли- жение для задачи о проектировании «живучей» сети. Хотя данный алгоритм гарантирует более точное приближение, чем в случае изученного выше прямо- двойственного метода, он имеет меньшее практическое применение, поскольку основан на эквивалентности задач оптимизации и отделения (см. §4.6). Алгоритм начинает работу с нахождения решения линейной релаксации (20.6). При этом можно рассматривать целочисленные пропускные способности ребер и: E(G) —» N на ребрах (т.е. разрешить брать ребро больше одного раза): минимизировать /^ с{е)хе e€?(G) при условиях ^xe>f(S) (Scy(G)), (20.12) ee5(S) хе>0 (e€E(G)), xe<ii(e) (eeE(G)). Нашей конечной целью является целое решение. Однако если релаксация линейной программы всегда имеет полуцелое оптимальное решение, то его округлением можно получить алгоритм, дающий 2-приближение (см., например, упражнение 6 из гл. 16). К сожалению, задача (20.12) не обладает таким свойством. Чтобы в этом убедиться, рассмотрим граф Петерсена (рис. 20.4), для которого и{е) = с(е) = 1 для любых ребер е и /(5) = 1 для всех непустых множеств S с V(G). Оптимальное значение линейной программы (20.12) равно 5 {хе = 1/3 для всех е является оптимальным решением), и для любого оптимального решения справедливо
594 Глава 20. Задачи о проектировании сети равенство 2 ее б (и) хе = 1 Для всех и € V(&). Поэтому во всяком оптимальном полуцелом решении хе = 1/2, если ребро е принадлежит гамильтонову циклу, и хе=0 иначе. Однако граф Петерсена не гамильтонов. Тем не менее, решив релаксированную линейную программу (20.12), мы сможем получить 2-приближе- ние. Ключевым является следующее наблюдение: для любого оптимального базисного решения х существует такое ребро е, что хе > 1/2 (см. теорему 20.33). Алгоритм будет округлять такие компоненты и фиксировать их значения, а далее будет рассматривать задачу, в которой хотя бы на одно ребро меньше. Перед тем как перейти к детальному изложению, введем несколько определений. Для множества S с V(G) обозначим через Xs характеристический вектор множества 5G{S) относительно E(G). Для любого допустимого решения х задачи (20.12) назовем множество S с V(G) точным, если Xsx = /0>). Лемма 20.32 (Джайн [44]). Пусть задан граф G, и пусть т := |?(G)|. Рассмотрим слабо супермодулярную функцию /: 2V(G) —> Z+. Обозначим через х базисное решение линейной программы (20.12) и предположим, что 0 < хе < 1 для всех е е E(G). Тогда существует ламинарное семейство 9&, состоящее из т точных подмножеств множества V{G), для которых векторы Хв> Ве9Ь, линейно независимы в R?(G). Доказательство. Пусть % —ламинарное семейство точных подмножеств множества V(G), для которых векторы Хв> В е 9&, линейно независимы. Предположим, что \&\ < т. Покажем тогда, как расширить ^. Поскольку я: является базисным допустимым решением задачи (20.12), т. е. вершиной политопа, существует т линейно независимых условий, в которых достигается равенство (см. предложение 3.9). Так как 0 < хе < 1 для всех eeE(G), эти условия соответствуют семейству У (не обязательно ламинарному), состоящему из т точных подмножеств V{G), для которых векторы Xs (S ^ У) линейно независимы. Поскольку \&\<т, существует точное подмножество S с V(G), для которого векторы Хв> В е & и {S}, линейно независимы. Выберем такое S, что значение y(S) := \{В е Л: В и S образуют кроссинговую пару}| минимально. Напомним, что В и S образуют кроссинговую пару, если В П S ф 0, B\S ф 0 иБ\Вф0. Если y(S) = 0, то можно просто добавить Sb J. Иначе предположим, что y(S) > 0, и пусть множество Be <% образует с S кроссинговую пару. Поскольку функция / слабо супермодулярна, получаем, что /(S\B)+/(B\S)>/(S)+/(B)=2^+ 2>* = ee5G(S) ee5G(B) e&6G(S\B) e(=5G(B\S) eeEG(SnB,V(G)\(SUB)) w
§20.5. Алгоритм Джайна 595 или /(SnB)+/(SUB)>/(S)+/(B)=2*e + Yix*= 2 х*+ 2 *е + 2 2 *- e€5G(S) ee5G(B) ee5G(SnB) ee5G(SUB) e<=EG(S\B,B\S) В первом случае оба множества S\B и B\S точные и EG(SnB, V(G)\(SUB)) = 0, откуда следует, что Xs\b + Xb\s = Xs + Хв-^о втором случае оба множества S ПВ и SUB точные и EG(S\B,B\S) = 0, откуда следует, что Xshb + Zsub = Zs + *в- Итак, существует хотя бы одно множество Г среди S\B, B\S, SnB и SUB, для которого векторы %в, В е 38 и {Т}, линейно независимы. Покажем теперь, что у(Т) < y(S), что противоречит выбору S. Поскольку В образует с S кроссинговую пару, но не образует таковой с Т, остается показать, что нет множества С е 3&, которое образует кроссинговую пару с Г, но не образует таковой с S. Действительно, так как Г является одним из множеств S\B, B\S, SnB и SUB, любое множество С, образующее кроссинговую пару с Т, но не образующее таковой с S, должно образовывать кроссинговую пару с В. Поскольку & ламинарно иВе^, получаем, что С ф 38. ? Перейдем теперь к доказательству основной теоремы в алгоритме Джайна. Теорема 20.33 (Джайн [44]). Пусть заданы граф G и слабо супермодулярная функция /: 2V(G) -» Z+, не равная тождественно нулю. Обозначим через х базисное решение линейной программы (20.12). Тогда существует ребро е е E{G), для которого хе > 1/2. Доказательство. Можно считать, что хе > 0 для всех ребер е, иначе е можно удалить. Предположим, что 0<хе < 1/2 для всех е е E(G), и получим противоречие. По лемме 20.32 существует ламинарное семейство 38 точных подмножеств множества V(G) мощности т := |?(G)|, для которого векторы Хв> В е 38, линейно независимы. Из линейной независимости следует, что все векторы Хв ненулевые, поэтому 0 < Хвх — f(B), и> значит, /(В) > 1 для всех В € 98. Более того, |JB(E <? 5G(B) = E{G). Из предположения, что хе<\/2 для каждого е е ?(G), следует , что \5G(B)\ > 2/(В) + 1 ^ 3 для всех Bef. Обозначим через (Г, (/?) древесное представление для 38. Для каждой вершины t дерева Г обозначим через Tt поддерево с корнем t (Tt содержит t и всех его потомков). Далее, пусть Bt := {i> е V(G): y(v) е V(Tt)}. По определению древесного представления имеем Вг = V (G) для корня г дерева Ги^ = {Bt: t е V(T) \ {г}}. Утверждение. Для всех tGV(T) верно неравенство ^UGB \8G(v)\> 2\V(Tt)\ + 1, причем равенство достигается, только если \5G(Bt)\ = 2/(Bt) + 1. Докажем данное утверждение индукцией по |V(rt)|. Если 5+(.t) = 0 (т. е. У№) = {f})' то Bt является минимальным элементом семейства 38, откуда ? |5G0>)I = |5G(Bt)| > 3 = 2|V(Tt)| +1, veBt причем равенство достигается, только если |5G(Bt)| = 3 (откуда следует, что
596 Глава 20. Задачи о проектировании сети Рис. 20.5 Перейдем к шагу индукции. Пусть t€V(T) —такая вершина, что 5j(t) Ф 0, т. е., скажем, 5j(t) = {(t^),..., (t,sfc)}, где к — количество детей вершины t. Пусть Ег := U-=i SG(BSf)\5G(Bt) и Е2 := SG(Bt\ IJti *J (см. рис.20.5). Заметим, что Е1иЕ2ф 0, поскольку в противном случае Хв( = 2i=i Хв5> что противоречит линейной независимости векторов ^в, В g J (отметим, что либо Bt е BS, либо t = г, и тогда #Bf = 0). Тогда имеем |5G(Bt)| + 2\Ег\ = J] |5G(BSi)| + |Е2|, (20.13) i=i и, поскольку множества BSi,..., BSk и Bt точные, справедливо равенство к /(Bt) + 2 ? *е = 2 W + 2] *е- (20.14) ееЕг i=l ееЕ2 Кроме того, по предположению индукции имеем к к 2 1«С(«01>Е S l5G(^)l + |?2l>&lV№^ + 1) + lE2l=2|V(Tt)|-2+fc + |E2|. u<=Bt i=l u€Bs. i=l (20.15) Рассмотрим теперь три случая. Случай 1: к + \Е2\>3. Тогда согласно неравенству (20.15) имеем 5]|5G(i;)|>2|V(Tt)| + l, veBt причем равенство достигается, только если fc + \Е2\ = 3 и |5G(BS.)| = 2/(Bs) + 1 для i = 1,..., fc. Необходимо показать, что |5G(Bt)| = 2/(Bt) + 1. Используя соотношение (20.13), получаем к к к \5G(Bt)\ + 2\E1\ = J]\5G(BSi)\ + \E2\ = 2Yif(BSi) + k + \E2\ = 2Yif(BSi) + 3, i=l i=l i=l
§20.5. Алгоритм Джайна 597 следовательно, |5G(Bt)| нечетно. Кроме того, из равенства (20.14) следует, что к |5G(Bt)| + 2|Ej=22/(^) + 3 = 2/(Bt)+4j]xe-2 5]^ + 3<2/(Bt) + 2|E1|+3, поскольку ЕгиЕ2ф 0. Имеем |5G(Bt)| = 2/(Bt) +1, что и требовалось. Случай 2: к = 2 и Е2 = 0. Тогда Еа ^ 0. Из равенства (20.14) следует, что число 2^ееЕ хе Целое, значит, 2^]ее? хе < \Ег\ — 1. Заметим, что Ег ф 5G(BSi) поскольку в противном случае Хв5 — Xbs + Хв^ что противоречит предположению о линейной независимости векторов ^в, Ве^. Аналогично Ег ф 5G(?S2). Для i = 1,2 получаем 2/(BSf) = 2 J] xe + 2 J]jce<|5G(B5i)\B1| + |B1|-l = |5G(BS|)|-l. ее5(Вч)\Е1 ее^ По предположению отсюда следует, что 2 |5G(i;)|> 21^)1 + 1, veBs. si и аналогично неравенству (20.15) получаем 2 2 yeBt i=l veBs. i=l Случай 3: fc=l и |E2I^1- Заметим, что из равенства fc=l следует, что E1czE2. Тогда |Е21 = 1- Согласно соотношению (20.14) имеем е<=Е2\Ег е(=Ег е€?2 ееЕг В правой части равенства стоит целое число, а число в левой части целым не является. Следовательно, случай 3 невозможен. Утверждение доказано. Для t = г имеем ?|5G(z,)|>2|V(T)| + l, ueV(G) т. е. 2|E(G)| > 2|У(Г)|. Но, с другой стороны, |У(Г)|-1 = |Б(Г)1 = |Я| = |В(С)|, и мы получаем противоречие. ? Полученный результат был обобщен в работе Нагараджана, Рави и Сингха [58]. Опираясь на доказанное, можно предложить следующий алгоритм.
598 Глава 20. Задачи о проектировании сети Jain's Algorithm (алгоритм Джайна) Вход: неориентированный граф G, веса с: E(G) —> R+, пропускные способности ребер и: E(G) —> N и правильная функция /: 2V(G) —> Z+ (заданная в виде оракула). Выход: функция х: E(G) —> Z+, удовлетворяющая условию ][]ее5 (s) *е ^ /(S) для всех S с y(G). (1) Присвоить д:е := 0, если с(е) > 0, и хе := и[е), если с(е) = 0 для всех е еE(G). (2) Найти оптимальное базисное решение у для линейной программы (20.12) относительно с, и и /' где i/(e) := u(e) — хе для всех е е E(G) и f'(S) := '•= /CS) -Se65c(s) *е Для всех S с v(G). If уе = 0 для всех е е E(G) then stop. (3) Присвоить хе := хе + [уе] для всех таких е е ?(G), что уе > 1/2. Goto (2). Теорема 20.34 (Джайн [44]). Алгоритм Джайна находит целое решение линейной программы (20.12), стоимость которого не более чем в два раза превосходит оптимум линейной программы. При подходящей реализации время работы данного алгоритма полиномиально. В частности, он служит 2-приближением для задачи о проектировании «живучей» сети. Доказательство. Дяя начала заметим, что функция /' поддерживается слабо супермодулярной. Действительно, функция / правильная, а значит, она слабо супермодулярна по предложению 20.18. Теперь для подмножеств А, В с y(G) имеем e&5G(A) ee5G(B) ee5G(AnB) ee5G(AUB) И ?*e+?*e > Ya X*+ 2 *'• e(=5G(A) eeSG(B) e<=5G(A\B) ee5G(B\A) Следовательно, функция /' слабо супермодулярна. После первой итерации ee5G(S) для всех S с V(G). По теореме 20.33 на каждой последующей итерации хотя бы одно из значений хе увеличивается хотя бы на 1. Поскольку после первой итерации каждое хе увеличится не больше чем на |E(G)|/2, количество итераций не превышает |E(G)|2/2. Осталось понять, как реализовать шаг (2). По теореме 4.21 достаточно научиться решать соответствующую задачу отделения. Для заданного вектора
Упражнения 599 у е R+ } требуется проверить для всех S с V(G) неравенства 2>i>//(S)=/(S)-J]^ ee5G(S) e<=5G(S) и найти хотя бы одно нарушенное (если оно есть). Поскольку функция / правильная, по теореме 20.20 это можно сделать за время 0(п4 + пв), где п = \V(G)\, а в — сложность вычисления значения / с помощью оракула. Докажем теперь индукцией по числу итераций, что алгоритм действительно строит 2-приближение. Если алгоритм закончит работу сразу же после первой итерации, то решение нулевое и, значит, оптимальное. В противном случае обозначим через х(1) и у(1) векторы х и у после первой итерации. Пусть также х^ обозначает вектор х в конце работы алгоритма. Положим ze :=у^\ если уе(1) < 1/2, и ze = 0 иначе. Тогда ос(1) < 2с(у(1) —z). Обозначим через /(1) функцию, определяемую равенством /«(S):=/(S)-2>e(1)- ee5G(S) Поскольку z является допустимым решением для f^\ по предположению индукции получаем, что c(xw — х(1)) < 2cz. Следовательно, cx(t) < сх(1) + c(x(t) -jc(1)) < 2с(у(1) -г) + 2cz = 2су(1). Поскольку су^ является нижней оценкой для значения оптимального решения, требуемая оценка погрешности доказана. ? Мелконян и Тардош [57] расширили технику Джайна на ориентированный случай. Флейшер, Джайн и Уильямсон [28], Чериян и Ветта [21], а также Чужой и Ханна [24] показали, как учесть в задаче требования вершинной связности определенного вида. Отметим, впрочем, что из работ Кортзарца, Краутгеймера и Ли [52], а также Чакраборти, Чужой и Ханны [20] следует, что задачу о проектировании «живучей» сети в случае вершинной связности приблизить трудно. Упражнения 1. Пусть (G, с, Г) — экземпляр задачи о дереве Штейнера, где граф G полный, а функция с: E(G) —> R+ удовлетворяет неравенству треугольника. Докажите, что тогда существует оптимальное дерево Штейнера для Г, содержащее не более |Г| — 2 точек Штейнера. 2 (Берн, Плассман [13]). Докажите, что задача о дереве Штейнера является MAXSA/P-трудной даже для полного графа, веса всех ребер которого равны 1 или 2. Указание. Модифицируйте доказательство теоремы 20.3. Что будет, если G окажется несвязным?. 3 (Эриксон, Монма и Вейнотт [27]). Придумайте алгоритм для решения задачи о дереве Штейнера в случае планарного графа со всеми терминалами на внешней грани, время работы которого составляет 0(n3t2), и докажите его корректность.
600 Глава 20. Задачи о проектировании сети Указание. Покажите, что в алгоритме Дрейфуса — Вагнера достаточно рассмотреть только множества [/ст, для которых существует путь Р с вершинами на внешней грани, удовлетворяющий условию V(P) П Г = U (без ограничения общности можно считать, что граф G двусвязный). 4. Придумайте алгоритм для решения задачи о дереве Штейнера со временем работы 0(п3) для таких экземпляров (G,c,T), что |V(G)\T| < fc, где к — некоторая константа. 5. Докажите следующее усиление теоремы 20.6. Пусть (G, с, Г) —такой экземпляр задачи о дереве Штейнера, что \Т\>2, {Gyc) — его метрическое замыкание, S — оптимальное дерево Штейнера для Т в G и М — минимальное остовное дерево в G[T] относительно с. Тогда с(М) <2(l-?)c(S), где через Ь обозначено количество листьев (вершин степени 1) в дереве S. Покажите, что данная оценка точна. 6. Докажите, что 4-отношение Штейнера р4 равно 3/2. 7. Предложите усиление оценки из предложения 20.10 для случаев \Т\ = 3 и|Г|=4. 8 (Хуллер и Вишкин [49]). Придумайте комбинаторный алгоритм, дающий 2-приближение для задачи о проектировании «живучей» сети в случае, если r{j=k для всех i,; (т. е. для задачи о fc-реберно связном подграфе минимального веса). Указание. Замените каждое ребро парой противоположно направленных дуг (с тем же весом) и воспользуйтесь либо упражнением 25 из гл. 13, либо теоремой 6.18. Замечание. Дополнительные результаты об этой задаче и близких к ней задачах см. в следующих работах: Хуллер и Рагхавачари [48], Габоу [30], Джоти, Рагхавачари и Варадараджан [45], а также Габоу и др. [32]. 9. Покажите, что в частном случае задачи о проектировании «живучей» сети релаксацию линейной программы (20.6) можно записать в виде линейной программы полиномиального размера. 10 (Габоу, Тумане и Уильямсон [31]). Докажите следующее усиление теоремы 20.23. Для правильной функции g (заданной при помощи оракула) и множества F ce(g), почти подходящего для g, активные относительно (g, F) множества можно построить за время 0(k2n2 + п26), где п = |V(G)|, fc=maxScy(G) &($)> а ^ — сложность вычисления значения g оракулом. Указание. Идея состоит в том, чтобы остановить процесс поиска максимального потока, как только его значение достигнет к, поскольку разрезы величины к или больше не важны для нашего рассмотрения. Алгоритм Гомори—Ху (см. §8.6) следует модифицировать следующим образом. Сопоставим каждой вершине дерева Г лес (а не просто множество вершин). Ребра этих лесов будут отвечать задачам поиска максимального потока, для которых величина максимального потока составляет хотя бы к. На каждой итерации модифицированного алгоритма Гомори — Ху будем выбирать две вершины snt из разных компонент связности леса, относящегося к одной вершине дерева Т.
Упражнения 601 Если величина максимального потока равна хотя бы fc, то добавим ребро {s, t} в лес. В противном случае разделим вершину аналогично оригинальной процедуре Гомори—Ху. Остановим работу алгоритма, когда все леса станут деревьями. В конце заменим каждую вершину Т ее деревом. Ясно, что модифицированное таким образом дерево Гомори—Ху также обладает свойствами (20.8) и (20.9). Если вычисления потом производить с помощью алгоритма Форда — Фалкерсона, останавливаясь после построения fc-ro увеличивающего пути, то сложность алгоритма составит 0(fc2n2). Замечание, Отсюда следует прямо-двойственный алгоритм для задачи о проектировании «живучей» сети, время работы которого составляет 0(к3п3 + кп36). 11* (Габоу, Гуманс и Уильямсон [31]). Рассмотрим задачу о проектировании «живучей» сети, которая, как мы уже убедились, является частным случаем задачи (20.1). (а) Рассмотрим максимальное остовное дерево Т в полном графе со стоимостями rtj на ребрах {i, j}. Покажите, что если множество ребер удовлетворяет условиям связности для ребер дерева Г, то оно удовлетворяет всем условиям связности. (б) Докажите корректность следующей оптимизации. В процессе построения активных множеств в начале фазы р можно искать только один увеличивающий i-j-путь для всех {i,j} е Е(Т) (можно использовать i-j-поток из предыдущей фазы). Если увеличивающего i-j-пути нет, то остается не более двух кандидатов на роль активных множеств. Среди этих 0(п) кандидатов можно найти активные множества за время 0(п2). (в) Покажите, что для обновления на каждой фазе необходимых структур данных достаточно 0{кп2) времени. (г) Докажите, что активные множества можно построить за время 0(fc2n2). 12. Покажите, что шаг (5) в прямо-двойственном алгоритме проектирования сети необходим: без него алгоритм не сможет достичь конечной погрешности даже при fc = 1. 13 (Гуманс и Уильямсон [38]). На настоящий момент не найдено алгоритма для решения задачи о Г-соединении минимального веса, работающего на плотных графах в худшем случае быстрее, чем 0{п3) (см. следствие 12.12). Пусть G — неориентированный граф, заданы веса с: Е (G) —>К+, и пусть выбрано множество Г с y(G) четного размера. Рассмотрим линейную программу (20.1), где /(S) := 1, если |S П Т\ нечетно, и /(S) := 0 иначе. (а) Докажите, что прямо-двойственный алгоритм, примененный к задаче (20.1), найдет лес, в котором каждая компонента связности содержит четное число элементов множества Г. (б) Докажите, что любое оптимальное решение задачи (20.1) является минимальным по весу Г-соединением, к которому, возможно, добавлены несколько нулевых ребер. (в) Прямо-двойственный алгоритм можно реализовать за время 0(п2 logn), если /(S) е {0,1} для всех S. Покажите, что отсюда можно получить алгоритм с той же оценкой сложности, дающий 2-приближение для задачи о Г-соединении минимального веса в случае неотрицательных весов.
602 Глава 20. Задачи о проектировании сети Указание. Из п. (а) следует, что алгоритм вернет лес F. Для всех компонент связности С леса F рассмотрим подграф G[V(C) П Г] и найдем обход, вес которого не более чем в два раза превышает вес компоненты С (см. доказательство теоремы 20.6). Возьмем теперь каждое второе ребро обхода. (Похожая идея лежит в основе алгоритма Кристофидеса, см. § 21.1.) 14. Найдите оптимальное базисное решение х для задачи (20.12), где G — граф Петерсена (см. рис. 20.4) и /(5) = 1 для всех непустых множеств S с V(G). Найдите максимальное ламинарное семейство 38 точных относительно х множеств, для которого векторы %ъ, Be &8, линейно независимы (см. лемму 20.32). 15. Докажите, что оптимальное значение в задаче (20.12) может быть сколь угодно близко к половине значения оптимального целого решения. Замечание. Из алгоритма Джайна (см. доказательство теоремы 20.34) следует, что оно не может быть меньше половины. 16. Покажите, что, немного модифицировав алгоритм Джайна, можно достичь того, что количество итераций, на которых алгоритму придется решать линейную программу, не будет превышать |V(G)|2. А именно, если уе > 1 для некоторого е, то положим хе := хе + [уе\ для всех е, а иначе обновим х, как раньше. Указание. Докажите с использованием леммы 20.32, что во втором случае все кроме 2|V(G)| — 2 ребер будут удалены. 17. Обозначим через Т(т, п) верхнюю оценку времени, необходимого для решения линейной программы на шаге (2) алгоритма Джайна (не считая времени построения оптимального базисного решения). Пусть т = |E(G)| ип = |V(G)|. Опишите алгоритм, дающий 2-приближение для задачи о проектировании «живучей» сети, время работы которого составляет 0{т2Т{т, п)). Литература Общая литература [1] ChengX., Du D.-Z. Steiner Trees in Industry. Kluwer, Dordrecht, 2001. [2] Du D.-Z., Smith J. M., Rubinstein J. H. Advances in Steiner Trees. Kluwer, Boston, 2000. [3] Hwang F. K., Richards D. S., Winter P. The Steiner Tree Problem. North-Holland, Amsterdam, 1992. (Annals of Discrete Mathematics; Vol.53). [4] Goemans M.X., Williamson D. P. The primal-dual method for approximation algorithms and its application to network design problems // Approximation Algorithms for NP-Hard Problems. (D. S. Hochbaum, ed.), PWS, Boston, 1996. [5] Grotschel M., Monma C. L., Stoer M. Design of survivable networks // Handbooks in Operations Research and Management Science; Vol. 7; Network Models (M. O. Ball, T. L. Mag- nanti, С L. Monma, G. L. Nemhauser, eds.), Elsevier, Amsterdam, 1995. [6] Kerivin H., Mahjoub A. R. Design of survivable networks: a survey // Networks. 2005. Vol. 46. P. 1-21. [7] Promel H.J., Steger A. The Steiner Tree Problem. Vieweg, Braunschweig, 2002. [8] Stoer M. Design of Survivable Networks. Springer, Berlin, 1992. [9] Vazirani V. V. Approximation Algorithms. Springer, Berlin, 2001, Chapters 22 and 23.
Литература 603 Процитированные работы [10] Agrawal A, Klein P. N., Ravi R. When trees collide: an approximation algorithm for the generalized Steiner tree problem in networks // SIAM Journal on Computing. 1995. Vol.24. P.440-456. [11] Arora S. Polynomial time approximation schemes for Euclidean traveling salesman and other geometric problems // Journal of the ACM. 1998. Vol. 45. P. 753-782. [12] Berman P., Ramaiyer V. Improved approximations for the Steiner tree problem // Journal of Algorithms. 1994. Vol.17. P. 381-408. [13] Bern M., Plassmann P. The Steiner problem with edge lengths 1 and 2 // Information Processing Letters. 1989. Vol. 32. P. 171-176. [14] Bertsimas D., Teo C. From valid inequalities to heuristics: a unified view of primal-dual approximation algorithms in covering problems // Operations Research. 1998. Vol. 46. P. 503-514. [15] Bertsimas D., Teo C. The parsimonious property of cut covering problems and its applications // Operations Research Letters. 1997. Vol. 21. P. 123-132. [16] Bjorklund A., Husfeldt Г., Kaski P., Koivisto M. Fourier meets Mobius: fast subset convolution // Proceedings of the 39th Annual ACM Symposium on Theory of Computing. 2007. P. 67-74. [17] Borchers A., Du D.-Z. The fc-Steiner ratio in graphs // SIAM Journal on Computing. 1997. Vol.26. P.857-869. [18] Borradaile G., Klein P., Mathieu С An 0(n logn) approximation scheme for Steiner tree in planar graphs // ACM Transactions on Algorithms. 2009. Vol. 5. Article 31. [19] Byrka J., Grandoni F., Rothvofc T. Sanita L. Steiner tree approximation via iterative randomized rounding // Journal of the ACM. 2013. Vol. 60. Article 6. [20] Chakraborty Т., Chuzhoy J., Khanna S. Network design for vertex connectivity // Proceedings of the 40th Annual ACM Symposium on Theory of Computing. 2008. P. 167-176. [21] Cheriyan J., Vetta A. Approximation algorithms for network design with metric costs // SIAM Journal on Discrete Mathematics. 2007. Vol. 21. P. 612-636. [22] Chlebik M., Chlebikovd J. The Steiner tree problem on graphs: Inapproximability results // Theoretical Computer Science. 2008. Vol.406. P.207-214. [23] Choukhmane E. Une heuristique pour le probleme de l'arbre de Steiner // RAIRO Recherche Operationnelle. 1978. T.12. P.207-212 [in French]. [24] Chuzhoy J., Khanna S. An О (к3 logn) -approximation algorithm for vertex-connectivity survivable network design // Proceedings of the 50th Annual Symposium on Foundations of Computer Science. 2009. P. 437-441. [25] Dreyfus S. E., Wagner R. A. The Steiner problem in graphs // Networks. 1972. Vol. 1. P. 195-207. [26] Du D.-Z., Zhang Y., Feng Q. On better heuristic for Euclidean Steiner minimum trees // Proceedings of the 32nd Annual Symposium on Foundations of Computer Science. 1991. P.431-439. See also Mathematical Programming 1992. Vol.57. P. 193-202. [27] Erickson R. ?., Monma С L., VeinottA. F., Jr. Send-and-split method for minimum concave- cost network flows // Mathematics of Operations Research. 1987. Vol. 12. P. 634-664. [28] Fleischer L., Jain K, Williamson D. P. Iterative rounding 2-approximation algorithms for minimum-cost vertex connectivity problems // Journal of Computer and System Sciences. 2006. Vol. 72. P. 838-867.
604 Глава 20. Задачи о проектировании сети Fuchs В., Kern W., Molle D.f Richter S., Rossmanith P., Wang X. Dynamic programming for minimum Steiner trees // Theory of Computing Systems. 2007. Vol. 41. P. 493-500. Gabow H. N. An improved analysis for approximating the smallest fc-edge connected spanning subgraph of a multigraph // SIAM Journal on Discrete Mathematics. 2005. Vol. 19. P. 1-18. Gabow H. N., Goemans M.X., Williamson D. P. An efficient approximation algorithm for the survivable network design problem // Mathematical Programming. Ser. B. 1998. Vol. 82. P. 13-40. Gabow H. N., Goemans M. X., Tardos Ё., Williamson D. P. Approximating the smallest fc-edge connected spanning subgraph by LP-rounding // Networks. 2009. Vol. 53. P. 345-357. Garey M. R., Graham R. L., Johnson D. S. The complexity of computing Steiner minimal trees // SIAM Journal of Applied Mathematics. 1977. Vol. 32. P. 835-859. Garey M. R., Johnson D. S. The rectilinear Steiner tree problem is NP-complete // SIAM Journal on Applied Mathematics. 1977. Vol. 32. P. 826-834. Gilbert E. N., Pollak H. O. Steiner minimal trees // SIAM Journal on Applied Mathematics. 1968. Vol. 16. P. 1-29. Goemans M.X., Bertsimas D.J. Survivable networks, linear programming and the parsimonious property // Mathematical Programming. 1993. Vol. 60. P. 145-166. Goemans M.X., Goldberg A. V., Plotkin S., Shmoys D. В., Tardos ?., Williamson D. P. Improved approximation algorithms for network design problems // Proceedings of the 5th Annual ACM-SIAM Symposium on Discrete Algorithms. 1994. P. 223-232. Goemans M. X., Williamson D. P. A general approximation technique for constrained forest problems // SIAM Journal on Computing. 1995. Vol. 24. P. 296-317. Gropl C, Hougardy S., NierhoffT., Promel H. J. Approximation algorithms for the Steiner tree problem in graphs // Steiner Trees in Industry. Kluwer, Dordrecht, 2001. P. 235-279. Hanan M. On Steiner's problem with rectilinear distance // SIAM Journal on Applied Mathematics. 1966. Vol.14. P. 255-265. Hetzel A. Verdrahtung im VLSI-Design: Spezielle Teilprobleme und ein sequentielles L6- sungsverfahren. Ph. D. thesis, University of Bonn, 1995 [in German]. Hougardy S., Promel H. J. A 1.598 approximation algorithm for the Steiner tree problem in graphs // Proceedings of the 10th Annual ACM-SIAM Symposium on Discrete Algorithms. 1999. P. 448-453. Hwang F. K. On Steiner minimal trees with rectilinear distance // SIAM Journal on Applied Mathematics. 1976. Vol. 30. P. 104-114. Jain K. A factor 2 approximation algorithm for the generalized Steiner network problem // Combinatorica. 2001. Vol. 21. P. 39-60. Jothi R., Raghavachari В., Varadarajan S. A 5/4-approximation algorithm for minimum 2-edge-connectivity // Proceedings of the 14th Annual ACM-SIAM Symposium on Discrete Algorithms. 2003. P. 725-734. Karp R. M. Reducibility among combinatorial problems // Complexity of Computer Computations (R. E.Miller, J.W.Thatcher, eds.), Plenum Press, New York, 1972. P. 85-103. Karpinski M., Zelikovsky A. New approximation algorithms for Steiner tree problems // Journal of Combinatorial Optimization. 1997. Vol. 1. P. 47-65.
Литература 605 Khuller S., Raghavachari В. Improved approximation algorithms for uniform connectivity problems // Journal of Algorithms. 1996. Vol.21. P. 434-450. Khuller S., Vishkin U. Biconnectivity augmentations and graph carvings // Journal of the ACM. 1994. Vol. 41. P. 214-235. Klein P. N., Ravi R. When cycles collapse: a general approximation technique for constrained two-connectivity problems // Proceedings of the 3rd Integer Programming and Combinatorial Optimization Conference. 1993. P. 39-55. Korte В., Promel H.J., Steger A. Steiner trees in VLSI-layout // Paths, Flows, and VLSI- Layout (B. Korte, L. Lovasz, H. J. Promel, A. Schrijver, eds.), Springer, Berlin, 1990. P. 185-214. Kortsarz G., Krauthgamer R., Lee J. R. Hardness of approximation for vertex-connectivity network design problems // SIAM Journal on Computing. 2004. Vol. 33. P. 704-720. Kou L. A faster approximation algorithm for the Steiner problem in graphs // Acta Infor- matica. 1990. Vol. 27. P. 369-380. Kou L., Markowsky G., Berman L. A fast algorithm for Steiner trees // 1981. Vol. Acta Informatica. 15. P. 141-145. Martin A. Packen von Steinerbaumen: Polyedrische Studien und Anwendung. Ph. D. thesis, Technical University of Berlin, 1992 [in German]. Mehlhorn K. A faster approximation algorithm for the Steiner problem in graphs // Information Processing Letters. 1988. Vol. 27. P. 125-128. Melkonian V., Tardos Ё. Algorithms for a network design problem with crossing super- modular demands // Networks. 2004. Vol.43. P.256-265. Nagarajan V., Ravi R., Singh M. Simpler analysis of LP extreme points for traveling salesman and survivable network design problems // Operations Research Letters. 2010. Vol. 38. P. 156-160. Robins G., Zelikovsky A. Tighter bounds for graph Steiner tree approximation // SIAM Journal on Discrete Mathematics. 2005. Vol. 19. P. 122-134. Takahashi M., Matsuyama A. An approximate solution for the Steiner problem in graphs // Mathematica Japonica. 1980. Vol. 24. P. 573-577. Vygen J. Faster algorithm for optimum Steiner trees // Information Processing Letters. 2011. Vol. 111. P. 1075-1079. Warme D. M., Winter P., Zachariasen M. Exact algorithms for plane Steiner tree problems: a computational study // Advances in Steiner trees (D.-Z. Du, J. M. Smith, J. H. Rubinstein, eds.), Kluwer Academic Publishers, Boston, 2000. P. 81-116. Williamson D. P., Goemans M.X., Mihail M., Vazirani V. V. A primal-dual approximation algorithm for generalized Steiner network problems // Combinatorica. 1995. Vol. 15. P. 435-454. Zelikovsky A. Z. An 11/6-approximation algorithm for the network Steiner problem // Algorithmica. 1993. Vol.9. P.463-470.
ГЛАВА 21 Задача коммивояжера В гл. 15 мы сформулировали задачу коммивояжера (TSP) и показали, что она является NP-трудной (теорема 15.43). Задача коммивояжера, возможно, представляет собой одну из наиболее широко изученных А/Р-трудных задач комбинаторной оптимизации. Для ее решения было предложено большое число методов. В § 21.1 и 21.2 мы обсудим приближенные алгоритмы. В § 21.3 будут рассмотрены так называемые алгоритмы локальных улучшений, которые на практике оказываются способны найти более точные решения для больших экземпляров задач, хотя точность их приближения в худшем случае может оказаться сколь угодно низкой. В § 21.4 будет рассмотрен политоп задачи коммивояжера (т. е. выпуклая оболочка векторов инцидентности всех возможных гамильтоновых циклов в Кп). Используя метод секущих плоскостей (см. § 5.5) совместно с методом ветвей и границ, на практике можно найти точное решение задачи TSP, содержащей несколько тысяч городов. Данный подход будет рассматриваться в § 21.6. Предварительно в § 21.5 мы изучим вопрос получения хороших нижних оценок для оптимума задачи. Отметим, что многие из данных идей и методов оказываются применимыми и к другим задачам комбинаторной оптимизации. Мы продемонстрируем их работу на примере задачи TSP, поскольку для нее они хорошо себя зарекомендовали. В данной главе мы ограничимся рассмотрением симметричного варианта задачи, хотя несимметричная задача коммивояжера (где расстояние от i до j может отличаться от расстояния от j до i) также представляет интерес (см. упражнение 4). § 21.1. Приближенные алгоритмы для задачи коммивояжера В текущей и последующей главах мы изучим приближаемость задачи коммивояжера. Начнем со следующего отрицательного результата. Теорема 21.1 (Сахни и Гонсалес [60]). Если Р Ф NP, то при k ^ 1 для задачи коммивояжера не существует алгоритма с точностью к. Доказательство. Предположим, что существует алгоритм А, решающий задачу TSP с точностью к. Докажем тогда, что существует алгоритм, находящий га- мильтонов цикл в графе за полиномиальное время. Поскольку последняя задача является NP-трудной по теореме 15.25, мы получим, что Р = NP, — противоречие.
§ 21.1. Приближенные алгоритмы для задачи коммивояжера 607 Рассмотрим граф G. Построим экземпляр задачи коммивояжера сп = \V(G)\ городами, расстояния с: Е(Кп) —> Z+ между которыми определим следующим образом: c(ii ¦iv=I1' ecm{i,j}eE(G), 'J (2 + (fc-l)n, если {i,j}?E(G). Запустим алгоритм А на полученном экземпляре. Если получившийся цикл имеет длину п, то он является гамильтоновым циклом в G. Иначе найденный цикл имеет длину не менее n + l + (fc — l)n = fcn + l. Пусть ОРТ(Кп, с) —длина оптимального цикла. Тогда kn + 1 < , ортас^с)^*' поскольку А — алгоритм с точностью к. Следовательно, ОРТ(КП9 с) > п, а значит, граф G не содержит гамильтонова цикла. ? В большинстве практических приложений расстояния в задаче коммивояжера являются метрическими, т. е. удовлетворяют неравенству треугольника. Metric TSP (метрическая задача коммивояжера) Дано: полный граф Кп с такими весами с: Е(Кп) —»R+, что c({x>y}) + c({y>z})>c{{x)z}) для любых х, у, z е V(Kn). Надо: найти гамильтонов цикл минимального веса в Кп. Другими словами, пара {Кп, с) совпадает со своим метрическим замыканием. Теорема 21.2. Метрическая задача коммивояжера является NP-трудной. Доказательство. Из доказательства теоремы 15.43 следует, что задача TSP является NP-трудной даже в случае, если все расстояния равны 1 или 2. ? Несложно придумать набор эвристик, позволяющих находить неплохие решения задачи коммивояжера. Одна из самых простых эвристик — это так называемый метод ближайшего соседа, работающий следующим образом. Пусть задан экземпляр (Кп, с) задачи коммивояжера. Выберем первую вершину цикла иг е V(Kn) произвольно. Далее при i = 2,..., п выбираем каждую следующую вершину vt среди V(Kn) \ {иъ ..., vt_i} таким образом, чтобы расстояние c({Vi_l9 vt}) было минимальным. Другими словами, на каждом шаге мы выбираем ближайший непосещенный город. Погрешность метода ближайшего соседа для метрической задачи коммивояжера не является ограниченной. Действительно, для бесконечного количества значений п существуют экземпляры (Кп, с), для которых метод ближайших соседей находит цикл длины - OPT(i^n, с) logn (Розенкранц, Стирнс и Льюис [59]). См. также работу Хуркенса и Вёгингера [36].
608 Глава 21. Задача коммивояжера Оставшаяся часть главы посвящена приближенным алгоритмам для решения метрической задачи коммивояжера. Эти алгоритмы вначале строят замкнутый цикл, проходящий через все вершины (некоторые вершины при этом могут встречаться более одного раза), а затем преобразуют его в соответствии со следующей леммой. Лемма 21.3. Пусть даны экземпляр (Кп, с) метрической задачи коммивояжера и связный эйлеров граф G, покрывающий V(Kn), в котором возможны параллельные ребра. Тогда за линейное время можно построить гамильтонов цикл веса не больше c(E(G)). Доказательство. По теореме 2.25 построим за линейное время эйлеров обход графа G. Двигаясь вдоль полученного обхода, оставим для каждой вершины только первое ее вхождение. Полученная последовательность вершин определяет гамильтонов цикл. Неравенство треугольника показывает, что данный цикл имеет длину не более c(E(G)). ? Похожая идея была использована в приближенном решении задачи о дереве Штейнера (теорема 20.6). Double-Tree (двойное дерево) Вход: экземпляр (Кп, с) метрической задачи коммивояжера. Выход: гамильтонов цикл. (Т) Найти в Кп остов Т минимального относительно с веса. (2) Пусть G — граф, содержащий по две копии каждого ребра из Т; граф G удовлетворяет условиям леммы 21.3. Построить гамильтонов цикл, как в доказательстве леммы 21.3. Теорема 21.4. Алгоритм Double-Tree решает задачу Metric TSP с точностью 2. Время его работы составляет 0(п2). Доказательство. Оценка времени работы следует из теоремы 6.6. Имеем с(Е(Г))<ОРТ(Кп,с), поскольку удалением одного ребра из любого гамильтонова цикла мы получаем остовное дерево. Отсюда следует, что c(E(G)) = 2с(Е(Г)) < 2 0PT(i<Cri,c). Для завершения доказательства теоремы достаточно применить лемму 21.3. ? Для евклидовых экземпляров задачи (см. § 21.2) вместо применения леммы 21.3 можно найти оптимальное решение в метрическом замыкании (Г, с) на шаге (2) за время 0(п3) (Буркард, Дейнеко и Вёгингер [16]). Оценка точности алгоритма Double-Tree не может быть улучшена (см. упражнение 6). Улучшить точность решения, однако, можно с помощью следующего алгоритма, принадлежащего Кристофидесу [20].
§ 21.1. Приближенные алгоритмы для задачи коммивояжера 609 Christofides' Algorithm (алгоритм Кристофидеса) Вход: экземпляр (Кп, с) метрической задачи коммивояжера. Выход: гамильтонов цикл. (Т) Найти в Кп остовное дерево Т минимального относительно с веса. ® Пусть W — множество вершин, имеющих нечетную степень в Г. Найти W-соединение J минимального относительно с веса в Кп. (З) Пусть G := (V(Кп), Е(Т) и J). Граф G удовлетворяет условиям леммы 21.3. Построим гамильтонов цикл, как в доказательстве леммы 21.3. Поскольку выполнено неравенство треугольника, на шаге (2) в качестве J можно взять совершенное паросочетание минимального веса в HTn[W]. Теорема 21.5 (Кристофидес [20]). Алгоритм Кристофидеса является приближенным алгоритмом для метрической задачи коммивояжера с точностью 3/2. Время его работы составляет 0(п3). Доказательство. Оценка времени работы следует из теоремы 12.10. Так же как и в доказательстве теоремы 21.4, мы имеем с(Е(Т)) < ОРТ(Кп, с). Поскольку каждый гамильтонов цикл представляет собой объединение двух ^-соединений, получаем, что c(J) < « ОРТ(Кп,с). Следовательно, c(E(G)) = с(Е(Г)) + c{J) < | ОРТ(К„ с), и нужный нам результат следует из леммы 21.3. ? Неизвестно, существует ли алгоритм с лучшим коэффициентом приближения. Однако доказан следующий отрицательный результат. Теорема 21.6 (Пападимитриу и Яннакакис [57]). Метрическая задача коммивояжера является MAXSNP-трудной. , , (е, и, 1) (е, w, 1) Доказательство. Опишем L-сведение от задачи Q——+——Q о минимальном вершинном покрытии для графов с максимальной степенью вершины 4 (которая является А^4Х5А/Р-трудной по теореме 16.46) к метрической задаче коммивояжера. Для ненаправленного графа G со степенями вершин не более 4 определим экземпляр (Я, с) (е, v, 2) (е, w, 2) метрической задачи коммивояжера следующим р 21 - образом. Для каждого ребра е = {v, w} е E(G) рассмотрим подграф Не из 12 вершин и 14 ребер, изображенный на рис. 21.1. Четыре вершины из Не, обозначенные (е, v, 1), (е, v, 2), (е, w, 1) и (е, w, 2), имеют специальный смысл. Граф Не обладает следующим свойством: в нем есть гамильтонов путь из (е, и, 1) в (е, и, 2)
610 Глава 21. Задача коммивояжера Рис. 21.2 и другой путь из (е, ш, 1) в (е, w, 2), но в нем нет гамильтонова пути из (е, и, Г) в (е, w, j) для любых i, j е {1,2}. Теперь пусть Я — полный граф на вершинах У(Я) := |Je(EE(G) V(He). Для ребра {л:, у} € Е (Я) положим ( 1, если {л:, у} е Е (Яе) для некоторого е е E(G); distHg (х, у), если х, у е У(Яе) для некоторого е € E(G), с({х, у}) := { но при этом {х, у} ? Е(Не); 4, если х = (е, у, 0 и у = (/, v, j), где е ф /; ч 5 иначе. Пример такого построения показан на рис. 21.2 (изображены только ребра длины 1и4). Заметим, что пара (Я, с) представляет собой экземпляр метрической задачи о коммивояжере. Утверждается, что он обладает следующими свойствами. (а) для каждого вершинного покрытия X графа G существует гамильтонов цикл длины 15|E(G)| + |Х| в Я; (б) для любого гамильтонова цикла Г в Я за полиномиальное время можно построить гамильтонов цикл Т' в Я, который не длиннее исходного и содержит в качестве подотрезка гамильтонов путь каждого подграфа Яе (eeE(G)); (в) если задан гамильтонов цикл длины 15|E(G)| + к в Я, то за полиномиальное время можно построить вершинное покрытие размера к в G. Из свойств (а) и (в) вытекает, что описанное преобразование на самом деле является L-сведением. Действительно, поскольку все вершины в G имеют степень не выше 4, оптимальная длина гамильтонова цикла составляет 15|E(G)| + t(G) < 15(4t(G)) + t(G). Докажем свойство (а). Пусть X — вершинное покрытие графа G, и пусть №с)хех — такое разбиение множества E(G), что Ех с 5(х) (хеХ). Тогда для любого х € X подграф, индуцированный множеством |JeGE V{He), очевидно, содержит гамильтонов путь с 11|?х| ребрами длины 1 и \ЕХ\ — 1 ребрами длины 4.
§ 21.1. Приближенные алгоритмы для задачи коммивояжера 611 Добавление \Х\ ребер к объединению этих гамильтоновых путей дает путь, в котором |Х| ребер имеют длину 5, |E(G)| — \Х\ ребер имеют длину 4, a 11|E(G)| ребер имеют длину 1. Для доказательства свойства (б) рассмотрим произвольный гамильтонов цикл Т и такое ребро е е E(G), что Г не содержит гамильтонова пути в Не. Пусть {х} у} €Е(Т), х ? V{He), у е V(He). Обозначим через z первую вершину, лежащую вне У(Яе), которую мы увидим, если начнем двигаться по циклу Г от вершины у в сторону от х. Удалим часть пути между х и z и заменим ее на объединение следующих фрагментов: ребро {х, (е, и, 1)}, гамильтонов путь в Не из (е, и, 1) в (е, v,2) и, наконец, ребро {(е, v,2),z] (где v е е выбирается произвольно). Если Г пересекает Не в каких-то еще вершинах, то к полученному гамильтонову циклу применяется стандартная процедура сокращения (см. лемму 21.3). Утверждается, что получающийся в итоге гамильтонов цикл Т' не длиннее исходного цикла Т. Предположим вначале, что k:=\5T(V(He))\>4. Тогда общий вес ребер, инцидентных V{He) в Г, не меньше 4fc + (12 — к/2). В Т' общий вес ребер, инцидентных V(He), не превосходит 5 + 5 + 11, а при сокращении Т было добавлено еще к/2 — 1 ребер. Поскольку 5 + 5 + ll + 5(|-l) <4fc+(l2-|), длина цикла не возросла. Теперь предположим, что |5т(У(Яе))| = 2, однако Т содержит такое ребро {х, у}, что х, у е У(Не), но при этом {х, у}?Е(Не). Тогда, как легко видеть, общая длина ребер цикла Г, инцидентных V(He), не меньше 21. Поскольку в Г' общая длина ребер, инцидентных У(Яе), не более 5 + 5 + 11 = 21, длина цикла снова не увеличилась. Наконец докажем свойство (в). Рассмотрим гамильтонов цикл Г длины 15|E(G)| + к для некоторого fc. Из свойства (б) следует, что Т содержит гамильтонов путь в каждом из подграфов Не (е е E(G)), скажем, из вершины (е, v, 1) в вершину (е, и, 2); положим и(е) :=и. Тогда X := {и{е): е е ?(G)} — вершинное покрытие графа G. Так как Т содержит ровно 11|E(G)| ребер длины 1, |E(G)| ребер длины 4 или 5 и не менее |Х| ребер длины 5, получаем, что \Х\ < fc. ? Следствие 16.40 показывает, что в случае, если Р ф NP, для задачи коммивояжера невозможна приближенная схема. Как показали Пападимитриу и Вемпа- ла [56], даже из существования приближенного алгоритма с точностью 220/219 будет следовать, что Р = NP. В работе Карпински, Ламписа и Шмида [43] оценка неприближаемости TSP была улучшена до 123/122. Пападимитриу и Яннакакис [57] доказали, что задача коммивояжера остается MAXSiVP-трудной, даже если веса ребер равны 1 или 2. Для этого частного случая Берман и Карпински [14] нашли алгоритм с коэффициентом приближения 8/7.
612 Глава 21. Задача коммивояжера § 21.2. Евклидова задача коммивояжера В этой главе мы изучим задачу коммивояжера для случая евклидовых расстояний. Euclidean TSP (евклидова задача коммивояжера) Дано: Надо: конечное множество V с R: найти гамильтонов цикл Т рого сумма ?{„>ш}€Е(т) И" " \№>3. в полном графе на множестве w\\2 минимальна. V, для кото- Здесь \\и — w\\2— евклидово расстояние между точками v и w. Далее мы часто будем отождествлять ребро с отрезком, соединяющим его концы. Легко видеть, что всякий оптимальный гамильтонов цикл не может иметь самопересечений, поэтому его можно рассматривать как многоугольник Евклидова задача коммивояжера, очевидно, является частным случаем метрической задачи коммивояжера и также является строго А/Р-трудной (Гэри, Грэхем и Джонсон [29], Пападимитриу [51]). Однако геометрическая природа данной задачи позволяет получить дополнительные интересные результаты, к изложению которых мы и переходим. Предположим, что задан набор из п точек в единичном квадрате. Разобьем его регулярной сеткой так, что каждая из получившихся областей будет содержать небольшое число точек, найдем оптимальный путь внутри каждой области, а затем соединим эти фрагменты воедино. Данная идея была предложена Карпом [41], который показал, что если исходные точки выбираются случайно (в соответствии с определенным распределением), то на подавляющем большинстве входов алгоритм находит решение с точностью 1 + 6. Впоследствии Арора [12] развил этот метод и нашел схему приближения для евклидовой задачи коммивояжера, которую мы и рассмотрим в этой главе. Похожая схема приближения была предложена также Митчеллом [50]. Пусть зафиксировано значение е € (0,1). Покажем, как найти за полиномиальное время гамильтонов цикл, длина которого больше оптимальной не более чем в 1 4- е раз. Начнем с процедуры округления координат. Определение 21.7. Пусть V с R2 — экземпляр евклидовой задачи коммивояжера, п := \V\ и L := тах„ шеУ \\v — w\\2. Тогда правильно округленным экземпляром, соответствующим V, называется набор V := {{l + 8[^vx\,l + 8[^vy\):{vx,vy)Gv}. Заметим, что V' может содержать меньше элементов, чем V. Если |V'| = 2, то единственным гамильтоновым циклом для V' будем считать цикл, проходящий дважды по (единственному) ребру графа V'. Покажем, что достаточно ограничить анализ правильно округленными экземплярами. Утверждение 21.8. Пусть V с R2 — экземпляр евклидовой задачи коммивояжера, а V' — отвечающий ему правильно округленный экземпляр. Тогда
§ 21.2. Евклидова задача коммивояжера 613 (а) для всех (vx, vy) G V' значения vx и vy нечетны; (б) max^w€V, ||i/ — ш||2 < 64|V|/e + 16; (в) mmV}WeVf}V^w\\v -w\\2> S; (г) из любого (1 + €/2)-оптималъного гамилътонова цикла для V' можно построить (1 + е)-оптималъный гамилътонов цикл для V за время 0(|У|). Доказательство. Свойства (а), (б) и (в) очевидны. Рассмотрим свойство (г). Пусть на множестве V' задан гамильтонов цикл, длина которого V не превосходит (1 + е/2) OPT(V')- Построим отвечающий ему гамильтонов цикл для исходной задачи У. Длина I этого цикла не превосходит ( « + 2п\ |-. Более того, OPT(V') < 8(|jr ОРТ(У) + 2л). Окончательно получаем z ^ Й С2^ + С1 + §) (Й optcv) + 2/,) ) = (1 + |) OPTCV) + ^ + 4^- Поскольку OPT(V) > 2L, имеем Z < (1 + е) ОРТ(У). П С учетом доказанного выше утверждения мы можем рассматривать лишь правильно округленные экземпляры задачи. Без ограничения общности можно считать, что все точки лежат внутри квадрата [0,2N] х [0,2N], где N := \logL] +1 и L := max у Ш€ЕУ ||i> — w\\2. Разобьем этот квадрат равномерной сеткой, а именно, для i = 1,..., N — 1 положим Gt := Xt U Yh где Xi:={[(0,fc2N-i),(2N,fc2iV-i)]:fc = 0,...,2i-l}, У-={[(;2^,0),(;2^,2^]:;=0,...,2^-1}. (Запись [(х,у), {х',у'У\ обозначает отрезок, соединяющий точки (х,у) и (х',у').) Рассмотрим теперь сдвинутую сетку. Пусть а, Ъ G {0,2,..., 2N — 2} — четные числа. Для всех i = 1,..., N -1 положим Gf'b) := Х^ и У.(а), где х/ь):={[(0,(Ь + ?2^) mod2N),(2N,(b + fc2N-f) mod2N)] : fc = 0,...,2?-l}, 7/а):={[((а + ;2^) mod2N,0), ((а + ;2^) mod2N,2N)] : ; = 0,...,2f-l}. (Здесь x (mody) — однозначно определенное число z, удовлетворяющее условиям 0 < z < у и (х — z)/y G Z.) Заметим, что множество GN_X = G^^ не зависит от а и Ь. Скажем, что линия сетки Z лежит на уровне 1, если Z G G^ , и на уровне i, если Z G G^ b) \G>°j (i = 2,..., N — 1). См. рис. 21.3 (линии более низкого уровня тонкие). Определим области сетки G. как множества вида {(х,у) € [0,2N) х [0,2N):(x-a- j2N~l) mod 2N < 2N~\ (у-Ъ-k2N~l) mod 2N < 2N~1}, где j, k G {0,..., 2l — 1}. При i<N — l некоторые области могут быть несвязными и представлять собой два или более прямоугольников. Заметим, что для всех
614 Глава 21. Задача коммивояжера горизонтальных (соответственно вертикальных) линий сетки ординаты (соответственно абсциссы) их точек четные. Поэтому ни одна линия сетки не содержит точку рассматриваемого правильно округленного экземпляра задачи. Более того, каждая связная часть GN_i содержит не более одной такой точки. Для многоугольника Т и линии I из GN_2 обозначим через сг(Г, Z) число пересечений Г и L Нам понадобится следующее утверждение. Рис. 21.3 Утверждение 21.9. Для оптимального гамилъ- тонова цикла Т правильно округленного экземпляра V евклидовой задачи коммивояжера справедливо неравенство ^геС сг(Г, I) < ОРТ(У). Доказательство. Рассмотрим ребро графа Т длины s. Пусть х и у—длины его горизонтальной и вертикальной проекций соответственно (и, таким образом, s2 =х2 + у2). Ребро пересекает линии из GN_2 не более х/2 + 1 + у/2 +1 раз. Поскольку х + у < V2s и s > 8 (экземпляр правильно округленный), ребро пересекает линии из GN_i не более чем (\/2/2)s + 2 < s раз. Суммируя по всем ребрам графа Г, получаем требуемое неравенство. ? Положим С :=7 + Г36/е] и Р := N\6/e]. Для каждой линии определим порталы следующим образом. Если Z = [ (О, (Ь + k2N-1) mod 2N), (2N, (b + fc2N"?) mod 2N) ] — горизонтальный отрезок на уровне i, то порталами назовем точки из множе- {((a + |2N"?) mod2N,(b + k2N~i) mod2N) : h = О, ...,P2*}. Порталы для вертикальных линий определяются аналогично. Определение 21.10. Пусть V с [о, 2N] х [0,2N] — правильно округленный экземпляр евклидовой задачи коммивояжера. Рассмотрим числа а, Ь е {0,2,..., 2N—2}, и пусть сдвинутые сетки, значения С и Р, а также порталы определены так, как описано выше. Цикл Штейнера — это замкнутая ломаная, проходящая через все точки графа V, любой отрезок которой пересекается с любой линией сетки в точности по набору порталов. Цикл Штейнера называется легким, если для любого i и любой области Gt. ^ данный цикл пересекает каждое ребро не более С раз. Заметим, что цикл Штейнера не обязательно представляет собой многоугольник; он может быть самопересекающимся. Для того чтобы сделать некоторый цикл Штейнера легким, далее мы будем часто пользоваться следующей леммой о замене. Лемма 21.11. Пусть V с R2 — экземпляр евклидовой задачи коммивояжера, аТ — некоторый гамильтонов цикл для V. Пусть I — отрезок длины s, не содержащий
§ 21.2. Евклидова задача коммивояжера 615 ни одной точки из V. Тогда существует гамильтонов цикл для У, длина которого превосходит длину цикла Т не более чем на 6s и который пересекает I не более двух раз. Доказательство. Для определенности будем считать I вертикальным отрезком. Предположим, что Т пересекается с I ровно к раз; а именно, пусть I пересекает ребра еъ...,ек. Можно считать, что к>3, иначе утверждение тривиально. Мы разделим каждое ребро ег,...,ек двумя новыми вершинами без увеличения длины цикла. Другими словами, заменим et путем длины 3 с двумя новыми внутренними вершинами p^qi е R2, расположенными бесконечно близко к I. При этом точка р{ лежит слева от I, a qt — справа от I (i = 1,..., к). Получившийся гамильтонов цикл назовем Т'. Пусть t := [(к - 1)/2J (тогда к - 2 < 2t < к -1), и пусть Т" получается из Г' удалением ребер {ръ qx},..., {p2t, q2t}. Пусть Р — объединение кратчайшего гамильтонова цикла на множестве ръ ...,рк и совершенного паросочетания минимальной стоимости на множестве Pi>--->P2t- Аналогично пусть Q — объединение гамильтонова цикла на множестве ql9..., qk и совершенного паросочетания минимальной стоимости на множестве ql9..., q2t- Общая длина ребер в Р и в Q по отдельности не превосходит 3s. Теперь множество ребер T"+P + Q пересекает I не более к—2t<2 раз, а также является связным и эйлеровым. Дальнейшее рассуждение напоминает доказательство леммы 21.3. По теореме Эйлера 2.24 существует эйлеров цикл в Т" Л- Р -h Q. Удаляя в нем повторяющиеся вершины, мы преобразуем его в гамильтонов цикл для V. Несложно показать, что при этом ни длина, ни количество его пересечений с I не увеличатся. ? Ключевая идея рассматриваемого алгоритма заключена в следующей теореме. Теорема 21.12 (Арора [12]). Пусть V с [о, 2N] х [0,2N] — правильно округленный экземпляр евклидовой задачи коммивояжера. Если аиЪ выбираются случайно, независимо и равномерно из множества {0,2,..., 2N — 2}, то с вероятностью не менее чем 1/2 найдется легкий цикл Штейнера, длина которого не превосходит (1 + е) ОРТ(У). Доказательство. Пусть Г — оптимальный гамильтонов цикл для V. Добавим точки Штейнера всюду, где цикл пересекает линии сетки. Перенесем теперь все точки Штейнера в порталы. Ближайший портал для точки Штейнера, лежащей на прямой уровня ?, находится на расстоянии не более 2N~l~l/Р. Заметим, что прямая I попадает на уровень i с вероятностью (2™ при1>1, Pa'l):=l2- при; = 1. При перемещении всех точек Штейнера на Z в порталы математическое ожидание увеличения длины цикла не превосходит N-1 D(U)-cr(rj)-2-^=N.^. i=l
616 Глава 21. Задача коммивояжера Изменим цикл Штейнера так, чтобы он стал легким. Под сегментом горизонтальной или вертикальной линии G^' будем понимать отрезок между точкой ((а + j2N-{), (Ь + k2N-()) и точкой ((а + (; + 1)2N"*), (Ь + k2N~1)) или ((а + j2N-(), (b + (к + 1)2N~1)) соответственно. (Все координаты берутся по модулю 2N, а переменные j, к пробегают значения из множества {0,..., 21 — 1}.) Заметим, что такой сегмент может состоять из двух отдельных отрезков. Рассмотрим следующую процедуру. For i := N — 1 down to 1 do: Применим лемму о замене 21.11 к каждому горизонтальному сегменту горизонтальной линии из Gf , имеющей С —4 точек пересечения. Применим лемму о замене 21.11 к каждому вертикальному сегменту вертикальной линии из G:a'b , имеющей более С —4 точек пересечения. Здесь следует сделать два замечания. Для сегментов вертикальной или горизонтальной линии, которые состоят из двух отдельных отрезков, лемма о замене применяется к каждой части, поэтому количество пересечений впоследствии может быть равно 4. Более того, заметим, что применение леммы о замене к сегменту вертикальной линии I на итерации i может привести к появлению новых пересечений (точек Штейнера) на сегменте горизонтальной линии, у которого один конец лежит на I. Эти новые пересечения являются порталами и не будут рассматриваться на последующих итерациях алгоритма, поскольку они расположены на линиях более высокого уровня. Для каждой линии Z количество применений леммы о замене к I не превосходит сг(Г, 1)1 (С —7), поскольку каждый раз количество пересечений уменьшается не менее чем на С — 7 (не менее С — 3 пересечений заменяются не более чем четырьмя). Рассмотрим линию I, и пусть c(l, i, а, Ь) — общее число применений леммы о замене к I на итерации i приведенной выше процедуры. Заметим, что при I <: i значение c(l, i, а, Ь) не зависит от уровня I. Тогда общее увеличение длины цикла вследствие применения леммы о замене к линии I составляет ^l>levelwc(Z,i,a,b) -6-2N_l. Кроме того, заметим, что EcC,i,a,b)<«g™ i^level(Z) Поскольку I находится на уровне j с вероятностью p(l,j), математическое ожидание увеличения длины цикла приведенной выше процедурой не превосходит N-l N-l i 2>(U)X|ca,i\a,b).^^ ;=1 i>j i=l j=l После применения рассмотренной выше процедуры каждый сегмент (а значит, и каждое ребро области) пересекается циклом не более С — 4 раз, если не считать новых пересечений, появившихся в результате работы самой процедуры
§ 21.2. Евклидова задача коммивояжера 617 (см. замечание выше). Эти дополнительные пересечения находятся на одном из концов сегментов. При этом если цикл проходит через одну точку три или более раз, то два из этих пересечений могут быть удалены без увеличения длины цикла или введения новых пересечений. (Удаление двух из трех параллельных ребер связного эйлерова графа снова приводит к связному эйлерову графу.) Поэтому в итоге мы получаем не более четырех дополнительных пересечений для каждого ребра каждой области (не более двух для каждого из концов), а значит, получающийся цикл действительно является легким. Итак, используя предложение 21.9, мы заключаем, что математическое ожидание увеличения общей длины цикла не превосходит s„НШД + ? Ш°Ш < орт(у)(* + ^) < opt(v) |. Поэтому вероятность того, что увеличение общей длины цикла не превосходит ОРТ(У)б, не меньше 1/2. ? Перейдем теперь к описанию алгоритма Ароры. Идея заключается в том, чтобы пронумеровать все легкие пути Штейнера, используя динамическое программирование. Для описания подзадачи в нем нужно указать следующие объекты: область г сетки Gt. , где KKN-1, множество А, состоящее из четного числа элементов, где каждый элемент соответствует порталу на одном из ребер г (при этом каждому ребру соответствует не более чем С элементов), а также совершенное паросочетание М в полном графе со множеством вершин А. Для каждой такой области существует не более (Р + 2)4С(4С)! вариантов подзадач (с точностью до переименования элементов множества А). Решением подзадачи является множество из \М\ путей {Ре: е е М}, представляющих собой пересечение некоторого легкого пути Штейнера для V с областью г. При этом концами пути P{UjW} будут и и w, а каждая точка множества V П г принадлежит ровно одному пути в решении. Решение подзадачи должно быть оптимальным, т. е. сумма длин всех путей в нем должна быть минимально возможной. Агога' Вход: Выход: s Algorithm (алгоритм Ароры) правильно округленный экземпляр задачи коммивояжера; число е, 0 < ус[о,2"] х [0,2N] е<1. (1 + е)-оптимальный гамильтонов цикл. евклидовой (Т) Выбрать а и Ь случайно, независимо и равновероятно из множества {0,2,...,2N-2}. ПоложитьК0:={([0,2]У]х[0,2]У],У)}. (2) Fori:=l to AT-1 do: Построить GJ¦ . Положить Rt := 0. For каждого такого (r, Vr) е R(_1} что |Vr| > 2, do: Построить четыре области rl9r2,r3, r4 of G-(a' , где гг U r2 U г3 U г4 = г, и добавить (/}, Vr П г-) к Rt (j = 1,2,3,4).
618 Глава 21. Задача коммивояжера (3) Fori:=N-l to 1 do: For каждой области г GRtdo: Найти оптимальное решение для каждой подзадачи в г. If |УГ| < 1 then произвести вычисление напрямую, else использовать найденные ранее оптимальные решения для подзадач в каждой из четырех областей. (4) Найти оптимальный легкий цикл Штейнера для V, используя решения подзадач для четырех подобластей. Удалить точки Штейнера и получить решение, которое не превосходит найденное по длине. Теорема 21.13. Алгоритм Ароры находит гамилътонов цикл, длина которого с вероятностью не менее 1/2 не превосходит (1+в)ОРТ(У). Время работы данного алгоритма составляет 0(n(logn)c) для некоторой константы с (зависящей линейно от 1/е). Доказательство. Алгоритм выбирает а и Ь случайно, а затем находит оптимальный легкий цикл Штейнера. По теореме 21.12 его длина не превосходит (1 + е) ОРТ(У) с вероятностью не меньше 1/2. Удаление в конце точек Штейнера не может увеличить длину цикла. Чтобы оценить время работы, рассмотрим следующее ориентированное дерево А. Его корнем будет область в R0, а каждая область г е Rt имеет 0 или 4 сыновей (подобластей в Ri+i). Пусть S — множество вершин в Л, имеющих 4 сыновей, все из которых являются листьями. Поскольку внутренности этих областей попарно не пересекаются и каждая содержит не менее двух точек из V, получаем, что \S\ < п/2. Так как каждая вершина из А является либо листом, либо предком как минимум одной вершины из S, получаем не более Nn/2 вершин, которые не являются листовыми, и поэтому всего имеется не более 5Nn/2 вершин. Для каждой области существует не более (Р + 2)4С(4С)! различных подзадач. Подзадачи, соответствующие областям, содержащим не более одной вершины, могут быть решены за время 0(C). Для оставшихся подзадач рассмотрим всевозможные мультимножества порталов на четырех ребрах, соединяющих подобласти, и всевозможные порядки, в которых могут быть пройдены порталы. Всего получим не более (Р + 2)4С(8С)! вариантов. Рассмотрение каждого из них занимает константное время (при этом мы используем ранее сохраненные решения для подзадач). Таким образом, для всех подзадач одной области время работы алгоритма составляет 0((Р + 2)8С(4С)! (8С)!). Заметим, что эта оценка также справедлива и для несвязных областей. Действительно, цикл может не переходить из одной связной компоненты региона в другую, поэтому задача распадается на независимые части. Всего есть не более SNn/2 областей, N = 0(log(n/e)) (экземпляр является правильно округленным), С = 0(1/е) и Р = 0(N/e), поэтому общее время работы составляет О (п log J(Р + 2)8С(8С)12С) = О(n(logп)°(1/е)0 Q) °J • ?
§ 21.3. Метод локальных улучшений 619 Алгоритм Ароры может быть легко дерандомизирован. Для этого достаточно рассмотреть всевозможные значения а и Ь. Эта модификация добавит к оценке сложности множитель 0(п2/е2). Тем самым доказано следующее утверждение. Следствие 21.14. Существует схема приближения для евклидовой задачи коммивояжера. Для каждого фиксированного е>0можно найти (1 + е)-приближенное решение за время 0(n3(logn)c) при некоторой константе с. ? Рао и Смит [58] улучшили время работы до O(nlogn) для произвольного фиксированного е > 0. Однако скрытые константы в этой оценке все еще слишком велики при разумно малых значениях е, поэтому практическая ценность этого алгоритма кажется ограниченной. Клейн [44] предложил схему приближения для случая метрического замыкания планарных графов с неотрицательными весами ребер. Методы, представленные в данной главе, могут быть также применены и к другим геометрическим задачам; см. упражнение 9. § 21.3. Метод локальных улучшений На практике одной из наиболее удачных техник для получения хорошего решения задачи коммивояжера является метод локальных улучшений. Его идея состоит в следующем. Начнем работу с любого гамильтонова цикла (его можно найти эвристически). Далее попытаемся улучшить решение некоторыми «локальными» изменениями. Например, мы можем разделить цикл на две части удалением двух ребер и потом соединить части в другой цикл. Строго говоря, метод локальных улучшений представляет собой скорее общий алгоритмический прием, нежели конкретный алгоритм. Для того чтобы его уточнить, нужно ответить на следующие вопросы. • Какие изменения разрешены, т. е. какие решения считаются близкими? • Когда именно мы изменяем текущее решение? (Одна из возможностей состоит в том, чтобы разрешить только изменения, улучшающие текущее решение.) В качестве конкретного примера опишем известный алгоритм fc-0pt для задачи коммивояжера. Пусть задано фиксированное натуральное число к > 2. fc-Opt (алгоритм локальных Вход: Выход: улучшений для задачи экземпляр (JCn, с) задачи коммивояжера. гамильтонов цикл Г. коммивояжера) Ц) Пусть Т — произвольный гамильтонов цикл. (2) Пусть У — семейство k-элементных подмножеств множества Е(Т). (3) For all S € У и гамильтоновых циклов Г', для которых Е(Т') 2 E(T)\S, do: If с(Е(Т')) < с(Е(Т)) then положить Г := Г7, goto (2).
620 Глава 21. Задача коммивояжера ->н- Рис.21.4 Будем называть гамильтонов цикл к-оптималъным (fc-optimal), если он не может быть улучшен применением алгоритма fc-Opt. Для любого фиксированного fc существуют экземпляры задачи коммивояжера, для которых fc-оптималь- ные циклы не являются (fc + 1)-оптимальными. Например, цикл, изображенный на рис. 21.4, является 2-оптимальным, но не 3-оптимальным (относительно евклидовых расстояний). Он может быть улучшен заменой трех ребер (цикл (а, Ь, е, с, d, а) оптимальный). Цикл, изображенный в правой части рис. 21.5, является 3-оптимальным относительно весов, показанных слева. Не подписанные на рисунке ребра имеют вес 4. Однако 4-замена немедленно дает оптимальное решение. Заметим, что для этого примера выполнено неравенство треугольника. 3 3 Рис. 21.5 В действительности ситуация намного хуже: гамильтонов цикл, найденный алгоритмом fc-Opt для примера с п городами, может быть длиннее оптимального в -п1^2^ раз (для всех fc и бесконечного числа значений п). С другой стороны, 2-оптимальный гамильтонов цикл не может быть длиннее оптимума более чем в 4л/п раз. Однако время работы fc-Opt в худшем случае экспоненциально для всех fc, и эта оценка справедлива даже для варианта 2-0pt на евклидовых задачах. Эти результаты получены Чандрой, Карлоффом и Товеем [19], а также Энглертом, Рёглином и Фёкингом [24].
§21.3. Метод локальных улучшений 621 Другой вопрос состоит в том, как выбрать хорошее значение к до запуска алгоритма. Конечно, все экземпляры (Кп,с) могут быть решены оптимально с помощью fc-Opt при fc = п, но время работы растет экспоненциально с ростом fc. Часто удачным оказывается выбор fc = 3. Линь и Керниган [47] предложили эффективную эвристику, в которой значение fc не фиксировано изначально, а определяется в процессе работы алгоритма. Их идея основана на следующем понятии. Определение 21.15. Пусть заданы экземпляр (Кп, с) задачи коммивояжера и гамильтонов цикл Т. Чередующаяся цепь — это такая последовательность вершин (городов) Р = (х0, хъ ..., х2т), что {xt, xi+1} ф Ц, xj+1} для всех i,j,0<i<j< 2т, и включение {хь xi+1} е Е(Т) справедливо для i = О,..., 2тп — 1, если и только если i четно. Последовательность Р называется замкнутой чередующейся цепью, если дополнительно х0 = х2т. Прирост для Р определяется следующим образом: т-1 g(P) := J] {c({x2i,x2i+1})-c({x2i+1,x2i+2})). i=0 Цепь Р называется подходящей, если g((x0,..., x2i)) > 0 для всех i е {1,..., т}. Будем использовать обозначение Е(Р) = {{х(, xi+1}: i = 0,..., 2т — 1}. Заметим, что в чередующейся цепи вершины могут встречаться более одного раза. В примере, изображенном на рис. 21.4, (а, е, Ь, с, е, d, а) — подходящая замкнутая чередующаяся цепь. Пусть известен текущий гамильтонов цикл Г. Нас будут интересовать такие замкнутые чередующиеся цепи Р, для которых Е(Т) АЕ(Р) снова задает некоторый гамильтонов цикл. Лемма 21.16 (Линь и Керниган [47]). Если существует замкнутая чередующаяся цепь Р, где g(P) > 0, то (а) с(Е(Т) АЕ(Р)) = c(E(T))-g(P); (б) существует подходящая замкнутая чередующаяся цепь Q, для которой E(Q)=E(P). Доказательство. Утверждение (а) следует из определения. Дяя доказательства утверждения (б) положимР = (х0,хъ...,х2т), и пусть fc — индекс, для которого значение g((x0,..., x2k)) минимально (если таких индексов fc несколько, то возьмем максимальный из них). Утверждается, что цепь Q := (х2к, х2к+1,..., х2т_ъ х0, jq,..., х2к) является подходящей. При i = к + 1,..., т имеем S((*2k> *2к+1> • • • , *2i)) = S((*0> *1> . • • у X2i))-g{{xQ, *!,..., Х2к)) > О по определению fc. При i = 1,..., fc также из определения к получаем g((x2k> х2к+1> • • • » Х2т-Ъ х0> ХЪ • • • > X2U) = = S((*2fc> х2к+1> • • • > *2m)) + S((*0> Xl9..., X2i)) > > g((X2k> X2k+1> • • • , *2m)) + ^((^0, *1, - - - , ^2fc)) = ^№) > 0. Отсюда видно, что цепь Q действительно подходящая. ?
622 Глава 21. Задача коммивояжера Рис. 21.6 Опишем теперь алгоритм Линя — Кернигана. Пусть задан текущий гамиль- тонов цикл Г. Найдем подходящую замкнутую чередующуюся цепь Р, заменим Т на (У(Т),Е(Т) А Е(Р)) и повторим итерации. На каждой итерации мы ищем цепь Р полным перебором вариантов с использованием двух отсечений. Глубина этих отсечений регулируется параметрами рг и р2. Подробное описание алгоритма приведено на рис. 21.6. Lin — Kernighan (алгоритм Линя — Кернигана) Вход: экземпляр (Кп,с) задачи коммивояжера; остовный подграф G в Кп; два параметра рг е N («глубина перебора с возвратом») и р2 € N («глубина недопустимости»). Выход: гамильтонов цикл Т. (1) Пусть Т — произвольный гамильтонов цикл. (2) Положим Х0 := V(Kn), i := 0 и g* := 0. (3) If Xt = 0 и g* > 0 then: Положим Т := (V(T),E(T) А Е(Р*)), goto ©. If Xt = 0 и g* = 0 then: Положим i := min{i — 1,p2}. If i < 0 then stop else goto (3). (J) Выберем xt e X; и положим Х( := X^ \ {xj. If i нечетно, i > 3, (v(T),Е(Г) AE((x0,x1,...,х{_ъx{,x0))) —гамильтонов цикл и g((x0, *!,..., JCf_i, JCf, Jf0)) > 8* ^еп: Положим P* := (x0, *i,..., *i-i, **, x0) и g* := g(P*). (5) If i нечетно then: Положим Xi+i := g((x0, хъ ..., Х;_Ъ jc?, *)) > g*}. If i четно и i < p2 then: Положим Xj+1 :=
§21.3. Метод локальных улучшений 623 If i четно и i > р2 then: Положим Xi+i := {х G V(Kn): fo, х} € Е(Г) \Е((*0, xl9..., xt)), (У(Г), Е(Г) A E((xo, *ъ • • • у *i, x, x0))) образует гамильтонов цикл}. Положим i := i +1. Goto (3). Заметим, что если (У(Г), Е (Г) А Is ((*о> лг1?..., х{_ъ хь х0))) является гамиль- тоновым циклом на шаге 0, то (x0,x1,...,xi_1,xi9x0) представляет собой замкнутую чередующуюся цепь. Линь и Керниган предложили выбрать параметры следующим образом: Pi=5, р2 = 2. Это минимальные значения, гарантирующие перебор всех 3-обменов. Теорема 21.17 (Линь и Керниган [47]). Для алгоритма Линя—Кернигана справедливы следующие утверждения: (а) для G = КПУ рг = оо и р2 = °° алгоритм находит подходящую замкнутую чередующуюся цепь Р, для которой (У(Т), Е(Т) АЕ(Р)) является гамилъ- тоновым циклом {если Р существует); (б) для G = Кп, рг = 5 и р2 = 2 алгоритм возвращает гамильтонов цикл, который является 3-оптимальным. Доказательство. Пусть Г — гамильтонов цикл, на котором алгоритм заканчивает работу. Тогда прирост g* должен был равняться нулю все время, начиная с момента последнего изменения гамильтонова цикла. Отсюда следует, что в случае рг = р2 = оо алгоритм полностью перебрал все подходящие чередующиеся цепи. В частности, выполнено утверждение (а). В случае рг = 5 и р2 = 2 алгоритм по крайней мере перебрал все подходящие замкнутые чередующиеся цепи длины 4 или 6. Предположим, что существует подходящий 2-обмен или 3-обмен, дающий гамильтонов цикл Г'. Тогда ребра Е(Т) Д ?(Г0 образуют замкнутую чередующуюся цепь Р с не более чем 6 ребрами и g(P) > 0. По лемме 21.16 цепь Р без ограничения общности можно считать подходящей, а значит, алгоритм должен был ее найти. Отсюда вытекает утверждение (б). ? Следует отметить, что представленная процедура не может найти «непоследовательный» обмен — подобный тому, что изображен на рис. 21.5. В этом примере текущий гамильтонов цикл не может быть улучшен с помощью алгоритма Линя — Кернигана, однако, применив (непоследовательный) 4-обмен, мы бы получили оптимальное решение. Итак, можно усовершенствовать алгоритм Линя — Кернигана следующим образом. По окончании работы мы пытаемся (эвристически) найти непоследовательный 4-обмен, улучшающий гамильтонов цикл. Если мы преуспели в этом, продолжим работать с новым гамильтоновым циклом, иначе останавливаем процесс. Важную роль играет выбор графа G. Этот граф должен быть разреженным (иначе вычисление Xi+l может занять слишком много времени), однако также должен содержать хороший гамильтонов цикл. Например, для евклидовых задач часто хорошо подходит триангуляция Делоне.
624 Глава 21. Задача коммивояжера Алгоритм Линя — Кернигана гораздо более эффективен, чем, например, алгоритм З-Opt. Действительно, качество находимых им решений не хуже (а обычно гораздо лучше) при сопоставимом среднем времени работы (для рг = 5 и р2 = 2). Эксперименты Линя и Кернигана показывают, что на практике время работы приблизительно равно 0(п2,2). Однако представляется маловероятным, чтобы время работы алгоритма в худшем случае было полиномиальным; точная формулировка этого утверждения (и его доказательство) приводится в упражнении 12 (Пападимитриу [53]). Почти все эвристики локальных улучшений, используемые для решения задачи коммивояжера на практике, представляют собой вариации данного алгоритма. Хотя в худшем случае его точность оказывается ниже, чем у алгоритма Кристофидеса, на практике алгоритм Линя — Кернигана обычно находит намного лучшие решения, качество которых отличается от оптимального всего на несколько процентов. Ряд полезных модификаций был предложен в работах Эпплгейта, Кука и Роэ [11] а также Хельсгауна [35]. Из упражнения 14 гл. 9 следует, что в предположении, что Р — NP, не существует алгоритма для решения задачи коммивояжера, основанного на методе локальных улучшений, который бы имел полиномиальное время работы на одну итерацию и всегда бы находил оптимальное решение (здесь под одной итерацией понимается промежуток между двумя изменениями текущего гамильтонова цикла). Сейчас мы покажем, что нельзя даже определить, является ли данный цикл оптимальным или нет. Для доказательства вначале рассмотрим следующий частный случай задачи о гамильтоновом цикле. Restricted Hamiltonian Circuit (задача об ограниченном гамильтоновом цикле) Дано: ненаправленный граф G и некоторый гамильтонов путь в G. Вопрос: содержит ли G гамильтонов цикл? Лемма 21.18. Задача Restricted Hamiltonian Circuit является NP-полной. Доказательство. Пусть дан экземпляр G задачи о гамильтоновом цикле (которая NP-полна, см. теорему 15.25), построим тогда эквивалентную ограниченную задачу о гамильтоновом цикле. Пусть V(G)={1,.. .,п}. Возьмем п копий графа, изображенного на рис. 21.7 (будем называть его бриллиантом), и соединим их вертикальными ребрами вида {$,ЛГг+1}(1 = 1,...,п-1). Ясно, что полученный граф содержит гамильтонов путь из Ыг в Sn. Добавим теперь ребра {Wit Ej} и {W^, Et} для всякого ребра {i,j} € E(G). Назовем полученный граф Я. Очевидно, что любой гамильтонов цикл в G индуцирует гамильтонов цикл в Н.
§ 21.4. Политоп задачи коммивояжера 625 Более того, гамильтонов цикл в Н должен пройти все «подграфы-бриллианты» одинаковым образом: все их следует проходить либо от Е{ до Wt, либо от St до N(. Второй случай, однако, невозможен. Поэтому цикл Н является гамильтоновым, если и только если G является таковым. ? Теорема 21.19 (Пападимитриу и Стейглиц [54]). Пусть заданы экземпляр метрической задачи коммивояжера и некоторый гамилътонов цикл в ней. Тогда задача проверки данного цикла на оптимальность является coNP-полной. Доказательство. Принадлежность задачи классу coNP очевидна: для доказательства неоптимальности достаточно предъявить более короткий гамильтонов цикл. Сведем теперь ограниченную задачу о гамильтоновом цикле к отрицанию рассматриваемой задачи. А именно, пусть даны граф G и гамильтонов путь Р в G. Проверим сначала, соединены ли концы пути Р ребром. Если да, то преобразование закончено. Иначе положим (1 при {i,j}eE(G), Cij' \2 при {i, j}*E{G). Для заданных длин выполняется неравенство треугольника. Более того, Р определяет гамильтонов цикл стоимости п +1, который является оптимальным тогда и только тогда, когда в G нет гамильтонова цикла. ? Следствие 21.20. Если РфЫР, то ни один алгоритм локальных улучшений для задачи коммивояжера, выполняющий каждую итерацию за полиномиальное время, не может быть точным. Доказательство. Точный алгоритм локальных улучшений должен заодно уметь выяснять, является ли заданный гамильтонов цикл оптимальным. ? Алгоритмы, основанные на идее локальных улучшений, также применимы и к многим другим задачам комбинаторной оптимизации. Например, симплекс- метод может рассматриваться как алгоритм локальных улучшений. Хотя алгоритмы локальных улучшений оказываются хороши на практике, неизвестно почти никаких теоретических доказательств их эффективности за исключением некоторых специальных случаев (см., например, упражнение 10 в гл. 16 и § 22.6, 22.8). Для многих NP-трудных задач и интересных окрестностей (включая обсуждаемые в этом параграфе) также неизвестно, можно ли найти локальный оптимум за полиномиальное время (для естественно определяемых понятий локальной близости); см. упражнение 12. Большое число примеров эвристик локальных улучшений приведено в книге под ред. Артса и Ленстры [9]. Дополнительные теоретические результаты о методе локальных улучшений приводятся в работе Михелса, Артса и Корста [49]. § 21.4. Политоп задачи коммивояжера Первыми, кому удалось предложить практический способ решения задач коммивояжера нетривиального размера, были Данциг, Фалкерсон и Джонсон [23]. Суть их метода состояла в том, чтобы сформулировать задачу в виде целочисленной
626 Глава 21. Задача коммивояжера программы, получить решение для ее линейной релаксации, а затем последовательно добавлять секущие плоскости. Их работа стала отправной точкой анализа политопа задачи коммивояжера. Определение 21.21. Пусть п > 3. Обозначим через Q(n) политоп задачи коммивояжера, т. е. выпуклую оболочку множества векторов, соответствующих га- мильтиновым циклам в полном графе Кп. Хотя полное описание политопа задачи коммивояжера остается открытой задачей, есть несколько интересных результатов, и некоторые из них полезны для практических вычислений. Поскольку 2вб5(у) хе = 2 для всех v еУ (Кп) и всех х €Q(n), размерность множества Q(n) не превосходит lE(Kn)\-\V(Kn)\ = (§-n = ?^. Покажем, что в действительности dim(Q(n)) = —^—. Для этого нам понадобится следующий факт из теории графов. Лемма 21.22. Для любого к > 1 выполняются следующие утверждения: (а) множество ребер K2k+i может быть разбито на к гамильтоновых циклов; (б) множество ребер К2к может быть разбито нак—1 гамильтоновых циклов и одно совершенное паросочетание. Доказательство. Для доказательства утверждения (а) пронумеруем вершины числами 0,..., 2fc — 1, х. Рассмотрим гамильтоновы циклы Tt = (x,i,i + l,i-l3i + 2,i-2,i + 3,...,i-k + 2,i + k-l,i-k + l,i + k}x) для i = О,..., fc — 1 (индексы берутся по модулю 2fc). Пример такого построения приведен на рис. 21.8. Поскольку \E(K2k+i)\ = fc(2fc +1), достаточно показать, что эти гамильтоновы циклы попарно не пересекаются по ребрам. Это очевидно для ребер, инцидентных вершине х. Более того, легко заметить, что для таких {а,Ъ) GЕ(7J), что а,Ьфх, выполняется включение a + be {2i,2i +1}. Для доказательства утверждения (б) пронумеруем вершины числами 0,..., 2fc — 2, х. Рассмотрим гамильтоновы циклы Tt= (x,i,i + l,i-l,i + 2,i-2,i-h3,...,i-hfc-2,i-fc + 2,i + fc-l,i-fc + l,jc) для i = 0,..., fc — 2 (индексы берутся по модулю 2fc — 1). Рассуждая аналогично, можно показать, что эти гамильтоновы циклы попарно не пересекаются по ребрам. После их удаления оставшийся граф будет 1-регулярным, а значит, представляет собой совершенное паросочетание. ? Теорема 21.23 (Грётшель и Падберг [30]). Справедливо равенство dimCQGO) = !fc^. Доказательство. Для п = 3 утверждение тривиально. Пусть теперь п > 4. Рассмотрим произвольную вершину v G V(Kn).
§ 21.4. Политоп задачи коммивояжера 627 i-k + 2 i-k + 1 Рис. 21.8 Случай 1: п четно, скажем, п = 2к + 2 для некоторого целого к > 1. По лемме 21.22(a) граф Кп — v представляет собой объединение к реберно непересекающихся гамильтоновых циклов Т0,..., Тк_1. Теперь пусть Ttj получается из Т{ заменой ;-го ребра {а, Ъ) на пару ребер {a, v}, {v,b} (i = 0,..., к — 1; j = 1,..., п — 1). Рассмотрим матрицу, строки которой представляют собой характеристические векторы этих к(п — 1) циклов. Тогда столбцы, отвечающие ребрам, концы которых отличны от v, образуют квадратную матрицу (А 0 0 U 0 А 0 0 0 . 0 . А . 0 . .. о\ .. 0 .. 0 .. А где А = (О 1 1 Л 1 1 Vi 1 1 ... оу Поскольку эта матрица невырожденна, векторы, соответствующие к(п — 1) циклам, линейно независимы. Отсюда получаем dim(Q(n)) > к{п -1) -1 = 5^1. Случай 2: п нечетно, скажем, п = 2fc + 3 для некоторого целого к > 1. По лемме 21.22(6) граф Kn — v является объединением fc гамильтоновых циклов и одного совершенного паросочетания М. Из этих циклов мы построим к(п — 1) циклов в JCn, так же как и в случае 1. Теперь дополним совершенное паросочетание М произвольным образом до гамильтонова цикла Г в Кп_г: для каждого ребра е = {а, Ъ) из М заменим е в Г на два ребра {а, у} и {у, Ь}. Таким образом, получим еще к +1 гамильтоновых циклов. Так же как и выше, векторы, соответствующие этим к{п — l) + fc + l = fcn + l циклам, линейно независимы, откуда следует, что п(п-З) dim(Q(n))S*fcn + l-l = ?
628 Глава 21. Задача коммивояжера Целые точки множества Q(n), т. е. гамильтоновы циклы, могут быть описаны следующим образом. Утверждение 21.24. Векторы, соответствующие гамилътоновым циклам в графе Кп, — это в точности те целочисленные векторы х, для которых 0<хе<1 (е €?(*„)); ?]*е = 2 (veV(Kn)); ееб(ьО J х€<\Х\-1 (0фХсУ{Кп)). (21.1) (21.2) (21.3) e<EE(JCn[X]) Доказательство. Очевидно, что векторы, соответствующие любому гамильто- нову циклу, удовлетворяют этим ограничениям. Любой целочисленный вектор, удовлетворяющий условиям (21.1) и (21.2), отвечает совершенному простому 2-паросочетанию, т. е. объединению вершинно непересекающихся циклов, содержащих все вершины. Условие (21.3) запрещает циклы с менее чем п ребрами. ? Условия (21.3) обычно называются неравенствами подмаршрутов, а политоп, задаваемый условиями (21.1), (21.2), (21.3), называется политопом подмаршрутов. В общем случае политоп подмаршрутов не является целым, как показывают примеры на рис. 21.9 (ребра, отсутствующие на рисунке, имеют вес 3): кратчайший гамильтонов цикл имеет длину 10, однако оптимальное дробное решение [хе = 1 для всех ребер е веса 1 и хе = 1/2 для всех ребер е веса 2) имеет общий вес 9. Полезно также следующее альтернативное описание политопа подмаршрутов. Утверждение 21.25. Пусть V(Kn) = {1,..., п}. Рассмотрим векторы хе [0,1]Е^Кп\ удовлетворяющие условию A ^es5^ хе = 2 для всех v е V(Kn). Тогда следующие утверждения эквивалентны: ]Гхе< |Х|-1 (0фХсУ(Кп)); (21.3) ееЕ(КП[Х]) J]*e<|X|-l (0^*су(кп)\{1}); (21.4) е<=Е(Кп[Х]) ]Гхе>2 (0^XcV(Kn)). (21.5) ее5(Х) Доказательство. Для любого непустого множества X с V(Kn) имеем ee5(V(Kn)\X) ee5(X) ueX ee5(v) ееЕ(Кп[Х]) ееЕ(Кп[Х]) Рис. 21.9 откуда следует эквивалентность утверждений (21.3), (21.4) и (21.5). ?
§ 21.4. Политоп задачи коммивояжера 629 Следствие 21.26. Задача отделения для неравенств подмаршрутов может быть решена за полиномиальное время. Доказательство. Будем использовать неравенство (21.5) и рассматривать х как пропускные способности ребер. Требуется выяснить, существует ли в (Кп, х) разрез с пропускной способностью меньше 2. Тем самым задача отделения сводится к поиску минимального разреза в ненаправленном графе с неотрицательными пропускными способностями. По теореме 8.42 такой разрез может быть найден за время О (п3). ? Поскольку любой гамильтонов цикл представляет собой совершенное простое 2-паросочетание, выпуклая оболочка всех совершенных простых 2-паро- сочетаний содержит политоп задачи коммивояжера. Отсюда по теореме 12.3 получаем следующий результат. Утверждение 21.27. Любой вектор х €Q(n) удовлетворяет неравенствам \F\-1 Zj *е<\Х\+1- e&E(Kn[X])UF для всех таких X с V(Kn), F с 5(Х), что \F\ нечетно. (21.6) Рис. 21.10 Ограничения (21.6) называются неравенствами 2-паросочетаний. Достаточно рассматривать неравенства (21.6) для случая, когда F является паросочетанием; остальные неравенства 2-паросочетаний будут их следствиями (см. упражнение 15). По теореме 12.21 задача отделения для неравенств 2-паросочетаний может быть решена за полиномиальное время. Поэтому с помощью метода эллипсоидов (теорема 4.21) можно оптимизировать линейную функцию на политопе, задаваемом неравенствами (21.1), (21.2), (21.3) и (21.6), за полиномиальное время (см. упражнение 14). Обобщением неравенств 2-паросочетаний служат неравенства гребней (comb inequalities), представленные на рис. 21.10. Утверждение 21.28 (Хватал [21], Грётшель и Падберг [30]). Пусть 7\,..., Ts с с V(Kn) — набор из s попарно непересекающихся множеств, s>3 нечетно, Н с с V(Kn)9 Ttr\H ф® uTt\H ф0 при i = 1,...,5. Тогда любой вектор х е Q(n) удовлетворяет неравенству S ее8(Н) i=l ee5(Tt) Доказательство. Пусть х — вектор, соответствующий некоторому гамильтонову циклу. Для любого i е {1,..., s} имеем . хР + 2 *е>3, еебЪ) ее5(Н)пЕ(*пИ)
630 Глава 21. Задача коммивояжера JZK \6 хе = 1 хе = 1/2 Рис. 21.11 поскольку цикл должен войти в множества ГДЯи^ПЯи выйти из них. Суммируя эти 5 неравенств, получаем s ее 5(H) i=l ее 5(7,) Поскольку в левой части стоит четное число, утверждение доказано. ? Дробное решение х, изображенное на рис. 21.11 (ребра е, для которых хе = 0, опущены), представляет собой пример вектора, на котором неравенства гребней нарушаются для задачи в К12. Действительно, положим Н = {1,2,3,4,5,6}, Тг = {1,11}, Т2 = {2,12} и Т3 = {5,6,7,8}. Легко проверить, что соответствующее неравенство гребней нарушено. Заметим, что неравенства (21.1), (21.2), (21.3), (21.6) выполнены и вектор х оптимален относительно весов с(е) := 1 — хе (значение целевого функционала равно 3), в то время как оптимальное решение задачи коммивояжера имеет вес 7/2. Определим еще один класс условий, называемых неравенствами деревьев клик. Теорема 21.29 (Грётшель и Пуллибланк [31]). Пусть Нъ ..., Нг — попарно непересекающиеся подмножества множества V(G) {ручки, handles), и пусть Tlf...,Ts (s > 1) — такие попарно непересекающиеся непустые собственные подмножества множества V(G) (зубы, teeth), что • любая ручка пересекает нечетное число зубов, не меньшее трех; • любой зуб Т содержит хотя бы одну вершину, не принадлежащую ни одной ручке; • граф G := К^Щ и... UHr U Тг и... U Ts] связен, но граф G- (Т^ ПН,) несвязен приТ{ПН,ф®. Пусть tj — число ручек, пересекающих TJ- (; = 1,..., s). Тогда любой вектор xeQ(n) удовлетворяет условию i=l е€Е(К„[Н,]) j=l eeE(K„[Tj]) i=l j=l S + l (21.8)
§ 21.5. Нижние оценки 631 Мы опустим доказательство этого утверждения, которое носит технический характер. Неравенства деревьев клик включают в себя как частные случаи условия (21.3) и (21.6) (см. упражнение 16). Впоследствии в работе Бойд и Кан- нингема [15] они были обобщены до так называемых двудольных неравенств. Существует полиномиальный алгоритм для задачи отделения от неравенств деревьев клик (21.8) с фиксированным количеством ручек и зубов (Карр [17]), но неизвестно алгоритма для общего случая неравенств деревьев клик. Даже для задачи отделения для неравенств гребней не найден полиномиальный алгоритм. Все неравенства (21.1), (21.4) (ограниченные на случай 3 < \Х\ < п—3) и (21.6) (ограниченные на случай, когда F является паросочетанием) определяют различные фасеты в Q(n) (при п > 6). Можно показать, что тривиальные неравенства (21.1) также определяют фасеты. Для этого достаточно найти dim(Q(n)) линейно независимых гамильтоновых циклов, для которых хе = 1 (а также для которых хе = 0) для некоторого ребра е. Доказательство здесь аналогично таковому в теореме 21.23, см. работу Грётшеля и Падберга [30]. Более того, все равенства (21.8) определяют фасеты Q(n) (п > 6). Доказательство этого факта достаточно сложное, см. работы Грётшеля и Падберга [30] или Грётшеля и Пуллибланка [31]. Число фасет политопа Q(n) быстро растет: уже Q(10) имеет более 50 миллиардов фасет. Любой полиэдр, который можно спроектировать в Q(n) (и который тем самым задает расширенную формулировку задачи), имеет 2п^п ^ фасет (Фи- орини и др. [26]). Полное описание граней политопа Q{ri) неизвестно, и крайне маловероятно, что оно существует. Рассмотрим следующую задачу. TSP Facets (задача о распознавании фасет для политопа коммивояжера) Дано: целое число п и целочисленное неравенство ах < j8. Вопрос: определяет ли данное неравенство грань политопа Q(n)? Следующий результат показывает, что маловероятно получить полное описание политопа задачи коммивояжера. Теорема 21.30 (Карп и Пападимитриу [42]). Если задача TSP Facets лежит в NP, то NP = coNP. ? Более того, задача проверки того факта, являются ли две вершины Q(n) смежными, т. е. принадлежат ли они общей грани единичной размерности, является NP-трудной (Пападимитриу [52]). § 21.5. Нижние оценки Предположим, что для заданного экземпляра задачи коммивояжера нам удалось эвристически найти некоторое решение, скажем, применив алгоритм Линя — Кернигана. Нам неизвестно, является ли этот гамильтонов цикл оптимальным или хотя бы близким к оптимальному. Существует ли способ гарантировать, что
632 Глава 21. Задача коммивояжера его длина отличается от оптимальной не более чем на х процентов? Другими словами, существуют ли нижние оценки на оптимум задачи? Нижние оценки могут быть найдены рассмотрением любой линейной релаксации целочисленной линейной программы задачи коммивояжера. Например, можно использовать неравенства (21.1), (21.2), (21.3) и (21.6). Однако эту линейную программу довольно сложно решить (хотя теоретически полиномиальные алгоритмы существуют, например метод эллипсоидов). Проще получить нижние оценки рассмотрением лишь условий (21.1), (21.2), (21.6), т. е. с помощью поиска совершенного простого 2-паросочетания минимального веса (см. упражнение 1 из гл.12). Однако наиболее эффективный из известных методов состоит в использовании релаксации Лагранжа (см. § 5.6). Метод лагранжевых релаксаций впервые применили к задаче коммивояжера Хелд и Карп [33, 34]. Их способ основан на следующей идее. Определение 21.31. Пусть дан полный граф Кп, для которого V{Kn) = {1,..., п}. Тогда 1-дерево — это граф, состоящий из остовного дерева на вершинах {2,..., п} и двух ребер, инцидентных вершине 1. Гамильтоновы циклы — это в точности 1-деревья Т, для которых |5T(i)j = 2 при всех i = 1,..., п. Остовные деревья хорошо изучены, и 1-деревья не сильно от них отличаются. Например, справедливо следующее утверждение. Утверждение 21.32. Выпуклая оболочка множества векторов, соответствующих всем 1-деревьям, — это множество векторов вида х е [0,1]Е^Кп\ для которых 2*е = П, ]Г*е=2, ]Г*е<1*|--1 (0^ХС{2,...,П». е<=Е(Кп) ее 5(1) е<ЕЕ(Кп[Х]) Доказательство. Утверждение следует непосредственно из теоремы 6.13. ? Заметим, что несложно найти оптимум любого линейного функционала на множестве всех 1-деревьев: достаточно найти минимальное остовное дерево на вершинах {2,..., п} (см. § 6.1) и добавить два самых дешевых ребра, инцидентных вершине 1. Отсюда, применяя метод релаксаций Лагранжа, получаем следующую оценку. Утверждение 21.33 (Хелд и Карп [33]). Пусть даны экземпляр (Кп,с) задачи коммивояжера, удовлетворяющий условию V(Kn) = {1,..., п}, и набор чисел Я = = (Я2,..., Яп) е Rn_1. Тогда значение LR(Kn,с,Х) :=minjc(E(r)) + J](|5T(i)|-2) Я^: Т — 1-дерево\ ^ i=2 ' является нижней оценкой для длины оптимального гамилътонова цикла. Эта оценка может быть найдена за время, необходимое для решения задачи о минимальном остовном дереве нап — 1 вершинах. Доказательство. Оптимальный цикл Т представляет собой 1-дерево, в котором |5T(i)| = 2 для всех i, поэтому значение LR(itn, с, Я) является нижней оценкой.
§ 21.5. Нижние оценки 633 Пусть заданы числа Я = (Я2,..., Яп), выберем Яг произвольно и заменим веса с на ^({i,;}) :=c({i,;'}) + Xt + \j (К i < ; < п). Тогда все, что нам нужно сделать, — это найти 1-дерево минимального относительно с! веса. ? Заметим, что множители Лагранжа Х{ [i = 2,..., п) не обязаны быть неотрицательными, поскольку двойственные им условия |5T(i)| = 2 являются равенствами. Значения \{ могут быть найдены методами субградиентой оптимизации; см. § 5.6. Максимум вида НК(КП,с) := max{LR(JCn,с,Х):ЛеRn~1} (представляющий собой оптимум лагранжево двойственной задачи) называется оценкой Хелда—Карпа для {Кп, с). Теорема 21.34 (Хелд и Карп [33]). Для любого экземпляра {Кп, с) задачи коммивояжера, для которого V(Kn) = {1,..., п}, справедливо равенство Ш(Кп, с) = min \сх: О < хе < 1 (е € Е(Кп)), 2*e = 2(i/€V(Kn)), 2 *е<|Л-1(0^/с{2,...,п})1. ее5(и) eeE(Kn[I]) } Доказательство. Равенство следует непосредственно из теоремы 5.36 и утверждения 21.32. ? Другими словами, оценка Хелда — Карпа совпадает с оптимумом линейной программы на политопе подмаршрутов (см. утверждение 21.25). Это наблюдение помогает уточнить качество оценки Хелда — Карпа для случая метрической задачи коммивояжера. Нам также снова потребуется идея из алгоритма Кристофидеса. Теорема 21.35 (Вулси [64]). Для любого экземпляра метрической задачи коммивояжера оценка Хелда—Карпа составляет не менее 2/3 длины оптимального гамилътонова цикла. Доказательство. Пусть (iCn, с) —экземпляр метрической задачи коммивояжера, и пусть Г — 1-дерево минимального веса в (Кп, с). Имеем с(Е(Т)) = LR(Kn, с, 0) < НК(1ГП, с). Пусть множество W с V(Kn) состоит из вершин, имеющих нечетную степень в Т. Поскольку каждый вектор х в политопе подмаршрутов в (Кп, с) удовлетворяет условию Хее5(х) хе ^ 2 для всех непустых множеств X с V(Kn), полиэдр х: хе > 0 для всех е е Е(Кп), /^ хе > 2 для всех таких X, что \Х П W| нечетно У ее5(Х) ' содержит в себе политоп подмаршрутов. Поэтому по теореме 21.34 получаем min \ сх: хе > 0 для всех е е Е(Кп), { ее5(Х) хе>1 для всех таких X, что \Х П W\ нечетно у < ^ НК(КП, с).
634 Глава 21. Задача коммивояжера Заметим теперь, что по теореме 12.18 выражение в левой части представляет собой минимальный вес ^-соединения J в (Кп, с). Поэтому c(E(r))+c(J)<§HK(Kn,c). Так как граф G := (V(Kn), Е(Т) U J) связный и эйлеров, это значение дает верхнюю оценку на длину оптимального гамильтонова цикла (по лемме 21.3). ? Другое доказательство можно найти в работе Шмойса и Уильямсона [61]. Неизвестно, является ли эта оценка точной. Пример на рис. 21.9 на с. 628 (ребра, не изображенные на рисунке, имеют вес 3) показывает, что оценка Хелда — Карпа (равная 9) строго меньше длины оптимального гамильтонова цикла (которая равна 10). Существуют примеры метрической задачи коммивояжера, в которых НК(Кп, с)/ОРТ(Кп, с) произвольно близко к 3/4 (см. упражнение 17). Эти случаи, однако, скорее составляют исключение: на практике оценка Хелда — Карпа обычно значительно лучше; см., например, работы Джонсона, МакГеоха и Ротберга [38] или Эпплгейта и др. [1]. § 21.6. Метод ветвей и границ Метод ветвей и границ (branch-and-bound) представляет собой технику сокращения полного перебора вариантов решений. Для многих NP-полных задач комбинаторной оптимизации метод ветвей и границ представляет собой наилучший известный способ нахождения оптимального решения. Этот метод был предложен Лэнд и Дойг [46] и впервые применен к задаче коммивояжера Литтлом и др. [48]. Чтобы применить метод ветвей и границ к задаче комбинаторной оптимизации (требующей, скажем, выполнить минимизацию некоторого целевого функционала, обозначаемого далее cost), необходимо научиться выполнять шаги двух типов: • «разделение» (ветви; branch): разделить заданное подмножество возможных решений (например, гамильтоновых циклов для задачи коммивояжера) на два или более непустых подмножества; • «ограничение» (границы; bound): для подмножества, полученного применением последовательности шагов разделения, вычислить нижнюю оценку на стоимость любого решения из этого подмножества. Тогда общая процедура выглядит следующим образом. Branch-And-Bound (метод ветвей и границ) Вход: экземпляр задачи для минимизации. Выход: оптимальное решение S*. (Т) Создать дерево Т :=({5?}, 0), где <У — множество всех допустимых решений. Отметить множество Sf как активное.
§ 21.6. Метод ветвей и границ 635 Взять в качестве границы значение U := оо (можно также применить какую-либо эвристику и получить более точную верхнюю оценку). @ Выбрать активную вершину X дерева Г (если их нет, stop). Пометить вершину X как неактивную. («Ветви») Найти разбиение X = Хг и... U Xt. (3) For каждого i = 1,..., t do: («Границы») Найти нижнюю оценку L на стоимость любого решения в Х(. If \Х{\ = 1 (скажем, Х{ = {S}) и cost(S) < U then: Положить U := cost(S) и S* := S. If \Xt\>lnL<U then: Положить Г := (У(Г) U {XJ, Е(Г) U {{X, Xt}}) и пометить вершину Х{ как активную. 0 Goto (2). Ясно, что приведенный выше метод всегда находит оптимальное решение. Его конкретная реализация (и эффективность), конечно, сильно зависит от вида решаемой задачи. Мы обсудим возможные реализации для случая задачи коммивояжера. Самый простой путь для реализации шага ветвления — это выбрать ребро е и разбить X на части Хе и Х\Хе, где Хе состоит из тех циклов в X, которые содержат ребро е. Тогда любая вершина X дерева может быть описана следующим образом: 5^д = {Sey:AC:S,BnS = 0} для некоторых А, В с ?(G). Рассмотрим множество вида X = 5?А>В. Тогда задача коммивояжера с дополнительными ограничениями (все ребра из А должны лежать на цикле, а ребра из В — не лежать) может быть переписана в виде обычной задачи коммивояжера без ограничений путем изменения весов с: {се, если ее А; се + С, если e<?AUB; се + 2С, если ее В, где С := See?(G) се + 1- Тогда циклы в 5^з и только они имеют вес (относительно с') меньше (п + 1 — \А\)С. Более того, исходный и модифицированный веса любого гамильтонова цикла в УА}В отличаются ровно на (п — |А|)С. Поэтому для выполнения шага оценки может быть использована оценка Хелда — Карпа (см. §21.5). Метод ветвей и границ, описанный выше для задачи коммивояжера, был использован для решения достаточно больших примеров задачи коммивояжера (до 100 городов).
636 Глава 21. Задача коммивояжера Метод ветвей и границ также часто применяется для решения целочисленных программ, особенно когда переменные двоичные (равны 0 или 1). Наиболее естественная реализация шага ветвления здесь состоит в том, чтобы взять одну переменную и рассмотреть оба возможных ее значения. Нижняя оценка может быть легко определена решением соответствующей линейной релаксации. В худшем случае метод ветвей и границ не лучше полного перебора всех возможных решений. На практике эффективность зависит не только от того, как реализованы шаги «ветвления» и «оценки». Желательно иметь хорошую стратегию выбора активной вершины X на шаге (2) алгоритма. Также важно поддерживать в процессе работы дерево ветвей и границ Г небольшим. Помочь этому может применение удачной эвристики поиска начального решения, которая в том числе даст хорошую верхнюю оценку, а значит, отсечет многие ветви перебора. С учетом результатов § 21.4 алгоритм Branch-And-Bound также часто объединяют с методом секущих плоскостей (см. §5.5). Опишем один из возможных способов такой комбинации. Поскольку имеется экспоненциальное количество ограничений (и даже они не описывают Q(n) полностью), начнем с решения линейной программы minjcx: 0<хе < 1 (е €?(?„)), J] хе = 2 (v € V{Kn))\, т. е. с ограничений (21.1) и (21.2). В качестве целых элементов этот многогранник содержит характеристические векторы совершенных простых 2-паросоче- таний. Предположим, что имеется решение х* вышеописанной линейной программы. Возможны три случая: (а) х* является вектором, соответствующим гамильтонову циклу; (б) нарушается одно из условий: неравенство подмаршрутов (21.3), неравенство 2-паросочетаний (21.6), неравенство гребней (21.7) или неравенство деревьев клик (21.8); (в) не найдено нарушенных неравенств (в частности, не нарушены неравенства подмаршрутов), но вектор х* дробный. Если вектор х* целочисленный, но не соответствует никакому гамильтонову циклу, то по утверждению 21.24 должно быть нарушено некоторое неравенство подмаршрутов. В случае (а) оптимальное решение найдено. В случае (б) добавим нарушенное неравенство (или, возможно, несколько нарушенных неравенств) к текущей линейной программе и решим ее заново. В случае (в) все, что мы имеем,— это (обычно очень хорошая) нижняя оценка на длину цикла. Используя эту оценку (и дробное решение), мы можем запустить алгоритм Branch-And-Bound. Поскольку нижняя оценка обычно весьма точная, мы надеемся, что можно будет однозначно фиксировать заранее многие из переменных задачи, а значит, уменьшить количество необходимых шагов ветвления. Более того, в каждой вершине дерева ветвей и границ можно аналогичным образом произвести поиск нарушенных неравенств.
Упражнения 637 Этот способ, комбинирующий методы ветвей и границ с техникой секущих плоскостей (и называющийся по-английски branch-and-cut), был использован для нахождения оптимального решения экземпляров задачи коммивояжера с более чем 10 000 городами. Безусловно, для получения практически эффективной реализации необходимо сделать массу важных уточнений и привлечь дополнительные идеи, которые были опущены выше. В частности, важно иметь хорошие эвристики поиска нарушенных неравенств. Более подробную информацию, а также многие полезные ссылки можно найти в работах Эпплгейта и др. [1,10], а также Юнгера и Наддефа [40]. Несмотря на то что представленные методы успешно применяются для нахождения оптимальных решений для весьма больших экземпляров задачи, скорость их работы в худшем случае невелика. В работе Вёгингера [63] представлен обзор субэкспоненциальных точных алгоритмов для решения А/Р-полных задач; см. также упражнение 1. Упражнения 1 (Хелд и Карп [32]). Опишите точный алгоритм для задачи коммивояжера, использующий динамическое программирование. Пусть вершины (города) пронумерованы числами 1,..., п. Обозначим через у (А, х) минимальную стоимость такого 1-х-пути Р, что У(Р) = A U {1}, для всех А с {2,3,..., п} и х е А. Идея состоит в том, чтобы посчитать все значения у (А, х). Сравните время работы этого алгоритма с прямым перебором всех вариантов. Замечание. Время работы в худшем случае этого точного алгоритма для решения задачи коммивояжера является наилучшим известным. Для евклидовой задачи коммивояжера Хванг, Чжан и Ли [37] описали точный алгоритм, использующий планарные сепараторы и имеющий субэкспоненциальное время работы 0(c^logn). 2 (Триш, Ноллес и Фиген [62]). Предположим, что п городов экземпляра задачи коммивояжера разделены на т кластеров так, что расстояние между двумя городами равно нулю, если и только если они принадлежат одному кластеру. (а) Докажите, что существует оптимальный цикл, в котором не более т(т—1) ребер имеют положительный вес. (б) Докажите, что если т фиксировано, то такая задача коммивояжера может быть решена за полиномиальное время. 3 (Триш, Ноллес и Фиген [62]). Рассмотрим следующую задачу. Машина, отправляющаяся с некоторого склада dl9 должна посетить нескольких покупателей съ..., сп и в конце вернуться в йг. Между посещением двух покупателей требуется заехать на один из складов dly..., dk. Пусть даны неотрицательные симметричные расстояния между покупателями и складами и требуется найти самый короткий гамильтонов цикл. (а) Покажите, что эта задача NP-полная. (б) Покажите, что она может быть решена за полиномиальное время, если к фиксировано. (Указание. Используйте упражнение 2.)
638 Глава 21. Задача коммивояжера 4 (Фриз, Галбиати и Маффиоли [28]). Рассмотрим несимметричную задачу коммивояжера с неравенством треугольника. А именно, пусть заданы число neN и расстояния c((i, j)) еR+, где ?,; е {1,..., п}, i ф j, удовлетворяющие неравенству треугольника c{[i, j) + с((;, fc)) > c((i, fc)) для всех различных ?,;, к € {1,..., п}. Требуется найти такую перестановку п: {1,..., п} —»{1,..., п}, что сумма п-1 J] С((7Г(0, 7Г(1 + 1))) + С((7Г(П), я(1))) минимальна. Опишите алгоритм, всегда находящий решение, стоимость которого не более чем в log п раз превосходит оптимальную. Указание. Постройте вначале такой орграф Я, что V(H) = {1,..., n}, |5~(i0| = =|5+(i0|=l для всех и € V (Я), причем суммарная стоимость с(Е(Н)) минимальна. Стяните циклы Я и перейдите к следующей итерации. Замечание. Фейге и Сингх [25] нашли приближенный алгоритм с точностью (2/3) log п, а Асадпур и др. [13] разработали рандомизированный алгоритм с точностью О (log п/ (log log п)). 5. Опишите полиномиальный алгоритм для точного решения варианта задачи коммивояжера, являющейся метрическим замыканием взвешенного дерева. 6*. Найдите такие примеры экземпляров евклидовой задачи коммивояжера, что для них алгоритм Double-Tree находит цикл, длина которого произвольно близка к удвоенной оптимальной. 7 (Франк и др. [27], Шалазани, Мотвани и Рао [18]). Пусть G — полный двудольный граф с разбиением на доли V(G)=AUB, где |А|=|В|. Пусть с: ?(G)—>R+ — такая стоимостная функция, что с({а, Ь)) + с((Ъ, а')) + с{(а', Ь')) > с({а, Ь')) для всех а, а! е А и Ь, Ь' е В. Требуется найти гамильтонов цикл минимального веса в G. Эта задача называется метрической двудольной задачей коммивояжера. (а) Докажите, что для любого fc если существует приближенный алгоритм с коэффициентом fc для метрической двудольной задачи коммивояжера, то существует также и приближенный алгоритм с коэффициентом fc для метрической задачи коммивояжера. (б) Найдите 2-приближенный алгоритм для метрической задачи коммивояжера. (Указание. Объедините результаты упражнения 26 из гл. 13 с идеей алгоритма Double-Tree.) 8*. Постройте такие примеры экземпляров метрической задачи коммивояжера, что для них алгоритм Кристофидеса находит гамильтонов цикл, длина которого произвольно близка к оптимуму, умноженному на 3/2. 9. Покажите, что результаты § 21.2 распространяются на евклидову задачу о дереве Штейнера. Опишите схему приближения для этой задачи. 10. Докажите, что в алгоритме Линя — Кернигана для нечетных i,i>p2 + 3, множество Xt никогда не содержит больше одного элемента.
Упражнения 639 11. Рассмотрим следующую задачу. Another Hamiltonian Circuit (задача о Дано: Вопрос: граф G и гамильтонов цикл G. втором существует ли в G другой гамильтонов гамильтоновом цикл? цикле) (а) Покажите, что данная задача NP-полна. (Указание. Вспомните доказательство леммы 21.18.) (б)* Докажите, что для любого 3-регулярного графа G и е е Е (G) количество гамильтоновых циклов, содержащих е, четно. (в) Покажите, что задача Another Hamiltonian Circuit для 3-регулярного графа лежит в классе Р. (Несмотря на это, неизвестен полиномиальный алгоритм для нахождения по заданному 3-регулярному графу G и гамильтонову цикл в G второго гамильтонова цикла.) 12 (Джонсон, Пападимитриу и Яннакакис [39]). Пусть (X, (Sx)xeX, с, goal) — дискретная задача оптимизации с системой окрестностей Nx(y) с sx для у gSx и х е X. Предположим, что мы умеем решать следующую подзадачу за полиномиальное время: для любого х еХ найти элемент в Sx и для любого у е Sx найти элемент у' € Nx(y) с лучшей стоимостью или выяснить, что такого нет. Тогда говорят, что задача (вместе с данной системой окрестностей) принадлежит классу PLS (polynomial local search). Докажите, что если существует задача в PLS, для которой найти локальный оптимум для заданного экземпляра NP-трудно, то NP = coNP Указание. Постройте недетерминированный алгоритм для любой coNP-иол- ной задачи. Замечание. Задача коммивояжера является PLS-полной относительно окрестностей из алгоритма fc-Opt, а также относительно окрестностей из алгоритма Линя — Кернигана (Крентель [45], Пападимитриу [53]). Иными словами, если бы мы умели находить локальный оптимум за полиномиальное время, то это можно былъ бы делать для любой задачи и системы окрестностей в PLS. (С учетом наличия симплекс-метода отсюда следует другое доказательство теоремы 4.18.) 13. Постройте такой политоп Р с полиномиальным числом переменных и ограничений (так называемую расширенную формулировку), что проекция Р на подпространство, отвечающее некоторым из переменных, представляет собой политоп подмаршрутов. 14. Покажите, что можно оптимизировать любую линейную функцию на политопе, заданном условиями (21.1), (21.2), (21.3), (21.6). Указание. С помощью теоремы 21.23 сократите размерность объемлющего пространства и получите политоп полной размерности. Найдите точку внутри него и примените теорему 4.21. 15. Рассмотрим неравенства 2-паросочетаний (21.6) из утверждения 21.27. Покажите, что требование, что F должно быть паросочетанием, избыточно.
640 Глава 21. Задача коммивояжера 16. Покажите, что неравенства подмаршрутов (21.3), неравенства 2-паро- сочетаний (21.6) и неравенства гребней (21.7) являются частными случаями неравенств деревьев клик (21.8). 17. Докажите, что существуют экземпляры (Кп, с) метрической задачи коммивояжера, для которых НК(ХП, c)/OVT(Kn, с) произвольно близко к 3/4. Указание. Замените ребра веса 1 на рис. 21.9 длинными путями и рассмотрите метрическое замыкание. 18. Рассмотрим задачу коммивояжера на п городах. Для любых весов w:E(Kn)-*R+ обозначим через с^ длину оптимального цикла относительно w. Докажите, что если Ьг<с*ш и L2 < c*w для двух функций весов шг и ш2, то 1г+12< c*w +w , где сумма двух функций весов понимается покоординатно. 19 (Пападимитриу и Стейглиц [55]). Пусть Г— оптимальный гамильтонов цикл для экземпляра [Кп, с) задачи Metric TSP, и пусть Т' — кратчайший гамильтонов цикл, отличный от Т. Покажите, что с(Д(Г))-с№(Г)) 2 WT)) ^п' 20 (Краудер и Падберг [22]). Рассмотрим такой вектор х е [0,1]Е^Кп\ что Хее5(ь0 хе ~ 2 Для всех v G У(К"П). Докажите, что если существует нарушенное неравенство подмаршрутов, т. е. такое множество S с V(Kn), что ^ее5^ хе < 2, то существует аналогичное нарушенное неравенство, для которого хе < 1 для всехе е 5(S). 21 (Эпплгейт и др. [1]). Для семейства 9 подмножеств множества {1,..., п} (необязательно различных) и вектора xeR?(iCn) положим &{х) := ^хер 2е€б(х) хе- Обозначим также через \ip минимум значений &{х) по всем векторам х, соответствующим гамильтоновым циклам в Кп. Неравенство вида &{х) > [1$ называется неравенством гиперграфа. Примерами неравенств такого вида являются условия (21.5) и (21.7). Покажите, что политоп задачи коммивояжера может быть описан ограничениями степеней вершин и неравенствами гиперграфа, т. е. существуют такие семейства &ъ...,&k, что Q(n)={xGRW: ^хе = 2(иеУ(Кп)),^(х)<^(1 = 1,...,к) ^ ее5(и) Указание. Рассмотрите произвольное неравенство, задающее фасету, и преобразуйте его к требуемому виду, используя тот факт, что 2ееб({и,ш}) хе= 4—2x{y ш} для всех х, удовлетворяющих ограничениям степеней вершин. Литература Общая литература [1] Applegate D. L., Bixby R., Chvdtal У., Cook W. J. The Traveling Salesman Problem: A Computational Study. Princeton University Press, 2007.
Литература 641 [2] Cook W. J., Cunningham W. H., Pulleyblank W. R., Schrijver A. Combinatorial Optimization. Wiley, New York, 1998, Chapter 7. [3] Gutin G., Punnen A. P. The Traveling Salesman Problem and Its Variations. Kluwer, Dordrecht, 2002. [4] Jungnickel D. Graphs, Networks and Algorithms. Third Edition. Springer, Berlin, 2007, Chapter 15. [5] Lawler E. L., Lenstra J. K., Rinnooy Kan A. H. G., Shmoys D. B. The Traveling Salesman Problem. Wiley, Chichester, 1985. [6] Jilnger M.t Reinelt G., Rinaldi G. The traveling salesman problem // Handbooks in Operations Research and Management Science; Vol. 7; Network Models (M. O. Ball, T. L. Mag- nanti, C.L.Monma, G. L. Nemhauser, eds.), Elsevier, Amsterdam, 1995. [7] Papadimitriou C. H., Steiglitz K. Combinatorial Optimization; Algorithms and Complexity. Prentice-Hall, Englewood Cliffs, 1982, Section 17.2, Chapters 18 and 19. [8] Reinelt G. The Traveling Salesman; Computational Solutions for TSP Applications. Springer, Berlin, 1994. Процитированные работы [9] Aarts E., Lenstra J. K. Local Search in Combinatorial Optimization. Wiley, Chichester, 1997. [10] Applegate D., Bixby R., Chvdtal V.f Cook W. Implementing the Dantzig — Fulkerson — Johnson algorithm for large traveling salesman problems // Mathematical Programming. Ser. B. 2003. Vol. 97. P. 91-153. [11] Applegate D., Cook W., Rohe A. Chained Lin — Kernighan for large traveling salesman problems // INFORMS Journal on Computing. 2003. Vol. 15. P. 82-92. [12] Arora S. Polynomial time approximation schemes for Euclidean traveling salesman and other geometric problems // Journal of the ACM. 1998. Vol. 45. P. 753-782. [13] AsadpourA., Goemans M.X., MadryA, Gharan S. O., SaberiA. An of-—^—J-approximation algorithm for the asymmetric traveling salesman problem // Proceedings of the 21st Annual ACM-SIAM Symposium on Discrete Algorithms. 2010. P. 379-389. [14] Berman P., Karpinski M. 8/7-approximation algorithm for (1,2)-TSP // Proceedings of the 17th Annual ACM-SIAM Symposium on Discrete Algorithms. 2006. P. 641-648. [15] Boyd S. G, Cunningham W. H. Small traveling salesman polytopes // Mathematics of Operations Research. 1991. Vol. 16. P. 259-271. [16] Burkard R. E.y Deineko V. G., Woeginger G.J. The travelling salesman and the PQ-tree // Mathematics of Operations Research. 1998. Vol. 23. P. 613-623. [17] Carr R. Separating clique trees and bipartition inequalities having a fixed number of handles and teeth in polynomial time // Mathematics of Operations Research. 1997. Vol. 22. P. 257-265. [18] Chalasani P., Motwani R., Rao A. Algorithms for robot grasp and delivery // Proceedings of the 2nd International Workshop on Algorithmic Foundations of Robotics. 1996. P. 347-362. [19] Chandra В., KarloffH., Tovey С New results on the old fc-opt algorithm for the traveling salesman problem // SIAM Journal on Computing. 1999. Vol. 28. P. 1998-2029.
642 Глава 21. Задача коммивояжера [20] Christofides N. Worst-case analysis of a new heuristic for the traveling salesman problem. Technical Report 388, Graduate School of Industrial Administration, Carnegie-Mellon University, Pittsburgh, 1976. [21] Chvdtal V. Edmonds' polytopes and weakly hamiltonian graphs // Mathematical Programming. 1973. Vol. 5. P. 29-40. [22] Crowder H., Padberg M. W. Solving large-scale symmetric travelling salesman problems to optimality // Management Science. 1980. Vol. 26. P. 495-509. [23] Dantzig G., Fulkerson R.} Johnson S. Solution of a large-scale traveling-salesman problem // Operations Research. 1954. Vol. 2. P. 393-410. [24] Englert M., Roglin H., Vocking B. Worst case and probabilistic analysis of the 2-opt algorithm for the TSP // Proceedings of the 18th Annual ACM-SIAM Symposium on Discrete Algorithms. 2007. P. 1295-1304. [25] Feige U., Singh M. Improved approximation algorithms for traveling salesperson tours and paths in directed graphs. Proceedings of the 10th International Workshop on Approximation Algorithms for Combinatorial Optimization Problems (M. Charikar, K. Jansen, O. Reingold, J. D. P. Rolim, eds.), Springer, Berlin, 2007. (Lecture Notes in Comput. Scl; Vol.4627). P. 104-118. [26] Fiorini S., Massar S., Pokutta S., Tiwary H. R., de Wolf R. Linear vs. semidefinite extended formulations: exponential separation and strong lower bounds // STOC12 — Proceedings of the 2012 ACM Symposium on Theory of Computing. ACM, New York, 2012. P. 95-106. [27] Frank A, Triesch E., Korte B.y Vygen J. On the bipartite travelling salesman problem. Report No. 98866, Research Institute for Discrete Mathematics, University of Bonn, 1998. [28] Frieze A. M., Galbiati G., Maffioli F. On the worst-case performance of some algorithms for the asymmetric traveling salesman problem // Networks. 1982. Vol. 12. P. 23-39. [29] Garey M. R., Graham R. L., Johnson D. S. Some NP-complete geometric problems // Proceedings of the 8th Annual ACM Symposium on the Theory of Computing. 1976. P. 10-22. [30] Grotschel M., Padberg M. W. On the symmetric travelling salesman problem // Mathematical Programming. 1979. Vol. 16. P. 265-302. [31] Grotschel M., Pulleyblank W. R. Clique tree inequalities and the symmetric travelling salesman problem // Mathematics of Operations Research. 1986. Vol. 11. P. 537-569. [32] Held M., Karp R. M. A dynamic programming approach to sequencing problems // Journal of SIAM. 1962. Vol. 10. P. 196-210. [33] Held M., Karp R. M. The traveling-salesman problem and minimum spanning trees // Operations Research. 1970. Vol. 18. P. 1138-1162. [34] Held M., Karp R. M. The traveling-salesman problem and minimum spanning trees; part II // Mathematical Programming. 1971. Vol. 1. P. 6-25. [35] Helsgaun K. General fc-opt submoves for the Lin — Kernighan TSP heuristic // Mathematical Programming. Computation. 2009. Vol. 1. P. 119-163. [36] Hurkens C. A. J., Woeginger G. J. On the nearest neighbour rule for the traveling salesman problem // Operations Research Letters. 2004. Vol. 32. P. 1-4. [37] Hwang R. Z., Chang R. C., Lee R. С. T. The searching over separators strategy to solve some NP-hard problems in subexponential time // Algorithmica. 1993. Vol. 9. P. 398-423.
Литература 643 Johnson D. S., McGeoch L. A., Rothberg E. E. Asymptotic experimental analysis for the Held — Karp traveling salesman bound // Proceedings of the 7th Annual ACM-SIAM Symposium on Discrete Algorithms. 1996. P. 341-350. Johnson D. S., Papadimitriou C. H., Yannakakis M. How easy is local search? // Journal of Computer and System Sciences. 1988. Vol. 37. P. 79-100. JungerM., NaddefD. Computational Combinatorial Optimization. Springer, Berlin, 2001. Karp R. M. Probabilistic analysis of partitioning algorithms for the TSP in the plane // Mathematics of Operations Research. 1977. Vol. 2. P. 209-224. Karp R. M., Papadimitriou С. H. On linear characterizations of combinatorial optimization problems // SIAM Journal on Computing. 1982. Vol.11. P. 620-632. Karpinski M., Lampis M., Schmied R. New inapproximability bounds for TSP // Algorithms and Computation; Proceedings of ISAAC 2013 (L. Cai, S.-W. Chen, T.-W. Lam, eds.), Springer, Berlin, 2013. (Lecture Notes in Comput. Sci.; Vol.8283). P.568-578. Klein P. N. A linear-time approximation scheme for TSP in undirected planar graphs with edge-weights // SIAM Journal on Computing. 2008. Vol. 37. P. 1926-1952. Krentel M. W. Structure in locally optimal solutions // Proceedings of the 30th Annual IEEE Symposium on Foundations of Computer Science. 1989. P. 216-221. Land A. H., DoigA. G. An automatic method of solving discrete programming problems // Econometrica. 1960. Vol.28. P.497-520. Lin S., Kernighan B. W. An effective heuristic algorithm for the traveling-salesman problem // Operations Research. 1973. Vol. 21. P. 498-516. Little J. D. C, Murty K. G., Sweeny D. W., Karel С An algorithm for the traveling salesman problem // Operations Research. 1963. Vol.11. P. 972-989. Michiels W.t Aarts E., Korst J. Theoretical Aspects of Local Search. Springer, Berlin, 2007. Mitchell J. Guillotine subdivisions approximate polygonal subdivisions: a simple polynomial-time approximation scheme for geometric TSP, /c-MST, and related problems // SIAM Journal on Computing. 1999. Vol. 28. P. 1298-1309. Papadimitriou C. H. The Euclidean traveling salesman problem is NP-complete // Theoretical Computer Science. 1977. Vol. 4. P. 237-244. Papadimitriou C. H. The adjacency relation on the travelling salesman polytope is NP- complete // Mathematical Programming. 1978. Vol. 14. P. 312-324. Papadimitriou С. H. The complexity of the Lin — Kernighan heuristic for the traveling salesman problem // SIAM Journal on Computing. 1992. Vol. 21. P. 450-465. Papadimitriou C. H., Steiglitz K. On the complexity of local search for the traveling salesman problem // SIAM Journal on Computing. 1977. Vol. 6, №1. P. 76-83. Papadimitriou C. H., Steiglitz K. Some examples of difficult traveling salesman problems // Operations Research. 1978. Vol.26. P.434-443. Papadimitriou С H., Vempala S. On the approximability of the traveling salesman problem // Combinatorica. 2006. Vol.26. P. 101-120. Papadimitriou С. H., Yannakakis M. The traveling salesman problem with distances one and two // Mathematics of Operations Research. 1993. Vol. 18. P. 1-12. Rao S. В., Smith W. D. Approximating geometric graphs via «spanners» and «banyans» // Proceedings of the 30th Annual ACM Symposium on Theory of Computing. 1998. P. 540-550.
644 Глава 21. Задача коммивояжера [59] Rosenkrantz D. J. Stearns R. E., Lewis P. M. An analysis of several heuristics for the traveling salesman problem // SIAM Journal on Computing. 1977. Vol. 6. P. 563-581. [60] Sahni S., Gonzalez T. P-complete approximation problems // Journal of the ACM. 1976. Vol.23. P.555-565. [61] Shmoys D. В., Williamson D. P. Analyzing the Held — Karp TSP bound: a monotonicity property with application // Information Processing Letters. 1990. Vol. 35. P. 281-285. [62] Triesch E., Nolles W., Vygen J. Die Einsatzplanung von Zementmischern und ein Traveling Salesman Problem // Operations Research; Reflexionen aus Theorie und Praxis (B.Werners, R. Gabriel, eds.), Springer, Berlin, 1994 [in German]. [63] Woeginger G. J. Exact algorithms for NP-hard problems // OPTIMA. 2002. Vol. 68. P. 2-8. [64] Wolsey L. A. Heuristic analysis, linear programming and branch and bound // Mathematical Programming. Study. 1980. Vol. 13. P. 121-134.
ГЛАВА 22 Задача о размещении предприятий Во многих практических приложениях, связанных с экономикой, приходится решать задачи, состоящие в выборе из множества существующих или размещении новых объектов для эффективного удовлетворения заданных потребностей. Примерами таких объектов служат предприятия, складские помещения, библиотеки, пожарные станции, больницы, базовые станции для беспроводных сервисов (например, сетей телевещания или сотовой связи) и др. Все эти задачи имеют следующую общую черту: нужно выбрать множество сервисов (каждый в каком-то конкретном месте), при этом целью является удовлетворение потребностей (клиентов, пользователей и т. д.) оптимальным образом. Подобные задачи размещения предприятий (разновидности которых также встречаются и в менее очевидных формах) имеют большое количество практических приложений. Наиболее хорошо изученной моделью в случае дискретных задач о размещении предприятий является так называемая задача о размещении предприятий без пропускных способностей, также известная как задача о размещении заводов или задача о размещении складов. Она будет рассмотрена в § 22.1. Несмотря на ее активное изучение начиная с 1960-х годов (см., например, работы Столл- стеймера [29], Балински и Вульфа [8], Кюна и Хамбургера [21], Манн [26]), до 1997 года не было найдено приближенного алгоритма для этой задачи. С тех пор было предложено несколько заметно отличающихся подходов к доказательству верхней оценки точности приближения. В настоящей главе мы расскажем о них, а также рассмотрим некоторые обобщения, такие как варианты с пропускными способностями, задачу о fc-медианах и задачу об универсальном размещении предприятий. § 22Л. Задача о размещении предприятий без пропускных способностей Основная задача, которую мы будем изучать в данной главе и на которую будет распространяться большинство описываемых нами результатов, — это задача о размещении предприятий без пропускных способностей. Она формулируется следующим образом.
646 Глава 22. Задача о размещении предприятий Uncapacitated Facility Location (задача о размещении предприятий без пропускных способностей) Дано: конечное множество @ клиентов, конечное множество & (потенциальных) предприятий, фиксированные стоимости ft € R+ открытия каждого предприятия i € 9 и стоимости обслуживания с$ € R+ для каждого i € & и j G @. Надо: найти такое подмножество X предприятий (называемых открытыми) и такое распределение а: @ —> X клиентов по открытым предприятиям, что суммарная стоимость открытия предприятий и обслуживания клиентов Yuisx fi+ 2j€® ca(j)j минимальна. Для многих практических приложений стоимости обслуживания порождаются метрикой с на $и & (например, когда они пропорциональны геометрическим расстояниям или времени в пути). В этом случае cij + ci'j + cij > cif Д^ всех i, i; € ^ и j, j' g ®. (22.1) Наоборот, если выполнено это условие, то можно определить значения cit := О, са* := minjG^(c0 + cVj) для i, \! G &, сл := 0, cjf := min?e^(c0- + ciy) для ;,;' G 0 и с,! := Су для j G ©, i G ^ и получить (полу-)метрику с на ® U «^. Поэтому если выполнено условие (22.1), то мы будем говорить о метрических стоимостях обслуживания. Частный случай задачи, ограниченный метрическими стоимостями обслуживания, называется метрической задачей о размещении предприятий без пропускных способностей. Утверждение 22.1. Метрическая задача о размещении предприятий бе& пропуск- ных способностей является сильно NP-трудной. Доказательство. Рассмотрим задачу о покрытии множествами минимального веса с единичными весами (которая является сильно NP-трудной в силу следствия 15.24). Любой ее экземпляр (U, У) может быть сведен к задаче о покрытии множествами минимального веса следующим образом: пусть Ф := U, & := 5^, /i := 1 при i G &, ctj := 1 при j € i G У и ctj := 3 при ; G U\{i}, i G У. Тогда при k < \У\ получившаяся задача имеет решение со стоимостью |0| + fc, если и только если задача (17, У) имеет покрытие множествами размера к. ? Число 3 в этом доказательстве может быть заменено на любое другое число, большее 1, но не большее 3 (иначе будет нарушено условие (22.1)). В самом деле, аналогичная конструкция показывает, что метрические стоимости обслуживания необходимы для того, чтобы получить приближенный алгоритм: если в нашем доказательстве мы возьмем q, := оо при j G U \ {i} и i G <У, то увидим, что любой приближенный алгоритм для задачи о размещении предприятий без пропускных способностей немедленно дает приближенный алгоритм для покрытия множествами с таким же коэффициентом приближения (а в предположении, что Р = NP, для задачи покрытия множествами не существует приближения с константной погрешностью; см. § 16.1). Гуха и Хуллер [15], а также Свириденко
§ 22.1. Задача о размещении предприятий без пропускных способностей 647 [неопубликовано] обобщили эту конструкцию, показав, что наличие для метрической задачи о размещении предприятий без пропускных способностей алгоритма с точностью 1,463 (даже работающего лишь для экземпляров со стоимостями 1 или 3) будет означать, что P=NP (подробности см. в работе Фигена [3]). С другой стороны, пусть задан экземпляр неограниченной задачи о размещении предприятий. Положим U := f?, У = 2® и c{D) := mini€^ (/f + 2/gd cu) приDC^, Получим эквивалентный экземпляр задачи о покрытии множествами минимального веса. Хотя размер этого экземпляра экспоненциальный, как показала Хохбаум [16], мы можем использовать жадный алгоритм, чтобы получить решение, стоимость которого не более чем в (1 +1/2 +... +1/|^|) раз превышает оптимум за полиномиальное время (см. теорему 16.3). А именно, на каждом шаге будем выбирать пару (D, г) е. 29 х & с минимальным значением \D\ > открывать предприятие i и направлять всех клиентов из D в i, после чего исключать их из рассмотрения. Хотя на каждом шаге количество вариантов выбора экспоненциально, лучший среди них найти несложно: достаточно рассматривать пары (DJ., i) при i G & и fc € {1,..., |f?|}, где Dlk — множество первых fc клиентов в линейном порядке по неубыванию с^. Понятно, что другие пары не могут быть лучше. В работе Джайна и др. [17] показано, что оценка точности жадного алгоритма составляет ft(logn/(loglogn)) даже для метрического случая, где п = \<&\. В действительности до работы Шмойса, Тардош и Ардал [28] для метрических стоимостей обслуживания не было известно приближенного алгоритма с константной точностью. С тех пор наши знания значительно расширились. В следующих параграфах мы расскажем о различных техниках, позволяющих получить для метрической задачи о размещении предприятий без пропускных способностей приближения с константной точностью. Можно также рассмотреть еще более частный случай задачи, в котором предприятия и клиенты являются точками на плоскости, а стоимости обслуживания совпадают с геометрическими расстояниями. Для этой задачи Арора, Рагхаван и Рао [5] показали наличие схемы приближения. Иными словами, для любого fc > 1 существует приближенный алгоритм с точностью fc (аналогично алгоритму из § 21.2). Этот результат был улучшен Коллиопулосом и Рао [19], однако кажется, что этот метод все еще слишком медленный для практического применения. На протяжении оставшейся части главы мы рассматриваем случай произвольных метрических стоимостей. Для экземпляра задачи ^, &, ft, ctj и непустого множества X предприятий несложно найти наилучшее назначение а: ® —> X, удовлетворяющее условию ca^j = nuni€X с^. Поэтому мы часто будем называть непустое подмножество ic^ допустимым решением со стоимостью открытия предприятий (facility cost) cF(X):=?/i
648 Глава 22. Задача о размещении предприятий и стоимостью обслуживания (service cost) Задача состоит в том, чтобы найти непустое подмножество ХС^ для которого сумма cF(X) + cs(X) минимальна. § 22.2. Округление решений задачи линейного программирования Задача о размещении предприятий без пропускных способностей может быть сформулирована в виде задачи линейного программирования следующим образом: минимизировать J> ftyt + J> )> с^х^ при условиях xtj < yt (i e &, j e. 9), J]x0 = l (/€»), ДС0€{0,1} (i€^, J€»), Л €{0,1} (i€*). Произведя релаксацию условий целочисленности, мы ползаем следующую линейную программу: минимизировать /J ftyt + \\ \\ ctjxa при условиях xtj < yt (i e c^, ; e 0), J>0 = 1 0G®), (22-2) дс0 > 0 (ie&Je ®), yt>0 (i€^). Впервые данная программа была сформулирована в работе Балински [7]. Двойственная ей программа имеет следующий вид: максимизировать VJ15 при условиях Vj-Wij^Cij (ie&Je®), Алгоритмы округления ЛП решают эти программы (см. теорему 4.18), а затем округляют подходящим образом дробные решения прямой задачи. Шмойс,
§ 22.2. Округление решений задачи линейного программирования 649 Тардош и Ардал [28] были первыми, кому удалось получить приближение с константной точностью с использованием этой техники. Shmoys—Tardos—Aardal Algorithm (алгоритм Шмойса — Тардош—Ардал) Вход: экземпляр (@, &, (ft)^*?, (c^iepjeg) задачи о размещении предприятий без пропускных способностей. Выход: решение ХС^исг:0-»Х. (1) Най*и оптимальное решение (**, у*) задачи (22.2) и оптимальное решение (р*~,и>*) задачи (22.3). (2) Положить )с:=1Д:=0и[/:=@. (3) Выбрать такой элемент jk е U, что и? минимально. Выбрать элемент ik е &, для которого х*. > 0 и Д минимально. Пусть X:=XU{ifc}. Положить Nk := {j € U: 3 i € &: xj > 0, or?. > 0}. Положить a (J) := ik for all j € Nk. Взять U:=U\Nk. 0 fc:=fc + l. It U фа then goto (3). Теорема 22.2 (Шмойс, Тардош и Ардал [28]). Изложенный выше алгоритм дает ^-приближение для метрической задачи о размещении предприятий без пропускных способностей. Доказательство. Из условий дополняющей нежесткости (следствие 3.23) при х- > 0 имеем v* — w*. = cij} а значит, ctj < v?. Следовательно, стоимость обслуживания клиента j е Nk не превышает cikj < ctj+cijk + cikJk < u}*+2i?" < 3ij*, где i — такое предприятие, что x*j > 0 и дс?. > 0. Стоимость предприятия fik может быть оценена так: ie.^ ie&ixf, >0 ie^:x*. >0 Ук Ук Поскольку из неравенства *?. > 0 следует, что л:?.; = 0 для fc Ф fc', суммарная стоимость всех предприятий не превышает ^]ie^ у*ft- Суммируя, получаем общую стоимость 3 ^];е^ у.* H-^]ie^ y*fiy а эта величина превосходит оптимум линейной программы (а значит, и оптимум исходной комбинаторной задачи) не более чем в четыре раза. ? Коэффициент приближения был улучшен до 1,736 в работе Чудака и Шмойса [13], а также до 1,582 в работе Свириденко [30]. Одновременно при помощи более простых и быстрых алгоритмов, не использующих линейное программи-
650 Глава 22. Задача о размещении предприятий рование в качестве подзадачи, удалось получить даже лучшие оценки точности. Об этом будет рассказано в следующем параграфе. § 22.3. Прямо-двойственные алгоритмы Джайн и Вазирани [18] предложили другой приближенный алгоритм, использующий прямо-двойственный метод в классическом смысле: он одновременно поддерживает допустимые решения для прямой и двойственной задач (формулировку задач в терминах линейного программирования см. в §22.2). Прямое решение поддерживается целочисленным, а гарантия его точности следует из приближенных соотношений дополняющей нежесткости. Алгоритм можно рассматривать как процесс непрерывного увеличения всех двойственных переменных (начиная с нуля). Как только мы (предварительно) назначили некоторое предприятие для клиента j € 0, значение i/, фиксируется. (Термин «предварительно» означает, что наше решение впоследствии может поменяться.) В любой момент времени обозначим wtj :=max{0,15—с^}. Изначально все предприятия закрыты. Процесс (предварительного) открытия предприятий и назначения их клиентам происходит, когда наступает одно из следующих двух событий: • Vj = Су для некоторого предварительно открытого предприятия i и никому пока не назначенного клиента ;; тогда полагаем сг(;) := i и фиксируем значение Vj; • Xjes> Щ = fi Д-7151 некоторого предприятия i, которое еще не было открыто; тогда предварительно открываем i; для всех никому не назначенных клиентов j е 0, для которых Vj > cij9 полагаем a (J) := i и фиксируем i/;. Несколько событий могут произойти одновременно, в этом случае они обрабатываются в произвольном порядке. Процесс продолжается до тех пор, пока всем клиентам не будут назначены предприятия. Теперь пусть V — множество предварительно открытых предприятий, а Е — множество таких пар {i, i'} различных предварительно открытых предприятий, что существует клиент j, для которого шу > 0 и w^ > 0. Выберем максимальное независимое множество в графе (У, Я). Откроем (на этот раз окончательно) все предприятия из X и свяжем каждого клиента с ближайшим открытым предприятием. В действительности множество X можно строить жадным методом в процессе предварительного открытия предприятий. Будем обозначать через Y множество всех предприятий, которые мы пока (предварительно) не открыли. Тогда алгоритм можно описать более формально следующим образом. Jain—Vazirani Algorithm (алгоритм Джайна—Вазирани) Вход: экземпляр (@,^, (/j)l€^, (cy)ie^;j€®) задачи о размещении предприятий без пропускных способностей. Выход: решение ХС^исг:@-^Х.
§ 22.3. Прямо-двойственные алгоритмы 651 ® Положить X := 0, Y := & и [7 := ®. (2) Положить tj := min{c0: i G & \ Y, j g IT}. Положить t2 := min{T: 3 i G У: co(i, т, С/) = ^}, где co(i, т, 17) := V^ max{0, т — ctj} + /J max{0,i$ — c^}. Пусть t := minftx, t2}. (3) For i e&\Y и j € U, где c0- = t, do: Положить q- := t и 17 := ?7\{j}- 0 For таких i G Y, что co{i, t, 17) = fu do: Положить У := УД (О- If не существует таких i' e X и j e <2\U, что q- > ctj и ij- > c^, then установить X := X U {i}. For таких j G [/, что c^- < t, do: Пусть ij := t и IT := [7\ {j}. (5) It U фа then goto ®. (6) For ; G 0 do: Пусть ieX cctj = 1шп{^-: \! G X}. Назначить a(j) := i. Теорема 22.3 (Джайн и Вазирани [18]). Для метрического экземпляра задачи I алгоритм Джайна—Вазирани строит такое множество X предприятий, что 3cF(X) + cs(X) < 3 ОРТ(7). В частности, он является 3-приближенным алгоритмом для метрической задачи о размещении предприятий без пропускных способностей. Данный алгоритм может быть реализован так, что время работы будет составлять O(mlogm), где т = \&\ • \<&\. Доказательство. Для начала заметим, что значение t в процессе работы алгоритма не уменьшается. Алгоритм находит прямое решение X и а, а также выбирает значения vjy j G Of, которые вместе с переменными wtj := max{0,15 — ctj}, i e&,je Of, составляют двойственное решение для линейной программы (22.3). Отсюда следует, что 2j€0 vj ^ ОРТ(7). Для каждого открытого предприятия i все клиенты ;, для которых Wij > О, будут отнесены к i, причем ft = ^J€^ wtj. Более того, мы докажем, что стоимость обслуживания для каждого клиента j не превышает 3{Vj — и^сш)- Рассмотрим два случая. Если са^у = Uj — и>ацу, то данное утверждение очевидно. Иначе ca(jy > Vj и и^сш = 0- ОтсюДа следует, что ctj > Uj для всех i G X. Это означает, что при удалении j из U на шаге (3) или 0 существует такое предприятие i G&\(YиX), что Су < Vj, а также существуют такие предприятия j' e<&\U И i' G X, ЧТО Wtj' > О И Wi>y > 0. ЗнаЧИТ, С{у = Vy — Wty < Vy И Сцу = Vy — Wtj < Vy. Заметим, что Uy < 15, так как j' было удалено из U до j. Тогда C*U)J < ci'J < ci'/ + си' + cu < иГ + 4f + VJ < 3y7 = 3(y7 - шстСш)- Для оценки времени работы заметим, что количество итераций не превышает |^| + 1, поскольку на каждой итерации хотя бы один клиент удаляется из 17. Исключение может составлять первая итерация, если ft = 0 для некоторого i G &.
652 Глава 22. Задача о размещении предприятий Суммарное время вычисления tx на шагах (2) и (3) составляет O(mlogm) (для этого нужно упорядочить все значения ctj заранее). Далее заметим, что t2 = minj-^:ieyi, где е2 = ? + J] (ty -1$) + J] ^ aU( — множество клиентов, для которых предприятие пока не выбрано и стоимость обслуживания которых предприятием i не превышает нового значения t. Легко понять, что мы как раз и хотим вычислить значение t2. Мы поддерживаем значения t2, tl2 и \Ut\ (i е 7) на протяжении всего процесса вычисления. Изначально t2 = °°9 tl2 = ft и \Ut\ = 0 для всех i. Пусть мы выбираем предприятие для очередного клиента j, причем i/, > су- для некоторого i G Y. В этом случае значение tl2 уменьшается на uj9 a \Ut\ уменьшается на 1. Из-за этого может также измениться t2. С другой стороны, если значение t достигает Су- для некоторых i Е Y и j g U, то мы также должны увеличить \Щ на 1 и увеличить ?^ на сц- (и, возможно, изменить t2). Для того чтобы производить эти преобразования эффективно, заменим определение числа tT из шага (2) на следующее: tx := min{Cy: i € &9 j е [/}. Будем выполнять вышеуказанные обновления перед шагом (§) для всех таких i е У и j е 17, что су- = t. Заметим, что всего таких обновлений будет 0(т) и каждое из них занимает константное время. Условие на шаге 0 может быть проверено за время 0(|®|). Для этого запомним для каждого клиента j е. 3f\U такое предприятие \! е X, что Vj > с(^ (если оно существует—двух таких предприятий, очевидно, быть не может). ? Другой точный прямо-двойственный алгоритм, приводящий к лучшим оценкам, был предложен Джайном и др. [17]. Одна из идей, лежащих в его основе, — ослабить требование допустимости двойственных переменных. Будем интерпретировать двойственные переменные как бюджеты клиентов, которые они используют для оплаты стоимостей обслуживания и вклада в открытие предприятий. Предприятие будет открываться, если предложенные вклады достаточны для оплаты стоимости этого открытия. Те клиенты, которые оказываются к нему отнесены, прекращают наращивать свой бюджет, но они все еще могут предложить некоторое количество денег другим предприятиям, если те окажутся ближе и «переподключение» принесет прибыль. Более формально, алгоритм имеет следующий вид. Dual Fitting (алгоритм двойственного подбора) Вход: экземпляр (?2, &, (fi)i<=&> (cy)te^, je©) задачи о размещении предприятий без пропускных способностей. Выход: решение ХС^иа:^->Х. (Т) Положить X:=0nU :=$. (2) Вычислить tx := min{cy-: i е X, j е IT}.
§ 22.3. Прямо-двойственные алгоритмы 653 Вычислить t2 := min{T: 3 i е &\Х: <o(i,T,U) = /J, где co{i, т, U) := ]>] max{0, т - ctj) + ^] max{0, саСШ - с0-}. Обозначить t := minf^, t2}- (3) For таких ieX и j eU, что ci; = t, do: Положить <j(j) := i, 15 := ? и ?/ := LT\{j}. 0 For таких ie&\X, что co(i, t, IT) = /j, do: Положить X :=Xl) {i}. For таких ; € <2f\U, что c0- < ca^i9 do: Присвоить cr(j) := i- For таких ; e [/, что q; < t, do: Присвоить cr(j) •= U Ц := t и U := U\{j}. (5) It Uфа then goto (2). Теорема 22.4. Вышеизложенный алгоритм находит значения Uj (J € 0) и допустимое решение X, а со стоимостью XjG© ^- ДРи подходящей реализации время его выполнения составляет 0(|^|2|^|). Доказательство. Первое утверждение очевидно. Заявленное время работы может быть получено аналогично тому, как это делается для алгоритма Джайна — Вазирани. Следует, однако, учесть, что значение tl2 требуется обновлять всякий раз, когда клиент переподключается к другому предприятию, что в нашем случае означает, что открывается новое предприятие. ? Сейчас мы укажем такое число у, что ?;€D^ ^y(/i + 2jGDcy) Д-7151 всех паР (i,D) G,?x2® (иными словами, (Vj/y)je9 будет допустимым решением двойственной линейной программы из упражнения 3). Отсюда будет следовать, что данный алгоритм имеет точность у. Как и ранее, мы предполагаем, что стоимости обслуживания являются метрическими. Рассмотрим предприятие i € & и такое подмножество клиентов DC®, что \D\ = d. Пронумеруем клиентов из D в том порядке, в котором они были удалены из U в алгоритме; без ограничения общности можно считать, что D = {1,..., d}. Получаем иг < v2 < ... < vd. Рассмотрим клиента fc е D. Заметим, что в момент времени, когда t = ик, для к уже назначено некоторое предприятие. Рассмотрим теперь тот момент, когда t было впервые присвоено значение vk на шаге (2). Для j = 1,..., к — 1 обозначим {СЮ k)j> если в этот момент для j назначено предприятие i(j, к) е &, vk иначе, т. е. Vj = ик. Выпишем теперь для введенных переменных несколько полезных неравенств. Во-первых, при ; = 1,..., d — 2 имеем rj,j+l > Oj+2 > • ¦ ¦ > rj,d> (22.4)
654 Глава 22. Задача о размещении предприятий поскольку при переключении клиентов стоимость обслуживания уменьшается. Далее, для к = 1,..., d имеем fc-l d 2 max{0, rj>k -c0} + J]max{0, vk -сй} < ft. (22.5) j=l l=k Чтобы убедиться в этом, рассмотрим два случая. Если в рассматриваемый момент времени i е &\Х, то условие (22.5) выполнено в силу выбора t на шаге (2). Иначе предприятие i было добавлено в X ранее, и сейчас ^ max{0, ц - с0} 4- J] max{0, ca0W - ctj} = /f. Позднее левая часть может только уменьшиться. Наконец, для 1 < j < к < d справедливо неравенство Это условие тривиально при rjk = vki а иначе оно следует из выбора tx на шаге (2). Действительно, в силу метричности стоимостей обслуживания правая часть неравенства (22.6) не меньше с^к^к9 и предприятие i(j,k) в данный момент времени открыто. Чтобы получить оценку на точность алгоритма, рассмотрим следующую задачу оптимизации для yF > 1 и d € N. Поскольку оценка должна быть справедливой для всех экземпляров задачи, мы рассматриваем fi9 cijy Vj (J = 1,..., d) и г- fc (1 < j < к < d) как переменные: &-fr/i максимизировать j=i 2>» при условиях Uj < yJ+1 (1 < ; < d), Ол > O^+i (1 < J < fc < d), 0,fc + cij + c* > *>k (1 < J < fc < d), fc-l d ^] max{0, rj>k - c0} + ^] max{0, vk - сй} < f{ (1 < fc < d), (22.7) j=l l=k d vjyctj>0 (K;<d), /}-fc>0 (Kj<Kd). Заметим, что эта задача оптимизации может быть легко переформулирована как линейная программа (см. упражнение 6). По-английски данную задачу часто
§ 22.3. Прямо-двойственные алгоритмы 655 называют factor-revealing LP. Ее оптимальные значения дают гарантию качества для алгоритма Dual Fitting. Теорема 22.5. Пусть yF>l. Обозначим через ys точную верхнюю грань оптиму- мов в задаче (22.7) по всем d е N. Пусть задан экземпляр метрической задачи о размещении предприятий без пропускных способностей. Пусть выбрано ее решение X* с ^. Тогда стоимость решения, полученного алгоритмом Dual Fitting для этого экземпляра, не превышает Yfcf№*) + Yscs№*)- Доказательство. Алгоритм строит числа Uj и (неявно) rjk для всех таких j, fc е ®, что Uj < uk и ; / fc. Для каждой пары (i,D) е & х 2® значения ft, cij} uj} rjk удовлетворяют условиям (22.4), (22.5) и (22.6), а значит, являются допустимым решением задачи (22.7) (если только не выполняется равенство 5]/=1 со = 0)- Поэтому d d (это следует напрямую из соотношений (22.5) и (22.6) при ctj = 0 для всех j е D). Выбирая такое значение а*: ®->X*, что с^*^ = minieX* с^-, и суммируя по всем парам (i, {; е ^: сг*(;) = i}) (i ^ ^*), мы получаем 2 "; < № J] ft + ft J] <Vo)j = №&*) + Ts^i**)- je$ ieX* je9 Поскольку стоимость решения, находимого алгоритмом, не превышает 5]je® vj> отсюда получаем доказываемое утверждение. ? Для того чтобы применить доказанную выше теорему, нам понадобится также следующее вспомогательное утверждение. Лемма 22.6. Рассмотрим задачу (22.7) для некоторого d е N. Справедливы следующие утверждения: (а) при yF = 1 ее оптимум не превышает 2; (б) (Джайн и др. [17]) при yF = 1,61 ее оптимум не превышает 1,61; (в) (Махдиан, Е и Чжан [25]) при yF = 1,11 ее оптимум не превышает 1,78. Доказательство. Мы докажем только часть (а). Для произвольного допустимого решения имеем , d ^ d ,k-\ d . d d v j=i ' fc=i vj=i i=k J fc=i j=i следовательно, d d d d Доказательства утверждений (б) и (в) весьма длинные и носят технический характер. Из утверждения (а) сразу вытекает, что вектор (Vj/2)j&^ образует допустимое двойственное решение, а алгоритм Dual Fitting имеет точность 2.
656 Глава 22. Задача о размещении предприятий Из утверждения (б) следует, что оценку точности можно улучшить до 1,61. Еще лучшую точность дает комбинация алгоритма Dual Fitting с техникой масштабирования и жадного увеличения; речь об этих методах пойдет в следующем параграфе. В завершение параграфа мы объединим теорему 22.5 и лемму 22.6 в виде следствия, которое нам понадобится в дальнейшем. Следствие 22.7. Пусть (yF, ys) € {(1; 2), (1,61; 1,61), (1,11; 1,78)}. Пусть также задан экземпляр метрической задачи о размещении предприятий без пропускных способностей. Рассмотрим произвольное ее решение X, 0 ф X* с &. Тогда стоимость решения, полученного с помощью алгоритма Dual Fitting для этого экземпляра задачи, не превышает yFcF{X*) + yscs(X*). ? § 22.4. Методы масштабирования и жадного увеличения Во многих результатах, полученных для изучаемой нами задачи, значения стоимостей предприятий и стоимостей обслуживания учитываются асимметричным образом. Зачастую стоимости обслуживания могут быть уменьшены при помощи открытия дополнительных предприятий. Этот прием также позволяет уточнить некоторые коэффициенты приближения алгоритмов. Утверждение 22.8. Пусть 0 / X, X* с &. Тогда J] (cs(X) - cs(X U {?})) > cs(X) - cs(X*). ieX* В частности, существует предприятие i е X*, для которого cs(X)-cs(Xu{i» cs(X)-cs(X*) fi " cF(X*) ' Доказательство. Для каждого j € ^ рассмотрим такое предприятие a(J) е X, что CaU)j = пи^ех сф итъхое (7*0) е X*, что ca*a)j = miniGX* с0. Тогда cs(X)-cs(Xu{i})> J] (caU)j-Cij) je$: cr*(j)=i для всех i G X*. Просуммировав, получаем утверждение леммы. ? Назовем жадным увеличением множества X процесс последовательного выбора элемента i е &у максимизирующего (cs(X) — cs(X и {i}))//i» и добавления этого элемента к X, до тех пор пока не станет выполняться условие cs(X) -cs(Xu{i})</i для всех i е ^ Нам потребуется следующая лемма. Лемма 22.9 (Чарикар и Гуха [11]). Пусть 0 Ф X, X* с & Применив жадное увеличение к X, получим множество Y 2 X. Тогда cF(Y) + cs(Y) < cF{X) + cF(**)ln(max{l, ^^f^}) +cF(X*) + cs(X*).
§ 22.4. Методы масштабирования и жадного увеличения 657 Доказательство. Если cs(X) < cF(X*) + cs(X*), то неравенство, очевидно, выполнено, даже если написать X вместо Y. Жадное увеличение не может увеличить стоимость. Иначе рассмотрим последовательность множеств X = Х0,Х1у...,Хк, получаемых в процессе увеличения. Здесь fc— первый индекс, для которого cs(Xfc) < < cF(X*) + cs(X*). Мы можем считать (перенумеровав при необходимости предприятия), что Х{ \Xt_x = {i} (i = 1,..., fc). Из предложения 22.8 имеем cs№-i)-cs№) > cstx^-cstf*) ft " cF(X*) для i = 1,..., fc. Отсюда следует, что г <- _ rv*Л Cs№-l) ~cs№) /'^C^X-,cs(Xi_1)-cs(X*) (при этом важно, что с5(Х;_х) > cs(X*)) и к cF(Xfc) + cs(Xfc) < cF(X) + cF(X*) J] w^I^ff) + cs№). i=l Поскольку правая часть возрастает при росте cs(Xk) (ее производная равна с (X*) 1 rv~"^5 7v^\ > 0)> мы не уменьшим правую часть, если заменим cs(Xk) csWk-i) —cs{X ) на cF(X*) + cs(X*). Учитывая, что х — 1 > 1пх при х > О, получаем cF(Xfc) + cs(Xfc) < cF(X) + cF(X*) J] (l - 'ffp/ff)) + cstffc) < fc CsW-Cstf*) = c,(X) + cP(Jf) In С5(^У + <*(*') + %W. ? Это утверждение может быть использовано для уточнения некоторых уже известных нам коэффициентов приближения. Иногда полезно комбинировать методы жадного увеличения и масштабирования. В основе этого подхода лежит следующий общий результат. Теорема 22.10. Предположим, что заданы положительные константы /3, ys, yF, а также известен алгоритм А, вычисляющий для каждого экземпляра задачи такое решение X, что pcF(X) + cs(X) < yFcF(X*) + yscs(X*) для всех непустых множеств X* с &. Пусть 5 > 1//3. Тогда, увеличивая все стоимости предприятий в 5 раз, затем применяя алгоритм А к модифицированной задаче и, наконец, выполняя жадное увеличение для результата (относительно исходного экземпляра), мы получим решение со стоимостью, не более чем в maxj-^ + 1п(/35), 1 + s^~ } превышающей оптимальную.
658 Глава 22. Задача о размещении предприятий Доказательство. Рассмотрим оптимальное решение исходной задачи, и пусть X* — множество открытых предприятий. Для него /35cF(X) + cs(X) < yF5cF(X*) + YsCs(X*). Если cs(X) < cs(X*) + cF(X*), то f35{cF{X) + cs(X)) < уР5сР(Х*) + rScS(**) + (j85 - l)(cs(X*) + cF(X*)), а значит, стоимость решения X превосходит оптимум не более чем в maxi1 + -75~'1 + ^5-J Ра3* Заметим, что 1 + ^<|+1п(/35), так как 1 — 1/л: < In х для всех л: > 0. Иначе применим жадное увеличение к X и получим решение со стоимостью не более cF(X) + cF(X*) In Cs(^~xCf)(X,) + cF(X*) + cs(X*) < < cF(X) + cF(X*) in fe-lW^y-M + Cp(jr) + (jr)- Производная этого выражения no cF(X) имеет вид P5cF(X*) 1- (rs - l)cs(X*) + rFScP(X*) - P5cF(X)' Данная производная обращается в нуль при cF(X) = ^cF(X*) + ^cs(X*). При этом мы получаем решение со стоимостью не более (? + ln(05))cF(X*) + (l + ^)cs(X*). ? С учетом следствия 22.7 мы можем применить этот результат к алгоритму Dual Fitting с параметрами /3 = yF = 1 и ys = 2. Если мы возьмем 5 = 1,76, то получим точность 1,57. При /3 = 1, yF = 1,11 и ys = 1,78 (см. следствие 22.7) точность оказывается еще выше. Следствие 22.11 (Махдиан, Е и Чжан [25]). Умножим все стоимости предприятий на 5 = 1,504, применим алгоритм Dual Fitting, вернем исходные стоимости предприятий и применим жадное увеличение. Такой алгоритм имеет погрешность 1,52. ?
§ 22.4. Методы масштабирования и жадного увеличения 659 Бирка и Ардал [9] показали, что точность данного алгоритма не может быть лучше 1,494. Они также предложили алгоритм с точностью 1,500 (Бирка и Ардал [10]). Наконец, в работе Ли [23] оценка точности была улучшена до 1,488. Последняя оценка является наилучшей из известных на данный момент. Для частного случая, когда все стоимости обслуживания содержатся в отрезке [1,3], точность метода жадного увеличения будет даже лучше заявленной. Пусть а — корень уравнения а +1 = 1п(2/а); имеем 0,463 < а < 0,4631. Несложные подсчеты показывают, что а = -4т In - = maxj^r In §: ? > о}. а + 1 a l? + l ? J Теорема 22.12 (Гуха и Хуллер [15]). Рассмотрим задачу о размещении предприятий без пропускных способностей, в которой все стоимости обслуживания лежат на отрезке [1,3]. Тогда для любого е > 0 для данной задачи существует приближенный алгоритм с точностью 1 + а + е. Доказательство. Пусть е>0, и пусть к := [1/е1. Переберем все решенияХС^; в которых |Х| < fc. Для каждого перебираемого решения построим еще одно следующим образом. Вначале откроем одно предприятие i с минимальной стоимостью открытия ft. Затем применим жадное увеличение и в результате получим решение Y. Возьмем минимум по всем перебираемым решениям. Проверим, что мы получим решение, стоимость которого не более чем в 1 + а + б раз больше оптимальной. Действительно, пусть X* — оптимальное решение и ? = cF(X*)/cs(X*). Можно считать, что \Х*\ > к, поскольку иначе мы нашли бы X* в процессе перебора. Тогда cF({z}) < t;cf(X*). Более того, стоимости обслуживания лежат на отрезке [1,3], поэтому cs({i}) < 3|Э| < 3cs(X*). По лемме 22.9 стоимость решения Y не превышает icF(X*) + cF(X*)ln(^max{l,^^}j+cF(X*)+cs(X*) = = cs(X*)(| + ^In(max{l,|})+5 + l)< <cs(X*)(l + 0(l + 6 + ||TIn(max{l,|}))< <(l + a + e)(l + ?)cs(X*) = l + a + e)(cF(X*) + cs(X*)). ? Полученный коэффициент приближения кажется наилучшим возможным. Теорема 22.13. Если для некоторого е > 0 существует приближенный алгоритм с точностью 1 + а — е, решающий частный случай задачи о размещении предприятий без пропускных стоимостей, где все стоимости обслуживания принимают лишь значения 1 и 3, то Р = NP. Данный факт был доказан Свириденко [неопубликовано] (с использованием результатов Фейге [14], а также Гухи и Хуллера [15]). Его доказательство приводится в обзоре Фигена [3].
660 Глава 22. Задача о размещении предприятий § 22.5. Ограничение на число предприятий Задача о fc-размещении предприятий представляет собой вариант задачи о размещении предприятий без пропускных способностей со следующим дополнительным ограничением: всего разрешается открыть не более к предприятий, где к — заданное натуральное число, входящее в описание экземпляра задачи. Частный случай, при котором стоимость открытия предприятий равна нулю, представляет собой хорошо известную задачу о fc-медианах. В этом параграфе мы изучим приближенный алгоритм решения метрической задачи о fc-размещении предприятий. В нашем случае задача сильно бы упростилась и свелась к уже изученной, если бы ограничение на количество открытых предприятий было отброшено. В подобных случаях стандартной техникой является метод лагранжевой релаксации (см. §5.6). Снимем ограничение на количество открытых предприятий и добавим константу Я к стоимости открытия каждого предприятия. Теорема 22.14 (Джайн и Вазирани [18]). Пусть заданы константа ys и такой полиномиальный алгоритм А, что для любого экземпляра метрической задачи о размещении предприятий без пропускных способностей алгоритм А находит решение X, для которого cF(X) + cs(X) < cF(X*) 4- Yscs№*) nPu всех непустых X* с JF Тогда существует приближенный алгоритм с точностью 2уз для метрической задачи о k-размещении предприятий с целочисленными данными. Доказательство. Пусть задан экземпляр метрической задачи о fc-размещении предприятий. Мы предполагаем, что стоимости обслуживания — целые числа из множества {0,1,..., стах}, а стоимости открытия предприятий — целые числа из множества {0,1,..., /тах}. Для начала проверим, есть ли решение с нулевой стоимостью, а если оно существует— найдем его. Выполнить это несложно; см. доказательство леммы 22.15. Итак, можно считать, что стоимость любого решения не меньше 1. Пусть X* — оптимальное решение (алгоритму оно недоступно, но мы его будем использовать для анализа). Пусть А (Я) с & — решение, полученное запуском алгоритма А на экземпляре задачи, в котором все стоимости открытия предприятий увеличены на Я, а ограничение на количество открытых предприятий снято. Имеем cF(A(A)) + |Л(А)|А + cs(A(A)) < cF(X*) + |Х*|А + yscs{X*), и отсюда сМШ) + cs(AW) < cF(X*) + Yscs(X*) + (fc- |А(Я)|)Я (22.9) для всех Я > 0. Если |А(0)| < fc, то А(0) —допустимое решение со стоимостью, не более чем в ys превышающей оптимум, и наша цель достигнута. Иначе |Л(0)| > fc. Заметим, что |A(/max + rsl^lw +1)1 = 1 < fc. Пусть Л' := 0 и Я;/ := /max + 7sl®lcmax +1- Применим двоичный поиск: будем поддерживать инвариант |А(Я")| < fc < |А(Я0|. На каждой итерации мы заменяем значение одной из границ Я7, Я" на их среднее арифметическое в зависимости от истинности
§ 22.5. Ограничение на число предприятий 661 I / X + А" Л I условия Л1—-—1 < fc. После О (log |0| + log/max + logcmax) итераций получим Л" — \' < 1/| ^|2. (Отметим, что метод двоичного поиска работает корректно, несмотря на то что отображение Я —> |А(Я)| может не быть монотонным.) Если |А(Я")| = к, то из неравенства (22.9) следует, что А{Х") является допустимым решением со стоимостью, превышающей оптимальную не более чем в Ys Раз> и» значит, мы достигли цели. Однако условие Я" может и не выполняться, поскольку отображение Я »-» |Л(Я)| не обязано быть монотонным и может измениться более чем на 1. (Отметим, что Арчер, Раджагопалан и Шмойс [4] показали, как обойти эту трудность путем внесения возмущений в стоимости. Их метод, однако, не является полиномиальным.) Итак, обозначим X := Л (Я7) и У := Л(Я//). Будем далее предполагать, что |Х| > fc> |У|. Пусть а := -^L и р := М"* |Х|-|У| ">" |Х|-|УГ Выберем такое подмножество X7 множества X, что |Х'| = |У| и min?€X/ cti> = = minieX cfl-/ для любого i' е У, где c?i/ := minJ€@(Cy- + с^). Далее запустим следующую рандомизированную процедуру. Откроем либо все элементы множества X' (с вероятностью а), либо все элементы множества У (с вероятностью /3 = 1 — а). Кроме того, откроем к — \Y\ предприятий из множества Х\Х', выбранных случайно и равномерно. Тогда математическое ожидание стоимости полученного решения будет составлять acF(X) + /3cF(7). (Отметим, что множества X и У не обязательно непересекающиеся, так что в представленной оценке мы можем дважды заплатить за открытие некоторых предприятий. Поэтому acF(X) + /3cF(7) является лишь верхней оценкой на математическое ожидание стоимости предприятий, а не точным значением.) Фиксируем клиента j е ^, и пусть i' — ближайшее к нему предприятие в X, а i" — ближайшее предприятие в У. Соединим j с предприятием i', если последнее открыто, а иначе с предприятием i" если оно открыто. Если ни i', ни i" не открыты, то соединим j с предприятием i'" е X7, для которого значение с^/// минимально. Математическое ожидание стоимости обслуживания составляет ас^ + /Зс^, если i7 е X' что не превышает aq/;- + (1 —d)Pct»j + (1—a)(1—Р)с^ < ac^-+/32с^ + сф (с^ 4-minfc^/+ci'"/)) ^ < ас^ + p2ct»j + aj3 (с^- + с{»5 + С;/,) = a(l + /3)cVj + j8 (1 + а)^/,, если i'elU7. Таким образом, суммарное математическое ожидание стоимости обслуживания не превышает (l + max{a,/3})(acs(X) + jBcs(7)) < (2- y^)(acs(X) + /Зс5(У)). Теперь мы используем неравенство(22.9) и получаем следующую оценку на математическое ожидание стоимости: (2- -L) (o(cF(X) + cs(X)) + /?(cF(y) + с5СП)) <
662 Глава 22. Задача о размещении предприятий 2- ±) (cF(X*) + YsCstXl + (А" - АО(|Х| ~ ^f ~|У|)) < что не превышает 2ys(cF(X*) + cs(X*)). Несложно также подсчитать математическое ожидание стоимости при дополнительном условии, что подмножество Z открывается с вероятностью 1, а еще открыто fc — \Z\ случайно выбранных предприятий из некоторого другого множества. Следовательно, представленный алгоритм может быть дерандоми- зирован при помощи метода условных вероятностей. Вначале мы откроем X' или Y в зависимости от того, какая из оценок на математическое ожидание ограничена значением (2 - ±) {a{cF{X) + cs(X)) + Р(сР(Х) + cs(Y))). Затем последовательно открываем предприятия из множества Х\Х', для которых данное ограничение продолжает выполняться. ? В частности, при помощи алгоритма Dual Fitting (см. следствие 22.7) мы получаем 4-приближенный алгоритм для метрической задачи о fc-размещении предприятий с целочисленными входными данными. Отметим, что первый приближенный алгоритм с константной погрешностью для данной задачи был предложен в работе Чарикара и др. [12]. Время работы метода двоичного поиска является слабо полиномиальным, и он подходит только для случая целочисленных данных. Однако, производя дискретизацию, можно превратить его в сильно полиномиальный алгоритм. Лемма 22.15. Для экземпляра I метрической задачи о k-размещении предприятий и для чисел утах > 1 и е, 0 < е < 1, за время 0{\&\ • |^| log(|^| • |^|)) можно либо выяснить, что OPT(J) = 0, либо построить другой экземпляр J' для которого все стоимости обслуживания и стоимости предприятий будут целыми числами из множества {0,1,..., \2утах(к + |^|)3/е]} и для любого значения у, 1 < у < утах, любое решение задачи V со стоимостью не более у ОРТ(/') также будет решением I со стоимостью не более у{1 + е) ОРТ(7). Доказательство. Пусть п := fc + |^| и задан экземпляр I. Вычислим сначала для OPT(J) верхнюю и нижнюю границы, отличающиеся не более чем в 2п2 — 1 раз. Для этого поступим следующим образом. Для каждого значения В € {ft: i G &} и {ctj :i<=&, j e 0}
§ 22.5. Ограничение на число предприятий 663 рассмотрим двудольный граф GB := (&U&, {{i,j}: i € &,je9,fi< В, ctj < В}). Минимальное число В, для которого элементы множества ® принадлежат не более чем fc различным компонентам связности графа GB, каждая из которых содержит хотя бы одно предприятие, является оценкой снизу на OPT(J). Это число В может быть найдено за время 0(|J*"| • |^|log(|J*"| • |^|)) при помощи простейшего варианта алгоритма Краскала для поиска минимального остова. Более того, для этого В мы можем выбрать произвольное предприятие в каждой компоненте связности графа GB, содержащей элемент множества ®, и назначить этому предприятию всех клиентов, заплатив за обслуживание не более (2|®| — 1)В (здесь мы используем предположение о метричности стоимостей обслуживания). Следовательно, OPT(J) < кВ + (2\@\ - 1)|Э|В < (2п2 - \)В (за исключением тривиального случая В = 0). Итак, можно отбросить стоимости предприятий и обслуживания, превосходящие В* := 2утахп2В. Построим экземпляр V из /, положив каждую стоимость Су равной [minfB7, ctj}/5], а каждую стоимость f( равной [miiifB'/?}/б"|, где 5 = еВ/п. Теперь все входные числа являются целыми из множества {0,1,..., \2Ттахп3/е]}. Имеем ПТУМ'Л < 0PT(f) л. я ОРТ(/) + еВ . (2п2-1)В + еВ 2п2В В' ОРТ(/)<—-=— + п = = < j: <-=¦ - Тогда любое решение для V со стоимостью не более у OPT(J') не содержит элементов со стоимостью \В'/5], а значит, является решением задачи / со стоимостью не более 5у ОРТ(/') < г(ОРТ(/) + еВ) < у{1 + е) OPT(J). П Следствие 22.16. Существует сильно полиномиальный 4-приближенный алгоритм для метрической задачи о k-размещении предприятий. Доказательство. Применим лемму 22.15, взяв утах = 4 и е = 1/(4|®|), а затем к получившемуся экземпляру применим теорему 22.14 с алгоритмом Dual Fitting. Согласно следствию 22.7 имеем ys = 2. Таким образом, мы получаем решение стоимостью не более (2~ Щ) f1 + 4jli) М;П + rsCsiX*)) < 4(cF(X*) + cs(X*)) для любого непустого множества X* с ^. П Чжан [33] нашел для метрической задачи о fc-размещении предприятий приближенный алгоритм с точностью 3,733. В этом алгоритме используется техника локальных улучшений, аналогичная изложенной в следующем параграфе.
664 Глава 22. Задача о размещении предприятий § 22.6. Метод локальных улучшений Как уже говорилось в § 21.3, метод локальных улучшений зачастую успешно применяется на практике, хотя обычно для него не удается получить никаких гарантий точности. Поэтому особенно удивителен тот факт, что для задачи о размещении предприятий метод локальных улучшений может давать доказуемо хорошие приближения. Впервые этот факт был обнаружен в работе Ко- руполу, Плакстона и Раджарамана [20]. Впоследствии эти наблюдения привели к нескольким сильным результатам. В этом и следующем параграфах мы расскажем о некоторых из них. Для задачи о fc-медианах локальный поиск дает наилучшую известную на текущий момент оценку точности. Перед тем как перейти к изложению этого результата, мы рассмотрим простейший алгоритм локального поиска. Начнем с произвольного допустимого решения (т. е. с множества из к предприятий) и будем улучшать его одиночными обменами. Отметим, что в задаче о fc-медианах стоимости предприятий нулевые, поэтому нас должны заботить лишь стоимости обслуживания. Более того, без ограничения общности можно считать, что в решении должно быть ровно к предприятий. Теорема 22.17 (Арья и др. [6]). Рассмотрим экземпляр метрической задачи о k-медианах. Пусть X — допустимое решение, а X* — оптимальное решение. Если cs((X\{*}) U {у}) > cs(X) для всеххеХиу<=Х*,то cs(X) < 5cs(X*). Доказательство. Рассмотрим оптимальные распределения клиентов по fc предприятиям для экземпляров X и X* и обозначим их а и сг* соответственно. Будем говорить, что хеХ захватывает у еX*, если Ю е 9: cr(j)=x, o*(j)=y}\ > \\{j еЗ>: cr*(j) = y}\. Каждый элемент у € X* захвачен не более чем одним элементом х еХ. Рассмотрим такую биекцию п: $ —> ^, что для всех j е ^ выполняются следующие условия: • сг*(тг(;)) = о-*0') и • если о"(тг(;)) = <j(j)> то °"0) захватывает <J*(j). Такое отображение п несложно построить. Для этого следует упорядочить для каждого у е X* все элементы множества {j'g^: o"*(j) = у] = {j0)...,^_г} так, чтобы клиенты j с одинаковыми значениями a(J) шли последовательно. Затем следует положить n(jk) := jk>, где к' = (fc + |_t/2j) (mod t). Будем называть обменом элемент множества X х X*. Для обмена (х,у) назовем х началом, а у — концом. Построим множество из fc таких обменов, что каждое предприятие у € X* является концом ровно одного из них. Если х е X захватывает только одно предприятие у е X*, то рассмотрим обмен (х, у). Если таких обменов I штук, то в X и в X* остается fc — I элементов. Некоторые из оставшихся элементов множества X (не более (fc —1)12) могут захватывать не менее двух предприятий из X*; мы пропустим такие элементы. Для каждого из оставшихся предприятий у € X* выберем такой элемент х е X,
§ 22.6. Метод локальных улучшений 665 что х не захватывает никаких предприятий и при этом х е X является началом не более чем двух подобных обменов. Проанализируем отобранные выше обмены по одному. Рассмотрим обмен (х,у), и пусть X' := (Х\{х}) U {у}. Тогда cs(X') > cs(X). Преобразуем текущее назначение а: Э —> X в новое назначение а'': 9J —> X' переназначая клиентов следующим образом. Клиенты ; € ^, для которых <т*(;) = у, назначаются элементу у. Клиенты ; е ©, для которых cr(j)=x и сг*0) =у' еХ* \ {у}, назначаются элементу сг(я(;)). Обратите внимание на то, что сг(я(;)) ^ *, поскольку х не захватывает у7. Для всех остальных клиентов назначение не меняется. Имеем поскольку са(п^у > miniGX ci; = Co-o*).; по определению a. Теперь просуммируем полученные оценки по всем обменам. Отметим, что любое предприятие из X* является концом ровно одного обмена, а значит, первая часть суммы будет равна cs(X*) — cs(X). Более того, каждый элемент х е X является началом не более двух обменов. Отсюда следует, что < CS(X*) - CS(X) + 2 2.j(Cc7*0)j + С^*0)я0) + Ca(n(J))nU) ~~ CctO)j) = = cs(X*) - cs(X) + 2 JX*Q),- + <V (*U)M;)) = cs^*) "Csffl + 4cs(X*), JG0 поскольку я является биекцией. П Таким образом, локальный оптимум в представленном методе улучшений является 5-приближением. Но мы пока ничего не знаем про время работы, которое потребуется, чтобы достичь локального оптимума. Потенциально количество шагов, необходимых для достижения локального оптимума, может быть экспоненциальным. Однако, производя дискретизацию стоимостей, мы можем получить сильно полиномиальный алгоритм. Следствие 22.18. Пусть О < е < 1. Рассмотрим экземпляр метрической задачи о k-медианах. Преобразуем исходные данные при помощи леммы 22.15, полагая Ушах = 5 и подставляя е/5 вместо е. Затем применим метод локальных улучшений. А именно, начнем с произвольного множества из к предприятий и будем применять обмены для уменьшения стоимости обслуживания, пока это возможно. Данный алгоритм является сильно полиномиальным и имеет точность приближения 5 + 6.
666 Глава 22. Задача о размещении предприятий Доказательство. Поскольку стоимости обслуживания для нового экземпляра задачи являются целыми числами из множества {0,1,..., \50(к + |^|)3/б]}, всего мы сделаем не более |®||"50(fcH- |f^|)3/el обменов, каждый из которых уменьшает суммарную стоимость обслуживания. ? Точность приближения может быть существенно улучшена при помощи множественных обменов. Теорема 22.19 (Арья и др. [6]). Рассмотрим экземпляр метрической задачи о k-медианах. Пусть задано число р е N. Пусть также X — допустимое решение, а X* — оптимальное решение. Если cs((X\A) U В) > cs(X) для всех таких AQX иВСХ*, что \А\ = \В\ < р, то cs(X) < (3 + 2/p)cs(X*). Доказательство. Пусть а и сг* — оптимальные назначения клиентов по к предприятиям для X и X* соответственно. Для любого А с X рассмотрим С (Л) — множество предприятий в X*, которые захватывает А, т. е. C(A):={yeX*:\{je9:aV)eA,a*V)=y}\>l\{je9:a*V)=y}\}. Построим разбиения Х = Л1й...иЛгиХ* = В1и...иВг следующим образом. Пусть {хеХ:Сах})ф0}=:{хг,...,хя}=:Х. Положить г := max{s, 1}. For i = 1 to г — 1 do: Положить At:= {xt}. While |Ail < |ОД)| do: Добавить элемент xeX\(A2 и... U At UX) к A{. Положить B{ := C(Ai). Положить Ar := X \ (Ax U... U Аг_г) и Br := X* \ (Bx U... U Вг_х). Очевидно, что \A{\ = \Bt\ > 1 при i = 1,...,г и что множества Аъ ...,АГ попарно не пересекаются, как и множества Въ...,Вг. Заметим, что добавление элемента возможно всегда при \А{\ < \С(А{)\, поскольку тогда \X\(A1U...UAiUX)\ = \X\-\A1\-...-\Ai\-\{xi+ly...,xr}\> >|X*|-|C(A1)|-...-|C(A?)|-|C({xi+1})|-...-|C({xr})| = = |Х* \{С{Аг) U... U C(Af) U C({xi+1}) U... U С({хг})) \>0. Пусть я: ^ —» @ — такая биекция, что для любого j е <$ выполняются следующие условия: • <7*(<й) = <7*0); • если cj(7t(j)) = сг(;), то cr(j) захватывает сг*(;); • если <j(j) G Aj и сг(тгО')) е А{ для некоторого i е {1,..., г}, то А{ захватывает сг*С0- Такое отображение п может быть получено аналогично тому, как это было сделано в доказательстве теоремы 22.17.
§ 22.6. Метод локальных улучшений 667 Определим теперь множество обменов (А, В), где |Л| = \В\ < р, А с X и В с X*. С каждым обменом будет связан положительный вес. Здесь обмен (А, В) означает, что X заменяется на X' := (Х\А) и В; будем говорить, что А является начальным множеством, а Б — конечным. Для каждого такого i е {1, ...,г}, что \А(\ < р, рассмотрим обмен (А;,!^) с весом 1. Для каждого такого i е {1,..., г}, что \At\ = q> р, рассмотрим обмен ({х}, {у}) с весом l/(q — 1) для всех х е АД {xj и у е ?f. Каждый элемент у е. X* встречается в конечном множестве обменов с суммарным весом 1, а каждый элемент хеХ встречается в начальном множестве обменов с суммарным весом не более (р + 1)1 р. Скорректируем назначение клиентов аналогично тому, как мы поступали в случае одиночных обменов. Более точно, для каждого обмена (Л, В) назначим всех таких клиентов j е ®, что <т*(;) е В, предприятию <т*(;), а всех таких клиентов j е ^, что сг*(;) ф В и сг(;) е Л, — предприятию cr(n(j)). Заметим, что для всех рассматриваемых обменов (Л, В) справедливо включение В 2 С (Л). Следовательно, для всех таких ; е <&, что a(J) € Л и сг*(;) ф В, имеем cr(n(j)) ? А. Поэтому увеличение стоимости вследствие одного обмена может быть оценено следующим образом: je9: a*(j)eB je$: <j(j)eA,a*(j)<?B j'g®: cr*0)eB je©:crO')eA поскольку сст(я(;));- > сацу по определению ст. Отсюда, рассматривая взвешенную сумму по всем обменам, получаем р + 1 0 < Zj(Ccr*0)j " CcrO)j) + —Г~ ZjS(J(n<J))j ~ Ca(j)j) ^ P р + 1 < CS(X*) - CS(X) + —— ^(C^Q); + Са*0-)я0-) + C^Q))^) - C^y),-) - P - cs(X*) - cs(X) + —— 2.j(cc7*0)j + c(T*{nU))nU)) - = cs(X*)-cs(X) + 2^cs(X*), поскольку n — биекция. П В работе Арья и др. [6] также было показано, что данная оценка погрешности является точной. Аналогично следствию 22.18 лемма 22.15 и теорема 22.19 дают приближенный алгоритм с точностью 3 + е для любого е > 0. Это наилучшее известное на данный момент приближение для метрической задачи о fc-медианах. Аналогичная техника применима и к метрической задаче о размещении предприятий без пропускных способностей. Она приводит к простому приближенному алгоритму, основанному на локальных улучшениях.
668 Глава 22. Задача о размещении предприятий Теорема 22.20 (Арья и др. [6]). Рассмотрим экземпляр метрической задачи о размещении предприятий без пропускных способностей. Пусть X и X* — произвольные допустимые решения. Рассмотрим всевозможные элементы х е X, yG&\X и построим решения X\{x}t Хи{у} и (Х\{х})и{у}. Пусть ни одно из нихне оказывается лучше X. Тогда cs(X)<cF(X*)+cs(X*) и cF(X)<cF(X*)+2cs(X*). Доказательство. Будем использовать те же обозначения, что и в предыдущих доказательствах. А именно, пусть а и сг* — оптимальные размещения клиентов для X и X* соответственно. Для доказательства первого неравенства рассмотрим для каждого у е X* операцию добавления у кХ. Она увеличивает стоимость не более чем на fy+ 2j (c<r*U)J~c<rO)j)- je®: cr*(j)=y Просуммировав оценки, мы видим, что cF(X*) + cs(X*) — cs(X) неотрицательно. Пусть п: ^ -> ^ — такая биекция, что для всех j е $ выполняются следующие условия: • о-*(тг0)) = <т*0); • если сг(7г(;)) = cr(j), то a(j) захватывает сг*(;) и 7г(;) = j. Такое отображение п может быть получено аналогично тому, как это было проделано в доказательстве теоремы 22.17. При этом требуется зафиксировать n(j) := j Для \{j € 0: cr*(j) = У, (?(j) = х)\ ~ \{J е ®: о"*0") = У, сг(Я 7^ *}1 таких элементов j е ^, что сг*(;) = у и сг(;) = х для любой пары х е X, у е X*, где х захватывает у. Оценим теперь стоимость предприятий в X. Рассмотрим элемент х е X, и пусть ^х := {; е ^: a(j) = х}. Если х не захватывает ни один из элементов у € X*, то удалим х и переназначим j е Э^ элементу cr(n(J)) е. Х\{х}. Тогда о < -А + 2 (c<^w " <*/)• С22-10) Если множество С({х}) предприятий, захваченных элементом х, непусто, то рассмотрим у е С({л:}) — ближайшее предприятие в С({х}) (для которого значение mirij&9(cxj + Cyj) минимально). Попробуем добавить каждое из предприятий у' е С({х})\{у}. При этом стоимость не уменьшится, но увеличение не будет превышать /у+ Z (с^0);-сх;)- (22.11) Рассмотрим теперь обмен ({*}, {у}). Для каждого j € ^х переназначим j элементу сг(я(;)), если n(J) Ф ;, и элементу у иначе. В первом случае новая стоимость обслуживания для j е ©х будет не более ca(„(j))j. Во втором случае она оценивается как ca*^j9 где я(;) = j, cr*(J) = у. При этом Cyj < cXJ- + minted + Cyfc) < с*, + min(cxfc + са.Шк) < 2cxj + ca*0)j.
§ 22.7. Задача о размещении предприятий с пропускными способностями 669 Здесь второе в цепочке неравенство выполнено в силу того, что х захватывает сг*0') притг(;)=;. Итого обмен из х в у не уменьшает стоимость, но увеличивает ее не более чем на je®x je®x: n(j)fr je9x\ n(j)=j,(j*(j)=y jG®x: n(j)=j,a*(j)?y (22.12) Складывая неотрицательные оценки (22.11) и (22.12), получаем <%f*-fx+ S (^(,0));-^) + 2 Z c-*0)r (22-13) УбС(М) je%:n(j)fr je@x:n(j)=j Суммируя оценки (22.10) и (22.13) соответственно по всем х € X, получаем хеХ /еС({х}) j€@: я0)# J€0: 7t(/)=j <CF(X*)-CF(X)+ 2j (CC74J)J+CC7*0)^a)+CCT(7l0))7r(j)-Ca0)j)+2 ^j CC7*(A/ = je0: ttO")# ;e©: я0")=; = cF(X*)-cF(X) + 2cs(X*). ? Из этого результата и леммы 22.15 вытекает приближенный алгоритм с точностью 3 + 6 для любого е > 0. Комбинируя его с теоремой 22.10, мы получаем приближенный алгоритм с точностью 2,375 (упражнение 12). В работе Чарикара и Гухи [11] аналогичные оценки были доказаны для немного иного, но чрезвычайно похожего алгоритма, реализующего метод локальных улучшений. § 22.7. Задача о размещении предприятий с пропускными способностями Главное преимущество алгоритмов локального поиска — это их гибкость. Действительно, они могут применяться для произвольных функций стоимости и даже при наличии дополнительных сложных ограничений. Для большинства задач о размещении предприятий с жесткими ограничениями метод локальных улучшений является единственной известной на данный момент техникой, дающей доказуемые гарантии качества. В литературе изучались несколько различных вариантов задачи о размещении предприятий с ограничениями. Махдиан и Пал [24] сформулировали следующую универсальную задачу о размещении предприятий, которая содержит в себе несколько важных частных случаев.
670 Глава 22. Задача о размещении предприятий Universal Facility Location (универсальная задача о размещении предприятий) Дано: конечные множества клиентов ® и потенциальных предприятий &\ метрика с на множестве V := ® и &, т. е. расстояния c(j > 0 (i, j g V), для которых выполнены условия cit = 0, с1} = с;1 и су- + cik > cik для всех i,j,keV; требования dj ^ 0 для каждого j G f?; непрерывная слева и неубывающая функция стоимости ^: R+ -» R+ и {оо} для каждого i € ^ Надо: найти такие числа x{j € R+, где i G «? и j € ^, что ]?|е^ *п = 4/ Д™ всех j G $ и выражение с(х) := cF(x) + cs(jc) минимально, где Значения ft(z) можно интерпретировать как стоимости установки пропускной способности (количества обслуживаемых клиентов) z для предприятия L Мы должны определить, в каком виде задаются функции ft. Будем считать, что задан оракул, который способен для любых i G &, и, с G R+ и t G R вычислить значения/j(iz) итах{5еМ: ц + 5^0, /j(u + 5)— /f(iz) + c|5|<t}. Это предположение кажется естественным, поскольку подобный оракул может быть тривиально реализован для самых важных частных случаев универсальной задачи о размещении предприятий. Эти случаи таковы. • Метрическая задача о размещении предприятий без пропускных способностей. Здесь dj = 1 (J € ^), /i(0) =0и/|(2) = tt для некоторого tt еR+ и всех z>0 (ie J*"). • Метрическая задача о размещении предприятий с пропускными способностями. Здесь /j(0) = 0, ft(z) = tt для 0 < z < щ и /j(z) = оо для z > u^, где ui}ti el+ реЯ. • Метрическая задача о размещении предприятий с мягкими пропускными способностями. Здесь dj = 1 (j g ^) и /f(z) = Гг/ц^ для некоторых значений щ g N, t{ е R+ и всех z>Q{i е.&). Заметим, что в первом и третьем случаях оптимальное целочисленное решение существует всегда. В первом случае этот факт тривиален, а в третьем легко получается, если взять произвольное оптимальное решение у и применить следующее наблюдение к d, = 1 при jG^nzt = max {z: ft (z) < ft (][V € ^ jfy) } G Z+ при i e ^. Утверждение 22.21. Пусть & и & — конечные множества, и пусть числа dj > 0 0" е 0), z? > 0 (i е ^) и Су > 0 (i е ^, j е @) таковы, что Ytje® dj < Ziej? zi- Гогйа оптимальное решение для задачи mini J] с0х0:х>0, ^х0 = й;. (;€^), J]x0<^(iG^)J (22.14) 4eJ*; j€0 ie,^ je0 '
§ 22.7. Задача о размещении предприятий с пропускными способностями 671 может быть найдено за время 0(n3logn), где п = \$\ + \&\. Если все dj и zt целочисленные, то существует целочисленное оптимальное решение. Доказательство. Поиск минимума (22.14) эквивалентен решению экземпляра (G,b,c) задачи Хичкока на двудольном графе G:=(AUB,AxB) с долями А := \={Vj\ j€^}U{0} nB:={wt: ie&} и с параметрами Ъ(ц) :=dj при je&, b(wt) = = -z( при ie&, b(0) ~Y>i^zi-Hj^dP cty>wi) :=cij и c(°>^i) :=0 при ie^* и j € Of. Таким образом, задача (22.14) может быть решена за время 0(n3logn) по теореме 9.18. Если значение Ъ целочисленное, то, как мы знаем, алгоритм удаления циклов минимального среднего веса и алгоритм последовательного поиска кратчайших путей находят целочисленное оптимальное решение. ? Версию с мягкими пропускными способностями нетрудно свести к неограниченной версии с помощью техники, впервые предложенной Джайном и Вази- рани [18]. Теорема 22.22 (Махдиан, Е и Чжан [25]). Пусть заданы константы yF u ys. Пусть также известен полиномиальный алгоритм А, который для каждого экземпляра метрической задачи о размещении предприятий без пропускных способностей находит такое решение X, что cF{X) + cs{X) < yFcF(X*) + yscs(X*) для любого непустого множества X* с J? Тогда существует приближенный алгоритм с точностью yF + ys для решения метрической задачи о размещении предприятий с мягкими пропускными способностями. Доказательство. Рассмотрим экземпляр I = (^, $}, (.с^)(€=рje3l, (/f)i€j?) метрической задачи о размещении предприятий с мягкими пропускными способностями, где ft(z) = \%/щ~\г{ при i е & и z е М+. Преобразуем его в экземпляр V = (&,9f9 (fi)i<=&, (c-;)iejrj<=®) метрической задачи о размещении предприятий без пропускных способностей, взяв ff := tt и с[. := ctj + ^/щ для всех i е & и j е @. (Заметим, что функция с! метрическая, если с является метрической.) Применим алгоритм А к /': найдем множество предприятий Xg^h распределение клиентов а: Ф —> X. Положим xtj := 1 при a(J) = i и xtj := 0 иначе. Пусть а*: © —> & — оптимальное решение для J, а X* := {i е &: 3 j е. &: cr*(j) = i} — множество открытых (хотя бы для одного клиента) предприятий. Тогда имеем *»+*м-?Г|и"!;№-%+2;^<;Е>1>^< ieX l je® ieX je2> ie=X* je® ieX* l je® Следствие 22.23. Для метрической задачи о размещении предприятий с мягкими пропускными способностями существует приближенный алгоритм с точностью 2,89. Доказательство. Применим теорему 22.22 к алгоритму Dual Fitting (следствие 22.7(b)), полагая yF = 1,11 nys = 1,78. ?
672 Глава 22. Задача о размещении предприятий Еще один приближенный алгоритм, имеющий более высокую точность, приводится также в упражнении 11. При работе с жесткими ограничениями на пропускные способности придется разрешить расщепление запросов клиентов. Иными словами, разрешается назначать одного клиента нескольким предприятиям. Действительно, если разрешать расщепление, то никаких существенных результатов получить, по-видимому, не удастся, поскольку даже задача проверки на наличие допустимого решения является NP-полной задачей (задача о разделении; см. следствие 15.28). Первый приближенный алгоритм для метрической задачи о размещении предприятий с пропускными способностями был предложен Палом, Тардош и Векслером [27]. Данный метод является обобщением более раннего результата для частного случая, полученного Коруполу, Плакстоном и Раджараманом [20]. Чжан, Чэнь и Е [32] улучшили коэффициент точности до 5,83. Для частного случая однородных стоимостей предприятий Леви, Шмойс и Свами [22] получили приближенный алгоритм с погрешностью 5, в котором используется техника округления решений задачи линейного программирования. Работа Пала, Тардош и Векслера [27] была обобщена на случай универсальной задачи о размещении предприятий Махдианом и Палом [24]. Они получили приближенный алгоритм с погрешностью 7,88. В следующем параграфе мы изучим вариант метода локальных улучшений, дающий для универсальной задачи о размещении предприятий коэффициент точности 6,702. Но для начала заметим следующее. Лемма 22.24 (Махдиан и Пал [24]). Для любого экземпляра универсальной задачи о размещении предприятий существует оптимальное решение. Доказательство. Если не существует решения с конечной стоимостью, то любое решение является оптимальным. В противном случае рассмотрим последовательность (xl)i€N решений, стоимости которых сходятся к точной нижней грани с* е М+ множества стоимостей допустимых решений. Поскольку данная последовательность ограничена, существует подпоследовательность {xlj)jeN, сходящаяся к некоторому решению х*. Данное решение х* является допустимым. Поскольку все функции ft непрерывные слева и неубывающие, имеем с(х*) = с( limxlj) < lim с(х1*) = с*, j—> 00 j—» 00 т. е. решение х* оптимально. ? § 22.8. Универсальная задача о размещении предприятий В этом параграфе, основываясь на работе Фигена [31], мы расскажем об алгоритме локальных улучшений для универсальной задачи о размещении предприятий. В данном методе используются две операции. Во-первых, пусть t е & и 5 е R+. Тогда операция Add(t, 5) заключается в замене текущего допустимого решения х на оптимальное решение у следующей задачи:
§ 22.8. Универсальная задача о размещении предприятий 673 min jcs(y): уу > 0 (i e^j'e Э), J] уу = d, 0' € ®)> j€© j?9 JG© JG0 ' Обозначим оценку стоимости этой операции через cx(t,6):=csM-CsW + /tr2^ + 5)-/tfS^)- S'g^ ' S'g® ' Данное выражение является оценкой сверху на разность с(у) — с(х). Лемма 22.25 (Махдиан и Пал [24]). Фиксируем е > 0. Пусть х— допустимое решение для заданного экземпляра задачи. Пусть te&. Тогда существует алгоритм с временем работы 0(|У|3 log |У|е-1), находящий такое приращение 5 eR+, что cx(t, 5) < — ес{х), или выясняющий, что не существует приращения 5 е R+, для которого cx{t, 5) < — 2ес{х). Доказательство. Можно считать, что с{х) > 0. Положим C:={vec(x):veZ+, v<\±]}. Для каждого у е С обозначим через 5Г максимальное приращение 5 € R+, для которого Вычислим c*(t, 5Г) для всех у е С. Предположим, что существует 5 е R+, для которого cx{t, 5) < — 2ес(х). Рассмотрим тогда значение Заметим, что 5у > 5, а значит, c*(t, 5r) < cx(t, 5) + ес(х) < — ес(х). Во времени работы доминирует решение \С\ задач вида (22.15). Поэтому оценка времени работы следует из предложения 22.21. ? Если для текущего экземпляра нет достаточно выгодного способа улучшить его применением операции Add, то его стоимость можно оценить относительно оптимальной с помощью следующей леммы (принадлежащей Палу, Тардош и Векслеру [27]). Лемма 22.26. Пусть е>0,и пусть х, х* — допустимые решения. Предположим, что cx{t, 5)>-у^:с(х) дляecexte& и 5€R+. Тогда cs(x)<cF(x*)+cs(x*) + ec(x). Доказательство. Рассмотрим полный двудольный ориентированный граф G = = {$ U &, (9 х &) и {& х 0)) с весами ребер с((;, i)) := c(j и c((i,;')) := —ctj для i е & и ; е ^. Обозначим b(i) := S;€@(^j? -*?¦) Для ie&, S := {ie&: b(i) > 0} HT:={i€^:b(0<0}.
674 Глава 22. Задача о размещении предприятий Определим b-поток g: E(G) —> R+ следующим образом: g(i, j) := max{0, xtj -**.} и g(j, i) := max{0, л:* -xtj} при i e&,je 9. Запишем g как сумму ^-потоков gt по всем t е Г, где bt(t) = b(t), bt(i>) = О при v е Г\ {t} и 0 < bt(v) < b(u) при i; е V(G) \Т. (Такое представление несложно получить, используя стандартные методы декомпозиции потоков.) Фиксируем tGT. Тогда поток gt определяет способ переназначить клиентов к t, т. е. новое решение xti определяемое соотношением х\. := xtj + gt(j, i) —gt(i, j) при i e&, j G <&. Имеем cs(*0 = cs(x) + ][] c(e)gt(e), eeE(G) откуда следует, что Как мы знаем, значение в левой части не меньше — r^rc(x) для всех t G Г, поэтому, суммируя данные равенства, получаем eeE(G) teT S"e® ' eeE(G) п Опишем теперь второй тип операций. Пусть х—допустимое решение для некоторого экземпляра универсальной задачи о размещении предприятий. Пусть А— такое ориентированное дерево, что V(A) с & и 5еАхА:= |б€Му(А): J]x0- + 5f > О для всех i е V(A), J]5f = oj. Тогда можно рассмотреть операцию Pivot (Л, б), состоящую в замене текущего решения х на новое решение х', в котором ^jeSl х[. = S/€® *у + ^i ПРИ ieV(A), S;^4=S;^^ ПРИie^\V(A) ис(дО<с(х)+с*(А, 5), гдес*(А,5):= Vje0 У S'e@ У lzeA,+ -ip(i) при i G У (А). Здесь At — множество вершин, достижимых из i в A, a p(i) — предок вершины i в А (если i — корень, то p(i) выбирается произвольным образом). Такое решение х/ можно легко получить путем «проталкивания» требований вдоль ребер в А в обратном топологическом порядке. Отметим, что выбор ориентации ребер дерева А (к корню или от корня) не учитывается при построении сх{А, 5) и используется только для упрощения записи. Описанную операцию имеет смысл выполнять, если ее оценочная стоимость сх(А, 5) представляет собой достаточно большое отрицательное число.
§ 22.8. Универсальная задача о размещении предприятий 675 Это требование гарантирует, что полученный алгоритм локальных улучшений остановится за полиномиальное количество шагов. Назовем сумму ieV(A) ЕЕ* Cip(0 1 ZeAt оценочной стоимостью перераспределения для операции Pivot (Л, 5). Покажем теперь, как для текущего решения найти улучшающую операцию Pivot (если только текущее решение не является локально оптимальным). Лемма 22.27 (Фиген [31]). Пусть задано значение е > 0 и выбрано ориентированное дерево А с множеством вершин V(A) с ^. Пусть также х — допустимое решение. Тогда существует алгоритм со временем работы 0(|^|4е~3), который находит такое приращение 5 € А*, что сх(А, 5) < —ес(х), или выясняет, что не существует приращения 5 € А*, для которого сх{А, 5) < — 2ес{х). Доказательство. Пронумеруем вершины V(A) = {1,..., п} в обратном топологическом порядке, т. е. так, что для всех (i, j) е Е (А) справедливо неравенство i > j. Фиксируем такое к € У (А), что 1(р(к), к) G Е(А). Обозначим B(fc):={i<fc:(p(fc),i)€B(A)}, если к не является корнем дерева А, и пусть В(к) := 0, если к — корень дерева А. Положим также Ik:= (J А+, b(k):=max({0}uB(k)) 1еВ(к)и{к} И s(k) :=max({0} и (А+\{к})). Пусть C:={v^c(x):veZ, -[j]-n<v<[f] + n}. Построим таблицу (Т*(к, y))fc€{o,...,n},rec> элементы которой определены следующим образом. Положим 7^(0,0) := 0, Т*(0, у) := 0 для всех у е С\{0}. При к = 1,..., п пусть Т*{к, у) обозначает оптимальное решение 5 е R7fc для следующей задачи: шах { J] St: у' € С, 3j(b(fc), /) / 0, 5? = (ГА*(Ь(к), r0)f при i е U А+, Г" € С, T*(5(fc), г") 7^ 0, 5t = (7*(s(fc), /0)* при i€Afc+\ {k}, ?*<, + «*>(>, Z + Z' + ^SXri В случае, если множество, по которому берется максимум, пусто, полагаем №г):=0- Грубо говоря, число —^]i&1 (Т*(к,у))( представляет собой минимальный избыток, который можно получить в предке р(к) вершины к, если начать проталкивать требования из каждой вершины в 1к в ее соответствующего предка
676 Глава 22. Задача о размещении предприятий или, наоборот, если ограничиться при этом суммарной округленной оценочной стоимостью не более у. Заметим, что Т*(к, О)ф0 при fc = 0,..., п. Следовательно, мы можем выбрать минимальное значение yGC, для которого Т*(п, у) Ф 0 и 2"=i0a (п> 7))i ^ О- Выберем теперь такое 5 е А*, что 5^ = (Т*(п, y))t или 0 < 5,- < (Т*(п, y))t для всех i = 1,..., п и |?Z€A+ 5г| < \Тч<=а+(та(п> f))z| Д71* всех * = 1, - • •, п. Для этого достаточно положить 5 := Т*(п, у), затем последовательно уменьшать значение 5i для максимального i, для которого 5t > 0 и ^]ZeA+ 5Z > 0 для всех вершин fc на пути из п в i в Л. При этом свойство сх(Л, 5) < у будет сохраняться. Осталось показать, что значение у достаточно мало. Предположим, что существует операция Pivot (Л, 5), для которой сх(А, 5) < <: — 2ес(х). Поскольку для всех i G У(Л), получаем, что c*t(5) < cF(x) < с(х). Отсюда следует, что для i = 1,..., п и J]?€/ 7"i € С для всех J с {1,..., п}. Далее, по индукции несложно показать, что ielk v v ZeJfc y/l i€/fc при fc = 1,..., п. Таким образом, мы имеем операцию Pivot с оценочной стоимостью не более п i=i Оценим теперь время работы алгоритма. Потребуется вычислить п\С\ элементов таблицы, а для каждого элемента T?(fc, у) перебрать все возможные значения у', у" € С. Так мы найдем значения 5{ для i е Jfc\{fc}. Осталось вычислить максимальное значение 5к, для которого у' + у" + Сдк(5) < у- Его легко найти непосредственно, пользуясь оракулом, заданным по условию для функций fhiG&. Итоговое вычисление 5 из определения Т?(п, у) (у е С) потребует линейного времени. Итак, суммарное время работы алгоритма составляет 0(п|С|3) = 0(|^|4е-3). ? Рассмотрим теперь операцию Pivot(A, 5) для ориентированных деревьев специального вида, так называемых звезд и комет. А именно, А называется звездой с центром v, если A = (J*; {(у, ш): w€l&\{v}}), и кометой с центром v ихво- стом (t,s), если А = (&9 {(t,5)} U {(v, w): w е &\{vys}}) и v, t,s — различные элементы множества «^ Заметим, что всего существует менее \&\3 различных звезд и комет. Покажем теперь, что (приближенный) локальный оптимум имеет малую стоимость предприятий.
§ 22.8. Универсальная задача о размещении предприятий 677 Лемма 22.28. Пусть х, х* — допустимое решение для заданного экземпляра задачи, и пусть сх(А, 5) > ~~г^т СМ ^ля всех звезд и комет А и 5 € Д* Тогда с?{х) < 4cF(x*) + 2csU*) + 2cs{x) + ес(х). Доказательство. Воспользуемся обозначениями из леммы 22.26. Рассмотрим следующий экземпляр задачи Хичкока: минимизировать У, csty(s> 0 S€S,tGT при условиях 2* y(s' 0 = К5) tGT seS y(s,t)>o (seS), (ter), (s€S,te Г). (22.16) Согласно предложению 9.21 существует оптимальное решение у: S х Г —»R+ задачи (22.16), для которого подграф F := (S U Г, {{s, t]: у (5, t) > 0}) образует лес. Поскольку (bt(s))ses,ter—допустимое решение задачи (22.16), имеем ? csty(s,t) < J] csMs) = J] cst(gt(5+(5))-gt(5-(5))) < seS,teT sGS,tGT s<=S,teT < 2 I^ISW < cs(x*) + cs(x). (22.17) eeE(G) Построим теперь набор из не более чем \&\ операций Pivot. Будем говорить, что операция Pivot(A, 5) закрывает s е S (относительно х и х*), если ;g® jG© jG0 Будем говорить, что она открывает t е Г, если JG0 JG© jG® Набор операций, который мы строим, будет обладать следующим свойством: каждый элемент sgS будет закрыт ровно одной операцией, а каждый элемент ter будет открыт не более чем четырьмя операциями. Более того, суммарная оценочная стоимость перераспределения будет не более 2 ^]SGS teT csty(s, t). Таким образом, суммарная оценочная стоимость операций не превзойдет 4cF(x*) + + 2cs(x*) + 2cs(x) — cF(x). Отсюда сразу будет следовать утверждение леммы. Осталось определить сами операции. Для этого вначале ориентируем ребра леса F, превратив его в ветвление. Корнем каждой из его компонент связности будет некоторый элемент множества Г. Будем писать у{е) := y(s, t), если концами ребра е е Е(В) служат s е S и t е Г. Вершина v е У(Б) называется слабой, если У(5д(^)) > у(5~(и)), и сильной иначе. Обозначим через Г+(и), r+(i;) и r+(iO
678 Глава 22. Задача о размещении предприятий множества сильных, слабых и всех детей вершины и е У (В) в ветвлении В соответственно. Пусть t е Г, и пусть r+(t) = {гиъ ..., wk} — слабые дети вершины t, упорядоченные таким образом, что г(шг) < ... < r(wk), где r{w{) := maxj 0, y(wf, 0 - ^ У Of, t') |. Более того, упорядочим rs+(t) = {s1?..., sz} так, чтобы выполнялись неравенства y(s1,t)>...>y(sl,t). Для начала предположим, что к > 0. При i = 1,..., к—1 рассмотрим операцию Pivot для звезды с центром wiy перераспределяющую • не более 2y(wi9 t') единиц требований w( к каждому слабому сыну t' вершины wit • y(w?, t') единиц из wi к каждому сильному сыну t' вершины wt, • r(iVi) единиц из wt к множеству r+(wi+l). Тем самым мы закроем wt и откроем подмножество Г+(ш;) и Г5+(Ш;+1). Оценочная стоимость данного перераспределения будет составлять не более X Сш.^2у(н4, О + ^] Сш.^у(114, О + Ctu>tr(Wi) + ПОСКОЛЬКУ Г(щ) < r(wi+1) < Х^еГ;(ш<+1) ЯШ1+1> О- Для того чтобы определить остальные операции Pivot в вершине ?, рассмотрим три случая. Случай 1: вершина t сильная или I = 0. Тогда рассмотрим следующие действия: (1) операцию Pivot для звезды с центром wki перераспределяющую • y(wk> О единиц требований от wk к каждому сыну t' вершины wk, • y(wk> 0 единиц требований от wk к t, закрывающую wk и открывающую t вместе с детьми вершины wk\ (2) операцию Pivot для звезды с центром t, перераспределяющую • не более 2y(s, t) единиц из каждого сильного сына 5 вершины t в t, закрывающую сильных детей вершины t и открывающую t. (В случае, если I = 0,г вторую операцию Pivot можно опустить.) Случай 2: вершина t слабая, I > 1 и y(wk, t) + у fai,1) > 2i=2 У fe 0- В этом случае рассмотрим следующие действия: (1) операцию Pivot для звезды с центром wk, перераспределяющую • y(wk> f0 единиц требований из wk в каждого сына t' вершины wk и • y{wk, t) единиц из wk в t,
§ 22.8. Универсальная задача о размещении предприятий 679 закрывающую wk, открывающую детей вершины wk и открывающую t, (2) операцию Pivot для звезды с центром sl9 перераспределяющую • y(si> О единиц из s2 к каждому сыну t' вершины s2 и • yfai, О единиц из sx в t, закрывающую sl9 открывающую сыновей вершины sx вместе с t, и (3) операцию Pivot для звезды с центром t, перераспределяющую • не более 2y{st, t) единиц из st в t при i = 2,..., I, закрывающую s2,..., st и открывающую t. Случай 3: вершина t слабая, 1>1и y{wki t) + у(52, t) < 2i=2 yi.sh t). Тогда рассмотрим следующие действия: (1) операцию Pivot для кометы с центром wk и хвостом (г,5х), перераспределяющую • y(wk> О единиц требований из wk к каждому сыну t' вершины wk, • y{wki t) единиц из wk в t и • не более 2у(5ъ t) единиц из sx в t, закрывающую wk и sx и открывающую t, а также детей вершины wki (2) операцию Pivot для звезды с центром t, перераспределяющую • не более 2y(s{, t) единиц из s( в t для каждого нечетного i из множества {2,...Л}, закрывающую нечетные элементы {s2,..., sz} и открывающую t, и (3) операцию Pivot для звезды с центром t, перераспределяющую • не более 2y(s{, t) единиц из st в t для каждого четного i из множества {2,...ЛЬ закрывающую четные элементы из {s2,..., s{\ и открывающую t. В случае к = 0 рассмотрим такие операции Pivot, как указано выше, за тем исключением, что операция (1) не выполняется в случаях 1 и 2 (где у(ш0, t) :=0), а в случае 3 она заменяется на операцию Pivot для звезды с центром t, перераспределяющую 2y(s1? t) единиц из s2 в t, закрывающую s2 и открывающую t. Построим указанные наборы операций Pivot для всех tsT. Всего мы закрыли каждую вершину s^S ровно один раз и открыли каждую вершину t е Т не более четырех раз, при этом суммарная оценочная стоимость перераспределения не превысила 2 ][]js t}eE(F) csty(s> 0> что не больше 2cs(x*) + 2cs(x) согласно неравенству (22.17). Если оценочная стоимость всех операций не меньше —t^jc(jc), то получаем — ес{х) <— cF(x)4-4cF(x*) + 2cs(x*) + 2cs(x), что и требовалось. П Из предыдущих результатов вытекает следующий результат. Теорема 22.29. Пусть О < е < 1, и пусть х, х* — допустимые решения для заданного экземпляра задачи и при этом cx(t, 5) > —Тй^с^х) для всех t € & и 5 е R+ и сх(А, 5) > — ттл^т с (х) для всех звезд и комет Ли5е А*. Тогда c(x)<(l + e)(7cF(x*) + 5cs(x*)).
680 Глава 22. Задача о размещении предприятий Доказательство. По лемме 22.26 имеем cs(x)<cf(jc*) + cs(x*) + |c(jc). Одновременно по лемме 22.28 получаем сРМ < 4cF(x*) + 2cs(x*) + 2cs(x) + §с(дс). Отсюда находим г(гЛ = г-(тЛ -I- rJy-Л < 1г„(у*Л -J- Ъг~(тг*Л 4- с(х) = сР(х) + cs(x) < 7cF(x*) + 5cs(x*) + f с(х), и, следовательно, с(х) < (1 + e)(7cF(x*) + 5cs(x*)). D Наконец применим технику масштабирования и получим главный результат настоящего параграфа. Теорема 22.30 (Фиген [31]). Фиксируем произвольное е > 0. Для универсальной задачи о размещении предприятий существует приближенный алгоритм с полиномиальным временем работы и точностью (V41 + 7)/2 + е. Доказательство. Можно считать, что е < 1/3. Пусть /3 := (-/41 — 5)/2 « 0,7016. Положим ff(z) :=j3/i(z) для всех zeR+ и ie<^ и рассмотрим модифицированный экземпляр задачи. Рассмотрим произвольное начальное допустимое решение х. Применим алгоритмы из лемм 22.25 и 22.27, положив е := ^ .. Данные алгоритмы либо найдут операцию Add или Pivot, уменьшающую стоимость текущего решения х хотя бы на ^ .с(лг), либо установят, что выполняются условия теоремы 22.29. Пусть теперь х — решение, получившееся применением данных операций. Обозначим стоимости предприятий модифицированного и начального экземпляра задачи через cF и cF соответственно, и пусть х* — произвольное допустимое решение, тогда ср(х) + cs(x) = ^Ср(х) + cs(x) < < I (&?(**) + 4cs(x*) + f с(дс)) + <?(**) + csQt*) + §с(х) < <(6 + j8)cF(x*) + (l + ^)cs(x*) + ^c(x) = = (6 + j3)(cF(x*) + cs(x*)) + f c(x). Отсюда следует, что c(x) < (1 + e)(6 + j3)c(x*). Каждая итерация уменьшает стоимость решения не менее чем в ^— раз. Тогда после ~ 161^1 1 < 16|^| итераций стоимость уменьшится хотя бы в два раза (поскольку log х < х — 1 при 0 < л: < 1). Отсюда вытекает заявленная слабо полиномиальная оценка на время работы. ?
Упражнения 681 В частности, поскольку (л/41 + 7)/2 < 6,702, имеем приближенный алгоритм с точностью 6,702. Это приближение является наилучшим из известных на данный момент. Упражнения 1. Покажите, что при P = NP задача о fc-медианах (без ограничения на мет- ричность стоимостей обслуживания) не имеет приближенного алгоритма с константной погрешностью. 2. Рассмотрим экземпляр задачи о размещении предприятий без пропускных способностей. Докажите, что функция cs: 2^ -> R+ и {<»} супермодулярна, где cs{X) := ?j€^ miniGX ctj. 3. Рассмотрим следующую альтернативную формулировку задачи о размещении предприятий без пропускных способностей в терминах целочисленного программирования. Введем 0/1-переменные zs для каждой пары S€«?x29 и будем искать решение следующей задачи: минимизировать /J I ft + \] cij I zs S=(i,D)e&x2® ^ J^D при условиях 2^ ZS>1 (J' G &), S=(i,D)€^x2®:jGD ZSG{0,1} (SG^x2^). Рассмотрим естественную линейную релаксацию и двойственную к ней задачу. Покажите, как решить ее за полиномиальное время (несмотря на экспоненциальный размер). Покажите, что оптимум в ней такой же, как и в задачах (22.2) и (22.3). 4 (Шмойс, Тардош и Ардал [28]). Рассмотрим линейную релаксацию для простого частного случая метрической задачи о размещении предприятий с пропускными способностями, в которой каждое предприятие может обслуживать до и клиентов (и G N). Эта линейная программа получается добавлением к (22.2) ограничений вида у{ < 1 и J];-e^ xtj < uyt для всех i G ^. Покажите, что данный класс линейных программ имеет неограниченный зазор целочисленности, т. е. отношение стоимости оптимального целочисленного решения к оптимуму линейной программы может быть сколь угодно большим. 5. Рассмотрим задачу о размещении предприятий без пропускных способностей со следующим дополнительным свойством: с каждым клиентом j€^ связано требование d; > 0, а стоимости обслуживания на единицу требований метрические, т. е. d, + dj + d, ' dy для всех iyi' G & и j,j' G @. Модифицируйте приближенные алгоритмы для случая единичных пропускных способностей и покажите, что такие же оценки точности могут быть получены из указанного выше более общего случая.
682 Глава 22. Задача о размещении предприятий 6. Покажите, что задача (22.7) может быть эквивалентно переформулирована в виде линейной программы. 7 (Джайн и др. [17]). Рассмотрим линейную программу для поиска множителя (22.7) при YF = 1. Покажите, что точная верхняя грань оптимумов по всем d е N равна 2. 8. Рассмотрим экземпляр метрической задачи о размещении предприятий без пропускных способностей. Требуется найти такое подмножество ХС^; что сумма 2,/i + l,^ минимальна. Предложите для этой задачи приближенный алгоритм с константной точностью. Попробуйте получить погрешность меньше 3. 9. Скомбинируйте теоремы 22.3 и 22.10 и покажите, что алгоритм Джайна — Вазирани, объединенный с методами масштабирования и жадного увеличения, имеет погрешность 1,853. 10*. Задача о максимальном fc-покрытии формулируется следующим образом. Заданы система множеств (U, &) и натуральное число fc, и требуется найти такое подмножество 5? с &9 что \5?\ = к и | (J у\ максимально. Докажите, что естественный жадный алгоритм (итеративно выбирающий множество, покрывающее как можно больше новых элементов) является приближенным алгоритмом с точностью е/(е — 1) для задачи о максимальном fc-покрытии. 11 (Махдиан, Е и Чжан [25]). Покажите, что существует приближенный алгоритм с точностью 2 для метрической задачи о размещении предприятий с мягкими пропускными способностями. Указание. Скомбинируйте доказательство теоремы 22.22 с анализом алгоритма Dual Fitting; здесь оценка (22.6) может быть усилена. 12. Скомбинируйте алгоритм локальных улучшений (теорема 22.20) с методом дискретизации стоимостей (лемма 22.15), а также масштабированием и жадным увеличением (теорема 22.10). Получите в итоге для метрической задачи о размещении предприятий без пропускных способностей приближенный алгоритм с точностью 2,375. 13. Рассмотрим частный случай универсальной задачи о размещении предприятий, где функции стоимости ft линейные для всех i е &. Опишите для этого случая приближенный алгоритм с точностью 3. 14. Пусть а0, а1,...,агбМ+и при этом аг = тахГ=1 а{ и S := 21=о ai- Пока_ жите, что существует разбиение {2,..., r}=I0Ul1} для которого ak + Xfе/ ^ai ^^ для fc = 0,1. Указание. Отсортируйте список и возьмите каждый второй элемент. 15* (Чжан, Чэнь и Е [32]). Рассмотрим алгоритм локальных улучшений для метрической задачи о размещении предприятий с пропускными способностями, который в дополнение к алгоритму из § 22.8 имеет еще одну операцию. А именно, пусть он будет применять операцию Pivot для лесов, являющихся непересекающимися объединениями двух звезд. Можно доказать, что для данного частного случая рассматриваемая операция может быть реализована за
Литература 683 полиномиальное время. Покажите, что с помощью этой дополнительной операции можно получить погрешность 5,83. Указание. Модифицируйте доказательство леммы 22.28, используя эту новую операцию. Воспользуйтесь упражнением 14. 16. Рассмотрим частный случай задачи о размещении предприятий с мягкими пропускными способностями, в котором ограничения щ для каждого предприятия i равны 1 или 2. Покажите, что в этой задаче можно найти оптимум за полиномиальное время. Литература Общая литература [1] Cornuejols G., Nemhauser G.L., Wolsey, L.A. The uncapacitated facility location problem // Discrete Location Theory (P. B. Mirchandani, R. L. Francis, eds.), Wiley, New York, 1990. P. 119-171. [2] Shmoys D. B. Approximation algorithms for facility location problems. Proceedings of the 3rd International Workshop on Approximation Algorithms for Combinatorial Optimization (K. Jansen, S. Khuller, eds.), Springer, Berlin, 2000. (Lecture Notes in Comput. Sci.; Vol.1913). P. 27-33. [3] Vygen J. Approximation algorithms for facility location problems (lecture notes). Report No. 05950-OR, Research Institute for Discrete Mathematics, University of Bonn, 2005. Процитированные работы [4] Archer A., Rajagopalan R., Shmoys, D. B. Lagrangian relaxation for the fc-median problem: new insights and continuity properties // Algorithms — Proceedings of the 11th European Symposium on Algorithms (ESA) (G. di Battista, U. Zwick, eds.), Springer, Berlin, 2003. (Lecture Notes in Comput. Sci.; Vol. 2832). P. 31-42. [5] Arora S., Raghavan P., Rao S. Approximation schemes for Euclidean fc-medians and related problems // Proceedings of the 30th Annual ACM Symposium on Theory of Computing. 1998. P. 106-113. [6] Arya V., Garg N., Khandekar R., Meyerson A., Munagala K., Pandit V. Local search heuristics for /c-median and facility location problems // SIAM Journal on Computing. 2004. Vol.33. P.544-562. [7] Balinski M. L. Integer programming: methods, uses, computation // Management Science. 1965. Vol. 12. P. 253-313. [8] Balinski M. L., Wolfe P. On Benders decomposition and a plant location problem. Working paper ARO-27. Mathematica, Princeton, 1963. [9] Byrka J., Aardal K. The approximation gap for the metric facility location problem is not yet closed // Operations Research Letters. 2007. Vol. 35. P. 379-384. [10] Byrka J., Aardal K. An optimal bifactor approximation algorithm for the metric uncapacitated facility location problem // SIAM Journal on Computing. 2010. Vol. 39. P. 2212- 2231. [11] Charikar M., Guha S. Improved combinatorial algorithms for the facility location and k- median problems // SIAM Journal on Computing. 2005. Vol. 34. P. 803-824.
684 Глава 22. Задача о размещении предприятий [12] Charikar М., Guha S., Tardos Ё.у Shmoys D. В. A constant-factor approximation algorithm for the fc-median problem // Journal of Computer and System Sciences. 2002. Vol. 65. P. 129-149. [13] Chudak F.A., Shmoys D.B. Improved approximation algorithms for the uncapacitated facility location problem // SIAM Journal on Computing. 2003. Vol. 33. P. 1-25. [14] Feige U. A threshold of In n for the approximating set cover // Journal of the ACM. 1998. Vol.45. P.634-652. [15] Guha S., Khuller S. Greedy strikes back: improved facility location algorithms // Journal of Algorithms. 1999. Vol.31. P. 228-248. [16] Hochbaum D. S. Heuristics for the fixed cost median problem // Mathematical Programming. 1982. Vol.22. P. 148-162. [17] Jain K., Mahdian M., Markakis E., Saberi A., Vazirani V. V. Greedy facility location algorithms analyzed using dual fitting with factor-revealing LP // Journal of the ACM. 2003. Vol.50. P.795-824. [18] Jain K., Vazirani V. V. Approximation algorithms for metric facility location and /c-median problems using the primal-dual schema and Lagrangian relaxation // Journal of the ACM. 2001. Vol. 48. P. 274-296. [19] Kolliopoulos S. G., Rao S. A nearly linear-time approximation scheme for the Euclidean k- median problem // SIAM Journal on Computing. 2007. Vol. 37. P. 757-782. [20] Korupolu M., Plaxton C, Rajaraman, R. Analysis of a local search heuristic for facility location problems // Journal of Algorithms. 2000. Vol. 37. P. 146-188. [21] Kuehn A. A., Hamburger M. J. A heuristic program for locating warehouses // Management Science. 1963. Vol. 9. P. 643-666. [22] Levi R., Shmoys D. В., Swamy C. LP-based approximation algorithms for capacitated facility location // Integer Programming and Combinatorial Optimization; Proceedings of the 10th International IPCO Conference (G. Nemhauser, D. Bienstock, eds.), Springer, Berlin, 2004. (Lecture Notes in Comput. Sci.; Vol. 3064). P. 206-218; also in Mathematical Programming. Ser.A. 2012. Vol.131, №1-2. P. 365-379. [23] Li S. A 1.488-approximation algorithm for the uncapacitated facility location problem // Information and Computation. 2013. Vol.222. P.45-58. [24] Mahdian M., Pal M. Universal facility location // Algorithms — Proceedings of the 11th European Symposium on Algorithms (ESA) (G. di Battista, U. Zwick, eds.), Springer, Berlin, 2003. (Lecture Notes in Comput. Sci.; Vol.2832). P.409-421. [25] Mahdian M., Ye Y., Zhang J. Approximation algorithms for metric facility location problems // SIAM Journal on Computing. 2006. Vol. 36. P. 411-432. [26] ManneA. S. Plant location under economies-of-scale-decentralization and computation // Management Science. 1964. Vol. 11. P. 213-235. [27] Pal M., Tardos Ё., Wexler T. Facility location with nonuniform hard capacities // Proceedings of the 42nd Annual IEEE Symposium on the Foundations of Computer Science. 2001. P. 329-338. [28] Shmoys D. В., Tardos ?., Aardal K. Approximation algorithms for facility location problems // Proceedings of the 29th Annual ACM Symposium on Theory of Computing. 1997. P. 265-274. [29] Stollsteimer J. F. A working model for plant numbers and locations // Journal of Farm Economics. 1963. Vol.45. P.631-645.
Литература 685 [30] Sviridenko М. An improved approximation algorithm for the metric uncapacitated facility location problem // Integer Programming and Combinatorial Optimization; Proceedings of the 9th International IPCO Conference (W. Cook, A. Schulz, eds.), Springer, Berlin, 2002. (Lecture Notes in Comput. Sci.; Vol.2337). P.240-257. [31] Vygen J. From stars to comets: improved local search for universal facility location // Operations Research Letters. 2007. Vol.35. P.427-433. [32] Zhang J., Chen В., Ye Y. A multi-exchange local search algorithm for the capacitated facility location problem // Mathematics of Operations Research. 2005. Vol. 30. P. 389-403. [33] Zhang P. A new approximation algorithm for the fc-facility location problem // Theoretical Computer Science. 2007. Vol. 384. P. 126-135.
Список обозначений R (R+) множество (неотрицательных) вещественных чисел с собственное подмножество с подмножество или равное множество U объединение, части которого не пересекаются X Л Y симметрическая разность множеств X и Y \\х\\2 евклидова норма вектора х || х || о, максимальный модуль координат вектора х х mod у однозначно определенное число z, удовлетворяющее условиям 0 < я < у и (х — z)/y G Z х\ Ат результат транспонирования вектора х или матрицы А \х] наименьшее целое число, не меньшее х [х\ наибольшее целое число, не большее х f = 0(g) О-символика 19 / = ?l(g) ^-символика 19 / = ®(g) 0-символика 19 size(x) длина двоичной записи числа х; длина двоичной 21,97,417 строки числа х log х двоичный логарифм числа х 22 V(G) множество вершин графа G 30 E[G) множество ребер графа G 30 G[X] подграф графа G, индуцированный множеством 31 вершин X с V(G) G — u подграф графа G, индуцированный множеством 31 V(G)\M G—e граф, получающийся удалением ребра е из графа G 31 G 4- е граф, получающийся добавлением ребра е к графу G 31 G + H сумма графов G и Н 31 G/X граф, получающийся из G стягиванием множества 32 вершин X
Список обозначений 687 Е(Х, Y) множество ребер, соединяющих множества X \ Y 32 иУ\Х Е+[Х, Y) множество ориентированных ребер, идущих из 32 множества X \ Y в Y \ X 5(Х), 5(и) Е(Х, V(G) \ X), E({v], V(G) \ {и}) 32 Г(Х), Г(у) множество соседей множества вершин X или 32 вершины и 5+(Х), 5+(у) множество ребер, выходящих из множества X или 32 вершины и 5~(Х), 5~(v) множество ребер, входящих в множество X или 32 вершину v 2s семейство всех подмножеств множества S 33 Кп полный граф на п вершинах 33 Р^] х-у-фрагмент пути Р 34 dist(i>, w) длина кратчайшего и-ш-пути 34 c(F) SeeFс(е) (для заданной функции с: Е —> R 35 и подмножества FC?) Кпт полный двудольный граф с долями размера пит 53 cr{J, 0 количество пересечений многоугольника J с прямой I 55,614 G* граф, планарно двойственный к G 62 е* ребро графа G*, двойственное ребру е 62 хТу, ху скалярное произведение векторов х и у 72 х < у означает, что соответствующее неравенство 72 выполняется для векторов х и у покоординатно rank(A) ранг матрицы А 74 dimX размерность непустого множества X с Rn 74 J единичная матрица 77 е, j-и базисный вектор 77 Aj подматрица матрицы А, составленная из строк 78 матрицы А, номера которых лежат в J bj подвектор вектора Ь, составленный из координат 78 вектора Ь, номера которых лежат J 11 вектор, все координаты которого равны единице 82 AJ подматрица матрицы А, составленная из столбцов 82 матрицы А, номера которых лежат в J
688 Список обозначений conv(X) выпуклая оболочка векторов из множества X 90 det А определитель матрицы А 98 sgn(rc) знак перестановки п 98 Е(А, х) эллипсоид 107 В{х, г) шар с центром в точке х и радиусом г 107 (относительно евклидовой нормы) volume (X) объем непустого множества X с Rn 107 | |Л| | норма матрицы А 108 Х° поляра множества X 119 Р7 целочисленная оболочка полиэдра Р 126 2(A) максимум модулей определителей подматриц 128 матрицы А Р', P(l) первое и i-e сечения Хватала — Гомори полиэдра Р 143 LR{X) лагранжева релаксация 147 5 (Хг,..., Хр) мультиразрез 172 сп({х, у)) приведенная стоимость ребра (х, у) относительно 188 потенциалов п (G, с) метрическое замыкание множества (G, с) 189 ех^(v) разница между величинами входящего и выходящего 199 потоков в вершине v value (/) величина s-t-потока / 199 G орграф, получающийся из G добавлением обратных 201 ко всем ребрам е" ребро, обратное к ориентированному ребру е 201 Uf (е) остаточная пропускная способность ребра е 202 относительно потока / Gf остаточный граф относительного потока / 202 GLf послойный граф для Gf 209 Ast минимальная величина разреза, отделяющего 219 вершины s и t A(G) минимальная величина разреза в G 226 (реберная связность) r(G) максимальный размер паросочетания в G 272
Список обозначений 689 t(G) минимальный размер вершинного покрытия в G 272 TG(x) матрица Татта графа G, зависящая от вектора х 275 qG(X) количество нечетных компонент в графе G — X 278 a(G) максимальный размер независимого подмножества в G 297 ?(G) минимальный размер реберного покрытия в G 297 г(Х) ранг множества X в системе независимости 358 сг(Х) замыкание множества X в системе независимости 358 M{G) циклический матроид неориентированного графа G 360 р{Х) нижний ранг множества X в системе независимости 361 q(E, &) ранговое отношение системы независимости (Е, &) 361 С(Х, е) минимальный цикл в множестве X и {е} при X е&, 366 пустое множество при Хи{е} ?& (Е, &*) система, двойственная к системе независимости (Е, &) 367 Р(/) полиматроид для субмодулярной функции / 397 U пустой символ 417 {0,1}* множество всех двоичных строк 417 Р класс задач разрешения, для которых существуют 426 полиномиальные алгоритмы NP класс задач разрешения, в которых положительные 426 экземпляры (и только они) допускают полиномиально проверяемые сертификаты х отрицание литерала х 429 coNP класс дополнений к задачам из NP 440 ОРТ(х) значение оптимума для экземпляра х 443 А(х) значение, выдаваемое алгоритмом А для задачи 443 оптимизации со входом х largest(x) наибольшее число, встречающееся в экземпляре х 445 я(п) 1+| + |+---+? 456 X (G) хроматическое число графа G 471 co(G) максимальный размер клики в G 471 Ехр(Х) математическое ожидание случайной величины X 479 РгоЬ(Х) вероятность события X 479
690 Список обозначений SUM (J) сумма по всем элементам из / NF(/) выход алгоритма Next-Fit на входе J FF(J) выход алгоритма First-Fit на входе J FFD(J) выход алгоритма First-Fit-Decreasing на входе J Gt.,b) сдвинутая сетка Q(n) выпуклая оболочка характеристических векторов гамильтоновых циклов в Кп НК{Кп, с) оценка Хелда — Карпа для экземпляра задачи коммивояжера (Кп, с) cF(X), Ср(х) стоимость открытия предприятий для решения х cs{X), cs(x) стоимость обслуживания клиентов для решения х 515 518 518 519 613 626 633 647,670 648,670
Именной указатель А Авидор (Avidor, А.) 483 Агравал (Agrawal, А.) 581 Агравал (Agrawal, М) 442 Адлеман (Adleman, L. М.) 442 Айтаи (Ajtai, М.) 490 Аккерман (Ackermann, W.) 160, 164 Ализаде (Alizadeh, F.) 464 Альбрехт (Albrecht, С.) 195 Альт (Alt, Н.) 274 Андерсон (Anderson, I.) 279, 300 Ансти (Anstee, R.P.) 351 Анштрейхер (Anstreicher, К. М.) 148 Аосима (Aoshima, К.) 53 Аппель (Appel, К.) 473 Ардал (Aardal, К.) 647, 649, 659, 681 Аркин (Arkin, Е. М.) 266 Армстронг (Armstrong, R. D.) 262 Арора (Arora, S.) 485, 487, 549, 571, 612, 615, 617, 647 Артс (Aarts, Е.) 625 Арчер (Archer, А.) 661 Арья (Агуа, V.) 664, 666-668 Асадпур (Asadpour, А.) 638 Асано (Asano, Т.) 483 Аузьелло (Ausiello, G.) 485 Ауман (Aumann, Y.) 549 Axo(Aho,A.V.)24 Ахуджа (Ahujia, R. К.) 185, 214 Б БабенкоМ.А. 352 Базараа (Bazaraa, М. S.) 189 Балински (Balinski, M.L.) 331, 645, 648 Бансал (Bansal, N.) 529 Бар-Иегуда (Bar-Yehuda, R.) 458-460, 494 Барахона (Barahona, F.) 352, 354 Бейкер (Baker, В. S.) 520 Беккер (Becker, А.) 495 Беккер (Becker, М.) 558 Белларе (Bellare, М.) 483, 485 Беллман (Bellman, R. Е.) 183, 186, 188, 189, 191, 249, 506 Берж (Berge, С.) 39, 274, 279, 287, 288, 290, 298, 307, 330, 332, 470, 471 Беркович (Berkovitch, I.) 483 Берман (Berman, L.) 574 Берман (Berman, Р.) 493, 575, 578, 611 Берн (Bern, М.) 571 Бернулли (Bernoulli, J.) 561 Бертсимас (Bertsimas, D. J.) 569, 593 Бёш (Boesch, F.) 564 Бирка (Byrka, J.) 575, 659 Биркгофф (Birkhoff, G.) 307, 308, 331 Блэнд (Bland, R. G.) 79-81, 106 Блюм (Blum, M.) 504 Богвардт (Bogwardt, K.-H.) 81 Бойд (Boyd, E.A.) 147 Бойд (Boyd, S. C.) 631 Бок (Bock, F. C.) 167 Болл (Ball, M. O.) 326, 331 Боррадайль (Borradaile, G.) 229, 571 Борувка (Boruvka, O.) 156 Борчерс (Borchers, A.) 576 Брегман (Bregman, L. M.) 299 Брукс (Brooks, R. L.) 470 Брунс (Bruns, W.) 150 Бузакер (Busacker, R. G.) 248 Буркард (Burkard, R. E.) 308, 608 Бьенсток (Bienstock, D.) 544 Бьёрклунд (Bjorklund, A.) 573 В Вагнер (Wagner, D.) 558 Вагнер (Wagner, F.) 225, 226 Вагнер (Wagner, H. M.) 241 Вагнер (Wagner, K.) 59, 62 Вагнер (Wagner, R.A.) 571-573, 600 Вазирани (Vazirani, U.V.) 277, 549 Вазирани (Vazirani, V. V.) 234, 277, 295, 650, 651, 653, 660, 671, 682 Вайдья (Vaidya, P. M.) 121 ван дер Варден (van der Waerden, B. L.) 299 ван Флит (van Vliet, A.) 521 ван Эмде Боас (van Emde Boas, P.) 423
692 Именной указатель Варадараджан (Varadarajan, К. R.) 325 Варадараджан (Varadarajan, S.) 600 Вебер (Weber, G.M.) 326 Вейе (Weihe, К.) 229, 558 Вейль (Weyl, Н.) 89, 90 Вейнотт (Veinott, A. F.) 138, 599 Вейсмантель (Weismantel, R.) 266 Векслер (Wexler, Т.) 672, 673 Вемпала (Vempala, S.) 611 Ветта (Vetta, А.) 599 Вёгингер (Woeginger, G.J.) 264, 510, 607, 608, 637 Вигдерсон (Wigderson, А.) 496 Визинг (Vizing, V. G.) 468, 470, 475 Вилма (Vielma, J. P.) 143 Винтер (Winter, P.) 575 Вишкин (Vishkin, U.) 600 Воган (Vaughan, H. E.) 273 Воллан (Wollan, P.) 560 Вондрак (Vondrak, J.) 413 Ворм (Warme, D. M.) 575 Вулси (Wolsey, L.A.) 130, 148, 151, 177, 633 Вульф (Wolfe, P.) 79, 80, 645 Вульфф-Нильсен (Wulff-Nilsen, C.) 188 Г Габоу (Gabow, H. N.) 163, 168, 179, 225, 234, 325, 344, 381, 389, 584, 585, 588, 600, 601 Гаврил (Gavril, F.) 458 Галбиати (Galbiati, G.) 638 Галил (Galil, Z.) 163, 212 Галлаи (Gallai, T.) 203, 296, 297, 300, 310, 314 Гарг (Garg, N.) 541 Гасфилд (Gusfield, D.) 224 Гаусс (Gauss, C. F.) 102 Гач (Gacs, P.) 112 Гейгер (Geiger, D.) 495 Гейл (Gale, D.) 86, 239 Гене (Gens, G.V.) 508 Гилмор (Gilmore, P. C.) 525 Голдрейх (Goldreich, O.) 485 Гольдберг (Goldberg, A. V.) 187, 188, 194, 214, 217, 247, 266, 296, 351 Гольдфарб (Goldfarb, D.) 106 Гомори (Gomory, R. E.) 134, 143, 144, 147, 218-221, 224, 226, 232, 332, 348, 349, 354, 525, 583-585, 600, 601 Гонсалес (Gonzalez, T.) 606 Горовиц (Horowitz, E.) 530 Гоуэн (Gowen, P.J.) 248 Гоффен (Goffin, J.L.) 148 Грейвер (Graver, J. E.) 130 Грёпль (Gropl, C.) 581 Грётшель (Grotschel, M.) 102, 106, 108, 111, 114, 116, 119, 121, 266, 332, 402, 404, 473, 525-527, 530, 553, 626, 629-631 Григориадис (Grigoriadis, M. D.) 543 Грэхем (Graham, R. L.) 28, 530, 571, 612 Гуань (Guan, M.) 339 Гуила-Ури (Ghouila-Houri, A.) 140, 399 Гуманс (Goemans, M.X.) 121, 152, 461, 465, 480, 481, 483, 495, 569, 582, 584, 585, 588, 590, 592, 600, 601 Гурусвами (Guruswami, V.) 553 Гуха (Guha, S.) 646, 656, 659, 669 Гэри (Garey, M.R.) 28, 444, 458, 460, 510, 516, 519, 520, 571, 576, 612 Д Дадуш (Dadush, D.) 143 Дайал (Dial, R. B.) 194 Далмедж (Dulmage, A. L.) 298 Далхаус (Dahlhaus, E.) 234 Данциг (Dantzig, G. B.) 78-80, 138, 143, 203, 261, 503, 506, 625 Деза (Deza, M. M.) 496 Дей (Dey, S. S.) 143 Дейкстра (Dijkstra, E.W.) 160, 184, 185, 189, 194, 195, 250, 257, 266, 539, 541 Дейнеко (Deineko, V. G.) 608 Делл'Амико (DeirAmico, M.) 308 Делоне (Delaunay, B.) 176 Деригс (Derigs, U.) 326, 331 Дессуки (Dessouky, M. I.) 228 Джайлс (Giles, F. R.) 42, 133-135, 412, 413 Джайн (Jain, K.) 593-595, 598, 599, 602, 647, 650-653, 655, 660, 671, 682 Дженкинс (Jenkyns, T. A.) 361, 372 Джефрион (Geoffrion, A. M.) 148 Джилберт (Gilbert, E. N.) 574 Джилен (Geelen, J. F.) 277
Именной указатель 693 Джон (John, F.) 107 Джонсон (Johnson, D. В.) 185, 189 Джонсон (Johnson, D. S.) 28, 444, 455, 457, 458, 460, 480, 483, 510, 516, 519, 520, 531, 571, 576, 612, 634, 639 Джонсон (Johnson, Е. L.) 337, 342, 346, 351, 353 Джонсон (Johnson, S.) 143, 625 Джоти (Jothi, R.) 600 Джуэлл (Jewell, W. S.) 248 Дзамбелли (Zambelli, G.) 177 Диксон (Dixon, В.) 164 Дилворт (Dilworth, R. Р.) 297 Диниц, Е.А. 209, 210, 212, 231, 234 Динур (Dinur, I.) 458, 485 Дирак (Dirac, G. А.) 65 Дистель (Diestel, R.) 171 Дойг(Оо1&А.С)634 Доша (Dosa, G.) 520 Дрейфус (Dreyfus, S. Е.) 571-573, 600 Ду (Du, D.-Z.) 576 Е Е (Ye, Y.) 655, 658, 671, 672, 682 Егорычев, Г. П. 299 Елинек (Jelinek, F.) 219 Ж Жерар (Gerards, А.М.Н.) 351 3 Захариазен (Zachariasen, М.) 575 Зеликовский (Zelikovsky, A. Z.) 575, 578, 581 И Ибараки (Ibaraki, Т.) 225, 226, 234, 410, 551 Ибарра (Ibarra, О. Н.) 507, 508 Ивата (Iwata, S.) 277, 404, 408, 412 Ийенгар (Iyengar, G.) 544 Иосида (Yoshida, N.) 234 Ири (Iri, М.) 53, 248 Итаи (Itai, А.) 549 И Йенсен (Jensen, RM.) 411 К Каварабаяси (Kawarabayashi, К.) 560 Кайал (Kayal, N.) 442 Кале (Kale, S.) 549 Камидои (Kamidoi, Y.) 234 Камион (Camion, Р.) 66, 67 Кан (Kahn, А. В.) 49 Каннан (Kannan, R.) 147 Каннингем (Cunningham, W. Н.) 234, 261, 325, 326, 328, 381, 631 Капрара (Саргага, А.) 350, 529, 530 Каракостас (Karakostas, G.) 544 Каратеодори (Caratheodory, С.) 93, 150 Каргер (Karger, D.R.) 164, 225, 233 Карзанов, А. В. 49, 209, 210, 231, 234, 248, 274, 295, 296, 298, 346, 351, 352, 560 Карлофф (Karloff, Н.) 620 Кармаркар (Karmarkar, N.) 114, 525-528, 530, 531 Карп (Karp, R.M.) 114, 166, 168, 188, 191, 193, 207-209, 250, 251, 274, 295, 298, 429, 433-435, 437, 439, 505, 525-528, 530, 531, 553, 570, 612, 631-635, 637 Карпински (Karpinski, М.) 575, 611 Карр (Carr, R.) 631 Каски (Kaski, Р.) 573 Кейранн (Queyranne, М.) 227, 228, 408, 409, 529 Келлерер (Kellerer, Н.) 509 Келнер (Kelner, J. А.) 81 Кенион-Матьё (Kenyon-Mathieu, С.) 571 Керниган (Kernighan, B.W.) 621-624, 631, 639 Кёнеман (Konemann, J.) 541 Кёниг (Konig, D.) 46, 53, 151, 272, 273, 297, 330, 468 Ким (Kim, СЕ.) 507,508 Кинг (King, V.) 164, 214 Кларк (Clarke, M.R.B.) 511 Клейн (Klein, М.) 243, 244 Клейн (Klein, P.N.) 164, 229, 571, 581, 582, 619 Клейнберг (Kleinberg, J.) 563 Клементи (Clementi, A. E. F.) 494 Кли (Klee, V.) 81 Клинц (Klinz, B.) 264 Кнут (Knuth, D. E.) 49, 176, 465
694 Именной указатель Кобаяси (Kobayashi, Y.) 560 Кобхэм (Cobham, А.) 22 Койвисто (Koivisto, М.) 573 Коллиопулос (Kolliopoulos, S. G.) 647 Колмогоров (Kolmogorov, V.) 325 Конфорти (Conforti, М.) 177 Корнуэхолс (Cornuejols, G.) 177 Корст (Korst, J.) 625 Корте (Korte, В.) 160, 361, 372, 374, 389, 396, 411, 509, 510, 571 Кортзарц (Kortsarz, G.) 599 Коруполу (Korupolu, М.) 664, 672 Коу (Kou, L.) 574 Кох (Koch, J.) 473 Крамер (Cramer, G.) 99, 128, 132, 137, 140 Краскал (Kruskal, J. В.) 76, 137-139, 159, 168, 169, 176, 307, 372, 375, 395 Краудер (Crowder, Н.) 640 Краутгеймер (Krauthgamer, R.) 599 Крентель (Krentel, М. W.) 639 Крестен (Crestin, J. P.) 66 Кристофидес (Christofides, N.) 608, 609, 624 Крогдал (Krogdahl, S.) 389 Кук (Cook, S.A.) 429, 430, 433 Кук (Cook, W.J.) 128, 130, 136, 147, 150, 325, 624 Кумар (Kumar, M.P.) 211 Кун (Cuhn, H.W.) 86, 93, 274, 306, 331 Куратовский (Kuratowski, K.) 58-60, 62, 68 Кхот (Khot, S.) 458 Кэли (Cayley, A.) 158, 175 KK>H(Kuehn,A.A.)645 Л Лагергрен (Lagergren, J.) 490, 491 Ладнер (Ladner, R. E.) 442 Лампис (Lampis, M.) 611 Лассерр (Lasserre, J. B.) 131 Лау(Ьаи, L.C.)224, 475 Леви (Levi, R.) 672 Левин (Levin, A.) 151 Левин (Levine, M. S.) 225 Левнер (Levner, E.V.) 508 Лежандр (Legendre, A. M.) 57 Лейтон (Leighton, T.) 546, 547, 549, 562 Леман (Lehman, A.) 370 Ленстра (Lenstra, H.W.) 523 Ленстра (Lenstra, J. K.) 625 Летчфорд (Letchford, A. N.) 348, 349 Леунг (Leung, К. M.) 224 Левнер (Lowner, K.) 107 Ли (Lee, J. R.) 563,599 Ли (Lee, R.C.T.)637 Ли (Lee, S.) 659 Либерхер (Lieberher, K.) 496 Линиал (Linial, N.) 470, 549 Линь (Lin, S.) 621-624, 631, 639 Липтон (Lipton, R. J.) 325 Литтл (Little, J. D. C.) 634 Ловас (Lovasz, L.) 102, 106, 108, 111, 112, 114, 116, 119, 121, 174, 266, 276, 277, 280, 281, 290, 330, 331, 396, 402, 404, 411, 412, 455, 466, 471-473, 525-527, 530, 553 Лолер (Lawler, E. L.) 325, 385, 509, 530 Ломоносов, M. B. 234, 560 Лондон (London, E.) 549 Лоран (Laurent, M.) 496 Луккези (Lucchesi, С L.) 552, 553, 564 Льюис (Lewis, H. R.) 423 Льюис (Lewis, P. M.) 607 Лэнгли (Langley, R. W.) 189 Лэнд (Land, A. H.) 634 Лю (Liu, T.) 167 Люкер (Lueker, G. S.) 522-524, 528, 529 M Магнанти (Magnanti, T. L.) 177 Мадер (Mader, W.) 171, 226, 230 Маеда (Mayeda, W.) 219 МакГеох (McGeoch, L.A.) 634 МакКормик (McCormick, S. T.) 248 Малхотра (Malhotra, V.M.) 211 Манкрес (Munkres, J.) 306 Манн (Manne, A. S.) 645 Ману (Manu, K. S.) 179 Марковски (Markowsky, G.) 574 Мартелло (Martello, S.) 308 Мартин (Martin, A.) 571 Марш (Marsh, A. B.) 325, 326, 328, 336, 351 Матула (Manila, D. W.) 541 Матьё см. Кенион-Матьё
Именной указатель 695 Маффиоли (Maffioli, F.) 638 Махаджан (Mahajan, S.) 466, 483 Махдиан (Mahdian, М.) 655, 658, 669, 671-673, 682 Махешвари (Maheshwari, S.N.) 211, 217 Мацумото (Matsumoto, К.) 555 Мацуяма (Matsuyama, А.) 574 Мегиддо (Megiddo, N.) 193 Мейер (Meyer, R. R.) 126, 127 Мелконян (Melkonian, V.) 599 Мельхорн (Mehlhorn, К.) 217, 325, 558, 574 Менгер (Menger, К.) 200, 204-206, 229, 233, 272, 353, 534, 538, 551 Мендельсон (Mendelsohn, N. S.) 298 Миддендорф (Middendorf, М.) 555 Микали (Micali, S.) 295 Милкова (Milkova, Е.) 156 Минковский (Minkowski, Н.) 77, 89, 90 Минти (Minty, G.J.) 37, 81 Миррокни (Mirrokni, V. S.) 413 Митчелл (Mitchell, J.) 612 Михелс (Michiels, W.) 625 Мозес (Mozes, S.) 188 Монж (Monge, G.) 305 Монма (Monma, C. L.) 372, 374, 599 Мотвани (Motwani, R.) 274, 638 Моцкин (Motzkin, T. S.) 93 Мулмулей (Mulmuley, K.) 277 Myp (Moore, E. F.) 46, 186, 188, 189, 191, 249, 574 Муча (Mucha, M.) 277 Мюллер (Muller, D.) 544 H Наамад (Naamad, A.) 212 Нагамочи (Nagamochi, H.) 225, 226, 234, 410 Нагараджан (Nagarajan, V.) 597 Наддеф (Naddef, D.) 332, 637 Нейвз (Naves, G.) 558 Немировский, A. C. 106 Немхаузер (Nemhauser, G.L.) 151, 494 Нешетршил (Nesetril, J.) 156, 160 Нешетршилова (Nesetrilova, H.) 156 Николе (Nicholls, W.) 176 Нисидзеки (Nishizeki, T.) 555, 565 Ноллес (Nolles, W.) 637 Нэш-Вильямс (Nash-Williams, C. S. J. A.) 171, 172, 174, 381, 551, 564 О Окамура (Okamura, H.) 555, 556, 563, 564 Орден (Orden, A.) 79, 80, 241 Ope (Ore, O.) 264 Орлин (Orlin, J.B.) 185, 195, 214, 225, 252-254, 256, 257, 262, 266, 447 П Падберг (Padberg, M.W.) 114, 348-350, 626, 629, 631, 640 Пал (Pal, M.) 669, 672, 673 Паннен (Punnen, A. P.) 447 Пападимитриу (Papadimitriou, C.H.) 114, 423, 436, 449, 451, 457, 466, 477, 488-491, 493, 497, 517, 609, 611, 612, 625, 631, 639, 640 Петерсен (Petersen, J.) 274, 300, 593, 594, 602 Петти (Pettie, S.) 163, 186, 189 Пизинджер (Pisinger, D.) 507 Пикар (Picard, J.-C.) 228 Плакстон (Plaxton, C.) 664, 672 Пламмер (Plummer, M. D.) 281, 290 Плассман (Plassmann, P.) 571 Плоткин (Plotkin, S.A.) 254, 255, 262, 529 Покутта (Pokutta, S.) 152 Поллак (Pollak, H. O.) 574 Поляк, Б. Т. 148, 551 Померанс (Pomerance, С.) 442 Пратт (Pratt, V.) 442 Предель (Pradel, L.) 529 Прёмель (Promel, Н. J.) 485, 571, 575 Прим (Prim, R. С.) 160, 161, 163, 164, 176, 184, 395 Прюфер (Priifer, Н.) 175 Пуллибланк (Pulleyblank, W. R.) 135, 332, 337, 630, 631 Пфейффер (Pfeiffer, F.) 555 Пферши (Pferschy, U.) 509 P Рабани (Rabani, Y.) 549 Рабин (Rabin, M. O.) 277
696 Именной указатель Рабинович (Rabinovich, Y.) 549 Рави (Ravi, R.) 581, 582, 597 Рагхаван (Raghavan, Р.) 481, 561, 647 Рагхавачари (Raghavachari, В.) 474, 600 Радакришнан (Radhakrishnan, J.) 493 Раджагопалан (Rajagopalan, R.) 661 Раджараман (Rajaraman, R.) 664, 672 Радзик (Radzik, Т.) 193 Радке (Radke, К.) 544 Радо (Rado, R.) 373, 375, 376, 389 Раз (Raz, R.) 456 Рамайер (Ramaiyer, V.) 575, 578 Раман (Raman, R.) 185 Рамачандран (Ramachandran, V.) 163,186 Рамеш (Ramesh, H.) 466, 483 Pao (Rao, A.) 638 Pao (Rao, M.R.) 114, 348-350 Pao (Rao, S.) 214, 234, 546, 547, 549, 562, 619, 647 Payx (Rauch, M.) 164 Регев (Regev, O.) 458 Редей (Redei, L.) 67 Рейнельт (Reinelt, G.) 348, 349 Реке (Racke, H.) 562 Рёглин (Roglin, H.) 620 Рек (Rock, H.) 412 Рид (Reed, B.A.) 560 Рицци (Rizzi, R.) 297, 354, 410 Роббинс (Robbins, H. E.) 67, 564 Робертсон (Robertson, N.) 67, 69, 474, 560, 565 Робине (Robins, G.) 575, 578, 581 Розенкранц (Rosenkrantz, D. J.) 607 Ротберг (Rothberg, E. E.) 634 Ротфосс (Rothvofi, T.) 152 Ротшильд (Rothschild, B.) 559 Роуз (Rose, D. J.) 233 Роэ (Rohe, A.) 325, 624 Румели (Rumely, R. S.) 442 С Сайто (Saito, N.) 555 Саксена (Saxena, N.) 442 Сандерс (Sanders, P.) 476 Санита (Sanita, L.) 152 Санковски (Sankowski, P.) 277 Сафра (Safra, S.) 456, 458, 470, 485 Сахни (Sahni, S.) 507, 530, 606 Свами (Swamy, C.) 672 Свириденко (Sviridenko, M.) 646, 649, 659 Себе (Sebo, A.) 150, 345, 555, 560 Сегеди (Szegedy, B.) 300 Сегеди (Szegedy, C.) 300 Сейден (Seiden, S. S.) 521 Сеймур (Seymour, P. D.) 67, 69, 142, 344, 388, 555, 556, 560, 563-565 Сигети (Szigeti, Z.) 300 Сильверберг (Silverberg, E. B.) 266 Сильвестр (Sylvester, J. J.) 158 Симчи-Леви (Simchi-Levi, D.) 519 Сингх (Singh, M.) 475, 597, 638 Скрейвер (Schrijver, A.) 90, 102, 106, 108, 111, 114, 116, 119, 121, 136, 142-145, 147, 150, 299, 330, 351, 402, 404, 405, 413, 473, 525-527, 530, 553 Скутелла (Skutella, M.) 152, 264 Славик (Slavik P.) 456 Слитор (Sleator, D. D.) 212, 214 Смит (Smith, W.D.) 619 Спекер (Specker, E.) 496 Спенсер (Spencer, T.) 163 Стейглиц (Steiglitz, K.) 436, 457, 625, 640 Стирлинг (Stirling, J.) 18 Стирнс (Stearns, R. E.) 607 Стокмейер (Stockmeyer, L.) 444, 460, 467 Столлстеймер (Stollsteimer, J. F.) 645 Cy(Su,X.Y.)230 Судан (Sudan, M.) 483, 485 Ckm(Hsu,W.L.)494 Сюй (Xu, Y.) 381 Ся (Xia, B.) 519 T Такаяси (Takahashi, M.) 574 Такер (Tucker, A. W.) 86 Танг (Tang, L.) 234 Тань (Tan, Z.) 519 Тарджан (Tarjan, R. E.) 49, 62, 160, 162-164, 176, 185, 212, 214, 217, 229, 231, 247, 266, 325 Тардош (Tardos, Ё.) 114, 247, 254, 255, 262, 264, 389, 529, 564, 599, 647, 649, 672, 673, 681
Именной указатель 697 Татт (Tutte, W.T.) 57, 58, 171, 172, 274-280, 290, 300, 307, 330, 332, 339, 351 Тейс (Theis, D. О.) 348, 349 Тео (Тео, С.) 569, 593 Тиндел (Tindell, R.) 564 Товей (Tovey, С.) 620 Тодд (Todd, M.J.) 106 Толстой, А. Н. 243 Томассен (Thomassen, С.) 55, 58, 60 Томидзава (Tomizawa, N.) 250 Томпсон (Thompson, С. D.) 481, 561 Торуп (Thorup, М.) 185, 234 Тревизан (Trevisan, L.) 494, 497 Триш (Triesch, Е.) 637 Тунчел (Tuned, L.) 217 Тьюринг (Turing, А. М.) 416-420, 422-426, 429, 430, 447^49 Тэн (Teng, S.) 81 У Уиллард (Willard, D.E.) 164, 185 Уилли (Wyllie, J.) 551 Уильямсон (Williamson, D. P.) 461, 465, 480, 481, 483, 582, 584, 585, 588-590, 592, 599-601, 634 Уинстон (Whinston, A.) 559 Уитни (Whitney, H.) 50, 65, 69, 205, 367, 368 Ульман (Ullman, J. D.) 24, 423 Уоршолл (Warshall, S.) 190, 191, 195 Ф Файнштейн (Feinstein, A.) 203 Фаликман (Falikman, D. I.) 299 Фалкерсон (Fulkerson, D. R.) 134, 143, 170, 202, 203, 207, 227, 229, 242, 243, 249, 263, 264, 274, 297, 370, 389, 472, 539, 558, 601, 625 Фаркаш (Farkas, G.) 89, 90, 113, 132 Федер (Feder, T.) 274 Фейге (Feige, U.) 413, 456, 483, 485, 486, 495, 563, 638, 659 Фернандес де ла Bera (Fernandez de la Vega, W.) 522-524, 528, 529 Фернандес-Бака (Fernandez-Baca, D.) 490, 491 Фёкинг (Vocking, B.) 620 Фиген (Vygen, J.) 231, 257, 406, 504, 544, 551, 555, 563, 565, 573, 637, 647, 659, 672, 675, 680 Филлипс (Phillips, S.) 228 Фиорини (Fiorini, S.) 631 Фискетти (Fischetti, M.) 350 Флейшер (Fleischer, L. K.) 264, 404, 412, 543, 599 Флойд (Floyd, R.W.) 190, 191, 195 фон Нейман (von Neumann, J.) 86, 307, 308, 331 Фонлупт (Fonlupt, J.) 150 Форд (Ford, L.R.) 186, 188, 189, 191, 202, 203, 207, 227, 229, 242, 243, 249, 263, 264, 274, 539, 558, 601 Форчун (Fortune, S.) 176, 551 Франк (Frank, A.) 114, 174, 179, 225, 233, 234, 377, 383, 385, 389, 400, 411, 553, 558, 564, 638 Фредман (Fredman, M. L.) 162-164, 185 Фремут-Пегер (Fremuth-Paeger, C.) 296 Фриз (Frieze, A.M.) 511, 638 Фризен (Friesen, D. K.) 480 Фробениус (Frobenius, G.) 273, 279 Фуджисиге (Fujishige, S.) 174, 209, 212, 213, 231, 404, 409, 412 Фуджито (Fujito, T.) 493 Фукс (Fuchs, B.) 573 Фурье (Fourier, J. B. J.) 93 Фэн (Feng, Q.) 576 Фюрер (Ftirer, M.) 423, 474 X Хазан (Hazan, E.) 549 Хакен (Haken, W.) 473 Халдорссон (Halldorsson, M. M.) 493 Халмош (Halmos, P. R.) 273 Хамбургер (Hamburger, M. J.) 645 Ханан (Hanan, M.) 571 Ханна (Khanna, S.) 470, 563, 599 Хансен (Hansen, M. D.) 562 Хань (Han, Y.) 28 Xao (Hao, J.) 225 Харвей (Harvey, W.) 147 Харрелсон (Harrelson, C.) 194 Хассин (Hassin, R.) 265 Хаусман (Hausmann, D.) 361, 372, 389 Хачиян, Л. Г. 106, 112, 113, 426, 528, 543
698 Именной указатель Хванг (Hwang, F.K.) 575 Хванг (Hwang, R. Z.) 637 Хватал (Chvatal, V.) 81, 134, 143, 147, 332, 455, 456, 472, 629 Хелд (Held, М.) 632-635, 637 Хельсгаун (Helsgaun, К.) 624 Хензингер (Henzinger, М. R.) 185, 234 Хетцель (Hetzel, А.) 571 Хивуд (Heawood, P. J.) 474 Хинчин, А. Я. 102 Хираи (Hirai, Н.) 560 Хирхольцер (Hierholzer, С.) 51 Хичкок (Hitchcock, F. L.) 241 Хлебик (Chlebfk, М.) 494, 575 Хлебикова (Chlebikova, J.) 494, 575 Хой (Hoey, D.) 176 Холецкий (Cholesky, A.-L.) 122, 462, 464 Холл (Hall, Р.) 272, 273, 298 Хольер (Holyer, I.) 467 Хопкрофт (Hopcroft, J. Е.) 24, 62, 274, 295, 298, 423, 551 Хопп (Норре, В.) 264 Хостад (Hastad, J.) 466, 485, 487, 495 Хоффман (Hoffman, A. J.) 76, 133, 137-139, 228, 264, 307 Хохбаум (Hochbaum, D. S.) 151, 459, 494, 530, 647 Ху (Ни, Т. С.) 218-221, 224, 226, 229, 232, 348, 349, 354, 564, 583-585, 600, 601 Хугарди (Hougardy, S.) 191, 485, 575 Хуллер (Khuller, S.) 600, 646, 659 Хуркенс (Hurkens, C.A.J.) 607 Хусфельдт (Husfeldt, Т.) 573 Хэдлок (Hadlock, F.) 352 ц Цвик (Zwick, U.) 189, 483 Цзинь (Jin, Z.) 262 Циглер (Ziegler, G. М.) 266 Циммерман (Zimmermann, U.) 412 Цукерман (Zuckerman, D.) 470, 486 ч Чакраборти (Chakraborti, Т.) 599 Чандра (Chandra, В.) 620 Чань(СЬап, Т.М.) 189 Чарикар (Charikar, М.) 563, 656, 662, 669 Чекури (Chekuri, С.) 563 Черитон (Cheriton, D.) 164 Чериян (Cheriyan, J.) 217, 599 Черкасский (Cherkassky, B.V.) 188, 212 Чёрч (Church, А.) 419 Чжан (Chang, R. С.) 637 Чжан (Zhang, G.) 529 Чжан (Zhang, J.) 655, 658, 671, 672, 682 Чжан (Zhang, P.) 663 Чжан (Zhang, Y.) 576 Чжоу (Zhou, H.) 176 Чжоу (Zhou, X.) 565 Чжэн (Zheng, H.) 480 Чу (Chu, Y.) 167 Чудак (Chudak, F.A.) 544, 649 Чудновская (Chudnovsky, M.) 471 Чужой (Chuzhoy, J.) 599 Чунг (Cheung, H.Y.) 224 Чунг (Cheung, K.K.H.) 234 Чэнь (Chen, B.) 672, 682 Чэнь (Chen, J.) 480 Ш Шазель (Chazelle, B.) 164 Шалазани (Chalasani, P.) 638 Шамир (Shamir, A.) 549 Шахроки (Shahrokhi, F.) 541 Шварц (Schwarz, U. M.) 529 Шверцлер (Schwarzler, W.) 558 Шеймос (Shamos, M.I.) 176 Шеннон (Shannon, С. E.) 203 Шеной (Shenoy, N.) 176 Шерман (Sherman, J.) 549 Шефер (Schafer, G.) 325 Шеффлер (Scheffler, P.) 565 Шёнхаге (Schonhage, A.) 423 Шилоах (Shiloach, Y.) 212, 230 Шиура (Shioura, A.) 213 Шмид (Schmied, R.) 611 Шмойс (Shmoys, D.B.) 494, 529, 530, 541, 549, 634, 647-649, 661, 672, 681 Шор (Shor, N. Z.) 106 Шпернер (Sperner, E.) 297 Шпильман (Spielman, D. A.) 81 Шрадер (Schrader, R.) 396, 509, 510 Штегер (Steger, A.) 485, 571 Штейн (Stein, C.) 233 Штейниц (Steinitz, E.) 90, 123 Штёр (Stoer, M.) 225, 226
Именной указатель 699 Штойрер (Steurer, D.) 476 Штрассен (Strassen, V.) 423 Шульц (Schulz, A. S.) 152, 266, 447 Шухман (Choukhmane, Е.) 574 э Эвен (Even, S.) 231, 458-460, 549 Эгервари (Egervary, Е.) 330 Эдмондс (Edmonds, J.) 22, 42, 105, 122, 133, 134, 166-168, 170, 171, 173, 177, 188, 207-209, 250, 251, 272, 274, 277, 287, 289, 293, 295, 296, 300, 304, 308-311, 314, 325-327, 336, 337, 342, 346, 351, 353, 373-378, 380, 382, 383, 385, 389, 397^00, 411^13, 441 Эйвис (Avis, D.) 81 Эйземан (Eisemann, К.) 521 Эйзенбранд (Eisenbrand, F.) 147, 152 Эйлер (Euler, L.) 30, 50, 51, 57, 62, 63, 68, 340, 368, 615 Элеутерио (Eleuterio, V.) 544 Элиас (Elias, P.) 203 Энглерт (Englert, M.) 620 Эпплгейт (Applegate, D.) 624, 634, 637, 640 Эрдёш (Erdos, P.) 300, 497 Эриксон (Erickson, R. E.) 599 Ю Юдин, Д. Б. 106 Юнгер (Junger, М.) 637 Юнгникель (Jungnickel, D.) 296 Юэ (Yue, М.) 520 Я Янг (Young, N.) 541 Янгер (Younger, D. Н.) 552, 553, 564 Яннакакис (Yannakakis, М.) 234, 354, 451, 466, 477, 480, 488, 489, 491, 493, 497, 609, 611, 639 Янсен (Jansen, К.) 529 Ярник (Jarnik, V.) 160
Предметный указатель е-Dominance (задача об е-доминанте) 509 е-доминирование 509 у-экспандер 490 0-1-строка 27, 417 1-дерево 632 2-паросочетание простое 629, 636 — совершенное простое 335 2-полиматроид 412 2-реберно связный граф 67 2-связный граф 50 2Sat 433, 449 3-Dimensional Matching (задача о трехмерном паросочетании, 3DM) 437 3-Matroid Intersection (задача о пересечении трех матроидов) 450 3-Occurrence Sat 449 3-Opt 624 3-разрез 172, 234 3-связный граф 58 — планарный граф 123 3DM 437 3Sat (задача 3-выполнимости) 432 А All Pairs Shortest Paths (задача о кратчайших путях между всеми парами вершин) 189, 190 Another Hamiltonian Circuit (задача о втором гамильтоновом цикле) 639 Arora's Algorithm (алгоритм Ароры) 617 В Ь-паросочетание 335, 336 — простое 335 — совершенное 335, 339 Ь-поток 239, 240 — связанный с остовной структурой 259 Ь-фактор 335 Bar-Yehuda—Even Algorithm (алгоритм Бар-Иегуды — Эвена) 458 Best-In Greedy (жадный алгоритм включения наилучших элементов) 371 BFS 46, 47, 49, 184, 384 Bin Packing (задача об упаковке в контейнеры) 515 BlossomPath (путь в соцветии) 312, 313 Branch-And-Bound (метод ветвей и границ) 634, 636 С Cancel Minimum Mean Cycles (алгоритм сокращения вдоль минимальных средних циклов) 245 Capacity Scaling Max Flow (алгоритм масштабирования пропускных способностей) 251 Chinese Postman (задача китайского почтальона) 450 Christofides' Algorithm (алгоритм Кристофидеса) 609 Clique (задача о клике) 434, 450 coNP 440 coNP-полная задача 440 Continued Fraction Expansion (алгоритм разложения в цепную дробь) 101 СРМ 229 D DFS 46, 47, 49, 299 Dijkstra's Algorithm (алгоритм Дейкстры) 184 Dinic's Algorithm (алгоритм Диница) 209 Directed Hamiltoian С1гсик(задача об ориентированном гамильтоновом цикле) 450 — Minimum Mean Cycle (задача о минимальном среднем цикле в орграфе) 191 — Multicommodity Flow (ориентированная задача о многопродуктовом потоке) 533
Предметный указатель 701 Disjoint Paths (задача о непересекающихся путях) 206 Double-Tree (двойное дерево) 608, 638 Dreyfus—Wagner Algorithm (алгоритм Дрейфуса—Вагнера) 572, 600 Drilling (задача о сверлении) 16 Dual Fitting (алгоритм двойственного подбора) 652, 658 Dynamic Programming Knapsack (алгоритм динамического программирования для задачи о рюкзаке) 506, 508 Е Ear Decomposition (алгоритм построения ушной декомпозиции) 282 Edge Coloring (задача о реберной раскраске) 467 Edmonds Matroid Intersection (алгоритм Эдмондса пересечения матроидов) 380 Edmonds' Branching Algorithm (алгоритм Эдмондса поиска оптимального ветвления) 166 — Cardinality Matching Algorithm (алгоритм Эдмондса поиска максимального паросочетания) 292 Edmonds—Karp Max Flow (алгоритм Эдмондса—Карпа для максимального потока) 207 Ellipsoid (метод эллипсоидов) 108, 116 Euclid GCD (алгоритм Евклида) 100 Euclidean TSP (евклидова задача коммивояжера) 612 Euler's Algorithm (алгоритм Эйлера) 51 F /-увеличивающий путь 203 — цикл 242, 243 Fernandez-de-la-Vega—Lueker Algorithm (алгоритм Фернандеса де ла Веги—Люкера) 523 First Fit («первый подходящий») 519, 529 in Decreasing Order («первый подходящий в порядке убывания») 519, 520, 529 Floyd—Warshall Algorithm (алгоритм Флойда—Уоршолла) 190 Ford — Fulkerson Max Flow (алгоритм Форда—Фалкерсона) 202 FPAS 476 FPTAS 476 Fractional Knapsack (дробная задача о рюкзаке) 502 Fujishige's Algorithm (алгоритм Фуджисиге) 212 G Gaussian Elimination (алгоритм исключения Гаусса) 103 Generalized Sparsest Cut (обобщенная задача о наиболее разреженном разрезе) 544 Goemans—Williamson Algorithm Max Cut (алгоритм Гуманса—Уильямсона для задачи о максимальном разрезе) 465 Max-Sat (алгоритм Гуманса—Уильямсона для задачи о максимальной выполнимости) 481 Gomory—Ни Algorithm (алгоритм Гомори—Ху) 221 Graph Scanning (алгоритм сканирования графа) 43 Greedoid Greedy (алгоритм жадный для гридоида) 395 Greedy Coloring (алгоритм жадный для задачи о раскраске) 470, 496 — Set Cover (алгоритм жадный для задачи о покрытии множества) 455, 456 — Vertex Cover (алгоритм жадный для задачи о вершинном покрытии) 457 Grotschel — Lovasz — Schrijver Algorithm (алгоритм Грётшела—Ловаса— Скрейвера) 116 н Hamiltonian Circuit (задача о гамильтоновом цикле) 425, 427, 435, 450 Hitchcock (задача Хичкока) 241
702 Предметный указатель I Independence System Maximization (задача максимизации для системы независимости) 358 Minimization (задача минимизации для системы независимости) 358 Integer Linear Inequalities (задача о целочисленных линейных неравенствах) 426, 427, 440 — Programming (целочисленное программирование) 125, 425, 446, 447 J Jain's Algorithm (алгоритм Джайна) 598 Jain—Vazirani Algorithm (алгоритм Джайна—Вазирани) 650 Job Assignment (задача о назначении работ) 17 Johnson's Max-Sat Algorithm (алгоритм Джонсона для задачи о максимальной выполнимости) 479 К K-th Heaviest Subset (задача о к-м по весу подмножестве) 451 fc-Opt Algorithm (алгоритм локальных улучшений для задачи коммивояжера) 619-621 ^-ограниченное дерево Штейнера 575 fc-оптимальный гамильтонов цикл 620 fc-приближенный алгоритм 454 асимптотический 476 /с-реберно связный граф 49, 205 подграф 581 fc-регулярный граф 32 fc-связный граф 49, 206 К33 58, 62 К5 58, 62 Knapsack (задача о рюкзаке) 359, 502 — Approximation Scheme (схема приближения для задачи о рюкзаке) 508 Kou—Markowsky—Berman Algorithm (алгоритм Коу—Марковски—Бермана) 5 74 KruscaTs Algorithm (алгоритм Краскала) 159 L L-сведение 488, 489, 571, 609 L-сводимость 488 ^-расстояние 16 ?п -расстояние 16 Lin—Kernighan (алгоритм Линя — Кернигана) 622 Linear Inequalities (задача о линейных неравенствах) 426, 441 — Programming (задача линейного программирования) 72, 425, 441 м m-Dimensional Knapsack (m-мерная задача о рюкзаке) 510 М-увеличивающий путь 274, 298 М-чередующаяся ушная декомпозиция 281-284 М-чередующийся путь 274 Matroid Intersection (задача пересечения матроидов) 377 — Partition (задача разбиения матроидов) 381 Max Cut (задача о максимальном разрезе) 465 — Flow (задача о максимальном потоке) 199 Over Time (задача о максимальном потоке во времени) 262 Max-2Sat (задача о максимальной 2-выполнимости) 444, 497 Мах-3, (задача о максимальной 3, 489, 491, 492 Мах-3 Sat (задача о максимальной 3-выполнимости) 483, 486, 487, 489 Max-Cut (задача о разрезе максимального веса) 460 Max-Sat (задача о максимальной выполнимости) 478, 480, 481, 483 Maximum Matching (задача о максимальном паросочетании) 271 — Multicommodity Flow (задача о максимальном многопродуктовом потоке) 540 — Weight b-Matching (задача о Ь-паросочетании максимального веса) 336
Предметный указатель 703 Maximum Weight Branching (задача о ветвлении максимального веса) 164, 359 Forest (задача о лесе максимального веса) 157, 359 Matching (задача о взвешенных паросочетаниях) 304 (— о паросочетании максимального веса) 359 Stable Set (задача о независимом подмножестве максимального веса) 358 MAXSNP 489 MAXSNP-трудностъ 489, 491, 493, 497, 571, 599, 609, 611 Merge-Sort (алгоритм сортировки слиянием) 26 Metric TSP (метрическая задача коммивояжера) 607, 608 MFMC-отношение 545, 549, 562 MFMC-свойство 369, 370, 388 Min Cost Flow (задача о потоке минимальной стоимости) 240 — Cut (задача о минимальном разрезе) 218 Minimum Capacity Г-Cut (задача о минимальном Г-разрезе) 347 — Mean Cycle (алгоритм поиска минимального среднего цикла) 192, 196 — Spanning Tree (задача о минимальном остовном дереве) 157, 359 — Weight T-Join (задача о Г-соединении минимального веса) 340 Arborescence (задача об ориентированном дереве минимального веса) 164 Perfect Matching (задача о взвешенных совершенных паросочетаниях) 304, 316 Rooted Arborescence (задача о корневом ориентированном дереве минимального веса) 164 Set Cover (задача о минимальном взвешенном покрытии множества) 455 Moore—Bellman—Ford Algorithm (алгоритм Мура—Беллмана—Форда) 186 Multicommodity Flow Approximation Scheme (схема приближения для задачи о мультипотоке) 541 N Network Simplex (сетевой симплекс-метод) 260 Next Fit («следующий подходящий») 518 NP (класс) 426, 428, 449, 485 NP-задача оптимизации 443 NP-полная задача 429, 430, 432 NP-простая задача 442, 443 NP-трудная задача 442 NP-трудность сильная 510 NP-эквивалентная задача 442, 443 о О-символика 19 Orlin's Algorithm (алгоритм Орлина) 253 Р Р (класс) 426 Partition (задача о разбиении) 439, 445 Path Enumeration (алгоритм перебора путей) 18, 20 PCPQog п, 1)484, 485 РСР-теорема 485 PERT 229 PLS 639 Polymatroid Greedy (алгоритм жадный для полиматроида) 397, 398 Prim's Algorithm (алгоритм Прима) 161 Primal-Dual Network Design (прямо-двойственный алгоритм для задачи о проектировании сети) 587, 588, 592 Prime (задача о простом числе) 441, 442 PTAS 476 Push-Relabel (алгоритм проталкивания-переоценки) 214, 215, 217, 225, 231, 232, 266 R г-разрез 37 RAM-машина 423, 447
704 Предметный указатель Restricted Hamiltonian Circuit (задача об ограниченном гамильтоновом цикле) 624 Robins — Zelikovsky Algorithm (алгоритм Робинса—Зеликовского) 578 S s-t-поток 199, 203 — во времени 262 s-t-предпоток 210, 231 s-Мгуть 372 s-t-разрез 37, 201, 203, 228, 586 Satisfiability (задача выполнимости) 430 Schrijver's Algorithm (алгоритм Скрейвера) 404 Selection (задача о к-й порядковой статистике) 503 Separation (задача отделения) 115 Shmoys—Tardos—Aardal Algorithm (алгоритм Шмойса—Тардош—Ардал) 649 Shortest Path (задача о кратчайшем пути) 182, 358, 450 Simplex (симплекс-метод) 79, 80 Stable Set (задача о независимом множестве) 433 Steiner Tree (задача о дереве Штейнера) 359, 570 Strongly Connected Components (алгоритм поиска сильно связных компонент) 47-49 Submodular Function Minimization (задача минимизации субмодулярной функции) 401 Subset Sum (задача о подмножестве с заданной суммой) 439, 445 Successive Shortest Path (алгоритм последовательного увеличения вдоль кратчайших путей) 249 Survivable Network Design (задача о проектировании «живучей» сети) 569 т Г-разрез 344, 354 Г-соединение 340, 341, 344, 353, 371 TDI-система 134-137, 139, 150, 169, 328, 330, 398, 413, 496, 564 Travelling Salesman (задача коммивояжера, TSP) 358, 446 TreePath (путь в дереве) 313, 322 TSP Facets (задача о распознавании фасет для политопа коммивояжера) 631 U Uncapacitated Facility Location (задача о размещении предприятий без пропускных способностей) 646 Undirected Multicommodity Flow (неориентированная задача о многопродуктовом потоке) 534 Universal Facility Location (универсальная задача о размещении предприятий) 670 Update (обновить) 315, 316 V Vertex Coloring (задача о вершинной раскраске) 467 — Cover (задача о вершинном покрытии) 434 W Weak Optimization (слабая задача оптимизации) 115 — Separation (слабая задача отделения) 115 Weighted Matching (алгоритм поиска взвешенного паросочетания) 316, 326, 327, 331 — Matroid Intersection (алгоритм взвешенного пересечения матроидов) 383 (задача о взвешенном пересечении матроидов) 383 — Median (алгоритм поиска взвешенной медианы) 504 (задача о взвешенной медиане) 503 Worst-Out Greedy (жадный алгоритм исключения наихудших элементов) 371 А абсолютная схема приближения 507 абсолютный приближенный алгоритм 454, 470, 474, 476
Предметный указатель 705 абстрактно двойственный граф 65, 69, 368 активная вершина (относительно предпотока) 210 активное множество вершин (задача о проектировании сети) 585, 601 алгебраическое число 424 алгоритм 21, 416, 419 — /с-приближенный 454 асимптотический 476 — абсолютный приближенный 470, 474, 476 — Ароры 617-619 — Бар-Иегуды—Эвена 458-460 — венгерский 306, 331 — вероятностный 276, 479, 481 — взвешенного пересечения матроидов 383, 385, 389, 411 — внутренней точки 114, 464 — Гомори—Ху 221, 224, 600 — Грётшел а—Л оваса—Скрейвера 116, 119, 525-527, 553 — Гуманса—Уильямсона для задачи о максимальной выполнимости 481, 483 о максимальном разрезе 465 — Дейкстры 46, 184, 185, 189, 194, 250, 539 — Джайна 598 — Джонсона для задачи о максимальной выполнимости 479, 480, 483 — динамического программирования для задачи о рюкзаке 506, 507, 526 — Диница 209, 210, 212, 231 — для задачи разрешения 425 — Дрейфуса—Вагнера 572, 573 — Евклида 100, 101, 106 — жадный 159, 371, 455, 495, 512, 563, 647, 682 включения наилучших элементов 371-376, 388, 395, 455 для гридоида 395 для задачи о вершинном покрытии 457 о покрытии множества 455, 456 о раскраске 470, 496 для полиматроида 395, 397, 398, 402, 410, 411 исключения наихудших элементов 371, 372, 374, 375 — исключения Гаусса 79 наихудших элементов 176 — Кармаркара—Карпа 525, 529, 531 — Коу—Марковски—Бермана 574 — Краскала 159, 168, 169, 176, 372, 375, 395 — Кристофидеса 609, 633, 638 — Лас-Вегаса 164, 427 — линейный 22 — Линя—Кернигана 622-624, 638 — масштабирования пропускных способностей 251 — Монте-Карло 233, 427 — Мура—Беллмана—Форда 186, 188, 249 — недетерминированный 427, 428 — онлайн 521 — Орлина 253, 254, 256, 257 — перебора путей 18, 22 — пересечения матроидов 378, 380 — поиска взвешенного паросочетания 340, 344, 351 взвешенной медианы 504 минимального среднего цикла 192 сильно связных компонент 47, 586 — полиномиальный 22, 419 — поразрядной сортировки 29 — последовательного увеличения вдоль кратчайших путей 249, 250, 305 — построения ушной декомпозиции 282, 283 — приближенный 454 абсолютный 454 — Прима 161, 163, 164, 176, 395, 574 — проверки сертификата 426, 483, 485 — проталкивания-переоценки 214 — прямо-двойственный 309, 383, 540, 589 — псевдополиномиальный 445, 446, 529 — разложения в цепную дробь 100-102, 121 — рандомизированный 164, 233, 427 — рекурсивный 26 — Робинса—Зеликовского 578 — с оракулом 115, 428 — сильно полиномиальный 22, 114
706 Предметный указатель алгоритм сканирования графа 43 — Скрейвера 404, 413 — слабо полиномиальный 22 — сокращения вдоль минимальных средних циклов 245-248 разрезов 265 — сортировки слиянием 26-28 — точный 443 — Фернандес де ла Беги—Люкера 528 — Флойда—Уоршолла 190, 191, 195 — Форда—Фалкерсона 202, 203, 207, 227, 274, 601 — Фуджисиге 212, 213, 231 — Хопкрофта—Карпа 274, 298 — хороший 22 — Эдмондса поиска максимального паросочетания 289, 292, 293, 295, 296, 310 оптимального ветвления 166-168, 177 — Эдмондса—Карпа для максимального потока 207-209, 274 — Эйлера 51, 52 — эффективный 22 алфавит 417 антиблокер 496 антидерево 48 антиматроид 393 антиматроидный язык 411 антицепь 297 асимптотическая оценка погрешности 476 — схема приближения 476, 477, 524 — точность приближения 476 ассоциированная с ушной декомпозицией функция 282, 322 аффинная независимость 92 ациклический граф 48 — орграф 38, 39, 69 Б база 358, 362, 388 — соцветия 287 базис 83 — Гильберта 128, 150 — коциклов 40 — циклов 40, 57, 68 базисное допустимое решение 113 — оптимальное решение 112 — решение 74, 511, 594, 595 баланс 239 барьер 278 бескроссинговое семейство 40-42, 141 бинарный клаттер 388 — поиск 200, 402, 447 бит 417 блок 49, 50, 66 блокирующий клаттер 369, 370, 388 — полиэдр 388 — поток 209, 210, 212, 230 булева переменная 429 — формула 430, 451, 452 эквивалентность 451 быстрое умножение матриц 189 В величина s-t-потока 199 венгерский алгоритм 306, 331 вероятностно проверяемое доказательство (РСР) 484 вероятностное округление 481, 561 вероятностный алгоритм 276, 479, 481 — метод 478 вершина 30, 74, 77, 81, 91, 93 — активная (относительно предпотока) 210 — внешняя 288, 290 — внутренняя 288, 290 — изолированная 32 — покрытая 271 — свободная 271 вершинная раскраска 467, 470, 474 — связность 49, 227, 233 вершинное покрытие 33, 272, 396 вес 35, 443 — консервативный 182, 188, 340 ветвление 36, 165, 179, 451 взаимная простота 97 взвешенная медиана 503, 504 вложенное семейство 40 внешнее соцветие 290 внешняя вершина 288, 290 — грань 56, 69, 556, 573, 599 внутренне непересекающиеся пути 205 внутреннее соцветие 290 внутренняя вершина 288, 290
Предметный указатель 707 вполне полиномиальная схема приближения 540, 541 временная сложность 22 время константное 20 — линейное 20 — работы 22 в среднем 22, 81 в худшем случае 22 входящая степень 32 выполненная клауза 429 выполнимое семейство клауз 429 выпуклая комбинация 90 — оболочка 90, 91 — функция 411 выпуклое множество 90, 115 выходящая степень 32 вычисление 418, 420 — функции 22 вычислимая за полиномиальное время функция 418 — функция 418, 419 вычислимое отношение 418 вычислительная задача 418 Г гамильтонов граф 34, 65 — путь 34 — цикл 34, 372, 388, 628 гарантия погрешности 454 гиперграф 40 гиперплоскость опорная 74 — отделяющая 114 город 446 грань 55-57, 74, 75 — внешняя 56, 69, 556, 573 — минимальная 76, 77 — неограниченная 56 граф 25, 30 — 2-реберно связный 67 — 2-связный 50 — 3-связный 58 планарный 123 — /с-реберно связный 49, 205 — k-регулярный 32 — /с-связный 49 — абстрактно двойственный 65, 69, 368 — ациклический 48 — гамильтонов 34, 65 — двудольный 53, 64 — дополнение 33 — интервальный 496 — неориентированный 30 — ориентированный 30 — остаточный 202 — Петерсена 593 — планарно двойственный 62, 63, 65, 352, 368, 552, 555 — планарный 54, 62, 69, 368 — платонов 68 — плотный 44 — полный 33 — последовательно-параллельный 68 — послойный 209 — простой 30 — пустой 33 — разреженный 44 — реберный 34 — связный неориентированный 35 ориентированный 35 — сеточный 571 — сильно k-реберно связный 230, 564 — смешанный 558, 564 — совершенный 471, 472, 496 — факторкритический 278, 280-284 — хордальный 233 — эйлеров 51, 64, 340, 559, 608 — экспандер 562 графический матроид 360, 368, 374, 387 гридоид 392-396, 410 — ветвлений 394 д дважды стохастическая матрица 299, 307 двоичная запись 21 — строка 417, 425 двойственная линейная программа 86 — система независимости 367 двудольное разбиение 53, 67 двудольный граф 53, 64 двуленточная машина Тьюринга 419, 420, 422 двусторонняя матрица инцидентности разрезов 141, 142, 151 декомпозиция Галлаи—Эдмондса 296 — древесная 67, 560 — ушная 50
708 Предметный указатель дерандомизация 479, 619 дерево 35, 43, 394 — ветвей и границ 636 — Гомори—Ху 219-221, 224, 348, 349, 583-585, 601 — динамическое 212, 214 — кратчайших путей 187 — ориентированное 36, 43, 173, 174, 178, 179, 394 — остовное 36, 65, 368, 451, 632 — поиска в глубину 46 в ширину 46 — Штейнера 569, 574 /с-ограниченное 575 полное 575 диаграмма Вороного 176 диаметр 546 динамический поток 262 динамическое дерево 212, 214 — программирование 183, 191, 506, 572, 637 длина 34 — (строки) 417 длительность такта 196 дополнение графа 33 — задачи разрешения 440 допускающее разбиение множество 381, 389 допустимая остовная структура 259 допустимое ребро (потоки в сетях) 214 — решение 72, 74, 443 допустимые потенциалы 188, 243 достижимость 35 доступная система множеств 392, 393 древесная декомпозиция 67, 560 — ширина 67, 565 древесное представление 42, 142, 234, 311, 591, 595 дуга 31 Е евклидов шар 107 евклидова норма 108 Ж жадный алгоритм 159, 371, 455, 493, 495, 512, 516, 530, 563, 647, 682 жесткое ребро (в задаче о взвешенном паросочетании) 309, 322 жорданова кривая замкнутая 54 простая 54 3 зависимое множество 357 задача 3-выполнимости 432 — coNP-полная 440 — NP-полная 429, 430, 432 — NP-простая 442, 443 — NP-трудная 442 — NP-эквивалентная 442, 443 — вычислительная 418 — китайского почтальона 339, 450 неориентированная 340, 352 ориентированная 265 — коммивояжера 143, 148, 358, 606, 619, 622, 624, 625, 632, 633, 635 евклидова 612, 615, 617, 619, 637 метрическая 607-609, 612, 625, 633, 638 двудольная 638 несимметричная 606, 638 — лагранжево двойственная 152 — линейного программирования 72, 96, 97, 112-114, 127 ограниченная 127 — максимизации для системы независимости 358, 371-373, 375, 509 субмодулярной функции 413 — минимизации для системы независимости 358, 369, 372, 374, 375 субмодулярной функции 401, 403, 404, 408 — неразрешимая 447 — о b-паросочетании максимального веса 336, 337, 350, 351 минимального веса 355 — о fc-медианах 660 метрическая 664-666 — о к-й порядковой статистике 503, 504 — о ^-размещении предприятий 660 метрическая 660, 663 — о fc-реберно связном подграфе минимального веса 600 — о /с-центрах 494
Предметный указатель 709 задача о Г-соединении минимального веса 340-343, 346, 347, 351, 601 — о бисекции 562 — о быстрейшей перевозке 264 — о вершинно непересекающихся путях неориентированная 560, 564, 565 ориентированная 565 — о вершинной раскраске 467, 470, 473 — о ветвлении максимального веса 164-166, 177, 359 — о взвешенной медиане 503 — о взвешенном пересечении матроидов 383, 385 — о втором гамильтоновом цикле 639 — о гамильтоновом цикле 450 — о дереве Штейнера 359, 570, 572, 578, 581 евклидова 638 обобщенная 581, 584 — о доминирующем множестве 450 — о дробном Ь-паросочетании 266 — о клике максимального веса 473 — о конкурентных потоках 540, 544, 545, 561 — о корневом ориентированном дереве минимального веса 164, 165, 170, 230 — о кратчайшем пути 46, 182-185, 341, 343, 358, 539 — о кратчайших путях между всеми парами вершин 189-191, 343, 573, 574 — о критическом ребре паросочетания 331 — о лесе максимального веса 157, 164, 165, 359 — о максимальной 3, 489 выполнимости 478, 486 клике 485, 486, 497 — о максимальном /с-покрытии 682 взвешенном направленном разрезе 495 многопродуктовом потоке 540 независимом множестве 485, 486, 493 паросочетании 271, 273, 276, 277, 295, 299 потоке 199, 201-203, 207, 209, 212-214, 217-219, 225, 553 во времени 262, 263 разрезе 352, 460, 495, 497 — о матроидном паросочетании при разбиении на пары 412 — о минимальном Г-разрезе 347, 348, 354 вершинном покрытии 457, 458, 485, 493, 494, 497, 609 взвешенном вершинном покрытии 455, 459, 494 множестве вершин, разрезающих контуры 495 покрытии множества 455, 456, 458, 459 реберном покрытии 457 остовном дереве 156-161, 163, 164, 168, 175, 176, 182, 184, 359, 574, 608, 632 покрытии множества 455, 467 разрезе 218, 226, 449 среднем цикле в орграфе 191, 192, 196 неориентированная 352, 354 — о многопродуктовом потоке 534-536, 539, 561 неориентированная 534, 564 однородная 549 ориентированная 533, 534 — о назначении работ 17, 24, 92, 149, 200, 239, 271 — о назначениях 305, 306, 331 квадратичная 529 — о наиболее разреженном разрезе 544, 549 обобщенная 544, 545 — о независимом подмножестве 450 максимального веса 358, 473 — о непересекающихся путях 206 неориентированная вершинная 206 реберная 206 ориентированная вершинная 206 реберная 206, 207, 230 — о паросочетании максимального веса 304, 359 — о перевозке 241 — о пересечении трех матроидов 450 — о полиматроидном паросочетании 412
710 Предметный указатель задача о потоке минимальной стоимости 240, 241, 244, 245, 247, 249, 251, 252, 254, 256-258, 260, 264-267, 412 — о проектировании «живучей» сети 582, 589 — о разбиении 439 — о размещении заводов 645 предприятий 152, 645 с пропускными способностями метрическая 670 без пропускных способностей 152, 646, 648-650, 652, 659, 668, 670 пропускных способностей метрическая 646, 649, 651, 656 с мягкими пропускными способностями 682, 683 пропускными способностями метрическая 670, 671 с пропускными способностями 672, 682 способностями метрическая 681 универсальная 670, 680 складов 645 — о разрезе максимального веса 460, 461, 495 — о раскрое 515 — о расписании 512, 530 многопроцессорном 530 — о реберно непересекающися путях неориентированная 555, 558, 559 ориентированная 563 непересекающихся путях 533, 535, 536, 538 неориентированная 554-556, 560, 563-565 ориентированная 549, 551, 554, 563, 564 — о реберной раскраске 467, 468, 470, 476 — о реберном покрытии минимального веса 332 — о рюкзаке 359, 502, 503, 505-508, 512, 526 т-мерная 510, 511, 513 дробная 502, 505 — о сверлении 16, 24, 156 — о совершенном паросочетании минимального веса 304, 305, 308, 325, 341, 342 — о субмодулярном потоке 412 — о трехмерном паросочетании 437 — об е-доминанте 509 — об оптимальном линейном упорядочении 123, 562 — об ориентированном гамильтоновом цикле 450 дереве минимального веса 156, 164, 165, 171, 177 — об упаковке в контейнеры 515, 516, 518-521, 523, 524, 527, 528 множеств 497 отрезков 151, 266 — оптимизации 443 слабая 115, 116, 119 — отделения 115, 348, 349, 401, 402, 526, 539, 554, 629, 631 слабая 115, 116, 118-120, 526, 527 — пересечения матроидов 377, 380, 383 — разбиения матроидов 381, 382 — разрешения 425 — сильно NP-полная 446 JVP-трудная 446, 510 — Хичкока 241 — целочисленного программирования 127 задающее фасету неравенство 75, 76 закон сохранения потока 199 замкнутая жорданова кривая 54 — чередующаяся цепь 621 замкнутый маршрут 34 замыкание 358, 364 запрещенный минор 69 звезда 35, 676 знак перестановки 98 зуб 630 И избыток 199 изолированная вершина 32 изоморфизм 31 изоморфные графы 31 индуцированный подграф 31 интервальная матрица 151 интервальный граф 496
Предметный указатель 711 инцидентность 31 истинностная оценка 429 источник 199, 239 К кактусное представление 234 клаттер 369, 370, 388 — бинарный 388 — блокирующий 369, 370, 388 клауза 429 — выполненная 429 клиент (в задаче о размещении предприятий) 646 клика 33 ключ 161, 162 комета 676 компонента связная 45, 160 — связности 35, 45, 160 — сильно связная 38, 48, 49 конец пути 34 — ребра 31 конечно порожденный конус 77, 78, 89 коннектор 569 консервативный вес 182, 188, 340 константное время 20 конус 77 — конечно порожденный 77, 78, 89 — полиэдральный 77, 78, 89, 128, 150 конъюнктивная нормальная форма 430 корень 36, 66, 288 кососимметрическая матрица 275 кратчайший путь 34, 46, 182 критическое ребро 202 кроссингово субмодулярная функция 412 куча 161 — фибоначчиева 162, 163, 185, 225 Л лагранжева релаксация 148, 512, 632, 660 лагранжево двойственная задача 148, 152, 633 ламинарное семейство 40, 42, 141, 311, 322, 594 легкий цикл Штейнера 614, 615 лексикографический порядок 18, 28 лексикографическое правило 79 лемма о замене 614, 616 — о стягивании соцветий 287 — о стягиваний соцветия 290 — Фаркаша 89 — Шпернера 297 лес 35, 174 — поиска в глубину 48 — чередующийся 288, 289 линейная программа 25, 72 двойственная 86 неограниченная 72, 88, 89 несовместная 72, 88, 89 прямая 86 — релаксация 127, 149, 308, 459, 481, 494, 522, 525, 545, 583, 593, 626, 632, 636, 681 — сводимость 157 линейное время 20 линейный алгоритм 22 — матроид 360 лист 35, 36 литерал 429 локальный оптимум 639 ломаная 54, 55 м максимальность по включению 34 — по мощности 34 маршрут 34 — замкнутый 34 матрица дважды стохастическая 299, 307 — интервальная 151 — инцидентности 44, 141 разрезов двусторонняя 141, 142, 151 односторонняя 141, 142, 151 — кососимметрическая 275 — неотрицательно определенная 122 — обратная 103 — перестановочная 299, 307 — сетевая 142, 151 — смежности 44 — Татта 275 — тотально унимодулярная 137-142, 203 — унимодулярная 131, 132, 150 матроид 359, 362-364, 366, 373 — графический 360, 368, 374, 387 — линейный 360 — объединение 381
712 Предметный указатель матроид представимый 360, 387 — равномерный 360, 387 — сумма 381 — циклический 360, 372 —, пересечение 376, 377 машина Тьюринга 416, 417, 419, 420 с оракулом 424 медиана взвешенная 503, 504 метод ближайшего соседа 607 — вероятностный 478 — внутренней точки 96 — генерации столбцов 86, 525, 539 — жадного увеличения 656, 657, 682 — исключения Гаусса 102-106, 112, 122 Фурье—Моцкина 93 — критического пути 229 — лагранжевых релаксаций 147-149, 152 — локальных улучшений 619, 625, 664, 669 — масштабирования 213, 251, 266 — оценки и анализа программ 229 — разделяй и властвуй 26 — «разделяй и властвуй» 325, 549 — секущих плоскостей 143, 144, 147, 636 — условных вероятностей 479 — эллипсоидов 96, 106, 108, 112, 113, 116, 402, 473, 523, 629 метрическое замыкание 189, 195, 573 минимальная грань 76, 77 минимальность по включению 34 — по мощности 34 минимальный s-t-разрез 201 минор 58, 68 — запрещенный 69 многоугольник 54, 55, 612 множество вершин связное 35 — выпуклое 115 — допускающее разбиение 381, 389 — зависимое 357 — независимое 33, 297, 357 — проверочное 130 — Татта 279 множитель Лагранжа 148, 633 модулярная функция 33, 35, 357, 396, 400 монотонная функция 397 мост 35, 64 мощность потока 262 МС-порядок 225, 233 мультиграф 31 мультиразрез 172, 177 н наибольший общий делитель 100 нарушенное множество вершин (задача о проектировании сети) 585 наследственное свойство 68 насыщающее проталкивание 216, 217 недетерминированный алгоритм 427, 428 независимое множество 33, 297, 357 ненаправленный разрез 37, 39 — цикл 39 ненасыщающее проталкивание 216 неограниченная грань 56 — линейная программа 72, 88, 89 неориентированный граф 30 — образ 31 — путь 34 — разрез 37 — цикл 34, 37 неотрицательно определенная матрица 122 неравенство 2-паросочетаний 629, 636, 639 — гребней 629-631, 636 — двудольное 631 — деревьев клик 630, 631, 636, 640 — подмаршрутов 628, 629, 636 — треугольника 195, 574, 599, 607, 638 неразрешимая задача 447 несовместная линейная программа 72, 88,89 нечетная ушная декомпозиция 280, 300 нечетно-циклическое покрытие 351 нечетное покрытие 52, 53 — соединение 52, 53 нечетный цикл 53, 67 нижний ранг 361 норма евклидова 108 — матрицы 108 о область (евклидова задачи коммивояжера) 613 обобщенный цветущий лес 311, 322
Предметный указатель 713 оболочка целочисленная 126 обратная матрица 103 обратное ребро 201 обхват 57, 343 обход эйлеров 608 объединение матроидов 381 ограничение задачи 446 ограниченная задача линейного программирования 127 ограниченный полиэдр 112 односторонняя матрица инцидентности разрезов 141, 142, 151 — ошибка 427 Г2-символика 19 онлайн алгоритм 521 оператор замыкания 393 операция Add 672 — Pivot 674 — push 214-216 — relabel 214, 215 опорная гиперплоскость 74 определитель 98, 103 оптимальное решение 72 задачи оптимизации 443 оракул 115, 358, 371, 389, 401, 404, 584, 587 — замыкания 372 — надмножеств баз 371, 372 — независимости 371, 372, 385 — отделяющий 115, 119 — полиномиальная эквивалентность 372, 389 — ранга 372 — слабо отделяющий 115 орграф 30 — ациклический 38, 39, 69 — сильно связный 38, 67, 69, 553, 563, 564 — эйлеров 51, 558 ориентация 31, 558, 559, 564 ориентированное дерево 36, 43, 170, 173, 174, 178, 179, 394 ориентированный граф 30 — разрез 37, 232, 552 особый цветущий лес 290 остаточная пропускная способность 202 остаточный граф 202 остовная структура 259 допустимая 259 сильно допустимая 259 остовное дерево 36, 65, 156, 172, 368, 451, 632 — решение 258, 266 остовный подграф 31 отделяющая гиперплоскость 114 отделяющий оракул 115, 119 относительная оценка погрешности 454 отношение вычислимое 418 — доминирования 509 — Штейнера 575 отрицательный цикл 188, 191 — экземпляр 425 оценка погрешности 454 относительная 454 — Хелда—Карпа 633-635 п параллельные ребра 30 паросочетание 25, 33, 272, 327 — почти совершенное 278, 281 — совершенное 271, 273, 275, 278, 279, 326 перебор 17, 634 — с возвратом 18 пересечение матроидов 376, 377 перестановка 16, 18, 98 перестановочная матрица 299, 307 перманент 299 петля 31, 62, 64 пик (сетевой симплекс-метод) 260 планарно двойственный граф 62, 63, 65, 352, 368, 552, 555 планарное вложение 54, 62, 68 планарный граф 54, 62, 69, 368 платонов граф 68 платоново тело 68 плотный граф 44 подграф 31 — fc-реберно связный 581 — индуцированный 31 — остовный 31 подразбиение 68 подходящая чередующаяся цепь 621, 623 подходящее множество ребер (задача о проектировании сети) 585 поиск в глубину 46
714 Предметный указатель поиск в ширину 46, 574 покрытая вершина 271 покрытие 455 — вершинное 33, 272, 396 — нечетно-циклическое 351 — реберное 33, 297 полиматроид 397, 402, 411 полиномиальная вычислимость 22 — машина Тьюринга 418, 423 полиномиально эквивалентные задачи 443 оракулы 372, 389 полиномиальное преобразование 429 — сведение 428, 429, 443 полиномиальный алгоритм 22, 419, 423 политоп 74, 90, 91 — Ь-паросочетаний 336, 337, 349 — ветвлений 178 — дробных паросочетаний 307 совершенных паросочетаний 307, 331, 332 — задачи коммивояжера 626, 631 — клик 496 — лесов 178 — матроида 170, 374, 397, 400 — независимых множеств 472 — остовных деревьев 168, 169, 177 — паросочетаний 327 — подмаршрутов 628, 633 — совершенных паросочетаний 326, 330, 332, 348 — степеней подграфов 351 — трехмерный 123 полиэдр 25, 74 — Г-соединений 346 — баз 404 — блокирующего типа 388 — блокирующий 388 — ограниченный 112 — полной размерности 74, 112 — рациональный 74 — точечный 11 — целый 133, 135, 137, 451 полиэдральная комбинаторика 91 полиэдральный конус 11, 78, 89, 128, 150 полная компонента дерева Штеинера 575 полное дерево Штеинера 575 полностью полиномиальная схема приближения 476 полный граф 33 положительный экземпляр 425 полуметрика разрезная 495 полуопределенная программа 96, 464 — релаксация 462, 549 полуцелое оптимальное решение 266 — решение 331, 332, 494, 593 полуэллипсоид 107, 110 поляра 119, 120, 123 пометки расстояний 214 портал (евклидова задача коммивояжера) 614 порядок кучи 162 — роста 19 посет 297 последовательно-параллельный граф 68 послойный граф 209 потенциалы допустимые 188 — связанные с остовной структурой 259 поток 199 — Ь- 239, 240 — s-t-199, 203 — блокирующий 209, 210, 212, 230 — во времени 262 — динамический 262 — субмодулярный 413 —, мощность 262 потоковое ребро 533 потомок 66 почти подходящее множество ребер (задача о проектировании сети) 585 — совершенное паросочетание 278, 281 правило Блэнда 79 — выбора опорных индексов 79 — лексикографическое 79 правильная функция 582-584 правильно округленный экземпляр (евклидова задача коммивояжера) 612 предложение 239 предок 66 предпоток s-t- 210, 231 предприятие 646 представимый матроид 360, 387 представление древесное 42, 142, 234, 311 — кактусное 234
Предметный указатель 715 преобразование унимодулярное 132, 150 приближенный алгоритм 454 приведенная стоимость 188 принцип оптимальности Беллмана 183 приоритетная очередь 161 прирост чередующейся цепи 621 проблема остановки 447 проверочное множество 130 программа линейная 25, 72 — полуопределенная 96, 464 — смешанная целочисленная 125 — целочисленная 523 продукт 533 проектирование СБИС 571 промежуточная вершина пути 34 пропускная способность 199, 201 остаточная 202 простая жорданова кривая 54 простое 2-паросочетание 629, 636 — Ь-паросочетание 335 простой граф 30 пространство коциклов 39, 40 — циклов 39, 40 проталкивание насыщающее 216, 217 — ненасыщающее 216 прямая линейная программа 86 прямо-двойственный алгоритм 309, 383, 540, 589 псевдополиномиальный алгоритм 445, 446, 506, 507, 510, 516, 529 пустая строка 417 пустой граф 33 путь 34 — гамильтонов 34 — кратчайший 34, 46, 182 — неориентированный 34 — реализующий 206 — увеличивающий 287, 313 — чередующийся 378 Р равномерный матроид 360, 387 разделяющее множество ребер 37 разложение в цепную дробь 101 — Галлаи—Эдмондса 310, 314 — Холецкого 122 размер входа 21 размерность 74 разреженный граф 44 разрез 37, 64 — г-37 — s-t- 37, 201, 203, 228, 586 — ненаправленный 37, 39 — неориентированный 37 — ориентированный 37, 232, 552 — сбалансированный 562 — фундаментальный 40, 348, 584 разрезная полуметрика 495 разрезное условие 536, 562, 564 разрезные условия 536, 537, 551, 555, 556, 559, 560 разрешимый за полиномиальное время язык 418 — язык 418 ранг 358, 363 — матрицы 74, 102, 103 — нижний 361 — Хватала 147 ранговое отношение 361, 362, 387 рандомизированный алгоритм 164, 233, 427, 428 раскраска вершинная 467, 470, 474 — реберная 467, 468 расстояние 34, 446 расширенная во времени сеть 267 — формулировка 177, 354, 631, 639 рациональный полиэдр 74 реализующий путь 206 реберная раскраска 467, 468 — связность 49, 219, 225, 232 локальная 219, 232 — цепь 34, 192 реберно-хроматическое число 467, 468 реберное покрытие 33, 297, 300 реберный граф 34 ребро 30 — жесткое (в задаче о взвешенном паросочетании) 309, 322 — конец 31 — критическое 202 — начало 31 — обратной связи 553 — потоковое 533 — реализуемое 537 — сетевое 206 — требований 206, 533
716 Предметный указатель регулярное выражение 24 рекурсивный алгоритм 26 релаксация задачи о многопродуктовом потоке 537, 561 — лагранжева 148, 512, 632, 660 — линейная 127, 149, 308, 459, 481, 494, 522, 545, 626, 632, 636, 681 — полуопределенная 462, 549 решение базисное 74 — допустимое 72, 74, 443 — задачи оптимизации оптимальное 443 — оптимальное 72 — полуцелое 331, 332, 494 родитель 36, 66 ручка 630 С сбалансированный разрез 562 сведение Карпа 429 — полиномиальное 429 — Тьюринга 429 сверхбольшая интегральная схема 195 свободная вершина 271 свободное соцветие 311 свойство MFMC- 369, 370, 388 — максимального потока и минимального разреза 369 связанные с остовной структурой потенциалы 259 связная компонента 35, 45, 160 — область 54, 55 связное множество вершин 35 связность вершинная 49, 227, 233 — реберная 49, 219, 225, 232 локальная 219, 232 связный неориентированный граф 35 — ориентированный граф 35 сглаженный анализ 81 сдвинутая сетка (евклидова задача коммивояжера) 613 семейство бескроссинговое 40^42, 141 — вершинно непересекающееся 31 — вложенное 40 — всех подмножеств 33 — клауз выполнимое 429 — ламинарное 40, 42, 141, 311, 322 — реберно непересекающееся 31 сепаратор 325 сертификат 426, 441 сетевая матрица 142, 151 сетевое ребро 206 сетевой симплекс-метод 258, 260, 261 сеточный граф 571 сеть 199 — расширенная во времени 267 сечение Гомори—Хватала 143, 332 сильно fc-реберно связный граф 230, 564 — JVP-полная задача 446 — NP-трудная задача 446 — допустимая остовная структура 259 — полиномиальная схема асимптотического приближения 528 приближения 508-510, 525 — полиномиальный алгоритм 22, 114 — связная компонента 38, 48, 49 — связный орграф 38, 67, 69, 553, 563, 564 симметрическая субмодулярная функция 408, 409 симплекс-метод 79, 96, 103, 114, 258, 523, 539, 625 — сетевой 258, 260, 261 — улучшенный 86 симплекс-таблица 83 симплициальный порядок 233 синглетон 32 система линейных неравенств 88, 93,112 уравнений 103 — множеств доступная 392, 393 — независимости 357 двойственная 367 пересечение 376 — подмножеств 40 — различных представителей 297, 387 — тотально двойственно целочисленная 134 скалярное произведение 72 слабая двойственность 79 слабо отделяющий оракул 115 — полиномиальный алгоритм 22 — супермодулярная функция 582, 594, 595 слово 417 смежные вершины 31 — ребра 31
Предметный указатель 717 смешанная целочисленная программа 125 смешанное линейное программирование 147 — целочисленное программирование 150 смешанный граф 558, 564 собственная ушная декомпозиция 50 совершенное Ь-паросочетание 335, 339 — паросочетание 271, 273, 275, 278, 279, 326 — простое 2-паросочетание 335, 351 совершенный граф 471, 472, 496 сортировка 25, 27-29 сосед 31, 32 соцветие 287, 311, 313, 322 — внешнее 290 — внутреннее 290 — свободное 311 специальный цветущий лес 291, 292, 410 списки смежности 45 список смежности 425 спрос 239 стандартное вложение 63 степень 32 — входящая 32 — выходящая 32 стоимость 35, 443 — обслуживания 648 — открытия предприятий 647 — приведенная 188 сток 199, 239 строка 417 — двоичная 417, 425 — длина 417 — пустая 417 стягивание 32 субградиентная оптимизация 148, 633 субмодулярная функция 33, 227, 363, 396, 398, 400-403, 411 субмодулярный поток 412, 413 субопределитель 128 сумма матроидов 381 супермодулярная функция 33, 400 схема асимптотического приближения сильно полиномиальная 528 — приближения 476, 477, 487, 489, 511, 571, 612, 619 абсолютная 507 асимптотическая 476, 477, 524 вполне полиномиальная 540, 541 для задачи о рюкзаке 508 полностью полиномиальная 476 сильно полиномиальная 508-510, 525 сын 36, 66 т тезис Чёрча 419 теорема Бержа 274, 287, 288, 298 — Биркгоффа—фон Неймана 307, 308, 331 — Визинга 468, 470, 475 — Галлаи—Эдмондса 296 — Дилворта 297 — Каратеодори 93 — Кёнига 151, 272, 297, 330 — Куратовского 58, 60, 62, 68 — Кэли 158, 175 — Луккези—Янгера 552, 553 — Менгера 204-206, 229, 272, 353, 538 — о двойственности линейного программирования 86, 89 — о двупродуктовом потоке 564 — о декомпозиции полиэдров 93 — о жордановых кривых 55 — о конечном базисе политопа 90 — о максимальном потоке и минимальном разрезе 203, 354, 370, 586 — о пересечении полиматроидов 398 — о потоковой декомпозиции 203 — о пяти красках 474 — о свадьбах 273 — о совершенном графе сильная 471 слабая 471 — о целочисленном потоке 203 — о четырех красках 473, 474 — Окамуры—Сеймура 555, 556, 563 — Падберга—Рао 348, 349 — Татта 278, 279, 300 — Хачияна 112, 113 — Холла 272, 273 — Хоффмана о циркуляции 228 — Хоффмана—Краскала 137, 139, 307 — Эдмондса —Радо 373, 375, 376
718 Предметный указатель терминал (в задаче о многопродуктовом потоке) 533 — (дерево Штейнера) 569 — (задача о непересекающихся путях) 206 тета-функция 473 топологический порядок 39, 48, 49, 586 тотально двойственно целочисленная система 134 — унимодулярная матрица 137-142, 203 точечный полиэдр 77 точка сочленения 35 — Штейнера 569, 599 точное множество (задача о проектировании сети) 594 точность приближения 476 асимптотический 476 точный алгоритм 443 трансверсаль 387, 389 транспортная задача 241 требования связности 582 трехмерный политоп 123 триангуляция Делоне 176, 623 турнир 67 0-символика 19 У убыток (дерево Штейнера) 577 увеличение (потока в сети) 202 увеличивающий путь 202, 203, 207, 274, 287, 298, 313 — цикл 243, 245 улучшенный симплекс-метод 86 умножение 423 унимодулярная матрица 131, 132, 150 унимодулярное преобразование 132, 150 уровень (евклидова задача коммивояжера) 613 условие дополняющей нежесткости 87, 592 двойственное 88 прямое 88 — разрезное 536, 562, 564 — расстояний 535-537, 562 в данном случае 554 — Татта 278, 279 — Холла 273 — целочисленности 125 условия разрезные 536, 537, 551, 555, 556, 559, 560 ухо 50 ушная декомпозиция 50, 67 М-чередующаяся 281-284 нечетная 280, 300 собственная 50 чередующаяся 281-284 Ф факторкритический граф 278, 280-284 фасета 75, 76, 92, 631 фибоначчиева куча 162, 163,168, 176, 185, 225 формула Бержа—Татта 279, 290, 307, 330, 332 — Стрилинга 18 — Эйлера 57, 368 фундаментальный разрез 40, 348, 584 — цикл 40, 66, 260 функция Аккермана 160, 164 — ассоциированная с ушной декомпозицией 282, 322 — выпуклая 411 — вычислимая 418 за полиномиальное время 418 — кроссингово субмодулярная 412 — модулярная 33, 35, 357, 396, 400 — монотонная 397 — правильная 582-584 — слабо супермодулярная 582, 594, 595 — субмодулярная 33, 227, 363, 396, 398, 400^03, 411 симметрическая 408, 409 — супермодулярная 33, 400 X характеристический вектор 91 хордальный граф 233 хордовый граф 496 хорошая характеризация 279, 441 хороший алгоритм 22 хроматический индекс 467 хроматическое число 467, 468 ц цвет 467
Предметный указатель 719 цветущий лес обобщенный 311, 322 общего вида 290 особый 290 специальный 291, 292, 410 целочисленная оболочка 126 — программа 523 целый полиэдр 133, 135, 137, 451 цепь 297 цикл 34, 64, 357, 366 — /-увеличивающий 242 — гамильтонов 34, 372, 388, 628 к -оптимальный 620 — ненаправленный 39 — неориентированный 34, 37 — нечетный 53, 67 — отрицательный 188, 191 — фундаментальный 40, 66, 260 — Штейнера 614 легкий 614, 615 циклический матроид 360, 368, 372 циркуляция 199, 242, 243 ч частично упорядоченное множество 297 чередующаяся ушная декомпозиция 281-284 — цепь 621 замкнутая 621 подходящая 621, 623 , прирост 621 чередующийся лес 288, 289 — путь 274, 312, 378 число алгебраическое 424 — обратной связи 553, 563 — реберно-хроматическое 467, 468 — Фибоначчи 121 ш ширина древесная 67, 565 э эвристика 443 эйлеров граф 51, 64, 340, 559, 608 — обход 51, 340, 608 — орграф 51, 558 — цикл 574, 615 эквивалентность задач 157 экземпляр 425, 443 — отрицательный 425 — положительный 425 экспандер 490, 562 экстремальная точка 90, 93 элементарный шаг 21, 422, 423 эллипсоид 107, 122 — Левнера—Джона 107 эрмитова нормальная форма 132 эффективный алгоритм 22 Я язык 417, 425 — антиматроидный 411 — разрешимый за полиномиальное время 418
Бернард Корте Йене Фиген Комбинаторная оптимизация. Теория и алгоритмы Подписано в печать 18.02.2015 г. Гарнитура Charter ITC. Формат 70xl00Vi6. Бумага офсетная. Печать офсетная. Печ. л. 45. Тираж 1000 экз. Заказ № 5969. Издательство Московского центра непрерывного математического образования 119002, Москва, Большой Власьевский пер., 11. Тел. (499) 241-08-04. Отпечатано с электронных носителей издательства. ОАО «Тверской полиграфический комбинат». 170024, г. Тверь, пр-т Ленина, 5. Тел. (4822) 44-42-15, (495) 748-04-67. Тел./факс (4822) 55-42-15. Книги издательства МЦНМО можно приобрести в магазине «Математическая книга», Москва, Большой Власьевский пер., 11. Тел. (499) 241-72-85. E-mail: biblio@mccme.ru, http://biblio.mccme.ru
Комбинаторная оптимизация - это широкая и бурно развивающаяся область математического программирования и дискретной математики, исследующая структурные и оптимизационные задачи на объектах, имеющих выраженный комбинаторный смысл. Книга известных немецких математиков фундаментальна по содержанию и основана на многочисленных прочитанных авторами курсах лекций. Она в необходимой мере представляет теоретические основы области (линейное и целочисленное программирование, точные и приближенные решения и их алгоритмическая сложность, NP-полнота и NP-трудность), подробно излагает классические разделы комбинаторной оптимизации (в частности, задачи о путях, потоках, паросо- четаниях, матроидах) и доходит до освещения ряда новейших направлений и результатов. Тщательный стиль изложения алгоритмов и доказательств и большое количество удачно подобранных упражнений позволяют рекомендовать книгу как учебное пособие для студентов и аспирантов соответствующих специальностей математики и теоретической информатики. Обилие литературных ссылок, качественное представление о современном состоянии данной науки, а также обозначение ее «переднего края» и «точек роста» вызовут бесспорный интерес у исследователей.