Книга
Книга
Предисловие редактора перевода
За последние десять-пятнадцать лет появилось громадное количество работ, в которых демонстрируются возможности языка и методов теории графов не только в математике и традиционных приложениям^ хймии)и электротехнике, но и в социологии, лингвистике, экономике, генетике. Наглядность теоретико-графовых структур и доходчивоСтв^языка теории графов позволяют сделать доступными для широкого круга читателей и формулировки довольно сложных прикладных задач, и весьма тонкие методы их решения.'’
Еще в период становления теории графов в ней возникало немало таких задач, решение которых предполагало построение некоторых алгоритмов (достаточно вспомнить, например, задачу о кёнигсбе^ских мостах и особенно задачу Гамильтона об обходе вершин додекаэдра). При этом, как правило, не накладывалось никаких ограничений на сложность алгоритмов, а лишь рассматривался вопрос их существования. Внедрение вычислительной техники поставило и перед всей, математикой, и перед теорией графов проблему нахождения не произвольных алгоритмов, позволяющих решать те или иные классы задач, а таких алгоритмов, которые допускали бы практическую реализацию с использованием современных вычислительных устройств. Так возникла проблема практической разрешимости задач: найти эффективный или хотя бы достаточно простой в практически важных случаях алгоритм рейения задй1?и7_^Классификация таких алгоритмов и методов их построения не_может быть исчерпывающей- Однако всякое последовательное, систематическое изложение наиболее -ЯркйХ^ ценных алгоритмов, в частности алгоритмов «на графах», и приемов их получения является полезным и даже необходимым ( дляГприкладников. В этой связи можно упомянуть книги Ху [1], I Корбута и _Финкельщтейна [2], Цоя и Цхая [3]._'
В предлагаемой вниманию читателя книге предпринята весьма удачная попытка познакомить тех, кто интересуется прикладной теорией графов, с важными и перспективными алгоритмическими методами теории графов. Книга имеет ярко выраженный прикладной характер. Автор особо выделяет в ней вычислительные и алгоритмические аспекты теории графов. «Чистой» теории гра-
фов в книге мало. Особый интерес представляют главы, посвященные размещению центров и медиан (гл. 5 и 6), задаче коммивояжера (гл. 10) и паросочетаниям (гл. 12).
Автор использовал терминологию Бержа [4]. Мы сочли блал горазумным в ряде местЧюльзоваться Терминологией Харари [5].|
] Ху Т., Целочисленное программирование и потоки в сетях, М., «Мир», 1974.
] Корбут А. А. и Финкельштейн Ю. Ю., Дискретное программирование, М., «Наука», 1969.
1 Цой С. и Цхай С. М., Прикладная теория графов, Алма-Ата, «Наука», 1971.
1 Берж К., Теория графов и ее применения, М., ИЛ, 1962.
] Харари Ф., Теория графов, М., «Мир», 1973.
Г. Гаврилов
1978 г.
Предисловие
Часто бывает полезно и наглядно изображать некоторую ситуацию в виде рисунка. состоящего из точек (вершин), представляющих Основные элёменты^итуации, и линий (ребер), соединяющих опредёлённыётгарБгэТих' вершин и представляющих связи между ними. Такие рисунки известны под общим названием графов,, и эта книга посвящена их изучению. Графы встречаются во многих областях под разными названиями: «структуры» в гражданском строительстве, «сети» в электротехнике, «социограммы» в социологии и экономике, «молекулярные структуры» в химии, «дорожные карты», электрические или газовые «распределительные сети» и так далее.
Благодаря своему широкому применению теория графов в последние годы интенсивно развивается. В большой мере этому способствует также прогресс в области развития больших быстродействующих вычислительных машин. Непосредственное й деталь
ное представление практических систем, таких, как распределительные сети и системы связи, приводит к графам большого размера^ успешный анализ которых зависит в равной^тепёникак от существования «хороши^_д л го ритмов т так и от возможности использования быстродействующих вычислительных машин. Поэтому в настоящей книге основное внимание сосредоточено на разработке и описании алгоритмов анализа .графов, хотя при этом часто упоминаются области их приложения, что позволяет
максимально приблизить текст книги к решениям практических задач. Надеюсь, что благодаря этому читателю будет легче связать изложенные в книге основные понятия со своей областью деятельности и применить их к разработке новых методов решения своих специфических задач.
Хотя вообще считается, что эффективность алгоритмов имеет само^аж11оё“^а , автор не сводит свою книгу к справочнику эффективных алгоритмов. Часто-метод рассматривается и по той причине, ^чтСГ он~тесно'ёвязан с только что введенными понятиями (или получен из них)^Гему отдается-предпочтение, хотяимеются и другие алгоритмы, столь же (или даяй^Ттб^оЙ^ несколько более) эффективные.
Определяющим для нашего изложения явилось желание создать у читателя цельное и логически стройное представление об алгоритмах аналйчэГТрафов.
Название «Теория графов» на самом деле не может подходить ни к какому однотомному изданию, ибо в таком ограниченном объеме нельзя дать сколько-нибудь^полного представления об этом предмете. Настоящая книга не является исключением, ее содержание отражает, <^ак~этои долпкнб"-!^ интересы автора и его работы в области исследования операций и в вычислительной математике и теории управления.
В главе 2 обсуждаются основные §воуства достижимости и связности графов, вопросы построения сильных компонент и баз и их приложение к образованию группировок правле- шия-и-кцалиций в организациях.'’
В главе 3 рассматриваются две задачи, связанные с выбором экстремальных множеств вершин с заданными свойствами. Обсуждаются способы решения задач об определении максимальных независимых и минимальных доминирующих множеств, последняя обобщается до задачи о покрывающих множествах. Рассматриваются приложения задачи о покрывающих множествах к составлению расписаний_вылета_самолетов и работы транспорта, к задаче об информационном поиске, обсуждаются вопросы сведения других задач теории графов к задаче о покрывающих множествах.
В главе 4 задача о раскраске вершин рассматривается как особый случай задачи о покрывающих множествах, изучавшейся в предыдущей Главе. Даны приложения задачи (^аскрашивани^ к составлению расписаний, размещению ресурсощ~атакже~ее обобщения на задачу доставки.
Следующие две главы посвящены задачам размещения в графах. В главе 5 рассматривается задача размещения мультицентров в графе и ее применение к проблемам размещения на сети дорог всевозможных служб, таких, как пожарные команды, полицейские . ( участки, станции скорой помощи. В главе 6 обсуждается задача размещения мультимедиан в графе и ее приложение к проблемам размещения таких служб, как склады или переключательные пункты в системах доставки товаров или в сетях связи. Глава 5 имеет дело с минимаксной, а глава 6 — с минисуммной задачами размещения.
В главе 7 рассматриваются задачи о деревьях, кратчайших остовах и задача Штейнера, а также приложения этих задач к проектированию электрических и газовых распрёде ите^ьных сетей.
В главе 8 разбираются задача поиска кратчайшей цепи между парами вершин и ее приложения к задачам выбора маршрута для максимизации пропускной способности или надежности, к специальному случаю сетей ПЕРТ и к анализу критических маршру-
тов. В этой же главе вводится понятие цикла отрицательного веса и демонстрируется применение этого понятия для решения ряда задач теории графов. Кроме того, приводится порядок вычислений вторых, третьих и так далее кратчайших цепей.
Две следующие главы посвящены задачам поиска циклов в графах. В главе 9 рассматриваются общие циклы и разрезы. Здесь же разбираются задача поиска эйлеровых циклов и задача китайского почтальона с ее приложениями к сборке мусора, к доставке молока или почты и к инспектированию систем с распределенными параметрами. Глава 10 состоит из двух частей. В первой рассматривается задача нахождения гамильтонова цикла в неполном графе и ее приложение к машинному планированию. Вторая часть этой главы посвящена задаче поиска кратчайшего гамильтонова цикла, широко известного под названием «задача коммивояжера», и ее приложениям к выбору транспортных маршрутов.
В главе 11 исследуются максимальные потоки и минимальные стоимости — задачи о максимальных потоках в графах, дугам которых приписаны пропускные способности и стоимости. Задачи о потоках в графах, у которых дугам приписаны выигрыши, встречаются при рассмотрении математических моделей арбитража, активных электрических цепей и т. д. Задачи о таких потоках также обсуждаются здесь.
В главе 12 речь идет о вычислении максимальных паросочета- ний графов и описывается обобщенный венгерский алгоритм^ Подробно алгоритм разобран для двудольных графов, для случаев транспортной задачи и задачи о назначении, играющих большую роль в исследовании операций с приложениями к назначению людей на работу, размещению вспомогательных служб, составлению маршрутов самолетов и т. д. Взаимосвязь между главами этой книги представлена графически (см. стр. 10).
Часть этой книги была написана при финансовой поддержке t ^Научного исслеллнятрльекого совета по вопросам математического программирования. которому я очень признателен за оказанное содействие. В подготовке издания этой книги мне помогли очень многие. Я особенно благодарен профессору Сэму Эйлону, руководителю Отдела научного управления Империал колледжа, Питеру Виоле, Джеффу Сэлби, Питеру Брукеру и Сэму Кормэну. Я также хочу поблагодарить профессора Дональда Кнута, прочитавшего первый вариант рукописи и указавшего на несколько ошибок. Я в долгу перед г-жой Маргарет Хаджел, взявшей на себя тяжелый труд по перепечатке рукописи. Я должен отметить неоценимую помощь своей жены, которая не только безропотно терпела мою постоянную работу над книгой по вечерам, но также помогала при чтении корректур.
Никос Кристофидес
Октябрь 1973
Лондон
Взаимосвязь между главами книги.
Глава 1
ВВЕДЕНИЕ
Графы. Определение
Граф G задается множеством точек или вершин xv х^ . . ., хп (которое обозначается через X) и множеством линий или ребер а^ а^. . . ., ат (которое обозначается символом Л), соединяющих между собой все или часть этих точек. Таким образом, граф G полностью задается (и обозначается) парой (X, Л).
Если ребра из множества Л ориентированы, что обычно показывается стрелкой, то они называются дугами, и граф с такими ребрами называется ориентированным графом (рис. 1.1(a)). Если ребра не имеют ориентации, то граф называется неориентированным (рис. 1.1(6)). В случае когда G = (X, Л) является ориентированным графом и мы хотим пренебречь направленностью дуг из множества Л, то неориентированный граф, соответствующий G, будем обозначать как *) G = (X, Л).
В этой книге, когда дуга обозначается упорядоченной парой, состоящей из начальной и конечной вершин (т. е. двумя концевыми вершинами дуги), ее направление предполагается заданным от первой вершины ко второй ). Так, например, на рис. 1.1(a) обозначение ^хх, х^) относится к дуге av а (х2, хт) — к дуге а2.
Другое, употребляемое чаще описание ориентированного графа G состоит в задании множества вершин X и соответствия Г, которое показывает, как между собой связаны вершины. Соответствие Г называется отображением множества X в X, а граф в этом случае обозначается парой G = (X, Г).
Для графа на рис. 1.1(a) имеем Г (xj = (х2, х^, т. е. вершины х2 и х5 являются конечными вершинами дуг, у которых начальной вершиной является х1?
Г(^2)=к1. ^з}.
Г(х3)={х1},
Г(х4)= 0—пустое множество,
г (я5) = {^4}.
*) Граф G мы будем называть неориентированном дубликатом (или неориентированном двойником^ графа G.— Прим. ред.
Рис. 1.1. (а) Ориентированный граф, (б) Неориентированный граф, (в) Смешанный граф.
В случае неориентированного графа или графа, содержащего и дуги, и неориентированные ребра (см., например, графы, изображенные на рис. 1.1(6) и 1.1(b)), предполагается, что соответствие Г задает такой эквивалентный , ориентированный граф, который
получается из исходного графа заменой каждого неориентированного ребра двумя противоположно направленными дугами, соединяющими те же самые вершины. Так, например, для графа, приведенного на рис. 1.1(6), имеем Г (х5) = {x1T х31 х^, Г (х^ = = {х5} и т. д.
Поскольку Г (xt) представляет собой множество таких вершин xj £ X, для которых в графе G существует дуга (хь х^, то через Г^ДхД естественно обозначить множество вершин xh, для которых в G существует дуга (хк, х^. Отношение Г-1 (хД принято называть обратным соответствием. Для графа, изображенного на рис 1.1(a), имеем
Г'1 (хД ={х2, х3),
Г"1 (хД = {хД и т. д.
Вполне очевидно, что для неориентированного графа Г-1(хД = = Г (хД для всех х,- £ X.
Когда отображение Г действует не на одну вершину, а на множество вершин Xq = {х2, Х2, . . ., Xq), ТО ПОД Г (Xq) ПОНИМЭЮТ объединение
Г (хД U Г (х2) U ■ • • U Г (хД, т. е. Г (X q) является множеством таких вершин х3 б X, что для каждой из них существует дуга (хг, х^ в G, где хг- £ Xq. Для графа, приведенного на рис. 1.1(a), Г ({х2, х5}) = (х^ х3, хД и Г ({^j, х3}) = {х2, х5, хД.
Отображение Г (Г (хД) записывается как Г8 (хД. Аналогично «тройное» отображение Г (Г (Г (хД)) записывается как Г3 (х^ и т. д. Для графа, показанного на рис. 1.1(a), имеем:
Г2 (хД = Г (Г (хД) = Г ({х2, хД) = {х,, х3, хД,
Г3 (жД = Г (Г2 (хД) = Г ({xt, х3, х4}) = (xt, х2, х5} и т. д.
Аналогично понимаются обозначения Г-8 (хД, Г-3 (хД и т. д
Пути и маршруты
Путем (или ориентированным маршрутом) ориентированного графа называется последовательность дуг, в которой конечная вершина всякой дуги, отличной от последней, является начальной вершиной следующей.
Так, на рис. 1.2 последовательности дуг
Л3, ^5, Лд, Л3, Л4,
(1-1)
Л^, Лд, Лд, Лд,
(1-2)
лв, л3, Лд, л10, ав, а^
(1 3)
являются путями.
Рис. 1.2.
Дуги а = (хг. Xj), Xi V= хр имеющие общие концевые вершины, называются смежными. Две вершины Xi и xj называются смежными. если какая-нибудь из двух дуг (xf, тД и ^ь х^ или обе одновременно присутствуют в графе. Так, например, на рис. 1.2 дуги аь а10, а3 и а6, как и вершины х5 и х3. являются смежными, в то время как дуги аг и а5 или вершины ху и z4 не являются смежными.
Ориентированной цепью Д (или, короче, орцепью) называется такой путь, в котором каждая дуга используется не больше одного раза. Так, например, приведенные выше пути (1.1) и (1.2) являются орцепями, а путь (1.3) не является таким, поскольку дуга ав в нем используется дважды.
Простой орцепью ) называется такой путь, в котором каждая вершина используется не более одного раза. Например, путь (1.2) является простой орцепью, а пути (1.1) и (1.3) — нет. Очевидно, что простая орцепь является также орцепью, но обратное утверждение неверно. Например, путь (1.1) является орцепью, но не простой орцепью, путь (1.2) является орцепью и простой орцепью, а путь (1.3) не является ни орцепью, ни простой орцепью. Маршрут есть неориентированный «двойник» пути, и это понятие рассматривается в тех случаях, когда можно пренебречь направ-
х) В оригинале используется термин «простой путь».— Прим. ред.
ленностью дуг в графе. Таким образом, маршрут есть последовательность ребер av а^ . . ., aq, в которой каждое ребро аь за исключением, возможно, первого и последнего ребер, связано с ребрами аг_х и #г+1 своими двумя концевыми вершинами. Последовательности дуг
#21^41^81^10» (1.4)
#2» ^7» ^8» ^4» «3 (^"^)
И
^10» ^7i ^4i ^8» ^7» ^2 (1*®)
в графе, изображенном на рис. 1.2, являются маршрутами; gepia над символу дуги^ означает. что_ ее_ ориентацией пренебрегают, т. е. дуга рассматривается как неориентированное ребро.
Точно так же, как мы определили орцепи и простые орцепи, можно определить цепи х) и простые цепи ). Так, например, маршрут (1.4) есть цепь и простая цепь, маршрут (1.5) — цепь, но не простая цепь, а маршрут (1.6) не является ни цепью, ни простой цепью.
Путь или маршрут можно изображать также последовательностью вершин, что мы и будем использовать. Путь (1.1) можно представить также последовательностью вершин z2, х5, х^ х3, х5, х6 и такое представление часто оказывается более полезным в тех случаях, когда осуществляется поиск простых орцепей или простых цепей.
Веса и длина пути
Иногда дугам графа G сопоставляются (приписываются) числа — дуге (х^ Xj) ставится в соответствие некоторое число с^, называемое весом, или длиной, или стоимостью (ценой) дуги. Тогда граф G называется графом со взвешенными дугами. Иногда веса (числа v^ приписываются вершинам хг графа, и тогда получается граф со взвешенными вершинами. Если в графе веса приписаны и дугам, и вершинам, то он называется просто взвешенным ).
При рассмотрении пути р, представленного последовательностью дуг (#п #2, . . ., #9), за его вес (или длину, или стоимость) принимается число I (р), равное сумме весов всех дуг ), входящих
в р, т. е.
1№= 2 си-
<Xf X^U
Таким образом, когда слова «длина», «стоимость», «цена» и «вес» применяются к дугам, то они эквивалентны по содержанию, и в каждом конкретном случае выбирается такое слово, которое
Рис. 1.3.
ближе подходит по смыслу и совпадает с принятым в литературе *).
Длиной (или мощностью) пути р называется число дуг, входящих в него ).
Петли, ориентированные циклы и циклы
Петлей называется дуга, начальная и конечная вершины которой совпадают. На рис. 1.3, например, дуги а2 и а5 являются петлями.
Путь av а2, . . ., aq называется замкнутым, если в нем начальная вершина дуги аг совпадает с конечной вершиной дуги aq.
*) В данном переводе мы применяем термин «длина» только в том случае, когда все дуги, входящие в путь р, имеют веса, равные 1, т. е. когда вес пути совпадает с его Элиной (мощностью).— Прим. реЭ.
Так, например, тельности дуг
в графе, приведенном на рис. 1.3, последова-
л3» «б*«1и(1.7)
^lli й3, ^4, Й7, А|, fli2> ^91(^*8)
Д3* ^4i ^71 ^101 ^9» ^Н(^‘^)
являются замкнутыми путями.
Пути (1.7) и (1.9) являются замкнутыми простыми орцепями (контурами, или простыми оруиклами), поскольку в них одна и та же вершина используется только один раз (за исключением начальной и конечной вершин, которые совпадают), а путь (1.8) не является контуром, так как вершина ^ используется в нем дважды !). Контур, проходящий через все вершины графа, имеет особое значение и называется гамильтоновым контуром ). Конечно, не все графы обладают гамильтоновыми контурами. Так, например, контур (1.9) является гамильтоновым контуром графа, приведенного на рис. 1.3, а граф на рис. 1.2 не имеет гамильтоновых контуров, поскольку не существует такой дуги, для которой хг была бы конечной вершиной.
Замкнутый маршрут является неориентированным двойником замкнутого пути. Таким образом, замкнутый маршрут является маршрутом xv х2, . . ., xq, в котором совпадают начальная и конечная вершины, т. е. в котором хг = xq.
На рис. 1.3 маршруты
ап а12, а10(Т10)
и
^10, а1> а3, ^4, Я;, й(, flj2(1.11)
являются замкнутыми маршрутами.
г) Замкнутый путь, в котором нет одинаковых дуг, но, вообще говоря, могут «повторяться» внутренние вершины пути (а не только первая и послед- няяГвершины), т. е. замкнутая орцепь, в оригинале данной книги называется простым замкнутым путем. Если же в замкнутом пути нет ни одинаковых дуг, ни одинаковых вершин (кроме первой и последней), то такой путь автор называет элементарным замкнутым путем. В нашем переводе мы будем называть замкнутую орцепь ориентированным циклом (или, короче, орциклом), а элементарный замкнутый путь — простым орциклом, или контуром.— Прим. ред.
Степени вершины
Число дуг, которые имеют вершину xt своей начальной вершиной, называется полустпепенъю исхода вершины хь и, аналогично, число дуг, которые имеют xt своей конечной вершиной, называется подустепенью захода вершины xt.
Таким образом, на рис. 1.3 полустепень исхода вершины х6, обозначаемая через dQ (хе), равна | Г (х6) | = 2, и полустепень захода вершины х6, обозначаемая через dt (х^, равна | Г-1 (х6) | = = 1.
Совершенно очевидно, что сумма полустепеней захода всех вершин графа, а также сумма полустепеней исхода всех вершин равны общему числу дуг графа G, т. е.
пп
2 d0(^i)= ^d^Xt^Tn,(1.12)
i=i|i=i
Где n — число вершин и m — число дуг графа G.
Для неориентированного графа G = (X, Г) степень вершины Xi определяется аналогично — с помощью соотношения d (xz) s = | Г (x() I, и когда не может возникнуть недоразумений, мы будем обозначать степень вершины xt через dj.f ^
Подграфы
Пусть дан граф' G = (X, А). Остовным подграфом *) Gp графа G называется граф (X, Ар), для которого Ар cz А. Таким образом, остовный подграф имеет то же самое множество вершин, что и граф G, но множество дуг подграфа Gp является подмножеством множества дуг исходного графа.
Граф на рис. 1.4(6) — остовный подграф Gp графа G, изображенного на рис. 1.4(a).
Пусть дан граф G = (X, Г). Порожденным подграфом ) G, называется граф (Х„ Га), для которого X, с X и для каждой вершины Xi £ Ха, Га (х,) = Г (х,) П Ха. Таким образом, порожденный подграф состоит из подмножества вершин X, множества вершин исходного графа и всех таких дуг графа G, у которых конечные и начальные вершины принадлежат подмножеству Ха. Часто бывает удобно обозначать подграф Ga просто символом (X,); мы будем в дальнейшем использовать такое обозначение, если нет опасности внесения путаницы.
На рис. 1.4(b) показан порожденный подграф графа, приведенного на рис. 1.4(a), содержащий только вершины xv х2, х3 и х4 и дуги, которые их связывают.
х) Автор применяет термин «частичный граф».— Прим. реЭ.
Рис. 1.4. (а) Граф, (б) Остовный подграф (в) Порожденный подграф, (г) Подграф.Рис. 1.4. (а) Граф, (б) Остовный подграф (в) Порожденный подграф, (г) Подграф.
Рис. 1.4. (а) Граф, (б) Остовный подграф (в) Порожденный подграф, (г) Подграф.
Рис. 1.4. (а) Граф, (б) Остовный подграф (в) Порожденный подграф, (г) Подграф.
Соединяя приведенные выше два определения, можно сформулировать определение подграфа ‘). Граф, показанный на рис. 1.4(г), является подграфом графа, приведенного на рис. 1.4(a).
Рассмотрим граф, вершины которого представляют сотрудников некоторого учреждения, а дуги — линии связи между сотрудниками. Тогда граф, представляющий только наиболее важные каналы связи данного учреждения, является остовным подграфом;, граф, который подробно представляет линии связи только какой- то части этого учреждения (например, отделения), является порожденным подграфом, а граф, который представляет только важные,- линии связи в пределах отделения, является подграфом.
Типы графов
Граф G = (X, Л) называют полным, если для любой пары вершин xt и ж; в X существует ребро (ж,-, х^ в G = (X, Л), т. е. для каждой пары вершин графа G должна существовать по край-
*) В оригинале используется термин «частичный подграф».— Прим, ped»
(d)(d)(в)(в)Рис. 1.5. (а) Симметрический граф, (б) Антисимметрический граф, (в) Полный симметрический граф, (г) Полный антисимметрический граф.Рис. 1.5. (а) Симметрический граф, (б) Антисимметрический граф, (в) Полный симметрический граф, (г) Полный антисимметрический граф.
(d)
(d)
(в)
(в)
Рис. 1.5. (а) Симметрический граф, (б) Антисимметрический граф, (в) Полный симметрический граф, (г) Полный антисимметрический граф.
Рис. 1.5. (а) Симметрический граф, (б) Антисимметрический граф, (в) Полный симметрический граф, (г) Полный антисимметрический граф.
ней мере одна дуга, соединяющая их. Полный неориентированный граф, построенный на и вершинах, обозначается через Кп.
Граф (X, А) называется симметрическим, если в множестве дуг А для любой дуги (жь х^ существует также противоположно ориентированная дуга (яу, х{\
Антисимметрическим графом г) называется такой граф, для которого справедливо следующее условие: если (хь Xj) 6 А то в множестве А нет противоположно ориентированной дуги, т. е. (х^, xt) $ А. Очевидно, что в антисимметрическом графе нет петель.
На рис. 1.5(a) показан симметрический граф, а на рис. 1.5 (б) — антисимметрический граф.
Рассмотрим следующий пример: множество вершин графа представляет группу людей, дуга, направленная от вершины xt к вершине хь означает, что xt является другом или родственником хр, тогда данный граф должен быть симметрическим. С другой стороны, если дуга, направленная от х, к х,, означает, что вершина х, подчинена вершине хь то такой граф должен быть антисимметрическим.
J) Применяется также термин «направленный граф»,— Прим. рей.
Комбинируя приведенные выше определения, можно дать определения полного симметрического графа (пример такого графа см. на рис. 1.5(b)) и полного- антисимметрического графа (один из таких графов показан на рис. 1.5(г)). Граф последнего типа часто называют также турниром.
Неориентированный граф G = (X, Л) называют двудольным, если множество его вершин X может быть разбито на такие два подмножества Ха и Хь, что каждое ребро имеет один конец в Ха, а другой в Хь. Ориентированный граф G называется двудольным, если его неориентированный двойник G — двудольный граф. Легко доказать следующее утверждение.
Теорема 1. Неориентированный граф G является двудольным тогда и только тогда, когда он не содержит циклов нечетной длины.
Доказательство. Необходимость. Поскольку X разбивается на две части Ха и Хь, то
XaUXb = X и ХаПХь=0. (1.13) Пусть существует цикл нечетной длины х, , х^, . . ., xt , xt , и, без потери общности, допустим, что xit £ Ха. Поскольку (согласно определению) одна из двух следующих друг за другом вершин этого цикла должна принадлежать Х°, а другая Хь, то имеем ^i2 € Xb, xia £ Ха и т. д. Следовательно, xift £ Ха, если к — нечетное, и xih £ Хь, если к — четное. Мы предположили, что длина цикла нечетная. Поэтому из соотношения х{ £ Х° следует, что Хц € Х\ Это противоречит (1.13), поскольку Х° f] Хь = 0 и вершина не может одновременно принадлежать как Х°, так и Хь.
Достаточность. Предположим, что в графе G не существует цикла нечетной длины. Выберем одну из вершин, например xt, и пометим ее плюсом « + ». Выполним следующую итерационную процедуру.
Берем уже помеченную вершину xt и помечаем все вершины из множества Г (хг) знаком, противоположным тому, который присвоен вершине xt.
Будем продолжать эту операцию до тех пор. пока или
все вершины не будут помечены, а знаки, приписанные им, согласованы (иными словами, любые две вершины, соединенные ребром, помечены противоположными знаками), или
некоторая вершина, например xlh, которая была уже помечена каким-то знаком («+» или «—»), может быть помечена теперь (со стороны другой вершины) знаком, противоположным приписанному вершине xih, или
для каждой помеченной вершины xt все вершины из множества Г (жг) уже помечены, но существуют другие, еще не помеченные вершины.
В случае (i) все вершины, помеченные знаком «+», отнесем к множеству Ха, а помеченные знаком «—» — к множеству Хь. Поскольку все ребра соединяют вершины, помеченные противоположными знаками, то граф является двудольным.
В случае (ii) вершина xih должна быть помечена знаком «+» на некотором маршруте (например, pj, состоящем из вершин xt , xiz, . . ., х£к; причем знаки «+» и «—», приписываемые этим вершинам при движении по маршруту щ (от вершины х^ к вершине xik), должны образовывать чередующуюся последовательность (вида +, —, +, . . . или —, +, —, . . .). Аналогично знаком «—» вершина xik помечается вдоль некоторого маршрута р2. Пусть х* — предпоследняя (последней является х^ общая вершина маршрутов рт и р2. Если вершина х* помечена знаком «+», то участок от х* до xik маршрута рт должен быть четным, а участок от х* до xtk маршрута р2 должен быть нечетным. Если же вершина х* помечена знаком «—», то участок маршрута р,2 будет нечетным, а маршрута р2 — четным. Следовательно, цикл, состоящий из участка маршрута щ, от х* до х1к, и соответствующего участка маршрута ц2, от xih до х*, имеет нечетную длину. Это противоречит предположению, что граф G не содержит циклов нечетной длины, и, значит, случай (ii) невозможен.
Случай (iii) означает, что между помеченной и не помеченной вершинами не существует ребра, т. е. что граф G распадается на две или больше частей, и каждая из них может тогда рассматриваться отдельно. Итак, в конце концов приходим к случаю (i) Теорема доказана.
Если нужно подчеркнуть, что граф является двудольным, то для графа применяют обозначение (Ха U Хъ, И), подразумевая, что выполняются также соотношения (1.13).
Двудольный граф G = (Ха (J Хь, А) называют полным, если для любых двух вершин xt С Ха и xj £ Хь существует ребро (xt, Xj) в G = (X, А). Если | № | — число вершин множества Ха — равно г и | Хь | = s, то полный неориентированный двудольный граф G = (Xе L) Хь, А) обозначается через KT1S.
Граф G = (X, А) называется планарным, если он может быть нарисован на плоскости (или сфере) таким образом, что произвольные две дуги графа не пересекаются друг с другом г). На рис. 1.6(a)
1)’То есть если точка плоскости (или сферы) принадлежит нескольким дугам графа (двум или большему числу), то она не является внутренней точкой никакой дуги графа.— Прим. ред.
показан полный граф К5, а на рис. 1.6(6) — полный двудольный граф ^3.3, которые, как известно, являются непланарными [1, 3].
[Рис. 1.6. Непланарные графы Куратовского. (а) Кь. (б) Кзл.
Эти два графа играют важную роль в теории планарных графов и известны как графы Куратовского.
Сильно связные графы и компоненты графа
Ориентированный граф называется сильно связным или сильным, если для любых двух различных вершин xt и xj существует по крайней мере один путь, соединяющий xt с Xj. Это определение означает также, что любые две вершины такого графа взаимно достижимы.
Ориентированный граф называется односторонне связным или односторонним, если для любых двух различных вершин xt и Xj существует по крайней мере один путь из xt в Xj или из х; в х, (или оба одновременно).
Ориентированный граф называют слабо связным или слабым, если для любых двух различных вершин графа существует по крайней мере один маршрут, соединяющий их.
Если для некоторой пары вершин орграфа не существует маршрута, соединяющего их, то такой орграф называется несвязным [2].
Граф, приведенный на рис. 1.7(a), как легко проверить, сильно связный. Граф, показанный на рис. 1.7(6), не является сильным (так как в нем нет пути из хг в х3), но односторонне связный. Граф, изображенный на рис. 1.7(b), не является ни сильным, ни односторонним, поскольку в нем не существует путей от х2 к х5 и от х5 к х2. Он — слабо связный. Наконец, граф, приведенный на рис. 1.7(г), является несвязным.
Пусть дано некоторое свойство Р, которым могут обладать графы. Максимальным подграфом графа G относительно свойства
Р называется порожденный подграф (Хв) графа G, обладающий этим свойством и такой, что не существует другого порожденного подграфа (АД у которого Xs zd Xs и который также обладает свойством Р. Так, например, если в качестве свойства Р взята
Рис. 1.7. (а) Сильно связный граф, (б) Односторонне связный граф, (в) Слабо связный граф, (г) Несвязный граф.
сильная связность, то максимальным сильным подграфом графа G является сильный подграф, который не содержится в любом другом сильном подграфе. Такой подграф называется сильной компонентой графа G. Аналогично, односторонняя компонента представляет собой односторонний максимальный подграф, а слабая компонента — максимальный слабый подграф.
Например, в графе G, приведенном на рис. 1.7(6), подграф ({^1, х^ х^ од}) является сильной компонентой графа G. G другой стороны, подграфы ({од, од}) и ({^n ОД, од}) не являются сильными компонентами (хотя и являются сильными подграфами), поскольку они содержатся в графе ({од, х^ х&, хв^ и, следовательно, не максимальные. В графе, показанном на рис. 1.7(b), подграф ({од, од, од}) является односторонней компонентой. В графе, приведенном йа рис. 1.7(г), оба подграфа ({од, х5, хв}) и ({ОД, ОД, ОД}) являются слабыми компонентами, и у этого графа только две такие компоненты.
Из определений сразу же следует, что односторонние компоненты графа могут иметь общие вершины. Сильная компонента должна содержаться по крайней мере в одной односторонней компоненте, а односторонняя компонента содержится в некоторой слабой компоненте данного графа G.
Матричные представления
Для алгебраического задания графов удобно использовать- следующие матрицы.
Матрица смежности
Пусть дан граф G, его матрица смежности обозначается через А = [а^] и определяется следующим образом:
а^ = 1, если в G существует дуга (zf,3:y), ai; = 0, .'если в G нет дуги (а^/яД.
Таким образом, матрица смежности графа, изображенного на рис. 1.8, имеет вид
xt х2 х3 х4 х5 х6
*1
Х2
А = Хз
Х5
Х6
011000
010010
000000
001000
100100
100011
Матрица смежности полностью определяет структуру графа. Например, сумма всех элементов строки xt матрицы дает полустепень исхода вершины х^, а сумма элементов столбца xt — полустепень захода вершины Х;. Множество столбцов, имеющих 1 в строке хь есть множество Г (х^, а множество строк, которые имеют 1 в столбце хь совпадает с множеством Г-1 (хг\
Возведем матрицу смежности в квадрат. Пусть элемент а$ матрицы А2 определяется по формуле
п
а1Г = 3 аиа^'(1.14у
5=1
Слагаемое в уравнении (1.14) равно 1 тогда и только тогда, когда оба числа аи и ajh равны 1, в противном случае оно равно О-
Поскольку из равенств а<у = я>А = 1 следует существование пути длины 2 из вершины xt к вершине хкч проходящего через вершину Xj, то а^' равно числу путей длины 2, идущих из ж, в хк.
Рис. 1.8.
. Аналогично если а^' является элементом матрицы Ар, то е а^р) равно числу путей (не обязательно орцепей или простых орце- лей) длины р, идущих от xt к хк.
Матрица инциденций
Пусть дан граф Gen вершинами и т дугами. Матрица инциденций графа G обозначается через В = [&4у] и является матрицей размерности п х т, определяемой следующим образом: btj = 1, если xt является начальной вершиной дуги а,, Ьц = —1» если xt является конечной вершиной дуги а/, Ъи = 0, если Xf не является концевой вершиной дуги а^ или если а, является петлей.
Для графа, приведенного на рис. 1.8, матрица инциденций имеет вид
«1
°2
«3
«4
«5
«6
fl7
°8
а9
°10
Х1
1
1
0
0
0
0
0
-1
-1
0
Х2
-1
0
0
1
0
0
0
0
0
0
х3
0
-1
0
0
-1
0
0
0
0
0
^4
0
0
0
0
1
-1
0
0
0
0
*5
0
0
0
-1
0
1
-1
1
0
0
Х6
0
0
0
0
0
0
1
0
1
0
Поскольку каждая дуга инцидентна двум различным вершинам, за исключением того случая, когда дуга образует петлю, то каж-
дый столбец либо содержит один элемент, равный 1, и один — равный —1, либо все элементы столбца равны 0.
Если G является неориентированным графом, то его матрица пицидАпций определяется так же, как и выше, за исключением того, что все элементы, равные —1, заменяются на 4-1.
Задачи
Для графа, приведенного на рис. 1.9, найти
Г (я2),(д) d0 (х2),
Г-1 (х2),(е) dt (х2),
Г2 (z2),(ж) матрицу смежности А,
Г-2 (х2),(з) матрицу инциденций В.
Для графа G = (X, А), изображенного на рис. 1.9, описать (а) порожденный подграф ({^ц хг, х^ х5^\
остовный подграф (X, А'), где (xb Xj) £ А' тогда и только тогда, когда I 4- 7 нечетно,
остовный подграф подграфа из (а), определенный так же, как в пункте (б).
Для неориентированного графа доказать, что в нем число вершин с нечетной степенью четно. (Нуль — четное число.)
Показать, что любой полный симметрический граф содержит гамильтонов цикл.
Показать, что ранг матрицы инциденций В связного графа с п вершинами равен п — 1; затем доказать, что ранг матрицы инциденций В графа с Р (слабыми) компонентами равен п —Р.
Доказать, что неориентированный связный граф остается связным после удаления некоторого ребра тогда и только тогда, когда это ребро принадлежит какому-нибудь циклу данного графа.
Доказать, что неориентированный граф с п вершинами
содержит по крайней мере п — 1 ребер,
если содержит более, чем п — 1 ребер, то имеет по крайней мере один цикл.
Список литературы
Берне К. (1962), Теория графов и ее применения, ИЛ, М.
Нагагу F., Norman R. Z., Cartwright D. (1965), Structural models: An introduction to the theory of directed graphs, Wiley, New York.
Kuratowski K. (1930), Sur le probleme des courbes gauches en topologie. Fund. Math., 15—16, n. 271.
Roy B. (1969, 1970), Algebre moderne et th^orie des graphes, Vol. 1 (1969).
Vol. 2 (1970), Dunod, Paris.
5*. Харари Ф., Теория графов, M., «Мир», 1973.
Глава 2
ДОСТИЖИМОСТЬ и связность
Введение
В предыдущей главе отмечалось, что систему связи любой организации можно интерпретировать как граф, в котором люди представлены вершинами, а каналы связи дугами. Естественно при рассмотрении такой системы поставить вопрос, может ли информация от одного лица xt быть передана другому лицу х,, т. е. существует ли путь, идущий от вершины х^ к вершине Xj. Если такой путь существует, то говорят, что вершина Xj достижима из Xi. Можно интересоваться достижимостью вершины Xj из вершины Х{ только на таких путях, длины которых не превосходят заданной величины. Целью этой главы является обсуждение некоторых фундаментальных понятий, касающихся достижимости и свойств связности графов, а также введение ряда весьма важных алгоритмов.
На языке графов, представляющих организации, в настоящей главе рассматриваются следующие вопросы:
Каково наименьшее число сотрудников, для которых каждый другой сотрудник в этой организации может быть достижим?
(И) Каково наибольшее число сотрудников, которые взаимно достижимы?
Как между собой связаны вопросы (i) и (И)?
контрадостижимостейконтрадостижимостейМатрицы достижимостей и
контрадостижимостей
контрадостижимостей
Матрица достижимостей R = [г^]Матрица достижимостей R = [г^]образом:образом:определяется следующимопределяется следующим
Матрица достижимостей R = [г^]
Матрица достижимостей R = [г^]
образом:
образом:
определяется следующим
определяется следующим
[ 1, если вершина х} достижима из хь [ 0 в противном случае.
Множество вершин R (х^ графа G, достижимых из заданной вершины хь состоит из таких элементов Xj, для которых (г, /)-й элемент в матрице достижимостей равен 1. Очевидно, что все диагональные элементы в матрице R равны 1, поскольку каждая вершина достижима из себя самой с помощью пути длины 0.
Поскольку Г (х^) является множеством таких вершин х^ которые достижимы из xt с использованием путей длины 1 (т. е. Г (xt) — такое множество вершин, для которых в графе существуют дуги ^хь Xj)) и поскольку Г (xj) является множеством вершин, достижимых из ^ с помощью путей длины 1, то множество Г (Г (х^) = Г2 (xt) состоит из вершин, достижимых из Xj с'использованием путей длины 2. Аналогично Гр ^х^ является множеством вершин, которые достижимы из xt с помощью путей длины р.
Так как любая вершина графа G, которая достижима из хь должна быть достижима с использованием пути (или путей) длины 0, или 1, или 2, . . ., или р (с некоторым конечным, но, возможно, достаточно большим значением р), то множество вершин, достижимых из хг, можно представить в виде
*(*i) = WUH^)U^^ и e^U^to)-*(2.1)
Таким образом, множество R (xt) может быть получено последовательным выполнением (слева направо) операций объединения в соотношении (2.1), до тех пор, пока «текущее» множество не перестанет увеличиваться по размеру при очередной операции объединения. С этого момента последующие операции не будут давать новых членов множеству и, таким образом, будет образовано достижимое множество R (xj. Число объединений, которое нужно выполнить, зависит от графа, но, очевидно, что число р меньше числа вершин в графе.
Матрицу достижимостей можно построить так. Находим достижимые множества R (xj для всех вершин xt £ X способом, приведенным выше. Положим r^ = 1, если х5 £ R (а:г), и г^ = 0 в противном случае. Полученная таким образом матрица R является матрицей достижимостей.
Матрица контрадостижимостей *) Q = [7^] определяется следующим образом:
| 1, если из вершины Xj можно достигнуть вершину х^ ^ I 0 в противном случае.
Контрадостижимым множеством Q ^х^ графа G является множество таких вершин, что из любой вершины этого множества можно достигнуть вершину хг. Аналогично построению достижимого множества 7? (xj на основе соотношения (2.1) можно «сформировать» множество Q ^х^, используя следующее выражение:
^(^•) = {^}иг-4^)иг-2(^)ииг-р(^)-(2.2)
где Г-2(хг) = Г-1(Г"1(^)) и т. д.
г) В оригинале применяется термин «reaching matrix». Мы будем использовать также термин «матрица обратных достижимостей».— Прим. ред«-
Операции выполняются слева направо до тех пор, пока очередная операция объединения не перестанет изменять «текущее» множество Q (х^).
Из определений очевидно, что столбец xt матрицы Q (в котором ди = 1, если xj £ Q (х^, и ди = 0 в противном случае) совпадает со строкой xt матрицы R, т. е. Q = R\ где Rf — матрица, транспонированная к матрице достижимостей R.
2Л. Пример
Найти матрицы достижимостей и обратных достижимостей для графа G, приведенного на рис. 2.1. Матрица смежности графа
Рис. 2.1.Рис. 2.1.
Рис. 2.1.
Рис. 2.1.
находятся с помощью соотношенаходятся с помощью соотноше
находятся с помощью соотноше
находятся с помощью соотноше
xf х2 х3 Х4 х5 х6 х7
*1
"0100100"
Х2
0101000
Х3
А =
4
0001000
0000100
Х5
0000100
Х6
0010001
х7
0001010_
(7 имеет вид
Множества достижимостей
ния (2.1):
R (х^ = ^,} U {^2. ^5} U ^2, ^4. *5} U {^2. ^4, ^5} =
R (^ = {х2} U {х2, ^4} U {^2, ^41 *5} U {^2, ®4. х&} =
= {х2, Х4, Z5},
R (^а) = W и {^4} U {Z5} и <^5> =
= {^з. ^i ^sli
R (^4) = {^4} U {^s} U {*5} =
= {^4.^s}.
fl(Z5) = {z5}U{^5} =
= {^5},
R (^e) = {*e} U {^3» z7} IJ {Z4, яв} J {2:3, x5, z7} (J {x„ x5, ze} = = {-^З» ^l ^Sf xe, Ж7},
R (z7) = {x7} (J (ац, z0} U {^3- ^s. z7} J k4. x5l xe} =
= {iTj, £4, Xj, Xg, z7}
Следовательно, матрица достижимостей имеет вид
Х1
Х2
хз
Х4
Х5
х6
X?
Х1
1
1
0
1
1
0
о"
х2
0
1
0
1
1
0
0
хз
0
0
1
1
1
0
0
R = х4
0
0
0
1
1
0
0
Х5
0
0
0
0
1
0
0
Х6
0
0
1
1
1
1
1
Х7
0
0
1
1
1
1
1
матрица обратных достижимостей такова:
Х1 х2 хз Q = R' = х4
Х5 Х6
X?
X, х2 х3 х4 х5 х6 х7 "1000000
1100000
0010011
1111011
1111111 0000011
0000011
Следует отметить, что поскольку все элементы матриц R и Q равны 1 или 0, то каждую строку можно хранить в двоичной форме, используя одно (или больше) машинных слов. Таким
образом, нахождение матриц R и Q с вычислительной точки зрения является довольно простой задачей, поскольку объединение множеств в соответствии с выражениями (2.1) и (2.2) и сравнение «текущих» множеств после каждого объединения, проводимое для выяснения необходимости продолжения процесса построения соответствующих множеств,— все это можно осуществить на ЭВМ с помощью одной логической операции 1).
Так как R (z{) является множеством вершин, достижимых из z4, a Q (Zj) — множеством вершин, из которых можно достигнуть Xj, то R (z,) П О (fy) — множество таких вершин, каждая из которых принадлежит по крайней мере одному пути, идущему от z; к xj. Эти вершины называются существенными или неотъемлемыми относительно двух концевых вершин xt и х3 [7]. Все остальные вершины xh $ R (z,) f) Q (z,) называются несущественными или избыточными, поскольку их удаление не влияет на пути ОТ Xt К Xj.
Матрицы достижимостей и обратных достижимостей, определенные выше, являются полными в том смысле, что на длины путей от Xt к х3 не накладывались никакие ограничения. С другой стороны, можно определить матрицы ограниченных достижимостей и контрадостижимостей — надо потребовать, чтобы длины путей не превышали некоторого заданного числа. Эти ограниченные матрицы тоже могут быть построены с помощью соотношений (2.1) и (2.2) — надо действовать точно так, как раньше, при нахождении «неограниченных» матриц, но только теперь р будет верхней границей длины допустимых путей.
Граф называют транзитивным, если из существования дуг (z,, Xj) и (xj, xh) следует существование дуги (z^ хк). Транзитивным замыканием графа G = (X, А) является граф Gtc = = (Х, Л (J Л'), где А' является минимально возможным множеством дуг, необходимых для того, чтобы граф Gtc был транзитивным. Так как путь от xt к Xj в графе G должен соответствовать дуге (z£, Xj) в Gtc, то совершенно очевидно, что матрица достижимостей R графа G почти полностью совпадает с матрицей смежности А графа Gtc — надо только в матрице А поставить на главной диагонали единицы.
Нахождение сильных компонент
Сильная компонента (СК) графа G была определена в предыдущей главе как максимальный сильно связный подграф графа G. Поскольку в сильно связном графе произвольная вершина Xj достижима из любой другой вершины zf, то в ориентированном
х) В гл. 7, посвященной изучению деревьев, приводятся другие способы построения множеств R (яг) и Q (z;). Эти способы базируются на процедуре расстановки пометок в вершинах графа (пометки ставят начиная с вершины х^.
графе существует одна и только одна СК, содержащая данную вершину хь В самом деле, если бы вершина xt принадлежала двум или большему числу сильных компонент, то существовал бы путь из любой вершины одной СК в произвольную вершину другой СК и, следовательно, объединение этих сильных компонент было бы сильно связным графом, что противоречит определению СК.
Если вершина х^ одновременно является начальной и конечной вершиной пути, то множество вершин, существенных относительно этих двух идентичных концов (т. е. множество вершин некоторого цикла, содержащего х^ совпадает с пересечением 7? (х^ р П^(^г)- Поскольку все эти существенные вершины достижимы из Xi и, кроме того, из каждой такой вершины достижима вершина xtl то все они взаимно достижимы. Более того, если нет другой вершины, существенной относительно концов xt и хь то множество R (х^ П Q (^z), которое может быть построено с использованием соотношений (2.1) и (2.2), однозначно определяет СК графа G, содержащую вершину хь
Если эти вершины удалить из графа G = (X, Г), то в оставшемся порожденном подграфе G' = (X — 7? (zz) П Q (t)} можно таким же способом выделить новую СК, содержащую х5 £ X — — R (х^ Q Q (^z)- Эту процедуру можно повторять до тех пор, пока все вершины графа G не будут сгруппированы в соответствующие СК. После завершения этой процедуры граф G будет разбит на свои сильные компоненты [3].
Граф G* = (X*, Г*) определяется так: каждая его вершина представляет множество вершин некоторой сильной компоненты х) графа G, дуга (z*, х*) существует в G* тогда и только тогда, когда в G существует дуга (z^, Xj), такая, что Xt принадлежит компоненте," соответствующей вершине z*, а х5 —- компоненте, соответствующей вершине z*. Граф G* называют конденсацией графа G.
Совершенно очевидно, что конденсация G* не содержит циклов, поскольку наличие цикла означает, что любые вершины этого цикла взаимно достижимы, а поэтому совокупность всех вершин цикла принадлежит некоторой СК в G* и, следовательно, содержится в СК графа G, что противоречит определению конденсации, в силу которого вершины из G* соответствуют СК в G.
3.1. Пример
Для графа G, приведенного на рис. 2.2, найти сильные компоненты и построить конденсацию G*.
Найдем СК в G, содержащую вершину xv
Из соотношений (2.1) и (2.2) получаем
/? (Xj)Х2, Z4, £5,Х-^ Х§, Xq^ -^ю}
И
Q (*^1){*^11 ^27 ^37 ^5i ^б}1
Следовательно, СК, содержащая вершину хъ является порожденным подграфом
(7? (^i) П Q (#j)) = ({^f, х^ z5, ^б}).
Аналогично, СК, содержащая вершину x8l есть порожденный подграф ({х8, х10}),СК содержащая х7 — подграф <{д?4, х^ х9)\
СК, содержащая хи,— подграф <{2-и, z12, х13}} и СК, содержащая я3,—подграф ({а"3}). Следует отметить, что последняя СК состоит из единственной вершины графа G.
Конденсация G* приведена на рис. 2.3.
Процедуру, описанную выше и связанную с нахождением СК графа, можно сделать более удобной, если непосредственно использовать матрицы R и Q, определенные в предшествующем разделе. Пусть запись R® Q означает поэлементное умножение этих матриц; тогда сразу видно, что строка xt матрицы R ® Q содержит единицы только в тех столбцах х,, для которых выполняется условие: вершины х{ и ж, взаимно достижимы; в других местах строки xt стоят нули. Таким образом, две вершины находятся в одной и той же СК тогда и только тогда, когда соответствующие им струни (или столбцы) в матрице R ® Q идентичны. Вершины, которым соответствуют строки, содержащие 1 в столбце х,, образуют множество вершин СК, содержащей Xj. Отсюда мгновенно следует, что матрицу R ® Q можно преобразовать путем транспонирования строк и столбцов в блочно-диагональную ; каждая из диагональных подматриц этой матрицы соответствует СК графа G и содержит только единичные элементы; все остальные элементы блочно-диагональной матрицы равны нулю. Для приведенного ранее примера матрица R ® Q, преобразованная соответствующим образом, имеет вид
Базы
База х) В графа есть множество вершин, из которого достижима любая вершина графа и которое является минимальным в том смысле, что не существует собственного подмножества в В, обладающего таким свойством достижимости. Если мы обозначим через В (В) множество вершин, достижимых из вершин множества В, т. е.
R(B) = [^В(х^,(2 3)
то В является базой тогда и только тогда, когда
В^В^Х и VS cz В (В (5)X).(2.4)
Второе условие (7? (5) =^ X 4S с В) в соотношении (2.4) эквивалентно утверждению: х} $ В ^t) для любых двух различных ^г, ^j 6 В, т. е. вершина из В не достижима из любой другой вершины В. Эта эквивалентность может быть обоснована следующим образом. Поскольку для любых двух множеств Н и Н' ^Н мы имеем, что В (Н') Е В (77), то условие В (S) ^ X \/S cz В эквивалентно соотношению В (В — (^Д) #= X для всех xj £ В; другими словами, В (х/) ^ В (В — {.гД). Последнее условие может быть выполнено тогда и только тогда, когда Xj $ В кВ — — {<,}), т. е. тогда и только тогда, когда х, $ В (xt) для любых xt, Xj С В.
Итак, базой является такое множество В вершин графа G, которое удовлетворяет следующим двум условиям:
каждая вершина графа G достижима хотя бы из одной вершины множества В и
в В нет вершины, которая достижима из другой вершины множества В.
Из этих двух условий мгновенно получаются следующие утверждения:
в множестве В нет двух вершин, которые принадлежат одной и той же СК графа G,
в любом графе без циклов существует единственная база; она состоит из всех таких вершин графа, полустепени захода которых равны 0.
Доказательства этих двух утверждений простые и непосредственно следуют из определений. (См. задачи 2.3 и 2.4.)
Таким образом, в силу утверждений (а) и (б) база В* конденсации G* графа G состоит из таких вершин графа G*, полустепени
Ч Или вершинная база.— Прим. ред.
захода которых равны 0. Следовательно, базы графа G можно строить так: из каждой СК графа G, соответствующей вершине базы В* конденсации G* надо взять по одной вершине, т. е. если В* = {5Х, 1?2, . . ., 5т}, где т — число вершин-множеств Sj в базе В* графа G*, то базой В является произвольное множество {■^ij» Х^ • • •» ^т^' ГДе Х^. £ Sj.
4Л* Пример
Для графа G, приведенного на рис. 2.2, конденсация G* показана на рис. 2.3. Базой графа G* является множество {я*, я*}, поскольку х* и х* — единственные вершины в G* с полустепенями захода, равными 0. Базами графа G являются {z3, хп}, {z3, я12} И {z3, #13}.
Понятие, двойственное понятию базы, можно дать следующим образом на языке контрадостижимых множеств Q (х^.
Антибаза В есть множество вершин графа G = (X, Г), таких, что
Q(b) == х
и<2-5)
VS е В, Q (S) ^ X,
т. е. В есть такое минимально возможное множество вершин, что какова бы ни была вершина графа G, из нее достижима некоторая вершина в В. Свойства антибаз аналогичны свойствам баз, надо только «прямые» понятия заменить на двойственные. Например, соотношения (2.5) эквивалентны двум условиям, подобным (i) и (п), приведенным выше, необходимо лишь заменить В на В и сделать другие «двойственные» преобразования ).
Таким образом, антибаза конденсации G* есть множество вершин в G*s полустепени исхода которых равны 0, и антибазы самого графа G строятся из антибазы графа G* путем выбора по одной вершине в каждой вершине-множестве антибазы В* — подобно тому, как это делалось раньше для баз.
В примере с графом G, изображенным на рис. 2.2, конденсация G* (рис. 2.3) содержит только одну вершину х* с полустепенью исхода, равной 0. Таким образом, антибаза графа G* есть {.г*}, а антибазами графа G являются множества {^4}, {^7} и {х9}.
Применение к исследованию структуры организаций
Если граф G представляет структуру руководства или влияний некоторой организации, то члены каждой сильной компоненты графа G имеют равную власть или равное влияние друг на друга, как это может быть, например, для случая комитета. Базу графа G можно интерпретировать как «коалицию», включающую наименьшее число лиц, обладающих властью над каждым членом организации [2, 3].
Пусть на множестве вершин, представляющих членов той же самой организации, построен новый граф G', отображающий каналы связи, так что каждая дуга (zf, х^ означает, что хг может связываться с Хр Граф G', конечно, каким-то образом связан с графом G, но совсем не очевидным образом. Наименьшее число лиц, которые знают или могут получить все сведения об организации, образует одну из антибаз графа G'. Можно утверждать, что эффективная для управления этой организацией коалиция будет множеством лиц Н, определяемым следующим соотношением:
Н-В^ЦВ^(2.6)
где В (G) и В (G') — одна из баз графа G и одна из антибаз графа G\ выбранные так, чтобы |Я|—число людей в Н — было минимальным.
Приведенное выше описание организации с использованием языка теории графов является, конечно, сильно упрощенным. Один из недостатков, который сразу бросается в глаза, состоит в том, что нежелательно, чтобы лицо, не входящее в В, имело бы власть над лицом из В.
Следовательно, можно определить сильную базу т) как такое множество вершин Вр^ X, что
В (Вр) = X, Q (Вр) = Вр(2.7а)
и
BXS)^X X/SczBp.(2.76)
Вторая часть условия (2.7а) выражает тот факт, что только лица из Вр могут иметь власть над другими лицами, также принадлежащими Вр, и может быть заменено эквивалентным условием R {X —Вр) П Вр = 0. Это условие означает, что если вершина из СК графа G входит в Вр, то и каждая вершина из той же самой СК должна входить в Вр. Поскольку база в G* есть множество таких вершин, полустепени захода которых равны 0, т. е. ни одна из этих вершин не достижима ни из какой другой вершины графа, то сильная база в G есть объединение множеств вершин базы гра-
х) В оригинале «power-basis».— Прим. ред.
фа G*, т. е.
Sp= U St. (2.8) s^b*
Для графа, приведенного в примере 4.1 (рис. 2.2 и 2.3), сильная база G есть {ж3, zn, z12, з?13}. Можно отметить, что, если этот граф представляет организацию, то х3 можно рассматривать как руководителя, обладающего властью над всеми множествами лиц х*, х^ и а?*, в то время как {а:11, ж12, а:13} можно рассматривать как комитет, имеющий власть над двумя множествами лиц х* и х^.
Задачи, связанные с ограниченной достижимостью
В предыдущем разделе при определении базы мы исходили из неограниченных достижимых множеств. Если рассматривать ограниченную достижимость, т. е. использовать пути ограниченной длины (как упоминалось ранее в разд. 2), и определят!, ограниченную базу, опираясь на ограниченную достижимость, то возникают осложнения двух типов.
Понятия сильной компоненты и конденсации, которые упрощают решение задачи определения баз в случае неограниченной достижимости, теперь использоваться не могут. Распространение этих понятий на случай ограниченной достижимости не дает существенного упрощения задачи.
В случае когда достижимость ограничена путями единичной длины (просто дугами), ограниченные базы называют минимальными доминирующими множествами. Мы подробно рассматриваем их в гл. 3. В случае когда достижимость ограничена, скажем, q дугами *), граф G' может быть определен как граф, множество вершин которого то же самое, что и у графа G, а дуга (х,, Xj) существует в G* тогда и только тогда, когда в G найдется путь между вершинами xt и х, длины, не больше чем q (см. соотношение 2.1). Ограниченная матрица достижимостей графа G соответствует тогда матрице смежности графа G'; граф G' может быть назван ограниченным транзитивным замыканием графа G (в соответствии с определением транзитивного замыкания, приведенным в разд. 2). Задача определения ограниченных баз графа G эквивалентна задаче нахождения минимальных доминирующих множеств графа G'.
В неограниченном случае различные базы имеют одно и то же число элементов; оно равно числу таких вершин в конденсации графа, которые имеют нулевые полустепени захода. В огра-
1 То есть рассматриваются только пути, длины которых не превосходят q.— Прим. ред.
диченном случае, однако, разные базы могут иметь различное число элементов, и тогда возникает, в частности, задача нахождения базы с наименьшим числом элементов. Еще один подход: если не наложено ограничение на достижимость, то можно искать такую ограниченную базу, которая содержит, например, ровно р вершин и, кроме того, из вершин этой базы все остальные вершины графа G могут быть достигнуты с минимально возможной ограниченностью достижимости. Эти задачи тесно связаны с задачей нахождения р-центра и более детально рассматриваются в гл. 4.
Задачи
Для графа, приведенного на рис. 2.4, найти матрицы достижимостей и контрадостижимостей.
Для графа, приведенного на рис. 2.4, найти сильные компоненты, начертить конденсацию и построить все его базы.
Доказать, что в любом графе G каждая его база содержит все вершины, имеющие нулевые полустепени захода.
Доказать, что в любом графе без циклов имеется только одна база. Она состоит из всех вершин с нулевыми полустепенями захода.
Показать, что любые две базы графа G имеют одно и то же число вершин.
Доказать, что вершина xt принадлежит одновременно базе В и антибазе В графа G тогда и только тогда, когда сильная компонента, содержащая xt, соответствует изолированной вершине в конденсации G*.
Показать, что если zf есть такая вершина графа (X, А), на которой достигается
max | R (жг) |,
то zz принадлежит базе.
Пусть все арифметические операции, рассматриваемые ниже, являются булевскими (т. е. 0 + 0 = 0, 0 + 1 = 1+0 = 1, 1 + 1 = 1, 0-0 = 0*1 = 0 и 1*1 = 1). Показать, что если рассматривать достижимость только на путях длины не больше чем q, то матрица R9 ограниченных достижимостей дается формулой
Rg = I + A + A^+ ... +А9 = (1 + А)9,
где I — единичная ^п X п)-матрица.
Показать, что элемент г^Р матрицы R2 равен числу вершин в сильной компоненте, содержащей вершину хь
Список литературы
Chen Y. С., Wing О. (1964), Connectivity of directed graphs, Proc, of Allerton Conference on Circuit and System Theory, Univ, of Illinois.
Flament C. (1963), Applications of graph theory to group structure, Prentice-Hall, Englewood Cliffs, New Jersey.
Harary F., Norman R. Z., Cartwright D. (1965), Structural models: An introduction to the theory of directed graphs, Wiley, New York.
Лейфман Л. Я. (1966), Эффективный алгоритм разбиения ориентированного графа на бикомпоненты, Кибернетика, 2, стр. 19.
Marimont R. В. (1959), A new method of checking the consistency of precedence matrices, J. of ACM, 6, p. 164.
Moyles D. M., Thompson G. L. (1969), An algorithm for finding a minimum equivalent graph of a digraph, J. of ACM, 16, p. 455.
Ramamoorthy С. V. (1966), Analysis of graphs by connectivity considerations, J. of ACM, 13, p. 211.
Глава 3
НЕЗАВИСИМЫЕ И ДОМИНИРУЮЩИЕМНОЖЕСТВА. ЗАДАЧА
О ПОКРЫВАЮЩИХ МНОЖЕСТВАХ
Введение
Пусть дан граф G = (X, Г). Довольно часто возникает задача поиска таких подмножеств множества вершин X графа G, которые обладают определенным, наперед заданным свойством. Например, какова максимально возможная мощность такого подмножества S ^ X, для которого порожденный подграф (5) является полным? Или какова максимальная мощность подмножества 5, такого, что граф (5) — вполне несвязный? Ответ на первый вопрос дает так называемое кликовое число графа G, а на второй — число независимости *). Еще одна задача. Она состоит в нахождении минимально возможной мощности таких подмножеств 5 множества X, что любая вершина из X — S достижима из 5 с помощью путей единичной длины. Решение этой задачи дается так называемым числом доминирования графа G.
Эти числа и связанные с ними подмножества вершин описывают важные структурные свойства графа и имеют разнообразные непосредственные приложения при ведении проектного планирования исследовательских работ [3], в кластерном анализе и численных методах таксономии [36, 2], параллельных вычислениях на ЭВМ [17], при размещении предприятий обслуживания, а также источников и потребителей в энергосистемах [66, 56].
Г В настоящей главе приводятся алгоритмы определения указанных выше чисел и обсуждаются некоторые их приложения. Кроме того, рассматривается задача о наименьшем покрытии, которая являетс^обобшёниёМ Задачи о нахождении числа доми- нпривания графа, и излагается некоторый метод ее решения. Последняя задача очень важна не только потому, что она имеет большое число прямых приложений, но и в связи с тем, что она часто возникает как подзадача в ряде разделов теории графов, которые затронуты в этой книге. В частности, большую роль она играет при вычислении хроматических чисел (гл. 4), нахождении центров графа (гл. 5) и паросочетаний (гл. 12).
Применяются также и другие названия: «вершинное число независимости» И «число внутренней устойчивости».— Прим. ред.
(3.3)(3.3)
(3.3)
(3.3)
Независимые множества
Г Рассмотрим неориентированный граф G = (X, Г). Независимое множество вершин (известное также как внутренне устойчивое \ множество [11]) есть множество вершин графа G, такое, что любые две вершины в нем не смежны, т. е. никакая пара вершин не соединена ребром. Следовательно, любое множество S с X, которое удовлетворяет условию __-
isn£G^=0j(3.1)
является независимым множеством вершин. Например, для графа, приведенного на рис. 3.1, множества вершин {ж7, х8, ж2}, {z3, .rj, {tr7, х8, x2, x5} — независимые. Когда не могут возникнуть недоразумения, эти множества будут называться просто независимыми множествами (вместо независимые множества вершин).
Независимое множество называется максимальным, когда нет другого независимого множества, в которое оно бы входило. Таким образом, множество S является максимальным независимым множеством, если оно удовлетворяет условию^. 1) и ещетакому условию:
Н(\Г<Н^0 X/Hz^S.(3.2)
Следовательно, для графа, приведенного на рис. 3.1, множество {ж7, xg, хг, £5} является максимальным, a {z7, х8, х^ не является таковым. Множества {ж,, х3, х7} и {ж4, х^ также являются макси- / мальными—независимыми множествами, и, значит, в данном ' графеС^ольше одной) независимого множества. Следует также отметить, что цисло элементов (вершин) в разных максимальных множествах, как следует из приведенного выше примера, не обя- зательно одинаковой"''
Если Q является семейством всех независимых множеств
графа G, то число
a [G] = max | S |seQ
называется (числом независимости графа G,l а множество S*, на котором этот макбимум достигается, называется наибольшим независимым множеством.
Для графа, приведенного на рис. 3.1, семейство максимальных независимых множеств таково:
{х8, х7, х2, г5}, {rj, х3, £7}, {ж2, х^, а:8}, {ze, х^,
{хе„ Хз), {ж7, я5, ^1}, {^ь ^4}, {^3. ^7, ^а)-
Наибольшее из этих множеств имеет 4 элемента и, следовательно, а [6] = 4. Множество {х8, х7, х2, х^ является наибольшим независимым множеством.
Пример: выбор проекта
Имеется и проектов, которые должны быть выполнены, и допустим, что для выЖлийния проекта ж, требуется некоторое подмножество Rt наличных ресурсов из множества {1, . . ., р}. Далее предположим, что каждый проект, задаваемый совокупностью средств, необходимых для его реализации, может быть выполнен за один и тот же промежуток времени. Построим граф G, каждая вершина которого соответствует некоторому проекту, а ребро (x^xjy — наличию общих средств обеспечения у проектов xt и х5, т. е. условию R; П Я - ^ 0- Максимальное независимое множество графа G представляет тогда максимальное множество проектов, которое можно выполнить одновременно за один и тот же промежуток времени.
В динамической системе происходит постоянное обновление проектов через определенный промежуток времени, так что каждый раз нужно заново повторять процедуру построения максимального независимого множества в соответствующем графе G. В практических ситуациях бывает весьма не просто выполнить множество проектов, соответствующих максимальному независимому множеству на данном отрезке времени, поскольку исполнение некоторых проектов может быть по каким-то причинам отложено. Тогда лучший способ действия состоит в присвоении каждому проекту (вершине) xt некоторого штрафа р,, который увеличивается с ростом времени отсрочки в исполнении проекта, и в каждый расчетный момент времени надо выбирать из семейства максимальных независимых множеств такое множество, которое максимизирует некоторую функцию штрафов на вершинах, содержащихся в выбранном множестве.
Максимальные полные подграфы^кликиН
Понятие, противоположное максимальному независимому множеству, есть максимальный полный подграф. Таким образом, максимальный полный подграф (клика) графа G есть порожденный подграф, построенный на подмножеств-а^ вершин~Трафа^являю- щийся полным и максимальным в том смысле, что любой~другой । подграф графаГ<7А~постр6енный на -множестве нершинЯ__£рлрржя- щем_1?, т. е. Н гр 5\_не является полным. Следовательно, в про- тивополбжностьЧяаксимальному независимому множеству, в котором не могут встретиться две смежные вершины, в клике все вершины попарно смежны. Совершенно очевидно, что максимальное независимое множество графа G соответствует клике графа* G и наоборот, где G — дополнение графа G.
Вполне очевидно также, что понятие клики для неориентированного графа подобно понятию клики для графа; однако эта аналогия более глубокая, чем та, которая существует между понятиями клики и сильной компоненты (см. гл. 2). Клику в действительности можно рассматривать как такую сильную компоненту, в которой достижимость ограничена путями единичной длины (см. разд. 5 в гл. 2).
Аналогично тому, как было определено число независимости графа, с помощью соотношения (3.3) мы можем определить клиновое число графа (известное также как густота или плотность )). Это — максимальное число вершин в кликах данного графа. Тогда, образно говоря, у «плотного» графа кликовое число будет, вероятно, больше, а число независимости меньше, в то время как у «разреженного» графа, по всей вероятности, будет иметь место противоположное соотношение между этими числами.
Построение всех максимальных независимых множеств
Вследствие упомянутой выше связи между кликами и максимальными независимыми множествами методы, рассматриваемые в данном разделе и описываемые на «языке максимальных независимых множеств», могут быть непосредственно использованы для построения клик. На первый взгляд кажется, что нахождение всех максимальных независимых множеств графа — очень простая задача, которую можно решить последовательным перебором независимых множеств с одновременной проверкой каждого множества на максимальность (последнее осуществляется путем добавления к исследуемому множеству дополнительной, не принадлежащей ему, вершйны и выяснения того, сохраняется ли
независимость) и запоминанием максимальных множеств. Представление о простоте задачи действительно справедливо, но только для небольших графов, например с числом вершин, не превосходящим 20. Однако с увеличением числа вершин этот метод поиска становится с вычислительной точки зрения громоздким. Но все же громоздкость здесь не столь велика, как кажется с первого взгляда. Число максимальных независимых множеств увеличивается, но в процессе выполнения процедуры большое число независимых множеств формируется, а затем вычеркивается, так как обнаруживается, что они содержатся в других, ранее полученных множествах и поэтому не являются максимальными.
В этом разделе будет описан систематический метод перебора Б^щна_иКэрбоша [14], который позволяет обходить указанные выше~~грудности. В этом методе не нужно запоминать генерируемые независимые множества для проверки их на максимальность путем сравнения с ранее сформированными множествами.
Обоснование алгоритма. Этот алгоритм является существенно упрощенным перебором, использующим дерево поиска. В процессе поиска — на некотором этапе к — независимое множество вершин 8к расширяется путем добавления к нему подходящим образом выбранной вершины (чтобы получилось новое независимое множество -S^ + i) на этапе к + 1, и так поступают до тех пор, пока добавление вершин станет невозможным, а порождаемое множество не станет максимальным независимым множеством. Пусть Qk будет на этапе к наибольшим множеством вершин, для которого 8к П Qk = 07 т- е- после добавления любой вершины из Qk к Sk получается независимое множество 5д+1. В некоторый произвольный момент работы алгоритма множество Qk состоит вообще говоря, из вершин двух типов: подмножества Qk тех вершин, которые уже использовались в процессе поиска для расширения множеств Skl и подмножества Qt таких вершин, которые еще не использовались. Тогда дальнейшее ветвление в дереве поиска включает процедуру выбора вершины Хгк 6 Qk-> добавление ее к 8к для построения множества
S^ = SkU^(3-4)
и порождение новых множеств:
Q^-Qb-r^(3.5)
и
<?£+1=<2£-(Г(г^(3-6)
Шаг возвращения алгоритма состоит в удалении вершины х^^ из 5к+1, чтобы вернуться к 8к, изъятии х<к из старого множества
Qk и добавлении х^к к старому множеству Qk для формирования новых множеств Qk и Qk.
Легко заметить, что множество 8к является максимальным независимым множеством только тогда, когда невозможно его дальнейшее расширение, т. е. когда Qk = 0- Если Qk ¥= 0^ то немедленно заключаем, что текущее множество 8к было расширено на некотором предшествующем этапе работы алгоритма путем добавления вершины из Qkl и поэтому оно не является максимальным независимым множеством. Таким образом, необходимым и достаточным условием того, что 8к — максимальное независимое множество, является выполнение равенств
<2^^=0. (3.7)
Теперь совершенно очевидно, что если очередной этап работы алгоритма наступает тогда, когда существует некоторая вершина х € ^h, Для которой Г (х) П Qk = 0. то безразлично, какая из вершин, принадлежащих ^, используется для расширения 8к1 и это справедливо при любом числе дальнейших ветвлений; вершина х не может быть удалена из Qp на любом следующем шаге р >к. Таким образом, условие
Эя^^, такая, что Г(ж) Ц^= 0, (3.8) является достаточным для осуществления шага возвращения, поскольку из 5^ при всяком дальнейшем ветвлении уже не получится максимальное независимое множество.
Как и во всяком методе, использующем дерево поиска, здесь выгодно стремиться начать шаги возвращения как можно раньше, поскольку это ограничит «размеры» «ненужной» части дерева поиска. Следовательно, целесообразно сосредоточить усилия на том, чтобы возможно раньше добиться выполнения условия (3.8) с помощью подходящего выбора вершин, используемых при расширении множеств 8к. На каждом следующем шаге процедуры можно выбирать для добавления к 8к любую вершину Хгк £ Qk; на шаге возвращения Хгк будет удалена из ^^ и включена в Qk. Если вершину хк выбрать так, чтобы она принадлежала множеству Г (х) при некоторой вершине х из Qkl то на соответствующем шаге возвращения величина
А(х) = |Г(^)П^| (3.9) уменьшится на единицу (по сравнению с тем значением, которое было до выполнения прямого шага и шага возвращения), так что условие (3.8) теперь станет выполняться раньше.
Таким образом, одйн из возможных способов выбора вершины Хгк для расширения множества 5ft состоит, во-первых, в нахождении вершины х* £ Qk с возможно меньшим значением величины
Д (я*) и, кроме того, в выборе вершины х^к из множества Г (х*) П Qk- Такой выбор вершины х^к будет приводить на шаге возвращения к уменьшению величины Д (я*) -— каждый раз на единицу — до тех пор, пока вершина х* не станет удовлетворять условию (3.8) при выполнении шага возвращения.
Следует отметить, что поскольку на шаге возвращения вершина Xik попадает в Qi, то может оказаться, что при этом новом входе значение величины Д меньше, чем для ранее фиксированной вершины х*. Значит, надо проверить, не ускорит ли эта новая вершина выполнение условия (3.8). Это особенно важно в начале ветвления, когда Qi = 0.
Описание алгоритма
Начальная установка
Шаг 1. Пусть 50 = ^ = 0, Qq = X, к = 0.
Прямой шаг
Шаг 2. Выбрать вершину х^к € Qh как упоминалось ранее, и сформировать Sh+1, ^+1 и Qk-m оставляя Qi и Qi нетронутыми. Положить к = к + 1.
Проверка
Шаг 3. Если удовлетворяется условие (3.8), то перейти к шагу 5, иначе к шагу 4.
Шаг 4. Если Qi = Qi — 0, то напечатать максимальное независимое множество Sk и перейти к шагу 5. Если Qi = 0, a Qi
0, то перейти к шагу 5. Иначе перейти к шагу 2.
Шаг возвращения
Шаг 5. Положить к — к — 1. Удалить х^к из S^a-^ чтобы получить Sk- Исправить Qi и Qi, удалив вершину Xik из Qi и добавив ее к Qi. Если к = 0 и Q* = 0, то остановиться. (К этому моменту будут уже напечатаны все максимальные независимые множества.) Иначе перейти к шагу 3.
Комментарий по применению описанного выше алгоритма приведен в [14] вместе с программой, написанной на Алголе. Эта программа была опробована для большого числа графов (в частности, для графов Муна—Мозера, см. задачу 10) и было установлено, что время, необходимое для построения максимального независимого множества, почти постоянно и не зависит от размера графа. Все это говорит о том, что данный алгоритм является одним из лучших.
4 н. Кристо фидес
Доминирующие множества
Для графа G = (X, Г) доминирующее множество вершин (называемое также внешне устойчивым множеством [И]) есть множество вершин 8 ^ X, выбранное так, что для каждой вершины х5, не входящей в 5, существует дуга, идущая из некоторой вершины множества 5 в вершину Xj.
Таким образом, 5 есть доминирующее множество вершин (или просто доминирующее множество, когда нет опасности возникновения путаницы), если
5[jr(5) = X (3.10)
Для графа, приведенного на рис. 3.2, множества вершин {а;!, х4, х^, {хь х4^, {^3, х5, я6) являются доминирующими множествами.
Доминирующее множество называется минимальным, если нет другого доминирующего множества, содержащегося в нем.
Рис. 3.2.
Таким образом, множество 5 является минимальным доминирующим множеством, если оно удовлетворяет соотношению (3.10) и нет собственного подмножества в 8, которое удовлетворяет условию, аналогичному (3.10). Так, например, для графа, приведенного на рис. 3.2, множество {^j, zr4} — минимальное, a (х4, х4, хв) нет. Минимальным доминирующим множеством является также множество {я3, х5, х6}, и еще существует несколько таких множеств в этом графе. Следовательно, как и в случае максимальных независимых множеств, в графе может быть несколько минимальных доминирующих множеств, и они не обязательно содержат одинаковое число вершин.
ДОМИНИРУЮЩИЕ МНОЖЕСТВА5j
<
Если Р — семейство всех минимальных доминирующих множеств графа, то число
P[G] = mni|S|(3.Ц)
называется числом доминирования т) графа G, а множество 5*, на котором достигается минимум, называется наименьшим доминирующим множеством.
Для графа, приведенного на рис. 3.2, наименьшим доминирующим множеством является множество {яь я4) и, следовательно, р [G] = 2.
Пример. Размещение «центров»,покрывающих заданную область
Задач такого типа весьма много. К ним относятся:
Размещение телевизионных или радиопередающих станций на некоторой территории.
Размещение военных баз, контролирующих данную тер-, риторию.
Размещение центров торговли, обслуживающих некоторый район.
Предположим, что территория, представленная большим квадратом на рис. 3.3(a), разделена на 16 районов, как показано
Рис. 3.3.
на рисунке. Предполагается, что военная база, расположенная в каком-либо районе, может контролировать не только этот район, но и соседние, граничащие с ним районы. Требуется найти наи-
х) В оригинале —«dominance numbers.— Прим. ред.
Рис. 3.4.
меньшее возможное число военных баз и места для их размещения, чтобы был обеспечен контроль всей территории.
Если мы представим каждый район вершиной графа и ребрами соединим только те пары вершин, которые соответствуют соседним районам, то получится граф, показанный на рис. 3.3(6). Тогда задача сводится к определению наименьшего доминирующего множества в этом графе. Число ^ [G] является наименьшим числом баз, «покрывающих» всю территорию. Для графа, приведенного на рис. 3.3(6), Р [G] = 4 и базы следует размещать в квадратах, номера которых принадлежат множеству {3, 5, 12, 14} или множеству {2, 9, 15, 8}.
Аналогично, для территории, показанной на рис. 3.4, число доминирования соответствующего графа равно 12 и базы следует размещать в районах 2, 6, И, 15, 21, 24, 26, 29, 35, 39, 44, 48. Только три заштрихованных квадрата «защищены» одновременно тремя базами.
Связь между понятиями минимального доминирующего множества и базой графа почти очевидна, так же как между минимальным доминирующим множеством и ^-центром (см. гл. 5). Эти взаимосвязи обсуждались в разд. 5 гл. 2, а в гл. 5 алгоритм нахождения наименьшего доминирующего множества используется в качестве основного шага более общего алгоритма построения р-центров.
Для случая максимальных независимых множеств мы привели алгоритм, который выдает полный список всех таких множеств.
Сделано это было потому, что такие списки нужны во многих практических задачах [36, 3, 2]. Для доминирующих множеств, однако? требуется обычно найти просто наименьшее доминирующее множество, и поэтому мы ограничимся здесь описанием алгоритма построения такого множества. В следующем разделе мы рассмотрим задачу о нахождении наименьшего доминирующего множества с несколько более общих позиций; это поможет нам глубже разобраться в взаимосвязях между понятиями, рассматриваемыми в других частях книги.
Задача о наименьшем покрытий
Пусть Af — транспонированная матрица смежности графа G с единичными диагональными элементами. Задача определения наименьшего доминирующего множества графа G эквивалентна задаче нахождения такого наименьшего множества столбцов в матрице АА что каждая строка матрицы содержит единицу хотя бы воднотТЛТ^Ядб^нн^^гтти^тбцовГ Эта последняяГ'задача о поиске наименьшего множества столбцов, «покрывающих» все строки, изучалась довольно интенсивно под названием задачи о наименьшем покрытии (ЗНП).
В общей ЗНП матрица, состоящая из 0 и 1, не обязательно является квадратной. Кроме того, каждому столбцу ; (в нашем случае каждой вершине xj) сопоставляется некоторая стоимость г) с5 и требуется выбрать покрытие (или, в другой терминологии — для случая графов — доминирующее множество вершин) с наименьшей общей стоимостью ). Поскольку задача построения наименьшего доминирующего множества вершин ’является весьма частной задачей о покрьгти1Г1ГЧ^ ] = 1, . . ., п, то на первыивзгляд кажется, что нахождение такого множества осуществляется на деле значительно проще, чем решение общей ЗНП. Однако это, вообще говоря, не так. Поэтому в данном разделе мы начнем с решения общей ЗНП.
Постановка задачи
ЗНП своим названием обязана следующей теоретико-множественной интерпретации. Даны множество R = {г1? . . ., гм} и семейство of = {5Ь . . ., 5^} множеств S3 a R. Любое подсемейство = {5^, S^ . .семейства такое, что
R
и851=К,(3.12)
называется покрытием множества R^ а множества Sj. называются покрывающими множествами. Если в дополнение к соотношению (3.12) of* удовлетворяет условию
^ЛП^ = 0, ^ /£{1, Ц. h^l, (3.13)
т. е. множества Sj. (i = 1, • • м к) попарно не пересекаются, то <У* называется разбиением множества R.
Если каждому Sj £ ^ поставлена в соответствие (положительная) стоимость с5, то ЗНП формулируется так: найти покрытие множества R, имеющее наименьшую стоимость, причем стоимость .к
семейства = (Sj , . . ., SjA определяется как 2 сэ- Анало- 1Ai-l 1
гично формулируется и задача о наименьшем разбиении (ЗНР).
В матричной форме, упомянутой ранее, когда строки (М X Ny матрицы hij], состоящей из нулей и единиц, покрываются столбцами, ЗНП может быть сформулирована как задача линейного программирования:
минимизировать 2= 2 c^j
при ограничениях N
ЗМ/>1«1=1,2, ...,М,(3.14)
7 = 1
где с5 > О,
| 1, если Sj^of^^” 10, если Sj^jP'
и
fl, если r^Sj,iiJ ” (О, если rt ^ Sj.
Для ЗНР неравенства (3.14) обращаются в равенства А’
2 ^Л==1.i=L2,(3.15)
Упрощение задачи
Вследствие особой природы ЗНП часто удается сделать при ее исследовании определенные, хорошо известные заранее выводы и упрощения [6, 26, 27, 28, 30, 50, 51].
Например:
если для некоторого элемента rf из 7? справедливы соотношения rt $ 5, V/ = 1» • • -, А, то Г; покрыть нельзя и, следовательно, задача не имеет решения;
(2) если 3rt £ R, такое, что г{ £ Sk и rz £ Sh X/j =£ к, то Sk должно присутствовать во всех решениях и задачу можно свести к «меньшей», положив R = R — {rj и ^ = ^ — {^ь};
пусть 7Z = {/ | rz £ -Sj}; тогда если Эр, £ £ {1, . . ., М} такие, что Vp г V^ то rq можно удалить из R, поскольку любое множество, которое покрывает гр, должно также покрывать rq) т. е. гР доминирует над rq;
если для некоторого семейства множеств #" с: ^ справедливы соотношения U 8 у 3 8к и 3 с5 ^ ск Для любых
_ 8^3 8^3
8к Е 3 — 3, то 8к может быть вычеркнуто из 3S поскольку U 8 у доминирует над 8к.
sy^3
Предположим, что все эти упрощения выполнены (если они возможны) и что исходная ЗНП уже переформулирована в соответствующей неприводимой форме.
Алгоритм решения ЗНР, использующий дерево поиска
Как отмечалось ранее, ЗНР тесно связана с ЗНП, являясь по существу ЗНП с дополнительным (неперекрываемость) ограничением. Это ограничение выгодно, если мы пытаемся решить задачу с помощью некоторого метода, использующего дерево поиска: при таком ограничений может рано выясниться, что некоторые возможные ветвления дерева рассматривать не надо. Учитывая вышесказанное, мы сначала займемся алгоритмом решения ЗНР (использующим дерево поиска), а затем покажем, как его можно приспособить к решению ЗНП.
Простые методы решения ЗНР, использующие дерево поиска, были предложены Пирсом [48] и Гарфинкелем и Немхаузером [27].
Сущность этих методов такова. Вначале строятся «блоки» столбцов, по одному на каждый элемент гк из R, т. е. всего М блоков. к-й блок состоит из таких множеств семейства 3 (представленных столбцами), в которых содержится элемент гк, но отсутствуют элементы с меньшими индексами — г$, . . ., rk_v Следовательно, каждое множество (столбец) появляется точно в одном определенном блоке и совокупность блоков может быть представлена в виде таблицы, как показано на рис. 3.1. В конкретных задачах некоторые из блоков могут отсутствовать.
В процессе работы алгоритма блоки отыскиваются последовательно и формирование к-то блока начинается после того, как каждый элемент гь 1 < г < к — 1, будет покрыт частным решением. Таким образом, если какое-то множество в блоке к содержит элементы с индексами, меньшими к, то оно должно быть отбро-
шено (на этом этапе) в соответствии с требованием неперекрываемости.
Множества в пределах каждого блока размещаются в порядке возрастания их стоимостей и перенумеровываются так, что Sj теперь уже обозначает множество, соответствующее /-му столбцу таблицы.
L ок 1
блок 2
Блок 3
Блок 4
'1
1...1
0
Г1
1...1
0
гз
0шш1
1...1
0
г4
Оили!
Оили!
1...1
тм
Ovvwl
1
Исходная таблица
Таблица 3.1
Текущее «наилучшее» решение В со стоимостью z известно на любом этапе поиска (В обозначает семейство соответствующих покрывающих множеств). Если Виг — соответствующие семейство и стоимость на данной стадии поиска, а Е — множество, представляющее те элементы (т. е. строки) г,, которые покрываются множествами из В, то один из простых алгоритмов, использующих дерево поиска, можно описать следующим образом.
Присвоение начальных значений
Шаг 1. Построить исходную таблицу и начать с частного реше ния: В = 0, Е = 0, z = О и z = оо.
Расширение
Шаг 2. Найти р = min [i | Г; $ В]. Над блоком р поставить метку (над его первым множеством, которое, как следует из построения таблицы, имеет наименьшую стоимость).
Шаг 3. Начиная с отмеченной позиции в блоке р, перебирать его множества Sj, скажем, в порядке возрастания индекса /.
Если найдено .множество Sj, такое, что Sj П Е = 0 и z + Cj <z (где Cj —стоимость множества Sj), то перейти к шагу 5.
В противном случае, т. е. если блок р исчерпан или выбрало множество Sf, такое, что z + cf > z, перейти к шагу 4.
JUaz возвращения
Шаг 4. В не может привести к лучшему решению. Если В = 0 (т. е. блок 1 исчерпан), то алгоритм заканчивает работу и оптимальным решением является В. В противном случае удалить последнее множество, скажем, SV добавить его в В, положить р = I, поставить метку над множеством ^ 4, удалить предшествующую метку в блоке I и перейти к шагу 3.
Проверка нового решения
Шаг 5. Обновить данные: В = В U {^Л, £ = £ U ^j, 2 = = z + Cj. Если найдено лучшее решение Е = В, то положить В = В, z = z и перейти к шагу 4. Иначе перейти к шагу 2.
Если поиск оканчивается с исчерпыванием блока 1 (см. выше шаг 4), то целесообразно переставить блоки в порядке возрастания числа столбцов (множеств) в каждом блоке. Это может быть осуществлено (перед построением исходной таблицы) перенумерацией элементов (строк) г1? . . ., тм в порядке увеличения числа множеств из 8, содержащих соответствующие элементы.
Прежде чем показать, как алгоритм для ЗНР распространяется на ЗНП, кратко упомянем о некоторых других методах, применяемых при решении ЗНР. В [49] Пиро и Ласки дали ряд модификаций приведенного выше основного алгоритма, используя в качестве вспомогательного средства линейное программирование; в [45] Мишо описал другой алгоритм неявного перебора, который основан на задаче линейного программирования, соответствующей ЗНР с «блочной» структурой (рассмотренной выше и игравшей вспомогательную роль).
Предлагались также алгоритмы, включающие итерации симплексного типа, как прямые [4, 5], так и двойственные [58, 37]. В [37] Йенсен успешно применил метод динамического программирования к определенному типу ЗНР.
Алгоритм решения ЗНП, использующий дерево поиска
В алгоритме, описанном выше в разд. 4.3, единственным шагомг характерным для ЗНР, является шаг 3 (i). Если удалить в этом шаге требование «неперекрываемости» S^ (] Е = 0, то алгоритм может быть использован для ЗНП. Однако в этом случае исходная таблица будет несколько отличаться от табл. 3.2. Итак, положим Sj = {О,, О> О,- • • }- г«е 71 </2 <7з <• • • ■ Теперь недостаточно включить Sj только в блок 7\, поскольку без требования
«неперекрываемости» нельзя исключить Sj из рассмотрения, скажем, в блоке /2, если г^ уже покрыто частным решением. Следовательно, Sj должно входить в каждый блок jv j2l /3, .... С другой стороны, поскольку элемент Tj^ из Sj согласно «последовательной природе» поиска покрывается перед ветвлением на множествах блока р (р >/а), то теперь возможно удалить все элементы Xj из Sj перед введением Sj в любой блок р >/а без какого-либо влияния на результат решения задачи. Эта тривиальная операция удаления с вычислительной точки зрения оказывается очень выгодной, поскольку исходная таблица в ЗНП теперь может быть сокращена с помощью правил, указанных в разд. 4.2, до значительно меньших размеров, что возможно осуществить без удаления элементов Xj^ (ja < Р) из множеств блока р [48].
Здесь следует отметить, что алгоритм из разд. 4.3 является примитивным поисковым алгоритмом, использующим дерево поиска, и лишен каких-либо тонкостей, хотя при тщательном программировании может быть сделан весьма эффективным для ЗНР (271; это не так для ЗНП, даже при довольно скромных размерах. Далее мы рассмотрим некоторые важные условия и вычисление нижних границ, которые могут быть использованы для ограничения дерева поиска и улучшения эффективности основного алгоритма.
Некоторые важные условия. Прежде чем устанавливать общие результаты, мы проиллюстрируем эти важные условия на примере. Рассмотрим случай, когда блок 1 содержит (среди других) множества Sx = {rv г4, г6} и S2 = {г17 г3, г4} со стоимостями 3 и 4 соответственно, а блок 2 содержит множества 53 = {г2, г3, г5} и S, = (г2, г4, г5}, каждое со стоимостью, равной 2.
В процессе выполнения алгоритма из разд. 4.3 на некотором этапе получим Ва = (51? 53}, Еа = {гь г2, . . ., г6}, za = 5; затем ветвление будет продолжаться до тех пор, пока либо мы не найдем решение, которое лучше, чем текущее Вп либо не установим, что 5Х и S3 не могут одновременно появиться в оптимальном решении.
Далее, через много шагов, мы достигнем такой ситуации, когда
Bfc = {^2i ^з}» Еъ = {ги . . ., г5}, zb = 6
Здесь становится ясным, что дальнейшее ветвление делать не нужно, поскольку Еъ^ Еа и зь > za. Подобная картина имеет место также при
Вс = {^21Ес = (г^ . . ., r5}, zc = 6.
Таким образом, возможно, имеет смысл хранить для каждого значения z = 1, 2, . . ., z некоторый (быть может, неполный)
список максимальных множеств Е^ которые уже получены для данных 2 (где под максимальным понимается такое множество, которое не содержится в другом множестве из этого списка). Эти списки множеств Е можно затем использовать для ограничения поиска путем элиминации тех ветвлений, которые позже оказываются бесполезными. Вообщё непрактично хранить все максимальные множества Е любого уровня стоимости. Если бы это было сделано, то полученный метод был бы похож на такой подход к задаче, который характерен для динамического программирования (или мог бы рассматриваться как полный древовидный поиск с приоритетом по ширине).
Пусть мы сохранили некоторый список L (2Z) множеств Е, которые были получены в процессе выполнения алгоритма на некотором уровне с суммарной стоимостью 2/. Предположим, что на данном этапе Е = Е\ В = В', 2 = т» и мы заняты исследованием блока к (где к = min {z | rf $ Е'} — см. шаг 2 в алгоритме из разд. 4.3) и выбором множества Sj со стоимостью Cj для следующего ветвления. Если г + с? <2, то ветвление в рассматриваемом алгоритме с этого этапа продолжается дальше и
E = E'\jS^ В = Ву^' z = z + c^
независимо от каких-либо других соображений.
Однако можно также гарантировать (на шаге 3), что перед продолжением ветвления
E'US^E^ VE^b^i) и при всех z;,
ДЛЯ которых 2* < 2; ^2' Cj . (3.16)
Если Sj не удовлетворяет приведенному выше условию, то оно отбрасывается и рассматривается следующее множество Sj+i блока к, и т. д. Если S^ удовлетворяет условию (3.16), то можно продолжать ветвление дальше с Sj так же, как и раньше, но с обновленным списком L (z), полученным добавлением множества Е’ U Sj в L (z' + с1?).
Поскольку, как упоминалось ранее, невозможно практически хранить полные списки L ^tY то должны быть использованы некоторые эвристические критерии для определения размеров этих списков и способов их обновления в процессе поиска.
(А) Размеры списка. Лучше, очевидно, исключать множества Sj, которые могут оказаться ветвлениями дерева на его начальных уровнях, так как это может привести к отбрасыванию больших частей возможного дерева поиска. Таким образом, интуитивно ясно, что имеет смысл оставлять списки больших размеров L (zz), соответствующие меньшим z^ Это подтверждается дополнительно
тем, что условие (3.16) выполняется с большей вероятностью тогда, когда множества Т содержат лишь несколько элементов, что имеет место для малых г;-уровней.
(Б) Обновление списков. На определенном 2,-уровне текущее ^-множество (пусть это множество Е') является с большей вероятностью подмножеством такого множества Е" (из списка L (z,)), которое получено из той же общей части дерева поиска. Это справедливо потому, что Е' и Е" имеют общую большую часть цепи от начального узла до соответствующих этим множествам узлов дерева. Итак, кажется более выгодным расположить списки L (гг) как стеки и использовать алгоритм FIFO «первым пришел—первым ушел», согласно которому в случае переполнения стека отбрасывается множество, находящееся внизу.
Вычисление нижней границы. На некотором этапе поиска, определяемом В', Е', z', и когда блок к является следующим блоком, подлежащим рассмотрению, нижняя граница h для наименьшего значения величины z может быть вычислена и использована для ограничения дерева поиска следующим образом.
Рассмотрим непокрытый элемент rt g R — Е', который отсутствует в множествах блоков к, к + 1, . . ., i — 1, соответствующих элементам, еще не покрытым частным решением. Тогда элемент tl не может быть покрыт, пока некоторое множество 5} блока г не выбрано для добавления к В’ на следующем этапе. Итак, для каждого такого элемента rt строится строка для матрицы /) = = [dqs] и строка для второй матрицы D' = [аУ, где dqs равно числу элементов в множестве 8ч, a d'qs — стоимость множества 8^.
Кроме того, к каждой матрице D и D' добавляется дополнительная строка, скажем 9, с dg3 = s для всех s = 0, 1, . . . ..., М — | Е' | и d'6s = s ■ min [с)/18} | ], где минимумом берется по всем множествам S) таким, что т^Е'. Число элементов в строке qv матрицы D (или D1') может быть отлично от числа элементов в другой строке q^ Поэтому, добавив в конце строк 0 (нули) и оо (бесконечности) соответственно для матриц D и D', добьемся того, чтобы число элементов в разных строках стало одинаковым, скажем, равным /, а матрицы стали прямоугольными.
Теперь можно высказать ряд утверждений. Поскольку оптимальное решение текущей подзадачи должно покрывать М — — | Е' | элементов, то, выбирая по одному значению из каждой строки матрицы D с таким расчетом, чтобы удовлетворялось условие
(dis, + ^2s2 + ■ • • +^eSg)^M — | E* | и минимизировалась соответствующая стоимость
v = (db, + • • • + deSQ),
мы как раз и получим нижнюю границу для оптимальной стоимо- ети в подзадаче (о покрытии) —- границей является найденное значение и. Здесь мы предполагали, что множества, соответствующие элементам матрицы D, расположенным в разных строках, не пересекаются; такая ситуация, очевидно, является наилучшей из возможных. Последняя строка 0 просто гарантирует, что если
е-1
dls.<M-\E'V
1=1
то оставшиеся элементы покрываются наилучшим образом, т. е. с минимальной стоимостью покрытия для каждого дополнительно покрываемого элемента.
Наименьшее значение для
ее
5 d\s. при ограничении 5 dis ^М— | Е* | г=111=1
легко может быть получено с помощью следующего алгоритма динамического программирования.
Пусть gp (и) — наибольшее число элементов, которые могут быть покрыты только с помощью первых р строк матрицы D (т. е. с использованием только р блоков задачи), причем общая стоимость покрытия не превышает и. Тогда gp (v) может быть найдено итерационным методом, так как
gp М = max [dps + ^P-i (^ — dp,) ],(3.17)
8=1/
где g0 (v) придается начальное значение, равное 0 для всех и.
Следовательно, наименьшее из значений величины и, для которых выполняется неравенство ge (v) ^ М — | Е' |, как раз будет требуемой нижней границей h;, оно может быть легко получено из таблицы решения задачи динамического программирования, составленной с использованием приведенного выше итерационного уравнения. Следует отметить, что необходимо рассмотреть только такие значения величины г, для которых 0 ^ и <z — z', поскольку если h ^ z — z (т. е. g6 ^ <_ М — \ Е* | для и ^ z — z'), то можно сразу же сделать шаг возвращения.
4.5. Вычислительная характеристика алгоритмарешения ЗНП
Вычислительные возможности алгоритма, описанного в разд. 4.4 и предназначенного для решения ЗНП, представлены в табл. 3.2. Во второй и третьей графах таблицы даны числа строк и столбцов, полученные после применения упрощающих
правил. Данные во всех задачах задавались случайным образом, а стоимости брались равными единице, т. е. Cj = 1, для каждого столбца
Таблица 3»2
Время вычисления при решении ЗИП
Задача
Число строк
Число столбцов
Плотность
Время вычисления
Узлы 8 дереве поиска21
1
15
20
0,22
0,05
0,02
2
15
25
0,25
0,04
0,01
3
15
25
0,30 j
0,06
0,02
4
20
60
0,18!
0,25
0,07
5
20
50
0,20
0,11
0,02
6
20
75
0,23!
0,35
0,05
7
25
НО
o,i7 ;
0,60
0,06
8.
25
120
0,19।
1,30
0,16
9
25
170
0,22
1,50
0,11
10
30
80
0,12
1,00
0,20
11
30
180
0,15
10,50
1,60
12
30
250
0,17
6,00
0^2
13
30
340
0,21
9,20
озо
14
30
475
0,20
11,00
0,09
15
30
500
0,23
22,00
0,40
16
30
700
0,23
105,50
3,02
17
30
725
0,25
32,50
0,12
18
30
875
0,26
57,20
0,18
19
30
1000
0,27
72,80
0,19
20
35
160
0,09
18,50
2,18
21
35
290
0,13
28,00
2,03
22
35
460
0,16
75,50
2,95
23
35
585
0,18
129,50
3,96
24
35
780
0,19
141,20
5,03
25
35
1075
0,20
110,00
0,55
1) СДС—6600, в секундах.
2) Число узлов в дереве поиска (в тысячах)е-
Лемке, Салкин и Шпильберг [41] предложили такие методы решения ЗНП, в которых используются дерево поиска (иного типа), а также линейные программы. Решение соответствующей задачи линейного программирования берется в качестве нижней границы в процессе поиска и, кроме того, определяет характер последующего ветвления в текущем узле дерева поиска. Подходы, базирующиеся на рассмотрении отсекающих плоскостей и подобные, в принципе, тем, которые применяются в общем 0—1-программировании [32], представлены в работах Хауза, Нелсона и Радо [35] и Белмора и Рэтлифа [9]. Сравнение этих методов и исследование их вычислительных характеристик дается в статье Кристо- фидеса и Кормана [19].
Приложения задачи о покрытии
5Л. Выбор переводчиков
Предположим, что организации нужно нанять переводчиков с французского, немецкого, греческого, итальянского, испанского, русского и китайского языков на английский и что имеется пять кандидатур Л, 5, С, D и Е. Каждая кандидатура владеет только некоторым собственным подмножеством из указанного выше множества языков и требует вполне определенную зарплату. Необходимо решить, каких переводчиков (с указанных выше языков на английский) надо нанять, чтобы затраты на зарплату были наименьшими. Очевидно, что это — задача о наименьшем покрытии.
Если, например, требования на оплату труда у всех претендентов одинаковые и группы языков, на которых они говорят, указаны ниже в матрице Т, то решение задачи будет таким: нужно нанять переводчиков В, С и D.
Переводчик
Язик
А
в*
с*
D*
Е
Французский
1
0
"1
1
0
2 Немецкий
1
1-
0
0
0
Греческий
0
1-
0
0
0
Итальянский
1
0
0
1
0
^Испанский
0
0
-1
0
0
* Русский
0
г
1
0
1
'^Китайский
0
0
0
1
1
Информационный поиск [21)
Предположим, что некоторое количество единиц информации хранится в N массивах длины с^ / = 1, 2, . . ., N. причем на каждую единицу информации отводится по меньшей мере один массив. В некоторый момент делается запрос о М единицах информации. Они могут быть получены различными способами при помощи поиска в массиве. Для того чтобы получить все М единиц информации и при этом произвести просмотр массивов наименьшей длины, надо решить ЗНП, в которой элемент t^ матрицы Т равен 1, если информация i находится в массиве, и 0 в противном случае.
Маршруты полетов самолетов [1, 55, 64, 65]
Предположим, что вершины неориентированного графа G представляют аэропорты, а дуги графа G — этапы полетов (беспосадочные перелеты), которые осуществляются в заданное время. Любой маршрут в этом графе (удовлетворяющий ряду условий, которые могут встретиться на практике) соответствует некоторому реально выполнимому маршруту полета. Пусть имеется N таких возможных маршрутов и для каждого из них каким-то способом подсчитана его стоимость (например, стоимость /-го маршрута равна Cj). Задача нахождения множества маршрутов, имеющего наименьшую суммарную стоимость и такого, что каждый этап полета содержится хотя бы в одном выбранном маршруте, является задачей о наименьшем покрытии с матрицей Т = [//;], в которой элемент t^ равен 1, если г-й этап содержится в /-м маршруте, и равен 0 в противном случае.
Укажем еще на одну разновидность рассмотренной задачи {также часто встречающуюся при назначении маршрутов полетов). Если требовать, чтобы каждый этап содержался только в одном маршруте, то приходим к ЗНР, соответствующей сформулированной выше ЗНП.
Упрощение логических (булевских) выражений[30, 50, 51, 67, 44, 43]
При упрощении логического выражения (логической формулы) Е, которое, например, задано в дизъюнктивной нормальной форме г), достаточно рассмотреть только множество Р простых импликантов формулы Е. «Наипростейшая» форма) для Е получается тогда с помощью выделения в Р подмножества Р наименьшей мощности, удовлетворяющего условию: каждая элементарная конъюнкция К из Е «покрывается» по крайней мере одним простым импликантом 3 из Р (т. е. импликация К->5 является тождественно истинной). Очевидно, что задача нахождения «наипростейшей» формы является ЗНП со стоимостями с, — 1 для всех / = 1, . . ., N.
Эта задача, кроме того, эквивалентна задаче построения «простейшей» переключательной (контактной) схемы, реализующей данную логическую формулу.
Задача о развозке (о доставке} [7, 47, 24]
В задаче о развозке граф представляет сеть дорог, одна его вершина представляет склад, а все остальные вершины изображают потребителей. Транспорт, покидающий склад, снабжает товаром некоторых потребителей, после чего возвращается на склад. Пусть «стоимость» маршрута у равна cj (например, Cj может быть километражем маршрута или временем, необходимым для его црохождения). Спрашивается, сколько машин следует использовать на разных маршрутах, чтобы в один и тот же день доставлять всем потребителям товары (каждому потребителю поставляется сразу все необходимое) и чтобы суммарная стоимость проходимых маршрутов была наименьшей. Эту задачу, очевидно, можно рассматривать как ЗНР, в которой столбцы представляют всевозможные осуществимые (с учетом практических ограничений) замкнутые маршруты, начинающиеся и кончающиеся на складе. Строки представляют потребителей.
Почти идентична рассмотренной задаче задача о прокладке электрического кабеля для подачи электроэнергии от подстанции (склада) к потребителям в «кольцевых схемах энергоснабжения» [15]. Другие практические приложения ЗНП и ЗНР связаны с синхронизацией линий сборки [59, 25], государственным районированием [29], с вычислением границ в задачах общего целочисленного программирования [18], с сетевым планированием [20] и с разработкой схем защиты и нападения [8, 10].
Другие задачи о покрытии графов
Большое число задач теории графов можно сформулировать как ЗНП, хотя многие из них могут быть решены более эффективно с помощью иных теоретико-графовых средств, рассмотренных в других частях этой книги. В данном разделе мы хотим показать, как некоторые из этих задач связаны с ЗНП.
Наименьшее доминирующее множество. Как упоминалось в разд. 4 настоящей главы, задача о нахождении наименьшего доминирующего множества графа G является ЗНП с такой матрицей Г, которая получается в результате транспонирования матрицы смежности графа G с единичными элементами на главной диагонали.
Наибольшее независимое множество. Один из способов нахождения наибольшего независимого множества вершин графа G = (X, Г) состоит в построении всех максимальных независимых множеств вершин и выборе из них множества с наибольшей мощностью. Другой способ таков: исходная задача интерпретируется 5 Н. Кристофидес
как ЗИП, в которой столбцы матрицы Т соответствуют вершинам графа G, а строки — ребрам, причем 1ц = 1, если вершина х^ инцидентна ребру аь и t^ = 0 в противном случае.
Тогда очевидно [23], что если X г X — множество столбцов в (наименьшем) решении рассматриваемой ЗНП, то множество X — X является наибольшим независимым множеством графа G. Это справедливо потому, что если X — множество, покрывающее ребра графа G, то каждое ребро инцидентно по крайней мере одной вершине из X и, следовательно, никакие две вершины множества X — X не могут быть смежными, т. е. X — X — независимое множество. Более того, если X — X является независимым, то каждое ребро графа инцидентно самое большее одной вершине из X — Хи, значит, X — множество, покрывающее ребра графа G. Отсюда следует, что дополнение каждого множества вершин, покрывающего ребра графа G, является независимым множеством, а поскольку X имеет наименьшую возможную мощность, то X — X есть наибольшее независимое множество.
Наименьшее покрытие и наибольшее паросочетание (см. гл. 12). То, что в литературе называют наименьшим «покрытием^, представляет собой множество Е ребер графа G = (X, Л), такое, что каждая вершина графа G инцидентна по крайней мере одному ребру из Е и мощность множества Е — минимально возможная. Таким образом, поскольку Е можно рассматривать как «доминирующее над вершинами» графа G, то множество Е* — наименьшее из таких множеств — можно назвать, согласно терминологии, использованной в этой главе, наименьшим доминирующим множеством ребер. Известна иная задача о нахождении наименьшего покрытия: нужно отыскать «специальное» множество М ребер графа G — в М не должно быть смежных ребер. Множество М называют паросочетанием, а множество М* — с наибольшей мощностью — является наибольшим паросочетанием, его можно называть также наибольшим независимым множеством ребер. Эквивалентность задач о наибольшем паросочетании и о наименьшем покрытии демонстрируется в гл. 12, посвященной изучению паросочетании. Там устанавливается, в частности, следующее утверждение: пусть в наибольшем покрытии Е* степень вершины Xt есть dE* (х^ (рассматриваются только ребра из Е*), тогда, если для каждой вершины xt с dE* (xi) >1 удалить dE* fo) — 1 ребер, инцидентных хь то оставшееся множество ребер образует наибольшее паросочетание. Обратно, если М* есть наибольшее паросочетание и для каждой вершины Xi с с dM* (a?i) = 0 добавляется ребро, инцидентное xis то получающееся множество ребер образует наименьшее покрытие.
ознпознп,ЗНП с единичными стоимостями,ЗНП с единичными стоимостямиНаибольшее независимое множествоНаибольшее независимое множествоНаименьшее доминирующее множество вершинНаименьшее доминирующее множество вершинНаибольшее независимое множество ребер (наибольшее паросочетание)Наибольшее независимое множество ребер (наибольшее паросочетание)Наибольшая кликаНаибольшая кликавзаимосвязей между задачами.взаимосвязей между задачами.Наименьшее доминирующее множество ребер (наименьшее покръгтие)
ознп
ознп
,ЗНП с единичными стоимостями
,ЗНП с единичными стоимостями
Наибольшее независимое множество
Наибольшее независимое множество
Наименьшее доминирующее множество вершин
Наименьшее доминирующее множество вершин
Наибольшее независимое множество ребер (наибольшее паросочетание)
Наибольшее независимое множество ребер (наибольшее паросочетание)
Наибольшая клика
Наибольшая клика
взаимосвязей между задачами.
взаимосвязей между задачами.
Рис. 3.5* Диаграмма
Наибольшие паросочетания и наименьшие покрытия молено описать на «языке» ЗНП. В случае покрытий столбцы матрицы Т представляют ребра графа G, а строки — его вершины, причем 1ц = 1, если вершина хх инцидентна ребру а^ а иначе t^ = 0. Следовательно, матрица Т в этом случае есть матрица инциденций графа G.
На рис. 3.5 показана диаграмма взаимосвязей между задачами, где дуга от задачи а к задаче 0 означает, что решение задачи а влечет за собой решение задачи р [34, 39]. Связь между наибольшими независимыми множествами вершин и наибольшими кликами устанавливается с помощью дополнительных графов, а между наибольшими независимыми множествами вершин и наибольшими паросочетаниями — с помощью реберных графов. (Определение реберного графа см. в гл. 10).
Покрытие графа подграфами. Известно целое семейство задач, связанных с покрытием (или разбиением) множества вершин или множества ребер графа специальными подграфами (на специальные подграфы). Например, можно рассматривать порожденные подграфы или остовные подграфы графа, имеющие предписанные свойства. Тогда в матрицах Т из соответствующих ЗНП (или ЗНР) столбцы будут представлять все порожденные подграфы или остовные подграфы с заданными Свойствами, а строки матриц будут представлять вершины или ребра графа. В гл. 4^
например, задача о нахождении хроматического числа графа G рассматривается как ЗНП, в которой строки матрицы Т соответствуют вершинам графа G, а столбцы — максимальным независимым множествам вершин графа G (т. е. максимальным вполне несвязным подграфам графа G).
Другие задачи связаны с изучением покрытий ребер графа или его остовными подграфами с диаметром, не превосходящим X [13], или «звездами» («звездными деревьями» графа), или простыми цепями и циклами [16, 42].
Задачи
Перечислить все максимальные независимые множества графа G, показанного на рис. 3.6, и, следовательно, найти число независимости a[GL
Используя метод из разд. 2.3.2, составить список всех максимальных независимых множеств графа, приведенного на рис. 3.7. (Обратить внимание на симметрию графа.)
Показать, что для данного графа G = (Х^ Г) независимое множество Ac X является наибольшим тогда и только тогда, когда для произвольного независимого множества В cz X— А справедливо неравенство:
5^|Г(5)иЛ|
(см. [63]).
Показать, что в полном неориентированном графе Кп каждое ребро принадлежит ровно п — 2 треугольникам (т. е. циклам длины 3).
Легко показать, что утверждение, обратное приведенному выше в задаче 4, неверно, т. е. если каждое ребро в графе G содержится ровно в п— 2 треугольниках, то граф G не обязательно совпадает с Кп. (На рис. 3.8 приведен граф, в котором каждое ребро принадлежит только двум треугольникам, но граф отличен от К4.) Но приведенное в задаче 4 утверждение можно использовать для нахождения верхней оценки кликового числа графа G, т. е. такого наибольшего числа г, что в графе G содержится подграф Кт. Соответствующая оценка кликового числа графа G получается следующим образом:
Начать со значения г, равного нижней границе кликового числа рассматриваемого графа.
Удалить те ребра, которые не содержатся хотя бы в г — 2 треугольниках.
Повторять (ii) для г = г + 1, г + 2 и т. д., до тех пор, пока не останется ребер меньше, чем г (г — 1)/2. Текущее зна-
чение г будет тогда верхней границей клинового числа. Показать, что описанный выше алгоритм является корректным, и применить его к графу G — дополнению графа G, приведенного на рис. 3.7. Результат сравнить со значением a [G], найденным в задаче 2.
Для передачи информации используется п символов (букв) из множества X = {xv . . ., хп}. Рассмотрим граф G = (Xs Л), в котором (xtl Xj) £ А тогда и только тогда, когда символ xt может быть спутан с символом Xj на приемном конце канала связи. Символы используются в блоках — ^-буквенных «словах». Показать, что число, равное наибольшему числу слов, которые можно использовать для безошибочной передачи информации, совпадает с числом независимости a [Gh] графа Gk = G X G X . . . X G (к раз), где произведение G' х G" двух графов G' = (X', А^ и G" = (X", Л") есть граф Н = (У, 5), у которого
У - ^хгжз kf € х^ xj € ^"} и
В = {(•Tf^-ji *^k^i) | 24 " *^h ® ^xp xi) C A ,
ИЛИ Xj — Xt И (Xi, xk) £ Л",
или (Х.-.^СЛ' и (Xj, я^Л"} (см. [61]).
Показать, что для любых двух графов G' и G” справедливо неравенство
a[G' х G"]>a[G'pa[G"].
(i) Пусть G — неориентированный граф. Обосновать неравенство a [G] ^ Р [G], показав, что каждое максимальное независимое множество есть доминирующее множество.
(ii) Приведите пример, показывающий, что наименьшее доминирующее множество может не быть независимым.
Показать, что на шахматной доске к х к при 2^ к ^4 невозможно расставить к ферзей так, чтобы они не атаковали друг друга. Найти решение для к = 5.
Мун и Мозер [46] доказали, что наибольшее число клик (обозначим его / (п)), которые могут встретиться в графе с п вершинами, дается соотношениями:
Зп/3, если n = 0(mod3),
4-3<п“4>/з, если n=l(mod3),
2.3<п*2)/3, если n = 2 (mod 3).
Показать, что оценка / (п) достигается только для следующих графов G:
v а) Если га = О (mod 3), то граф G состоит из га/3 компонент и каждая компонента является треугольником.
Если п = 1 (mod 3), то либо граф G имеет (га — 4)/3 + 1 компонент, причем одна из них — цикл С^ а другие — треугольники, либо в графе G два «отдельных» ребра и (га — 4)/3 «отдельных» треугольников.
Если га = 2 (mod 3), то граф G состоит из одного отдельного ребра и (га — 2)/3 отдельных треугольников.
Проверить приведенное выше утверждение для га = 3, 4, 5.
Используя упрощения, о которых шла речь в разд. 4.2, исключить максимально возможное число строк и столбцов из задачи о покрытии, у которой матрицы [q] и [/о] имеют следующий вид:
1110 0101110100101000100000100101100001110110000101110 01011101001010001000001001011000011101100001012345678
1110 01011
10100101
00010000
01001011
00001110
11000010
1110 01011
10100101
00010000
01001011
00001110
11000010
1
2
4
5
6
М =[ 4, 7, 5, 8, 3, 2, 6, 5 ]
(Замечание. Упрощение 4 применять только для случая | <У | = 1.)
Используя метод из разд. 4, решить ЗИП, полученную из задачи 11 после осуществления всех необходимых упрощений.
Список литературы
Arabeyre J. Р., Fearnley J., Steiger F. С., Teather W. (1969), The airline crew scheduling problem: A survey, Transp. ScL, 3, p. 140.
Augustson J. G., Minker J. (1970), An analysis of some graph-theoretical cluster techniques, J. о/ ACM, 17, p. 571.
Balas E. (1970), Project scheduling with resource constraints, Applications of mathematical programming techniques, Beale, Ed., English Universities Press, London.
Balas E., Padberg M. W. (1972a), On the set covering problem, Ops. Res., 20, p. 1152.
Balas E., Padberg M. W. (1972), On the set covering problem. II: An algorithm, Management Sciences Research Report No 295, Carnegie—Mellon University.
Balinski M. (1965), Integer programming: methods, uses, computation, Man. Set., 12, p. 253.
Balinski М. L., Quandt R. Е. (1964), On an integer program for a delivery problem, Ops. Res., 12, p. 300.
Bellmore M., Greenberg H., Jarvis J. (1970). Multi-commodity disconnecting sets, Man. Sci., 16, p. 427.
Bellmore M., Ratliff H. D. (1971), Set covering and involuntary bases, Man. Set., 18, p. 194.
Bellmore M., Ratliff H. D. (1971), Optimal defense of multi-commodity networks, Man. Set., 18, p. 174.
Берне К. (1962), Теория графов и ее применения, ИЛ, М.
Bonner R. Е. (1964), On some clustering techniques, IBM J. Res. and Dev., 8, p. 22.
Bosak J., Rosa A., Znam S. (1966), On decompositions of complete graphs into factors with given diameters, Int. Symp. on theory of graphs, Dunod, Paris, p. 37.
Bron C., Kerbosch J. (1973), Algorithm 457 — Finding all cliques of an undirected graph, Comm. о/ ACM, 16, p. 575.
Burstall R. M. (1967), Tree searching methods with an application to a network design problem, Machine Intelligence, Colin and Michie, Eds., Vol.
Oliver and Boyd, London.
Басакер P., Саати T., Конечные графы и сети, М., Наука, 1974.
Chamberlin D. D. (1971), The single assignment approach to parallel processing, Proc, of AFIPS Conf., 39, p. 263.
Christofides N. (1971), Zero-one programming using non-binary tree search, The Computer J., 14, p. 418.
Christofides N., Korman S. (in press), A computational survey of methods for the set covering problem, Man. Sci.
Crowston W. B. (1968), Decision network planning models, Ph. D. Thesis, Carnegie — Mellon University.
Day R. H. (1965), On optimal extracting from a multiple file data storage system: An application of integer programming, Ops. Res., 13, p. 482.
Desler J. F. (1969), Degree constrained subgraphs, covers, codes and k- graphs, Ph. D. Thesis, Northwestern University, Evaston, Illinois.
Edmonds J. (1962), Covers and packings in a family of sets, Bulletin of American Mathematical Soc., 68, p. 494.
Eilon S., Watson-Gandy C. D. T., Christofides N. (1971), Distribution management: Mathematical models and practical analysis, Griffin, London.
Freeman D. R., Jucker J. V. (1967), The line balancing problem, J. of Industrial Engineering, 18, p. 361.
Garfinkel R. S. (1970), Set covering; a survey, presented at XVII TIMS Conf., London.
Garfinkel R. S., Nemhauser G. L. (1969), The set partitioning problem: set covering with equality constraints, Ops. Res., 17, p. 848.
Garfinkel R. S., Nemhauser G. L. (1972), Integer Programming, Wiley, New York.
Garfinkel R. S. (1968), Optimal political districting, Ph. D. Thesis, The John Hopkins University.
Gimpel J. F. (1965), A reduction technique for prime implicant tables, IEEE Trans., EC-14, p. 535.
Glover F. (1971), A note on extreme point solutions and a paper by Lemke, Salkin and Spielberg, Ops. Res., 19, p. 1023.
Gomory R. (1963), An algorithm for integer solutions to linear programs, Recent Advances in Mathematical Programming, Graves and Wolfe, Eds., McGraw-Hill, New York.
Hakimi S. L., Frank H. (1969), Maximum internally stable sets of a graph, J. of Math. Anal, and Appl., 25, p. 296.
Hakimi S. L. (1971), Steiners’ problem in graphs and its implications, Networks, 1, p. 112.
Hause R., Nelson L., Rado T. (1965), Computer studies of a certain class of linear integer programs, Recent Advances in Optimization Techniques, Lavi and Vogel, Eds., Wiley, New York.
Jardine N., Sibson R. (1971), Mathematical taxonomy, Wiley, London. 37. Jensen P. A. (1971), Optimal networks partitioning, Ops. Res., 19, p. 916. 38. Капилина P. И., Шнейдер Б. H. (1970), Задача о внутренней устойчивости и методы ее решения с помощью ЭВМ, в сб. «Труды научной и технической конференции по итогам научных исследований за 1968 — 1969 гг., М., Издательство Московского Энергетического института.
Karp R. М. (1972), Reducibility of combinatorial problems, Complexity of computer computations, Miller and Thatcher, Eds., Plenum Press, New York, p. 85. [Русский перевод см. «Кибернетический сборник», Новая серия, 12, стр. 16 — 38.]
Lawler Е. L. (1966), Covering problems: Duality relations and a new method of solution, J. of SIAM (Appl. Math.), 14, p. 1115.
Lemke С. E., Salkin H. M., Spielberg K. (1971), Set covering by single branch enumeration with linear programming subproblems, Ops. Res., 19, p. 998.
Lovsaz L. (1966), On covering of graphs, Int. Symp. on theory of graphs, Dunod, Paris, p. 231.
Mayoh В. H., (1967), Simplification of logical expressions, J. of SIAM (Appl. Math.), 15, p. 898.
McCluskey E. J.Jr. (1956), Minimization of boolean functions, Bell. Syst. Tech. J„ 35, 1417.
Michadu P. (1972), Exact implicit enumeration method for solving the set partitioning problem, IBM J. of Res. and. Dev., 16, p. 573.
Moon J. W., Moser L. (1965), On cliques in graphs, Israel J. of Mathematics, p. 23.
Pierce J. F. (1967), On the truck dispatching problem — Part I, IBM Scientific Centre Technical Report 320—2018.
Pierce J. F. (1968), Application of Combinatorial programming to a class of all-zero-one integer programming problems, Man. Set., 15, p. 191.
Pierce J. F., Lasky J. S. (1973), Improved combinatorial programming algorithms for a class of all-zero-one integer programming problems, Man. Sci., 19, p. 528.
Pyne J. B., McCluskey E. J.Jr. (1961), An essay on prime implicant tables, J. of SIAM (Appl. Math.), 9, p. 604.
Quine W. V. (1952), The problem of simplifying truth functions, American Mathematical Monthly, 59, p. 521.
Roth R. (1969), Computer solutions to minimum-cover problems, Ops. Res., 17, p. 455.
Roy B. (1972), An algorithm for a general constrained set covering problem, Computing and Graph Theory, Read, Ed. Academic Press, New York.
Roy B. (1969, 1970), Algebre moderne et theorie des graphes, Vol. 1 and Vol. 2, Dunod, Paris.
Rubin J. (1971), A technique for the solution of massive set covering problems, with application to airline crew scheduling, IBM Philadelphia Scientific Center Technical Rept., No 320-3004.
Rutman R. A. (1964), An algorithm for placement of inter-connected elements based on minimum wire length, Proc, of AFIPS Conf., 20, p. 477.
Salkin H. M., Koncal R. (1970), A pseudo dual all-integer algorithm for the set covering problem. Dept, of O. R. Technical Memo, No 204, Case Western Reserve University.
Salkin H. M., Koncal R. (1971), A dual algorithm for the set covering problem, Dept, of O. R. Technical Memo, No 250, Case Western Reserve University.
Salveson М. Е. (1955), The assembly line balancing problem, J. of Industrial Engineering, 6, p. 18.
Selby G. (1970), The use of topological methods in computer-aided circuit layout, Ph. D. Thesis, University of London.
Shannon C. E. (1956), The zero-error capacity of a noisy channel, Trans. Inst. Elect. Eng., 3, p. 3. [Русский перевод см. Шеннон К., Работы по теории информации и кибернетике, М.,ИЛ, 1963.]
Шнейдер Б. Н. (1970), Приложение алгебры множеств к решению задач из теории графов.
Starobinets S. М. (1973), On an algorithm for finding the greatest internally stable sets of a graph, Engineering Cibernetlcs 73, English Translation by Plenum Press, p. 873.
Steiger F. (1965), Optimization of Swiss Air’s crew scheduling by an integer linear programming model, Swissair Report O.R.SDK 3.3.911.
Steiger F., Neiderer M. (1968), Scheduling air crews by integer programming, presented at IFIP Congress 68, Edinburgh.
Steinberg L. (1961), The background wiring problem; a placement algorithm, J. of SIAM (Review), 3, p. 37.
Thiriez H. (1971), The set covering problem — a group theoretic approach, Rev. Frangaise d' Informatlque et de Recherche Operationnelle, V—3, p. 83.
Wells M. B., Application of a finite set covering theorem to the simplification of boolean function expressions, Information Processing 62, Popplewell, Ed., North Holland, Amsterdam.
Глава 4
РАСКРАСКИ
Введение
Разнообразные задачи, возникающие при планировании производства, составлении графиков осмотра, хранении и транспортировке товаров ит. д., могут быть представлены часто как задачи теории графов, тесно связанные с так называемой «задачей раскраски». Графы, рассматриваемые в этой главе, являются неориентированными и не имеют петель; если специально не оговаривается иное, то под словом «граф» понимается именно такой граф.
Граф G называют r-хроматическим., если его вершины могут быть раскрашены с использованием г цветов (красок) так, что не найдется двух смежных вершин одного цвета. Наименьшее число г, такое, что граф G является г-хроматическим, называется хроматическим числом графа Си обозначается у (G). Задача нахождения хроматического числа графа называется задачей о раскраске (или задачей раскраски) графа. Соответствующая этому числу раскраска вершин разбивает множество вершин графа на г подмножеств, каждое из которых содержит вершины одного цвета. Эти множества являются независимыми, поскольку в пределах одного множества нет двух смежных вершин.
Вообще говоря, хроматическое число графа (так же как числа независимости и доминирования, рассмотренные в предшествующей главе) нельзя найти, зная только числа вершин и ребер графа. Недостаточно также знать степень каждой вершины, чтобы вычислить хроматическое число графа. В этом можно убедиться, рассматривая графы, приведенные на рис. 4.1(a) и 4.1(6). Эти графы имеют по п=12 вершин, т = 16 ребер и одинаковые распределения степеней вершин й^. Однако хроматические числа данных графов равны 4 и 2 соответственно. При известных величинах га (число вершин), т (число ребер) и d1T . . ., dn (степени вершин графа) можно получить верхнюю и нижнюю оценки для хроматического числа графа. Этим оценкам посвящен следующий раздел.
Задача нахождения хроматического числа произвольного графа явилась предметом многих исследований в конце XIX и в текущем столетии. Сейчас по этому вопросу известно большое количество интересных результатов. В этой главе, однако, мы не пытаемся обсудить эти результаты или хотя бы дать их краткий обзор. Мы вводим только такие понятия, которые нужны для построения
В А(6)В А(6)Рис. 4.1. Два графа с одинаковыми п, т и распределениями степеней вершин, но с различными хроматическими числами, (а) у (G) = 4. (б) у (G) = 2.Рис. 4.1. Два графа с одинаковыми п, т и распределениями степеней вершин, но с различными хроматическими числами, (а) у (G) = 4. (б) у (G) = 2.
В А
(6)
В А
(6)
Рис. 4.1. Два графа с одинаковыми п, т и распределениями степеней вершин, но с различными хроматическими числами, (а) у (G) = 4. (б) у (G) = 2.
Рис. 4.1. Два графа с одинаковыми п, т и распределениями степеней вершин, но с различными хроматическими числами, (а) у (G) = 4. (б) у (G) = 2.
алгоритмов решения задачи о раскраске графа. Здесь мы рассматриваем в основном алгоритмы (как точные, так и «приближенные»), позволяющие находить (точное или приближенное) значение хроматического числа произвольного графа и соответствующую этому значению раскраску вершин.
Некоторые теоремы и оценки,относящиеся к хроматическим числам
В разд. 4 гл. 3 было введено понятие кликового числа р (G) графа G (как наибольшего числа вершин в полном порожденном подграфе графа G) и было отмечено, что поскольку между кликами графа G и максимальными независимыми множествами дополнительного графа G существует взаимно однозначное соответствие, то справедливы равенства р (G) = a (G) и р (G) = = а (6)-
2Л. Нижние оценки для у (G)
Очевидно, поскольку по крайней мере р (G) цветов требуется для раскраски соответствующей клики графа G (той самой клики, которая «определяет» кликовое число графа G), что р (G) является
Рис. 4.2. Граф с р (G\ = 2 и у (G) = 5.Рис. 4.2. Граф с р (G\ = 2 и у (G) = 5.
Рис. 4.2. Граф с р (G\ = 2 и у (G) = 5.
Рис. 4.2. Граф с р (G\ = 2 и у (G) = 5.
нижней оценкой хроматического числа, т. е.
v (G) > Р (G). (4.1)
Более того, Зыков [26] доказал, что эта оценка — точная и что разность у (G) — р (G) может быть сколько угодно большой. В действительности Татт [22] показал, что можно построить граф G, который не содержит даже полного подграфа третьего порядка (т. е. р (G) = 2) и который будет иметь произвольно большое заданное значение хроматического числа. На рис. 4.2 изображен граф с р (G) = 2 и у (G) = 5.
Поскольку число a (G) равно мощности наибольшего множества попарно несмежных вершин графа G, то оно совпадает также с мощностью наибольшего множества вершин в G, которые могут быть окрашены в один цвет, и, следовательно,
т(е»Гй>Ь <4-2>
где п — число вершин графа G, а Гх-1 обозначает наибольшее целое число, не превосходящее числа1) х.
х) Число Г"хП называется ^целой частью числа х» и часто обознача
ется через [я].— Прим. ред.
Если через -у (G) обозначить хроматическое число дополнения графа G, то можно записать следующие два неравенства, полученные Нордхаузом и Гаддумом [191:
y(G)>L2r»J-y(6)(4.3)
и
,4'4>
где lzJ означает наименьшее целое число, которое не меньше ) х.
Еще одна нижняя оценка для у (G) предложена Геллером [8]:
Майерс и Лин [18] показали, что оценка из (4.1) равномерно мажорирует приведенную выше, и, следовательно, единственное преимущество оценки (4.5) состоит в том, что ее проще вычислять, чем оценку (4.1).
Верхние оценки для у (G)
Нижние оценки хроматического числа безусловно более интересны, чем верхние, поскольку (если они достаточно близки к истинному значению) они могут быть использованы в процедуре вычисления у (G), включающей дерево поиска. В то же время перхниА оценки хроматического числа подобного применения не находят. Тем не менее в литературе приводятся формулы для вычисления верхних оценок хроматического числа; так Бруксом [3] предложена следующая легко вычисляемая оценка:
у (G)^l + max [d (о^) +1].(4.6)
Другие достаточно точные верхние оценки, также использующие степени вершин графа, можно найти у Уэлша [23] и Вилфа и Секе- реша [21].„
Верхние оценки, связывающие значения у (G) и у (G), приводятся у Нордхауза и Гаддума [19]:
у (G) ^ п + 1 — у (G)(4.7)
T(G)<f(2±l)2]/T(8) ■08)
Оценки, даваемые формулами (4.3), (4.4), (4.7) и (4.8), являются пяилучшими в том смысле, что можно построить графы, на которых эти оценки достигаются. В большинстве случаев, однако, они столь неточны, что не имеют никакой практической значимости.
Гипотеза четырех красок
Граф, который можно так изобразить на плоскости, что никакие два его ребра не пересекаются между собой т), называется планарным. Планарные графы важны как с теоретической, так и с практической точек зрения и обладают рядом таких свойств, связанных с раскраской, о которых следует упомянуть.
Теорема о пяти красках [13]
Каждый планарный граф можно так раскрасить, используя пять цветов, что любые две смежные вершины будут окрашены в разные цвета, т. е. если G — планарный граф, то у (G) ^ 5.
«Теорема» о четырех красках (недоказанная ))
Каждый планарный граф можно так раскрасить, используя 4 цвета, что любые две смежные вершины будут окрашены в разные цвета, т. е. у (G) ^ 4, если G — планарный граф.
Впервые примерно в 1850 г. о гипотезе четырех красок речь шла в беседах Августа де Моргана и его ученика Ф. Гутри. Затем о ней говорилось в письме де Моргана сэру Вильяму Рауэну Гамильтону, датированном 23 октября 1852 г. Поскольку тогда довольно быстро нарастал поток «доказательств», «контрдоказательств», гипотез и теорем, относящихся к этой тематике, то накопилась громадная литература по гипотезе четырех красок, и эта «теорема» стала, по-видимому, самой знаменитой нерешенной задачей в математике. Мы не будем здесь подробно обсуждать гипотезу четырех красок и интересующегося ею читателя отсылаем к замечательной работе Оре [2 ].
3. Точные алгоритмы раскраски
В этом разделе рассматриваются некоторые алгоритмы, которые являются точными в том смысле, что они гарантируют нахождение оптимальной раскраски и истинного значения хроматического числа для любого графа.
*) Точнее, никакие две кривые, представляющие ребра графа, не пере, секаются (геометрически) нигде, кроме инцидентной[им[обоим вершины (т. е- пересекаться могут только смежные ребра и притом лишь в «концевых точках».— Прим. ред.
Метод динамического программирования
-Максимальные r-подграфы. Порожденный подграф (5Г [GD графа G = (X, Г), где Sr[G] г X, называется г-подгра- фом, если он г-хроматический. Если не существует такого множества И, что Н дз Sr (G) и подграф (Н) является г-хроматическим, то подграф (Sr [(?]) называется максимальным r-подграфом графа G. Очевидно, что для фиксированного значения г, вообще говоря, существует много различных максимальных г-подграфов данного графа G. Подграф, у которого множество вершин совпадает с некоторым максимальным независимым множеством в G и который не имеет ребер (т. е. является вполне несвязным), есть максимальный 1-подграф графа G, поскольку в G нет Ахроматического подграфа, имеющего большее множество вершин, чем у рассматриваемого подграфа.
Хроматическое число графа G можно определить как такое наименьшее число г, что Sr [G] = X по крайней мере для одного из максимальных r-подграфов графа G.
Теорема 1. Если граф G является r-хроматическим, то он может быть раскрашен с использованием г (или меньшего числа) красок с помощью следующей процедуры: сначала в один цвет окрашивается некоторое максимальное независимое множество 8г [G], затем окрашивается в следующий цвет множество 5t [ (X—^JGT)] и т. д. до тех пор, пока не будут раскрашены все вершины.
Доказательство. Тот факт, что такая раскраска, использующая только г цветов, всегда существует, может быть установлен следующим образом. Пусть существует раскраска в г цветов, такая, что одно или больше множеств, окрашенных в один и тот же цвет, не являются максимальными независимыми множествами в смысле, упомянутом выше. Перенумеруем цвета произвольным способом. Очевидно, что мы можем всегда покрасить в цвет 1 те вершины (пусть это множество Vi), которые не были окрашены в этот цвет и которые образуют максимальное независимое множество вместе с множеством V, всех вершин графа, уже окрашенных в цвет 1. Эта новая раскраска возможна потому, что никакая вершина из множества У4 не является смежной ни с какой вершиной из VT и, следовательно, всякая вершина, которая смежна хотя бы с одной вершиной из Уг, окрашена в цвет, отличный от цвета 1, и поэтому не затрагивается процедурой перемены цвета вершин из Vv Рассматривая теперь подграф (X — ^ J ^i> и проводя с ним аналогичные манипуляции, мы окрасим в цвет 2 какое-то (новое) максимальное независимое множество и т. д.
Раскраску указанного в теореме вида будем называть оптимальной независимой раскраской.
Рекуррентные соотношения. Вышеприведенную теорему можно использовать для получения рекуррентного соотношения, связывающего максимальные r-подграфы графа с его максимальными (г — 1)-подграфами.
Пусть Qr-i ^] — семейство максимальных (г — 1)-подграфов графа G, а 5|_! [G] — множество вершину-го подграфа из семейства Qr-i tol- Множество S^ [GJ] является тогда множеством вершин fc-ro максимального 1-подграфа (независимого множества) графа Gj = (X — SJr_1 [G]), образованного вершинами графа G, не попавшими в (г — 1)-подграф (S’_t [G]).
Тогда следующим образом можно описать семейство всех максимальных r-подграфов графа G.
Строим множества Я1:
(4.9) / = 1, 2, . . ., q,^ и к = 1, 2, . . ., д{, где q,^ и q{ — соответственно число (г — 1)-подграфов и число 1-подграфов.
Семейство максимальных r-подграфов содержится в семействе 0 множеств Я1 (i = 1, 2, . . ., g{-gr-i), и оно может быть получено из него исключением таких множеств семейства, которые содержатся в других множествах.
Итак, 0Г [G] можно описать следующим образом:
0r to] = (Я11 Я' С 0 и Нг ^Н^ для любого
ЯЧ0,7^О- (4.Ю)
Алгоритм, основанный на рассмотрении максимальных r-подграфов. В предыдущем разделе было указано, что хроматическое число графа G является таким наименьшим значением г, при котором Sr [G] — множество вершин некоторого максимального г-подграфа — совпадает с X (множеством вершин графа G). Поэтому рекуррентные соотношения (4.9) и (4.10) могут быть использованы для последовательного построения максимальных 1-подграфов, 2-подграфов и т. д. и нахождения хроматического числа графа G, нужно просто на каждом шаге указанной процедуры проверять, не содержится ли множество вершин графа G в каком-нибудь из построенных подграфов ).
Ниже приводится описание алгоритма, позволяющего находить хроматическое число графа G и раскраску, соответствующую этому числу.
Шаг 1. Положить г = 1. Найти множества вершин S^. [G], 7 = 1, . . ., qT, максимальных r-подграфов графа G. (Считаем, что имеется qT таких множеств.) Пусть Q = {Si [G] | у = 1, . . ., qTy Положить у" = 1.
Шаг 2. Найти максимальное независимое множество ST [G4 графа Gj = (X — S{ [G]). Если такое множество существует, то перейти к шагу 3. Если все такие множества уже найдены, то перейти к шагу 6.
Шаг 3. Вычислить S = Sj [G] J Sx 1^1-
Шаг 4. Если S = X, то остановиться. Число г + 1 есть хроматическое число графа G. Подмножества, включенные в множество 8, дают требуемую раскраску. (Эти подмножества накапливаются по мере их введения и хранятся отдельно с соответствующими отметками (маркерами)). Если S =# X, то перейти к шагу 5.
Шаг 5. (i) Если S ^ S' для некоторого 8' £ ^, то перейти к шагу 2.
(И) Если 8 id S' для некоторых S' £ Q, то положить Q = = Q — {S'} по всем таким S' из Q. Положить Q = Q J {3} и перейти к шагу 2.
Если не выполняется ни одно из условий (i) и (ii), указанных выше, то положить ^ = ^ U {3} и перейти к шагу 2.
Шаг 6. Если 7" < qT1 то положить 7" = 7" + 1 и перейти к шагу 2.
Если 7" = qT, то положить j = l,r = r-\-l,qT = числу множе- жеств в Q и перейти к шагу 2.
Если работу алгоритма не завершать при первом выполнении условия S = X на шаге 4, то алгоритмический процесс будет продолжаться до получения раскраски в г + 1 цветов, если такая раскраска существует. Следует отметить, однако, что описанный алгоритм не дает полного перечисления всех возможных раскрасок в г + 1 цветов, а только порождает оптимальные независимые раскраски. Такие раскраски могут оказаться только небольшой частью всех возможных’ раскрасок в г + 1 цветов.
Пример. Рассмотрим семивершинный граф G, изо браженный на рис. 4.3.
Шаг 1. Множествами вершин максимальных 1-подграфов являются: 3} [G] = {1, 4, 6};3, [G] = {2, 3, 5};3, [G] =
= {2, 5, 7}; S{ [G] = {2, 6}. Следовательно, ^ = 4 и Q = = {3} [G], 3^3], 3, [G], St [G]}.
Применяем (необходимое число раз) шаги 2—5 алгоритма:
Для S} [G]
Шаг 2. G1 = (X — 3} [G1) = ({2, 3, 5, 7}); S, [G1] = {2, 3, 5).
ДРис. 4.3. Граф из примера 3.1.4.
Шаг 3.S = {1, 4, 6 f 2, 3, 5}.
Шаг 5. Q = [{1, 4, 6 | 2, 3, 5}].
Шаг 2. Sy IG1] = {2, 5, 7}.
Шаг 3.S = {1, 4, 6 f 2, 5, 7}.
Шаг 5. Q = [{1, 4, 6f 2, 3, 5}, {1, 4, 6 f 2, 5, 7}].
Для S? [G]
Шаг 2. G2 = ({1, 4, 6, 7}); ^ [G2] = {1, 4, 6}.
Шаг 3. 8 = {2, 3, 5 f 1, 4, 6), исключено в соответствии с шагом 5 (i).
Шаг 2. 8г [G2] = {7}.
Шаг 3. 8 = {2, 3, 5 f 7}.
*Шаг 5. Q = [{1, 4, 6 f 2, 3, 5), {1, 4, 6 f 2, 5, 7), {2, 3, 5 f 7}]„
Для S?[G1
Шаг 2. G3 = ({1, 3, 4, 6}); 5± LG3] = {1,4, 6}.
Шаг 3. 8 = {2, 5, 7 f 1, 4, 6}, исключено в соответствии с шагом 5(1).
Шаг 2. Si [G3] = {3}.
Шаг 3. S = {2, 5, 7 f 3}, исключено в соответствии с шагом 5(1).
Для 5, [G]
Шаг 2. G4 = {1, 3, 4, 5, 7}, 5г [G4] = {1, 4).
Шаг 3. S = {2, 6 j 1, 4}, исключено в соответствии с ша- гом 5(i).
6*
Шаг 2. SY [G] = {3, 5}.
Шаг 3. 8 = {2, 6 f 3, 5}, исключено в соответствии с шагом 5(i).
Шаг 2. Sv [G4] = {5, 7}.
Шаг 3. 8 = {2, 6 f 5, 7}, исключено в соответствии с шагом 5 (i).
Таким образом, в конце первой итерации, использующей шаги 2—5 алгоритма, получается семейство Q множеств 8^ [G], соответствующее максимальным 2-подграфам и показанное на шаге, отмеченном звездочкой. Следует обратить внимание на то, что 5 из восьми полученных множеств исключены в результате применения первого правила из шага 5 алгоритма.
Действуя аналогичным образом дальше, можно построить максимальные 3-подграфы и т. д. В действительности уже следующее порожденное множество Sg [G] = {1, 4, 6 f 2, 5, 3 f 7} будет удовлетворять условию GJ [G] = X на шаге 4. Следовательно, хроматическое число графа равно 3 и оптимальная раскраска задается следующим разбиением (множества X) : {1, 4, 6}, {2, 5, 3}, {7}. Если применять алгоритм дальше, то будет получена еще одна возможная раскраска:
51 [G] = {1,4, 6 f 2, 5, 7 f 3} = X.
Все другие множества 8^ [G] либо содержатся в двух предшествующих множествах, либо не содержат все вершины из X.
Заметим, что такие раскраски, как (5, 3}, (1, 4, 6}, {2, 7}, хотя и возможны, но не являются оптимальными независимыми и не порождаются описанным выше алгоритмом.
Формулировка задачи о раскраскена языке 0-1-программирования
Пусть q — какая-нибудь верхняя оценка хроматического числа графа G. Эта верхняя оценка может быть одной из оценок, данных в разд. 2 этой главы, или может быть равна числу цветов, получающемуся в одном из тех эвристических методов решения задачи о раскраске, которые подробно будут описаны позже.
Пусть 3 = [gj —■ матрица раскраски графа (задающая некоторую конкретную раскраску *) вершин графа), так что
( 1, если вершина ж, окрашена в цвет /, ^IJ 1 0 в противном случае.
Если А = [агк] — матрица смежности графа G с диагональными элементами, равными 0, то следующие два условия гарантируют допустимость раскраски вершин графа G (т. е. допустимость матрицы раскраски [£г>]):
^^7 = 1 (для всех i = 1, . . ., п),(4.11)
т.н \ У л J ДЛЯ ВСех ~ ’ • • • ’ п
1 1.2.<4-12)
Условие (4.11) обеспечивает раскраску вершины в один и только один цвет.
В условии (4.12) L — очень большое положительное число (любое целое, большее чем к). Если вершина xt окрашена в цвет / (т. е. £о = 1), то первый член в (4.12) равен 0. Тогда и второй член должен быть равен 0, чтобы выполнялось неравенство, поскольку числа aik и ^м неотрицательны. Таким образом, условие (4.12) обеспечивает допустимость раскраски, т. е. если вершина х- окрашена в цвет /, то нет смежной с Xi вершины того же цвета. Если вершина окрашена в цвет, отличный от j (tu = 0), то первый член в (4.12) равен L. Поскольку второй член в (4.12) не может очевидно, достигнуть значения L (его наибольшее значение равно в действительности п — 1), то какое бы число вершин хк, смежных с вершиной xt, ни было окрашено в цвет /, неравенство (4.12) по-прежнему будет выполняться. Заметим, что если вершины хк и хк смежны с х,, а также смежны между собой, то условие (4.12) записанное для вершины х^ не будет црепятствовать раскраске хк и хк в один и тот же цвет j. Однако, записав условие (4.12) для (и™;/^’ мы обеспечим тем самым раскраску этих двух вершин \хк и хк) в разные цвета.
Пусть теперь каждому цвету j сопоставлен штраф р, выбран- ныи так, чтог
Pj+i>h-pj (штраф pv принят равным единице) (4.13) и где h есть верхняя оценка для наибольшего числа вершин в графе, которые могут быть окрашены в один цвет, т. е. h — произвольное число, большее чем a (G) — число независимости графа. При отсутствии лучшей оценки можно положить h = п, не проводя лишних вычислений.
Задача раскраски вершин графа с использованием наименьшего числа цветов может быть сформулирована следующим образом- минимизировать
2 = Ц^(4-14)
при ограничениях (4.11) и (4.12).
Минимизация выражения (4.14) обеспечивает выполнимость следующего условия: цвет / + 1 не будет использован в раскраске вершин, если цвета от 1 до / достаточны для допустимой раскраски. Матрица (раскраски графа) [|*j], которая дает решение приведенной выше задачи линейного 0-1-программирования, определяет оптимальную раскраску, а используемое при этом число цветов равно хроматическому числу графа.
Берж [1] вместо условия (4.12) предложил следующее:
n f для всех к = 1, 2, ..., m
/ = 1,2, ...,g, (4Л5)
где [Ь,Д —матрица инциденций, т. е. bih = 1, если вершина xt инцидентна ребру п^, и Ъ^ = 0 в противном случае. Услов- вие (4.15) отражает тот факт, что не более чем одна из двух концевых вершин любого ребра может быть окрашена в цвет у.
Хотя это условие более естественное, чем (4.12), но для его описания требуются mq ограничений, тогда как для условия (4.12) нужно только nq ограничений. Поскольку число ребер (т) связного графа обычно значительно больше числа его вершин (п), то условие (4.12) с вычислительной точки зрения предпочтительнее. Насколько велик при этом выигрыш, можно увидеть на следующем примере: если в некотором 100-вершинном графе число ребер ■будет составлять только 20% от числа ребер в полном 100-вершин- ном графе, то для задания условия (4.15) потребуется 1000 ограничений на каждый цвет, а для описания условия (4.12) — только 100 ограничений на каждый цвет.
Сведение задачи о раскраске к ЗНП
Поскольку при любой допустимой раскраске графа G множество вершин, окрашиваемых в один и тот же цвет, должно быть независимым множеством, то всякую допустимую раскраску можно интерпретировать как разбиение всех вершин графа G на такие независимые множества. Далее, если каждое независимое множество расширить до максимального (путем добавления к нему других вершин), то раскраска графа G может быть тогда истолкована как покрытие вершин графа G максимальными независимыми множествами. Очевидно, что в последнем случае некоторые вершины графа G могут принадлежать более чем одному максимальному независимому множеству. Это говорит о возможности существования различных допустимых раскрасок (использующих одно и то же число цветов), так как вершину, принадлежащую разным максимальным множествам, можно окрасить в любой из цветов, соответствующих тем максимальным независимым множествам, которым она принадлежит.
Итак, пусть построены все максимальные независимые множества графа G, например с помощью алгоритма, приведенного в разд. 2.3 предшествующей главы (пусть таких множеств f), и пусть задана (n X ?)-матрица М = [шо-], у которой т^ = 1, если вершина xt принадлежит /-му максимальному независимому множеству, и тц = 0 в противном случае. Если теперь каждому максимальному независимому множеству сопоставить единичную стоимость, то задача раскраски сведется просто к задаче нахождения наименьшего числа столбцов в матрице М, покрывающих все ее строки 1). Каждый столбец из решения этой ЗНП соответствует определенному цвету, который может быть использован для окраски всех вершин максимального независимого множества, представленного этим столбцом.
Хотя t — число столбцов матрицы М — может быть весьма велико даже для графов средних размеров, формулировка задачи раскраски как ЗНП предпочтительнее, чем непосредственная ее постановка как задачи общего 0-1-программирования, потому что ЗПН могут быть решены для таких размеров (т. е. для числа переменных), которые по крайней мере на порядок больше, чем «подходящие» размеры в случае задач общего 0-1-программирования (см. гл. 3).
Пример. Для графа, изображенного на рис. 4.4, число всех максимальных независимых множеств равно 15, и в матрице, приведенной ниже, они представлены столбцами; на пустых местах в матрице должны стоять нули.
Максимальные независимые множества
1 2 3 4 5 б 7 8 9 10 11 12 13 14 151 2 3 4 5 б 7 8 9 10 11 12 13 14 15М =М =*) Напоминаем, что i-й столбец в 0-1 -матрице покрывает те и только те строки, в которых на пересечении с i-м столбцом стоят единицы,— Прим, ред.*) Напоминаем, что i-й столбец в 0-1 -матрице покрывает те и только те строки, в которых на пересечении с i-м столбцом стоят единицы,— Прим, ред.
1 2 3 4 5 б 7 8 9 10 11 12 13 14 15
1 2 3 4 5 б 7 8 9 10 11 12 13 14 15
М =
М =
*) Напоминаем, что i-й столбец в 0-1 -матрице покрывает те и только те строки, в которых на пересечении с i-м столбцом стоят единицы,— Прим, ред.
*) Напоминаем, что i-й столбец в 0-1 -матрице покрывает те и только те строки, в которых на пересечении с i-м столбцом стоят единицы,— Прим, ред.
Рис. 4.4. Граф из примера 3.3.1.
Решение задачи о покрытии для этой матрицы состоит из 4 столбцов и не является единственным. Например, решениями будут множества столбцов {4, 6, 10, 14), {4, 6, 10, 12}, {4, 6, 10, 11}, {4, 6, 10, 8} и (4, 6, 10, 2}. Если мы выберем последнее из этих решений (отмеченное стрелками) и сопоставим цвета a, b, с, d столбцам 4, 6, 10 и 2 соответственно, то вершину а^ (принадлежащую одновременно столбцам 2 и 4) можно окрасить в цвет а или в цвет d, а вершину х3 (принадлежащую обоим столбцам 2 и 10) можно окрасить в цвет с или в цвет d и таким образом получить различные оптимальные раскраски.
Интересно отметить, что в данном примере нижняя оценка для у [G] равна 4 (это можно получить из соотношения (4.2), так как a [G] = 3 и га = 10) и, значит, совпадает с истинным значением у [G1.
Алгоритм прямого неявного перебора,использующий дерево поиска
Для определения хроматического числа графа может быть использован с поразительной эффективностью очень простой метод неявного перебора, не содержащий никаких хитростей [4, 9]. Метод состоит в следующем.
Предположим, что множество вершин как-то упорядочено и X, ■— i-я вершина этого множества. Тогда первоначальная допустимая раскраска может быть получена так:
окрасить xt в цвет 1.
каждую из оставшихся вершин окрашивать последовательно *): вершина Xt окрашивается в цвет с наименьшим возможным «номером» (т. е. выбираемый цвет должен быть первым в данном упорядочении цветом, не использованным при окраске какой-либо вершины, смежной с х^.
Пусть q — число цветов, требуемое для вышеупомянутой раскраски. Если существует раскраска, использующая только q — 1 цветов, то все вершины, окрашенные в цвет q, должны быть перекрашены в цвет j < q. Пусть хг* — первая вершина при заданном упорядочении, которая была окрашена в цветд. Поскольку (согласно (ii)) она была так окрашена потому, что не могла быть окрашена в цвет j <; q, то ее можно перекрасить в цвет / < q, лишь перекрасив предварительно хотя бы одну из смежных с ней вершин. Итак, шаг возвращения из вершины х,* можно осуществить следующим образом.
Из смежных с xt» вершин в множестве f^, . . ., ^,«-1} найти последнюю (при заданном упорядочении), т. е. вершину с наибольшим индексом. Пусть это будет вершина хк. Если хк окрашена в цвет jh, то хк перекрашивается в другой допустимый цвет с наименьшим возможным «номером» /я, таким, что jk, ^jk + 1.
Если j'k <_ q, то надо продолжать последовательно перекрашивать все вершины с хк+1 до хп, применяя указанное выше правило (ii) и помня о том, что цвет q использовать нельзя. Если такая процедура осуществима, то будет найдена новая лучшая раскраска, использующая меньше, чем q цветов. В противном случае, т. е. если встретится вершина, «требующая» цвет q, то можно снова сделать шаг возвращения ■— из такой вершины.
Если jk = q или нет другого допустимого цвета jk (см. ниже замечание (а)), то можно сразу же делать шаг возвращения из вершины хк. Алгоритм заканчивает работу, когда на шаге возвращения достигается вершина xv
Следующие замечания могут помочь ускорить вышеприведенную процедуру прямого неявного перебора.
При любом упорядочении вершин допустимые цвета у для вершины хг удовлетворяют условию у ^ I (если I -< qY Это очевидно, так как вершине хг предшествуют (при данном упорядочении) только i — 1 вершин и, следовательно, никакой цвет у 2> г не использовался. Таким образом, для вершины хт допустимым является только цвет 1, для х2 — цвет 1 и цвет 2 (если хе смежна с xv то для х2 допустим только цвет 2) и т. д.
х) В соответствии с заданным упорядочением.— Прим. ред.
Из замечания (а) следует, что с вычислительной точки зрения выгодно располагать переменные в таком порядке, чтобы, например, первые р вершин образовывали наибольшую клику графа G. Это приведет к тому, что каждая вершина xt (1 г р) будет иметь только один допустимый цвет, т. е. цвет г, и алгоритм может закончить работу раньше, когда на шаге возвращения будет достигнута вершина х0.
Хотя процедура неявного перебора, описанная в этом разделе, является примитивным древовидным поиском (в котором не нужно вычислять никакие оценки для ограничения ветвлений), тем не менее она нисколько не хуже других известных методов раскраски графов. Так, например, для графа с 30 вершинами, содержащего приблизительно третью часть множества всех ребер полного 30-вершинного графа, нахождение оптимальной раскраски с помощью алгоритма неявного перебора требует около 30 с машинного времени на вычислительной машине IBM ИЗО.
Приближенные алгоритмы раскрашивания
Существует много эвристических процедур раскрашивания графов, позволяющих находить хорошие приближения для хроматического числа графа в тех случаях, когда размеры графа слишком велики и получение оптимальной раскраски точными методами, упоминавшимися ранее, затруднительно. В настоящем разделе дается краткое описание одной из таких процедур и ряда ее разновидностей.
Последовательные методы,основанные на упорядочивании множества вершин
В этом простейшем из методов вершины вначале располагаются в порядке невозрастания их степеней.
Первая вершина окрашивается в цвет 1; затем список вершин просматривается сверху вниз (по невозрастанию степеней) и в цвет 1 окрашивается всякая вершина, которая не смежна с другой, уже •окрашенной в этот цвет. Потом возвращаемся к первой в списке неокрашенной вершине, окрашиваем ее в цвет 2 и снова просматриваем список вершин сверху вниз, окрашивая в цвет 2 любую неокрашенную вершину, которая не соединена ребром с другой, уже окрашенной в цвет 2 вершиной. Аналогично действуем с цветами 3, 4 и т. д., пока не будут окрашены все вершины. Число использованных цветов будет тогда приближенным значением хроматического числа графа [23, *25].
Простая модификация описанной выше эвристической про^ цедуры состоит в переупорядочивании неокрашенных вершин
после окраски каждой очередной вершины: оставшиеся неокрашенные вершины записываются в порядке невозрастания их -«относительных» степеней, т. е. степеней в таком графе, который получается из данного после удаления окрашенных вершин (вместе с ребрами, инцидентными удаленным вершинам).
В этой процедуре молчаливо предполагалось, что если две вершины имеют одинаковые степени, то их взаимное положение в списке случайно. В таких ситуациях уточнение в размещении вершин можно осуществлять с помощью двухшаговых степеней </[2) вершин х^ имеющих одинаковые степени (одинаковые 1-шаговые степени), где ^2) определяется как число маршрутов т) длины 2, исходящих из х^ Эти вершины могут быть размещены тогда в соответствии с величинами степеней d^. Если все-таки найдутся вершины, у которых совпадают и степени d^ и степени d^ то можно вычислить трехшаговые степени d^ (определяемые аналогичным образом) и разместить вершины с учетом степеней d^ и т. д.
Можно действовать иначе: размещать вершины сразу в соответствии с их степенями d^ или степенями d^ и применять тот же самый последовательный метод раскраски [24]. Таким образом, описанный выше метод раскрашивания очерчивает целый класс последовательных методов, каждый из которых связан с определенным способом упорядочивания вершин, либо статическим, т. е. фиксированным сразу для всей процедуры, либо динамическим, т. е. изменяющимся в процессе раскраски. Способ упорядочивания может базироваться на многих возможных критериях, зависящих от степеней вершин или от каких-либо других родственных характеристик. Результаты вычислений и сравнение последовательных методов раскрашивания для графов, выбранных случайным образом, приведены в работах Матулы, Марбле и Исааксона [16] и Вильямса [24]. Границы применимости этих эвристических методов демонстрируются у Митчема [17], показавшего, что можно построить графы, для которых любой из эвристических методов дает произвольно плохие оценки хроматического числа.
х) Если А — матрица смежности графа G с диагональными элементами, п
равными 0, то с^ = ^ atj* Двухшаговая степень определяется тогда по фор-
муле di21 = 2 atjdp и вообще А:-шаговая степень определяется по рекуррент- j=i
ной формуле:
Обобщения и приложения
Задача раскраски в том «чистом» виде, в каком она рассматривалась выше в настоящей главе, редко встречается на практике. Однако ее обобщения и разновидности (незачительно отличающиеся от нее) находят широкое применение в большом числе различных прикладных задач. Целью данного раздела является ознакомление читателя с несколькими наиболее часто встречающимися обобщениями. Список приложений, естественно, этими примерами не ограничивается.
Простая задача размещения (загрузки) [6]
Рассмотрим задачу размещения (загрузки) п каких-то предметов по ящикам. Пусть каждый предмет соответствует определенной вершине графа G. Всякий раз, когда два предмета ^ и Xj не могут быть размещены в одном ящике (например, когда предмет хг может загрязнить предмет х5), в граф G вводится ребро (xtl Xj). Если ящики имеют неограниченную вместимость, так что в каждый из них можно поместить сколько угодно предметов, то задача нахождения наименьшего числа ящиков для размещения предметов эквивалентна задаче нахождения хроматического числа графа G; причем каждому ящику соответствует определенный «цвет», а предметы, окрашенные в один цвет, укладываются в один и тот же ящик.
Ящики одинаковой вместимости. В действительности ящики обладают ограниченной вместимостью. Предположим, что вместимость одинакова у всех ящиков и равна Q. Это можно интерпретировать так: в один цвет окрашиваются не более чем Q вершин. В терминах 0-1-программирования (см. разд. 3 настоящей главы) данная задача загрузки может быть сформулирована следующим образом:
минимизировать выражение (4.14) при ограничениях (4.11), (4.12) и
п
3 lij^Q (для всех у = 1,2, ...лУ (4.16) 1=1
Решением этой задачи является матрица [£%], описывающая оптимальное размещение (распределение) предметов по ящикам (иначе говоря, группировка предметов по цвету). Число q есть верхняя оценка для числа ящиков.
) Ящики имеют, вообще говоря, различные вместимости, и ящикам приписаны стоимости. Пусть /-й ящик имеет вместимость Qj и стоимость vt. Предположим еще, что предметам (верши-
нам графа) сопоставлены веса, скажем, z-му предмету соответствует вес w^ Требуется так разместить предметы по ящикам, чтобы
выполнялись условия, «накладываемые» графом G,
удовлетворялись ограничения на вместимость ящиков,
была наименьшей общая стомимость используемых ящиков. Тогда задача примет следующий вид:
минимизировать функцию з—^Ф^(4-17)
3=1
при ограничениях (4.11), (4.12) и
для всех 7 = 1, ..., д,для всех 7 = 1, ..., д,2 ^tj^L^j г=12 ^tj^L^j г=1(4.18)(4.19)(4.18)(4.19)
для всех 7 = 1, ..., д,
для всех 7 = 1, ..., д,
2 ^tj^L^j г=1
2 ^tj^L^j г=1
(4.18)
(4.19)
(4.18)
(4.19)
где переменная фу принимает значение 1, если в ящик / помещен какой-либо предмет, и равна 0 в противном случае.L — произвольное положительное целое число, большее, чем и, a g — общее число имеющихся ящиков. Ограничение (4.18) означает, что ни один из ящиков не перегружается, а ограничение (4.19) гарантирует выполнимость условия: если фуо = 0 (т. е. ящик /0 пуст), то все Eijo (Z = 1, . . ., п) также равны 0.
В этом самом общем случае необходимо было ввести дополнительные переменные фу, поскольку ящики (цвета) нельзя штрафовать тем способом, который характеризуется выражением (4.14). Следует отметить, что чем более общей является задача, тем менее важным становится ее «раскрасочный» аспект. Так, например, в только что рассмотренной задаче можно выделить две подзадачи: (а) о «раскраске», соответствующую ограничению (4.12), и (б) о «ранце», определяемую ограничением х) (4.18). Два других ограничения, (4.11) и (4.19), являются ограничениями структурного характера.
Из-за этих двух взаимосвязанных аспектов общая задача раскраски значительно труднее для решения, чем «чистая» задача раскраски.
Две следующие прикладные задачи можно рассматривать как задачи о раскраске графа (или соответствующие обобщения задачи о раскраске).
1) Задача о ранце рассматривалась, например, в [10].
Составление графиков осмотра (проверки) (25] [2 4]
В задачах теории расписаний г) осмотры представляются в виде временных интервалов. Каждому осмотру можно сопоставить вершину некоторого графа, причем две любые вершины графа будут соединены ребром лишь тогда, когда соответствующие им осмотры нельзя осуществлять одновременно. Требуется составить такой график осмотра, который связан с наименьшими временными затратами (с учетом приведенных выше ограничений на «совместимость» осмотров). Эта задача эквивалентна задаче о раскраске вершин графа с использованием наименьшего числа цветов. Хроматическое число графа как раз и соответствует осмотру, требующему наименьших временных затрат.
Если число осмотров, которые можно осуществлять в одно и то же время, ограничено (например, из-за размеров помещения), то приходим к задаче типа (i) из разд. 5.1, и Q в этом случае является числом помещений, где происходит осмотр.
Распределение ресурсов
Пусть для выполнения каких-то п работ надо распределить т имеющихся в наличии ресурсов. Считаем, что каждая из работ выполняется за некоторый (одинаковый для всех работ) промежуток времени и что для выполнения t-й работы требуется подмножество ресурсов Sp Построим граф G: каждой работе соответствует определенная вершина графа, а ребро (ж;, х^) существует в графе тогда и только тогда, когда для выполнения i-й и /-й работ требуется хотя бы один общий ресурс, т. е. когда 5f Q Q Sj=#^. Это означает, что/-я и /-я работы не могут выполняться одновременно. Раскраска графа G определяет тогда некоторое распределение ресурсов (по выполняемым работам), причем такое, что работы, соответствующие вершинам одного цвета, выполняются одновременно. Наилучшее использование ресурсов (т. е. выполнение всех п работ за наименьшее время) достигается при оптимальной раскраске вершин графа G.
Задачи
Для графа, показанного на рис. 4.5, вычислить верхние и нижние оценки хроматического числа, используя результаты, приведенные в разд. 2.1 и 2.2.
Рис. 4.5.
Используя алгоритмы из разд. 3.1 и 3.4, найти для графа на рис. 4.5 хроматическое число и соответствующую этому числу раскраску. Сравнить вычислительную сложность этих алгоритмов (для данного графа).
Для графа, изображенного на рис. 3.6 из гл. 3, найти хроматическое число и соответствующую раскраску, формулируя задачу о раскраске как ЗНП.
Применить последовательные методы, основанные на рассмотрении степеней d^ d^ и d^a\ для получения «оптимальной» раскраски графа, приведенного на рис. 4.5.
Доказать, что хроматическое число каждого п-вершинного дерева (п^2) равно 2.
Показать, что граф 2-хроматический тогда и только тогда,, когда все его циклы имеют четные длины.
В плоскости проведено конечное число прямых линий; онк разбили ее на конечное число областей. Показать, что достаточно 2 цвета для такой раскраски всех этих областей, когда любые две смежные области окрашиваются в разные цвета.
Граф на рис. 4.6 представляет схему электрических соединений; вершины соответствуют клеммам, ребра — прямым металлическим полоскам проводников. Для физически осуществимых соединений проводники не должны пересекать друг друга, поэтому необходимо распределить ребра по нескольким параллельным
платам, в каждой из которых проводники не пересекались бы. (Клеммы «доступны» на всех платах.)
Определить наименьшее число плат, необходимых для реализации этих соединений (см. [14] и [7]).
На трех предприятиях выпускается одиннадцать видов изделий А, В, . . ., К, причем каждый вид производится только на одном из трех предприятий. Процент общих деталей и материалов, используемых в производстве каждых двух видов изделий, приводится в следующей матрице:
А
А В
55
В
С
С
60
80
—
D
D
85
65
40
— Е
Е
45
90
35
80 — F
F
80
75
30
90 90 —
G
G
50
30
70
35 65 30
—
Н
Н
50
60
90
40 35 70
30
— I
I
60
45
40
80 30 70
20
25 — I
J
45
40
45
35 80 20
90
25 85 —' К
К
80
70
85
30 35 40
25
75 75 60 —
Желательно, чтобы на одном предприятии выпускались изделия с большим процентом общих деталей и материалов, потребляемых при их производстве. Требуется так распределить производство изделий на предприятиях, чтобы минимум общих поставок для производства двух любых видов изделий на одном и том же предприятии был как можно больше.
Список литературы
Берж К., (1962), Теория графов и ее применения, ИЛ, М.
Bondy I. А. (1969), Bounds for the chromatic number of a graph, J. of Combinatorial Theory, 7, p. 96.
Brooks R. L. (1941), On colouring the nodes of a network, Proc. Cambridge Philosophical Soc., 37, p. 194.
Brown J. R. (1972), Chromatic scheduling and the chromatic number problem, Man. Sci., 19, p. 456.
Christofides N. (1971), An algorithm for the chromatic number of a graph, The Computer J., 14, p. 38.
Eilon S., Christofides N. (1971), The loading problem, Man. Sci. 17, p. 259.
Even S. (1973), Algorithmic combinatorics, Macmillan, New York.
Geller D. P. (1970), Problem 5713, American Mathematical Monthly, 77, p. 85.
Gillian R. J. (1970 , The chromatic number of a graph, M. Sc. Thesis, Imperial College, London University.
Gilmore P. C., Gomory R. E. (1967), The theory and computation of knapsack functions, Ops. Res., 15, p. 1045.
Graver J. E., Yackel J. K. (1968), Some graph theoretic results associated with Ramsey’s theorem, J. of Combinatorial Theory, 4, p. 125.
Harary F. (1969), Graph Theory, Addison-Wessley, Reading, Massachusetts [Русский перевод: Харари Ф. (1973), Теория графов, М. «Мир».]
Heawood Р. J. (1890), Map-colour theorems, Quart. J. of Mathematics, Oxford Series, 24, p. 322.
Lin C. L. (1968), Introduction to combinatorial mathematics, McGraw- Hill, New York.
Matula D. W. (1968), A min-max theorem for graphs with application to colouring, J. of SIAM (Review), 10, p. 481.
Matula D. W., Marble G., Isaacson J. D. (1972), Graph colouring algorithms, Graph Theory and Computing, Read, Ed., Academic Press, New York. p. 109.
Mitchem J. (to appear), On various algorithms for estimating to the chromatic number.
Myers B. R., Lin R. (1972), A lower bound on the chromatic number of a graph, Networks, 1, p. 273.
Nordhous E. A., Gaddum J. W. (1956), On complementary graphs, American Mathematical Monthly, 63, p. 175.
Оге O. (1967), The four colour problem, Academic Press, New York.
Szekeres G., Wilf H. S. (1968), An inequality for the chromatic number of a graph, J. of Combinatorial Theory, 4, p. 1.
Tutte W. T. (B. Descartes) (1954), Solution of advanced problem № 4526, American Mathematical Monthly, 61, p. 352.
Welsh D. J. A., Powell M. B. (1967), An upper bound on the chromatic number of a graph and its application to timetabling problems, The Computer J., 10, p. 85.
Williams M. R. (1968), A graph theory model for the solution of timetables, Ph. D. Thesis, Iniversuty of Glasgow.
Wood D. C. (1969), A technique for colouring a graph applicable to large scale timetabling problems, The Computer J., 12, p. 317.
Зыков A. A. (1949), О некоторых свойствах линейных комплексов, Матем сб., 24(66), 163 — 188.
Глава 5
РАЗМЕЩЕНИЕ ЦЕНТРОВ
Введение
В практической деятельности постоянно возникают задачи «наилучшего» размещения оборудования (или средств обслуживания) в сетях или графах. В частности, если граф представляет сеть дорог и вершины соответствуют отдельным районам, то можно поставить задачу оптимального размещения больниц, полицейских участков, пожарных частей и многих других крайне необходимых предприятий и служб. В таких случаях критерий оптимальности может состоять в минимизации расстояния (или времени проезда) от пункта обслуживания до самой отдаленной вершины графа, т. е. в оптимизации «наихудшего варианта». В более общей задаче требуется разместить несколько таких пунктов обслуживания (а не только один). При этом самая отдаленная вершина графа должна находиться по крайней мере от одного пункта обслуживания на минимально возможном расстоянии. К таким задачам относятся задачи размещения аварийных служб, и поэтому объективным требованием здесь является минимизация наибольшего расстояния от произвольной вершины графа до ближайшего к ней пункта обслуживания. По очевидным причинам задачи такого типа называются минимаксными задачами размещения. Полученные при решении этих задач места размещения пунктов обслуживания называются центрами графа.
В некоторых задачах размещения лучше всего было бы минимизировать сумму всех расстояний от вершин графа до центра обслуживания (если предполагать, что ищется место для размещения только одного такого пункта обслуживания). Такой критерий является наиболее подходящим, например, в задаче о размещении склада в сети дорог, где вершины представляют потребителей, обслуживаемых этим складом, или в задаче размещения телефонных станций в телефонной сети, где вершины представляют абонентов. Задачи такого типа вообще относятся к минисуммным задачам размещения, хотя целевая функция является часто не просто суммой расстояний, а суммой различных функций от расстояний (см. гл. 6). Места размещения пунктов обслуживания, полученные в результате решения минисуммной задачи, называются медианами графа.
Целью этой главы является рассмотрение минимаксной задачи размещения для взвешенных графов с весами Сц, соответствующими дугам (и представляющими длины) и другими весами и,, связанными с вершинами (и представляющими, скажем, размеры или важность объектов). Приводятся алгоритмы определения оптимального размещения центров в таких графах и результаты вычислений для графов средних размеров.
Минисуммная задача размещения рассматривается отдельно в следующей главе. Хотя эти две задачи, очевидно, связаны между собой, но, поскольку методы их решения различны, гл. 5 и 6 можно читать независимо друг от друга.
Разделения
Для любой вершины xt графа G = (X, Г) пусть Их (х^ есть множество тех вершин Xj графа G, которые достижимы из вершины xt с помощью путей со взвешенными длинами и^ (х^ Xj^ не превосходящими величины X. Через Их (ж,) будет обозначаться мно-
Рис. 5.1.
жество тех вершин xj графа G, из которых вершина х^ может быть достигнута с использованием путей, имеющих взвешенные длины Vjd (xj, ж^^Х.
Таким образом,
Ях(жг) = {^|1;^(^, х,)^Х, Xj^X)
и(3.1)
Ях (*;) = {^ I Vjd (Xj, Xi) < X, Xj £ X).
Для каждой вершины xt определим следующие два числа:
ИИ(5-2)(5-2)So (х^ = тах^(хь я,)]Xj£X
И
И
(5-2)
(5-2)
st (Xi) = max YVjd (x^ a^)].
Числа s0 (x^ и st (xi) называются соответственно числом внешнего разделения и числом внутреннего разделения вершины xt. Следует отметить, что з0 (х^ является наибольшим числом в строке Xt матрицы Df (G), полученной в результате умножения каждого столбца у матрицы расстояний D (G) = Vd (^z, я,)] на иь и st (^f) является наибольшим числом в столбце хг матрицы D" (G), полученной после умножения каждой строки / матрицы расстояний D (G) на Vj.
Рассмотрим в качестве примера ориентированный граф, изображенный на рис. 5.1, и предположим, что все веса вершин и дуг графа равны единице. Матрица расстояний графа имеет вид
Числа внешних и внутренних разделений приведены в присоединенных к матрице столбце и строке соответственно.
Если Хо — наименьшая длина %, такая, что для вершины х^
Нх^-Х
(5.3)(5.3)(т. е. все вершины графа G достижимы из Xt с использованием путей, взвешенные длины которых не превосходят Хо, причем Хо — наименьшее из таких чисел), то из соотношений (5.1) и (5.2) следует равенство
(5.3)
(5.3)
Sq (^i) — Хо-
Аналогично, если Xt — такая наименьшая длина X, что
ТО St (Х;) = kt.
Совершенно очевидно, что у графа G числа внешнего и внутреннего разделений любой вершины конечны только тогда, когда граф сильно связный, т. е. когда каждая вершина достижима из всякой другой вершины.
Центр и радиус
Вершина ж*, для которой
s0 (х*) = min [s0 (Xf)],(5.4 (а))
х^Х
называется внешним центром графа G; и аналогично вершина х*5 для которой
st (ж?) = min [st (жг)],(5.4(6))
х^Х
называется внутренним центром графа G.
У графа может быть несколько (больше, чем один) внешних и внутренних центров. Таким образом они образуют множества внешних и внутренних центров соответственно.
Число внешнего разделения вершины х$, являющейся внешним центром, называется внешним радиусом*. р0 = з0 (я?); число внутреннего разделения внутреннего центра называется внутренним радиусом*. pt—st И\
У графа, изображенного на рис. 5.1, с матрицей расстояний, приведенной выше, имеются только один внешний центр (вершина я5) и четыре внутренних центра, образующих множество {х2, ^з, x5l хв}. Внешний радиус графа равен 2, а внутренний 3.
Размещение аварийных служб и пунктов обслуживания
Рассмотрим задачу обслуживания нескольких жилых районов или населенных пунктов (связанных между собой дорожной сетью) каким-либо одним пунктом обслуживания (например, одной больницей, или полицейским участком, или пожарным депо). По некоторым причинам (например, наличие людских ресурсов или другие удобства) пункт обслуживания должен быть размещен в одном из этих районов, а не в произвольной точке какой-либо дороги.
Предположим, что «длины» ctj дуг графа G (вершины которого соответствуют районам, а дуги—дорогам) образуют матрицу времен проезда между этими районами. Эта матрица необязательно симметрическая, т. е., вообще говоря, с^^с^, поскольку
время проезда может зависеть от уклонов на дороге, наличия улиц с односторонним движением и т. д.
В случае размещения полицейского участка или пожарного депо интересуются временем, необходимым для проезда в наиболее отдаленный из этих районов. Следовательно, задача размещения полицейского участка (или пожарного депо) состоит в минимизации этого времени. Задача становится более реалистичной, если каждой вершине графа приписывается вес (vj), представляющий вероятность потребности данного района в соответствующем обслуживании. Эти веса, например, могут быть пропорциональны численности населения каждого района. Вершина, которая минимизирует время проезда до самого отдаленного района, является внешним центром графа.
В случае размещения больницы интересуются временем, необходимым для проезда машины скорой помощи в самый отдаленный район и возвращения ее в больницу. Если определить число внешне-внутреннего разделения вершины xt с помощью равенства
sot (Xi) = max {^ \d (хь х^ + d (х^ ^)]},
то вершину x*tl на которой достигается минимум выражения801<ЗС^,
можно назвать внешне-внутренним центром.
Для графа, изображенного на рис. 5.1, с матрицей расстояний D (G), приведенной ранее, внешне-внутренним центром является вершина х5. Внешне-внутренний радиус равен 5.
Абсолютный центр
Соотношение (5.3) определяют числа разделения для любой вершины хг С X. Мы обобщим теперь это определение на случай
а
X; о•О Xj
У
Рис. 5.2. Размещение на дуге.
«искусственных» точек, которые можно помещать на дугах. Итак, если а = (хь х5) (см. рис. 5.2) представляет дугу графа с весом (длиной) сц, то точка у, помещаемая на этой дуге, может быть определена посредством задания длины I (х^ у) участка ^хь у) причем должно выполняться равенство
Z (х>, у) + I (у, Xj) = ci}.(5.5)
Числа разделения s0 (z/) и st (у) точки у независимо от того, является она вершиной графа G или искусственной точкой дуги
графа G, определяются следующим образом:
s0 (у) = max [у^ (г/, х^(5.6)
а для st (z/) соответствующее выражение получается из соотношения (5.2).
Точка у*. для которой
$о(У?) = min [so (Z/)1.(5.7)
у из G называется абсолютным внешним центром графа; и аналогично определяется у* — абсолютный внутренний центр.
Число внешнего разделения абсолютного внешнего центра называется абсолютным внешним радиусом; r0 = s0 (у*), и число внутреннего разделения абсолютного внутреннего центра называется абсолютным внутренним радиусом; rt = st(y*).
Пример. Рассмотрим неориентированный граф G, показанный на рис. 5.3, где все веса вершин и длины ребер равны единице.
Рис. 5.3. Абсолютный центр.
Поскольку граф неориентированный, то числа внешних и внутренних разделений одинаковые (для одной и той же вершины). Матрица расстояний графа имеет вид
*1
Х2
хз
*4
Х5
Х1
0
1
2
2
1
х2
I
0
1
1
2
0(G) = х3
2
1
0
2
1
*4
2
1
2
0
1
Х5
1
2
1
1
0
Нетрудно видеть, что центром является каждая вершина и что радиус равен 2.
Если теперь выбрать точку ух на ребре (х3, х^ так, что
I (£51 У1) = тг (и, следовательно, I (z/b я3) = -77) , то расстояния от этой точки до вершин графа даются таблицей
1 2
1 2
х2 х3
х4 х5
Значит, наибольшее число разделения равно 1у . Таким образом, точка I/! более «центральна», чем любая из вершин графа G. В действительности точка уг является абсолютным центром графа G — так же, как и все точки, расположенные в середине ребер (хх, х2), (я2, х3), (x5l £4), (#4, х^) и (х5, xj. Ни одна из вершин графа не является абсолютным центром. Таким образом, в общем случае может быть один или больше абсолютных центров, которые располагаются или в вершинах, или на дугах графа.
Алгоритмы нахождения абсолютных центров
Центры и радиусы графа можно найти непосредственно из матрицы взвешенных расстояний, как было показано в разд. 2 и 3. Приведем два метода нахождения абсолютного центра графа и проиллюстрируем эти методы на примере.
Метод Хакими [7]
Этот метод очень прост и для неориентированного графа состоит в следующем (для ориентированного графа метод остается таким же, надо только каждое «неориентированное» понятие заменить его «ориентированным двойником»).
Для каждого ребра ак графа найти точки (или точку) у* на ак, которые имеют наименьшее число разделения.
Из всех точек у* (к = 1, 2, . . ., т) в качестве абсолютного центра графа G выбрать точку с наименьшим числом разделения.
Первый шаг метода осуществляется следующим образом.
Рис. 5.4.
Возьмем ребро ак графа G (см. рис. 5.4). Имеем (из соотношения (5.6)):
s (ук) = max [у^ (^,2,)] =
= шах [уг min {/ (ук, х^ + d (хр, xt), I (ук, ха) + d (яа, хг)}], (5.8) х^Х
поскольку расстояние d (yk, zj равно либо длине маршрута, проходящего через вершину ха1 либо длине маршрута, проходящего через ^р, 1 (ук1 ха) и I (ук, zB) являются длинами соответствующих частей ребра ак.
Пусть I (ук, х6) = £. Поскольку I (ук, Ха)=Са6 — 1 (ук, жв) = = саР — £, то соотношение (5.8) примет вид
s (ук) = max min [^ {Е + d (хр, х,)}, Vt (саР + d <ха, х^ — £}]. (5.9)
Для фиксированной вершины х^ и при каждом значении £ (О^?^сар) можно найти наименьшие значения выражений, заключенных в соотношении (5.9) в квадратные скобки. Для этого выпишем отдельно два указанных выражения:
{^ + ^ (^pj ^z)}j
и, рассматривая их относительно £, строим нижнюю «огибающую» для соответствующих им прямых линий *).
Повторяя эту процедуру для всех вершин х^ £ X, мы построим на одном и том же чертеже все остальные нижние «огибающие». Далее вычертим верхнюю «огибающую» для всех ранее полученных нижних «огибающих», которая (в силу соотношения (5.9)) дает числа разделения s (z/ft) для всех значений параметра £, т. е.
В действительности эта «огибающая» представляет собой ломаную линию, состоящую из двух «нижних» лучей (от точки пересечения) рассматриваемых прямых линий.— Прим. ред.
для всех точек ук ребра ак. Построенная огибающая (она составлена из линейных кусков) может иметь несколько минимумов. Точка ук, соответствующая наименьшему из этих минимумов, является (в силу соотношения (5.7)) абсолютным центром у*, отвечающим дополнительному ограничению: он должен лежать на ребре ак. Абсолютным центром графа будет такая точка у*, которой соответствует наименьший из минимумов, определяющих указанные выше абсолютные центры на ребрах ак (к = 1, 2, . . . . . ., т).
Размещение аварийных служб (общий случай)
Рассмотрим еще раз задачу об обслуживании нескольких районов каким-либо одним пунктом обслуживания (одной больницей, или пожарным депо, или полицейским участком). Если опущено ограничение, состоящее в том, что пункт обслуживания должен размещаться в каком-то из жилых районов (см. разд. 3.1), то оптимальным размещением пункта обслуживания будет его размещение в любом абсолютном центре соответствующего графа.
Рассмотрим, например, неориентированный граф, приведенный на рис. 5.5. Пусть вершины графа соответствуют жилым районам, а длина ребра (zz, aj) равна времени (в минутах), необходимому для проезда из района ж, в район ж,. Предположим, что вершины графа имеют единичные «веса» и матрица «расстояний» (времен) такова:
х, х2 х3 х4 х5
0
8
8
6
2
8
0
2
10
6
8
2
0
12
8
6
10
12
0
4
2
6
8
4
0
Очевидно, что центром графа является либо вершина Zj, либо .г5 и что радиус графа равен 8.
Сначала возьмем ребро at (рис. 5.5), и пусть расстояние £ измеряется от вершины ж3 до вершины ж^
Выражения Т, и Т'г из соотношений (5.10) (для i = 1, 2, . . . . . ., 5) имеют в нашем случае такой вид:
Тi = £ + d (з:3, жО = £ -|- 8,
Т х = с3,1 + d^z^ z^ Е = 8 £,
аналогичноаналогичноРис. 5.5. Граф из примера разд. 5.2.Рис. 5.5. Граф из примера разд. 5.2.^ = ^+2,Т3 = ^ г4=£+12, Г5 = £ + 8,^ = ^+2,Т3 = ^ г4=£+12, Г5 = £ + 8,r^ie-t т;=ie—s,Г^Ю-Е.r^ie-t т;=ie—s,Г^Ю-Е.
аналогично
аналогично
Рис. 5.5. Граф из примера разд. 5.2.
Рис. 5.5. Граф из примера разд. 5.2.
^ = ^+2,
Т3 = ^ г4=£+12, Г5 = £ + 8,
^ = ^+2,
Т3 = ^ г4=£+12, Г5 = £ + 8,
r^ie-t т;=ie—s,
Г^Ю-Е.
r^ie-t т;=ie—s,
Г^Ю-Е.
Графики этих функций изображены на рис. 5.6а, для 0^ ^Е^8. Имеются два локальных абсолютных центра у* на расстоянии 6 и 8 минут от z3. Число разделения этих двух центров равно 8 минутам.
Аналогично строятся графики для ребер а.,, а3, . . ., см. рис. 5.6 б—е. Абсолютный центр (у*) этого графа есть такой локальный центр, который имеет наименьшее число разделения. Он, как легко видеть, находится на ребре а3 (рис. 5.6в) в двух минутах от х5. Абсолютный радиус г (соответствующий у*), как видно из рис. 5.6, равен 6.
Модифицированный метод Хакими
В описанном выше методе Хакими поиск локального центра осуществляется вдоль всего ребра графа G. Если в графе много ребер, то время вычисления, требуемое для поиска, может оказаться чрезвычайно большим. Рассматриваемая в данном разделе модификация метода Хакими состоит в вычислении верхних и нижних оценок абсолютных локальных радиусов, соответствующих локальным центрам ребер, и в использовании полученных оценок для уменьшения числа ребер, участвующих в поиске.
20
Рис. 5.66. Размещение на ребре а2
Рис. 5.6в. Размещение на ребре а3.
(ОТ X, до х5)
Рис. 5.6г. Размещение на ребре а4.
(От Xj до х4)
Рис. 5.6д. Размещение на ребре а5.
(От х4 до х6
Рис. 5.бе. Размещение на ребре ай.
Всякому локальному центру, расположенному на ребре (хь Xj), соответствует (как видно из соотношения (5.8), если положить все длины I равными нулю) его абсолютный локальный радиус (скажем, т^. который не меньше, чем рц, где
Ptj = max [rs min {d (xs, x^ d (x8i x7)}].(5.11)
Таким образом, р^есть нижняя оценка абсолютного радиуса графа, если абсолютный центр лежит на ребре (яг, Xj). Следовательно, величина
max [pi;](5.12)
(где А—множество ребер графа) является обоснованной нижней оценкой абсолютного радиуса графа.
Допустим, что абсолютный центр расположен в середине ребра (xis Xj). Тогда, в силу соотношения (5.8), абсолютный радиус равен Pij ' "2 va*cib где vs* — вес той вершины х81 в которой достигается наибольшее значение величины р^, указанной в соотношении (5.11). Следовательно,
Я = min +(5.13)
(xftx;)6A
является обоснованной верхней оценкой абсолютного радиуса графа. Таким образом, всякое ребро (ziy, х5^ для которого Pxojo^Hs может не рассматриваться при поиске абсолютного центра.
Для графа, приведенного на рис. 5.5, у которого иг = 1 для всех хг £ X, получаем (используя формулу (5.11)) следующие результаты:
центр на aY = (х3, Xj) дает р311 = max (2, 6, 2) = 6, центр на а2 = ^х^ х^ дает р2,3 — тах (8, Ю, 6) = 10, центр на а3 = (л:5, х^ дает р^ = max (2, 2, 4) = 4, центр на а^ = (яр х^ дает рь5 = max (6, 8, 4) = 8, центр на а5 = (^lf х^ дает р1Л = max (8, 8, 2) = 8, центр на а6 = (х^ х5) дает ^415 = max (2, 6, 8) = 8.
Верхняя оценка Н равна, следовательно (в силу соотношения (5.13)),
min (6 + 4, 10 + 1, 4 + 3, 8 + 1, 8+3, 8+2) = 7, и поэтому ребра а^ а^ а5 и а6, для которых р^ > 7, могут быть исключены из списка кандидатов на размещение абсолютного центра. Поиск абсолютного центра нужно вести только на двух оставшихся ребрах (так, как это было продемонстрировано рань-
ше и показано на рис. 5.6 (а) и 5.6 (в)). Используя верхние и нижние оценки, удалось уменьшить поиск в 3 раза. Наименьшая нижняя оценка Р, вычисленная по формуле (5.12), равна
Р = min (6, 10, 4, 8, 8, 8) = 4.
Эта оценка не является точной, поскольку истинная величина абсолютного радиуса г данного графа (найденная в разд. 5.2) равна 6.
Итерационный метод
Чтобы сделать изложение более простым, мы опишем данный метод для случая неориентированных графов. Замена каждого «неориентированного» понятия его «ориентированным двойником» не приводит к какому-либо коренному изменению метода.
Пусть Qx (^;) — множество всех таких точек у, лежащих на ребрах графа G, из которых вершина жг достижима со взвешенным расстоянием, не превосходящим X. Таким образом,
Qx^Xi^^yVid^y^x^^X, у —точка графа G\ (5.14) Это выражение похоже на те (см. (5.1)), с помощью которых были определены множества Rx Qc^ и Rx (х^; отличие состоит в том, что теперь у — любая точка графа G, а необязательно его вершина. Абсолютный радиус г, очевидно, является наименьшим значением X, при котором из некоторой точки у графа G все верширы графа могут быть достигнуты со взвешенным расстоянием, меньшим или равным X. Следовательно, г есть такое наименьшее значение X (скажем, Хт1п), что
Л [<2х (^)1 = Qx (^0 П Qx (^2) П • • • П Qx 0^ + 0. (5.15) х^Х
Поэтому можно начать с произвольного небольшого значения X, строить множества Qx (xt) для всех i = 1, 2, . . ., пи проверять, выполняется ли соотношение (5.15). Если оно не выполняется, то надо увеличить немного величину X, заново построить множества Qx (х,) (при новом значении X) и опять проверить, не выполняется ли соотношение (5.15). Эту процедуру можно повторять до тех пор, пока не будет выполняться (5.15). Полученная таким образом величина X принимается за абсолютный радиус г графа G. Более того, поскольку приращения величины X малы, то пересечение
П 1<2х(^)] (5.16)
при завершении процесса итерации будет содержать только одну точку (этого для практических целей достаточно), и она является как раз абсолютным центром у*. (Возможно, что будет не одна точка, если существует более чем один абсолютный центр.)
Поскольку d (xt, Xj) есть наикратчайшее расстояние между двумя произвольными вершинами хг и ж,, то совершенно очевидно, что если X меньше половины взвешенного расстояния между хг и х,, т. е.
й^г,х^ то Qk^i') 0Qx(x,) = 0
и полное пересечение множеств в выражении (5.16) пусто. Следовательно, итерационный процесс поиска абсолютного центра можно начать со значения X, равного
4 = шах Г-(5.17) х^^хеХ LJ
поскольку радиус г должен быть не меньше Хо. С этой точки зрения, значение 6 = 2Z0 можно назвать диаметром графа. Нужно, однако, отметить, что совсем необязательно диаметр графа в два раза больше значения абсолютного радиуса (определенного в разд. 4, см. в связи с этим задачу 5.11).
Детальное описание более общего алгоритма, частью которого является рассмотренный здесь алгоритм, будет дано позже, в разд. 8.
Кратные центры (р-центры)
Понятие центра графа допускает следующее обобщение: можно рассматривать не отдельную точку (центр), а множество из р точек, которые образуют кратный центр (р-центр).
Пусть Хр— подмножество (содержащее р вершин) множества X вершин графа G = (X, Г). Через d (Хр, х^ будем обозначать наикратчайшее из расстояний между вершинами множества Хр и вершиной хь т. е.
d(X , Xt) = min [d(zy, жД].
х^Хр\тп
Аналогично, символом d (xt, Xp) обозначается min [d (xt, жД].
Подобно тому, как определялись числа разделения вершин (см. разд. 3), мы можем определить числа разделения для множеств вершин:
80 (А'р) = max [y,d (Хр, жД]
ИxjEX
st (Хр) = max [vjd (х}; Хр)],(5Л8>
где s0 (Хр) и st (Хр) — числа внешнего и внутреннего разделения множества Хр.
Множество Хр0» для которого
so(X;„)= min [s0(Xp)],(5.19)
называется р-кратным внешним центром графа G; аналогично определяется р-кратный внутренний центр Xpt.
В разд. 2 и 3 указывалось, что центры графа легко могут быть получены из матрицы взвешенных расстояний. Однако находить таким же способом (полным перебором) р-центр можно лишь для небольших графов и для небольших значений величины р. При таком подходе надо построить всевозможные множества вершин Хр с X, содержащие р вершин, а затем, используя формулы (5.18) и (5.19), непосредственно найти множества Хро и Хр4, образующие р-центры. Если предположить, что матрица расстояний уже известна, то непосредственное применение соотношений (5.18) и (5.19) потребует выполнить р-(и — р)-(” ) сравнений. Это число при п = 100 и р = 5 равно 3,58-1010, что значительно превышает возможности существующих ЭВМ.
Задача размещения нескольких пунктов обслуживания
В разд. 3.1 была рассмотрена задача размещения одной больницы (или одного полицейского участка, или одного пожарного депо) в графе, представляющем реальную сеть дорог. Однако очень часто имеет место такая ситуация, когда одного пункта обслуживания недостаточно, поскольку он не в состоянии обслужить все поступающие вызовы, и тогда возникает задача о наилучшем размещении нескольких таких пунктов обслуживания. Эту задачу можно сформулировать так.
Найти наименьшее число пожарных депо (например) и такое их размещение, чтобы расстояние от каждого жилого района до ближайшего к нему пожарного депо не превышало наперед заданной величины. Если же число пожарных депо известно, то требуется разместить их так, чтобы было минимально возможным расстояние от любого района до ближайшего к нему депо.
Если предположить, что пожарные должны размещаться в вершинах соответствующего графа G, то задача будет состоять в нахождении р-центров графа для р = 1, 2, 3, . . . и т. д. до тех пор, пока число разделения р-центра не станет меньше или равно заданному расстоянию. Полученное (последнее) значение числа р будет наименьшим числом пожарных депо, а р-центр — их оптимальным размещением, удовлетворяющим предъявляемым требованиям.
Алгоритм нахождения р-центров является частным случаем алгоритма решения более общей задачи, состоящей в определении
р-центров, располагающихся, вообще говоря, не в вершинах графа. Рассмотрение общего алгоритма поиска р-центров мы отложим до разд. 8.5, пока не будет исследована соответствующая более общая задача.
Абсолютные р-центры
Если ограничение, согласно которому точки р-центра должны лежать в вершинах графа, снято и допускается размещение точек на дугах, то получающееся при этом (более общее) множество из р точек называется абсолютный!, р-центром. Таким образом, тот объект, который в разд. 5 был назван абсолютным центром, в соответствии с настоящей терминологией можно назвать абсолютным 1-центром.
Задача нахождения абсолютного р-центра может быть сформулирована следующим образом.
Найти оптимальное размещение в любых точках графа Заданного числа (например, р) центров при условии, что расстояние (время) до самой отдаленной вершины от ближайшего к ней центра является минимально возможным.
Вторая задача, очень близкая к задаче (а) и которая, как будет показано позже, может быть решена тем же методом, что и задача (а), состоит в следующем.
Для заданного «критического» расстояния найти такое наименьшее число центров и такое их размещение, чтобы все вершины графа лежали в пределах этого критического расстояния (по крайней мере каждая вершина — от ближайшего к ней центра).
Это — общая задача определения абсолютных р-центров. Именно она наиболее часто встречается на практике. Однако решать ее гораздо труднее, чем какой-либо из ее «ограниченных» вариантов. Метод Хакими [7, 8], приведенный в разд. 5 и предназначенный для решения задачи с одним абсолютным центром, не может быть обобщен на случай абсолютных р-центров. Для нахождения таких центров Сингер [12] предложил некоторый эвристический метод.
В данном разделе мы познакомимся с итерационным алгоритмом решения задачи об абсолютных р-центрах графа. Из приведенных далее результатов вычислений видно, что этот алгоритм является быстро сходящимся. Метод обладает следующими двумя преимуществами:
Процесс можно закончить сразу же, как только достигнута необходимая «точность» в расположении центров.
8 Н. Кристофидес
) Метод легко видоизменить таким образом, чтобы можно было находить решения, близкие к оптимальному, и, следовательно, проводить анализ устойчивости решения.
Ради упрощения обозначений мы будем рассматривать только неориентированные графы. Распространение полученных результатов на ориентированные графы осуществляется очевидным образом.
Пусть Yp — произвольное множество каких-либо р точек на графе G. Число разделения s (Yp) множества Yp определяется так:
8(Ур) = тш[и/;(Гр,^)],(5.20)
х^Х
где
d(Y ,х^ = min [d (уь arj)].
Абсолютный р-центр графа G определяется как множество точек Ур, для которого
= min [з(Ур)Ь(5.21)
ур на G
Алгоритм нахождения абсолютных р-центров
Рассмотрим по очереди каждую вершину а^ и «углубимся» по всем возможным маршрутам, выходящим из нее, на расстояние 5- = X/vin где X — заданная константа, которую мы будем называть константой «проникновения».
Пусть Qx (х^ — множество всех точек у на графе G, из которых вершина хг достижима в пределах расстояния 6Z- при заданном значении X. Множества Qx (х^ определяются с помощью соотношения (5.14) из разд. 5.2. Эти множества весьма легко можно построить, применяя алгоритм, подобный алгоритму Дейкстра [4] (позволяющему находить кратчайшие пути в графе, см. гл. 8).
Определим область Фх как множество таких точек у на графе G, что из каждой точки у достижимо в пределах расстояния 2) 6$ (при заданном X) одно и то же множество вершин графа G. Область может быть, например, частью ребра или может содержать только одну точку. Рассмотрим в качестве примера граф, изображенный на рис. 5.7. Пусть все веса вершин равны единице, а длины ребер равны clt2 = 4, с2,з — 8 и с31 = 6. Возьмем X = 3. Тогда 6г = 3 для всякого i и существует шесть различных областей.
х) В дальнейшем (в тех случаях, когда не могут возникнуть недоразумения) слова «в пределах расстояния... при заданном X» опускаются.— Прим, ред.
QJ1): 0х(2): <МЗ):QJ1): 0х(2): <МЗ):Рис. 5.7. Области, образованные при X = 3.Рис. 5.7. Области, образованные при X = 3.
QJ1): 0х(2): <МЗ):
QJ1): 0х(2): <МЗ):
Рис. 5.7. Области, образованные при X = 3.
Рис. 5.7. Области, образованные при X = 3.
Область 1. Точка а (единственная точка, из которой в пределах расстояния, равного 3, достижимы вершины Zj и х3).
Область 2. Отрезок ребра (хь х^ от b до с. (Из любой точки этой области достижимы вершины xt и х^
Область 3. Отрезки (а, х^ и (хь Ь) соответствующих ребер (из точек этой области достижима только вершина a?i).
Область 4. Отрезки (zz, х3) и (х3, в) соответствующих ребер (из каждой точки этой области достижима только х3).
Область 5. Отрезки (с, х2) и (х2, S) (из точек этой области достижима только х2).
Область 6. Отрезок ребра (х2, х3) от е до d (из точек этой области не достижима никакая вершина).
В общем случае все области Фх можно следующим образом построить из достижимых множеств Qv
Области, из которых не достижимы никакие вершины 2), описываются соотношением
(5.22)(5.22)фх(О) = {у|у на G}—и^'(а:г),
(5.22)
(5.22)
2
где второй член исключает все области графа G, из которых можно- достигнуть т) хотя бы одну вершину х^.
Области, из которых можно достигнуть х) ровно / вершин х-^х^ • -i xtt (для любого t = 1, . . ., п), определяются еле-
х) Всюду в этих рассмотрениях достижимость берется «в пределах заданного расстояния dz-».— Прим. ред.
8*
дующим выражением:
ФИ^,, ...,за) = П<2x(^i) —
4=1, .. ., t 9
-{[ П <2х(^)]П[ и <2%Н)]}, (5.23) 4=1, . . ., t 4q=t+\, ...,п4
где второй член исключает такие области, из которых достижимы вершины х^, х^, . . ., xi( и еще хотя бы одна из оставшихся вершин графа.
С первого взгляда кажется, что число областей из соотношения (5.23) может быть очень велико. Однако на практике пересечения множеств, входящие в выражение (5.23), становятся пустыми уже для небольших значений t. Это приводит к вполне обозримому множеству областей. Эффективные (с вычислительной точки зрения) методы построения областей, а также дальнейшего уменьшения числа необходимых областей приводятся в настоящем разделе несколько позже.
Описание алгоритма
Алгоритм построения абсолютного р-центра графа G = (X, А) при заданном р выглядит следующим образом.
Шаг 1. Положить X = 0.
Шаг 2. Увеличить X на небольшую величину АХ.
Шаг 3. Построить множества Qx (х^ для всех xt £ Хп и найти области Фх-
Шаг 4. Образовать двудольный граф G' = (X' U X, Л'), где X'—множество вершин, каждая из которых соответствует некоторой области Фх, и А' — множество дуг, такое, что дуга между областью-вершиной и вершиной Xi существует тогда и только тогда, когда Х{ может быть достигнута из этой области.
Шаг 5. Найти наименьшее доминирующее множество графа G* (см. гл. 3).
Шаг 6. Если число областей в приведенном выше множестве больше, чем р, то вернуться к шагу 2; в противном случае остановиться. Области этого множества образуют абсолютный р-центр исходного графа G.
Следует отметить (см. гл. 3), что число областей в наименьшем доминирующем множестве представляет (по определению) наименьшее число точек в G, из которых достигаются все вершины графа в пределах расстояния проникновения X, используемого в данной итерации. Надо также отметить, что в процессе построения абсолютного р-центра по указанному выше алгоритму можно заодно получить абсолютные (п — 1)-, (п — 2)- и т. д. центры. Таким образом, если в конце некоторой итерации (продолжающейся с шага 2 до шага 6) число областей в наименьшем доминирующем
множестве уменьшается с некоторого уровня Z до Z — 1, то области этого нового множества образуют абсолютный (Z — 1)-центр, а величина X, взятая для этой итерации, будет «абсолютным (Z—1)- радиусом», т. е. она является «критическим» значением X — при меньших значениях X не существуют (Z — 1)-центры, из которых в пределах взвешенного расстояния X достижима каждая вершина графа.
Если нужно найти такое наименьшее значение р, что каждая вершина достижима из некоторого центра в пределах заданного критического расстояния (задача (Ь) из разд. 7), то шаги с 3 по 6 в приведенном выше алгоритме следует выполнять при X, равном этому «критическому» значению. Соответствующее число областей в наименьшем доминирующем множестве является тогда требуемым значением для р, и области этого множества образуют искомый р-центр.
Вычислительные аспекты
Предположим, что X зафиксировано и вычислены расстояния 6г = Х/уг. Любое ребро графа либо достижимо целиком, либо частично, либо совсем не достижимо из вершины xt в пределах расстояния бг. Если достижима только часть ребра (от какого- либо конца ребра до некоторой «предельной» точки на нем), то над предельной точкой ставится «метка». Эти метки содержат всю информацию, необходимую для описания множеств Qx (xt). Таким образом, Qx (х^ состоит из точек всех ребер (или частей ребер), принадлежащих кратчайшим маршрутам между метками и вершиной Xi-
После размещения всех меток (для всех вершин) каждое ребро будет разделено на ряд участков; каждый участок характеризуется теми вершинами, которые из него *) могут быть достигнуты. Таким образом, любой участок можно описать бинарным (единица- нуль) вектором {/i, /2, . . ., /п} длины п, в котором jh = 1, если вершина xh достижима из этого участка, и jh = 0 в противном случае.
Совокупность всех участков с одинаковым бинарным вектором образует область, и, следовательно, области Ф%, задаваемые соотношениями (5.23), могут быть построены с помощью таких меток. Поскольку область достижима только из тех вершин, для которых jh = 1 (в бинарном векторном представлении этой области), и не из каких других, то в дальнейшем эти бинарные векторы мы будем называть строгими пересечениями (SI).
Представление области бинарным вектором не содержит никакой информации о месте ее расположения на графе. Однако такое представление выгодно с вычислительной точки зрения: оно не
х) То есть из точек этого участка.— Прим. ред.
предъявляет больших требований к памяти машины и позволяет уменьшить время вычисления, особенно при выполнении шага 5 алгоритма. Если абсолютный р-центр описан «на языке строгих пересечений», то дальнейшая процедура осуществляется чрезвычайно просто: надо лишь выяснить, какие участки ребер соответ- ■ствуют этим строгим пересечениям.
На шаге 4 алгоритма надо строить двудольный граф £' = (X' J X, Л'), у которого вершины из X' представляют области Фх. Это может привести к графу больших размеров, что сильно увеличит время вычисления на шаге 5. Однако с помощью приводимой ниже теоремы удается уменьшить размеры графа G'; исключаются те области, которые не влияют на получаемое оптимальное решение (но если существует больше одного оптимального решения, то при такой процедуре некоторые из них можно потерять). Другие пути, позволяющие достичь определенных упрощений, описаны в разд. 4.2 гл. 3.
Теорема 1. При заданной величине X для получения некоторого минимального доминирующего множества графа G' можно предварительно исключить из множества X' все вершины, соответствующие тем SI, над которыми доминируют другие SI в X'. Мы говорим, что (SI)i доминирует над (SI)2, если (SI)t® (SI)2 = (SI)2, где ® означает булевское произведение.
Доказательство этой теоремы очевидно.
В алгоритме из предыдущего раздела параметр X при каждой очередной итерации увеличивается (по понятным причинам) лишь на небольшую величину. Существует много других более эффективных способов варьирования параметра X. Результаты вычислений, приведенные в разд. 8.4, получены с помощью программы, использующей направленный двоичный поиск по X.
Пример
Рассмотрим граф G, изображенный на рис. 5.8. Число, стоящее около любого ребра, задает его длину; вес каждой вершины графа равен единице. Требуется найти абсолютный р-центр с минимально возможной величиной параметра р и такой, чтобы каждая вершина графа отстояла хотя бы от одного из этих р центров на расстоянии, не превосходящем 3,5 единиц.
Для X = 3,5 на рис. 5.9 показаны метки, определяющие множества QK (xi). Они расставлялись сразу же в процессе последовательного «прохождения» ребер. Числа в кружках, стоящие около произвольной метки, указывают «номера» вершин, которым эта метка соответствует. Так, кружок @ на ребре (2,3) означает, что
Рис. 5.8. Граф из примера 8.3. Номера вершин подчеркнуты. Все другие числа являются длинами ребер.
только отмеченная точка достижима из вершин 1 и 3 в пределах расстояния 3,5. На рис. 5.9 точками около ребер показано достижимое множество Qx (5), соответствующее вершине 5. Всего в данном примере существует 33 участка ребер, включая пустой участок (из которого ни одна вершина не может достигаться в пределах расстояния 3,5 единиц). Пустой участок расположен между метками 4 и 5 на ребре (4,5). Некоторые из этих 33 участков имеют
Рис. 5.9. Метки для достижимых множеств. Множество Qx (5) отмечено точками.
одинаковые SI; существует всего 18 областей со следующими SI
(1)
000000
(7)
000011
(13) 000101
(2)
010000
(8)
110000
(14) 001001
(3)
001000
(9)
001100
(15)
111000
(4)
000100
(10)
100010
(16)
011100
(5)
000010
(11)
011000
(17)
110010
(6)
000001
(12)
010001
(18)
100011
Так, например, участок между метками 1 и 6 на ребре (1,5) принадлежит области с SI, равным 100011, поскольку лишь из точек графа, лежащих между этими двумя метками, можно достигнуть вершины 1, 5 и 6 (и никакие другие) в пределах расстояния X = 3,5.
После исключения тех SI, которые доминируются другими SI, остается только 7 областей (с номерами SI от 12 до 18). Граф G*
Рис. 5.10. Граф G' из примера 8.3.
• Области в наименьшем доминирующем множестве.
после выполнения шага 4 алгоритма выглядит так, как показано на рис. 5.10. Для нахождения наименьшего доминирующего множества этого графа можно воспользоваться алгоритмом, описанным в гл. 3 и предназначенным для решения задачи о наименьшем покрытии. Однако в нашем (простом) примере наименьшее множество легко строится с помощью прямого последова-
тельного перебора; оно «порождается» SI с номерами 16 и 18 в приведенном выше списке. Область, соответствующая SI с номером 16, состоит из одной точки, расположенной на ребре (2,3) в том месте,
где находится кружок @ ■ На рис. 5.9 эта точка обозначена буквой А. Область, соответствующая SI с номером 18, представляет собой участок ребра (1,5) между метками 6 и 1; на рис. 5.9 она обозначена буквой В.
Таким образом, при X = 3,5 требуется два центра; один расположен в точке А, а другой —в любой точке области В. Поскольку область А является точкой, то два указанных центра образуют также абсолютный 2-центр и X = 3,5 является минимально возможным критическим расстоянием для существования 2-центра. Поэтому при X < 3,5 область А исчезнет совсем, и тогда уже нужно строить 3-центр.
Результаты вычислений
Алгоритм построения абсолютного р-центра был опробован на ЭВМ СПС 6600. Каждый бинарный вектор, задающий SI, хранится в одном слове, так что можно использовать булевские функции для более удобного выполнения теоретико-множественных операций. Поскольку длина слова в вычислительной машине CDC 6600 равна 60 битам, то граф, содержащий не более 60 вершин, можно было непосредственно задавать в машинном коде.
В некоторых задачах, в частности, когда число областей в искомом абсолютном р-центре (т. е. число р) велико, шаг 5 алгоритма, описанного в разд. 8.1, требует значительную часть всего времени, затрачиваемого на решение задачи. В табл. 5.1 время, необходимое для выполнения этого шага, приведено отдельно от полного времени решения задачи. В этой таблице представлены времена вычисления (в секундах) и числа итераций, требуемые при построении абсолютных 1-, 2-, 3-, 4- и 5-центров для некоторых графов. Здесь мы под числом итераций понимаем число повторений шагов алгоритма с 3 по 6 (для различных значений X), всех тех повторений, которые необходимо осуществить для получения абсолютного р-центра с заданной точностью. Графы, которые были использованы при составлении табл. 5.1, выбирались случайным образом и являются связными и неориентированными. Требуемая точность во всех случаях принималась равной 1% от средней длины ребер рассматриваемого графа.
Как видно из табл. 5.1, алгоритм, приведенный в разд. 8.1Г можно весьма эффективно использовать при нахождении абсолютных р-центров достаточно больших графов.
<3 а» з 5 Q
1
I 41 t
1
1
В 5
О
Г«‘Г^'О’ЛГ*00^‘^‘6Ч^‘’Л00^‘'О64
Я
1 1 1 1 1 1 1 1 1 1 1 1 11
^-«—isowimQO<N064<nOQQO гп1«л№оочо^г*^3^бчмс*^оч<чеч<б^^^1^ оо^ о* о*о*"—* —' 64* 64*m «л*гч*<н" so*бч г-*г-*
64
и
^r-aCsOSDQO^^O'flQOCmaOsO
я
^СО>Л^)>ЛОО\ф|6>£Г-1ЛСЧ — - О О О О О — —^0^0 О^—^64 64 *Л„—„ сГо*^с> 0*0*О О 0*0 о о*о*о о
<
Оmm ivimsooooc — C*YW^ — Г- SO 64^*^ ГП 00 —^ — 64 о^— О сГ —*—'«-Г гп*«л*^*гп*гп so*r-* *О оо
гп
и
rnr-oor-w^sor^Osnossoo — 64
я
^-о\ — споо—r^oosne^soornovn
О ct —VXQX°\
О* О О* О* О* О* О* О* О* О —* —*64 ГП* о*
<
1Л\0*00\0\0<Л — 64S0OOOOO *^^^^64 ^00^64^00^^64 «хоо^ф.^ О* О* ^* —* ^* 64 64*т* 64 r^s© —Г (V Г-*
* 64 —’
и
Г» so Г* «—i Г- ОО so >О —' Г** so SO || ГП
я
sO'H'^cS'OOfnsoOOmO Q О О ^.64 О Г* ^001 —< V^r* 00 | 1 ^ 0*0*0 о*^*^*^*64 <4*^ т*оо 1 1 >О
<
ГП'Л^Г'ООО^ООфООО т т т т «n^so <4 ^О^^^гч । । о* О* —*0*64* Г-Г ^'О* so 00 00 <*Г 1 1
■л
и
Г-О оо Г-г-as | 1 1 1 1 1 1 1 -
я
00 so О О
О ОIIIIIIII 00^
о О11111111
<
QО
wГП
4-й Е
OOOQOOQOOQOOQOO 64cnrn^s0 00 0 64^t^00 0^ 00 00
ООООООООООООООО ^^С^646Ч64<Ч64<ПСПГПГП'^^«Л
§ ii
А Полное бремя вычисления (секунды на CDC 6600). В Время вычисления Для шага 5 алгоритма
С Число итераций
Применение общего алгоритма для поиска ^-центров
Алгоритм из разд. 8.1 можно, очевидно, использовать при решении более узкой задачи, приведенной в разд. 6, т. е. при нахождении р-центра. Для этого надо только изменить шаг 6 на- -стоящего алгоритма (см. разд. 8.1) таким образом, чтобы «контролировалось» не число областей в наименьшем доминирующем множестве, найденном на шаге 5, а число вершин графа G, содержащихся в этих областях. Если полученное число вершин больше р. то нужно возвратиться к шагу 2. В противном случае алгоритм заканчивает работу, и р-центром графа будет множество вершин, -содержащихся во всех тех областях, которые образуют доминирующее множество.
Поскольку в этом случае необходимы только вершины, содержащиеся в областях, задаваемых соотношениями (5.22) и (5.23), то алгоритм из разд. 8.1 можно без изменений применять для нахождения р-центров, если области на шаге 3 строить с помощью -соотношений (5.22) и (5.23), используя вместо множеств Qx (х^ множества Rx (xj. Более того, если все п (п — 1) расстояний в матрице расстояний с самого начала расположить в строку в порядке неубывания [/i, /2, . . ., /п („-ц], то на шаге 2 алгоритма значения для параметра X должны выбираться лишь из этой строки, и их не надо увеличивать на произвольно малую величину в каждой итерации. Поиск начинается с X = Л, а затем продолжается при X = /2, /3 и т. д. в соответствии с указанным выше упорядочением. Следует заметить, что здесь, очевидно, было бы весьма кстати бинарное представление семейства т) {/п /2, . . . • • /п(п-1)}*
Задачи
Найти центр графа, приведенного на рис. 5.11. Рядом с дугами указаны их стоимости, а веса вершин задаются вектором (5, 3. 1, 7, 4, 6]
Найти абсолютные центр и радиус неориентированного графа, изображенного на рис. 5.12, предполагая, что веса всех вершин равны 1. Использовать метод Хакими, а также итерационный метод из разд. 5.4. Сравнить вычислительную трудоемкость этих двух методов.
Показать, что в любом неориентированном графе G с единичными весами вершин существует такой маршрут между неко-
1 В семействе (в отличив от множества^ могут встречаться одинаковые элементы.— Прим. ред.
торой парой вершин а^ и Xjs что абсолютный центр у* графа G лежит в середине этого маршрута.
Используя свойство, приведенное выше в задаче 3, найти абсолютный центр в графе, изображенном на рис. 5.12.
Определить понятие «середина пути» и показать, что свой- ство, приведенное выше в задаче 3, может быть обобщено на неориентированные графы с произвольными весами вершин [ру].
Используя алгоритм из разд. 8, найти абсолютный 3-центр графа G1 приведенного на рис. 5.12, и показать, что каждая вершина графа G достижима по крайней мере из одной области абсолютного 3-центра в пределах расстояния X = 6. Каково наименьшее значение параметра ps обеспечивающее достижимость всех вершин графа G из абсолютного ^-центра в пределах расстояния X = 5,5?
Рис. 5Л2.
Используя алгоритм из разд. 8.5, найти 3-центр графа, изображенного на рис. 5.12, и показать, что X = 8 является наименьшим возможным X, определяющим существование 3-центрав
Пусть Хр — р-центр в неориентированном графе G. Дока* зать утверждение: ребрам графа G можно придать такую ориентацию, что Хр будет внешним р-центром в новом, ориентированном графе и расстояния d (Хр, х^ для всех вершин хг останутся неизменными.
Показать, что если G — связный неориентированный граф с единичными стоимостями ребер, то наименьшее значение параметра р, обеспечивающее существование р-центра с достижимостью, ограниченной числом X, удовлетворяет неравенству
Р^Р^п[Х1+Т ’п[Х1+Т ’
Р^
Р^
п
[Х1+Т ’
п
[Х1+Т ’
где [XI —целая часть X (см. [5]). Предполагается, что X <_п.
Используя результат задачи 9, показать, что, каково бы ни было целое положительное 6, все п вершин связного неориенти
рованного графа G можно покрытьрованного графа G можно покрытьппподграфами графа G,подграфами графа G,
рованного графа G можно покрыть
рованного графа G можно покрыть
п
п
подграфами графа G,
подграфами графа G,
имеющими диаметры, не превосходящие б (см. разд. 5.4 и работу [5]).
И. Показать, что для связного неориентированного графа G радиус р и диаметр б удовлетворяют соотношению 6/2 р^б. Привести примеры графов, для которых обе оценки радиуса являются достижимыми.
Показать, что в случае ориентированного графа G неравенства, подобные приведенным в задаче 11, не выполняются.
Заново определим число внешнего разделения s0 (z/) и внешний абсолютный центр у* графа G:
so(i/)= max [d(y, /)],у' на G
у* является такой точкой у графа G, для которой
80да= min [so(y)J.
у на G
Обобщить методы, приведенные в разд. 5, таким образом, чтобы можно было строить определенные выше внешние абсолютные центры графов.
Список литературы
Bollobas В. (1968), Graphs of given diameter, Theory of Graphs, Erdos and Katona, Eds., Academic Press, New York.
Bosak J., Rosa A., Znam S. (1968), On decomposition of complete graphs into factors with given diameters, Theory of Graphs, Erdos and Katona, Eds., Academic Press, New York.
Christofides N., Viola P. (1971), The optimum location of multi-centers on a graph, Opl. Res. Quart., 22, p. 45.
Dijkstra D. (1959), A note an two problems in connection with graphs,. Numerlsche Mathematik, 1, p. 269.
Erdos P., Gerencser L., Mate A. (1969), Problems of graph theory concerning optimal design, Colloquia Mathematica Societatis Janos Bolyai, No 4, Combinatorial theory and its applications, Bala»onfured (Hungary), p. 317.
Frank H., Frisch I. T. (1971), Communication transmission and transportation networks, Addison Wesley, Reading, Massachusetts.
Hakimi S. L. (1964), Optimum location of switching centres and the absolute centres and medians of a graph, Ops. Res., 12, p. 450.
Hakimi S. L. (1965), Optimum distribution of switching centres in a communication network and some related graph theoretic problems, Ops. Res., 13, p. 462.
Minieka E. (1970), The m-centre problem, J. of SIAM (review), 12, p. 138.
Rosenthal M. R., Smith S. B. (1967), The m-centre problem, Presented at the 31st National ORSA Meeting, New York.
Sakowicz A. F. (1970), A planning model for the location of communication centres, Presented at the 38th National ORSA Meeting, Detroit, Michigan.
Singer S. (1968), Multi-centres and multi-medians of a graph with an application to optimal warehouse location, Presented at the 16th TIMS Conf.
Toregas C., Swain R., Revelle C., Bergman L. (1971), The location of emergency service facilities, Ops. Res , 19, p. 1363.
Глава в
РАЗМЕЩЕНИЕ МЕДИАН В ГРАФЕ
Введение
В ряде задач о размещении пунктов обслуживания требуется так расположить пункт обслуживания на графе, чтобы сумма кратчайших расстояний от этого пункта до вершин графа была минимально возможной. Оптимальное в указанном смысле место расположения пункта называется медианой графа. Исходя из природы целевой функции, такие задачи называют минисуммными задачами размещения. Эти задачи в различных формах часто встречаются на практике: при выборе места расположения коммутаторов в телефонной сети, подстанций в электросетях, баз снабжения (складов) в сети дорог (где вершины представляют потребителей) или отделов сортировки в почтовой связи.
С этим типом задач контрастирует минимаксная задача размещения, возникающая при выборе места для таких пунктов обслуживания, как пожарное депо, полицейский участок или амбулатория, и рассмотренная в предыдущей главе. В настоящей главе рассматривается минисуммная задача размещения. В частности, обсуждается задача о нахождении р-медианы данного графа G; это задача об оптимальном размещении заданного числа (скажем,, р) пунктов обслуживания, при котором сумма кратчайших расстояний от вершин графа G до ближайших к ним пунктов ) принимает минимально возможное значение. Задача нахождения р- медианы может быть несколько обобщена, если каждой вершине Xj сопоставить некоторый вес и, (представляющий, например, ее размеры или важность); тогда целевой функцией, подлежащей минимизации, станет сумма «взвешенных» расстояний.
Медиана графа
Пусть дан граф G = (X, Г). Для каждой вершины xt £ X определим два числа, которые назовем передаточными числами:
^о(^)= 2 и5<Цхг,х3\
<61> at^i^ 2j Vjd^x^xty
где d (хь xj) — кратчайшее расстояние от вершины xt до вершины Хр Числа ао (жг) и ot \х^ называются соответственно внешним и внутренним передаточными числами вершины хь Число ао (zj есть сумма элементов строки xt матрицы, полученной после умножения каждого столбца матрицы расстояний D (G) = Vd (х{1 z;)] на вес соответствующей этому столбцу вершины, т. е. /-й столбец умножается на и^ число of (х^ есть сумма элементов столбца xt матрицы, полученной в результате умножения каждой строки матрицы расстояний D (G) на соответствующий этой строке вес (;-я строка умножается на иД.
Вершина хО1 для которой
(То(^о) = т1п[ао(л:г)Ь(6.2)
называется внешней медианой графа G, а вершина xt, для которой
Ot (Xt) = min [о^)],(6.3)
называется внутренней медианой графа G*
Рассмотрим еще раз граф, изображенный на рис. 5.1 (для которого все Vj и си- приняты равными единице), и вычислим внешние и внутренние передаточные числа вершин. Эти числа приведены в присоединенных к матрице расстояний строке и столбце:
Х1
Х2
хз
Х4
Х5
хб
»А) 1 И
*1
0
1
2
3
2
3
Х2
3
0
1
2
1
2
9
Х3
0(G) =
Х4
4
3
0
1
2
3
13
3
2
2
0
1
2
10
Х5
. 2
1
1
2
0
1
7*
Х6
1
2
3
4
3
0
13^
о,^ -
13
9*
9*
12
9*
11
По полученным передаточным числам видно, что внешней медианой является х5 с оо (х5) = 7 и что существуют три внутренние медианы ^s х2 и х5), каждая с внутренним передаточным числом, равным 9.
2Л» Выбор места для склада
Рассмотрим задачу снабжения ряда потребителей товарами поступающими с одного склада. Потребителей можно объединить в группы таким образом, чтобы каждую группу обслуживало целое число грузовиков. Машина выезжает со склада, обслуживает некоторую группу потребителей и возвращается на склад. Группы потребителей можно представить вершинами графа, а сеть дорог — его дугами. На практике каждой группе потребителей присваивается вес Up представляющий ее «важность» (например, и} может быть числом, пропорциональным годовому потреблению или частоте, с которой транспорт должен объезжать эту группу потребителей, чтобы удовлетворить их потребности).
В этом случае задача состоит в определении такого места для склада, чтобы общее расстояние, проходимое транспортом, было бы минимально возможным. Если матрица расстояний D (О) задает действительные расстояния в километрах, то требуемым местом расположения склада будет такая вершина хоЛ, для которой сумма внешних и внутренних передаточных чисел будет наименьшей. Вершина я0| t может быть названа внешне-внутренней медианой и найдена из соотношения, аналогичного (6.1). В следующем разделе будет показано, что для любой точки (вершины или произвольной точки дороги), выбранной для размещения склада, общий километраж, покрываемый транспортом, не может быть меньше, чем для вершины xOit.
Кратные медианы (р-ме дианы) графа
В предыдущей главе, обобщая понятие центра, мы ввели понятие ^-центра. Подобным же образом можно обобщить понятие медианы, определив р-медиану.
Пусть Хр — подмножество множества вершин X графа G = = (X, Г), и предположим, что Хр содержит р вершин. Как и прежде, введем следующие обозначения:
d (Хр, = min [d (хо ^)] (6.4 (а)) и
4 (xjt Хр) = min [d (хл я£)Ь (6.4 (б)) *ieXp
Если xt — вершина из Xpi на которой достигается минимум в (6.4 (а)) или (6.4 (б)), то говорят, что вершина xj прикреплена к x'i. Передаточные числа множества вершин Хр определяются 9 н. Кристофидее
так же, как и для одиночной вершины:
а0^= 2 и^х^;
”^Z(6.5)
<r,(Xp) = 2 и^Х,),Xj£X
где a0 (Xp) и af (Xp) — соответственно внешнее и внутреннее передаточные числа множества вершин X,.
Множество Хро, для которого
о» (Хр.) = min [ao (Хр)],(6.6)
хр^х
называют внешней р-медианой графа G; аналогично определяется внутренняя р-медиана.
Как и в случае р-центров, рассмотренных в предыдущей главе, даже для графов средних размеров с вычислительной точки зрения нецелесообразно использовать при нахождении р-медиан непосредственно выражения (6.4), (6.5) и (6.6). Алгоритмы построения р-медиан будут даны в разд. 5.
Абсолютные ^-медианы
С целью упрощения изложения рассмотрим неориентированный граф G. Индексы о и t будут отсутствовать. Разберем сначала случай медианы (1-медианы). Спрашивается, существует ли такая точка у на некотором ребре (не обязательно совпадающая с вершиной графа С), для которой передаточное число
о(у) = 2 и^у,х})
меньше, чем для медианы графа G. Точку у, на которой достигается минимум величины а (у), будем называть абсолютной медианой графа G.
Сейчас мы докажем [5,6], что не существует точки у, для которой а (у) <а (х), т. е. здесь ситуация противоположна той, которая имела место при рассмотрении центров.
Теорема 1. Какова бы ни была точка у графа G = (X, А), в нем найдется по крайней мере одна вершина х, для которой о^х) ^а (у).
Доказательство.' Пусть у — точка ребра (za, zb), расположенная на расстоянии £ от ха. Тогда
d(y, Xj\ = min (?‘+^ (^a, Xj), Cab—£ + d (хь, Zj)],(6.7)
где саЬ — длина ребра (ха, zb).
Пусть Ха —множество тех вершин х3, для которых первый член в (6.7) не больше второго, а Хь — множество вершин, для которых второй член меньше первого. Мы можем тогда написать <Ду) = 2 Vjd (у, Х^ = 2 V,[£ + ^a, ^)] +
»^Х^Х<х
(6-8)(6.9), полу-(6.10)(6.Ю),(6-8)(6.9), полу-(6.10)(6.Ю),+ 2 uj 1^аЪ— £ + ^(£6, ^)]-
(6-8)
(6.9)
, полу-
(6.10)
(6.Ю),
(6-8)
(6.9)
, полу-
(6.10)
(6.Ю),
Поскольку из неравенства треугольника следует, что d(xo, s,)<cob + d(a:b, ж,),
то, заменяя cab + d (хь, х^ на d (жа, ж,) в выражении (6.8 чаем
°(У)> 2 Уу№+й(жа, жу)]4- 2 "/№»,51-
'xj^Xaх№
Так как Ха (J Хь = X, то, сделав перегруппировку в имеем:
о(у)> 2 Vjd(xa, Ж;) + М 2 — 2 vj- (6.11) ”jEx ”j6Xa х^Хь
Поскольку для каждого ребра (жа, хь) мы вправе сами решать, какую вершину называть ха и какую хь, то всегда можно добиться выполнения неравенства
Заметив, что первый член в правой части неравенства (6.11) равен а (жа), получаем из (6.11) такое соотношение:
О (у) ^ с k^aY
Таким образом, для вершины ха величина о (жа) не превышает ст (у) и, следовательно, теорема доказана.
Теорема 1 довольно просто обобщается на случай р-медиан.
Теорема 2. Каково бы ни было множество Yp, состоящее из р точек графа-G = (X, 4), т. е. изр точек ребер и вершин, найдется по крайней мере одно подмножество Хр cz X, содержащее р вершин, для которого а (Хр) ^ ст (Ур).
В теоремах 1 и 2 предполагалось, что передаточные числа ст (ж) и о (Хр) определены с" помощью выражений (6.1) и (6.5). В работах Леви [20], Голдмана [12] и Голдмана и Мейерса [14] было показано, что эти теоремы остаются в силе и в тех случаях, когда передаточные числа определяются как суммы произвольных, вогнутых функций от взвешенных расстояний.
9*
Из теорем 1 и 2 следует, что понятие абсолютной медианы не представляет особого интереса (в противоположность ситуации с абсолютными центрами, рассмотренными в гл. 5). Поэтому в остальной части этой главы основное внимание уделяется задаче о р-медиане/.
Обобщенная р медиана графа
Задача нахождения р-медианы графа является центральной в общем классе задач, встречающихся в литературе под названием «распределение и размещение центров обслуживания» [5, 6, 9] или «размещение складов» [8, 29, 30, 10, 15, 7, 28]. Эти задачи являются до некоторой степени более общими, чем задача о р- медиане, в которой вершинам сопоставлены фиксированные стоимости /,. Обоби^енная задача о р-медиане может быть сформулирована следующим образом.
Для заданного графа G = (X, Л) с матрицей кратчайших расстояний [d fo, X;)], с весами вершин и£ и с фиксированными стоимостями вершин ft задача состоит в нахождении такого подмножества Хр из р вершин, для которого величина
2= 3 (6.12)
Е Хр принимает минимально возможное значение.
Таким образом, в этом случае минимизации подлежит не просто передаточное число о (Хр) множества Хр1 а полная функция цели, содержащая фиксированные стоимости ft вершин х» подмножества Хр. На практике /£ представляет, например, фиксированную стоимость строительства пункта обслуживания (склада, фабрики, подстанции) при размещении его в вершине xie Задача о р-медиане соответствует такому случаю, когда все /£ одинаковы (например, равны /), так что первый член в (6.12) равен постоянной величине р/ независимо от выбора подмножества Хр
Очень близкой к сформулированной выше задаче об обобщенной р-медиане является такая задача, в которой число вершин | Хр | не обязательно равно р, а может быть некоторым числом, не превосходящим р. Задача минимизации выражения (6.12) при условии | Хр ] ^ р является разновидностью задачи об обобщенной р-медиане и часто встречается на практике.
В задачах размещения складов неизменно приходится сталкиваться с ограничениями, которых нет в «чистой» задаче о р-медиане. Чаще всего встречаются ограничения на наибольшее и наименьшее значения, которые может .принять выражение
2 и, (6.13)
•^ пржжреплетаые не*
для любой медианной вершины х^ £ ХР. Выражение (6.13) определяет количество товара, вывозимого из вершины хь и, следовательно, является мерой вместимости склада хг [8, 15, 7, 28].
Очевидно, что такое же обобщение, возникающее при введении ограничений на величину (6.13), возможно и в задачах о нахождении р-центров и абсолютных р-центров, рассмотренных в предыдущей главе. Однако для практических задач размещения энергетических объектов, именно тех задач, которые связаны с нахождением р-центров, указанное обобщение имеет небольшое значение, так как всегда эти ограничения легко вводятся в алгоритм, приведенный в разд. 8 предыдущей главы.
Сложность решения практических задач размещения складов определяется не изменениями и дополнительными ограничениями, рассмотренными выше, а свойственна природе самой задачи о р-медиане. В свете этого рассмотрим несколько методов, пригодных для определения р-медианы графа. Для упрощения изложения индексы о и 15 указывающие связь объектов соответственно с внешними и внутренними медианами, будут опускаться, поскольку излагаемые методы применимы к обеим задачам.
Методы решения задачи о р-медиане
Формулировка задачив терминах целочисленного программирования
Пусть [|гД —матрица распределения, в которой
|1, если вершина Xj прикреплена к вершине xlw (О в противном случае.
Далее примем ^н = 1» если вершина Xt является медианной вершиной и ^и = 0 в противном случае. Задача о р-медиане может быть сформулирована тогда следующим образом.
Минимизировать функцию
п п
Z=3S dt£u(6.14)
i=l 5=1
при ограничениях п 2^;=1 Для 7 = 1, ...,п,(6.15)
(=1п
?^=А(6.16)
1=1
^ij^^a Для всех 7 = L • • •» и-(^•'17)
И
£,, = 0 или 1,(6.18)
где [d£j] — матрица взвешенных расстояний графа (она получается из матрицы расстояний после умножения каждого /-го столбца на соответствующий вес и;-). Соотношения (6.15) гарантируют выполнимость следующего условия: любая заданная вершина Xj прикреплена к одной и только к одной медианной вершине Х{. Выражение (6.16) гарантирует существование в точности р медианных вершин. Из ограничений (6.17) следует, что g^ = 1 только тогда, когда ^г = 1, т. е. прикрепления осуществляются только к вершинам медианного множества. Если [^у] является оптимальным решением задачи, определяемой соотношениями (6.14)—(6.18), то р-медиана имеет вид
XP = {^lg.i = l}-
Если ограничения (6.18) вышеприведенной задачи заменить на ^•>0.(6.19)
то возникает задача линейного программирования (ЛИ). Ее решение получить нетрудно. (Отметим, что для величины ^’указывать верхнюю границу не^нужно, поскольку из соотношений (6.15) следует, что ^,-^1.)
Решение задачи ЛП не обязательно будет целочисленным, t,i) может принимать и дробные значения. Ревель и Свэйн [26] показали, что дробные значения встречаются крайне редко, и поэтому в большинстве случаев для получения р-медиан можно использовать язык и методы линейного программирования.|В том случае, когда некоторые ^^ являются дробными, решение можно получить с помощью древовидного х) поиска [11], причем одной ветви, соответствующейжакой-либо дробной величине (переменной) 5;;, придается значение 0, а другой ветви — значение 1. Затем для каждой] из полученных ветвей (подзадач) можно продолжить поиск решения (как задачи ЛП) и действовать подобным образом до тех пор, пока все^, не примут значения из множества {0Д1}.
Другой подход, отличный от метода линейного программирования, предложен Марстеном [23], который показал, что решение [£гД задачи (6.14) — (6.18), соответствующее р-медиане графа, является экстремальной точкой некоторого многогранника Hf причем многогранник будет одним и тем же для всех р, удовлетворяющих условию 1 ^ р ^ п. Используя множители Лагранжа и параметрическое линейное программирование, Марстен предло-
') Имеется в виду «поиск, использующий дерево решений» (в оригинале — tree search).— Прим. ped.
жил метод «прокладки пути» между несколькими экстремальными точками многогранника Н. При «прокладке» этого пути последовательно, в порядке убывания р, порождаются некоторые р-медиа- ны графа. Кое-какие р-медианы (для отдельных значений р) могут быть не построены, и, наоборот, могут быть «порождены» такие экстремальные точки многогранника Н, которые не соответствуют р-медианам графа G, так как содержат дробные значения величин £ц. Хотя этот метод привлекателен как с теоретической, так и с вычислительной точек зрения, но все же он не всегда приводит к построению р-медианы графа для требуемого значения р. В работе [23] дан пример полного графа с 33 вершинами, для которого указанным методом последовательно порождаются р-медианы с р = 33, 32, . . ., 10, но построить таким способом 9-медиану и 8-медиану уже нельзя.
5е2е Алгоритм направленного древовидного поиска
Вместо того чтобы задачу нахождения р-медианы толковать как задачу целочисленного программирования, можно для ее решения использовать прямое дерево поиска. Этот подход лучше всего соответствует структуре рассматриваемой задачи. В настоящем разделе будет описан один из таких методов, в котором каждая подзадача, возникающая при ветвлении в каком-либо узле дерева, определяется тем, что (при заданной вершине х^ переменная е^ полагается равной 1 для некоторой вершины яг. Равенство Ег/ = 1 означает, что вершина Xj прикреплена к вершине х1з а также, очевидно, что xt является медианной вершиной.
Этот поиск удобно выполнять следующим образом.
Построим матрицу М = [mh/l, у-й столбец которой содержит все вершины графа G, расположенные в порядке неубывания их расстояний от вершины Xj. Таким образом, если т^ = хь то вершина Xj будет^-й ближайшей к X; вершиной. Очевидно, что первой ближайшей к X; вершиной является она сама, т. е. т^ = Х}.
Поиск начинается с последовательного просмотра всех вершин графа, с хг по хп. Вершина Zj вначале прикрепляется к вершине т13, затем к т2> и т. д., пока не будут перебраны все возможности. Необходимо сделать несколько замечаний.
Поскольку оптимальное решение состоит из р медианных вершин, то прикрепление вершины в этом решении к какой-либо медианной вершине должно быть наилучшим из р возможных прикреплений. Иными словами, для каждой вершины должно существовать по крайней мере еще р — 1 возможностей прикрепления с неменьшей стоимостью, чем у выбранной возможности. Следовательно, из матрицы М можно удалить р —'1 последних строк, и »тоТне отразится на оптимальном решении задачи о /2-медиане.
j Предположим, что вершину Xj прикрепили к вершине тк>/ (которая является, например, вершиной х^. Пусть вершина xt будет А-й ближайшей вершиной к некоторой еще не прикрепленной вершине Xj (f <^j ^п)^ соответствующей ;-му столбцу матрицы М^ т. е. mkj = ^j- Тогда, очевидно, все элементы ти с Z > А^могут быть исключены из дальнейшего рассмотрения (отмечены), поскольку, прикрепив х5» к хь мы тем самым причисляем xt к медианным вершинам и поскольку вершина х3 может быть прикреплена к х$ с меньшей стоимостью г), чем к любой другой вершине mtj при I = к + 1, к + 2, . . . . Ясно также, что если на некотором шаге возвращения процедуры поиска изменится распределение вершины х$» относительно х^ то элементы пьц (неисключенные из рассмотрения, неотмеченные) должны быть рассмотрены заново.
Пусть вершина хр прикреплена к вершине т^р Тогда можно предположить, что все вершины т^^ т^», . . ., Tn<k».nj* не являются медианными вершинами, поскольку в противном случае вершина хр была бы расположена по крайней мере от одной из них не дальше, чем от mk»j» (с меньшей г) результирующей стоимостью). Эти вершины, следовательно, могут быть отмечены (исключены из рассмотрения) во всех столбцах с номерами j > f - Нужно иметь в виду, что вершины эти исключаются временно и их надо «восстанавливать» всякий раз при изменении распределения вершины Xj» относительно mk»j». _
Если из рассмотрения исключены t верхних элементов у-го столбца, соответствующего нераспределенной (неприкрепленной) вершине х5, и (t + 1)-й элемент, т. е. та^ j является медианной вершиной, то х5 должна быть прикреплена к вершине mu+Uj. В этом случае нет необходимости рассматривать какие-либо другие возможности до тех пор, пока некоторые из t верхних элементов не окажутся «восстановленными» (вследствие изменения в предыдущих распределениях вершин, что отразится на множестве «исключенных» вершин). Этот вывод является прямым следствием вышеприведенных замечаний 2 и 3.
Если на некотором этапе q проводимого поиска будет построено множество из р медианных вершин (в результате применения «процедуры прикрепления» вершин), то каждую оставшуюся нераспределенную вершину можно прикрепить к ближайшей медианной вершине. Очевидно, что это является оптимальным завершением частного решения, соответствующего осуществленному прикреплению вершин. На следующем шаге процедуры — шаге возвращения — должно изменяться распределение вершин, полученное в конце g-го этапа.
Вычисление нижней границы. Замечания 1—5 можно использовать для ограничения размера дерева поиска путем уменьшения числа возможных прикреплений вершины xj на любом этапе процедуры. Кроме того, на некоторых этапах, когда последней распределяемой вершиной является вершина х$., для ограничения дальнейшего поиска может быть использована нижняя граница величины полного оптимального решения (полученного для уже осуществленных прикреплений).
Предположим, что выполненные прикрепления (включая прикрепление вершины Xj.) дали р' (р* <р) медианных вершин. Тогда оставшиеся прикрепления должны привести к нахождению остальных р — р* медианных вершин. Пусть J — множество индексов еще не распределенных вершин. В общем случае J есть множество индексов /, для которых f <,]^п, за исключением индексов тех вершин, распределение которых индуцировано распределением первых f вершин xv х^ . . ., х^ (в соответствии с замечанием 4).
Пусть тар и m^.j — самый верхний и следующий за ним элементы j-го столбца, которые являются неотмеченными (не исключенными из рассмотрения). Тогда наилучшим распределением вершины Xj будет ее прикрепление к вершине тар. Если число различных вершин та^ для у 6 7 равно А и h = р — р', то все эти наилучшие распределения еще не прикрепленных вершин являются осуществимыми (т. е. получается множество, содержащее р медианных вершин). Эти распределения образуют оптимальное пополнение частного решения, полученного при распределении вершин х1т х2, . . ., Xj,. В таком случае записывается результат и шаг возвращения может быть предпринят с текущего частного решения.
Если, однако, h >> р — р' п то для получения всех р медианных вершин надо заменить по крайней мере h — р + р' лучших назначений на вторые лучшие или худшие. Тогда наименьшая дополнительная стоимость распределения является суммой И — р + р* наименьших разностей
V) \й (Xj, т^ — d (xj9 та.М (6.20) по всем вершинам Xj, / £ J.
Нижняя граница стоимости оптимального решения, даваемая текущим частным решением, получается прибавлением к сумме стоимостей уже выполненных распределений
2 Vj d ^Xj9 тпа Л
суммы И — р А* р' наименьших разностей, задаваемых выражением (6.20).
Может случиться, что И меньше р — р . Тогда наилучшее пополнение текущего частного решения дает медианных вершин меньше
чем р. Но поскольку очевидно, что передаточное число ст (Хр) оптимальной р-медианы Хр монотонно убывает с увеличением р, то при А <р — р' текущее частное решение наверняка не является частью оптимального р-медианного решения и тогда^можно выполнить шаг возвращения.
5«3, Другой алгоритм направленного поиска
Рассмотрение альтернативных распределений, возникающих при выборе конкретных значений для переменных ^ц, приводит в процедуре поиска из разд. 5.2 к частным подзадачам. Укажем еще одну процедуру поиска 118]; она состоит в построении бинарного дерева поиска, причем это построение осуществляется путем последовательной проверки условия: является или нет данная вершина медианной вершиной? Процедура поиска в этом случае задается множествами 5+, S~ и F. Первое множество соответствует тем вершинам, которые в текущий момент являются медианными, второе соответствует немедианным вершинам, а третье — вершинам, о которых пока нельзя сказать ничего определенного.
Нижняя граница стоимости оптимального решения, определяемая уже осуществленным распределением некоторых вершин по множествам 5+ или 5", может быть вычислена [18] способом, аналогичным приведенному в предыдущем разделе.
Итак, вершина Xj 6 5" должна быть прикреплена к некоторой вершине множества 5+ U ^- Наилучшее’ из этих распределений имеет стоимость
U)= min [Vjd(xh ^)](6 2П
С другой стороны, вершина Xj € F, которая не может стать медианной вершиной, должна обладать стоимостью, равной по крайней мере
uj= min iVjd х^.[(6-22)
x.es+uF
Нижняя граница вычисляется по формуле
2 U-W.(6.23)
где U” есть сумма п — р — | 5“ | наименьших чисел и". Следует отметить, что п—р— | S' | есть число ;вершин, которые пока еще свободны, но могут быть медианными вершинами окончательного решения и, следовательно, должны быть сопоставлены другим вершинам.
В работе [18] оценка из выражения (6.23) используется при древовидном поиске специального типа (равностоимостного). При
таком поиске ветвление производится в узлах дерева, соответствующих наименьшей нижней границе решения. Методы поиска с приоритетом по глубине, аналогичные тем, которые рассматривались в начале настоящего раздела и в которых используются оценки, подобные приведенной в выражении (6.23),— несколько модифицированные, чтобы можно было решать обобщенные р-медианные задачи, возникающие на практике при размещении складов (пунктов обслуживания),—встречаются также в работах [29, 30, 15, 7, 28].
5.4* Приближенный алгоритм
Тэйтц и Барт [32] предложили эвристический метод для нахождения р-медианы. Метод состоит в следующем: случайным образом выбираются р вершин, они и образуют начальное множество 5, аппроксимирующее ^-медианное множество Хр. Затем выясняется, может ли некоторая вершина Xj 6 X — 5 заменить вершину Xi 6 S (как медианная вершина), для чего строится новое множество S' = (5 J {^}) — {xj и сравниваются передаточные числа a (S') и о (5). Если а (5') <а (5), то вершина xt замещается вершиной xj и из множества 5 получается множество S', которое лучше аппроксимирует /^-медианное множество Хр. Затем исследуется уже множество S', аналогично тому как исследовалось 5е ит. д., пока не будет построено множество 5, такое, что ни одну его вершину нельзя заместить вершиной из X — 5 и получить при этом множество с меньшим ^передаточным числом, чем о (S). Множество 5 берется в качестве требуемого приближения к множеству Хре
Описание алгоритма
Шаг 1. Выбрать некоторое множество 5 из р вершин в качестве начального приближения к ^-медиане. Назовем все вершины Xj $ «неопробованными».
Шаг 2. Взять произвольную «неопробованную» вершину и для каждой вершины х^ S вычислить «приращение» А^, соответствующее замене вершины Xi вершиной Xj,^. е. вычислить
fA^a^-of^U^(6.24)
Шаг 3. ’Найти А; - ^ тах][А^].
x-es
ЕслиУА^^О, то назвать вершину Xj «опробованной» и перейти к шагу 2,
Если А^ОО.то 5 ч-(5 U {я;}) — {^} назвать вершину Xj «опробованной» и перейти к шагу 2.
Рис. 6.1. Контрпример к приближенному алгоритму разд. 5.4.
Шаг 4. Повторять шаги 2 и 3 до тех пор, пока все вершины из X — 5 не будут опробованы. Эта процедура оформляется как цикл. Если при выполнении последнего цикла совсем не будет замещений вершин на шаге 3 (i), то перейти к шагу 5. В противном случае, т. е. если осуществлено некоторое замещение, назвать все вершины «неопробованными» и вернуться к шагу 2.
Шаг 5. Стоп. Текущее множество S является подходящей аппроксимацией р-медианного множества Хр.
Очевидно, что приведенный выше алгоритм не во всех случаях дает оптимальный ответ [18]. Действительно, рассмотрим неориентированный граф, изображенный на рис. 6.1. Числа, стоящие около ребер, равны соответствующим реберным стоимостям. Считаем, что все вершины имеют единичные веса. Если искать 2-медиану и в качестве начального множества S взять {х3, хв} с передаточным числом о (5) = 8, то никакое замещение только одной вершины не приводит к множеству с меньшим передаточным числом. Однако множество {х3, х6} не является 2-медианой данного графа. Существуют два 2-медианных множества: f^, z4} и {.г2, хь} с передаточными числами X (Х2) = 7.
Алгоритм, описанный в настоящем разделе, является в действительности лишь одним из целого семейства алгоритмов, базирующихся на локальной оптимизации и на идее Х-оптимальности, впервые введенной Лином [22] для задачи коммивояжера, а впоследствии развитой и использованной в других работах [3, 4, 19] при исследовании различных комбинаторных проблем.
Вернемся к нашей задаче. Множество S из р вершин называется Х-оптимальным (X ^ р), если замена любых X вершин из
множества S любыми X вершинами, не принадлежащими 5, не может породить нового множества с передаточным числом, меньшим, чем у S. Очевидно, что если S является р-медианным множеством Хр рассматриваемого графа, то 5 р-оптимально. Совершенно очевидно также, что если 6" является Х-оптимальным множеством и S”—Х-оптимальное множество, то ст (5*) ^ а (54 при Х*>Х*.
Согласно приведенным выше определениям решение, полученное с помощью алгоритма из разд. 5.4.1, можно назвать 1-оптимальным. Подобные алгоритмы можно дать и для порождения 2-оптимальных, 3-оптимальных и т. д. решений. Чтобы убедиться в Х-оптимальности множества 5, нужно выполнить
возможных замещений (а, следовательно, и вычислений передаточных чисел ст). Это число довольно быстро растет с ростом X, а поэтому такие алгоритмы практически нельзя использовать для значений X, больших 3.
Задачи
Доказать, что каково бы ни было множество Ypi состоящее из р точек, лежащих на ребрах или являющихся вершинами графа G, найдется хотя бы одно подмножество Хр cz X, удовлетворяющее условию: | Хр ; = р и ст (Хр) ^ ст (Yp).
Для графа, изображенного на рис. 6.2, найти медианы, 2-медианы, 3-медианы и 4-медианы.
Рис. 6.2«
Итерационный процесс для решения задачи построения 1-медианы в случае бесконечного графа, вложенного в евклидову плоскость, состоит в следующем [8].
Пусть G — бесконечный полный граф, представляющий евклидову плоскость, и пусть S^— заданное подмножество вершин, состоящее из п точек е координатами (хь уд^ г = 1, 2, . . ., п. Требуется выбрать некоторую точку (хт, у^ для расположения в ней медианной вершины и чтобы при этом выражение
^т — 5 ^i^im
было минимальным; здесь vt — «вес» точки с координатами ^хи уд и ^im евклидово расстояние:
dim^V [(*i — zm)2 + (У i — Ут)2]-
В точке минимума мы имеем:
(1)(1)(2)(2)д°т — XI Г yi ^1 хпд
(1)
(1)
(2)
(2)
Ахт (=1 L Aim
d^m __ XX 'ui (yi — Vm^ @Ут ^ - Atm
Эти уравнения можно решить'итерационным методом, представив их предварительно в следующем виде:
(4)
Начиная с некоторой точки (хт1 ут), можно вычислить расстояния di7ni а затем, используя выражения (3) и (4), найти новое лучшее приближение для (xm, ymY Затем заново вычисляются расстояния dlm и координаты хт и ут. Процесс продолжается до тех пор, пока не стабилизируются величины хт и ут.
Используя описанный итерационный метод, найти 1-медиану в том случае, когда множество 5 состоит из следующих точек: (2,2), (2,6), (4,8), (5,5), (6;1), (8,6) и (9,3) с весами для всех вершин, равными vt — 1.
Показать, что результат в этом итерационном процессе при нахождении глобального оптимума для (хт1 у^ не зависит от выбора начального расположения этой точки.
Распространить приведенную выше итерационную схему на общий случай нахождения р-медианы. Позволяет ли этот обобщенный метод получать глобальный оптимум для р-медианы?
Пусть граф G = (X, Г) является деревом и после удаления ребра (хь х^ распадается на две связные компоненты Сг = (Хь Г) и Gj = (Х^, Г)» где xt 6 Хь Xj € Х>и Xj (J ^> = ^* Введем обозначение:
v(S)= 2 vt.
Показать, что медиана х графа G удовлетворяет условиям:
) если v (Xf) ^ v (Xj), то х 6 Хи
) если v (Хг) ^ v (X/), то х не меняется при замене графа G графом G^ у которого вес вершины х5 полагается равным и$ + + v (Хг). Учитывая эти факты, дать алгоритм для нахождения медианной вершины в дереве, который был бы более эффективным, чем непосредственное использование уравнений (6.2) и (6.3) (см. [13]).
Список литературы
Beale Е. М. L. (1970), Selecting an optimum'e'subset, Integer and nonlinear programming, Abadie, Ed., North Holland, Amsterdam.
Cabot A. V., Francis R. L., Stary M. A. (1970), A network flow solution to a rectilinear distance facility location problem, AIIE Trans., 2, p. 132.
Christofides N., Eilon S. (1969), An algorithm for the vehicle dispatching problem, Opl. Res. Quart., 20, p. 309.
Christofides N., Eilon S. (1972), Algorithms for large scale travelling salesman problems, Opl. Res. Quart., 23, p. 511.
Cooper L. (1963), Location-allocation problems. Ops. Res., 11, p. 331.
Curry G. R., Skeith R. W. (1969), A dynamic programming algorithm for facility location and allocation, AIIE Trans., 1, p. 133.
Efroymson E., Ray T. L. (1966), A branch and bound algorithm for plant location, Ops. Res., 14, p. 361.
Eilon S., Watson-Gandy C. D. T., Christofides N. (1971), Distribution management: mathematical modelling and practical analysis, Griffin, London.
Ellwein L. B., Gray P.(1971), Solving fixed charge location-allocation problems with capacity and configuration constraints, AIIE Trans., 3, p. 290.
Elson D. G. (1972), Site location via mixed-integer programming, Opl. Res. Quart., 23, p. 31.
Garfinkel R. S., Nemhauser G. L. (1972), Integer programming, Wiley, New York.
Goldman A. J. (1969), Optimal locations for centres in a network, Trans. Sei., 3, p. 352.
Goldman A. J. (1970), Optimal centre location in simple networks, Paper FP 6.1, presented at the 38th National Meeting of the Operations Research Soc. of America, Detroit.
Goldman A. J., Mayers P. R. (1965), A domination theorem for optimal locations, Ops. Res., 13, 13—147 (Abstract),
Gray Р. (1967), Mixed integer programming algorithm for site selection and other fixed charge problems having capacity constraints, Department of Operations Research, Report No. 6, Stanford University.
Hakimi S. L. (1965), Optimum distribution of switching centres in a communications network and some related graph theoretical problems.
Hakimi S. L. (1964), Optimum locations of switching centres and the absolute centres and medians of a graph, Ops. Res., 12, p. 450.
Jarvinen P., Rajala J., Sinervo H. (1972), A branch and bound algorithm for seeking the p-median, Ops. Res., 20, p. 173.
Kerningan B. W., Lin S. (1970), An efficient heuristic procedure for partio- ning graphs, Rell Syst. Tech. J., 49, p. 291.
Levy J. (1967), An extended theorem for location on a network, Opl. Res. Quart., 18, p. 433.
Lin S. (1965), Computer solutions of the travelling salesman problem, Bell. Syst. Tech. J., 44, p. 2245.
Maranzana F. E. (1964), On the location of supply points to minimize transport costs, Opl. Res. Quart., 15, p. 261.
Marsten R. E. (1972), An algorithm for finding almost all the p-medians of a network, Paper 23, Northwestern University, Evasion, Illinois.
Rao M. R. (1972), The rectilinear facilities location problem, Working paper No. F7215, The graduate school of management, University of Rochester, Rochester, New York.
Revelle C. S., Marks D., Liebman J. C. (1970), An analysis of private and public sector location models, Man. Set., 16, p. 692.
Revelle C. S., Swain R. W. (1970), Central facilities location, Geographical Analysts, 2, p. 30.
Rojeski P., Revelle C. S. (1970), Central facilities location under an investment constraint, Geographical Analysts, 2.
Sa G. (1964), Branch and bound and approximate solutions to the capacitated plant-location problem, Ops. Res., 17, p. 1005.
Spielberg K. (1969), An algorithm for the simple plant location problem with some side conditions, Ops. Res., 17, p. 85.
Spielberg K. (1969), Plant location with generalized search origin, Man. Set., 16, p. 165.
Surkis J. (1967), Optimal warehouse location, XIV Int. TIMS Conf., Mexico City, Mexico.
Teitz M. B., Bart P. (1968), Heuristic methods for estimating the generalized vertex median of a weighted graph, Ops. Res., 16, p. 955.
Глава 7
ДЕРЕВЬЯ
Введение
Одним из наиболее важных понятий теории графов, которое к тому же часто встречается в областях, не имеющих на первый взгляд никакого отношения к графам, является дерево. В настоящей главе вводятся понятия ориентированного и неориентированного деревьев и дается краткое описание тех областей, где они применяются. Некоторые из этих приложений более подробно рассматриваются в других главах книги.
Определения. Нижеследующие определения неориентированного дерева, как легко показать, эквивалентны друг другу (См задачу 7.1.)v
Неориентированное дерево есть:
связный граф, содержащий п вершин и п — 1 ребер, либо (п) связный граф, не имеющий циклов, либо
граф, в котором каждая пара вершин соединена одной и только одной простой цепью.
Если G = (X, Л) — неориентированный граф с п вершинами, то остовным деревом (или, короче, остовом1) графа G называется всякий остовный подграф графа G, являющийся деревом (в смысле приведенного выше определения). Например, если G — граф, показанный на рис. 7.1а, то граф на рис. 7.16 является остовом’графа G, как и граф, изображенный на рис. 7.1в. Из сформулированных выше определений вытекает, что остов графа G можно также рассматривать как минимальный связный остовный подграф графа G, где «минимальность» понимается в том смысле, как говорилось в гл. 2, т. е. никакое собственное подмножество ребер этого остова не образует связный остовный подграф графа G.
Понятие дерева как математического объекта было впервые предложено Кирхгофом [36] в связи с определением фундаментальных циклов, применяемых при анализе электрических цепей. Приблизительно десятью годами позже Кэли [5] вновь (независимо от Кирхгофа) ввел понятие дерева и получил большую часть первых результатов в области исследования свойств деревьев.
Ориентированное дерево (называемое также древовидностью1) определяется аналогичным образом.
10 н. Кристофидес
Рис. 7.16. Остов графа G.Рис. 7.16. Остов графа G.Рис. 7.1а. Граф G.Рис. 7.1а. Граф G.Рис. 7.2. Ориентированное дерево.Рис. 7.2. Ориентированное дерево.
Рис. 7.16. Остов графа G.
Рис. 7.16. Остов графа G.
Рис. 7.1а. Граф G.
Рис. 7.1а. Граф G.
Рис. 7.2. Ориентированное дерево.
Рис. 7.2. Ориентированное дерево.
Определение. Ориентированное дерево представляет собой ориентированный граф без циклов, в котором полустепень захода каждой вершины, за исключением одной (например, вершины ^), равна единице, а полустепень захода вершины хх (называемой корнем этого дерева) равна нулю 11.
На рис. 7.2 показан граф, который является ориентированным деревом с корнем в вершине хх. Из приведенного определения
Рис. 7.1в. Другойостов графа G.
следует, что ориентированное дерево с п вершинами имеет п — 1 дуг и связно. Также очевидно, что не всякий ориентированный граф содержит остовное ориентированное дерево. Это подтверждает граф, изображенный на рис. 7.3.
Следует отметить, что неориентированное дерево можно преобразовать в ориентированное: надо взять его произвольную вершину в качестве корня и ребрам приписать такую ориентацию,
Такое дерево часто называют выходящим (или корневым).— Прим. ред.
Рис. 7.3. Граф без ориентированного остовного графа.
чтобы каждая вершина соединялась с корнем (только одной) простой цепью. Обратно, если Т = (X, 5) — ориентированное дерево, то Т = (X, В^ где В — множество дуг дерева Т без учета их ориентации, является неориентированным деревом.
«Генеалогическое дерево», в котором вершины соответствуют лицам мужского пола, а дуги ориентированы от родителей к детям, представляет собой хорошо известный пример ориентированного дерева. Корень в этом дереве соответствует «основателю» рода (лицу, родившемуся раньше остальных).
В настоящей главе приводится алгоритм порождения всех остовных деревьев произвольного неориентированного графа и даются методы прямого построения кратчайших остовных деревьев во взвешенном графе (в котором веса приписаны дугам). Кратчайшее остовное дерево (SST) графа находит, очевидно, применение при прокладке дорог (газопроводов, линий электропередач и т. д.), когда необходимо связать п точек некоторой сетью так, чтобы общая длина «линий связи» была минимальной. Если точки лежат на евклидовой плоскости, то их можно считать вершинами полного графа G с весами дуг, равными соответствующим «прямолинейным» расстояниям между концевыми точками дуг. Тогда, поскольку «разветвление» дорог допускается только в заданных п точках, SST графа G будет как раз требуемой сетью дорог, имеющей наименьший вес.
Если же «разветвление» дорог можно производить и «вне» заданных п точек, то возможна и более «короткая» (с меньшей стоимостью) сеть. Нахождение такой сети дорог представляет собой хорошо известную задачу Штейнера. Краткому обсуждению этой задачи посвящен последний раздел данной главы.
ю*
Построение всех остовных деревьев графа
В некоторых ситуациях возникает необходимость в построении полного списка остовных деревьев графа G. Например, в том случае, когда надо отобрать «наилучшее» дерево, а критерий, позволяющий осуществить такой отбор, является очень сложным (или даже частично субъективным), так что непосредственное решение задачи оптимизации (не использующее перечисление всех остовных деревьев) оказывается невыполнимым. В других ситуациях, например при нахождении передаточной функции системы [42,6] или при вычислении определителей некоторых матриц в макроэкономической теории [2], с помощью порождения всех остовов соответствующих графов можно добиться упрощения вычислительных процедур.
Число различных остовов полного связного неориентированного помеченного графа с п вершинами было найдено впервые Кэли [4]. Оно равно п”-2. У Муна [45] приводится список из более чем 25 работ, содержащих разнообразные доказательства этой формулы. (См. также задачу 6.) Формулы для числа остовов в более общих графах можно найти у Риордана [49]. Хотя эти формулы, как правило, очень сложные и их вывод для наших целей не нужен, но стоит, пожалуй, привести следующий результат.
Теорема 1. Пусть G — п-вершинный граф без петель и Во — его матрица инциденций с одной удаленной строкой (т. е. с п — 1 независимыми строками). Пусть В*о — транспонированная матрица к Во. Тогда определитель | Во -Во | равен числу различных остовных деревьев графа G.
Доказательство этой теоремы можно найти в [53] и в [1] (см. также задачу 5).
Рис. 7.4. Граф G.
Элементарные преобразования деревьев
Рассмотрим два (ориентированных или неориентированных) остовных дерева I\ = (X, Л2) и ^ = (X, Л2) графа G = (X, Л). «Расстояние» между двумя деревьями обозначается через d Д\, Т2) и определяется как число дуг из Т^ которых нет в Т2 (или, что эквивалентно, как число дуг из Т2, которых нет в Тг, поскольку оба дерева Тг и Т2 имеют (п — 1) дуг). Если d (Тг, Т2) = 1, т. е. если
(Л1 (J Л2) — (Л} О Л2) = {fli, с2},
где ах € Л1 и а2 Е Л2, то дерево Т2 можно получить из дерева Т\, удалив из Т\ дугу ал и добавив дугу а2. Такое преобразование дерева ^ в дерево Т2 называется элементарным преобразованием дерева.
Теорема 2. Если То и Тк — остовные деревья графа и d (То, Тк) = к, то дерево Тк может быть получено из То с помощью серий из к элементарных преобразований.
Доказательство. Пусть во, а^, . . ., «о — & Дуг из То, которых нет в Тк, и ак, ак, . . . ак — к дуг из Т к, которых нет в То. Если в дерево То добавить дугу ак, то в получившемся графе, согласно определению дерева, найдется цикл. (На рис. 7.5(a) жирными линиями показано неориентированное дерево Т01 а пунктирной линией — дуга ак = (х5, х6) дерева Т^ приведенного на рис. 7.5(д).) В полученном цикле содержится по крайней мере одна дуга, не принадлежащая дереву Тк. Следовательно, ее можно удалить, разорвав тем самым цикл, и это даст новое дерево 7\. Поскольку в Тг число дуг, общих с дугами из Тк, на единицу больше (чем в То), то d (Tj, Тк) = к — 1. Применяя элементарные преобразования дальше, получим последовательность деревьев Т2, Т3, . . ., Тк_г, Тк, в которой d (Д t, Тг+1) = 1 для каждого i' = 2, . . ., к — 1. На рис. 7.5(6) — (д) показано, как с помощью 4 элементарных преобразований из дерева То получается дерево Tv
Процедура порождения всех деревьев графа
Поскольку, как уже упоминалось в начале этого раздела, число остовных деревьев графа очень быстро растет с ростом числа его дуг, то, очевидно, нужен эффективный метод порождения исчерпывающего, но без повторений, списка остовных деревьев. Один из таких способов состоит в использовании элементарных преобразований деревьев, описанных в предыдущем разделе, для последовательного порождения остовов, начиная с некоторого начального остова То. Методы, основанные на этом принципе, даны в работах
Рис. 7.5. Порождение Т4 из деревьев, (а) Остов Та графа с (Д)
Тй посредством элементарных преобразований рис. 7.4. (б) Остов Tv (в) Остов Тг. (г) Остов Т3. Остов Тк (к = 4).
Маеды [421, Пауля [471, Чена [81 и других [20]. Однако процедурам, опирающимся на элементарные преобразования деревьев, присущ следующий недостаток: для порождения нового дерева необходимо привлекать все найденные ранее деревья. Число деревьев становится столь большим, что для хранения их необходимо (с вычислительной точки зрения) использовать вспомогательные устройства памяти, так как быстродействующая оперативная память для этой цели мала. Поскольку при обращении к вспомогательным устройствам памяти значительно возрастает время вычисления, то любой метод, базирующийся на элементарных преобразованиях деревьев, оказывается неэффективным, если не будут применяться такие преобразования, в которых используется только последнее из полученных остовных деревьев. (См. раздел 2.4.) Очевидно, что наилучшим будет такой алгоритм порождения всех остовов графа, когда список остовов строится без повторений и построенные остовы записываются во вспомогательную память, но в процессе работы алгоритма из этой памяти ничего не берется.
В следующем разделе будет описан один такой алгоритм, основанный на поиске, использующем дерево решений. В работах [10, 9, 43] даются другие алгоритмы, базирующиеся на порождении всех главных квадратных подматриц приведенной матрицы инциденций Во, о которой упоминалось в теореме 1.
Основной метод. Мы приводим описание алгоритма для случая неориентированного графа, но его распространение на ориентированные графы — для порождения всех остовных древовидностей ориентированного графа — совершенно очевидно.
Первый шаг метода состоит в приписывании номеров ребрам графа G (ребра нумеруются от 1 до т, гдеш — число ребер в графе GY На каждом этапе (т. е. при каждом ветвлении в дереве решений) выбирается ребро, которое вместе с остальными, выбранными уже на предыдущих этапах, будет образовывать часть конструируемого дерева. Таким образом, прежде чем отобрать такое ребро, выясняют, действительно ли добавление его к частично сформированному дереву (которое на этом шаге является набором поддеревьев) не приводит к появлению цикла. Если цикл появляется, то данное ребро отбрасывается и проверке подвергается следующее ребро, с большим номером. Если цикла нет, то ребро добавляется к другим, уже отобранным, и процесс продолжается до тех пор, пока не будет построено остовное дерево. Ребра перебираются в порядке возрастания их номеров; это приводит к исчерпывающему и без повторений решению задачи.
Для облегчения манипуляций с поддеревьями в каждом поддереве выделяют произвольным образом корень (некоторую вершину поддерева) и затем рассматривают поддерево уже как древо-
видность. Для организации проверки на возможность образования цикла (при добавлении ребра) каждую вершину х, помечают парой (г5, р/). Процедуры выявления циклов, использующие пометки вершин, встречаются у Джонсона [32], Шринивасана и Томпсона [52], Гловера и Клингмана [25]. Первая пометка г, указывает «корень» поддерева, содержащего вершину х,. Первоначально Гу = х, для всех вершин xj. На некотором шаге два поддерева Тл и Т2 сращиваются посредством добавления ребра at = ^ха, х^) с вершиной ха из 7\ и вершиной хе из Г2. Если на этом шаге ^ — «корневая» пометка вершин в 7\, а г2 -— «корневая» пометка вершин в Т2 и гх < г2 (например), то все вершины в 7, должны «сме-
нить» свои корневые пометки на т\ и два поддерева Тг и Т2 «сольются» в единственное новое дерево Тг.
Вторая пометка pj, приписанная вершине x3l указывает вершину, предшествующую вершине х,, т. е. если (xh, х^ — дуга рассматриваемого поддерева, то р, = xh. Для корневой вершины дерева такая пометка полагается равной нулю. Для дерева, изображенного на рис. 7.6 (а), р5 = х6, р13 = х9 и рй = 0.
Замена корня дерева
Если корнем дерева Т является вершина г и нужно в качестве корня выбрать новую вершину х8, то такую «замену» г на х8 можно осуществить простым обращением ориентации дуг, принадлежащих цепи, идущей от г к х8, не меняя при этом ориентацию других дуг (см. рис. 7.6). Соответствующие изменения пометок будут таковы.
Изменение пометок «предшествования»
Пусть х, = х8 и г = pj.
Положить xt = z, а 2 = pt.
Шаг обновления: pt = х5.
Если Xt = г, то перейти к шагу 5, в противном случае положить Xj = х, и перейти к шагу 2.
Положить р8 = 0, стоп.
Изменение корневых пометок
У всех вершин, имеющих корневую пометку г, заменить ее на пометку х8.
Б. Сращивание двух поддеревьев
Если осуществлено сращивание двух поддеревьев Т\ и Т2 (путем добавления ребра (za, х^, как было описано ранее), то в пометки необходимо внести следующие изменения:
У вершин с корневой пометкой г2 заменить эту пометку на
Заменить в дереве Т2 корень г2 на х6 (так, как было описано выше в пункте А), после чего изменить пометку «предшествования» у вершины 26 с /»6 = 0 на />6 = ха.
Расщепление дерева на две части
Поскольку метод порождения деревьев, рассматриваемый ниже, является поиском, использующим дерево решений, то возникает необходимость удаления некоторых ребер (на шагах возвращения), чтобы испытать затем другие ребра. В такой ситуации удаление ребра приводит к расщеплению некоторого дерева на две части, например на Тг и Т2, и в пометки одного из этих поддеревьев должны быть внесены изменения. Пусть удаляется ребро (^а, Яц), гДе ха С Ii и xs С Т2. Тогда при рЙ = ха (т. е. если ребро
(za, х в) в первоначальном дереве ориентировано от ха к zB) пометки в дереве TY можно оставить прежними, а пометки в дереве Т2 должны быть изменены. Если же ра = х6 (т. е. ребро (ха, жв) ориентировано от х6 к Ха.), то можно не менять пометки в дереве То, но нужно изменить пометки в Тг. Предполагая, что пометки меняются в дереве Т^, покажем, как надо «восстанавливать» корень в этом дереве.
Положить S = {жу} и р6 = 0 (жв будет корнем дерева Т^.
Найти все вершины х, с Pj £ S и изменить их корневые пометки на г, = х6. Если таких вершин нет, остановиться.
Шаг обновления: S = 8 J (х, | р,- £ 5}; вернуться к шагу 2.
Следует отметить, что ни у одной вершины, кроме нового корня хв, пометки предшествования менять не нужно. Заметим также, что число описанных выше шагов 2 и 3, которое необходимо для восстановления корня, равно длине самой длинной цепи в Т2, исходящей из вершины хв.
Описание алгоритма. Возьмем произвольную вершину х* графа G. Пусть ее степень равна d*. Перенумеруем ребра, инцидентные этой вершине: ат, а2, . . ., а^. Затем перенумеруем остальные ребра графа G". ad*+i, . . ., am. При порождении деревьев ребра будут перебираться в соответствии с введенной нумерацией.
Шаг 1. Приписать вершинам пометки: (г;, р^, где г, = xt и pt = 0, Х/х, £ X. Положить к = 1.
Шаг 2. Выбрать для исследования некоторое ребро. Например, ак = (^ь ХЬ- Если к ^ т, где т — число ребер графа, то перейти к 2 (i). При к = т + 1, т. е. если «неисследованных» ребер нет, перейти к шагу 5.
Если г; = Tj, то это означает, что вершины х, и х; принадлежат одному и тому же поддереву и добавление ребра ак приведет к появлению цикла. Отбросить ребро ак, т. е. положить к = к + + 1 и вернуться к шагу 2.
Если rt ^ Tj, то ребро ак можно добавить к ребрам построенных поддеревьев. Перейти к шагу 3.
Шаг 3. Срастить два поддерева, у которых вершины имеют корневые пометки rt и г5, применив для этого метод, описанный выше в пункте Б .
Шаг 4. Отобрав\5Г^ 1 ребер, мы получаем некоторое дерево. Запомнить это дерево и перейти к шагу 5. Если отобрано меньше, чем п — 1 ребер, то положить к = к + 1 и вернуться к шагу 2.
Шаг 5. (Возвращение.) Удалить ребро, добавленное последним. Предположим, что таким ребром является av Если ал —
Рис. 7.7. Граф из примера 2.3.
единственное оставшееся для добавления ребро, I = d*, то остановиться. Все остовные деревья, таким образом, построены. (При любом дальнейшем ветвлении дерева решений вершина х* останется изолированной.)
В противном случае надо обновить пометки, действуя так, как указано в пункте В, положить к = I + 1 и возвратиться к шагу 2.
Пример (
Нам нужно построить все остовные деревья графа, изображенного на рис. 7.7. Выберем в качестве ж* вершину ж^ имеем d* = = 2. Обозначим ребро (ж^ ж2) через at, а ребро (ж,, ж3) через а2. Остальные ребра перенумеруем, например так, как показано на рис. 7.7 (ребра а3, а4, . . ., а7).
На рис. 7.8 изображено соответствующее дерево решений (оно порождено в процессе работы алгоритма, приведенного в разд. 2.2.2). Если взять ребра, указанные в кружочках какой- либо цепи, выходящей из верхнего узла этого дерева и оканчивающейся в самом нижнем узле, то из них можно построить некоторый остов данного графа. Эти остовы перенумерованы числами от 1 до 21 и приведены на рис. 7.9.
Легко проверить, что у графа, изображенного на рис. 7.7, действительно 21 остов. Это можно установить с помощью теоремы 1 из разд. 2. Матрица инциденций В данного графа имеет следующий вид (считаем, что каждое ребро ориентировано от его конце-
Рис. 7.8. Полное дерево поиска из примера 2.3.Рис. 7.8. Полное дерево поиска из примера 2.3.Х1*2В = х3*4Х51100000-10111000-1-10010000-10-110000-10-1Х1*2В = х3*4Х51100000-10111000-1-10010000-10-110000-10-1<ii а2 а3 а4 а5 а^ д7<ii а2 а3 а4 а5 а^ д712341234Рис. 7.9. Все остовы графа с рис. 7.7.Рис. 7.9. Все остовы графа с рис. 7.7.
Рис. 7.8. Полное дерево поиска из примера 2.3.
Рис. 7.8. Полное дерево поиска из примера 2.3.
Х1
*2
В = х3
*4
Х5
1100000
-1011100
0-1-10010
000-10-11
0000-10-1
Х1
*2
В = х3
*4
Х5
1100000
-1011100
0-1-10010
000-10-11
0000-10-1
<ii а2 а3 а4 а5 а^ д7
<ii а2 а3 а4 а5 а^ д7
1234
1234
Рис. 7.9. Все остовы графа с рис. 7.7.
Рис. 7.9. Все остовы графа с рис. 7.7.
вой вершины с меньшим индексом к вершине с большим индексом):
Удаляя, например, строку х21 получим матрицу Во. Произведение матриц Во -Во выглядит так:
12-100
,2-13-10
В-В* =
* е 30-1 3-1
4 0 0 -1 2
Определитель | Во -Во | равен 21. Следовательно, по теореме 1 число остовных деревьев данного графа равно 21.
Граф остовов
Каждому остову графа G сопоставим определенную вершину (нового графа). Две вершины в новом графе соединяются ребром только тогда, когда соответствующие им остовы графа G являются соседними (т. е. расстояние между этими остовами, определяемое в соответствии с разд. 2.1, равно единице). Граф, построенный таким образом, называется графом остовов (графа G). Для графа G, изображенного на рис. 7.10 (а), полный список остовов приведен на рис. 7.10 (б), а граф остовов — на рис. 7.10 (в).
Каммингс [15] и Шэнк [51] доказали, что граф остовов любого связного графа является гамильтоновым. Позже Киси и Кадзита- ни [37, 38] и Камаз [33] разработали методы нахождения гамильтоновых циклов в графе остовов (и, следовательно, методы построения всех остовов графа G). Эти методы представляют в основном теоретический интерес и не эффективны с вычислительной точки
зрения.
(а) Граф(а) ГрафРис. 7.10. Граф G и его G. (б) Остовы графа G. (в)Рис. 7.10. Граф G и его G. (б) Остовы графа G. (в)граф остовов.Граф остовов графа G.граф остовов.Граф остовов графа G.
(а) Граф
(а) Граф
Рис. 7.10. Граф G и его G. (б) Остовы графа G. (в)
Рис. 7.10. Граф G и его G. (б) Остовы графа G. (в)
граф остовов.
Граф остовов графа G.
граф остовов.
Граф остовов графа G.
Кратчайший остов (SST) графа
Рассмотрим взвешенный связный неориентированный граф G = (X, Л); вес ребра (ж,, х^ обозначим Сц. Из большого числа остовов графа нужно найти один, у которого сумма весов ребер наименьшая. Такая задача возникает, например, в том случае, когда вершины являются клеммами электрической сети, которые должны быть соединены друг с другом с помощью проводов наименьшей общей длины (для уменьшения уровня наводок). Другой пример: вершины представляют города, которые нужно связать
(а)(а)Рис. 7.11.(а) Граф G.(б) Дерево кратчайших из zt.(в) Кратчайший остовРис. 7.11.(а) Граф G.(б) Дерево кратчайших из zt.(в) Кратчайший остовпутейграфа.путейграфа.сетью трубопроводов; тогда наименьшая общая длинасетью трубопроводов; тогда наименьшая общая длинатруб, которая должна быть использована для строительства (при условии,
(а)
(а)
Рис. 7.11.
(а) Граф G.
(б) Дерево кратчайших из zt.
(в) Кратчайший остов
Рис. 7.11.
(а) Граф G.
(б) Дерево кратчайших из zt.
(в) Кратчайший остов
путейграфа.
путейграфа.
сетью трубопроводов; тогда наименьшая общая длина
сетью трубопроводов; тогда наименьшая общая длина
что вне городов «разветвления» трубопроводов не допускаются), определяется кратчайшим остовом соответствующего графа. Не совсем непосредственно, а как промежуточный шаг, кратчайший остов используется при решении задачи о коммивояжере, которая довольно часто встречается на практике и детально рассматривается в гл. 10.
Следует отметить, что SST графа не имеет никакого отношения к дереву, дающему все кратчайшие пути, выходящие из некоторой выбранной вершины. Так для графа, показанного на рис. 7.11(a), где числа, стоящие около ребер, являются их весами, дерево, дающее все кратчайшие пути, выходящие из вершины х1, изображено на рис. 7.11 (б), a SST — на рис. 7.11 (в).
Задача построения кратчайшего остова (SST) графа является одной из немногих задач теории графов, которые можно считать
полностью решенными. Итак, пусть Tt и Т, — два произвольных поддерева, полученных путем добавления ребер при построении SST. Если символ Tt использовать также для обозначения множества вершин данного поддерева, то AZJ- может быть определено как кратчайшее из расстояний между вершинами из Т, и вершинами из Tj, т. е.
Ai; = min [min {с(хь z;)}], i ^=;.(7.1)
^етг х^т,
Легко показать, что многократное применение нижеследующей операции приводит к построению SST графа.
Операция J: Для поддерева Ts найти такое поддерево Т j», чтобы А8у* = min [ ASJ. Пусть(х5, х^ будет тем ребром, вес которого
Ti
соответствует величине ASJ* в выражении (7.1). Тогда ребро (xs, Xj*) принадлежит SST и может быть добавлено к другим ребрам частично сформированного SST.
Доказательство. Предположим, что на некотором этапе, например на /с-м, ребра в построенных поддеревьях принадлежат окончательному SST, а ребро ^xs, Xj*), выбранное в соответствии с приведенным выше условием, в SST не содержится. Поскольку поддерево Ts должно быть связано в конце концов согласно определению с некоторым другим поддеревом, то в SST должно существовать ребро (.Xj, Xj), такое, что xt £ Та и х, £ Та. Удалив ребро {.Xj, Xj) из SST, мы расщепим это дерево на две связные компоненты, а добавив ребро (xs, х,*), получим новое дерево, более короткое, чем SST, что противоречит определению SST. Таким образом, ребро (zs, Xj«) можно добавить к частично сформированному SST на А-м этапе. Затем надо перейти к следующему этапу построения дерева. Нужно отметить, что результат не зависит от выбора поддерева Та. Поскольку на начальном этапе (т. е. пока еще никакие ребра не выбраны) предположение о принадлежности ребер к SST автоматически выполнено, то многократное применение операции J даст в конце концов SST графа.
Многие методы, позволяющие строить SST графов, основываются на частных случаях описанной выше операции [40, 48, 41, 46, 17, 35, 26]. Первый из таких методов был предложен Краскалом [40].
Алгоритм Краскала
Шаг 1. Начать с вполне несвязного графа Т, содержащего п вершин.
Шаг 2. Упорядочить ребра графа G в порядке неубывания их весов.
Шаг 3. Начав с первого ребра в этом списке, добавлять ребра в графе Т, соблюдая условие: такое добавление не должно приводить к появлению цикла в Т.
Шаг 4. Повторять шаг 3 до тех пор, пока число ребер в Т не станет равным п — 1. Получившееся дерево является SST графа G.
В этом алгоритме для добавления к частично’сформированному дереву выбирается абсолютно кратчайшее допустимое ребро, а не просто кратчайшее ребро между одним поддеревом Т, например Т8, и другим каким-либо поддеревом (как это предполагалось в операции J). Так как выбранное ребро является, очевидно, кратчайшим между некоторым поддеревом и каким-то другим поддеревом, то правило выбора в этом алгоритме представляет собой частный случай операции J. Однако при выполнении этого алгоритма может возникнуть такая ситуация, когда очередное кратчайшее ребро, выбранное из списка, построенного на шаге 2, будет соединять две вершины одного и того же поддерева. Добавлять это ребро к Т нельзя, поскольку такое добавление приводит к появлению цикла в Т. Поэтому на шаге 3, прежде чем добавлять ребро к графу Г, надо проверить, является ли оно допустимым в указанном выше смысле. Такую проверку можно выполнить более эффективно (путем осуществления одного сравнения с использованием процедуры расстановки пометок, описанной в разд. 2.2.1), абсолютно так же, как это делается на втором шаге алгоритма из разд. 2.2.2.
Больше всего времени необходимо для выполнения шага 2’рас- сматриваемого алгоритма. Для графа с m ребрами нужно выполнить порядка m log2m операций, чтобы составить полный список ребер в порядке возрастания их весов. Однако полный список, вообще говоря, не требуется, так как весьма правдоподобно, что n — 1 допустимых ребер, образующих SST, будут найдены после просмотра только «верхней» части списка, содержащей г < m ребер. Отсюда немедленно следует, что процедура сортировки, используемая на шаге 2, должна быть процедурой многократного обращения, дающей корректное расположение первых р ребер в конце p-то цикла обращения. С помощью такой процедуры 134] кратчайшее ребро находится посредством одного обращения к шагу 2, затем осуществляется проверка ребра в соответствии с шагом 3; далее происходит возвращение к шагам 2 и 3 и т. д. Процесс продолжается до тех пор, пока после некоторого числа г таких проб не будут отобраны п — 1 ребер, дающие (при добавлении их к Г) SST графа. В конце такого процесса будут эффективно рассортированы только г ребер и при этом будут выполнены г log2zn операций. Остальные m — г ребер не потребуются.
Из сказанного выше следует, что, несмотря на сделанные усовершенствования, алгоритм Краскала лучше подходит для графов с небольшим числом ребер, чем для полных графов. У полных графов т = п^п—1)/2;для этого случая Прим [48] и Дейкстра [17] предложили алгоритмы, более эффективно использующие особенности операции J.
Алгоритм Прима [48]
Этот алгоритм порождает SST посредством разрастания только одного поддерева, например Т8, содержащего больше одной вершины. «Одиночные» вершины рассматриваются как отдельные поддеревья. Поддерево Т8 постепенно разрастается за счет присоединения ребер (хг, Xj), где х^ € Т8 и х5 ^ Т8; причем добавляемое ребро должно иметь наименьший вес си. Процесс продолжается до тех пор, пока число ребер в Т 8 не станет равным п — 1. Тогда поддерево Т8 будет требуемым SST. Впервые такая частная форма операции J была предложена Примом [48], а эффективную технику ее реализации дали Дейкстра [17] и Кевин с Уитни [351.
Алгоритм начинает работу с присвоения каждой вершине Xj ^ Тв пометки [«;, р;], где ау на каждом шаге есть ближайшая к Ху вершина из поддерева Т81 а ру — вес ребра (ay, XjY На каждом шаге выполнения алгоритма вершина, например Xj*, с наименьшей пометкой ру присоединяется к Т8 посредством добавления ребра (otj*, xj*). Поскольку к Т8 добавлена новая вершина xj*. то, может быть, придется изменить пометки [ау, Ру] у некоторых вершин ху $ Ts (если, например, с (х^ х^) меньше существующей пометки бу) и после этого продолжить процесс. Такая процедура расстановки пометок очень похожа на ту, которая используется в задаче о кратчайшем пути при применении алгоритма Дейкстры (гл. 8, разд. 2.1).
Алгоритм имеет следующий вид:
Шаг 1. Пусть Т8 = {xs}, где х8— произвольно выбранная вершина, и Ла = 0 (Аа является множеством ребер, входящих в SST).
Шаг 2. Для каждой вершины х5 ^ Т8 найти вершину ау С Т81 такую, что
с (ау, хД = min [с (хь хД] = ру,
и приписать вершине Ху пометку [ау, Ру]- Если такой вершины ау нет, т. е. при Г(ху) П Т8 = 0, приписать вершине Ху пометку [О, оо].
Шаг 3. Выбрать такую вершину х3, что
Обновить данные: Ts = Ts U fo*}, Л = Л8 J {(ap, ^;)}- Если | 78 = n, то остановиться. Ребра в Ай образуют SST. Если | Ts #= п, то перейти к шагу 4.
Шаг 4. Для всех Xj ^ Т8, таких, что Xj С Г (xj*), обновить пометки следующим образом.
Если Pj> с (х5*, Xj), то положить Р;- = с (Xj*, Xj), aj = Хр и вернуться к шагу 3.
Если Р; ^ с (xj*, Xj), то перейти к шагу 3.
Родственные задачи
До сих пор мы занимались задачей нахождения SST и в связи с этим привели описание двух алгоритмов, которые можно использовать для решения этой задачи. Применимость этих методов, однако, значительно шире, чем кажется с первого взгляда. Операция J, на которую опираются эти методы, не накладывает никаких ограничений на знак веса с^ и, следовательно, описанные методы построения SST применимы также для графов с произвольными (положительными, отрицательными или нулевыми) весами ребер. Отсюда немедленно вытекает, что длиннейшее остовное дерево графа можно найти таким же способом, надо лишь изменить знаки весов ребер на противоположные и применить затем один из приведенных выше алгоритмов построения SST.
Более того, при доказательстве утверждения, связанного с операцией J, не используется тот факт, что полный вес остовного дерева равен сумме весов его ребер. Предполагалось только, что при замене ребра с весом С на ребро с весом С" < С вес дерева уменьшается.
Таким образом, если вес дерева представляет собой монотонно возрастающую симметричную1’ функцию, зависящую от реберных весов, то остовное дерево, минимизирующее эту весовую функцию, должно быть тем же самым SST (которое минимизирует сумму весов ребер). Например, если Сг, Сй, . . ., Ст— стоимости т ребер графа G,to остовным деревом графа G, минимизирующим С^ + + ct + - . . + CVi или CVC4 • . . . - Сч? где Civ Cit, Л ., C/n t — веса каких-либо п— 1 ребер, образующих остовное дерево графа G, будет то же самое SST графа G. Добавим, что поскольку
в первой из упомянутых выше функций третью степень можно заменить на’'любую другую степень р > 0 и поскольку при р—> оз
max [С.]}^
4=141=1П-1*
то остовное дерево, у которого ребро с наибольшим весом имеет минимально возможный вес, совпадает с SST графа G.
Пример [48]
На графе G, изображенном на рис, 7.12, каждая вершина представляет некоторое лицо, а ребра (хь xj) отражают тот факт, что лицо xt может общаться с лицом Xj и наоборот. Требуется определить такой способ передачи конфиденциального сообщения между 12 лицами, при котором вероятность утечки информации будет наименьшей. Каждой передаче сообщения от х^ к х^ приписывается некоторая вероятность р£; того, что послание может быть перехвачено посторонним лицом. Эти вероятности в процентах даны на рис. 7.12. Очевидно, что пути передачи сообщения должны образовывать остовное дерево графа G, и требуется найти такое остовное дерево, которое минимизирует величину 1 — П (1—р£;), где произведение берется по тем ребрам, которые образуют это дерево. Поскольку эта функция возрастающая и симметричная относительно р£;, то требуемое остовное дерево будет совпадать
Рис. 7.12. Граф из примера 3.4.
с. SST графа G, при этом р/7- принимаются за «стоимости» ребер
Решим эту задачу, используя алгоритм из разд. 3.2.
Шаг 1. Возьмем хв = хг, Ту = {^i}, Ay = 0.
Шаг 2. Примем за пометки для х^, х^ и х5: [хь 6], [хп 11] и [хх, 5] соответственно. Остальные пометки равны [0, оо].
Шаг 3. Наименьшая пометка 0; будет у вершины х5, и поскольку а5 = ху, то построим ребро (хп х5): Ту = {хх, х5}, Лх = {(хь
Шаг 4. Обновим пометки вершин х2, х^ х1 следующим образом:
для х2 : 02 = 6 <с (х5, х2) и больше обновлять не надо;
для х6 : 06 = оо > с (х5, х6) = 15, следовательно, пометка для х6 примет вид (х5, 15];
для х7 : 07 = оо > с (х5, х7) = 9 и пометка для х7 примет значение [х5, 9].
Поскольку х4 £ Г (х5), ее пометка останется такой же, как и на предыдущей итерации, т. е. [хь И].
Шаг 3. Пометки теперь таковы: для х2 : [хь 6], для х4 : [х1? И], для х6 : [х5, 15], для х7 : [х5, 9]. Наименьшая пометка 0; будет у х2, и поскольку а2 = хх, то построено ребро (хх, х2); Л = {хь х5, х2}, Л1 = {(х1т х5), (хг, х2)}.
Шаг 4. Аналогично обновим пометки вершин х3, х4, х7 следующим образом:
для х3 : [х2, 15],
для х4 : [х1т И] (обновлять не надо), для х7 : [х5 9] (обновлять не надо).
Пометка для хб $ Г (х2) остается такой же, как и на предыдущей итерации, т. е. [х5, 15].
Шаг 3. Наименьшая пометка 0; будет у вершины х7, и поскольку а7 = х5, ребро (х5, х7) построено. Ту = {хп х5, х2, х7}, Л7 = = {(^Ь ^5)7 (^1, ^2)7 (^57 Z7)}.
Шаг 4. Пометки вершин обновляются так же, как и раньше, и показаны на рис. 7.13а вместе с необходимыми для построения дерева дополнительными ребрами.
Продолжая таким образом, получим в конце SST, показанный на рис. 7.136, с номерами ребер, указывающими, в какой последовательности они вводились в дерево.
Произведение П (1 — ри) для ребер этого дерева равно 0,5214, и, следовательно, величина минимума вероятности перехвата сообщения посторонним лицом равна 47,86 %.
Рис. 7.13а. Частично сформированное дерево Тх с пометками на вершинах, не принадлежащих Tv Надо добавить следующее ребро.
Рис. 7.136. SST графа на рис. 7.12.
Задача Штейнера
В предыдущем разделе в задаче определения SST, т. е. наикратчайшего дерева графа G = (X, Г), ребрами «покрывались» все вершины множества X. С этой задачей тесно связана задача, известная как «задача Штейнера на графах» [27, 18], но последняя значительно труднее.
В этой задаче требуется найти наикратчайшее дерево Ts которое «стягивает» («покрывает») заданное подмножество Р а X вер-
шин графа G. Другие вершины, принадлежащие X — Р, могут либо стягиваться деревом Т, либо нет, в зависимости от требования минимизации длины дерева Т. Таким образом, задача Штейнера на графе эквивалентна нахождению наикратчайшего остовного дерева произвольного подграфа G' = (X', Г) графа G при условии Р с Г £ X.
Евклидова задача Штейнера впервые была поставлена как геометрическая задача [13, 14, 44, 24], в которой нужно множество точек Р на евклидовой плоскости соединить линиями так, чтобы сумма длин отрезков была минимальна. Если не допускаются пересечения любых двух линий в точках вне заданного множества
Рис. 7.14а. Кратчайшее остовное дерево. Длина = 10,123.Рис. 7.14а. Кратчайшее остовное дерево. Длина = 10,123.Рис. 7.146. Кратчайшее дерево Штейнера.Длина 9,196.Рис. 7.146. Кратчайшее дерево Штейнера.Длина 9,196.
Рис. 7.14а. Кратчайшее остовное дерево. Длина = 10,123.
Рис. 7.14а. Кратчайшее остовное дерево. Длина = 10,123.
Рис. 7.146. Кратчайшее дерево Штейнера.
Длина 9,196.
Рис. 7.146. Кратчайшее дерево Штейнера.
Длина 9,196.
Р,^то задача сводится к одной из задач определения SST эквивалентного графа на | Р | вершинах с матрицей весов, вычисленных как евклидово расстояние между точками множества Р. Если допускается на плоскости введение дополнительных «искусственных» вершин (называемых точками Штейнера), то длину SST на множестве точек Р' zd Р можно уменьшить соответствующим подбором точек. Например, для четырех точек, показанных на рис. 7.14а, SST имеет длину, большую, чем SST графа, получаемого после добавления двух новых точек ^ и s2i расположенных «между» исходными точками (см. рис. 7.146). Таким образом, для решения задачи Штейнера можно добавить в любых местах плоскости столько точек Штейнера, сколько необходимо для построения наикратчайшего дерева, стягивающего множество из Р точек. Получающееся наикратчайшее дерево называют наикратчайшим деревом Штейнера»
Задача Штейнера на евклидовой плоскости достаточно хорошо изучена [44, 24, И, 12], и известно большое число свойств наикратчайшего дерева Штейнера. Наиболее важными свойствами являются следующие [24, И]:
Точка Штейнера' s, имеет степень d (s^ = 3. Это можно легко показать с помощью геометрического построения, поскольку угол между ребрами, инцидентными точке Штейнера st, должен быть равен 120° неточно три ребра инцидентны любой точке Штейнера 8,. Следовательно, эта точка является «центром» (центром Штейнера)^воображаемого ‘треугольника, вершинами которого
Рис.^7.15а. Кратчайшее остовное дерево. Длина = 18.Рис.^7.15а. Кратчайшее остовное дерево. Длина = 18.Рис. 7.156. Кратчайшее дерево Штейнера.Длина = 15.Рис. 7.156. Кратчайшее дерево Штейнера.Длина = 15.
Рис.^7.15а. Кратчайшее остовное дерево. Длина = 18.
Рис.^7.15а. Кратчайшее остовное дерево. Длина = 18.
Рис. 7.156. Кратчайшее дерево Штейнера.
Длина = 15.
Рис. 7.156. Кратчайшее дерево Штейнера.
Длина = 15.
являются три другие точки дерева, с которыми она связана с помощью наикратчайшего дерева Штейнера.
Некоторые точки, являющиеся вершинами такого треугольника, могут оказаться другими точками Штейнера. Например, на рис. 7.146 точка Штейнера s2 является центром воображаемого треугольника с вершинами р3, р4 и Sj.
Для вершины pt С Р степень d (р^ ^ 3. Если d (р^ = 3, то угол между любыми двумя ребрами, инцидентными рь должен быть равен 120°. Если d (р^ = 2, то угол между двумя ребрами, инцидентными рь должен быть больше или равен 120°.
Число точек Штейнера в наикратчайшем дереве Штейнера равно к, 0 к ^ п — 2, где п = | Р |. Доказательство упомянутых выше свойств можно найти в [24].
Несмотря на то внимание, которое уделялось евклидовой задаче Штейнера, при помощи существующих алгоритмов [44, 11] решение возможно толькй для небольших по размеру задач (не более 10 точек5 в Р) и, следовательно, можно считать евклидову
задачу Штейнера нерешенной. Для задач большого размера можно обратиться к ряду эвристических методов [7, 50].
В более позднем варианте задачи Штейнера на плоскости используется обычно линейное (вместо евклидова) расстояние между точками. Такая постановка задач впервые была предложена Хэнном [28, 301 в связи с разработкой теории монтажа печатных схем электронных устройств. Расстояние между точками с координатами (,х1, у^, (х2, у^ в этом случае определяется следующим образом:
^1. 2 = | А — ж2 | + | Z/1— У11-
При этих условиях можно легко показать [44], что если через каждую точку из множества Р провести вертикальные и горизонтальные линии, то решение задачи Штейнера можно получить, рассматривая в качестве возможных точек Штейнера точки пересечения полученной сетки линий.
Пусть граф G построен так, что множество его вершин X является множеством точек пересечения некоторой сетки линий и ребра графа G соответствуют линиям сетки, соединяющим две точки пересечения. Тогда задача Штейнера на плоскости с линейной метрикой переходит в задачу Штейнера для конечного графа, определенную в начале этого раздела [54]. На рис. 7.156 показан пример наикратчайшего дерева Штейнера для линейной задачи с шестью точками, а для сравнения на рис. 7.15а показан SST этой задачи.
Задача Штейнера для обычных неориентированных графов рассматривалась Хакими [27] и Дрейфусом и Вагнером [18]. Они нашли точные алгоритмы решения таких задач. Однако эти алгоритмы с вычислительной точки зрения являются не эффективными процедурами, хотя они и значительно лучше, чем последовательный просмотр SST всех подграфов G' графа G. В любом случае (как и в случае задач с евклидовым расстоянием) максимальный размер задач Штейнера, для решения которых требуется разумное вычислительное время, не превышает 10 вершин (в множестве Р). С этой точки зрения задачу Штейнера на графе можно рассматривать как нерешенную проблему, и она в этой книге больше не будет обсуждаться.
Задачи
Доказать, что все три определения остовного дерева, данные во введении, эквивалентны.
Показать, что в дереве, имеющем больше одной вершины, существуют по крайней мере две вершины степени 1.
Показать, что детерминант любой квадратной подматрицы матрицы инциденций графа равен + 1, — 1 или 0.
Для матрицы размера п X т любая квадратная матрица размера min (п, zn) X min (и, т) называется главной подматрицей. Показать, что если Вт — главная подматрица матрицы инциденций связного графа, то |5т | отличен от нуля (равен + 1
Рис. 7.16.
или—1) тогда и только тогда, когда остовный подграф, состоящий из всех ребер, соответствующих столбцам подматрицы Вт, является деревом.
Найти все остовные деревья графа, показанного на рис. 7.16, и, используя результат теоремы 1, убедиться, что их число равно числу, приведенному в теореме 1.
Показать, что произведение матриц Во -В1^ использованное в теореме 1, не обязательно вычислять перемножением Во и BQ, но можно получить непосредственно из графа в виде (n X п) матрицы М = Ьпц], определенной следующим образом: диагональный элемент zn^ есть степень вершины xt, а элемент т^ — число параллельных ребер между вершинами Xi и xj со знаком минус. Чтобы получить BQ •Bq, достаточно построить только (п — 1) строк и столбцов матрицы М.
Используя теорему 1, показать, что число остовов полного связного неориентированного графа с п вершинами равно пЛ-2.
Пусть матрица М = [тп^-] для ориентированного графа определена следующим образом: тц = dt (xj, степень полузахода вершины х^ т^ = — к, где к есть число параллельных дуг из Xt в xj. Показать, что ориентированный граф есть ориентированное дерево с корнем хг тогда и только тогда, когда тТТ = 0, mu = 1 при i ^ г и определитель подматрицы, получающейся вычеркиванием г-й строки и г-го столбца из М, равен 1 (см. [19).
Рис. 7.18.
Пусть М — матрица, определенная в задаче 8. Используя полученный выше результат, показать, что число ориентированных остовов с корнем хг в ориентированном графе (без петель) равно определителю подматрицы, полученной вычеркиванием г-й строки и r-го столбца из М (см. [1], стр. 163, и [2]).
Написать алгоритм перечисления всех остовов графа без повторений, используя элементарные преобразования дерева (см. [42, 47, 81).
Найти SST графа, показанного на рис. 7.17, двумя алгоритмами — Крускала и Прима.
Найти для полного графа на множестве верхний {^j, х2, х3, х4}, как показано на рис. 7.18, с весами ребер, определенных как евклидовы расстояния:
SST,
Дерево Штейнера на плоскости. (Использовать свойства точек Штейнера на плоскости, данные в разд. 4, и рассмотреть все возможные топологии (т. е. матрицы инциденций). Решить ту же задачу, полагая веса ребер равными линейным расстояниям между точками.
Повторить упражнение 12, добавив дополнительную вершину 1$ и оценить увеличение объема вычислений.
Список литературы
Берж К., Теория графов, М., ИЛ, 1962.
Bott R., Mayberry J. Р. (1954), Matrices and Trees, Economic Activity Analysis, Wiley, New York.
Басакер P, Саати T., Конечные графы и сети , М., Наука, 1974.
Cayley А. (1874), On the mathematical theory of isomers, Philosophical Magazine, 67, p. 444.
Cayley A. (1897), Collected papers, Quart. J. of Mathematics, 13, Cambridge, p. 26.
Chan S. P., Chan S. G. (1968), Modifications of topological formulae, IEEE Trans., CT—15, p. 84.
Change S.-K. (1972), The generation of minimal trees with Steiner topology, J. of ACM, 19, p. 699.
Chen W.-K. (1971), Applied Graph Theory, North-Holland, Amsterdam.
Chen W.-K. (1966), On the directed trees and directed k-trees of a digraph and their generation, J. of SIAM (.Appi. Math.), 14, p. 550.
Chen W. K., Li H.-C. (1973), Computer generation of directed trees and complete trees, Int. J. of Electronics, 34, p. 1.
Cockayne E. J. (1970), On the efficiency of the algorithm for Steiner minimal trees, J. of SIAM (Appl. Math.), 18, p. 150.
Cockayne E. J., Melzak Z. A. (1968), Steiner’s for problem set terminals. Quart. Applied Mathematics, 26, p. 213.
Курант P., Роббинс Г. (1970), Что такое математика?, М., Наука.
Coxeter Н. S. М. (1961), Introduction to geometry, Wiley, New York. [Есть русский перевод: Кокстер Г. С. М., Введение в геометрию, М., «Наука», 1966.]
Cummings В. L. (1966), Hamilton circuits in tree graphs, IEEE Trans., CT-13, p. 82.
Брёйн H. Дж. де (1968), Теория перечисления Пойа, сб. Прикладная комбинаторная математика, М., «Мир».
Dijkstra Е. W. (1959), A note on two problems in connection with graphs. Numerische Mathematik, 1, p. 269.
Dreyfus S. Е., Wagner R. A. (1972), The Steiner problem in graphs, Networks, 1, 195.
Even S. (1973), Algorithmic combinatorics, Macmillan, New York.
Fidler J. K., Horrocks D. H. (1973), On the generation of k-trees, J. of Electronics, 34, p. 185.
Floyd R. W. (1962), TREESORT- Algorithm 113, ACM Collected Algorithms.
Floyd R. W. (1964), TREESORT 3-Algorithm 245, ACM Collected Algorithms.
Fu Y. (1967), Application of linear graph theory to printed circuits, Proc. Asilomar Conf, on Systems and Circuits.
Gilbert E. N., Pollack H. 0. (1968), Steiner minimal trees, J. of SIAM (Appl. Math.1), 16, p. 1.
Glover F., Klingman D. (1970), Locating stepping-stone paths in distribution problems via the predecessor index method, Transp. Sci., 4, p. 220.
Gower J. C., Ross G. J. S. (1969), Minimum spanning trees and single linkage cluster analysis, Applied, Statistics, 18, p. 54.
Hakimi S. L. (1971), Steiner’s problem in graphs and its implications, Networks, 1, p. 113.
Hanan M. (1966), On Steiner’s problem with rectilinear distance, J. of SIAM (Appl. Math.), 14, p. 255.
Hanan M. (1972), A counterexample to a theorem of Fu on Steiner’s problem, IEEE Trans., CT—19, p. 74.
Hanan M., Kurzberg J. M. (1972), Placement techniques, Design automation of digital systems, Breuer, Ed., Prentice Gall, New Jersey.
Holzmann C. A., Harary F. (1972), On the tree graph of a matroid’ J. of SIAM (Appl. Math.), 22, p. 187.
Johnson E. (1962), Networks and basic solutions, Ops. Res., 14, p. 89.
Kamae T. (1967), The existence of Hamiltonian circuits in tree graphs, IEEE Trans., CT—14, p. 279.
Kershenbaum A., Van Slyke R. (1972), Computing minimum spanning trees efficiently, Proc, of the Ann. Conf, of ACM, Boston, p. 518.
Kevin V., Whitney M. (1972), Algorithm 422—Minimal spanning tree, Comm, of ACM, 15, p. 273.
Kirchhoff G. (1847), Annalen der Physik and Chemie, 72, p. 497.
Kishi G., Kajitani Y. (1968), On Hamilton circuits in tree graphs, IEEE Trans., CT—15, p. 42.
Kishi G., Kajitani Y. (1968), On the realization of tree graphs, IEEE Trans., CT—15, p. 271.
Knuth D. E. (1968), The art of computer programming, Vol. 1. Fundamental algorithms, Addison Wesley, Reading, Massachusetts.
Kruskal J. B. Jr. (1956), On the shortest spanning subtree of a graph and the traveling salesman problem, Proc. American Mathematical Soc., 7, p. 48.
Loberman H., Weinberger A. (1957), Formal procedures for connecting terminals with a minimum total wire length, J. of ACM, 4, p. 428.
Mayeda W. (1972), Graph Theory, Wiley-Interscience, New York.
Mayeda W., Hakimi S. L., Chen W.-K., Deo N. (1968), Generation of complete trees, IEEE Trans., CT—15, p. 101.
Melzak Z. A. (1961), On the problem of Steiner, Canadian Mathematical Bulletin, 4, p. 335.
Moon J. W. (1967), Various proofs of Cayley’s formula for counting trees, A seminar of graph theory, Harary, Ed., Holt, Rinehart and Winston, New York.
Obruca A. (1964), Algorithm 1 — MINTREE, Computer Bulletin, p . 67.
Paul A. J. Jr. (1967), Generation of directed trees and 2-trees without duplication, IEEE Trans., CT-14, p. 354.
Prim R. С. (1957), Shortest connection networks and some generalizations, Bell Syst. Tech.. J., 36, p. 1389.
Riordan J. (1958), An Introduction to Combinatorial Analysis, Wiley, New York. [Есть русский перевод: Риордан Дж., Введение в комбинаторный анализ, М., ИЛ, 1963.]
Scott А. (1971), Combinatorial programming, spatial analysis and planning, Methuen, London.
Shank H. (1968), Note on Hamilton circuits in tree graphs, IEEE Trans., CT—15, p. 86.
Srinivasan V., Thompson G. L. (1972), Accelerated algorithms for labelling and relabelling of trees with applications to distribution problems, J. of ACM, 19, p. 712.
Trent H. M. (1954), A note on the enumeration and listing of all possible trees in a connected linear graph, Proc. Nat. Acad. Set. U. S. A., 40, p. 1004.
Yang Y. Y., Wing 0. (1972), Suboptimal algorithm for a wire routing problem, IEEE Trans., CT—19, p. 508.
Глава 8
КРАТЧАЙШИЕ ПУТИ
Введение
Пусть дан граф G = (X, Г), дугам которого приписаны веса (стоимости), задаваемые матрицей С = [су]. Задача о кратчайшем пути состоит в нахождении кратчайшего пути от заданной начальной вершины s £ X до заданной конечной вершины t £ X, при условии, что такой путь существует, т. е. при условии t £ R (s). Здесь R (з) — множество, достижимое из вершины з, как это было определено в гл. 2. Элементы Су матрицы весов С могут быть положительными, отрицательными или нулями. Единственное ограничение состоит в том, чтобы в G не было пик- лов с суммарным отрицательным весом. Если такой цикл Ф все же существует и х; — некоторая его вершина, то, двьгаясь от з к Ху обходя затем Ф достаточно большое число раз и попадая наконец в t, мы получим путь со сколь угодно малым (—> — оо) весом. Таким образом, в этом случае кратчайшего пути не существует.
Если, с другой стороны, такие циклы существуют, но исключаются из рассмотрения, то нахождение кратчайшего пути (простой цепи) между з и t эквивалентно нахождению в этом графе кратчайшего гамильтонова пути с концевыми вершинами з и t. Это можно усмотреть из следующего факта. Если из каждого элемента Су матрицы весов С вычесть достаточно большое число L, то получится новая матрица весов С' = ку], все элементы с'у которой отрицательны. Тогда кратчайший путь от з к t — с исключением отрицательных циклов — необходимо будет гамильтоновым, т. е. проходящим через все другие вершины. Так как вес любого гамильтонова пути с матрицей весов С' равен весу этого пути с матрицей С, но уменьшенному на постоянную величину (п — 1) -L, то кратчайший путь (простая цепь) от з к t с матрицей С' будет кратчайшим гамильтоновым путем от з к t при первоначальной матрице С. Задача нахождения кратчайшего гамильтонова пути намного сложнее, чем задача о кратчайшем пути; она обсуждается отдельно в гл. 10. Поэтому мы будем предполагать, что все циклы в G имеют неотрицательный суммарный вес. Отсюда также вытекает, что неориентированные дуги (ребра) графа G не могут иметь отрицательные веса.
Следующие задачи являются непосредственными обобщениями сформулированной выше задачи о кратчайшем пути.
Для заданной начальной вершины s найти кратчайшие пути между s и всеми другими вершинами xt € X.
Найти кратчайшие пути между всеми парами вершин.
В последующих разделах будет показано, что почти все методы, позволяющие решить задачу о кратчайшем ($-<)-пути, дают также (в процессе решения) и все кратчайшие пути от s к Xi (Axt 6 X). Таким образом, они позволяют решить задачу с небольшими дополнительными вычислительными затратами. С другой стороны, задача (i) может быть решена либо тг-кратным применением алгоритма задачи (ii), причем на каждом шаге в качестве начальной вершины s берутся различные вершины, либо однократным применением специального алгоритма.
В настоящей главе мы дадим общие алгоритмы решения сформулированных выше задач и частные алгоритмы для случаев, когда все си неотрицательны. Эти частные случаи встречаются на практике довольно часто (например, когда с^ являются расстояниями), так что рассмотрение этих специальных алгоритмов оправдано. Мы будем предполагать, что матрица не удовлетворяет, вообще говоря, условию треугольника, т. е. не обязательно сц ^ с^ + + ch) для всех Z, j и к. В противном случае кратчайший путь между xt и ij состоит из одной единственной дуги1) (х{ xj) и задача становится тривиальной. Если в графе G дуга (х,, Xj) отсутствует, то ее вес полагается равным оо.
На практике часто требуется найти не только кратчайший путь, но также второй, третий и т. д. кратчайшие пути в графе. Располагая этими результатами, можно решить, какой путь выбрать в качестве наилучшего (указанный подход полезен при использовании таких критериев, которые являются субъективными по своей природе или не могут быть непосредственно включены в алгоритм). Кроме того, второй, третий и т. д. кратчайшие пути можно использовать при анализе «чувствительности» задачи о кратчайшем пути. В этой главе мы опишем недавно полученный алгоритм вычисления К кратчайших простых цепей между двумя заданными вершинами общего графа.
В настоящей главе обсуждаются также задачи нахождения в графах путей с максимальной надежностью и с максимальной пропускной способностью. Эти задачи связаны с задачей о кратчайшем пути, хотя в них характеристика пути (скажем, вес) является не суммой, а некоторой другой функцией характеристик (весов) дуг, образующих путь. Такие задачи можно переформулировать как задачи о кратчайшем пути. Однако можно поступить
х) Если такая дуга существует — Прим ред.
иначе: непосредственно приспособить для их решения те методы, которые применяются в задачах о кратчайшем пути.
Обсуждается также случай, когда учитываются и пропускные способности, и надежности дуг. Это приводит к задаче о пути с наибольшей ожидаемой пропускной способностью. И хотя такая частная задача не может быть решена при помощи техники отыскания кратчайшего пути, но итерационный алгоритм, использующий эту технику в качестве основного шага, является эффективным методом получения оптимального ответа.
Задачи о кратчайшем пути, в которых на пути накладываются некоторые ограничения (см. [4], [12], [23]), в настоящей главе не рассматриваются, так как к ним непосредственно не примени- мы те методы расстановки пометок, на которых базируются все описанные здесь алгоритмы нахождения кратчайшего пути. Эти задачи с ограничениями часто настолько сложны, что соответствующие алгоритмы позволяют находить оптимальные решения лишь таких задач, размеры которых (например, число вершин) на несколько порядков меньше, чем у аналогичных задач без ограничений. Ряд важных задач с ограничениями, например задача о кратчайшем гамильтоновом пути, рассматривается в отдельных главах
Кратчайший путь между двумязаданными вершинами s и <
Сначала мы приведем очень простой и эффективный алгоритм решения этой задачи для случая си ^ 0 (Vij), а затем распространим описанный метод на общий случай с^ § 0 с оговоркой, что циклы с отрицательными весами отсутствуют.
* Случай неотрицательной матрицы весов
[Наиболее эффективный алгоритм решения задачи о кратчайшем ($-<)-пути первоначально дал Дейкстра [10]. В общем случае этот метод основан на приписывании вершинам временных пометок, причем пометка вершины дает верхнюю границу длины пути от s к этой вершине. Эти пометки (их величины) постепенно уменьшаются с помощью некоторой итерационной процедуры, и на каждом шаге итерации точно одна из временных пометок становится постоянной. Последнее указывает на то, что пометка уже не является верхней границей, а дает точную длину кратчайшего пути от s к рассматриваемой вершине. Опишем этот метод подробно.
Алгоритм Дейкстры (сц ^ 0)
Пусть I (zf) — пометка вершины z^
12 н. Кристофидес
Присвоение начальных значений
Шаг 1. Положить I (s) = 0 и считать эту пометку постоянной. Положить I (х$) = оо для всех ^ ^s и считать эти пометки временными. Положить р = s.
Обновление пометок
Шаг 2. Для всех xt € Г (р), пометки которых временные, изменить пометки в соответствии со следующим выражением:
Цх^ч-тш^Цх^, 1(р) + с(р, ж,-)].(8.1)
Превращение пометки в постоянную
Шаг 3. Среди всех вершин с временными пометками найти такую, для которой Z(^*) = min [Z (^i)l.
Шаг 4. Считать пометку вершины х* постоянной и положить Р = xt
Шаг 5. (i) (Если надо найти лишь путь omsKt.) Если p = t, то I (р) является длиной кратчайшего пути.
Останов.
Если р Ф Z, перейти к шагу 2.
(Если требуется найти пути от s ко всем остальным вершинам.)
Если все вершины отмечены как постоянные, то эти пометки дают длины кратчайших путей. Останов.
Если, некоторые пометки являются временными, перейти к шагу 2.
Доказательство того, что вышеприведенный алгоритм действительно дает кратчайшие пути, чрезвычайно простое, дадим набросок этого доказательства.
Допустим, что на некотором этапе постоянные пометки дают длины кратчайших путей. Пусть 5Х — множество вершин с этими пометками, а 52 — множество вершин с временными пометками. В конце шага 2 каждой итерации временная пометка I (х^ дает кратчайший путь от s к хг, проходящий полностью по вершинам множества 5Х. (Так как при каждой итерации в множество 5j включается только одна вершина, то обновление пометки I (xt) требует только одного сравнения на шаге 2.)
Пусть кратчайший путь от s к х* не проходит целиком по St и содержит по крайней мере одну вершину из 52, и пусть ^ 6 ^2 — первая такая вершина в этом пути. Так как по предположению с^ неотрицательны, то часть пути от х3* к х* должна иметь неотрицательный вес А и Z (хД < Z (х*) — А < А(х*). Это, однако, противоречит утверждению, что Z (я*) — наименьшая временная пометка, и, следоватёльно, кратчайший путь к х* проходит полностью по вершинам множества 5Х, и поэтому Z (х*) является его длиной.
Так как вначале множество 6\ равно (з) и при каждой итерации к 5Х добавляется х, то предположение, что I (xj равно длине кратчайшего пути V xt 6 Sy, выполняется при каждой итерации. Отсюда по индукции следует, что алгоритм дает оптимальный ответ.
Если требуется найти кратчайшие пути между з и всеми другими вершинами полного связного графа с п вершинами, то в процессе работы алгоритма выполняются п (п — 1)/2 операций сложения и сравнения на шаге 2 и еще и (п — 1)/2 операций сравнения на шаге 3. Кроме того, при осуществлении шагов 2 и 3 необходимо определить, какие вершины являются временными, а для этого нужно еще я (п — 1)/2 операций сравнения. Эти величины являются верхними границами для числа операций, необходимых при отыскании кратчайшего пути между заданными вершинами s и L Они действительно достигаются, если окажется, что вершина t будет последней вершиной, получившей постоянную пометку. (В [22] Джонсон предложил так называемый метод сортировки,, позволяющий уменьшить число операций на шаге 3.)
Как только длины кратчайших путей от з будут найдены (они будут заключительными значениями пометок вершин), сами пути можно получить при помощи рекурсивной процедуры с использованием соотношения (8.2). Так как вершина х\ непосредственно предшествует вершине х^ в кратчайшем пути от з к х^ то для любой вершины Xt соответствующую вершину х\ можно найти как одну из оставшихся вершин, для которой
(^1) с (^i? ^i) = (^1)' (8-2)
Если кратчайший путь от з до любой вершины Xi является единственным, то дуги (х^ Xt) этого кратчайшего пути образуют ориентированное дерево (см. предыдущую главу) с корнем з. Если существует несколько «кратчайших» путей от з к какой- либо другой вершине, то при некоторой фиксированной вершине х\ соотношение (8.2) будет выполняться для более чем одной вершины х^. В этом случае выбор может быть либо произвольным (если нужен какой-то один кратчайший путь между з и х^, либо таким, что рассматриваются все дуги ^х^ tJ, входящие в какой- либо из кратчайших путей, и при этом совокупность всех таких дуг образует не ориентированное дерево, а общий граф, называемый базой относительно з или кратко — s-базой г).
Пример. Рассмотрим граф, изображенный на рис. 8.1, где каждое неориентированное ребро рассматривается как пара противоположно ориентированных дуг равного веса. Матрица
весов Сх приведена ниже. Требуется найти все кратчайшие пути от вершины хг ко всем остальным вершинам. Мы воспользуемся
Рис. 8.1. Граф из примера 2,1.2.
алгоритмом Дейкстры. Постоянные пометки будем снабжать анаком +, остальные пометки рассматриваются как временные.
*1
х2
*3
*4
Х5
*6
*7
*8
*9
*1
10
3
6
12
*2
10
18
2
13
хз
18
25
20
7
*4
25
5
16
4
С, = х5
5
10
х6
20
10
14
15
9
х7
2
4
14
24
х8
6
23
15
S
х9
12
13
9
24
5
Алгоритм работает так:
Шаг 1. I ta) = О*, Z (я,) = со Xfxt =^ хъ р =д?1е
Первая итерация
Шаг 2. Г (р) = Г (ят) = {^21 ^7» я8, ^в} — все пометки временные. Возьмем сначала х2. Из (8.1) получаем
Z (д;2) = min [со, 0+ + 10] = 10,
аналогично I (я7) = 3, I (х8) = 6, I (я9) = 12.
Шаг 3.Шаг 4.Шаг 3.Шаг 4.min (10, 3, х^ получаетmin (10, 3, х^ получает6, 12, оо) = 3 соответствует х^.
Шаг 3.
Шаг 4.
Шаг 3.
Шаг 4.
min (10, 3, х^ получает
min (10, 3, х^ получает
Xg Хд Xl,X4,Xg,Xg
постоянную пометку I (я7) = 3+ , р = хТ
Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2. Пометки в начале следующей итерации показаны на рис. 8.2 (а).
Вторая итерация
Шаг 2. Г (р) = Г (х^ = {я2, х^ хб1 я9} — все пометки временные. Из соотношения (8.1) имеем
I ^х^ = min [10,3+ + 2] = 5, аналогично Z (х4) = 7, Z ^х^) = 17, 1(хй) = 12. Пометки изображены на рис. 8.2 (б).
= 5 соответствует х2.= 5 соответствует х2.пометку Z(x2) = 5+ , p=xvпометку Z(x2) = 5+ , p=xvШаг 3. min [5, 7, 17, 6, 12, оо]
= 5 соответствует х2.
= 5 соответствует х2.
пометку Z(x2) = 5+ , p=xv
пометку Z(x2) = 5+ , p=xv
Х^ $4 Xf Xg Xg Xg,Xg
Шаг 4. х2 получает постоянную
Шаг 5. Перейти к шагу 2.
Третья итерация
Шаг 2. Г (р) = Г (х2) = {^i, x3l xln z9} — только вершины х8 и х2 имеют временные пометки; из соотношения (8.1) получаем
Z ^х3) = min [оо, 5+ +18] = 23
и аналогично
Z ^ = 12.
^8*^8*» р=х%» р=х%Шаг 3. min [23, 7, 17, 6, 12, оо] = 6 соответствует хе х4 х, хе хв х%
^8*
^8*
» р=х%
» р=х%
Шаг 4. х8 получает постоянную пометку Z(^8)=6 +
Шаг 5. Перейти к шагу 2.
Продолжая этот процесс, получим окончательную картину расстановки пометок, изображенную на рис. 8.2 (в). Для нахождения кратчайшего пути между вершиной х2 (например) и начальной вершиной х2 мы последовательно используем соотношение (8.2). Таким образом, полагая х^х21 находим вершину х2, непо-
Рис. 8.2. (а) Пометки в конце 1-й итерации, (б) Пометки в конце шага 2 на 2-й итерации, (в) Окончательные пометки вершин и хх-база.
средственно предшествующую х2 в кратчайшем пути от хх к х2‘. вершина х2 должна удовлетворять соотношению
I ^ + с (х2, х2) = I (х^ = 5.
Единственной такой вершиной является хх. Далее, применяем второй раз соотношение (8.2), беря xt =х^, получаем вершину х'^ непосредственно предшествующую хч в кратчайшем пути от хх к х2. Вершина х’^ удовлетворяет соотношению
l^-Vc(x4, х^Цх^З.
Единственной такой вершиной является хх, и поэтому кратчайший путь от хх к х2 есть (ж17 хч, х2). ^-база, дающая все кратчайшие пути от хх, представляет собой дерево, изображенное жирными линиями на рис. 8.2 (в).
. Случай общей матрицы весов
Только что описанный алгоритм Дейкстры применим лишь в том случае, когда сц > 0 для всех i и /. Однако если матрица С является матрицей стоимостей, то дуги, приносящие доход, должны иметь отрицательные «стоимости». В этом случае для нахождения кратчайших путей между вершиной $ и всеми другими вершинами можно воспользоваться описанной ниже процедурой. Этот метод также является итерационным и основан на пометках вершин, причем в конце к-й итерации пометки равны длинам тех кратчайших путей (от s ко всем остальным вершинам), которые содержат не более к + 1 дуг. В отличие от алгоритма Дейкстры никакая из пометок во время этого процесса не рассматривается как окончательная. Описываемый метод был первоначально предложен в середине 50-х годов Фордом [14], Муром [26] и Беллманом [2]. Перейдем к его описанию.
Алгоритм для общей матрицы весов
Пусть lh (а,) — пометка вершины хг в конце (/с + 1)-й итерации.
Присвоение начальных знаний
Шаг 7. Положим S = Г (s), к = 1, Z1 (s) = 0, Z1 (ж,) = с (s, xt^ для всех xt Е Г (s) и Z1 (хг) = оо для всех остальных xt.
Обновление пометок
Шаг 2. Для каждой вершины xt Е Г (s) (xt ^= s) изменить ее пометку следующим образом:;
Zft+1 (х^ = min [Zft (x^, min (Zh (x^ -[-с (хь хг)}],(8.3)
где Tt = Г-1 (х^ f] 8. (Множество 8 содержит теперь все вершины, для которых кратчайшие пути из s состоят из к дуг.)
Множество Tt содержит те вершины, для которых текущие кратчайшие пути из s состоят из к дуг (т. е. те, вершины которых лежат в 8) и для которых существуют дуги к вершине хь Отметим, что если хг Г (8), то кратчайший путь от s к ^ не может состоять из к 4- 1 дуг и поэтому изменять пометку вершины хг не нужно. Для вершин Xt $ Г ($) положим 1к*г (xi) = lk (х^.
Проверка на окончание
Шаг 3. (а) Если к ^ п — 1 и 1к*г (х^ = Z* (х^) для всех хь то получен оптимальный ответ и пометки равны длинам кратчайших путей. Останов.
Если к < п — 1 и ZA+1 (х^ Ф lk (хг) для некоторой вершины х^ то перейти к шагу 4.
Если к = п — 1 и ZA+1 (х^) N= ^ (х^ для некоторой вершины хь то в графе существует цикл отрицательного веса и задача не имеет решения. Останов.
Подготовка к следующей итерации
Шаг 4. Обновить множество следующим образом:
(8.4)
(Новое множество 5 содержит теперь все вершины, кратчайшие пути до которых из s имеют длину k + 1.)
Шаг 5. Положить к = к + 1 и перейти к шагу 2.
Как только получены длины кратчайших путей от $ к каждой другой вершине, то сами пути опять находятся просто, с помощью соотношения (8.2). Пути могут быть получены и другим способом, если в дополнение к пометке 1к (х^ для каждой вершины хранить во время вычислений другую пометку 0А (х^. Пометка 0А (х;) указывает вершину, непосредственно предшествующую вершине xt в кратчай шем пути от 5 к xt во время А-й итерации. Можно начать с 61 (xt) = sV Xi С Г (s) и для всех остальных вершин xt выбрать 01 (хг) произвольно (скажем, равной 0). Пометки 0* (х^ можно тогда изменять в соответствии с соотношением (8.3). Таким образом, 0А+1 (хг) = 0А (х^ если в квадратных скобках в выражении (8.3) будет наименьшим первый член, или 0A+1 (х^ = x3l если наименьшим является второй член. Если 0 (х^ — вектор, составленный из пометок 0 при завершении работы алгоритма, то кратчайший путь от s к Xt получается в обратном порядке, а именно s, . . ., 0® (х^, 02 (xf), 0 (хг), xit где 02 (х£) является сокращением для 0 (0 (хг)) и т. д.
Доказательство того, что приведенный алгоритм дает оптимальное решение, весьма простое. Здесь мы его не приводим. Одна-
ко заметим, что оно базируется на принципе динамического программирования и том факте, что если не существует никакого оптимального пути из к дуг, то не может также существовать и никакого оптимального пути, содержащего к + 1 дуг [4]. Описанный алгоритм можно применять и в случае неотрицательной матрицы весов, хотя это, вообще говоря, намного хуже, чем использование алгоритма Дейкстры. В случае полного связного графа с п вершинами этот алгоритм требует порядка п8 операций сложения и сравнения, в то время как в алгоритме Дейкстры требуется и2 операций. Некоторые улучшения описанного алгоритма, предложенные Йеном, позволяют уменьшить число операций в четыре раза, но порядок роста остается равным трем.
Пример. Рассмотрим граф, изображенный на рис. 8.3, где опять неориентированные ребра рассматриваются] как пары
Рис. 8.3. Граф из примера 2.2.2.
противоположно ориентированных дуг с равными весами. Веса указаны у соответствующих дуг и могут быть как положительными, так и отрицательными числами. Требуется найти кратчайшие пути от хх ко всем остальным вершинам, при условии, что граф не содержит циклов отрицательного веса, или найти такой цикл, если он существует.
Алгоритм работает следующим образом.
Присвоение начальных значений
Шаг 1. s = хи 8 = {я2, я5}, Z1 fo) = О, Z1 (ха) = —3, Z1 (х5) = = 2, Z1 (х^ = оо для всех других xt. Положить к = 1.
Первая итерация
Шаг 2. Г (5) = (хг, х3, х4, х5, х6). Поэтому для х3; Тг = = {xj, х5} Q {х2, х5} = {х5} и из соотношения (8.3) получаем
Z2 (х2) = min [ — 3, {Z1 (х5) + с (х5, х2)}] =
= min[—3, (2+12)] =
= -3;
для х3:Т3 = {х2, х^ хъ х8} f] {z2> ^5} = {^г}.
Z2 (х3) = min [оо, ( —3 — 5)] = —8;
для х^. Т4 = (х2, х3, х5, хъ х9) Q {х2, х5} = (х2, х5}, Z2 (х4) = min [ оо, min {(— 3 + 15), (2 — 7)}] = —5;
xj=» хГхь
для х5:Т5 = {xlt х2 х6} 0 (х2, х5} = {х2},
Z2 (х5) = min [2, (— 3 + 12)] = 2;
для х6:Т6 = (х4, х5, х7, Xg} Q (х2, х5) = (х5),
Z2 (xe) = min [оо, (2+ 20)] = 22.
ЖГХ5
Пометки Z2 (xj) таковы: [0, —3, —8, —5, 2, 22, оо, оо, оо] для xt = ^и 2+ • • •, ^э соответственно.
Шаг 3 (б). Перейти к шагу 4.
Шаг 4. 8 = {х3, х4, х6}.
Шаг 5. к = 2, перейти к шагу 2.
Вторая итерация
Шаг 2. Г (5) = (xlt х3, х4, х5, х6, х7, х8, х9};
для х3:Т3 = {х2, х4, х7, х8} П {х3, х4, х6} = {х4},
Z3 te) = min [ — 8, (— 5 + 8)] = —8;
для х4:Т4 = {х2, х3, х5, х7, х9) П (х3, х4, х6} = {х3},
Z3 (х4) = min [ — 5, (— 8 + 8)] = — 5;
Для
х5:
7’5 = {^п ^2, ^-elnt^a! ^41 -сб}—{^elf
Z3 (z5) = т™ [2, (22 + 20)1 = 2;
”ГХ8
Для
хв:
^ = {^4, "^Si -^l, ^э} Г) {^3> X^ Жд} = {2;4}, Z3 to) = min [22, (-5 + 18)1 = 13;
Для
Хч‘.
Тч = \х^ x8, ж8}П to’ ^4. ХвУ^Х^ Жд}, Z3to) = min[oo, min{( — 5 + 4), (22 + 9)}]= —
Для
х8:
Ге = to, ^т} n {^з, ж4, ^e}= {^3)1
Z3 to) = min [00, ( — 8 + 24)1 = 16;
+' + X3
Для
х8:
T% = ^x^s ^s} П {*^3» *^4i ^-el^t^}! /6 (д;д) = min [00, ( — 5 + 11)] = 6.
Пометки Z3 to) равны [0, —3, —8, —5, 2, 13, —1, 16, 6] для xt = хг, х2, . . ., х8 соответственно.
Шаг 3 (6). Перейти к шагу 4.
Шаг 4. S = to’ х7, х8, а?д}.
Шаг 5. к = 3, перейти к шагу 2.
И т. д.
Продолжая этот процесс, получаем результаты, приведенные ниже в краткой форме.
Третья итерация
Шаг 2. Г (5) = ton х^, х51 х6, хъ х8, z9},
Тз = {2:7, х8}, Z4 (а?з) =11,
Т^ = {^7, ^э}, Z4 (^i) =6,
т5 = W, Z4 to) = 2,
Т8 = {^7, Xg}, Z4 (^g) =7,
Тч = {^g, Zg}, Z4 (#7) =1,
т8 = {z7}, Z4 to) = 15, Т, = W, Z4 to) = 6.
Вектор пометок Z4 (х^ равен [0, —3, —11, —5, 2, —7, —1 15, 6.]
Шаг 4. S = {zg, х^ а:8).
Четвертая итерация
Шаг. 2. Г (5) = ^х3, х^, хь, хч, х8, а:д},
Та = {х8}, Z= (х3) = -11, Т, = М Is (х^ = -5, Т5 = {хв}, Z6 (х^ = 2, Л = {^6, ^e}, Is (х^ = —1, т» = кх^, Is М = 13, Тй = {^eL Z6 М = 6.
Вектор пометок 1Ь (xt) равен [0, —3, —11, —5, 2, —7, —1 13, 6].
Шаг 4. S = {.г8}.
Пятая итерация
Шаг 2. Г (5) = ^хэ, хъ z8},
Ta = foj, Iе (х3) = -И,
7*7 = {х8}, Iе (x-i) = 1,
Уд = {Хд}, Z6 (Хд) = 6.
Шаг 3 (а). Останов.
Вектор пометок Z6 (х^ совпадает с Z6 (хг), и, следовательно, эти пометки равны длинам кратчайших путей. Сами пути строятся
Рис. 8.4. Окончательные пометки вершин и а^-база.
последовательно, как и в том случае, когда использовалось соотношение (8.2). Соответствующая ^-база показана жирными линиями на рис. 8.4.
Кратчайшие пути между всеми парами вершин
Пусть требуется найти кратчайшие пути между всеми парами вершин графа. Очевидный способ получить ответ на этот вопрос заключается в n-кратном применении алгоритма предыдущего раздела, причем каждый раз в качестве начальной вершины s берутся различные вершины. В случае полного графа с неотрицательной матрицей весов С время, необходимое для вычислений, пропорционально п3, а для произвольной матрицы весов оно про порциона льно п4. Поэтому если задача о кратчайшем пути имеет большую размерность, то ее невозможно решить с помощью последовательного применения алгоритма из разд. 2.2.
В настоящем разделе мы опишем совершенно иной подход к задаче нахождения кратчайших путей между всеми парами вершин. Этот метод применим как к неотрицательным, так и к произвольным матрицам весов и время- необходимое для вычислений, пропорционально п3. Если этот метод применить к графам с неотрицательной матрицей весов, то он сэкономит почти 50% времени [11] по сравнению с n-кратным применением алгоритма Дейкстры Метод был предложен первоначально Флойдом [13] и развит Мерчлэндом [27]. Он базируется на использовании последовательности из п преобразований (итераций) начальной матрицы весов С При этом на А-й итерации матрица представляет длины кратчайших путей между каждой парой вершин с тем ограничением, что путь между xt и xj (для любых xt и хД содержит в качестве промежуточных только вершины из множества {хц, х4, . . ., xft}.
Алгоритм Флойда (для произвольной матрицы весов)
Предположим, что в начальной матрице весов ctl = 0 для всех i = 1, 2, . . ., п и ctj = оо, если в графе отсутствует дуга (xt, xf).
Присвоение начальных значений
Шаг 1. Положить к = 0.
Итерация
Шаг 2. к = к -|- 1.
Шаг 3. Для всех i =/= к, таких, что с^ =# оо, и для всех / ^ к, таких, что ckj #= оо, введем операцию
co = min[co, (си + см)Ь(8-5)
Проверка на окончание
Шаг 4. (а) Если си -<0, то в графе G существует цикл отрицательного веса, содержащий вершину х,, и решения нет. Останов.
Если все Сц ^ 0 и к = п, то получено решение. Матрица kZ;] дает длины всех кратчайших путей. Останов.
Если все си ^ 0, но к <L.ns то вернуться к шагу 2.
Доказательство оптимальности ответа, полученного с помощью этого алгоритма, чрезвычайно простое [21], [27], и мы предоставляем его читателю. Основная операция алгоритма, определяемая соотношением (8.5), называется трехместной операцией. Она имеет разнообразные применения в задачах той же природы, что и задача о кратчайшем пути. Такие задачи обсуждаются в последующих разделах.
Сами кратчайшие пути можно найти по их длинам с помощью рекурсивной процедуры, подобной той, которая выше определялась соотношением (8.2). С другой стороны, можно использовать технику, предложенную Ху [21], для записи информации о самих путях (наряду с информацией о длинах путей). Этот последний метод аналогичен использованному в разд. 2.2.1 и особенно полезен в тех случаях, когда требуется найти в графе цикл отрицательного веса (если такой существует). В этом методе в дополнение к матрице весов С хранится и обновляется вторая (га X га)-матрица в = [6fjl- Элемент 6^- указывает вершину, непосредственно предшествующую вершине Х5 в кратчайшем пути от х^ к Xj. Матрице в присваиваются начальные значения 0fJ- = хг для всех xt и х3.
В соответствии с (8.5) на шаге 3 алгоритма обновление матрицы происходит так:
{
0fttJ-, если (cift + cfcj-)<cZj- в квадратных скобках в выражении (8.5), не изменяется, если с^^^^ + с^^.
В конце алгоритма кратчайшие пути получаются непосредственно из заключительной матрицы в. Таким образом, кратчайший путь между двумя вершинами xt и Xj дается следующей последовательностью вершин:
*^h ^v, • •^1 ^pi *^ai £jt
ГДе Xq, = ^iji ^р == ®iai ^у ®ip ® Т» Д' ДО ^г
Здесь следует отметить, что если всем cti придать начальные значения оо (а не 0), то конечное значение величины сИ будет равно весу цепи, проходящей через вершину хг. Легко также видеть, что, исходя из структуры матрицы в, полученной в процессе той итерации, когда элемент сИ становится отрицательным, легко найти цикл отрицательного веса, соответствующий этому элементу.
Это обстоятельство используется в гл. 11 при реализации основного шага в алгоритме* поиска в графе потока минимальной стоимости. Оно оказывается также полезным и во многих других приложениях (об этом говорится в следующем разделе).
Обнаружение циклов отрицательного веса
Задача выявления циклов отрицательного веса в произвольном графе важна как сама по себе, так и в качестве основного шага в более сложных алгоритмах (см. разд. 4.1 ниже и гл. 11). В настоящем разделе эта задача обсуждается несколько более подробно, чем в предыдущем.
В разд. 3.1 отмечалось, что алгоритм Флойда нахождения кратчайших путей между всеми парами вершин может быть использован и для обнаружения в графе циклов отрицательного веса. Кроме того, в тех случаях, когда в графе имеется вершина st из которой достижимы все остальные вершины этого графа, для нахождения циклов отрицательного веса можно также использовать алгоритм из разд. 2.2.1 (как это указывается на шаге 3(b)). Если не все вершины графа G достижимы из $ (например, когда G является неориентированным графом, составленным не менее чем из двух связных компонент), то алгоритм разд. 2.2.1 завершит работу (как и должно быть) при следующем распределении пометок: у вершин из компоненты, содержащей $, пометки конечные, а пометки вершин в других компонентах равны оо. В этом случае циклы отрицательного веса, лежащие в других компонентах, не будут обнаружены. Тем не менее во многих важных приложениях алгоритма обнаружения цикла отрицательного веса (см., например, гл. И, разд. 5) всегда имеется в распоряжении вершина s, из которой достижимы все остальные вершины. В таких случаях алгоритм из разд. 2.2.1 при поиске циклов отрицательного веса предпочтительней с вычислительной точки зрения, чем алгоритм Флойда.
Правила остановки алгоритма из разд. 2.2.1 даются в форме, позволяющей минимизировать объем вычислений при поиске кратчайших путей из вершины s, если только в графе G отсутствуют циклы отрицательного веса. Эти правила могут быть видоизменены так, чтобы циклы отрицательного веса обнаруживались по возможности быстрее.
После каждого изменения пометки вершины Xt и нахождения подходящей вершины хрп удовлетворяющей соотношению (8.3), можно проверить, действительно ли xt принадлежит текущему кратчайшему пути от $ к хр (этот путь можно найти, используя текущие пометки 6). Если это так, то вершина хр была помечена через Xi и из неравенства 1к (хр) + с (хр, х^ <Зк (х^ следует, что часть текущего кратчайшего пути от хг к хр вместе с дугой ^хр, Х[) должна образовывать цикл отрицательного веса и работа алгоритма может закончиться. Если же пометка вершины xt либо не изменяется (в соответствии с (8.3)), либо изменяется, но xt не будет принадлежать текущему кратчайшему пути от $ к хр^.
а пути
то работа алгоритма может продолжаться до шага 3(a). Следует заметить, что описанная модификация делает излишним шаг 3(в) алгоритма из разд. 2.2.1, так как теперь цикл отрицательного веса обнаруживается сразу же после его появления, а не в конце всей процедуры.
<4.L Оптимальные циклы в графах с двойными весами [24.9]
Во многих ситуациях возникает следующая задача. Дан граф, дугам которого приписаны два числа — вес и некоторое другое число Ъц. Нужно найти такой цикл Ф, для которого целевая функция
2 сч
(Xj. Ху)6Ф
(х4. хр£Ф
минимальна (или максимальна).
Рассмотрим, например, обслуживание судном или самолетом некоторой сети маршрутов и предположим, что Сц — «выгода», а Ьц — «время», необходимое для прохождения по дуге (хь х^» Задача нахождения замкнутого обслуживаемого маршрута максимизирующего выгоду, относится к задачам описываемого типа. Более реалистичные задачи, учитывающие емкость транспортных средств и т. д., рассмотрены в работе [9].
Другими задачами, которые можно сформулировать как задачи нахождения оптимальных циклов в графах с двойными весами, являются задачи планирования параллельных вычислений [31] и управления технологическими процессами [6].
Задачу нахождения в графе с двойными весами цикла Ф, для которого отношение z* (Ф) минимально, можно решить, используя алгоритм обнаружения в графе цикла отрицательного веса. Это делается так. Допустим, что веса Сц и Ь^ — произвольные действительные числа (положительные, отрицательные или нуль) с единственным ограничением, что для всех циклов Ф из G
2 Ьц > 0. (В большинстве практических ситуаций, напри- <х4, х^)£Ф
мер, упомянутых выше, сг$ ^ 0, но Ь^ ^ 0 для всех г и у.)
Возьмем некоторое пробное значение z* целевой функции z (Ф) и рассмотрим граф G с модифицированными весами
Cii = ctj — £bM.
Попытка найти в G цикл отрицательного веса с матрицей [с?,] может привести к следующим трем возможностям.
Существует цикл Ф отрицательного веса, для которого
(ос., хрЕФ
Б. Не существует никакого цикла с отрицательным весом и2для всех циклов Ф.
(хр хреФ
Существует цикл с нулевым (но не отрицательным) весом, т. е.
2 Cij —0 для некоторого цикла Ф°. (Хр хрЕФ<>
В случае A z* (минимальное значение z) меньше чем zA, так как неравенство
2с-3 =2 си—? 2 ьи<о
(хр xpeo(хр хрЕФ(хр хрЕФ"
может выполняться только при
(Хр хрЕФ"
(Хр хрЕФ
а это, очевидно, означает, что г* должно быть меньше чем ^к.
Аналогично в случае Б z* > z\ а в случае В z* = zk. Все сказанное приводит к следующей процедуре поиска. Начнем с некоторого значения z1. Если это значение слишком велико (т. е. Имеет место случай А); возьмем z2 < гг; если же оно слишком мало (т. е. имеет место случай Б), возьмем z2 > z1. Как только будут найдены верхняя и нижняя границы (соответственно zu и zj для z*, берем zh = (zu + zz)/2 и заменяем в случае А гц на z\ а в случае Б — zz на ^к. Так как число итераций пропорционально числу значащих разрядов требуемой точности, т. е. пропорционально log 1/т], где т] —величина погрешности, и так как каждая итерация (нахождение отрицательного цикла или вычисление полной матрицы расстояний) требует порядка п3 операций, то решение сформулированной выше задачи с двойными весами требует О In3 log 1/г|] операций.
Нахождейие ^кратчайших путеймежду двумя заданными вершинами
В разд. 2 были даны методы нахождения в произвольном графе кратчайшего пути от 5 к t Но во многих практических приложениях требуется еще, чтобы кратчайший путь обладал некоторыми 13 Н. Кристофидес
дополнительными свойствами. Эту задачу можно, конечно, рассматривать как задачу кратчайшего пути с некоторыми дополнительными ограничениями [4] или как многоцелевую задачу, в которой учитываются не только длина пути, но и другие его* свойства. Но эти усложнения будут, вообще говоря, сильно увеличивать вычислительную работу, и с практической точки зрения более просто найти К кратчайших путей от s к i и выбрать среди них тот, который обладает нужными свойствами. Хотя такой метод и не эквивалентен прямому рассмотрению дополнительных свойств пути (пример этого будет дан в разд. 7 настоящей главы), но он применим даже в тех случаях, когда эти свойства сформулированы не строго или когда они по своей природе субъективны. В этом методе предполагается, что К кратчайших путей между s и t могут быть найдены достаточно эффективно. Именно это будет предметом изучения настоящей главы.
Мы будем здесь предполагать, что рассматриваются только простые цепи. И хотя кратчайший путь необходимо должен быть простой цепью (при условии, что граф не содержит циклов отрицательного веса), но второй, третий и т. д. кратчайшие пути не обязаны быть такими даже в случае, когда все с^ положительны. Задача нахождения К кратчайших путей без требования, что они: являются простыми цепями, намного проще, и для ее решения: Хоффман и Пэвли [20], Сакарович [32], Беллман и Калаба [ЗУ предложили итерационные методы, аналогичные описанным выше. Однако модифицирование этих методов с целью получения простых цепей осуществить не совсем легко, а так как почти во всех, практических приложениях алгоритма нахождения К кратчайших путей требуются именно простые цепи, то мы опишем метод, предложенный Иеном [35] и позволяющий находить К кратчайших простых цепей.
Пусть Рк = s, ^ х^ . . ., Xqk; t — fc-й кратчайший путь от ^ к t^ где х*^ х^, . . ., Xqk — соответственно 2-я, 3-я, . . ., дк-я вершины fc-го кратчайшего пути. Пусть Рк — «отклонение от пути Рк-г в точке i». Под этим понимается следующее: Рк — кратчайший из путей, совпадающих с Рк-1 от s до i-й вершины, а затем- идущий к вершине, отличной от (i + 1)-х вершин тех (ранее уже- построенных) кратчайших путей Р3 У = 1, 2, . . ., к — 1), которые имеют те же самые начальные подпути от s к i-й вершине, что- и рк-\ р^ приходит в вершину I по кратчайшему подпути, не проходящему ни через одну из вершин s, х^-1, х*-1, . . ., х?"1, участвующих в формировании первой части пути Рк. Отсюда следует, что путь Рк необходимо должен быть простой цепью.
Первый подпуть s, х^, ^, . . ., хк (совпадающий с s, xj“\ х^-1, . . ., Xi"1) пути Рк называется его корнем и обозна-
чается R^ а второй подпуть хк^ . . ., 1 пути Рк называется ответвлением и обозначается через 5?.
Алгоритм начинает работу с нахождения Р1 с помощью алгоритма кратчайшего пути от $ к f, описанного в разд. 2. Этот путь помещается в список Lo (который должен содержать к-е кратчайшие пути). В общем случае для нахождения Рк нужно уже иметь кратчайшие пути Р\ Р2, . . ., Рк-г. Ниже приводится описание алгоритма.
5.L Описание алгоритма
Присвоение начальных значений
Шаг 1. Найти Р1. Положить к = 2. Если существует только один кратчайший путь Р\ включить его в список Lo и перейти к шагу 2. Если таких путей несколько, но меньше, чем К, включить один из них в список Lcs а остальные в список Lv Перейти к шагу 2. Если существует К или более кратчайших путей р1, то задача решена. Останов.
Нахождение всех отклонений
Шаг 2. Найти все отклонения Рк (к — 1)-го кратчайшего пути Рк-1 для всех i = 1, 2, . . ., qk-n выполняя для каждого i шаги с 3-го по 6-й.
Шаг 3. Проверить, совпадает ли подпуть, образованный первыми i вершинами пути Р*'1, с подпутем, образованным первыми г вершинами любого из путей Р3 (j = 1, 2, . . ., к — 1). Если да» положить с (хк~\ Xj-ц) = оо; в противном случае ничего не изменять. (При выполнении алгоритма вершина хг обозначается s). Перейти к шагу 4.
Шаг 4. Используя алгоритм кратчайшего пути, найти кратчай* шие пути 8к от хк”х к I, исключая из рассмотрения вершины st ^?-1, ^з~\ • - ч ^i !- Если существует несколько кратчайших путей, взять в качестве 8к один из них.
Шаг 5. Построить Рк, соединеняя Rk (= s, х -1, х -1, . . . . . ., х с 8 и поместить Р в список Lv
Шаг 6. Заменить элементы матрицы весов, измененные на шаге их первоначальными значениями и возвратиться к шагу 3.
Ныбор кратчайших отклонений
Шаг 7. Найти кратчайший путь в списке Lv Обозначить этот путь Рк и переместить его из Ьг в Ьй. Если к = К, то алгоритм 13*
заканчивает работу и Lo дает требуемый список К кратчайших путей. Если к <К, положить к = к + 1 и вернуться к шагу 2.
Если в Lx имеется более чем один кратчайший путь (скажем, h путей), то поместить в Lo любой из них и продолжать, как и выше, до тех пор, пока увеличенное на h число путей, уже находящихся В Lv не совпадат с К или не превысит его. Тогда алгоритм завершает работу.
Обоснование вышеприведенного алгоритма основано на очевидном факте [11], [20]: путь Рк должен быть отклонением на i-м этапе (при некотором г ^ 1) от одного из более коротких путей Р\ Р2, . . ., Рк-1. Поэтому необходимо просто построить все кратчайшие отклонения от каждого из Р3 и просмотреть их для нахождения самого короткого отклонения. Это и будет путь Р\ Следует заметить, что при к-й итерации все кратчайшие отклонения для Р3, 7 = 1, 2, . . ., к — 2, уже включены в Lx и нужно найти только одно отклонение от Рк~ и пополнить им имеющийся список.
На шаге 3 мы полагаем с (я?-1, 2^+1) = 00 для тех Р\ начальные подпути которых, содержащие I вершин, совпадают с начальным t-вершинным подпутем пути Рк*х. Это делается для того, чтобы не получить снова Р3 в качестве отклонения (в точке Z) от пути Рк~\ что вполне могло случиться, если бы мы действовали иначе, так как при / <fc — 1 вес пути Р3 не больше веса пути Рк-Х.
Хотя на шаге 5 алгоритма каждый порожденный путь Рк и помещается в список LXl совершенно очевидно, что на к-й итерации этот список не должен содержать более К —к А- 1 кратчайших отклонений Рк. С вычислительной точки зрения наиболее сложным является шаг 4, где требуется О (п2) или О (го3) операций в зависимости от того, будут ли все ci3 ^ 0 или ci5 ^ 0. Так как этот шаг при к-й итерации выполняется q^ раз и так как qk ^ го, а число итераций равно К, то рассматриваемый алгоритм при нахождении кратчайших путей требует порядка Кп3 или Кп4 операций. Первая величина относится к графам с неотрицательными матрицами весов, а вторая — к графам с произвольными матрицами х).
Кратчайший путь между двумя заданнымивершинами в ориентированном ациклическом графе
Методы, развитые в предыдущих разделах этой главы, приме нимы к совершенно произвольным графам. Но на практике задачу кратчайшего пути часто требуется решать для класса ориентированных ациклических графов. Такие графы возникают в методах ПЕРТ и МКП г).
Допустим, что нужно реализовать некий большой проект, и этот проект состоит из большого числа этапов. Мы можем изобразить каждый этап вершиной некоторого графа и построить дугу от вершины 21 к вершине ^-, чтобы показать, что этап г должен предшествовать этапу /. Каждой дуге приписывается некоторый вес Сц, равный минимальной задержке во времени между началом этапа г и началом этапа /. Пусть, например, проект представляет собой процесс строительства здания. Этап г может состоять в строительстве стен, этап / — вставка окон, этап к — прокладка проводов в стенах и т. д. Очевидно, что в этом случае нужно провести дуги от х^ к Xj и от Xi к хк. Но минимальный срок между началом строительства стен и вставкой окон может быть отличным от срока между строительством стен и прокладкой проводов. Если, например, оконные рамы деревянные и стены должны сначала высохнуть, а для прокладки проводов это не важно, то Сц > с^.
Совершенно очевидно, что рассматриваемый граф будет ориентированным и ациклическим. Действительно, предположение о существовании некоторого цикла, содержащего вершину хь приводит к (нелепому для нашей задачи) выводу о возможности повторения этапа г.
В задаче требуется найти минимальное время, необходимое для реализации проекта. Иными словами, нужно найти в графе самый длинный путь между вершиной з, изображающей начало, и вершиной t, изображающей завершение всех необходимых для реализации проекта работ. Самый длинный путь называется критическим путем, так как этапы, относящиеся к этому пути, определяют полное время реализации проекта и всякая задержка с началом выполнения любого из этих этапов приведет к задержке выполнения проекта в целом.
Сходство этой задачи с задачей о кратчайшем пути между з и Z совершенно очевидно и ее можно решить, используя алгоритм
из разд. 2.1.1 (так как все сц ^ 0), заменив все операции min на шах. Но этот алгоритм был бы слишком неэкономичным, так как он не учитывает специальной структуры графа. Можно применить другой алгоритм нахождения самого длинного пути. Этот новый алгоритм описывается ниже именно в терминах самого длинного пути, так как обычно требуется найти как раз такой путь. Задача о кратчайшем пути в ориентированном ациклическом графе также может быть решена с помощью приводимого алгоритма, нужно лишь все операции max заменить на min.
.L Алгоритм нахождения самого длинного (критического)пути в ориентированном ациклическом графе
Пусть вершины пронумерованы так, что дуга (хь Xj) всегда ориентирована от вершины х£ к вершине Xj, имеюшей больший номер. Для ациклического графа такая нумерация всегда возможна и производится очень легко. При этом начальная вершина получает номер 1, а конечная — номер п.
Присвоим вершине xj пометку Z (х,-),— равную длине самого длинного пути от 1 до Xj, используя для этого соотношения
Цх^= max [Z^^ + c^; (8.7) ос^Г-(хр
затем присвоим пометку вершине (xj + 1), применив снова формулу (8.7), и так далее до тех пор, пока последняя вершина п не получит пометку I (п). В соотношении (8.7) I (1) полагается равным нулю. Если вершина х3 помечена, то пометки I ^х^ известны для всех вершин х£ 6 Г-1 (xj), так как в соответствии со способом нумерации это означает, что х£ -<Xj и, следовательно, вершины Ж/ уже помечены в процессе применения алгоритма.
Пометка I (и) равна длине самого длинного пути от 1 до п. Сами дуги, образующие путь, могут быть найдены обычным способом последовательного возвращения. А именно дуга (xit Xj) принадлежит пути тогда и только тогда, когда Z (xj) = Z (х£) + + Сц. Начиная с вершины х3 равной п, полагаем на каждом шаге х5 равной такой вершине х£ (скажем, х*), для которой выполняется это последнее равенство, и так продолжаем до тех пор, пока не будет достигнута начальная вершина (т. е. пока не будет х* = 1).
Совершенно очевидно, что пометка Z (х3) вершины Xj дает длиннейший путь от 1 до Xj, т. е. самое раннее возможное начало выполнения этапа, изображаемого вершиной Xj. Таким образом, если (х^ Xj) — дуга в графе, то Z (х5) — Z (xj — ci5 (неотрицательная величина, как это видно из (8.7)) дает самое большое возможное время задержки начала этапа Z, не оказывающее влияния на время начала этапа /. Из вышесказанного видно, что если I
Рис. 8.5. (а) Граф из примера 6.1.1. (б) Окончательные пометки вершин и критический путь.
.-и / — два последовательные этапа в самом длинном пути, то Z (ху) Z (ж/) с и = 0.
6.1.1. Пример. Рассмотрим диаграмму ПЕРТ, изображенную на рис. 8.5 (а), где числа, стоящие у дуг, указывают продолжитель- -ность задержек в днях. Каков наименьший возможный срок с^ выполнения этого проекта? (Предполагается, что вершина 13 является конечной и ей соответствует нулевая продолжительность.) Вершины графа уже пронумерованы так, что дуга (xf, Яу) •существует лишь при Xj > хг. Применение выражения (8.7) ж графу, изображенному на рис. 8.5 (а), приводит к расстановке
пометок, показанной на рис. 8.5 (б); критический путь изображен жирной линией. Длина этого пути и, следовательно, наименьший возможный срок выполнения проекта равен 93 дням.
Если один из этапов, принадлежащих критическому пути, задерживается на D дней, то и весь проект задержится на тот же срок. С другой стороны, задержка, скажем, этапа 8 (не принадлежащего критическому пути) возможна на 79—19—21 = 39 дней, причем это не отразится на общем сроке реализации проекта. Лишь задержка на срок D > 39 дней повлияет на пометку вершины 12 (принадлежащую критическому пути).
Метод ПЕРТ описан в этой главе в терминах самого длинного пути в графе, вершины которого отвечают этапам выполнения проекта, а дуги — отношениям предшествования, причем вес Сц дуги ^хн Xj) равен интервалу времени между началом этапа t и /. На практике диаграммы ПЕРТ истолковываются несколько- иначе, а именно дуги представляют этапы, а вершины изображают абстрактные «события», указывающие начала или окончания этапов. Хотя такое представление само по себе является неполным (так как при этом отношения предшествования точно не описываются), указанный недостаток можно устранить, добавляя фиктивные этапы для точного описания отношений предшествования [34]. С другой стороны, такое представление имеет важное преимущество перед первоначальным, поскольку приводит на практике к более простым диаграммам. Это происходит в силу Того, что временная задержка с13 между началами этапов i и / является, вообще говоря, постоянной для данного г и совершенно не зависит от следующего этапа. Редкие исключения всегда можно учесть, вводя некоторые фиктивные этапы. В таких случаях подобное представление приводит на практике к более простым графам (даже с учетом фиктивных вершин), в то время как представление, рассмотренное ранее, остается неизменным. Другой особенностью практического использования метода ПЕРТ является то, что интервалы времени (т. е. временные задержки) между этапами считаются случайными величинами, а не детерминированными, как считалось здесь.
Задачи планирования, решаемые с помощью метода ПЕРТ, не учитывают наличие ресурсов и не рассматривают потребности этапов в ресурсах. Вместо этого производится (после нахождения критического пути^ такое распределение ресурсов по этапам проекта, при котором задерживается выполнение этапов, не принадлежащих критическому пути. Если же ограничения на ресурсы учитывать на стадии планирования, то задача из очень легкой превращается в очень трудную [1, 30, 37] и решить ее удается лишь для размерностей на 3—4 порядка меньших, чем в случае соответствующей задачи без ограничений.
. Задачи, близкие к задаче о кратчайшем пути
В алгоритме Флойда нахождения кратчайшего пути между всеми парами вершин (см. разд. 3 настоящей главы) была использована трехместная операция (8.5). Применение этой операции п раз к матрице весов [cZJ-] дает «заключительную» матрицу, элементы которой равны длинам кратчайших путей. Эта операция является частным случаем более общей трехместной операции
2и = ОРТ \zlh Zik ® 2М], (8.8} где z — функция пути, подлежащая оптимизации, а 0 — некоторая общая операция. Операция 0 налагает единственное ограничение в случае ее применения к различным задачам нахождения кратчайших путей в графах. А именно если путь от xt к х3 проходит через промежуточную вершину хк и z — некоторая характеристика пути, на которой базируется оптимизация, то для 0 должно выполняться условие
Zij = zik 0 zkj. (8.9) Ниже приводится несколько примеров использования этой операции.
7.L Наиболее надежный путь
В задаче о кратчайшем пути в качестве «длины» пути бралась сумма весов дуг, образующих этот путь. Рассмотрим теперь случай, когда «вес» дуги представляет ее надежность. Надежность пути от 5 к /, составленного из дуг, взятых из множества Р, дается формулой
р(^) = П Ри» (8.10)-
где pfJ- — надежность дуги (xt, х/), т. е. вероятность ее существования в графе (или — в случае физических систем — вероятность того, что она находится в работоспособном состоянии).
Задачу нахождения наиболее надежного пути от s к ( можно свести к задаче о кратчайшем пути от s к /, взяв в качестве «веса»- си дуги (яь х^ величину си = — log ро*. Прологарифмировав обе- части соотношения (8.10), получим
iogp(P) = 5 i«gpu= — 2 ctj.
(Хр Х^ЕР (Хр х^ЕР
Отсюда видно, что кратчайший путь от $ к < с матрицей весов [с^У будет в то же время и наиболее надежным путем с матрицей: [роК а надежность этого пути равна антилогарифму его длины-
При другой формулировке задачи о наиболее надежном пути возможно непосредственное использование трехместной операции; .а именно операция вводится с помощью соотношения
Ptj = max [р^, Pih*Pftj]*
В качестве начальной [р;Д-матрицы берется матрица надежностей .дуг, причем нулевые элементы указывают на отсутствие соответ- •ствующих дуг. Такая формулировка позволяет, очевидно, найти .наиболее надежные пути между всеми парами вершин.
Путь с наибольшей пропускной способностью
В этой задаче каждая дуга (жь Xj) графа имеет пропускную способность q^ и требуется найти путь от s к < с наибольшей пропускной способностью. Пропускная способность пути Р определяется, -конечно, дугой из Р с наименьшей пропускной способностью, т. е.
№ = min Vh^.(8.11)
(Хр хр^Р
Теорема 1 1). Пропускная способность пути с наибольшей про^ тускней способностью от s к t равна
min{ max [^Д),К (ХрХр^К
.где К —любой (8-1)-разрез (в множестве дуг).
Доказательство. Пусть ^ — пропускная способность шути с наибольшей пропускной способностью. Так как каждый путь от s к t должен содержать по крайней мере одну дугу из каждого ($-£)-разреза, то для каждого разреза К будет выполняться неравенство
max [?о-]^<2.(8.12)
(хр хр^К'
Поскольку в каждом ($-£)-пути должна присутствовать по крайней мере одна дуга с пропускной способностью, не превосходящей ф, и поскольку, взяв по одной такой дуге из каждого ($-£)-пути, мы получаем некоторый ($-£)-разрез (по определению), то существует хотя бы один разрез, скажем К\ для которого
max [^Д^О-(8.13)
(Хр хр^К*
Таким образом, разрез К^ доставляющий минимум выражению min{ max [^м-]},(8.14)
К (хр хр№
т) Обратите внимание на сходство теоремы 1 с теоремой о максимальном тотоке и минимальном разрезе из гл. 2; на самом деле теорема 1 является минимаксным вариантом последней.
должен одновременно удовлетворять неравенствам (8.12) и (8.13), т. е. для него должно выполняться равенство. Отсюда следует справедливость теоремы.
Очевидный алгоритм нахождения пути с наибольшей пропускной способностью, основанный на теореме 1, состоит в следующем.
Шаг 1. Начать с ($-£)-разреза К = ({$}, X — {s}) и найти наибольшую пропускную способность Q дуг из К.
Шаг 2. Построить остовный подграф G* = (X", Л'), где А* = = {(жь х^ | qu>QY
Шаг 3. Найти множество Rf (s) вершин, достижимых из s в гра- *фе А*. (Построение множества R* (s) описано в гл. 2.)
Шаг 4. Если t £ R' (s), то Q = Q и любой (s -<)-путь в остовном -подграфе G* будет иметь наибольшую пропускную способность, травную Q. Если t ^ Rf (s), перейти к шагу 5.
Шаг 5. Взять в качестве К разрез (Д'(s), X — R' (s)) и найти наибольшую пропускную способность Q дуг в этом новом разрезе. •(Текущее значение величины Q меньше, чем предыдущее, в силу определения множества R’ (s) на шаге 3 и множества дуг А* на шаге 2.) Возвратиться к шагу 2.
Для неориентированных графов G Франк и Фриш [16] предложили еще более простую процедуру нахождения пути с наибольшей пропускной способностью, состоящую в следующем.
Пусть Ki — некоторый ($-/)-разрез, a Q — наибольшая пропускная способность ребер из Ку. Если теперь «закоротить» любое ■ребро (х^ х^ с пропускной способностью q^ ^ Q, т. е. вершины xt и X) заменить одной вершиной х, положив
г (х) = Г (хг) и Г (х^ Г-1 (х) = Г-1 (xj и Г-1 (х,).
1и ребро (х^ xj) удалить, то получившийся граф Gx будет иметь тот же самый путь с наибольшей пропускной способностью, что и первоначальный граф G. Справедливость этого утверждения вытекает из того факта, что Q является верхней границей для Q (в соответствии с (8.12)), и, следовательно, ребра с q^ ^ Q не могут повлиять ла оптимальное решение, т. е. не могут войти в разрез К. Поскольку «закорачивание» ребра (х^ Xj) может повлиять только на разрезы, содержащие (хь х^ (эти разрезы удаляются), то разрез К трафа G (или все разрезы, доставляющие минимум выражению ^8.14), если их несколько) будет также и разрезом преобразован- тного графа GL.
Процедуру, примененную к первоначальному графу G, можно повторить и для графа Gi, выбирая другой ($-£)-разрез К^ зако-
рачивая все ребра из G1T пропускная способность которых не меньше наибольшей пропускной способности любого ребра из К^. Это дает граф G2 и т. д. Процесс закончится, когда будут закорочены $ и I. Теперь каждый ($-£)-путь в графе G, образованный вершинами из G и теми ребрами, которые оказались закороченными, будет иметь максимально возможную пропускную способность Q. Ограничение на применимость данного алгоритма только к неориентированным графам вызвано именно процессом «закорачивания»,, так как при этом неявно предполагается, что путь с пропускной способностью, не меньшей, чем Q, существует между любыми вершинами (двумя или большим числом), заменяемыми в описанном процессе единственной вершиной, но такое предположение может не выполняться, если закорачиваемые ребра имеют ориентацию.
Рис. 8.6а. Граф из примера 7.2.1.
Рис. 8.66. Граф после первого стягивания.
Рис. 8.6 т. Граф G и путь с наибольшей пропускной способностью.
7.2.1. Пример. Задача состоит в нахождении (s-^-путй (s) наибольшей пропускной способности в неориентированном графе, изображенном наг рис. 8.6а, где пропускные способности ребер указаны числами, стоящими у этих ребер.
Выбрав произвольно ($-£)-разрез К^ показанный на рис. 8.6а пунктиром, найдем, что ребром с максимальной пропускной способностью в К будет (z3, ж6) с q3i6 = 16. Закорачивая все ребра с пропускной способностью ^16, получим граф Gj, изображенный на рис. 8.66. Выберем теперь (5~?)-разрез К^ графа GT так, как показано пунктиром на рис. 8.66. Наибольшая пропускная способность ребер в К^ равна 14. Поэтому закорачиваем все ребра с пропускной способностью ^14 и получаем граф G2, изображенный на рис. 8.6в. Беря в качестве следующего (5-^)-разреза К3 — он показан пунктиром на рис. 8.6в,— получаем Q = 13, al в по-
строенном графе (полученном из Ga после закорачивания всех: ребер с пропускной способностью ^ 13) вершины s и t будут закорочены.
Окончательным графом G будет остовный подграф графа G, содержащий лишь те ребра, которые закорачивались во время! описанной процедуры (т. е. только ребра (гь х^ с д^^13). Этот последний граф изображен на рис. 8.6г и видно, что существует только один ($-<)-путь с наибольшей пропускной способностью. Этот путь показан жирными линиями, причем критическим ребром; этого пути будет (х2, £6) с пропускной способностью 13.
Если требуется найти пути с наибольшей пропускной способностью между каждой парой вершин графа, то трехместную операцию из выражения (8.8) можно использовать в форме
7;> = тах[^, min {$fh, ^}], (8.15> поскольку так введенная операция удовлетворяет требованиям,, налагаемым соотношением (8.9). Начальной матрицей [gfJ является исходная матрица пропускных способностей дуг (с нулевыми элементами на местах отсутствующих дуг); конечная матрица [дг;1 дает пропускные способности путей между всеми парами вершин.
Путь с наибольшей приведенной пропускной способностью
Рассмотрим граф G, в котором каждой дуге (хг, xj) приписаны два числа рц и дц, представляющие соответственно надежность и пропускную способность дуги. Задача нахождения пути от s к t с наибольшей приведенной пропускной способностью является комбинацией двух последних задач о путях, обсуждавшихся выше в разд. 7.1 и 7.2. Если приведенную пропускную способность пути Р обозначить через е (Р), то задача состоит в нахождении пути, минимизирующего выражение
<№ = П Pirl min (SuD* <8Л6> (Хр Xj)EP (xt. «реР
В этом случае нельзя воспользоваться трехместной операцией, так как не удается найти оператора 0, который (для пути от хв к хь через вершину хс) удовлетворяет условию еаЬ = еас0 есЬ.
Несуществование такого оператора можно обосновать следующим образом:
ваЪ= П Pi/’ min' l9d =
(Хр Xj)Ea-*b (хр Xy)£a-»b
= П Pir П Pu-min< min faub min tool}» (Xp Xy)£a^c (Xp x,)Ec-»b (Xp Xy)Ea-e (хр х^)Ес->Ь
где запись а -*■ b и т. д. применяется как для пути от ха к $ь» так и для множества дуг этого пути.
Вводя обозначения
Рас = П Piji Pcb= П Ри*
(xt, Xj)Ea-c(Яр «pgc-b
?ас min [?о], ^ь= min [^J,(х,. Xj)Ea^=(xp ^)Ес-Ь
можем записать
бас ~ Pac ’ Qaci бсъ = Pcb * Qcb*
Следовательно, eab = min [pucecb, Pcb^ac].(8.17)
Из этого выражения видно, что так как надежности рас и рсЬ не могут быть выражены «на языке» величин еас, есЬ, р^ и q^, то невозможно найти оператор, удовлетворяющий общим условиям
z:q=1O, р = 0,бz:q=1O, р = 0,бz:q=20, р = 0,7z:q=20, р = 0,7q=8, р=0,7q=8, р=0,71=9, р = 0,81=9, р = 0,8Рис. 8.7.Рис. 8.7.
z:q=1O, р = 0,б
z:q=1O, р = 0,б
z:q=20, р = 0,7
z:q=20, р = 0,7
q=8, р=0,7
q=8, р=0,7
1=9, р = 0,8
1=9, р = 0,8
Рис. 8.7.
Рис. 8.7.
и, следовательно, невозможно непосредственно использовать, трехместную операцию.
На самом деле нетрудно показать, что оптимальный путь от xQ к хъ через хс не зависит от:
оптимальных путей от ха к хс и от хс к хъ;
(и) путей наибольшей пропускной способности от ха к хс. и от zc к хъ;
путей наибольшей надежности от ха к хс и от хс к хь или любой их комбинации.
В этом можно убедиться, рассматривая рис. 8.7, на котором изображены пути всех трех вышеуказанных типов от ха к хс к от хе к хь, причем оптимальное значение величины е, которое можно получить с помощью некоторой комбинации этих путей, равно 4,20. На рисунке изображены, кроме того, такие два пути от ха к хс и от хс к хь, ни один из которых не является оптимальным в любом из трех вышеприведенных смыслах, между их соответствующими конечными вершинами. Однако эти два пути образуют оптимальный путь между вершинами ха и хь, которому отвечает значение величины е, равное 4,48.
Метод нахождения пути наибольшей приведенной пропускной способности
Здесь мы дадим итерационный метод нахождения пути с наибольшей приведенной пропускной способностью от некоторой указанной вершины s в другую вершину t графа G = (X, Л). Этот метод состоит в постепенном исключении тех дуг графа, которые не могут принадлежать оптимальному пути. Исключение осуществляется до тех пор, пока граф не станет несвязным.
Сначала находим путь Р- между s и I. имеющий наибольшую надежность. Пусть (?~ —пропускная способность этого пути, т. е.
Q^Q^min YqMVmin YqMV
Q^
Q^
min YqMV
min YqMV
При этом через Р- будет обозначаться также и множество дуг, образующих рассматриваемый путь. Если из А удалить множество дуг Ао ^{(x^.Xj) [(xh х/) 6 A, q^Q-} и образовать множество А* = А —0, то либо граф G' = (X, Л'), являющийся остовным подграфом графа G, содержит оптимальный путь из G, либо Р~ будет оптимальным путем. Это можно обосновать так.
Оптимальный путь в G должен иметь по определению надежность, не большую, чем надежность пути Р-. Следовательно, значение приведенной пропускной способности должно быть не меньше, чект значение этой величины для Р^ Если Р-— не оптимальный путь, то пропускная способность оптимального пути в G больше, чем Q-, а значит, ему не принадлежит никакая дуга из Л0.
Далее уже в графе G' ищется путь Р'- с наибольшей надежностью. Пропускная способность (Л этого пути больше, чем Q-, но его надежность не превосходит надежности пути Р~. Если значение приведенной пропускной способности пути Р'- больше, чем значение этой величины для Р^, то Р^ берется как лучший путь и хранится до тех пор, пока не будет найден путь с большей приведенной пропускной способностью. Затем из А удаляется соответствующее множество дуг
Л1 = {(^;, Xj) | (.Tf, Xj) £ А , qij^Q
Получается множество А" = Л' —Ат и остовный подграф G" = = (X, А"). По тем же самым причинам, что и выше, либо граф G" содержит оптимальный путь, либо оптимальным будет наилучший из найденных до данного момента путь. Этот процесс продолжается до тех пор, пока не получится остовный подграф G1, удовлетворяющий одному из следующих условий: либо он является несвязным,
причем в нем нет пути между я и Z, либо приведенная пропускная сноообность наилучшего из найденных ранее путей будет больше, чем произведение надежности пути Р1- на пропускную способность такого пути в графе Gt который обладает наибольшей пропускной способностью (этот путь можно найти с помощью методов, описанных выше); тогда, очевидно, никакой остовный подграф графа G1 не приводит к лучшему решению.
Оптимальным путем будет текущий наилучший путь, полученный в конце описанной процедуры.
На эффективность вышеприведенного метода влияют два фактора. Первый—«скорость» удаления дуг из графа В худшем
Рис. 8.8, Граф из примера 7,3.2.
случае, когда на каждом этапе наиболее надежный путь исполь зует дугу с наименьшей пропускной способностью, понадобится т —к этапов (для нахождения пути с наилучшей надежностью), где т — число дуг в G и к — число дуг в оптимальном пути Самым хорошим случаем будет тот, когда уже первый остовный подграф G' является несвязным и вершины я и t находятся в разных ком понентах. Тогда потребуется только один этап
Второй фактор связан с тем методом, который иснользуетск для «перевычисления» (на каждом этапе) пути с наибольшей надежностью в остовном подграфе. При этом следует заметить, что хотя удаление дуг может привести, вообще говоря, к элиминации нескольких дуг из я-базы предшествующего графа (дающего наиболее надежные пути от я ко всем -другим вершинам), но та 14 U, КрИСТОфИ .ей
часть s-базы, которая содержит s вместе с пометками вершин, остается неизменной и ее не нужно находить заново.
Пример. Найти путь от s к t с наибольшей приведенной пропускной способностью в графе G, изображенном на рис. 8.8, где каждая дуга имеет пометку (а, Ь), причем а является пропускной способностью дуги, а b — ее надежностью.
Путь Р^ с наибольшей надежностью в графе G показан на на рис. 8.8 жирными линиями. Здесь р = 0,504, = 10 и, следовательно, приведенная пропускная способность этого пути равна е = 5,04. Удаляя из G все дуги с пропускными способностями ^10, получим граф G', изображенный на рис. 8.9а. Путь Рр с наибольшей надежностью в графе G* показан на рисунке жирными линиями. Для этого пути р = 0,454, Q'- = 14 и, значит, приведенная пропускная способность пути Р'~ равна е = 14 X X 0,454 = 6,36, что больше полученной ранее величины (5,04) и, следовательно, заменяет ее. Удаляя из G' все дуги с пропускной способностью ^14, получаем граф G”, изображенный на рис. 8.96. В этом графе существует только один путь между s и t; р = 0,141, Q"- = 15 и, следовательно, приведенная пропускная способность равна 2,12, что хуже, чем лучшее предыдущее значение этой величины. Удаляя все дуги с пропускной способностью ^15 из G", мы разъединим вершины s и t, так что лучший предыдущий ответ, т. е. путь (s, 1, 2, 5, t), с приведенной пропускной способностью 6,36 будет оптимальным ответом.
Задачи
Найти кратчайшие пути от вершины 1 ко всем другим вершинам графа на рис. 8.10. Изобразить также 1-базу.
Используя метод из разд. 2.2, найти кратчайшие пути от вершины 1 ко всем другим вершинам графа, изображенного на рис. 8.11.
Решить задачу 2, изменив вес ребра (4,5) с 8 на —8. Выявить все отрицательные циклы.
Граф на рис. 8.12 представляет сеть допустимых маршрутов для некоторого судна. Каждая дуга имеет пометку (а, 6), причем а равно выгоде, получаемой при обслуживании этого маршрута, а b — времени обслуживания маршрута. Найти наиболее выгодный (в терминах скорости оборота капитала) маршрут судна.
Для графа, изображенного на рис. 8.10, найти четыре кратчайшие простые цепи от вершины 1 к вершине 10. Найти кратчайшую простую цепь из 5 дуг от вершины 1 к вершине 10.
На рис. 8.13 изображена диаграмма ПЕРТ. Продолжительность операции I дается числом, стоящим у дуги, исходящей из соответствующей вершины г. Найти критический путь и такую максимально возможную задержку начала выполнения операции 5, которая не приведет к задержке реализации всего проекта.
Рис. 8.10.Рис. 8.10.В графе, изображенном на рис. 8.14, каждое ребро имеет пометку (а, Ь), где а — пропускная способность, а Ь — надежность ребра. Найти:
Рис. 8.10.
Рис. 8.10.
путь с наибольшей пропускной способностью от вершины 4 к вершине 10;
путь с наибольшей надежностью от вершины 1 к вершине 10;
путь с наибольшей приведенной пропускной способностью от вершины 1 к вершине 10
Для того случая, когда веса всех дуг неотрицательны, модифицировать алгоритм Дейкстры так, чтобы расстановка пометок происходила одновременно п от вершины s, и от вершины t Уделить особое внимание правилу окончания процедуры (см. 129], [28]).
Доказать, что ответ, полученный по алгоритму Флойда, описанному в разд. 3.1, является оптимальным, и показать, что объем вычислений растет как О (па) (см. (7j).
Пусть Т — ориентированный остов графа G = (X, Л) и корнем остова Т является вершина s. Пусть I ^х^ — расстояние от вершины s до вершины х,, измеренное вдоль пути в атом дереве. Показать, что Т является s-базой тогда и только тогда, когда для каждой дуги (a:,, Xj) € А выполняется условие I (х})^1 (жг) + с,,.
Теорема из задачи 10 является основой следующей итерационной процедуры нахождения кратчайшего пути от s ко всем другим вершинам графа (здесь мы предполагаем, что все вершины Xt С X достижимы из s).
Шаг!. Взять в качестве Т любой ориентированный остов графа G и для каждой вершины хг найти пометку I (х^, равную расстоянию между этой вершиной и корнем s вдоль пути в дереве Т.
Шаг 2. Если каждая дуга (жг, х^ С А удовлетворяет условию
Цх^Цх^^,
то остановиться. Текущий остов Т будет s-базой графа G. В противном случае перейти к шагу 3.
Шаг 3. Если для некоторой дуги Vx\, х'^
то добавить к дереву дугу (x's, х^ и удалить из него ту дугу (ж, х^, конечной вершиной которой является х'^ после чего возникает новое дерево Т.
Шаг 4. Обновить пометки Z ^х^) у всех вершин хк, достижимых из x'j вдоль путей дерева Т. Возвратиться к шагу 2.
Показать, что вышеописанный алгоритм является конечным, и показать, что его сложность для полного и-вершинного графа растет как О (п3). Налагает ли алгоритм какие-либо ограничения на веса с^? Используя этот алгоритм, проверить решение задачи 2 (см. [14]).
Список литературы
,1. Balas Е. (1969), Project scheduling with resources constraints, IBM New York Scientific Center, Report No. 320—2960.
Bellman R. (1958), On a routing problem, Quart, of Applied Mathematics, 16, p. 87.
Bellman R., Kalaba R. (1960), On kth-best policies, J. of SIAM, 8, p. 582.
Berry R. C. (1971), A constrained shortest path algorithm, Paper presented at the 39th National ORSA Meeting, Dallas, Texas.
Brucker P. (1972), All shortest distances in networks with a large number of strong components, Presented at the 41st National Meeting Research Soc. of America, New Orleans.
Cunninghame-Green R. A. (1962), Describing industrial processes with interference and approximating their steady-state behaviour, Opt. Res. Quart., 13, p. 95.
Dantzig G. B. (1966), All shortest routes in a graph, Int. Symp. on Theory of Graphs, Dunod, Paris, p. 91.
Dantzig G. B., Blattner W. 0., Rao M. R. (1966), All shortest routes from a fixed origin in a graph, Int. Symp. on Theory of Graphs, Dunod, Paris, p. 85.
Dantzig G. B., Blattner W. O., Rao M. R. (1966), Finding a cycle in a graph with minimum cost to time ratio with applications to a ship routing problem, Int. Symp. on Theory of Graphs, Dunod, Paris, p. 77.
Dijkstra E. W. (1959), A note on two problems in connection with graphs, Numerische Mathematik, 1, p. 269.
Dreyfus S. E. (1969), An appraisal of some shortest path algorithms, Ops. Res., 17, p. 395.
Ermolev Yu. M. (1966), Shortest admissible paths I, Kibernetika, 2, p. 88.
Floyd R. W. (1962), Algorithm 97 — Shortest path, Comm. of ACM, 5, p. 345.
Ford L. R. Jr. (1946), Network flow theory, Rand Corporation Report P-923.
Fox B. (1969), Finding a minimal cost to time ratio circuit, Ops. Res., 17, p. 546.
Frank H., Frisch I. T. (1971), Communication, Transmission and Transportation Networks, Addison-Wesley, Reading, Massachusetts.
Gill A., Traiger T. (1968), Computation of optimal paths in finite graphs, Proc. 2nd Int. Conf, on Comp. Methods in Optimization Problems, San Remo, Italy.
Hitchener L. E. (1968), A comparative investigation of the computational efficiency of shortest path algorithms, Operations Research Centre, University of California, Berkeley, Report ORC 68-17.
Hoffman A. J., Winograd S. (1971), On finding all shortest distance in a directed network, IBM, Thomas J. Watson Research Center, Report RC 3613.
Hoffman W., Pavley R. (1959), A method for the solution of the Wth best path problem, J. of ACM, 6, p. 506.
Hu T. C. (1969), Integer programming and network flows, Addison- Wesley, Reading, Massachusetts.
Johnson E. L. (1972), On shortest paths and sorting, Proc, of Annual Conf, of ACM, Boston, p. 510.
Joksch H. C. (1966), The shortest route problem with constraints, J. of Math. Anal, and Appl., 14, p. 191.
Lawler E. L. (1966), Optimal cycles in doubly weighted directed linear graphs, Int. Symp. on Theory of Graphs, Dunod, Paris, p. 209.
Minieka E. (1971), All /с-shortest paths in a graph, Internal Report, Department of Statistics, Trinity College, Dublin.
Moore E. F. (1957), The shortest path through a maze, Proc. Int. Symp. on the Theory of Switching, Part II, p. 285.
Murchland J. D. (1965), A new method for finding all elementary paths in a complete directed graph, London School of Economics, Report LSE- TNT-22.
Murchland J. D. (1967), The once-through method of finding all shortest distances in a graph from a single origin, London Graduate School of Business Studies, Report LBS-TNT-56.
Nicholson T. A. J. (1966), Finding the shortest route between two points in a network, The Computer J., 9, p. 275.
Raimond J. F. (1969), Minimaximal paths in disjunctive graphs by direct search, IRM J. of Res. and Dev., 13, p. 391.
Reiter R. (1968), Scheduling parallel computation, J. о/ ACM. 15, p, 590.
Sakarovitcn M. (1966), The А-shortest routes and /.--shortest chains in a graph, Operations Research Centre, University of California, Berkeley, Report ORC 66-32.
Shapiro J. F. (1968), Shortest route method for finite state space dynamic programming problems, J. of SIAM (Appl. Maths."), 16, p. 1232,
Taha H. A. (1971), Operations Research, Macmillan, New York.
Yen J. Y. (1971), Finding ,the fc-shortest, loopless paths in a network, Man. Set., 17, p. 712.
Yen J. Y. (1971), On the'efficiencies of algorithms for detecting negative loops in networks, Santa Clara Business Review, p. 52.
Zaloom V. (1971), On the resource-constrained project sheduling problem, АПЕ Trans., 3, p. 302.
Глава 9
ЦИКЛЫ, РАЗРЕЗЫ И ЗАДАЧА ЭЙЛЕРА
Введение
Целью настоящей главы является изучение циклов в графах и исследование некоторых из их свойств и связей с другими понятиями (такими, как понятие дерева), введенными ранее. Два типа циклов в графах, эйлеровы и гамильтоновы циклы, часто встречаются в практических задачах и поэтому представляют особый интерес. Первые из них рассмотрены в настоящей главе, а вторые — в следующей.
В настоящей главе мы будем заниматься циклами как в ориентированных, так и в неориентированных графах, а также в мультиграфах, являющихся слабым обобщением понятия графа. Последние] являются графами, в которых может существовать несколько дуг (хь х,) между двумя данными вершинами Xi и х}. Если наибольшее число «запараллеленных» дуг равно s, то граф называется s-графом. Так. на рисунке 9.1 представлен 3-граф. Очевидно, что обычный граф можно рассматривать как 1-граф.
s-Графы очень часто возникают на практике, когда граф используется для представления физической системы в естественных науках, вопросах управления, инженерном деле и т. д. Так, например, 3-граф на рис. 9.1 изображает молекулярную структуру органического химического соединения акрилонитрила. В электротехнике графы, изображающие электрические цепи, почт» всегда являются s-графами, так как параллельно может быть включено несколько электрических компонентов. В проблемах надежности оборудования или сетей связи наиболее важные устройства или линии связи часто дублируются, утраиваются и т. д., а возникающая избыточность увеличивает надежность системы. Графы таких систем^также являются s-графами.
Цикломатическое число и фундаментальные циклы
Пусть G — неориентированный s-граф с п вершинами, т ребрами и р связными компонентами.
Определим число р (G) как
p(G) = n —р.p(G) = n —р.(9.1)
p(G) = n —р.
p(G) = n —р.
р (G) дает тогда полное число ребер в остовах каждой из р связных компонент графа G.
Число v (G) определяется как
v(G) = т — р (G) ^т — п + р (9.2) и называется дипломатическим числом (иногда его называют также дефектом или первым числом Бетти), а число р (G) называется коцикломатическим числом.
В теории электрических цепей (и на самом деле при представлении любой системы с сосредоточенными параметрами) числа
Рис. 9.1.
р (G) и v Д) имеют прямой физический смысл. Так, цикломатиче- ческое число равно наибольшему числу независимых контуров в графе электрической цепи, т. е. наибольшему числу независимых круговых токов, которые могут протекать в цепи. Коцикло- матическое число равно наибольшему числу независимых разностей потенциалов между узлами электрической цепи.
Рассмотрим, например, электрическую цепь, показанную на рис, 9.2а« Неориентированный граф G этой цепи состоит из единственной связной компоненты (р = 1) и изображен на рис. 9.26, где остов Т показан жирной линией (см. гл. 6).
Добавление любого ребра ^xt, xj) из G, не принадлежащего Т, к ребрам дерева Т приводит к образованию точно одного (простого) цикла, состоящего из ребер остова 71, лежащих на (единственной) цепи из х^ в Х(, и только что добавленного ребра. Например, добавляя ребро а^ = (а?!, х^), получаем цикл (хх, хъ хб1 х^ х^ хх). Так как в графе G имеется m ребер, п — 1 из которых лежат в Т, то число всех циклов, построенных таким способом, равно m — га + + 1, что совпадает с дипломатическим числом графа G. В примере на рис. 9.2 число таких циклов равно 15 — 7 + 1=9, они изображены на рисунке пунктирными линиями и обозначены через
Фь Ф2, . . ., Ф9. Все эти циклы, очевидно, независимы между собой, так как каждый из них имеет по крайней мере одно ребро, не принадлежащее никакому другому циклу. В общем случае v (G) циклов, получаемых добавлением какого-либо ребра из G, не лежащего в 7\ к ребрам Т, называются фундаментальными циклами. Если семейство этих циклов обозначить через Ф (в нашем примере Ф = {Фх, Ф2, . . ., Фд}), то любой другой цикл в графе, не принадлежащий к Ф, может быть выражен в виде линейной комбинации циклов из Ф, если принять следующее соглашение [21].
Пусть каждый фундаментальный цикл Фь г = 1, . . ., v (G), представлен m-мерным вектором, в котором /-я компонента равна 1 или 0 в зависимости от того, принадлежит ли /-е ребро данному циклу. Тогда, используя ф как символ сложения по модулю 2, любой цикл Фл можно представить как сумму по модулю 2 фундаментальных циклов. Так, цикл Ф10 = (аа, ан, а14, ав, а^, aj на рис. 9.2(6) может быть представлен в виде
®ю = Ф, Ф Ф3 Ф Ф6 Ф Ф8
= (100000000100000) ф (001000000111100) ф(000001000000111)ф(000000010001001) ' =(101001010010010)
Отметим, что обращение вышеприведенного утверждения неверно, а именно некоторая сумма по модулю 2 фундаментальных циклов не обязательно дает единственный цикл, но может представлять два и более циклов. Например, сумма Ф2 Ф Фа Ф Фв Ф Ф7 соответствует двум циклам (a2, aa, au, ala) и (ав, а7, а15). Таким образом, для порождения всех циклов графа G не надо брать все 2*<G) — ^ комбинаций фундаментальных циклов и складывать их по модулю 2: некоторые из этих сумм на самом деле не будут циклами Более того, если данная сумма, скажем Ф4 Ф Ф; Ф Фк Ф ..., не порождает цикла, то нельзя отбросить другие суммы, ее содержащие, так как, складывая по модулю 2 сумму Фг Ф Ф; Ф Фк Ф.. . с другой суммой, например Фа Ф ФВФ Ф¥ Ф . . . (которая сама может не порождать цикла), мы можем получить цикл. Для преодоления этой трудности Уэлч [26] предложил некоторый метод, позволяющий отбрасывать «некорректные» комбинации фундаментальных циклов, как только они появляются. Этот метод основан на упорядочении фундаментальных циклов в соответствии со специальным множеством правил.
Следует также заметить, что, хотя число фундаментальных циклов равно v (G), сами эти циклы определены неоднозначно и зависят от первоначально выбранного остова Т. Действительно*
в графе G можно найти множество из v (G) независимымх’циклов, которые нельзя получить добавлением ребер к дереву, как это
«фундаментальное». На рис. 9.3 показано множество из v (G) = 9 независимых циклов графа G, которое не может быть получено добавлением ребер ни к какому остову графа G и которое поэтому не будет фундаментальным множеством.
Разрезы
Понятие разреза очень тесно связано с понятием цикла и определяется так.
Определение. Если вершины неориентированного графа G = — (X, Л) разбиты на два множества Хо и Хо (где XQ а X w Х^ является дополнением Хо относительно X), то множество ребер графа G, одни концевые вершины которых лежат в Хо, а другие — в ^0, называется разрезом графа G.
Множество ребер разреза может быть представлено множеством вершин пары (Хо, Хо). Таким образом, остовный подграф G,, — = (X, А — (Хо, Хо)), полученный из G удалением ребер, принад лежащих разрезу, является несвязным графом, состоящим но крайней мере из двух компонент, В графе на рис. 9.4 множь-
ство ребер, показанных пунктиром, образует разрез, определяемый множествами Хо = {х/ | t = 1, . . ., 4} и Хо = {#Д| ^= = 5, . . ., И}. Получающийся остовный подграф состоит из^четы- рех связных компонент:
(^1, #2» ^3i ^4)1 (^5i *^61 ^7)5 (^в) ® (*^fl5 ^10i ^11)'
Множество ребер 8, удаление которых из графа G дает несвязный остовный подграф Gp = (X, А — 8) и при этом не существует
никакого собственного подмножества S' cz 5, такого, что граф Gp = (X, А — 8') также несвязен, называется правильным разрезом. Это множество можно также представить парой (Хо, Хо), хотя теперь остовный подграф, полученный удалением правильного разреза из G, разбивает G таочно на две связные компоненты, одна из которых имеет своими вершинами множество Х05 а другая — множество Хо. В общем случае каждый разрез является объединением некоторого числа правильных разрезов. В графе на рис. 9.4, например, разрез, показанный пунктиром, является объединением трех правильных разрезов: {(^i, ^ц), (^4» ^e)i (^3, ^9))»
{(^i» я8), fe, ^s)} и {(z3, x7\ (^4, 25)}. В остальной части этой главы, а также в следующей главе мы будем использовать слово разрез для обозначения правильного разреза, если только не оговорено противное.
Двойственность понятий остова и разреза графа G становится очевидной, если вспомнить, что остов определяется как минимальное множество ребер, связывающее все вершины графа G, в то время как разрез является минимальным множеством ребер, отделяющим одни вершины от других. Из этого замечания совершенно очевидно, что любой остов графа G должен иметь по крайней мере одно общее ребро с каждым правильным разрезом.
Разрез был определен выше для неориентированного графа» Если граф G = (X, Л) — ориентированный, то разрез графа G определяется как множество дуг, соответствующих ребрам неориентированного дубликата G графа G. Некоторые из дуг разреза графа G будут ориентированы из Хо в Х01 и множество этих дуг будет записываться как (Хо -> Хо), в то время как множество дуг, ориентированных из вершин множества Хо в вершины множества Хо, будет записываться как (ХО->ХО). Поэтому разрез (Хо, Хо), состоящий из дуг ориентированного графа, определяется как объединение (Хо Хо) (J (Хо^- Хо).
Например, для графа на рис. 9.5 множество дуг {(х2, х5\ (а:2, х8), (х8, ^з), (х4, х8), (х7, х4)} является разрезом, разделяющим множества? вершин Хо = l^, я2, х31 х4) и Хо = {х5, гг6, х7. х8}.
Этот разрез образован дугами подмножеств (Хо -а- Хо) = {(ж,, ®е), <яе, х^, (xt, ж8)} и; (Хо -а- Хо) = {(^, х3), (х7, х4)}.
Множество фундаментальных циклов неориентированного графа G было определено; в предыдущем разделе как множество v (G) циклов, каждый из^ которых получается путем добавления какого-нибудь'ребра, не принадлежащего остову Т, к ребрам этого остова. Аналогичным образом, имея в виду отмеченную выше двойственность между разрезами и остовами, фундаментальные разрезы относительно остова Т определяются как п — 1 разрезов, каждый из которых содержит одно, и только одно ребро, принадлежащее дереву Т.
Следующая теорема устанавливает связь между фундаментальными разрезами и фундаментальными циклами и дает способ построения фундаментальных разрезов.
Теорема 1. Если Т — остов неориентированного графа G, то фундаментальный разрез, определяемый ребром at па Г, образован at и теми ребрами из G, не принадлежащими Т, которые после добавления к Т дают фундаментальные циклы, содержащие а^
Доказательство. Если из остова Т удалить ребро аи то Т распадается на два поддерева 71 и 7^ (см. рис. 9.6). Любое ребро, одна концевая вершина которого лежит в Гь а другая в 7V должно принадлежать фундаментальному разрезу, так как добаи левие любого такого ребра к ребрам из Т^ и Тг приводит к образованию другого остова графа G и, следовательно, любое множество, не содержащее таких ребер, не будет разрезом. Множество таких ребер вместе с ребром at является разрезом, так как их
Рис. 9.6. Фундаментальные циклы, содержащие ребро at.
удаление разбивает граф на два подграфа, один из которых имеет множеством своих вершин 7^, а другой — 72. Значит, этот разрез является фундаментальным разрезом. Более того, так как ребро аг является единственным ребром, через которое проходят цепи остова Т, начинающиеся в вершинах из Тг и оканчивающиеся в вершинах из Т^, то единственными ребрами, замыкающими фундаментальные циклы, содержащие ребро аг, будут те, одна концевая вершина которых лежит в Тг, а другая в Т4 (таковы, например, ребра аг, а2 и а3 в графе на рис. 9.6). Это доказывает теорему.
Матрицы циклов и разрезов
Пусть Т — остов неориентированного графа. Матрицей фундаментальных циклов графа G называется матрица Ф = [<р,<], состоящая из v (G) строк и т. столбцов, в которой ц>и равно 1, если ребро а3 принадлежит циклу Фг, и равно 0 в противном случае. Если ребра, не принадлежащие дереву Т, пронумеровать последовательно от 1 до V (G), а ребра дерева Т пронумеровать от v (G) + 1 до ш, то матрица циклов Ф будет иметь вид
Ф = (1|Ф12),
гДе I единичная матрица. Это объясняется тем, что каждый цикл Фг содержит одно, и только одно ребро, не принадлежащее остову Т, и циклы всегда можно пронумеровать по числу принадлежащих им внеостовных ребер, вследствие чего все единицы впервой (v (G) х v (С))-подматрицематрицыФ лежат на диагонали.
Матрица фундаментальных разрезов К = №о] определяется аналогично — как матрица с п — 1 строками и т столбцами, где ки есть если ребро а3 принадлежит разрезу Кь и 0 в противном случае. При той же самой нумерации ребер, что и выше, матрица К имеет вид
К = (КИ|1), так как теперь каждый фундаментальный разрез содержит одно, и только одно ребро из ребер дерева Т.
В графе на рис. 9.7 возьмем остов, изображенный жирными линиями. Тогда матрица фундаментальных циклов равна
«1
«2
«з
«4
«5
«6
«7
«8
«9
«10
«11
«12
«13
Ф1
1
0
0
0
0
0
0
1
1
0
0
0
0
Ф2
0
1
0
0
0
0
0
0
1
1
1
0
0
Ф = Ф3
0
0
1
0
0
0
0
0
0
0
0
1
1
»4
0
0
0
1
0
1
1
1
0
1
0
0
1
Ф5
0
0
0
0
1
1
1
1
0
0
0
0
0
15 н. Кристофидес
матрица фундаментальных разрезов равна
«1
«2
"з
"4
"з
"б
а1
"в
"»
«10
"и
"12
"13
Кх
0
0
0
1
1
1
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
^3
1
0
0
1
1
0
0
1
0
0
0
0
0
К.
1
1
0
0
0
0
0
0
1
0
0
0
0
к= 4 к,
0
1
0
1
0
0
0
0
0
1
0
0
0
К6
0
1
0
0
0
0
0
0
0
0
1
0
0
^7
0
0
1
0
0
0
0
0
0
0
0
1
0
К»
0
0
1
1
0
0
0
0
0
0
0
0
1
где разрезы Кь соответствующие ребрам остова, имеют номера v (G) -^ i = 5 -|^ i, i = 1, 2, . . ., 8.
Существует несколько интересных соотношений между матрицами циклов, разрезов и инциденций. Ниже все арифметические операции являются операциями по модулю 2. Здесь мы будем рассматривать неориентированные графы без петель.
Теорема 2. Матрица инциденций В и транспонированная матрица фундаментальных циклов Ф* ортогональны, т. е. В Ф1 = 0.
Теорема 3. Матрица фундаментальных циклов Ф и транспонированная матрица фундаментальных разрезов К* ортогональны, т. е. Ф К‘ = 0.
Эти две теоремы являются немедленным следствием двух очевидных фактов:
Каждая вершина в цикле инцидентна четному числу ребер (а в случае простого цикла — двум ребрам) этого цикла.
Каждый разрез цикла, индуцированный некоторым разрезом, имеет четное число ребер, общих с этим разрезом.
Теорема 2 следует из (1), а теорема 3 — из (2), если вспомнить, что все операции рассматриваются по модулю 2, так что, например, 2 = 0 (mod 2). Кроме того, существуют доказательства этих теорем [21, 17, 6], не использующие предположения о фундаментальности циклов и разрезов. Следовательно, сформулированные теоремы справедливы для любых матриц циклов и разрезов. Последние определяются аналогичным образом.
По теореме 3 можно написать
ФК‘ = (I | Ф12). (-Ки ) = К‘и + Ф12 = 0.
Поэтому
К‘„= -Ф12 = Ф12,(9.3)
так как —1 = 1 (mod 2). Вследствие этого матрица фундаментальных разрезов может быть немедленно получена, как только известна матрица фундаментальных циклов, и наоборот. Справедливость соотношения (9.3) можно проверить на приведенных выше матрицах Ф и К для графа, изображенного на рис. 9.7.
5. Эйлеровы циклы и задача китайского почтальона
Определение. Если дан неориентированный s-граф G, то эйлеров цикл (эйлерова цепь) — это такой цикл (цепь), который проходит ровно один раз по каждому ребру.
Очевидно, не все графы имеют эйлеровы циклы (см., например, граф на рис. 9.8), но если эйлеров цикл существует, то это озна-
Рис. 9.8. Граф без^эйлерова цикла.
чает, что, следуя вдоль этого цикла, можно нарисовать граф на бумаге, не отрывая от нее карандаша. 3-граф на рис. 9.9 имеет следующий эйлеров цикл (начиная с вершины Xj):
a1a2a3a4ai5a14ai3ai2aiiai6a17a1oa9fl8a5a7ae-
Направление движения по каждому ребру показано на рисунке стрелками.
Эйлер первым в своей знаменитой задаче о Кёнигсбергских мостах рассмотрел вопрос о существовании таких циклов в графах.
Рис. 9.10. (а) Карта Кёнигсберга, (б) Эквивалентный граф.Рис. 9.10. (а) Карта Кёнигсберга, (б) Эквивалентный граф.
Рис. 9.10. (а) Карта Кёнигсберга, (б) Эквивалентный граф.
Рис. 9.10. (а) Карта Кёнигсберга, (б) Эквивалентный граф.
Кёнигсберг (теперь Калининград) расположен на обоих берегах реки Преголя и на двух островах этой реки. Берега реки и два острова соединены семью мостами как показано на карте на рис. 9.10 (а).
Вопрос — поставленный в 1736 году — состоит в том, можно ли, начав с некоторой точки, совершить прогулку и вернуться
в исходную точку, пройдя по каждому мосту ровно один раз. Если каждый берег реки и острова считать вершиной графа, а каждый мост — ребром, то карту рис. 9.10 (а) можно представить в виде 2-графа, изображенного на рис. 9.10 (б), и ответ на поставленный вопрос зависит теперь от существования эйлерова цикла в этом графе. Эйлер установил, что указанный граф не содержит эйлерова цикла, и этот результат ознаменовал рождение теории графов.
Основная теорема о существовании эйлеровых циклов формулируется так.
Теорема 4 (а). Связный неориентированный s-граф G содержит эйлеров цикл (эйлерову цепь) тогда и только тогда, когда число вершин нечетной степени равно 0 (0 или 2).
Доказательство. Мы докажем эту теорему для случая цикла; случай цепи рассматривается аналогично.
Необходимость. Любой эйлеров цикл должен прийти в вершину по одному ребру и покинуть ее по другому, так как любое ребро должно использоваться ровно один раз. Поэтому, если G содержит эйлеров цикл, то степени всех вершин должны быть четными.
Достаточность. Пусть G — связный неориентированный s-граф, все вершины которого имеют четную степень. Начнем путь из некоторой произвольной вершины хо и пойдем по некоторому ранее не использованному ребру к следующей вершине, и так до тех пор, пока не вернемся в вершину хо и не замкнем цикл. Если все ребра окажутся использованными, то нужный эйлеров цикл построен. Если же некоторые ребра не использованы, то пусть Ф — только что построенный цикл. Так как граф G связен, то цикл Ф должен проходить через некоторую вершину, скажем xt, являющуюся конечной вершиной какого-либо до сих пор неиспользованного ребра. Если удалить все ребра, принадлежащие Ф, то в оставшемся графе все вершины по-прежнему будут иметь четную степень, так как в цикле Ф должно быть четное число ребер (0 является четным числом), инцидентных каждой вершине.
Начиная теперь с Xt, получаем цикл Ф', начинающийся и оканчивающийся в х4. Если все оставшиеся ранее ребра использованы для цикла Ф', то процесс окончен. Нужный эйлеров цикл будет образован частью цикла Ф от вершины х0 до xt, затем циклом Ф' и, наконец, частью цикла Ф от вершины х, до х0. Если же все еще остались неиспользованные ребра, то объединение построенных выше циклов Ф и Ф' дает новый цикл Ф. Мы снова можем найти вершину X), принадлежащую циклу и являющуюся концевой вершиной некоторого неиспользованного ребра. Затем мы можем приступить к построению нового цикла Ф', начинающегося в х,, и так продолжать до тех пор, пока не будут использованы все ребра и не будет получен таким образом эйлеров цикл Ф. Это доказывает теорему.
Очевидно, что если граф G несвязен (за исключением изолированных вершин), то эйлеров цикл не существует, так как нет никакой цепи, ведущей из одной его компоненты в другую. Очевидно также, что в случае эйлеровой цепи две ее конечные вершины р и q являются вершинами нечетной степени.
Если G — ориентированный s-граф, то справедлива теорема, полностью аналогичная предыдущей, а именно
Теорема 4 (б). Связный ориентированный s-граф G содержит эйлеров цикл (эйлерову цепь) тогда и только тогда г), когда все полустепени захода dt (х,) и полустепени исхода d0 (х^ вершин удовлетворяют условиям".
для случая цикла dt (х^ = дй (х^Чх, £ X, для случая цепи dt(xi) = do(xt)^xi^ р или q,
dt (q) = do (q) + 1 udt (p) = do (p) — 1, где p — начальная, a q — конечная вершины эйлеровой цепи.
Флёри [16] дал очень простой алгоритм построения эйлерова цикла в неориентированном графе (если такой цикл существует). Этот алгоритм легко может быть распространен на ориентированные графы (см. также задачи 7 и 8) и состоит в следующем. Алгоритм нахождения эйлерова цикла. Начинать с некоторой вершины р и каждый раз вычеркивать пройденное ребро. Не проходить по ребру, если удаление этого ребра приводит к разбиению графа на две связные компоненты (не считая изолированных вершин).
Некоторые родственные задачи
Сразу же вспоминается ряд вопросов, связанных с тем, имеется ли в неориентированном графе эйлеров цикл. Например:
Каково наименьшее число цепей или циклов необходимо для того, чтобы каждое ребро графа G содержалось точно в одной цепи или в одном цикле? Очевидно, что если G имеет эйлерову цепь или эйлеров цикл, то ответом будет число один ).
Ребрам графа G приписаны положительные веса. Требуется найти цикл, проходящий через каждое ребро графа G по крайней мере один раз и такой, что для него общий вес (а именно сумма величин|п,с (а;), где число п; показывает, сколько раз проходи-
лось ребро а}, а с (а^) — вес ребра) минимален. Очевидно, что если G содержит эйлеров цикл, то любой такой цикл будет оптимальным, так как каждое ребро проходится только один раз и вес
этого цикла равен тогда 2 с (ajV
j=i
Сформулированная выше задача (ii) называется задачей китайского почтальона [18], и ее решение имеет много потенциальных приложений, как например:
Сбор мусора. Рассмотрим проблему сбора домашнего мусора. Допустим, что определенный район города обслуживается единственной машиной. Ребра графа G представляют дороги, а вершины — пересечения дорог. Величина с (аД — вес ребра — будет соответствовать длине дороги. Тогда проблема сбора мусора в данном районе сводится к нахождению цикла в графе G, проходящего по каждому ребру G по крайней мере один раз. Требуется найти цикл с наименьшим километражем. В действительности емкость машины и продолжительность рабочего дня накладывают ограничения на число улиц, которые может обслужить одна машина за день. То, что действительно может требоваться,— это не нахождение отдельного цикла, а некоторого числа Q циклов, обслуживаемых по одному в день, скажем, за период в Q дней; при этом циклы могут быть выбраны так, что не нарушаются вышеупомянутые ограничения [1, 2, 4, 11, 22].
(Б) Доставка молока или почты. Еще две задачи, когда требуется определить маршрут, проходящий хотя бы один раз по каждой из улиц, возник1' при доставке молока или почты. Здесь задача состоит в нахождении маршрута, минимизирующего общий километраж (или время, стоимость и т. д.).
Проверка электрических, телефонных или железнодорожных линий. Проблема инспектирования распределенных систем (лишь некоторые из которых названы выше) связана с непременным требованием проверки всех «компонент». Поэтому она также является проблемой типа (ii) или близка к ней.
Другие приложения могут быть связаны с разбрасыванием смеси песка и соли на главных дорогах зимой для предотвращения обледенения, с наилучшим методом работы автоматических вентиляционных устройств, с уборкой помещений и коридоров в больших учреждениях и даже с наилучшим маршрутом осмотра музея!
Алгоритм для задачи китайского почтальона
В случае когда веса всех ребер равны единице, задачу китайского почтальона рассмотрели Беллман и Кук [3] с использованием динамического программирования. Более общую задачу.
когда веса ребер произвольны, сформулировали и решили как задачу о паросочетании (с частной задачей о кратчайшей цепи) Эдмондс 19], Эдмондс и Джонсон [10], Басакер и Саати [7] и Кри- стофидес [8].
Рассмотрим неориентированный граф G = (X, А). Среди вершин из X некоторые вершины (скажем из множества Х+) будут иметь четные степени, а остальные (из множества Х~ = X— Х+)— нечетные степени. Далее сумма степеней dt всех вершин Xi € X равна удвоенному числу ребер в А (так как каждое ребро добавляет по единице к степеням двух его концевых вершин) и поэтому равна четному числу 2т. Следовательно,
S ^i di + 2 di = 2m,X^x^X* x^X"
и так как сумма 2 ^i четна, то сумма 5 ^г также четна. Но х^Х"*"х^Х~
все di в последней сумме нечетны, значит число | X’ | вершин нечетной степени четно.
Пусть М — множество таких цепей (скажем рг-Д в G между концевыми вершинами хг и х^ (Xi, х; б ^~), что никакие две цепи не имеют одинаковых конечных вершин, т. е. цепи соединяют различные пары вершин из X' и покрывают все вершины г) множе- ства Х~. Число цепей р^ в М равно у IX |, а как было показано выше, | X" | всегда четно, следовательно, это число всегда целое, если, конечно, оно определено. Предположим теперь, что все ребра, образующие цепь рг7, добавлены к G в качестве искусственной параллельной цепи, причем эти ребра остаются в графе G. Это означает, прежде всего, что все ребра из G, образующие цепь р^-, теперь удвоены. Так поступаем с каждой цепью р^- £ М, и полученный s-граф обозначим через G~ (М). Так как некоторые ребра из G могут входить более чем в одну цепь р^-, то некоторые ребра из G" (М) могут быть (после того как добавлены все «новые» цепи ргД утроены, учетверены и т. д.
Теперь мы можем доказать следующую теорему.
Теорема 5. Для любого цикла, проходящего по G, можно выбрать множество М, для которого граф G* (М) имеет эйлеров цикл, соответствующий первоначально взятому циклу в графе G. Это соответствие таково, что если цикл проходит по ребру (xt, Xj) из G I раз, то в G~ (М) существует I ребер (одно реальное и I — 1 искусственных) между х£ и Xj, каждое из которых проходится ровно один раз эйлеровым циклом из G” (М). Справедливо и обратное утверждение.
Доказательство. Если цикл проходит по графу G, то по крайней мере одно ребро, инцидентное каждой вершине xt нечетной степени, должно проходиться дважды. (Ребро, проходимое дважды, можно рассматривать как два параллельных ребра — одно реальное и одно искусственное — и каждое из них проходится один раз.) Пусть это ребро (х^ хк). В случае нечетности степени dk вершины хк графа G добавление искусственного ребра прежде всего сделает dk четным, и значит только ребро (xb хк) нужно будет проходить дважды, если ограничиться рассмотрением лишь вершин xt и хк. В случае когда dk четно, добавление искусственного ребра сделает dk нечетным, а второе ребро, выходящее из хк1 должно быть пройдено дважды (т. е. добавляется еще одно искусственное ребро). Такая ситуация сохраняется до тех пор, пока не встретится вершина нечетной степени, о чем говорилось выше. Следовательно, чтобы удовлетворить условию возвращения в вершину х^ нужно дважды пройти всю цепь из xt в некоторую другую вершину нечетной степени хГ1 принадлежащую множеству А-. Это автоматически приводит к выполнению условия прохождения вершины хТ. Аналогично обстоит дело для всех других вершин х£ из X". Это значит, что все множество М цепей из G. определенное выше, должно проходиться дважды, и так как отсюда вытекает, что каждое ребро из G- (М) должно проходиться один раз, то теорема доказана.
Алгоритм решения задачи китайского почтальона немедленно следует из доказанной теоремы, так как все, что для этого необходимо, состоит в нахождении множества цепей М* (цепного паро- сочетания для множества вершин нечетной степени), дающего наименьший дополнительный вес. Цикл наименьшего веса, проходящий по G, будет иметь вес, равный сумме весов всех ребер из G плюс сумма весов ребер в цепях из М*. Это то же самое, что и сумма весов всех ребер — реальных и искусственных — графа G" (М*). Дадим теперь описание алгоритма.
Описание алгоритма. Шаг 1. Пусть [с,Д — матрица весов ребер графа G. Используя алгоритм кратчайшей цепи (см. гл. 8), образуем | X" | X | X" (-матрицу D = [d^], где di3 — вес цепи наименьшего веса, идущей из некоторой вершины х^ Е X- в другую вершину х, Е X”.
Шаг 2. Найдем то цепное паросочетание М* для множества А", которое дает наименьший вес (в соответствии с матрицей весов D). Это можно сделать эффективно с помощью алгоритма минимального паросочетания из гл. 12.
Шаг 3. Если вершина ха сочетается с другой вершиной а;в, то определим цепь р,ае наименьшего веса (из ха в я:е), соответствующую весу da^ делая шаг 1. Добавим искусственные ребра в Gt
соответствующие ребрам из ца в, и проделаем это для всех других цепей из множества М*, в результате чего получится s-граф G- (М*).
Шаг 4. Сумма весов всех ребер графа G~ (М*), найденная с использованием матрицы [с/,-] (вес искусственного ребра берется равным весу параллельного ему реального ребра), равна минимальному весу цикла, проходящего по G. При этом число прохождений цикла по ребру (zit х^ равно общему числу параллельных ребер между х, и Xj в G- (М*У
Следует заметить, что поскольку на шаге 2 мы используем минимальное паросочетание, никакие две кратчайшие цепи pi7- и Црд при таком паросочетании (скажем, идущие из х, в х, и из хр
Рис. 9.11. Цепи pi;- и Црд, имеющие общее ребро (а, Ь).
в Хд) не могут иметь общего ребра. Если бы они имели общее ребро (za, хь), как показано на рис. 9.11, то сочетание вершин х, и^д (использующее подцепи от хг к хь и от хь к Ху) и сочетание пары вершин хр и Xj (использующее подцепи от хр к ха и от ха к х,) давало бы общее паросочетание веса 2саЬ, меньшего чем вес первоначального паросочетаний, что противоречит предположению о минимальности исходного паросочетания. Следовательно, граф G~ (М*) не должен содержать более двух параллельных ребер
между любыми двумя вершинами, т. е. оптимальный цикл не проходит ни по какому ребру графа G более чем два раза.
Пример. Рассмотрим граф G, изображенный на рис. 9.12, имеющий 12 вершин и 22 ребра, веса которых указаны у каждого ребра. Задача состоит в нахождении цикла, проходящего
Рис. 9.12. Граф из примера 5.2.2.
по каждому ребру G по крайней мере один раз и имеющего минимальный вес. Множество вершин нечетной степени этого графа есть (1, 3, 4, 6, 8, 9}. Используя алгоритм кратчайшей цепи Дейкстры (см. гл. 8), найдем матрицу D из шага 1:
134689
—
19
17
7
19
15
19
—
20
12
24
20
17
20
—
24
30
И
7
12
24
—
12
22
19
24
30
12
—
19
15
20
11
22
19
—
На шаге 2 алгоритм минимального паросочетания (см. гл. 12) связывает следующие вершины (два других паросочетания также являются минимальными):
1 с 6, цепь 1—12—6, вес 7, 3 с 8, цепь 3—5—6—7—8, вес 24, 9 с 4, цепь 9—'2—4, вес 11.
Граф G~ (71/*), получающийся после выполнения шага 3, изображен на рис. 9.13; пунктиром показаны искусственные ребра.
Из этого рисунка видно, что оптимальный цикл в графе G проходит через ребра (9, 2), (2, 4), (3, 5), (5, 6), (1, 12), (12, 6), (7, 6) и (8, 7) дважды, а через все остальные ребра — один раз. Вес этого цикла равен 294.
Как только найден граф G" (71/*), могут быть сразу же найдены по алгоритму Флёри, упомянутому ранее, эйлеров цикл этого графа и соответствующий оптимальный цикл, проходящий по первоначальному графу G. Для графа, изображенного на рис. 9.13, например, один из возможных эйлеровых циклов, полученных по вышеприведенному правилу, дается последовательностью вершин (начиная с вершины 1):
4, 3, 5, 3, 2, 4, 2* 1, 12, 5, 6, 7, 8, 10, 1, 7, 6,
6, 5, И, 9, 2, 9, 10, И, 8, 7, 12, 1.
Этот цикл является также соответствующим оптимальным циклом, проходящим по первоначальному графу из рис. 9.12. Возможны также другие оптимальные циклы, проходящие ребра графа в ином^порядке. Однако эти циклы будут проходить дважды по тому же множеству из 8 ребер. Таким образом, как только определены те ребра графа G, по которым оптимальный цикл проходит дважды, можно построить несколько таких циклов в графе G.
Связь между эйлеровыми и гамильтоновыми циклами
Гамильтонов цикл в графе G был определен в главе 1 как простой цикл, проходящий (один, и только один раз) через каждую вершину графа G. Не удивительно, что двойственность между эйлеровыми и гамильтоновыми циклами (замена вершины на ребро и наоборот) приводит к тесной связи между этими двумя понятиями в применении к неориентированному графу G и соответствующему ему реберному графу, определяемому ниже.
Определение. Реберный ) граф Gz графа G имеет столько же вершин, сколько ребер у графа G. Ребро между двумя вершинами графа Gt существует тогда и только тогда, когда ребра графа G, соответствующие этим двум вершинам, смежны (т. е. инцидентны одной и той же вершине графа G).
Например, для графа, показанного на рис. 9.14(a), граф Gt изображен на рис. 9.14(6).
Легко можно показать [15], что верны два следующие утверждения о взаимоотношении между эйлеровыми и гамильтоновыми циклами.
Если G имеет эйлеров цикл, то Gt имеет как эйлеров, так и гамильтонов циклы.
Если G имеет гамильтонов цикл, то Gt также имеет гамильтонов цикл.
Обращение этих утверждений, как нетрудно продемонстрировать, неверно. Для графа, изображенного на рис. 9.14(a), степени всех его вершин четны и поэтому существует эйлеров цикл. Таким образом, граф Gu изображенный на рис. 9.14(6), также имеет эйлеров цикл (поскольку степени всех его вершин опять четны) и, кроме того, имеет гамильтонов цикл, задаваемый последовательностью вершин a, g, с, d, е, /, b,hs г, а. Если теперь из графа G удалить ребро Ь, то новый граф G' не имеет эйлерова цикла, но все еще имеет гамильтонов цикл 1, 2, 6, 5, 4, 3, 1. Реберный граф Gt графа G* является тогда графом из рис. 9.14 (6) с удаленной вершиной b (и без ребер, инцидентных вершине Ь). Этот граф все еще имеет гамильтонов цикл а, /, е, d, с, g, A, г, а.
Рис. 9.14. (а) — граф G. (6) — реберный граф Gt.
Задача выяснения существования у данного неориентированного графа G гамильтонова цикла, а также нахождения такого цикла, если он существует, является важной задачей теории графов как с практической, так и с теоретической точек зрения. Если ребрам гоафа G приписаны некоторые веса [сг^] и граф G
содержит несколько гамильтоновых циклов, то большой интерес представляет также задача нахождения такого цикла с минимальным общим весом. Ввиду важности этих вопросов гамильтоновы циклы рассматриваются отдельно в следующей главе.
Задачи
Для неориентированного графа, изображенного на рис. 9.15, найти цикломатическое и коцикломатическое числа, а также фундаментальные циклы относительно некоторого остовного дерева.
Для графа, изображенного на рис. 9.15, выписать соответственно матрицы Ф и К фундаментальных циклов и фундаментальных разрезов и на этом примере проверить справедливость теорем 2 и 3.
Используя теорему 2, получить выражение для матрицы фундаментальных циклов в терминах матрицы инциденций В.
Доказать, что множество К ребер неориентированного графа, такое, что К имеет четное число ребер, общих с каждым циклом, является разрезом (не необходимое свойство).
Доказать, что неориентированный граф G имеет эйлеров цикл тогда и только тогда, когда G является объединением реберно непересекающихся циклов.
Если столбцы матриц В, Ф и К записаны с использованием одного и того же порядка ребер (относительно некоторого остовного дерева, по которому образованы фундаментальные циклы и разрезы) и затем [представлены в виде В = [Вп, В12], Ф =
= [I, Ф12] и К = [Кц, I], то
ки=ф‘2=в;,1. ви, ф = [ф‘2, I]=в;2 .в. Следовательно, по любой из трех матриц В, Ф и К можно найти остальные.
Показать, что алгоритм Флёри всегда позволяет найти эйле ров цикл графа, если таковой существует.
Написать алгоритм, основанный на алгоритме Флёри и позволяющий найти все эйлеровы циклы графа.
Показать, что для ориентированного графа G = (X, Л) с полустепенями d0 (х^ = dt(xi'), Vxi С X, число различных эйле ровых циклов дается выражением
Дг- П (<№)-!)!,
хг6Х
где Дг — число ориентированных остовных деревьев графа G с корнем хт. Эта величина не зависит от выбора хт (см. [24]).
Используя понятие эйлерова цикла, построить алгоритм обхода лабиринта от начальной точки з до конечной точки t.
Аб289
8
5
3
4
18
16
х6
22
G
20
5
/3 5 *«> 35 л„ 14 хп
Рис. 9.16.
не проходящий ни по какому коридору дважды в одном направлении. Предполагается, что при обходе лабиринта пройденный путь не запоминается (память у путешественника отсутствует). Разрешается только использовать два типа меток (например, 0 и 1), чтобы помечать ими входы и выходы коридоров. (См. [23], [13] и ]14]).
Решить задачу китайского почтальона для взвешенного неориентированного графа, "показанного на рис. 9.16. (Воспользоваться алгоритмом гл. 8 для нахождения кратчайшей цепи и решить задачу о паросочетании с помощью полного перебора.)
Список литературы
Altman S., Beltrami Е., Rappaport S., Schoepfle G. (1971), A nonlinear programming model for household refuse collection, IEEE Trans., SMC-1, p. 289.
Altman S., Bhagat N., Bodin L. (1971), Extensions of the Clarke and Wright algorithm for routing garbage trucks, Presented at the Sth International TIMS Meeting, Washington D.C.
Bellman R., Cooke K. L. (1969), The Konigsberg bridges problem generalized, J. of Math. Anal, and, Appl., 25, p. 1.
Beltrami E. J., Bodin L. D. (1972), Networks and vehicle routing for municipal waste collection, Proc. 10th Annual Allterton Conference on Circuit and Systems Theory, University of Illinois, p. 143.
Berge C., Ghouila-Houri A. (1965), Programming, game and transportation networks, Methuen, London.
Берж К., Теория графов и ее применения, М., ИЛ., 1962.
Басакер Р., Саати Т., Конечные графы и сети, М., Наука, 1974.
Christofides N. (1973), The optimum traversal of a graph, Omega- The Int. J. of Management Science, 1, p. 1.
Edmonds J. (1965), The Chinese postman’s problem, Bulletin of the Operations Research Soc. of America, 13, Supplement 1, p. B-73.
Edmonds J., Johnson E. (in press), Matching, Euler tours and the Chinese postman’s problem.
Eilon S., Watson-Gandy, Christofides N. (1971), Distribution Manageme- net:Mathematical modelling and practical analysis, Griffin, London.
Even S. (1973), Algorithmic Combinatorics, Macmillan, New York.
Fraenkel A. S. (1970), Economic traversal of labyrinths, Mathematical Magazine, 43, p. 125.
Fraenkel A. S. (1971), Economic traversal of labyrinths (Correction), Mathematical Magazine, 44, p. 1.
Harary F., Nash-Williams C. St. J. A. (1965), On Eulerian and Hamiltonian graphs and line graphs, Canadian Mathematical Bulletin, 8, p. 701.
Kaufmann A. (1967), Graphs, dynamic programming and finite games, Academic Press, New York.
Kim W. H., Chien R.T.-W. (1962), Topological analysis and synthesis of communication networks, Columbia University Press, New York.
Kwan M.-K. (1962), Graphic programming using odd or even points, Chinese Mathematics, 1, 273.
Lovasz L. (1968), On covering of graphs, Theorie des Graphs, Dunod, Paris, p. 231.
Marshall C. W. (1971), Applied graph theory, Wiley, New York.
Seshu S., Reed M. B. (1961), Linear graphs and electrical networks, Addison-Wesley, Reading, Massachusetts.
Stricker R. (1970), Public sector vehicle routing — the Chinese postman problem, Ph. D. Thesis, Electrical Eng. Dept., M.I.T.
Tarry G. (1895), Le probleme des labyrinths, Nouvelles Ann. de Math., 14, p. 187.
Van Aardenne-Ehrenfest T., de Bruijn N. G. (1951), Circuits and trees in oriented linear graphs, Simon Stevin, 28, p. 203.
Voss H. J. (1968), Some properties of graphs containing k independent circuits, Theorie des Graphes, Dunod, Paris, p. 231.
Welch J. T. (1966), A mechanical analysis of the cyclic structure of indirected linear graphs, JI. of ACM, 13, p. 205.
Глава 10
ГАМИЛЬТОНОВЫ циклы,ЦЕПИ И ЗАДАЧА КОММИВОЯЖЕРА
Введение
В ряде отраслей промышленности, особенно химической и фармацевтической, возникает следующая основная задача планирования. Нужно произвести ряд (скажем п) продуктов, используя единственный тип аппаратуры или реактор. Аппарат (реактор) должен или не должен быть перенастроен (очищен) после того как произведен продукт р^ (но до того, как началось производство продукта р,У в зависимости от комбинации (рь pj). Стоимость перенастройки аппаратуры постоянна и не зависит от продукта, который только что произведен, или от продукта, следующего за ним. Разумеется, не требуется никаких затрат, если перенастройка аппаратуры не нужна г). Предположим, что эти продукты производятся в непрерывном цикле, так что после производства последнего из п продуктов снова возобновляется в том же фиксированном цикле производство первого продукта.
Возникает вопрос о том, может ли быть найдена циклическая последовательность производства продуктов pt (i = 1, 2, . . ., и), не требующая перенастройки аппаратуры. Пусть G — ориентированный граф, вершины которого представляют продукты, а существование дуги (^х^ Xj) означает, что продукт р^ может следовать за продуктом pt без перенастройки аппаратуры. Тогда ответ на поставленный вопрос зависит от того, имеет ли этот орграф гамильтонов цикл ) или нет. (Гамильтонов цикл в орграфе — это ориентированный цикл (контур), проходящий ровно один раз через каждую вершину графа; см. гл. 1.)
Если не существует циклической последовательности продуктов, не требующей перенастройки аппаратуры, то какова должна быть последовательность производства с наименьшими затратами на перенастройку, т. е. требующая наименьшего числа необходимых перенастроек? Ответ на этот вопрос может быть получен с помощью итеративного применения алгоритма нахождения гамильтонова цикла в орграфе. Как именно это может быть сделано, обсуждается позже в этой главе.
г) Сформулированная выше задача может возникать в следующих двух случаях. Или стоимость перенастройки действительно не зависит от продукта, или, другая возможность, стоимость в каждом случае неизвестна и в качестве приближения берется средняя постоянная стоимость.
Таким образом, метод, позволяющий ответить на вопрос, содержит ли какой-либо орграф гамильтонов цикл, имеет прямые приложения в задачах упорядочения или планирования операций. В равной степени важно использование такого метода в качестве основного шага в алгоритмах решения других, на первый взгляд далеких от данной тематики, задач теории графов.
В этой главе рассматриваются следующие две задачи.
Задача i. Дан ориентированный граф G, требуется найти в G гамильтонов цикл (или все циклы), если существует хотя бы один такой цикл.
Задача ii. Дан полный орграф G, дугам которого приписаны произвольные веса С = IcijK найти такой гамильтонов цикл (цепь), который имеет наименьший общий вес. Задача нахождения гамильтонова цикла с наименьшим весом хорошо известна в литературе как задача коммивояжера [1, 2, 15]. Следует отметить, что если орграф G не полный, то его можно рассматривать как полный орграф, приписывая отсутствующим дугам бесконечный вес.
Алгоритмы решения задачи коммивояжера и ее вариантов имеют большое число практических приложений в различных областях человеческой деятельности. Рассмотрим, например, задачу, в которой грузовик выезжает с центральной базы для доставки товаров данному числу потребителей и возвращается назад на базу. Стоимость перевозки пропорциональна пройденному грузовиком расстоянию, и при заданной матрице расстояний между потребителями маршрут с наименьшими транспортными затратами получается как решение соответствующей задачи коммивояжера. Аналогичные типы задач возникают при сборе почтовых отправлений из почтовых ящиков, составлении графика движения школьных автобусов по заданным остановкам и т. д. Задача очень легко обобщается и на тот случай, когда доставкой (сбором) занимаются несколько грузовиков, хотя эту задачу можно также переформулировать как задачу коммивояжера большей размерности [9]. Другие приложения включают составление расписания выполнения операций на машинах [5], проектирование электрических сетей [3], управление автоматическими линиями [17] и т. д.
Вполне очевидно, что сформулированная выше задача (i) является частным случаем задачи (ii). В самом деле, приписывая случайным образом дугам заданного орграфа G конечные веса,, получаем задачу коммивояжера г). Если решение для этой задачи,, т. е. кратчайший гамильтонов цикл ), имеет конечное значение, то это решение является гамильтоновым циклом орграфа G (т. е.
*) Здесь, как обычно, предполагается, что орграф G «расширен» до некоторого полного орграфа G' и дугам, отсутствующим в G, но принадлежащим полному орграфу G*, приписаны бесконечные веса.— Прим. ред.
ответом на задачу i). Если же решение имеет бесконечное значение, то G не имеет гамильтонова цикла. С другой стороны можно дать еще одну интерпретацию задачи i). Рассмотрим снова полный орграф GT с общей матрицей весов дуг \сц\ и рассмотрим задачу нахождения такого гамильтонова цикла, в котором самая длинная дуга ‘) минимальна. Эту задачу можно назвать минимаксной задачей коммивояжера, оттеняя ее «минимаксную природу» (по сравнению с классической задачей коммивояжера), которую в той же терминологии можно было бы назвать минисуммной задачей. Покажем теперь, что задача (i) действительно эквивалентна минимаксной задаче коммивояжера.
В вышеупомянутом полном орграфе Gy мы можем наверняка найти гамильтонов цикл. Пусть это будет цикл Фп и пусть вес самой длинной его дуги равен cv Удалив из Gx любую дугу, вес которой не меньше с15 получим орграф G2. Найдем в орграфе 6г гамильтонов цикл Ф2, и пусть вес его самой длинной дуги равен с2. Удалим из G2 любую дугу, вес которой не меньше с2, и так будем продолжать до тех пор, пока не получим орграф Gm+1, не содержащий никакого гамильтонова цикла. Гамильтонов цикл Фт в Gm (с весом ст) является тогда по определению решением минимаксной задачи коммивояжера, так как из отсутствия гамильтонова цикла в Gm+1 следует, что в Gv не существует никакого гамильтонова цикла, не использующего по крайней мере одну дугу с весом, большим или равным ст. Таким образом, алгоритм нахождения гамильтонова цикла в орграфе решает также минимаксную задачу коммивояжера. Наоборот, если мы располагаем алгоритмом решения последней задачи, то гамильтонов цикл в произвольном орграфе G может быть найден с помощью построения полного орграфа GT с тем же самым множеством вершин, что и в G, дугам которого, соответствующим дугам из G, приписаны единичные веса, а остальным дугам — бесконечные веса. Если решение минимаксной задачи коммивояжера для Gv имеет конечный вес (на самом деле равный единице), то в графе G может быть найден соответствующий гамильтонов цикл. Если же решение имеет бесконечный вес, то в графе G не существует никакого гамильтонова цикла. Следовательно, две указанные задачи можно рассматривать как эквивалентные, поскольку было продемонстрировано, что алгоритм нахождения гамильтонова цикла позволяет решать минимаксную задачу коммивояжера и наоборот.
Ввиду того что обе сформулированные выше задачи (i) и (ii) часто встречаются в практических ситуациях и (как мы увидим позже) задачу (i) саму по себе решить намного проще, чем как подзадачу задачи (ii), мы обе эти задачи рассмотрим отдельно в частях I и II настоящей главы.
*) То есть дуга с наибольшим весом.— Прим. ре8.
ЧАСТЬ I
Гамильтоновы циклы в графе
Пока неизвестно никакого простого критерия или алгебраического метода, позволяющего ответить на вопрос, существует или нет в произвольном графе G гамильтонов цикл. Критерии существования, данные в работах Поша [291, Нэша-Уильямса [251 и Оре [26], представляют теоретический интерес, но являются слишком общими и не пригодны для произвольных графов, встречающихся на практике (см. задачу 10.1). Алгебраические методы определения гамильтоновых циклов, появившиеся в литературе, не могут быть применены к задачам с более чем несколькими десятками вершин, так как они требуют слишком большого времени работы и большой памяти компьютера. Более приемлемым является способ Робертса и Флореса [30, 31], который не предъявляет чрезмерных требований к памяти компьютера, но время в котором зависит экспоненциально от числа вершин в графе. Однако другой неявный метод перебора [35, 6] имеет для большинства типов графов очень небольшой показатель роста времени вычислений в зависимости от числа вершин. Он может быть использован для нахождения гамильтоновых циклов в очень больших графах. В настоящей главе мы опишем алгебраический метод и два способа перебора.
Алгебраический метод
Этот метод основан на работе Йоу [37], Даниэльсона [И] и Дхавана [14] и включает в себя построение всех простых цепей с помощью последовательного перемножения матриц.
«Внутреннее произведение вершин» цепи z15 ж2, ж3, . . . . . ., ^_х, xh определяется как выражение вида z2 -х3 • . . . • xh_v не содержащее две концевые вершины *) хг и xh. «Модифицированная матрица смежности» В = [0 (г, ,?)] — это (и X п)-матрица, в которой Р (t, у) = xh если существует дуга из xt в х, и нуль в противном случае. Предположим теперь, что у нас есть матрица Рг = tPi (i, 7)1, где pt (г, j) — сумма внутренних произведений всех простых цепей длины I (/^1) между вершинами xt и Xj для X, ^ Xj. Положим pt (i, i) = 0 для всех I. Обычное алгебраическое произведение матриц BP, = P/+i= [p/+i (s, 7)] определяется как
Рг+i («» 0 = 2 0(’ kVPi (^ 0»(ЮЛ)
т. е. р{+1 (s, f) является суммой внутренних произведений всех цепей из xs в xt длины Z + 1. Так как все цепи из хк в xt, представленные внутренними произведениями из р, (к, t), являются
простыми, то среди цепей, получающихся из выражения (10.1), не являются простыми лишь те, внутренние произведения которых в рг (к, /) содержат вершину х8. Таким образом, если из Pz+i(si^) исключить все слагаемые, содержащие zs (а это можно сделать простой проверкой), то получим pl+1 (s1 t\ Матрица Р;-ц = = [j^z+i (st 0L все диагональные элементы которой равны 0, является тогда матрицей всех простых цепей длины I + 1.
Вычисляя затем В-Pz+1, находим Pz+2 и т. д., пока не будет построена матрица Рп-А, дающая все гамильтоновы цепи (имеющие длину п — 1) между всеми парами вершин. Гамильтоновы циклы получаются тогда сразу из цепей в РП_А и тех дуг из G, которые соединяют начальную и конечную вершины каждой цепи. С другой стороны, гамильтоновы циклы даются членами внутреннего произведения вершин, стоящими в любой диагональной ячейке матрицы В *Pn-i (все диагональные элементы этой матрицы одинаковые).
Очевидно, что в качестве начального значения матрицы Р (т. е. РА) следует взять матрицу смежности А графа, положив все ее диагональные элементы равными нулю.
Рис. 10.1. Граф из примера 2.1.1.
Пример. Рассмотрим граф, изображенный на рис. 10.1, матрица смежности которого равна
a b с d е
а bА = с d еа bА = с d е01010
а b
А = с d е
а b
А = с d е
00011
01001
00100
10100
и модифицированная матрица смежности
а
b
с
d
е
а
0
b
0
d
0
b
0
0
0
d
е
с
0
ь
0
0
е
d
0
0
с
0
0
е
а
0
с
0
0
В =
Положим Pj = А. Матрица Р' = В Pi получается равной
а
b
с
d
e
а
0
0
d
b
b
b
е
0
d + e
0
0
р;= с
е
0
е
b
b
d
0
с
0
0
c
е
0
а + с
0
a
c
Матрица Р2 почти такая же, как Р', — только подчеркнутые элементы в Р' надо заменить нулями. Матрица Р3 = В -Р2 равна
a
b
c
d
e
a
be
de
bd +be
0
de
b
0
de + ea + ec
0
ea
de
P-3= c
be
ea + ec
bd + be
ea
0
d
ce
0
0
cb
cb
e
ce
0
ad
ah* cb
ab + cb
Р3 получается из Р3 после замены подчеркнутых элементов нулями:
а
b
c
d
e
а
dee
0
0
bea
bdc + bdc
ь
dee
0
ead
eab + ecb
deb
с
0
0
ead
bea + eab + ecb
bdc
d
cbe
cea
0
cea
0
е
cbe
adc + cea
abd + abe
cea
adc
Матрица Р4 гамильтоновых цепей равна
a
b
c
d
e
a
0
0
0
0
bdc + deb
b
dee
0
ead
0
0
P4= C
0
0
0
bea + eab
0
d
cbe
cea
0
0
0
e
0
adc
abd
0
0
Гамильтоновы цепи abdce и adcbe, соответствующие элементу (1,4) вышенаписанной матрицы, дают гамильтоновы циклы abdc'ea и adcbea, если добавить замыкающую дугу (е, а). Все другие гамильтоновы цепи в Р4 приводят к тем же самым двум гамильтоновым циклам, и поэтому в графе G существует только два таких цикла.
Недостатки этого метода совершенно очевидны. В процессе умножения матриц (т. е. когда I увеличивается) каждый элемент матрицы Pz будет состоять из все большего числа членов вплоть до некоторого критического значения Z, после которого число членов снова начнет уменьшаться. Это происходит вследствие того, что для малых значений I и для графов, обычно встречающихся на практике, число цепей длины Z + 1, как правило, больше, чем число цепей длины I, а для больших значений Z имеет место обратная картина. Кроме того, так как длина каждого члена внутреннего произведения вершин увеличивается на единицу, когда Z увеличивается на единицу, то объем памяти, необходимый для хранения матрицы Pz, растет очень быстро вплоть до максимума при некотором критическом значении Z, после которого этот объем снова начинает уменьшаться.
Небольшая модификация вышеприведенного метода позволяет во много раз уменьшить необходимый объем памяти и время вычислений. Так как нас интересуют только гамильтоновы циклы и, как было отмечено выше, они могут быть получены из членов внутреннего произведения любой диагональной ячейки матрицы ВРп-1,то необходимо знать только элемент pn_t (1,1). При этом на каждом этапе не обязательно вычислять и хранить всю матрицу Р;, достаточно лишь найти первый столбец из Рг. Эта модификация уменьшает необходимый объем памяти и время вычислений в п раз. Однако даже при использовании этой модификации программа для ЭВМ [14], написанная на языке PL/1, который позволяет построковую обработку литер и переменное распределение памяти, не была способна найти все гамильтоновы циклы в неориентированных графах с более чем примерно 20 вершинами и средним значением степени вершины, большим 4. Использовалась вычислительная машина ИБМ 360/65 с памятью 120 000 байтов. Более того, даже для графа с вышеуказанными «размерами» данный метод использовал фактически весь объем памяти и время вычислений равнялось 1,8 минуты. Не такое уж незначительное время для столь небольшого графа.
Метод перебора Робертса и Флореса
В противоположность алгебраическим методам, с помощью которых пытаются найти сразу все гамильтоновы циклы и при реализации которых приходится хранить поэтому все цепи, которые могут оказаться частями таких циклов, метод перебора имеет дело с одной цепью, непрерывно продлеваемой вплоть до момента, когда либо получается гамильтонов цикл, либо становится ясно, что эта цепь не может привести к гамильтонову циклу. Тогда цепь модифицируется некоторым систематическим способом (который гарантирует, что в конце концов будут исчерпаны все возможности), после чего продолжается поиск гамильтонова цикла. В этом способе для поиска требуется очень небольшой объем памяти и за один раз находится один гамильтонов цикл.
Следующая схема перебора, использующая обычную технику возвращения, была первоначально предложена Робертсом и Флоресом [30, 31]. Начинают с построения (А X п)-матрицы М = [т,,], где элемент mi;- есть i-я вершина (скажем а:д), для которой в графе G = ^Х, Г) существует дуга (ж,, xq\ Вершины xq в множестве Г (2,) можно упорядочить произвольно, образовав элементы /-го столбца матрицы М. Число строк к матрицы М будет равно наибольшей полустепени исхода вершины.
Метод состоит в следующем. Некоторая начальная вершина (скажем, х^ выбирается в качестве отправной и образует первый
элемент множества 8, которое каждый раз будет хранить уже найденные вершины строящейся цепи. К 8 добавляется первая вершина (например, вершина а) в столбце xv Затем к множеству 8 добавляется первая возможная вершина (например, вершина 6) в столбце а, потом добавляется к 8 первая возможная вершина (например, вершина с) в столбце b и т. д. Под «возможной» вершиной мы понимаем вершину, еще не принадлежащую 8. Существуют две причины, препятствующие включению некоторой вершины на шаге г в множестве 5 = {x^ а, Ь, с, . . ., ж,.,, £г}. Или (1) в столбце хт нет возможной вершины, или (2) цепь, определяемая последовательностью вершин в 8, имеет длину п— 1, т. е. является гамильтоновой цепью.
В случае (2)
в графе G существует дуга (хг, ^) и поэтому найден гамильтонов цикл, или
дуга (zr, ^) не существует и не может быть получен никакой гамильтонов цикл.
В случаях (1) и (26) следует прибегнуть к возвращению, в то время как в случае (2а) можно прекратить поиск и напечатать результат (если требуется найти только один гамильтонов цикл), или (если нужны все такие циклы) произвести печать и прибегнуть к возвращению. Возвращение состоит в удалении последней включенной вершины хт из 8, после чего остается множество 8 = = {xj, а, Ь, с, . . ..^„J, и добавлении к 8 первой возможной вершины, следующей за хГ1 в столбце xr_v матрицы М. Если не существует никакой возможной вершины, делается следующий шаг возвращения и т. д.
Поиск заканчивается в том случае, когда множество 8 состоит только из вершины х^ и не существует никакой возможной вершины, которую можно добавить к 8, так что шаг возвращения делает множество 8 пустым. Гамильтоновы циклы, найденные к этому моменту, являются тогда всеми гамильтоновыми циклами, существующими в графе.
Пример. Рассмотрим граф, изображенный на рис. 10.2. Матрица М приводится ниже, вершины в каждом столбце расположены в алфавитном порядке:
а 6 с d е f
Ibсасса
М =2—еdfdb
3—_____
Рис. 10.2. Граф из примера 2.2.1.
Поиск всех гамильтоновых циклов производится так (вершина а берется в качестве отправной вершины):
Множество 8
Комментарии
1.
а
Добавляем первую возможную верши ну в столбце а (т. е. вершину Ь).
-2.
а, b
Добавляем первую возможную вершину в столбце b (т. е. вершину с).
3.
а, Ь,
с
Первая вершина (а) в столбце с не является возможной (а ^8), добавляем следующую вершину в столбце (т. е. вершину d).
4.
а, Ь,
с, d
Добавляем вершину /.
5.
а, Ь,
с, d, /
В столбце / нет возможной вершины, возвращение.
6.
а, Ь,
с, d
В столбце d не существует возможной вершины, следующей за /. Возвращение.
7.
а, Ь,
С
Аналогично предыдущему. Возвращение.
8.
а, b
Добавляем вершину е.
->•9.
а, ь,
е
Добавляем вершину с.
10.
а, ь.
е, с
Добавляем вершину d.
11.
а, Ь,
е, с, d
Добавляем вершину /.
12.
а, Ь,
е, с, d, /
Гамильтонова цепь. Дуга (/. а) дает гамильтонов цикл. Возвращение.
13.
а, Ь,
е, с, d
Возвращение,
14.
а, Ь,
в, с
Возвращение.
15.
а, Ь,
е
Добавляем вершину d.
16.
а, Ь,
е, d
Добавляем вершину /.
17.
а, Ь,
е, d, /
Добавляем вершину с.
18.
д, Ь,
д, d. j, с
Гамильтонова цепь. Цепь замыкается дугой (с, д). Возвращение.
19.
д, Ь,
е, d, /
Возвращение.
20.
а, Ь,
е, d
Возвращение.
24.
а, Ь,
е
Возвращение.
22.
а, Ь,
Возвращение.
23.
а
Возвращение.
24.
0
Конец поиска.
Рис. 10.3а. (i € Г ^ и Г-1 (х)с с 5.) Следующей дугой должна быть (хг, х).Рис. 10.3а. (i € Г ^ и Г-1 (х)с с 5.) Следующей дугой должна быть (хг, х).Рис. 10.36. (х ^ Г-1 (xj) и Г (x)cz с S U Ц*}.) Следующей дугой не должна быть (хг, х*).Рис. 10.36. (х ^ Г-1 (xj) и Г (x)cz с S U Ц*}.) Следующей дугой не должна быть (хг, х*).2.2.2. Улучшение основного метода. Допустим, что на некотором этапе поиска построенная цепь задается множеством 8 = = {^i, х.^ . . ., хг} и что следующей вершиной, которую предполагается добавить к 8, является х* $ 5. Рассмотрим теперь две
Рис. 10.3а. (i € Г ^ и Г-1 (х)с с 5.) Следующей дугой должна быть (хг, х).
Рис. 10.3а. (i € Г ^ и Г-1 (х)с с 5.) Следующей дугой должна быть (хг, х).
Рис. 10.36. (х ^ Г-1 (xj) и Г (x)cz с S U Ц*}.) Следующей дугой не должна быть (хг, х*).
Рис. 10.36. (х ^ Г-1 (xj) и Г (x)cz с S U Ц*}.) Следующей дугой не должна быть (хг, х*).
следующие ситуации, в которых вершина является изолированной в подграфе, остающемся после удаления из G = (X, Г) всех вершин, образующих построенную до этого цепь.
Если существует такая вершина х £ X — 8, что х б Г (хг) и Г'1 (z) £ 5 (см. рис. 10.3а), то, добавляя к 8 любую вершину х*, отличную от х, мы не сможем в последующем достигнуть вершины х ни из какой конечной вершины построенной цепи, и, значит, эта цепь не сможет привести нас к построению гамильтонова цикла. Таким образом, в этом случае х является единственной вершиной, которую можно добавить к 8 для продолжения цепи.
Если существует такая вершина х ^ X— 8, что х б Г"1^) и Г (ж) ст 8 (J {ж*} для некоторой другой вершины х*, то х* не может быть добавлена к 8, так как тогда в остающемся подграфе не может существовать никакой цепи между х и а^. Цепь, определяемая множеством 8 U {ж*}, не может поэтому привести к гамильтонову циклу, а в' качестве кандидата на добавление к множеству 8 следует рассмотреть другую вершину, отличную от х* (см. рис. 10.36).
В только что приведенном примере ситуация (а) возникает на шаге 2, когда множество S есть {а, by Если заметить теперь, что для вершины е справедливо соотношение Г-1 (е) = {6} cz S, то становится ясным, что е следует добавить в качестве очередной вершины к множеству {а, ЬУ Поэтому в приведенном примере можно опустить шаги 3—8 и сразу от шага 2 перейти, как показано стрелкой, к шагу 9.
Проверка условий (а) и (б) будет, конечно, замедлять итеративную процедуру, и для небольших графов (менее чем с 20 вершинами) не получается никакого улучшения первоначального алгоритма Робертса и Флореса. Но для больших графов эта проверка приводит к заметному сокращению необходимого времени вычислений, уменьшая его обычно в 2 или более раз. Подробные результаты вычислений для различных методов приводятся на рис. 10.7 в разд. 3.
2.3. Мультицепной метод
После внимательного изучения операций алгоритма перебора Робертса и Флореса становится очевидным, что даже после сделанного улучшения не слишком много внимания уделяется оставшейся части графа, в которой берется последовательность вершин, продолжающих построенную цепь. Обычно построение цепи So в процессе поиска (5О рассматривается и как упорядоченное множество вершин, и как обычное множество) подразумевает существование еще каких-то цепей в других частях графа. Эти предполагаемые цепи либо помогают быстрее построить гамильтонов цикл, либо указывают на отсутствие такого цикла, содержащего цепь 5О, что позволяет сразу прибегнуть к возвращению.
Метод, описанный в этом разделе, был предложен первоначально Селби [35] для неориентированных графов; здесь дается его небольшое видоизменение для ориентированных графов. Метод состоит в следующем.
Допустим, что на некотором этапе поиска построена цепь So и возможны цепи S17 S2, . . . . Рассмотрим какую-либо «среднюю» вершину одной из этих цепей (слово «средняя» здесь означает любую вершину, отличную от начальной и конечной). Поскольку эта вершина уже включена в цепь с помощью двух дуг, то очевидно, что все другие дуги, входящие или выходящие из такой вершины, могут быть удалены из графа. Для любой начальной вершины вышеуказанных цепей можно удалить все дуги, исходящие из нее (за исключением дуги, включающей эту вершину в цепь), а для любой конечной вершины можно удалить все дуги, оканчивающиеся в ней (опять-таки за исключением дуги, включающей ее в цепь). Кроме того, за исключением слу-
чая, когда существует только одна цепь (скажем, So), проходящая через все вершины графа G (т. е. когда 8О — гамильтонова цепь), любая имеющаяся дуга, ведущая из конца любой цепи в начальную вершину этой же цепи, может быть удалена, так как такая дуга замыкает не гамильтоновы циклы.
"Удаление всех этих дуг даст граф со многими вершинами — всеми «средними» вершинами цепей.— в котором только одна дуга оканчивается в каждой вершине и только одна дуга исходит из нее. Все эти «средние» вершины и дуги, инцидентные им, удаляются из G, а вместо них для каждой цепи вводится единственная дуга, идущая от начальной вершины цепи до ее конечной вершины. В результате всего этого получается редуцированный граф Gk = (Хк1 1\), где к — индекс, показывающий номер шага поиска.
Рассмотрим теперь продолжение цепи So (сформированной в результате поиска), осуществляемое путем добавления вершины х^ которая является возможной в смысле алгоритма Робертса и Флореса, т. е. в Gk существует дуга, исходящая из конечной вершины цепи 80 — обозначим эту вершину е (S^ — и входящая в вершину Xj. Добавление xj к 80 осуществляется так:
Сначала удаляются из Gk все необходимые дуги, т. е.
все дуги, оканчивающиеся в xj или исходящие из е (So), за исключением дуги (с (50), х^
все дуги, выходящие из х5 в начальную вершину пути So;
если окажется, что Xj является начальной вершиной другой цепи Sj, то следует удалить также любую дугу, ведущую из конечной вершины цепи Sj в начальную вершину цепи 8О.
Обозначим граф, оставшийся после удаления всех дуг, через G^ = (Xkl I>).
Если существует вершина х в графе Gkl не являющаяся конечной ни для одной из цепей S01 Slf . . . и которая после удаления дуг имеет полустепень захода, равную единице, т. е. | Г^1 (х) | = = 1, то выкинуть все дуги, исходящие из вершины и = Г^ ^, за исключением дуги (у, х).
Если существует вершина х графа Gk, не являющаяся начальной ни для какой цепи и которая после удаления дуг имеет полустепень исхода, равную единице, т. е. 1 Гк' (х) | = 1, то выкинуть все дуги, исходящие из вершины х, за исключением дуги (х, Pv (х)).
Перестроить все цепи и удалить дуги, ведущие из конечных в начальные вершины.
Повторять шаг 2 до тех пор, пока можно удалять дуги.
Удалить из оставшегося графа Gk все вершины, полустепени захода и исхода которых равны единице, т. е. вершины, которые стали теперь «средними» вершинами цепей. Это удаление производится так, как это было описано выше, в результате чего
получается новый редуцированный граф Gk+11 заменяющий предыдущий граф Gk.
Совершенно очевидно, что если добавление вершины Xj к цепи 50 делает полустепень захода или полустепень исхода (или обе) некоторой вершины х в конце шага 2 равной нулю, то не существует никакого гамильтонова цикла. В этом случае вершина х^ удаляется из множества 50 и в качестве другой вершины xj, позволяющей продолжить цепь 8О, выбирается некоторая другая вершина из множества Г^ [е (50)], и так до тех пор, пока не будет исчерпано все множество Гь* \е (Зо)] и придется прибегнуть к возвращению (т. е. е (8^ удаляется из 8О и заменяется другой вершиной и т. д.). Отметим, что операция возвращения предполагает хранение достаточной информации об удаленных дугах в шагах 1 и 2 на каждом этапе &, чтобы можно было по графу Gk+1 восстановить граф Gk при любых к, если приходится прибегать к возвращению.
Если (на некотором этапе) в конце шага 2 установлено, что только одна цепь проходит далее через все вершины, то в этом случае существование гамильтонова цикла может быть выявлено непосредственно. Если цикл при этом не найден (или если он найден, но надо найти все гамильтоновы циклы), то нужно прибегнуть к возвращению.
Лучший вычислительный путь состоит в том, чтобы при каждой итерации шага 2 (за исключением последней) проверять отличие от нуля полустепеней захода и исхода всех вершин графа Gk. Поэтому как только одна из них станет равной нулю, сразу же применяется операция возвращения, и если найдена гамильтонова цепь, то получается и гамильтонов цикл без проверки существования дуги возврата ).
Если не возникает ни один из вышеупомянутых случаев, т. е. если (на некотором этапе к) в конце шага 2 остается более чем одна цепь и все полустепени являются ненулевыми, то нельзя еще сделать никаких выводов. Тогда вершина х^ добавляется к 50 и выбирается другая вершина для дальнейшего продолжения цепи. Шаги 1, 2, 3 повторяются, начиная с нового редуцированного графа.
.1. Пример. В настоящем примере будет показано, как итеративный процесс шага 2 приводит ко многим цепям, получающимся из основной цепи 50, и как эти цепи могут привести к быстрому окончанию производимого поиска.
Рассмотрим часть графа, изображенную на рис. 10.4. Сначала полустепени захода и исхода каждой вершины больше единицы.
Первая итерация. Начнем с вершины 1 как начальной вершины строящейся цепи 80, и попробуем добавить к 50, например. вершину 6, так что цепь So будет {1, 6}.
Шаг 1 описанного метода удалит тогда из G дуги (1,2), (1,3), (1,10), (2,6).
Шаг 2 укажет теперь вершину 10, как имеющую полустепень захода 1 и дающую возможную цепь ST = {4,10}, после чего
Рис. 10.4. Граф из примера разд. 2.3.1.
удаляется дуга (4,2). Второе применение шага 2 дает вершину 2 с полустепенью захода 1 и возможную цепь S2 = {3,2}, после чего удаляются дуги (3,12), (3,5) и (3,4). Третье применение шага 2 даст вершину 4 с полустепенью захода 1 и приводит к продолжению цепи ^ после добавления дуги (11,4), так что цепь ^ есть теперь {11,4,10}. В силу шага 2 дуга (11,9) удаляется, и то же относится к дуге (10,11), замыкающей цепь Sp Четвертое применение шага 2 не приводит к дальнейшим удалениям, и первый редуцированный граф, получающийся в конце шага 3, показан на рис. 10.5а, где цепи 50, ^ и 52 изображены жирными линиями.
Вторая итерация. Так как существует более чем одна цепь и так как полустепени захода и исхода всех вершин ненулевые,
то мы продолжаем расширять цепь 50 дальше. Пусть, например, из множества Г (е (50)) = {8,5,7} выбрана вершина 8, так что цепь So превратится в цепь {1, 6, 8}. Шаг 1 даст теперь вершину 5, обе полустепени которой равны 1, и вершину 1 с полустепенью захода, равной 1. Взяв сначала вершину 5 и сделав два раза шаг
Рис. 10.5а. Первый редуцированный граф G^*
2, придем к добавлению дуг (2,5) и (5,13) для расширения цепи 52, которая превращается теперь в {3, 2, 5, 13}. Дуги (2, 13), (12,13) и дуга возврата (13, 3) удаляются ^.Второе применение шага 2 дает вершину 3 с полустепенью захода 1, а также вершину 1 (с полустепенью захода 1), полученную на предыдущем этапе. Взяв вершину 3, добавим к 82 дугу (12, 3), после чего получим цепь {12, 3, 2, 5, 13} и удалим дугу (12, 11). Третье применение шага 2 все еще дает вершину 1 с полустепенью захода 1 и больше не дает никаких вершин. К цепи 5О добавляется дуга (9,1), цепь 80 превращается в {9, 1, 6, 8}, а дуги (9, 7), (9,14) и дуга возвра-
т) Здесь термин «дуга возврата» используется в несколько ином смысле, чем на стр. 255: эта дуга замыкает не гамильтонову, а некоторую промежуточную цепь.— Прим. ред.
17 н. Кристофидес
та (8,9) удаляются. Четвертое применение шага 2 укажет две вершины 9 и 7 с полустепенями захода 1. Взяв сначала вершину 9, добавим дугу (10,9), соединяющую цепи S] и So и дающую новую цепь 50 = {И, 4, 10, 9, 1, 6, 8}. Дуга (10, 7) удаляется.
Рис. 10.56. Граф Gj после четвертого применения шага 2 на второй итерации.
Пятое применение шага 2 дает вершину 7 с полустепенью захода 0. Это говорит о том, что описанный поиск не может привести ни к какому гамильтонову циклу.
Граф G*v получающийся в конце четвертого применения шага 2t показан на рис. 10.56. Теперь следует восстановить все удаленные во время второй итерации дуги, чтобы вернуться к графу Gx из рис. 10.5а, и произвести операцию возвращения, т. е. удалить из So вершину 8, заменить ее другой возможной вершиной (5 или 7) и продолжать применять шаги 1, 2, 3 и т. д.
Из приведенного примера видно, что это очень сильный метод поиска. После двух итераций он позволяет сделать вывод, что никакой гамильтонов цикл не может содержать в качестве своей части цепь {1, 6, 8}. Это 1/12 всех попыток поиска, поскольку полустепень исхода вершины 1 равна 4, а вершины 6 — 3. Конечно, указанный вывод относится только к части графа, изображенной на рис. 10.4, которая сама может принадлежать к намного большему графу. Можно поэтому ожидать, что при заданном
среднем значении степеней вершин поиск лишь слабо зависит от размера (числа вершин) графа. Этот факт будет продемонстрирован на экспериментальных данных в следующем разделе.
Напротив, метод Робертса и Флореса (или его улучшенный вариант) для достижения того же результата требует очень длительного поиска, так как в нем существенно перебираются все цепи, начинающиеся с 1, 6, 8, ... , прежде чем произойдет возвращение к 1, 6,. . . . Очевидно, что затрачиваемая работа зависит как от размера графа, так и от степеней вершин.
Сравнение методов поиска гамильтоновых циклов
В настоящем разделе сравниваются первоначальный вариант алгоритма Робертса и Флореса, его улучшенный вариант и мульти- цепной метод. Эти три метода сравниваются по необходимому времени вычисления для нахождения одного гамильтонова цикла,, если таковой существует, или доказательства его отсутствия. Проверка была проведена на случайно выбранных графах, степени вершин которых лежат в предписанных границах. Всего было использовано около 200 графов, для которых приводятся средние результаты. Во всех графах оказались гамильтоновы циклы.
На рис. 10.6 показана зависимость требуемого алгоритмом Робертса и Флореса времени вычисления от числа вершин графа; степени вершин лежат в пределах 3 — 5. Ввиду сильных вариаций требуемого времени для графов одинаковых размеров приводятся три кривые, характеризующие среднее, максимальное и минимальное время, полученное для различных графов с одинаковым числом вершин. Следует заметить, что ца рис. 10.6 применен полулогарифмический масштаб, что говорит об экспоненциальном характере зависимости. Формула, дающая приближенную зависимость времени Т от числа вершин п графа со степенями вершин в пределах 3 — 5, такова:
Т = 0,85.10'4.10°’155п (секунд на CDC 6600).
Улучшенный вариант алгоритма Робертса и Флореса не намного лучше первоначального алгоритма. Необходимое время вычисления в нем все еще зависит (более или менее) экспоненциально от п. Зависимость отношения времен вычисления при использовании этих двух алгоритмов для неориентированных графов со степенями вершин 3 — 5 приведена на рис. 10.7. Из этого рисунка видно, что «улучшенный» вариант действительно хуже для графов малых размеров, хотя для больших графов (с более чем 20 вершинами) он позволяет сэкономить более 50% времени: вычисления.
По отношению к тому же вышеупомянутому множеству графов мультицепной алгоритм оказался очень эффективным. Это видно из рис. 10.8, на котором показано необходимое для этого алгоритма время вычисления (здесь применен линейный масштаб). График показывает, что время растет очень медленно в зависимости
Рис. 10.6. Вычислительная реализация алгоритма Робертса и Флореса.
от числа вершин и поэтому алгоритм применим для очень больших графов 1'). Другим преимуществом этого метода является очень слабая вариация времени вычисления для различных графов одинакового размера, и поэтому можно оценить с разумной степенью доверительности время вычисления, необходимое для различных задач. Кроме того, эксперименты показывают, что
г) Отсюда не следует делать вывод, что алгоритм гарантированно заканчивается за время, пропорциональное nh при некотором А> 0. На самом деле можно подобрать примеры, которые.требуют намного большего времени, чем это показано на рис. 10.8. Такие контрпримеры строятся с помощью графов, не содержащих гамильтоновых циклов.
Рис. 10.7. Реализация улучшенного алгоритма Робертса и Флореса. Го — время вычисления для первоначального метода, Tt — время вычисления для улучшенного метода.
Рис. 10.8. Вычислительная реализация мультицепного алгоритма.
для графов, степени вершин которых лежат в вышеприведенных пределах 3 — 5, метод по существу не чувствителен к степеням вершин.
Вычислительные результаты, показанные на рис. 10.6 —■ 10.8, относятся к поиску одного гамильтонова цикла в графе. Небезынтересно сказать несколько слов о вычислениях с тремя алгоритмами, когда искались все гамильтоновы циклы. Так, для неориентированного графа с 20 вершинами со степенями вершин 3 —5 потребовалось 2 с, чтобы найти все гамильтоновы циклы, следуя алгоритму Робертса и Флореса (этих циклов оказалось 18). Улучшенный вариант того же алгоритма потребовал 1,2 с, а мульти- цепной алгоритм — 0,07 с. Вычисления проводились на ЭВМ CDC 6600.
Простая задача планирования
Во введении к данной главе мы описали пример промышленной фирмы, выпускающей продукты рь р2, . . ., рп с использованием единственного типа аппаратуры в циклическом режиме, и поставили вопрос о порядке производства продуктов, требующем наименьшего возможного числа перенастроек аппаратуры. Был построен граф G = (X, Л), вершины xt которого представляют продукты р, (i = 1, 2, . . ., п), а дуги (ж;, х^ показывают, что продукт pj можно производить вслед за продуктом pt без перенастройки.
Если граф G = (X, Л) имеет гамильтонов цикл, например х< , Zi2, Xi,, . . ., Xin, то соответствующая последовательность продуктов р^, р,,, pi,, . . •, Pin может быть произведена на аппаратуре без какой-либо перенастройки, так как по определению гамильтонова цикла
(tr^, ^^^ € Л для всех к = 1, 2, . . ., (xin+1 = х,^ и Л определено выше как множество {(;£;, Xj) | ctj = 0}.
Если G не имеет никакого гамильтонова цикла, то мы можем построить граф G} = (Хь Л1), где
X^XUtyJ
и
Л, = Л и {х, У1) | 2 € X} и {(у,, х) I х € х},
т. е. ввести в граф G фиктивную вершину уг вместе с дугами, ведущими в нее и исходящими из нее в каждую действительную вершину графа G.
Если у графа Gx существует гамильтонов цикл, то он будет иметь вид Xi„ Xi,, . . ., Xir, Ух , ^iT+i, • • •, ^w что приводит к еле-
дующей последовательности производства продуктов
Pir+t' Pirtl' • • - i Pin' P'l' Pil' • • P'r
с единственной операцией перенастройки после окончания производства последнего продукта и началом производства первого. Таким образом, фиктивная вершина играет роль метки, показывающей то место в последовательности, где необходима перенастройка аппаратуры. В терминах графа фиктивная вершина и ассоциированные с ней дуги обеспечивают существование цепи между двумя действительными вершинами. Таким образом, если существует последовательность продуктов с одной перенастройкой, т. е. если в G существует гамильтонов цикл, при условии, что можно использовать одну «дугу» (ж,, хй $ А, то добавление вершины ?/] к G всегда приведет к существованию в GT гамильтонова цикла, так как лишняя необходимая «дуга» (ж,, ж,) может быть заменена двумя фиктивными дугами (х^ у^ и (уи х;\
Если граф Ga не имеет гамильтонова цикла, то мы построим граф G2 = (Х2. Л2) вместо графа Gn где
Х2 = Xt U {у2} и
Л2 = Л и {(я, у2) | ж £ X} и {(у2, ж) | ж g X},
и аналогично будем действовать далее.
Теорема 1. Если граф Gm = (Xm, Лт), определяемый как
т
Xm = XuV\jM'(10.2)
j=l
тт
лт = Л и I и {(*, У;) | X ex}] и [ У {(У;, ^) I х G Х}1,(10.3)
j=l5=1
содержит гамильтонов цикл, а граф Gm-t такого цикла не содержит, то число т есть минимальное число необходимых перенастроек, и если гамильтонов цикл в Gm имеет вид
xia, g, xw ..., хч, g, xw ..., xv g,
Ziv+1, . .., Xi6, ym , Xi^, . .., Ж,„,
то продукты должны производиться в последовательности
Аа+1> • • •, Pi@' затем pip+i, .. ., pi^ . .. и т. д. ...
затем р^+1, . . ., Ргп, Pip • Рга.
Доказательство. Доказательство следует непосредственно из рассуждений, предшествующих теореме, с использованием индукции.
4Л. Вычислительные аспекты
В рассуждениях предыдущего раздела граф G каждый раз пополнялся единственной фиктивной вершиной. Если оптимальное решение задачи содержит т перенастроек аппаратуры, то нужно будет сделать m + 1 попыток отыскать гамильтоновы циклы в графах С, Gb . . ., Gmi причем только последняя из этих попыток окажется успешной и приведет к решению задачи. Очевидно, что число тп ограничено сверху величиной пив общем случае в практических задачах оно будет лишь небольшой частью числа п. Тем не менее с вычислительной точки зрения необходимы различные процедуры для проверки наличия в графе гамильтоновых циклов и построения таких циклов, так как оказывается [6], что проще найти гамильтонов цикл в графе, имеющем такой цикл, чем доказать, что не существует никакого гамильтонова цикла в графе, его не имеющем. Этот факт подсказывает, что более подходящим будет алгоритм, который начинает с верхней границы В для оптимального (минимального) числа перенастроек аппаратуры и последовательно дает и проверяет графы GB, GB_tl . . . и т. д. до тех пор, пока не будет найден граф G^^, не имеющий гамильтоновых циклов. Краткое описание такого алгоритма дается ниже.
Шаг 1. Найти верхнюю границу В для оптимального (минимального) числа необходимых перенастроек аппаратуры (см. приложение).
Шаг 2. Используя формулы (10.2) и (10.3), построить граф
Шаг 3. Определить, имеет ли граф GB гамильтонов цикл. Если да, то хранить этот цикл в виде вектора Н, записав его на место предыдущего хранящегося цикла, и перейти к шагу 4 или шагу 5.
Шаг 4. В <т— В — 1, перейти к шагу 2.
Шаг 5. Останов, т = В + 1 является минимальным числом перенастроек аппаратуры, и последняя последовательность в Н является требуемой последовательностью производства продуктов.
Шаг 1 приведенного выше алгоритма требует дальнейших пояснений. Очевидно, что чем более точной будет начальная верхняя граница У, тем меньшее число итераций основного алгоритма придется сделать. Процедура получения хорошей оценки для верхней границы дана в приложении. Существование гамильтонова цикла в графе Gb может быть установлено с использованием мультицепного алгоритма разд. 2.3.
ЧАСТЬ II
Задача коммивояжера
Задача коммивояжера тесно связана с несколькими другими задачами теории графов, обсуждаемыми в других частях этой книги. Здесь мы изучим две такие связи — с задачей о назначениях (см. гл. 12) и с задачей о кратчайшем остове (см. гл. 7). Обе эти задачи могут быть решены намного проще, чем задача коммивояжера, и можно исследовать эти связи для того, чтобы разработать эффективный метод решения последней задачи.
Нижняя граница из задачи о назначениях
Линейную задачу о назначениях для графа с произвольной матрицей весов С = k^-l можно сформулировать так (см. гл. 12).
Пусть [^j] — (rax га)-матрица, в которой £^- = 1, если вершина х^ «назначена» к вершине х^ и ^ = 0, если xt не назначена к х^. Такую же схему можно использовать и в задаче коммивояжера, полагая ^i3 = 1, если коммивояжер едет непосредственно из х^ в Xj, и ^i3- = 0 в противном случае. В этой последней задаче можно положить cit = оо (i = 1, . . ., га), чтобы устранить бессмысленные решения с = 1.
Теперь задача о назначениях формулируется так.
Найти величины ^-;, минимизирующие
п т
2=2 2 CijSir(10'4>
j=li=l
при условии, что
2 ^-=2^ = 1?(Ю-5>
(для всех i, j = 1, 2, . . п)
£^ = 0 или 1.(10.6)
Условие (10—5) просто гарантирует, что решение будет циклическим, т. е. в каждую вершину входит и из нее выходит одна дуга.
Уравнения (10.4) — (10.6) вместе с дополнительным ограничением, состоящим в том, что решение должно давать единственный цикл (гамильтонов), а не просто некоторое число несвязных циклов также могут быть использованы для формулировки задачи коммивояжера. Заметим, что дополнительное условие си = оо
можно интерпретировать как ограничение, устраняющее возможность появления в решении задачи о назначениях циклов длины 1. Так как добавление любого ограничения в задаче о назначениях не может увеличить минимального значения 2, определяемого из уравнений (10.4) — (10.6), то это значение 2 является нижней границей веса решения задачи коммивояжера для графа с матрицей весов [с/7].
Нижняя граница из задачи о кратчайшем остове
Для графа с симметричной матрицей весов (расстояний) С, г. е. для неориентированного графа, нижнюю границу для решения задачи коммивояжера можно получить по кратчайшему остову графа следующим образом. Пусть установлено, что ребро (хх, z2) входит в оптимальный цикл задачи коммивояжера. Если это ребро удалить из цикла, то получится цепь, состоящая из п — 1 ребер, проходящая через все вершины, начиная с вершины хх, и оканчивающаяся в х^. Так как вес кратчайшего остова, скажем L, является нижней границей для веса этой цепи, то длина кратчайшего остова плюс с (хх, х^) будет нижней границей для веса оптимального решения задачи коммивояжера.
В общем случае заранее не известно, какие ребра содержатся в оптимальном цикле, но самое длинное ребро в цикле должно -быть [15] не короче, чем max [с (хь s)]. Здесь s — вторая ближай-
шая вершина к вершине х^ Таким образом, величина
L-kmax [с (х^ s)](10.7)
xi
является нижней границей веса решения в задаче коммивояжера.
Двойственность
Определим G(TSP) как остовный подграф неориентированного графа G, образованный вершинами и теми ребрами графа G, которые использованы в оптимальном цикле коммивояжера. Аналогично определим графы G(AP) и G (SST), образованные геми же вершинами, но ребра которых берутся из оптимальных решений задачи о назначениях и задачи о кратчайшем остове соответственно.
Граф G(TSP) обладает следующими свойствами:
граф является связным, т. е. каждую вершину можно соединить с любой другой вершиной цепью,
степень каждой вершины равна 2, т. е. каждая вершина инцидентна двум ребрам.
На рис. 10.9 (а) приведен пример 5-вершинного графа G (TSP).
Граф 6(АР) не обязательно обладает свойством (1), как это видно из рис. 10.9 (б), но по определению обладает свойством {2). Если, однако, окажется, что для решения задачи о назначениях выполняется и свойство (1), то это решение будет также решением задачи коммивояжера.
Для графа G(SST) свойство (1) выполняется по определению, но он может не иметь свойства (2). Если же окажется, что для кратчайшего остова свойство (2) выполняется — за исключением двух «конечных» вершин (скажем, ^ и z2), которые необходимо
Рис. 10.9. Графы задач коммивояжера, о назначениях и о кратчайшем остове, (a) G(TSP). (б) G (АР). (в) G (SST).
имеют степень 1,— то кратчайший остов будет также кратчайшей депью, проходящей через все п вершин. Если, кроме того, ребро {^i, х2) входит в оптимальный цикл задачи коммивояжера, то ребра кратчайшего остова вместе с ребром (ж1т л2) дают решение задачи коммивояжера. (Если же (xj, z2) не обязательно принадлежит оптимальному циклу задачи коммивояжера, то необходима небольшая модификация; см. разд. 6.)
Таким образом, решения задач о назначениях и кратчайшем остове являются двойственными в том смысле, что они обладают свойствами, являющимися дополнительными по отношению к свойствам задачи коммивояжера. Теперь обнаруживаются два пути, могущие привести к решению последней задачи.
(I) Использовать решение задачи о назначениях (для которого выполняется свойство (2)) и добиться, чтобы это решение подчинялось свойству (1). (II) Использовать решение задачи о кратчайшем остове (для которого выполняется свойство (1)) и добиться выполнения свойства (2).
В разд. 6 этой главы мы исследуем путь, основанный на методе (II), а в в разд. 7 будет рассмотрен метод (I). Следует, однако, помнить, что хотя задача о назначениях определена для графов с произвольной структурой весов, кратчайший остов определяется только для неориентированных графов, т. е. для графов с симметричной (сц = е^) матрицей весов. Для несимметричных матриц весов (т. е. ориентированных графов) в гл. 7 было введено понятие древесности — аналог понятия остова. Таким образом, то, что было сказано о связи между задачей коммивояжера и кратчайшим остовом для неориентированных графов, имеет точный эквивалент, относящийся к связи между задачей коммивояжера и кратчайшей древесностью в случае ориентированных графов. В следующем разделе, однако, мы ограничимся симметричной задачей, так как распространение на более общий случай производится очевидным способом.
Задача коммивояжера и задачао кратчайшем остове
Как уже отмечалось в предыдущем разделе, симметричная задача коммивояжера тесно связана с задачей о кратчайшем остове графа G, и открытая задача коммивояжера (т. е. задача нахождения кратчайшей гамильтоновой цепи, в графе) практически эквивалентна задаче нахождения кратчайшего остова графа G, с тем ограничением, что никакая вершина не должна иметь степень, большую чем 2. Ввиду того, что открытая задача коммивояжера несколько более сильно связана с задачей о кратчайшем остове, чем замкнутая, мы начнем с рассмотрения сначала этой задачи, отложив на конец раздела обсуждение тех небольших изменений, которые необходимо сделать в замкнутой (обычной) задаче коммивояжера.
Задача нахождения кратчайшей гамильтоновой цепи была впервые исследована Део и Хакими [13], давшими ее формулировку на языке линейного программирования. Для полного графа с п вершинами их формулировка содержит п ^п +1 ) переменных и п (п + 3)/2 + 1 ограничений, которые формулируются явно. Наряду с этим имеется очень большое число ограничений, которые нельзя сформулировать явно, но которые рассматриваются неявно, причем за один раз (после каждого итерационного применения симплекс-метода) вводятся немногие из них. Хотя метод линейного программирования и дает всегда решение, он не будет здесь больше обсуждаться, так как обладает врожденной громоздкостью и неэффективностью.
Определения
Пусть G = (X, А^ — реберно-взвешенный неориентированный граф, a d^ — степень вершины xt в графе G. Число вершин в G будет обозначаться через п = X |.
Если задан остов Т = (X, Лг) графа G и степень вершины xt в дереве Т обозначена через d^ можно определить близость этого остова к гамильтоновой цепи одним из следующих двух способов:
8т = 5 (^Г —2)(10.8(a))
dT>2г
ИЛИ
ег= 2 14-21-2-1(Ю.8(б))
1=1
Выражение (10.8)(а) учитывает близость только по тем вершинам, для которых di "> 2, в то время как (10.8)(б) принимает во внимание и вершины степени 1. Оба эти выражения для гамильтоновой цепи дают ег = 0 и можно считать, что чем больше ег, тем сильнее дерево Т отличается от гамильтоновой цепи.
Теперь мы рассмотрим две следующие задачи.
Задача (а). Кратчайшая гамильтонова цепь. Найти кратчайший остов Т* = (X, Л*) графа G, такой, что степени всех вершин не превышают 2.
Задача (б). Кратчайшая гамильтонова цепь с отмеченными концевыми вершинами. Заданы две вершины хх и хг (д^,6 X),
найти кратчайший остов Т1*^ = (X, ^L2), такой, что степени всех вершин не превышают 2, а степени вершин хх и х2 равны 1.
Теперь нужно проверить подразумеваемое в сформулированных задачах утверждение о том, что дерево Т, все вершины которого имеют степень, не больше чем 2, является на самом деле гамильтоновой цепью. Действительно, так как Т — дерево, то степень никакой его вершины не может быть равной нулю и, следовательно, d^ = 1 или 2 для всех I. Пусть q вершин имеют степень 1, а п — q имеют степень 2. Число ребер в дереве равно
п
тт = у5^’(10.9)
1=1
так как при суммировании каждое ребро считается дважды, по одному разу для каждой из его конечных вершин.
Из уравнения (10.9) получим
™т = ^ [g + 2(n — g)l=n — ^-.
Так как число ребер в дереве равно п — 1, то q = 2 и поэтому ровно две вершины имеют степень 1, а п — 2 вершин — степень 2, т. е. Т является гамильтоновой цепью.
Алгоритм поиска, использующий дерево решений
Решение задачи (а). Мы рассмотрим сначала задачу (а) и объясним суть алгоритма, использующего дерево решений, на одном примере.
Пример. В качестве примера возьмем полный граф с 6 вершинами из работы Део и Хакими [13] со следующей матрицей весов:
1
2
3
4
5
6
1
0
4
10
18
5
10
2
4
0
12
8
2
6
3
С=кД =
4
10
12
0
4
18
16
18
8
4
0
14
6
5
5
2
18
14
0
16
6
10
6
16
6
16
0
С помощью метода гл. 7 легко найти кратчайший остов этого графа (без ограничений на df); он показан на рис. 10.10 (а). Из этого рисунка видно, что d^ = 3, а так как нам нужен кратчайший остов, для которого df^2, то можно сказать, что в окончательном ответе должно отсутствовать по крайней мере одно из ребер (2,1), (2,6) или (2,5). Таким образом, решение первоначальной задачи является решением по крайней мере одной из следующих трех частных задач, изображаемых узлами В, С и D дерева решений на рис. 10.11. На этом рисунке узел А представляет первоначальную задачу, а узлы В, С и D отвечают задачам, матрицы весов которых те же самые, что и матрица весов задачи А, но только ребрам (2,1), (2,6) или (2,5) соответственно приписан бесконечный вес.
На рис. 10.11 число, стоящее около узла, равно весу кратчайшего остова, соответствующего частной задаче, определяемой этим узлом. Следует заметить, что на любой стадии ветвления наименьший из весов у свободных узлов (т. е. узлов, в которых еще не произошло ветвление) является нижней границей для веса окончательного ответа.
Найдем теперь кратчайшие остовы Т (В), Т (С) и Т (Д), соответствующие узлам В, С и D. Результаты изображены соответственно на рис. 10.10 (б), (в) и (г); веса этих остовов указаны вблизи узлов.
Остовы Т (В) и Т (В) являются гамильтоновыми цепями (все- df ^2), в то время как Т (С) гамильтоновой цепью не является. Кратчайшим из этих двух остовов будет Т (В) с весом 23. Нижняя граница веса для окончательного ответа равна наименьшему из весов остовов Т (В), Т (С) и Т (В) и равна также 23, Таким
Рис. 10.10. Кратчайшие остовы в процессе поиска.
(а) Т* (А), вес 22. (б) Т* (В), вес 23. (в) Т* (С), вес 24. (г) Т* (Л), вес 25
гамильтонова негамиль- гамильтонова цель тоново цепь дерево
Рис. 10.11. Поиск с деревом решений.
образом, Т (5) дает оптимальный ответ, т. е. является кратчайшей гамильтоновой цепью. Следует заметить, что в узле С не нужно производить дальнейшее ветвление, так как любая гамильтонова цепь, полученная при таком ветвлении будет иметь вес, не меньший чем 24.
Итак, алгоритм, использующий дерево решений, позволил в этом частном примере получить оптимальный ответ, применяя алгоритм кратчайшего остова только 4 раза.
Другим побочным преимуществом данного метода является то, что он часто дает дополнительные гамильтоновы цепи, близкие к оптимальным, которые в практических задачах можно использовать в качестве алтернативного приемлемого решения.
Решение задачи (б). В этой задаче надо найти кратчайшую гамильтонову цепь с двумя заданными концевыми вершинами Ху и х2. Эту задачу можно свести к задаче (а), используя следующую теорему.
Теорема 2. Пусть С = [сг,1 — матрица реберных весов первоначального графа G и к — достаточно большое положительное число, большее чем вес любой гамильтоновой цепи. Тогда решение задачи (а) с матрицей реберных весов С', где
> (для всех Xj^Xy, х2)(10.10)> (для всех Xj^Xy, х2)(10.10)Cjt = Cjy + к, c’ii= cij + &’ C2ji = c2> + ^, Cj2 = Cj1 + к,
> (для всех Xj^Xy, х2)
(10.10)
> (для всех Xj^Xy, х2)
(10.10)
c\j = с^-+-2к, (для всех х{, Xj = Xy, х2) Cij = Cij,(для всех Ху, х^^ХутХ^
является решением задачи (б) с первоначальной матрицей весов. Доказательство. Каждая гамильтонова цепь относится к одной из следующих категорий:
Ху и х2 не совпадают ни с одной из ее концевых вершин; (2) одной из ее концевых вершин является или хг, или х2, (3) одной концевой вершиной является Ху, а другой х2. Вес гамильтоновой цепи с матрицей весов С' больше веса этой же цепи с матрицей С на величину:
4к, если цепь относится к категории (1);
Зк, если цепь относится к категории (2);
2к, если цепь относится к категории (3).
Так как к превосходит вес любой гамильтоновой цепи, то вес (для матрицы С') самой длинной гамильтоновой цепи категории (3) меньше, чем вес самой короткой гамильтоновой цепи категории (2), а вес самой длинной гамильтоновой цепи категории (2) меньше, чем вес самой короткой цепи категории (1). Таким образом, решение задачи (а) с матрицей весов С' даст кратчайшую
гамильтонову цепь категории (3), т. е. она будет решением задачи (б) с матрицей весов С. Это доказывает теорему.
В связи с этим следует отметить, что относительные веса всех гамильтоновых цепей в пределах одной категории не изменяются при преобразовании (10.10).
Алгоритм штрафования вершин
В этом алгоритме используется та же идея, что и доказанная выше теорема 2, а именно такое преобразование матрицы весов С, при котором различные категории деревьев штрафуются по- разному, но в то же время относительные веса всех деревьев в пределах одной категории не изменяются. Цель при этом состоит в том, чтобы разделить различные категории и сделать категорию гамильтоновых цепей более привлекательной (менее штрафуемой), а тогда применение алгоритма минимального дерева автоматически приведет к кратчайшей гамильтоновой цепи.
Теорема 3. Если, матрица С преобразована в матрицу С' так, что
Cij = ci; + p(i) + p(j) ДЛЯ i, j = l, 2, ..., п, (10.11) где р (к) — п-мерный вектор, образованный действительными положительными и отрицательными постоянными, то относительные веса всех гамильтоновых цепей для матрицы С', имекпцих указанные концевые вершины, не изменяются.
Доказательство. Пусть F ^—вес произвольной гамильтоновой цепи с матрицей С, имеющей концевые вершины хх и ж2. Так как каждая вершина соединена точно с двумя другими вершинами (за исключением концевых вершин, каждая из которых соединена только с одной другой вершиной), то вес Ес. той же самой гамильтоновой цепи с матрицей С' отличается от Ес на величину^
Fc— Fc = 2 2 pW + pW-VpIS). (10.12) 2
Это постоянная величина, не зависящая от выбранной гамильтоновой цепи. Отсюда следует теорема.
Решение задачи (б). Применение алгоритма нахождения кратчайшей гамильтоновой цепи с указанными концевыми вершинами (задача (б)), основанного на теореме 3, будет продемонстрировано на примере.
Пример. Рассмотрим полный граф G с 10 вершинами, матрица весов Со которого дается табл. 10.1, и предположим, что мы хотим найти кратчайшую гамильтонову цепь с концевыми вершинами 8 и 9.
18 н. Кристофидес
Матрица весов примера
Таблица 10.1
12345678910
0
28
31
28
22
36
50
67
40
74
28
0
31
40
41
64
74
80
63
101
31
31
0
14
53
53
53
50
42
83
28
40
14
0
50
41
39
41
28
69
22
41
53
50
0
40
61
86
53
78
36
64
53
41
40
0
24
58
22
39
50
74
53
39
61
24
0
37
11
30
67
80
50
4)
86
58
37
0
36
60
40
63
42
28
53
22
11
36
0
41
74
101
83
69
78
39
30
60
41
0
В соответствии с теоремой 2 добавим к каждому элементу, стоящему либо в строках 8 и 9, либо в столбцах 8 и 9 таблицы 10.1, достаточно большое число к (скажем, 1000). Получившуюся после этого добавления таблицу назовем результирующей матрицей весов С.
Далее поступаем следующим образом.
Находим кратчайший остов графа G. Если он окажется гамильтоновой цепью, то задача решена. В рассматриваемом примере кратчайший остов, показанный на рпс. 10.12 (а), не является гамильтоновой цепью. Степени вершин 1 и 7 равны 4, а не 2, как это требуется для гамильтоновой цепи. Следуя духу теоремы 3, мы можем «оштрафовать» эти вершины. Допустим, что мы произвольно выбрали малый шаг (скажем, 5 единиц), так что все штрафы кратны ему. (Можно выбрать величину шага равной 1, но это будет неоправдано мало и приведет к увеличению числа требуемых итераций.) Таким образом, если мы решили штрафовать только те вершины, степени которых больше чем 2, то
р(0 = 5(<#-2).(10.13)
Заметим, что метод штрафования вершин выбран произвольно и существует много других альтернатив (см. разд. 6.3.4).
Рис.Рис.10.12.10.12.Кратчайшие остовыКратчайшие остовы(г)(г)при итерациях со штрафами.при итерациях со штрафами.
Рис.
Рис.
10.12.
10.12.
Кратчайшие остовы
Кратчайшие остовы
(г)
(г)
при итерациях со штрафами.
при итерациях со штрафами.
В соответствий с уравнением (10.13) штрафы вершин 1 и 7 равны р (1) = р (7) = 10, причем для всех остальных вершин они равны 0. Следуя (10.11), вычислим новую матрицу весов и найдем для нее кратчайший остов. Результат показан на рис. 10.12 (б), из которого видно, что это дерево много ближе к гамильтоновой цепи, поскольку для него е = 1 вместо е = = 4 в предыдущем случае.
Поступая как и ранее, оштрафуем вершину 6 и положим р (6) = = 5. (Следует заметить, что этот новый штраф добавляется к предыдущей матрице весов, а не к первоначальной матрице С.) Таким образом, штрафы равны р (1) = р (7) = 10, р (6) = 5 и р (i) = 0 для всех остальных вершин. Соответствующий кратчайший остов изображен на рис. 10.12 (в), и для него е = 1, как и для предыдущего остова. Оштрафуем вершину 7, полагая р (7) = 5; новый кратчайший остов будет тем же, что и на рис. 10.12 (б). Продолжая далее, штрафуем вершину 6 еще раз, полагая р (6) = 5, и опять находим кратчайший остов. Результат показан на рис. 10.12 (г), из которого видно, что теперь это гамильтонова цепь и, следовательно, по теореме 3 — кратчайшая гамильтонова цепь. Вес этой цепи с первоначальной матрицей весов Со равен 258.
Здесь полезно отметить, что если на некотором этапе получается кратчайший остов, уже встречавшийся ранее, то это не означает, что произошло зацикливание, и любой такой цикл автоматически устраняется при продолжении алгоритма. (Однако, как будет выяснено ниже, сходимость последовательности кратчайших остовов к кратчайшей гамильтоновой цепи не может быть гарантирована без конкретизации выбираемого способа штрафования вершин.) Мы получили кратчайшую гамильтонову цепь с концевыми вершинами 8 и 9 за 5 итераций, включая 5 вычислений кратчайших остовов, в то время как полный перебор содержал бы 8! = 40320 вычислений матриц весов и сравнений цепей.
Альтернативой к вышеописанному методу штрафов является следующий. Вместо штрафования только тех вершин, для которых df > 2 (с использованием (10.13)), можно штрафовать только те вершины (за исключением двух выделенных конечных вершин), степени которых df = 1 <2, причем величина штрафа р (i) отрицательна и равна выбранной единице шага. С другой стороны, можно применить комбинацию этих двух политик наложения штрафов или воспользоваться совершенно другими политиками, описанными в разд. 6.3.4. Здесь следует отметить, что выбор политики наложения штрафов может существенно влиять на число необходимых для получения решения итераций.
Предположим в качестве примера, что на втором этапе описанных вычислений — когда кратчайший остов изображен на рис. 10.12 (б) — мы решили воспользоваться второй политикой наложения штрафов и вместо того, чтобы положить р (6) = 5, взяли р (10) = —5. Получившийся кратчайший остов был бы таким, какой показан на рис. 10.12 (г), т. е. он немедленно дал бы кратчайшую гамильтонову цепь.
Интересно отметить, что не существует единственного вектора штрафов р (г), г = 1, . . ., и, для которого матрица весов будет преобразовываться так, что кратчайший остов будет и гамильтоновой цепью и, следовательно, кратчайшей такой цепью. В приведенном примере окончательное значение вектора штрафов при первой политике такое: р (1) = р (6) = 10, р (7) = 15, все остальные р (г) = 0; в то же время при второй политике, принятой, начиная с шага 2, для окончательного вектора штрафов р (1) = = р (7) = 10, р(10) = — 5, все остальные р (i) = 0.
Решение задачи (а). Мы проиллюстрировали сначала применение алгоритма штрафования вершин к задаче (б), так как к этой задаче непосредственно применима теорема 3. Подобно тому как для решения задачи (б) с помощью алгоритма поиска, использующего дерево решений, она была сведена к задаче (а), так и сейчас, чтобы решить задачу (а) с помощью алгоритма
штрафования вершин, мы сведем ее к задаче (б). Это осуществляется посредством следующего приема.
К множеству X вершин графа G добавим еще две вершины, например хг и х^ и образуем новое множество X' = X U {^ь ^2}* К множеству ребер А графа G добавим два множества ребер:
пп
Si = U {(^1’ ^)} И 5 2 = U {(^2, ^)},
и образуем новое множество А’ = A J 5Т J 52. Для всех / = = 1, . . ., и зададим веса а — для ребер (zt, Xj) и b — для ребер (х2, Xj), где а и b — две произвольные постоянные.
Теорема 4. Решение задачи (б) для графа G* = (X', Л') с концевыми вершинами хг и z2 является решением задачи (а) для графа G.
Доказательство. Любая гамильтонова цепь графа Gr с концевыми вершинами хг и z2 может рассматриваться как гамильтонова цепь, проходящая через вершины графа G с добавленными ребрами (xj, xt) и (z2, xj), xis Xj 6 X. Таким образом, вес гамильтоновой цепи из G' равен, скажем, F' = F + а + Ъ, где F •— вес некоторой гамильтоновой цепи из G, и, следовательно, вес F* минимален только тогда, когда F минимален, т. е. когда F соответствует кратчайшей гамильтоновой цепи из G. Теорема доказана.
Сходимость метода штрафования вершин. Метод штрафования вершин, описанный выше, был развит Кристофидесом
Рис. 10.13.
и, в несколько иной форме, примерно в то же время Хелдом и Карпом [18]. Последние авторы показали также, что итерационный метод не обязательно сходится, и в качестве подходящего примера предложили граф, изображенный на рис. 10.13. Несмотря на этот большой недостаток, метод является тем не менее очень ценным по двум причинам.
Во-первых, в большинстве случаев он сходится (как будет показано ниже, все 33 случайно выбранные задачи были решены
Щ ГЛ. 10. ГАМИЛЬТОНОВЫ ЦИКЛЫ, ЦЕПИ И ЗАДАЧА КОММИВОЯЖЕРА этим методом по крайней мере при одной стратегии наложения штрафов).
Во-вторых, допустим, что итерации остановлены в некоторый момент, когда кратчайший остов с модифицированной матрицей есть Т', штрафы вершин р (i), i = 1, 2, . . ., п, и степени вершин d^ ; рассматриваем задачу, когда нужно найти кратчайшую гамильтонову цепь с концевыми вершинами ^ и z2. Вес остова Т' с модифицированной матрицей равен
FT- = Ft--V 2 P^^i + p(1) + p(2), i=#l, 2
где FT- — вес остова Т, вычисленный для первоначальной матрицы весов.
Если Н — кратчайшая гамильтонова цепь графа, то вес цепи Н с модифицированной матрицей равен
^’н = ^’н + 2 2 Р (0+ Р (1)+ Р (2)-i=£l, 2
Так как по определению FT- <.FH, то разность
^p^FH-FT, = FH-VFT-+ 2 р(0(^Г —2)1 (10.14) 1^=1, 2
является мерой близости дерева Т' к кратчайшей гамильтоновой цепи Н, причем / (р) = 0, если Т' = Н.
Величину / (р) можно рассматривать как функцию вектора штрафов p = (pz|i = l,..., п). Хелд и Карп предложили два метода нахождения штрафов р*, минимизирующих / (р). Один основан на технике преобразования столбцов, а второй является методом наискорейшего спуска. (Другой, несколько более общий последовательный подход, основанный на эвристическом поиске, был недавно успешно применен Камерини и др. [4].) Если метод штрафования вершин сходится, то для минимального значения / (р*) = 0, так как Т1 -> Н и d? = 2 для всех I ^ 1, 2. С другой стороны, как было отмечено выше, метод сходится не всегда, и при отсутствии сходимости минимальное значение / (р*) величины / (р) равно некоторому положительному числу. Совершенно очевидно, что*в этом случае величина
Ft А- 2 P*(i)(dF-2)(10.15)
i=#l, 2
дает нижнюю границу веса кратчайшей гамильтоновой цепи. В этом последнем случае получаемая граница является очень точной и может быть использована с большим эффектом [19] в алгоритме поиска, применяющем дерево решений,— в духе того, как это делалось в разд. 6.2.1.
Стратегии наложения штрафов. Хотя, как уже отмечалось в разд. 6.3.3, существуют два метода [18] для определения последовательности штрафов, вынуждающих кратчайший остов становиться кратчайшей гамильтоновой цепью (если только вообще сходимость возможна), оба эти метода являются слишком изысканными и требуют больших затрат времени. В настоящем разделе мы экспериментально исследуем влияние различных стратегий штрафования вершин на скорость сходимости метода. Для всех 33 случайно выбранных полных графов, использованных для проверки стратегий, по крайней мере одна стратегия приводила к кратчайшей гамильтоновой цепи. Это убеждает нас в том, что, хотя и существуют задачи, в которых алгоритм штрафования вершин не сходится (на самом деле любой связный граф без гамильтонова цикла приводит нас к такой ситуации), но все же в большинстве задач, при составлении которых не старались специально найти контрпримеры, будет иметь место сходимость.
Фиксированные штрафы
Только положительные штрафы
Это тот случай, когда все вершины xt дерева Т со степенями df > 2 штрафуются на величину y-(df— 2), а все остальные вершины не штрафуются. Было найдено, что для малых у число необходимых для достижения решения итераций (т. е. определения некоторого гамильтонова цикла) приблизительно обратно пропорционально величине у, но для достаточно больших у вполне возможно зацикливание и решение получено не будет. Наилучшее значение у зависит как от числа вершин, так и от распределения весов ребер.
Только отрицательные штрафы
Это тот случай, когда вершины xt (за исключением двух отмеченных концевых вершин) штрафуются на величину — у, если df = 1, а остальные не штрафуются. Результаты примерно те же, что и в случае (а).
Положительные и отрицательные штрафы
В этом случае вершины х^ штрафуются в соответствии с (а) и (Ь), в зависимости от того, будет ли df > 2 или df = 1 соответственно. Было найдено, что значение у, равное половине используемого в случаях (а) и (Ь), обеспечивает сходимость примерно за то же самое число итераций, что и в случаях (а) и (Ь). Этот метод в общем лучше методов (а) и (Ь).
(//) Последовательно уменьшаемые штрафы
При использовании фиксированных штрафов может возникнуть ситуация, когда вершина х^ с df = 3 (например), оштрафованная в некоторый момент на у, превратится в вершину с df = 1 после следующей итерации, иными словами, вершина xt «свёрх- оштрафована». Если используется смешанная стратегия (I (с)), то на следующей итерации вершина будет оштрафована на величину — у, и это может привести к тому (не обязательно), что dj снова станет равным 3. Из-за этих колебаний величины d^ может потребоваться неоправданно большое число итераций.
Было найдено, что в такой ситуации для большинства графов лучший метод состоит в уменьшении ранее наложенного штрафа, так что на следующей итерации для вышеприведенного примера следовало бы оштрафовать вершину Xt на — ау вместо — у, где 0 <а <1.
Ситуация, аналогичная описанной, возникает и тогда, когда вершина со степенью df = 1 сверхштрафуется на отрицательную величину, в результате чего после очередной итерации она получает df > 2. В этом случае поступают как и в предыдущем.
В численных экспериментах, результаты которых приведены в табл. 10.2, было использовано значение а = 0,5.
Вычисляемые штрафы
Только положительные штрафы
В этом случае все вершины Х} с di > 2 штрафуются на р (I), где р (I) вычисляется как минимальный положительный штраф, который, будучи применен к вершине xt (изолированно), уменьшает di на одну единицу после одной итерации. Штрафы р (г) применяются тогда одновременно — каждый к своей вершине.
Величина р (I) для заданной вершины х^ вычисляется следующим образом. Удалим из дерева Г = (X, Лт) только одно из ребер (жг, хг). инцидентных вершине xt. Это приведет к распадению Т на два поддерева Тт и Т^. Найдем ребро наименьшего веса, соединяющее эти два поддерева, т. е. найдем ребро (хт5, хк) с весом
с(хТр хь) = min min [с (Xj, жк)], (10.16)
^^i ^^ l
где Xj и xk — оптимальные значения х$ и хк соответственно, а Л и 72 обозначают как деревья, так и соответствующие множества их вершин. Вес с (х^\ хк) является поэтому наименьшим весом «связи» поддеревьев 7\ и Г2 в одно дерево, когда удалено первоначальное ребро (хи хт). Таким образом, штраф с (хт^ хк) —
с (xt, хт}, налагаемый на вершину xtl является наименьшим штрафом, который удалил бы ребро (х^ х^ из кратчайшего остова при следующей итерации. Поэтому если штраф выбран как
р(г)= min [с(^, ^) — с!^, з:г)], (10.17)
то штраф р (г), наложенный только на вершину х^ удалил бы (в предположении, что р (0 является единственным) только одно ребро (.х^ х*) из множества ребер, инцидентных х^ т. е. уменьшил бы d^ на единицу. Ребро (х^ х*) является как раз тем ребром, которое минимизирует выражение (10.17).
Здесь следует отметить, что когда все штрафы р (I), вычисленные по (10.17), накладываются одновременно каждый на свою вершину, степени некоторых вершин могут уменьшиться более чем на 1, в то время как степени других вершин могут вообще не уменьшиться (или могут даже увеличиться). Это объясняется совместным влиянием штрафов вершин на веса ребер при следующей итерации. Таким образом, хотя использование штрафов, найденных из (10.17), не гарантирует получение ответа после заданного числа итераций, но, как было обнаружено (см. табл. 10.2)т этот метод штрафования лучше, чем методы (I) и (II).
Только отрицательные штрафы
Это тот случай, когда все вершины х^ с dt = 1 штрафуются на отрицательную величину/? (г), где р (i) вычисляется как максимальный (наименьший отрицательный) штраф, который, будучи применен только к вершине х^ сделает степень df равной 2 после одной итерации, т. е. добавит второе ребро к вершине xt. Однако штрафы р {i) применяются одновременно — каждый к своей вершине.
Значение р (г) для данной вершины х^ вычисляется следующим образом. Добавим ребро (х^ х^ к дереву Т. Это добавление приведет к замыканию цикла, составленного из ребра (яг, жг) вместе с ребрами дерева Т. входящими в цепь от хт до xt. Пусть множество ребер дерева Т в цепи от хт до хг (исключая последнее ребро, инцидентное х^ будет Sri. Если тогда добавить ребро (х^ хГ) к ребрам Т и удалить одно какое-либо ребро из STil то получится другое дерево, в котором степень вершины хг равна двум. Если, таким образом, накладывается единственный штраф р (г) на вершину хь где
р (i) = min [с (жь хГ)— min {с (я,, ^)}], (10.18) (хр xk^srl
(т. е. р (i) равен наименьшему дополнительному весу добавления ребра от Xt к какой-нибудь другой вершине хт и удаления ребра
сч о
а
<29
в в а Qi Ф Й
К В В я й
£ и а
ф
ф $
а
я
£
Я Ф
ф 3 в а
ф
в ч ф в У 3
«
1
1 1 i
«а.
гч
О*"
о
о"
sO
о"
SO Tf
О
VI OS о*
8.
Os
тГ**
О
Os"
sO^
и
О'
сч сч
гч
О
гч
00
сч
Ох
so
Tf
—
2
5а.
чО
аГ
Ох о"
ОО Tt о"
о"
Os
Ох
а
сч
оо
сч
о sO
чО
00
Os
«а.
оо
о
сч т о"
О
сГ
тГ
О*
о*
сч сч"
в
—
сч
V1
о тГ
OS so
00 OS
сч
—
за.
ОС
о
О СЧ о"
ос
О*
ГЧ
в
'О
го
О го
тГ
«а.
o'
О' сч сГ
О 00
О
sO sO^
00
v^
^
оо
за.
о"
sT сч о"
о"
в
чО
гО
чО
VI
ОО
2
за.
о"
ГЧ ол
ОС оо^ сГ
оо
в
гч гч
Os
ос
чО
ГЧ
С?
II
О
so
О гч
SO гч
о
so
VS
О sO
а: Число итераций
(к время вычисления (СDC 6600) t: Каждый элемент является средним значением для 3 графов одного и того же размера
Рис. 10.14. Задача с 24 вершинами, (а) Начальный кратчайший остов, (б) Кратчайший гамильтонов цикл, полученный после 40 итераций с использованием штрафов Ш(с).
наименьшего веса в цепи от хт к х^, то степень вершины xL станет равной 2 после единственной итерации.
Если все штрафы р (£) накладываются одновременно, то, как и в случае (III (а)), взаимодействие этих штрафов делает невозможным предсказание изменения степеней вершин после одной итерации.
Положительные и отрицательные штрафы
Эта стратегия заключается в наложении штрафов на вершины в соответствии с (III (а)) или (III (Ь)) в зависимости от того, будет ли dj > 2 или df = 1.
В таблице 10.2 приводятся результаты и делается сравнение семи стратегий штрафования, описанных выше. Графы в этой таблице были получены случайным выбором п точек в квадрате при равномерном распределении, а в качестве весов ребер собралось евклидово расстояние между г и /. Таблица дает числа итераций и времена вычислений (ЭВМ CDC 6600, время в секундах), необходимые для получения ответа. Из этой таблицы видно, что действие всех стратегий штрафования зависит от задачи, хотя можно заметить, что наилучшей является стратегия (III (с)). Используя эту стратегию, можно найти кратчайшую гамильтонову цепь в графе примерно с 60 вершинами менее чем за 15 с.
На рис. 10.14 для некоторого графа с 24 вершинами показаны начальный кратчайший остов и окончательная кратчайшая гамильтонова цепь. Первая и последняя пронумерованные вершины являются отмеченными концевыми вершинами.
Задачи, родственные задаче коммивояжера
До сих пор в разд. 6 мы имели дело с «открытой» задачей коммивояжера, т. е. с кратчайшей гамильтоновой цепью (а не с циклом). Вначале это было оправдано тем, что при этом мы имели дело с более прямой связью «открытой» задачи с кратчайшим остовом. С другой стороны, нужно сделать только очень небольшие изменения, чтобы подойти и к «замкнутой» задаче коммивояжера. Хелд и Карп [18], например, ввели понятие кратчайшего 1-дерева графа G, причем оно определяется как кратчайший остов порожденного подграфа графа G с удаленной вершиной 1 плюс два кратчайших ребра, исходящих из вершины 1 к двум другим вершинам дерева. Очевидно, что между понятием кратчайшего 1-дерева и «замкнутой» задачей коммивояжера существует та же самая связь, что и между понятием кратчайшего остова и «открытой» задачей. Таким образом, штрафование вершин изменяет относительные веса 1-деревьев, но оставляет инвариантным относительное упорядочение гамильтоновых циклов. Так же совершенно очевидно, что, как в «открытой» задаче, кратчайший остов со всеми вершинами степени 2 (за исключением двух концевых вершин) становится кратчайшей гамильтоновой цепью между этими концевыми вершинами, так и в «замкнутой» задаче кратчайшее 1-дерево, все вершины которого имеют степень 2, является кратчайшим гамильтоновым циклом графа. Алгоритм штрафования вершин, обсуждавшийся ранее в данном разделе, может быть использован поэтому фактически без изменений и для решения «замкнутой» задачи коммивояжера.
Задача коммивояжера и задача о назначениях
В разд. 5 было отмечено, что задача о назначениях, определяемая соотношениями (10.4), (10.5) и (10.6), может иметь решения, образованные некоторым числом непересекающихся циклов, и что соответствующий метод решения задачи коммивояжера требует наложения ограничений до тех пор, пока решение не будет состоять из единственного (гамильтонова) цикла. В настоящем разделе мы исследуем процедуры наложения этих ограничений в рамках алгоритма поиска, использующего дерево решений. Применяемая схема будет в основном такой же, как и в разд. 6.2 для алгоритма поиска, основанного на рассмотрении кратчайшего остова.
■ Алгоритм поиска, использующий дерево решений
Пусть решение задачи о назначениях с матрицей весов [cZJ] (где си = оо, V0 образовано некоторым числом непересекающихся циклов. Так, например, если решение задачи с 8 вершинами имеет вид £12 = £2б = £35 = £47 = £54 = £ei " £78 — £зз = 1 и ^у = 0 для всех остальных пар (г, /), то решение, отвечающее двум циклам, изображено на рис. 10.15 (а). Теперь необходимо
Рис. 10.15. Решение задач о назначениях, (а) Решение задачи Ро. (б) Решение задачи Pv
сделать следующее — исключить данное решение вместе со многими другими такими же решениями, не потеряв решение задачи коммивояжера с той же матрицей весов. Так как решение задачи коммивояжера является гамильтоновым циклом, то мы будем пытаться исключить любое решение, состоящее более чем из одного цикла.
Правило простого ветвления. Пусть в общем случае решение задачи о назначениях содержит (не гамильтонов) цикл (з^, ^2» • - -1 xhi ^1) длины к. Удаление этого цикла (и всех решений, его содержащих) из дальнейшего рассмотрения может быть произведено путем наложения требования, что по крайней мере одна из дуг (^i, ;г2), (я2, я3), . . ., (хк1 х^ не должна входить в решение. Это можно сделать совсем просто, если первоначальную задачу с матрицей весов kfJ*] разбить на к подзадач Ръ Р^ . . . , Рк. В задаче Рг с(хГ1 х2) полагается равным оо, а все остальные с15 остаются без изменения (т. е. такими же, как и в задаче Pq), в задаче Р^ с (x2s х3) = оо и вообще в задаче Рк с (xks х^ = оо. Очевидно, что решение задачи Р01 не содержащее цикла (жь #2, . . . ..., хк, ^1), является решением по крайней мере одной из задач Pi,. . . . . ., Рк и, следовательно, оптимальное решение задачи коммивояжера является решением одной или нескольких из этих подзадач.
Так, например, исключая на рис. 10.15 (а) цикл длины 3, получим дерево решений, изображенное на рис. 10.16, в котором задачи Р], Р^ и Р3 представлены узлами дерева, растущего из начальной задачи Ро. Пусть задачи Pi, Р2 и Р3 решены как задачи о назначениях, и пусть соответствующие веса будут С!, С2 и С3. Так как Ci является нижней границей в задаче коммивояжера
для Рь а также для Рг и Р^ то число L = min (G, Сг> С^ является нижней границей для веса решения первоначальной задачи коммивояжера.
Пусть, скажем, L = Сг (т. е. Сг^С2 и Ci^C3). Если решение задачи ?! является гамильтоновым циклом, то оно будет решением первоначальной задачи коммивояжера. В противном случае пусть оно будет, скажем, таким, как на рис. 10.15 (б). Исключая цикл (1, 8, 2, 6, 1), мы снова составляем и решаем подзадачи Р4> Р5, Р6 и Р^ показанные на рис. 10.16. Из этого
Рис- 10.16. Дерево решений с простым правилом ветвления А.
рисунка видно, что Р4 отвечает задаче, для которой в матрице весов элемент с18 положен равным оо (в дополнение к тому, что элемент с12 положен равным оо уже ранее). То же самое относится и к Р5> Р^ и Pq. Нижняя граница теперь переопределяется как L = min (С2, С3, С41 С5, С6, С7). Допустим, что задача Р3 соответствует весу L (т. е. L = С^. Если решение задачи Р^ является гамильтоновым циклом, то оно будет решением первоначальной задачи коммивояжера. Дальнейшее ветвление в узле Р3, с другой стороны, должно осуществляться точно так же, как это делалось в Ръ и этот процесс продолжается до тех пор, пока задача с текущим значением веса L не будет иметь в качестве решения гамильтонов цикл. Когда это произойдет, то полученный цикл будет окончательным решением, так как его вес (по определению числа £) не превосходит нижних границ весов любых других гамильтоновых циклов, которые могут появиться при дальнейшем ветвлении в оставшихся узлах дерева.
Из приведенного описания алгоритма становится очевидным, что примененный поиск с помощью дерева решений относится к типу с «приоритетом по ширине», как это объяснено в приложении 1.
(Б) Правило исключающего ветвления. Как объяснено в приложении 1, для хорошего ветвления при разбиении задачи Ро на подзадачи Pi, Р2 и Р3 требуется только, чтобы каждое возможное решение задачи Ро (за исключением удаляемых решений) было решением по крайней мере одной из подзадач. Однако, как отмечено в приложении, очень желательным свойством метода ветвления было бы разбиение возникающих подзадач на взаимно исключающие, коль скоро речь идет о возможных решениях задачи Ро. Иными словами, каждое допустимое решение задачи Рк должно быть решением одной, и только одной из этих подзадач.
Ранее описанное правило ветвления основывалось на том факте, что цикл, такой, как (^l, х2, . . ., хк) £1), может быть удален посредством исключения одной из его дуг. Это, однако, не приводит в процессе ветвления к взаимно исключающим подзадачам. Так, в вышеприведенном примере решение задачи Ро, соответствующее циклам (1, 3, 6, 1) и (2, 5, 4, 7, 8, 2), является допустимым решением как подзадачи Рт (с с12 = оо), так и Р2 (с с26 = оо).
Другим правилом ветвления, удаляющим цикл (xi, х2, . . . . . ., хк, хх) и приводящим к взаимно исключающим подзадачам, является следующее:
для задачи Ру положить с (xi, х2) = оо;
для задачи Р2 положить с (^, х2) = — М и с (х2, х3) = оо;
дая задачи Р3 положить с (х^ х2) = с ^x2s х3) = — М . и с (х3, я4) = оо.
*для задачи Рк положить с (^, х2) = с (х2, х3) = .., = = с (я^, xh) = — М и с ^хк, хг) = оо,
где —М — достаточно большое отрицательное число, гарантирующее, что дуга, вес которой равен —М^ входит в оптимальное решение.
Это правило ветвления наверняка приводит к взаимно исключающим подзадачам, так как для любых двух подзадач имеется по крайней мере одна дуга, исключенная из решения одной, но заведомо входящая в решение другой подзадачи. Легко также видеть, что ни одно возможное решение задачи Ро не будет потеряно, т. е. что любое решение первоначальной задачи Ро будет являться решением одной из подзадач. Это очевидно в силу того, что любое решение задачи Ро имеет некоторую последовательность дуг, выходящую из ^, таких, как (^, ха), (ха, хр) и т. д., и первые г дуг должны совпадать с дугами цепи (х1? х2, х3, . . ., хк) при некотором значении г = 0, 1, . . ., к. Значение г = 0 отвечает тому случаю, когда совпадения вообще нет, г = 1 — случаю, когда ха = хй1 но хв Ф х3 и т. д.
Рис. 10.17. Дерево решений с исключающим правилом ветвления Б.Рис. 10.17. Дерево решений с исключающим правилом ветвления Б.Рис. 10.18. Дерево решений с улучшенным правилом ветвления В.Рис. 10.18. Дерево решений с улучшенным правилом ветвления В.
Рис. 10.17. Дерево решений с исключающим правилом ветвления Б.
Рис. 10.17. Дерево решений с исключающим правилом ветвления Б.
Рис. 10.18. Дерево решений с улучшенным правилом ветвления В.
Рис. 10.18. Дерево решений с улучшенным правилом ветвления В.
В приведенном примере первоначальная задача Ро разбивалась бы на три подзадачи, показанные на рис. 10.17 (ср. с разбиением на первом уровне из рис. 10.16, полученным по предыдущему правилу ветвления).
Лучшее правило ветвления. Оба предыдущих правила ветвления исключали (при каждом отдельном ветвлении) все решения, содержащие заданный цикл, такой, как (х1? z2, . . ., zA, Xj). Очевидно, однако, что в решении задачи коммивояжера не только не должен не существовать такой цикл, но должна быть по крайней мере одна дуга, ведущая из множества вершин 8 = (zlf . . . . . ., xfe} в множество вершин S = X — S. Действительно, существование какой-либо дуги, ведущей из 8 в S, не только гарантирует исключение решений, содержащих цикл, принадлежащий множеству 5, но также позволяет исключить решения, множества вершин которых лежат в 5 и которые состоят из нескольких циклов (а не только из одного). Таким образом, можно ожидать, что правило ветвления, основанное на требовании, чтобы существовала некоторая дуга из S в S, будет равномерно лучше, чем два предыдущие правила ветвления 2.
Так как дуга из 5 в S должна начинаться в некоторой вершине из 5, то задачу можно расщепить на к подзадач. В подзадаче Pt мы будем требовать, чтобы начальной вершиной дуги являлась Xi £ S, а конечной вершиной была некоторая вершина в 5. Это можно сделать, положив с (xi7 х/) = оо для всех xt 6 8 и оставив без изменения все другие веса. В решении получившейся задачи о назначениях мы наверняка бы имели дугу из xi7 ведущую в 5, так как для всех других альтернатив их веса должны быть положены равными оо.
В примере, данном выше, начальная задача Ро была бы в соответствии с настоящим правилом ветвления подразделена на три подзадачи, определенные, как показано на рис. 10.18. Дальнейшие ветвления происходят аналогично.
7.2- Пример
Найти решение задачи коммивояжера с матрицей весов12345678
ос
76
43
38
51
42
19
80
42
ОС
49
26
78
52
39
87
48
28
ОО
36
53
44
68
61
72
31
29
ОО
42
49
50
38
30
52
38
47
ОО
64
75
82
66
51
83
51
22
00
37
71
77
62
93
54
69
38
ОО
26
42
58
66
76
41
52
83
оо
Теперь мы используем только что описанный алгоритм исключения циклов, беря на каждом шаге циклы наименьшей длины и используя правило ветвления В.
Решение задачи о назначениях с матрицей СА состоит из двух циклов (2, 4, 3) и (1, 7, 8, 6, 5) с весом 232. Это соответствует
(1,7,8,2,4,3,6,5)(1,7,6,5Д2,4,8)
Рис. 10.19. Поиск, использующий дерево решений из примера 7.2.
узлу Л дерева решений, показанного на рис. 10.19. Исключение цикла (2, 4, 3) по правилу ветвления В приводит к трем подзадачам, изображаемых на рис, 10.19 узлами В, С и D. Матрицы весов
19 н. Кристофидес
этих подзадач, решения задач о назначениях для них и веса этих решений равны соответственно
ОО
76
43
38
51
42
19
80
42
оо
оо
оо
78
52
39
87
48
28
оо
36
53
44
68
61
72
31
29
00
42
49
50
38
30
52
38
47
ОО
64
75
82
66
51
83
51
22
ОО
37
71
77
62
93
54
69
38
ОО
26
42
58
66
76
41
52
83
ОО
12345678
(1,4,3,2,7,8,6,5) 264
(1, 7, 8), (2,4,6, 5, 3) 250
ние, продолжая процесс ветвления. Наименьшая из нижних границ есть L = min (248, 250) = 248, и она соответствует узлу С, поэтому процесс ветвления следует продолжать с этого узла, исключая цикл (2, 4). Теперь возникают две другие подзадачи, показанные узлами Е и F на рис. 10.19. Их матрицы весов, решения задач о назначениях и веса таковы:
00
76
43
38
51
42
19
80
42
ОО
49
26
78
52
39
87
48
оо
00
00
53
44
68
61
72
31
29
00
42
49
50
38
30
52
38
47
00
64
75
82
66
51
83
51
22
00
37
71
77
62
93
54
69
38
ОО
26
42
58
66
76
41
52
83
00
1234 5678
(1, 7, 8), (2,4), (3, 6, 5) 248
Решение подзадачи В является гамильтоновым циклом с весом 264. Однако нижние границы в обоих узлах С и D меньше этогс значения, так что существует возможность получить лучшее реше-
(3,6,5), (1,4,2, 7,8) 280
19*
(1,6, 5, 3,2,4,7, 8) 274(1,6, 5, 3,2,4,7, 8) 274
(1,6, 5, 3,2,4,7, 8) 274
(1,6, 5, 3,2,4,7, 8) 274
Следует отметить, что на этом этапе решение подзадачи F является гамильтоновым циклом с весом 254. Этот вес меньше, чем вес предыдущего лучшего решения (с весом 264), и, следовательно, лучшим текущим решением будет решение подзадачи F. Два узла ^Е и П) все еще дают решения с негамильтоновыми циклами и являются поэтому кандидатами на продолжение процесса ветвления. Однако для узла Е нижняя граница равна 280 > 254 (текущее значение наилучшего решения), и, значит, ветвление в этом узле не может привести к лучшему результату. Поэтому
узел D с нижней границей 250 -< 254 является единственным узлом, ветвление в котором может привести к улучшению. Исключение цикла (1, 7, 8) из решения для узла D приводит к трем подзадачам, обозначенным на рис. 10.19 как G, Н и I. Соответствующие этим подзадачам матрицы весов и решения задач о назначениях таковы:
На этом этапе мы замечаем, что решение подзадачи Н является гамильтоновым циклом с весом 251, что меньше чем предыдущее
лучшее значение 254. Поэтому решение подзадачи Н, т. е. (1, 7, 6, 5, 3, 2, 4, 8), заменяет предыдущее лучшее решение. Кроме того, значение 251 меньше, чем нижняя граница в любом конечном узле дерева, и, следовательно, найдено оптимальное решение всей задачи. (Решения во всех концевых узлах — за исключением узла Е, ветвление в котором было прекращено ранее,— являются на самом деле гамильтоновыми циклами, и здесь безотносительно к границам весов этих решений не нужно бы было производить дальнейшее ветвление.)
Вычислительные комментарии и характеристики
Только что описанный алгоритм поиска, использующий дерево решений и основанный на исключении циклов, зависит от нахождения решений задач о назначениях с очень незначительно измененными матрицами весов. Здесь следует отметить, что каждая из этих задач может быть решена очень просто, если хранить решение предыдущей задачи, из которой она возникла. В частности, модификации, производимые в случае всех трех ранее упомянутых правил ветвления, производятся с помощью приравнивания оо некоторого элемента с (xh xj^ для дуги (хь Xj), входящей в решение текущей задачи о назначениях.
В венгерском алгоритме (см. гл. 12) решения задачи о назначениях элемент с (xt, Xj) в окончательной относительной матрице весов должен был бы иметь значение 0, а соответствующий маркер показывает, что в решении было назначение. Изменение значения элемента с (.г,-, х^ привело бы, очевидно, к перераспределению этого назначения, но оставило бы без изменения другие п — 1 назначений. Таким образом, начиная с решения (назначений) задачи — до того как были произведены модификации матрицы к,;] — и удаляя упомянутое назначение, можно получить решение новой модифицированной задачи, повторно применяя венгерский алгоритм на последнем шаге, так как единственный «прорыв», т. е. единственное увеличение числа ненулевых назначений сп — 1 до и, дал бы в действительности оптимальное решение новой задачи о назначениях (детали см. в гл. 12).
Рабочие качества вышеописанного алгоритма поиска с исключением циклов по правилу ветвления В исследовали Беллмор и Мэлоун [2]. На любой стадии ветвление в узле продолжалось так, чтобы исключить циклы наименьшей длины в решении задачи о назначениях, соответствующей этому узлу. Задача коммивояжера с произвольной асимметричной матрицей весов может быть решена на ИБМ 7094 II за Т секунд, где
Т'^ 0,55.10-4.пЗ*4б
и п — число вершин в задаче. (Было показано, что два других правила ветвления обладают худшими характеристиками, особенно
в задачах, графы которых содержат такие «скопления» вершин, что дуги в одном и том же скоплении имеют малые веса, а дуги между вершинами из разных скоплений имеют большие веса.)
Тем не менее вышеописанный алгоритм работает не слишком хорошо в симметричных задачах, так как в них решения задач о назначениях обычно состоят из большого числа циклов длины 2 и для их исключения требуется очень много ветвлений. Еще хуже обстоит дело тогда, когда задача коммивояжера решается на графе, который не содержит гамильтоновых циклов конечного веса.
Лучшие границы для дерева поиска
Мы описали в разд. 7.1 алгоритм поиска, в котором в качестве нижней границы в узле берется значение из решения соответствующей задачи о назначениях. На самом-то деле совершенно очевидно, что метод исключения циклов остается неизменным независимо от того, какая нижняя граница используется для ограничения поиска. Но так как процесс ветвления в узле прекращается только тогда, когда или решение подзадачи, отвечающей этому узлу, является гамильтоновым циклом, или когда нижняя граница в узле превосходит значение полученного до этого наилучше го решения, то очевидно, что качество оценки границы оказывает заметное влияние на число ветвлений в дереве решений и, следовательно, на вычислительную эффективность метода. Целью настоящего раздела является описание метода получения нижней границы, вычисляемой по решению задачи о назначениях с небольшими дополнительными усилиями и являющейся более точной, чем ранее используемые границы. Пусть решение задачи о назначениях содержит некоторое число циклов, как это показано в качестве примера на рис. 10.20 (а). Пусть г-й цикл обозначается 5It ;, и пусть число циклов равно nv (Мы будем использовать один и тот же символ 51) ; как для обозначения цикла, так и для обозначения множества его вершин.)
Определим стягивание как замену цикла единственной вершиной. Полученный граф содержит пТ вершин 5lti (Z = 1, 2, . . . . . ., пгу В качестве матрицы весов нового графа берется (^ X X пЦ-матрпца (\ = [^ (5lti, Su)] с элементами вида
ь ^i,j) = min VfiU^k^,(10.19)
ij
где Fx = VfT (kb kj] — окончательная матрица относительных весов, полученная в конце решения задачи венгерским (например) методом (см. гл. 12).
Рис. 10.20. Процесс стягивания. Первое стягивание, второе стягивание, третье стягивание.Рис. 10.20. Процесс стягивания. Первое стягивание, второе стягивание, третье стягивание.
Рис. 10.20. Процесс стягивания. Первое стягивание, второе стягивание, третье стягивание.
Рис. 10.20. Процесс стягивания. Первое стягивание, второе стягивание, третье стягивание.
На рис. 10.20 (а), например,
Ct (Sli5, Sli6) = min [A (*5, *6)bh6€(U,12, 13}he€{6, 14, 15, 16}
Теперь второе решение задачи о назначениях в случае задачи с матрицей Cj все еще может содержать циклы, в качестве вершин которых выступают предыдущие циклы. Рис. 10.20 (б) показывает один из возможных способов образования новых циклов 52j (i — = 1,2,..., п2), где п2 — их общее число (на рис. 10.20 (б) пй = = 3). Эти циклы опять могут быть стянуты в вершины и дать новую задачу с новой матрицей весов С2= k2 (S2,i> ^2j)h вычисленной так же, как и в (10.19), т. е.
Сг^г. i, 52,у)= min [/2№. ^)]>(10.20)
где множества S2ti являются объединениями всех множеств Si, /, образующих «частные» циклы, и где F^ = [/2 (кь к3)А — матрица относительных весов, полученная в конце решения второй задачи о назначениях.
Решение задачи о назначениях для нового, дважды стянутого, графа все еще может содержать циклы, и итерационный процесс решения — стягивания можно продолжать до тех пор, пока задача не сведется к единственной вершине.
Определим компрессию как преобразование матрицы, не удовлетворяющей аксиоме треугольника в метрическом пространстве, в матрицу, удовлетворяющую этой аксиоме. Таким образом, для компрессии матрицы нужно заменить каждый элемент т^, для которого
т^^т^ + т^ (при некотором к),элементом min lmik + ткД и продолжать эту замену до тех пор, покак
для всякого к не будут справедливы неравенства т^ ^.mik + тк$.
Теорема 5. Сумма значений решений задач о назначениях, полученных во время процесса «решение — стягивание — компрессия» осуществляемого вплоть до момента, когда «стянутая» задача будет содержать единственную точку), является точной нижней границей для задачи коммивояжера.
Доказательство. В гл. 12 показано, что элемент (г,/) в матрице относительных весов, полученной в конце решения задачи о назначениях, дает нижнюю границу для дополнительного веса, который получается из-за включения дуги (г, /) в решение.
Рассмотрим цикл STil, полученный} в конце решения первой задачи о назначениях. Любой гамильтонов цикл, проходящий
через все п вершин, будет иметь по крайней мере две дуги (одну направленную внутрь цикла 5^ f, другую — наружу), инцидентные вершинам, не лежащим в 51(/, и «приходящие» в одну или более вершин из 51е Р Число таких дуг будет, очевидно, четным.
(б)
Рис. 10.21. Преобразование гамильтоновых циклов при стягивании.
(а) Решение задачи о назначениях, (б) Гамильтонов цикл.
На рис. 10.21 (а) гамильтонов цикл показан жирной линией, в то время как решение задачи о назначениях показано тонкой линией. После стягивания получается граф, изображенный на рис. 10.21 (б), с двумя дугами, инцидентными 5113 и SIf4, и четырьмя дугами, инцидентными Sltl и 52 2.
Если теперь использовать неравенство треугольника, то получим
ci (£1,4, 51|3)^е1 (*^1,41 51,1) + ^! (5i.li 51i2) + ci (Sl2, Slt3), (10.21)
и, следовательно, назначение из рис. 10.22 (в котором дуги (S1|4l 5i, i), (Slf 1, 51i2), (Sle 2, 5i,3) заменены дугой (Slt4, 5113)) имеет значение, не превосходящее величины назначения из рис. 10.21 (б). Тав как назначение на рис. 10.22 имеет по две дуги, инцидентных каждой вершине, и решение задачи о назначениях для стянутогс трафа имеет меньший вес назначения, то значение решения задач! ■о назначениях, скажем V (ЛР1), является нижней границей дл#
величины назначения на рис. 10.21 (б), т. е. для значения приращения веса, которое было бы необходимо для объединения вместе различных циклов. Очевидно, что поскольку граф назначения, полученный с помощью любого гамильтонова цикла, содержит
Рис. 10.22. Назначение, соответствующее рис. 10.21 (б), с двумя дугами в каждой вершине.
после первого стягивания (т. е. в случае назначения, соответствующего рис. 10.21 (б)) эйлеров цикл, то его всегда можно преобразовать в граф с меньшим (или равным) весом, в котором каждой вершине индицентны только две дуги. Это делается с помощью замены цепи, образованной дугами, ведущими из одной вершины в другую, единственной дугой между этими вершинами (как было продемонстрировано выше).
Если, с другой стороны, матрица относительных весов Сг не удовлетворяет условию треугольника, то соотношение (10.21) может быть не выполнено. В этом случае матрица Сг должна быть сначала подвергнута компрессии. Значение решения задачи о назначениях с компрессированной матрицей следует взять тогда в качестве нижней границы величины приращения веса, что необходимо при объединении циклов. Это так, ибо компрессия матрицы может лишь уменьшить или оставить без изменения вес любого назначения для первоначальной матрицы.
Аналогично У ^АР^) — вес решения задачи о назначениях после второго стягивания является нижней границей веса связываемых циклов, получаемых при этом стягивании, и так далее для третьего, четвертого и остальных стягиваний. Поэтому величина
h
L^^V^APtY (10.22) i=0
где У (APq) — значение начального решения задачи о назначениях с начальной матрицей С, а к — число стягиваний, необходимых для преобразования графа задачи в единственную вершину, равное весу решения задачи коммивояжера. Теорема доказана.
Вообще здесь следует отметить, что даже если начальная матрица весов удовлетворяет условию треугольника, то последующие матрицы относительных весов могут не удовлетворять этому условию и на каком-то этапе может потребоваться компрессия.
Рис. 10.23. Первое решение задачи о назначениях.Рис. 10.23. Первое решение задачи о назначениях.Рис. 10.24. Решение после первого стягивания.Рис. 10.24. Решение после первого стягивания.
Рис. 10.23. Первое решение задачи о назначениях.
Рис. 10.23. Первое решение задачи о назначениях.
Рис. 10.24. Решение после первого стягивания.
Рис. 10.24. Решение после первого стягивания.
Пример вычисления границы
Рассмотрим задачу коммивояжера с 10 вершинами, матрица весов которой симметрична и приведена в табл. 10.3.
Решение начальной задачи о назначениях дает величину V (АРо) = 184. Результирующая матрица относительных весов дана в табл. 10.4, а решение дается графом на рис. 10.23.
Рис. 10.25. Решение после второго стягивания.
Стягивание графа из рис. 10.23 дает граф с 4 вершинами, матрица весов которого может быть вычислена по (10.19), и она дана в табл. 10.5 (а). Эта матрица весов не удовлетворяет условию треугольника и поэтому подвергается компрессии. Результат дан в табл. 10.5 (б).
Решение задачи о назначениях с матрицей из табл. 10.5 (б) дает величину V (АР^) = 20. Результирующая матрица относительных весов дана в табл 10.6, а решение задачи о назначениях дается графом на рис. 10.24.
в S' 3 <2 в
Матрица весов
Стягивание графа из рис. 10.24 дает граф с 2 вершинами, матрица весов которого (вычисленная по (10.20)) дана в табл. 10.7 (Эта тривиальная (2 X 2)-матрица не должна подвергаться компрессии, так как она удовлетворяет условию треугольника.)
Решение задачи о назначениях с матрицей из табл. 10.7 имеет значение V (АР2) = 10, а само решение дается графом на рис. 10.25, который переходит в единственную вершину после следующего сжатия. Таким образом, нижняя граница значения для задачи коммивояжера с матрицей из табл. 10.3 равна
L = V (АРО) + V (ЛЛ) + V (АР^ = 214.
Сравнив ее со значением оптимального решения задачи коммивояжера, равного 216, получим ошибку в 0,93 %, в то время как использование в качестве нижней границы величины V (АР0) дает ошибку в 14,8%. Хотя настоящая нижняя граница и не является в общем случае такой близкой, как в приведенном примере, но результаты [8] показывают, что эта граница в среднем значительно лучше, чем V (АР0).
Время вычисления границы в задаче коммивояжера в среднем только на 9% больше времени, требуемого для решения задачи о назначениях с той же самой матрицей весов. Время вычисления при решении задачи о назначениях с использованием венгерского метода оценивается как кп3 (см. гл. 12), где к — некоторая постоянная, ап-— порядок матрицы. Самый плохой случай при вычислении границы (что касается времени вычисления) возникает тогда, когда все циклы при каждом стягивании содержат только по две вершины. В этом случае общее время вычисления при решении задачи о назначениях таково:
кп3 + к ^У^к ^3 + ...«^-кп1» 1,143 кп3. (10.23)
Из (10.23) видно, что в худшем случае требуемое время для вычисления предложенной границы в задаче коммивояжера только на 14,3% больше, чем время, требуемое для решения задачи о назначениях того же самого размера. (Здесь следует заметить, что время, необходимое для выполнения той части процесса, которая связана с «стягиванием» и «компрессией», оценивается как п2.)
Пример из раздела 7.2 с улучшенной границей
Рассмотрим еще раз пример из раздела 7.2, используя улучшенную границу, описанную выше (вместо использования в качестве такой границы просто значения решения задачи о назначениях). Граница, соответствующая начальной задаче с матрицей весов СЛ (разд. 7.2), должна тогда быть V (АРО) + Р(ЛР1)+232+13=245. (Необходимо второе стягивание, и решение новой задачи о назначениях равно 13.) Подзадачи В, С и D получены, как и’раныпе,
но новой границей для подзадачи С будет V (АР0) + V (АР^) = = 248 + 6 = 254, вместо предыдущего значения 248. Новой границей для подзадачи D будет V (АР0) + V (АРг) = 250 + + 0 = 250 — то же, что и раньше. (Граница для В останется, конечно, неизменной, так как решение задачи В является ня са- мом деле гамильтоновым циклом. Теперь ветвление нужно делать в узле D (так как 250 < 254), а не в С, как в предыдущем случае. Это ветвление приводит, как и прежде, к подзадачам G, Н и 7, и наилучшее решение (подзадача Щ имеет значение 251. Дальнейшее ветвление в С (где решение не является гамильтоновым
Рис. 10.26. Поиск с деревом решений из примера 7.2 с улучшенной границей для задачи о назначениях.
циклом) уже не будет необходимым, так как его нижняя граница, а именно 254, больше чем 251. Прежняя граница для С, равная 248 (меньше 251), была недостаточной для того, чтобы прекратить ветвление в этом узле. Таким образом, улучшенная граница позволяет сэкономить два узла в дереве решений поиска, как это показано на рис. 10.26. Это дает экономию только на 2/9 для этой маленькой задачи, но для задач большого размера получается большой процент экономии узлов дерева, т. е. числа задач о (п на и) назначениях, которые следует решить
8. Задачи
Показать, что если неориентированный граф G удовлетворяет условиям: (1) для каждого положительного целого числа к -< < *2" (и- — 1), число вершин со степенью, не превосходящей к^ меньше чем кч (2) если число вершин со степенью, не превосходя- щей ^- (и — 1), меньше или равно -х- (и — 1), то оно имеет гамиль-
тонов цикл (см. [25, 29]. Заметим также, что граф, состоящий из единственного гамильтонова цикла, не удовлетворяет вышеприведенным условиям, т. е. условия достаточны, но не являются необходимыми).
Доказать, что если в неориентированном графе G для любой пары несмежных вершин xt и х3- степени удовлетворяют условию d(x^ -Vd^x^ п,
то граф G имеет гамильтонов цикл (см. [26]).
Рассмотрим решетчатый граф G, образованный р горизонтальными и q вертикальными линиями, где каждая точка пересечения рассматривается как вершина и каждый отрезок между соседними точками пересечения решетки — как ребро. При каких р и q граф G имеет гамильтонов цикл.
Показать, что граф, вершины и ребра которого соответствуют вершинам и ребрам и-мерного гиперкуба, имеет гамильтонов цикл.
Показать, что в графе из задачи 4 гамильтонова цепь между двумя диаметрально противоположными вершинами существует тогда и только тогда, когда п нечетно.
Доказать, что в каждом полном антисимметрическом ориентированном графе существует гамильтонова цепь.
Используя методы разд. 2.1, 2.2 и 2.3, либо найти все гамильтоновы циклы в графе из рис. 10.27 (если такие циклы существуют), либо показать, что таких циклов нет. Сравнить вычислительную трудоемкость этих методов.
Используя метод разд. 2.3, проверить, что граф, изображенный на рис. 10.28, не содержит гамильтонова цикла. Доказать тот же результат другим способом.
Для задачи коммивояжера с приводимой ниже матрицей реберных весов С вычислить нижние границы оптимальных решений, используя задачи о назначениях и о кратчайшем остове.
23С = 456723С = 4567
2
3
С = 4
5
6
7
2
3
С = 4
5
6
7
Найти кратчайшую гамильтонову цепь между вершинами 4 и 7 для графа из задачи 9.
20 Н. Кристофидес
Рис. 10.28.
гамильтонову цепь в граф*гамильтонову цепь в граф*из задачи 9.из задачи 9.с матрицей реберных весо!с матрицей реберных весо!
гамильтонову цепь в граф*
гамильтонову цепь в граф*
из задачи 9.
из задачи 9.
с матрицей реберных весо!
с матрицей реберных весо!
и.и.Найти абсолютно кратчайшую
и.
и.
Решить задачу коммивояжера
из задачи 9, используя алгоритм поиска с деревом решений ш раздела 7.1 и правило ветвления Б.
Решить задачу 12, используя тот же самый метод, но npi вычислении нижних границ, действуя в соответствии с результата
ми разд. 7.4.
Список литературы
Bellmore М., Nemhauser G. L. (1968), The travelling salesman problem — a survey, Ops. Res., 16, p. 538.
Bellmore M., Malone J. C. (1971), Pathology of travelling salesman subtourelimination algorithms, Ops. Res., 19, p. 278.
Burstall R. M. (1967), Tree-searching methods with an application to a network design problem, Machine Intelligence, Vol. 1, Collins and Michie, Eds., Oliver and Boyd, London.
Camerini P. M., Fratta L., Maffioli F. (in press), The travelling salesman problem: heuristically guided search and modified gradient techniques.
Charlton J. M., Death С. C. (1970), A method of solution for general machine-scheduling problems, Ops. Res., 18, p. 689.
Christofides N. (1973), Large scheduling problems with bivalent costs, The Computer J., 16, p. 263.
Christofides N. (1970), The shortest Hamiltonian chain of a graph, J. о/ SIAM (Appl. Math), 19, p. 689.
Christofides N. (1972), Bounds for the travelling salesman problem, Ops. Res., 20, p. 1044.
Christofides N., Eilon S. (1969), An algorithm for the vehicle dispatching problem, Opl. Res. Quart., 20, p. 309.
Christofides N., Eilon S. (1972), Algorithms for large-scale travelling salesman problems, Opl. Res. Quart., 23, p. 511.
Danielson G. H. (1968), On finding the simple paths and circuits in a graph, IEEE Trans., CT-15, p. 294.
Demoucron G., Malgrange Y., Petruiset R. (1964), Graphes planaires; reconnaissance at construction de representations planaires topologiques, Rev. Eran, de Resh. Орет., 8, p. 33.
Deo N., Hakimi S. L. (1965), The shortest generalized Hamiltonian tree, Proc. 3rd Allerton Conference on Circuit and Systems Theory, University of Illinois, Urbana, p. 879.
Dhawan V. (1969), Hamiltonian circuits and related problems in graph theory, M. Sc. Report, Imperial College, London.
Eilon S., Watson-Gandy C. D. T., Christofides N. (1971), Distribution Management: Mathematical modelling and practical analysis, Griffin, London.
Gilmore P. C., Gomory R. E. (1964), Sequencing a one-state variable machine; a solvable case of the travelling salesman problem, Ops. Res., 12, p. 655.
Haring D. R. 1966), Sequential-circuit synthesis, MIT Press, Research Monograph 31, Cambridge, Massachusetts.
Held M., Karp R. M. (1970), The travelling salesman problem and minimum spanning trees, Ops. Res., 18, p. 1138.
Held M., Karp R. M. (1971), The travelling salesman problem and minimum spanning trees. Part II, Math. Progr., 1, p. 6.
Krolak P., Felts W., Marble G. (1971), A man-machine approach toward solving the travelling salesman problem, Comm, oj ACM, 14, p. 327.
Lawler E. L. (1971), A solvable case of the travelling salesman problem, Math. Prog., 1, p. 267.
Lin S. (1965), Computer solutions of the travelling salesman problem, Bell Syst. Tech. J., 44, p. 2245.
Lin S., Kernighan B. W. (1971), A heuristic technique for solving a class of combinatorial optimization problems, Princeton Conf, on System Science.
Maffioli F. (1973), The travelling salesman problem and its implications, Report, Institute di Elettrotecnica ed Elettronica, Politechnico di Milano.
Nash-Williams С, St, I. А. (1966), On Hamiltonian circuits in finite graphs, Proc. American Mathematical Soc., 17, p. 466.
Ore 0. (1962), Theory of Graphs, American Mathematical Society, New York.
Перепелица В. А., Гимади Э. X. (1969), К задаче нахождения минимального гамильтонова контура на графе со взвешенными дугами, об. «Дискретный анализ», Новосибирск, стр. 57—65.
Pohl J. (1970), Heuristic search viewed as path in a graph, Artificial Intelligence, 1, p. 193.
Posa L. (1962), A theorem concerning Hamiltonian lines, Magyar Tnd. Akad. Mat. Kutato Int. Kozl., 7, p. 225.
Roberts S. M., Flores B. (1967), An engineering approach to the travelling salesman problem, Man. Sci., 13, p. 269.
Roberts S. M., Flores B.(1966), Systematic generation of Hamiltonian circuits, Comm, of ACM, 9, p. 690.
Roy B. (1959), Recherche des circuits elementaires et des circuits Hamil- toniens dans un graphe quelconque, Mimeographe, Soc. de Math. Appl., Paris.
Roy B. (1969, 1970), Algebre modern et theorie des graphes, Vols 1 an 2, Dunod, Paris.
Рубинштейн M. И. (1971), О симметричной задаче коммивояжера, Автоматика и телемеханика, 9, стр. 126.
Selby G. R. (1970), The use of topological methods in computer-aided circuit layout, Ph. D. Thesis, London University.
Syslo M. M. (1973), A new solvable case of the travelling salesman problem, Math. Prog., 4, p. 347.
Yau S. S. (1967), Generation of all Hamiltonian circuits, paths and centres of a graph and related prolblems, IEEE Trans., CT-14, p. 79.
Приложение
Ниже излагается алгоритм вычисления верхней границы В минимального числа перенастроек аппаратуры, требующихся в задаче планирования из разд. 4 данной главы, который можно использовать в качестве начального алгоритма этого раздела.
Шаг 0. Индекс -<- 0, В ■*- 0.
Шаг 1.ВзятьметкиI (ж,) =0, V xt€ X.Положить р= 0.
Шаг 2.G = (X, Д),выбратьлюбоех0 £X, положить5 =
= ко}.
Шаг 3.Еслииндекс=0, образовать5 =5 U Г (5); впротивном случае 8= 5 (JГ-1 (5).Здесь Г (xt)= {xj | (ж,, х5)£ Д}
и Г (8) = U Г (х,), а также
Г'Ч^О^иуК^, хг)ЕД} и r~4S) = и Г-Ч^г).
Шаг 4. Если 5 = 8, то перейти к шагу 5; в противном случае р ч- р + 1, I (,Xi) ■*- /> V xt £ 8 — 8, 5 -*- S и вернуться к шагу 3.
Шаг 5. Найти х ^i | I (xt) = рУ
Шаг 6. Если индекс=0, найти х' £ {xt \ I (х^ = р — 1 и (х', х) С АУ в противном случае найти х С {^; I ^ (^г) = р — 1 и (z, z') С А).
Шаг 7.Х s-X — (ж), А *- А — {(ж, х^ | xt £ X} — ^х;, х) | xt С Ху Если х ={ж0}, то В s- В + 1 и перейти к шагу 12; в противном случае перейти к шагу 8.
Шаг 8. х -^ х', р -<— р — 1. Если хт = хо, перейти к шагу 9; в противном случае перейти к шагу 5.
Шаг 9. Если индекс =0, индекс*- 1 и перейти к шагу 1; в противном случае перейти к шагу 10.
Шаг 10. Если X = У^У то В *- В + 1 и перейти к шагу 12; в противном случае перейти к шагу 11.
Шаг 11. Индекс *- 0, В *- В + 1.
Х^Х- {zj, As- A — ({(z0, ^l-rieX} —{(z;, д:0) | xt £ Xy.
Шаг 12. Стоп. В является требуемой верхней границей.
Алгоритм требует некоторых пояснений. Если индекс =0, то прослеживаются прямые цепи, проходящие по вершинам графа G, начиная с вершины х0. Эти цепи прослеживаются с присвоением метки р тем вершинам из G, которые могут быть достигнуты из х0 через р дуг (шаги 1, 2, 3 и 4). Если ни одна из этих цепей не может быть продолжена, то алгоритм переходит к шагам 5, 6 и 7, в которых самая длинная из этих цепей прослеживается назад к вершине х0, при этом убираются из графа вершины (и ассоциированные с ними дуги), лежащие на этой самой длинной цепи. Шаг 8 прекращает процесс удаления вершин. Шаг 9 возвращает к началу алгоритма со значением индекса =1, чтобы начать формирование обратных цепей, т. е. цепей, оканчивающихся в х0. Снова находится и удаляется самая длинная из этих цепей.
Самая длинная из прямых и обратных цепей (в или из х0) может рассматриваться как одна длинная цепь, содержащая х0. Число В (необходимых последовательностей цепей) увеличивается тогда на единицу на шаге 11, и после выбора другой вершины х0 из оставшегося графа процесс продолжается (формируются новые длиннейшие прямые и обратные цепи и т. д.), пока не будет исчерпан весь граф.
Конечное значение В, которое равно числу последовательностей цепей, необходимых для «стирания» всего графа (т. е. для покрытия всех вершин), является тогда, очевидно, верхней границей для требуемого минимального числа таких покрывающих последовательностей (т. е. минимального числа перенастроек аппаратуры).
Глава 11
ПОТОКИ В СЕТЯХ
L Введение
Одной из наиболее интересных и важных задач теории графов является задача определения максимального потока, протекающего от некоторой вершины s графа (источника) к некоторой конечной вершине t (стоку). При этом каждой дуге (хь х^ графа G приписана некоторая пропускная способность qib и эта пропускная способность определяет наибольшее значение потока, который может протекать по данной дуге. Эта задача и ее варианты могут возникать во многих практических приложениях, например при определении максимальной интенсивности транспортного потока между двумя пунктами на карте дорог, представляемой графом. В этом примере решение задачи о максимальном потоке укажет также ту часть сети дорог, которая «насыщена» и образует «узкое место» в отношении потока между двумя указанными концевыми пунктами.
Метод решения задачи о максимальном потоке (от s к t) был предложен Фордом и Фалкерсоном [12], и их «техника пометок» составляет основу других алгоритмов решения многочисленных задач, являющихся простыми обобщениями или расширениями указанной задачи. Следующие возможные варианты задачи о максимальном потоке (от s к t) встречаются в литературе.
Допустим, что каждой дуге графа приписана не только пропускная способность 5^, дающая верхнюю границу потока через дугу ^х^ х^. но также «пропускная способность» rtb дающая нижнюю границу потока через дугу. В таком случае далеко не очевидно, что существует допустимое множество потоков, удовлетворяющих требованиям о максимальной и минимальной пропуск- ных способностях дуг. Однако если (в общем случае) существует много таких потоков и если в дополнение к пропускным способностям заданы также стоимости единицы потока, протекающего по дуге, то возникает задача нахождения допустимого потока минимальной стоимости (от вершины s к вершине f).
Рассмотрим случай, когда ищутся максимальные потоки между каждой парой вершин. Хотя такая задача может быть решена как п (п —1)/2 «отдельных» (от sk t) задач, но это очень трудоемкий процесс. При нахождении кратчайших цепей между каждой парой вершин графа было установлено, что нет необходимости решать каждую (от s к О задачу о кратчайшей цепи индивидуально
(см. гл. 8), и в настоящей задаче точно так же существует метод, который — для неориентированных графов — не предполагает обязательного решения задач о максимальных потоках для каждой пары вершин $ и t.
Если вместо одного источника и одного стока рассмотреть несколько заданных источников и стоков, причем между различными источниками и стоками протекают потоки различных продуктов, то задача максимизации суммы всех потоков между источниками и стоками называется задачей о многопродуктовом потоке. В этой задаче пропускная способность q^ дуги (х^ xj) является ограничением для суммы всех потоков всех видов продуктов через эту дугу.
Во всех рассмотренных выше случаях неявно допускалось, что поток на входе дуги такой же, как и на выходе. Если отказаться от этого допущения и рассмотреть граф, в котором выходной поток дуги равен ее входному потоку, умноженному на некоторое неотрицательное число, то задачу о максимальном потоке (от $ к £) называют задачей о потоках с выигрышами. В такой задаче потоки могут и «порождаться», и «поглощаться» самим графом, так что поток, входящий в s, и поток, покидающий £, могут изменяться совершенно независимо.
Область теории графов, в которой рассматриваются вопросы о потоках в графах, интенсивно развивалась в большом числе работ. В настоящей главе дается обзор общих проблем, устанавливается связь между ними и приводится описание некоторых важных алгоритмов, используемых при решении задач о потоках. Последнее необходимо, во-первых, из-за собственной значимости этих алгоритмов, во-вторых, потому, что они позволяют вскрыть такие связи между задачами, которые не очевидны с других точек зрения, и, в-третьих, потому, что алгоритмы, которые будут описаны, могут быть использованы (непосредственно или как элементарные части более сложных алгоритмов) для анализа широкого круга других задач.
В этой главе мы обсудим основную задачу о максимальном потоке (от s к £) и ее обобщения (I), (III) и (IV). Так как алгоритмы для многопродуктового потока имеют совсем другую природу и совсем не так эффективны, как метод пометок, обсуждаемый в этой главе, то мы не будем заниматься здесь этой задачей и отсылаем заинтересованного читателя к [18, 27, 26, 25, 24, 15].
2. Основная задача о максимальном потоке (от $ к f)
Рассмотрим граф G = (V, Л) с пропускными способностями ДУГ Qth источником s и стоком С; s^ t £ X. Множество чисел £^, определенных на дугах (хг, xj) ^.А, называют потоками в дугах,
если выполняются следующие условия: х)
S2 Iki = — V,^•e№.)xher-i(x.)S2 Iki = — V,^•e№.)xher-i(x.)если xt = 5,
S2 Iki = — V,
^•e№.)xher-i(x.)
S2 Iki = — V,
^•e№.)xher-i(x.)
если x^ = t,(11.1)
если x^^s, t,
и
Eij^^ij Для всех (х^ Xj)£ Л.(11.2)
Уравнение (11.1) является уравнением сохранения потока. Оно утверждает, что поток, втекающий в вершину, равен потоку, вытекающему из вершины, за исключением вершин, являющихся источником и стоком (вершин s и £), для которых существуют сетевые вытекания и приток величины v соответственно. Соотношения (11.2) указывают просто на то, что пропускные способности ограничены для каждой дуги графа G. Задача состоит в нахождении такого множества потоков по дугам, чтобы величина
2 S ^(и.з)
х7ег(й)xher-i(t)
была максимальной. Здесь £SJ- и ^м записаны для потоков из вершины s в Xj и из х^ в t соответственно.
Алгоритм расстановки пометок, предложенный Фордом и Фал- керсоном [12] для решения этой задачи, основан на следующей теореме (определение понятия разреза см. в гл. 9).
Теорема 1. (Теорема о максимальном потоке и минимальном разрезе [8, 10, 11].) Величина максимального потока из s в t равна величине минимального разреза (Хт —>■ Хт), отделяющего s от I.
Разрез Хо —■> Хо отделяет s от I, если s £ХО и I £ Хо. Величиной ) такого разреза называется сумма пропускных способностей всех дуг из G, начальные вершины которых лежат в Хо, а конечные в Хо, т.е.
v<X0^X0) =2 ~ qtj.
^ х.^Х^Х^
Минимальный разрез (Хт-^ Хт) — это разрез с наименьшим таким значением.
Доказательство. Здесь дано конструктивное доказательство теоремы о максимальном потоке и минимальном разрезе, и используемый метод непосредственно приводит к алгоритму расстановки пометок, излагаемому ниже.
*) Если могут возникнуть неясности, то мы будем употреблять запись g (sj, х^, q (x^ Xj), г (xt1 Xj) и (xis Xj) вместо сокращенных обозначений lij' «hr rtj n CU соответственно.
Совершенно очевидно, что максимальный поток из $ в t не 5(^^^ тп7И), так как всякая цепь,
ведущая из s в ^ проходит хотя бы через одну дугу данного разреза. Поэтому достаточно установить существование потока с таким значением. Допустим теперь, что поток задается ти-мерным вектором |, и определим разрез (Хо -> Хо) рекурсивным применением нижеуказанного шага (б).
Начать, полагая Хо-^- {$}.
Если х, £ Хо и, кроме того, ^и < qu или ^п > 0, то включить ж, в множество Хо, и повторять этот шаг до тех пор, пока множество Хо нельзя будет расширять дальше.
Теперь могут возникнуть два случая в зависимости от того, будет ли t $ Хо или t Хо.
Случай (I), t £ Хо. В соответствии с шагом (б) отношение t 6 Хо означает следующее: существует такая «неориентированная» цепь, ведущая из вершины s в вершину t, что для каждой дуги (^, Xj), используемой цепью в прямом направлении (прямой дуги), 5гj < Qib а Для каждой дуги (хк, х^, используемой цепью в обратном направлении, т. е. в направлении от xt к хк (обратной дуги), Ъц > 0. (Такая цепь (из дуг), ведущая из s в f, будет называться аугменталъной г) цепью потока.)
Пусть
6У= min Yq^ — 5i/l Для прямой дуги (xis х}),(И.5)
бь= min [^z]для обратной дуги (хк, ж,),(11.6)
И
6 = min [6/, бь].(И.7)
Если теперь величину б прибавить к потоку во всех прямых дугах и вычесть во всех обратных дугах цепи, то в результате получится новый допустимый поток, на б единиц больший, чем предыдущий. Это очевидно в силу того, что прибавление величины 6 к потоку в прямых дугах не может привести к превышению ни одной из пропускных способностей этих дуг (так как б бу), а вычитание 6 из потока в обратных дугах не может сделать поток в этих дугах отрицательным (так как 6 ^ бь).
Используя новый исправленный поток, можно затем повторить шаги (а) и (б) и, определив новый разрез (Хо, Хо), повторить предыдущие рассуждения.
Случай (II), t^ Хо (т. е. t £ Хо). В соответствии с шагом (б) ^и = Su для всех (^z, Xj) с (Хо ->- X?) и ^г = 0] для всех (хк, х^ £
х) От augmen (лат.) — увеличение, приращение, прирост.— Прим, перев.
€ (Хо -> Хо). Следовательно,
^ =5 qu
(Ж4,^.)е(х0-х0)и,. xj)€(X0-x0)
и
,^=0,
<хй,хг)е(хо-хо)
т. е. величина потока, а именно
(Хр *j)€(Xo-»Xo)vx^, ^рЕС^-'-.Хд)
равна величине разреза (Ао—>-Х0).
Так как в случае (I) поток все время увеличивается по крайней мере на единицу, то при целочисленности всех q^ максимальный поток получим за конечное число шагов — как только возникнет случай (II). Этот поток будет равен тогда величине текущего разреза (Хо ->Х0), который, следовательно, должен тогда быть равным минимальному разрезу. Теорема доказана.
Конструктивный метод, использованный при доказательстве теоремы о максимальном потоке и минимальном разрезе, позволяет сразу же получить алгоритм вычисления максимального потока из данной вершины s в данную вершину t в графе с известными пропускными способностями. Такой алгоритм будет сейчас описан.
Алгоритм начинает работу с произвольного допустимого потока (можно взять и нулевой поток), затем стремятся увеличить величину потока с помощью систематического поиска всех возможных аугментальных цепей потока от s к t. Поиск аугменталь- ной цепи осуществляется с помощью расстановки пометок в вершинах графа. Пометки указывают, вдоль каких дуг может быть увеличен поток и на сколько. Как только найдена одна из таких цепей, поток вдоль нее увеличивают до максимального значения, все пометки в вершинах стираются и вновь полученный поток используется в качестве исходного при новой расстановке пометок. Алгоритм заканчивает работу и дает максимальный поток, если нельзя найти ни одну аугментальную цепь. Алгоритм применяется следующим образом.
Алгоритм расстановки пометок для задачи о максимальном (от s к <) потоке
Расстановка пометок. Вершина может находиться в одном из трех состояний: вершине приписана пометка и вершина просмотрена (т. е. она имеет пометку и все смежные с ней вершины
«обработаны»), пометка приписана, но вершина не просмотрена (т. е. она имеет пометку, но не все смежные с ней вершины обработаны), вершина не имеет пометки. Пометка произвольной вершины it состоит из двух частей и имеет один из двух видов: (+л:у, б) или (—Xj, 6). Часть 4-Xj пометки первого типа означает, что поток допускает увеличение вдоль дуги (хь х^. Часть — х} пометки другого типа означает, что поток может быть уменьшен вдоль дуги (xi, х5у В обоих случаях 6 задает максимальную величину дополнительного потока, который может протекать от s к xt вдоль построенной аугментальной цепи потока. Присвоение пометки вершине xt соответствует нахождению аугментальной цепи потока от s к X;. Сначала все вершины не имеют пометок.
Шаг 1. Присвоить вершине s пометку (+$, 6 (s) = оо). Верши- не s присвоена пометка и она просмотрена, все остальные вершины без пометок.
Шаг 2. Взять некоторую непросмотренную вершину с пометкой; пусть ее пометка будет (±xh, 6 (z,)).
Каждой непомеченной вершине х, £ Г (z,), для которой ^ij < Sir присвоить пометку (—Xi, б (z7)), где
б (z7) = min [б (zj), Qi—^ijA-
Каждой непомеченной вершине х5 £ Г-1 (z), для которой £# > 0, присвоить пометку (—Xi, б (z7)), где
6(z7) = min [6 (х^, 17<] .
(Теперь вершина xt и помечена, и просмотрена, а вершины Xj, пометки которым присвоены в (I) и (II), являются непросмотренными.) Обозначить каким-либо способом, что вершина х, просмотрена.
Шаг 3. Повторять шаг 2 до тех пор, пока либо вершина t будет помечена, и тогда перейти к шагу 4, либо t будет не помечена и никаких других пометок нельзя будет расставить; в этом случае алгоритм заканчивает работу с максимальным вектором потока |. Здесь следует отметить, что если Хо — множество помеченных вершин, а Хо — множество не помеченных, то (Хо —>- Х^ является минимальным разрезом.
Б. Увеличение потока
Шаг 4. Положить х = t и перейти к шагу 5.
Шаг 5. (I) Если пометка в вершине х имеет вид (+z, 6 (z)), то изменить поток вдоль дуги (z, х) с | (z, z) на £ (z, z) + 6 (О-
Если пометка в вершине х имеет вид (—z, 6 (z)), то изменить поток вдоль дуги (z, z) с £ (z, z) на £ (z, z) — 6 (i).
Шаг 6. Если 2 = $, то стереть все пометки и вернуться к шагу 1, чтобы вновь начать расставлять пометки, но используя уже улучшенный поток, найденный на шаге 5. Если 2 #= s, то взять х = 2 и вернуться к шагу 5.
Пример
Рассмотрим граф, изображенный на рис. 11.1, и возьмем в качестве источника вершину xv а в качестве стока — вершину z9. Пропускные способности дуг указаны на рисунке. Требуется найти максимальный поток от хг к х9.
В качестве начального возьмем поток с нулевыми значениями на всех дугах. Алгоритм работает следующим образом.
Шаг 1. Припишем вершине хг пометку (+х15 оо).
Шаг 2. (I) Множество вершин {я, | х5 С Г (х^, ^7- < Qin Xj не помечена} есть {.г2, х4}, .
вершине х^ приписывается пометка (+^i, min [сю, 14 — 0], т. е. (+^ь 14),
вершине х4 приписывается (+^, min [оо, 23 — 0]), т. е. (+^, 23).
Множество вершин ^з I XJ € Г-1 (^), ^п > 0, х3 не помечена} является пустым. Итак, ^ помечена и просмотрена, х4 и х^ помечены и не просмотрены, а все остальные вершины не помечены. Повторяем шаг 2 и первой просматриваем вершину х^.
Множество {^j | х5 С Г (х^, £2?- < q^ и х3 не помечена} есть {^з}.
для х3 пометкой будет (+^2, min [14, 10 — 0] = (+^2, Ю)-
Рис. 11.1. Граф из примера 2.2.
Множество ^Xj | Xj £ Г-1 (z2), £7-2 < 0 и х5 не помечена} является пустым. Теперь вершины хт и х2 помечены и просмотрены, a .r3 и х4 помечены, но не просмотрены.
Беря для просмотра х3 и повторяя шаг 2, придем к следующим пометкам:
для хь пометкой будет (+^з, min [10, 12 — 0]) = (+^3, 10),
для х8 пометкой будет (+^з, min [10, 18 — 0]) = (+.г3, 10).
Беря для просмотра х41 найдем, что никаких пометок расставить нельзя. Продолжая просмотр с х&1 получим следующие пометки:
пометка для х6 будет (+z5, min [10, 25 — 0]) = (+^5, 10),
пометка для хч будет (+^5, min [10, 4 — 0]) = (+z5, 4), пометка для хв будет (+ж7, min [4, 15 — 0]) = (+z4, 4).
Переходя к шагам 4 и 5, получим:
X = Хд*,^7,9 — 0 -]- 4 = 4;
2 =^5,7 = 4;
х = х5;£3,5 = 4;
—^з!^2,з " 4;
^ = z2;11,2 = 4.
Вид потока в конце шага 5 и пометки вершин до их стирания на шаге 6 показаны на рис. 11.2а. Все потоки показаны подчеркиванием.
Стирая пометки у вершин и возвращаясь к шагу 1 для второго прохода, получим следующие новые пометки вершин (помеченные, но не просмотренные вершины просматриваются в порядке возрастания их номеров).
Шаг 3.
Пометкой для хт будет (+^i, оо),
пометкой для х2 будет (+^n min [оо, 14 — 4]) = (+^, 10), пометкой для х4 будет (+хх, min [оо, 23 — 0]) = (+^х, 23); теперь вершина хт помечена и просмотрена.
Пометкой для жа будет (+д:2, min [10, 10 — 4]) = (+^2, 6), теперь вершина х2 помечена и просмотрена.
Пометкой для х5 будет (+#3, min [6, 12 — 4]) = ( + ^3i 6), пометкой для х8 будет (+я3, min [6, 18 — 0]) = (+я3, 6); теперь вершина х3 помечена и просмотрена, вершина х4 также помечена и просмотрена.
Рис. 11.2а. Потоки и пометки после 1-й итерации. — насыщенные дуги.Рис. 11.2а. Потоки и пометки после 1-й итерации. — насыщенные дуги.Рис. 11.26. Потоки и пометки после 2-й итерации. — насыщенные дуги.Рис. 11.26. Потоки и пометки после 2-й итерации. — насыщенные дуги.
Рис. 11.2а. Потоки и пометки после 1-й итерации. — насыщенные дуги.
Рис. 11.2а. Потоки и пометки после 1-й итерации. — насыщенные дуги.
Рис. 11.26. Потоки и пометки после 2-й итерации. — насыщенные дуги.
Рис. 11.26. Потоки и пометки после 2-й итерации. — насыщенные дуги.
Рис. 11.2в. Потоки и пометки после 3-й итерации.— насыщенные дуги.
Рис. 11.2г. Потоки и пометки после 4-й итерации.— насыщенные дуги.
Рис. 11.2д. Потоки и пометки после 5-й итерации. — насыщенные дуги.
Рис. 11.2е. Потоки и пометки после 6-й итерации. — насыщенные дуги.
Пометка для хв будет (+хв, min [6,25 — 0] = (+яв,6), теперь вершина х5 помечена и просмотрена.
Пометкой для х^ будет (+xe, min [6,7 — 0]) = (+хв,6), теперь вершина хв помечена и просмотрена.
Пометкой для ха будет (+х7, min [6,15 — 4]) = (+х7,6).
Шаги 4 и 5.
Новые потоки увеличились следующим образом:
£7,в = 4 + 6 = 10; ^,7 = 0 + 6 = 6; ^5.е = 0 + 6 = 6;
U = 4 + 6 = 10; ^,з = 4 + 6 = 10; 51.2 = 4 + 6 = 10; все остальные значения потока не изменились.
Новый вид потока и пометки вершин до стирания показаны на рис. 11.26.
Продолжая дальше, получаем после каждого прохода алгоритма потоки и пометки, изображенные последовательно на рисунках 11.2в—11.2д. Алгоритм заканчивает работу, когда вершина не может быть помечена; «заключительные» пометки показаны на рис. 11.2е.
Поток на рис. 11.2е является поэтому максимальным потоком со значением 29, а соответствующий минимальный разрез показан пунктиром на рис. 11.2е.
Инкрементальные графы
Процесс нахождения в графе G = {X, А) аугментальной цепи потока, когда поток по дугам задается вектором 5, можно рассматривать как процесс нахождения цепи (от s к () в инкрементальном графе G* (5) = (А^, Ам), определяемом следующим образом:
Х* = Х,Aw = A*t\jA^,
где
Л?=М4)1^<7иЬ
причем пропускная способность дуги ^, ^1€ А» равна ^ = = Чи — ^ih и
А^=М ^)|№>0},
причем пропускная способность дуги (х*, х*) £ А^ равна ^ =
Процедура расстановки пометок в ^алгоритмеД описанном в разд. 2.1, является теперь не чем иным, как методом построения 21 Н. Кристофидес
(б)
Рис. 11.3. (а) Граф G, потоки g^ которого подчеркнуты, (б) Инкрементальный граф G* (£).
достижимого множества В (s) в инкрементальном графе би (5). Если t £ В (s), т. е. если вершина t получила пометку, то в графе G* (|) найдена цепь Р от s к t. Аугментальная цепь в графе G является теперь цепью Р, где дуги из Р в А^ являются прямыми дугами, а дуги из Р в А$ являются обратными дугами.
На рис. 11.3(a) дан пример вектора £ в графе, где подчеркнутые числа задают потоки, а "другие числа у дуг задают пропускные способности. На рис. 11.3(6) изображен соответствующий инкрементальный граф Сц (|).
Декомпозиция потока
Иногда бывает желательно представить сложный поток как сумму простых потоков. Это бывает полезно не столько из-за того, что такая декомпозиция нужна на практике, а потому что она дает лучшее понимание природы потоков в сетях и служит удобным средством для обоснования многих потоковых алгоритмов.
Обозначим через h о (S) такой поток в графе G, в котором положено ^/ = и. для дуг (хь xj) € 8 и ^и = 0 для дуг (хь х^ $ S'. Очевидно, что h о (S) не всегда будет потоком, если множество дуг 8 произвольно, так как поток должен удовлетворять уравнению непрерывности (11.1) при некотором значении и. Совершенно очевидно, что для того, чтобы h = (S) представляло поток, множество дуг 8 должно быть или цепью от s к t в G, или циклом в G.
Для двух заданных потоков § и ф через 1 + ф обозначим поток, значение которого на дуге (xt, Xj) равно £г; + фгу.
Теорема 2. Если § — произвольный поток (от з к t) в графе G с (целочисленным) значением и, то £ можно представить в виде
5 = 1о(Л)+ 1 о (Р2)+...+1 о(Р0) + 1о(Ф1) +
+ 1 ° (Фг) + • • • + 1 0 (Фь),
где Рг, . . ., PD — простые цепи (от з к t) в графе G, а Фг, . . . . . ., Ф^ — простые циклы в G.
(Pt и Фг не обязательно должны быть различными).
Доказательство. Для графа G = (X, Л) с потоком § построим унитарный граф Ge = (Xе, Ав) следующим образом. Множество вершин Xе графа Ge совпадает с множеством вершин X графа G. Если ^tj — поток по дуге (xt, xj) графа G, то между вершинами х^ и хе графа Ge проведем Ьц параллельных дуг. Граф Ge будет тогда s-графом, и так как каждая дуга в Ge соответствует единице потока по дуге в G, то граф G* представляет поток £ в G.
В графе Ge степени вершин должны удовлетворять (в силу условия непрерывности (11.1)) условиям
d0 (х®) = dt (х^), Чх^ =# з" или Р,
d0 (se) = dt (te) = и-
Если теперь добавить к графу Ge и дуг возврата от вершины i* к вершине зе, то в графе Ge будет существовать эйлеров цикл (см. гл. 9). Удаление этих и дуг из эйлерова цикла даст и цепей от s* к f, которые в совокупности проходят по каждой дуге графа (У точно один раз. Пусть эти цепи будут Р'„ Р*, . . ., Р'„. Цепи Pt не обязательно должны быть простыми, хотя (в силу определения эйлерова цикла) в них не должны содержаться одинаковые дуги. 21*
Но так как любую непростую цепь можно рассматривать как сумму^простой цепи (от se к ie) и некоторого числа простых попарно непересекающихся по лугам циклов, то
M’(W^2)b..+4^) + 4$l)b..+4^^^^
где Pt — простая цепь (от se к t^, а Ф, — простой цикл. Теорема доказана.
В общем случае не все циклы и цепи будут различными. Если только первые и’ цепей п к' циклов различны, причем цепь Рг встречается в списке Ри . . ., Р„ kt раз, а цикл Фг в списке
(6j
?Рис. 11.4. Декомпозиция потока на элементарные (от s к t) потоки по цепям и циклам, (а) Поток £. (б) Цепи и циклы потока |.
Фь . . ., Ofe, Zz раз, то § можно записать в виде
i=li=l
где суммирование понимается как сложение потоков в указанном выше смысле.
В процессе доказательства теоремы 2 получен другой важный результат, а именно что единичные потоки, на которые разложен поток £, являются конформалъными, т. е. если с. и — значение потока на дуге (xf, х^ графа G, то существует всего £(> единичных потоков, которые все используют эту дугу в направлении от х4 к xjr).
Рис. 11.4 дает пример потока | и его декомпозицию на простые- цепи (от s к Z) и циклы.
Простые варианты задачи о максимальном потоке (от s к t)
Мы дадим теперь ряд задач, связанных с потоками, которые просто сводятся к задаче о максимальном потоке (от з к Z), рассмотренной выше.
Графы со многими источниками и стоками
Рассмотрим граф с п8 источниками и nt стоками и предположим, что поток может идти от любого источника к любому стоку. Задачу нахождения максимального общего потока от всех источников ко всем стокам можно преобразовать в простую задачу о максимальном потоке (от з к Z) путем добавления нового искусственного источника s и нового искусственного стока t с добавлением дуг, ведущих от з к каждому истинному источнику и от каждого истинного стока к I.
На рис. 11.5 показано, как множество источников и стоков может быть сведено к единственному источнику и единственному стоку. Пропускные способности дуг, ведущих от s к источникам, могут быть выбраны равными бесконечности или в случае, когда производительность источника Зь ограничена, пропускная способность соответствующей дуги (s, з^ может быть выбрана равной этой границе. Точно так же пропускные способности дуг, ведущих
х) Поток не будет конформальным, если, например, существует ^j + р единичных потоков, использующих дугу в направлении от z^ к Zj, и р единичных потоков, использующих дугу в противоположном направлении, и все ати потоки, таким образом, дают общий поток от а^ к Zj, равный g^. В общем случае два потока g и ф будут конформальными, если для любой дуги (z;, zj) будет g г^л = 0.
от стоков к 4, могут быть ограничены некоторой величиной (зависящей от стоков) или положены равными бесконечности, если такой границы нет.
Если в задаче некоторые стоки должны снабжаться только определенными источниками и наоборот, то она уже не будет
простой разновидностью задачи о максимальном потоке (от s к <) и становится задачей о многопродуктовом потоке. Эта задача упоминалась во введении (см. задачу (Ш)).
Графы с пропускными способностями дуг и вершин
Пусть в графе G дуги имеют пропускные способности q^, и пусть, в дополнение к этому, вершины графа имеют пропускные способности w5 (] = 1, 2, . . ., п), скажем, такие, что полный поток, входящий в вершину х3, должен иметь значение, меньшее, чем Wj, т. е.
2|г/^Ш; ДЛЯ всех х5.
х^Г-Ч^)
Пусть требуется найти максимальный поток между вершинами s и t такого графа.
Определим граф Go так, чтобы каждая вершина х3 графа G соответствовала двум вершинам xj a xj в графе Go, причем каждой дуге (хь Xj) из G, инцидентной вершине xj, соответствует дуга (xj, xj) из Go, инцидентная вершине xj, и каждой дуге (х3, xh) из G, исходящей из xj, соответствует дуга (xj, xj) из Go, исходящая из xj. Кроме того, введем дугу между xj и xj с пропускной способностью ио,, т. е. равной пропускной способности вершины х3.
На рис. 11.6 (а) дан пример графа с пропускными способностями дуг и вершин, а на рис. 11.6 (б) показан граф Go, построенный в соответствии с приведенным описанием. Так как полный поток, входящий в вершину xj, необходимо должен протекать по дуге (xj, xj) с пропускной способностью Wj, то максимальный поток в графе G с пропускными способностями дуг и вершин равен максимальному потоку в графе Go, имеющем только пропускные способности дуг. Следует заметить, что если минимальный разрез
Рис. 11.6. (а) Граф, вершинам и дугам которого приписаны пропускные способности, (б) Эквивалентный граф, в котором пропускные способностиРис. 11.6. (а) Граф, вершинам и дугам которого приписаны пропускные способности, (б) Эквивалентный граф, в котором пропускные способностиимеют только дуги.имеют только дуги.
Рис. 11.6. (а) Граф, вершинам и дугам которого приписаны пропускные способности, (б) Эквивалентный граф, в котором пропускные способности
Рис. 11.6. (а) Граф, вершинам и дугам которого приписаны пропускные способности, (б) Эквивалентный граф, в котором пропускные способности
имеют только дуги.
имеют только дуги.
в Go не содержит дуги вида (х/, ху), то пропускные способности вершин в G пассивны и излишни. Если^же минимальный разрез в Go содержит такие дуги, то^соответствующие вершины в G насыщены полученным максимальным потоком.
ЗеЗ Графы, у которых пропускные способности дугограничены сверху и снизу
Рассмотрим граф G = (X, Л), дуги~(хь х^ которого имеют пропускные способности (верхние границы потока), скажем, qlh а также имеют нижние границы потока, скажем, ги. Допустим,
что мы хотим узнать, существует ли допустимый поток между s и f, т. е. поток £г^, удовлетворяющий для всех дуг (xt, х^ из G условию (11.1) и, кроме того, неравенствам rtj ^ |^ ^ qtj.
Начнем с введения в графе G нового искусственного источника sQ и искусственного стока ta и построим новый граф Ga. Для каждой дуги (хь х3\ у которой г^ =/= 0, введем дуги (s„, х^ и ^х^ ta) с пропускными способностями rtj и с нижней границей 0. Уменьшим qtj до qtj — rtj, a rt) до 0. Кроме того, введем дугу (f, s) с gts = со и rts = 0.
Применяя, например, эти преобразования к графу, изображенному на рис. 11.7 (а) и имеющему только две дуги с ненулевыми нижними границами, получим граф, показанный на рис. 11.7 (б).
7/д’00 (6)
Рис. 11.7. (а) Граф с верхними и нижними границами потоков, проходящих по дугам, (б) Преобразованный граф, в котором для потоков имеются лишь верхние границы (даны значения верхних границ, все нижние границы равны нулю).
Найдем теперь максимальный поток между искусственными вершинами за и tQ преобразованного графа Ga. Если значение максимального потока (от sa к fa) есть ^ ra (Ti е- если все дуги, выходящие гь*о
из sa, и все дуги, входящие в ta, насыщены) и, скажем, поток по дуге (t, s) равен |is, то в первоначальном графе существует допустимый поток со значением £is. В этом можно убедиться так. Если мы вычитаем т13 из потока в дугах (г,, fo) и (sa, Ху) и добавляем т^ к потоку в дуге (я,, Xj), то значение полного потока от sa к ta уменьшается на величину Гц, потоки по дугам (хь ta) и (sa, Kj) уменьшаются до нуля, а поток по дуге (жг, х^ принимает значение £^, ти ^ £^ ^ q^ (конечное значение |^ равно ri3, если первоначальное значение ^tj, соответствующее максимальному потоку, равно нулю и конечное значение £13 равно qtj, если первоначальное значение |^ является максимально возможным, т. е. qi} — тп\ Шаг, состоящий в вычитании потока из максимального потока, противоположен шагу увеличения в алгоритме максимального потока. Так как мы допустили, что максимальный поток от sa к ta равен 2 rib то процесс вычитания потока при- тц*°
ведет в конечном итоге к нулевому потоку от sQ к ta (сделав тем самым эти две искусственные вершины и инцидентные им дуги излишними) и поток во всех дугах с г^ ^= О будет лежать в пределах Гц ^ ^; ^ q^. Конечный результат является, следовательно, «циркуляцией» потока в графе, причем значение этого потока равно £(а. С другой стороны, справедлива
Теорема 3. Если, значение максимального потока (от за к t^ в графе Ga не равно 2 гы, 7710 6 графе G не существует никакого т£,Ф0
допустимого потока.
Доказательство этой теоремы предлагаем в качестве упражнения читателю (см. задачу 5).
Максимальный поток между каждой парой вершин
В некоторых случаях, например когда граф представляет телефонную сеть, вершины которой соответствуют станциям, а дуги — телефонным линиям, может потребоваться^найти максимальную скорость передачи сообщений между двумя любыми станциями s и t. При этом предполагается, что в любой фиксированный момент времени каждая станция может быть связана с произвольной другой, но лишь с одной станцией. В данном примере пропускная способность кабеля равна числу независимых разговоров,.
которые могут вестись по нему. Подобная ситуация имеет место и в случае, когда граф представляет сеть дорог с односторонним движением и требуется определить, как одностороннее движение влияет на максимум транспортного потока между двумя районами, если эти районы рассматриваются обособленно друг от друга.
Как было отмечено во введении, эта задача может быть решена просто с помощью задачи о максимальном потоке (от s к () для всех пар вершин (s, f). Однако такой метод излишне трудоемок, поэтому мы изложим здесь алгоритм Гомори и Ху [14], который в случае неориентированных графов намного более эффективен. Так как этот алгоритм использует два важных понятия, то мы сначала обсудим их, чтобы сделать более ясным описание самого алгоритма.
Потоковая эквивалентность
Теорема 4. Пусть fu — значение максимального потока от вершины х, к вершине х; графа G. {Так как G — неориентированный граф, то f^j = fj^. Эти потоки удовлетворяют соотношению /ij^^Biin Ifikt fkj] для всех 1, /, /г.(11.8)
Доказательство. Если) (Хо, Хо) — минимальный разрез, даютчй ftj, т. е.
fij = У №, -Хо)» ZtQXg, Xj^Xg,
ТО при хк £ Хо выполняется неравенство tu ^ tup так как (Хо, Хо) является также разрезом, отделяющим хк от Xj, а при хк £ Хо справедливо неравенство ftj ^ fik, так как (Хо, Хо) является также разрезом, отделяющим х, от хк. Отсюда немедленно вытекает теорема.
Повторно применяя неравенство (11.8) к потокам в скобках из (11.8), получим
/i^minl/^ , fkk fhkfk a(11.9)
для любой последовательности вершин хь хк1, хкг, xks, . . ., хк Xj.1р
Если теперь рассмотреть гипотетический полный граф G' с п вершинами и взять в качестве «длины» ребра {хк, х^ максимальный поток /у между соответствующими вершинами х, и Xj из G, то эти «длины» можно использовать для построения «длиннейшего остова» Т* графа G', применяя один из методов построения кратчайшего (или длиннейшего) остова, приведенных в гл. 7. В соот- ветствии'с (11.9) можно сказать, что поток }и больше или равен, чем «длина»хкратчайшего ребра, лежащего на единственной цепи в Т* из\Г{ B_Zj. Если, однако, ti, больше, чем «длина» кратчайшего ребра, то удаление -этого ребра и добавление (хк, xj) даст новое
дерево из G', более длинное, чем Т*, что противоречит предположению о максимальности Т*. Таким образом, /^ должно быть равно «длине» кратчайшего ребра на единственной цепи из х\ в х, в дереве Т*. Следовательно, древовидный граф Т*, пропускные способности дуг которого равны «длинам» ребер из G', будет потоково эквивалентен первоначальному графу G. Под потоковой эквивалентностью понимается следующее свойство: если графы G и Т рассматриваются как «черные ящики» с вершинами «выведенными наружу», то эти два графа будут неразличимы при характеризации их с помощью максимальных потоков между парами вершин. Вышеприведенная конструкция графа Т* является предельно общей и показывает, что для любого графа G всегда существует потоково эквивалентный древовидный граф Т*.
Конденсация вершин
Предположим, что для графа G ="L(X, Г) решена задача о максимальном потоке (от з к t), причем з и t — две случайным образом выбранные вершины. Пусть (Хо, Хо) — минимальный разрез, соответствующий максимальному потоку, и рассмотрим две вершины хг их,, лежащие обе в Хо (или обе лежащие в Хо). Если мы теперь хотим найти /,;, максимальный поток из xt в х}, то все вершины из Хо (или Хо, если xt и Xj £ Хо) могут быть «сконденсированы» в одну вершину хо коль скоро речь идет только о вычислении потока. Эта конденсация такова, что ребра (_ха, хь}, ха и хь £ Хо заменяются ребрами (хо, хо) и любые’параллельные ребра между одной и. той же парой вершин (которые могут получиться) заменяются единственным ребром, пропускная способность которого равна сумме пропускных способностей параллельных ребер. На рис. 11.8 (а), (б), (в) иллюстрируется процесс конденсации. Тот факт, что такая конденсация множества Хо возможна, был установлен Гомори и Ху [14, 16], развившими вышеописанный нами метод. В доказательстве показывается, что все вершины Хо должны лежать с одной и той же стороны от минимального разреза (Уо, Уо), отделяющего xt от х} (т. е. или Хо сУо, или Хо г Уо), так что внутренние свойства подграфа (Хо, Г) графа G не влияют на вычисление минимального разреза между xt ИХ).
4еЗ« Алгоритм построения максимального потока;между всеми парами вершин
Алгоритм, описанный в настоящем разделе, порождает дерево Т*, которое потоково эквивалентно неориентированному графу G. Максимальный поток Jd между двумя вершинами xt и Xj
Рис. 11.8. (а) Минимальный (от s к /) разрез, (б) Конденсация вершин при вычислении потока от xf к х^. (в) Сконденсированный граф.
графа G может быть следующим образом найден по этому дереву: /o = min[^fti, g^, д^, .. ., д'н^.(11.10)
где (хь x^, хк1, . . ., х^ — единственная цепь, проходящая по ребрам дерева Т* и ведущая от х\ к х^. Каждая вершина х'к из Т* соответствует вершине хк из G, a qkt является пропускной способностью ребра (хк, x'f) из Т*.
Идея алгоритма проста: так как существует дерево Т*, пото- ково эквивалентное графу G, и так как Т* содержит только п — 1 ребер, то все, что необходимо,— это вычислить пропускные способности п — 1 ребер дерева Т*. Описанный в данном разделе алгоритм вычисляет пропускные способности ребер дерева Т* за п — 1 этапов. Каждый этап состоит в вычислении потока в графе, получаемом последовательно из ранее построенного графа с помощью конденсации, как об этом говорилось выше в разд. 4.2.
Описание алгоритма. Так как алгоритм порождает дерево Т* постепенно и так как на любом из (п — 1) этапов действия алгоритма «вершины» из Т* могут быть на самом деле множествами вершин из G, то мы будем, во избежание недоразумений, называть вершины из G G-вершинами, а вершины из Т* — ^-вершинами. Ниже дается достаточно комментариев, чтобы сделать алгоритм понятным.
Шаг 1. Положить St — X, N = 1.
На любом этапе Т* является графом, определенным N Т*-вер- шинами S15 S2, . . ., SN, и каждая из них соответствует некоторому множеству G-вершин. Вначале граф Т* состоит из единственной вершины iSp
Шаг 2. Найти множество 5* €{517 S2, . . ., S^}, содержащее более чем одну G-вершину. Если такого не существует, то перейти к шагу 6, в противном случае — к шагу 3.
Шаг 3. Если бы S* было удалено из Г*, то дерево распалось бы на некоторое число поддеревьев (связанных компонент). Сконденсировать Т^-вершины в каждом поддереве в одну вершину и образовать сконденсированный граф. Взять любые две вершины х^ и Xj £ S* и найти минимальный разрез (Хо, Хо) в G, отделяющий Xt от ^, с помощью вычисления максимального потока (от х^ к х^.
Шаг 4. Удалить из Т* 7т*-вершину 5* вместе с ребрами, ей инцидентными, и^заменить ее на две Т^-вершины, составленные из G-вершин множеств S* П ^о и 5* Q Х01 и на ребро между ними с пропускной способностью w (Хо, Хо). Итак, для всех Т*- вершин St, которые до замены были инцидентны 5* (скажем, с пропускной способностью ребра с?), добавить к Т* ребро (Sf, 5*ПХ), если Si cz Хо, или же к Т* добавить ребро
(Si, S*nX0), если Si CI Хо. Пропускные способности ребер и в том и в другом случае взять равными с?.
Замечание. Как уже было отмечено в разд. 4.2, Гомори и Ху [14] показали, что St лежит целиком или в Хо, или в Хо, так что возможны только два указанных выше случая.
Шаг 5. Положить N = N + 1. Вершины из Т* являются теперь множествами G-вершин Slt Gj, . . ., S* f| Xo, S* Q nX01 . . -, SN, где S* заменена двумя 7*-вершинами 5* П Хо и 5* П Хо, как объяснялось выше. Перейти к шагу 2.
Шаг 6. Останов. Т* будет теперь требуемым потоково эквивалентным графу G деревом, и его 7*-вершины являются теперь единственными G-вершинами. Пропускные способности ребер из Т* соответствуют значениям (н — 1) независимых разрезов в графе G. Равенство (11.10) можно теперь использовать для вычисления fij (для любых xb Xj € ^) непосредственно из 7*.
То обстоятельство, что вышеприведенный алгоритм дает оптимальный результат, следует непосредственно из свойств минимальных разрезов и свойств потоково эквивалентного графу G дерева, приведенных выше в разд. 4.1 и 4.2. Формальное доказательство можно найти в книге Ху [16].
4.4. Пример
Рассмотрим неориентированный граф G, изображенный на рис. 11.9. Пропускные способности показаны цифрами, стоящими
Рис. 11.9. Граф из примера 4.4.
у ребер. Нужно найти максимальный поток между^каждой парой вершин графа G. Применим вышеописанный^алгоритм.
Шаг 1. Sx = {xlt х^ х^ х^ хь. яв}; N = 1.
Шаг 2. 8* = Sle
Шаг 3. Граф не может быть сконденсирован. Берем (произвольно) Xi = хх и Xj = хй. Вычисляя максимальный^поток (от хх к х^, найдем, что минимальным разрезом будет (Хо, Хо), где Хо ={^ц #6i ^е} и ^о —{^2» ^31 XJ» а значение разреза равно 24.
Шаг 4. Дерево Т* и пропускные способности его ребер изображены на рис. 11,10а.
Шаг 5. N — 2 (т. е. Т* имеет теперь, как показана на рис. 11.10а, две вершины: 5\ и S2).
Шаг 2. Берем 5* = S2.
Шаг 3. Выбираем (произвольно) х^ = х3 и xj = х4. Полученный затем сконденсированный граф изображен на рис. 11.106. Вычисляя для него максимальный поток, порождаем минимальный разрез (Хо, Хо), где Хо = {х3) и Хо = {х^х^Хв, ж2, яД. Знача* ние этого разреза равно 23.
Шаг 4. Г*-вершина 52 = {^27 х^ ^J заменяется теперь двумя новыми Т^-вершинами {д:3} и {х2, я4} и ребром между ними со значением 23. Так как ^ cz Хо, то ребро (5n S2) удаляется и заменяется ребром (5Х, 53), где 53 = {х2, я:4}.
Шаг 5. N ~ 3 (т. е. Т* имеет теперь 3 вершины, как показана на рис. И.Юв).
Шаг 2» Возьмем 5* = 53.
Шаг 3. Берем xt = хй и х^ = х3. Сконденсированный граф изображен на рис. 11.10г. Минимальный разрез со значением 30 равен (Хо, Хо), где Хо = {х4} и Хо = {x2t х8^х; хм яв}.
Шаг 4. Т^-вершина 53 ={^27 ^4) теперь заменяется двумя новыми Г*-вершинами (s2) и {д:4}, а новое дерево показано^на рис. И.Юд.
Продолжая подобным образом и беря 5* = S15 последовательно получаем потоково эквивалентные деревья, изображенные на рисунках И.Юе, ж, з, и. Если использовать рис. 11.10(h), то матрицу максимальных потоков IfiД первоначального графа можно
Рис. 11.10а. Т* после 1-го этапа.
Рис. 11.106 и г. Сконденсированный граф после 2-го (б) и 3-го (г) этапов.
Рис. Н.Юе и з. Сконденсированный граф после 4-го (е) и 5 го (а) этапов.
Рис. 11.Юж. Т* после 4-го этапа.
Рис. 11.Юи. Окончательное потоково эквивалентное дерево Т*.
Рис. 11.Юд. Т* после 3-го этапа.
вычислить непосредственно с помощью (11.10). Она имеет вид
Х1
Х2
хз
Х4
Х5
х6
Х1
—
24
23
24
19
23
х2
24
23
30
19
23
Матрица максимальных 3
23
23
—
23
19
23
потоковх4
24
30
23
—
19
23
Х5
19
19
19
19
——
19
х6
23
23
23
23
19
—
Все 5 (в общем случае п — 1) разрезов графа G, соответствующие ребрам дерева Т*, показаны пунктиром на рис. 11.11.
Следует заметить, что, вообще говоря, потоково эквивалентное дерево Т* не является единственным и что существуют другие
Рис. 11.11. Разрез, дающий дерево Т*.
Рис. 11.12. Другое потоково эквивалентное дерево.
деревья, также потоково эквивалентные графу G. Для нашего примера одно из таких деревьев, которое на самом деле будет гамильтоновой цепью, показано на рис. 11.12.
Поток минимальной стоимости от $ к t
В разделе 2 мы рассмотрели задачу максимизации потока от $ к t безотносительно к какой-либо стоимости. Теперь мы рассмотрим задачу нахождения такого потока заданной величины у от s к t, стоимость которого минимальна. В этой задаче каждая дуга (zf, х^) имеет два связанных с ней числа — пропускную способность q^ и стоимость с^ единицы потока по этой дуге.
Очевидно, что если у больше, чем значение максимального потока от s к то не существует никакого решения. Если же и не превышает этого значения, то, вообще говоря, может существовать несколько различных потоков и требуется найти поток величины у, обеспечивающий минимальную стоимость. Наиболее известной процедурой решения задачи о потоке с минимальной стоимостью является так называемый алгоритм «беспорядка» Форда и Фалкерсона, и интересующийся читатель может найти описание этого эффективного алгоритма в [12], [4] и [7]. Алгоритмы, которые мы здесь опишем, принадлежат Клейну [20] и Басакеру и Гауэну [6]. Эти алгоритмы концептуально проще, чем метод беспорядка, и используют уже введенную технику. С вычислительной точки зрения эти методы сравнимы [2].
Алгоритм, основанный на выявлении отрицательныхциклов
Предположим, что в графе существует допустимый поток £ со значением и и что этот поток известен. Такой поток может быть получен с помощью алгоритма максимального потока (от $ к f) из разд. 2 и добавления потока общей величины 6 (f) на всех аугментальных цепях (шаги с 4 по 6 алгоритма) до тех пор, пока поток fsl не достигнет значения у, которое по условию меньше значения максимального потока.
Для этого допустимого потока определим новый инкрементальный граф G^ (£) = (Х^, А^ в точности так, как это было объяснено в разд. 2.3, со следующими стоимостями дуг.
Для каждой дуги (^L^^Ai- положим ctj = cije
Для каждой дуги (xf, xt) £ А2 положим с£ = —с^.
Новый граф G^ (£) дает теперь инкрементальные пропускные способности и стоимости (относительно начального потока £) любого дополнительного потока, введенного в G. Алгоритм основан на следующей теореме.
Теорема 5. Поток § будет потоком минимальной стоимости со значением и тогда и только тогда, когда в Gw (|) не существует никакого цикла Ф, сумма стоимости дуг которого отрицательна. 22*
Доказательство. Пусть с [£] — стоимость потока § в графе G. а с [Ф | Gu (£)] — сумма стоимости дуг в цикле Ф по отношению к графу № (|).
Необходимость. Пусть с [Ф 1 № (§)1 < 0 для некоторого цикла Ф из № (1). Циркуляция дополнительной единицы потока по циклу Ф дает новый поток £ + 1 ° (Ф), оставляя значение и потока от s к t неизменным. Стоимость потока | + 1 ° (Ф) равна с [£] + с [Ф] G^ (S))l < с (У, атэто противоречит допущению, что § — поток минимальной стоимости со значением и.
Достаточность. Допустим, что в графе G^ (§): [Ф | G (§)] ^ 0 для каждого цикла Ф и что £* (=?^§) — поток минимальной стоимости соТзначением и. Обозначим теперь через §* — | поток, значение которого на дуге (х£, х^ равно |*j — ^,.
Так как £* и § можно разложить в сумму потоков (от з к t) по цепям в G, то построение унитарного графа Ge (см. разд. 2.4) для потока §* — § дает следующие полустепени вершин:
4 ^=4^,^х.
Так как в соответствии с разд. 2.4 G' состоит из наборов конфор- мальных единичных потоков по циклам Ф1Т Ф2, . . Фь (например), то мы можем написать
|*—1=1 о(Ф1)4-1 о(Ф2)+ . . . + 1 о(Фй).
Так как потоки 1 о (Фг), i = 1, . . ., к, попарно конформальны и нам известно, что поток £* = § + 1 о (ф^ + . + 1о (ФД допустим, то любая сумма § + 1 □ (Ф^ + . . . + 1 о (ф,) будет допустимой для любых ls 1 ^ I ^ к. Таким образом, рассматривая поток § + 1 о (Ф^, получаем
С [| +1 о (Ф^] = ^] + с [Ф, I G* ^^с £].
Рассмотрим теперь инкрементальный граф G^ (§ + 1 о (Ф^). Единственными дугами этого графа, стоимости которых уменьшились по сравнению с соответствующими'стоимостями в графе G^ (£), являются те, которые будут «обращениями» дуг в ФР Но, так как потоки 1 ° (Ф1), 1 ° (Фа), • - - конформальны, такие дуги не могут быть использованы ни одним из оставшихся циклов Ф2, . . ., Фь и, следовательно, не влияют на последующие рассуждения.
Теперь мы имеем
с [Ф, IG* & н-1 о №))] >с [Ф, IG^ (I))
для любого Z = 2, . . ., к.
Стоимость потока § + 1 0 (Ф1) + 1 ° (Ф2) равна тогда d£+l °(Ф,) + 1 °(Ф2)]=с[1 + 1°(Ф1)1 + с[Ф2|Сиа+ ИФ,))^
^с [| + 1 о (ф,)] + е [Ф21G^ (I)] >с [| + 1 = (ФО]>с [|].
Продолжая рассуждения аналогичным образом, мы получим окончательно с [§*] > с [§], а это противоречит предположению о том, что £* — поток минимальной стоимости со значением и. Теорема доказана.
Таким образом, в соответствии с теоремой 5, все, что требуется для нахождения потока минимальной стоимости со значением v,— это начать с допустимого потока § со значением v, построить граф G^d) и проверить, нет ли в нем циклов с отрицательной стоимостью, используя любой из алгоритмов нахождения кратчайшей цепи, данных в разд. 3 и 4 гл. 9. Если не существует никакого цикла с отрицательной стоимостью, то поток будет потоком минимальной стоимости. Если цикл Ф с отрицательной стоимостью существует, то надо «пустить» по нему поток с максимально возможным значением 6. Суммарный поток от s к t не изменит своего значения у, а его стоимость уменьшится на 6-с (Ф), где с (Ф) — величина стоимости отрицательного цикла. Очевидно, 6 должно быть выбрано так, чтобы пропускные способности дуг в G^ (£) не превышались, т. е.
6= min (^]. (11.11) (х^, х^ в Ф
Если этот поток 6 наложить на поток § уже в графе G, то, в силу первоначального выбора пропускных способностей дуг в № (£), результирующий поток все еще будет допустимым. Процесс можно повторять, начиная его с полученного нового потока £, строя новый граф G^ (Е,) относительно нового потока и выявляя в этом графе циклы с отрицательной стоимостью. Описание алгоритма дано ниже.
Описание алгоритма
Шаг 1. Использовать алгоритм максимального потока (от $к f) из разд. 2 для нахождения в графе G допустимого потока § со значением и.
Шаг 2, Построить для этого потока граф Gu (£), пользуясь цанными ранее правилами.
Шаг 3. Отправляясь от матрицы стоимостей графа G^ (|) и используя алгоритм кратчайшей цепи (см. разд. 3.1 и 4 гл. 8), опре- целить, существует ли в графе G^,^) цикл с отрицательной стоимостью. Если такой цикл существует, то найти его (цикл Ф)
Рис. 11.13. Граф из примера 5.1.2. Первая пометка является пропускной способностью дуги, вторая — стоимостью дуги.
и перейти к шагу 5. Если такого цикла нет, то остановиться. Поток £ будет потоком минимальной стоимости.
Шаг 4, По (11.11) вычислить 6.
Для всех (х^, х^ в Ф с с^ < 0 изменить поток 1^ в соответствующей дуге (Xj, х^ из G с ^л на £,7 — 6.
Для всех (х^, ху) в Ф с е W > О изменить поток ^15 в соответствующей дуге (хь х5) из G с ^,- на ^7- + 6.
Шаг 5. Повторить шаг 2, начиная с нового потока £.
Пример. Рассмотрим граф G, изображенный на рис. 11.13, где первое число пометки у каждой дуги равно ее пропускной способности, а второе — стоимости. Мы хотим найтв поток от s к t минимальной стоимости со значением 20.
Для выявления циклов с отрицательной стоимостью на шаге 2 вышеописанного метода используем алгоритм кратчайшей цеп$ Флойда (разд. 3.1 гл. 8).
Шаг 1. Алгоритм максимального потока дает первый допустимый поток, изображенный на рис. 11.14а. Стоимость этого потока
Рис. 11.14а. Начальный поток |.
равна
16 (7 + 25 + 5) + 4 (28 + 7) - 732.
Шаг 2. Исходя из этого потока, построим граф Gu (£), как показано на рис. 11.146, где цикл отрицательной стоимости изображен пунктиром.
Шаг 3. Начиная с матрицы стоимостей
(где на пустых местах должны стоять элементы оо) и применяя алгоритм Флойда, получаем следующие матрицы наименьших стоимостей вместе с соответствующими им матрицами цепей:
Х1
Х2
хз
Х4
Матрицы 6 конце первой итерации (к-1)
Х5 Х6 Х7Х1 Х2
хз
Х4
Х5
Х6
Х7
1
0
13
28
xi
1
1
1
1
1
1
1
2
-7
0
25
4
10
21
х2
2
2
2
2
2
1
2
3
-25
0
5
хз
3
3
3
3
3
3
3
4
6
0
5
Х4
4
4
4
4
4
4
4
5
0
12
^5
5
5
5
5
5
5
5
6
-28
-15
3
0
7
Х6
6
6
6
1
6
6
6
7
-5
-7
0
Х7
7
7
7
7
7
7
7
Матрица наименьших стоимостей
Матриид цепей
В последней итерации элемент С4,4 получается отрицательным, со значением —15, которое показывает существование цикла отрицательной стоимости, содержащего вершину xv Этот цикл, найденный по матрице цепей, имеет вид (т4, х3, х2, х^.
Шаг 4. Из (11.11) находим значение 6:
Матрицы 8 конце второй итерации (К-2) х, х2 х3 х4 х5 х6 х7х, х2 х3 х4 х5 х6 х^
0
13
28
-7
0
25
4
10
21
-32
-25
0
-21
-15
-4
5
6
0
5
0
12
-28
-15
3
0
7
-5
-7
0
Матрица наименьших стоимостей
1
1
1
1
1
1
1
2
2
2
2
2
1
2
2
3
3
2
2
1
3
4
4
4
4
4
4
4
5
5
5
5
5
5
5
6
6
6
1
6
6
6
7
7
7
7
7
7
7
Матрица цепей
(16,-25)
Рис. 11.146. G* (|) для потока на рис. (а)-
Х1
хз
хз
х<
*3
V
Х7
xi
Х2
хз
Х4
хз
хб
xi
Х1
0
13
28
Х1
1
1
1
1
1
1
1
-7
0
25
4
10
21
30
Х2
2
2
2
2
2
1
3
Х3
-32
-25
0
-21
-15
-4
5
Х3
2
3
3
2
2
1
3
х4
-26
-19
6
-15
-9
2
И
х4
2
3
4
2
2
1
3
Х5
0
12
Х5
5
5
5
5
5
5
5
Х6
-28
-15
3
0
7
Х6
6
6
6
6
6
6
6
Х7
-37
-30
-5
-26
-20
-9
0
Х7
2
3
7
2
2
1
7
Матрица наименьших стоимостей
Матрица цепей
Матрицы 6 конце третьей итерации (К-3)
Рис. 11.14в. Улучшенный поток |.
(4,-25)
Новый поток, полученный после введения в цикл циркуляционного потока 6, изображен на рис. 11.14в. Стоимость нового потока <- равна 552. Возвращаясь к шагу 2, находим новый граф № (£), показанный на рис. 11.14г. Поступая как и раньше, получаем
Рис. 11.14г. 6Ц (g) для потока на рис. (в).
Рис. 11.14д. Улучшенный поток £.
Рис. 11.14з. Gu (|) для потока на рис. (ж).
Рис. 11.14и. Улучшенный поток £.Рис. 11.14и. Улучшенный поток £.
Рис. 11.14и. Улучшенный поток £.
Рис. 11.14и. Улучшенный поток £.
Рис. 11.14е. 6Ц (£) для потока на рис. (д).
Рис. 11.14ж. Улучшенный поток £.
Рис. 11.14к. G^ (5) для потока на рис. (и).
Шаг 3. Обнаружен отрицательный цикл (хв, х4, х4, х^ со стоимостью —10.
Шаг 4. б = min [4, И, 19] = 4.
Новый поток со стоимостью 512 изображен на рис. 11.14д.
Шаг 2. Граф G^ ^Y соответствующий новому потоку, изображен на рис. 11.14е.
Шаг 3. Обнаружен отрицательный цикл (z7, х3, х2, х5, х7) со стоимостью —8.
Шаг 4. б = min [16, 4, 16, 16] = 4.
Новый поток со стоимостью 480 изображен на рис. 11.14ж.
Шаг 2. Получившийся граф Gu ® показан на рис. 11.14з.
Шаг 3. Обнаружен отрицательный цикл (^j, х4, хв, х7, х51 х4, х^ со стоимостью —4.
Шаг 4. 6 = min (7, 15, 1, 4, 4, 16) = 1.
Новый поток со стоимостью 476 изображен на рис. 11.14 и.
Шаг 2. Граф G11 (£) изображен на рис. 11.14к.
Шаг 3. Обнаружен отрицательный цикл 1^, х4, х4, х^ со стоимостью —2.
Шаг 4. 6 = min [1, 6, 5] = 1.
Рис. 11.14л. Поток минимальной стоимости.
Новый поток со стоимостью 474 изображен на рис. 11.14л.
В последнем инкрементальном графе нет никаких циклов с отрицательной стоимостью, и поэтому поток, изображенный на рис. 11.14 л, является потоком наименьшей стоимости со значением 20 и его стоимость равна 474.
Шаг 3 из алгоритма 5.1.1. В вышеприведенном примере был использован метод Флойда для нахождения циклов отрицательной стоимости в инкрементальном графе Сц (£) на шаге 3 алгоритма определения потока минимальной стоимости, данного в разд. 5.1.1. Но, как уже отмечалось в разд. 4 гл. 8, это не лучший метод выявления циклов отрицательной стоимости для графа G, в котором существует вершина х0, достижимая из всех других вершин G. Лучший способ состоит в использовании алгоритма, который находит кратчайшую цепь от z0 ко всем другим вершинам, а не в применении алгоритма Флойда, находящего кратчайшие цепи между каждой парой вершин [2]. В этом отношении более успешно, как это объясняется в разд. 4 настоящей главы, может быть использован алгоритм кратчайшей цепи из разд. 2.2.1 главы 8.
Для инкрементального графа № (§) очень просто показать, что в нем существует по крайней мере одна вершина, из которой можно достичь любую другую вершину графа G11 (§), и что на самом деле конечная вершина t обладает этим свойством. Это можно показать следующим образом.
Так как для любой дуги (ж,, х^ из G, для которой существует некоторый ненулевой поток, в инкрементальном графе G*1 (%) существует дуга (ху, ^), то все вершины хЧ из Сц (£), соответствующие вершинам xt из G, лежащим на цепях потока от s к f, могут быть достигнуты из t с использованием «обратных» цепей, образованных дугами ^, х^у Таким же способом может быть достигнут источник s. Итак, каждая вершина ж, из G может быть достигнута из s (в противном случае xt может быть удалена из G, и это не повлияет на поток). Следовательно, так как дуги (х,, х,у не несущие никакого потока в G, появляются в G№ (|) в качестве дуг (^, хчу вершины хЧ из G* ^У соответствующие вершинам xt из G, не лежащим на цепях потока, могут быть достигнуты из t через s. Иными словами, сначала просто достигаем s, как было сказано выше, а затем следуем по пути из s в хЧ.
Поэтому в инкрементальном графе G*1 (|) все вершины могут быть достигнуты из t, и если эта вершина используется в качестве источника при нахождении кратчайшей цепи от t ко всем другим вершинам из G№ (|) (например, с использованием алгоритма из 2.2.1 гл. 8), то все циклы отрицательной стоимости в G№ (§) могут быть обнаружены.
Используя такой подход при организации шага 3 основного алгоритма потока минимальной стоимости из разд. 5.1, Беннингтон [21 опубликовал вычислительные результаты, показывающие, что этот алгоритм не хуже алгоритма «беспорядка» [12, 4, 7]. Применение метода наименьших квадратов к оценке требуемого времени t вычисления по тестам, использующим случайно
порожденные графы с п вершинами и т дугами, дало такой результат:
t = —2,3 + О.ОИЗп + 0,00166m (время в секундах
на машине ИБМ 360/75).
Граф с 200 вершинами и 5000 дугами требует приблизительно 8 с машинного времени.
Потоки минимальной стоимости в графах с выпуклыми функциями стоимости
До сих пор предполагалось, что стоимость единицы потока ^j по дуге (z^ х^ есть ci5 — постоянная величина. Однако это не является необходимым предположением и, как показали Ху [171
Wij^ij)Wij^ij)Рис. 11.15. Выпуклая функция стоимости дуг.Рис. 11.15. Выпуклая функция стоимости дуг.
Wij^ij)
Wij^ij)
Рис. 11.15. Выпуклая функция стоимости дуг.
Рис. 11.15. Выпуклая функция стоимости дуг.
и Клейн [20], алгоритм, описанный в 5.1.1, можно легко применить и для нахождения потоков минимальной стоимости в графах, стоимости дуг которых являются выпуклыми кусочно-линейными функциями потока.
Если допустить, что стоимость потока ^и по дуге (х;, х^ задается выпуклой функцией w^j ^и\ изображенной на рисунке 11.15, то для любого потока | мы можем определить инкрементальный граф G^ (j) = (Х>\ А^ U ^£) точно так же, как это делалось в разд. 2.3, за исключением того, что теперь никогда не нужно вычислять пропускные способности дуг q^ и ^, а стоимости дуг таковы:
для дуги (^, ^) € Ал положим
с^ = юи(£и-\-Г) — wtj^t]),
ДЛЯ дуги (x^ Xi) С А^ положим
“ V^ &ц) — Wty (^y — 1)],
считая, что wtj (0) = 0.
Теперь мы можем непосредственно использовать алгоритм из разд. 5.1.1, за исключением того, что 6 — поток, посылаемый по любому циклу Ф отрицательной стоимости, который можно найти в G^ (§),— всегда берется равным 1. Заметим, что все инкрементальные стоимости были определены так, чтобы они приводили к увеличению или уменьшению значения потока на одну единицу. Заметим также, что при использовании только «единичных» преобразований потоков (т. е. при уменьшении или увеличении значения потока только на единицу) нет необходимости вычислять инкрементальные пропускные способности дуг в G^ (£), так как эти величины нужны лишь для вычисления 6.
Если при задании функции стоимости не требуется большой точности, то wu (^;) можно аппроксимировать кусочно-линейной функцией. Тогда ограничение, что 6 выбирается равным единице потока, можно ослабить и достигнуть более быстрой сходимости к потоку минимальной стоимости. Инкрементальные стоимости каждой дуги могут быть теперь определены как угловые коэффициенты соответствующих линейных участков функций стоимости, а именно для данной дуги выбирается участок, отвечающий текущему значению потока на этой дуге. Затем можно вычислить пропускные способности, чтобы убедиться, что никакое увеличение или уменьшение потока 6 не даст новый поток, выходящий за пределы применимости текущего линейного участка, аппроксимирующего функцию стоимости.
Алгоритм, основанный на цепи наименьшей стоимости
Алгоритм из разд. 5.1 начинает работу с произвольного потока £ со значением р, после чего происходит постепенное улучшение потока до тех пор, пока не будет получен поток |* минимальной стоимости. В терминологии математического программирования такой алгоритм следовало бы назвать основным алгоритмом, так как его первая цель состоит в получении допустимого потока, а затем поток улучшается с сохранением допустимости. Альтернативным подходом является двойственный метод, в котором для решения этой задачи начинают с построения потока £* с минимальной стоимостью, имеющего некоторое значение р0 < р, а затем добавляют в граф некоторый дополнительный поток, чтобы получить новый поток с минимальной стоимостью, имеющий значение yi > yoi и т- Д- пока не будет построен поток с минимальной стоимостью со значением р. В'отношении этого метода следует
заметить, что начальный поток минимальной стоимости всегда имеется, так как нулевой поток является потоком минимальной стоимости со значением 0.
Алгоритм, который мы собираемся описать, основан на вычислении кратчайшей цепи и следующей теореме.
Теорема 6. Если § — поток минимальной стоимости в графе G со значением и и Р* — кратчайшая цепь (наименьшей стоимости) от s к t в инкрементальном графе G^ (|), то £ + 1 о (р*) является потоком минимальной стоимости со значением и + 1.
Доказательство теоремы очень просто — надо показать, что если G^ (£) не содержит никакого цикла отрицательной стоимости, то G^ (^ + 1 = (Р*)) также не содержит таких циклов. После этого все следует непосредственно из теоремы 5.
Описание алгоритма
Шаг 1. Начать с нулевых потоков на дугах и с потока, имеющего нулевое значение.
Шаг 2. Построить инкрементальный граф G^^^X»1, А^ J А^), как это описано в разд. 2.3, и взять следующие стоимости дуг:
для любой дуги (Xi' х*) С Af: ПОЛОЖИТЬ С^ = СХ;, для любой дуги (х^, zt) £ Аг положить с^ — —Сц.
Шаг 3. Найти в графе G11 (£) кратчайшую цепь Р* от вершины » к вершине t.
Шаг 4. Найти наибольшую величину б того потока, который можно послать вдоль Р* не изменяя структуру графа G*1 (е). Величина 6 равна
6 = min [дА].(х^, xV") в Р*
Шаг 5. (I) Если значение потока § + 6 о (Р*) меньше, чем требуемая величина и, произвести замену § •*- | + 6 ° (Р*) и вернуться к шагу 2.
Если значение потока ^ + 6 = (Р*) равно и, остановиться. 1 + 6 = (Р*) является требуемым потоком минимальной стоимости.
Если значение потока § + 6 = (Р*) = h > и, остановиться. Требуемым потоком минимальной стоимости будет £ + + (6 —/г + и) = (Р*).
Здесь важно отметить, что граф G* (^) на шаге 2 содержит как дуги положительной стоимости, так и отрицательной, и поэтому алгоритм кратчайшей цепи, используемый на шаге 3, не может быть алгоритмом Дейкстры, а должен быть (менее эффективным)
алгоритмом, описанным в разд. 2.2.1 гл. 8. Однако Хаувер, Эдмондс и Карп предложили недавно метод, позволяющий обойти вышеуказанную трудность и использовать более эффективные алгоритмы кратчайшей цепи.
Пример. Снова вычислим поток минимальной стоимости со значением 20 для графа, изображенного на рис. 11.13. Вначале берем § = 0. Инкрементальный граф изображен на рис. 11.13. Кратчайшей цепью в графе будет Р* = (x1? х2, х4, х3, х^ со значением 22, а 6 оказывается равным 12.
Поток £ переходит в 12 ° (Р*). Кратчайшей цепью в соответствующем инкрементальном графе будет Р*= ^х\, хг, х^ х6, х7) со стоимостью 23 и 6 равным 4.
Поток становится равным 12 о (Р*) + 4 о (Р*). Кратчайшей цепью в G*1 (^) будет Р* = ^xv х4, хв, х^ со стоимостью 25 и 6 = 1.
Поток становится равным 12 = (Р*) + 4 о (Р*)_ Кратчайшей цепью в Gu (£) будет Р* = (х4, х4, хв, х^ со стоимостью 31, и вдоль этой цепи можно послать 3 оставшиеся единицы потока для получения потока минимальной стоимости, изображенного на рис. 11.14 л.
Потоки в графах с выигрышами,
До сих пор в этой главе делалось предположение, что поток, выходящий из дуги, является таким же, как и поток, входящий в дугу. Однако в ряде практических ситуаций это допущение не выполняется. Например, в трубопроводе, по которому перекачивается жидкость, или в электрической сети могут быть потери, уменьшающие поток по дуге. В системах транспортировки может происходить порча груза, которая также приводит к уменьшению потока по дуге, представляющей маршрут. В технологических процессах, которые могут быть изображены графами с дугами, соответствующими операциям, ценность материала, покидающего дугу, больше, чем ценность материала, входящего в дугу, так как в дуге имеется выигрыш, получаемый за счет «прибавочной стоимости» операции. В задачах обмена (например, при продаже и покупке валюты) выигрыши дуг представляют обменный курс входного потока (измеряемый в одной валюте) по отношению к выходному потоку (измеряемому в другой валюте).
В этом разделе мы рассмотрим задачу нахождения максимального потока (от s к £) в графе с произвольными неотрицательными выигрышами g^ и пропускными способностями дц, приписанными дугам (xb xj) графа G. Эта задача аналогична задаче о максимальном потоке (от s к t), обсуждавшейся в разд. 2, хотя теперь входной 23 н. Нристофилес
и выходной потоки связаны между собой только через «посредство» графа G, способного как «породить», так и «поглотить» поток. Если через ^j обозначить поток, входящий в дугу (хь х^, а через ^ — поток, выходящий из этой дуги, то
&=gt&.(11'12)
Предположим далее, что пропускные способности дуг согласованы только с входными потоками, т. е. для любой дуги
(ИЛЗ) независимо от величины ^. Обозначим чистый входной поток ) в s через и3, а чистый выходной поток 2) в f через vt. Поток S = = (£\ 1°) является допустимым, если он удовлетворяет условию непрерывности потока во всех вершинах, т. е.
{
Р3дляхг = S,
— VtДЛЯXi = t,(11.14)
ОдляXt^S,t,
а также условиям (11.12) и (11.13) для каждой дуги (xtlXj) изG.
Введем теперь два определения.
Определение. Допустимый поток В = (|в, |°) называется максимальным, если он имеет наибольшее значение Vt (скажем, и,) среди всех допустимых потоков.
Определение. Допустимый поток В = (|е, £п) называется оптимальным, если для любого другого допустимого потока 8
или Vt ^ Vt* когда vs = vs, или vs ^ vsi когда vt = vt, где vs и v< являются соответственно чистыми потоками в источнике и стоке потока В.
Эти последние условия согласуются с интуитивным пониманием оптимальности, а именно заданные vSl Vt являются или наибольшими, или наименьшими возможными.
Определение. Допустимый поток В называется оптимально- максимальным, если он является как оптимальным, так и максимальным потоком.
Проиллюстрируем введенные понятия на примере. Рассмотрим граф на рис. 11.16 а, где первое число у дуги задает ее пропускную способность, а второе — выигрыш. Тогда
Рис. 11.16* (а) Граф G: первая пометка — пропускная способность дуги вторая — выигрыш дуги, (б) Максимальный поток, (в) Оптимальный поток* (г) Оптимально-максимальный поток.
поток, изображенный на рис. 11.16 6, является максимальным потоком со значениями ^ = 18 и vs = 6;
поток, изображенный на рис. 11.16 в, является оптимальным потоком со значениями vt = 3 и vs = 0 (заметим, что поток порожден циркуляцией по циклу, у которого полный выигрыш больше чем 1; кроме того, vt < vt и, следовательно, 23*
поток не является максимальным, но vt представляет собой максимум, который может быть получен при vs = 0);
поток, изображенный на рис. 11.16 (г), является оптимально-максимальным, имеющим vt = Vt, но и8 = 5 < v6 = 6 и, как будет показано ниже, наименьшее возможное значение и81 дающее выходной поток со значением 18, равно 5.
Аугментальные маршруты
Рассмотрим граф с выигрышами, в котором существует допустимый поток S = (V, ^°)- Обозначим этот граф через G (В). Маршрут (не обязательно цепь от вершины Хц к вершине хц называется аугментальным\ маршрутом от Хц к х1р если в графе G (В) по этому маршруту) можно «послать» поток от хц к xir (Это аналогично определению аугментальной цепи потока (от s к i) в задаче о максимальном потоке (от s к f).) Если маршрут-задан последовательностью вершин х^, х^ , . . ., ^ , то пусть F — множество всех^ «прямых» дуг в нем (т. е. дуг (xip1 ^ip+I) с Xip+i £ £ Г (xi )) и В — множество всех «обратных» дуг (т. е. дуг, для которых Хгр € Г fop^))* Маршрут является аугментальным, если ^. <L Qu для каждой прямой дуги (^j, Xj) £ F и ^ > 0 для каждой обратной дуги ^х3, С В.
А. Выигрыш маршрута. Выигрыш маршрута S = (^^. я<)
определяется так:
g^ = П gtr П Vgjt.(11.15)
(xv xp^F (х., х.^В
Б. Пропускная способность маршрута.
Инкрементальная пропускная способность аугментального маршрута S равна значению такого максимального входного потока в вершине ^^ который может быть послан по данному маршруту к вершине х^г и либо насыщает поток в некоторой прямой дуге H3*J5, либо обращает в нуль поток в некоторой обратной дуге маршрута S.
Если S — цепь и в х^ входит поток величины 6, то входной поток (в вершине Xip) на дуге (;rip, ^ip+1) из S равен
6^=6- П gir П tigH=6.g^p^ (иле)
<XVX^FP <xrxi^Bp
где Fp и Вр — множества соответственно прямых и обратных дуг лз подцепи Sp = (я^, хг^ . . ., Xipj и g (Sp) — выигрыш цепи S>.
X, (8,2) 41/^05,3) \1/Х3 (9,0,2) \1/Х4 (12,0,5) х5
Л 3 А 6 /К 2 Л 5 Д
(а)
Х2Х3х4Х5
р.<-О- —~^ о >о
625
(d)(d)XtО—^XtО—^331»
(d)
(d)
Xt
О—^
Xt
О—^
3
3
Рис. 11.17. (а) Цепь S с начальными входными потоками, показанными под* черкнутыми числами: первая пометка в скобках — пропускная способность дуги, вторая — выигрыш дуги, (б) Цепь 5 с введенным дополнительным потоком, (в) Маршрут 5 с начальным входным потоком, показанным подчеркнутыми числами: первая пометка в скобках — пропускная способность дуги, вторая — выигрыш дуги, (г) Маршрут S с введенным дополнительным потоком.
Если Ixi , Xi ) — прямая дуга из S, несущая поток & .,
то эта дуга будет насыщена, если К ,+ 6- ,= £ <
р р+1 р р+1 р р+1Если же поток ^ несет обратная дуга, то ее поток станет1p+i1p
равным нулю, когда 6.= К . , т. е. когда о, ,=
г1р«р+1р+1 рp*p+i
= g. g? . . Инкрементальная пропускная способность *р+1*р *p+i*p
цепи 5 дается выражением
q (S) = min Г min {* р р+1
min(11.17)
(Xi , х; х£В ^ g ^р) J J Р+1 р’
Если маршрут S не является цепью и, следовательно, некоторые дуги встречаются более чем один раз, то и в этом случае' легко получить выражение, аналогичное (11.17).
Для цепи S на рис. 11.17 (а) и заданного начального потока добавление потока 6 в вершине хг приводит к потоку, изображенному на рис. 11.17 (б). Максимальное значение 6, оставляющее поток допустимым, равно тогда q (S) = 0,6. Для этого значения поток по дуге (х4, х3) сводится к нулю, т. е. S перестает быть аугментальной цепью в новом графе G (S). Если бы начальный поток, входящий в дугу (xv х3), был равен, скажем, 8 вместо 2, то максимальное допустимое значение 6 было бы тогда 2,1 — значение, при котором дуга (х4, ж3) из 5 была бы насыщена.
Для маршрута S, изображенного на рис. 11.17 (в) и заданного начального потока добавление потока 6 в вершине хг даст поток, показанный на рис. 11.17 (г). Инкрементальная пропускная способность этого маршрута равна 0,5 — значение, при котором дуга (х3, х^ становится насыщенной.
Активные циклы
Так как цикл г) можно рассматривать как маршрут с совпадающими начальной и конечной вершинами, то выигрыш цикла и его пропускная способность могут быть определены так же, как и для маршрута. Цикл Ф называется активным в графе G (В) по отношению к вершине t, если
его выигрыш больше единицы,
(Ц) его инкрементальная пропускная способность отлична от нуля,
на Ф имеется некоторая вершина жь для которой существует аугментальный маршрут от xt к t.
!) Точнее — замкнутый маршрут.— Прим, реЭ.
Активный по отношению к начальной вершине s цикл может быть определен аналогично. Из вышеприведенного определения ясно, что с помощью циркуляции потока по активному циклу можно создать дополнительный поток (по свойству (I)) и передать его в вершину t (по свойству (Ш)). В вышеприведенном примере на рис. 11.16(b) поток порождался циркуляцией по активному циклу (х4, х2, х3, х4у
Активный по отношению к t цикл называется дезактивированным, если добавление дополнительного потока в G осуществлено так, что или инкрементальная пропускная способность цикла уменьшилась до нуля, или пропускные способности всех аугмен- тальных цепей от какой-либо вершины на цикле до вершины t уменьшились до нуля (т. е. в новом графе G (S) не может быть сделано больше никакого добавления ненулевого дополнительного потока). В [13] и [22] доказаны следующие утверждения.
Теорема 7. Поток S является оптимальным тогда и только тогда, когда граф G (Е) не содержит никаких активных циклов по отношению к s или t.
Теорема 8. Пусть S является оптимальным потоком. Тогда если поток увеличить по какой-либо {от s к t) аугменталъной цепи с наивысшим выигрышем, то вновь полученный поток также будет оптимальным.
Теорема 9. Поток Е будет оптимально-максимальным, если некоторый разрез (Ао—>- X — Хо^, отделяющий s от t, является насыщенным и если не существует никакого активного цикла по отношению к t, все вершины которого лежат в X — Хо.
Алгоритм оптимального потока для графовс выигрышами
Из трех вышеприведенных теорем сразу же вытекает алгоритм оптимальности, описанный ниже.
Шаг 1. Начать с произвольного допустимого потока Е в G (допустим, например, нулевой по каждой дуге поток).
Шаг 2. Найти в G (Е) активный цикл Ф по отношению к t.
Шаг 3. Пусть xt — такая вершина в Ф, что аугментальный маршрут начинается в xt и кончается в t. (Заметим, что жг может совпадать с t.') Начиная с вершины xt, устроить циркуляцию потока 6 по активному циклу и передать избыток потока из ^ в i по аугментальному маршруту. Выбрать 6 так, чтобы (вместе с существующим потоком Е) инкрементальная пропускная способность цикла или аугментального маршрута уменьшилась до нуля.
Шаг 4. Обновить поток Е и возвращаться к шагу 2 до тех пор, пока все активные циклы не будут дезактивированы и больше не будет существовать никаких активных циклов; после чего перейти к шагу 5. (На этом этапе поток Е будет оптимальным потоком Е с = 0.)
Шаг 5. Найти аугментальный маршрут от s к f с наибольшим выигрышем. Посылать поток по этому маршруту до тех пор, пока инкрементальная пропускная способность не уменьшится до нуля.
Шаг 6. Обновить поток Е и повторять шаг 5 до тех пор, пока или чистый выходной поток Vt не примет требуемое значение (оптимального потока), или больше не будет существовать никаких аугментальных маршрутов; тогда полученный поток будет оптимально-максимальным потоком В.
Шаги вышеприведенного алгоритма очень просты, а сам метод эффективен. Шаги 2 и 5 можно выполнять и с помощью aлгqpитмa кратчайшей цепи. А именно определим инкрементальный граф G^ (В), соответствующий графу G (В), с множеством вершин Лц = = X и множеством дуг Ац, таким, что
^, ^ € ^, если 0C^<[9i>, причем инкрементальная «стоимость»
С^= -log(gi;) и пропускная способность
9ij ^ 9lj |ij, И
(я?, ^Г) €МЙ1 если 0{<^ij^go-, инкрементальн ая «стоимость»
и пропускная способность
ЧП — btj*£ij*
Цикл Ф в графе G (В), имеющий выигрыш, больший чем единица, соответствует тогда циклу с отрицательной «стоимостью» в графе G^ (Е). В этом можно убедиться, прологарифмировав обе части соотношения (11.15), в котором в качестве маршрута 5 надо взять цикл Ф. Тогда получим
10g[g(O)]= 2 log (£.;) + 2 logtVgyi)(XpApgF^е^х/^В
где F и В, как и прежде,— множества прямых и обратных дуг цикла Ф.
Если ^(Ф)>1, то log [g (Ф)1 > О, откуда следует, что стоимость цикла Ф в Сц (S), т. е. 5 см + 5 СЙ» должна быть отри- FВ
цательной. Обратно, если #(Ф)^1, то стоимость цикла Ф в С (В) неотрицательна.
Таким образом, активные циклы в G (В) — на шаге 2 вышеописанного алгоритма — могут быть определены посредством нахождения всех кратчайших (наименьшей «стоимости») цепей, идущих из вершин графа G^ (В) к конечной вершине t (для чего можно воспользоваться методом из разд. 2.2.1 гл. 8, как это было объяснено в разд. 4 настоящей главы), и проверки циклов на отрицательную стоимость. Если, однако, поток 6, циркулирующий по активному циклу Ф на шаге 3 и передаваемый по аугменталь- ному маршруту к (, не уменьшает до нуля пропускную способность самого цикла Ф, а вместо этого уменьшает до нуля пропускную способность аугментального маршрута, то при следующем выполнении шага 2 нужно только найти другой аугментальный маршрут, ведущий из вершины цикла Ф в вершину L Такой маршрут снова сделает цикл активным и можно будет перейти к шагу 3 и т. д. вплоть до того момента, когда цикл Ф дезактивируется. Тогда на шаге 2 ищется некоторый другой активный цикл.
Шаг 5 вышеописанного алгоритма также можно выполнить с помощью метода разд. 2.2.1 гл. 8, так как он состоит просто в вычислении кратчайшей цепи от $ к £ в графе G^ (8). Этот граф «освобождается» от циклов отрицательной стоимости, как только выполнены четыре предыдущие шага алгоритма.
Пример
Мы хотим найти оптимально-максимальный поток от вершины хх к вершине хй в графе на рис. 11.18, где первое число у дуги
Рис. 11.18, Граф из примера 6.4. Первая пометка —пропускная способность дуги, вторая — выигрыш дуги.
Рис. 11.19а. Поток после 1-го этапа. — насыщенная дуга.
Рис. 11.196. Поток после 2-го этапа.
— насыщенные дуги.
Рис. 11.19в. Поток после 3-го этапа.-^ насыщенные дуги.
Рис. 11.19. г. Оптимальный поток. — насыщенные дуги.
является ее пропускной способностью, а второе — ее выигрышем.
Начиная с В = (0, 0) находим первый активный цикл Ф = = (^бт ^4» ^ ^б) с аугментальным маршрутом (х5, х^. Циркуляция потока 6 (где 6 — входной поток дуги (х5, х^ по этому маршруту, как показано на рис. 11.18, дает максимальный допустимый поток со значением 6=1,5, и для этого значения получающийся поток показан (подчеркнутыми числами) на рис. 11.19а, причем дуга (яБ, х8) насыщена. Пропускная способность самого цикла не уменьшается до нуля, и поэтому при следующей итерации, когда алгоритм кратчайшей цепи (действующий от всех других вершин графа Gu (В) к вершине <) помечает вершину х4 из Ф, циклФ снова становится активным с новой аугментальной цепью (я4, хв, х71 х8). Посылая поток 6 по циклу и передавая его по аугментальной цепи к f, как показано на рис. 11.19а, получаем поток, изображенный на рис. 11.196 подчеркнутыми числами.
Рис. 11.19д. Оптимально-максимальный поток.— насыщенные дуги.
Новый активный цикл (х8, хЬ1 х4, хв1 х71 хв) определяется на шаге 2, и циркуляция потока 6 по этому циклу, как показано на рис. 11.19(6), дает поток, изображенный подчеркнутыми числами на рис. 11.19(b). Наконец, определяется активный цикл (х8, хь^ хи x4i x6i хч> хв) и его дезактивация с помощью циркуляции потока приводит к потоку, изображенному на рис. 11.19г. Последний будет оптимальным потоком, так как больше не удается обнаружить никаких активных циклов.
Аугментальный маршрут (от s к f) с максимальным выигрышем есть (хг, х4, х21 хь, хв) с пропускной способностью г/6. Как только этот маршрут будет насыщен (дуга (x4s х^ уже насыщена), аугмен- тальным маршрутом со следующим наибольшим выигрышем будет ^хХ1 х^ хь, х6), и он после насыщения даст поток на рис. 11.19д. Этот поток будет требуемым оптимально-максимальным потоком, так как больше нельзя найти никаких аугментальных цепей (от s к f).
'(Графы с выигрышами в вершинах
Задача о максимальном потоке (от s к t) для случая, когда пропускными способностями обладают вершины, была решена в разд. 3.2 с помощью простой замены каждой вершины xj парой вершин^ Xj и xj. Аналогичным образом, если вершинам графа G приписаны выигрыши и, следовательно, условия (11.14) непрерывности потока не выполняются, то мы можем образовать другой граф Go, заменяя каждую вершину х5 парой вершин Xj. и Xj с дугой (х/, xj;) между ними. Выигрыш этой дуги считается равным выигрышу вершины X;. Для дуги (хг, Xj) из G мы тогда имеем дугу (х?, Xj) в Go, а для дуги (xj, хк) из G — дугу (xj, xj) в Go. Задача после этого сводится к нахождению оптимальных потоков в графе Go, в котором выигрыши приписаны только дугам.
Задачи
Найти максимальный поток £* от хт к ^ в графе, изображенном на рис. 11.20, где пропускные способности дуг указаны стоящими около них числами.
Начертить инкрементальный граф^Си(£) для примера из задачи 1.
Разложить поток, найденный в|задаче 1, наг элементарные потоки (от s к f) по цепям и циклам.
Пусть в графе, изображенном на рис. 11.20, потоки по дугам (х2, ^з), (хы х4> и (х^ хь) ограничены снизу значениями г23 = 4, г54 = 7 и г2В = 3 соответственно. Найти максимальный поток от хг к х7 или показать, что такой поток не существует.
Доказать теорему 3 из разд. 3.3.
Найти максимальные потоки между всеми парами вершин для графа Gs изображенного на рис. 11.21, и начертить потоковоэквивалентное дерево. Определить разрезы в Gs соответствующие этому потоково-эквивалентному дереву. Найти два других пото- ково-эквивалентных дерева.
/. Найти максимальный поток с минимальной стоимостью от хх к х8 в графе на рис. 11.22, если первое число у дуги равно ее пропускной способности, а второе — стоимости.
Рис. 11.20.
Какие упрощения могут быть сделаны в алгоритме потока минимальной стоимости в случае, когда требуемое значение потока является максимально возможным?
В алгоритме максимального потока (от s к t) из разд. 2.1 среди многих возможностей, возникающих при выборе аугмен- тальных цепей, две таковы:
) выбирается аугментальная цепь с наименьшим числом дуг,
) выбирается та цепь, которая позволяет послать от $ к f аугментальный поток с максимально возможным значением 6.
Какая из этих двух возможностей предпочтительнее в вычислительном отношении и как зависят они от величины пропускной способности дуг? (см. [9]).
Доказать теорему 6 из разд. 5.2.
Доказать теорему 7 из разд. 6.2.
В графе, изображенном на рис. 11.23, найти оптимальный, максимальный и оптимально-максимальный потоки, если первое число, стоящее у дуги, равно ее пропускной способности, а второе — ее выигрышу.
Рис. 11.21.
(16, 5)(16, 5)Рис. 11.22.Рис. 11.22.
(16, 5)
(16, 5)
Рис. 11.22.
Рис. 11.22.
Рис. 11.23.
Список литературы
Beale Е. М. L. (1959), An algorithm for solving the transportation problem when the shipping cost over each route is convex, Nav. Res. Log. Quarts
p. 43.
Bennington G. E. (1972), An efficient minimal cost flow algorithm, Report № 75, Department of Industrial Engineering, North Carolina State University at Raleigh.
Boldyreff A. W. (1955), Determination of the maximal steady flow of traffic through a railroad network, Ops. Res., 3, p. 443.
Bray J. A., Wizgall C. (1968), Algorithm 336 NETFLOW, Comm, of ACM, 11, p. 631.
Басакер P., Саати T., Конечные графы и сети, М., Наука, 1974.
Busacker R. G., Gowen Р. J. (1961), A procedure for determining a family of minimal-cost network flow patterns, Operations Research Office, Technical paper 15.
Clasen R. J. (1967), RS-OKF3, SHARE IBM Users group SDA 3536.
Dantzig G. B., Fulkerson D. R. (1956), On the max-flow min-cut theorem of networks, Linear inequalities and related systems, Ann. Math. Studies, 38, p. 215.
Edmonds J., Karp R. M. (1972), Theoretical improvements in algorithmic efficiency for network flow problems, J. of ACM, 19, p. 248.
Elias P., Feinstein A., Shannon С. E. (1956), A note on the maximum flow through a network, IRE Trans., IT-2, p. 117.
Ford L. R., Fulkerson D. R. (1956), Maximal flow through a network. Can. J. of Math., 18, 399.
Ford L. R., Fulkerson D. R.(1962), Flows in networks, Princeton University Press, Princeton.
Frank H., Frisch I. T. (1971), Communication, transmission and transportation networks, Addison Wesley, Reading, Massachusetts.
Gomory R. E., Hu T. C. (1964), Synthesis of a communication network, J. of SIAM (A ppi. Math), 12, p. 348.
Grigoriadis M. D., White W. W. (1972), A partitioning algorithm for the multicommodity network flow problem, Math. Progr., 3, p. 157.
Hu T. C. (1969), Integer programming and network flows, Addison Wesley, Reading, Massachusetts.
Hu T. C. (1966), Minimum cost flow in convex cost networks, Nav. Res. Log. Quart., 13, p. 1.
Jewell W. S. (1968), Multicommodity network solutions, Theorie de graphes, Dunod, Paris, p. 183.
Johnson E. (1966), Networks and basic solutions, Ops. Res., 14, p. 619.
Klein M. (1967), A primal method for minimal cost flows with applications to the assignment and transportation problems, Man. Sei., 14, p. 205.
Maurras J. F. (1972), Optimization of the flow through networks with gains, Math. Prog., 3, p. 135.
Onaga K. (1967), Optimum flows in general communication networks, J. of the Franklin Institute, 283, p. 308.
Potts R. B., Oliver R. M. (1972), Flows in transportation networks, Academic Press, New York.
Sakarovitch M. (1966), The multicommodity maximum flow problem, Report ORC-66-25, Operations Research Centre, Univ, of California, Berkeley.
Siagal R. (1967), Multicommodity flows in directed networks, Report ORC-67-38, Operations Research Centre, Univ, of California, Berkeley.
Tomlin J. A. (1966), Minimum cost multicommodity network flows, Ops. Res., 14, p. 45.
Wollmer R. D. (1970), Multicommodity supply and transportation networks with resource constraints, The Rand Corporation, Report R. M.-6134-PR.
Глава 12
ПАРОСОЧЕТАНИЯ, ТРАНСПОРТНАЯ
ЗАДАЧА И ЗАДАЧА О НАЗНАЧЕНИЯХ
Введение
Рассмотрим следующую задачу построения остовного подграфа Gp общего неориентированного графа G, степени вершин которого по отношению к подграфу Gp заданы.
Задача об остовном подграфе с предписанными степенями. Пусть G = (X, Л) — неориентированный граф, ребрам а; £ Л которого приписаны веса Cj. Пусть, далее, заданы неотрицательные целые числа 6г, г = 1, . . ., п. Требуется найти в G такой остовный подграф Gp, что степени вершин xt по отношению к GJ являются заданными числами 6, (т. е. d^v = 6;) и сумма весов ребер графа Gp максимальна (или минимальна).
Сформулированную выше задачу мы будем называть в настоящей главе общей задачей. Очевидно, что если дан граф G и числа 6<, то вполне возможно, что в G не существует никакого остовного подграфа Gp, имеющего эти предписанные степени. Два необходимых (но не достаточных, см. разд. 5) условия, которым должны удовлетворять числа 6г, чтобы существовал некоторый допустимый остовный подграф, таковы:
6t<df, Vt=l, п(12.1)
■
2 6г —четна,
<=1
причем последнее условие является прямым следствием того факта, что для любого неориентированного графа сумма степеней его вершин в два раза больше числа его ребер.
Паросочетанием общего неориентированного графа G = (X, А) называется подмножество М множества А ребер графа G, выбранное так, что никакие два ребра из М не являются смежными (т. е. не имеют общей вершины). Следующая задача будет называться задачей о максимальном паросочетании (ЗМП).
ЗМП: найти паросочетание М* максимального веса. Вес паро- сочетания определяется как
М* будет называться максимальным паросочетанием графа G. ЗМП можно выразить в терминах линейного программирования:
максимизировать 2=^0^(12.2)
j=i
при условии2 bt^j^i Vi = l, ..., п, (12.3)
j=i
^ = 0 или 1,(12.4)
где Vbu\ — матрица инциденций графа G и ^ = 1 или 0 в зависимости от того, входит ли ребро а,- в паросочетание.
Совершенно очевидно, что ЗМП для графа G является частным случаем общей задачи. Если число вершин G четно, то требуется только добавлять kG ребра веса —оо до тех пор, пока не получится (новый) полный граф G. ЗМП становится тогда общей задачей для графа G, где все 6, положены равными 1. Решением ЗМП будет решение общей задачи для (остовного) подграфа G*, если пренебречь теми ребрами в Gp, которые имеют вес —оо. Если число вершин графа G нечетно, то к G добавляют одну изолированную вершину, после чего строится граф G, как это было описано выше.
В терминологии гл. 3 паросочетание может быть названо «независимым множеством ребер», так как никакие два ребра паросочетания не являются смежными. «Доминирующее множество ребер» в смысле гл. 3 (т. е. множество ребер, «доминирующее» над всеми вершинами из G) следовало бы тогда определить как подмножество Е ребер из G, выбранное так, что каждая вершина инцидентна по крайней мере одному ребру из Е. Такое множество в литературе обычно называется покрытием, и в настоящей главе мы будем использовать этот термин. Весом покрытия Е графа G называется 2 сг Теперь ЗМП соответствует задача о минимальном покрытии (ЗПО). ЗПО: найти покрытие Е* минимального веса для графа G.
Е* будет называться минимальным покрытием графа G. Формулировка ЗПО в терминах линейного программирования такова:
(12.5)(12.5)минимизировать z= 2 СЛ) i=i
(12.5)
(12.5)
при условии2 bij^j^i, Vi = l, ..., n, (12.6)
5=1
^j = 0 или 1,(12.7)
где ^3 = 1 или 0 в зависимости от того, входит ли ребро а, в покрытие.
24 н. Кристофидес
На рис. 12.1 (а) паросочетание в графе показано жирными линиями, а на рис. 12.1 (б) в том же самом графе жирными линиями показано покрытие.
В частном случае, когда веса всех ребер равны единице, ЗМП и ЗПО сводятся к задаче о наибольшем паросочетании (ЗНПС) и
(6)
Рис. 12.1. (а) Паросочетание. (б) Покрытие.
задаче о покрытии наименьшей мли^ности (ЗПНМ). Если граф G имеет п вершин, то число ребер в паросочетании графа G не может, очевидно, превышать величины [п/2]. Однако это число не всегда достигается; например, для «звездного» графа на рис. 12.2 наибольшее число ребер ‘в паросочетании равно 1.
В том специальном случае, когда веса Cj произвольны, а сам граф является двудольным, задача о максимальном паросочетании
сводится к задаче о назначениях (ЗН) — задаче, очень хорошо известной в исследовании операций. В графе такой специальной структуры общая задача превращается в другую хорошо известную задачу — транспортную задачу (ТЗ).
В настоящей главе мы дадим эффективные методы решения ЗМП ЗЛО, ЗН и ТЗ. ЗМП возникает в качестве подзадачи в задаче об
Рис. 12.2. Звездный граф.
обходе графа и в задаче китайского почтальона. Последние встречаются в задачах распределения, таких, как доставка молока и почты, посыпка зимой дорог смесью соли и песка, сбор мусора (см. гл. 9). ЗН и ТЗ являются двумя основными задачами с многочисленными прямыми и косвенными приложениями в самых различных областях, часто весьма далеких от тех областей, на которые указывают названия этих задач.
Наибольшие паросочетания
Если дано паросочетание М. то вершина х,, не являющаяся конечной вершиной никакого ребра из М, будет называться экспонированной вершиной. На рис. 12.3, где паросочетание показано жирными линиями, вершины хв и хв являются экспозирован- ными.
Альтернирующие цепи и деревья
Альтернирующая относительно М цепь — это простая цепь, ребра которой попеременно лежат или не лежат в паросочетании М. Примером такой цепи является цепь ^х6, х,, хь, х3, х4, ^)0, х^) в графе на рис. 12.3. Аугменталъная относительно М цепь — это такая альтернирующая цепь, начальная и конечная вершины 24*
которой экспонированы. Цепь (х9, ж10, х4, xv х2, ж3, ж6, жв) дает пример аугментальной цепи в графе, изображенном на рис. 12.3.
Рис. 12.3. Паросочетание М.
Основная относящаяся к паросочетаниям теорема может быть сформулирована так.
Теорема 1 [5, 27]. Паросочетание М будет наибольшим паросочетанием тогда и только тогда, когда в G не существует никакой аугментальной относительно М цепи.
Доказательство. Необходимость. Допустим, что существует аугментальная цепь Р, и пусть Р обозначает также множество ребер этой цепи. Никакое ребро в множестве М — Р Л М не может быть смежным ни с каким ребром в Р, так как две концевые вершины в Р являются (по определению) экспонированными, а каждая другая вершина в Р уже является концевой вершиной некоторого ребра в Р П М. Следовательно, множество ребер М' = = (М — Р Л ЛГ) U (Р — Р Л -Й) = -^ U Р — Р Л М, полученное в результате замены тех ребер из Р, которые не входят в М (т. е. ребер из множества Р — Р Л М^, на ребра из Р, которые входят в М (т. е. на ребра из Р Л М^, является паросочетанием. Но так как оба концевых ребра из Р не лежат в М, то Р — Р Л М содержит на одно ребро больше, чем Р Л М, и поэтому | М' | = = | М | + 1, так что М не является наибольшим паросочетанием.
Достаточность. Пусть М — паросочетание, относительно которого нет ни одной аугментальной цепи в графе G, и пусть М* — наибольшее паросочетание". Построим остовный подграф Gp, образованный ребрами из М (J М* — М Л М* вместе с соответствующими им вершинами. Никакая вершина из Gp не может иметь
степень, большую чем 2, так как в противном случае два или более ребер из М (или М*^ являются смежными, что противоречит определению паросочетания. Таким образом, подграф Gp состоит из одной или более компонент, и каждая из них есть либо изолированная вершина, либо простая цепь, либо простой цикл, как это изображено на рис. 12.4.
Цепь типа (б) существовать не может, так как она является аугментальной цепью относительно М. это противоречит перво-
(а)
(б) ^(б) ^Хг*sХг*sX,х2х3(в) °°о- ■X,х2х3(в) °°о- ■Рис. 12.4.Рис. 12.4.
(б) ^
(б) ^
Хг*s
Хг*s
X,х2х3
(в) °°о- ■
X,х2х3
(в) °°о- ■
Рис. 12.4.
Рис. 12.4.
начальному предположению. Цепь типа (в) не может существовать, так как она является аугментальной относительно М*, что противоречит предположению о максимальности М*. Цикл типа (д) с нечетным числом ребер не может существовать, так как тогда либо два ребра из М, либо два ребра из М* были бы смежными друг с другом. Остаются возможными графы следующих видов: (а), (г) и циклы типа (д) с четным числом ребер. Для каждого из таких графов число ребер п (М) в М равно числу ребер п (М*) в М*. Так как это справедливо для любой связной компоненты к
графа Gp, то кк
где nh (М) и nh (Л/*) — число ребер в компоненте к, принадлежащих соответственно М и М*. Поэтому
|ММ^ПМ*| + 2ММ) = |МЛМ*| + Зп;1(М*^|М*|
и, следовательно, М — наибольшее паросочетание.
Рассмотрим в качестве примера граф, изображенный на рис. 12.3. Ребра, образующие паросочетание М в этом графе, выделены жирными линиями. Множество ребер в аугментальной
Рис. 12.5. Наибольшее паросочетание М'.
цепи Р = (х9, х4, ж10, Жц х2, za, ж6, х^, не лежащих в М, дает новое паросочетание М', изображенное на рис. 12.5. Здесь уже нет экспонированных вершин и поэтому не существует никаких аугментальных относительно М' цепей. Следовательно, по теореме 1 М' — наибольшее паросочетание.
Альтернирующим деревом относительно данного паросочета- ния М называется дерево Т, для которого
одна вершина, называемая корнем дерева Т, является экспонированной;
все начинающиеся в корне цепи являются альтернирующи- МИ;
все максимальные цепи, начинающиеся в корне дерева Т, содержат четное число рёбер.
Разобьем все вершины дерева на два класса: Ф — класс внешг них вершин, I — класс внутренних вершин. Корень дерева отне-
сен к классу Ф. Вершины вдоль любой цепи, начинающейся в корне, будут поочередно отнесены к классам Ф и 7. Таким образом, если вершина расположена в «конце» цепи с нечетным числом ребер, начинающейся в корне, то эта вершина будет отнесена к 7, а если она лежит в «конце» цепи с четным числом ребер, начинающейся в корне, то будет отнесена к Ф. На рис. 12.6 изображено альтернирующее дерево. Здесь все вершины, лежащие в конце максимальных цепей, начинающихся с корня, в соответствии
Рис. 12.6. Альтернирующее дерево. I — внутренние вершины, Ф — внешние вершины.
с условием (в) будут «внешними». Степень любой внутренней вершины альтернирующего дерева равна 2, в то время как степень внешней вершины может быть любым целым положительным числом.
Аугменталъное дерево — это альтернирующее дерево относительно данного паросочетания, удовлетворяющее условию: существует ребро от какой-нибудь внешней вершины дерева х0, до некоторой экспонированной вершины хе, не принадлежащей дереву. Единственная цепь, идущая от корня дерева до вершины хо и далее — по ребру (хо, ее), будет тогда аугментальной цепью.
Цветки
Цветком по отношению к паросочетанию М называется ауг- ментальная цепь, начальная и конечная экспонированные вершины которой совпадают, т. е. эта цепь является циклом, так как число ребер этой цепи нечетно. На рис. 12.7 изображен цветок, образованный цепью с 5 ребрами.
В алгоритмах для ЗМП и ЗНПС, описанных ниже, цветки срезают для того, чтобы получить более простой новый граф. Срезание цветка В состоит в замене всех вершин цветка В (скажем, Хв) одной новой псевдовершиной хь. Ребро (хь. х^ добавляется всегда, когда существует ребро из некоторой вершины Xt 6 Хв к другой вершине xh $ Хв. В упрощенном графе, полу-
ченном после срезания, вершина хь и другие псевдовершины, соответствующие ранее срезанным цветкам, могут в свою очередь образовывать новый цветок, который опять срезается, и т. д. Последний цветок So, не содержащийся ни в каких других цветках, называется крайним цветком. Обоснование процесса срезания цветков основано на теореме 2, приводимой ниже.
Цветущее дерево — это альтернирующее дерево относительно данного паросочетания, для которого существует ребро (^, Хо"), соединяющее две внешние вершины дерева: х'о и х"0. Если Р* — множество ребер цепи, начинающейся в корне альтернирующего
Рис. 12.7. Дерево с цветком.
дерева и кончающейся в xQ1 а Р" — соответствующее множество для Хо, то множество ребер А.Р* U Р" — Р* П ^"1 вместе с ребром (х0, х^ образует цветок. На рис. 12.7 изображено цветущее дерево.
Когда цветок В срезан, получающаяся псевдовершина считается внешней вершиной. Всякая вершина из В может быть по желанию отнесена к внутренним или к внешним вершинам, так как если вершина принадлежит В^ то она является концевой и в цепях с четным, и в цепях с нечетным числом ребер, начинающихся в корне дерева (в зависимости от маршрута, по которому проходят эти цепи до прихода в первую вершину цветка). Так, на рис. 12.7 вершина х6 может быть помечена как внутренняя, если рассматривать цепь (xv х^ х31 х4, хЪ1 х^, и как внешняя, если брать цепь (хг, х2, х3, х41 хЪ1 х^ х9, х8, х^). Но когда псевдовершина, получающаяся после срезания цветка, помечается кай «внешняя», структура остающегося альтернирующего дерева все еще будет корректной — как это вытекает из определения альтернирующего дерева. Таким образом, после срезания цветка альтернирующее дерево в полупившемся графе сохраняется.
Пример сложной формации цветков и их срезание показаны на рис. 12.8а — 12.8r.j В графе на рис. 12.8а паросочетание
Рис. 12.8а. Срезание цветка Bv
— Ребра в альтернирующем дереве, входящие в паросочетание.
— Ребра в альтернирующем дереве, не входящие в паросочетание
— Другие ребра графа.
изображено жирными линиями. Альтернирующее дерево Т с корнем в экспонированной вершине хх показано сплошными линиями, а все другие ребра графа, не входящие в дерево Т^—пунктиром. Допустим, что последнее добавленное к дереву ребро есть (х1П х12). Так как между двумя внешними вершинами х12 и х13 существует ребро, то добавление к дереву вышеупомянутого последнего ребра дает цветок. Цветок Bv обведенный на рис. 12.8а штрих-
Цветок ВгЦветок ВгРис. 12.86. Срезание В2.Рис. 12.86. Срезание В2.
Цветок Вг
Цветок Вг
Рис. 12.86. Срезание В2.
Рис. 12.86. Срезание В2.
пунктирной замкнутой линией, после срезания дает псевдовершину как это показано на рис. 12.86. Дерево на рис. 12.86 все еще является цветущим с цветком В^ так как существует ребро (z10, хь^. После срезания цветка S2 «остается» вершина ^ь2 и получается новый граф, изображенный на рис. 12,8в. Дерево на рис. 12.8в опять будет цветущим ввиду существования ребра (х3, хь^; цветком в нем будет S3. После срезания цветка
Рис. 12.8г. Альтернирующее дерево после срезания цветков.Рис. 12.8г. Альтернирующее дерево после срезания цветков.
Рис. 12.8г. Альтернирующее дерево после срезания цветков.
Рис. 12.8г. Альтернирующее дерево после срезания цветков.
-В3 «остается» вершина хъ3 и граф, изображенный на рис. 12.8г. Больше цветков нет, и, значит, В3 будет крайним цветком.
Теорема 2. Если В — цветок с нечетным множеством вершин Хв и если х — некоторая вершина из Хв, то в подграфе (Х^ существует наибольшее паросочетание, для которого вершина ^г будет экспонированной.
Доказательство. Пусть (хп х^ . . ., ха) — цикл с нечетным числом ребер, образующий цветок В. Тогда или х = xt для некоторого i = 1, 2, . . ., а, или же х 5 Xt для некоторой псевдовершины хь соответствующей ранее срезанному цветку Bt.
В первом случае вершина х может быть оставлена экспонированной, а остальные а — 1 вершин из В разбиваются на пары, образуя паросочетание. Такое разбиение возможно, так как а — 1 — четное число вершин, остающихся в цикле (после выбора вершины х\ Если одна из этих вершин, скажем хр1 соответствует ранее срезанному цветку Вр1 то вхождение хр в паросочетание ^удет означать возможность разбиения на пары всех вершин из Вр1 кроме одной, а одна уже «использована» на предыдущем шаге. Этот процесс можно продолжить до тех пор, пока все вершины (отличные от ж) не будут разбиты на пары, образуя паро- •сочетание.
В последнем из двух упомянутых случаев вершина Xt может быть оставлена экспонированной, а остальные а — 1 вершин из В разобьются на пары, порождая паросочетание, как и выше. Цветок В( — это цикл с нечетным числом ребер, и, следовательно, лолучается такая же самая ситуация относительно В^, какая уже обсуждалась в случае цветка 5, так что экспонированной в конце концов останется только вершина х.
Важность цветков и циклов (цепей) с нечетным числом ребер в задачах о паросочетаниях можно оценить, анализируя следующий факт: при отсутствии таких циклов формулировка ЗМП на языке линейного программирования, даваемая соотношениями (12.2) и (12.3), приводит к собственно целочисленному решению, так что ограничения (12.4) становятся излишними [8, 16, 17]. Графы, не содержащие циклов с нечетным числом ребер, являются двудольными графами; они рассматриваются в последующих параграфах. Общие свойства полиэдров, определяемых соотношениями (12.3), содержатся в следующей теореме Балински [1].
Теорема 3. Все вершины выпуклого полиэдра, задаваемого неравенствами
Vi = l, п,
5=1
где [Ь^у] — матрица инциденций графа, имеют координаты со значениями 0, 1/2 или 1.
Случай нецелочисленных значений (а именно значения 1/2) отвечает циклам с нечетным числом ребер. Если, например, граф
состоит из единственного такого цикла, как показано на рис. 12.9,то решение задачи линейного программирования (12.2) и (12.3)
для ЗНП таково: |; = 1/2 для ; = 1, . . ., 5. Значение этого решения будет 2-^-, в то время как очевидно, что наибольшее паросочетание для графа на рис. 12.9 содержит два ребра.
Венгерские деревья
Венгерское дерево — это такое альтернирующее дерево в графе, что каждое ребро графа, имеющее внешнюю вершину дерева в качестве концевой, имеет другой концевой вершиной внутреннюю вершину этого дерева. На рис. 12.10 сплошными линиями
■ Ребра, лежащие в дереве и паросочетании Ребра, лежащие в дереве, но не принадлежащие паросочетанию
——— Ребра, не лежащие в дереве
Рис. 12.10. Венгерское дерево.
показано венгерское дерево, причем жирными линиями изображены ребра, входящие в паросочетание, а светлыми — остальные. Ребра графа, не принадлежащие дереву, показаны пунктиром.
Важность венгерских деревьев для ЗМП объясняется следующим их свойством.
Теорема 4 [10]. Пусть Н — венгерское дерево в графе G = = (X, Л) и Go = (X — Хн) — порожденный подграф графа G, шсключаюиргй» из G множество вершин Хн дерева Н. Если Мн — паросочетание в дереве Н и Mq0 — наибольшее паросочетание в GO1 то множество ребер Mh\3Mq0 является наибольшим паро- сочетанием в G.
Доказательство. Пусть множество А ребер графа G разбито на три подмножества:
Ан = {(-^ь я?) | ^ь ^j) € А и xis х^ £ XH^S
Ahg^ = {(^i, х^\(х^ Xj) A, Xi ^Хн и Xj £ X—XH},^Go={(^^j)I(^» ^jHA И Xt^Xj^X— ХНУ
Если 5 — произвольное паросочетание в G, то S может быть разбито аналогичным образом, так что
8 = SH U Shg0 U Sq0)
где SH - 8 П Ан, SHgc = S Л AHg0 и SGq = 5 П AGq.
По определению паросочетания MGo мы имеем
\M*g0\>\Sg0\.(12.8)
Рассмотрим теперь граф G', состоящий из ребер AhUAhg0 и их концевых вершин. По отношению к Мн все вершины xk £ X— — ХН1 являющиеся концевыми для ребер из AhgOi будут экспонированными. Альтернирующая цепь, начинающаяся в экспонированной вершине xk £ X — Хн (или начинающаяся в корне дерева Н, который также является экспонированной вершиной), может только тогда быть аугментальной, когда она оканчивается в другой вершине хк £ X — Хн- Но аугментальная цепь должна содержать нечетное число ребер, а это означает, что если первое ребро этой цепи идет из экспонированной вершины во внутреннюю, то последнее ребро должно идти из внешней вершины в экспонированную. Так как по определению дерева Н все ребра в Анво лежат между внутренними вершинами Н и вершинами из X — — ХН1 то в графе G' нет никакой аугментальной цепи и, следовательно, Мн является наибольшим паросочетанием в G*, т. е.
|Mh|>|Sh| + |ShGo|.(12.9)
Из (12.8) и (12.9) получаем
|MhU^>|ShUShgoU^^(12.10)
Таким образом, Мн (J MGo является наибольшим паросочетанием в G.
Алгоритм для ЗНПС
Пусть задано начальное паросочетание. (Допустимо использование цустого паросочетания.) Алгоритм осуществляет систематический поиск аугментальных цепей с целью улучшения заданного паросочетания в соответствии с теоремой 1. Алгоритм был предложен Эдмондсом [10, 11].
Альтернирующее дерево имеет своим корнем некоторую экспонированную вершину и строится путем попеременного добавления
ребер, лежащих и не лежащих в паросочетании, до тех пор, пока или
дерево станет аугментальным, или
на дереве появится цветок, или
дерево станет венгерским.
В случае (I) число ребер в паросочетании может быть увеличено на единицу с помощью движения по аугментальной цепи к корню дерева и замены ребер цепи, принадлежащих паросочетанию, на ребра, не принадлежащие ему, и наоборотх). После этого дерево отбрасывается ) и строится новое дерево, если такое существует, с корнем в некоторой оставшейся экспозированной вершине.
В случае (II) обнаруживается получившийся цветок (как описано в разд. 2.2), срезается и продолжается рост дерева в процессе поиска аугментальной цепи. Что касается вычислительной стороны, то срезание не производится «явным образом». Достаточно пометить все вершины цветка как внешние и отметить, что все они принадлежат этому цветку. Порядок, в котором цветки «срезаются», важен, так как в конце всей процедуры цветки должны «расцвести» в обратном порядке.
В случае (III) вершины венгерского дерева и инцидентные им ребра совсем удаляются из графа (в соответствии с теоремой 4) и алгоритм применяется к оставшемуся подграфу.
Описание алгоритма
Начальная установка.
Шаг 1. Выбрать в G начальное паросочетание М.
Выбор корня.
Шаг 2. Если в G существуют по крайней мере две экспонированные вершины, то взять одну из них в качестве корня; в противном случае перейти к шагу 8.
Шаг 3. Взять внешнюю вершину хо дерева. Для каждого ребра (хО1 х^: если Xt — экспонированная вершина, то перейти к шагу 4; если Xi — внутренняя вершина, то перейти к шагу 7; если Xi не принадлежит дереву и не является экспонированной, то перейти к шагу 5.
При описанном построении получается новое паросочетание, состоящее из тех ребер выбранной аугментальной цепи, которые не принадлежали первоначальному паросочетанию.— Прим. ред.
Шаг 4. Найдена аугментальная цепь из корня к х^. Построить новое улучшенное паросочетание, удаляя текущее дерево и пометки вершин, и перейти к шагу 2.
Шаг 5. Добавить к альтернирующему дереву ребро (z0, xt\ и отметить вершину х^. как внутреннюю. Найти ребро ^хь xh)r принадлежащее текущему паросочетанию, и добавить его к дереву, пометив вершину хк как внешнюю. Если существует ребро между хк и другой внешней вершиной, то перейти к шагу 6. В противном случае перейти к шагу 3.
Шаг 6. Опознать и срезать получившийся цветок. Отметить возникшую псевдовершину как внешнюю. Внести поправку в частичное упорядочение цветков и возвратиться к шагу 3.
Шаг 7. Возвращаться к шагу 3 до тех пор, пока единственным возникающим случаем не будет случай (III). Тогда удалить все вершины дерева и все ребра из G, инцидентные этим вершинам. Считать оставшийся подграф графом G и вернуться к шагу 2^
Шаг 8. Выделить отдельно в последнем графе бив каждом удаленном венгерском графе оптимальное паросочетание, поступая так. Распустить сначала крайний цветок и выделить паросочетание, которое оставляет экспонированной относительно него- ту вершину х, которая входит в паросочетание в нераспустившем- ся цветке. (См. теорему 2.) Продолжать процесс распускания в порядке, обратном к установленному на шаге 6, до тех пор, пока весь граф не будет распустившимся и не будет получено наибольшее паросочетание.
Пример
Мы хотим найти наибольшее паросочетание в графе, изображенном на рис. 12.11а, начальное паросочетание в котором показана жирными линиями. Мы применим алгоритм предыдущего раздела с тем правилом, что на шаге 3 внешние вершины просматриваются в порядке увеличения их индексов и если' дана внешняя вершина, то ребра, ведущие из нее, просматриваются в порядке увеличения индексов их вторых концевых вершин.
На шаге 2 алгоритма в качестве корня выбирается вершина хг, и после нескольких применений шагов 3 и 5 получается альтернирующее дерево, изображенное на рис. 12.116. На этой стадии сразу же после добавления ребер (х3, ж8) и (х81 хй) к альтернирующему дереву шаг 6 опознает цветок (г3, x6l xQ, хь, х^ дающий после срезания псевдовершину bv и приводит к дереву, изображенному на рис. 12.11в.
Следующее применение шага 3 добавляет ребра (Ь1Ч х^ (на самом деле (z4, z10)) и (х10, а:п), как показано на рис. 12.11 г. Второй цветок (Ь1Т z10, xlv х^, х^ опознается на шаге 6. После
Рис. 12.11г. Образовался цветок Ь2.
13
Корень
^2
Рис.
Рис. 12.11а. Граф из примера 2.5.
— Ребра в паросочетании.
Рис. 12.116. Альтернирующее дерево в графе из рис. 12.11а.
"з
12.11д. Дерево после срезания цветка Ь2.
Корень
Рис. 12.11ж. Дерево после срезания Ь3.
Рис. 12.11b. Дерево после срезания цветка bv
25 н. Кристофидес
Рис. 12.113, Найдена аугментальная цепь.
его срезания возникает псевдовершина Ь2 и образуется дерево, показанное на рис. 12.Ид. Рост дерева продолжается из вершины я13, но после добавления ребер (,г13, <г14), (,г14, ,г16), (я13, zr15), (^i5i ^i?) опознается третий цветок (я13, ж14, ж1в, я17, я15), показанный на рис. 12.Не. После его срезания возникает псевдовершина Ь3 и образуется дерево, изображенное на рис. 12.Иж.
При следующем применении шага 3 добавляется ребро (68, х18) и на шаге 4 обнаруживается аугментальная цепь (х4, zr12l Ь3, х18)](см. рис. 12.Из). Когда распускается Ь3 (см. рис. 12.Ии), то возможны две цепи от хг к х18. Аугментальной цепью будет та цепь, которая состоит из нечетного числа ребер, т. е. Р2 = = (^i, ^127 ^13, я15, х17, я16, х14, .г18). Когда ребра этой цепи, лежащие в паросочетании, «меняются» с теми, которые в нем не лежат, то получается новое улучшенное паросочетание, изображенное на рис. 12.12а.
Рис. 12.Пи. Цветок Ъ3 распускается. Р2 — аугментальная цепь.
«Отбросив» дерево ) и начиная с нового паросочетания, выберем на шаге 2 в качестве корня вершину х19. После нескольких применений шагов 3, 5 и 6 получается дерево, показанное на рис. 12.126, где &2 имеет тот же самый смысл, что и ранее. На шаге 7 обнаруживается, что это дерево является венгерским. После его удаления остается подграф, изображенный на рис.12.13а.
На шаге 2 в качестве нового корня выбирается х80. После нескольких применений шагов 3 и 5 — сразу же после добавления ребер (х18, я25) и (хйЬ1 х2в) на шаге 5 — обнаруживается аугмен- тальная цепь. Окончательный вид дерева показан на рис. 12.13 б; аугментальной цепью является^цепь (х20, xw х181 я25, х^ х^. «Поменяв» ребра этой цепи, лежащие в паросочетании ,на те, которые
ф ох19 Корень
Ф
»х2»х2D-
»х2
»х2
Ьг
Рис. 12.126. Венгерское дерево в графе из (а).
Рис. 12.13. (а) Граф после удаления венгерского дерева, (б) Альтернирующее дерево и аугментальная цепьв графе из (а).
Рис. 12.14. Наибольшее паросочетание в примере 2.5.
в нем не лежат, получим паросочетание, не оставляющее никаких экспозированных вершин. (Заметим, что вершина .г19 удалена ранее вместе с венгерским деревом.) Получающееся паросочетание, изображенное на рис. 12.14, будет, таким образом, наибольшим паросочетанием.
Максимальные паросочетания
Рассмотрим теперь задачу о паросочетании для общего графа G = (X, Л), ребрам которого а5 С Л приписаны веса с^ В этом разделе мы исследуем задачу нахождения совершенного паросочетания (т. е. паросочетания, в котором каждая вершина «сочетается» с некоторой другой вершиной), имеющего максимальный вес. Эта задача определяется соотношениями (12.2) — (12.4) с той лишь разницей, что неравенство в (12.3) должно быть заменено равенством. Во введении было объяснено, как задачи с ограничениями в виде равенств или неравенств можно сделать эквивалентными путем добавления ребер с весом —оо и искусственной вершины — в случае нечетного числа вершин. Таким образом, рассматриваемая ЗМП формулируется так:
максимизировать т 2=^с^(12.11)
при условии
S ^ = 1, Vi = l, п,(12.12)
aj^Tt
где
Л = ((^ь ^(якСГ^)}, т. е. просто множество ребер, инцидентных вершине хь и ^€{0, 1}-(12.13)
Как уже говорилось выше, условия целочисленности (12.13) не являются излишними в случае существования в графе циклов с нечетным числом ребер. Однако Эдмондс [10, 11, 12] показал, что эти условия могут быть заменены системой линейных ограничений, и доказал следующую теорему.
Теорема 5 [11]. Для любого графа выпуклая оболочка решений (12.12) и (12.13) является полиэдром, определенным соотношениями (12.12), и, кроме того*.
для каждого подмножества Sr cz X, содержаи^его нечетное число вершин (скажем, | Sr | = 2gr + 1 с некоторым положительным целым qr), следует добавить ограничения
S ^<?г,(12.14)
а£Аг
где АТ — множество ребер порожденного подграфа (Sr} , и (ii) следует добавить ограничения £/ > 0 для (12.15) всех 7 = пг.
Ясно, что любое паросочетание из G удовлетворяет ограничениям (12.14). Не очевидно только, что эти ограничения достаточны. Мы обоснуем их достаточность конструктивно, предъявив совершенное паросочетание из G, являющееся решением задачи линейного программирования (12.11), (12.12), (12.14) и (12.15) с любым заданным вектором к,] реберных весов.
Обозначим сформулированную выше задачу линейного программирования через Р. Двойственной задачей к Р будет [8] следующая:
минимизировать
при условии
^z+^hH- 3 kr^Cj, Vj = l, • ТП, (12.17)
и
Хг>0 для всех ST.(12.18)
Таким образом, с каждой вершиной х^ из G связана некоторая переменная л^, а с каждым множеством 8Г, состоящим из нечетного числа вершин, связана переменная Хг.
В ограничениях (12.17) с5 — вес ребра а$ вида ^хь жь), a Fj = = {Sr | a,j £ Аг}, т. e. Fj — семейство подмножеств ST, содержащих как х^ так и х^. В соответствии с теоремой двойственности линейного программирования вектор [£*] максимизирует z при условиях (12.12), (12.14) и (12.15), а вектор [л*, Х*1 минимизирует и при условиях (12.17) и (12.18) тогда и только тогда, когда
для каждого к* или к* = 0, или же в соответствующем ограничении (12.14) имеет место равенство;
для каждого £* или £* = 0, или же в соответствующем ограничении (12.17) имеет место равенство.
Мы дадим доказательство теоремы 5, описав процедуру, позволяющую находить совершенное паросочетание М (и, следовательно, вектор [^], а также вектор [л*, X?], удовлетворяющий условиям (12.17) и (12.18) и условиям двойственности (i) и (ii)). Таким образом будет доказано, что М — оптимальное паросочетание.
Алгоритм для ЗМП
Предположим, что мы начинаем с графа G. Присвоим его вершинам веса л£, выбирая величины л,- достаточно большими, чтобы ограничения (12.17) выполнялись, когда все кг взяты равными нулю. Пусть теперь G' — остовный подграф в G, содержащий только те ребра, для которых в (12.17) имеет место равенство. Назовем G’ специальным остовным подграфом графа G. Если в Gr можно найти совершенное паросочетание (с помощью алгоритма для ЗНПС, описанного в предыдущем разделе), то это паросочетание — оптимальное. Действительно, вектор [л;, Хг] удовлетворяет ограничениям (12.17) и (12.18), условие (i) выполнено автоматически, так как Хг = О для всех г, а условие (ii) выполнено ввиду того, что в паросочетание входят только ребра из G', так что |7- не может быть ^ 0, если а^ не удовлетворяет ограничению (12.17).
Вообще говоря, может оказаться, что в G' совершенное паросочетание найти нельзя, а алгоритм для ЗНПС обнаружит венгерское дерево. Как уже отмечалось в разд. 2.3, наибольшее паросоче-
тание в G' частично строится из паросочетания в Н, оставляющего экспонированным корень дерева Н, и поэтому существование венгерского дерева означает, что в G' нет никакого совершенного паросочетания. Таким образом, при обнаружении такого дерева следует изменить вектор весов [л^ Хг], чтобы получить новый специальный остовный подграф G' в графе G и подвергнуть его проверке. Ниже будет описано, как вычисляется такой весовой вектор.
Допустим на время, что для любого допустимого вектора весов [л,, Хг] (т. е. вектора, удовлетворяющего (12.17) и (12.18)) данное Хг является ненулевым лишь тогда, когда ST будет множеством вершин, содержащихся в псевдовершине текущего графа G' или в псевдовершине, содержащейся в псевдовершине графа G' на любом уровне процесса срезания. Допустим, кроме того, что для всех ребер, образующих на некотором этапе цветки, позднее срезанные и давшие псевдовершины графа Gr, в выражении (12.17) имеет место равенство. Два сделанных выше допущения наверняка выполняются вначале, так как первый специальный остовный подграф G*, построенный, как описано выше, вообще не имеет псевдовершин и для него все Хг положены равными нулю.
Для более ясного понимания алгоритма мы введем следующую индексацию. Первоначальный граф G будет обозначаться через Go. Специальный остовный подграф графа Go есть GJ; в этом графе строится альтернирующее дерево, как это делалось в алгоритме для ЗНПС. Когда, наконец, образуется и срезается первый цветок, сам граф будет обозначаться через Gv а его специальный остовный подграф — через G’^. После срезания / цветков граф будет обозначен символом Gy, а его специальный остовный подграф — G/+1-
Общий шаг алгоритма таков. Пусть очередной граф (после срезания некоторого числа цветков) будет Gf_i, а его специальный остовный подграф — G/. В G't строится альтернирующее дерево — с помощью алгоритма ЗНПС — до тех пор, пока не произойдет одно из трех:
на дереве появится цветок;
Б) дерево станет аугментальным;
дерево станет венгерским.
Случай А. В этом случае цветок срезается, получается новый граф Gf и его специальный остовный подграф G/+1. Как отмечалось выше, срезание цветка приводит к дереву Т с корректной структурой альтернирующего дерева, так что Т можно сохранить и продолжать процесс роста дерева.
Случай Б. В этом случае, как уже объяснялось для ЗНПС, получается улучшенное паросочетание — с большим числом ребер.
Дерево Т следует отбросить 1) и, взяв в графе G) оставшуюся экспонированную (в G/) вершину, приступить к построению нового дерева с корнем в этой вершине. Здесь следует заметить, что как только Т отброшено и в 67 «начинает расти новое дерево», некоторые из псевдовершин в Gf (образованные после срезания более ранних цветков, давших графы Go, Gv . . ., Gj^) могут оказаться помеченными как внутренние в новом дереве.
Случай В. В этом случае вектор весов [л;, Хг] для текущего графа G/_! изменяется так, что возникает новый специальный остовный подграф, отличный от Gp Изменения в [лf, Хг] делаются так, чтобы
новый граф Gf продолжал удовлетворять сделанным ранее предположениям, т. е. что Хг отлично от нуля лишь для множеств вершин, соответствующих псевдовершинам из Gf_v и что равенство выполняется для всех ребер или цветков, которые после срезания дали псевдовершины в С^;
текущее альтернирующее дерево в старом графе Gf можно было строить дальше, или на нем возникнет цветок, или оно станет аугментальным — с использованием новых ребер, входящих в новый граф Gf\
либо некоторая псевдовершина в текущем альтернирующем дереве, помеченная как внутренняя, перестанет быть таковой;
либо будет доказано, что в Go нет совершенного паросочетания.
Изменения в векторе весов [л,, Хг] производятся так. Для ребер а, = (^f, хк^ из Gf_Xs не принадлежащих G/, одна концевая вершина которых принадлежит текущему альтернирующему дереву Т и помечена как внешняя, а другая концевая вершина не лежит в Т, находим
At = min [л; + л^ — 9].(12.19)
aj
Для ребер aj — (zf, хк) из б^, не принадлежащих G^ обе концевые вершины которых лежат в Т и обе помечены как внешние, находим
А2 = 4- min [л,- + лк — сД.(12.20)
2
Для множеств 5Г вершин из G, образующих крайние псевдовершины в Т и помеченных как внутренние, находим
A3 = -i min [Хг].(12.21)
Д Sr
Берем
A = min[A1, А2, А3].(12.22)
г) См. примечание 2 на стр. 382,— Прим. ред.
Затем следующим образом изменяем вектор весов [л,-, Х7].
Для каждой вершины хг из G, являющейся внешней вершиной дерева Т или содержащейся в псевдовершине из 7, помеченной как внешняя, уменьшаем лг до лг — А.
Для каждой вершины xt из G, являющейся внутренней вершиной дерева Т или содержащейся в псевдовершине из Т, помеченной как внутренняя, увеличиваем лг до лг + А.
Для каждого множества Sr вершин из G, образующих крайнюю псевдовершину в Т, помеченную как внешнюю, увеличиваем Х7 до Х7 + 2А.
Для каждого множества вершин Sr из G, образующих крайнюю псевдовершину из Т, помеченную как внутреннюю, уменьшаем Х7 до Х7 — 2 А.
Безотносительно к значению А все ребра из старого графа G'T, образующие текущее дерево Т, остаются в новом графе G'T1 так как веса лг всех внутренних и внешних вершин дерева Т увеличиваются и уменьшаются на одну и ту же величину, а значит равенство в выражении (12.17) по-прежнему сохраняется. Равенство в выражении (12.17) продолжает сохраняться и для всех ребер тех цветков, которые были срезаны, образовав псевдовершины графа Gj_v Таким образом, если псевдовершина из Gj-^ была помечена как внешняя в альтернирующем дереве Т в старом графе G'#, то для некоторого ребра а, = \xt, zh), входящего в цветок, после срезания которого образовалась эта псевдовершина, веса л, и л^ уменьшатся на А. Но Х7 для множества вершин ST, соответствующего этой псевдовершине, увеличится на 2А, так что равенство в выражении (12.17) по-прежнему сохранится для ребра aj. Аналогично обстоит дело для ребер тех цветков, которые «порождают» псевдовершины в G^, помеченные как внутренние вершины в дереве Т в старом графе G/.
Предположим теперь, что в (12.22) А = Ат и что ребром, давшим это значение А1 в (12.19), является а*. После А — изменения вектора весов [лг, 41 — ребро а* будет удовлетворять соотношению (12.17), причем имеет место равенство, так что это ребро будет входить в новый граф G'r. Таким образом, используя aj, можно дерево Т (которое, как отмечалось выше, по-прежнему будет альтернирующим в новом графе G7) либо расширить, либо сделать аугментальным в зависимости от того, является ли концевая вэршина ребра а*, не принадлежащая дереву Т, экспонированной или нет.
Если в (12.22) А = А2 и а* - ребро, дающее это значение в (12.20), то добавление а* к дереву Т приведет к образованию цветка.
Наконец, если в (12.22) А = А3, то вычитание величины 2 А из К- в процессе изменения вектора весов [лг, Х7] сделает в соответствии с (12.21) некоторое Х7 (скажем, X*) равным нулю. Пусть
няя псевдовершина
(О)
(6)
Рис. 12.15. (б) Внутренняя псевдовершина распускается и становится крайним цветком В*.
(в) Образование нового дерева.
х* — внутренняя псевдовершина текущего дерева Т, соответствующая Л£, и В* — крайний цветок, давший после срезания х*. Псевдовершина ж* графа G^-y может теперь расцвести, образовав цветок В*, и это даст другой граф G^. (Заметим, однако, что этот граф G;_2 не будет тем же самым графом, из которого был получен граф G#_T после срезания цветка, так как распустившийся цветок, превративший Gj-y в G/_2, не будет тем же самым крайним цветком, который после срезания дал Gf_y.) Пусть G/-t — специальный остовный подграф нового графа Gj_^. Так как для всех ребер из В* в (12.17) имеет место равенство, то очевидно,
что все эти ребра входят и в Gf-1. Если В* состоит, скажем, из 2g + 1 ребер, то в В* легко получить паросочетание из q ребер, как это показано на рис. 12.15. После того как цветок В* распустился, он разбивает текущее альтернирующее дерево на две компоненты, одна из которых «касается» цветка в вершине xv а другая — в вершине х^. Если использовать только ребра из В*, то можно указать две цепи (одну с четным и другую с нечетным числом ребер) между вершинами xt и z2. Добавляя ту цепь, у которой четное число ребер, к текущему дереву Г, связываем Т снова в одно дерево (см. рис. 12.15 (в)). Новое альтернирующее дерево можно затем расширять до тех пор, пока опять не возникнут приведенные выше случаи А, Б или В.
Алгоритм завершает работу, когда на некотором этапе / в графе Gt будет получено совершенное паросочетание. Соответствующий граф Gy-t расширяется до начального графа Go путем распускания цветков в порядке, обратном порядку их срезания, и построения паросочетаний в каждом распустившемся цветке — так же, как на шаге 8 алгоритма ЗНПС из разд. 2.4.1.
Когда получено совершенное паросочетание, оно будет максимальным совершенным паросочетанием, так как тогда мы имеем решение (т. е. вектор [Еу]) и двойственный вектор весов [nf, Хг], удовлетворяющий ограничениям (12.17) и (12.18), а также сформулированным выше условиям (i) и (ii).
Альтернативным случаем остановки является случай В, когда не существует никаких ограничений (12.19), (12.20) и (12.21). В этом случае А может быть взято как угодно большим, и совершенно очевидно, что в G не существует никакого совершенного паросочетания.
Приведенный выше метод решения ЗМП был предложен Эдмондсом [11]. Он является эффективным алгоритмом (см. разд. 3.3) и служит также конструктивным доказательством теоремы 5.
ЗЛ.1. Описание алгоритма
Присвоение начальных значений
Шаг 1. Присвоить вершинам графа Go веса л^ так чтобы для всех ребер из Go было выполнено соотношение (12.17), когда все Хг = 0. Взять G = Gti.
Формирование графа G'
Шаг 2. Образовать специальный остовный подграф G' текущего графа G.
Построение дерева
Шаг 3. Если в G' не существует никакого альтернирующего дерева Т, то строить новое дерево с корнем в некоторой экспониро-
ванной вершине из G'. Если экспонированных вершин нет, перейти к шагу 8. Если в G* уже существует альтернирующее дерево, то продолжать его построение. Если на Т обнаружится цветок, то перейти к шагу 4. Если дерево Т станет аугментальным, то перейти к шагу 5.
Если дерево Т станет венгерским, то перейти к шагу 6.
Цветки на дереве
Шаг 4. Срезать цветки и образовать псевдовершину. Обозначим получившийся граф через G, его специальный остовный подграф через G', а оставшееся дерево через Т. Перейти к шагу 3.
Аугментальное дерево
Шаг 5. Улучшить текущее паросочетание, «поменяв» вдоль аугментальной цепи ребра, принадлежащие паросочетанию и ему не принадлежащие. «Отбросить» дерево Т и перейти к шагу 3.
Венгерское дерево
Шаг 6. Вычислить Ах, Д2, Д3 и А по формулам (12.19) — (12.22). Если нет никаких ограничений (12.19) — (12.21), то остановиться; в графе нет совершенного паросочетания. В противном случае изменить вектор весов [л,, Хг], как описано выше. Если А = Дт или А = Д2, то сохранить текущее дерево Т и перейти к шагу 2. Если А = Д3, то перейти к шагу 7.
Шаг 7. «Распустить» псевдовершину, давшую Д3 в соотношении (12.21), в цветок В. Обозначим получившийся граф через G, а его специальный остовный подграф через G'. Построить в В совершенное паросочетание. Перестроить альтернирующее дерево, добавляя к ребрам из Т необходимую цепь из В, и обозначить это дерево символом Т. Перейти к шагу 3.
Конец,
Шаг 8. Распустить все цветки в обратном порядке (к первоначальному порядку срезания цветков), находя совершенное паросочетание после каждого распускания.
3 2. Пример
Мы хотим найти совершенное паросочетание для графа Go, изображенного на рис. 12.16. Начнем с приписывания вершинам Xi, i = 1, . . ., 12, весов Л;, задаваемых вектором [л;]1 = (9, 2, 11, 7, 3, 4, 8, 6,6, 5,3, 4), и полагая все Хг=0. Веса лг выбраны нами довольно произвольно.
Специальный остовный подграф G^ графа Go изображен на рис. 12.17. Пусть в качестве корня выбрана вершина xv и в ^
Рис. 12.16. Граф Ga из примера 3.2.
на шаге 3 алгоритма строится альтернирующее дерево. На шаге 5 сразу же в паросочетание отбирается ребро (жх, х2). Выбирая вершины ж3, х5 и х, (в указанном порядке) в качестве корней новых деревьев, немедленно получим аугментальные деревья и приходим к ситуации, в которой ребра в паросочетании показаны жирными линиями на рис. 12.17. Выбрав вершину ж12 в качестве корня нового дерева, строим это дерево на шаге 3 алгоритма до тех пор, пока не будет достигнуто состояние, изображенное на рис. 12.18, в котором образуется цветок. На шаге 4 этот цветок срезается и образуется псевдовершина х^, а рост дерева продолжается на шаге 3, пока не достигается состояние, представленное на рис. 12.19, в котором дерево становится венгерским. Сам граф (после срезания) будет Gx, а его специальный остовный подграф — GJ, как показано соответственно на рис. 12.20 (а) и рис. 12.20 (б).
Рис. 12.19. Венгерское дерево в G,.
Рис. 12.20. (а) Граф Gv (б) Граф С'г.Рис. 12.20. (а) Граф Gv (б) Граф С'г.Д2 = оо и Д3 = оо.Д2 = оо и Д3 = оо.Рис. 12.22. Альтернирующее дерево в 62 из рис. 12.21.Рис. 12.22. Альтернирующее дерево в 62 из рис. 12.21.Рис. 12.21. Новый специальный остовный подграф G^ для графа Сг из рис. 12.20(a).Рис. 12.21. Новый специальный остовный подграф G^ для графа Сг из рис. 12.20(a).№(6)Рис. 12.23. (а) Граф Gv (б) Граф G3.№(6)Рис. 12.23. (а) Граф Gv (б) Граф G3.
Рис. 12.20. (а) Граф Gv (б) Граф С'г.
Рис. 12.20. (а) Граф Gv (б) Граф С'г.
Д2 = оо и Д3 = оо.
Д2 = оо и Д3 = оо.
Рис. 12.22. Альтернирующее дерево в 62 из рис. 12.21.
Рис. 12.22. Альтернирующее дерево в 62 из рис. 12.21.
Рис. 12.21. Новый специальный остовный подграф G^ для графа Сг из рис. 12.20(a).
Рис. 12.21. Новый специальный остовный подграф G^ для графа Сг из рис. 12.20(a).
№(6)
Рис. 12.23. (а) Граф Gv (б) Граф G3.
№(6)
Рис. 12.23. (а) Граф Gv (б) Граф G3.
Шаг 6 алгоритма дает
At = min[9 + 6 —10, 114-6—13, 4-f-3 — 5] = ребро (х,, х,) ребро (х,, х,) ребро (х„, хп)
= 2 соответствует ребру (х12, Яц),
Д2 = 2" [4 4-4 — 6] = 1 соответствует ребру (z6, z12),
Д3 = оо ограничение отсутствует.
Таким образом, Д = min [2, 1, оо] = 1.
После изменения весов новый вектор л принимает вид [лг]2 = = (8, 3, 10, 6, 2, 3, 7, 7, 6, 5, 3, 3), а вес Хг, соответствующий нечетному множеству вершин 53 = {х3, х4, х5, х6, х^, равен 2.
Для нового вектора весов [лг, Хг] новый специальный остовный подграф G2 графа G4 изображен на рис. 12.21; ребро (zi2, хь^ входит в старый подграф G^.
Так как дерево на рис. 12.19 сохраняется, то новое вошедшее ребро приводит к образованию цветка, состоящего из нечетного цикла (х12, xs, xblY Это сразу же обнаруживается на шаге 3, а на шаге 4 цветок срезается; возникает псевдовершина х^ и получается новое дерево, показанное на рис. 12.22. Сам граф теперь будет G2, а его специальный остовный подграф — G3; эти графы представлены соответственно на рис. 12.23а и рис. 12.236.
Дерево, изображенное на рис. 12.22, является венгерским деревом в G3, и на шаге 6 вычисляется новое значение Д для изменения
вектора весов:
A^mintS-l-G —10, 104-6 —13, 74-5 — 9, 34-3 — 5] = ребро (х,,х,) ребро (ха, х,) ребро (х,, х10) ребро (х,,. xtl) = 1 соответствует ребру (х12, хи),
Следовательно, Д = 1. Используя это значение Д, получаем [л/]3 = (7, 4, 9, 5, 1, 2, 6, 6, 6, 5, 3, 2), а вес Х2, соответствующий нечетному множеству вершин So = (х3, х4, х5, х6, х7, ха, z12}, равен Х2 = 2.
26 Н. Кристофидес
Рис. 12.24. Новый специальный остовнып подграф G'3 для графа G4 из рис. 12.23(a).
Для этих новых весов [ла Хг] новый специальный остовный подграф графа G^ изображен на рис. 12.24. После введения нового ребра (я12, хп) альтернирующее дерево на рис. 12.22 становится аугментальным, так что новое ребро входит в паросочетание. Это дерево «отбрасывается», и строится новое дерево с корнем в одной из оставшихся экспонированных вершин графа G31 т. е. в вершине х9 или z10. В любом случае ребро (хй1 z10) сразу же попадает в паросочетание и получается совершенное паросочетание. Это совершенное паросочетание графа G2 показано на рис. 12.25 (а). Чтобы найти соответствующее паросочетание в Go, мы сначала распустим цветок Ъ^ и построим в нем совершенное паросочетание, как показано на рис. 12.25 (б), а затем распустим цветок Ъх и построим в нем совершенное паросочетание (см. рис. 12.25 (в)). На этом рисунке жирными линиями изображено максимальное совершенное паросочетание графа Go; вес этого паросочетания равен 66. Так как в соответствии с теорией линейного программирования максимум величины 2 из (12.11) равен минимуму величины и из (12.16), то можно сделать проверку. Поскольку | 1?! | = 2gj + 1 = 5 и | 52 | = 2g2 + 1 = 7, то = 2 и д2 = 3, так что
и = (7 + 4 + 9 + 5 + 1 + 2 + 6 + 64-6 + 5 + 3 + 2) +
+ (2 х 2 + 3x2) = 66
Некоторые вычислительные результаты
Алгоритм для ЗНП, а следовательно, и для ЗМП, является хорошим алгоритмом в том смысле, что необходимое для него число операций является полиномиальной функцией от числа п вершин графа. Для ЗНП требуемое для вычислений время растет как б? [га4], хотя на практике этот рост значительно медлен-
(а)
(6)
Рис. 12.25. (а) Совершенное паросочетание в G^. (б) Паросочетание с распустившейся вершиной Ь^. (в) Максимальное паросочетание.
нее [30]. Программа для вычислительной машины, приведенная в [30], дает зависимость вида О [п2»7], а другая программа [29] — зависимость вида О [п2>3]. Эдмондс и Джонсон [29] привели типичный результат для задачи о паросочетании (на самом деле — для общей задачи, обсуждавшейся в разд. 5, с бг = 1 или 2 и 1^ ^ с, ^ 10) с 300 вершинами и 1500 ребрами, потребовавшей для решения около 30 секунд на ИБМ 360/91.
4. Задача о назначениях
В этом разделе мы рассмотрим частный случай паросочета- ний — в двудольных графах [9, 18, 25]. Задан двудольный граф G = (Ха U Х\ Л), где Xй и Хь — независимые множества вершин и каждое ребро aj = (^, zfe) С Л имеете, С Ха, хк £ Хь и вес Cj. Мы хотим найти совершенное паросочетание графа G с максимальным (или минимальным) весом. Минимизационный вариант этой задачи хорошо известен в литературе как задача о назначениях (ЗН), и он без потери общности часто обсуждается в связи с полными двудольными графами.
Пусть | Ха | = | Хь | = п. Рассматривая полный двудольный граф КП1П) легко видеть, что задача о паросочетании для этого специального случая может быть решена с помощью методов, предназначенных для исследования потоков в сетях (из гл. И), и поэтому нет необходимости в применении общего алгоритма паросочетания, изложенного в разд. 3 настоящей главы. Пусть добавлен искусственный источник s с дугами (s, хгу Ух} £ Ха, имеющими единичную пропускную способность и нулевую стоимость (вес), и искусственный сток t с дугами (^h, <), V xk g Х\ также имеющими единичную пропускную способность и нулевую стоимость (вес). Если рассматривать ребра из Л как ориентированные, т. е. как дуги (xis xk) с единичными пропускными способностями, то максимальный поток с минимальной стоимостью (весом) от $ к t будет иметь значение п, а по этим дугам будет «проходить» ненулевой поток (со значением 1) 1) с минимальной суммарной стоимостью (весом). Эти дуги из Л будут тогда образовывать в G совершенное паросочетание с минимальной стоимостью (весом). Очевидно, что в случае такой специальной структуры графа многие шаги общего алгоритма нахождения потока минимальной стоимости (веса) могут быть упрощены с целью получения более эффективной процедуры для ЗН.
г) Отметим, что в соответствии с гл. 11, если все пропускные способности — целые, то потоки по дугам тоже будут целые, т. е. в нашем случае 0 или <.
С другой стороны, ЗН можно рассматривать как частный случай ЗМП и решать ее с помощью специализированной версии алгоритма из разд. 3.1.1. Главная трудность, связанная с этим общим алгоритмом — образование и срезание цветков,— в случае ЗН отсутствует, так как в двудольном графе не может существовать циклов с нечетным числом ребер. Так как обычно принято рассматривать ЗН как задачу минимизации, то мы последуем этому обычаю и опишем минимизационный вариант алгоритма из разд. 3.1.1, применимый только к двудольным графам. Изменения, которые нужно сделать в случае задачи максимизации, тривиальны.
4.L Алгоритм для ЗН (случай минимизации)
Описанный здесь алгоритм был предложен Кёнигом [22], Эгер- вари [15] и Куном [23, 24] и известен как венгерский алгоритм.
Описание алгоритма
Присвоение начальных значений
Шаг 1. Вершинам из множеств Ха и Хь графа G присвоить веса л“ и л£ соответственно, причем так, чтобы для любого ребра aj = (х^ хк) выполнялось неравенство л? + л^ ^ с5.
Формирование графа G*
Шаг 2. Построить специальный остовный подграф G' графа G с данными текущими весами [л].
Построение дерева
Шаг 3. Если в G' нет никакого альтернирующего дерева Г, то «выращивать» его, взяв в качестве корня некоторую экспонированную вершину Xt графа G', принадлежащую множеству Ха; если экспонированных вершин нет, то перейти к шагу 7. Если альтернирующее дерево уже существует, то продолжать «выращивать» его. Если дерево Т окажется аугментальным, то перейти к шагу 4, а если венгерским — к шагу 5.
Аугменталъное дерево
Шаг 4. Улучшить текущее паросочетание, «взаимно поменяв» (вдоль аугментальной цепи) ребра, принадлежащие ему и ему не принадлежащие.
«Отбросить» дерево Т и перейти к шагу 3.
Венгерское дерево
Шаг 5. Для ребер aj = (х^ хк), не лежащих в G', одна концевая вершина которых принадлежит текущему дереву Т и помечена
как внешняя, а другая концевая вершина не принадлежит Т, найти
А = min [с;- — л? — Ль].
Шаг 6. Для каждой вершины xt графа G, принадлежащей Ха и являющейся внешней вершиной дерева Т, поменять л“ на л? + А, а для каждой вершины хк графа G, принадлежащей Хь и являющейся внутренней вершиной дерева Т, заменить л£ на л^ — А.
Сохранить дерево Т и перейти к шагу 2.
Конец
Шаг 7. Текущее совершенное паросочетание является минимальным.
Матричная форма алгоритма
Часто, когда граф является полным, операции вышеприведенного алгоритма реализуются на (n X п)-матрице С, строки которой соответствуют вершинам из Х°, а столбцы — вершинам из Хь. Начальные элементы cik являются стоимостями (весами) ребер (‘Г/, ^й)"
На шаге 1 алгоритма начальный вес л“ вершины х^ € Xе берется равным наименьшему элементу строки I. Вес л“ вычитается из всех элементов строки г, и так делается для всех строк. Вес Ль вершины хк € Хь берется равным наименьшему элементу в столбце к получившейся матрицы. Затем Ль вычитается из всех элементов столбца к, и это делается для всех столбцов, в результате чего получается новая матрица С' с с^ = cik — л“ — ль ^ ^ 0. Матрица С' называется редуцированной матрицей. Тогда остовным подграфом G' будет (n X п)-двудольный граф с дугами (хь Жь), соединяющими только те вершины xt и хк, для которых с\к = 0. Совершенное паросочетание графа G' будет соответствовать такому выбору нулевых элементов в матрице С', когда в каждой строке и каждом столбце выбрано ровно по одному нулевому элементу С'.
Построение альтернирующего дерева в этом получившемся остовном подграфе G* происходит с помощью следующей процедуры расстановки пометок в строках и столбцах матрицы С'. Начнем построение произвольного паросочетания в G', отмечая нулевые элементы в С' так, чтобы никакие два отмеченные нуля не находились в одном и том же столбце или строке. (Если мы отметили нуль в позиции (г, к'), то это означает, что ребро (х{, хк) входит в паросочетание, и наоборот.)
Найдем строку s без отмеченных элементов и сделаем пометку ра = 0. Если такой строки нет, то текущее паросочетание будет минимальным совершенным паросочетанием. (Вершина ха— если такая существует — соответствует теперь экспонированной вершине, выбранной в качестве корня альтернирующего дерева, a pi являются эквивалентами пометок, используемых для «хранения» этого дерева ).) Это надо понимать так: дерево рассматривается как некоторая древовидность с корнем, причем если дуга ^ха, Жр) входит в эту древовидность, то «хранится равенство» Рр = ха. Для корня дерева мы берем ра = 0. (См. разд. 2.2.1, гл. 7.) Начинаем с такой ситуации, когда есть пометка ра = 0 и когда все другие строки и столбцы не помечены.
Пометить каждый непомеченный столбец к, содержащий неотмеченный 0 в помеченной строке г, меткой р^ = i. Если существует несколько возможностей, взять любую.
Пометить каждую непомеченную строку i, содержащую отмеченный 0 в помеченном столбце к, меткой р, = к.
Повторять процесс расстановки пометок (в соответствии с правилами (i) и (И)). Эти две операции неявно строят в G' дерево, причем это дерево дается эквивалентами пометок. Стоит заметить, что все «внешние» вершины этого дерева соответствуют строкам из С', а все «внутренние»— столбцам. Применение операций (i) и (ii) продолжается до тех пор, пока не будет помечен столбец t без отмеченных элементов (скажем, меткой р^ или процесс расстановки пометок нельзя будет продолжать. В первом случае будет найдена аугментальная цепь t, pt, pt-, pt-, . . ., s, где t‘ = pt, t" = pv и т. д. Элементы 0 (нули) в позициях (i, pt), (pt, pt,), (pr, р^, ...,(-, s) матрицы С' попеременно отмечаются или нет для образования лучшего паросочетания. Пометки pt стираются, и процесс продолжается. Во втором случае обнаруживается венгерское дерево. Если Р и К* — множества всех помеченных, а I" и К” — всех непомеченных строк и столбцов соответственно, то находим
А = min [Cih],i£l+h£K—
(Заметим, что Cjk = с^ — л? — л^.)
Обновление. лг = л, + А для i£P, лк = лй— А для к^К*, £[& = <& — & для i С Г и к ^ К-, c’ik = с^ А для iU’^H К*, в остальных случаях с^ не изменяются. Операции (i) и (ii) теперь снова применяются к новой матрице С' и т. д.
132120128262211123625414011483532133626211337345478122211402164518243412484219391514162846163438334402224262051745313743132120128262211123625414011483532133626211337345478122211402164518243412484219391514162846163438334402224262051745313743123456781234567850-5-402-1350-5-402-131234567812345678810*1317801615052231254035400*143161842612.50*20712417420"’ 0[о.8025365100*|44161826739146235305[У-431529577427360*2731161441081110411351928300810*1317801615052231254035400*143161842612.50*20712417420"’ 0[о.8025365100*|44161826739146235305[У-431529577427360*2731161441081110411351928300я, 1я, 1tPitPi”i1”i18514861436851486143650-1002-13123456780*13134016150231213635400*16180221250*2021460*0412429100*401218267392352610*01529831360*3135201815140И392332348450-1002-13123456780*13134016150231213635400*16180221250*2021460*0412429100*401218267392352610*01529831360*3135201815140И39233234841234567812345678т Pi-Ркт Pi-Рк
13
21
20
12
8
26
22
11
12
36
25
41
40
11
4
8
35
32
13
36
26
21
13
37
34
54
7
8
12
22
11
40
21
6
45
18
24
34
12
48
42
19
39
15
14
16
28
46
16
34
38
3
34
40
22
24
26
20
5
17
45
31
37
43
13
21
20
12
8
26
22
11
12
36
25
41
40
11
4
8
35
32
13
36
26
21
13
37
34
54
7
8
12
22
11
40
21
6
45
18
24
34
12
48
42
19
39
15
14
16
28
46
16
34
38
3
34
40
22
24
26
20
5
17
45
31
37
43
12345678
12345678
5
0
-5
-4
0
2
-1
3
5
0
-5
-4
0
2
-1
3
12345678
12345678
8
1
0*
13
17
8
0
16
15
0
5
2
2
31
25
40
35
4
0
0*
14
3
16
18
4
26
12.
5
0*
20
7
12
4
17
42
0"
’ 0
[о.
8
0
25
3
6
5
10
0*
|44
16
18
26
7
39
14
6
23
5
30
5
[У-
43
15
29
5
7
7
4
27
36
0*
27
31
16
14
4
10
8
11
10
4
11
35
19
28
30
0
8
1
0*
13
17
8
0
16
15
0
5
2
2
31
25
40
35
4
0
0*
14
3
16
18
4
26
12.
5
0*
20
7
12
4
17
42
0"
’ 0
[о.
8
0
25
3
6
5
10
0*
|44
16
18
26
7
39
14
6
23
5
30
5
[У-
43
15
29
5
7
7
4
27
36
0*
27
31
16
14
4
10
8
11
10
4
11
35
19
28
30
0
я, 1
я, 1
t
Pi
t
Pi
”i1
”i1
8
5
14
8
6
14
3
6
8
5
14
8
6
14
3
6
5
0
-1
0
0
2
-1
3
1
2
3
4
5
6
7
8
0*
13
13
4
0
16
15
0
2
31
21
36
35
4
0
0*
16
18
0
22
12
5
0*
20
21
46
0*
0
4
12
4
29
10
0*
40
12
18
26
7
39
23
5
26
1
0*
0
15
29
8
31
36
0*
31
35
20
18
15
14
0
И
39
23
32
34
8
4
5
0
-1
0
0
2
-1
3
1
2
3
4
5
6
7
8
0*
13
13
4
0
16
15
0
2
31
21
36
35
4
0
0*
16
18
0
22
12
5
0*
20
21
46
0*
0
4
12
4
29
10
0*
40
12
18
26
7
39
23
5
26
1
0*
0
15
29
8
31
36
0*
31
35
20
18
15
14
0
И
39
23
32
34
8
4
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
т Pi
-Рк
т Pi
-Рк
4.2. Пример
Решим ЗН для полного двудольного графа G = К8181 где матрица С стоимостей (весов) такая:
Редуцированной матрицей С'будет (8х 8)-матрица, приведенная ниже, где векторы слева от матрицы и вверху — весовые векторы [лД и [лД соответственно.
8 ‘
4
4
6
4
Рк
Начнем со случайно выбранного паросочетания, т. е. случайно выберем некоторое множество нулей, никакие два элемента в котором не лежат в одной строке или столбце. Выбранные нули отмечены звездочкой. В строке 4 нет отмеченных элементов, и она получает пометку рстр 4 = 0. Следующие пометки располагаются В Таком ПОрЯДКе Рстолб 3 = ^> Рстр 3 = з, Рстолб 7 = 3, /?стр 2 7=7 = 7. Окончательные векторы пометок [рД и [рД показаны справа от матрицы С' и под ней.
Дальше помечать нечего. Теперь мы имеем Г = {2, 3, 4}, К* = {3, 7}, /" = {1, 5, 6, 7, 8} и К- = {1, 2, 4, 5, 6, 8}. После вычисления А, которое равно 1, и после изменения весов [лД и [лД получаем новую матрицу С' = [cih — лг — лД, изображенную ниже:
Расстановка пометок продолжается, так что рСТОлб «=4 и рстолб в = = 2. Так как столбец 8 не имеет отмеченных нулей, то найдена аугментальная цепь, показанная стрелками в вышеприведенной матрице. «Меняя» отмеченные и неотмеченные нули вдоль этой цепи, получаем новое, улучшенное, паросочетание.
При второй итерации пометки стираются и в качестве строки без отмеченных элементов выбирается строка 8, которая отметается как рстр 8 = 0. Больше пометок расставить нельзя, А оказы-
вается равным!, лстр8 заменяется на 6 и новая матрица С' дана ниже. (Заметим, что при второй итерации венгерское дерево является на самом деле единственной изолированной — в терминах текущего графа G' — вершиной, соответствующей строке 8.) Затем процесс расстановки пометок продолжается и получаются векторы [pfl и [phi, приведенные ниже.
Я,
50-1002-1350-1002-1344324432tPitPiОпять помечать больше нечего, А оказывается равным 4, веса (лг1 и [лк] изменяются и ниже дается новая матрица С' (см. стр. 411).
5
0
-1
0
0
2
-1
3
5
0
-1
0
0
2
-1
3
4
4
3
2
4
4
3
2
t
Pi
t
Pi
Продолжается процесс расстановки пометок, и эти пометки (с учетом порядка их расстановки) таковы: рСтолб 5 = Рстолб 7 = 4, Гетре — 5, Гетрз=7,Гетолбв=6. Так как столбец 6 не имеет отмеченных элементов и он помечен, то найдена аугментальная цепь, показанная стрелками в матрице С'. «Изменяя» вдоль этой цепи отмеченные и не отмеченные нули, получаем совершенное паросо- четание, являющееся поэтому паросочетанием с минимальной стоимостью (весом). Ребра этого паросочетания таковы: (1, 1), (2, 8), (3, 7), (4, 5), (5, 2), (6, 6), (7, 4) и (8, 3), а полная стоимость (вес) равна 76 (для проверки заметим, что У Л| + 2 ль = 76).
i к
5
0
0
0
0
2
0
3
12345678
841376143584137614350*317221023816133219470*5311512210*039253504372311210*12036135180*31401656132603524140*046141932012130392918350*317221023816133219470*5311512210*039253504372311210*12036135180*31401656132603524140*046141932012130392918351234567812345678Общая задача построения остовного подграфа с предписанными степенями
8
4
13
7
6
14
3
5
8
4
13
7
6
14
3
5
0*
3
17
22
10
23
8
16
13
32
19
47
0*
5
31
15
12
21
0*
0
39
25
35
0
4
37
23
1
12
1
0*
12
0
36
13
5
18
0*
31
40
16
5
6
13
26
0
35
24
14
0*
0
4
6
14
19
32
0
1
21
30
39
29
18
35
0*
3
17
22
10
23
8
16
13
32
19
47
0*
5
31
15
12
21
0*
0
39
25
35
0
4
37
23
1
12
1
0*
12
0
36
13
5
18
0*
31
40
16
5
6
13
26
0
35
24
14
0*
0
4
6
14
19
32
0
1
21
30
39
29
18
35
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
Для заданного графа G = (X, А), дугам которого приписаны тоимости, обитая задача была сформулирована во введении как адача нахождения остовного подграфа Gp, по отношению к кото- ому степени вершин хг равны заданным целым числам 6г и сум- а стоимостей ребер в Gp максимальна (или минимальна). Во вве- ении отмечалось, что ЗМП является частным случаем этой обгцей гдачи. Теперь мы покажем, что общая задача сама может быть ешена как ЗМП с использованием алгоритма из разд. 3.1.1.
Исходя из графа G, построим граф G. Если требуется, чтобы i было степенью вершины Xi в графе G, то в G будут сопоставлены ершине Xt bi вершин х), xf, . . ., х^1. Каждому ребру aj = (х^ ь) графа G будут соответствовать в G две дополнительные вершины ; и Sj, ребра (хТ, rj), а = 1, . . ., 5г, все со стоимостями у cih, ебра (з,; жь), 0 = 1, . . ., бй, со стоимостями у cih и ребро j, Sj) со стоимостью 0.
Теперь совершенно очевидно, что общая задача для графа G соответствует задаче о назначениях для графа G. Если ребро (г,, S;) лежит в паросочетании G. то это означает, что ребро (хг, хк^ не принадлежит графу Gp. Если два ребра (х^, г^ и (s;, х^). лежат в паросочетании графа G, то это означает, что ребро (.х^х^ принадлежит Gp. Существует взаимно однозначное соответствие между паросочетаниями в G и остовными подграфами с допустимыми степенями в графе G. Но так как число вершин в G намного больше п, вышеприведенное преобразование графа G в G с вычислительной точки зрения неэффективно. На самом деле не обязательно строить явно граф G и, возможно [13], так модифицировать алгоритм из разд. 3.1.1, что он будет оперировать непосредственно с первоначальным графом G, но все будет относиться к графу G.
Транспортная задача
Общая задача для двудольного графа G = (Ха U Хь, Л) широко известна как транспортная задача (ТЗ) [8, 16, 18, 25, 4, 21] и является обобщением ЗН, обсуждавшейся в разд. 4. Транспортная задача получила свое название из-за следующей ее интерпретации. Имеется N источников (пунктов снабжения) и М стоков (пунктов потребления). Производительность ь-го источника снабжения равна с^, потребление ft-го стока равно pfc, причем
NМ
5i=lk=l
Требуется найти такую схему транспортировки груза от источников к стокам, которая имеет минимальную стоимость, если стоимость транспортировки единицы груза от i-ro источника к ft-му стоку равна cik.
Если аг и pft — целые числа, то ТЗ можно также рассматривать как общую задачу о паросочетании в двудольном графе и сначала построить граф G, как было объяснено ранее, а затем решить для этого графа ЗН. При альтернативном подходе ТЗ можно рассматривать как задачу о потоке в сети, точно так же, как это делалось для ЗН в разд. 4.
Ввиду практической важности ТЗ мы дадим матричную форму венгерского алгоритма для этой задачи. Этот алгоритм очень похож на алгоритм из разд. 4.1.2 для ЗН и приводится здесь без дальнейших пояснений.
Венгерский алгоритм для ТЗ
Присвоение начальных значений
Шаг 1. Начиная с матрицы стоимостей С, построить редуциро- 1анную матрицу С'.
Нахождение аугментальной цепи
Шаг 2. Пометить строку $, для которой as =# 0, пометкой 's = 0. Если таких строк нет, перейти к шагу 9.
Шаг 3. Пометить каждый непомеченный столбец к, содержа- щй 0 в помеченной строке I (т. е. имеющей с\к = 0), пометкой h = L Если существует несколько возможностей, выбрать любую.
Шаг 4. Пометить каждую непомеченную строку i, содержа- (ую отмеченный элемент в помеченном столбце к, пометкой к.
Шаг 5. Повторять шаги 3 и 4 до тех пор, пока либо не будет омечен столбец t с р£ ^ 0, в случае чего перейти к шагу 6, либо альнейшая расстановка пометок невозможна, в случае чего ерейти к шагу 8.
Л угментация
Шаг 6. Найти аугментальную цепь Р между s и t и взять в каче- ве е минимальное из следующих чисел: min[as, pf] и min [c]k],
(г, h) в Ри отмечен
Шаг 7. Попеременно прибавлять 4-8 и — 8 (именно в таком »рядке) ко всем элементам (i, к) в альтернирующей цепи Р. гметить те элементы, к которым е прибавлялось, и удалить метки у всех элементов, значение которых после вычитания стало равным нулю.
Уменьшить as и р£ на е. Удалить все пометки и вернуться шагу 2.
Изменение матрицы
Шаг 8. Вычислить А = min [с^]; положить^ = с'гй —
h^K-
А, если г ^Р и к^ К” и с\к = с^ 4~ Д» если 1£1~ик£ К+; оставить без изменения в остальных случаях. Сохранить пометки вернуться к шагу 3.
Шаг 9. Найдено оптимальное решение. Грузы транспорти- ются только по отмеченным ребрам и, если элемент (г, к^ отме- т, с\к дает величину груза, транспортируемого по ребру ^х^
а; и р^ и пометки будут такими:а; и р^ и пометки будут такими:
а; и р^ и пометки будут такими:
а; и р^ и пометки будут такими:
Следует заметить, что в вышеприведенном алгоритме матрица С' служит двум целям. Неотмеченные элементы дают предварительные стоимости. (Некоторые из этих элементов могут быть нулями.) Все же отмеченные элементы имеют нулевые стоимости, но места, где они расположены, используются на самом деле для хранения величин грузов, транспортируемых по соответствующим ребрам. Это избавляет от необходимости использования отдельной матрицы для хранения транспортируемых величин.
Пример
Решим ТЗ с нижеприводимой матрицей стоимостей, где векторы, расположенные слева от матрицы и над ней, дают величины предложения ос, и спроса 0к соответственно источников и стоков. (Векторы весов [л,1 и [л^] здесь не нужны.)
546546
5
4
6
5
4
6
Вышеприведенная матрица редуцируется к следующей:
Вычисленное А равно 1, а новая матрица С' такова:
«/2 ОО«/2 ОО
«/
2 О
О
«/
2 О
О
А
23352
12345
51
42
63
53456
26532
64344
После нескольких применений шагов 2, 3, 6 и 7 с непосредственг венным обнаружением аугментальной цепи матрица С', векторы
Пометки делаются в следующем порядке: Рстолб з = Ретолп 4 = — 1, РстРз = 3 (или 4), рстр2 = 4, рстопб5 = 2, после чего помечен столбец 5 с р5 = 2 и найдена аугментальная цепь (показанная выше). Вычисленное е равно 2, и после шага 7 матрица такова:
а.О ООа.О ООД О О О О ОД О О О О О
а.
О О
О
а.
О О
О
Д О О О О О
Д О О О О О
На шаге 2 алгоритм заканчивает свою работу, так как все аг = 0 и решение в вышеприведенной матрице показано отмеченными элементами. Для этой ТЗ минимальная стоимость равна 3 X 3 + 2 х 5 + 2 X 2 + 2 х 2 + 3 X 3+3 х 4 = 48.
Задача о покрытии
Задача о покрытии наименьшей мощности (ЗПНМ) была сформулирована во введении, и она состоит в нахождении такого множества Е ребер графа G = (X, А), что число ребер в Е минимально и каждая вершина из G является концевой вершиной по крайней мере одного ребра из Е. Теперь, основываясь на следующей теореме, мы покажем, что ЗПНМ и ЗНПС эквивалентны.
Теорема 6. Если Е* — наименьшее покрытие и если для каждой вершины xt со степенью di* > 1 удалить все ребра, инцидентные Xi, за исключением одного, то оставшееся множество ребер М* будет наибольшим паросочетанием.
Доказательство. Так как в вышеприведенной конструкции <Z^* :^ 1, то никакие два ребра в М* не будут смежными и М* является паросочетанием. Поэтому достаточно показать, что М* — наибольшее паросочетание. Допустим, что | М* | не максимально. Тогда по теореме 1 существует некоторая аугментальная цепь из какой-нибудь экспонированной вершины xt (т. е. вершины с d“* = 0) к другой экспонированной вершине xh. Так как d™* = = dT = 0, то отсюда вытекает, что по крайней мере одно ребро, ведущее от Xi к другой вершине (+= х^, можно удалить, и то же относится к вершине xh. Пусть одно из удаленных ребер, инцидентных х,, будет аг, а одно из удаленных ребер, инцидентных хк, будет а2. Пусть Р — аугментальная цепь (с 2р + 1 ребрами) от Xi к xh. Если теперь удалить из Е* ребра из М*, принадлежащие цепи Р, и два ребра а1 и а^, то оставшееся множество (скажем, Е) все еще будет покрытием, так как каждая вершина из Р будет концевой для некоторого ребра из множества Е*. Но Е получено удалением из Е* р + 2 ребер и добавлением р + 1 ребер; следовательно, | Е | < | Е* |. Это противоречит предположению о том, что Е* — наименьшее покрытие. Значит, М*, построенное в соответствии с теоремой, является наибольшим паросочетанием.
Следующая теорема аналогична теореме 6 и точно так же доказывается [30].
Теорема 7. Если М* — наибольшее паросочетание графа G и для каждой экспонированной вершины xt добавить ребро,
ннцидентное х,, то получившееся множество ребер Е* будет наименьшим покрытием графа G.
Общая ЗПО, когда каждому ребру приписана некоторая стои- <ость, здесь обсуждаться не будет. Она может быть решена с по- тощью алгоритма, очень похожего на алгоритм для ЗМП. Подроб- гый алгоритм для ЗПО дал Уайт [30].
Задачи
Найти наибольшее паросочетание графа, изображенного ia рис. 12.26. Построить затем наименьшее покрытие этого графа.
Найти максимальное паросочетание графа, изображенного а рис. 12.27, где числа у ребер являются стоимостями (весами).
Показать, что в двудольном графе G = (Х° U Хь, А) овершенное паросочетание существует тогда и только тогда, огда для каждого Sc X, | 5 |^ | Г (S) |. (Этот результат звестен как теорема Кёнига и Холла [5].)
Для графа, изображенного на рис. 12.28, найти какой-либо стовный подграф Gp, степени вершин которого задаются векто- ом [6J = [1, 2, 1, 2, 3, 1, 3, 2].
7 И Кристофидес
Рис. 12.28.
Показать, что в матрице, имеющей несколько нулевых и несколько ненулевых элементов, минимальное число линий (т. е. строк и столбцов), содержащих все нули, равно максимальному числу нулей, расположенных в разных строках и разных столбцах. (Этот результат известен как теорема Кёнига.)
Найти решение ЗН с минимальной стоимостью, где матрица С равна
123456
17
8
12
9
14
6
15
13
18
15
10
4
14
16
8
12
5
9
18
7
14
9
11
13
•7
16
11
14
6
10
18
9
13
5
15
7
Определим минимаксную ЗН как задачу нахождения такого назначения с матрицей С, чтобы максимальная стоимость элемента этого назначения была минимальной. Решить минимаксную ЗН для матрицы С из задачи 6.
Решить нижеприведенную транспортную задачу, где (4 X X 5)-матрица является матрицей стоимостей С, вектор-столбец является вектором снабжения (предложений), а вектор-строка — вектором спроса (потребностей).
34276
17
18
12
9
14
15
13
18
15
10
14
16
8
12
5
18
7
14
9
11
(Замечание. Свести задачу к эквивалентной задаче, в которой сумма потребностей равна сумме предложений.)
Рассмотрим транспортную задачу с матрицей стоимостей С, приведенной ниже, и векторами снабжения и потребностей
[а,]1 = [10,15,20]
М1 = [5,12,13,15]
1
2
3
4
1
25
10
2
30
С = 2
5
15
20
10
3
100
65
0
2
Оптимальное решение этой задачи дается перевозками, показанными в верхних левых углах следующей матрицы:
27-
Стоимость этого решения равна 241, а величина транспортируемых грузов равна 45 единицам. Рассмотрим новую задачу с той же самой матрицей стоимостей, но с векторами снабжения и потребностей
[аг]2 = [Ю, 15, 21], [рк]2 = [6, 12, 13, 15].
Оптимальное решение дается перевозками, показанными в нижних правых углах вышеприведенной матрицы Ц,^]. Стоимость этого решения равна 239, а величина транспортируемых грузов — 46 единицам.
Объяснить, почему для данной матрицы стоимостей можно транспортировать большую величину грузов при меньшей полной стоимости, и особенно обратить внимание на то, что дуги, вдоль которых производится перевозка, остаются прежними (см. [28]).
Список литературы
Balinski М. L. (1965), Integer programming; Methods, uses, computations, Man. Set., 12, p. 253.
Balinski M. L. (1969), Labelling to obtain a maximum matching, Combinatorial Math, and its Appl., Bose and Dowling, Eds., Univ, of North Carolina Press, p. 585.
Balinski M. L. (1970), On maximum matching, minimum covering and their connections, Proc. Princeton Symp.on Math. Programming, Kahn, Ed., Princeton Univ. Press, p. 303.
Balinski M. L., Gomory R. E. (1964), A primal method for the assignment and transportation problems, Man. Set., 10, p. 578.
Берж К. (1962), Теория графов и ее применения, ИЛ, М.
Bourgeois F., Lassalle J. С. (1971), Algorithm 415 — Algorithm for the assignment problem, Comm, of ACM, 14, p. 805.
Bourgeois F., Lassalle J. C. (1971), An extension of the Munkres algorithm for the assignment problem to rectangular matrices, Comm, of ACM, 14, p. 802.
Dantzig G. B. (1963), Linear programming and extensions, Princeton Univ. Press, Princeton, New Jersey.
Desler J. F. Hakimi S. L. (1969), A graph-theoretic approach to a class of integer programming problems, Ops. Res., 17, p. 1017.
Edmonds J. (1965), Paths, trees and flowers, Canadian Math. J., 17, p. 449.
Edmonds J. (1965), Maximum matching and a polyhedron with 0-1 vertices, J. of Res., Nat. Bur. of Stand., 69B, p. 125.
Edmonds J. (1967), An introduction to matching, Summer seminar on mathematics of the decision sciences, Stanford University.
Edmonds J., Johnson E. L. (1970), Matching: A well solved class of integer linear programs, Proc. Calgary Inti. Conf, on Combinatorial Structures and their Appl., Gordon and Breach, New York, p. 89.
Edmonds J. (1962), Covers and packings in a family of sets, Bull. Amer. Math. Soc., 68, p. 494. •
Egervary E. (1953), On combinatorial properties of matrices, translated by H. W. Kuhn, Office of Naval Research Logistics Project Report, Dept. Math., Princeton University.
Форд Л., Фалкерсон Д. (1966), Потоки в сетях, «Мир», М.
Garfinkel R. S., Nemhauser G. L. (1972), Integer Programming, Wiley, New York.
Glover F. (1967), Maximum matching in a convex bipartite graph, Nau. Res. Log. Quart., 14, p. 313.
Gordon В. E. (1971), The maximum matching problem — A comparison of the Edmonds and Balinski algorithms, Graduate School of Management, University of Rochester.
Ivanescu P. L., Rudeanu S. (1968), A pseudo-boolean approach to matching problems in graphs with applications to assignment and transportation problems, Theorie des Graphes, Dunod, Paris.
Klein M. (1967), A primal method for minimal cost flows with applications to the assignment and transportation problems, Man. Sci., 14, p. 205.
Konig D. (1950), Theorie der endlichen und unendlichen Graphen, Chelsea, New York.
Kuhn H. W. (1955), The Hungarian method for the assignment problem, Nav. Res. Log. Quart., 2, p. 83.
Kuhn H. W. (1956), Variants of the Hungarian method for the assignment problem, Nav. Res. Log. Quart., 3, p. 253.
Morrison D. R. (1969), Matching algorithms, J. of Combinatorial Theory,
p. 20.
Munkres J. (1957), Algorithms for the assignment and transportation problems, J. of SIAM (Appi. Math.), 5, p. 32.
Norman R. Z., Rabin M. 0. (1959), An algorithm for a minimum cover of a graph, Proc., Amer. Math. Soc., 10, 315.
Szwarc W. (1970), The transportation paradox, Report 199, Carnegie — Mellon University, Pittsburg, Pennsylvania.
Thacker B. G. (1972), Matchings in weighted graphs, M. Sc. Thesis, Imperial College, London University.
White L. J. (1967), A parametric study of matchings and covering in weighted graphs, Ph. D. Tnesis, University of Michigan.
Witzgall C., Zahn С. T., Jr. (1965), Modification of Edmonds’ maximum matching algorithm, J. of Res. Nat. Rur. of Stands, 69B, p. 91.
Yaspan A. (1966), On finding a maximal assignment, Ops. Res., 14, p. 646.
Приложение 1
МЕТОДЫ ПОИСКА,ИСПОЛЬЗУЮЩИЕ ДЕРЕВО РЕШЕНИЙ
L Принцип поиска, использующий дерево решений
Основной принцип, на котором базируются методы поиска с деревом решений, состоит в разбиении начальной задачи Ро на некоторое число подзадач Р17 Р^ . . ., Рк (в целом представляющих всю задачу PQ) с последующей попыткой разрешить каждую из этих подзадач. Выражение разрешить мы понимаем так:
либо (i) найти оптимальное решение,
либо (ii) показать, что значение оптимального решения хуже, чем для полученного до этого наилучшего решения,
либо (iii) показать, что подзадача не является допустимой.
Это разбиение описывается деревом на рис. П.1, причем вершины изображают подзадачи.
Смысл разбиения задачи Ро на некоторое число подзадач состоит в том, что или эти подзадачи проще разрешить, или они имеют меньший размер, или обладают структурой, не присущей первоначальной задаче Ро. Но, вообще говоря, все еще может оказаться, что подзадачу Р( нельзя разрешить, и эта подзадача сама разбивается на новые подзадачи Рк, Pi21 . . ., Pir1 как это показано на рис. П.2. Это разбиение (называемое также ветвлением^ повторяется для каждой подзадачи, которая не может быть разрешена.
На любом этапе полное множество подзадач, требующих разрешения, представляется множеством концевых вершин (т. е. вершин степени 1) всех цепей, исходящих из корня дерева решений. (Корень этого дерева изображает начальную задачу Ро.^ Эти вершины называются висячими вершинами, и на рис. П.2 это Рр • • -7 Р 1-1л Pili •■•’ Pirf Pi+it • • '1 Ph*
Если поиск исчерпан, то очевидно, что множество подзадач, на которые разбита задача, должно представлять всю задачу. Таким образом, если задача Pt разбита на г подзадач Piv . . . - . ., Ptr1 то
№JU№M(П.1)
где {Р} обозначает множество всех допустимых решений задачи Р.
Так как соотношение (П.1) должно быть применено к каждому разбиению, то
{Ро} = U {^ (Л | Р (/) — висячая вершина дерева}. (П.2)
В случаях когда требуется перебрать все решения задачи Ро (а не только найти оптимальное решение), желательно уметь
Рис. П.1. Разбиение задачи Ро на подзадачи.Рис. П.1. Разбиение задачи Ро на подзадачи.Рис. П.2. Дерево после ветвления в вершине Р^.Рис. П.2. Дерево после ветвления в вершине Р^.
Рис. П.1. Разбиение задачи Ро на подзадачи.
Рис. П.1. Разбиение задачи Ро на подзадачи.
Рис. П.2. Дерево после ветвления в вершине Р^.
Рис. П.2. Дерево после ветвления в вершине Р^.
перебирать решения с помощью вышеприведенного разбиения задачи на подзадачи и перебирать решения каждой из этих подзадач. В этом случае нужно избежать дублирования построенных решений, т. е. нужно разбивать задачу Рг на подзадачи Ph, • • Рir так, чтобы
№5}П{Лд}=0 (п.3)
для любых двух подзадач Рц и Piq, для которых s=^= q.
Соотношение (П.З) определяет собственное разбиение задачи Pi- Хотя условие (П.З) не является необходимым для полноценного поиска с деревом решений, оно тем не менее имеет большие выгоды с вычислительной точки зрения, так как
для задачи оптимизации Ро оптимальное решение является решением одной и только одной подзадачи, представляемой висячей вершиной;
для задачи полного перебора объединение множеств решений подзадач, представляемых висячими вершинами, дает множество всех решений задачи Ро без дублирования.
Некоторые примеры ветвления
Рассмотрим задачу Pt с п переменными, в которой некоторая переменная £ может принимать только четыре возможных значения, скажем, 6, с и d.
Возможно разбиение Р^ на четыре подзадачи Piv Р^ Pi3 и Pi41 причем для подзадачи Р^г мы полагаем £ = а, для Р1й полагаем £ = 6, для Pia — £ = с и для Ри — = d. Каждая
из подзадач Рг^ . . ., Pt4 содержит п — 1 переменных и, следовательно, допускает более простое решение, чем задача Pt (рис. П.З (а)).
Возможно другое разбиение Pt на две подзадачи Р^ и Р^, где для Ргг мы полагаем £ = а, а для Pia полагаем £ #= а, т. е. £ равно 6, с или d (рис. П.З (б)).
Еще одно возможное разбиение Рг на две подзадачи Р^ и Р^ где для РгД = а или 6, а для РгД = с или d (рис. П.З (в)).
Все три ветвления являются допустимыми и удовлетворяют условию (П.З). Какому из них отдать предпочтение — зависит от природы решаемой задачи, причем возможности типа (а) или (б) используются чаще остальных.
Типы поиска, использующего дерево решений
Из вышесказанного видно, что любая подзадача, представляемая висячей вершиной и не поддающаяся разрешению, может быть в любой момент разбита на меньшие подзадачи. Но существует только два основных типа поиска в зависимости от того, как выбирается следующая висячая вершина для продолжения процесса ветвления.
3.L Поиск по глубине
При этом типе поиска ветвление осуществляется в последней полученной подзадаче до тех пор, пока не будет порождена подзадача, которую можно разрешить. В этом месте делается шаг возвращения, т. е. берется предпоследняя порожденная подзадача и ветвление продолжается в соответствующей вершине. При этом типе поиска задачи, получаемые на каждом этапе, хранятся в стеке вместе с самой верхней задачей, выбранной для исследования (разрешения] или разбиения). Вновь получаемые задачи помещаются в верх этого стека, а когда подзадача разрешена, она уда-
Рис. П.4а. Дерево поискаРпс. П.46. Дерево поиска
по глубине.по ширине.
• Задача решена.
ляется от стека. Вид дерева решений при этом типе поиска, когда разрешается первая подзадача, показан на рис. П.4а, где порядок приоритета исследования получаемых подзадач показан нумерацией.
Поиск по ширине
При поиске по ширине ветвление происходит от уровня к уровню, так что если на уровне 1 начальная задача Ро разбивается на подзадачи Pv Р^ . . . , Рк1 то каждая из этих подзадач исследуется раньше, чем задачи уровня 2. Задачи уровня 1, которые не могут быть разрешены, разбиваются на подзадачи уровня 2, и опять все они исследуются до исследования какой-либо подзадачи, могущей возникнуть на уровне 3, и т. д. Вид дерева решений при этом типе поиска показан на рис. П.46.
Применение границ
Если задача Ро подлежит решению как задача оптимизации, то безотносительно к типу поиска этот поиск завершается только- тогда, когда будут разрешены все подзадачи, представляемые висячими вершинами. Для ускорения процесса разрешения для каждой из висячих вершин вычисляются нижние или верхние границы (для случаев минимизации или максимизации соответственно). Эти границы дают наименьшее (или наибольшее) возможное значение оптимального решения той подзадачи, которая
соответствует рассматриваемой висячей вершине. Таким образом (для задачи минимизации), если окажется, что нижняя граница для вершины, соответствующей задаче 7Д, больше, чем величина наилучшего ответа, полученного ранее при поиске, то в Pt нет необходимости производить дальнейшее ветвление, так как в {PJ нет решения, лучшего, чем текущий наилучший ответ. В соответствии с толкованием (II) термина «разрешение задачи» из разд. 1 подзадача Р^ окажется автоматически разрешенной.
Функции ветвления
Как при поиске по глубине, так и при поиске по ширине выбор очередной вершины для ветвления не был полностью определен.
При поиске по глубине, когда после ветвления задача Pt разбивается на подзадачи Рц, . . ., Pir, очередное ветвление, как уже говорилось, производится в одной из этих только что порожденных подзадач. Но мы не указали, в какой именно, и любая из них может рассматриваться как «последняя порожденная». При поиске по ширине, как уже было сказано, все подзадачи данного уровня должны исследоваться до исследования задач следующего уровня, но не был указан порядок их исследования.
Функция ветвления — это функция, которая позволяет «вычислить», какая из допустимых вершин должна использоваться при следующем ветвлении. Для вершины, соответствующей подзадаче Pj, эта функция является некоторой мерой вероятности того, что оптимальное решение всей задачи Ро является решением для Pj. Совершенно очевидно, что вершина, соответствующая подзадаче с большими шансами на оптимальное решение, должна пользоваться правом преимущественного выбора при очередном ветвлении. Можно указать несколько эвристических мер этой вероятности, причем одна из полезных мер связана просто с вычислением для вершин нижних или верхних границ. Для такой меры вершина с более низкой нижней границей (для случая минимизации) считается имеющей большую вероятность.
После введения понятия функции ветвления сразу же возникает мысль о другом типе поиска с деревом решений (в дополнение к описанным ранее поискам по глубине и ширине). Можно использовать функцию ветвления и так, чтобы она полностью определяла выбор следующей для ветвления вершины. Например, если значениями функции ветвления являются границы вершин (нижние и верхние), как упоминалось выше, то всегда можно производить ветвление в той висячей вершине, нижняя граница которой наименьшая. Этот тип поиска является, вообще говоря, гибридом поисков по глубине и ширине, хотя в литературе он часто называется поиском по ширине.
Предметный указатель
Активный цикл см. Маршрут замкнутый активный
Алгоритм «беспорядка» [out-of-kilt»] 339 — венгерский 405 для задачи о назначениях 405—407 транспортной задачи 413 — двойственный решения задачи о потоке минимальной стоимости 351 — 353
— Дейкстры решения задачи о кратчайшем пути между двумя заданными вершинами s и t с неотрицательной матрицей весов 174—183
— Краскала построения кратчайшего остова графа 160—162
— направленного древовидного поиска для задачи о р-медиане 138
поиска для задачи о р-медиане 139— 144
— нахождения абсолютного р-центра 114, 115
— основной для задачи о потоке минимальной стоимости 339—342
— поиска, использующего дерево решений для задачи о коммивояжере 285—295 — приближенный для задачи о р-медиане 139 — 141
— Прима построения кратчайшего остова графа 162—163
— расстановки пометок в задаче о максимальном потоке 314—315
— решения задачи китайского почтальона 331, 332
о К кратчайших путях между двумя заданными вершинами 195, 196 кратчайшем пути между двумя заданными вершинами s и t с общей матрицей весов 183—189
назначения 405
матричная форма 406, 407
наибольшем паросочетании
(ЗНПС) 381—383
наименьшем покрытии (ЗНП), использующий дерево поиска 55
покрытии наименьшей мощности (ЗНПМ) 416
разбиении (ЗНР) 55
потоке между каждой парой вершин 331—334
раскраске и использованием дерева поиска 88—90
— Робертса и Флореса порождения гамильтонова цикла 249—253
— Флери построения эйлерова цикла 230
— Флойда решения задачи о кратчайшем пути между всеми парами вершин 189— 190
— Хакими нахождения абсолютного центра 104, 105
модифицированный 107—110
— штрафования вершин для задачи коммивояжера 285—295
Алгоритмы приближенные решения задачи о раскраске 90—91
Антибаза [contrabasis] 38
База [basis] 37—40
— сильная [power] 39
Булевское (логическое) выражение 64
Вершина [vertex] И
— внешняя [outer] 374 — 378
— внутренняя [inner] 374 — 375
— конечная [final! 11
— концевая [terminal] И
— начальная [initial] 11
Вершина несущественная, избыточная [inessential] 33
— пропускная способность 326
— существенная, неотъемлемая [essential] 33
— экспонированная [exposed] 371
Внешне устойчивое множество см. Доминирующее множество вершин
Внутреннее произведение вершин 245
Выбор места для склада 129
— проекта 45
Гипотеза четырех красок 79
Граф [graph] II
— антисимметрический 20
— взвешенный 15
— двудольный [bipartite] 21, 405, 412
неориентированный 21
ориентированный 21
— дополнение 46
— инкрементальный [incremental] 321, 339, 350, 352, 360
— Куратовского 23
— Муна-Мозера 70
— неориентированный [nondirected] И
двойник 11
— непланарный [nonplanar] 23
— несвязный [disconnected] 23
— односторонне связный или односторонний [unilateral! 23
— ориентированный [directed] И
— остовов [tree graph] 157
— планарный [planar] 22, 79
— полный [complete] 19
антисимметрический 20
симметрический 20
— реберный [line] 237
—• редуцированный [reduced! 254
— г-хроматический [г-chromatic! 75
— сильно связный или сильный [strong! 23
— симметрический [simmetric] 20
— слабо связный или слабый [weak! 23
— со взвешенными вершинами [vertex- weighted] 15
дугами [arc-weighted] 15
— транзитивный [transitive] 33
— унитарный [unitary] 323
Густота см. Кликовое число
Дерево [tree] 145 —172
— альтернирующее 374
— аугментальное [augmenting] 375
— венгерское 380 — 382
— ориентированное [directed] 145—147, 240
— остовное [spanning tree] (см. Остов) 145 — 224
длиннейшее 163
процедура порождения 149—157
расщепление [division] 153
— решения для поиска [search tree] 422— 427
ветвление 422, 424
границы 426
для поиска по глубине 425
ширине 425
висячая вершина 423
разбиение 424
функции ветвления 426—427
— сращивание [merging] 153
— цветущее [blossomed] 376
— Штейнера наикратчайшее 167—169
— элементарное преобразование 149
Диаметр графа 11, 125
Доминирующее множество вершин 40, 40
минимальное [minimal] 50
наименьшее [minimum] 50
Достижимое множество 29
Достижимость [reachability] 23
Дуга [аге] И
— вес [weight] (длина [length], стоимость или цена [cost] 15, 201
— надежность [reliability] 201
— нижняя граница потока через 310
— обратная 313, 356
— поток, входящий в 354
— ■— выходящий из 354
— пропускная способность 202, 282, 313
— прямая 313, 356
Задача государственного районирования [political districting] 65
— об остовном графе с предписанными степенями [degree-constrained partial graph problem] 368, 411—414
— китайского почтальона 231—237
— нахождения допустимого потока минимальной стоимости 310
— о доставке молока или почты [delivery of post] 231
Кёнигсбергских мостах 228
коммивояжере 242—309
минимаксная 244
—минисуммная 244
нижняя границаиз задачи о кратчайшем остове 266, 279
назначениях 265, 297—303
К кратчайших путях между двумя заданными вершинами 195
— ■— кратчайшем пути между заданными вершинами з и t 175—189
с неотрица
тельной матрицей весов 177—183
К ферзях на шахматной доске 70
максимальном паросочетании (ЗМП) 368—371
потоке (от s к t) 310—325
минимальном покрытии (ЗНПО) 369
многопродуктовом потоке [multicommodity] 311, 325
назначениях (ЗН) [assignment problem] 284, 404—411
— — наибольшем паросочетании (ЗНПС) 370, 375
наименьшем покрытии 43, 53—68
вычисление нижней границы 60
приложения 63—68
упрощение 54
— — покрытии наименьшей мощности (ЗПНМ) [minimum cardinality covering problem! 370, 416
— — потоке минимальной стоимости от а к t 310, 339
потоках с выигрышами 311, 353—364
— — раскраске 375
решение методом динамического программирования 80—84
— 0-1 программирования 84—
46
сведение к ЗИП 86—88
— — распределении ресурсов 94
— размещения минимаксная 98, 127
минисуммная 98, 127
— сетевого планирования [network planning] 65*
— синхронизации линии сборки [assembly line balancing] 65
— теории расписаний 94
— транспортная (ТЗ) 371, 412—416
Задача Штейнера 166—169
евклидова 167
линейная 169
на графах 166, 167
Информационный поиск [retrieval information) 63
Исследование структуры организации 39
Источник [source] 310
Клика графа [clique] 46
Клиновое число [clique number] 43
Компонента графа односторонняя 24 сильная 24, 33—36 слабая 24
Компрессия [compression] матрицы 297
Константа «проникновения» [penetration) 114
Контрадостижимое множество [reaching set] 30
Контур см. Орцепь замкнутая простая 17 — гамильтонов 17, 157, 237, 242—309 алгебраический метод нахождения 245—249
— независимый [independent] 218
Корень [root] дерева 374
— ориентированного дерева 146
замена 193
Коцикломатическое число 218
Кратные центры [multiple centres] 111
Кратчайшее дерево Штейнера 166—167
Кратчайший остов графа [shortest spanning tree] 158—161
Критический путь [critical path] 197—200
Х-оптимальность 140—141
Максимальный полный подграф см. Клика 46
Маршрут [chain! 4
— аугментальный [augmenting] 356
инкрементальная пропускная способность [incremental capacity] 356
— выигрыш 356
— замкнутый [cycle] 17
активный [active cycle] 358—364
Маршруты полетов самолетов 64
Матрица достижимостей [reachability matrix] 29, 30, 31
— инциденций [incidence matrix] 26, 148, 155, 170, 226, 239, 379
— контрадостижимостей [reaching] 30, 31
— ограниченных достижимостей 33
— редуцированная 406
— смежности [adjacency matrix) 25
модифицированная 245
Медиана [median] 98, 127—143
— абсолютная 130
— внешняя 128
— внешне-внутренняя 129
— внутренняя 128
— кратная см. р-медиана 129
Метод критического пути (МКП) Icritical path method] 197
Наименьшее доминирующее множество ребер см. Наименьшее покрытие
Независимое множество вершин [independent vertex set] 44
максимальное [maximal] 44—48, 80, 86, 87
наибольшее [maximum] 45, 65 ребер [independent link set] 66 наибольшее 66
Область 114
Обход лабиринта 240
Эрцепь см. Цепь ориентированная 14
— замкнутая 17
простая [elementary circuit! 17
Эстов [spanning tree] 145, 224
— число 148
Отображение [mapping] 11
Паросочетание [matching] 66, 368—420
— максимальное [maximal] 389
— наибольшее [maximum] 66, 368
— совершенное [perfect] 389
Передаточное число [transmission number] 127—128
внешнее [out] 128
внутреннее [in] 128
ПЕРТ 197
Петля [loop] 16
Плотность см. Клиновое число
Подграф [partial subgraph] 19
— максимальный [maximal subgraph! 23, 24
— остовный [partial graph! 18
— порожденный [subgraph] 18
Покрытие [covering] 66, 67, 369
— минимальное [minimal] 369
— наименьшее [minimum! 66, 67
Полустепень захода [indegree] 18
— исхода [outdegree] 18
Пометка предшествования 153
изменение 153
Поток [flow] 310
— аугментальная цепь [flow-augmenting chain] 313
— в графах с выигрышами 356
в вершинах 364
многими источниками и стоками 325
пропускными способностями
дуг и вершин 326
— допустимый [feasible flow) 310, 353—358
максимальный 354
оптимально-максимальный 354
оптимальный 354
— конформальный [conformal! 325
Потоковая эквивалентность 330
Проверка электрических, телефонных или
железнодорожных линий 231
Псевдовершина [pseudovertex] 375
Пустое множество 11
Путь [path] 13
— вес, длина или стоимость [length] 15
— длина или мощность [cardinality] 16
— замкнутый [path! 16
элементарный 17
— кратчайший 173, 189—193
— надежность 201, 202
— ответвление [deviation] 195
— пропускная способность 202
— самый длинный 198
— с наибольшей приведенной пропускной способностью 206—211
р-кратный внешний центр [p-outcentre] 112
— внутренний центр [p-incentre] 112
р-медиана 129
— абсолютная 130
— внешняя 130
— внутренняя 130
— обобщенная 132, 139
р-центр (кратный центр) 41, 111, 112
— абсолютный 112, ИЗ
нахождение ИЗ—123
Радиус 101
— абсолютный внешний 103
внутренний 101
— внешне-внутренний 102
— внешний 101
Радиус внутренний 101
Разделение [separation] 99—101
— внешнее [out] 100
— внутреннее [in] 100
Размещение [location] 98
— аварийных служб и пунктов обслуживания 101—102, 106, 107
— нескольких центров обслуживания 112 — центров 51. 52, 98—125 Разрез [cut-set! 221—225, 312, 313 — величина 312
— для ориентированного графа 223, 224
— правильный [proper] 222, 223
— фундаментальный 224, 225
матрица 225, 226, 239
Раскраска [colouring] 75—96
— оптимальная независимая 80, 84
Ребро [link! И
— искусственное 232
г-подграф 80
— максимальный 80—84
Смежные дуги 14
— вершины 14
Соответствие 11
— обратное 13
Специальный остовный подграф [equally partial] 391
Степень вершины [degree] 18
/г-шаговая 91
Строгое пересечение (SI) [strict intersection! 117—118
Сток [sink! 310 (s-t)-paape3 202-206
Теорема Кёнига 418
и Холла 417
— о максимальном потоке и минимальном разрезе 312, 313
пяти красках 79
Точка Штейнера 168, 169
Транзитивное замыкание графа 33
Турнир [tournament] 21
Хроматическое число [chromatic number] 75
—верхняя оценка 78
нижняя оценка 77, 78
Цветок [blossom] 375—379
— крайний [outermost] 375
— срезание [shrinking] 375—379
Центр графа 98-103
Цепь альтернирующая [alternating path] 371
— аугментальная [augmenting path] 372, 372
— ориентированная (орцепь) [simple path] 14
— простая [elementary path] 14
— эйлерова см. Эйлеров цикл
Цикл гамильтонов 17, 242—309
— ориентированный (орцикл) 17
матрица 225, 239
мультицепной метод нахождения 253—259
сравнение методов поиска 259—262
— фундаментальный 220, 221
— эйлеров 227—240
Цикломатическое число [cyclomatic number] 217, 218
Число Бетти см. Цикломатическое число — внешнего разделения 100 — внутреннего разделения 100 — доминирования 43
— независимости [independence number! 43, 44
Оглавление
Предисловие редактора перевода 5
Предисловие 7
Глава 1. Введение 11
Графы. Определение И
Пути и маршруты 13
Петли, ориентированныециклы и циклы 16
Степени вершины 18
Подграфы 18
Типы графов 19
Сильно связные графыикомпоненты графа 23
Матричные представления 25
Задачи 27
Список литературы 28
Глава 2.Достижимость и связность 29
Введение 29
Матрица достижимостей и контра достижимостей 29
Нахождение сильных компонент 33
Базы 37
Задачи, связанные с ограниченной достижимостью . . . .40
Задачи 41
Список литературы 42
Глава 3.Независимые и доминирующие множества.
Задача о покрывающих множествах 43
Введение 43
Независимые множества 44
Доминирующие множества 50
Задача о наименьшем покрытии 53
Приложения задачи о покрытии 63
Задачи 68
Список литературы 71
Глава 4. Раскраски 75
Введение 75
Некоторые теоремы и оценки, относящиеся к хроматическим числам 76
Точные алгоритмы раскраски 79
Приближенные алгоритмы раскрашивания 90
Обобщения и приложения 92
Задачи 94
Список литературы 97
Глава 5. Размещение центров 98
Введение'98
Разделения 99
Центр и радиус 101
Абсолютный центр 102
Алгоритмы нахождения абсолютных центров 104
Кратные центры (р-центры) 111
Абсолютные р-центры ., 112
Алгоритм нахождения абсолютных р-центров 114
Задачи 123
Список литературы 126
Глава 6. Размещение медиан в графе 127
Введение 127
Медиана графа 127
Кратные медианы (р-медианы) графа 129
Обобщенная р-медиана графа 132
Методы решения задачи о р-медиане 133
Задачи 141
Список литературы 143
Глава 7. Деревья 145
Введение 145
Построение всех остовных деревьевграфа 148
Кратчайший остов (SST) графа 158
Задача Штейнера 166
Задачи 168
Список литературы 172
Глава 8. Кратчайшие пути 175
Введение 175
Кратчайший путь между двумя заданными вершинами s и f 177
Кратчайшие пути между всеми парамивершин 189
Обнаружение циклов отрицательноговеса 191
Нахождение К кратчайших путей между двумя заданными вершинами 198
Кратчайший путь между двумя заданными вершинами . в ориентированном ациклическом графе 197
Задачи, близкие к задаче о кратчайшемпути 201
Задачи 211
. Список литературы 214
Глава 9. Циклы, разрезы и задача Эйлера 217
Введение 217
Цикломатическое число и фундаментальные циклы . . .217
. Разрезы 221
Матрицы циклов и разрезов 225
Эйлеровы циклы и задача китайскогопочтальона . . . .227
Задачи 239
Список литературы 241
Глава 10. Гамильтоновы циклы, цепи и задача коммивояжера . . . .242
Введение 242
ЧАСТЬ I
Гамильтоновы циклы в графе 245
Сравнение методов поиска гамильтоновыхциклов . . . .259
Простая задача планирования 262
ЧАСТЬ II
Задача коммивояжера 265
Задача коммивояжера и задачаократчайшем остове . . .268
Задача коммивояжера и задачаоназначениях 284
Задачи 304
Список литературы 307
Приложение 308
Глава 11. Потоки в сетях 310
Введение 310
Основная задача о максимальном потоке (от ж 1) ....311
Простые варианты задачи о максимальном потоке (от s кt)325
Максимальный поток между каждой парой вершин . ..329
Поток минимальной стоимости от s к t 339
Потокивграфахс выигрышами 353
Задачи 364
Список литературы 367
Глава 12. Паросочетания, транспортная задача и задача о назначениях 368
Введение 368
Наибольшие паросочетания 371
Максимальные паросочетания 389
Задача о назначениях 404
Общая задача построения остовного подграфа с предписанными степенями 411
Задача о покрытии 416
Задачи 417
Список литературы 420
Приложение 1. Методы поиска, использующие дерево решений . . .422
Принцип поиска, использующий дерево решений . . . .422
Некоторые примеры ветвления 424
Типы поиска, использующегодерево решений 424
Применение границ 426
Функции ветвления 426
Предметный указатель 427
Н. Кристофидес
ТЕОРИЯ ГРАФОВ
АЛГОРИТМИЧЕСКИЙ ПОДХОД
Редактор А. Бряндинская. Младший научи, редактор Л. Суркова
Художник О. Камаев. Художественный редактор В. Шаповалов
Технический редактор Н. Иовлева. Корректор А. Рыбальченко
ИБ № 1030
Сдано в набор 24.5.78.
Подписано к печати 2.11.78.
•Формат 60x901/16- Бумага типографская № 1.
Обыкновенная гарнитура. Высокая печать.
13,5 бум. л. Усл. печ. л. 27. Уч.-изд. л. 24,40 Изд. Ki 1/9745. Тираж 14.000 акз. Зак. 0774. Цена 2 р. 10 к. Издательство «Мир»
Москва, 1-й Рижский пер., 2
Ордена Трудового Красного Знамени Московская типография № 7
Искра революции» Союэполиграфпрома при Государственном комитете СССР по делам
издательств, полиграфии и книжной торговли. Москва, К-1, Трехпрудный пер., 9
1) В оригинале используется термин «простой маршрут».— Прим. ред.
1 Или, в другой терминологии, «вес».— Прим. ред.
1) Часто применяют сокращение — д.н.ф.— Прим. ред.
*) В отечественной литературе применяется также термин «задача календарного планирования».— Прим* ред.
УДК 519.15
В книге впервые в мировой литературе достаточно полно представлены разнообразные алгоритмы, связанные с нахождением структурных и числовых характеристик объектов из теории графов. В частности, подробно рассматриваются различные алгоритмы поиска решения в задаче коммивояжера. Кроме того, книга содержит большой фактический материал по исследованию потоков в сетях. Многочисленные примеры иллюстрируют работу конкретных алгоритмов. Приводятся оценки сложности соответствующих процедур. Разнообразная тематика и строгое представление алгоритмов сочетаются с доходчивостью изложения.
Книга будет интересна широкому кругу специалистов, сталкивающихся с теорией графов и ее приложениями. Она доступна студентам университетов и втузов соответствующих -специальностей.
Редакция, литературы, по математическим наукам
Copyright © 1975 by
Academic Press Inc. (London)Ltd.
КК20204-024041 (01)-7820204-024041 (01)-78Second printing 1977
К
К
20204-024
041 (01)-78
20204-024
041 (01)-78
© Перевод на русский язык, «Мир», 1978