Text
                    М. О. Асанов, В. А. Баранский, В. В. Расин
ДИСКРЕТНАЯ
МАТЕМАТИКА:
ГРАФЫ, МАТРОИДЫ,
АЛГОРИТМЫ
Рекомендовано в качестве учебного пособия
Научно-методическим советом по
математике и механике УМО
по классическому университетскому
образованию для математических
специальностей и направлений
R&C
T)<jtta*iaci, Москва • Ижевск
2001


УДК 512 Интернет-магазин . ^ «физика • математика • биология http://shop.rcd.ru «техника Внимание! Новые проекты издательства РХД • Электронная библиотека на компакт-дисках http://shop.rcd.ru/cdbooks • Эксклюзивные книги — специально для Вас любая книга может быть отпечатана в одном экземпляре http://shop.rcd.ru/exclusive Асанов М.О., Баранский В. А., Расин В. В. Дискретная математика: графы, матроиды, алгоритмы. — Ижевск: ННЦ «Регулярная и хаотическая динамика», 2001, 288 стр. Изложен ряд основных разделов теории графов и матроидов. Рассмот- Рассмотрены алгоритмы дискретной оптимизации на сетях и графах, наиболее часто используемые программистами. Для студентов и аспирантов, специализиру- специализирующихся в области компьютерных наук, для практикующих программистов, для всех желающих изучить основы современной дискретной компьютерной математики. ISBN 5-93972-076-5 © Асанов М.О., Баранский В. А., Расин В. В., 2001 © НИЦ «Регулярная и хаотическая динамика», 2001 http://rcd.ru
Предисловие Основой для данного учебного пособия послужили лекции, которые читались авторами для студентов математико-механического факульте- факультета Уральского государственного университета им. А. М. Горького, обуча- обучающихся по специальностям «Математика, прикладная математика», «Ма- «Математика, компьютерные науки» и «Компьютерная безопасность». В книге излагается ряд разделов теории графов и приводятся алгорит- алгоритмы дискретной оптимизации на графах и сетях. Материал, посвященный теории графов, содержит достаточно обширное введение в теорию мат- роидов. Матроиды, в частности, составляют теоретическую основу для изучения и анализа алгоритмов, иснользующих «жадную» стратегию. По- Понимание же природы и областей применимости жадных алгоритмов без- безусловно необходимо каждому специалисту по компьютерной математике и ее нриложениям. Теория графов за последние десятилетия развилась в весьма обшир- обширную ветвь математики, имеющую многочисленные нриложения в самых разнообразных сферах человеческой деятельности. В настоящее время практически невозможно в одном учебном пособии отразить все разде- разделы теории графов. Подбор тем, поднятых в книге, во многом определен вкусами авторов. Нам хотелось представить основное, устоявшееся ядро современной теории графов и сопутствующее ему семейство алгоритмов дискретной оптимизации, наиболее часто иснользуемых нрограммиста- ми. Мы стремились привести главные достижения, не останавливаясь на мелочах и не углубляясь в детальный обзор результатов по обсуж- обсуждаемым темам. Мы стремились также привести самые лакопичные и изящные доказательства из известных нам. Часть доказательств была существенно переработана нами и некоторые из пих стали относитель- относительно далеки от своих прототипов. Наша цель была сделать доказательства более прозрачными и не содержащими загадок для читателей. Мы советуем читателям при первом чтении книги пропустить гла- главу 4, посвящепную матроидам. Читатели же, интересующиеся в основ- основном алгоритмами, могут нриступить к чтению главы 7 и последующих глав сразу после главы 1, возвращаясь по мере необходимости к нред- шествующим главам. В качестве основной литературы отметим книги [3], [5], [22], [27], [44], [47], [50], [53]. Для удобства читателям приводится достаточно полный список литературы по рассматриваемому предмету, содержащий книги, которые были опубликованы на русском языке. Мы обращаем внимание читателя на фундаментальные книги [57]-[61], русских переводов кото- которых, к сожалению, не имеется.
4 Предисловие Нами используется терминология, наиболее распрострапенная в ма- математической литературе как за рубежом, так и в России. Теоремы и предложения нумеруются в книге двумя числами: первое — номер гла- главы, а второе — порядковый номер утверждения данного типа в указаппой главе. Аналогично пумеруются и алгоритмы. Заметим, что при формализованной записи алгоритмов мы старались не использовать обозначений на кириллице. В этом мы следовали сложив- сложившейся российской математической традиции написания формул с помо- помощью латинского, греческого и других иноязычных алфавитов. Компьютерная верстка книги выполнепа В. В. Расиным с использова- использованием пакета Latex 2.9. Мы выражаем нашу благодарпость Е. Г. Третьяковой, которая выпол- выполнила компьютерную верстку части рисунков. Уральский госуниверситет, М. О. Асанов г. Екатеринбург В. А. Баранский июль, 2001 В.В.Расин
1. Основные понятия теории графов 1.1. Основные определения Пусть V — непустое конечное множество. Через V® обозначим мно- множество всех двухэлементных подмножеств из V. Обыкновенным графом G называется пара множеств (У, Е), где Е — произвольное нодмножество из V^. Элементы множеств V и Е называют соответственно вершинами и ребрами графа G. Множества вершин и ребер графа G будем обозначать также через VG и EG. Обыкновенные графы удобно представлять в виде диаграмм, на кото- которых вершинам соответствуют выделенные точки, а ребрам — ненрерыв- ные кривые, соединяющие эти точки. На рис. 1 изображены диаграммы трех обыкновенных графов. Рис. 1 Часто приходится рассматривать объекты более общего вида, чем обыкновенные графы (см. рис. 2). Такие объекты в дальнейшем будут называться графами. На рис. 2 а) изображен граф, в котором сущест- существуют пары вершин, соединенные более чем одним ребром. Различные ребра, соединяющие две данные вершины, называются кратными. Граф, изображенный на рис. 2 6), содержит ребра, соединяющие вершину саму с собой. Такие ребра называют петлями. Рис. 2
6 1. Основные понятия теории графов Более точно, графом называют тройку (V, Е, if), где V, Е - конечные множества, V ф 0 и <р - отображение из Е в V^ U V. Если <р(е) = {и, г;}, где « / в, то говорят, что ребро е соединяет вершины и, v. В этом случае будем писать е = ми. Если <р(е) — и, то ребро е называют петлей в вершине и. В этом случае будем также писать е = ии и говорить, что е соединяет вершину и саму с собой. Записывая произвольный граф, мы часто будем опускать ip и пред- представлять граф в виде G = (V, Е). Граф, по существу, есть набор из двух множеств произвольной приро- природы — пепустого множества вершин и множества ребер, нричем каждому ребру соответствуют две концевые вершины, которые, вообще говоря, могут и совпадать (в этом случае ребро является петлей). Отметим, что обыкновенный граф — это граф без петель и кратных ребер. Граф G, имеющий п вершин, часто называют п-графом; если, кроме того, G содержит т ребер, то G — (п, т)-граф. Если е = uv — некоторое ребро данного графа, то вершины и, v называются смежными; говорят также, что и, v — концевые вершины ребра е. Ребро е и вершина v инцидентны, если v — концевая верши- вершина для е. Ребра ей/ называются смежными, если они имеют общую концевую вершину. Пусть Gi = (Vi, Ei), G2 = (V2, Е2) — два графа. Биективное отобра- отображение ф : V\ —>¦ V2 называется изоморфизмом G\ на G2, если для любых и, v ? V\ число ребер, соединяющих вершины и и v в G\, равно числу ре- ребер, соединяющих ф(и) и ф(и) в G<2 (разумеется, при и — v число петель в вершине и равно числу петель в вершине ф{и)). Отметим, что в случае обыкновенных графов изоморфизм — это биек- ция, сохраняющая отношение смежности; ипыми словами, изоморфизм ф характеризуется свойством: произвольные вершины и, v смежны в гра- графе G\ тогда и только тогда, когда вершины ф(и), ф(ъ) смежны в графе G2- Графы Gi и G2 изоморфны (Gi = G2), если существует изоморфизм Gi на G2. Па рис. 3 приведены диаграммы двух изоморфных графов. Дейст- Действительно, отображение ф, определенное правилом ф(щ) — »;, A < г < 6), очевидно, является изоморфизмом. Отношение «быть изоморфными» на множестве всех графов, очевидно, является отношением эквивалентности. Таким образом, множество всех графов разбивается па классы попарно изоморфных графов. Заметим, что диаграмма задает граф с точностью до изоморфизма. Степенью вершины v называется число ребер, инцидентных этой вер- вершине, причем каждая петля учитывается дважды. Степень вершины v обозначается через degG« или просто через degt>. Ясно, что в обыкно-
1.1. Основные определения Mi Щ G2 венном графе степень вершины v равна количеству вершин, смежных с v. Окружением N(v) вершины v называется множество всех вершин, смежных с v. Если degv=0, то вершина v называется изолированной, а если &egv=\, то — висячей. Ребро е, инцидентное висячей вершине, также называют висячим. Лемма 1 (о рукопожатиях). Пусть G - произвольный граф. Тогда vevG Доказательство. При нодсчете суммы стененей нроизвольное ребро е = uw внесет свой вклад, равный единице, как в degM, так и в degw, причем петля будет учитываться дважды. ? Следствие. Произвольный граф содержит четное число вершин не- нечетной степени. Доказательство. Пусть Vq и \\ — соответственно множества вер- вершин четной и нечетной стенени. Тогда degv = 2\EG\. vEVo vEVi Ясно, что первое слагаемое четно. Поэтому второе слагаемое также чет- четно. Так как во второй сумме все слагаемые нечетны, их число четно. Следовательно, множество \\ содержит четное число вершин. ? Будем называть граф одноэлементным, если он имеет единственную вершину. Граф G пазывается нулевым или вполне несвязным, если мно- множество его ребер EG пусто. Нулевой n-граф будем обозначать через Оп. Диаграмма графа О± приведена на рис. 16). Яспо, что нулевой граф является обыкновенным графом.
8 1. Основные понятия теории графов Обыкновенный граф G называется полным графом, если любые его две различные вершины смежны. Для нолного n-графа применяется обо- обозначение Кп. На рис. 1 а) изображен полный граф К±. Очевидно, стенень каждой вершины в графе Кп равна п — 1. Поэтому из леммы о рукопо- п(п — 1) жатиях следует, что число ребер в Кп равно — -. Граф G называют двудольным, если множество VG можно разбить на два ненустых подмножества X и Y так, что любое ребро графа соединяет вершину из X с вершиной из Y. Множества X и Y — это доли двудольно- двудольного графа G. Если любые вершины х ? X и у ? Y смежны и двудольный граф является обыкновенным графом , то G называют полным двудоль- двудольным графом. Если \Х\ — р, \Y\ — q, то такой полный двудольный граф обозначают через Kp<q. Граф Н называется подграфом графа G, если VН С VG и ЕН С EG. В число подграфов графа G будем включать и пустой подграф 0. Если УН = VG, то нодграф Н называется остовным нодграфом. Редукция графа G — это такой его остовный нодграф Н, что Н является обыкно- обыкновенным графом с наибольшим возможным числом ребер. Пусть U — нодмножество из VG. Обозначим через D множество всех ребер е = uv ? EG таких, что и, v ? U. Граф G(U) = (U, D) называется подграфом, порожденным множеством вершин U. Аналогично определяется нодграф, норожденный заданным множест- множеством ребер. Пусть D С EG. Обозпачим через U множество всех вершин, являющихся концевыми для ребер из D. Тогда граф G{D) — ([/, D) называют подграфом, порожденным множеством ребер D. Пусть G — произвольный граф иЯ — его подграф. С каждой верши- вершиной -и и каждым ребром е можно связать нодграфы Н — v, Н — е и Н + е. Нодграф Н — v нолучается из подграфа Н удалением вершины v и всех инцидентных этой вершине ребер. Отметим, что если v не лежит в подграфе Н, то Н — v — Н. Нодграф Н — е нолучается из Н удалением ребра е. Здесь также Н — е = Н, если е не лежит в Н. Подграф Н + е получается из Н добавлением ребра е и двух его кон- концевых вершин. Если е лежит в Н, то Н + е — Н. Через Sub(G) будем обозначать множество всех нодграфов графа G. Определим отношение < на Sub(G), полагая Н\ < Н2 для подграфов Н\ и Hi графа G тогда и только тогда, когда Н\ является нодграфом в Hi, т.е. когда VH\ С УН^ и ЕН\ С ЕН^. Очевидно, отношение < есть частичный норядок на Sub(G). Будем говорить, что И\ содержится в Hi, если Н\ < Н2. Нусть Н\ и Hi — произвольные подграфы графа G.
1.2. Маршруты, связность, циклы и разрезы Определим объединение Hi U Я2 подграфов Н\ и Н2, полагая V(#i U Я2) = VHr U VH2 и ?(Я! U Я2) = ?Я! U ?Я2. Очевидно, Н\ U Я2 является точпой верхней границей для Hi и Я2 в Sub(G) относительно <. Определим пересечение Hi П Я2 подграфов Hi и Я2, полагая V(Hi П Я2) = УЯ! П VH2 и ?(Я! П Я2) = EHi П Очевидно, Hi П Я2 является точной нижней границей для Hi и Я2 в Sub(G) относительно <• Нетрудпо установить, что Sub(G) является дистрибутивной решеткой относительно < с указанными операциями U и П. Пусть Hi, Н2, ..., Ht — подграфы графа G, и выполнено условие Щ П Hj = 0, если г ф j и г, j = 1, 2, ..., t. Тогда Hi U Я2 U ... U Ht называется дизъюнктным объединением и обозначается через Hi О Я2 0 ... О Ht. 1.2. Маршруты, связность, циклы и разрезы Маршрутом в графе G называется чередующаяся последовательность вершин и ребер v0, eu vi, ..., vt-i, et, vt, в которой ej = Vi-iVi A < i < t). Такой маршрут кратко называют (v0, vt)-маршрутом и говорят, что он соединяет »о с »j; в свою очередь вершины Vq, Vt — это концевые вершины указанного маршрута. Часто маршрут изображают в виде ei e2 et Щ > Vi > . . . > Vt. Отметим, что стрелки здесь указывают лишь порядок следования вер- вершин в маршруте. Длиной маршрута называют количество содержащихся в нем ребер. Случай, когда длина маршрута равна нулю, не исключается; в этом слу- случае маршрут сводится к одной вершине. Заметим, что в обыкновенном графе маршрут полностью определяет- определяется последовательностью vq, vi, ..., vt своих вершин. Если vq = vt, то [vq, -у4)-маршрут называется замкнутым. В произвольном маршруте любое ребро и любая вершина, разумеет- разумеется, могут повторяться. Накладывая ограничения на число новторений вершин или ребер, мы приходим к следующим частным видам маршру- маршрутов.
10 1. Основные понятия теории графов Цепь — это маршрут без повторяющихся ребер. Цепь называется про- простой цепью, если в ней нет новторяющихся вершин кроме, быть может, совпадающих концевых вершин. Замкнутая простая цепь называется циклом. Заметим, что цикл полпостью определяется множеством своих ребер, поэтому часто под циклом мы будем нонимать соответствующее ему множество ребер. Петля дает цикл длины 1, пара кратных ребер об- образует цикл длины 2. Циклы длины 3 называют обычно треугольниками. Лемма 1. Если для некоторых вершин и, v в графе существует (и, v)-Mapuipym, то существует и простая (и, и)-цепь. Доказательство. Рассмотрим в графе (и, г>)-маршрут наименьшей длины. Покажем, что этот маршрут является простой цепью. Если в пем имеется повторяющаяся вершина w, то, замепяя часть маршрута от первого вхождения вершины w до ее второго вхождения на одну верши- вершину w, мы получим более короткий (и, и)-маршрут. ? Граф G называется связным, если для любых двух различных вер- шип и, v существует (м, г>)-маршрут. Оказывается, произвольный граф можно нолучить как объединение связных графов. С этой целью на множестве вершин VG графа G опре- определим отношение связности ~, полагая и ~ v <=> существует (м, г>)-маршрут. Легко видеть, что это отношение является отношением эквивалентнос- эквивалентности. Обозначим через Vi, Vi, • • •, V* классы этого отпошепия. Пусть d — G(Vi) — подграф, порожденный множеством вершин Vi (I < i < k). Графы G\, G2, •••, Gft пазываются компонентами связности графа G. Ясно, что каждая компонента связности является связпым нодграфом. Очевидно, каждый связный нодграф графа G является подграфом неко- некоторой его компоненты связности. Поэтому множество компонент связ- пости — это мпожество всех максимальных связпых подграфов дапного графа, и любое ребро принадлежит некоторой компоненте связности. Таким образом, справедлива Теорема 1.1. Каждый граф является дизъюнктным объединением своих компонент связности. В дальнейшем граф, имеющий п вершин, т ребер и к компонент связ- связности, будем называть (п, то, к)-графом. Разрезающим множеством ребер графа называется множество ребер, удалепие которого из графа приводит к увеличепию числа компопепт
1.2. Маршруты, связность, циклы и разрезы 11 связности. Минимальное по включению разрезающее множество ребер графа называется его разрезом. Мост графа — это ребро, составляющее одноэлементный разрез. Иными словами, нри удалении моста число ком- нонент связности возрастает. На рис. 4 ноказаны примеры разрезов в графах, причем на рис. 4 6) ноказан мост. а) Ь) Рис. 4 Лемма 2. При удалении из графа моста число компонент связности увеличивается точно на единицу. Доказательство. Пусть из графа удаляется мост е = uv. В графе G — е вершины и и v нельзя соединить простой ценью, иначе сохранит- сохранится отношение связности и, следовательно, сохранится число компонент связности. Таким образом, вершины «и» лежат в разных компонентах связности графа G — е. Пусть х - произвольная вершина графа G, для которой существует простая (ж, г>)-цепь (в силу леммы 1 это в точности те вершины, которые лежат в той же комноненте связности графа G, что и вершина v). Если в этой нростой цепи не встречается ребро е, то вершины х и v лежат в одной комноненте связности графа G — е. Если в такой простой цени встречается ребро е, то цепь обязательно имеет вид Поэтому вершины ж и и лежат в одной компоненте связности графа G — е. Итак, при удалении моста е точно одна компонента связности гра- графа G, а именно, компонента, содержащая и, распадается на две компо- компоненты связности графа G — е. ? Лемма 3. При удалении из графа ребер его разреза число компонент связности увеличивается точно на единицу. Доказательство. Пусть из графа G удаляется разрез {ei, е2, ..., et}. Можно считать, что t > 1. После удаления множества ребер
12 1. Основные понятия теории графов {ei, ег, ..., e(_i} число компонент связности сохраняется и ребро et ста- становится мостом. Дальнейшее удаление ребра et в силу леммы 2 приводит к увеличению числа компонент связности ровно на единицу. ? Для произвольного ребра графа G есть две возможности: либо е со- содержится в некотором цикле графа, либо е не содержится ни в каком цикле графа. В первом случае ребро е называют циклическим ребром, а во втором — ациклическим. Выясним связь между ациклическими ребрами и мостами. Лемма 4. Ребро графа является мостом тогда и только тогда, когда оно не содержится ни в одном цикле. Доказательство. Пусть е — uv — мост. Если е содержится в неко- некотором цикле, то существует простая (и, г>)-цепь, не содержащая е. Сле- Следовательно, после удаления ребра е из графа отношение связности не изменится, что невозможпо. Обратно, пусть е = uv не является мостом. После удаления е из графа G вершины вин будут лежать в одной компоненте связности гра- графа G — е. В силу леммы 1 в графе G — е имеется простая (и, и)-цепь. Добавляя к этой цепи ребро е, получим цикл графа G, содержащий реб- ребро е. ? Из леммы 4 вытекает, что ациклические ребра — это в точности мос- мосты. Лемма 5. Пусть множество вершин связного граф G разбито на два непустых непересекающихся подмножества U и W. Тогда существует такое ребро е — uw, что и ? U и w ? W. Доказательство. Возьмем две вершины х ? U и у ? W. В силу связности графа G существует простая (ж, у)-цепь: Пусть Vi — последняя вершина цепи, лежащая в U. Тогда v, ф у и Vj+i ? W. Следовательно, ребро е,+1 = ViV{+i является искомым. ? Теорема 1.2. Пусть G — обыкновенный (п, т, к)-граф. Тогда вы- выполнено двойное неравенство (п - к)(п- к + 1) п — к < т < 2 Доказательство. Проверим сначала верхнюю оценку. Обозначим через G обыкновенный граф, имеющий п вершин, к компонент связности и наибольшее возможное число ребер т. Покажем, что ~ (п — к)(п — к + 1) т= — -.
1.2. Маршруты, связность, циклы и разрезы 13 Легко понять, что каждая компонента связности графа G является полпым графом. Поэтому ё=кП1пкП2п ... икПк. Можно считать, что п\ > щ > ... > П/.. Убедимся, что п2 = 1. Предположим, что п2 > 1. Пусть и — некото- некоторая вершина графа КП2. Удалим п2 — 1 ребер, инцидентных вершине м, а затем добавим п\ ребер, соединяющих вершину и с каждой вершипой графа КП1, т.е. перенесем вершину и из второй комноненты связности в первую. Поскольку п\ > п2 — 1, получим граф, имеющий п вершин, к компонент связности и больше чем m ребер. Это противоречит выбору графа G- Следовательно, п2 = 1. Тогда п2 = ¦.. = щ = 1, т. е. все ребра графа G содержатся в полном графе КП1 и щ = п — к + 1. Поэтому (n — к){п — к + 1) Обратимся теперь к нижней оценке. Для ее проверки применим ин- индукцию по числу ребер. Если т — 0, то п — к, и требуемое перавепство очевидно. Пусть т > 0. Предположим, что для всех графов с числом ре- ребер, меньшим чем т, оцепка имеет место. Рассмотрим (га, т, &)-граф G. Пусть G\ = G — е, где е - некоторое ребро графа G. Тогда G\ является (п, т — 1, &1)-графом, где к\ < к + 1 в силу леммы 2. Следовательно, т — 1 > п — ki > п — к — 1, т.е. т > п — к. ? Следствие 1. Пусть G — обыкновенный (п, т)-граф. Если (п-2)(п-1) т > — ^, то граф G связен. Доказательство. Пусть к — число компонент связности графа G. Если к > 2, то {п-к){п-к + 1) (га-2)(га-1) m " 2 " 2 ' что невозможно. Следовательно, к = 1, т.е. граф G связен. ? Следствие 2. Если G — произвольный (га, т, к)-граф, тот>п — к. Доказательство. Пусть обыкновенный (n, ni\, &)-граф G\ является редукцией графа G. Тогда т > т,\ > п — к. ?
14 1. Основные понятия теории графов 1.3. Ориентированные графы Пусть V, D — произвольные множества, причем V ф 0. Обозпачим через V2 декартов квадрат множества V. Ориентированным графом или, короче, орграфом G называется трой- тройка (V, D, if), где if — некоторое отображение множества D в множест- множество V2. Элемепты мпожеств V и D называются соответственно верши- вершинами и дугами орграфа G. Множества вершин и дуг орграфа G удобпо обозпачать через VG и DG соответственно. Если / — дуга, то <p(f) является упорядоченной парой (и, v), где и, v ? V. Дуга / выходит из вершины и и заходит в вершину и; в свою очередь и и v называются кон- концевыми вершинами дуги /; в дальнейшем будем писать / — ~п& (а иногда даже — / = uv, если нет опасности возникновения путаницы). При записи произвольного орграфа он, как правило, будет представ- представляться в виде G = (V, D). Орграфы нринято изображать нри помощи диаграмм, аналогичных диаграммам для графов. Разница состоит лишь в том, что линия, изоб- изображающая дугу, имеет паправление. С каждым орграфом G = (V, D) естественно связать граф Gq = (V, Е), называемый основанием данного орграфа. Для получения основания не- необходимо в орграфе G заменить каждую дугу / = Ш ребром е = uv. На рис. 5 изображены орграф и его основание. Рис. 5 Орграф G называется связным, если связным является его осповапие. Ориентированым маршрутом или, короче, ормаршрутом в орграфе G называется чередующаяся последовательность вершин и дуг Vq, /i, VU ..., Vt-!, ft, Vt, в которой fi = Vi-i^i A < i < t). Такой ормаршрут принято называть (vq, ^)-ормаршрутом; верши- вершины vq и Vt называются соответственно начальной и конечной вершинами такого ормаршрута. Если v0 = vt, то ормаршрут называют замкнутым. Количество дуг, составляющих ормаршрут, — это длина ормаршрута.
1.3. Ориентированные графы 15 Ормаршрут, не содержащий повторяющихся дуг, называют орцепью. Простая орцепъ — это орцепь без повторяющихся вершин (кроме, быть может, совпадающих начальной и конечпой вершин). Замкнутая простая орцепь называется орциклом или контуром. Нетрудно проверить, что существование (и, г>)-ормаршрута гаранти- гарантирует существование простой (и, г;)-орцепи. Говорят, что вершина v достижима из вершины и, если существу- существует (и, г>)-ормаршрут. Орграф G сильно связен или орсвяэен, если любая его вершина достижима из любой другой вершины. Очевидно, сильно связный орграф является связным; обратное утверждение, разумеется, не верно. Граф G называется ориентируемым, если он является основанием не- некоторого сильно связного орграфа. Теорема 1.3. Связный граф G ориентируем тогда и только тогда, когда каждое его ребро не является мостом. Доказательство. Пусть граф G является основанием орграфа Н и G содержит мост е. Тогда в Н имеется дуга / = vk, где и, v — концы ребра е. Очевидно, в Н нет (г>, и)-ормаршрутов. Следовательно, граф G не является ориентируемым. Обратно, пусть граф G не имеет мостов, т. е. каждое ребро графа G содержится в некотором цикле. Поскольку любой цикл является ориен- ориентируемым графом, в графе G существует максимальный ориентируемый подграф Н. Убедимся, что Н — G. Допустим, что это равенство не вы- выполнено. В силу связности графа G существует ребро е, инцидентное вершине и из Я и не лежащее в Н. По предположению ребро е лежит в некотором цикле С. Обозначим через Q множество ребер цикла, не нри- надлежащих нодграфу Н. Нетрудно понять, что, добавив к Н все ребра из множества Q, мы снова получим ориентируемый подграф в противо- противоречие с выбором Н. О Пусть G — произвольный орграф. Полустепенью исхода degv вер- вершины v называется число всех дуг, имеющих v в качестве начала. Ана- Аналогично, полустепень захода degv — это число всех дуг, для которых вершина v является концом. Орграф, содержащий п вершин и т дуг будем называть (п, т)- орграфом. Полустепени исхода и полустепени захода связаны следующим оче- очевидным образом. Лемма 1. Пусть G — произвольный (п, т)-орграф. Тогда
16 1. Основные понятия теории графов Это утверждение аналогично лемме 1 из разд. 1.1; его часто называют орлеммой о рукопожатиях. 1.4. Матрицы, ассоциированные с графом Пусть G — произвольный n-граф. Упорядочим множество вершин графа VG = {vi, v2, ..., vn}. Иными словами, занумеруем вершины графа числами от 1 до п. Граф, у которого множество вершин линейно упорядочено или, другими словами, занумеровано натуральными числами от 1 до п, где п — число вершин графа, называется помеченным графом. Определим матрицу смежности А — A(G) — («у)„х„ графа G, по- полагая ctij равным числу ребер, соединяющих вершины Vi и Vj, причем при i — j каждую петлю учитываем дважды. На рис. 6 нриведен нример графа с некоторой нумерацией вершин и указана соответствующая матрица смежности. Рис. 6 Очевидно, матрица смежности — это квадратная симметрическая п матрица. Сумма элементов i-й строки равна degu», т.е. X) aij = degu.;. Отметим, что для обыкновенных графов матрица смежности бинарна, т.е. состоит из нулей и единиц, причем ее главная диагональ целиком состоит из нулей. Для данного графа имеется, вообще говоря, несколько матриц смеж- смежности, отвечающих различным его упорядочениям. Очевидно, одна мат- матрица смежности графа получается из другой его матрицы смежности с помощью некоторой перестановки строк и точно такой же нерестановки столбцов. Пусть <т — произвольная подстановка на множестве {1, 2, ..., п}. Определим матрицу S(cr) — (<Jij)nxn, полагая ^ = Г 1, если <r(i) = j, lj \ 0, если <т(г) ф j.
1.4. Матрицы, ассоциированные с графом 17 Нетрудно проверить, что S(a^1) = S^1(a) и матрица получается из матрицы А с помощью перестановки строк и перестановки столбцов, отвечающих подстаповке а. Таким образом, две матрицы смежности графа G подобны. В силу этого корректно следующее определение. Характеристичес- Характеристическим многочленом графа G называется характеристический многочлен любой из его матриц смежности. Совокупность всех корней характе- характеристического многочлена, с учетом их кратности, называется спектром графа G. Далее, говоря о матрице смежности графа G, мы будем нреднолагать, что граф упорядочен каким-либо образом, хотя в явном виде это упоря- упорядочение не будем заранее указывать. Приведем теперь один пример утверждения, иллюстрирующего важ- важность матриц смежности. Теорема 1.4. Пусть А = {щ)пхп — матрица смежности графа G без петель и А1 — (jij)nXm г&е ^ ? N. Тогда у,^ равно числу (г>.;, Vj)-Mapui- рутов длины I. Доказательство. Утверждение очевидно при 1 = 1. Пусть I > 1 и утверждение верно для 1 — 1. Тогда А1'1 — (?у)„хп, где ?у равно числу (pi, г^)-маршрутов длины 1 — 1. Следовательно, п 7ч = Z sii равно числу [pi, ^-маршрутов длины I, так как каждый такой маршрут состоит из (vi, г>а)-маршрута длины 1-1 и ребра, ведущего из нредно- следней вершины v8 маршрута в его последнюю вершину Vj. ? Заметим, что доказанная теорема верна и для графов с нетлями, если считать, что каждая петля имеет два обхода (этим число маршрутов, нроходящих через дапную петлю, увеличивается в два раза). Поскольку матрица смежпости А графа G является вещественной симметрической матрицей, она ортогонально нодобна некоторой вещест- вещественной диагональной матрице D: А = T~XDT. Тогда, очевидно, А1 = T~xDlT. Данная формула нозволяет быстро вы- вычислять число («,;, г^)-маршрутов длины I для больших зпачений /, так
18 1. Основные понятия теории графов как при этом нужно лишь найти D1, обычным образом вычислить две матрицы Т, Т1 и два раза перемножить матрицы. Отметим, что глав- главная диагональ матрицы D совпадает со спектром графа G. Пусть теперь G — произвольный обыкновенный граф. Упорядочим множество его вершин VG = {«1, «2, ..., «„}. Определим матрицу Кирхгофа В = B{G) = (/%)nxn, полагая о ... о О deg v2 ... О B(G) = \ О О ... deg «„ где A{G) — матрица смежности графа G. Иными словами, {—1, если i ф j и Vi смежна с Vj, О, если i ф j и Vi не смежна с Vj, degw;, если i = j. Отметим, что обыкновенный граф G может иметь несколько различ- различных матриц Кирхгофа, отвечающих различным упорядочениям графа G, и все эти матрицы подобны между собой. Лемма 1. Алгебраические дополнения всех элементов матрицы Кир- Кирхгофа равны между собой. Доказательство. Обозпачим столбец A, 1, ..., 1)* длины п, состо- состоящий из единиц, через 1. Здесь, как обычно, через t мы обозначаем операцию транспонирования матриц. Для матрицы Кирхгофа В — (/Зу)„х„ выполняется п ¦ - — П D — 1 9 <п\ тр R.1 — П = 0 (j = l, 2, ..., п), т.е. 1*.В = 0. »=1 Отсюда следует, что detB = 0 и rank В < п — 1. Если rankS < п — 1, то все алгебраические дополнения элементов матрицы В равны 0. Пусть rank В = п — 1 и В — присоединенная к В
1.4. Матрицы, ассоциированные с графом 19 матрица, составленная из алгебраических дополнений Вц элемептов т.е. D D D /jio -О22 • • • n2 \ Bin B2n ... Bnn В силу свойств матрицы В получаем ВВ = ВВ = Так как ВВ = 0, любой столбец X матрицы В удовлетворяет системе ВХ = 0. Эта система линейных уравнений имеет ранг п — 1 и дефект 1. Так как 5-1 = 0, этой системе удовлетворяет столбец 1. Следовательно, столбцы матрицы В нронорциональны столбцу 1, откуда следует Ва = Ва = ... = Вгп (t = l, 2, ...,п). Аналогично получаем By = BV = ... = Bnj (j = 1, 2, ..., n). Следовательно, все элементы матрицы В одинаковы. П Пусть G — произвольный (п, т)-граф. Упорядочим множество вер- вершин и множество ребер графа VG={vi,v2,...,vn) и EG = {ei,e2,...,em}. Будем говорить, что наш граф является дважды помеченным. Определим теперь бинарную матрицу инцидентности I = I(G) = = {t-a)nxm графа G, нолагая 1) I- = 1 <$=?> вершина vi инцидентна ребру е,- и ej не является петлей; 2) щ — 0 во всех остальпых случаях. На рис. 7 приведен пример графа и его матрицы инцидентности. Здесь вершинам отвечают строки, а ребрам — столбцы. 0 110 0 0 10 11 0 0 111 Рис. 7
20 1. Основные понятия теории графов Заметим, что одна матрица инцидентности графа G получается из другой его матрицы инцидентности с помощью некоторой перестановки строк и некоторой перестановки столбцов. Рассмотрим теперь произвольный (п, то)-орграф G — (V, D). Упоря- Упорядочим множество вершип и множество дуг орграфа V = {«1, «2, ..., «„} И D = {fi, f2, ..., fm}. Определим матрицу инцидентности I = I(G) = (iy)nxm ографа G, полагая 1) ijj — 1, если ы — начало дуги fj и fj — не петля; 2) i-ij = —1, если Vi — конец дуги fj и fj — не нетля; 3) ijj = 0 во всех остальных случаях. На рис. 8 приведен пример орграфа и его матрицы инцидентности. Здесь вершинам отвечают строки, а дугам — столбцы. 2 /il ^ \ /01-100 h 0—1 0 1-1 < ^ , V 0 0 1-11 /з Рис. 8 Пусть G — произвольный граф. Превратим каждое его ребро в дугу, нридав ребру одно из двух возможных нанравлений. Полученный ор- орграф на том же самом множестве вершин будем называть ориентацией графа G. На рис. 8 приведен орграф, являющийся одной из ориентации графа, изображенного на рис. 7. Зафиксируем некоторый обыкновенный граф G и возьмем некоторую его ориептацию Н. Кроме того, зафиксируем в G и Н одинаковую нуме- нумерацию вершин и одинаковую нумерацию соответствующих ребер и дуг. Лемма 2. Пусть В — B(G) — матрица Кирхгофа обыкновенного гра- графа G и I = 1{Н) — соответствующая матрица инцидентности неко- некоторой его ориентации Н. Тогда В = I • Р. Доказательство. Если умпожить г-ю строку матрицы I на г-й стол- столбец матрицы /*, то получим сумму квадратов элементов г-й строки мат- матрицы I, которая равна, очевидно, deg^j. Пусть теперь г-я строка матри- матрицы I умпожается на j-й столбец матрицы Р. Если имеется дуга /., = v^Vj или дуга /g = Vjifi, то получим —1. Если такой дуги нет, то нолучим 0. ?
1.4. Матрицы, ассоциированные с графом 21 Заметим, что соотношения, указанные для обыкновенного графа в лемме 2, можно неренисать в виде -А. о ... о \ О deg V2 ¦ ¦ . О V О О ... degvn J Эта формула связывает матрицу смежности А обыкновенного графа с матрицей инцидентности / его ориентации.
2. Деревья 2.1. Леса, деревья, остовы Ациклический граф, т.е. граф без циклов, называется лесом. Дере- Дерево — это связный ациклический граф. Очевидно, лес не содержит петель и кратных ребер, т. е. лес является обыкновенным графом. Теорема 2.1. Для (п,т)-графа G следующие условия эквивалентны: 1) G — дерево; 2) G — связный граф и т = п — 1; 3) G — ациклический граф и т = п — 1; 4) G — граф, в котором любые две вершины соединены единственной простой цепью; 5) G — ациклический граф, и добавление нового ребра приводит к по- появлению точно одного простого цикла. Доказательство. 1) =>• 2). Индукцией но т нроверим, что в дереве вынолнепо равенство m = п — 1. Если т = О, то, очевидно, п = 1. Пусть т > 0 и для всех деревьев с меньшим чем т числом ребер требуемое равенство выполпено. Рассмотрим дерево Gem ребрами и выберем в нем произвольное ребро е. Очевидно, е — ациклическое ребро, поэтому граф G — е состоит из двух компонент связности Gi и G2, являющих- являющихся деревьями. Применяя к деревьям Gi, Gi предположение индукции, получаем, что в каждом из них число ребер на единицу меньше числа вершин. Отсюда сразу следует равенство т — п — 1. 2) =$¦ 3). Пусть граф G содержит циклическое ребро е. Ясно, что G — е является связным (n, m — 1)-графом. В силу следствия 2 из тео- теоремы 1.2 имеем т — 1 > п — 1, что невозможно. 3) =$¦ 4). Проверим сначала, что G — связный граф. Поскольку G ацикличен, его компоненты связности являются деревьями. Так как из 1) следует 2), в каждой компоненте связности число ребер на еди- единицу меньше числа вершин. Отсюда вытекает, что т = п — к, где к — число компонент связности. Учитывая, что m = п — 1, получаем к = 1. Предположим, что в G для двух вершин и, v существуют различные простые (ы, -у)-цепи /\ и Р2. Пусть Q — простая (и, ж)-цепь, являюща- являющаяся длиннейшим общим началом цепей Pi и Рг- Обозначим через у, z вершины, следующие за вершиной х в Pi и Р% соответственно. Очевид- Очевидно, что ребро / = xz не принадлежит цепи Р\. Отсюда следует, что подграф Р\ U Pi — / является связным графом. Поэтому / — не мост, следовательно, / принадлежит некоторому циклу, что невозможно. 4) =^- 5). Из условия следует, что в графе G пет циклов, в том числе и петель (если есть петля е = им, то имеется две простые (и, м)-цепи:
2.1. Леса, деревья, остовы 23 ими являются цепь из одной вершины и цепь и —^ и). Добавим к графу новое ребро g = vw, где v, w 6 VG. Тогда возникнет цикл, состоящий из простой (w, те)-цепи и ребра g. Едипственность такого цикла следует из единственности простой (v, ад)-цепи. 5) =>• 1). Из условия вытекает, что любые две вершины графа G соединены простой цепью, т.е. G — связпый граф. Используя ациклич- ацикличность графа G, заключаем, что G — дерево. ? Следствие 1. Неодноэлементное дерево имеет по крайней мере две висячие вершины Доказательство. Сумма степеней всех вершин дерева равна 2га — — 2п — 2. Отсюда следует, что дерево содержит не менее двух вершин степени 1. ? Лемма 1. Пусть G — произвольный (и, га, к)-граф. G является ле- лесом тогда и только тогда, когда т = п — к. Доказательство. Если G — лес, то в каждой его компоненте связ- связности число ребер на единицу меньше числа вершин. Отсюда немедленно вытекает равенство т = п — к. Если G — не лес, то, отбрасывая пе менее одного ребра, получим подграф графа G, являющийся (га, т\, &)-лесом. Тогда га > т\ = п — к в силу доказанного. ? Пусть G — связпый (га, га)-граф. Если G содержит хотя бы один цикл, то, удаляя из графа G некоторое ребро этого цикла, мы уменьшим число циклов по крайней мере на единицу, сохранив связность графа. Ясно, что последовательно разрушая циклы данного графа, можно прийти к остовному подграфу, являющемуся деревом. Такой подграф пазывается бстовным деревом связпого графа G. Поскольку дерево с п вершипами содержит п — 1 ребер, для получения остовного дерева из графа G нуж- нужно удалить т — п + 1 ребер. Если G — произвольный (п, т, &)-граф, то объединение остовных деревьев его компонент связности приводит к остовному лесу или остову графа G. Поскольку лес с п вершинами и к компонентами связности содержит п — к ребер, для получения остова из графа G нужно удалить т — п + к ребер. На рис. 9 показан граф G и один из его остовов Т. Рис. 9
24 2. Деревья Число r*(G) = т — п + к называется цикломатическим числом, а число r(G) = n — k —рангом (п, т, &)-графа G. Следующее утверждение показывает, что если r*{G) равно 0 или 1, то r*(G) совпадает с числом циклов графа G. Лемма 2. Пусть G — произвольный граф. Тогда 1) G ацикличен, если и только если r*(G) — 0; 2) G содержит единственный цикл, если и только если r*{G) — 1. Доказательство. Утверждение 1) вытекает из леммы 1. Проверим утверждение 2). Если ребро е содержится в единственном цикле графа G, то нодграф G — е является остовом. Отсюда (т — 1) — -п + к = 0, т.е. r*(G) = 1. Обратно, пусть Т — произвольный остов графа G. Равенство r*(G) = 1 означает, что разность между числами ребер графа G и его остова Т равна 1. Отсюда следует, G = Т + е для некоторого ребра е. Ребро е добавляется к некоторой компоненте связности остова Т, поэто- поэтому граф G = Т + е содержит единственный цикл. ? Лемма 3. Любой ациклический подграф графа G содержится в неко- некотором его остове. Доказательство. Достаточно рассмотреть случай, когда G — связ- связный n-граф. Пусть Н — ациклический подграф графа G. Обозначим через Hi максимальный ациклический подграф, содержащий Н. Ясно, что Н\ включает все вершины графа G. Проверим, что Hi связен. Пред- Предположим, что граф Hi несвязен. Обозначим через U множество вершин одной из компонент связности графа Hi, а через W — множество всех остальных вершин этого графа. В силу леммы 5 из разд. 1.2 существует ребро е, соединяющее вершины множеств U и W. Ребро е не образует цикла с ребрами нодграфа Щ, ноэтому подграф Hi + e ацикличен, что противоречит выбору Нг. Из связности и ацикличности подграфа Hi следует, что Hi — остов- ное дерево. ? Лемма 4. Пусть S иТ — остовы графа G. Для любого ребра е из S существует такое ребро f из Т, что подграф S — e + f является остовом. Доказательство. Как и выше, достаточно рассмотреть случай, ког- когда G — связный граф. Подграф S — е имеет две компоненты связности; обозначим через U и W множества вершин этих компонент. Поскольку остов Т является связным графом, существует ребро / из Т, соединяю- соединяющее вершины, одна из которых принадлежит U, а другая — W. Легко понять, что подграф S—e+f ацикличен и связен. Следовательно, S—e+f является остовом. ?
2.2. Блоки и точки сочленения 25 2.2. Блоки и точки сочленения Пусть G = (V, Е) — произвольный граф. Вершипа v называется точкой сочленения, если граф G — v имеет больше компонент связности, чем граф G. Связный граф называется неразделимым, если он не содержит точек сочленения. В связном графе очень полезно выделить максимальные нераздели- неразделимые подграфы. Это можно сделать подобпо тому, как в произвольном графе были выделены максимальпые связные подграфы (компоненты связности). Блоком графа G называется любой его максимальный неразделимый подграф. На рис. 10 а) показаны точки сочленения и, v некоторого связ- связного графа, а на рис. 10 6) приведены его блоки. а) Рис. 10 Очевидпо, любой неразделимый подграф графа содержится в некото- некотором его блоке. Поэтому любое ребро лежит в некотором блоке; то же самое относится и к произвольному циклу. Ясно, что любой блок связ- связного неодноэлементного графа сам неодпоэлементен. Лемма 1. Пусть v — произвольная вершина связного графа G. Тогда следующие условия эквивалентны: 1) v — точка сочленения; 2) существуют различные вершины и и w, не равные v, такие, что v принадлежит любой простой (и, w)-u,enu; 3) существует разбиение множества вершин графа G — v на два не- непустых подмножества U и W такое, что для любых и 6 U и w 6 W вершина v принадлежит любой простой (и, %и)-цепи. Доказательство. 1) ==>• 3). Так как v — точка сочленения, граф G — v не связен. В качестве U возьмем множество вершин одной компо- компоненты связности графа G—v, а в качестве W — множество его остальных
26 2. Деревья вершин. Тогда любые вершины и ? U и w ? W лежат в разных комно- нентах связности графа G — v. Отсюда очевидно следует, что любая простая (м, то)-цепь графа G проходит через v. 3) =>¦ 2). Очевидно. 2) ==>¦ 1). Ясно, что и и w лежат в разных компонентах связпости графа G — v, поэтому v — точка сочленепия. ? Лемма 2. Любые два различных блока связного графа G имеют не бо- более одной общей вершины. Доказательство. Предположим, что блоки В\ и В2 имеют более од- одной общей вершипы. Очевидно, подграф В\ U В2 связен. В силу макси- максимальности В\ и ??2 этот подграф имеет точку сочлепения v. Так как В\ и В2 — блоки, графы В\ — v и В2 — v связны. В силу предположения (Bi -v)C\ (В2 -ь)ф%. Тогда граф (Si \JB2)-v = (Si -v)\J (B2 - v) также связен. Следовательно, v не является точкой сочленения графа Вг U В2 и мы пришли к противоречию. Лемма доказана. ? Теорема 2.2. 1) Пусть В\ и В2 — два различных блока связного гра- графа G. Тогда либо В^С\В2 = 0, либо Вг и В2 имеют единственную общую вершину v, которая является точкой сочленения графа G. 2) Пусть v — точка сочленения связного графа G. Тогда v является общей вершиной по крайней мере двух различных блоков графа G. Доказательство. 1) В силу леммы 2 либо ??i П В2 = 0, либо В\ и В2 имеют единственную общую вершину. Пусть v — единственная общая вершина для Bi и Вг. В силу связности блоков существуют вершипы и е VBi и w e VB2, смежные с v. Пусть е\ = uv е ЕВг и е2 = vw G ЕВ2. Если существует простая (и, и;)-цепь, не проходящая через v, то эта цепь и ребра ei, e2 образуют цикл С. Цикл С содержится в некотором блоке Вз графа G, имеющем не менее двух общих вершин с В± (среди них и и г)), а также не менее двух общих вершин с В2 (среди них сим). Тогда в силу леммы 2 получаем В\ = В% = В2, что противоречиво. Таким образом, любая простая (и, то)-цепь проходит через v. Следо- Следовательно, v — точка сочленения графа G. 2) Пусть v — точка сочленения связного графа G. Тогда существуют две различные вершины и и то, отличные от v, и такие, что любая прос- простая (и, то)-цепь проходит через п. Очевидно можно считать, что и и w смежны с v. Пусть е\ = uv и е2 = vw — ребра графа G.
2.2. Блоки и точки сочленения 27 Если и и w лежат в одном блоке В графа G, то в блоке В имеется простая (и, то)-цепь, не проходящая через v (так как в блоке нет точек сочленения), а это противоречит выбору и и w. Пусть В\ и В^ — блоки, содержащие ребра е\ и e-i соответственно. Ясно, что В\ ф B-i и v — общая вершина блоков В\ и В^. ? Заметим, что любой неразделимый граф совпадает со своим едип- ственным блоком. Поэтому в дальнейшем неразделимые графы будут называться блоками. Лемма 3. Пусть G — блок, содержащий не менее трех вершин. То- Тогда любые две вершины графа G принадлежат некоторому общему циклу. Доказательство. Пусть и и v — две вершины блока G. Через U обозначим множество всех вершип, которые лежат на циклах, проходя- проходящих через и и имеющих длипу, большую чем 1. Так как в G нет точек сочленения и имеется не мепее трех вершин, в G нет мостов. Поэтому каждая вершина, смежная с и, лежит в U. Ясно, что и G U и \U\ > 1. Рассуждая от нротивного, нредноложим, что v 0 U. Возьмем крат- кратчайшую (v, то)-цень такую, что w G U. Пусть она имеет вид vt-i vt — w, где t > 1. Возьмем некоторый цикл С длины > 1, проходящий через и; и и (случай w = и не исключается). Пусть Wi — вершина цикла С, отлич- отличная от w. Так как w не является точкой сочленения, существует прос- простая (i>t_i, и>1)-цепь, не проходящая через w. Пусть Pi — начальная подцепь этой цепи от вершины vt-i до первой вершины то2, ле- лежащей в С (рис. 11). Обозначим через Pi ту из простых (и?2, ю)-цепей цикла С, ко- торая содержит вершину и. Тогда цепи Pj, Р2 и ребро е образуют цикл длипы > 1, содержащий и и vt-i, т.е. vt_i G U, что противоречиво. ? vt-i рис Лемма 4. Пусть G — блок, содержащий не менее трех вершин. То- Тогда любая вершина и любое ребро графа G, не являющееся петлей, при- принадлежат некоторому общему циклу. Доказательство. Возьмем произвольную вершину w блока G и его ребро е = uv, не являющееся петлей. В силу леммы 3 можпо считать, что w ф и и w ф v. По лемме 3 существует цикл С, проходящий через то и и. Так как и не является точкой сочленения, существует нростая
28 2. Деревья (v, го)-цепь, не прохдящая через и. Через Pi обозначим пачальпую под- подцепь этой цепи от v до первой вершины wi, принадлежащей циклу С (случай wi = w не исключается). Обозначим через Pi ту из простых (wi, и)-подцепей цикла С, которая содержит w. Тогда цепи Pi, Pi и реб- ребро е образуют искомый цикл, содержащий w и е. ? Теорема 2.3. Пусть G — связный граф, содержащий не менее трех вершин. Тогда следующие условия эквивалентны: 1) G — блок; 2) любые две вершины графа G принадлежат некоторому общему цик- циклу; 3) в графе G любая вершина и любое ребро, не являющееся петлей, принадлежат некоторому общему циклу; 4) в графе G любые два ребра, не являющиеся петлями, принадлежат некоторому общему циклу; 5) для любых двух вершин и любого ребра, не являющегося петлей, в графе С существует простая цепь, соединяющая эти вершины и прохо- проходящая через данное ребро; 6) для любых трех различных вершин и, v, w графа G существует простая (и, ю)-цепъ, проходящая через v; 7) для любых трех различных вершин и, v, w графа G существует простая (и, и>)-цепъ, не проходящая через v. Доказательство. 1) =^- 5). В силу леммы 4 можно считать, что для блока G выпол- выполняется 3). Возьмем две вершины Wi, w-i блока G и его ребро е = uv, не являющееся петлей. В силу 3) можно считать, что вершины iub w2, и, v попарно различны и существует цикл С, проходящий через iu2 и е. Так как го2 пе является точкой сочленепия, существует простая (wi, и)-цепь, не проходящая через к^- Через Pi обозначим начальную подцепь этой цепи от Wi до первой вершины №з, лежащей в G (рис. 12). и Pi Рис. 12
2.2. Блоки и точки сочленения 29 Пусть Рч — подцепь цикла С, соединяющая вершины u>3, u>2 и содер- содержащая ребро е. Искомая цепь получается объединением цепей Pi и Р2. 5) =>¦ 6). Пусть u,v,w — три различные вершипы графа G. Возьмем произвольное ребро е, инцидентное иипе являющееся петлей. В силу 5) существует простая (и, ад)-цепь, проходящая через е, и, следовательно, содержащая v. 6) =>¦ 7). Пусть u, v, w — три различные вершины графа G. В си- силу 6) существует простая (и, и)-цепь, проходящая через w. Тогда ее (и, «;)-подцепь не содержит v. 7) =>¦ 1). Вытекает из леммы 1. Итак, мы имеем 1) ==> 5) ==> 6) ==> 7) ==> 1). Для завершения доказательства осталось заметить, что импликации 5) =>• 4) =>• 3) =>• =>¦ 2) ^=> 7) очевидны. ? В связи с блоками на мпожестве ребер EG связпого графа G, не яв- являющихся петлями, полезно рассмотреть следующее отношение: ей/ <s=^ е = / или е, / содержатся в некотором цикле. Заметим, что если е и /, то е и / лежат в одном и том же блоке гра- графа G. Обратпо, если ей/ лежат в пекотором блоке графа G, то в силу теоремы 2.3 выполняется е ~ /. Таким образом, отношение « является отношением эквивалептности, а каждый его класс состоит из всех ребер некоторого блока, не являю- являющихся петлями. Что же касается петель, то они попадают в те блоки, в которых содержатся инцидентные им вершины. Пусть G — связный граф. Рассмотрим семейство его блоков В\, ..., Bt и семейство его точек сочленения v-i, ..., vs. Построим но- новый граф bc(G) па множестве вершин {vi, ...,ve,Bu..., Bt}. В качестве ребер этого графа возьмем пары вида {vj, Д;}, где Vj G Д;, i = 1, ..., t, j = 1, ..., s. Иными словами, мы рассматриваем двудоль- двудольный граф, вершипами которого являются блоки и точки сочлепения, а ребра показывают, как точки сочленения распределены по блокам. На рис. 13 изображены граф G и его граф bc(G). Теорема 2.4. Пусть G — связный граф. Тогда граф bc(G) является деревом. Доказательство. Очевидпо, связность графа G влечет связность гра- графа bc(G). В силу устройства ребер графа bc(G) все они пе являются петлями. Пусть в графе bc{G) имеется цикл vh -> Bh -> vh -> Bh -> ... -> vip -> Bjp
30 2. Деревья G Рис. 13 bc{G) где р > 2, все точки сочленения Uj15 ..., г»^ попарно различны и все блоки Bji: ..., В,-р попарно различны. Заметим, что для любого q = 1, ..., р точки сочленения viq, viq+1 лежат в блоке Bjq. Поэтому в Bjq имеется простая [viq, w;g+1)-qenb. Объединяя все эти цепи, мы получим цикл С в графе G. Возьмем блок В графа G, содержащий цикл С. Блок В имеет с каждым блоком Bjq [q — 1, ..., р) по крайней мере две различные общие вершины Viq, Viq+1, поэтому в силу леммы 2 мы получаем В = Bjq для любого q — 1, ..., р, что невозможно. Итак, в связном графе bc(G) пет циклов, т. е. bc{G) — дерево. ? Учитывая доказанную теорему, граф bc(G) называют деревом блоков и точек сочленения связного графа G. Иногда, допуская вольность речи, говорят, что связный граф является деревом своих блоков. В силу теоремы 2.2 любая точка сочленения связного графа G имеет степень > 2 в дереве bc(G), поэтому висячими вершинами дерева блоков и точек сочленения могут быть только блоки. Такие блоки называются висячими. 2.3. Число остовов в связном обыкновенном графе Лемма 1. Пусть Н — обыкновенный (п, п — 1)-граф, п > 2, I — матрица инцидентности некоторой его ориентации, М — произвольный минор порядка п — 1 матрицы I. Тогда 1) если Н не является деревом, то М = 0; 2) если Н — дерево, то М — ±1. Доказательство. Заметим, что смепа нумерации вершип и пумера- ции ребер графа Н приводит к перестановке строк и перестановке столб- столбцов матрицы /. Рассматриваемый минор при этом может сменить лишь знак.
2.3. Число остовов в связном обыкновенном графе 31 Пусть v — вершина, соответствующая строке матрицы /, не вошед- вошедшей в матрицу минора М. 1) Пусть Н не является деревом. Тогда граф Н несвязен. Пусть Vi, ..., x>t — множество вершин некоторой комноненты связности Н\ гра- графа Н, не содержащей v. 1.1. Если t = 1, то г>1 — изолированная вершина и в матрице мино- минора М имеется нулевая строка, поэтому М — 0. 1.2. Пусть t > 1. С помощью подходящей перенумерации вершин и ребер из Н матрицу / приведем к клеточному виду h 0 0 где ii — матрица инцидентности ориентации компоненты Hi, а верши- вершине v отвечает строка, проходящая через 12. Каждый столбец, проходящий через Ii, содержит точно одну единицу и точно одну —1 (остальные эле- элементы равны нулю). Следовательно, сумма первых t строк равна 0. Так как первые t строк входят в матрицу минора М, имеем М = 0. 2) Пусть Н является деревом. Заново перенумеруем вершины и реб- ребра графа Н с помощью следующей процедуры. В качестве v\ возьмем одну из висячих вершин дерева Н, отличную от v. Через е\ обозна- обозначим инцидентное ей висячее ребро. Рассмотрим дерево Н\ = Н — v\. Если его порядок > 2, то через г>2 обозначим одну из висячих вершин, отличных от v, а через е2 — инцидентное ей висячее ребро. Положим Hi = Н\—е2- Продолжаем этот процесс до тех пор, пока не получим одно- одноэлементное дерево Hn_i, единственной вершиной которого обязательно будет вершина v. Получим нумерацию вершин vi, ..., vn = v и нуме- нумерацию ребер е\, ..., е„_1. В новой нумерации матрица / приведется к виду ' ±1 0 ... 0 N * ±1 ... 0 ±1 причем вершине v отвечает носледняя строка (здесь каждый диагональ- диагональный элемент равен 1 или —1, а через * обозначены элементы матрицы, значения которых мы не будем выписывать в явном виде). Теперь ясно, что матрица минора имеет треугольный вид и М = ±1. ? Пусть Р и Q — соответственно (s x ?)-матрица и (ix в)-матрица, где s < t. Положим С — PQ.
32 2. Деревья Минор порядка s матрицы Q называется соответствующим минором минору порядка s матрицы Р, если множество номеров строк, состав- составляющих матрицу нервого минора, равно множеству номеров столбцов, составляющих матрицу второго минора. Сформулируем без доказательства один результат теории матриц, ко- который нам вскоре нонадобится. Его доказательство можно обнаружить, например, в книге [12] на стр. 20. Формула Бине-Коши. Онределитель матрицы С равен сумме все- всевозможных попарных произведений миноров порядка s матрицы Р на соответствующие миноры матрицы Q. Заметим, что при s — t формула Бине-Коши утверждает, что опреде- определитель произведения двух квадратных матриц норядка s равен нроизве- дению определителей этих матриц. Теорема 2.5 (Кирхгоф, 1847). Число остовов в связном неодноэле- неодноэлементном обыкновенном графе G равно алгебраическому дополнению любо- любого элемента матрицы Кирхгофа B(G). Доказательство. Пусть G — произвольный связный обыкновенный (п, т)-граф, п> 2 и I— матрица инцидентности какой-либо ориентации графа G. Заметим, что т > п — 1 в силу связности графа G. По лемме 2 из раздела 1.4 вынолняется В = B(G) = /•/*. Пусть В' — подматрица матрицы В, полученная удалепием последней строки и носледнего столбца, a J — нодматрица матрицы /, полученная удалением последней строки. Тогда имеем В' = J • J\ где J — это ((п — 1) х т)-матрица. Очевидно, Впп = det В' есть алгебра- алгебраическое дополнение элемента /Зпп в матрице Кирхгофа В. В силу форму- формулы Бине-Коши Впп равно сумме квадратов всех миноров норядка п - 1 матрицы J. Согласно лемме 1 каждый такой минор М равен ±1, если остовный нодграф графа G, ребра которого соответствуют столбцам, во- вошедшим в матрицу минора М, является деревом, и равен 0 в другом случае. Следовательно, Впп равно числу остовов графа G. Осталось от- отметить, что но лемме 1 из раздела 1.4 алгебраические донолнения всех элементов матрицы Кирхгофа равны между собой. ? Следствие 1. Ранг обыкновенного (п, т, к)-графа G равен рангу его матрицы Кирхгофа, т. е. rankB(G) = п — к. Доказательство. Пусть к = 1, т.е. граф G связен. Тогда в G есть остовное дерево и но теореме Впп ф 0, т.е. rankB(G) > п — 1. С другой стороны, detB(G) = 0 и, следовательно, rankS(G) = п — 1.
2.3. Число остовов в связном обыкновенном графе 33 Пусть теперь к > 1. Тогда при подходящей нумерации вершин матри- матрица B{G) подобна клеточно-диагональной матрице, составленпой из мат- матриц Кирхгофа В\, ..., .В* компонент связпости графа G. Так как подоб- подобные матрицы имеют одинаковый ранг, в силу ранее доказанного получа- получаем * к rankB(G) = Y,rankBi = Y,(ni -l) = n-k. Следствие 2. Число остовое в полном графе Кп равно пп 2. Доказательство. Утверждение очевидно для п — 1 и п — 2. Пусть п > 2. Мы имеем В(Кп) = /п-1 -1 ... -1 \ -1 п-1 ... -1 -1 -1 ... п-1 ) Вычислив определитель (п — 1)-го порядка, получаем Впп = пп 2. ? Так как число остовов в полном графе Кп равно числу помечепных де- деревьев порядка п, т.е. числу деревьев па множестве вершин 1, 2, ..., п, следствие 2 эквивалентно следующему утверждепию. Теорема 2.6 (Кели, 1897). Число помеченных деревьев порядка п равно пп~2. Рассмотрим следующую задачу об остове минимального веса. Пусть G — связный граф и w. EG —> Ш — отображение из EG в К, Отображение то называют весовой функцией, aw(e) — весом ребра е е EG. Пусть Т — остов графа G. Положим то(Т) = ? w(e). е?ЕТ Число w(T) называют весом остова Т. Задача состоит в следующем: построить алгоритм, который во взве- взвешенном графе (G, то) паходит остов минимального веса. В дальнейшем мы укажем такие алгоритмы, которые достаточно быстро находят в графе остов минимального веса. Теорема Кели же по- показывает, что в графе может быть очень много остовов. Так в Кп число остовов экспоненциально зависит от п. Поэтому было бы нерационально решать задачу об остове мипимального веса, основываясь на нереборе всех остовов.
3. Обходы графов 3.1. Эйлеровы графы Замкнутая цепь в графе G называется эйлеровой цепью, если она со- содержит все ребра и все вершины графа. Граф, содержащий эйлерову цепь, будет называться эйлеровым графом. Иными словами, эйлеров граф — это связный граф, в котором имеется замкнутая цепь, нрохо- дящая точно один раз через каждое его ребро. Свое название эйлеровы графы получили в честь Л. Эйлера, который первым рассмотрел такие графы в 1736 году в своей знаменитой работе о кенигсбергских мостах. Этой работой Эйлер, но существу, положил начало новому разделу математики — теории графов. Задача о кенигсбергских мостах состояла в следующем. На реке Пре- гель в Кенигсберге было два острова, соединенных между собой и с бе- берегами семью мостами, как показано на рис. 14 а). Рис. 14 Спрашивается, можно ли, начиная с некоторого места суши, обойти все мосты по одному разу и вернуться назад? Эйлер предложил рассмотреть граф, изображенный на рис. 14 6). Не- Нетрудно догадаться, что решение задачи о кенигсбергских мостах сво- сводится к поиску эйлеровой цепи в этом графе. Одпако, как показывает следующая теорема, в указанпом графе пет эйлеровых цепей. Теорема 3.1 (Эйлер, 1736). Для неодноэлементного связного гра- графа G следующие условия эквивалентны: 1) G — эйлеров граф; 2) каждая вершина графа G имеет четную степень; 3) множество всех ребер графа G можно разбить на циклы. Доказательство. 1) =>• 2). Пусть Р — эйлерова цень графа G с на- начальной вершипой Vq. Двигаясь по цени Р, будем подсчитывать стенени
3.1. Эйлеровы графы 35 вершин. Прохождение каждой промежуточной вершины в цепи Р вносит число 2 в ее степепь. Первое и последпее ребро цепи Р дают вклад 2 в степень вершины vq. Так как цепь Р содержит каждое ребро графа точно одип раз, отсюда следует четность степеней всех вершин графа G. 2) =>• 3). Граф G связеп и не имеет висячих вершин, поскольку сте- степень каждой его вершины четна. В силу следствия 1 из теоремы 2.1 в G содержится некоторый цикл. Обозначим через G\ максимальный под- подграф графа G, удовлетворяющий условию 3). Поскольку из условия 3) вытекает условие 2), степени всех вершин графа Gi четны. Обозначим через Gi подграф, полученный из G удалением всех ребер графа G\. Предположим, что G2 содержит неодноэлементную компоненту связнос- связности Н. Поскольку Н — связпый подграф, удовлетворяющий условию 2), в нем нет висячих вершин, и, следовательно, Н — не дерево, т. е. в Н содержится цикл G. Если добавить все ребра цикла С вместе с инци- инцидентными им вершинами к подграфу G\, то получится подграф, содержа- содержащий G\ и удовлетворяющий условию 3), что невозможно. Следовательно, подграф G2 пе содержит ребер, поэтому G совпадает с G\. 3) =>• 1). Разобьем мпожество всех ребер графа G на наименьшее число замкнутых цепей Pi, Рг, • • •, Р» (такое разбиепие существует в си- силу условия 3)) и докажем, что s = 1. Пусть s > 1. В силу связности графа G найдется такое i > 2, что замкнутые цепи Pi и Р.; имеют общую вершину. Поскольку Pi и Р, не имеют общих ребер, их можпо объеди- объединить в одну замкнутую цепь, уменьшив, тем самым общее количество ценей s, что певозможпо. Следовательно, все ребра графа G принадлежат некоторой замкнутой цепи, т.е. граф является эйлеровым. ? Из теоремы 3.1 можно получить следствие, отпосящееся к нроизволь- ным графам. Следствие 1. Пусть G — произвольный граф, содержащий 21 вершин нечетной степени, где I > 1. Тогда множество всех ребер графа можно разбить на I цепей, каждая из которых соединяет две вершины нечетной степени. Доказательство. Очевидно, утверждение достаточно доказать для случая, когда граф G связеп. Пусть «1, U2, ..., «21-1, U2l — все вершины нечетной степени связного графа G. Рассмотрим граф Gi, полученный из G добавлением / новых ребер е\, ..., е; таких, что е; = u2i-iu2i A < г < I). Граф G\, очевидно, связен и степень каждой его вершины — четное число. Поэтому в G\ существует эйлерова цепь Р.
36 3. Обходы графов Можно считать, что цепь Р начинается с ребра е\. Удаляя из Р все ребра е^ A < г < I), мы, очевидно, получим I нужных нам цепей. ? Цепь в графе G называется полуэйлеровой, если она содержит все реб- ребра и все вершины графа. Граф называется полуэйлеровым, если в нем существует нолуэйлерова цепь. Ипыми словами, полуэйлеров граф — это связный граф, в котором имеется цепь (возможно, незамкнутая), проходящая точно один раз через каждое ребро. Предложение 3.1. Связный граф G является полуэйлеровым графом тогда и только тогда, когда G содержит не более двух вершин нечетной степени. Это утверждепие, очевидно, вытекает из теоремы 3.1 и следствия 1. Следующее утверждение уточняет предложение 3.1. Следствие 2. Пусть связный граф G содержит две вершины нечет- нечетной степени и и v. Тогда существует (и, у)-цепъ, содержащая все ребра графа G. Граф называется произвольно вычерчиваемым из вершины v, если лю- любая его цепь с началом в вершине v может быть продолжепа до эйлеровой цепи графа G. Разумеется, если граф произвольно вычерчиваем из вер- вершины v, то он является эйлеровым графом. Теорема 3.2. Неодноэлементный эйлеров граф G является произ- произвольно вычерчиваемым из вершины v тогда и только тогда, когда вер- вершина v принадлежит любому циклу графа G. Доказательство. Пусть вершина v эйлерова графа G принадлежит любому циклу. Рассмотрим произвольную (и, ад)-цепь Р и нокажем, что ее можно продолжить до эйлеровой цепи. Обозначим через G\ подграф графа G, полученный удалением из G всех ребер цепи Р. Если w — v, то все вершины подграфа G\ имеют четную степень, если же то ф v, то G\ содержит в точности две вершины нечетной степени. Пусть Но — компонента связности графа Gi, содержащая вершину v. Ясно, что вер- вершина то принадлежит Но. Следовательно, Но — полуэйлеров граф, и потому в Нд существует полуэйлерова (то, г>)-цепь Q. Нетрудно понять, что Но содержит все ребра графа Gi. В самом деле, предположим, что Gi содержит неодноэлементную компоненту связности Н, отличную от Но. Тогда Н — эйлеров граф, и потому в Н содержится цикл. Этот цикл, очевидно, не проходит через вершину v, что невозможно. Следовательно, все компоненты связности подграфа G\, отличные от Нд, одноэлементны. Таким образом, цепь Q содержит все ребра графа G\. Отсюда вытека- вытекает, что объединение цепей Р и Q — эйлерова цепь в графе G, являющаяся продолжением цени Р.
3.1. Эйлеровы графы 37 Обратно, пусть в графе G существует цикл С, не содержащий верши- вершину v. Рассмотрим подграф G1; полученный удалением из G всех ребер цикла С. Пусть Н — компонента связности подграфа Gi, содержащая вершину v. Легко понять, что Н — эйлеров граф. Обозначим через Р эйлерову цепь подграфа Н. Можно считать, что началом и концом це- цепи Р является вершина v. Поскольку v пе принадлежит циклу С, цепь Р нельзя продолжить до эйлеровой цепи графа G. ? Онираясь на теорему 3.2, несложно описать строение всех графов, произвольно вычерчиваемых из вершины v. Для этого возьмем произвольный лес Н, т. е. ациклический граф, не содержащий вершину v. Каждую вершину нечетной степени из Н соединим некоторым нечетным числом кратпых ребер с о, а каждую вершину четной степени — четным числом (не исключая 0) кратных ребер с v, причем каждую изолированную вершину из Н обязательно соединим с v (см. рис. 15). Кроме того, в вершине v можно присоединить несколько петель. Полученный граф G 1) связен; 2) имеет только вершипы четной степени (degj; четно, так как в гра- графе Н содержится четное число вершип нечетпой степени); 3) является произвольно вычерчиваемым из вершипы v, (как эйлеров граф, у которого вершина v принадлежит всем циклам). Я G Рис. 15 Очевидно, верно и обратное, т. е. любой неодноэлементный граф, про- произвольно вычерчиваемый из вершины v, можно получить с помощью указанной копструкции. Заметим, что в графе G, произвольно вычерчиваемом из вершины v, на основании определения можно следующим образом построить эйлеро- эйлерову цепь: выходим из вершины v и идем произвольным образом по маршруту в графе G, соблюдая лишь одно ограничение — из каждой достигпутой
38 3. Обходы графов вершины выходим только по любому из ранее не пройдепных ребер, при- причем движемся до тех пор, пока это возможно. Итак, в графе, произвольно вычерчиваемом из вершины v, существу- существует очепь простой алгоритм построения эйлеровой цепи. В связи с этим графы произвольно вычерчиваемые из данной вершины, весьма удобны для планирования выставок. Здесь ребра соответствуют номещениям, где выставляются экспонаты, а вершины — местам перехода из одних номещепий в другие. На выставке, спланированпой таким образом, на- начав с входа v, можно автоматически обойти всю выставку, если придер- придерживаться нростого нравила: войти в номещение, осмотреть его и через другой выход перейти в еще непросмотренное помещение. 3.2. Гамильтоновы графы Гамилътоновой цепью графа называется его простая цепь, которая проходит через каждую вершину графа точно один раз. Цикл графа, нроходящий через каждую его вершину, называется гамилътоновым цик- циклом. Граф называется гамилътоновым, если он обладает гамильтоновым циклом. Очевидно, вопрос о существовании гамильтоновых цепей и циклов достаточно изучить только для класса обыкновенных графов. Указанные названия цепей и циклов связаны с именем Уильяма Га- Гамильтона, который в 1859 году предложил следующую игру-головолом- игру-головоломку: требуется, переходя по очереди от одной вершины додекаэдра к дру- другой вершине по его ребру, обойти все 20 вершин но одному разу и вер- вернуться в начальную вершину. Отметим, что придумано еще много других развлекательных и полез- полезных задач, связапных с ноиском гамильтоповых циклов. Сформулируем две из них. 1. Компапию из нескольких человек требуется рассадить за круг- круглым столом таким образом, чтобы по обе стороны от каждого сидели его знакомые. Очевидно, для решения этой задачи нужно найти гамильтонов цикл в графе зпакомств компании. 2. (Задача о шахматном коне.) Можно ли, начиная с произвольного поля шахматной доски, обойти конем последовательно все 64 поля по одному разу и вернуться в исходное поле? Несмотря на внешнее сходство задач об эйлеровых цепях и гамильто- гамильтоновых циклах, оказалось, что проблемы нахождения эффективных кри- критериев существования таких цепей и циклов имеют принципиально раз-
3.2. Гамильтоновы графы 39 личную сложность. Как было показано в предыдущем разделе, простой и эффективный критерий существования эйлеровой цепи устанавливает- устанавливается достаточно просто. Конечно, хотелось бы найти подобпый критерий и для существования гамильтонова цикла. Однако, поиск эффективного критерия такого сорта является одной из труднейших нерешепных задач теории графов. В данном разделе мы приведем одно из наиболее интересных доста- точпых условий существовапия гамильтопова цикла в обыкновенном гра- графе, полученное к настоящему времени. Сначала дадим необходимые онределения и докажем одну вспомога- вспомогательную лемму. Пусть граф G имеет п вершин vi, v2, ..., vn. Положим di = degVi (i — 1, 2, ..., n) и будем считать, что вершины графа упорядочены таким образом, что d\ < d2 < ... < dn. Последовательность di, d2, ..., dn называют последовательностью степеней графа G. Будем говорить, что числовая последовательность d± < di < ... < dn мажорируется числовой последовательностью d[ < d2 < ... < d'n, если di < d'-t для любого i = 1, 2, ..., п. Лемма 1. Пусть обыкновенный графС получен из обыкновенного гра- графа G добавлением одного нового ребра е. Тогда последовательность сте- степеней графа G мажорируется последовательностью степеней графа G'. Доказательство. Заметим спачала, что если в неубывающей после- последовательности d\ < d2 < ... < dn увеличить число di на 1, а затем полученную последовательность привести к неубывающему виду, пере- переставив число di + 1 на положенное место, то повая последовательность будет мажорировать исходную носледовательность (очевидно, ту же но- новую последовательность можно получить сразу, добавив 1 к последнему числу исходной последовательности, равному di). Ясно, что при добавлении к графу нового ребра е = uv, где и ф v, точпо у двух вершин и и v степени увеличатся на 1. Осталось два раза воспользоваться сделапным замечанием. ? Теорема 3.3 (Хватал, 1972). Пусть G — обыкновенный граф, di < d2 < ... < dn — его последовательность степеней и п > 3. Если для любого к верна импликация <4 < к < п/2 —»¦ dn_). > п — к, (*) то граф G гамилътонов. Доказательство. Сделаем сначала три очевидных замечания. 1) Если dk < к, то число вершин, степень которых не превосходит к, больше или равпо к. Очевидно, верно и обратное утверждение.
40 3. Обходы графов 2) Если dn_& > п — к, то число вершин, степепь которых не мень- меньше п — к, больше или равно к + 1 (достаточно заметить, что в последо- последовательности dn_fc,dn_jt+i,... ,dn имеется k + 1 чисел). Конечно, и здесь верно обратное утверждение. 3) Если условие (*) верно для некоторой последовательности степепей, то оно верно и для мажорирующей её последовательности. Пусть теперь, от противного, существует обыкновенный п-граф, где п > 3, который удовлетворяет условию (*), но не является гамильто- новым графом. Будем добавлять к нему новые ребра до тех пор, пока не получим максимальный негамильтопов обыкновенный граф G. В силу 3) граф G удовлетворяет условию (*). Заметим, что граф Кп гамильтонов при п > 3. Будем считать, что граф G — это максимальный негамильтонов остовный подграф графа Кп. Возьмем две такие песмежпые вершины и и v графа G, что сумма degu + degv является наибольшей из возможных. Без ограничения общ- общности будем считать, что degu < degv. Добавим к G новое ребро е = uv. Тогда граф G + е гамильтопов. Рассмотрим гамильтонов цикл графа G + е. В нем обязательпо при- присутствует ребро е = uv. Отбрасывая ребро е из цикла, получим гамиль- тонову (и, г;)-цепь в графе G: и = «1, и2, ..., и„ = V. Положим S = {i | е,; = щщ+1 € EG}, T = {i\fi = щип € EG}. Покажем, что SГ)Т — 0. Действительно, если j ? S(~)T, то в графе G имеется гамильтонов цикл: Щ -4 Uj+l —»• Uj+2 —»• . . . —»• Un -4 Uj —>• Mj_l —»•...—»• Ml. Из определепия S и Т следует S U Т С {1, 2, ..., п — 1}, поэтому 2degM <degw + degi; = \S\ + \Т\ = \SUT\ < п, т.е. degM < n/2. Так как SГ\Т = 0, ни одна вершина Uj, где j ? 5, не смежна с v = ип. Отсюда в силу выбора и и v имеем degM7- < degu. Положим к = degw. Тогда имеется по крайней мере \S\ = degu = к вершин, степень которых не превосходит к. В силу 1) выполняется dk<k < n/2. По условию (*) получаем dn-k > п — к.
3.2. Гамильтоновы графы 41 В силу 2) имеется по крайней мере к + 1 вершин, степень которых не меньше п — к. Вершина и может быть смежна, самое большее, с & из этих к + 1 вершин, так как к — degu. Следовательно, существует вершипа w, не смежная с и, для которой deg w > п — к. Тогда получаем degit + deg w > > к+ (п — к) = п > deg и + deg v, что противоречит выбору и и v. ? Следствие 1. Пусть G — обыкновенный граф, d\ < d% < ... < dn — его последовательность степеней и, п > 3. Граф G гамилътонов, если выполнено одно из условий: 1) dj, > п/2 для любого к = 1, ..., п (теорема Дирака, 1952), 2) deg u + deg v > п для любых двух различных несмежных вершин и, v графа G (теорема Оре, 1960), 3) df. > к для любого натурального числа к такого, что 1 < к < п/2. Доказательство. Достаточно установить, что 1) => 2) => 3) => (*). Импликации 1) => 2) и 3) =>¦ (*) совершенно очевидны. 2) => 3). Пусть, от нротивного, верпо 2), но не верно 3). Тогда су- существует такое t, что 1 < t < п/2 и dt < t. Возьмем произвольные числа ti, t<i такие, что 1 < t\ < ti < t. Тогда dtl, dt2 < dt < t < п/2 влечет dh + di2 < n, откуда в силу 2) вершины vtl, vt2 смежны. Таким образом, вершины v\, V2, ..., vt норождают полный подграф. Так как dt < t, любая вершина v-i для i — 1, ..., ? смежна не более чем с одной вершиной Vj для j ? t + 1, ..., п, причем \{t+ 1, ..., п}\ = n — t. Заметим, что п — t > t, поскольку t < п/2. Поэтому существует вер- вершина Vj для некоторого j = t+ I, ..., п, которая несмежна с вершинами «1, ..., vt. Поскольку Vj несмежна сама с собой, отсюда следует dj < п — t — 1. Тогда dt + dj <t + n — t — l <пи вершины vt, Vj несмежны и различны, что противоречит 2). ? Гамильтоновой орцепъю орграфа называется его простая орцень, ко- которая проходит через каждую вершину орграфа точно один раз. Ор- цикл орграфа, проходящий через каждую его вершину, называется га- мильтоновым орциклом. Орграф пазывается полугамильтоновым, если он обладает гамильтоновой орцепью, и гамилътоновым, если он обладает гамильтоновым орциклом. О гамильтоновых орграфах в целом известно не очень много. Приве- Приведем без доказательства аналог теоремы Дирака. Теорема 3.4 (Гуйя—Ури). Пусть G — орсвязный п-орграф. Если deg v > п/2 и deg v > п/2 для любой его вершины v, moG — гамилътонов орграф.
42 3. Обходы графов Рассмотрим теперь один важный класс орграфов и выясним, когда орграф из этого класса будет гамильтоновым. Турниром называется орграф, основание которого есть полный граф, т.е. любые две его различные вершины соединены точпо одпой дугой и нет петель. Такое название выбрано в связи с тем, что эти графы удобно использовать для описания результатов командпых соревнований в некоторых видах спорта. Так как турнир может иметь источник (или сток), т.е. вершину, в которой дуги только выходят (заходят), турнир может быть и негамиль- тоновым. Тем не мепее, справедлива Теорема 3.5 (Редей и Камион). 1) Любой турнир полугамилъто- нов. 2) Любой орсвязный турнир гамилътонов. Доказательство. 1) Утверждение очевидно для турнира, содержа- содержащего менее трех вершин. Предположим по ипдукции, что любой турпир на п вершинах полугамильтопов. Рассмотрим произвольный турнир G, имеющий п + 1 вершин, где п > 2, и произвольную вершину и в нем. По предположению индукции турнир G — и полугамильтонов, т. е. в нем существует гамильтопова орцепь Щ -»• г>2 -?...-? vn. Если в G имеется дуга е\ = uv\ или дуга /„ = vnu, то, очевидпо, турнир G полугамильтонов. Поэтому можно считать, что в G присут- присутствуют дуги /i = «im и е„ = uvn. В указанной выше гамильтоновой орцепи турнира G — и возьмем первую вершину г>,;, для которой в G — и имеется дуга е, — mv,;. В силу выбора вершины щ в G — и имеется дуга /j_i = v.;_iM. Тогда в турнире G получаем гамильтопову орцепь 1>1 —»...—>¦ Vi-i —>¦ U —>¦ Vi —>¦ . . . —>¦ Vn. 2) Будем доказывать более сильное утверждение: любой орсвязпый турнир G на п вершинах содержит орциклы длины 3, 4, ..., п. Отметим, что любой орсвязный турнир, очевидно, содержит не менее трех вершин. Пусть G — орсвязпый турнир. Возьмем в турпире G произвольную вершину и. Мпожество вершин турнира G — v распадается па два непере- непересекающихся подмножества V\ и V2, где в V\ собраны все вершины и, для которых в G имеется дуга из и в v, а в Vi — все вершины w, для которых в G имеется дуга из v в w. Если V\ — 0, то и — источник турнира G,
3.2. Гамильтоновы графы 43 что невозможно. Следовательно, V\ ф 0 и, аналогично, Vi ф 0. Тогда в силу орсвязности турнира G обязательно существует дуга g = wu для некоторых ш е Vj и и е Ц. Поэтому в турнире G получаем орцикл и —? v —? w —? и длины 3. Предноложим тенерь, что в G имеется орцикл длины t, где 3 < t < п. Покажем, что в G существует орцикл длины t + 1. Положим U = VG\{vuv2,...,vt}. Пусть в множестве U найдется вершина и такая, что в G имеются дуги Д — ViU и ej — uvj для некоторых i, j таких, что 1 < i, j < t и i ф j. Рассмотрим два случая. 1. Если i < j, то существует s такое, что i<s< j hbG присутству- присутствуют дуги /,_1 = vs_iu и es = uvs. Тогда в турнире G получаем орцикл длипы t + 1: 2. Пусть j < i. Если в G существует дуга Д — ViU, то мы ока- оказываемся в условиях рассмотренного случая, где вместо нары г, j надо взять пару 1, j. Следовательно, мы можем считать, что существует дуга ei = uvi и, аналогично, существует дуга ft = vtu. Тогда в турнире G получаем орцикл длины t + 1: Таким образом, мы можем считать, что множество U распадается па два непересекающихся подмножества V\ и Vi таких, что 1) в V\ собраны все вершипы и ? [/, для которых дуга, инцидентная и и вершине v\ (г = 1, ..., ?), имеет вид е, = uv,, 2) в V2 собраны все вершины и G U, для которых дуга, инцидентная и и вершине ы (г = 1, ..., t), имеет вид /; = ViU. Если Vi — 0, то турнир G не будет орсвязным, так как тогда не существует простых орценей с началом в Vi и концом в \у\, ..., г^}. Следовательно, V\ ф 0 и, аналогично, Vi ф 0. Легко видеть, что в силу орсвязности турнира G существуют верши- вершины u>i G Vi и u>i ? Vi, для которых в G имеется дуга g = Тогда в турпире G получаем орцикл длины t + 1:
4. Матроиды 4.1. Полумодулярные решетки, условие Жордана — Дедекинда Напомним, что решеткой называется алгебра L с двумя бинарными операциями Л и V такими, что для любых а, Ь, с ? L выполняется 1) а Л а — а, 1') а V а — а, 2)aAb = bAa, 2')aVb = bVa, 3) а Л F Л с) = (а Л 6) Л с, 3') а V F V с) = (а V Ъ) V с, 4) а Л (а V Ъ) = а, 4') а\/ (аЛЬ) = а. В решетке L можно ввести отношение частичного порядка <, полагая а <Ь О а ЛЬ= а (а, Ъ ? L). Отметим, что а Л Ъ и а V Ъ являются соответственно точной пижней и точной верхней границами для элементов а и 6 относительно <. Решетка L называется модулярной, если для любых а, Ь, с ? L. Для элементов а и b решетки L таких, что а <Ь, положим [а, Ь] — {х | а < х < Ь}. Это подмножество замкнуто относительно операций Л и V, т. е. является подрешеткой, и называется интервалом решетки L. Лемма 1. Для любых элементов а иЪ модулярной решетки L интер- интервалы [а Л Ь, а] и [b, a V b] изоморфны. Доказательство. Определим отображение ф из [а Л Ь, а] в [b, aV b] и отображение ф из [6, a V 6] в [а Л 6, а], полагая ф(х) = х V b (х ? [a A b, a]), ф{у) = уЛа {y?[b,aVb}). Заметим, что aAb<x<a^b=(aAb)Vb< ф(х) <aVb и Ъ<у<а\1Ъ^аАЪ< ф(у) <aA(aVb) = a.
4.1. Полумодулярные решетки, условие Жордана-Дедекинда 45 Далее, для любого х 6 [а Л b, a] выполняется фф(х) — (xVb)Aa-xV(aAb) — х, т. е. фф тождественно на [а Л Ъ, а] и, аналогично, фф тождественно на [Ь, а V Ь]. Следовательно, фиф — две взаимно обратные биекции. Кроме того, фиф сохраняют отношение <: х\ < х2 =Ф ф(хг) < ф(х2), 2/1 < 2/2 => Ф{У\) < Ф{У2) для любых х\, Х2 € [а Л Ъ, а] и yi, у2 ? [b, a V 6]. Отсюда следует, что ф — изоморфизм подрешетки [а Л Ь, а] на подре- шетку [b, aV b]. ? Через <• будем обозначать в решетке L отношение покрытия, т.е. мы полагаем а <¦ 6, если а < Ь и интервал [а, 6] двухэлементен. Решетка L называется полумодулярной, если аЛй<-а=>й<-а\/й для любых a, b ? L. В силу леммы 1 любая модулярная решетка полу- модулярна. Пусть V — копечномерное векторное пространство над телом F. То- Тогда решетка Sub V подпространств пространства V, как известно, моду- лярна и, следовательно, нолумодулярна. Рассмотрим теперь решетку L, в которой все цепи конечны. Будем говорить, что L удовлетворяет условию Жордана-Дедекинда, если для лю- любых двух элементов a,b G L таких, что а <Ъ, все максимальные (а, 6)-це- пи в L имеют одинаковую длину, т. е. всегда из условий а = щ <• «1 <• ... <• ит = b, a = Vq <¦ v1 <-...<• vn = b вытекает т = п. Теорема 4.1. Любая полумодулярная решетка, в которой все цепи конечны, удовлетворяет условию Жордана-Дедекинда. Доказательство. Будем доказывать следующее утверждение: для любых а, Ъ ? L таких, что а < Ь, если какая-либо максималь- максимальная (а, 6)-цепь имеет длину т, то любая максимальная (а, 6)-цепь имеет длину т. При т = 1 имеем а <• Ъ и утверждение очевидно. Пусть утвержде- утверждение верно для любого интервала, имеющего максимальную цепь длины меньшей т, и т > 2. Рассмотрим две максимальные (а, й)-цепи: а = щ <• щ <-...<• ит = Ъ, а = v0 <• Vx <-...<• vn = b. В силу предположения ипдукции мы можем считать, что п > т. Ес- Если Mi — Vi, то, применяя предположение инукции к интервалу [mi, b], получаем т — 1 = п — 1, т. е. т = п. Пусть щ ф v\. В силу полумодуляр- полумодулярности выполняется щ, vi <-щ V vi. По предположению индукции любая
46 4. Матроиды максимальная (ui, 6)-цень имеет длину m — 1. Следовательно, любая максимальная (щ V vi, Ь)-цепь имеет длину m — 2. Отсюда следует, что любая максимальная (vi, Ь)-цепь имеет длину m — 1. Тогда т — 1 = п — 1, т.е. опять имеем т — п. ? Далее под отношепием <• на решетке L будем понимать объединепие отношения покрытия <• и отношения равенства =. В дальнейшем мы будем рассматривать решетки, обладающие наименьшим элементом, ко- который будем называть нулем и будем обозначать через 0. Атомом будем называть элемент решетки, покрывающий ее наименьший элемент 0. Лемма 2. Пусть L — полумодулярная решетка с нулем 0. Тогда для любых u, v, w 6 L выполняется u<v—?uVw<vVw. В частности, для любого а € L и атома р такого, что р ^ а, выполня- выполняется а <¦ а V р. Доказательство. Если v < и V w, то в V to = (м V ш) V » = в V ю. Пусть v ^ uVw. Тогда и — dA(mVw), так как и <• V, и wV(kVw) — vVw. Отсюда в силу полумодулярности получаем uV w <-vV w. О Пусть L — полумодулярная решетка с нулем 0, в которой все цепи копечны. Через dim а будем обозпачать длину максимальной @, а)-цепи. Это определение корректно в силу теоремы 4.1. Функцию dim ж будем называть функцией размерности на решетке L. Теорема 4.2. Пусть L — полумодулярная решетка с нулем 0, в ко- которой все цепи конечны. Тогда 1) для любых а, Ъ G L dim(a Л Ь) + dim(a V b) < dim a + dim b; 2) решетка L модулярна в том и только в том случае, когда для любых а, Ь ? L dim(a Л b) + dim(a V b) — dim a + dim b. Доказательство. 1) Пусть а/\Ъ = щ <¦ «i <¦ ... <¦ ит = а. Объедипяя все элементы этой цепи с Ь, в силу леммы 2 получаем Ъ = «о V Ъ <• щ V Ъ <• ... <• ит V Ъ = а V Ъ. Отсюда следует dim а — dim(a Л Ь) — т > dim(a V b) — dim 6, т.е. dim a + dim b > dim(a Л b) + dim(a V 6).
4.2. Конечномерные геометрические решетки и матроиды 47 2) Если решетка модулярна, то интервалы [а Л Ь, а] и [6, а\/ Ь] изо- изоморфны но лемме 1. Следовательно, dim а — dim(a Л Ь) = dim(a V Ь) — dim Ъ. Обратно, предположим, что для любых а, Ъ ? L выполняется равенст- равенство dim(a Л b) + dim(a V b) = dim a + dim b. Пусть, от противного, решетка L немодулярна. Тогда, как известно, она содержит нентагон (рис. 16) в качестве подрешетки. v Для элементов Пентагона в силу нашего предположения получаем dim v + dim u = dim с + dim a, dim v + dim u — dim с + dim 6, т.е. dim a = dim 6, что невозможно. ? Отметим, что неравенство из 1) называют неравенством полумоду- полумодулярности. Пример. Пусть V — конечномерное векторное пространство над телом F. Тогда решетка Subl^ подпространств пространства V — это модулярная решетка с нулем, в которой все цепи конечны, и dim U совпа- совпадает с обычной размерностью ноднространства U. Конечно, Sub V удов- удовлетворяет условию Жордана-Дедекинда, а равенство из утверждения 2) теоремы 4.2 есть обычная формула для размерности суммы и пересече- пересечения поднрострапств. 4.2. Конечномерные геометрические решетки и матроиды Неодноэлемептную решетку L называют конечномерной геометричес- геометрической решеткой, если она
48 4. Матроиды 1) полна, т. е. существуют точная нижняя и точная верхняя границы любого множества ее элементов; 2) не содержит бесконечных цепей; 3) точечно,, т. е. любой её элемент представим в виде объединения некоторого (возможно бесконечного) множества атомов; 4) полумодулярна. Заметим, что в силу 2) решетка L имеет наименьший и наибольший элементы, которые удобно считать соответственно точной верхней и точ- точной нижней границей пустого множества. Примером конечномерной геометрической решетки может служить решетка подпространств Sub V любого конечномерного векторного про- пространства V над телом F. Решетка L называется решеткой с дополнениями, если она имеет наи- наименьший элемент 0, наибольший элемент 1 и для любого и ? L сущест- существует v ? L такой, что в Л и = 0, bV« = 1. Элемент v называют тогда дополнением элемента и. Решетка называется решеткой с относительными дополнениями, ес- если любой ее интервал есть решетка с дополнениями. Теорема 4.3. Любая конечномерная геометрическая решетка явля- является решеткой с относительными дополнениями. Доказательство. Пусть [а, Ь\ — интервал конечномерной геометри- геометрической решетки L и и G [а, 6]. Среди элементов и' G [а, Ъ] таких, что и Аи' — а (отметим, что это равенство верно при и' — а), возьмем мак- максимальный элемент и'. Покажем, что и V и' — Ъ, т. е. и' — дополнепие для и. Пусть, от противного, uVu' < Ъ. Возьмем атом q < Ъ решетки L такой, что q j? и V и'. Такой атом существует в силу точечности решетки L. Тогда q ¦?. и и q •? и'. Положим и" — и'' V q. Очевидно, а < и' V q < Ъ, т. е. и" ? [а, Ъ\. Так как q ^ и', по лемме 2 получаем и' <¦ и' V q — и". В силу максимальности и' выполняется а < и А и". Тогда существует атом р < и А и" < и, и" решетки L такой, что р ¦?. а = и А и'. Ясно, что р ^ и', иначе из р < и' и р < и нолучаем р < и А и' = а. Так как р < и", отсюда следует и' <-и' У р < и", т. е. и" — и' У р. Тогда получаем q < и" < и" V и = (и' \/р) V и = и' V (р V и) = и' V и, что противоречит выбору q. Таким образом, и V и' = Ъ и и' — дополнепие для и в [а, Ь]. ?
4.2. Конечномерные геометрические решетки и матроиды 49 Теорема 4.4. Любой интервал конечномерной геометрической ре- решетки является конечномерной геометрической решеткой. Доказательство. Очевидно, нужно проверить лишь точечность ин- интервала. Пусть в решетке L выполняется а < с < Ъ. Тогда с = V Pi для некоторых атомов р, [i ? I) решетки L. Очевидно, среди указанных атомов существует такой атом р^, что р^ j? а. Будем считать, что pj ^ a для j?JQIvipit<a для k ? I \ J. Тогда по лемме 2 предыдущего раздела элементы pj V а являются атомами в интервале [а, Ь] для j ? J и с = с V а = (\/ р^ V а = \J (pi V а) = ( \/ (р,- V а)) V а = \/ (pjV a), iei iei jeJ jeJ П Пусть Е — непустое множество. Отображение А —у (Л) множест- множества V{E) всех подмножеств множества Е в себя называется оператором замыкания, если для любых 4, ВСЕ выполняется 1) Л С (Л); 2) Л С В => (Л) С (В); 3) ((Л)) = (Л). Условие 1) называется направленностью, условие 2) — монотоннос- монотонностью, а условие 3) — идемпотентностью оператора замыкания. Подмпожество АСЕ называется замкнутым, если Л = (Л). Лемма 1. Пересечение любого семейства замкнутых подмножеств замкнуто. Доказательство. Пусть Л,; (г ? I) — семейство замкнутых подмно- подмножеств. Тогда в силу монотонности (П Л.;) С (Aj) = Aj для любого j ? I. i Отсюда получаем (Q Л;) С f]Ai, т. е. Q -А» = (П A-i) B силу направленности % % i i онератора замыкания. ? Через Sub E обозначим множество всех замкнутых подмножеств опе- оператора замыкания на Е. Ясно, что в силу направленности Е ? Sub E. Следствие 1. Sub-E — полная решетка относительно С. Доказательство. В SubE существует точная нижняя граница для любого семейства элементов — это их нересечение, а также имеется наибольший элемент Е (удобно считать, что наибольший элемент есть пересечение пустого семейства элементов). Как хорошо известно, в та- таком случае частично упорядоченное множество является полной решет- решеткой (т.е. существует и точная верхняя граница для любого семейства элементов). ?
50 4. Матроиды Заметим, что в Sub E операции пересечения Л и объединения V устро- устроены следующим образом А А В = АП В и AV В = (AU В). Пример. Пусть V — векторное пространство над телом F. Че- Через (А) обозначим линейную оболочку множества А С V. Очевидно, А —? (A) (A <ZV) — оператор замыкания на V, а решетка Sub V подпро- подпространств пространства V и есть решетка замкнутых подмпожеств. Матроидом или комбинаторной предгеометрией М{Е) называется не- непустое множество Е вместе с оператором замыкания А —? (А) [А С Е) такое, что 4) (аксиома замены) для любых р, q?EwACE из qg' (A) и q ? (A Up) вытекает р ? (AUq); 5) (аксиома существования конечного базиса) для любого АСЕ су- существует такое конечное множество В С А, что (В) = (А). Матроид М(Е) называется простым или комбинаторной геометрией, если 6) @) = 0 и ({р}) = {р} для любого реЕ. В дальнейшем мы будем отождествлять множество \р] с его элемен- элементом р, что не вызовет недоразумений, и будем писать (р) = р. Замкнутые подмножества матроида М{Е) будем называть его листа- листами или подпространствами. Ясно, что @) — наименьший лист в решетке листов SubU матроида М{Е). Лемма 2. Пусть А — лист матроида М{Е) up ? Е \ А. Тогда А С- (A Up) в решетке SuhE листов матроида М{Е). Доказательство. Очевидно, А С (A Up). Пусть В — такой лист, что А С В С (A U р). Возьмем элемент q ? В \ А. Тогда q 0 А = (А) и q ? {Аир). Откуда в силу аксиомы замены получаем р ? (Аи q) CB, т.е. AUpC В. Следовательно, (A Up) С В и поэтому В = (A Up). ? Следствие 2. Если р ? Е\ @), то (р) — атом решетки SnhE. Теорема 4.5 (Биркгоф и Уитни). 1) Решетка листов матроида является конечномерной геометрической решеткой. 2) Пусть L — конечномерная геометрическая решетка и Е — мно- множество её атомов. Для каждого А С Е положим (А) = {р?Е\р< VA}. Тогда множество Е вместе с отображением А —> (А) является простым матроидом, решетка листов которого изоморфна L.
4.2. Конечномерные геометрические решетки и матроиды 51 Доказательство. 1) Рассмотрим решетку Subi? листов некоторого матроида М(Е). В силу следствия 1 эта решетка полна. Она является точечной, так как A = v{(p)\peA\{<&)} для любого А ? Sub.E и но следствию 2 элементы (р), где р ? А \ @), есть атомы решетки Sub E. Покажем, что решетка SubU нолумодулярна. Пусть А, В — листы и А П В С- А. Возьмем элемент р ? А \ (А П В) — А \ В. Тогда А — — {(А П В) Up). Отсюда получаем и В О (В U р) по лемме 2, т. е. Bc-AV В. Проверим теперь, что SubU не содержит бесконечпых ценей. Покажем сначала, что Sub E не имеет счетных возрастающих цепей, т.е. SubU удовлетворяет условию обрыва возрастающих цепей. Пусть, от противного, Ai С А2 С ... — возрастающая цепь листов. В силу ак- аксиомы существования конечного базиса существует конечное множество В С у Ai такое, что {В) — {\J А;). В силу конечности В для некоторо- 8=1 «=1 го j 6 N выполпяется В С Aj. Тогда оо Aj+1 С ([J Ai) = (В) С Aj, что невозможно. Покажем теперь, что SubE не имеет счетных убывающих цепей, т.е. Sub E удовлетворяет условию обрыва убывающих цепей. Пусть, от про- противного, А\ Э А<2 Э ... — убывающая цепь листов. Для каждого г € N выберем элемент a,; G Ai \ A,;+i и положим А — {a\, a2, ¦¦¦}¦ Положим также В{ — {a.;, a;+i, ...} для любого г € N. Поскольку (B,;+i) С Af+i, для любого г 6 N вынолняется а,; 0 (-Bj+i). Предположим, что at ? {А \ щ) для некоторого t ? N. Тогда at e {Bi \ at) и at <? (Bt+i) — (Bt \ at) (здесь, очевидно, t ф 1). Отсю- Отсюда следует, что существует j 6 1, ..., t — 1 такое, что at ? (Bj \ at), at <? (Bj+1 \ at). Преобразуя первое условие, получаем at ? {{Bj+1 U a,-) \ a*} = {(Bj+1 \ at) U a,-). Теперь в силу аксиомы замены заключаем, что что невозможно.
52 4. Матроиды Мы установили, что at ?" (А \ at) для любого t ? N, но это противоре- противоречит аксиоме существования конечного базиса. Таким образом, SubS удовлетворяет условию обрыва возрастающих цепей и условию обрыва убывающих цепей. Пусть Р — произвольная цепь из SubS. В силу условия обрыва убы- убывающих цепей в Р имеется наименьший элемент А- Если Р \ {А} ф 0, то в Р \ {А} имеется наименьший элемент Ai. Если Р \ {Ах, А2} ф 0, то в Р\ {A, A2} имеется наименьший элемепт А3. Продолжая этот про- процесс, мы будем строить возрастающую цепь Ai С Ai С Аз С В силу условия обрыва возрастающих цепей процесс построепия возрастающей цепи завершится на некотором шаге, т. е. цепь Р конечна. Итак, в решетке SubS нет бесконечных цепей и мы завершили дока- доказательство утверждения 1). 2) Легко проверить, что отображение А —» (А) (А С Е) является оператором замыкания на множестве атомов Е конечномерной геомет- геометрической решетки L. Заметим также, что подмножество из Е замкнуто тогда и только тог- тогда, когда оно состоит из всех атомов, лежащих под некоторым элементом решетки L. Покажем, что выполпяется аксиома замены. Пусть q g" (А) и q ? (Лир) для некоторых р, q е Е и А С Е. Тогда в решетке L имеем q ¦$- У А и q < (VA) V р. Из этих условий вытекает р ¦$, V А Тогда в силу полумодулярности и леммы 2 из предыдущего раздела получаем У А <¦ (VA) V р и V А <¦ (VA) V q < (VA) V p. Следовательно, (yA)\/q = (\/Л)\/р и поэтому р < (VA)\/q, т.е. р? (Aliq). Проверим теперь аксиому существования конечного базиса. Пусть А С Е и А ф Ф. В интервале [О, WA] будем строить возрастающую цепь. Пусть для некоторого г ? N уже построепа цепь О — щ <¦ щ <¦...<¦ м,;_1 и И;_1 < VA Очевидно, существует атом р.; ? А такой, что р,; j? Ui-i- Положим щ = mj_i V Pi. Ясно, что щ_\ <щ < \/А, и мы получаем цепь О = щ <• щ <•...<• Mj_i <• щ. Так как в решетке L нет бесконечных цепей, указанный процесс постро- построения возрастающей цепи завершится на некотором шаге и мы получим цепь О = щ <¦ Mi <•...<• un = VA,
4.2. Конечномерные геометрические решетки и матроиды 53 где п 6 N. Положим В = {pi, ..., рп}. Мы имеем ВС4и VA = ип = и„_1 V рп = ип_2 V р„_1 V рп = ... = pi V ... V рп = VB. Следовательно, {А) = (В) и мы нроверили выполнение аксиомы сущест- существования конечного базиса. Итак, множество Е вместе с указанным оператором замыкания обра- образует матроид. Поскольку @) = {р е Е | р < V0 = 0} = 0 и (р) = {q ? Е | q < р} = р, этот матроид является простым. Рассмотрим отображение ф{и) = {реЕ\р<и} решетки L в решетку Sub В. Очевидно, это отображение сюрьективно. Оно инъективно, носкольку в силу точечности решетки L вынолняется и = Уф{и) для любого u e L. Следовательно, ф — биекция L па SublJ. Если Mi < «2 в L, то 0(мх) С 0(«2), и, обратно, если ф(щ) С ф(и2), то Таким образом, ф — изоморфизм решетки L па решетку Subi?. ? Заметим, что доказанная теорема говорит о том, что существует вза- взаимно однозначное соответствие между конечномерными геометрически- геометрическими решетками и простыми матроидами. В решетке Sub E листов матроида М(Е) в силу ее полумодулярнос- полумодулярности и отсутствия бесконечных цепей определена функция размерности. Листы размерности 1, 2 и 3 будем называть соответственно точками, прямыми и плоскостями. Пример. Пусть V — n-мерное векторное пространство над телом F. Решетка Sub V подпространств пространства V является конечномерной геометрической решеткой, поэтому по теореме Биркгофа-Уитни ей от- отвечает некоторый простой матроид, который называют векторной про- проективной геометрией PG(n — 1, F) над телом F. В заключение этого раздела обсудим без доказательства строение мо- модулярных конечномерных геометрических решеток. Пусть U — некоторое непустое множество элементов, называемых точками, а С — некоторое семейство подмножеств из Ы, называемых прямыми. Множество точек U и прямых С называется проективной гео- геометрией, если
54 4. Матроиды 1) через любые две различные точки проходит точно одна прямая; 2) любая прямая содержит не менее трех различных точек; 3) (аксиома Паша) если три точки а, Ь, с образуют треугольник, т. е. не лежат на одной прямой, и некоторая прямая I пересекает две стороны треугольника, по не в точках a, b, с, то опа пересекает и третью сторону треугольника. Рис. 17 Подпространством А нроективной геометрии называется такое её множество точек, которое вместе с любыми двумя различными точками из А содержит и прямую, проходящую через них. Введем попятие g-размерности или геометрической размерности для подпространств проективной геометрии. По определению точки имеют ^¦-размерность 0, а прямые — ^-размерность 1. Пусть А — произвольное подпространство ^-размерности к и р — точка, не лежащая в А. Объеди- Объединим все прямые, проходящие через р и точку из А. Получим, как нетруд- нетрудно установить, подпространство. Это подпространство по определению имеет ^--размерность к+1. Можпо нроверить, что понятие ^--размерности введено корректно. Добавим к нашим трем аксиомам еще одну аксиому: 4) U имеет конечную ^--размерность. Если U имеет ^-размерность т, то говорят, что проективная геомет- геометрия {U, С) имеет ^-размерность т. Пересечение любого семейства подпрострапств проективной геомет- геометрии, очевидно, является подпространством. Поэтому множество SubW всех подпространств проективной геометрии (Ы, С) является полной ре- решеткой относительно теоретико-множественного включения. Нетрудно доказать следующее утверждение. Теорема 4.6. Subt/ — модулярная конечномерная геометрическая решетка для любой проективной геометрии (U, С). Теорема 4.7. Любая проективная геометрия g-размерности т > 2 изоморфна векторной проективной геометрии PG(m, F) для некоторого тела F.
4.2. Конечномерные геометрические решетки и матроиды 55 Для проективных плоскостей, т. е. проективных геометрий ^-размер- ^-размерности 2, справедлива следующая Теорема 4.8. Проективная плоскость изоморфна векторной проек- проективной геометрии PGB, F) для некоторого тела F тогда и только то- тогда, когда она удовлетворяет аксиоме Дезарга: если два треугольника а\, a,i, а% и Ь\, Ъч, Ьз перспективны относитель- относительно некоторой точки v (т. е. для любого г — 1, 2, 3 прямая, проходящая через а,; и hit проходит и через v), то точки пересечения соответствен- соответственных сторон треугольника лежат на некоторой прямой I (рис. 18). Рис. 18 Заметим, что если для обычной евклидовой плоскости, во-первых, расширить мпожество точек, добавив семейство песобственных точек по одной для каждого пучка параллельных прямых, во-вторых, расширить каждую прямую, добавив несобственпую точку пучка параллельпых ей нрямых, и, наконец, в-третьих, расширить множество прямых, добавив одну песобственную прямую, состоящую из всех песобственных точек, то получим дезаргову (т. е. удовлетворяющую аксиоме Дезарга) проек- проективную нлоскость. Рис. 19 служит иллюстрацией для этого ностроепия. Теорема 4.9 (Биркгоф). Модулярные конечномерные геометричес- геометрические решетки исчерпываются прямыми произведениями конечного числа решеток вида SubU для проективных геометрий (U, С). Отметим, что в силу предыдущих теорем фигурирующие здесь пря- прямые множители Suhll представляют из себя решетки подпространств конечномерных векторных пространств над телами, за исключением слу- случаев, когда {U, С) — недезарговы проективные плоскости. К настоящему времени еще не получено полной классификации недезарговых проектив- проективных плоскостей.
56 4. Матроиды Рис. 19 Отметим также, что дистрибутивные конечномерные геометрические решетки исчерпываются копечными булевыми алгебрами. 4.3. Основные понятия теории матроидов Примем сначала важное соглашение: Всюду в дальнейшем мы будем рассматривать только конечные мат- роиды. Таким образом, матроид М(Е) для нас — это копечпое непустое мпо- жество Е вместе с отображением А —? (А) множества V{E) в себя, удов- удовлетворяющее аксиомам: 1) (направленность) А С (А) для любого АСЕ; 2) (монотопность) для любых А, В С Е А С В =>- (А) С (В); 3) (идемпотентпость) {{А)) = (А) для любого АСЕ; 4) (аксиома замепы) для любых р, q ? Е и А С Е Матроид называется простым, если он удовлетворяет следующей до- дополнительной аксиоме: 5) @) — 0 и (р) — р для любого р ? Е. Из доказанного ранее вытекает, что решетка Sub E листов (конечного) матроида М(Е) является конечной геометрической решеткой, т. е. она 1) копечна;
4.3. Основные понятия теории матроидов 57 2) точечна (любой её элемент есть объединение конечного числа ато- атомов); 3) полумодулярна. Перейдем теперь к рассмотрению основных понятий теории матрои- матроидов. Пусть М = М{Е) — произвольный матроид. Множество АСЕ называется независимым, если р ? (Л \ р) для любого р ? А (в про- противном случае множество А называется зависимым). Через Ind(M) или просто Ind будем обозначать множество всех независимых подмножеств из Е. Отметим, что 0 ? Ind. Лемма 1. 1) Любое подмножество независимого множества незави- независимо. 2) Пусть А — независимо и р ? Е \А. Тогда множество Лир неза- независимо в том и только в том случае, когда р ? (А). Доказательство. Утверждение 1) очевидно. 2) Необходимость условия следует из определения. Обратно, пусть р ? (А). Возьмем q ? А. Если q ? ((А \ q) U р), то на основании аксиомы замены и условия q $. (A\q) получаем р ? ((А \ q) U q) = (А). Таким образом, q ^ ((Л \ q) U р) и, очевидпо, р ^ ((Л U р) \ р), т. е. Ли р — независимое множество. ? Пусть Л — произвольное подмножество из Е. Любое максимальное независимое подмножество В, содержащееся в Л, будем называть базой множества А. Базы множества Е будем называть базами матроида М. Через Bs(M) или просто Bs будем обозначать совокупность всех баз мат- матроида М. Минимальные зависимые подмножества из Е будем называть циклами матроида М. Через Сс1(М) или просто Ccl будем обозначать множество всех циклов матроида М. Лемма 2. Для любого подмножества А из Е выполняется 1) (??) = (Л) для любой базы В множества А; 2) если I — независимое множество из А и В — база множества А, то \1\ < \В\; в частности, все базы множества А равномощны; 3) любое независимое подмножество, содержащееся в А, может быть расширено до базы множества А. Доказательство. 1) Пусть В — база множества А. Если р е А \ В, то В U р зависимо и поэтому р ? (В) в силу леммы 1. Следовательно, Л С (В), т.е. (Л) С (_В) С (Л). Откуда вытекает равенство (Л) — (В). 2) Если / С В, то, очевидно, |7| < \В\. Пусть р\ 6 I \ В. Тогда Pi & (Api) и множество BUpi зависимо. По лемме 1 имеем pi e (В). Сле- Следовательно, В ^ (I\Pi)- Тогда существует qi ? В такой, что q\ (? A\р\).
58 4. Матроиды В силу леммы 1 множество Д = (I \ p{) U q\ независимо и |/i| = \1\, \1\ П В\ > \1 П В\. Продолжая действовать аналогичным образом, мы найдем независимое множество It С В такое, что |/| = |7(| < |В|. 3) Очевидно. ? Рангом г (А) подмножества А из Е называется общая мощность всех баз из А. Число г = г(М) = г(Е) называется рангом матпроида М{Е). Лемма 3. Для любого подмножества А из Е выполняется 1H<г(А)<\А\; 2) г(А) = \А\ Ф> А — независимое множество; 3) г{А) — r{{A)) — dim((^4)), где dim — функция размерности в ре- решетке Sub Е листов матроида М. Доказательство. 1) и 2) очевидны. 3) Пусть В = {&!, ..., бд.} — база множества А. По лемме 2 имеем {В} = {А). Если р ? (А) \ В, то р ? (В) и множество В U р зависимо в силу леммы 1. Следовательно, В — база для (А) и мы получаем г(А) — В силу независимости В для любого i = 1, ..., к — 1 выполняется Тогда, применяя лемму 2 из предыдущего раздела, получаем цепочку покрытий @) С- (h) С- (Ьъ Ъ2) С- ... С- <&ь ..., Ь*> = {А), т.е. к — dim((^4)) в решетке Sub .Б. ? Пусть А — лист матроида М. Говорят, что множество Н С. А явля- является порождающим для листа А, если (Н) — А. Порождающие множества листа Е называются порождающими множествами матроида М. Лемма 4. Минимальные порождающие множества листа А и только они являются базами для А. Доказательство. =>. Пусть А = (Н) и В — база для Н. Так как г(Н) = г (А), В — база и для А. Тогда {В} = А и, следовательно, Н = В в силу минимальности Н. <i=. Пусть В — база для листа А. Тогда А — (В). Если Н С В и {Н) — А, то г (А) — г(Н) < г(В), что противоречиво. ? Лемма 5. Для любого А С Е и р ? Е выполняется 1) р ? (А) <=> р G А или существует I С А такое, что I ? Ind и I U р ? Ind; 2)р? (^4) <Фрб4 или существует С G Ccl такое, чтор ? С С AUp; 3)ре (А) Ф> r(AUp) = r(A).
4.4. Различные аксиоматизации матроидов 59 Доказательство. 1) Пусть р G (А)\А и В — база для А. В силу лем- леммы 3 имеем г(А) = г((А)), поэтому В — база и для (А). Следовательно, В U р (? Ind и, кроме того, В G Ind. Обратно, пусть I С А, I ? Ind и lUp ^ Ind. Множество /Up зависимо, поэтому в силу леммы 1 имеем р G (I) С (Л). 1) и 2) — эквивалентные утверждения. Это легко заметить, если вспомнить определение цикла. 3) Так как всегда (A U р) Э (Л), получаем р G (Л) эквивалентно (AUp) — {А), что, в свою очередь, эквивалентно r(AUp) — г (А) в силу леммы 3. ? 4.4. Различные аксиоматизации матроидов Теорема 4.10 (Аксиомы независимости). 1) Пусть М{Е) — матроид и Ind — семейство его независимых множеств. Тогда A.1) Ind ф 0; X С 7 G Ind влечет X е Ind для любого X; A.2) для любых I, J ? Ind таких, что \I\ < |J|7 существует р ? J\I, для которого I U р ? Ind; A.2') для любого АСЕ все максимальные в А независимые подмно- подмножества равномощны. 2) Обратно, пусть семейство Т подмножеств конечного непустого множества Е удовлетворяет условиям A.1), A.2) или, что эквивалент- эквивалентно, условиям A.1), A.2'), где I играет роль Ind. Тогда I совпадает с семейством независимых множеств однозначно определенного матроида на Е. Доказательство. 1) Свойство A.1) было уже отмечено в лемме 1 из предыдущего раздела, а свойство A.2') — в лемме 2. Применив A.2') к / U J, где /, J e Ind и |/| < \J\, получим A.2). 2) Обратно, пусть I удовлетворяет условию A.1), где вместо Ind фи- фигурирует Т. Легко видеть, что тогда A.2) эквивалентно G.2'). Поэтому будем считать, что выполняются все три свойства A.1), A.2) и A.2'). Общую мощность максимальных Х-подмножеств из А назовем Х-ран- гом множества А и обозначим через 1г(А). Зададим отображение А —»• (А) (А С Е), полагая для произвольного р ? Е: р ? (А) тогда и только тогда, когда р G А или существует I С А такое, что / G X и IU р ? X. Заметим, что в силу леммы 5 предыдущего раздела искомый оператор замыкания обязан быть таким. Свойства направленности и монотонности для заданного отображения очевидны.
60 4. Матроиды Прежде чем доказывать идемпотентпость, покажем, что для любо- любого А С Е выполпяется равенство 1г((А))= Пусть, от противного, существуют такие I, J el, что / С A, J С (А) \I\=lr(A)<lr((A)) = \J\. Тогда в силу A.2) найдется р ? J\I, для которого / U р ? X. Учитывая максимальность /, получаемр ? (А)\А. По определению (А) существует такое /' С А, что I'?l, I'Up^X. Очевидно, в силу A.1) можно считать, что Г является максимальным Х-мпожеством из А, т.е. \Г\ = \1\. Тогда Хг(А) = \Г\ < |/Up|. По условию A.2) существует q ? (/ U р) \ Г, для которого Г U q ? X. Если q ? I, то Г U q С А, что противоречит максимальности /'. Если q = р, то /' U р ? X, что противоречит выбору множества Г. Таким образом, Ir(A) =Ir((A}). Докажем идемпотентность нашего отображения, т. е. проверим, что ((А)) = (А) для любого АСЕ. Пусть, от противного, существует р ? ((А)}\(А). Возьмем некоторое максималное Х-мпожество В из А. Так как р ? (Л), по определепию замыкания (А) выполняется В Up ? 1. Следовательно, Хг((А)) = Щ({А))) >\B\Jp\= lr(A) + 1 = 1г((А)) + 1, что невозможно. Покажем теперь, что выполпяется аксиома замепы. Пусть АСЕ, р, q ? Е, q ^ (А) и q ? (A U р). Тогда по определению замыкапия существует I ? X, для которого I С Аи р и 11) q $. X. Так как q ? (А), мы имеем p?l, (I\p)Uq?l. Положим Г =(I\p)U q. Тогда /' ? X и /' U р <? X, т. е. р? (AUq). Итак, паш оператор замыкапия задает матроид М на Е. Накопец, А ?Х выполняется тогда и только тогда, когда р ? (А\р) для любого р ? А, что, в свою очередь, эквивалептпо условию А ? Ind(M). Таким образом, X — Ind(M). ? Условия A.1) и A.2) пазывают аксиомами независимости. Теорема 4.11 (Аксиомы баз). 1) Пусть М{Е) — матроид и Bs — семейство его баз. Тогда
4.4. Различные аксиоматизации матроидов 61 (B.I) Bs ф 0; если Вх, В2 ? Bs и Вх ф В2, mo Вх g В2 и В2 ? Bx; (В.2) если В\, В2 е Bs, то для любого Ьг е В\ существует Ь2 е В2 такой, что (Вх \b\)\Jb2 e Bs. 2) Обратно, пусть семейство В подмножеств конечного непусто- непустого множества Е удовлетворяет условиям (В.1) и (В.2), где В играет роль Bs. Тогда В является семейством баз однозначно определенного матроида на Е. Доказательство. 1) Свойство (В.1) очевидно, а свойство (В.2) выте- вытекает из A.2) и условия равномощности баз. 2) Обратно, пусть семейство В удовлетворяет аксиомам (B.I) и (В.2), где вместо Bs фигурирует В. Покажем сначала, что все Б-множества равномощны. Пусть Вх, В2?В. Без ограничения общности будем считать, что \Bi\ < \B2\. Пусть |??i| = t и Bi = {bi, h, ...,bt}. По аксиоме (В.2) существует С\ ? В2 такой, что id, Ъ2,..., bt} eB. Аналогично, существует с2 е В2 такой, что {сь с2, Ь3, ..., bt} е В. Продолжая этот процесс, получим {с1: с2, ..., Ct} ? В для некоторых сх, с2, ..., с4 ? В2. В силу аксиомы (В.1) получаем {сх, с2, ..., С(} — В2, т.е. \В2\ <t— \Вх\. Следовательно, \В2\ — \Вг . Подмножество А из Е будем называть В-независимым, если опо со- содержится в некотором й-множестве. Ясно, что В-мпожества — это мак- максимальные Б-независимые множества. Обозначим через I совокупность всех В-независимых множеств. Заметим, что семейство X удовлетворяет аксиоме независимос- независимости A.1). Для завершения доказательства теоремы достаточно проверить, что семейство X удовлетворяет аксиоме A.2) и воспользоваться теоре- теоремой 1. Пусть I, J ? X и\1\ < \J\. Зафиксируем базу В2, содержащую J. Сре- Среди баз, содержащих I, выберем такую базу Вх, для которой пересечение Вх П В2 содержит наибольшее возможпое число элементов.
62 4. Матроиды Покажем, что В\ \1 С В2. Действительно, если сущестует Ъ\ ? В\ \ I такой, что bi ^ В2, то по аксиоме (В.2) существует Ъ2 G В2, для которого В = (B^b^UbiGB и Ъх ф Ь2, так как Ь\ ? В2, а Ь2 ? В2. Тогда \В П В2| > I-Bi П В2\, что невозможно, поскольку I С. В. Таким образом, Bi\7, J С 52, причем |Si\/| + |J| = |Bi| -|J| + |J| > > \Bi\ — \B2\. Следовательно, существует р G (Si \ I) Г\ J. Так как /UpCB1HpgJ\/, элемент р является искомым. ? Заметим, что условие (В.2) называют аксиомой Штейница о замене. Примеры. 1) Пусть Е = {v\, ..., vm} — некоторое множество век- векторов векторного пространства V над телом F. Рассмотрим множество всех максимальных линейно независимых подмножеств из Е. Оно удов- удовлетворяет аксиомам баз (В.1) и (В.2), т.е. мы имеем матроид на ? с таким семейством баз. Этот матроид называют векторным матроидом над телом F. 2) Пусть G — произвольный ненулевой (п, т)-граф. Построим мат- матроид циклов графа G, который будем обозначать через M(G). В качестве основного множества Е возьмем EG, в в качестве баз этого матроида — остовы (точнее, каждая база — это множество всех ребер некоторого остова). Аксиома (В.1) очевидна, а аксиома (В.2) выполняется в силу леммы 4 из раздела 2.1. Ясно, что в этом матроиде независимыми мно- множествами будут ациклические мпожества ребер, а циклами — обычные циклы графа. Пусть М(Е) — произвольный матроид на множестве Е. Возьмем А С Е. В качестве системы независимых множеств на А рассмотрим независимые множества исходного матроида, содержащиеся в А. Ясно, что на А мы получили матроид, который обозначают че- через М(А) и называют подматроидом исходного матроида. Пусть Ei — конечное множество и ф — сюрьективпое отображение Е\ на Е. Определим следующим образом матроид М(Ег) на множестве Е\. Пусть г — ранг матроида М(Е). Семейство элементов {аг, ..., аг} С Е\ назовем базой, если {0(ai), ..., ф(аг)} — база матроида М(_Б). Очевидно, аксиомы баз выполняются и мы получили матроид М(Е1). При переходе от Е к Ei каждый элемент а из Е мы заменяем па некоторое конеч- конечное множество элементов (составляющих полный прообраз элемента а относительно ф). Для того чобы получить произвольную базу матро- матроида М(Ех) мы можем поступить следующим образом: берем сначала базу Ъ\, ..., Ьг матроида М(Е), а затем в полных прообразах элемен- элементов bi, ..., Ьг берем соответственно по одпому элемепту аг, ..., аг. Ана- Аналогично устроены и независимые множества матроида М[Е\). Можно
4.4. Различные аксиоматизации матроидов 63 мыслить себе, что матроид M(Ei) получен из матроида М(Е) с помо- помощью «размножения» элементов, т. е. заменой каждого элемента из Е на некоторое число его копий. Поэтому матроид M(Ei) будем называть раздуванием матроида М(Ё). Пусть V — векторное пространство пад телом F. Возьмем пекоторую систему векторов «1; ..., vm из V (возможно с повторениями векторов). Построим матроид М, отвечающий этой системе векторов. Матроид М будет иметь т элементов. Для простоты мы можем считать, что элемеп- тами матроида М являются элементы Vi, ..., vm, т.е. все они различны как элементы матроида М, но некоторые из них могут совпадать как элементы векторного пространства V. В качестве баз возьмем все мак- максимальные линейно независимые подсистемы из v\, ..., vm. Мы полу- получили матроид М, который, очевидно, является раздуванием некоторого векторного матроида над телом F. В дальнейшем раздувание векторного матроида над телом F также будем называть векторным матроидом над телом F. Пусть ' ап ai2 ... а1т ' О21 «22 • • • Ci2m \ ««1 ап2 ¦ ¦ ¦ апт ] — некоторая матрица над телом F. Строки матрицы А являются эле- элементами пространства векторов-строк Fm. Поэтому матрице А отвечает векторный матроид над телом F, состоящий из п элементов — строк мат- матрицы А. Этот матроид называют матроидом строк матрицы А. Отме- Отметим, что здесь строки с разными номерами являются разными элемеп- тами матроида, хотя пекоторые из них могут совнадать как элементы пространства Fm. Аналогично определяется матроид столбцов матри- матрицы А. Теорема 4.12 (Ранговые аксиомы). 1) Пусть М(Е) — матроид иг — его ранговая функция из V{E) в Nu{0}. Тогда для любых А, В С Е выполняется (г.1) 0 < г(Л) < |Л|; (г.2) АСВ-> г{А) < г{В); (г.З) г(А ПВ) + r(A UB)< г{А) + г(В). 2) Обратно, пусть некоторая функция г из Т'(Е) в Nu{0}, где Е — ко- конечное непустое множество, удовлетворяет условиям (г.1), (г.2) и (г.З). Тогда она является ранговой функцией однозначно определенного матро- матроида на Е.
64 4. Матроиды Доказательство. 1) Свойства (г.1) и (г.2) очевидны. Докажем (г.З). Ясно, что АП В С (А) П (В) и A U В С (А) V (В). Используя неравенство полумодулярности, которое выполняется в решетке листов, получаем г(А П В) + г (A U В) < г ((А) П (В)) + г {(А) V (В)) < < г ((А)) + г ((В)) = г (А) + г (В). 2) Обратно, пусть некоторая функция г из Т{Е) в N U {0}, где Е — конечное непустое множество, удовлетворяет условиям (г.1), (г.2) и (г.З). Подмножество 7 С В назовем г-независимым, если выполняется гG) — |7|. Обозначим через I множество всех r-независимых нодмно- жеств из Е. В силу (г.1) вынолняется г@) = 0, т. е. 0 ? X. Докажем, что семейство X удовлетворяет аксиомам независимос- независимости A.1) и A.2). Сначала проверим аксиому (I.I). Пусть 7 ? X и J С 7. Предположим, от противного, что r(J) < \J\. Тогда, используя (г.З) и (г.1), получаем |7| = г{1) = r{J U G \ J)) < r{J) + r(I \ J) - г@) < \J\ + \I\J\ = \I\, что невозможно. Следовательно, r(J) = \J\, т.е. J ? X. Прежде чем перейти к проверке аксиомы A.2), докажем следующее вспомогательное утверждение. Пусть В с А С Е, г (В) - \В\ и А \ В - {рг, ...,pt}. Если r(B D Pi) = \В\ для любого i = 1, ..., t, то г(А) = В\. Предположим, что r(B U p\ U ... U pj) = \В для некоторого j = = 1, ...,?— 1. Тогда, применяя (г.2) и (г.З), нолучаем \В\ = r(B) < r(BUpiU...Upi+i) < Следовательно, r{B Upi U ... Up^+i) = \В\. Теперь из доказанного, очевидпо, вытекает равепство г(Л) = = r(BUpiU...Up*) = |B|. Перейдем к проверке аксиомы A.2). Пусть 7, J ? I и |7| < \J\. Положим J \ I = {pi, ..., pt]. Пусть, от противного, I И Pi <? Т для любого i = 1, ..., t. Тогда для i = 1, ..., t имеет место т.е. rG U Pi) — |7|. Отсюда в силу доказапного нами вспомогательного утверждения получаем rGU J) = |7|. С другой сторопы, |7|<|J|=r(J)<rGUJ), что противоречиво.
4.4. Различные аксиоматизации матроидов 65 Итак, мы установили справедливость для X аксиомы A.2). Следовательно, семейство X является семейством независимых мно- множеств некоторого матроида М{Е) на множестве Е. Осталось проверить, что исходная функция г совпадает с ранговой функцией матроида М(Е). Для этого надо ноказать, что для любой ба- базы В нроизвольного множества АСЕ выполняется г(А) = \В\. Пусть В — база множества А С Е. По определению X имеем г (В) = \В\ и В — максимальное r-независимое подмножество из А. Ес- Если А — В, то равенство г(А) — \В\ очевидно. Поэтому будем считать, что В С А. Пусть А \ В — {pi, ..., pt}. В силу максимальности В для любого i — 1, ..., t множество В U Pi не является r-независимым, т.е. r(B Dpi) < \B Upi\. Тогда имеем |В| = r(B) < r(BUft) < \BUPi\ = \B\ + 1, т. е. г (В U Pi) — \В\ для любого i — 1, ..., t. В силу доказапного утверж- утверждения получаем г(А) — \В\. Теорема доказана. П Теорема 4.13 (Аксиомы циклов). 1) Пусть М(Е) — матроид и Ccl — семейство его циклов. Тогда (С.1) 0 ? Ccl; если Clt C2 <E Ccl и d ф С2, то d g C2 и С2 g Сг; (С.2) если С\, Сч 6 Ccl, С\ф С2 up 6 Ci(~)C2, то существует С ? Ccl такой, что С С (Ci U С2) \ р. 2) Обратно, пусть семейство С подмножеств конечного непустого множества Е удовлетворяет условиям (С.1) и (С.2), где вместо Ccl фигу- фигурирует С. Тогда семейство С совпадает с семейством циклов однозначно определенного матроида на Е. Доказательство. 1) Свойство (С.1) очевидно вытекает из определе- определения цикла. Для доказательства (С.2) достаточно проверить, что множество D = = (Ci U С2) \ р зависимо (тогда опо содержит минимальное зависимое множество — цикл). Так как DCCiU Ci, мы нолучаем r(D) < r{Cx U С2) < r(d) + r(C2) - r(Ct П С2) = = |Сх| - 1 + \С2\ - 1 - Id П С2\ = |d U С2\ - 2 < <|C1UG2|-1 = |JD|, т. е. D — зависимое множество. 2) Обратно, пусть семейство С удовлетворяет условию теоремы. Мно- Множество ICE назовем С-независимым, если оно не содержит ни одного из множеств С ? С. Через X обозначим семейство всех С-независимых множеств, содержащихся в Е. Проверим, что семейство С удовлетворяет аксиомам независимости A.1) и A.2).
66 4. Матроиды Поскольку 0 ^ С, имеем 0 6 I и аксиома A.1) очевидно выполпяется. Проверим справедливость аксиомы A.2) для семейства I. Предпо- Предположим, что существуют множества I, J ? 1 такие, что |7| < \J\, для которых A.2) певерно. Среди всех таких нар I, J выберем ту, у которой мощность \I U J\ минимальпа. Положим J\I = {pi, ..., pt}. Если t = 1, то, очевидно, I С J и утверждение A.2) выполняется. Поэтому име- имеем t > 2. В силу нашего нредноложепия I U pi ? I для любого i = 1, ..., t. Следовательно, существует С; ? С такое, что С; С J U р.;, и в силу С-не- зависимости множества I имеем р, 6 С, для любого г — 1, ..., ?. Ясно, что множества С\, ..., Ct попарно различны. Рассмотрим мпожество С\. Для пего верпо р\ G С\ С I U р\. В силу С-независимости J существует q\ ? I\ J такой, что q\ ? C\. Рассмотрим теперь множество (I \ qi) Upi. Если (/ \ qi) U pi ? I, то существует С" ? С, для которого pi ? С" С С(/\ qi)\Jpi, и, следовательно, в силу (С.2) существует такой циклС'еС, что C'cfduCUftCJ. Пришли к противоречию с условием I ? I. Пусть (I \ qi) Upi ? I. Заметим, что |((/\gi)Upi)UJ|<|/UJ|. Поэтому в силу выбора пары /, J, для пары (/ \ qx) Upi, J существует элемент pj, где j > 2, такой, что (I\qi)\JpiUpj el. Возьмем мпожество Cj G С. Для него выполняется pj G Cj С I U р^-. Если gi ^ Cj, то С^- С (/ \ gx) U р^ С (/ \ qi) U p\ U pj, что невозможно. Следовательно, gi G С,-ПСх и Cj ф С\. Тогда но аксиоме (С.2) существует С ? С, для которого С С (С,- U d) \ п1 С (Cj \ qi) U (d \ qi) С C((/\g1)Up,-)U((/\gi)Up1) = что невозможно. Итак, семейство 2Г удовлетворяет аксиомам независимости A.1) и A.2). Следовательно, существует матроид М{Е) на множестве Е, для которого семейство I является семейством Ind независимых множеств. Из определения С-независимости легко следует, что семейство С совпа- совпадает с мпожеством Ccl циклов матроида М(Е). Теорема доказана. ?
4.5. Двойственный матроид 67 Следствие 1. Пусть I — произвольное независимое множество мат- роида М(Е) и р 6 Е. Тогда I Up содержит не более одного цикла. Доказательство. Пусть в /Up содержится два различных цикла С\ и Сч- Очевидно, р 6 С\ П С2 в силу независимости множества /. Тогда по аксиоме (С.2) существует цикл С такой, что С С (CiUC2)\pC /, что невозможно. ? Следствие 2. Для любой базы В матроида М{Е) и любогор ? Е\В множество В U р содержит точно один цикл и этот цикл проходит че- через р. 4.5. Двойственный матроид Пусть М = М(Е) — произвольный матроид. Для X С Е через X бу- будем обозначать, как обычно, теоретико-множественное дополнение, т.е. X = Е \ X. Для произвольной базы В 6 Bs матроида М мпожество В будем называть его кобазой. Через Bs* обозначим множество всех кобаз матроида М, т.е. Bs* = {В \ В ? Bs}. Теорема 4.14. Множество Bs* всех кобаз матроида удовлетворяет аксиомам баз (В.1) и (В.2). Доказательство. Поскольку для любых X,Y<ZE условия 1СУи 1DF эквивалентны, аксиома (В.1) очевидно выполняется. Пусть теперь В1 и В2 — две кобазы и р G Вг. Так как р 0 В1, в множестве В\ U р имеется точно один цикл С. Поскольку цикл С не лежит в В2, существует q 6 С П В2. Множество (В1 Up) \ q не содержит циклов, так как мы разрушили единственный цикл, удалив элемент q. Поэтому это множество независимо и его мощность равна мощности ба- базы В\. Следовательно, [В\ U p) \ q — база. Тогда для соответствующей кобазы выполняется (Bi Up)\q = (B1Up)Uq = (B1 \p) U q, где q 6 В2. Таким образом, мы проверили аксиому Штейница о замене для кобаз. ? В силу доказанной теоремы семейство кобаз Bs* задает на Е матроид, в котором исходные кобазы играют роль баз. Этот матроид называется двойственным к матроиду М и обозначается через М* = М*{Е). Конеч- Конечно, (М*)* = М.
68 4. Матроиды Зависимые и независимые множества, циклы матроида М* называ- называются соответственно независимыми и конезависимыми множествами, ко- коциклами матроида М. Ранговая функция матроида М* называется ко- ранговой функцией матроида М и обозначается через г*. Очевидно, г{М)+г*{М) = \Е\. Пусть имеется некоторое утверждение о произвольном матроиде. Ес- Если в нем заменить все используемые матроидные понятия на соответ- соответствующие копонятия и наоборот, то мы получим утверждение, которое называется двойственным к исходному утверждению. Очевидно снра- ведлив Принцип двойственности. Если некоторое утверждение верно для любого матроида, то двойственное к нему утверждение также верно для любого матроида. Следующая лемма легко вытекает из определений. Лемма 1. Произвольное подмножество элементов матроида зависи- зависимо тогда и только тогда, когда оно имеет непустое пересечение с каждой кобазой. В силу принципа двойственности верно следующее двойственное утверждение. Лемма 2. Произвольное подмножество элементов матроида козави- симо тогда и только тогда, когда оно имеет непустое пересечение с каж- каждой базой. Лемма 3. Для любого непустого независимого множества ICE матроида М существует такой коцикл С*, что |7П С*\ = 1. Доказательство. Множество I можно продолжить до некоторой ба- базы В. Возьмем р ? I. Тогда В U р содержит точно один коцикл С*, для которого вынолняется С* П В = {р} = С* П I. ? Лемма 4. Для любого цикла С и любого коцикла С* справедливо усло- условие \СГ)С*\ ф\. Доказательство. Предположим, от противного, что СПС* — {р}. Поскольку в силу леммы 2 коцикл С* — это минимальное подмножество из Е, имеющее непустое пересечение с каждой базой, мпожество С — это максимальное подмножество из Е, не содержащее баз. Следователь- Следовательно, С* U р содержит некоторую базу В. Множество С \ р независимо и лежит в С Up. По аксиоме независимости A.2') существует база В\ такая, что
4.5. Двойственный матроид 69 (поскольку С U р содержит базу В, любое максимальное независимое подмпожество из С Up является базой матроида). Так как С не со- содержит баз, имеем р е В\. Следовательно, С С В\, что невозможно. ? Следующее утверждение нам понадобится в дальнейшем. Теорема 4.15. Подмножество X С Е является циклом матроида М тогда и только тогда, когда X есть минимальное множество среди не- непустых подмножеств из Е, удовлетворяющих свойству: \Х П С*\ ф\ для любого коцикла С*. Доказательство. Если X является циклом матроида, то в силу лем- леммы 4 он удовлетворяет требуемому свойству, а в силу леммы 3 имеет место необходимая минимальность. Обратно, нусть X — мипимальное множество среди непустых нод- множеств из Е, удовлетворяющих указанпому свойству. В силу леммы 3 множество X зависимо и, следовательно, содержит некоторый цикл С. На основании леммы 4 и минимальности X получаем X = С. ? Если на конечном непустом множестве Е в качестве единственной базы взять множество Е, то возникпет, очевидно, матроид, который на- называют свободным или дискретным матроидом на Е. Здесь Ind = V{E), r{A) = \А\ {А СЕ) и Ccl = 0. Матроид на Е, двойственный к свободному матроиду, называется тривиальным матроидом. Оп имеет единственное независимое множес- множество и едипственную базу — пустое множество, поэтому г (А) = 0 для любого АСЕ. Его циклами являются одноэлементные подмножества из Е. Пусть G — произвольный ненулевой (п, т, &)-граф. Рассмотрим мат- матроид циклов М — M{G) графа G на множестве Е — EG. Базами этого матроида будут мпожества ребер графа, составляющие его остовы. Оче- видпо, ранг матроида г{М) = п — к есть ранг графа G, а его коранг г*{М) = т — г{М) = т — п + к совпадает с цикломатическим числом графа G. Пусть В — некоторая база матроида М = M(G). Тогда соответству- соответствующую кобазу В называют еще и коостовом (это множество тех ребер графа, которые нужно отбросить из графа, чтобы получить его остов). В силу леммы 2 козависимые множества матроида M{G) — это те и только те множества ребер графа, которые имеют ненустое пересечение с каждой базой. Следовательно, козависимые множества из M{G) — это те и только те множества ребер, при стирапии которых в графе G
70 4. Матроиды разрушаются все остовы, т. е. увеличивается число компонент связнос- связности. Таким образом, козависимые множества из M(G) — это в точнос- точности разрезающие множества ребер графа, а тогда коциклы — это разре- разрезы! Следовательно, циклы и разрезы графа — это взаимно двойственные объекты. Матроид M*(G), двойственный к матроиду M(G), называют матроидом разрезов графа G. Отметим, что для любого дерева Т матроид М(Т) свободен, а матроид М*(Т) тривиален. Пример. Рассмотрим матроид циклов следующего графа: 2 Т^С е-, „ 3 е4 Рис. 20 Тогда 1) Е = {ei, е2, е3, е4, е{\ — основное множество матроида; 2) Вг = {е2, е3, е4}, В2 = {еь е3, е4}, В3 = {еъ е2, е4} — множество баз; 3) Si = {еь е5}, В2 = {е2, е5}, В3 = {е3, е5} — множество кобаз; 4) {ei, е2}, {ei, е3}, {е2, е3}, {e4} — множество коциклов, совпадаю- совпадающее с множеством разрезов рассматриваемого графа. 4.6. Жадный алгоритм Пусть Е — непустое конечное множество и ю — функция из Е в множество действительных чисел BL Число w(e) будем называть весом элемента е ? Е. Для любого ненустого АСЕ положим w(A) — ?) tu(e) ееА и будем называть w (А) весом множества А. Зафиксируем некоторое семейство I С V(E), в котором имеется хотя бы одно непустое множество. Будем смотреть на I как на частично упо- упорядоченное множество относительно теоретико-множественного вклю- включения. Для удобства элементы частично унорядоченного множества 1 будем называть объектами. Будем далее считать, что X удовлетворяет аксиоме независимос- независимости A.1), т.е. нодмножество объекта является объектом. Рассмотрим следующую задачу: В частично упорядоченном множестве объектов X построить макси- максимальный объект минимально возможного веса.
4.6. Жадный алгоритм 71 Исследуем, при каких условиях на семейство объектов следующий алгоритм решает поставлеппую задачу. Жадный алгоритм. 1) В качестве е\ выберем в Е элемент наимень- наименьшего возможного веса такой, что {ei} El. 2) Пусть элементы ei, ..., e,;_i уже выбраны. В качестве е* выберем в Е элемент наименьшего возможного веса такой, что е* ? {еь ..., ej_i} и {еь ..., ej ? I. 3) Выполняем 2) до тех пор, пока это возможно. Процесс обязательно завершится, и будет построен максимальный объект В — {ei, ..., ег} ? 1. Теорема 4.16. Пусть семейство объектов X удовлетворяет допол- дополнительно аксиоме независимости A.2), т. е. I является семейством Ind всех независимых множеств некоторого нетривиального матроида на Е. Тогда любое множество В, построенное жадным алгоритмом, будет мак- максимальным объектом минимально возможного веса. Доказательство. Пусть I — семейство независимых множеств не- некоторого нетривиального матроида М = М{Е) и объект В = {ei, ..., ег} построен жадным алгоритмом, как указано выше. Очевидно, В является базой матроида М. Пусть, от противного, В не является базой минимального возможно- возможного веса. Среди баз минимального возможного веса выберем базу В', для которой число \В П В'\ имеет наибольшее возможное значение. Так как В ф В', имеем В <? В'. Возьмем элемент е; с наименьшим номером такой, что е, ^ В'. Тогда {ei, ..., ej_i} С ВП В'. Множество В' U е, содержит точно один цикл С. Поскольку С ^ В, существует е ? С \В. Положим В" — (В' U е^ \ е. Отбросив е, мы разрушили единственный цикл в В' U е,. Следовательно, В" — независимое мпожество матрои- матроида М и \В"\ = \В'\, т.е. В" — база матроида М. Кроме того, очевидно, В" П В\ > \В' П В\. Поэтому w(B") > w(B') в силу выбора базы В'. Так как w{B") = w(B') + ю(е,;) — w(e), нолучаем ю(е,;) — w(e) > 0, т.е. w(e,;) > w{e). Последнее неравенство противоречит тому, что на г-м шаге жадного алгоритма был выбран элемент е,, а не элемент е, хотя е 0 {ei, ..., ej_i} СВи множество {ei, ..., е,_1, е} С В' независимо. ? Пусть G — связный неодноэлементпый граф. Рассмотрим на мно- множестве его ребер Е = E{G) некоторую весовую функцию то, которая каждому ребру е ставит в соответствие вес ребра то(е) ? Ш. Семей- Семейство I ациклических наборов ребер является семейством независимых множеств матроида циклов M{G) графа G. Базами этого матроида явля- являются, но существу, остовы графа G. В силу доказанной теоремы жадный
72 4. Матроиды алгоритм в данном случае строит остов минимально возможного веса в графе G. Следующее предложение показывает, что выполнение аксиомы неза- независимости A.2) необходимо для того, чтобы при любой весовой функции жадный алгоритм всегда строил бы в семействе объектов X максималь- максимальный объект минимально возможпого веса. Предложение 4.1. пусть семейство объектов X не удовлетворяет аксиоме независимости A.2). Тогда существует весовая функция w из Е в Ж, для которой любое применение жадного алгоритма строит в X мак- максимальный объект, не являющийся максимальным объектом минимально возможного веса. Доказательство. Пусть семейство объектов X не удовлетворяет ак- аксиоме независимости A.2). Тогда существуют I, J ? X такие, что t = \1\ < | ,]\ = t + 1, где t e N, и /Up ^ 1 для любого ре J \ I. Пусть \1 П J\ = s, где s е N U 0. Очевидно, s < t. В качестве весовой функции рассмотрим следующую функцию -1, ее I, s-t-0,5 T. T 0, e€E\(lUJ). Очевидно, s-t-0,5 -1 < — < 0. t-s + 1 При такой весовой функции w жадный алгоритм сначала обязательно вы- выберет все элементы множества /, а затем (возможно) выберет элементы из Е \ [I U J) и построит некоторое максимальное множество 1\ такое, что /С/] и w[I\) = W{I) = ~t- Заметим, далее, что w{J) = -s+{t+l-s)- S~*~°'5 = -t - 0, 5 < -t. t St 1 Расширим J до некоторого максимального в X множества J\. Тогда, очевидно, w{J\) < w(J) < w{I\). Следовательно, любое построенное жадным алгоритмом максималь- максимальное множество 7i пе является максимальпым объектом минимально воз- возможного веса. ? 4.7. Изоморфизмы матроидов Пусть Mi = M(Ei) и М2 = М(Е2) — два матроида. Биективное отображение ф из Ei на Е2 называется изоморфизмом матроида Mi на
4.7. Изоморфизмы матроидов 73 матроид М2, если для любого В С Е\ множество В является базой мат- роида Mi тогда и только тогда, когда его образ ф(В) является базой матроида М2. Очевидно, при изоморфизме циклы переходят на циклы, кобазы — на кобазы, независимые множества — на независимые мно- множества и т.д. Определение изоморфизма эквивалентным образом можно дать, ис- используя любое из основных матроидных понятий (базы, кобазы, незави- независимые множества, конезависимые множества, зависимые множества, ко- зависимые множества, циклы, коциклы). Приведем, для примера, опре- определение изоморфизма на языке козависимых множеств. Биективное отображение ф из Ег на Е2 называется изоморфизмом матроида Mi на матроид М2, если для любого А С Ei множество А ко- зависимо в Mi тогда и только тогда, когда его образ ф(А) — козависимое множество в М2. Мы будем писать Mi = M2 и говорить, что матроиды Mi и М2 изо- изоморфны, если существует изоморфизм матроида Mi на матроид М2. За- Заметим, что из Mi = Mi вытекает М\ = М2. Любой матроид, изоморфный векторному матроиду над телом F, так- также будем пазывать векторным над телом F. Очевидно, любой векторный матроид над телом F изоморфен матроиду столбцов некоторой матрицы над телом F. Действительно, в соответствующем копечномерном вектор- векторном пространстве надо взять базис и перейти от векторов, отвечающих элементам матроида, к их координатным столбцам. Матроид назовем графическим, если он изоморфен матроиду циклов некоторого ненулевого графа, и — кографическим, если он изоморфен матроиду разрезов некоторого ненулевого графа. Теорема 4.17. Матроид циклов М(G) ненулевого графа G изоморфен матроиду столбцов матрицы инцидентности I(G) над двухэлементным полем Z2. Доказательство. Для произвольного А С Е = E(G) через 1{А) обо- обозначим подматрицу матрицы / — I(G), составленную из столбцов, отве- отвечающих ребрам из А. Достаточпо доказать, что гапк/(Л) < \А\ тогда и только тогда, когда подграф (У, А) содержит цикл, где V = VG и А ф 0. Пусть С — цикл подграфа (V, А). Ранг матрицы /(^4) не изменится, если изменить нумерацию вершин и ребер. Перенумеруем вершины из V и ребра из А таким образом, чтобы вершины и ребра цикла С имели наименьшие возможные номера. Тогда матрица /(^4.) примет вид:
74 4. Матроиды где 1\ = 1{С). Для квадратной матрицы 1\ над полем TL^ выполняется det/i = 0, так как в каждом столбце матрицы 1\ имеется точно два элемента, равных 1, а остальные элементы равны 0. Следовательно, ранг матрицы 1(А) строго меньше числа ее столбцов, равного \А\, т.е. rank/(Л) <\А\. Обратно, нредположим, что ненулевой подграф (У, ^4) является ацик- ациклическим. Возьмем одну из нетривиальных компонент связности Hi этого подграфа. Изменим нумерацию вершин и ребер графа G. Одной из висячих вершин v± и инцидентному ей ребру графа Hi припишем номера, равные 1. Перейдем к графу Hi — vi. Опять одной из висячих вершин графа Hi — Vi и инцидентному ей ребру припишем номера, равные 2, и т.д. Так перенумеруем вершины и ребра компоненты связности Яь пока не останется точно одна вершина, которую мы занумеруем поз- позже. Затем аналогичным образом поступим со следующей нетривиальной компонентой связности Н2 графа (У, А) и т. д. В конце процесса зануме- занумеруем вершины, которые остались незанумерованными после обработки всех нетривиальных компонент связности графа (V, А). Матрица примет вид: 1 1 0 0 ... 0 \ * 1 0 ... 0 * * 1 ... 0 * * * * * * Очевидно, ее ранг равен числу столбцов, т.е. гапк(Л) = \А\. ? Теорема 4.18. Mampoud, двойственный к векторному матроиду над телом F, также является векторным над телом F. Доказательство. Очевидно, свободный и тривиальный матроиды яв- являются векторными над произвольным телом F. Они изоморфны матро- матроиду столбцов соответственно единичной и нулевой матриц подходящего порядка над телом F. Пусть М — произвольный петривиальпый и несвободный матроид, который является векторным над телом F, и г = г(М). Тогда в силу замечания, сделанного выше, М изоморфен матроиду столбцов некоторой (? х т)-матрицы Р над телом F. Ясно, что rankP = г и 0 < г < m. Рассмотрим следующую однородную систему линейных уравнений над пространством векторов-столбцов Fm\ РХ = 0. A)
4.7. Изоморфизмы матроидов 75 Пусть Xl, Х2, ..., Xm_r B) — базис пространства решений системы A). Составим из этих столбцов (т х (т — г))-матрицу Q = {Xi, х2,..., хт-г). Покажем, что матроид М* изоморфен матроиду строк матрицы Q над телом F. Отметим сначала, что rankQ = m — r = г(М*). Далее, вспомним, что базами матроида М* являются дополнения баз матроида М. Рассмотрим отображение ф, которое г-й столбец матрицы Р нереводит на i-ю строку матрицы Q. Покажем, что это отображение и есть искомый изоморфизм. Нам достаточно устаповить, что система каких-либо г столбцов мат- матрицы Р линейно независима тогда и только тогда, когда линейно неза- независима дополняющая ее система т — г строк матрицы Q. Дополняющая система строк — это система строк, номера которых дополняют номера столбцов исходной системы столбцов до множества {1, ..., т}. Возьмем произвольную систему из г столбцов матрицы Р. Для прос- простоты обозначений будем считать, что взяты первые г столбцов. Рас- Рассуждения в общем случае проводятся абсолютно аналогично, но требуют громоздких обозначений. Нусть Pi — это (t х г)-подматрица матрицы Р, составленная из взятых первых г столбцов. Рассмотрим однородную сис- систему линейных уравнений над пространством векторов-столбцов Fr: PXY = 0. C) Если столбцы матрицы Pi линейно зависимы, то система C) имеет ненулевое решение Y. Добавим к нему снизу т — г нулей, получим нену- ненулевое решение X системы A). Выразим X через базис B) нространства решений системы A): X = aiXi + a2X2 + ... + am_rXm_r, D) где среди коэффициентов есть хотя бы один ненулевой элемепт из F. Введем в рассмотрение столбцы из пространства Fm~r, полученные соответственно из столбцов Х\, Х2, ..., Хт-Г отбрасыванием первых г компонент. Составим из этих «урезанных» столбцов ((то — г) х (т — г))-матрицу: Qi = (-X"i, x2,..., хт_г).
76 4. Матроиды Матрица Qi — это квадратная матрица порядка m — г, которая является подматрицей матрицы Q и расположена внизу матрицы Q. Из равенст- равенства D) следует О = aiX[ + a2X'2 + ... + am-rX'm_r, F) т. е. система столбцов квадратной матрицы Qi линейно зависима. Тогда линейно зависима и система строк этой матрицы, т. е. линейно зависима система из m — г последних строк матрицы Q. Обратно, пусть система каких-либо m — г строк матрицы Q линейно зависима. Для простоты обозначений будем считать, что эта система состоит из последних m — г строк матрицы Q. Тогда линейно зависима система E) «урезанных» столбцов, составляющих матрицу Q\. Следова- Следовательно, некоторая нетривиальная линейпая комбинация F) «урезанных» столбцов равна 0. С помощью равенства D) определим столбец X. По- Поскольку система столбцов B) линейно независима, имеем X ф 0. Стол- Столбец X является решением системы A), так как он равен линейной ком- комбинации базиса пространства решений этой системы. Тогда столбец Y, полученный из столбца X отбрасыванием последних m — r нулевых ком- компонент, является непулевым решением системы C). Следовательно, ли- линейно зависима система из первых г столбцов матрицы Pi, что и требо- требовалось доказать. ? 4.8. Пространство циклов бинарного матроида Матроид называется бинарным, если он является векторным над по- полем 2^2- В силу результатов предыдущего раздела матроид циклов и матроид разрезов любого ненулевого графа являются бинарными матро- идами. Пусть М{Е) — произвольный бинарный матроид. Превратим V{E) в векторное пространство над полем Z2, полагая для любых X, Y ? Т(Е) X®Y = {XUY)\{XnY), 1-X = X, 0-Х = %. Очевидно, Т{Е) — векторное пространство над Z2 относительно симмет- симметрической разности ф и заданного умножения на скаляры из 1ч = {0, 1}. Обозначим через L(M) подмножество из V(E), состоящее из всех под- подмножеств множества Е, представимых в виде объединения попарно не- непересекающихся циклов матроида М (конечно, среди них будет пустое подмножество 0 и любой цикл матроида М). Зафиксируем некоторую базу В матроида М. Тогда для любого е ? В через Се обозначим един- единственный цикл, который содержится в множестве В Lie.
4.8. Пространство циклов бинарного матроида 77 Теорема 4.19. Пусть М = М(Е) — произвольный бинарный матро- ид. Тогда 1) L(M) — подпространство векторного пространства V{E)\ 2) {Се\е Е В} — базис пространства L(M) над полем 7Li\ 3) dimL{M) =r*{M). Доказательство. Поскольку М — векторный матроид над Z2, он изоморфен матроиду столбцов некоторой (/ х т)-матрицы Р над по- полем Z2. Пусть ф — соответствующий изоморфизм такой, что ф(е^) = piy, где Е = {ei, ..., ет}, а р,; — это г-й столбец матрицы Р. Для любого X С Е положим S{X) = Y, Ф(е), гДе суммирование ве- е€Х дется в пространстве векторов-столбцов WJ2. Конечно, мы считаем, что 5@) = 0, где 0 — нулевой столбец из 7П2. Из определения видно, что S(X LJ Y) = S(X) + S(Y) для любых двух непересекающихся подмно- подмножеств X, Y С Е. Покажем сначала, что для любого 1С? X EL(M)^S(X) = 0. Действительно, пусть С = {е,^, ..., e,;t} — цикл матроида М. Тогда его образ {ргъ, ¦ ¦., Pit} относительно изоморфизма ф будет минимальной линейно зависимой системой столбцов матрицы Р. Следовательно, неко- некоторая нетривиальная линейная комбипация этих столбцов равпа 0: aiPh + ... + atpit = 0. В силу минимальности системы столбцов все скаляры равны 1, т.е. S(C) = 0. Пусть теперь X = С\ U ... LJ Ct — объединепие попарпо не- нересекающихся циклов. Тогда S(X) = S(C\) + ... + S(Ct) = 0. Обратно, пусть X С Е, X ф 0 и S(X) = 0. Тогда система столбцов матрицы Р, соответствующая множеству X относительно ф, линейно зависима. Поэтому X — зависимое множество матроида М и, следо- следовательно, существует цикл С\ С X. Положим Х\ = X \ С\. Тогда 0 = S(X) = SiXt) + 5(Ci) = S(Xi). Если Хх ф 0, то существует цикл Ci С Х\. Положим Хч = Х\ \ Ci и т.д. Через несколько шагов множество X будет разбито в объединение семейства попарно ненересе- кающихся циклов. Проверим теперь, что L(M) — подпространство пространства V(E). Для этого достаточно доказать замкнутость L{M) относительно ф. Пусть X,Y e L(M). Тогда S(X) = S(Y) = 0 и мы получаем S{X ФУ)= S({X \(ХП Y)} 0{У \{ХП У)}) =
78 4. Матроиды = S{X \{ХП У)) + S{Y \{ХП У)) = = S{X \{ХП У)) + S{X П У) + S{X П У) + S{Y \{ХП У)) = = s(x) + s(y) = о, т.е. ХфУ еЦМ). Таким образом, L{M) — подпространство пространства V(E). Покажем теперь, что {Се \ е ? В} — базис пространства L(M). Сна- Сначала проверим, что эта система липейпо независима. Пусть е\, ..., et — произвольная система различных элементов из В. Тогда {еь ...,et}CCei@...@Cet, т.е. Cei Ф ... Ф Cet ф 0. Иными словами, любая нетривиальная линейпая комбинация векторов системы {Се | е € В} отлична от нуля. Покажем теперь, что {Се \е ? В} — система образующих простран- пространства L(M). Пусть X — произвольный непулевой элемент из L(M), т.е. X ф 0. Тогда X — зависимое множество и, следовательно, оно пе- пересекается с каждой кобазой. Положим Рассмотрим множество У = X © Сел ф ... ф CRt. Очевидно, У G L(M) и У П В = 0. Отсюда следует У = 0, т. е. X = Сел © ... ф Cet. Итак, {Се | е G В} - базис пространства L(M) и, следовательно, dimL(M) = \B\ =г*(М). ? Пространство L = L(M) называют пространством циклов бинарного матроида М = М{Е), а его базис {Се \ е G В} — фундаментальной систе- системой циклов относительно базы В. Так как матроид М* также бинарен, мы получаем пространство коциклов L* = L{M*) и фундаментальную систему коциклов {С*, | / G -В}, причем dimL* = r(M). Теорема 4.20. Пусть / G В и Се1, ..., Cet — множество всех цик- циклов фундаментальной системы, содержащих /. Тогда Доказательство. Положим X = {/, е%, ..., et}. Множество В U / содержит точно один коцикл Cj. Очевидно, X С В U /. Поэтому доста- достаточно установить, что X является коциклом. По теореме, двойственной к теореме 4.16, X является коциклом, если X есть минимальное мно- множество среди ненустых нодмножеств из Е, удовлетворяющих свойству X П С\ ф 1 для любого цикла С.
4.9. Пространство циклов и пространство разрезов графа 79 Пусть С — цикл. Он однозначно представим через фупдаментальпую систему циклов в виде где их, ..., us — попарно различные элементы из В. Рассмотрим два случая. 1. Пусть / ? С. Тогда / ? Сщ для некоторого щ, где i ? {1, ..., s} и {/, щ} С X ПС, т.е. \ХПС\ > 1. 2. Предположим теперь, что / 0 С. 2.1. Если / не входит ни в один из циклов СП1, ..., С„в, то Mi, ..., us g" X и X П С = 0, т. е. опять имеем \Х П С| ^ 1- 2.2. Пусть теперь / входит в некоторый из циклов СИ1, ..., С„а. То- Тогда / входит в четпое число указапных циклов. Следовательно, / ? Сщ и / ? С,ч для некоторых различных щ и м^. Тогда {щ, uf\ С X П С и опять |Х П С\ ф 1. Итак, мы установили, что |Х П С| ф 1 для любого цикла С. Проверим, что это условие парушается для собственпых непустых подмпожеств множества X. Пусть Y С X и Y ф 0. Рассмотрим два случая. 1. Предположим, что / 0 Y. Тогда Y С В и поэтому множество Y конезависимо. Согласно лемме, двойственной лемме 3 из раздела 6, су- существует такой цикл С, что \Y П С\ — 1. 2. Пусть / ? У. Тогда существует г ? {1, ..., t], для которого е,; 0 Y. Следовательно, Y П Се< = {/}, т.е. |У nCeJ = 1. Итак, X является коциклом и поэтому С? = X. ? 4.9. Пространство циклов и пространство разрезов графа Пусть G — произвольный ненулевой граф. Матроид циклов М = = М(С) и матроид разрезов М* = M*(G) графа G являются бинарны- бинарными матроидами. Рассмотрим подпространства L = L(M) и L* = L{M*) нространства V(E) над нолем Z%, где Е — EG. Пространства L и L* называют соответственно пространством циклов и пространством раз- разрезов графа G. Часто их обозначают соответственно через L(G) и L*{G). Зафиксируем некоторый остов В графа G (точнее, под В мы понима- понимаем множество ребер остова). Ребра графа, лежащие в 5, будем называть ветвями, а ребра, лежащие в В, — хордами. Базис {Се \ е ? В} про- страпства L(G) называют фундаментальной системой циклов графа G, а
80 4. Матроиды базис {С*. | / 6 В} — фундаментальной системой разрезов графа G. За- Заметим, что dimL(G) = r*(G) = m — п + к — это цикломатическое число (п, т, &)-графа G, a dimL*(G) = r(G) = п — к — его ранг. Отсюда легко выводится следующее утверждение. Лемма 1. Любой (п, т, к)-граф содержит не более 2т~п+к — 1 циклов и не более 2n~k — 1 разрезов. Пример. Рассмотрим следующий граф G и его остов В: 3 Применяя теорему 4.20, найдем фундаментальную систему разрезов, от- отвечающих этому остову: 1) {ei, е2}; 2) {е3, е2, е4, е6}; 3) {е7, е4, е6}; 4) {е5, еа, е8}. Из результатов раздела, посвященного эйлеровым графам, легко вы- вытекает следующее утверждение. Теорема 4.21. Пусть G — произвольный ненулевой граф. Множест- Множество ребер X С Е является вектором пространства циклов L{G) графа G тогда и только тогда, когда в реберно порожденном подграфе G{X) все компоненты связности являются эйлеровыми графами. Прежде чем изучить устройство векторов пространства разрезов гра- графа G, получим ряд вспомогательных результатов, часть из которых пред- представляет и самостоятельный интерес. Пусть А, В С V = VG. Через {А, В) будем обозначать множество ребер графа G, соединяющих вершины из А с вершипами из В. Пусть V — V\ LJ Vi — разбиение множества вершин графа G на два, возможно нустых, непересекающихся нодмпожества. Множество ребер (Vi, V2) бу- будем называть сечением графа G. Очевидно, любое сечение либо пусто, либо является разрезающим мпожеством ребер графа G. Лемма 2. Любой разрез графа является его сечением.
4.9. Пространство циклов и пространство разрезов графа 81 Доказательство. Пусть при удалепии ребер разреза S из графа G компонента связности Gi графа G разбивается на две комноненты связ- связности G[ и G'{. Положим Vi = VG[ и V2 = V\Vx. Очевидно, S = (Vi, V2>. П В пространстве V(E), где Е — множество ребер ненулевого графа G, зафиксируем канонический базис, состоящий из всех одноэлементных подмножеств множества Е: , ..., {em}. Пусть X,Y e V(E). Тогда X = ai{ei} © ... © am{em}, Y = ftjei} © ... © /3m{em} для некоторых a-y, ..., am, fa, ..., fim G Z2 = {0,1}. Заметим, что столбцы координат векторов X и Y в данном случае представляют из се- себя характеристические функции для подмножеств X и Y множества Е. Определим скалярное прозведенш в Т(Е), нолагая X • У = aift + ... + «„A, G Z2. Легко проверить, что определенное таким образом скалярное произведе- произведение линейно по каждой компоненте. Как обычно, назовем векторы X и У ортогональными и будем писать X ± У, если X ¦ У = 0. Очевидно, X ортогонально У тогда и только тогда, когда X и У имеют четное число общих ребер. Пусть W С V(E). Будем нисать X LU, если вектор X ортогонален любому вектору из U. Определим ортогональное дополнение UL множес- множества U, полагая UL = {X eV(E)\X LU]. Нетрудпо установить, что UL является ноднространством нространст- ва Т{Е). Лемма 3. Любой цикл ортогонален любому сечению графа. Доказательство. Пусть G — цикл, a S = (Vi, V2) — сечение гра- графа G, где VG = Vi U Vi- Зафиксируем один из двух обходов по циклу С. Начнем двигаться из некоторой начальной вершины v в направлении об- обхода по циклу С. Без ограничепия общности можно считать, что v ? Vi. Поскольку обход цикла заканчивается в вершине v, каждому переходу по ребру из Vi в V2 обязательно соответствует следующий за ним (через некоторое число шагов) переход по ребру из Vi в Vi. Таким образом, ребра из пересечения С П S разбиваются на пары, поэтому С и S имеют четное число общих ребер. ? На основании лемм 2 и 3 получаем
82 4. Матроиды Следствие 1. Любой цикл ортогонален любому разрезу графа. Теорема 4.22. L1 = L* и (L*I - L. Доказательство. Покажем сначала, что L 1 i*. Пусть X ? L и У e L*. Тогда для X и У существуют разложения У = соответственно через циклы и разрезы фундаментальных систем. Отсю- Отсюда в силу ортогональности циклов и разрезов вытекает x-y = с;) = о, т.е. НУ. Из доказанного получаем L* С L1 и L С (L*I. Из обратных вклю- включений докажем включение (L*I С L, другое включение проверяется аналогично. Пусть X G {L*I. Положим X П В = {ег, ..., et} (случай, когда ХГ\В — 0, мы не исключаем). Рассмотрим вектор У, заданный условием Y = Х(ВСел®.. ,®Cet (здесь У = X, если ХПВ = 0). Очевидно, УПЛ = 0, т.е. УС В. Кроме того, У ? (Ь*)х, так как Се1 ф ... ф Се( ? L С (L*)-1. Если У ^ 0, то У — непустое независимое множество и поэтому в силу леммы 3 из раздела 6 существует разрез С* такой, что \Y П С*\ = 1, т.е. У не ортогонален С*, что невозможно. Таким образом, У = 0 и, следовательно, X = Се1 ф ... ф Cet G L. О В связи с доказанной теоремой заметим, что нространство V(E) не всегда представимо в виде нрямой суммы поднространств L и L*. При- Примером может служить следующий граф: Рис. 22 Здесь множество {ei, e2, е3, е4} является одновременно и циклом и разрезом, т. е. L П L* не является нулевым подпространством и поэтому сумма L Q L* не является прямой суммой.
4.10. Монотонные полумодулярные функции 83 Лемма 4. Симметрическая разность сечений является сечением. Доказательство. Пусть V = ViUV2 = V3UV4, Si = (Vu V2) и S2 = — (^3) V4). ПОЛОЖИМ A = V1r\V3, B = V1r\Vi, C = V2nV3, D = V2nVi. Тогда 51 = {AClB,CClD} = (A, C) 0(A, D) i){B, C) 0{B, D), 52 = (AClC, BUD} = (A, B) Cl(A, D) \J(C, B) 0{C, D). Отсюда вытекает S1 ® S2 = (A, C) 0{A, B) U(B, D) LJ(C, D) = (A LJ D, В О С), где V — (A U D) LJ(B U С), т. e. Si 8 S2 является сечением. П Теорема 4.23. Пусть G — произвольный ненулевой граф. Тогда се- сечения графа G и только они являются векторами пространства разре- разрезов L*(G) графа G. Доказательство. Пусть S — сечение графа G. По лемме 3 сече- сечение S ортогонально любому циклу из фундаментальной системы циклов. Следовательно, S _L L. Откуда вытекает, что S ? L1- = L*. Обратно, нусть S ? L*. Тогда S нредставимо в виде симметрической разности разрезов из фундаментальной системы разрезов: s = c{®...®c;. Отсюда на основании лемм 2 и 4 получаем, что S является сечением. ? 4.10. Монотонные полумодулярные функции. Индуцированный матроид Пусть Е — ненустое конечное множество. Функция / из V(E) в Nu{0} называется монотонной полу модулярной функцией, если она удов- удовлетворяет ранговым аксиомам (г.2) и (г.З). Лемма 1. Пусть f — монотонная полумодулярная функция из V(E) в N U {0} такая, что /@) = 0. Тогда такими же свойствами обладает функция /+ из Т{Е) в N U {0}, заданная равенством для любого А С Е. Доказательство. Свойство /+@) = 0 выполняется очевидным обра-
84 4. Матроиды Проверим монотонность функции /+. Пусть А\ С А2 С Е. Тогда для произвольного U С А2 выводим f(U П \ {U П П Аг) + \АХ \ U\ < f{U) + \А2 \ U\, откуда очевидно вытекает /+(^i) < f+(A2). Далее, используя простые теоретико-мпожественпые рассуждения (см. рис. 23), нетрудно проверить, что для любых А\ С А С Е и Вг С В С Е имеет место равенство \{А П В) \ (Аг П Вх)\. Отсюда в силу полумодулярности функции / получаем U Bi) + |(Л U В) \ (Ах U Bi)|)+ п Вх) + |(Л п В) \ (Лх п В01). Теперь, используя полученпое перавенство, выводим f+(A) + f+(B) = min \A \ B\B1\)> > min (f(X) + \(AUB)\X - XCAUB, YCAnBKJ K /IV ^ \ + \(A П В) \ У|) = f+{A UB) + f+(A П B). ? Рис. 23
4.10. Монотонные полумодулярные функции 85 Следствие 1. Пусть f — такая же функция, как в лемме 1. То- Тогда f+(A) = \А\ в том и только в том случае, когда \U\ < f(U) для любого U С А. Доказательство. Пусть /A7) < \U\ для некоторого U С А. Тогда /A7) + \A\U\< \U\ + \A\U\ = \А\ и f+(A) < \А\. Обратно, если \U\ < /A7) для некоторого U С А, то f(U) + \A\U\> \A\. Кроме того, при U — 0 имеем /@) + \А \ 0| — \А\. Следовательно, f+(A) = \A\, если |I7| < f(U) для любого U С А. П Теорема 4.24 (Эдмондс). Пусть Е — непустое конечное множес- множество и f — монотонная полумодулярная функция из V(E) в Nu{0} такая, что /@) = 0. Зададим семейство X С V(E), полагая А ? X для произ- произвольного А С Е в том и только в том случае, когда \U\ < f(U) для любого U С А. Тогда семейство X является семейством всех незави- независимых множеств некоторого матроида Mf(E) на множестве Е, причем ранговая функция матроида Mf(E) совпадает с функцией /+, т. е. = mm{f(U) для любого АСЕ. Доказательство. Рассмотрим дополнение X семейства X в Т(Е), т. е. семейство всех подмножеств АСЕ, для которых существует U С А та- такое, что /A7) < \U\. Через С обозначим семейство всех минимальных членов семейства X. Ясно, что С состоит из всех минимальных нод- множеств АСЕ, для которых выполпяется неравепство f(A) < \A\. Очевидно, 0 ^ С в силу условия /@) — 0. Проверим, что семейство С удовлетворяет аксиомам циклов (С.1) и (С.2). Аксиома (С.1) верна в силу минимальности членов семейства С. Пусть Ci, С*2 € С, С\ ф С*2 и элемент р g Е лежит в пересечении С\ П С^. Тогда имеем |d| - 1 = |d \p| < /(d \P) < /(d) < |d|, т.е. /(d) — |d|~l И1 апалогично, /(С2) — |d|~ 1- Иснользуя очевидное неравенство /(d П d) ^ |d П d|> получаем /((d и с2) \Р) < /(d ис2) < /(d) + /(d) - /(d nd) < < |d|-H-|C2|-l-|dnC2| = |dUC2|-2< |(dUCj)\p|, т. e. (dUC2)\p ? X. Отсюда следует, что в множестве (d U d) \ P содер- содержится некоторое подмножество С, принадлежащее семейству С. Таким образом, для семейства С верна аксиома (С.2).
86 4. Матроиды Семейство С в силу теоремы 4.13 является семейством циклов неко- некоторого матроида Mf(E) на множестве Е. Очевидно, для этого матроида семейство X является семейством Ind независимых множеств. В силу следствия 1 для любого независимого нодмножества АСЕ матроида Mf(E) выполняется f+(A) = \А\. Если же А — зависимое подмножество из Е, то f(U) < \U\ для некоторого U С А и поэтому из определения функции /+ вытекает, что f+(A) < \A\. Таким образом, для любого АСЕ имеем 0 < f+(A) < \А\, т.е. функция /+ удовлетворяет ранговой аксиоме (г.1). Итак, функция /+ удовлетворяет всем трем ранговым аксиомам и, следовательно, является ранговой функцией точно одного матроида на множестве Е. В силу следствия 1 и онределения семейства I этот мат- роид совпадает с матроидом Mf(E), т.е. /+ — ранговая функция мат- матроида Mf(E). Осталось применить лемму 1. ? Полезно заметить, что если у произвольной монотонной полумодуляр- полумодулярной функции из V(E) в Nu{0} зпачение от пустого множества заменить на 0, то подправленная функция снова будет монотонной полумодулярпой функцией и к ней можпо нрименять доказанную теорему. Отметим, что теорема Эдмондса дает одип из наиболее полезпых ме- методов конструирования новых матроидов, в чем мы сможем убедиться в следующих двух разделах. 4.11. Трансверсальные матроиды Пусть G = (V, R) — двудольный граф, долями которого являются ненустые множества X и У, т.е. V = XLIY и любое ребро е ? R соединяет некоторую вершину из X с некоторой вершиной из Y. В даль- дальнейшем такой граф G мы будем записывать в виде G — (X, R, Y) или, что эквивалентно, в виде G = (У, R, X). Для удобства мы будем нисать кратко ху G R, если в R имеется ребро вида е = ху. Для нроизвольного АС X положим R{A) =\J{yeY\ayeR}. aeA Лемма 1. Функция f(A) — \R(A)\ из V(X) в Nu {0} является моно- монотонной полумодулярной функцией и /@) — 0. Доказательство. Условие /@) = 0 выполняется очевидным образом, и функция / монотонна, так как для любых А С В С X верно включение R(A) С R(B).
4.11. Трансверсальные матроиды 87 Предположим, далее, что А, В С. X. Тогда в силу соотношепий R{A U В) = R{A) U R{B) и R(A П В) С R(A) П Д(В) получаем < \R(A)UR(B)\ + \R(A)nR(B)\ = \R(A)\ + \R{B)\, т. е. функция / полумодулярна. ? В силу теоремы Эдмондса из предыдущего раздела функция /, ука- указанная в лемме, индуцирует матроид Mf(X) на множестве X. Будем обозначать этот матроид через Т(Х, R, Y). В матроиде Т(Х, R, Y) не- независимые множества А характеризуются условием: \U\ < \R{U)\ для любого U С А, а ранговая фупкция задается равенством: r(A) = mm(\R(U)\ + \A\U\). Любой матроид, изоморфный матроиду вида Т(Х, R, У), будем на- называть трансверсальным матроидом. Аналогичпо предыдущему, для любого В CY положим R(B)= \J{xeX\xbeR]. ьев Функция g(B) = \R{B)\ из V{Y) в Nu{0} индуцирует матроид Mg(Y) = = T(Y, R, X). Паросочетанием Р в двудольном графе G = (X, R, Y) называют та- такое множество ребер из R, что любые два различных ребра из Р не- несмежны, т.е. пе имеют общих концевых вершин. Через matchx(P) и matchy(P) будем обозначать множество всех концевых вершин ребер паросочетапия Р, лежащих соответственно в X и Y. Будем говорить, что мпожество А С X является частичной трансверсалъю в X, если А = matchx{P) для некоторого паросочетания Р графа G = (X, R, Y). Будем также говорить, что множество АС X может паросочетатъся с множеством В Q Y, если А = matchx(P) и В = matchy(P) для неко- некоторого паросочетания Р графа G — (X, R, Y) (конечно, здесь А и В — частичные трансверсали соответственно в X и Y). Заметим, что множество А С X является частичной трапсверсалью в X тогда и только тогда, когда существует инъективное отображение ф из А в Y такое, что аф(а) ? R для любого а ? А. Заметим также, что в число паросочетании мы включаем пустое па- росочетание, а в число частичных трансверсалей — пустую частичпую трансверсаль.
88 4. Матроиды Теорема 4.25 (Холл, 1935). Пусть G = (X, R, Y) — произвольный двудольный граф. Тогда множество А С X является частичной транс- версалъю в X в том и только в том случае, когда \U\ < \R(U)\ для любого U С А. Далее в этом разделе мы докажем более общее утверждение, из ко- которого будет вытекать теорема Холла, а пока приведем ряд следствий теоремы Холла. Следствие 1 (Эдмондс и Фалкерсон). Пусть G = (X, R, Y) — произвольный двудольный граф. Тогда 1) семейство частичных трансверсалей в X совпадает с семейством независимых множеств матроида Т(Х, R, Y); 2) семейство частичных трансверсалей в Y совпадает с семейством независимых множеств матроида T(Y, R, X); 3) матроиды Т(Х, R, Y) и T(Y, R, X) имеют одинаковый ранг, кото- который равен мощности наибольшего по числу ребер паросочетания графа G. Это утверждепие, в частности, говорит о том, что все максималь- максимальные частичные трансверсали в X и в Y равномощны. Однако, как нетрудно убедиться, максимальные паросочетапия двудольного графа G — (X, R, Y) могут быть не равномощны! Это означает, что семей- семейство всех паросочетаний графа G, вообще говоря, может не удовлетво- удовлетворять аксиоме независимости A.2), хотя и удовлетворяет аксиоме неза- независимости A.1). Ясно, что максимальные частичные трансверсали в X (соответственно в У) и только они представимы в виде matchx{P) (со- (соответственно в виде matcfiY(P)) для некоторого наибольшего по числу ребер паросочетания Р графа G. Следствие 2. Для двудольного графа G = (X, R, Y) существует час- частичная трансверсалъ в X мощности t, где 0 < t < \Y\, тогда и только тогда, когда \U\+t-\Y\<\R(U)\ для любого U С Y. Доказательство. Очевидно, частичная трансверсаль в X мощнос- мощности t, где 0 < t < \Y\, существует тогда и только тогда, когда ранг г матроида Т(Х, R, Y) больше или равеп t, т.е. когда ( Последнее неравенство эквивалентно условию: для любого [/СУ. D
4.11. Трансверсальные матроиды 89 Трансверсалъю в X двудольного графа G = (X, R, Y) называют такую частичную трансверсаль А в X, что \А\ = \Y\, т.е. такую частичную трансверсаль в X, которая может паросочетаться со всем множеством Y. Следствие 3. Для двудольного графа G = {X, R, Y) существует трансверсаль в X тогда и только тогда, когда \U\ < |.R(f7)| для любо- любого U СУ. Пусть G — (X, R, Y) — произвольный двудольный граф и/lCI. Множество D С XUY называется вершинным покрытием множества А, если любое ребро, соединяющее вершину из Л с вершиной из У, имеет не менее одпой концевой вершины в множестве D. Следствие 4. Пусть G = (X, R, Y) — произвольный двудольный граф иг — ранговая функция трансверсального матроида Т(Х, R, Y). Тогда для любого АС X выполняется 1) г{А) = \А\ - ma*8(U), где 8{U) = \U\ - \R{U)\ — дефект множес- множества U; 2) r(A) = mm\D\, где минимум берется по всем вершинным покры- покрытиям D множества А. Доказательство. 1) вытекает из следующего очевидного равенства, справедливого для любого U С А: (\R(U)\ + \A\U\) + (\U\-\R(U)\) = \A\. 2) Пусть ACXhD = XiUYi — некоторое минимальное вершин- вершинное нокрытие множества А, где Х\ С А и Y\ С Y. Тогда, очевидно, R(A \ Х\) С Yi и, следовательно, R(A \ Х\) = Yi в силу минимальнос- минимальности D. Поэтому D = XiURiAXXi) = R(U)U{A\U), где U = A\XV Таким обазом, все минимальные вершинные покрытия множества А содержат- содержатся среди вершинных нокрытий вида R(U) U (A \ U). Отсюда вытекает утверждение 2). ? Вершинным покрытием двудольного графа G = (X, R, Y) называется такое его множество вершин D, что каждое ребро графа G инцидентно хотя бы одной вершине из D. Иными словами, вершинное нокрытие графа G = (X, R, Y) — это вершинное нокрытие множества X (а также множества Y). Следующие два утверждения вытекают из следствия 4 при А — X и утверждения 3) следствия 1. Следствие 5 (Оре). В двудольном графе G = (X, R, Y) мощность наибольшего по числу ребер паросочетания равна \X\-S, где S — величина наибольшего из дефектов подмножеств множества X.
90 4. Матроиды Следствие 6 (Кениг). Б двудольном графе G = (X, R, Y) мощность наибольшего по числу ребер паросочетания равна мощности наименьшего по числу вершин вершинного покрытия. Важное значение для приложений теории графов имеет интерпрета- интерпретация систем множеств как двудольных графов. Рассмотрим последовательность <S = (Si, ..., Si) произвольпых под- подмножеств непустого конечного множества X, причем мы допускаем, что пекоторые из компонепт S; системы мпожеств <S могут повторяться. По- Положим Y = {1, ...,/}. Определим двудольпый граф G = (X, R, Y), задавая множество ребер R следующим образом: {х, у} е R ^ х е Sy для любых х ? X и у ? Y. Трапсверсаль в X графа G — (X, R, Y) в данном случае обычно называют системой различных представителей системы множеств S. Частичные же трансверсали в X — это системы различпых представителей подсистем системы множеств <S. Ипыми сло- словами, подмножество Т = {хг, ..., xt} С X, состоящее из t элементов, будет системой различных представителей некоторой подсистемы из S, если Х\ ? Ьу1, ..., Xt ? byi для некоторых нонарно различных индексов у\, ..., yt ? Y = {1, ...,/}. Если же t — I, то мы получаем систему различных представителей сис- системы множеств S. В качестве примера рассмотрим следующую задачу о свадьбах: пусть X — некоторое множество девушек, Y — некоторое множество юношей и G = (X, R, Y) — двудольный граф знакомств девушек с юно- юношами. При каких условиях всех юпошей можпо жепить таким образом, чтобы каждый из них был бы женат на знакомой ему девушке? Пусть Y = {yi, ..., у{\. Для каждого г = 1, ..., / через S{yi) обо- обозначим множество всех девушек, знакомых с юношей у,;. Мы получи- получили систему S = E(?/i), ..., S(yi)) подмножеств множества X. Пусть {xi, ..., х{\ — некоторая система различных представителей системы множеств S или, другими словами, трансверсаль в X двудольного графа G — (X, R, Y) такая, что Х\ ? S(yi), ..., xi ? S(yi). Теперь каждого юношу yi при i = 1, ..., / можно женить на знакомой девушке х,, т.е. задача о свадьбах разрешима. Обратно, если задача о свадьбах разреши- разрешима, то система множеств S имеет систему различных представителей, т.е. двудольный граф G — (X, R, Y) имеет трансверсаль в X. Критерий существования системы различных представителей для системы множеств S = (Si, ..., Si) легко получить, переформулировав следствие 3:
4.11. Трансверсальные матроиды 91 Система различных представителей системы множеств S сущест- существует тогда и только тогда, когда для любого t = 1, ..., I объединение любых t компонент системы S содержит не менее t элементов. Для непустого конечного множества X, в котором определена функ- функция веса элемептов w(x) G Ш (х G X), можно рассмотреть задачу поиска максимальной системы различных представителей минимально возмож- возможного веса для подсистем системы <S. В силу следствия 1 эту задачу реша- решает жадный алгоритм. Однако нетрудпо попять, что в дапном случае жад- жадный алгоритм является экспоненциальным алгоритмом! В дальнейшем мы покажем, что имеются и полипомиальные алгоритмы для решепия этой задачи. Перейдем теперь к рассмотрению важного для дальнейшего обобще- обобщения трансверсальных матроидов. Пусть G = (X, R, Y) — произвольный двудольный граф и на множес- множестве Y задан некоторый матроид M(Y) с ранговой функцией г. Определим функцию / из V{X) в N U {0}, полагая f{A) = r(R(A)) для любого А С X. Точно так же, как в доказательстве леммы 1, с ис- использованием свойств ранговой функции можно установить, что функ- функция / монотонна, полумодулярна и удовлетворяет условию /@) = 0. Сле- довательпо, по теореме Эдмондса фупкция / индуцирует матроид Mf(X) на множестве X. Будем обозначать этот матроид через T(X,R,M(Y)). В дапном матроиде независимые множества А С X характеризуются условием: \U\ < r(R(U)) для любого U С А, а ранговая фупкция задается равенством: r{A)=mm{r(R{A)) + \A\U\) (отметим, что ранговую функцию мы снова обозначаем через г, но это не приведет к недоразумениям). Подмпожество А С X будем пазывать независимой частичной транс- версалью в X, если оно может паросочетаться с независимым множест- множеством В матроида M(Y). Теорема 4.26 (Радо). Пусть G = {X, R, Y) — произвольный дву- двудольный граф и M{Y) — матроид на множестве Y. Тогда множество А С X является независимой частичной трансверсалью в X в том и только в том случае, когда \U\ < r(R(U)) для любого U С А.
92 4. Матроиды Доказательство. Импликация =>- очевидна. Действительно, в дан- данном случае А может паросочетаться с некоторым независимым мно- множеством В матроида M(Y). Рассмотрим произвольное подмножест- подмножество U С А. Оно может паросочетаться с некоторым независимым подмно- подмножеством D С В матроида M(Y) и, следовательно, \U\ = \D\,D С R(U) и \U\ < r(R(U)). Обратно, пусть \U\ < г(Д([/)) для любого f/Ci. Предположим спачала, что \R(p)\ = 1 для любой вершины р G А. Тогда для любых различных р, q ? А элементы из R(p) и R(q) раз- различны, так как г(Д(р) U R(q)) — г(Л({р, д})) > 2. Отсюда следует |Д(Л)| = \А\. Поскольку по условию теоремы \А\ < r(R(A)) < \R(A)\, получаем r(R(A)) = \R(A)\, т.е. множество R(A) независимо в матро- иде M(Y). Теперь ясно, что А — независимая частичная трансверсаль в X, которая может паросочетаться с независимым множеством R(A) матроида M(Y). Предположим, далее, что имеется вершина р ? А, для которой |Д(р)| > 2. Возьмем две различные вершины gi и q2 из R(p). Через Ri обозпачим множество ребер, получепное из R отбрасыванием всех ребер, соединяющих р с q\. Аналогично, обозначим через R^ множество ребер, полученное из R отбрасыванием всех ребер, соединяющих р с д2- Покажем, что хотя бы один из двудольпых графов Gi = (X, Ri, Y) и Gi = (X, R2, Y) удовлетворяет условию теоремы. Пусть, от противного, существуют множества U\, Ui С А\р, для которых Поскольку i?i(pU[/i) = (ii(p)\gi)UE(f/i) и R2(pUU2) = (R(p)\q2)UR(U2), имеют место соотношения Rt(p U U{) U R2(p U U2) = R(p Uf/iU U2), Ri(p U f/i) П R2(p U U2) D R(Ut) П R(U2) D R(UX П U2). Используя полумодулярность ранговой функции г матроида M(Y), ука- указанные соотношения и условие теоремы, выводим \Ui\ + \U2\ > г(Л!(ри U^) + r(R2(p U U2)) > > riR^pUU^U R2{pl)U2)) +r(R1(pUU1)r\R2(pUU2)) > > r{R(p U Ux U U2)) + r{R{Ux П U2)) > > 1 + \Ux U U2\ + \Ux П U2\ = 1 + | что противоречиво.
4.12. Дизъюнктное объединение и сумма матроидов 93 Таким образом, хотя бы один из двудольных графов G\ = (X, R\, Y) и G2 = (X, R2, Y) удовлетворяет условию теоремы. Продолжая приме- применять указанную процедуру отбрасывания ребер к двудольным графам, удовлетворяющим условию теоремы, мы в конце концов нридем к дву- двудольному графу G' = (X, R', Y), для которого выполняется условие те- теоремы, равенство |Д'(р)| = 1 для любого р G А и R! С R. Для такого двудольного графа G", как мы установили ранее, множество А является независимой частичной трансверсалью в X. Поскольку R' С R, мно- множество А будет независимой частичной трансверсалью и для исходного двудольного графа G. ? Заметим, что теорема Холла является частным случаем теоремы Ра- Радо, если в качестве матроида M(Y) взять свободный матроид на У'. Следствие 1. Пусть G = (X, R, Y) — произвольный двудольный граф и M(Y) — матроид на множестве Y. Тогда семейство независимых час- частичных трансверсалей в X совпадает с семейством независимых мно- множеств матроида Т(Х, R, M(Y)). Следующее утверждение доказывается аналогично следствию 2 тео- теоремы Холла. Следствие 2. Пусть G = (X, R, Y) — произвольный двудольный граф и M(Y) — матроид на множестве Y с ранговой функцией г. В X сущест- существует независимая частичная трансверсалъ мощности t, где 0 < t < \Y\, тогда и только тогда, когда \U\+t-\Y\<r(R(U)) для любого U С Y. 4.12. Дизъюнктное объединение и сумма матроидов В данном разделе мы докажем матроидными методами ряд достаточ- достаточно глубоких результатов теории графов, которые весьма трудно полу- получить обычными теоретико-графовыми методами. Прежде всего, опреде- определим две вспомогательные матроидные конструкции и изучим их свойс- свойства. Введем попятие дизъюнктного объедипения матроидов. Пусть М\ — = Mi(Ei), ..., Mt = Mt(Et) — произвольный набор матроидов на попар- попарно непересекающихся непустых конечных множествах Е1: ..., Et. Че- t рез В обозначим семейство всех конечных подмножеств В С LJ Е{ та- г—1 t ких, что В = U В,, где Д — база матроида Mi для каждого i = 1, ..., t.
94 4. Матроиды Очевидно, семейство В удовлетворяет аксиомам баз (В.1) и (В.2). Следо- t вательно, существует единственный матроид на множестве LJ Ei, для »=i которого В является семейством всех баз. Этот матроид называют дизъюнктным объединением матроидов Mi, ..., Mt и обозначают через t Mii).. .i)Mt или через U М,> Матроиды Mi, ..., Mt называют компо- компонентами указанного дизъюнктного объединения. Очевидно, матроид циклов любого ненулевого графа есть дизъюнкт- дизъюнктное объединение матроидов циклов его нетривиальных компонент связ- связности. Поэтому по аналогии с графами матроид называют связным, если его нельзя представить в виде дизъюнктного объединения его нодматро- идов. Из определения дизъюнктного объединения легко вытекает t Предложение 4.2. Пусть А = U А^, где А С Ei для каждого i = = 1, ..., t. Тогда t 1) А — независимое множество матроида О М; в том и только в том случае, когда каждое А{ — независимое множество матроида М,; t 2) г(А) = 53 ri(Ai), где г, ri, ..., rt — ранговые функции матроидов t О М.^ Mi, ..., Mt соответственно; i=l t 3) семейство циклов матроида U Mi равно объединению семейств циклов матроидов Mi, ..., Mt. Пусть теперь Mi = Mi(E), ..., Mt = Mt(E) — произвольный набор матроидов на непустом конечном множестве Е и ri, ..., rt — их ран- 4 говые функции соответственно. Очевидно, функция / = 5Z г>, является монотонной нолумодулярпой функцией из V(E) в N U {0} и /@) — 0. Матроид Mf{E), индуцированный функцией / на множестве Е, называ- называют суммой матроидов Mi, ..., Mt и обозначают через Mi + ... + Mt или t t через Y, ^. По теореме Эдмондса ранговая функция г матроида Y, М;, г=\ г=1 удовлетворяет соотношению для любого АСЕ. Теорема 4.27. Пусть 1) Mi = Mi{E), ..., Mt = Mt{E) — матроиды на непустом конечном множестве Е и ri, ..., rt — их ранговые функции соответственно;
4.12. Дизъюнктное объединение и сумма матроидов 95 2) М[ = M[(Ei), ..., M't = M{.(Et) — матроиды на попарно непересе- непересекающихся непустых конечных множествах Ег, ..., Et и г[, ..., r't — их ранговые функции соответственно; 3) ф{ — изоморфизм матроида М{ на матроид М[ для каждого i — = l,...,t. Зададим двудольный граф G = (Е, R, U ЕЛ, полагая R = {{p,4>i(p)}\peE, i = i,...,t}. Тогда t=l Доказательство. Обозначим через г' ранговую функцию матрои- да U М[. Матроид Т\Е, R, U М'Л, согласно определению из предыду- предыдущего раздела, индуцируется на Е монотонной полумодулярной функцией f(A) — r'(R(A)) (А С Е). Ясно, что для любого изоморфизма ф-i и для любого АСЕ имеет место г'^ф^А)) — г,(А). Используя этот факт, выводим f(A) = r\R{A)) = г'(.О фг t т. е. функции / и Y, ri совпадают. Отсюда следует заключение теоремы. П t Теорема 4.28 (Нэш—Вильяме). Пусть X) Mi — сумма матроидов Mi — Mi(E), ..., Mt — Mt(E) и ri, ..., rt — их ранговые функции соот- соответственно. Тогда для любого АСЕ следующие условия эквивалентны: t 1) А — независимое множество матроида Yj Mi\ г=1 t 2) А = U Ai, где каждое А; — независимое множество матроида М;; t 3) А = U А,, где каждое Ai — независимое множество матроида Mi. Доказательство. Импликация 3) => 2) очевидна. t 2) => 1). Положим / = Y, Тг- Возьмем произвольное подмножество t t U С А = U Ai. Тогда U = \J Ui для некоторых Щ С Ai (г = 1, ..., t). г=1 г=1
96 4. Матроиды Следовательно, \и\ < EN = ?>№) < J2n{u) = f(u), т.е. |[/| < /(С/) для любого U С. А. Полученное и означает, что А — t независимое множество матроида Mf — Y, Mi- i=i 1) =>¦ 3). Возьмем изоморфные копии М[ = М[{Е\), ..., М[ = M't(Et) матроидов Mi, ..., Mt, соответственно, на попарно непересекающихся непустых конечных множествах Ei, ..., Et. Для каждого i — 1, ..., t зафиксируем изоморфизм ф{ матроида М; = М^[Е) на матроид М- = ). По теореме 4.27 «=1 где G — [E, R, О ЕЛ — двудольный граф, указанный в теореме 4.27. v i=i ' t Пусть А — независимое множество матроида X) М^Е). Тогда в си- *=i лу предыдущего равенства матроидов множество А является независи- независимой частичной трансверсалью в Е. Следовательно, существует такое t инъективное отображение ф из А в U Ej, что {а, ф(а)} G R для любо- t го а € А и ф(А) — независимое множество матроида 0 Мг'(_Е,;). Ясно, t что ф (А) = О AJ, где AJ = Е^Г\ф{А) для любого г = 1, ...,*. В силу пред- предложения 4.2 каждое множество А\ независимо в матроиде М[{Е.^). Для каждого i = 1, ..., t возьмем множество А.; С Е такое, что ф{А^ = А!{. t Очевидно, ввиду инъективности отображения ф множество А = LJ А, есть объединение попарно непересекающихся множеств А;. Поскольку {а, ф{а)} G R для любого a G А, по определению ребер из R равенство ^j(A,;) = А'- влечет равенство 0.ДА;) = А!- для любого i = 1, ..., t. Так как 0,; — изоморфизм матроида М; на матроид М[, отсюда следует, что А{ — независимое множество матроида Mi для любого 1 = 1, .. ¦, t. Теорема доказана. ? Отметим, что в силу этой теоремы независимые множества суммы матроидов устроены аналогично тому, как устроены независимые мно- множества дизъюнктного объединения матроидов. Поэтому сумму матро- матроидов ипогда называют объединением матроидов. Заметим, однако, что указанная аналогия не имеет места для баз, циклов и ранговых функций.
4.12. Дизъюнктное объединение и сумма матроидов 97 Следствие 1. Пусть М = М(Е) — произвольный матроид на непус- непустом конечном множестве Е, г — его ранговая функция и t ? N. Тогда матроид М имеет t попарно непересекающихся баз в том и только в том случае, когда \E\A\>t.(r(E)-r(A)) для любого А С Е. Доказательство. Обозначим через t ¦ М сумму t экземпляров мат- матроида М. Этот матроид индуцируется функцией / = t • г на множес- множестве Е. Пусть г' — его ранговая функция. По теореме Пэш-Вильямса r'(t ¦ М) < t ¦ г(М). Поэтому матроид М имеет t попарно непересекаю- непересекающихся баз тогда и только тогда, когда r'(t • М) = t • г(М), т.е. когда A) + \E\A\)=t-r(E). Последнее равенство эквивалентно условию: t-r(A) + \E\A\ >t-r(E) для любого А С Е. Отсюда вытекает заключение следствия. ? Числом упаковкираск(М) матроида М = М{Е) называют наибольшее число попарно ненересекающихся баз в М. Следствие 2. Пусть М = М(Е) — произвольный матроид. Тогда ACE, r(A)<r(E)l-r(E) - t{j где Sub E — решетка листов матроида М. (Здесь через \_х\ обозпачается паиболыпее целое число, меньшее или равное числа х.) Доказательство. Заметим сначала, что для любого А С Е такого, что г(А) < г(Е), выполняется \Е\(А)\ \E\A\ r(E)-r((A))-r(E)-r(AY так как г(А) = г((А}). Теперь осталось воспользоваться следствием 1. ? Следствие 3. Пусть М = М{Е) — произвольный матроид на непус- непустом конечном множестве Е, г — его ранговая функция и t ? N. Тогда множество Е представимо в виде объединения t баз матроида М в том и только в том случае, когда \A\<t-r(A) для любого АСЕ.
98 4. Матроиды Доказательство. Опять рассмотрим матроид t ¦ М, равный сумме t экземпляров матроида М. Через г' обозначим его ранговую фупкцию. Множество Е представимо в виде объединения t баз матроида М тогда и только тогда, когда г'(? • М) — \Е\, т.е. когда mm(t-r(A) + \E\A\) = \E\. Последнее равепство эквивалентно условию \E\<t-r(A)+\E\A\ для любого АСЕ. Отсюда вытекает заключение следствия. ? Числом покрытия cov(M) матроида М = М{Е) будем называть наи- наименьшее число баз, объединепие которых равно Е. Яспо, что это попятие имеет смысл рассматривать лишь для матроидов без петель, т. е. эле- элементов, составляющих одноэлементные циклы. Следствие 4. Пусть М = М(Е) — матроид без петель и Sub E — его решетка листов. Тогда cov(M) = max \\X] = max Г-L-L-l. $ФАсе\ r{A)\ Hi^AeSnbEi r{A) I (Здесь через \х~\ обозначается наименьшее целое число, большее или равное числа х.) Доказательство. Заметим сначала, что для любого непустого АСЕ выполняется \А\ \{А)\ г(А) ~ г((А)У так как г(А) = г({А)). Осталось воспользоваться следствием 3. ? Пусть G — (V, Е) — произвольный ненулевой граф и А — непус- непустое подмножество ребер из Е. Через G{A), как прежде, мы будем обозначать подграф графа G, порожденный множеством ребер А, а че- через r(G(A)), n(G(A)), m(G(A)) и k(G(A)) будем обозначать соответ- соответственно ранг, число вершин, число ребер и число компонент связнос- связности графа G(A). Конечно, выполняются равенства m{G(A)) = \A\ и r{G{A))=n{G{A))-k{G{A)). Теорема 4.29. Пусть G = (V, Е) — произвольный ненулевой (п, т, к)-граф и t G N. Граф G имеет t реберно непересекающихся осто- остовов тогда и только тогда, когда т > t • (п — к) и для любого непустого множества ребер АСЕ выполняется m>t-(n-k) + \A\-t- {n(G(A}) -
4.12. Дизъюнктное объединение и сумма матроидов 99 Доказательство. Применим следствие 1 к матроиду циклов M(G) графа G. Базами этого матроида являются множества ребер, образую- образующие остовы графа G. При А = 0 неравенство из следствия 1 нримет вид \Е\ > t ¦ (п — к), т.е. m > t ¦ (п — к). Для ненустого же множества ребер АСЕ это неравенство записывается в виде гп-\А\ > t ¦ (п - к - r(G(A))), нескольку r(A) = r(G(A)). Отсюда вытекает заключение теоремы. ? Теорема 4.30. Пусть G — (V, Е) — произвольный ненулевой граф и t ? N. Тогда граф G представим в виде объединения t остовов в том и только в том случае, когда \A\<t-(n(G(A))-k(G(A))) для любого непустого множества ребер АСЕ. Доказательство. Применим тенерь следствие 3 к матроиду цик- циклов M(G) графа G. При А = 0 неравенство из следствия 3 тривиально выполняется. Для непустого же множества ребер АСЕ это неравенство записывается в виде \A\<t-r(G(A)). Отсюда вытекает заключение теоремы. ? Следующее утверждение можно вывести очевидным образом как из теоремы 4.29, так и из теоремы 4.30. Следствие 5. Пусть G — (V, Е) — произвольный ненулевой (n, m, к)-граф и t ? N. Тогда граф G является объединением t реберно не- непересекающихся остовов в том и только в том случае, когда т = t-(n—k) и для любого непустого множества ребер АСЕ выполняется \A\<t-(n(G(A))-k(G(A))). Пусть G — (V, Е) — связный граф без петель. Числом древовиднос- ти arb{G) графа G называется наименьшее число остовных деревьев, объединение которых равно G. Очевидно, число древовидности графа G совпадает с наименьшим числом его поддеревьев, объединение которых равно G, так как каждое поддерево связного графа содержится в некото- некотором его остовном дереве. Ясно также, что число древовидности связного графа G совпадает с наименьшим числом реберно непересекающихся ле- лесов, в объединепие которых раснадается граф G.
100 4. Матроиды Теорема 4.31 (Нэш-Вильямс). Пусть G = (V, Е) — связный неодноэлементный граф без петель. Для каждого натурального чис- числа t < \V\ обозначим через m(t, G) наибольшее возможное число ребер в связном подграфе графа G, содержащем t вершин. Тогда arblG) — max — v ' 2<t<|y|l t-1 2<t<\Vy Доказательство. Применим следствие 4 к матроиду циклов M(G) графа G. Покажем сначала, что, применяя следствие 4, мы можем ограни- ограничиться рассмотрением только тех непустых множеств ребер AGE, для которых G{A) является связным графом. Действительно, пусть граф G(A) есть дизъюнктное объединение своих компонент связности d = (V1,A1),...,Gk = (Vk,Ak) и щ = |Vi|, ...,n» = \Vk\, mx = = \Ai\, ..., т/с = \Ak\. Поскольку А ф 0, каждой вершине из G{A) инци- инцидентно хотя бы одно ребро и, следовательно, щ, ..., щ > 2. Положим df = -JM- для i = 1, ..., к и d = max d,;. Тогда, иснользуя равенства n'~L \<i<k r{G{A)) - r{Gi) + ...+ r{Gk) = m-l + ... + nk-l, выводим \A\ mi + ... + rut di(ni — 1) + ... + dk(nk — 1) r(A) щ -1 + ... + nk - 1 ni -1 + ... +nk - 1 \A\ -^ -, -v-» ^ = d = max rai — 1 + ... + nk — 1 i<i<k r(Ai) Из доказанного и следствия 4 вытекает заключение теоремы. ? Пример. Рассмотрим полный граф Кп при п > 2. Очевидно, m(f, .К„) = i(f — 1)/2 для любого натурального числа t < п. В силу тео- теоремы Нэш-Вильямса arb(Kn) — [га/2]. Таким образом, полный граф Кп представим в виде объединения [га/2] деревьев и не представим в виде объедипения меньшего числа деревьев. Иными словами, нолный граф Кп можно представить в виде объединения [га/2] реберно непересекающихся лесов и нельзя представить в виде объединения меньшего числа реберно непересекающихся лесов. Заметим, что граф, изображенный на рис. 24, является объединением двух деревьев (и даже цепей). Однако он не может быть представлен в виде объединения двух реберно пепересекающихся деревьев. Возникает вопрос: можно ли полный граф Кп представить в виде объедипения [га/2] реберно ненересекающихся деревьев? Ответ на этот вопрос положительный! Действительно, рассмотрим полный граф Кп при га > 2. Если число га нечетно, то [га/2] = (га + 1)/2 =
4.12. Дизъюнктное объединение и сумма матроидов 101 Рис. 24 = (п — 1)/2 + 1, поэтому, отбросив из Кп одну из вершин вместе со все- всеми инцидентными ей ребрами, мы сводим нашу задачу к полному гра- графу Kn-i с четным числом вершин. Пусть теперь число п четпо. Вос- Воспользуемся следствием 5. В данном случае m — п(п — 1)/2 и к — 1. В качестве t возьмем число п/2. Условие m — t ¦ (п — к) из следствия 5 выполпяется тривиально. Проверим, что для любого непустого множес- множества ребер А графа Кп верно неравенство \A\<t-(n(G(A))-k(G(A))). Пусть граф G(A) есть дизъюнктное объединение своих компонент связ- связ= {Vu Si), ...,G, = (У„Е. ma = ES\, где s = k(G{A)) и Vl|, ...,n, = |K|, .. + ns = n(G(A)). ности mi = Тогда имеем \A\=m1 + ... + m,< ni(ni - l)/2 + ... + n,(n, - < n(ni - l)/2 + ... + п(и8 - l)/2 = (п/2)(щ + ... + na - s) = = t.(n(G(A))-k(G(A))). Итак, в силу следствия 5 полный граф Кп при четном п представим в виде объединения t = п/2 реберно непересекающихся остовпых деревьев. На рис. 25 показано разбиение графа К? на 4 дерева, одно из которых есть остовное дерево графа Ку, составленное из всех ребер, инцидентных вершине v, а три других — остовные деревья (и даже цепи) графа Ке — = K7-v. Рис. 25
5. Планарность 5.1. Укладки графов, пленарные графы Пусть имеется некоторое пространство С (евклидова плоскость, трех- трехмерное евклидово пространство, сфера в трехмерном евклидовом про- пространстве, тор и т.п.), в котором определено понятие жордановой кривой, т.е. непрерывной кривой без точек самопересечения. Жордановы кри- кривые на плоскости обладают следующим важным свойством: Если L — замкнутая жорданова кривая на плоскости и и, v — две различные точки на ней, то любая жорданова кривая, соединяющая и и v, либо целиком лежит внутри области, ограниченной кривой L, за исключением точек и и v, либо — вне этой области, за исключением точек ни», либо пересекает L в некоторой точке, отличной от и и v. Замкпутая жорданова кривая L разбивает множество пе принадлежа- принадлежащих ей точек плоскости на две области — внутреннюю и внешнюю, при- причем любая жорданова кривая, соединяющая точку внутренней области с точкой внешней области, обязательно нересекает кривую L, т. е. имеет с ней общую точку. Обсуждение свойств жордановых кривых можно най- найти в учебниках по университетскому курсу математического анализа. Говорят, что граф обладает укладкой в пространстве С, если он изо- изоморфен графу, вершинами которого являются некоторые точки про- пространства, а ребрами — жордановы кривые из С, соединяющие соот- соответствующие вершины, нричем 1) кривая, являющаяся ребром, не проходит через другие вершины графа, кроме вершин, которые она соединяет; 2) две кривые, являющиеся ребрами, пересекаются лишь в вершинах, инцидентных одновременно обоим этим ребрам. В таком случае кратко говорят, что кривые, представляющие ребра, «не имеют лишних нересечений». Соответствующий граф, составленный из точек пространства и жордановых кривых, называют укладкой исходного графа. Теорема 5.1. Любой граф обладает укладкой в трехмерном евклидо- евклидовом пространстве. Доказательство. Построим укладку для заданного графа. Возьмем в пространстве некоторую прямую / и рассмотрим пучок плоскостей, проходящих через /. Вершинам графа поставим в соответствие взаимно однозначным образом некоторые точки прямой /. Для каждого ребра гра- графа выделим отдельную плоскость, проходящую через /. Изобразим ребро графа в его плоскости полуокружностью, соединяющей две соответству- соответствующие концам ребра точки нрямой /, если ребро не является нетлей, и —
5.1. Укладки графов, пленарные графы 103 окружностью, проходящей через точку, соответствующую вершине v, ес- если ребро является петлей в вершине v. Очевидпо, мы получим укладку исходного графа. ? Как мы увидим далее, не всякий граф обладает укладкой на евклидо- евклидовой плоскости. Граф называется планарным, если он обладает укладкой на плоскости. Всевозможные укладки пленарных графов на плоскости будем называть плоскими графами. Теорема 5.2. Граф G планарен тогда и только тогда, когда он об- обладает укладкой на сфере. Доказательство. Рассмотрим укладку графа G па сфере. Возьмем на сфере точку N, не лежащую ни на одном из ребер укладки и пе яв- являющуюся вершиной. Назовем точку N северным полюсом. В южпом полюсе (который определяется естественным образом) проведем каса- тельпую плоскость к сфере. Спроектируем из точки N на плоскость все точки сферы, проводя всевозможные лучи из N через точки сферы до плоскости. Ясно, что проекция укладки на сфере даст нам укладку исходного графа на плоскости. Обратно, рассмотрим укладку графа G на плоскости. Возьмем сферу, которая касается данной плоскости. Назовем точку касания южным по- полюсом. Северный полюс обозначим через N. Спроектируем теперь все точки плоскости на сферу, проводя всевозможные лучи от точек плоскос- плоскости через точки сферы до точки N. Ясно, что при этом укладка графа G с плоскости будет перенесена на некоторую укладку графа G на сфере. ? Плоский граф G разбивает плоскость на несколько областей, назы- называемых его гранями. Более точпо, рассмотрим множество точек, дизъ- дизъюнктных к G, т.е. не являющихся вершинами и не лежащих на ре- ребрах нлоского графа G. Онределим отношение р на множестве точек, дизъюнктных к G, полагая ири в том и только в том случае, когда и можно соединить с v жордановой кривой, целиком состоящей из точек, дизъюнктных к G. Ясно, что отношение р является отношением экви- эквивалентности, у которого имеется конечное число классов. Эти классы и называют гранями плоского графа G. Отметим, что одна из граней не- ограничепа. Ее пазывают внешней гранью, а остальные грапи называют внутренними гранями. На рис. 26 изображен плоский граф, имеющий 6 граней, которые обозначены буквами от А± до Ад, причем Ад — это внешняя грань. Далее плоский (п, т, &)-граф, имеющий / граней, будем называть (п, т, к, /)-графом.
104 5. Планарность Рис. 26 Отметим, что понятие грани для укладок графа на сфере вводится аналогичным образом. Лемма 1. Для любого выделенного ребра планарного графа найдется такая укладка этого графа на плоскости, что выделенное ребро будет лежать на границе внешней грани. Доказательство. Сначала возьмем укладку графа на сфере. Потом в качестве северного полюса выберем дизъюнктную точку N в грани, на границе которой лежит выделенное ребро. Затем спроектируем из N укладку на сфере на укладку на плоскости, касательной к сфере в юж- южном полюсе. Полученная укладка на нлоскости обладает нужным пам свойством. ? Лемма 2. Если к планарному графу добавить новую петлю или новое кратное ребро, то получится планарный граф. Доказательство. Используя лемму 1, возьмем такую укладку гра- графа на плоскости, что выделенная вершина или выделенное ребро лежит на границе внешней грани. Затем, нользуясь свойствами жордановых кривых, проводим во внешней грани требуемое ребро. ? 5.2. Формула Эйлера для плоских графов Теорема 5.3. Пусть G — плоский (п, т, к, /)-граф. Тогда т — п + к = f — 1. Доказательство. Если т = 0, то п = к и / = 1, поэтому доказывае- доказываемая формула справедлива. Пусть формула верна для любого плоского графа, содержащего менее т ребер, и т > 0. Рассмотрим плоский (п, т, к, /)-граф G. Предпо- Предположим, что в графе G имеется ребро е, не являющееся мостом. Тогда оно содержится в некотором цикле и поэтому обязательно лежит на гра- границе двух граней. Очевидно, если удалить из графа ребро е, то эти две грани сольются в одну грань. Следовательно, граф G — е — это нлоский (п, т — 1, к, f — 1)-граф. Тогда по предноложению индукции / — 2 = (т — 1) — п + к, т. е. / — 1 = т — п + к.
5.2. Формула Эйлера для плоских графов 105 Предположим теперь, что все ребра графа G являются мостами. Тог- Тогда G является лесом и в G имеется висячее ребро е. Очевидно, при уда- удалении ребра е число граней графа не изменяется. Следовательно, граф G — е — это плоский (п, т — 1, к + 1, /)-граф. Тогда по предположению индукции / — 1 = (т — 1) — п+ (к + 1) = т — п + к. ? Заметим, что в доказанной теореме утверждается, что цикломатичес- кое число плоского графа равно числу его внутренних граней. В такой формулировке эту теорему можно доказать следующим образом, исполь- используя пространство циклов графа G. Легко понять, что каждой внутренпей грапи плоского графа G от- отвечает вектор пространства циклов L(G), состоящий из ребер, отделя- отделяющих эту внутреннюю грань от других граней. Такой вектор называ- называют циклическим вектором, отвечающим данной грани. Очевидно, сим- симметрическая разность любого набора таких векторов не пуста, так как она совпадает с границей области, равной объединению соответствующих грапей, т.е. набор всех векторов, отвечающих внутренним грапям, яв- является липейно пезависимым. Кроме того, для любого цикла С графа G область, лежащая внутри цикла С, является объединением некоторого множества внутренпих грапей, поэтому цикл С является симметричес- симметрической разпостью векторов, отвечающих впутренним граням из этого мно- множества. Следовательно, совокупность всех / — 1 векторов, отвечающих внутренним грапям графа G, есть базис пространства L(G). Поскольку dimL{G) = r*{G) = т — n + k, получаем / — 1 = m — n + к. Следствие 1 (Эйлер, 1752). Пусть n, m и f — соответственно число вершин, ребер и граней некоторого выпуклого многогранника в трех- трехмерном евклидовом пространстве. Тогда п — т + f = 2. Доказательство. Спроектируем многогранник па сферу, внутри ко- которой он лежит, проводя всевозможные лучи из точки, лежащей внутри многограпника. На сфере возникнет (п, т, 1, /)-граф. Примепяя к нему теорему, получим требуемое равенство. ? Следствие 2. Пусть G — связный планарный обыкновенный (п, т)-граф и п > 3. Тогда т < Зп — 6. Доказательство. Можно считать, что G — плоский граф. Поскольку G является обыкновенным графом, каждая его грань грапичит пе менее чем с тремя ребрами. Пусть, двигаясь вдоль границы i-й грани, мы пройдем /j ребер, где i — 1, ..., / и / — число граней графа G. Очевидно, li+... + lf = 2т. Так как /.; > 3 для i = 1, ...,/, мы получаем 3/ < 2т. Поскольку в силу теоремы f = т — п + 2, отсюда вытекает Зт —Зп + 6 = = 3/ < 2т, т. е. т < Зп - 6. ?
106 5. Планарность Следствие 3. Граф непланарен. Доказательство. Пусть граф /Г3,з планарен. Будем считать его плоским графом. Поскольку .ЙТз,з является двудольным графом, все его замкнутые маршруты имеют четную длину. Далее, рассуждая как в до- доказательстве следствия 2, получаем /^ > 3, откуда вытекает h > 4 для i = 1, ..., / и 4/ < 2т, т.е. 2/ < т. В силу теоремы / = 9 — 6 + 1 + 1 = 5, поэтому 10 = 2/ < m = 9. Пришли к противоречию. ? Рассмотрим следующую популярную задачу-головоломку. На одпой стороне улицы имеются три дома, а на противоположной — три колодца. Три соседа, живущих в этих домах, поссорились и решили протоптать тропинки от каждого дома к каждому колодцу таким об- образом, чтобы тропинки не пересекались (см. рис. 27). Могут ли они сделать это? Рис. 27 Следствие 3 говорит нам, что сделать это невозможно! Следствие 4. Граф К5 непланарен. Доказательство. Граф К5 имеет 5 вершин и 10 ребер. Если оп пла- планарен, то по следствию 2 получаем 10 < 3 • 5 — 6 = 9, что невозможно. ? Следствие 5. В любом планарном обыкновенном графе имеется вер- вершина, степень которой меньше или равна 5. Доказательство. Без ограпичения общности можпо считать, что граф G связен и число его вершин п больше или равно 7. Пусть т — число его ребер. Если degv > 6 для любой вершины v, то в силу леммы о рукопожатиях и следствия 2 выполняется Gn<Y,degv = 2m< 2Cга - 6) = 6п - 12, V что противоречиво. ?
5.3. Критерий планарности графа 107 5.3. Критерий планарности графа Будем говорить, что граф G получен из графа G включением вершины степени 2, если в графе G одно из ребер е = uv (равенство и = v не исключается) замепено на два новых ребра е\ = uw и е^ = wv, где w — новая вершина степени 2, а остальные вершины и ребра остались без изменения. На рис. 28 ноказан пример получения графа с номощью процедуры включения вершины степени 2. Рис. 28 Процедура, обратная к процедуре включения вершины степени 2, на- называется исключением вершины степени 2. Будем говорить, что граф Gi гомеоморфен графу G2, если G\ можно получить из G2 с помощью конечного числа применений процедур вклю- включения и исключепия вершин степени 2. Ясно, что отношение «быть гомеоморфными» является отношением эквивалентности для графов. Очевидно, если граф планарен, то любой граф, гомеоморфный его подграфу, также планарен. На рис. 29 изоб- изображен граф Петерсена G и его подграф Н. Так как граф Н гомеомор- гомеоморфен К33, граф Петерсена ненланарен (см. следствие 3 нредыдущего раз- раздела). G Н Рис. 29 Теорема 5.4 (Понтрягин, Куратовский). Граф планарен тогда и только тогда, когда он не содержит подграфов, гомеоморфных К5, и не содержит подграфов, гомеоморфных К^.з- Доказательство. Необходимость условия теоремы вытекает из след- следствий 3 и 4 нредыдущего раздела.
108 5. Планарность Будем доказывать достаточность условия теоремы. Предположим, от противного, что существует непланарный граф, который пе содер- содержит подграфов, гомеоморфных К§ или /?Гз,з- Пусть G — такой граф с наименьшим возможным числом ребер, не содержащий изолированных вершин. Дальнейшие рассуждения разобьем на несколько этапов. 1) Заметим спачала, что граф G связен. Действительно, если граф G не связен, то его компоненты связности планарны и, следовательно, сам граф G планарен. 2) Покажем, что граф G является обыкновенным графом. В самом деле, пусть в графе G имеется петля или кратное ребро е. Тогда граф G — е планарен. Добавляя к графу G — е ребро е, в силу леммы 2 из первого раздела мы получим, что граф G планарен. 3) Покажем теперь, что граф G является блоком, т. е. в G нет точек сочлепения. Отметим, что тогда в графе G пет и мостов, так как в любом блоке, содержащем не менее трех вершин, все ребра являются циклическими. Пусть, от противного, в графе G имеется точка сочленения v. Че- Через (?i обозначим подграф графа G, порожденный вершипами одпой из компонепт связности графа G — v и вершиной v, а через Gi — подграф графа G, порожденный вершипами остальных комнонент связности гра- графа G — v и вершиной v (см. рис. 30). Рис. 30 Возьмем укладку графа G\ на плоскости такую, что вершина v лежит на границе впешней грани. Затем во внешней грани графа G\ возьмем укладку графа Gi такую, что вершина v лежит на границе внешней гра- грани; отметим, что вершина v будет представлена на плоскости в двух экземплярах (см. рис. 31). /" \ Рис. 31 Соединим два экземпляра вершины v пучком жордановых линий, не допуская лишних пересечений с укладками графов Gi и Gi, состоящим
5.3. Критерий планарности графа 109 из такого количества линий, какова степень вершины v в графе G2. Да- Далее отбросим вхождение вершины v в граф G2, заменяя инцидентные ей ребра на жордановы линии, полученные из линий указанного пучка и ребер (см. рис. 32). Рис. 32 Таким образом, мы получили укладку графа G на плоскости, что невозможно. Итак, мы доказали 3). Пусть е = ab — произвольное ребро графа G. Зафиксируем его. В си- силу минимальности графа G граф G' = G — е планарен. Отметим, что граф G" к тому же и связен, так как в исходном графе G нет мостов. 4) Докажем, что в графе G" существует цикл, содержащий вершины a кЬ. Пусть о и Ъ лежат в одном блоке В графа G'. Если \VB\ > 3, то по теореме о свойствах блока существует цикл графа G', содержащий а и Ъ. Если \VB\ = 2, то в В имеется ребро е! = ab, но тогда в G имеются кратные ребра е и е', что противоречит 2). Осталось рассмотреть случай, когда а и b лежат в разных блоках гра- графа G'. Покажем, что этот случай невозможен. Итак, пусть а и b лежат в разных блоках графа G'. Тогда в G' су- существует точка сочленения v, принадлежащая любой простой (а, Ь)-цепи графа G'. Через G'x обозначим подграф графа С, порожденный верши- вершиной v и вершинами компоненты связности графа G" — v, содержащей о, а через G'2 — подграф графа G', порожденный вершиной v и вершинами остальных компонент связности графа G' — v (в этом множестве лежит вершина Ь). Пусть G'{ = G^+ei, где е\ = av — новое ребро, и G'2' = где е2 = vb — новое ребро (см. рис. 33). Рис. 33 Заметим, что в графе G" ребер меньше чем в графе G. Действительно, вместо ребра е в G" есть ребро е\ и часть ребер из графа G осталась в графе G2. Аналогично, в графе G2 ребер меньше чем в графе G.
110 5. Планарность Покажем, далее, что в графе G" и, аналогично, в графе G'% нет под- подграфов, гомеоморфных Кь или Къл. Действительно, если в G" имеется такой нодграф, то в этом подграфе присутствует вновь присоединенное ребро, но это ребро е\ можно заме- заменить на цепь взяв некоторую простую (Ь, г>)-цепь Р% в графе G'2- Следовательно, мы нолучили нодграф в G, гомеоморфный Кь или К33, что невозможно. Теперь в силу минимальности графа G графы G" и С% планарны. Возьмем укладку графа G" на плоскости такую, что ребро е\ = av лежит на границе внешней грани. Во внешней грапи графа G'[ возьмем укладку графа (?2 такую, что ребро е% = vb лежит па границе внешпей грани (см. рис. 34). Рис. 34 Отметим, что опять вершина v представлепа на плоскости в двух экземплярах. Очевидно, добавление ребра е — ab не меняет планарности графа G" 0 G'{. Склеим оба вхождения вершины v точно так же, как это мы сделали в доказательстве утверждепия 3) (см. рис. 35). Рис. 35 Сотрем затем ранее добавленные ребра е\ и е%. В результате мы получим укладку графа G на плоскости, что невозможно. Итак, мы доказали утверждепие 4). Среди всех укладок графа G' на плоскости и среди всех циклов С, со- содержащих а и Ь, зафиксируем такую укладку и такой цикл, что внутри области, ограниченной циклом С, лежит максимальное возможное число граней графа G'. Зафиксируем один из обходов по циклу С (на рисунках будем рассматривать обход по часовой стрелке по циклу С). Для вер- вершин и и v цикла С через С[u, v] будем обозначать простую (и, г»)-цепь,
5.3. Критерий планарности графа 111 идущую по циклу С от и до v в направлении обхода цикла. Конечно, C[u, v] ф C[v, и]. Положим С(и, v) = С[и, v] \ {и, v}, т.е. С (и, v) полу- получено из С[и, v] отбрасыванием вершин «и». Внешним графом (относительно цикла С) будем называть подграф графа G', порождепный всеми вершинами графа G', лежащими снару- снаружи от цикла С. Комноненты связности внешнего графа будем называть внешними компонентами. В силу связности графа G' для любой внешней компопенты должпы существовать ребра в G', соединяющие ее с верши- вершинами цикла С. Внешними частями будем называть (см. рис. 36) а) внешпие компоненты вместе со всеми ребрами, соединяющими компоненту с вершинами цикла С, и инцидентными им вершинами; б) ребра графа G', лежащие снаружи от цикла С и соединяющие две вершины из С, вместе с инцидентными такому ребру вершинами. или Рис. 36 Аналогично определяются внутренний граф, внутренние компоненты и внутренние части (относительно цикла С). Будем говорить, что внешняя (внутренняя) часть встречает цикл С в своих точках прикрепления к циклу С. 5) Докажем, что любая впешняя часть встречает цикл С точно в двух точках, одна из которых лежит в С(а, Ь), а другая — в С(Ь, а). Если впешняя часть встречает цикл С точпо в одной точке v, то v является точкой сочленения графа G, что невозможно (см. рис. 37). Рис. 37 Таким образом, внешняя часть встречает цикл С не менее чем в двух точках. Если впешняя часть встречает цикл С в двух точках из С[а, Ь] (случай С[Ь, а] рассматривается аналогично), то в G' имеется цикл, со- содержащий внутри себя больше граней, чем цикл С, и проходящий через а и Ь, что невозможно (см. рис. 38).
112 5. Планарность Рис. 38 Опираясь на сделанпые замечания, теперь легко завершить доказа- доказательство утверждения 5). Ввиду утверждения 5) будем говорить, что любая внешняя часть яв- является (а, Ь)-разделяющей частью, поскольку она встречает и С(а, Ъ), и С(Ь, а). Аналогично можно ввести понятие (а, Ь)-разделяющей внут- внутренней части. Заметим, что внутренняя часть может встречать цикл С, вообще говоря, более чем в двух точках, но не менее чем в двух точках. 6) Докажем, что существует хотя бы одна (а, Ь)-разделяющая внут- внутренняя часть. Пусть, от противного, таких внутренних частей нет. Тогда, выходя из а внутри области, ограниченной С, и двигаясь вблизи от С по направ- направлению обхода С и вблизи от встречающихся внутренних частей, можно уложить ребро е = аЪ внутри цикла С (см. рис. 39), т.е. G — пленарный граф, что невозможно. Рис. 39 Итак, мы установили утверждение 6). 7) Покажем, что существует внешняя часть, встречающая С(а, Ь) в точке с и С(Ь, а) — в точке d, для которой найдется внутренняя часть, являющаяся одновременно (а, Ь)-разделяющей и (с, й)-разделяющей.
5.3. Критерий планарности графа 113 На рис. 40 показан пример ситуации, указанпои в этом утверждении. Рис. 40 Пусть, от противного, уверждение 7) неверно. Упорядочим (а, ^-раз- ^-разделяющие впутренние части в порядке их прикрепления к циклу С при движении по циклу от а до 6 и обозначим их соответственно через Ini, Iri2, Пусть «1 ии2 — первая и последняя вершины из C(a, b), в ко- которых 1п\ встречает цикл С, a V\ и v-i — первая и последняя вершины из С(Ь, а), в которых 1щ встречает цикл С (возможно, вообще говоря, щ — Иг или Vi — Vz). Поскольку 7) неверно, для любой внешней части обе ее вершины, в которых она встречает С, лежат либо на С[г>2, щ], либо на C[ti2, Vi]. Тогда снаружи от цикла С можно провести жорданову кри- кривую Р, не нересекая ребер графа G", соединяющую vi с щ (см. рис. 41). Рис. 41 Поскольку на участках С(щ, иг) и C(vi, V2) нет точек прикрепления внешних частей, используя жорданову кривую Р, внутреннюю часть Ini можно перебросить («вывернуть» наружу от цикла С) во внешнюю об-
114 5. Планарность ласть от цикла С, т. е. уложить ее снаружи от цикла С и сделать ее внешней частью. Аналогично все остальные (а, й)-разделяющие внутренние части мож- можно перебросить во впешнюю область от цикла С. После этого точно так же, как в доказательстве утверждения 6), ребро е = ah можпо уложить внутри цикла С, так как не останется (а, Ь)-разделяющих внутренних частей. Следовательно, мы получим укладку графа G, что невозможно. Итак, мы доказали утверждепие 7). Обозначим через In внутреннюю часть, которая является одновре- одновременно (а, й)-разделяющей и (с, й)-разделяющей, где cud — точки при- прикрепления к циклу С некоторой внешней части J, причем с лежит на С(а, й), a d — на С(й, а) (см. рис. 42). Отметим, что во внешней части J есть простая (d, с)-цепь Р. Обо- Обозначим через Mi и мг вершины, в которых In встречает соответственно С(а, Ь) и С(Ь, а), а через »! и «2 — вершины, в которых In встречает соответственно С (с, d) и C(d, с) (см. рис. 43). V., Рис. 43 Дальнейшие рассуждения разобьем на два случая. 1. Пусть нара вершин V\ и х>2 является (а, &)-разделяющей. Тогда, в частности, vi ф а и v\ ф Ъ. Легко понять, что в этом слу- случае граф G содержит нодграф, гомеоморфный К33 (отметим, что в In существует простая (v\, г>2)-цепь) (см. рис. 44). 2. Пусть пара вершин V\ и Vi не является (а, Ь)-разделяющей.
5.3. Критерий планарности графа 115 Тогда vi, v2 лежат на С [а, Ь] или vi, v2 лежат на С[Ь, а]. Без ограни- ограничения общности будем считать, что vi и v2 лежат на С[а, Ъ]. f с иди Рис. 44 2.1. Пусть vi и vi лежат на С(а, Ь), т.е. v\ ф Ъ и v% ф а (см. рис. 45). Рис. 45 2.1.1. Пусть и2 лежит на C(d, a). Тогда в графе G имеется подграф, гомеоморфный Л"з,з (см. рис. 46). 2.1.2. Пусть и2 = A. Тогда во внешней части In имеется вершина w и три простые цепи от w соответственно до d, Vi и v2, которые в качестве общей точки имеют только точку w. В этом случае в графе G имеется подграф, гомеоморф- гомеоморфный К33 (см. рис. 47).
116 5. Планарность 2.1.3. Пусть и2 лежит на C(b, d). Тогда в графе G есть подграф, гомеоморфный К33 (см. рис. 48). Ъ Рис. 48 Итак, мы рассмотрели случай 2.1. Поэтому мы можем считать, что хотя бы одна из вершин vi и v2 не лежит на С (а, Ъ). Без ограничения общности будем считать, что это вершина V\, т.е. v± = b (поскольку V\ лежит на С[а, 6]). 2.2. Пусть v2 ф а. 2.2.1. Пусть и2 лежит на C(d, a). Тогда в графе G есть подграф, гомеоморфный К%^ (см. рис. 49).
5.3. Критерий планарности графа 117 2.2.2. Пусть и2 = d. Тогда в графе G имеется подграф, гомеоморфный Кзл (см. рис. 50). 11.;= (I 2.2.3. Пусть и2 лежит на C(b, d). Тогда в графе G имеется подграф, гомеоморфный %л (см. рис. 51). Итак, мы рассмотрели случай 2.2. Поэтому осталось, наконец, рас- рассмотреть последний случай. 2.3. Пусть V2 — а (см. рис. 52). Рассмотрим теперь пару вершин щ ии2. Будем считать, что щ — с и И2 = d, поскольку все другие случаи расположения вершин щ и и2 рассматриваются совершенно аналогично тому, как были рассмотрены все случаи расположения вершин v\ и v^. Пусть Р\ и P-i — соответственно кратчайшие простые (а, Ь)-цепь и (с, с?)-цепь во внутренней части In (см. рис. 53).
118 5. Планарность \JU =d с - и. Очевидно, цепи i-\ и Р2 имеют общую точку. 2.3.1. Пусть цепи Pi и Рч имеют более одной общей точки. Тогда в графе G есть подграф, гомеоморфный К33 (см. рис. 54). Рис. 54 2.3.2. Пусть цепи Pi и Р% имеют точно одну общую точку w. Тогда в графе G есть подграф, гомеоморфный К$ (см. рис. 55). Мы завершили рассмотрение последнего случая 2.3. Таким образом, доказано, что в графе G имеется подграф, гомеоморфный Д"з,з или К$, что противоречит нашему нервому предположению. Итак, теорема доказана. ? Определим нроцедуру стягивания ребра в графе. Пусть е = uv — ребро графа G, не являющееся петлей. Последовательно выполним сле- следующие действия: отождествим вершины и и и, отбросим все нетли, отождествим все кратные ребра. Полученный граф обозначим через G".
5.3. Критерий планарности графа 119 Будем говорить, что граф G' получен из графа G стягиванием ребра е. На рис. 56 показан пример примепения процедуры стягивания ребра. и = v Рис. 56 Говорят, что граф G стягиваем к графу G', если G' можно нолучить из G с номощью конечпого числа применений нроцедуры стягивапия ре- ребер. Пример. Граф Петерсена стягиваем к К5 (см. рис. 57). Рис. 57 Заметим, что граф Петерсена пе содержит подграфов, гомеоморф- ных #5, но содержит подграф, гомеоморфный йз,з- В заключение этого раздела нриведем без доказательства несколько интересных утверждений о планарпых графах. Следующую теорему можно вывести из теоремы Понтрягина- Куратовского. Теорема 5.5 (Вагнер, Харари и Татт). Граф планарен тогда и только тогда, когда он не содержит подграфов, стягиваемых к К33, и не содержит подграфов, стягиваемых к К5. Теорема 5.6 (Вагнер). Обыкновенный планарный граф обладает укладкой на плоскости, в которой для изображения ребер используются лишь отрезки прямых линий. Теорема 5.7 (Бейкер). Следующие условия эквивалентны для лю- любой конечной решетки L: 1) решетка L планарна, т. е. планарна ее диаграмма; 2) в решетке L ее порядок является пересечением двух линейных по- порядков, определенных на множестве L; 3) решетка L изоморфно вложима в прямое произведение двух конеч- конечных цепей.
120 5. Планарность В связи с последней теоремой отметим, что Келли и Ривал нашли опи- описание пленарных конечных решеток на языке запрещенных подрешеток. Ими было построено счетное (бесконечное) семейство всевозможных ми- минимальных ненланарных конечных решеток. 5.4. Двойственные графы Граф G\ называется двойственным к графу G2, если матроид циклов M(G\) графа Gi изоморфен матроиду разрезов M*(G2) графа G2. По- Поскольку изоморфизм матроидов является изоморфизмом и двойственных к ним матроидов, отношение «быть двойственными» для графов симмет- симметрично. Заметим, что для двойственных графов Gi и G2, очевидно, выполня- выполняется r(d) = r*(G2) и r*(d) = r(G2). Лемма 1. Пусть G\ и G2 — ненулевые графы и ф — биекция из EG± на EG2. Если ф (точнее, отображение, индуцированное ф на V(EGi)) отображает векторы некоторого базиса пространства циклов графа G\ на векторы некоторого базиса пространства разрезов графа Gi, то графы G\ и G2 — взаимно двойственные графы. Доказательство. Очевидно, любая биекция сохраняет операции U, П, \ и, следовательно, сохраняет операцию симметрической разности ф. Поскольку базис переходит на базис, пространство циклов графа Gi нереходит нод действием ф на нространство разрезов графа G2. Так как отношение С также сохраняется биекцией в обе стороны, минимальные ненулевые элементы пространства циклов графа Gi, т.е. циклы гра- графа Gi, нереходят под действием ф на минимальные непустые элементы пространства разрезов графа G2, т.е. на разрезы графа G2. Конечно, верно и обратное утверждение, т.е. ф — изоморфизм матроида M(Gi) на матроид M*(G2). ? Пример. е4. Рис. 58
5.4. Двойственные графы 121 Рассмотрим базис прострапства циклов графа G\, который состоит из векторов, отвечающих его внутренним граням: С\ = {еь е2, е3}, С2 = {е3, е4, е5, е6}, С3 = {е6, е7, е8}. Определим биекцию ф из .EGi на EG2, полагая ф(е^ = е\ для i = 1, ..., 8. Очевидно, r*(d) = m-n + k = 8-6 + 1 = 3 и r(G2) = n-k = 4-1 = 3. Далее заметим, что (^(Ci), ф(С2) и 0(С3) — линейно пезависимая система разрезов графа G2, и, следовательно, она является базисом прострапства разрезов графа G2, так как r(G2) = 3. Таким образом, ф переводит ба- базис С\, С2, С3 пространства циклов графа Gi на базис ф[С\), ф(С2), ф(Сз) пространства разрезов графа G2, т.е. Gi и G2 — взаимно двойственные графы по лемме 1. Пусть G — произвольный граф и е = аЪ — некоторое его ребро. Будем говорить, что граф G' получен из графа G замыканием ребра е, если G' получен из G с помощью следующих действий: отбрасывания ребра е и отождествления вершин а и Ь, т. е. замену их на одну новую вершину (заметим, что при этом сохраняются все ребра, отличные от е, только концы ребер, равные а или Ь, заменяются на новую вершипу). а — Рис. 59 Лемма 2. Пусть Gi и G2 — взаимно двойственные графы, ф — изо- изоморфизм матроида циклов M(G\) на матроид разрезов M*(Gr2), e ? EG\, G[ = G — е и G'2 — граф, полученный из G2 замыканием ребра ф{е). Тогда G'x и G'2 — взаимно двойственные графы. Доказательство. Покажем, что ограничение изоморфизма ф на мно- множество EG' является изоморфизмом матроида циклов M{G'^) на матроид разрезов M*(G'2). Пусть С — цикл графа G\. Поскольку этот цикл не содержит реб- ребра е, он является циклом и в графе G\. Тогда его образ (/>(G) является разрезом в графе G2, пе содержащим ^(е). Нетрудно попять, что ф(С) будет разрезом и в графе G2.
122 5. Планарность Обратно, пусть ф(А) — разрез в графе G2 для некоторого А С EG\. Поскольку е ? А, этот разрез является разрезом и в графе G2. Тогда его прообраз А является циклом в графе Gi, не содержащим е. Следователь- Следовательно, А — цикл графа G\. ? Пример. Рассмотрим графы G\ и Gi из предыдущего примера. Уда- Удалим ребра е3 и е6 из графа Получим следующие графы и замкнем ребра е'3 и eg в графе G2. Рис. 60 Графы Gj и G2 взаимно двойственны, поскольку ф отображает един- единственный цикл графа G\ па единственный разрез графа G2. Следствие 1. Если ненулевой граф имеет двойственный граф, то лю- любой его ненулевой подграф также имеет двойственный граф. Доказательство. Достаточно отметить, что любой ненулевой под- подграф Н графа G можно получить из G, удаляя все ребра, не принадле- принадлежащие Н, и удаляя лишние изолированные вершины. ? Следствие 2. Если граф имеет двойственный граф, то любой гомео- морфный ему граф также имеет двойственный граф. Доказательство. Пусть Gi и G2 — взаимно двойственные графы и ф — изоморфизм матроида циклов M{G\) на матроид разрезов M*(G2)- Предположим сначала, что граф Gj получен из графа Gi исключением вершины v степени 2 и е\ = va, е2 = vb — два различных ребра, инци- инцидентных вершине v в графе G\. Будем считать, что при исключении вершины v ребра е\ и е2 графа G\ заменяются на ребро е2 — ab графа G[. Очевидно, граф Gj можно получить из графа G\ и другим способом — замыкая ребро е\. Поэтому в силу леммы 2 граф G\ имеет двойственный граф. Предположим теперь, что граф G\ получен из графа G\ включением вершины v степени 2. Пусть при этом ребро е = аЬ графа G\ заменяется на два новых ребра е\ = va и е2 = vb графа G[. Через G'2 обозначим граф, полученпый из графа G2 заменой ребра е' = ии>, где е' = ф{е),
5.4. Двойственные графы 123 на два новых кратных ребра е'г = uw и е'2 = uw. Очевидно, все циклы графа G\ получаются из циклов графа Gi заменой каждого вхождения в цикл ребра е на два ребра е\ и еч- Аналогично, все разрезы графа G'2 получаются из разрезов графа Gi заменой каждого вхождения в разрез ребра е' на два ребра е\ и е'2. Отсюда легко вывести, что G\ и G'2 — взаимно двойственные графы. ? Пусть G — произвольный ненулевой граф и v ? V — VG. Вектором инциденции, отвечающим вершипе v, будем называть сечение (v, V \v) графа G и будем обозначать его через Sec(v). Лемма 3. Пусть VG — ViUV^, где Vi — {vu ..., vt} и V2 — = {vt+\, ..., vn} для некоторого f e N, где n — число вершин в нену- ненулевом графе G. Тогда {Vi, V2) = Sec(vi) ф ... ф Sec(vt) = Sec(vt+1) ф ... ф Sec(vn). Доказательство. Каждое ребро графа G, принадлежащее сече- сечению (Уь^г); встретится точпо в одном из множеств Sec(vi) для i — 1,... ,t. Каждое же ребро графа G, не принадлежащее рассматри- рассматриваемому сечению, либо вообще не встретится в множествах Sec(vi) для i = 1, ..., t, либо встретится точпо в двух из них, отвечающих концам ребра. Из сказанного следует первое из доказываемых равенств. Второе равенство доказывается аналогично. ? Следствие 3. Пусть G — ненулевой п-граф. Тогда любые п—\ век- векторов инциденции, отвечающих его вершинам, являются системой обра- образующих пространства разрезов графа G. Доказательство. Как было доказано ранее, векторами прострапства разрезов ненулевого графа являются сечения графа и только они. Оста- Осталось отметить, что отсутствующий вектор инциденции не входит точно в одно из указанных в лемме 3 разложений. ? Лемма 4. Любой планарный ненулевой граф имеет двойственный граф. Доказательство. Пусть G — плоский ненулевой граф и gi, ..., gf — все его грани. Рассмотрим некоторое множество, состоящее из / вершин {«1, ..., Vf}. Определим на нем граф G'. Для каждого ребра е графа G, лежащего на границе граней gi и gj, зададим ребро е' = ViVj графа G' (конечно, случай i = j отвечает ситуации, когда ребро е лежит внутри грани gi, и тогда е' = ViVi является петлей). Докажем, что G и G' — взаимно двойственные графы. Пусть Xi, ..., Xf-i — базис пространства циклов графа G, состоящий из век- векторов пространства циклов, отвечающих грапицам внутренних граней
124 5. Планарность Рис. 61 графа G. Рассмотрим биекцию ф из EG на EG', которая фактически была определепа при задании ребер графа G' и для которой выполняется ф(е) — е' для любого е G EG. Очевидно, для любого i — 1, ...,/ — 1 множество 0(Х;) является вектором инциденции графа G', отвечающим его вершине Vi. Система векторов ф(Х\), ..., ф(Xf_\) пространства раз- разрезов графа G' линейно независима, так как биекция переводит линейпо независимую систему векторов в линейно независимую систему векто- векторов (носкольку биекция сохраняет симметрическую разность). Теперь в силу следствия 3 система ф{Х\), ..., ф(Х;-\) является базисом про- пространства разрезов графа G". Отсюда на основании леммы 1 заключаем, что G и G' — взаимно двойственные графы. ? Лемма 5. Граф К33 не имеет двойственного графа. Доказательство. Очевидно, в графе К33 выполняются следующие свойства: 1) граф не имеет разрезов, состоящих из одного или из двух ребер, 2) любой цикл имеет длину 4 или 6, 3) число ребер т — 9. Пусть, от противного, граф К33 имеет двойственный граф G. Бу- Будем считать, что в графе G нет изолированных вершин (отбрасывание изолированных вершин в графах, очевидно, не нарушает двойственнос- двойственности). В силу упомянутых свойств графа К33 в графе G вынолняются следующие свойства: 1') нет петель и нет циклов длины 2, т. е. G — обыкновенный граф, 2') нет ненулевых сечений (и, в частности, векторов ипциденции), со- содержащих меньше 4 ребер, т.е. degw > 4 для любой вершины v графа G, 3') число ребер т = 9. Из 1') и 2') следует, что п > 5, где п — число вершин графа G. В силу леммы о рукопожатиях получаем 18 = 2т = J2degv > n • 4 > 5 • 4 = 20, что противоречиво. ? Лемма 6. Граф К§ не имеет двойственного графа.
5.4. Двойственные графы 125 Доказательство. Очевидно, в графе К§ выполняются следующие свойства: 1) нет циклов длины 1 или 2, 2) любой разрез состоит из 4 или 6 ребер, 3) число ребер m = 10. Пусть, от противного, граф К§ имеет двойственный граф G. Будем считать, что в графе G нет изолированных вершин. В силу 2) в графе G нет циклов длины 1 или 2, т. е. G — обыкновенный граф. Из 2) вытекает также, что все циклы графа G имеют четные длины 4 или 6. Тогда G является двудольным графом. Действительно, разобьем множество V вершин графа G на две непустые доли \\ и V2 следующим образом. Берем произвольную вершину v графа G в качестве началь- начальной и помещаем ее в V\. Затем, все вершины, смежные с v, номещаем в У2. После этого все вершины, смежные с только что размещенными вершинами, помещаем в У\ и т.д. Берем, далее, произвольную верши- вершину графа G из другой его комноненты связности и новторяем, начиная с нее, выше описанный процесс и т. д. Так как в графе G нет циклов нечетной длины, каждая вершина графа G будет помещена точно в одно из множеств V\ и V2, т. е. V = V\ LJ V2, и в графе G нет ребер, оба конца которых одновременно лежат в \\ или в У2. (Заметим, что мы, факти- фактически, привели доказательство теоремы Кёнига, подробности о которой см. в первом разделе следующей главы). Если для числа п вершин графа G выполняется неравенство п < 6, то, как нетрудно убедиться, перебирая полные двудольные графы с чи- числом вершин меньше или равным 6, для числа m ребер графа G по- получаем m < 9, что противоречит 3). Таким образом, п > 7. По- Поскольку G — обыкновенный граф, из 1) получаем degw > 3 для лю- любой вершины v графа G. Применяя лемму о рукопожатиях, получаем 20 = 2m = X)degw > п ¦ 3 > 7 ¦ 3 = 21, что противоречиво. ? Теорема 5.8. Ненулевой граф имеет двойственный граф тогда и только тогда, когда он планарен. Доказательство. Пусть граф G имеет двойственный граф. Предпо- Предположим, от противного, что граф G непланарный. Тогда в силу теоре- теоремы Понтрягина-Куратовского в графе G имеется подграф, гомеоморф- ный К§ или А'зд. Отсюда на основании следствий 1 и 2 из леммы 2 нолучаем, что граф К^ или граф К$$ имеет двойственный граф, что противоречит лемме 5 или лемме 6. Обратное утверждепие верно по лемме 4. ?
6. Раскраски 6.1. Хроматические числа Пусть G — (V, Е) — произвольный граф и {с\, ..., ct} — некоторое множество, элементы которого будем называть красками. Раскраской или, точнее, t-раскраской графа G называется отображение ф из V в {ci, ..., ct} такое, что для любых двух различных смежных вершин и и v графа G выполняется ф(и) ф ф(у). Отметим, что здесь не нреднола- гается, что ф отображает V на всё множество красок {ci, ..., ct}. Будем говорить, что цвет ф(г>) приписан вершине v ? V или вершина v име- имеет цвет ф(у). Мы видим, что t-раскраска графа G приписывает каждой его вершине один из t заданных цветов таким образом, что любые две различные смежные вершины имеют разный цвет. Заметим, что, рассматривая раскраски, можно без ограничения общ- общности считать граф G обыкновенным. Граф называется t-раскрашиваемым, если он обладает ^-раскраской. Граф называется t-хроматическим, если он t-раскрашиваемый, но не яв- является (t— 1)-раскрашиваемым; число t в таком случае называют хрома- хроматическим числом графа G и обозначают через x{G). Заметим, что 1) 1-хроматические графы — это нулевые графы и только они; 2) 2-хроматические графы — это ненулевые двудольные графы и толь- только они; 3) х(Кп) = п и x{G) > п, если граф G содержит в качестве подграфа граф Кп для натурального числа п. Теорема 6.1 (Кёниг). Ненулевой обыкновенный граф G является 2-хроматическим тогда и только тогда, когда он не содержит циклов нечетной длины. Доказательство. Пусть G — 2-хроматический граф. Зафиксируем некоторую его 2-раскраску. Так как концы каждого ребра имеют разный цвет, нри обходе любого цикла С чередуются вершины разного цвета. Следовательно, цикл G имеет четную длину. Обратно, без ограничения общности будем считать, что G — неодно- неодноэлементный связный граф, не имеющий циклов нечетной длины. Зафик- Зафиксируем некоторую вершину v графа G. Разобьем тенерь множество вер- вершин VG на два непересекающихся подмножества VJj и Vi. Соберем в Vo все вершины и G VG, для которых длина любой кратчайшей {у, и)-цепи четна, а в V\ — нечетна. Очевидно, v ? Vo, а все вершины, смежные с v, лежат в V\. Теперь достаточно проверить, G(V0) и G{V\) — нулевые нодграфы.
6.1. Хроматические числа 127 Пусть, от противного, существует ребро е = uw, для которого и и w лежат одновременно в Vo или в Vi. Тогда v ф и и v ф w. Рассмотрим кратчайшую {у, м)-цепь Р и кратчайшую (у, то)-цепь Q. Пусть a — по- последняя вершипа цени Р, принадлежащая цени Q. В силу выбора цепей Р и Q длины их начальных {у, а)-нодценей совпадают. Поэтому (а, и)-под- цепь Pi цепи Р и (а, ю)-подцепь Qi цепи Q имеют длины одинаковой четности. Добавляя к цепям Pi и Q\ ребро е, получаем цикл нечетной длипы, что невозможпо. ? Следствие 1. Любое неодноэлементное дерево является 2-хромати- ческим графом. Лемма 1. Если наибольшая из степеней вершин графа G равна р, то этот граф является (р + 1)-раскрашиваемым. Доказательство. Проведем ипдукцию по числу вершин графа G. Пусть G — пеодпоэлементный n-граф и v — некоторая его вершипа. Тогда по предположению индукции граф G — v является [р + ^-раскра- ^-раскрашиваемым. Очевидно, (р + 1)-раскраску графа G — v можно дополнить до (р + 1)-раскраски графа G, приписав вершине v любой цвет, не исполь- использованный для раскраски смежных с ней вершин. ? Лемма 2. Если каждый блок связного графа t-раскрашиваем для не- некоторого t G N, то и сам граф t-раскрашиваем. Доказательство. Проведем индукцию по числу блоков графа. Мож- Можно считать, что граф G имеет более одного блока. Пусть В — один из висячих блоков графа и Gi — подграф графа G, равный объедине- объединению остальных блоков. Через v обозначим единственную общую вер- вершину графов В и G\. По предположению индукции граф G\ является t-раскрашиваемым. Очевидно, имеются две такие f-раскраски графов В и Gi, что вершине v приписывается ими одинаковый цвет. Теперь ясно, что эти две раскраски дают искомую раскраску графа G. ? Покажем, что лемму 1 можно усилить. Справедлива следующая Теорема 6.2 (Брукс, 1941). Пусть G — связный обыкновенный граф, не являющийся полным графом, р — наибольшая из степеней его вершин и р> 3. Тогда x{G) < р. Доказательство. В силу леммы 2 теорему достаточно доказать для случая, когда граф G является блоком. 1) Покажем сначала, что в графе G существует такая простая не- незамкнутая цепь и —> w —> v, что вершины и и v несмежны и граф (G — и) — v = G — и — v связен.
128 6. Раскраски Обозначим через L множество всех доминирующих вершин графа G, т.е. вершин, смежных с каждой его вершиной. Предположим, что L ф 0. Очевидно, вершинно-порожденный под- подграф G(L) является полным нодграфом. Так как G не является полным графом, в VG \ L имеются две различные несмежные вершины и и v. Поскольку L ф 0, граф G — u — v связен. Осталось в качестве w взять любую вершину из L. Пусть теперь L = 0. В силу условия теоремы в графе G существует вершина а такая, что dego > 3. Ясно, что граф G — а связен, поскольку граф G является блоком. Рассмотрим случай, когда граф G — a — блок. Так как L — 0, в графе G — а найдется вершина Ь, несмежная с а. Возьмем кратчайшую (а, Ь)-цепь в графе G: (возможно эта цепь заканчивается вершиной v и тогда v = b). Очевидно, вершина v несмежна с вершиной а и граф G — а — v связен. Осталось в этом случае положить и = а. Рассмотрим теперь случай, когда связный граф G — а не является бло- блоком. Тогда граф G — а есть неодпоэлемептное дерево блоков. Возьмем два различных его блока Bi и В2, являющихся висячими вершинами в дереве блоков и точек сочленения графа G — а, т. е. висячими блоками. В блоке В\ существует вершина и, не являющаяся точкой сочленепия графа G — а, которая смежна с а (иначе точка сочленения графа G — а, лежащая в блоке В\, была бы точкой сочленения графа G, что невоз- невозможно). Аналогично, в блоке В2 существует вершина и, пе являющаяся точкой сочленения графа G — а, которая смежна с а. Легко видеть, что граф G — и — v связен. Действительно, удаление из графа G — а вершин и и v не нарушает связности висячих блоков Вг и В2, поэтому граф G — а — и — v связен. Так как deg a > 3, отсюда следует связность графа G — и — V. Для завершения доказательства утверждения 1) осталось положить w = а. 2) Построим тенерь />-раскраску графа G. Возьмем вершины и, w, v, указанные в 1). Поскольку граф G — и — v связен, его вершины можно занумеровать таким образом w = ai, а2, ..., а„_2, что каждая из вершин а2, ..., а„_2 будет смежна по крайней мере одной вершине с меньшим номером.
6.1. Хроматические числа 129 В самом деле, в качестве а„_2 берем любую вершину графа G — u — v, не являющуюся его точкой сочленения и отличную от то (такая вершина обязательно имеется в одном из висячих блоков). После отбрасывания вершины а„_2 из графа G — u — v получится связпый граф и процесс перепумерации вершин можно продолжить. Окрасим вершины и и v в первый цвет с\. Затем последовательно будем приписывать вершинам а„_2, an-3i ¦ ¦ ¦ ¦> a2i ai — w один из цветов Ci, c2, ..., ср по следующему правилу. Пусть п — 2 > s > 1 и вершины u, v, о„_2, ¦ ¦ •, as+i уже окра- окрашены (здесь при s — п — 2 имеется точно две окрашенных верши- вершины и и v). Так как а., смежна хотя бы с одной вершиной, имеющей меньший номер, степень вершины as в вершинно-норожденном подгра- подграфе G({u, v, а„-2, ¦ ¦ ¦, aa+i, ag}) меньше р. Вершину as окрасим в тот из цветов ci, ..., ср, который не был еще иснользован для окраски вершин, смежных с as. Аналогично поступим и с вершиной a\ = w. Поскольку degw < р и вершины и и v, смежные с то, окрашены в одип и тот же цвет сг, нри раскраске вершин, смежных с а\ = w, были иснользованы не все имеющиеся краски. Окрасим вершину ai в еще неиспользованный цвет и получим р-раскраску графа G. ? Заметим, что теорема Брукса дает оценку сверху для хроматичес- хроматического числа графа. Однако эта оценка может быть сколь угодно далека от хроматического числа. Действительно, любое нетривиальное дерево является 2-хроматическим графом и можно построить дерево, имеющее сколь угодно большие степени вершин. Лемма 3. Пусть вершины графа G раскрашены красками с\, ..., ct. Обозначим через G{j подграф графа G, порожденный всеми вершинами цве- цвета c-i и всеми, вершинами цвета c,j, где i ф j и 1 < i, j < t. Пусть GJ- — некоторая компонента связности графа Gfj. Поменяем местами краски с, и Cj в раскраске вершин из подграфа Сц и оставим без изменения цве- цвета остальных вершин графа G. Тогда получится новая раскраска графа G красками с\, ..., с(. Доказательство. Пусть вершины и и v графа G имеют одинаковый цвет с нри новом распределении красок. Если с ф q, с,-, то вершины вис, очевидно, несмежны. Поэтому без ограничения общности будем считать, что с = с.;. Рассмотрим четыре случая. 1. Пусть и, v G VG'ij. Тогда вершины и и v имеют одинаковый цвет в исходной раскраске и поэтому несмежны. 2. Пусть u G VGlj, a v 0 VG[y Тогда вершины и и v несмежны, так как они лежат в разных компонентах связности графа Gy.
130 6. Раскраски 3. Пусть и ^ VG'ij, a«6 VG\j. Этот случай аналогичен предыдущему случаю. 4. Пусть и, к ^ ^G^-. Тогда вершины и и v имеют одинаковый цвет с, в исходной раскраске графа G и поэтому они несмежны. ? Теорема 6.3 (Хивуд, 1890). Любой планарный граф Ъ-раскраши- ваем. Доказательство. Пусть G — планарный n-граф. Проведем индук- индукцию по числу вершин графа. Если п < 5, то утверждение очевидно. Будем тенерь считать, что G — нлоский обыкновенный граф, п > 6 и утверждение верно для любого плоского графа, содержащего меньше чем п вершин. Согласно следствию 5 из раздела 4.2 граф G имеет вершину v, сте- нень которой меньше или равна 5. Иснользуя предположение индукции раскрасим граф G — и в пять цветов. Если deg v < 5, то вершину v мож- можно раскрасить в любой цвет, не использованпый при раскраске вершин, смежных с v. Пусть теперь deg v = 5. Будем считать, что вершины vi, v%, v3, «4, v$, смежные с v, занумерованы таким образом, что инцидентные им ребра выходят соответственно из вершины v последовательно друг за другом по направлению часовой стрелки (см. рис. 62). Если какие-либо две вершины, смежные с v, имеют одинаковый цвет, то вершину v можно раскрасить в цвет, не использованный нри раскраске смежных с ней вер- вершин. Поэтому без ограничения общности будем считать, что для любого г — 1, 2, 3, 4, 5 вершина v, окрашена в цвет с*. В соответствии с леммой 3 рассмотрим подграф G13 в графе G. 1. Пусть вершины V\ и и$ не лежат в одной компоненте связности графа G13. Тогда vi ? VG'13 и v3 ? VG'{3, где G'13 и G — две различпые комноненты связности графа Gu. Пользуясь леммой 1, номеняем места- местами цвета с\ и с3 в раскраске вершин подграфа G'13. В новой раскраске графа G — v вершины v\ и v3 будут иметь одинаковый цвет с3. Освобо- Освободившийся цвет с\ припишем вершине v и получим 5-раскраску графа G. 2. Пусть вершины V\ и ^з лежат в одной компопенте связности Gj3 графа G13. Тогда в графе G'13 имеется простая («1; г?з)-цепь vi —> ... —> v3 и поэтому в графе G имеется цикл С: V —? V\ —?...—? V3 —? V. Внутри области, ограниченной циклом G, лежит либо вершина V2, либо вершина v±. Без ограничения общности будем считать, что это верши- вершина г>2 (см. рис. 62).
6.2. Хроматические многочлены 131 Тогда нетрудно видеть, что вершины v-i и «4 лежат в разных компо- компонентах связности графа G24, т.е. мы пришли к случаю, аналогичному случаю 1), где вершина vi играет роль вершины v%, а вершина v$ — роль вершины 1)з- ? Рис. 62 Естественно возникает вопрос: можно ли усилить доказанную тео- теорему, заменив число 5 на число 4? Ответить на этот вонрос в течение приблизительно 100 лет пытались многие известные математики. Ги- Гипотезу о том, что любой пленарный граф можно раскрасить четырьмя красками, сформулировал в 1879 году апглийский математик Кели, а доказательство этой гипотезы было получено в 1976 году Хейкеном и Аппелем. Таким образом, справедлива следующая теорема. Теорема 6.4 (Хейкен и Аппель). Любой планарный граф 4-раскра- шиваем. Отметим, что доказательство этой теоремы весьма сложно, причем часть доказательства трудно воспроизводима, так как была проведена авторами с помощью компьютера. Конечно, такое доказательство не удовлетворяет многих математиков. 6.2. Хроматические многочлены Пусть G — обыкновенный граф. Через P(G, х) обозначим хромати- хроматическую функцию, которая для любого неотрицательного целого числа х принимает значение, равное числу ж-раскрасок графа G (при заданном множестве из ж красок). Пример. 1) Р(Оп, х) = хп, так как каждую из п вершин нулевого графа Оп можно независимо окрасить в любой из х заданных цветов. 2) Р(Кп, х) = ж(ж — 1)... (х — п +1), так как первую вершину полного графа Кп можно окрасить в любой из х цветов, вторую — в любой из оставшихся х — 1 цветов и т.д.
132 6. Раскраски В дальнейшем многочлен ж(ж — 1)... (ж — п + 1) для удобства будем обозначать через ж'™) и называть факториалъной степенью переменной х. В этих обозначениях имеем Р(Кп, х) = ж'"'. Пусть и и v — две различные несмежные вершины обыкновенного графа G. Через G\ обозначим граф, полученный из G добавлением нового ребра е = uv, а через G2 — граф, полученный из G отождествлением веришин и, « и отождествлением возникающих при этом кратных ребер. Лемма 1. P(G, х) = P(GU х) + P(G2, x). Доказательство. Число ж-раскрасок графа G равно сумме числа ж-раскрасок графа G, у которых вершины и и v имеют разный цвет, и числа ж-раскрасок графа G, у которых вершины мин имеют одинаковый цвет. Число раскрасок нервого типа равно числу ж-раскрасок графа G\, а число раскрасок второго типа — числу ж-раскрасок графа (?2- ? Пример. Вычисляя функцию P(G, ж) с помощью леммы 1, мы будем опускать символы Р, ж и изображать только возникающие при вычисле- вычислениях графы: + 3 = ж5 - 6ж4 + 14ж3 - 15ж2 + 6ж.
6.2. Хроматические многочлены 133 Мы видим, что с помощью леммы 1 для любого обыкновенного п- графа G функцию P(G, x) можно представить в виде суммы хромати- хроматических функций полных графов, т. е. в виде многочлена с целыми неотри- неотрицательными коэффициентами от факториальных стененей перемепной х: P{G, х) = Р{Кп, х) a2P{Kn_2) Очевидно, этот многочлен имеет степень п и его старший коэффициент равен 1. Процесс нахождения с помощью леммы 1 соответствующего семейства нолпых графов будем называть хроматической редукцией для графа G. Из полученного разложения для P(G, x) видно, что хроматическая функция обыкновенного графа является многочленом. Ее называют хро- хроматическим многочленом графа G. Лемму 1 полезно переформулировать еще и в следующем удобном для нрименений виде. Лемма 2. P(GU х) = P{G, х) - P(G2, x). Пример. - 2 - 3 - 4 + 6 - 3 • = = х4 - 4ж3 + 6ж2 - За:. Мы видим, что с помощью леммы 2 можно вычислить хроматический многочлен обыкновенного графа сразу по стененям переменной х. Следующая теорема совершепно очевидпа.
134 6. Раскраски Теорема 6.5. Пусть G\, ..., (?& — множество всех компонент связ- связности графа G. Тогда P{G,x) = P(Gux)-...-P(Gk,x). Теорема 6.6. Пусть обыкновенный граф G равен объединению двух своих подграфов G\ и G%, т.е. G = G1UG2, причем Н = G\C\G2 является полным t-графом для некоторого натурального числа t. Тогда Доказательство. Так как Н — полный граф, при любой его раскрас- раскраске все вершины будут иметь разный цвет. В силу симметрии любые две различные ж-раскраски графа Н могут быть одинаковым числом спосо- способов нродолжены до ж-раскрасок графа G±. Следовательно, число Р(Н, ж) делит число P(Gi, ж) и частное U x) Р(Н, ж) равно числу продолжений произвольной ж-раскраски графа Н до ж-рас- ж-раскрасок графа Gi. Аналогично, частное P{G2, x) Р{Н, ж) равно числу продолжений произвольной ж-раскраски графа Н до ж-рас- ж-раскраски графа G2. Тенерь с учетом равенства Р(Н, ж) = х^ получаем P(G, ж) = ж = ^-P{Gux)-P{G2,x). Пример. = -J-r • (ж4 - 4ж3 + 6ж2 - Зж) • жC) = ж5 - 6ж4 + 14ж3 - 15ж2 6ж. Следствие 1. Пусть Bi, ..., В„ — множество всех блоков неодно- элементного связного обыкновенного графа G. Тогда P(G, ж) = — • Р(ВЪ ж) •...- Р{В„ ж).
6.2. Хроматические многочлены 135 Доказательство. Применяем теорему нри t = 1 последовательно для s — 1 точек сочленения в качестве Н, отщепляя по очереди висячие блоки. ? Следствие 2. Хроматический многочлен любого дерева Т, имеющего п вершин, равен х(х — I)". Доказательство. При п = 1 утверждение очевидно. Будем считать, что п > 1. Дерево Т имеет п — 1 двухэлементных блоков, ноэтому = —Ц • хп-Чх - I)" = х(х - I)". ? Пусть п > 3. Обыкновенный граф будем называть бесхордным п-цик- лом, если все его ребра образуют один цикл длины пив нем нет изоли- изолированных вершин. Следствие 3. Хроматический многочлен бесхордного п-цикла равен Доказательство. Обозначим через Р„(х) хроматический многочлен бесхордного п-цикла. В силу леммы 2 имеем Рис. 63 Следовательно, Рп(х) — х(х — I)" — Pn_i(x), откуда вытекает Рп{х) ~{х- 1)" = (я; - I)" - Рп-,{х). Домножая на (—1)", получаем (-1)"(ВД -(Х- If) = (-l)"-1^-!^) -(Х- 1Г1). Вычисляя эту величину при п = 3, получаем (-1K(ЭД - (х - IK) = -(*C) - {х - IK) = = -(х(х - 1)(ж - 2) - (ж - IK) = х - 1.
136 6. Раскраски Таким образом, (—1)п(Рп(х) — (х — 1)п) = х — 1, откуда получаем ? Будем говорить, что обыкновенный граф G является произведением G\ <Е> С?2 Двух своих вершинно-порожденных подграфов Gi и (?2, если VG = VGi U VG2, G\ П С?2 = 0 и для любых двух вершин м е VGi и v € VGi граф G содержит точно одно ребро вида е = uv. Пример. ¦ I Рис. 64 Пусть g(x) и h{x) — два многочлена с целыми коэффициентами. Че- Через g{x)®h{x) обозначим многочлен, который получается следующим об- образом. Сначала нредставляем многочлены g{x) и h{x) в виде многочленов от факториальных степеней переменной х. Затем перемножаем получен- полученные многочлены, действуя с факториальными степенями переменной х, как с обычными степенями. Например, (а^3' + 2ж^2') ® (ж'2) + х^) — Теорема 6.7. Если G = G\ ® G2, то ,x) = P{Gux)®P{G2,x). Доказательство. Применяя хроматическую редукцию отдельно к ni-графу G\ и отдельно к П2-графу G2, мы получаем ni-U х) + а2Р{Кт_2) P(Gb х) = Р(КП1, х) + F(G2, х) = Р(КП2, х) + hP{Kn2.!, x) + Ъ2Р{КП2_2) + ... для некоторых целых чисел а\, а2, ¦ ¦.; Ь\, Ь2, Если мы применим хроматическую редукцию к графу G = Gi ® G2, то подграфы G\ и G2 будут преобразованы как указано выше. На лю- любом этапе хроматической редукции каждая вершина графа, полученного из Gi, будет соединена ребром с каждой вершиной графа, полученного из Сг- Следовательно, в конце концов мы представим хроматический многочлен графа G как сумму хроматических многочленов попарных произведений полных графов из редукции графа G\ и полных графов из
6.2. Хроматические многочлены 137 редукции графа Gi- Произведение полного графа Ks на полный граф Kt является полным графом Ks+t. В терминах же факториальных степе- степеней имеем х^ ® ж'*' = x^s+t\ Отсюда тенерь вытекает доказываемое утверждение. ? Пример. 6ж2 - 2.x. Из предыдущего ясно, что очень нолезно уметь переходить от факто- риальных стенепей переменной ж к ее обычным степеням и наоборот. В разложении п j=0 числа s(n, г), где п G N U {0} и 0 < i < n, называют числами Стирлинга первого рода. Отметим, что их можно получить, применяя лемму 2 к хроматическому многочлену полного графа Кп (только, к сожалению, эта процедура требует больших временпых затрат). Используя соотношение х^ — х^а~1\х — (п — 1)) — xxljl~Vl — (п — 1)х<-п~1\ нетрудно установить следующие свойства чисел Стирлинга пер- первого рода: 1) s(n, i) = s(n — 1, i — 1) — (n — l)s(n — 1, i) для О < i < n; 2) s(n, n) = 1 для п > 0; 3) s(n, 0) = 0 для п > 0. В разложении n !=0 числа S(n, i), где n ? N U {0} и 0 < i < n, называют числами Стир- Стирлинга второго рода. Опять отметим, что их можно нолучить, применяя лемму 1 к хроматическому многочлену нулевого графа Оп (т. е. при- применяя хроматическую редукцию к графу Оп). Можно доказать (и это будет сделано в следующем разделе), что число Стирлинга второго рода S(n, i) равно числу разбиений n-элементного множества на i (ненустых) классов. Числа Стирлинга второго рода обладают следующими свойствами: 1) S(n, i) = S(n - 1, i - 1) + iS(n - 1, i) для 0 < i < n; 2) S(n, n) = 1 для п > 0; 3) S(n, 0) = 0 для п > 0.
138 6. Раскраски Свойства 2) и 3) очевидны, а для доказательства 1) достаточно заме- заметить, что все разбиения множества {1, ..., п} на г классов бывают двух тинов: a) разбиения, которые имеют одноэлементный класс {п} (таких раз- разбиений имеется S(n — 1, i — 1) штук); b) все остальные разбиения (их имеется iS(n — 1, i) штук), по- поскольку для их получения надо к произвольному разбиению множества {1, ..., я — 1} на i классов поочередно в каждый класс добавлять эле- элемент п). 6.3. Коэффициенты хроматических многочленов Пусть G — произвольный обыкновенный (п, т)-граф. В предыду- предыдущем разделе было установлено, что хроматический многочлен P(G, х) имеет степень п и его старший коэффициент равен 1. В этом разделе мы продолжим изучение коэффициентов хроматического мпогочлена. Теорема 6.8. Коэффициенты хроматического многочлена составля- составляют знакопеременную последовательность. Доказательство. Проведем индукцию по числу вершин графа. Утверждение очевидно для одноэлементного графа. Пусть оно верно для любого графа, содержащего п вершип. Рассмотрим графы, содержащие п+1 вершин. Шаг индукции будем доказывать индукцией по числу ребер графа. Если (п + 1)-граф не имеет ребер, т. е. является нулевым, то его хроматический многочлен хп+1 удовлетворяет доказываемому свойству. Пусть утверждение теоремы верно для любого обыкновенного (п + 1, т)- графа. Рассмотрим обыкновенный (п + 1, т + 1)-граф G\ и некоторое его ребро е. Положим G = G\ — e, а через (?2 обозначим граф, полученпый из G, отождествлением концов ребра е и образующихся нри этом кратных ребер. Тогда по лемме 2 из предыдущего раздела выполняется P(GU х) = P(G, х) - P{G2, x). В силу предположений ипдукции верны равенства P(G, x) = xn+1 - aixn + aixn-1 - a3xn~2 + ..., P(G2, x) = х11 - hx"-1 + Ь2хп~2 для некоторых неотрицательных целых чисел oi, 02, • • •, 61, Ь2, ¦ ¦ ¦ Из этих двух равенств выводим P(Gi, х) = хп+1 - (oi + 1)ж" + (oj + biK - • ¦ •, (*) откуда вытекает доказываемое утверждение. ?
6.3. Коэффициенты хроматических многочленов 139 Из доказательства видно, что добавление к графу одного нового ребра добавляет 1 к абсолютной величине второго коэффициента хроматичес- хроматического многочлена. Поэтому верно Следствие 1. Абсолютная величина второго коэффициента хрома- хроматического многочлена равна числу ребер графа. Заметим, что для связного обыкновенного n-графа G и любого неот- неотрицательного целого числа х выполняется неравенство P(G, x) <х{х-1)"-1. В самом деле, возьмем в качестве Т некоторый остов графа G. Тогда любая раскраска графа G будет раскраской и графа Т (конечно, обратное верно не всегда). Следовательно, P(G, х) < Р(Т, х) = х(х - I)". Теорема 6.9. Обыкновенный п-граф является деревом тогда и толь- только тогда, когда P{G, х) = х{х — I)". Доказательство. Необходимость условия была установлена в пре- предыдущем разделе. Предположим тенерь, что P(G, х) = х(х — I)". Заметим, что свободный член любого хроматического многочлена ра- равен 0, так как число О-раскрасок равно 0. Поэтому если граф G несвязен, то хроматический многочлен каждой его компоненты связности делит- делится на х и, следовательно, ж2 делит P(G, х), что противоречит нашему предположению. Второй коэффициент многочлена P(G, x) по абсолют- абсолютной величине равен числу ребер графа и равен в нашем случае п — 1. Таким образом, граф G является деревом, поскольку G — связный (п, n — 1)-граф. ? Теорема 6.10. Для связного обыкновенного п-графа G абсолютная величина коэффициента при х', где 1 < г < п, в хроматическом мно- многочлене P(G, x) больше или равна числа сочетаний ("Г])- Доказательство. Возьмем в качестве Т пекоторый остов графа G. Тогда Р(Т, х) = х(х - [
140 6. Раскраски Равенство (*) показывает, что добавление нового ребра к графу не умень- уменьшает абсолютных величин его коэффициентов. Поскольку граф G можно получить из дерева Т добавлением новых ребер, осталось воспользовать- воспользоваться найдепным видом многочлена Р(Т, х). ? Из доказанной теоремы при i = 1 вытекает, что для связного обык- новенпого графа G абсолютная величипа коэффициента при х в хрома- хроматическом многочлене P(G, х) больше или равна ("~ 1 = 1. Поскольку свободный член хроматического многочлена равен 0, отсюда на основа- основании теоремы 6.5 получаем Следствие 1. Наименьшее число i, для которого отличен от нуля коэффициент при х% в хроматическом многочлене P(G, x), равно числу компонент связности графа G. Иными словами, для любого обыкновенного (п, т, &)-графа G крат- кратность множителя х в хроматическом многочлене P(G, x) равна к. Перейдем тенерь к выводу формул, полезных для исследования коэф- коэффициентов хроматического многочлена. Начнем с представления хрома- хроматического многочлена через факториальные степени х. Пусть G — обыкновенный n-граф. Непустое подмножество U С VG называют независимым, если U порождает нулевой подграф, т. е. в гра- графе G нет ребер, соедипяющих вершины из U. Через pt(G, i) будем обо- обозначать число разбиений множества вершин графа G на! независимых подмножеств. Теорема 6.11 (Зыков, 1952). Для хроматического многочлена лю- любого обыкновенного графа G справедлива формула Доказательство. Подсчитаем число ж-раскрасок графа G, в кото- которых используется точно i красок, где 1 < i < x. Чтобы получить такую раскраску сначала одним из pt(G, г) способов выбираем разбиение мно- множества вершин графа G на i независимых множеств, затем берем один из классов и раскрашиваем его вершины в одинаковый цвет одним из х способов, потом берем следующий класс и окрашиваем его вершины в одинаковый цвет любой из ж —1 оставшихся красок и т. д. Следовательно, число интересующих пас раскрасок графа G равно pt(G, i)-x-(x-l)-...-(x-i + l)= pt(G, г) ¦ ж(';). Заметим, при i > x число ж-раскрасок, в которых используется точно i красок, равно 0 и при этом х^ также равно 0. ?
6.3. Коэффициенты хроматических многочленов 141 Отметим, что для нулевого графа нолученное в теореме равенство представляет из себя формулу разложения обычной степени хп через факториальпые степени с числами Стирлипга второго рода в качестве коэффициентов. Заметим также, что в полученном равенстве наименьшее число г, для которого отличен от нуля коэффициент при х^\ равен хроматическому числу графа G. Изучим теперь коэффициенты хроматического многочлена в его раз- разложении через обычные степени х. Теорема 6.12 (Уитни, 1932). Пусть G — обыкновенный (п, т)- граф. Тогда коэффициент при х*, где 1 < i < n, в хроматическом много- многочлене P(G, x) равен > j), 3=0 где N(i, j) — число остовных подграфов графа G, имеющих i компонент связности и j ребер, т. е. ( i=l j=0 Доказательство. Применим для подсчета коэффициентов один из широко применяемых принципов комбинаторного анализа — принцип включения-исключения. Зафиксируем некоторый набор /С из х красок, где х — некоторое на- натуральное число. Отображение ф из VG в /С, не являющееся раскраской графа G, будем называть его несобственной раскраской (для несобст- венпой раскраски обязательно существует ребро графа, концы которого раскрашены в одинаковый цвет). Конечно, число собственных и несоб- ственпых ж-раскрасок гг-графа G равно хп. Возьмем некоторую собствепную или несобственную раскраску гра- графа G. Удалим из графа каждое ребро, концы которого раскрашены в разный цвет. Получим остовный подграф Н, каждое ребро которого (ес- (если таковое имеется) соединяет вершины одинакового цвета. Исходную собственную или несобственную раскраску будем называть строго не- несобственной раскраской остовного подграфа Н. Каждой компоненте связ- связности графа Н соответствует точпо одип цвет (это цвет ее вершип), поэ- поэтому если остовный подграф Н имеет i компонент связности, то имеется х' различных строго несобственных раскрасок, отвечающих остовному подграфу Н. Заметим, что каждая собственная или несобственная раскраска гра- графа G является строго несобственной раскраской некоторого его остовного
142 6. Раскраски подграфа. При этом собственным раскраскам графа G отвечает пулевой остовный подграф. Обозначим через N(i, j) число остовных подграфов графа G, имею- имеющих г компонент связности и j ребер. Иными словами, это число (n, j, i)- подграфов графа G. Из общего числа хп собственных и несобственных раскрасок вычтем сначала число строго несобственных раскрасок тех остовных подграфов, у которых имеется точно одно ребро. Если мы вычтем сумму ?>(;, \)х\ г то мы вычтем указанное число, но вычтем еще и некоторую избыточную величину. Действительно, пусть ei — U1V1 и ei — U2V2 — два различных ребра графа G. Тогда в число строго несобственных раскрасок остовно- го подграфа, содержащего точно одпо ребро ei, попадут и те, у которых вершины и2 и V2 имеют одинаковый цвет, а это — строго несобствен- несобственные раскраски остовпого подграфа, содержащего точно два ребра е\ w. е%. Более того, их число будет вычтено дважды — один раз для ei и один раз для ег- Аналогично, число строго несобственных раскрасок остовных подграфов, содержащих точно 3, 4 и более ребер, будет вычтено соответ- соответствующее число раз. Чтобы восстаповить баланс, мы добавим сумму При этом мы компенсируем двукратное вычитание числа строго несобст- венпых раскрасок, отвечающих остовным подграфам с двумя ребрами, но снова возникнет необходимость компенсации излишне добавленных чисел строго несобственпых раскрасок для остовпых подграфов с тремя, четырьмя и более ребрами. Следовательно, число собственных раскрасок графа G равно хп - Y, N(i, l)xl + Y, N{i, 2)xi i i Так как 7V(n, 0) = 1, отсюда вытекает j=0 i=l i=l j=0 a Отметим, что многие из ранее полученпых нами результатов о хро- хроматических многочлепах можно легко вывести из доказапной теоремы.
6.3. Коэффициенты хроматических многочленов 143 Для подсчета коэффициентов хроматического мпогочлена P(G, х) в соответствии с доказанной теоремой необходимо перебрать 2т остовных подграфов графа G. Однако, как установил Уитни, можно существенно умепьшить число перебираемых подграфов. Зафиксируем некоторую нумерацию ребер обыкновенного графа G натуральными числами от 1 до т, т. е. установим взаимно однозначное соответствие между множествами EG и {1, ..., т}. Разрушенным цик- циклом будем называть любую простую цепь, полученную из некоторого цикла графа G удалением ребра с наибольшим номером. Справедлива следующая теорема, которую мы приводим без доказа- доказательства. Теорема 6.13 (Уитни, 1932). Разложение для хроматического мно- многочлена P(G, x), указанное в предыдущей теореме, сохранится, если N(i, j) считать равным числу (n, j, ^-подграфов п-графа G, не содер- содержащих разрушенных циклов.
7. Введение в алгоритмы Начиная с этой главы мы переходим к систематическому обсуждению методов решения оптимизационных задач дискретной математики. Приведем несколько нримеров дискретных оптимизационных задач. Пусть имеется несколько городов и известны попарные расстояпия между городами. Два города считаются соседними, если есть дорога, соединяющая эти города и пе проходящая через другой город. Требу- Требуется найти кратчайший путь между некоторой парой городов (задача о кратчайшем пути). Еще один пример: есть п станков и т деталей, каждую деталь мож- можно обрабатывать на любом станке, но время обработки детали на одпом станке может отличаться от времени ее обработки на другом станке. Предположим, что для каждой пары станок — деталь эти времена зада- заданы. Требуется так организовать производство деталей, т. е. разместить детали по станкам таким образом, чтобы суммарное время работы было наименьшим (задача оптимального назначения). Наконец, одной из самых нонулярных дискретных оптимизационных задач является следующая задача. Путешествепник хочет объехать п городов, побывав в каждом ровпо по одному разу, и вернуться в исходный город, затратив при этом ми- нимальноую сумму на поездку. Затраты на поездку складываются из затрат на нереезды между парами городов, причем эти затраты заранее известны (задача коммивояжера). Все приведенные выше задачи имеют ряд общих свойств, характер- характерных для дискретных оптимизационных задач. Во-первых, в каждой задаче имеется лишь конечное число вариан- вариантов (нутей между городами, способов распределения деталей по стан- станкам, маршрута передвижения путешественника), из которых требуется осуществить выбор. Во-вторых, каждому варианту сопоставлена пеко- торая числовая характеристика (длина пути, суммарное время работы, стоимость поездки). В-третьих, требуется выбрать вариант, числовая характеристика которого достигает экстремума. Наиболее очевидный способ решепия подобных задач — это полный перебор всех вариантов. Однако этот способ наименее удачен, посколь- поскольку все интересные с практической точки зрения ситуации возникают именно тогда, когда число возможных вариантов чрезвычайно велико. Полный перебор всех вариантов потребовал бы столь большого времени, что стал бы практически нереализуем даже на самых быстродействую- быстродействующих ЭВМ.
7.1. Алгоритмы и их сложность 145 К счастью, для многих важных задач дискретной оптимизации су- существуют методы решения, намного более экономичные, чем полный пе- перебор. Именпо такие задачи и алгоритмы их решепия будут рассмотрены в этой и последующих главах. 7.1. Алгоритмы и их сложность По устоявшейся терминологии различают массовые и индивидуальные задачи. Все вышеприведенные примеры дают образцы именно массо- массовых задач. Индивидуальная задача получается из массовой при помощи фиксации набора условий. Например, из массовой задачи коммивояжера получится индивидуальная задача, если зафиксировать число городов и определить затраты на переезды между всеми парами городов. Каждая массовая задача (в дальнейшем просто задача) характеризу- характеризуется размером. Размер задачи служит мерой количества входных данных и представляется одним или несколькими целочисленными параметрами. Например, размерностью задачи коммивояжера естественно считать чи- число п городов, которые собирается посетить путешественник. Под алгоритмом понимается общий, шаг за шагом выполнимый способ получения решения данной задачи. Заметим, что существует несколь- несколько формализации понятия алгоритма (машины Тьюринга, рекурсивные функции, нормальные алгоритмы Маркова), однако их рассмотрение да- далеко выходит за рамки данной книги. Для определенности можно счи- считать, что алгоритм является программой на некотором языке высокого уровня. Для оценки качества алгоритмов можно применять различные крите- критерии. Одной из важнейших характеристик алгоритма является временная сложность в худшем случае. Пусть размер массовой задачи определяется одним целочисленным параметром п. Рассмотрим все индивидуальные задачи размера п и обозначим через t{n) максимальное число действий, которое необходимо для решения любой такой индивидуальной задачи. Функция t{n) — это и есть временная сложность алгоритма в худшем случае (или просто сложность алгоритма). Под действием, производимым алгоритмом, будем понимать выпол- выполнение простой «операции», обычпо анпаратно реализованпой на любой ЭВМ, а имепно, любой арифметической операции, операции сравнения, пересылки и т. п. Ясно, что при таком определении действия сложность алгоритма зависит от конкретного вида машинных команд. Поэтому нас всегда будет интересовать лишь асимптотическая сложность алгоритма, т. е. порядок роста сложности при условии, что размер задачи неограни- неограниченно возрастает.
146 7. Введение в алгоритмы При сравнении скорости роста двух неотрицательных функций f(n) и g(n) удобно использовать следующие обозпачения. Будем говорить, что /(и) = O(g(n)), если существуют такие положительные константы с и N, что f(n) < с ¦ g(n) для всех п > N. В этой же ситуации можно использовать и обозначение g{n) = fi(/(n)). Например, справедливы соотношения log2n = О(п), п = fi(log2n), На практике алгоритм решения некоторой задачи считается доста- достаточно хорошим, если сложность этого алгоритма есть О(пк) при некото- некотором к > 0. В таком случае говорят, что задача может быть решена за по- полиномиальное время, или, короче, что задача полиномиально разрешима, а сам алгоритм называют полиномиальным. Если сложность алгоритма равна О(п), то такой алгоритм называется линейным. Напротив, если алгоритм имеет сложность П(ап) при пекотором а > 1, то его называют экспоненциальным. Отметим, что как задача о кратчайшем пути, так и задача опти- оптимального назначения являются полиномиально разрешимыми. В то же время для задачи коммивояжера неизвестен полиномиальпыи алгоритм; впрочем, нет и доказательства того, что такой алгоритм не существует (см. [16]). Важность понятия сложности алгоритма хорошо иллюстрируют сле- следующие таблицы, заимствованные из книги [5]. Первая таблица построена в предположении, что один шаг работы ал- алгоритма требует для своего выполнения 1 миллисекунду. Как следует из таблицы 1, при увеличении времени с 1 секунды до 1 часа, т. е. в 3, 6 • 103 раз, размер задачи, решаемой алгоритмом сложности 2™, увеличивается только в 21/9 раза, а для алгоритма сложности п — ровно в 3, 6 • 103 раз. Сложность алгоритма п п log2 п п2 п3 Максимальпый размер задачи за 1 сек 1000 140 31 10 9 за 1 мин 6-Ю4 4893 244 39 15 за 1 час 3,6-10° 2-Ю5 1897 153 21 Таблица 1 Может показаться, что рост скорости вычислений, вызванный появ- появлением новых ЭВМ, уменьшит значение эффективных, т.е. имеющих «небольшую» сложность алгоритмов. Однако, как это видпо из табли- таблицы 1, в действительности происходит в точпости противоположное. С
7.2. Запись алгоритмов 147 ростом быстродействия ЭВМ становится возможным решение задач все большего размера, и именно от сложности алгоритма зависит, насколько увеличение скорости ЭВМ влияет на увеличение размера задачи. Рассмотрим теперь таблицу 2. Пусть для решения некоторой задачи имеется алгоритм сложности п3. Тогда десятикратное увеличение ско- скорости быстродействия ЭВМ позволит увеличить размер задачи, решае- решаемой за 1 минуту, в 2,15 раза. Переход к алгоритму со сложностью п2, нозволит решить в 6 раз большего размера (см. таблицу 1). Если в ка- качестве единицы времени взять один час, то сравнение будет еще более внечатляющим. Сложность алгоритма п n log2 п п2 п6 2" Максимальный размер задачи, разрешимой за единицу времени На совре- современных ЭВМ К L М N Р На ЭВМ с 10-кратной скоростью 10К Ночти 10L нри больших L ЗД6М 2Д5ЛГ Р+3,3 На ЭВМ с 1000-кратной скоростью 1000К Почти 1000L при больших L 31,6М ION Р+9,97 Таблица 2 Отметим, что для алгоритма сложности 2" десятикратное увеличе- увеличение скорости ЭВМ добавляет к размеру разрешимой задачи только три единицы, тогда как для алгоритма сложпости п2 происходит увеличение в три раза, а для алгоритма сложности п — в десять раз. 7.2. Запись алгоритмов Предполагается, что читатель знаком с каким-нибудь языком про- программирования высокого уровня. Для записи алгоритмов будет исполь- использоваться унрощенный Паскаль, являющийся неформальной версией язы- языка Паскаль. В унрощенном Паскале такие нонятия как константа, переменная, оператор, функция и нроцедура имеют обычное значение. Заметим, что нри онисании алгоритмов тип данных явно объявляться не будет, по- поскольку он всегда будет понятен из контекста. Упрощенный Паскаль нозволяет нрименять традиционные конструкции математики; в част- частности, разрешается использовать любые математические нредписания,
148 7. Введение в алгоритмы если они понятны и перевод их в операторы языка Паскаль (или другого языка высокого уровня) не вызывает затруднений. Операторы упрощепного Паскаля записываются по правилам, приня- принятым в языке Паскаль. В частности, составной оператор заключается в операторные скобки begin и end. Договоримся, что операторы, запи- записанные в одпой строке, образуют составной оператор; в такой ситуации операторные скобки будут иногда опускаться. Для обеспечепия большей наглядности при описании алгоритмов, в упрощенный Паскаль вводятся некоторые дополнительные операторы: оператор цикла for х ? X do P (для каждого элемента х из множес- множества X выполнить оператор Р); условный оператор if exists ж, В{х) then P else Q (если существует элемент х, удовлетворяющий условию В(х), то выполнить оператор Р, иначе выполнить оператор Q); оператор х -О- у (обмен значениями между х и у). При описании алгоритмов приходится использовать такие структу- структуры данпых, как списки, стеки и очереди. Список L = (/ь ...,/„) явля- является конечной последовательностью однотипных элементов. В отличие от массива число элементов в списке заранее не фиксируется. Заме- Заметим также, что список может не содержать пи одного элемепта, т. е. он может быть пустым. В этом случае будет использоваться обозначение L = nil. Список S = (si, ..., sn) называется стеком, если в нем выделен эле- элемент, называемый вершиной (будем считать, что в непустом стеке вер- вершиной является последний элемент, а в пустом стеке вершина не опре- определена) и заданы следующие две процедуры и функция: S ¦$= х — втолкнуть х в стек, т. е. получить список вида (si, ...,«„, х); х •<= S — вытолкнуть вершину непустого стека в переменную х. В результате выполнения этой процедуры список S принимает значепие (si, ..., sn_i), а х — sn; top(S) — значением этой функции является вершина стека. Список Q — (<j>i, ..., qn) называется очередью, если в нем выделены начало (элемепт qi) и конец (элемент qn) и определены две процедуры: Q <S= х — втолкнуть х в конец очереди, т. е. получить список Ei, ...,qn, x); х <s= Q — исключить из непустой очереди начало и передать его в переменную х. После выполнения этой процедуры Q = (в2, ..., sn) и х — s\. При записи алгоритма строки обычно будут нумероваться с тем, что- чтобы можно было указать на определенный оператор и группу операторов.
7.3. Корневые и бинарные деревья 149 Договоримся об обозначениях для часто используемых фупкций. По- Поскольку в дальнейшем будут использоваться только логарифмы по осно- основанию 2, вместо log2 х будем писать просто log ж. Для произвольного дей- действительного числа х через \_х\ [целая часть или дно х) будем обозначать наибольшее целое число, не нревосходящее х, а через \х~\ (потолок х) — наименьшее целое число, большее или равное х. 7.3. Корневые и бинарные деревья Дерево Г = (V, Е), в котором зафиксирована некоторая вершина г, называется корневым деревом с корнем г. Такое корневое дерево будет обозначаться через (Г, г). На множестве вершин V корневого дерева можно определить следу- следующее отношепие: u < v тогда и только тогда, когда v лежит на простой (г, и)-цени. Очевидно, отношение < на множестве вершин корневого дерева явля- является отношением частичного норядка. Таким образом, корневое дерево с корнем г является одновременно частично упорядоченным множеством, в котором г является наибольшим элементом. Это частично унорядочен- ное множество удобно обозначить через (Г, <). Корневые деревья нринято изображать в виде диаграмм соответству- соответствующих частично унорядоченных множеств (см. рис. 65). и; Рис. 65 Минимальные элементы частично упорядоченного множества (Т, <) часто называются листьями корневого дерева (Т, г). Если и < v, то го- говорят, что и — потомок «, ас — предок и. Очевидпо, что если v, w — предки вершины и, то они сравнимы в частично упорядоченном множес- множестве (Т, <). Поэтому среди предков вершины и существует наименьший предок ж; говорят, что х — отец вершипы и, в. и — сын вершины х. Для произвольной вершины v через v обозначим поддерево с корнем и; это корневое дерево состоит из самой вершипы v и всех ее потомков. На
150 7. Введение в алгоритмы рис. 65 вершина и является листом, вершина w — предок вершин «и», причем для вершипы v она является отцом, вершипы сиг несравнимы. Длина простой (г, «)-цепи пазывается уровнем вершины v. Высо- Высота h(T) корпевого дерева (Т, г) — это наибольший из уровней его вер- вершин. Установим связь между высотой корпевого дерева и числом его листь- листьев. Лемма 1. Пусть (Т, г) — корневое дерево высоты h, в котором ка- каждая вершина имеет не более чем к сыновей. Тогда число листьев этого дерева не превосходит kh. Доказательство. Утверждение, очевидно, выполнепо при h = 1. Пусть h > 1. Для каждого сына s,; A < г < р < к) корня г рассмот- рассмотрим корневое дерево Tj — rt. Ясно, что /i(Tj) < h. Поэтому к каждому дереву Tj, 1 < г < р, применимо предположение индукции. Следователь- Следовательно, число листьев в дереве Т пе превосходит р • kh~l < к ¦ kh~l < kh. а В приложениях часто используются так пазываемые бинарные (двоич- (двоичные) деревья. Бинарпое дерево — это корневое дерево, обладающее сле- следующими дополнительными свойствами: 1) каждая вершина имеет не более двух сыновей; 2) для любой вершины v каждый сын имеет дополнительный при- признак — он является либо левым (left(y)), либо правым (right{v)). Удобно считать, что существует пустое бинарное дерево, т. е. би- бинарное дерево с пустым множеством вершин. С учетом этого соглаше- соглашения для каждой вершины v определено левое поддерево Left(v) и правое поддерево Right(v). Если поддерево Left(v) (соответственно Right(v)) непусто, то его корнем является левый (соответственно правый) сын вершины v. Запись г = nil служит для обозначения пустого бинарно- бинарного дерева. Поэтому отсутствие у вершины v даппого бипарного дере- дерева левого (соответственно правого) сына можно выразить при помощи равепства left(v) = nil (соответственно right(v) = nil). При работе с бинарными деревьями будет использоваться процедура Create(r), добав- добавляющая вершину в пустое бинарпое дерево (реализация этой процедуры в конкретном языке программировапия зависит, разумеется, от способа представления бинарного дерева и возможностей языка). Поскольку каждое бинарное дерево либо является пустым, либо состо- состоит из корня и двух его поддеревьев — левого и правого, класс бинарных деревьев допускает рекурсивное описание. Рекурсивная природа бинар- бинарных деревьев позволяет многие алгоритмы обработки бинарпых деревьев описывать при помощи рекурсии.
7.3. Корневые и бинарные деревья 151 Остановимся на алгоритмах обхода бинарных деревьев. Рассмотрим следующие три способа обхода: 1) обход сверху вниз (обход в прямом порядке); 2) обход слева направо (обход во внутреннем порядке); 3) обход снизу вверх (обход в обратом порядке). Эти три способа обхода (в указанном выше порядке) реализуются тремя процедурами: PreOrder(v), InOrder(v) и PostOrder(v). В этих процедурах в каждой вершине v бинарного дерева выполпяется опера- оператор P{v). Procedure PreOrder(v); begin if v ф nil then P(v); PreOrder(left(v)); PreOrder(right{v)); end; Procedure InOrder(v); begin if v ф nil then InOrder(left(v)); P(v); InOrder(right(v)); end; Procedure PostOrder(v); begin if v ф nil then PostOrder(left(v)); PostOrder(right(v)); P(v); end; На рис. 66 каждая из этих трех процедур применяется к бинарному дереву, вершины которого помечены числами. Справа от дерева показан тот порядок, в котором соответствующая процедура обходит бипарное дерево A — обход в прямом порядке, 2 — обход во внутренпем порядке, 3 — обход в обратном порядке). 10 1) 10,6,5,8,7,14,12,15; 6 fC \ 14 2) 5,6,7,8,10,12,14,15; 3) 5,7,8,6,12,15,14,10. Рис. 66
152 7. Введение в алгоритмы Пусть (Г, г) — бинарное дерево, вершины которого помечены элемен- элементами некоторого линейно упорядочепного множества L. Иными словами, определено отображение А из множества вершин V бинарного дерева в множество L. Такое бипарное дерево называется деревом поиска, если для любой вершины v eV выполнены условия 1) А(м) < А(г>) для произвольной вершины и из Left(v); 2) А(и) > A(v) для произвольной вершины и из Right(v). Лемма 2. Обход дерева поиска во внутреннем порядке сортирует метки вершин в порядке возрастания. Читатель без труда проверит это утверждение, применив индукцию по высоте дерева поиска. Свойство дерева поиска, отмечеппое в лемме 2, лежит в основе следу- следующего способа сортировки последовательностей. Для данной последова- последовательности (si, ..., хп) элементов из множества L сначала строим дерево поиска так, что метками вершин являются элементы последовательпос- ти, а затем обходим это дерево во внутреннем порядке. Дерево поиска изображено на рис. 66. Здесь же показано, что в результате обхода это- этого дерева во внутренпем порядке метки вершип сортируются в порядке возрастания. Для построения дерева поиска из данной последовательности приме- применяется следующая рекурсивная процедура. Procedure Add(r, x); begin if r=nil then Create(r); A(r) :— x else if x < A(r) then Add(left(r), x) else Add(right(r), x) end; Эта процедура к уже существующему дереву поиска с корнем г добав- добавляет очередной элемент х так, что свойство быть деревом поиска сохра- сохраняется. Заметим, что процедура Add(r, x) паписана в предположении, что все элементы исходпой последовательности попарно различны. Не- Нетрудно понять, что такой способ сортировки последовательностей имеет сложность О(п2). Обширный материал, относящийся к затронутым в этом разделе во- вопросам, читатель найдет в книгах [11], [27], [44]. 7.4. Сортировка массивов Пусть а = [a,i, ..., ап] — массив, составленный из элементов неко- некоторого липейно упорядоченпого мпожества L. Сортировка массива а со-
7.4. Сортировка массивов 153 стоит в нахождении такой нерестановки а множества {1, ..., п}, что Ocr(i) < остB) < ... < аст(„). Предполагается, что всю инфориацию о дан- данном массиве мы можем получить лишь применяя операцию сравнения к элементам массива. Оценим снизу сложность произвольного алгоритма сортировки масси- массива из п элементов. Для этого построим так называемое дерево решений. На рис. 67 изображено дерево решений для массива [a,i, a^, «з]5 состо- состоящего из трех элементов. Элемепты дерева изображаются овалами и прямоугольниками. Овалы заключают проверяемые условия, в прямо- прямоугольниках записываются отсортированные массивы. Рис. 67 Очевидпо, что дерево решений массива из п элементов является би- бинарным деревом, причем количество листьев в этом дереве равно п\. Пусть h — высота дерева решений, построенного для массива из п элементов. Из леммы 1 разд. 7.3 следует, что п! < 2h, откуда h > log(n!). Поскольку п\ > (п/2)"/2, при п > 4 имеем iog(n!) Следовательно, справедлива Лемма 1. Высота дерева решений массива из п элементов больше, чем (nlogn)/4. Предположим теперь, что к массиву а = [a,i, ..., ап] примепен некото- некоторый алгоритм сортировки. В дереве решений для массива из п элементов
154 7. Введение в алгоритмы рассмотрим простую цепь Р, соединяющую корень дерева решений с лис- листом, представляющим отсортированный массив а. Интуитивно понятно, что количество сравнений, использованых алгоритмом для сортировки массива а, пе меньше длины цепи Р. Отсюда можно сделать вывод: Произвольный алгоритм сортировки массива из п элементов (при по- помощи сравнений) имеет сложность fi(nlogn). Перейдем к построению простого и эффективного алгоритма сорти- сортировки массивов, сложность которого равна O(nlogn). Этот алгоритм был предложен в 1964 году независимо Дж.Уильямсом (под названием HeapSort) и Флой дом (под пазвапием TreeSort). В некоторых книгах (см., например, [11], [44]) его называют алгоритмом пирамидальной сор- сортировки. Такое название более удобно, и мы будем использовать имепно его. Пусть а = [a,i, ..., а„] — произвольный массив. Свяжем с массивом а бинарное дерево Т„, считая, что в корне находится элемент cti и для ка- каждого элемепта щ положим а-ц = left(ai) (если 2г < п) и g^+i = right(ai) (если 2г + 1 < п). Из этого определения, в частности, вытекает, что а, лист тогда и только тогда, когда 2г > п. На рис. 68 изображено бипарное дерево Т9. Рис. 68 Лемма 2. Высота бинарного дерева Т„ равна [log n\. Доказательство. Пусть h — высота дерева Тп. Из определепия Тп следует, что при каждом k < h элемепт о2* имеет уровень к. Отсю- Отсюда вытекает, что элемент п2ь. является листом в Тп. Поэтому 2h+1 = = 2 • 2h > п. Следовательно, 2'* < п < 2h+1, откуда h < logn < h + 1, т. е. h = [log п\. а
7.4. Сортировка массивов 155 Бинарное дерево Тп будем называть пирамидой или сортирующим де- деревом, если при 1 < г < п/2 элемент а^ больше или равеп каждого из своих сыновей. Займемся сначала той частью алгоритма нирамидальной сортировки, которая любое бинарное дерево Тп преобразует в пирамиду. В основе алгоритма пирамидальной сортировки лежит следующая ре- рекурсивная процедура Sift(i, j). В этой процедуре использована функция MaxS(i), вычисляющая номер наибольшего из сыновей элемента <v 1. procedure Sift(i, j); 2. begin 3. if i < [j/2\ then 4. begin 5. k :- MaxS(i); 6. if a[i] < a[k] then 7. begin 8. a[i] о a[k\; Sift(k, j); 9. end 10. end 11. end; Скажем, что дерево Т„ является частичной пирамидой с индексом I, если при i > I все поддеревья с корнями щ являются пирамидами. Яспо, что любое дерево Тп является частичной пирамидой с индексом Z, если I удовлетворяет неравенству / > |_r*/2j. Лемма 3. Если дерево Тп является частичной пирамидой индек- индекса / + 1, то в результате выполнения процедуры Sift(l, n) оно стано- становится частичной пирамидой индекса I. Читатель без труда убедится в справедливости леммы 3, применив возвратную индукцию по индексу /. Теперь нетудно попять, что последовательное применение процедуры Sift(i, п), начиная с i — [п/2\ и заканчивая i — 1, преобразует любое дерево Тп в пирамиду. Заметим, что в нирамиде элемент, находящийся в корне, является наибольшим. Воспользовавшись этим свойством пирамиды, процесс сор- сортировки массива можпо представить следующим образом. Поменяв мес- местами элементы ai и ап, мы получим, что наибольший элемент массива поставлен на последнее место. Рассмотрим бинарное дерево Tn_i, со- соответствующее массиву ai, ..., an_i (тем самым последний элемент ис- исключен из рассмотрения). Очевидно, дерево Г„_1 является частичной
156 7. Введение в алгоритмы пирамидой с ипдексом 2. В силу леммы 3 однократное применение про- процедуры Sift(l, га —1) преобразует Т„_1 в пирамиду. Далее нужно сделать перестановку элементов ai и а„_х и применить процедуру Sift(l, n — 2) к дереву Тп_2- Продолжая этот процесс до тех пор, пока не останется одноэлементное дерево Ti, мы придем к отсортированному массиву. Запишем формальную версию алгоритма пирамидальпой сортировки. Алгоритм 7.1. 1. begin 2. for i := [п/2\ downto 1 do 3. Sift(i, га); 4. for i :— n downto 2 do 5. begin a[l] о a[i\; Sift(l, i — 1); end 6. end. Ясно, что цикл в строках 2, 3 преобразует дерево Тп в пирамиду, а цикл в строках 4, 5 сортирует массив. В качестве примера применим этот алгоритм к массиву a — = [2, 3, 6,1, 4, 8]. Спачала рассмотрим работу первого цикла (строки 2, 3). Все перестановки элементов массива будем отображать в дереве Т6. 3 2 Последнее из полученных деревьев нредставляет массив [8, 4, 6,1, 3, 2], и, очевидно, является пирамидой. Проследим теперь работу второго цик- цикла (строки 4, 5). На рис. 69 показаны перестановки, которые нроделывает алгоритм при каждом выполнении второго цикла. Для удобства читателя верши- вершины, метки которых уже расположены на своих местах, ноказаны неза- незакрашенными. Оценим сложность алгоритма пирамидальной сортировки. Теорема 7.1. Алгоритм пирамидальной сортировки имеет слож- сложность O(ralogra). Доказательство. Пусть а = [аг, ..., ап] — данпый массив, h — высота соответствующего бинарного дерева Тп. Обозначим через t{h)
7.4. Сортировка массивов 157 6 8 функцию, значением которой является число операций, необходимых для сортировки массива, которому отвечает дерево Тп. Ясно, что t(h) = = ti(h) + t2(h), где ti(h) и t2(h) — количества операций, необходимых для выполнения первого и второго циклов из алгоритма 7.1. Оценим сначала функцию t\{h). Напомним, что процедура Sift(i, n) находит номер m наибольшего из сыновей вершины а,, и в том случае, когда щ < am, переставляет элементы щ и am, а затем вызывает проце- процедуру Sift(m, n). Яспо, что количество действий (сравнений и перестано- перестановок) с, выполнепых между вызовами Sift(i, n) и Sift(m, n), не зависит от номера г. Убедимся, что ti(h) удовлетворяет неравенствам *i(l) < с, ti(h) < 2fi(ft - 1) + eft, если ft > 2. В самом деле, преобразование в пирамиды двух поддеревьев с корня- корнями п2 и аз требует не более 2t\(h — 1) действий, а процедура Sift(l, n) выполняет не более ch действий. Пусть /(ft) = cBft+1 - ft - 2). Покажем, что tx{h) < /(ft) при лю- любом ft > 1. Если h — 1, то Пусть ft > 1. Тогда h{h) < 2*i(ft. - 1) + eft < 2сBл - ft - 1) + eft = сBл+1 - ft - 2) = /(ft). Таким образом, h(h) < c{2h+1 - ft - 2) < d2h+l < 2cn. Переходя к оценке ?2(ft), следует лишь отметить, что второй цикл в алгоритме 7.1 выполняется п — 1 раз, а процедура Sift(l, i — 1) B < i < n)
158 7. Введение в алгоритмы требует не более ch действий. Отсюда t2{h) < cnh < en log n. Следовательно, ^СО — O(nlogn). Окончательно имеем t(h) =ti(h)+t2(h) =O(n) + O(n\ogn) -O(nlogn). п
8. Поиск в графе Многие алгоритмы на графах основаны на систематическом перебо- переборе всех вершин графа, при котором каждая вершина просматривается в точности один раз. В этой главе мы рассмотрим два стандартных и широко иснользуемых метода такого перебора: ноиск в глубину и но- иск в ширину. Оба метода изучаются применительно к обыкновенным графам, поскольку па произвольные графы они могут быть распростра- распространены очевидным образом. В разд. 8.3 поиск в глубину применяется для отыскания компонент сильной связности в орграфе. 8.1. Поиск в глубину Идея этого метода состоит в следующем. Поиск в обыкновенном гра- графе G начинается с пекоторой начальной вершины v (с этого момента v считается просмотренной). Пусть и — последняя просмотренная верши- вершина (этой вершиной может быть и v). Тогда возможны два случая. 1) Среди вершин, смежных с и, существует еще непросмотренная вер- вершина w. Тогда w объявляется просмотренной, и поиск продолжается из вершины w. Будем говорим, что вершина и является отцом вершины w [и = father[w\). Ребро uw в этом случае будет называться древесным. 2) Все вершины, смежные с ы, просмотрены. Тогда и объявляется использованной вершиной. Обозначим через х ту вершину, из которой мы нонали в и, т. е. х = father [и]; ноиск в глубину нродолжается из вершины х. Что произойдет, когда все просмотренные вершины будут использо- использованы? Если в графе G не осталось непросмотренных вершин, то поиск заканчивается. Если же осталась непросмотренная вершина у, то поиск продолжается из этой вершины. Поиск в глубину просматривает вершины графа G в определенном порядке. Для того чтобы зафиксировать этот норядок, будет использо- использоваться массив num[v\. При этом естественно считать, что num[v\ = 1, если v начальная вершина, и num[w] — пит[и] + 1, если w просматрива- просматривается сразу после того, как просмотрена вершина и. Пусть в обыкновенном графе G проведен поиск в глубину. Обозначим через Т множество всех древесных ребер. Все остальпые ребра графа будем называть обратными ребрами. Множество всех обратных ребер будем обозначать через В. Результат применения поиска в глубину к связному графу G (рис. 71 а) показан на рис. 71Ь. Здесь сплошные линии изображают древесные ребра, а пунктирные линии — обратные ребра. Заметим, что
160 8. Поиск в графе нумерация вершин соответствует порядку, в которым они просматрива- просматриваются поиском в глубину. Можно обратить внимание на то, что множес- множество всех древесных ребер с выделенной начальной вершиной v\ образует корневое дерево с корнем v\. Это корневое дерево часто называют глубин- глубинным деревом, или, короче, rf-деревом графа G. Следует также отметить, что каждое обратное ребро соединяет в d-дереве предка и нотомка. / v3 Рис. 71 Пусть G — несвязный граф, G\, ..., G& — множество всех его ком- компонент связности. Обозначим через Tj множество древесных ребер, вы- выделенных поиском в глубину в компоненте G;, а через vt — корневую вершину из d, т.е. первую просмотренную вершину подграфа G,. Та- Таким образом, множество всех древесных ребер несвязного графа обра- образует остовный лес. Фиксируя в каждом поддереве этого леса корневую вершину, мы получим глубинный лес или, короче, d-лес графа G. Представим теперь формальное описание указанного алгоритма. В ал- алгоритме используются описанные ранее массивы пит и father. В про- процессе работы алгоритма массив пит используется для распознавания не- непросмотренных вершин, а именно, равенство пит[г)] — 0 означает, что вершина v еще не просмотрена. Вначале изложим версию алгоритма поиска в глубину, основанную на рекурсивной нроцедуре DFS(v) (название процедуры является аббре- аббревиатурой от апгл. depth first search), осуществляющей поиск в глубину из вершины v. Алгоритм 8.1. 1. procedure DFS(v); 2. begin 3. num[v] := i; i := i + 1; 4. for и G list[v] do 5. if шт[в] = О then 6. begin 7. T := T U {uv}; father[u] := v; DFS(u)
8.1. Поиск в глубину 161 8. end 9. else if num[u] < num[v] and u ф father[v] then 10. B:=Bl){uv} 11. end; 12. begin 13. i := 1; Г := 0; В := 0; 14. for v ? V do Bum[o] := 0; 15. for v e V do 16. if rmm[t;] — О then 17. begin 18. /otfter[«] := 0; DFS(v) 19. end 20. end. Алгоритм 8.1 применим к произвольному обыкновенному графу G. Если G — связный граф, то цикл в строках 15 — 19 достаточно заме- заменить вызовом процедуры DFS(v0) применительно к печальной верши- вершине v0. Заметим, что в терминах алгоритма 8.1 вершина v просмотрена с пачалом работы процедуры DFS(v); в тот момент, когда процедура DFS(v) закопчила работу, вершина v является иснользовапной. Теорема 8.1. Пусть G — связный (п, т)-граф. Тогда 1) поиск в глубину просматривает каждую вершину в точности один раз; 2) поиск в глубину требует О(п + т) операций; 3) подграф (\r, T) графа G является деревом. Доказательство. 1) Проверка в строке 5 гарантирует, что каждая вершина просматривается пе более одного раза. Убедимся, что поиск в глубину просматривает каждую вершипу. Пусть X — множество просмотренных вершин в тот момепт, когда алгоритм закончил работу, Y = V \ X. Если Y непусто, то в силу связности графа G существу- существует такое ребро ху, что х е X, у е Y. Процедура DFS(x) полностью проработала, поэтому смежная с х вершина у должна быть просмотрена. Получили противоречие. 2) Число повторепий цикла в процедуре (начало цикла в строке 4) с учетом рекурсивных обращепий равпо сумме степеней всех вершин графа, т. е. оно равно 2т; следовательно, число операций пропорциональ- пропорционально т. Число повторений цикла в строке 14, очевидно, пропорциональпо п. Отсюда вытекает, что поиск в глубину требует О(п + т) операций. 3) Ясно, что условие пит[и\ = 0 (строка 5) вынолнится п — 1 раз. От- Отсюда следует, что |Г| = п — 1. Кроме того, из 1) вытекает, что мпожество
162 8. Поиск в графе ребер Т не содержит циклов. Таким образом, граф (У, Т) ацикличен и число ребер в этом графе на единицу меньше числа вершин. Следова- Следовательно, граф (У, Т) — дерево. Пусть G — связный граф, Vg — некоторая его вершина. Предноложим, что в графе G проведен поиск в глубину из вершины vq. Дерево (V, Т) с выделенной вершиной v0 является корневым деревом. Как отмечалось выше, это корневое дерево часто называют d-деревом или глубинным деревом графа G. Для любой вершины и ф v§ вершина father[u] является отцом и в d-дереве. Рассмотрим нерекурсивную версию процедуры DFS(v). Рекурсия устраняется при помощи стека S, элементами которого являются вер- вершины графа. Вершина v является просмотренной, если num[v] ф 0. Вер- Вершина v становится использованной с момента, когда v — top(S) (v нахо- находится в вершине стека) и все вершины, смежные с v, уже просмотрены (в этом случае v удаляется из стека). Вычисления, связанные с мно- множеством обратных ребер В, здесь онущены; читатель, разобравшийся с рекурсивной версией процедуры DFS(v), без труда восстановит их. 1. procedure DFS(v); 2. begin 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. num[v\ := i; г := г + S := nil; S <= v; while S ф nil do begin v := top(S); if exists и, и ? then begin num[u] := i; father [u] :— end else v <= S end end: 1; list[v] and num[u] — 0 i:=i + l; T:=T\j{uv}; v; S <=u; Отметим следующее важное свойство поиска в глубину: если ху — обратное ребро, то вершины х, у сравнимы в d-дереве, т. е. одна из этих вершин является предком другой. В самом деле, пусть ху — обратное ребро графа G, нричем пит[х] < < пит[у]. Предположим, что вершины х и у несравнимы в d-дереве. Из описания алгоритма 8.1 следует, что в промежуток времени между на- началом работы процедуры DFS(x) и ее завершепием, будут просмотрепы
8.2. Алгоритм отыскания блоков и точек сочленения 163 только потомки этой вершипы. Поскольку у ? /is?[a;] и в момент за- завершения процедуры DFS(x) вершина у еще не просмотрена, получаем противоречие с описанием алгоритма 8.1. 8.2. Алгоритм отыскания блоков и точек сочленения Пусть G = (У, Е) — обыкновенный связный граф. В разд. 2.2 было определено понятие блока графа G и получеп ряд утверждений о бло- блоках. В частности, в этом разделе определено отношение « на множестве ребер Е графа G: е « / О- е — f или е, / лежат на некотором цикле. Это отношение является эквивалентностью, причем каждый его класс совпадает с множеством ребер некоторого блока. Предположим, что в графе G из некоторой вершины vq проведен по- поиск в глубину. Поиск в глубипу строит d-дерево (V, Т) и массив пит, состоящий из номеров, которые присваиваются вершинам. Получим сна- сначала в терминах d-дерева признак того, что даннная вершина является точкой сочлепепия. Лемма 1. Пусть t, v, w — вершины графа G, причем t — отец, а w — предок вершины v. Если в графе G существует ребро е = vw, то е « / — vt. Доказательство. Можно считать, что w ф t. Отсюда следует, что w > t, т.е. существует простая (w, ?)-цепь. Добавляя к этой цепи ребра е — vw и / — vt, получим цикл. ? Аналогичпо проверяется Лемма 2. Пусть v, w — вершины графа G, причем w — потомок вершины v. Если в графе G существует ребро е — vw, то е и / — vs для некоторого сына s вершины v. Пусть v — произвольная вершина. Обозначим через v поддерево d-де- рева с корнем v. Для произвольного непустого множества X С v че- через VB(X, v) будем обозпачать множество всех таких вершин w, что w > v и для некоторой вершины х ? X существует обратное ребро xw. Если X одноэлементно, т.е. X = {ж}, то вместо VB({x}, v) будем писать VB{x, v). Лемма 3. Пусть t, v, s — вершины графа G, причем t — отец, а s — сын вершины v. Ребра е = vt и / = vs лежат на общем цикле тогда и только тогда, когда VB[s, v) ф 0.
164 8. Поиск в графе Доказательство. Предположим, что ребра е = vt и / = vs лежат на общем цикле С, имеющем вид щ, ..., ир, щ. Можно считать, что щ = v, и2 = s, up = t. Найдется наименьшее число g > 2 такое, что uq ^ s. Ясно, что q < р и ребро uq-\Uq является обратным, следовательно, вершины ид_1 и uq сравнимы в d-дереве. Поскольку иа_1 < s, имеем uq > v. Учитывая, что С — цикл и щ = v, нолучаем неравенство u4 > t. Таким образом, uq ? VB(s, v), поэтому VB(s, v) ф 0. Обратно, пусть w ? VB{s, v). Тогда w > t и существует обратное ребро xw, причем х < s. Ясно, что х — потомок вершины w в d-дереве. Поэтому существует простая (w, ж)-цепь Р, нричем Р содержит ребра vt и vs. Добавляя к цепи Р ребро xw, получим требуемый цикл. ? Лемма 4. Вершина v является точкой сочленения тогда и только тогда, когда выполняется одно из двух следующих условий: 1) v — корень d-дерева, имеющий не менее двух сыновей; 2) v не является корнем и для некоторого сына s вершины v множес- множество VB(s, v) пусто. Доказательство. Нусть v — точка сочленения графа G. Тогда v — общая вершина различных блоков. Следовательно, существуют верши- вершины х, у, обе смежные сои такие, что vx ft vy. Предположим, что v — корень d-дерева. Тогда х, у, очевидно, являют- являются потомками v. В силу леммы 2 существуют сыновья sb S2 вершины v такие, что «si и vx, vs% ~ vy. Поскольку vx ft vy, имеем vsi ft v.S2- Отсюда, в частности, следует, что Si ф S2- Пусть v не является корнем d-дерева, и t — отец вершины v. Нетрудно попять, что либо vt ft vx, либо vt ft vy. Без ограпичения общпости можно считать, что vt ft vx. Применение леммы 1 показывает, что х потомок вершины v. В силу леммы 2 существует такой сын s вершины v, что vx и vs. Ясно, что vt ft vs, и из леммы 3 следует нустота множества VB(s, v). Проверим обратное утверждение. Предположим сначала, что выпол- выполнено условие 1), т.е. вершина v — корень, имеющий двух сыновей si и S2- Убедимся, что ребра vsi и VS2 принадлежат разным блокам. До- Допустим, рассуждая от противного, что ребра vs\ и VS2 лежат в одпом блоке. Тогда существует цикл С, содержащий эти ребра. Если С имеет вид щ, ..., ир, щ, то можно считать, что щ = v, u^ = si, Up = «2- По- Поскольку s2 не является потомком s\, найдется наименьшее число q > 2 такое, что uq не является потомком si. Ясно, что q < p и ребро uq_\Uq является обратным. Следовательно, uq — предок вершины s±, а потому uq = v. Вершина v содержится в С более одного раза, что противоречит определению цикла.
8.2. Алгоритм отыскания блоков и точек сочленения 165 Пусть выполнено условие 2). Обозначим через t отца вершины v. По- Поскольку VB(s, v) пусто, из леммы 3 получаем, что ребра vs, vt лежат в разных блоках. Понятно, что v — общая вершина этих блоков, следова- следовательно, v — точка сочленения. ? Пусть X — произвольное мпожество вершин графа G. Обозначим через num(X) мпожество {пит[в] | v G X}. На множестве V вершин графа G рассмотрим следующую функцию L[v] = mmnum({v} U VB(i>, v)). Функция L обладает двумя важными свойствами: 1) с ее помощью легко распознавать точки сочленения (см. теоре- теорему 8.2); 2) зпачепия этой функции весьма просто и естественпо вычисляются при помощи поиска в глубину (см. лемму 6). Лемма 5. Пусть вершина v не является корнем d-дерева, s — неко- некоторый сын вершины V. Множество VB{s, v) пусто в том и только том случае, когда L[s] > тшт[«;]. Доказательство. В наших рассуждениях важпую роль будут играть множества VB(s, s) и VB(s, v). Нетрудно понять, что выполнены вклю- включения VB(s, v) С VB(s, s), VB(s, s) \ VB{§, v) С {v}. Предположим, что VB(s, v) — 0. Тогда VB(s, s) С {v}. Отсюда следует, что {s}UVB(s, s) С {s, v}. Вычисляя минимум номеров вершин, входящих в левую и правую части этого включения, получим L[s] > min(nM?7i[s], nM?re[«;]) = num[u]. Обратно, если множество VB(s, v) непусто, то существует w?VB(s, v). Ясно, что питгг[вд] < num[«]. Поскольку VB(s, v) С VB(s, s), имеем {g} U VB(S, v) C {s} U VB(s, s). Отсюда следует, что ] > minnum({s} U VB(s, v)) > L[s]. Следовательно, L[s] < num[v]. О Из лемм 4 и 5 вытекает следующее утверждепие.
166 8. Поиск в графе Теорема 8.2. Пусть вершина v не является корнем d-дерева. Вер- Вершина v — точка сочленения графа G тогда и только тогда, когда L[s] > num[v\ для некоторого сына s этой вершины. Лемма 6. Пусть v — произвольная вершина графа G. Тогда L[v] = min (пит[в], ?[si], ¦ • •, ?[sp], num(VB(v, v))), где si, ..., 8p — все сыновья вершины v. Доказательство. Поскольку v — Ji U ... U sp U {v}, имеем VB(v, v) = VB(h, v) U ... U VB(sp, v) U VB(v, v). Кроме того, {v} U VB(§i, v) — {v} U VB(§i, ss) при 1 < i < p. Следова- Следовательно, {v} U VB(v, v) = {v} U VB(su si) U ... U VB(sp, sp) U VB(v, v). Обозначим через W множество, стоящее в правой части этого равенства. Так как v ? W и num[v] < num[si] (I < i < р), выполнено равенство mmnum(W) — mmnum(W U {«i, ..., %}). Теперь нетрудно видеть, что L[v] — min (num[v], L[si], ..., L[sp], num(VB(v, v))). ? Дадим формальное описание алгоритма нахождения блоков и точек сочленения. Алгоритм 8.2. 1. procedure BiComp{v)\ 2. begin 3. num[v] := i\ L[v] := ц г := i + 1; 4. for и ? list[v] do 5. if num[u] — 0 then 6. begin 7. SE <S= vu; father[u] := v; BiComp(u) 8. L[v] :=min(L[v], L[u\); 9. if L[u] > num[v] then 10. {получить новый блок; для этого из стека SE надо вытолкнуть все ребра вплоть до ребра vu}
8.2. Алгоритм отыскания блоков и точек сочленения 167 11. end 12. else if num[u] < num[v] and u ф father[v] then 13. begin 14. SE <= vu; L[v] :— mm(L[v], num[u\); 15. end 16. end; 17. begin 18. i := 1; SE := nil; father[v0] := 0; 19. for v ? V do num[v] :— 0; 20. BiComp(v0) 21. end. Процедура BiCompiy) является является модификацией процедуры DFS(v) из алгоритма 8.1. В момент завершения работы процедуры BiComp(v) значение L[v] уже вычислено. Вычисление L[v] производится по формуле из леммы 6. В самом деле, в строке 3 выполняется присваива- присваивание L[v] := num[v\. Далее в строке 8 учитываются значения функции L для каждого из сыновей вершины v. Наконец, в строке 14 паходится минимальное из двух чисел: текущего значения L[v] и num[u], где и — очередной элемент из множества VB(v, v). Необходимое и достаточное условие для вершины быть точкой сочле- сочленения, сформулировапное в теореме 8.2, проверяется в строке 9. Ра- Разумеется, это условие нельзя применять к корневой вершине v0. Чтобы узнать, является ли Vq точкой сочленения, нужно нодсчитать количество сыновей этой вершины в d-дереве. Для нахождения множества ребер очередного блока алгоритм 8.2 ис- использует стек SE, элементами которого являются ребра графа G. Теорема 8.3. Алгоритм 8.2 правильно находит блоки графа G. Доказательство. Нусть граф G содержит q блоков. Проведем индук- индукцию по числу q. Если q = 1, то граф G неразделим. Из леммы 4 следует, что в d-дереве корневая вершина v0 имеет единственного сына w. Не- Нетрудно понять, что в момент завершения процедуры BiComp(w) стек SE будет содержать все ребра графа G. Поскольку L[vq] — num[v0] — 1 и граф не имеет точек сочленения, условие в строке 9 выполнится толь- только при и = w. В результате все ребра графа G будут вытолкнуты из стека SE, и мы получим единственный блок. Пусть q > 1. Обозначим через щ, V\ ту пару вершин, для которой неравенство в строке 9 выполнится в первый раз. Ясно, что vi — точка сочленения графа G. К этому моменту процедура В1Сотр(щ) заверши- завершилась и точек сочленения не обнаружила. Поэтому после проверки условия
168 8. Поиск в графе в Ь[щ] > num[vx] из стека SE будут удалены ребра некоторого блока В. Теперь можно считать, что алгоритм обрабатывает граф Gi, составлен- составленный из всех блоков графа G, отличных от В. К графу G\ применимо нредноложение индукции, ноэтому блоки, отличные от В, также будут найдены правильно. ? 8.3. Алгоритм отыскания компонент сильной связности в орграфе Пусть G = (V, Е) — связный орграф. Алгоритм 8.1 из разд. 8 лег- легко приспособить для организации поиска в глубину в орграфе G. Для этого нужно лишь список list{v) заменить списком list(y), состоящим из концов всех дуг, выходящих из вершины v. Все нонятия, связанные с поиском в глубину в обыкновенном графе, очевидным образом нриме- нимы и для орграфов. В частности, в результате ноиска в глубину в орграфе G строится d-nec (глубинный лес), состоящий из ориентирован- ориентированных корневых деревьев. Тем самым, на множестве вершин орграфа G вводится отношение частичного порядка: и < V, если и, v нринадлежат одной компоненте связности с?-леса и и является нотомком v. Отметим также, что поиск в глубину разбивает множество всех дуг орграфа на четыре класса: 1) древесные дуги, идущие от отца к сыпу; 2) обратные дуги, идущие потомка к предку; 3) прямые дуги, идущие от предка к потомку, по не являющиеся дре- древесными дугами; 4) поперечные дуги, соединяющие вершины, ни одна из которых не является потомком другой. На рис. 72 показан орграф и его глубинный лес. Щ Щ 1 /; •¦ vr / yva v3 m' Рис. 72 Следующие два утверждения очевидпы. Лемма 1. Если vu — поперечная дуга графа G, то пит[и] < num[v].
8.3. Алгоритм отыскания компонент сильной связности в орграфе 169 Лемма 2. Пусть u, v, w — такие вершины орграфа G, что пит[и] < < num[v] < num[w] и w является потомком и. Тогда вершина v — по- потомок вершины и. Применим поиск в глубину для построепия алгоритма, способного распознавать сильную связность орграфа G. На самом деле будет по- построен алгоритм, который сможет в орграфе G выделять компоненты сильной связности, являющиеся максимальными сильно связными под- подграфами орграфа G. Заметим, что компопенты сильной связности явля- являются классами отношения взаимной достижимости на множестве вершин орграфа G. Пусть Gi = (Vi, Ei) A < i < k) — компоненты сильной связности ор- орграфа G. Обозначим через г,; такую вершину компопенты G,; A < г < к), что num[ri] = imnnumiVi). Пусть г — преобразование множества вер- шип орграфа G, определенное правилом: r(w) = г; для любой верши- вершины w ? G;. Ясно, что вершины и и w лежат в одной компоненте сильной связности тогда и только тогда, когда г(м) — r(w). Лемма 3. Если w ф r(w), то w < r(w). Доказательство. Поскольку г (го) и w взаимно достижимы, сущест- существует кратчайшая (r(w), ги)-орцепь Р длины q > 1. Проведем индукцию по q. Пусть q — 1. Тогда существует дуга r(w)w. Ясно, что эта дуга древесная или прямая, поэтому го — потомок r(w). Допустим, что q > 1. Обозпачим через х предпоследнюю вершину ор- цепи Р. Легко проверяется, что вершины х и r(w) взаимно достижимы, поэтому х и r(w) лежат в одпой компопепте сильной связности. Сле- Следовательно, к вершине х применимо предположение индукции. Таким образом, вершина х — потомок r(w). Если xw — древесная или нрямая дуга, то w < х и потому го < r(w). Пусть xw является обратной или поперечной дугой. Применяя лемму 1, получаем, что пит[и>] < пит[х]. Так как num[r(w)] < num[w] их — потомок r(w), вершины r(w), w, x удовлетворяют условиям леммы 2, т.е. w < r{w). ? Лемма 4. Пусть и — произвольная вершина, удовлетворяющая нера- неравенствам r(w) > и > w. Тогда r{u) — r(w). Доказательство. Поскольку r(w) > и > го, существует (r(w), го)-ор- цепь Р, проходящая через вершину и. Кроме того, r(w) достижима из го. Следовательпо, r(w) и и взаимно достижимы, т.е. г(и) — г(го). ? Пусть v — произвольная вершина орграфа G. Как и в разд. 8.2, че- через v обозначим ноддерево d-леса с корнем v. Если X С г), то множество
170 8. Поиск в графе всех таких вершин w, что r(w) > v и для некоторой вершины х 6 X существует обратная или поперечная дуга xw, будем обозначать, как и раньше, через VB(X, v). Леммы 3 и 4 показывают, что вершины каждой компоненты силь- сильной связности Gi, 1 < i < k, образуют в глубинном лесе поддерево с корнем Ti. Лемма 5. Пусть v uw — такие вершины графа G, что w(zVB(v,v). Тогда r(w) = r(v). Доказательство. Поскольку w G VB(v, v), выполнено перавенство r(w) > v и существует обратная или поперечная дуга xw, где х < v. Ясно, что существует (r(w), ж)-орцепь Р, содержащая вершину v. Кроме того, найдется («;, г(го))-орцепь Q. Из орцепей Р, Q и дуги xw легко получить замкнутый ормаршрут, содержащий вершины v и w. Поэтому г(ю) = r(v). U Теорема 8.4. Пусть v — произвольная вершина орграфа G. Равен- Равенство v = r(v) выполнено тогда и только тогда, когда VB(v, v) С v. Доказательство. Пусть v — такая вершина, что v = r(v). Возьмем произвольную вершину w ? VB(y, v). В силу леммы 5 имеем r(w) — = r{v) = v. Отсюда с учетом леммы 3 получаем, что w ? v. Предположим, что v ф r(v). Из леммы 3 следует, что v < r(v). С другой стороны, существует (v, г(г;))-орцепь Р. В орцепи Р найдем первую дугу xw такую, что w не принадлежит v. Очевидно, xw — об- ратпая или поперечная дуга. Кроме того, легко проверяется, что w и v лежат в одной комноненте сильной связности орграфа G. Следовательно, г(то) = r(v) > v. Таким образом, w ? VB(v, v), откуда вытекает, что VB(v, v) g v. D На множестве V вершин графа G рассмотрим следующую функцию L[v] = mmnum({v} U VB(ii, v)). Теорема 8.5. Пусть v — произвольная вершина орграфа G. Равен- Равенство v = r(v) выполнено тогда и только тогда, когда L[v] = num[v]. Доказательство. Пусть v = r(v). Тогда VB(v, v) С v. Поэтому mmnum(VB(v, v)) > num[v]. Отсюда L[v] = num[v]. Предположим, что v ф r(v). Учитывая теорему 8.4, получаем, что существует w G VB(v, v) \ v. Найдется такая вершина х G V, что xw — обратная или поперечная дуга. Следовательно, num\w\ < пит\х\. Проверим, что num[w] < num[v]. Рассуждая от противного, допустим, что ггиги[г)] < num[w]. Поскольку w ф v, имеем строгое неравенство
8.3. Алгоритм отыскания компонент сильной связности в орграфе 171 тшт[«] < num[w]. К вершинам и, w, x можно применить лемму 2, ноэ- тому w 6 v, что невозможно. Из доказанного неравенства следует, что L[v] < num[w\ < num[v\. D Теорема 8.5 позволяет распознавать в каждой компонепте сильной связности вершины v, удовлетворяющие условию v = r(v). Сравнивая теорему 8.5 с теоремой 8.2, мы видим, что роль таких вершин для ор- орграфов аналогична роли точек сочленения для обыкновенных графов. Лемма 6. Пусть v — произвольная вершина орграфа G. Тогда L[v\ = = min (num[v], L[si], ..., Ь[«р], num(VB(v, v))), где s\, ..., sp — все сы- сыновья вершины v. Эта лемма проверяется аналогично лемме 6 из разд. 8.2. Перейдем к описанию алгоритма, позволяющего строить компонен- компоненты сильной связности орграфа G. Пусть к орграфу применен поиск в глубину. В компонентах сильной связности G;, 1 < i < k, ранее были выделепы корпевые вершины г,. С этого момента будем считать, что компоненты сильной связности занумерованы следующим образом: если 1 < г < j < к, то вершина г; использована поиском в глубину раньше, чем вершина г,-. Такая нумерация компонент сильной связности облада- обладает следующим важным свойством. Лемма 7. Компонента сильной связности Gi, I < i < к, совпадает с множеством всех элементов из поддерева f{, не принадлежащих компо- компонентам Gi, ..., Gi-i. Из леммы 7 легко извлекается следующий способ пахождения ком- нонснт сильной связности. Определим стек S и будем номещать в него вершины орграфа G в том порядке, в каком их просматривает поиск в глубину. Если сразу после того, как вершина г* использована, вытолнуть из стека S все вершины до г, включительно, мы получим компоненту G,. Тенерь мы можем нривести формальное описание алгоритма для отыскания компонент сильной связности орграфа G. Алгоритм 8.3. 1. procedure StrongComp(y); 2. begin 3. num[v\ :— i; L[v\ :— i; i :— i + 1; 5 <^ v; 4. for w ? list[v] do 5. if num[w] = 0 then 6. begin 7. StrongComp(w); L[v] := min.(L[v], L[w]); 8. end
172 8. Поиск в графе 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. else if пит [w\ < num[»] and w 6 S then L[v] := min(L[v],num[w])\ if L[v] = num[v\ then while пит[?орE)] > num[v] do begin ж -Ф= S1; добавить а; к очередной компоненте сильной связности; end end; begin i :— 1; 5 := гШ; for в?У do num[v] := 0; for v ? V do if num[v\ = 0 then StrongComp(v) end. Процедура StrongC omp{v) является модифицированной версией ре- рекурсивной процедуры DFS(v) (см. разд. 8.1). Для данной вершины v значение функции L[v] вычисляется циклом в строках 4-10 в соответ- соответствии с формулой, полученной в лемме 6. В строке 11 для вершины v про- проверяется условие из теоремы 8.5, означающее, что v — корневая вершина очередной компоненты сильной связности. Для нахождения компонент сильной связности иснользован упомянутый выше стек 5, элементами которого являются вершины орграфа G (строки 12-15). Кроме того, этот стек участвует в формировании условия, проверяемого в строке 9. Вынолнепие этого условия означает, что w ? VB(v, v). Мы изложили неформальные соображения по поводу правильности работы алгоритма 8.3. Перейдем к строгим рассуждениям. Теорема 8.6. Алгоритм 8.3 правильно строит компоненты сильной связности орграфа G. Доказательство. Занумеруем компоненты сильной связности Gi, 1 < i < k, в порядке использования корневых вершин г,; поиском в глу- глубину. В силу леммы 7 множество вершин Vi компоненты С\ совпадает с множеством Г\, состоящим из вершины г± и всех ее нотомков. В процессе работы процедуры StrongCотр(г\) происходят обращения к процедуре StrongCотр(и) для каждого из потомков вершины г\. Проверим, что ни в одной из этих процедур равенство L[u] — пит[и\ не выполнено (здесь и далее речь идет о значениях функции L, вычисленных алгоритмом 8.3). Полагая противное, можно выбрать среди вершин, для которых равенст- равенство выполнено, минимальную вершину х (напомним, что d-nec является
8.4. Поиск в ширину 173 частично унорядоченным множеством). Ясно, что х ф г(х) = г\. Из теоремы 8.4 вытекает, что VB(x, x) % х. Поэтому существует обратная или поперечпая дуга yz, где у ? х. С использованием леммы 3 петрудно нроверить, что num[z] < num[x]. Выбор вершины х гарантирует, что все вершины, просмотренные поиском в глубину, содержатся в стеке S. Сле- Следовательно, при вынолнении процедуры StrongCотр(х) условие в стро- строке 9 (считая, что w — z) выполнится. Поэтому текущее значение L[x\ не превосходит num[z] < num[x]. Отсюда следует, что значение L[x], подсчитанное процедурой, будет меньше чем пит[х]. Это противоречит выбору х. Покажем, что в процессе выполнения процедуры StrongC omp(ri) условие L[r\] = пит[г\] будет выполпено. Напомним, что множест- множество f\ совпадает с множеством вершин компоненты G\. Отсюда следу- следует, что VB(u, u) С VB(fi, ri) для любого потомка и вершины гг. Нз теоремы 8.4 вытекает, что VB(fi, ri) С f\. При выполнении процедуры StrongComp{u) все просмотренпые вершины находятся в стеке S. Поэто- Поэтому значения L[u], уточняемые в строках 7 и 10, всегда будут не меньше, чем num[ri\. С учетом присваиваний в строке 3, имеем Ь[г{\ = num[ri\. Для завершения доказательства применим индукцию по числу q ком- компонент сильной связности орграфа G. Пусть q = 1. Тогда G = G±, т.е. все вершины орграфа G, отличные от вершипы г\, являются ее потомками. Условие в строке 11 выполнится только один раз нри v = r\. Поэтому из стека S будут вытолкнуты все вершины орграфа G. Предположим, что q > 1. Пусть алгоритм 8.3 начинает работу с вер- вершины Vq. В процессе работы алгоритма носле завершения работы проце- процедуры DFS{ri) из стека S будут вытолкнуты все вершины компопенты сильной связности G\. Обозначим через G' подграф, полученный из ор- орграфа G удалением компоненты G\. Очевидно, к орграфу G' примени- применимо предположение индукции. Следовательно, все компоненты, отличные от G\, будут найдены правильно. ? 8.4. Поиск в ширину Рассмотрим еще один способ систематического обхода всех вершин обыкновенного графа G, называемый поиском в ширину. Для описания поиска в ширину введем в рассмотрение очередь Q, элементами которой являются вершины графа G. Поиск начинается с некоторой вершины v. Эта вершина помещается в очередь Q и с этого момента считается про- просмотренной. Затем все вершины, смежные с v включаются в очередь и получают статус просмотренных, а вершина v из очереди удаляется.
174 8. Поиск в графе Более общо, пусть в начале очереди находится вершина и. Обозначим через щ, ..., ир вершины, смежные сии еще непросмотренные. Тогда вершины щ, ..., ир помещаются в очередь Q и с этого момента счита- считаются просмотренными, а вершина и удаляется из очереди и получает статус использованной. В этой ситуации вершина и называется отцом для каждой из вершин щ (и = father[ui], I < i < р). Каждое из ре- ребер им.;, 1 < i < p, будем называть древесным ребром. В тот момент, когда очередь Q окажется пустой, поиск в ширину обойдет компонен- компоненту связности графа G. Если остались непросмотренные вершины (это возможно лишь в случае, когда граф G несвязеп), поиск в ширину про- продолжается из некоторой непросмотренной вершины. Поиск в ширину просматривает вершины в определенном порядке. Как и раньше, этот порядок фиксируется в массиве пит. Если и — отец вершин щ, ..., ир, то пит[щ\ = num[u]+i, 1 < i < р (для онределенности мы полагаем, что сначала в очередь помещается щ, затем и% и т.д.). Для начальной вершины v естественно положить num[v] = 1. Поиск в ширину реализует описанная ниже процедура BFS (назва- (название процедуры является аббревиатурой от англ. breadth first search). Эта нроцедура использует онисанные ранее массивы пит и father. Кро- Кроме того, она вычисляет множество всех древесных ребер Т. Массив пит удобно иснользовать для распознавания непросмотренных вершин: ра- равенство пит[и] = 0 означает, что вершина и еще не просмотрена. Алгоритм 8.4. 1. procedure BFS(v); 2. begin 3. Q := nil; Q «= v; num[v] := i; i := i + 1: 4. while Q ф nil do 5. begin 6. u^Q; 7. for го ? /is?[u] do 8. if num[w] — 0 then 9. begin 10. Q <S= w; father[w] := u; 11. num[w] := i; i := i + 1; T := T U {uw}; 12. end 13. end 14. end 15. begin 16. i := 1; T := 0; 17. for v ? V do num[v\ := 0;
8.4. Поиск в ширину 175 18. for v ? V do 19. if num[v\ = 0 then 20. begin father[v] := 0; BFS(v) end 21. end. Полезно сравнить процедуру BFS с нерекурсивной версией процеду- процедуры DFS (см. стр. 162) и убедиться, что по-существу, первая процедура получается из второй заменой стека на очередь. Заметим также, что, применяя этот алгоритм к связному графу G, можно цикл в строках 18-20 заменить однократным обращением к про- процедуре BFS. Теорема 8.7. Пусть G — связный (п, т)-граф. Тогда 1) поиск в ширину просматривает каждую вершину в точности один раз; 2) поиск в ширину требует О(п + т) операций; 3) подграф (V, Т) графа G является деревом. Эта теорема доказывается аналогично теореме 8.1. В связном графе G поиск в ширину из вершины v строит корневое дерево с множеством ребер Т и корнем v. Это корневое дерево называет- называется деревом поиска в ширину или, короче, b-деревом. Аналогично, если G произвольный обыкновенный граф, то поиск в ширину строит 6-дерево в каждой компоненте связности графа G; объединяя эти деревья, мы по- получим остовный лес графа G, называемый в дальнейшем 6-лесом этого графа. На рис. 73 показаны связный граф G и его 6-дерево. Рис. 73 Пусть в графе G проведен поиск в ширину. Занумеруем вершины графа в соответсвии с порядком, в котором поиск в ширину обходит вершины. А именно, обозначим вершины графа через Wi, I < i < n, считая, что num[wi] = i. В леммах 1-5 изучаются некоторые свойства поиска в ширину, от- отличающие его от поиска в глубину.
176 8. Поиск в графе Лемма 1. Вершина w^ является отцом вершины w\ тогда и только тогда, когда к = mm{i\wi ? list(wi)}. Доказательство. Пусть w^ — отец вершины W;. Это значит, что непосредственно перед удалением Wk из очереди Q, вершипа wi не бы- была просмотрена. Если wp смежна с u>i в графе G и р < I, то wp была удалена из очереди Q раньше, чем w^. Поэтому отцом wi оказалась бы вершина wp, что невозможно. Обратно, пусть к — наименьший из номеров вершин w-n смежных с u>i в графе G. Ясно, при р < к вершина wp не смежна с вершиной wi и потому не может быть ее отцом. Отсюда следует, что u>k — отец Wj. ? Из леммы 1 следует, что ребро, не являющееся древесным, никогда не соединяет предка с потомком в Ь-дереве; по этой причине такие ребра графа G будем называть поперечными ребрами. Лемма 2. Пусть вершины w/., wi являются отцами вершин wp, wq соответственно. Если р < q, то к < I. Доказательство. Предноложим, что I < к. Из этого неравенства следует, что вершина w( будет использована раньше, чем и;*.. Поэтому вершина wq, являющаяся сыном ад, попадет в очередь раньше, чем сын wp вершины wjj.. Отсюда q < p, что невозможно. ? Напомним, что в корневом дереве через h(u) мы обозначили уровень вершины и, равный расстоянию этой вершины от корня. Лемма 3. Если 1 < р < q < n, то h(wp) < h(wq). Доказательство. Требуемое неравенство очевидно, если wp — ко- корень 6-дерева. Пусть wp не является корнем. Обозначим через s наи- наибольший из номеров р и q и применим индукцию по s. Рассмотрим вер- вершины Wk, wi, являющиеся отцами вершин wp, wq соответственно. В силу леммы 2 имеем к < I. Ясно, что к вершинам Wj., Wi применимо предпо- предположение индукции. Следовательно, h(wi-) < h(wi). Отсюда h(wp) = h(wk) + 1 < h(wi) + 1 = h{wq). Поскольку база индукции (при s — 2), очевидно, выполняется, лемма доказана. ? Лемма 4. Если вершины wp и wq смежны в графе G и р < q, то h(wq) - h(wp) < 1. Доказательство. Пусть W; — отец вершины wq. Тогда из леммы 1 следует, что I < р. В силу леммы 3 имеем < h(wp) < h(wq).
8.5. Алгоритм отыскания эйлеровой цепи в эйлеровом графе 177 Поскольку h(wq) — h(wi) = 1, получаем h(wq) - h{wp) < h(wq) - h{wi) = 1. ? Лемма 5. Расстояние е графе G от вершины wi (т. е. от корня Ъ-де- рева) до произвольной вершины и равно h(u). Доказательство. Достаточно проверить, что для произвольной (wi, и)-цепи wi = v0, vu ..., va-u va = и выполпено неравенство s > h{u). Рассмотрим последовательность О = h(v0), h(vi), ..., h(v,-i), h{va) = h(u), A) составленную из уровней вершин данпой цепи. В силу леммы 4 сосед- соседние элементы последовательности A) различаются не больше чем на 1. Отсюда вытекает, что последовательность A) имеет наимепыпую дли- длину, если она является возрастающей. В этом случае последовательность должна иметь вид 0, 1, ..., h{u). Следовательно, для произвольной по- последовательности A) выполнено неравенство s > h(u). ? Пусть Vq — корень 6-дерева. Лемма E) показывает, что простая (vq, м)-цепь в Ь-дереве является кратчайшей (vq, м)-цепью в графе G. От- Отсюда следует, что поиск в ширину может быть применен для решепия следующей задачи: в связном графе G найти кратчайшую цепь, соединя- соединяющую данную вершину Vq с произвольной вершиной и. Для решения этой задачи необходимо в графе G из вершины Vq про- провести поиск в ширину, а затем, используя массив father, построить тре- требуемую кратчайшую цепь. 8.5. Алгоритм отыскания эйлеровой цепи в эйлеровом графе С эйлеровыми графами мы познакомились в разд. 3.1. Напомним, что замкнутая цепь в графе G называется эйлеровой, если она содержит все ребра и все вершины графа. Из теоремы 3.1 следует, что связный неодноэлементный граф эйлеров тогда и только тогда, когда каждая его вершина имеет четную степень. Этот раздел посвящен построению и анализу алгоритма, позволяюю- щего в связном обыкновенном графе G с четными степенями вершин построить эйлерову цепь. В алгоритме используются два стека SWork и SRes; элементами обоих стеков являются вершины графа G. Кроме того,
178 8. Поиск в графе введен массив listW, элементы которого — списки вершин. Мы счита- считаем, что для каждой вершины v начальное значение /is?iy[v] совнадает со списком всех вершин, смежных с вершиной v, т.е. с list(v). Алгоритм 8.5. Вход: связный граф G = (V, Е) без вершин нечетной стенени, начальная вершина Vg. Выход: эйлерова цепь, представленпая последовательностью вершин в стеке SRes. 1. begin 2. SWork := nil, SRes := nil; 3. SWork ¦<= v0; 4. for v E V do UstW[v] := list[v]; 5. while SWork ф nil do 6. begin 7. v := top(SWork); 8. if HstW(v) ф 0 then 9. begin 10. u :=первая вершина /istlV^]; 11. SWork <= u; 12. HstW(v) := UstW(v) \ {«}; 13. listW(u) := UstW(u) \ {v}; 14. end 15. else 16. begin v <= SWork; SRes <= v; end 17. end 18. end. Принцип работы этого алгоритма состоит в следующем. Алгоритм начинает работу с некоторой вершины v0 продвигаться но ребрам графа, причем каждое пройденное ребро из графа удаляется (строки 10-13). Ясно, что последовательное выполнение этой группы операторов позво- позволяет выделить в графе некоторую замкнутую цепь. Затем начинается выполпение группы операторов из строки 16. Эти операторы выталкива- выталкивают очередную вершину из стека SWork в стек SRes до тех нор, пока не вынолнится одно из условий 1) стек SWork пуст (алгоритм заканчивает работу); 2) для вершины v — top(SWork) существует непройденпое ребро vu. В этом случае алгоритм продолжает работу из вершины и. На рис. 74 изображен эйлеров граф и эйлерова цепь, построенная алгоритмом 8.5 (предполагается, что все списки вершин упорядочены по возрастанию номеров).
8.5. Алгоритм отыскания эйлеровой цепи в эйлеровом графе 179 3, vb, v2, v4, ve, v5, 6, v7, vs, v9, v7, v4, Рис. 74 Теорема 8.8. Алгоритм 8.5 правильно строит эйлерову цепь в эйле- эйлеровом графе G. Доказательство. Заметим сначала, что из стека SRes вершины ни- никогда не выталкиваются. Отсюда следует, что начиная с некоторого мо- момента работы алгоритма стек SRes перестанет изменяться. Это нро- изойдет после выполнения операторов в строке 16. Предположим, что стек SWork в этот момент непуст. Если v — top(SWork), операторы в строках 10-13 пачнут добавлять вершины к стеку SWork (это озна- означает, что в графе G из вершины v можно построить цепь, состоящую из еще непройденных ребер). Ясно, что построепие такой цепи должно прекратиться. Это означает, что мы придем в вершину и, для который все инцидентные ей ребра уже пройдепы (UstW(u) = 0). После этого начнут выполняться операторы из строки 16, и, следовательно, к стеку SRes добавится хотя бы одна вершина, что невозможно. Таким образом, стек SWork рапо или поздно обязательпо станет пустым, что приведет к завершению работы алгоритма. Пусть Р — цепь, содержащаяся в стеке SRes после окончания работы алгоритма. Легко нонять, что вершина w номешается в стек SRes, если все ребра, инцидентные с то, уже пройдены. Отсюда следует, что для лю- любой вершины цепи Р все ребра, инцидептпые этой вершипе, содержатся в цепи Р. Поскольку G — связный граф, цепь Р содержит все ребра графа G. Теперь легко понять, что Р — эйлерова цепь. ? В заключение оценим сложность алгоритма 8.5. Для этого заметим, что при каждой итерации цикла либо к стеку SWork добавляется верши- вершина (это означает нрохождение очередного ребра), либо вершипа перено- переносится из стека SWork в SRes (другими словами к строящейся эйлеровой цепи добавляется ребро). Отсюда следует, что число повторений цикла равпо О(т). Если позаботиться о том, чтобы время, необходимое для удалепия вершины из сниска h'stW[«], было ограпичено константой, то сложность алгоритма 8.5 будет равна О(т).
9. Задача о минимальном остове Пусть G = (V, Е) — связный обыкновенный граф. Напомним (см. разд. 2.1), что его остовом называется остовный подграф, являющийся деревом. Остов (п, т)-графа легко найти поиском в глубину или поис- поиском в ширину. Поскольку оба поиска имеют сложность О(т + п) и в связном графе т > п — 1, остов связного [п, т)-графа можно найти за время О(т). Граф G = (V, Е) называется взвешенным, если задана функция с : Е —> К. Это означает, что каждому ребру е такого графа поставлено в соответствие число с(е), называемое весом или стоимостью ребра е. Иными словами, взвешенный граф — это тройка (V, Е, с). Для произ- произвольного ненулевого подграфа Н его весом с(Н) будет называться сумма весов всех ребер подграфа Н. Остов Г взвешенного графа G назовем минимальным остовом, если для любого остова Т" вынолнено неравенство с(Т) < с(Г'). Этот раздел посвящен решению следующей задачи: в данном связном графе найти минимальный остов (задача о минимальном остове). Пусть G — связный граф. Ациклический остовный подграф F из G будем называть остовным лесом графа G. В том случае, когда остовный лес графа G связен, он является остовом графа G. Ребро е — uv на- называется внешним к остовному лесу F, если его концы лежат в разных компонептах связности леса F. Если Н — некоторая компонента связ- связности остовного леса F, то через Ext(H) будет обозначаться множество всех внешних ребер, каждое из которых инцидентно некоторой вершине из Н. Ясно, что Ext(H) является сечением графа G. Предположим, что F — остовный лес связного взвешенного графа G. Будем говорить, что F продолжаем до минимального остова, если су- существует такой минимальный остов Т, что F <Т. Лемма 1. Пусть остовный лес F продолжаем до минимального ос- остова и Н — одна из компонент связности леса F. Если е — ребро минимального веса из Ext(H), то остовный лес F + е продолжаем до минимального остова. Доказательство. Пусть Т — такой минимальный остов графа G, что F < Т и е ^ ЕТ. Из теоремы 2.1 следует, что подграф Т + е содержит единственный цикл С. В разд. 4.9 было показано, что любое сечение и любой цикл имеют четное число общих ребер. Поскольку ребро е явля- является общим для сечепия Ext(H) и цикла С, найдется еще одпо ребро /, общее для Ext(H) и С. В силу выбора ребра е имеем с(/) > с(е). Ясно, что Т' = Т + е — f является остовом графа G и F + е С Т". Кроме того,
181 Учитывая, что Т — минимальный остов, получаем с(Т") = с(Т). Таким образом, Т" — минимальный остов, содержащий лес F + е, т. е. F + е продолжаем до минимального остова. ? Лемма 1 нозволяет сконструировать два алгоритма построения ми- минимального остова во взвешенном (п, т)-графе G. Пусть Fa — остовный лес, являющийся нулевым графом. Ясно, что лес Fq можно продолжить до остова. Оба алгоритма строят последовательность ¦^0; Fli ¦ ¦ ¦ > Fn-li B) состоящую из остовных лесов, причем i*1, = i^_i + е,, где е, — ребро, внешнее к остовному лесу .F!;_i, 1 < i < n — 1. Иногда указанную по- последовательность называют растущим лесом. Последовательность B) строится таким образом, чтобы для каждого г, 1 < i < п — 1, остовный лес Fi можно было нродолжить до минимальпого остова. Ясно, что тогда Fn_i является минимальным остовом. При переходе от .F;_i к Fi (т. е. при выборе ребра е^) возможны две стратегии. Стратегия 1. В качестве е^ выбираем ребро минимального веса среди всех ребер, внешних к остовному лесу i^_i. Пусть Н — одна из двух комнонент связности леса Fj_i, содержащая концевую вершину ребра е,. Если Ft_i продолжаем до минимального остова, то в силу леммы 1 лес Fi = -Fi-i + ег- обладает тем же свойством. Стратегия 2. Здесь предполагается, что каждый остовный лес Fi A < i) из последовательности B) имеет лишь одну неодноэлементную компоненту связности Н^. Удобно считать, что Но состоит из некоторой заранее выбранной вершины графа G. Таким образом, по существу, речь идет о построении последовательности -^0) Hi, ..., Hn-i, C) состоящей из поддеревьев графа G, причем Щ = Hi-i + e.;, где е; G Ext(Hi-i). Иногда указанную последовательность называют расту- растущим деревом. Последовательность C) строится следующим образом. В качестве Но берем произвольную вершину графа G. Пусть при некотором г, где 0 < i < п — 1, дерево Hi уже построено. В качестве е,+1 выбираем ребро минимального веса из множества Ext(Hi) и полагаем Hi+l = Н{ + ei+l. Стратегия 1 реализуется алгоритмом Борувки-Краскала. Этот ал- алгоритм впервые был изложен в работе О. Борувки в 1926 году. Одна- Однако данпая работа была практически забыта. Появление, а затем и ши-
182 9. Задача о минимальном остове рокое распространение компьютеров стимулировало интерес математи- математиков к построению алгоритмов решения дискретных задач. В результате в 1956 году этот алгоритм был нереоткрыт Краскалом. Отметим, что алгоритм Борувки - Краскала является частным приме- примером жадного алгоритма, описанного в разд. 4.6 (см. замечание, сделанпое после доказательства теоремы 4.16). Одной из основных операций в алгоритме Борувки - Краскала являет- является операция слияния деревьев. Для эффективной оргапизации этого про- процесса будем использовать три одномерных массива — name, next, size, каждый длины п. Пусть F — произвольный член последовательности B). Массив name обладает следующим свойством: name[u] — name[w] тогда и только тогда, когда вершины и и то лежат в одной компопепте связпости леса F. С помощью массива next задается кольцевой список на множес- множестве вершин каждой компоненты связности леса F. Если v = name[w], то s«2;e[v] равно числу вершин в компоненте связности остовного леса F, содержащей вершину w. Опишем процедуру Merge(v, w, р, q), предназначенную для слияпия двух деревьев Hi = (Vi, Ei) и Н2 = (V2, Е2) по ребру vw, внешнему к остовному лесу F. Предполагается, что v е \\, w e V2, р = name[v], q = name[w]. 1. procedure Merge(v, w, p, q); 2. begin 3. 4. 5. 6. 7. 8. 9. 10. 11. name[w] := p; и : while name[u\ ф begin name[u] :— p; end; size\p\ :— size\p] x :— next[v}; у :— = next[w\; p do и :— next[u\; + size[q\; next[w]; next[v\ := y; next[w] := x; end: Отметим некоторые особенности работы этой процедуры. Объедине- Объединение состоит, по существу, в смене значений name[w] для всех w ? V-j (цикл 4-7). Отсюда следует несимметричность процедуры, а именно, сложности выполнения процедур Merge(v, w, p, q) и Merge(w, v, q, p) равны O(|Vi|) и О(|V^|) соответственно. Строки 8-10 нужны для сохра- сохранения структур данпых. В них происходит формирование одного коль- кольцевого списка для элементов объединения V\ U Vi- Для этого достаточно иснравить значения двух элемептов next[v] и next[w] и установить s«ze[p] равным числу элемептов в множестве V\ U V2.
183 Теперь можно дать формальное описание алгоритма Борувки- Краскала. Предполагается, что очередь Q содержит ребра графа. Ра- Ради простоты предполагается, что очередь Q организована при помощи массива длины т. В алгоритме используется процедура Sort(Q); эта процедура сортирует очередь Q по возрастанию весов ребер. Процеду- Процедура Sort(Q) реализует пирамидальную сортировку, поэтому ее сложность равна O(mlogm) — O(mlogn), поскольку т < п2. Алгоритм 9.1 (Борувка, Краскал). Вход: связный взвешенный граф G = (У, Е, с). Выход: мипимальный остов Т графа G. 1. begin 2. Sort(Q); 3. for v ? V do 4. begin 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. name[v] := v; next\v] := v; size\v] := 1; end; T:=0; while \T\ ф n - 1 do begin vw <= Q; p := name[v]; q := name[w]; if P Ф Q then begin if s«ze[p] > s«ze[g] then Merge(w, v, q, p) else Merge(v, w, p, q); T :=TU{vw] end end end. Прокомментируем работу алгоритма 9.1. Цикл в строках 3-6 форми- формирует остовный лес Fq. В строке 11 проверяется принадлежность вершин v и w различным деревьям. Слияние деревьев происходит в строках 13-15. Для данной вершины v обозначим через r(v) число изменений значе- значения name[v] при работе алгоритма 9.1. Лемма 2. Для любой вершины v связного взвешенного G = (V, Е, с) выполнено неравенство r(v) < log \V\. Доказательство. Требуемое неравенство очевидно, если \V\ = 1. Пусть \V\ > 1. Заметим, что при переходе от остовного леса Fn_2 к минимальному остову Fn-i процедура Merge срабатывает ровно один
184 9. Задача о минимальном остове раз. Лес Fn-2 состоит из двух деревьев. Пусть V\, V2 — множества вершин этих деревьев. Тогда V\ U V2 = V, У\ (~)V2 = 0. Предположим, что |Vi| > \V2\. Тогда |Vi| < \V\ - 1, \V2\ < \V\/2. Нетрудно понять, что при слиянии множеств V\ и V2 значение пате[и] сохранится, если v Е V\, и изменится, если v Е V2. Применяя предположение ипдукции, нолучим r(v) < log|V|| < log|y|, если v &V[, r{v) < log \V2\ + 1 < log \V\, если v E V2. Лемма доказана. ? Теорема 9.1. Вычислительная сложность алгоритма Борувки-Крас- кала для связного взвешенного (п, т)-графа равна O(mlogn). Доказательство. Цикл в строках 8-18 проработает в худшем случае т раз. Оценим число операций, необходимых для однократного выполне- выполнения тела цикла. Заметим, что присваивание в строке 16 выполняется ров- ровно п — 1 раз. Ясно, что столько же раз будет выполнена процедура Merge. Из леммы 2 следует, что количество операций, выполненных при всех вы- вызовах процедуры Merge, не превосходит J^ r{v) < (n — l)logn. Отсюда сложность цикла 8-18 равна О(т + nlogn) — O(mlogm) — O(mlogn), поскольку в связном графе выполнены неравенства п — 1 < т < п2. Осталось заметить, что процедура Sort также требует O(mlogm) опе- операций. ? На рис. 75 а) изображен связный граф G. Числа, стоящие рядом с ребрами, означают веса ребер. Предполагается, что процедура Sort упорядочивает ребра следующим образом: viv2, V3V4, v^vg, viv%, д. Мипимальный остов ноказан на рис. 75 6). v2 3 V4 4 % v2 t>4 ^6 «3 a) b) Рис. 75 В нриведенной ниже таблице указан норядок, в котором строился ос- остов данного графа.
185 \т\ 0 1 2 3 4 5 Vl, Vl, Vl, Vl, Vl, Vl, v2, Vl, Vl, name V3, v3, V3, v3, Vl, Vl, v3, V3, Vl, Vl, v&, v6 Vb, Vti v&, v6 Vb, V5 V5, V5 Vl, Vl $ V 1^2 ^1^2) V3Vq ^1^2, l>3l>4 V1V2, t>3t>4 U1U2, V3V4 T , VbV6 , VbV6, l>il>3 , f5^6) flf3j V3V5 Перейдем к рассмотрению алгоритма Ярника-Прима-Дейкстры, ос- основанного на применении стратегии 2. Впервые он появился в работе Ярника, опубликованной в 1930 году, затем был переоткрыт Примом в 1957 году и пезависимо Дейкстрой в 1959 году. Заметим, что Дейкстра предложил очепь эффективную реализацию этого алгоритма, связанную с расстановкой специальных меток. Для ребра е = vw вес с(е) будет иногда обозначаться через c(v, w). Напомним, что в обсуждаемом алгоритме строится последователь- последовательность C), состоящая из деревьев, в которой дерево Я; нолучается из ff;_i поглощением ближайшей к дереву _H,;_i вершины. Для организации эф- эффективного выбора такой вершины используются два массива: near[v] и d[v]. Нусть Н — произвольное дерево из последовательности C), U — множество его вершин. По определению d[v] равно расстоянию от вер- вершины v до множества U, иными словами d[v] = min{c(i!, и) | и 6 U}. Пусть d[v] = c(v, го), w e U. Тогда near[v] = w. Иными словами, пеаг[г>] — ближашая к v вершина из множества U. Пусть W — V \ U. Будем считать, что если vw ? Е, то с(и, го) — оо. Через Min(W) обозначим функцию, значением которой является верши- вершина v e W, имеющая минимальное значение метки d. Алгоритм 9.2 (Ярник, Прим, Дейкстра). Вход: связный взвешенный граф G = (У, Е, с), заданный матрицей весов А[1... п, 1... п]. Выход: мипимальный остов Т графа G. 1. begin 2. w := произвольная вершина из V; 3. W :=V\{w};T:=H); 4. for v e V do 5. begin 6. near[v] := w; d[v] := A[v, w] 7. end;
186 9. Задача о минимальном остове 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. while Т ф п - 1 begin v := Min(W); Г:=Ги{ге}; for и ? W do if d[w] > Л [и begin near [и] := end end end. do и := W v] = v; - near\v\; :=W\{v}; then d[u] = A[u, v] Теорема 9.2. Алгоритм Ярника - Прима - Дейкстры применительно к связному взвешенному (п, т)-графу имеет сложность О(п2). Доказательство. Каждый проход цикла в строках 8-17 уменьшает на единицу число вершин во множестве W. После к проходов цикла 8-17 множество W будет содержать п—к вершин. Следовательно, число опера- операций, необходимых для выбора вершины Min(W), пропорционально п — к (строка 10). В строках 12-16 осуществляется пересчет меток для п—к—1 вершин, т.е. число операций в цикле 12-16 пропорционально п — к — 1. Окончательно, число операций в алгоритме 9.2 пропорционально сумме с \ ~\ п(п ~ ^) 2 имеющей, очевидно, порядок п2, что и доказывает теорему. ? Проиллюстрируем работу алгоритма 9.2 на графе, изображенном ра- ранее на рис. 75. Здесь в качестве вершины w выбрана вершина v\. \Т\ 0 1 2 3 4 5 и = v\w Щ Vl, V2 Vl, V2, V3 Vl, V2, V3, V4 Vl, V2, V3, Vi, V5 Vl, V2, V3, Vi, V5, V6 near V2, V3, Vi, V5, V6 Vi, Vl, Vi, Vi, Vi Vl, V2, Vi, Vi Vi, V3, V3 Vi, Vi V5 d V2, V3, Vi, V5, V6 2, 3, 4, схэ, схэ 3, 3, oo, oo 2,4,5 4,4 2 В результате работы алгоритма получится остов Т — {viv2, vtv3, v3v4,
187 (ребра остова перечислены в том порядке, в каком опи были найдены). Этот остов изображен на рис. 75 Ь, т. е. он совпадает с остовом, постро- построенным алгоритмом Борувки-Краскала. Заметим, что функция Min(W) при наличии нескольких претендентов выбирала тот, у которого номер меньше. Например, в третьей строке таблицы вершине «з отдапо пред- предпочтение перед вершиной v^. Апалогичная ситуация в предпоследней строке. В научной литературе имеется много работ, посвященных различным вариантам постановки задачи о минимальном остове. Например, совсем недавпо разработан алгоритм построепия минимальпого остова в евкли- евклидовом графе, имеющий сложность O(nlogn). Здесь под евклидовым гра- графом понимается полный граф, вершинами которого являются точки п- мерного евклидова пространства, а вес каждого ребра равен расстоянию между его концами. Задача о минимальном остове для евклидовых гра- графов на плоскости (случай п—2) находит непосредственное применение при проектировании радиоэлектронных изделий. Детальное обсуждение задачи о мипимальном остове содержится в книгах [27], [57] и [59].
10. Пути в сетях 10.1. Постановка задачи Взвешенный орграф G — (V, Е, с) называется сетью. Сеть может быть представлена матрицей весов дуг или списками смежности /ist[t>] или Zjsi[t)]. В этой главе, следуя традиции, нам удобно ормаршрут назы- называть путем. Пусть Р — некоторый (у, то)-путь: ел ?-2 ек V — Vq > Vi > . . . > Vk — W. Положим Число с{Р) назовем длиной пути Р. Наименьшую из длин (и, ы;)-путей назовем расстоянием от v до то, а тот (г>, то)-путь, длина которого равна расстоянию от v до то, будем называть кратчайшим (и, то)-путем. Ясно, что расстояние от г; до ы; может отличаться от расстояния от ы; до и. Задача о кратчайшем пути (ЗКП) между фиксированными вершина- вершинами формулируется следующим образом: в заданной сети G с двумя вы- выделенными вершинами s и t найти кратчайший (s, <)-нуть. Отметим сразу, что ЗКП можно рассматривать и в неориентирован- неориентированных взвешенных графах, заменив каждое ребро vw графа двумя дуга- дугами vw, wv и считая, что веса обеих дуг равны весу ребра vw. Далее, ес- если в произвольном графе положить вес каждого ребра равным единице, то получим данное ранее определение длины пути как числа входящих в него ребер. С этой точки зрения рассмотренная ранее (см. разд. 8.4) за- задача ностроения кратчайшего по числу ребер пути есть частный случай сформулированной только что задачи. 10.2. Общий случай. Алгоритм Форда - Беллмана Всюду в дальнейшем будем предполагать, что если вершины v и то не являются смежными в сети G — (V, Е, с), то с(у, то) — ею. Для удобства изложения и во избежание вырожденных случаев при оценке сложности алгоритмов будем считать, что п < т. Это исключает ситуации, при которых большинство вершин изолированы. Кроме того, будем рассмат- рассматривать только такие сети, в которых нет контуров отрицательной длины. Понятно, что если сеть содержит контур отрицательной длины, то рас- расстояние между некоторыми нарами вершин становится неопределенным, поскольку, обходя этот контур достаточное число раз, можно построить
10.2. Общий случай. Алгоритм Форда-Беллмана 189 путь между этими вершинами с длиной, меньшей любого, наперед за- заданного, вещественного числа. Метод решения ЗКП в некотором смысле аналогичен методу нострое- ния кратчайшего по числу ребер пути. Вначале размечаем все вершины данпой сети (прямой ход алгоритма), вычисляя расстояния от s до всех вершин. Затем, используя специальные метки, обратным ходом строим требуемый путь. Интересно отметить, что для вычисления расстояния от s до заданной вершины t, мы вынуждены вычислять расстояния от s до всех вершин сети. В настоящее время не известен ни один алгоритм на- нахождения расстояпия между фиксированными вершинами, который был бы существенно более эффективным, чем известные алгоритмы вычис- вычисления расстояний от одной из фиксированных вершин до всех остальных. Начнем с первого этапа — вычисления расстояний от s до всех вер- вершин. Метод, который мы будем здесь использовать, часто называют ди- динамическим программированием, а алгоритм вычисления расстояний — алгоритмом Форда-Беллмапа. Появился этот алгоритм в работе Форда 1956 года и в работе Беллмана 1958 года. Основная идея алгоритма Форда-Беллмана заключается в поэтапном вычислении кратчайших расстояний. Обозначим через d^{v) длину крат- кратчайшего среди всех (s, г>)-путей, содержащих не более чем к дуг. Легко видеть, что справедливы следующие неравенства di(v) > d2{v) > ... > dn_i(v). Поскольку по предположению в графе нет контуров отрицательной длины, кратчайший (s, г>)-путь не может содержать более чем п — 1 дуг. Поэтому величина dn_i(v) дает искомое расстояние от s до v. Для вычисления dn_i{v) достаточно последовательно вычислять dk(v) для всех к — 1, ..., п — 1. Значения di(v) вычисляются просто: d\(v) — c(s, г;) для всех v E V. Пусть значения d^-iiv) вычислены для всех v ?V. Легко видеть, что djt+i(^) = тш{с?д;(г>), djt(w) + c(iw, v) w ? V}. Организовать все эти вычисления можно с помощью всего лишь од- одного одномерного массива D длины п. Положив D[v\ = c(s, v) для всех вершин v ? V, будем иметь равенства D[v] = di(«).
190 10. Пути в сетях Просматривая после этого все вершины v, произведем пересчет зна- значений D[v] по формуле D[v] = mm{D[v], D[w] + c(w, v) \ w E V}. A) После завершения первого пересчета значений D[v] для всех v, будем иметь неравенства D[v] < d2{v). Почему не равенства? Пусть пере- пересчет начипался с вершипы v\. Ясно, что тогда D[v-\\ = d2(yi). Пред- Предположим, что следующей вершиной, для которой был сделан пересчет, была вершина v2. Тогда D[v2] < D[vi] + c(vi, v2), что вытекает из фор- формулы пересчета A). Отсюда следует, что возможна ситуация, в которой D[v2] = D[vi] + c(vi, v2), и, кроме того, значение D[v\] могло быть получе- получено па пути, состоящем из двух дуг. Следовательно, значение D[v2] может быть получено по некоторому пути из трех дуг, т.е. Z?[i>2] < ^2(^2)- Повторив п — 2 раза процесс пересчета D[v], будем иметь равенства D[v\ = dn-i(v), т.е. D[v\ дает расстояние от s до v. Прежде чем подроб- подробнее обосновать равенства D[v] = dn_i(v), дадим формальное описание ал- алгоритма Форда-Беллмана. Построепия самих кратчайших путей удобно вести с помощью одномерного массива Previous длины п, где Previous[v] дает имя вершины, предпоследней в кратчайшем (s, щ)-пути. Алгоритм 10.1 (Форд, Беллман). Вход: сеть G = (V, Е, с), заданная матрицей весов А порядка п; верши- вершины s и t. Выход: расстояпия D[v] от s до всех вершин v G V, стек S, содержащий кратчайший (s, *)-путь, или сообщение, что искомого пути в сети не су- существует. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. procedure Distance begin D[s] := 0; Previous[s] : for v G V \ {s} do begin D[v] := A[s, v] for к :— 1 to n — 2 do for v G V \ {s} do for w eV do if ?>[w] + A[w, v] begin D[v] := D[w] - Previous[v] := end end: = 0; ; Previous[v] < D[v] then f A[w, v}; = w := s end;
10.2. Общий случай. Алгоритм Форда -Беллмана 191 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. begin Distance; if D[t] < oo then begin S := nil; S <= t; v:= t; while Previous[v] ф 0 do begin v :— Previous[v]; S end else writeln («Not exists»); end. v end Напомним, что по определепию матрицы весов справедливы равеп- ства A[v, w] — c(v, w) для всех vw ? Е и по нашему соглашению A[v, w] = оо, если в сети нет дуги vw. Вернемся к обоснованию равенства D[v] — dn_i(«). Заметим, что при первом входе в цикл, начинающийся в строке 6, справедливы равенства D[v] = di(v) для всех v G V. Предположим, что при входе в к-ю итерацию цикла 6 справедливы неравенства D[v] < dk(v) для всех v G V. Докажем, что по завершению этой итерации для любой вершины v EV снраведливы соотношения D[v] < dk+l{v). Действительно, после выполнения цикла в строке 6 для произвольной вершины v выполнены неравенства D[v] < D[w] + A[w, v] для всех w G V. По предположению имеем неравенство D[w] < d/c(w). Учитывая, что A[w, v] — c(w, v), получаем неравенства D[v] < dk(w) + c(w, v) для всех вершин w. В частности, это неравенство вынолнено и для той вершины w, ко- которая является нредноследней в кратчайшем (s, г))-пути, состоящем из к + 1 дуги. Отсюда сразу следует требуемое неравенство D[v] < d^+i(w). Таким образом, по завершению (п — 2)-й итерации цикла в строке 6 справедливы неравенства D[v] < dn_i(v) для всех вершин v. Выше уже отмечалось, что поскольку сеть не содержит контуров отрицательной длины, то dn-i(v) дает длину кратчайшего (s, г))-пути. Следовательно, D[v] = dn-i(v). Тем самым обоснование этого равенства, а вместе с ним и обоснование корректности алгоритма Форда-Беллмана, завершепо. Теорема 10.1. Алгоритм Форда -Беллмана имеет сложность О (и3).
192 10. Пути в сетях Доказательство. Понятно, что сложность алгоритма определяется сложностью процедуры Distance, так как основная программа требует числа операций пропорционального п. Ясно, что количество операций в цикле 4 пропорциональпо п. Поскольку цикл в строке 6 выполняется п — 2 раза, в строке 7 — п — 1 раз, а в строке 8 — п раз, и число выпол- выполнений оператора присваивания при каждом входе в цикл 8 ограниченно константой, то сложность выполнения цикла, начинающегося в строке 6, есть 0({п - 2) ¦ (п - 1) ¦ п) = О(п3). ? Заметим, что вычисления в процедуре Distance можно завершить при таком выходе из цикла по к, при котором не происходит изменения ни одного значения D[v]. Это может произойти и при к < п—2, однако такая модификация алгоритма пе изменяет существенным образом его слож- сложности, поскольку в худшем случае придется осуществить п — 2 итераций цикла по к. Иллюстрирует работу алгоритма Форда-Беллмана рис. 76. Веса дуг даны в скобках. Циклы в строках 7 и 8 выполнялись в порядке возрас- возрастания номеров вершин. к 1 2 3 D[l] 0 0 0 0 D[2] 1 -1 -1 -1 D[3] 2 2 2 2 D[A] oo 9 -1 -1 D[5] oo 1 1 1 Рис. 76 Рекомендуем читателю провести вычисления для этой сети в пред- положепии, что вершины встречаются в норядке 1, 3, 2, 5, 4. (В этом случае расстояния будут вычислены за один проход, т. е. строки табли- таблицы, соответствующие всем значениям к, будут одипаковыми.) В случае, когда сеть задана списками смежностей Zist[v], для решения ЗКП в алгоритме Форда-Беллмана достаточно цикл в строке 8 процедуры Distance записать следующим образом. 8. for w ? list[v] do 9. if D[w] + A[w, v] < D[v] then 10. begin D[v] :— D[w] + c[v, w]; Previous[v] :— w end В таком случае алгоритм Форда-Беллмана будет иметь вычислитель- вычислительную сложность 0{тп).
10.3. Случай неотрицательных весов. Алгоритм Дейкстры 193 10.3. Случай неотрицательных весов. Алгоритм Дейкстры Описываемый в этом разделе алгоритм позволяет вычислять в сети с неотрицательными весами расстояния от фиксированной вершины s до всех остальных вершин и находить кратчайшие пути более эффективно, чем алгоритм Форда-Беллмана. Этот алгоритм был предложен в 1959 го- году Дейкстрой. В основе алгоритма Дейкстры лежит принцип «жадности», заключающийся в последовательпом вычислении расстояний сначала до ближайшей к s вершине, затем до следующей ближайшей и т. д. Для удобства изложения обозначим через d[v) расстояние от s до v, т. е. длину кратчайшего (s, 1>)-пути в сети G. Первая ближайшая к вершине s вершина v вычисляется просто: это сама вершина s, находящаяся на нулевом расстоянии от s, т. е. d(s) = 0. Пусть ближайшие к вершин к вершине s определепы и для всех них вычислены расстояния d(v), т.е. определено множество S — {vi — s, i>2, • • ¦, Vj.}, причем выполпяются неравенства: 1) 0 = d(«i) < d(v2) <...<d(vk); 2) d(vk) < d(v), для всех v ? F, где F = V \ S. Здесь следует иметь ввиду, что последнее неравенство имеет «потен- «потенциальный» характер, а именно, мы считаем известными значения рассто- расстояний лишь для вершин Vi, ..., vk, а для всех остальных вершин рассто- расстояния еще не вычислены, но для них известно, что перавенства 2) будут выполняться. Найдем следующую ближайшую к s вершину сети G. Для каждо- каждого w ? F положим D(w) = mh\{d{v) + c(v, w)\v ? S}. Можно отметить, что тогда D{w) определяет длину мипимального (s, го)-пути среди всех (s, то)-нутей, все вершины в котором, кроме w, принадлежат S. Выберем теперь такую вершину w* ? F, что выполнено условие: D(w*) = min{L>(u;) \w ? F}. Оказывается, что вершина w* является самой близкой к s среди всех вершин, не входящих в S (опа является следующей (к + 1)-й ближайшей к s вершиной), и, более того, расстояние от вершины s до вершины w* в точности равно ?)(«;*), т.е. справедливо равепство d(w*) = D(w*). Обоснуем вначале равенство d{w*) = D{w*). Пусть Р: s = wo, и>1, ..., wr = w* — произвольный (s, те*)-путь в сети G. Достаточно
194 10. Пути в сетях доказать неравенство D{w*) < с(Р). Среди всех вершин пути Р выбе- выберем вершину Wj с наименьшим номером среди тех, которые не входят в множество S. Так как начальная вершина пути Р входит в S, а конеч- конечная — не входит в 5, то такой номер j найдется. Итак, Wj-i G 5, Wj G F. Тогда из определения D[w], где w G F, и определения стоимости нути вытекают неравенства D(wj) < d(iu,-_i) + c(iOj_i, Wj) < c(w0, ioi) + ... + c(«)j_i, го,) = c(Q), где через Q обозначен (s, и^)-подпуть пути Р. Из условия неотрицатель- неотрицательности весов дуг вытекает, что c(Q) < c(P). Кроме того, в силу выбора вершины w имеем, что D{w*) < D(wj). С учетом этих неравенств полу- получаем, что D(w*) < c(P). Следовательно, d(w*) — D(w*). Осталось убедиться, что вершина w* является (к + 1)-й ближайшей к s вершиной. Для этого достаточно доказать неравенство d(w*) < d{w) для всех w G F. Зафиксируем (в, ги*)-путь Pi и (s, ад)-нуть Р2, для которых с{Р\) = d{w*) и с(Р2) = d(w). В силу доказапного только что равепства D(w*) = d(w*) можпо считать, что в нути Pi все вершипы, кроме w*, лежат в S. Тогда справедливо неравенство D(w*) < D(w), и, повторяя вышенриведенные рассуждения, нриходим к неравенству D{w) < с{Р). Отсюда c(Pi) = d(w*) — D(w*) < c(Pz) — d(w), что и требовалось дока- доказать. Итак, выбирая вершину w G F с минимальным значением D[v] и до- добавляя к S, мы расширяем множество вершип, до которых вычислено расстояние, на один элемент. Следовательно, повторяя п — 1 раз про- процесс расширения множества S, мы вычислим расстояния до всех вершин сети G. При формальной заниси алгоритма Дейкстры (алгоритм 10.2) ход вы- вычисления расстояний от s до остальных вершин v будем отражать в мас- массиве D. По окончании работы алгоритма равенства D[v] = d(v) будут выполняться для всех v G V. Без формального описания использует- используется функция Min(F), которая возвращает вершину w G F такую, что справедливо равенство D[w] = mm{D[v] \ v G F}, иначе говоря, она пахо- дит тот самый элемент, который следует добавить к S и удалить из F. Мы ограничимся только вычислением расстояний и меток Previous, с номощью которых кратчайшие пути строятся также, как в алгоритме Форда - Беллмана. Алгоритм 10.2 (Дейкстра). (* нахождение расстояний от фиксированной вершины до всех осталь- остальных в сети с неотрицательными весами *) Вход: сеть G = (У, Е, с), заданпая матрицей весов А порядка щ выде- выделенная вершина s.
10.3. Случай неотрицательных весов. Алгоритм Дейкстры 195 Выход: расстояния D[v] от s до всех вершин v ? V, Previous[v] — пред- предпоследняя вершина в кратчайшем (s, -и)-пути. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. begin D[s] := 0; Previous[s] := 0; F := V \ {s}; for v € F do begin D[v] := Л[в, «]; Ргемомв[г>] := s; end; for & := 1 to n — 1 do begin w:=Min{F);F:=F\{w}; for v ? F do if ?>И + Л [го, г>] < D[v] then begin ?>[г>] := D[io] + Л[го, v]; Prevjows[v] := го; end end end. Для доказательства корректпости алгоритма 10.2 заметим, что при входе в очередную k-ю итерацию цикла 5-13 уже определепы к ближай- ближайших к s вершин и вычислены расстояния от s до каждой из них. При этом первоначальные значения расстояний вычислены в строке 4. Как показано выше, выполнение строки 7 правильно определяет (к + 1)-ю ближайшую к s вершину. Удаление го из F влечет, что D[w] больше ме- меняться не будет, а но доказанному ранее пересчитывать его нет пужды, так как выполняется равенство D[w] = d{w). Осталось заметить, что нроверка в строке 9 в каждой итерации цикла 5-13 позволяет правильно пересчитывать значения D[v] и отслеживать предпоследнюю вершину в кратчайшем пути. Следовательно, алгоритм 10.2 нравильно вычисля- вычисляет расстояния и кратчайшие пути от фиксированной вершины до всех остальных вершин сети. Работа алгоритма Дейкстры показана на рис. 77. Теорема 10.2. Алгоритм Дейкстры имеет сложность О(п2). Доказательство. Пусть найдены расстояния до к ближайших к s вершин. Онределение расстояния до (к + 1)-й вершины требует в стро- строке 7 числа операций нропорционального п — к, так как именно столько вершин находится в множестве F. Проверка условия в строке 9 и, если нужно, пересчет D[v] и Previous[v] в строках 11, 12 требует числа оне- раций пропорционального п — к. Окончательно, общее число операций в алгоритме Дейкстры нропорционально п+ (п — 1) + ... + 1 = п{п — 1)/2, т.е. равно О(п2). ?
196 10. Пути в сетях к 1 2 3 4 5 S = V\F {l = s} {1,4} {1, 4, 2} {1, 4, 2, 6} {1, 4, 2, 6, 3} {1, 4, 2, 6, 3, 5} D[l] 0 D[2] 3 3 D[3] 10 10 7 6 I>[4] 1 D[5] oc oo 8 8 8 D[6] oo 3 3 Рис. 77 Можно дать и другую, графическую интерпретацию работы алгорит- алгоритма Дейкстры, построив дерево кратчайших путей К. Это дерево являет- является орграфом на том же множестве вершин, что и G. Дуга vw включается в К, если w — ближайшая (& + 1)-я вершина и v — Previous[w]. Ясно, что К — это корневое дерево с корнем s, поэтому для всякой вершины v G V в К существует единственный (s, и)-путь. Этот путь является кратчай- кратчайшим (s, г|)-нутем в сети G. Для сети, изображенной ранее на рис. 76, ход ностроения дерева кратчайших путей показан ниже на рис. 78. 10.4. Случай бесконтурной сети В этом случае, так же как и в случае сетей с неотрицательными веса- весами дуг, известен более эффективный алгоритм вычисления расстояний от фиксировапной вершины до всех остальных, чем алгоритм Форда- Беллмана. В основе этого алгоритма лежат следующие две леммы. Лемма 1. В каждом бесконтурном орграфе имеется хотя бы одна вершина, полустепень исхода которой равна нулю. Доказательство. Пусть G = (V, Е) — бесконтурный орграф и и>\ — произвольная его вершина. Если ее полустепень исхода не равна нулю, то выберем произвольную вершину wi такую, что w\Wi ? Е, затем гоз
10.4. Случай бесконтурной сети 197 Рис. 78 так, что W2W3 ? Е, и т. д. до тех пор, пока подобный выбор вершины возможен. Через конечное число шагов мы дойдем до некоторой верши- вершины w, из которой не выходит ни одна дуга, ибо в бесконтурном орграфе вершины в строящемся нути wi, w?, и>з> • • • не могут повторяться. Сле- Следовательно, последняя построенная в пути вершина w имеет нулевую полустепень исхода. ? Лемма 2. Вершины бесконтурного ориентированного графа можно перенумеровать так, что каждая дуга идет из вершины с меньшим но- номером в вершину с большим номером. (Орграфы с так пронумерованными вершинами иногда называют то- топологически отсортированными, а алгоритм, осуществляющий такую ну- нумерацию вершин — алгоритмом топологической сортировки вершин.) Доказательство. Приведем алгоритм, осуществляющий тонологи- ческую сортировку. Неформально этот алгоритм можно сформулировать следующим образом: 1) объявить наибольшим неиспользованным номером число, равное количеству вершин в орграфе; 2) выбрать произвольную вершину v, полустенень исхода которой равна нулю, и присвоить вершине v наибольший из еще не использо-
198 10. Пути в сетях ванных номеров. Номер, который получит вершина v, считать использо- использованным; 3) удалить из орграфа вершину v вместе со всеми входящими в нее дугами; 4) повторять шаги 2 и 3 до тех пор, пока все вершипы пе получат свой номер. Корректность работы приведенного алгоритма топологической сор- сортировки вытекает из леммы 1, так как при каждом удалении вершипы новый граф остается бесконтурным, и, следовательно, в нем также су- существует вершина с пулевой полустепенью исхода. ? При формальном описании этого алгоритма переменная number дает значение самого большого из еще не использованных номеров. Перемеп- ная DegOut[v] указывает на текущее значение полустепени исхода вер- вершины v. В частпости, удаление вершипы v вместе со всеми выходящими из нее дугами приводит к уменьшению значения DegOut[w] на единицу для всех w ? list[v\. Очередь Q служит для накопления текущего мно- множества вершин, имеющих пулевую полустепень исхода. Массив Index предназначен для хранения повых номеров вершин. В этом разделе нам будет удобнее считать, что все сети и орграфы заданы списками смеж- ностей list[v], где то ? list[v], если и только если имеется дуга из ад в г;. Алгоритм 10.3. Вход: бесконтурный орграф G — (V, Е), задапный списками смежностей list[v]. Выход: массив Index длины п такой, что для любой дуги vw ? Е спра- справедливо неравенство Index[v] < Index[w]. 1. begin 2. for v ? V do DegOut[v] := 0; 3. for v ? V do 4. for w ? list[v] do DegOut[w] :— DegOut[w] + 1; 5. Q :— nil; number :— n; 6. for v ? V do 7. if DegOut[v] - 0 then Q «= v;; 8. while Q ф nil do 9. begin 10. v <= Q; Index[v] :— number; 11. number :— number — 1; 12. for w ? list[v] do 13. begin
10.4. Случай бесконтурной сети 199 14. DegOut[w] := DegOut[w] - 1; 15. if DegOut[w] = 0 then Q <s= v; 16. end 17. end 18. end. В алгоритме 10.3 в цикле в строках 3 и 4 вычисляется полустепень исхода каждой вершины. Затем все вершины с нулевой полустененью ис- исхода помещаются в очередь Q (цикл 6-7). В строках 10 и 11 очередной вершине присваивается наибольший из неиспользованных номеров, ина- иначе говоря, реализуется шаг 2 неформального описания алгоритма. Цикл в строках 12-15 обеспечивает удаление последней пронумеровапной вер- шипы вместе с дугами ей инцидентными, и все вершины, полустепень исхода которых в новом орграфе равна пулю, сразу же помещаются в очередь Q (шаг 3 пеформальпого описания). Легко видеть, что каждая вершина помещается в очередь Q либо то- тогда, когда ее полустепепь исхода в заданпом орграфе равна нулю, либо тогда, когда все вершины, следующие за ней, нолучат свои повые но- номера. Поэтому алгоритм 10.3 правильпо осуществляет топологическую сортировку вершин. Теорема 10.3. Алгоритм 10.3 имеет сложность О(т). Доказательство. Напомним, что на протяжении этой главы мы усло- условились считать, что п < т. Циклы в строках 2 и 6-7 анализируют каждую вершину ровно по одному разу, а в строках 3-4 и 12-15 — каждую дугу также ровно по одному разу. Следовательно, сложность алгоритма 10.3 есть О{п) + О{т) — О(т). ? В тех случаях, когда бесконтурный орграф задан списками смежнос- тей list, топологическая сортировка вершин орграфа также может быть осуществлена за время О{т). При описании алгоритма вычисления расстояний в бесконтурпой сети будем считать, что все вершипы задаппой сети топологически отсорти- отсортированы. Расстояния будем вычислять от вершины V\ = s. Пусть Vk — произвольная вершина заданпой бесконтурпой сети. Тог- Тогда любой (s, г>д,)-путь проходит через вершины с меньшими чем к номе- номерами. Из этого замечания следует, что для вычисления расстояний от s до всех остальных вершин сети достаточно последовательно вычислять расстояния от s до х>2, затем от s до г?з и так далее. Пусть, как и в преды- предыдущих разделах, d{v) обозначает расстояние от s до v. Тогда d(vi) = 0, и если d{vr) для всех г < к вычислепо, то d(vk) - min{d(vr) + c(vr, vk) \ r = 1, 2, ..., к}. B)
200 10. Пути в сетях Корректность формулы B) легко проверяется при помощи индукции. Именно по этой формуле вычисляет расстояния от вершипы s = vi пред- предлагаемый ниже алгоритм, в котором неременные D[v] и Previous[v] име- имеют тот же смысл, что и в алгоритмах Форда-Беллмапа и Дейкстры. Алгоритм 10.4. (* Вычисление расстояний от вершины V\ в бесконтурной сети *) Вход: бесконтурная сеть G = (V, Е, с) с топологически отсортированны- отсортированными вершинами, заданная списками list[v]. Выход: расстояния D[v] от v\ до всех v 6 V, Previous[v] — нредпослед- няя вершина в кратчайшем (vi, и)-пути. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. begin D[Vl] := for к := for к for if end. Теорема = 0; Previous[v\] := = 2 to n do D[vk] := 2 to n do w 6 list[vf.] do ' D[w] + c(w, vk) < begin D[vk] := D[w] 4 Previous[vk] := end = 0; := oo; D[vk] then -c(w, vk); w; 10.4. Алгоритм 10.4 имеет сложность О{т). Доказательство. Цикл в строке 3 требует п операций присваивания. Цикл в строках 4-10 приводит к тому, что каждая дуга сети анализи- анализируется ровно один раз, и каждый анализ дуги приводит к выполнению числа операций, ограниченного константой в строках 6-9. Следователь- Следовательно, сложность алгоритма 10.4 есть О(п) + О(т) = О(т). О Работа алгоритма 10.4 показана на рис. 79. В случае задания бесконтурной сети списками list расстояния от vi до всех остальных вершин также могут быть вычислены за время О(т). Такой алгоритм получается легкой модификацией алгоритма 10.4. Пре- Предоставляем читателям возможность самостоятельно поднравить алго- алгоритм 10.4 для достижения указанной цели. В заключение отметим, что все три основных алгоритма (Форда- Беллмана, Дейкстры и алгоритм 10.4) вычисления расстояний от фикси- фиксированной вершины легко могут быть модифицированы для вычисления расстояний от фиксированной вершины в сетях со взвешенными верши- вершинами.
10.5. Задача о максимальном пути и сетевые графики 201 к 2 3 4 5 6 ВЫ 0 D[v2] оо 4 Я[«з] схэ схэ 11 D[vt] CXD CXD (X) 3 D[vs] CXD CXD (X) CXD 8 D[ve] CXD CXD 00 CXD CXD -3 Рис. 79 10.5. Задача о максимальном пути и сетевые гра- графики Задача о максимальном пути формулируется следующим образом: в заданной сети G — (V, Е, с) с выделенной вершиной s для каждой верши- вершины v G V найти (s, и)-путь, имеющий максимальную длину среди всех возможных (s, и)-путей в сети G. Отметим, что имеет смысл решать эту задачу лишь в сетях, пе содер- содержащих контуров положительной длины. Рассмотрев тогда сеть, отлича- отличающуюся от исходной только изменением знаков весов дуг, получим сеть, в которой нет контуров отрицательной длины. Применяя к новой сети алгоритм Форда-Беллмана, можно ностроить кратчайшие (s, «)-пути, которые будут путями максимальной длины в исходной сети. Впрочем, задачу о максимальном пути в общем случае можно решать и непосредственно, заменяя в алгоритме Форда-Беллмана знак неравен- неравенства в строке 9 на противоположный. Разумеется, решая таким образом задачу о максимальном пути, вес несуществующих дуг следует положить равным —сю. Важный частный случай сети с неотрицательными весами дуг, не имеющей контуров положительной длипы, — это сеть с неотрицатель- неотрицательными весами дуг, в которой вообще нет контуров. В этом частном случае
202 10. Пути в сетях задача о максимальном пути может быть решена алгоритмом 10.4, в ко- котором +оо заменяется на — оо, а знак неравенства в строке 6 меняется на противоположный. Несложное доказательство корректности исправ- исправленного таким образом алгоритма 10.4 мы предоставляем читателю. Отметим, что подобная замена знака неравенства в алгоритме Дейкст- ры пе позволяет получить алгоритм решения задачи о максимальном пу- пути. Для примера достаточно рассмотреть сеть, изображенную на рис. 80. Здесь такая модификация алгоритма Дейкстры, неправильно определит путь максимальной длины от вершины s до вершины 2. C) Рис. 80 Итак, алгоритм Форда-Беллмапа и алгоритм 10.4 легко могут быть модифицированы для вычисления длин максимальных (s, г;)-путей. Са- Сами же пути с помощью меток Previous[v] строятся так же, как и в алго- алгоритме Форда-Беллмана. Задача о максимальпом пути в бескоптурпой сети имеет большое практическое значение. Она является важнейшим звеном в методах се- сетевого планирования работ по осуществлению проектов. Многие крупные проекты, такие как строительство дома, изготов- изготовление станка, разработка автоматизированпой системы бухгалтерского учета и т.д., можно разбить на большое количество различных операций (работ). Некоторые из этих операций могут выполняться одновременно, другие — только последовательно: одна операция после окончания дру- другой. Например, при строительстве дома можно совместить во времени внутренние отделочные работы и работы по благоустройству террито- территории, однако возводить стены можно только после того, как будет готов фундамепт. Задачи плапирования работ по осуществлению заданпого проекта со- состоят в определении времени возможного окончания как всего проекта в целом, так и отдельных работ, образующих проект; в определении ре- резервов времени для выполнения отдельных работ; в определении крити- критических работ, т.е. таких работ, задержка в выполнении которых ведет к задержке выполнения всего проекта в целом; в управлении ресурсами, если таковые имеются, и т. п.
10.5. Задача о максимальном пути и сетевые графики 203 Здесь мы разберем основные моменты одного из методов сетевого пла- планирования, называемого методом критического пути. Метод был разра- разработан в конце пятидесятых годов Дюпоном и Ремингтоном Рапдом для управления работой химических заводов фирмы «Дюнон де Немур» (США). Пусть некоторый проект W состоит из работ vi, ..., vn; для каждой работы Vk известно (или может быть достаточно точно оценено) время ее выполнения tm{v^). Кроме того, для каждой работы вд. известен, возмож- возможно нустой, список Pred(vk) работ, непосредственно предшествующих вы- выполнению работы и*. Иначе говоря, работа Vk может начать выполняться только после завершепия всех работ, входящих в этот список. Для удобства в список работ проекта W добавим две фиктивные ра- работы «и(, где работа s обозначает пачало всего нроекта W, а работа t — завершение работ по проекту W. При этом будем считать, что рабо- работа s предшествует всем тем работам v ? W, для которых список Pred(v) пуст, иначе говоря, для всех таких работ v положим Pred{v) — {s}. Поло- Положим далее Pred(s) = 0, Pred(t) = {v ? W | v не входит ни в один список Pred(w)}, т.е. считаем, что работе t предшествуют все те работы, кото- которые могут выполняться самыми последними. Время выполнения работ s и t естественно положить равными нулю: tm(s) = tm(t) = 0. Весь нроект W теперь удобпо представить в виде сети G = (V, Е, с), где сеть G = (У, Е, с) определим по правилам: 1) V = W, т.е. мпожеством вершин объявим множество работ; 2) Е = {то | v ? Pred(w)}, т.е. отпошение предшествования задает дуги в сети; 3) c(v, w) — tm(w). Так построенную сеть G часто называют сетевым графиком выпол- выполнения работ по проекту W. Легко видеть, что списки смежностей этой сети /ist[w] совнадают с заданными для проекта списками предшествую- предшествующих работ Pred(v). Понятно, что сетевой график любого проекта не может содержать контуров. Отсутствие контуров в сети G позволяет пронумеровать работы про- проекта W таким образом, чтобы для каждой дуги ij сети G вынолнялось условие i < j. Ноэтому в дальнейшем будем считать, что вершины в сети G топологически отсортированы. На рис. 81 приведен пример проекта строительства дома и соответ- соответствующий сетевой график. Конечной целью построения сетевой модели является получение ин- информации о возможных сроках выполнения как отдельных работ, так и о возможном сроке выполнения всего проекта в целом.
204 10. Пути в сетях п 1 2 3 4 5 6 7 Наименование работы Закладка фундамента Возведение коробки здания Монтаж электропроводки Саптехмонтаж Настил крыши Отделочные работы Благоустройство территории Предшествующие работы Нет 1 2 2 2 3,4 5 Время выполпения 4 8 2 3 4 5 2 D) (8) D) Рис. 81 Обозначим через efin(v) (соответственно ebeg(v)) наиболее ранний возможный срок выполнения работы v (соответственно наиболее ран- ранний возможный срок начала работы v). Удобно считать, что efin(s) = = ebeg(s) = 0. Поскольку начать выполнять работу v можно только пос- после того, как будут выполнены все работы, предшествующие данной ра- работе v, то получим следующие формулы для расчета значений ebeg[v) и efin(v): ebeg[v) = max(e/in(w) | w ? Pred(v)), efin(v) — ebeg(v) + tm(v). Легко видеть, что значение efin(v) равно длине максимального (s, и)-пути в сети G. Поэтому для вычисления значений efin(v) можно использовать алгоритм вычисления длин минимальных путей в бескон- бесконтурной сети, в котором все знаки неравенств заменены на противопо- противоположные. При этом значепие efin(t) дает наиболее ранний возможный срок завершения всего проекта в целом. Ради полноты приведем здесь формальную запись алгоритма, непосредственно вычисляющего харак- характеристики ebeg и efin. Алгоритм 10.5. (* расчет наиболее ранних возможных сроков начала и выполнения ра- работ *)
10.5. Задача о максимальном пути и сетевые графики 205 Вход: сетевой график G работ V, заданный снисками Pred(v), v 6 V. Выход: наиболее ранние возможные сроки начала и выполнения работ ju], efin[v], v 6 V. 1. begin 2. for k := 0 to n + 1 do ebeg[k] := efin[k] := 0; 3. for k :— 1 to n + 1 do 4. begin 5. for i ? Pred{k) do 6. ebegjfc] :— max(e/m[i], ebeg[k]); 7. efin[k] :— ebeg[k] + tm[k]; 8. end 9. end. В этом алгоритме вершины сетевого графика s и t обозначены соот- соответственно через 0 и га + 1. Значения efin(v) и ebeg(v) для сетевого графика, изображенного ра- ранее на рис. 81, приведены на рис. 82. Из найденных значений следует, что этот нроект не может быть завершен раньше чем через 20 единиц времени. Пусть Т — плановый срок выполнения проекта W. Ясно, что Т долж- должно удовлетворять неравенству efin(n + 1) < Т. Через lfin(v) (соответственно Ibegiy)) обозначим наиболее поздний до- допустимый срок выполнения (начала) работы v, т.е. такой срок, который не увеличивает срок Т реализации всего проекта. Например, для рабо- работы 3 сетевого графика из рис. 81 имеем ebegC) — 12, e/mC) — 14, но ясно, что начать работу 3 можно на единицу времени нозже, посколь- поскольку это не новлияет на срок вынолнения всего проекта, а вот задержка в реализации этой же работы на 2 единицы приведет к увеличению срока выполпения всего нроекта на 1 единицу времени. Непосредственно из определений получаем справедливость равенств lbeg(n + 1) = lfin(n + 1) = Т. Поскольку произвольная работа v долж- должна быть завершена до начала всех наиболее поздних допустимых сроков тех работ w, которым предшествует работа v, то получаем следующие формулы: lfin(v) = mm{lbeg(w) \ v 6 Pred(w)}, lbeg(v) = lfin(v) — tm{v). Вычислить значения lfin(v) и lbeg(v) можно, двигаясь по вершинам сети G от п + 1 к 0. Все детали вычисления названных характеристик приведены в алгоритме 10.6.
206 10. Пути в сетях Алгоритм 10.6. (* Расчет наиболее поздних сроков начала и окончания работ *) Вход: сетевой график G работ V, заданный списками Pred[v], v ? V, плановый срок окончания проекта — Т. Выход: наиболее поздние допустимые сроки выполнения и начала работ lfin[v] и lbeg[v]. 1. begin 2. for v e V do lfin[v] := T; 3. for к :— n + 1 downto 1 do 4. begin 5. lbeg[k] := lfin[k] - tm{k); 6. for i ? Pred{v) do 7. lfin[i\ :— mm(lfin[i], lbeg[k]); 8. end 9. end. Найденные зпачепия возможпых и допустимых сроков выполнепия работ позволяют определить резервы времени для выполнения той или иной работы. В сетевом планировании рассматривают несколько различ- различных и по-своему важных видов резерва работ. Мы здесь ограничимся лишь полным резервом (иногда его называют суммарным) времени вы- выполнения работ. Он определяется по формуле reserve(v) — lbeg(v) — ebeg(v). Значение reserve(v) равно максимальной задержке в выполнении ра- работы v, пе влияющей на плановый срок Т. Понятно, что справедливо и такое равенство reserve(v) — lfin(v) — efin(v). Работы, имеющие нулевой резерв времени, называются критически- критическими. Через каждую такую работу проходит некоторый максимальный (s, ?)-путь в сети G. Поэтому такой метод нахождения критических ра- работ и называют методом критического пути. Критические работы ха- характеризуются тем, что любая задержка в их выполпении автоматически ведет к увеличению времени выполнения всего проекта. Численные зна- значения введенных характеристик сетевых графиков для проекта из рис. 81 даны на рис. 82. Расчеты выполнены при Т = 20. Критическими рабо- работами этого проекта являются работы с номерами 0, 1, 2, 4, 6, 8, которые и образуют в сети G критический путь. Исследование сетевых графиков на этом мы завершим. Отметим только, что помимо рассмотренных нами характеристик, часто рассмат-
10.6. Задача о maxmin-пути 207 Работы 0 1 2 3 4 5 6 7 8 ebeg 0 0 4 12 12 12 15 16 20 efin 0 4 12 14 15 16 20 18 20 lbeg 0 0 4 13 12 14 15 18 20 Шп 0 4 12 15 15 18 20 20 20 reserve 0 0 0 1 0 2 0 2 0 Рис. 82 ривают и большое число других, связанных, нанример, с неопределен- неопределенностью во времени выполнения работ, с управлением ресурсами и т.д. Достаточно обширный и содержательный материал но этому поводу мож- можно найти в книге [51]. 10.6. Задача о maxmin-пути Пусть G = (V, Е, с) —сеть. Для произвольного (s, г>)-пути Р: s = vq, V\, . . . , Vk — V ПОЛОЖИМ m(P) = min{c(vj_i, vt) \ i = 1, 2, ..., k}. Число m{P) назовем весом пути Р. Задача о maxmin-nymu формулируется следующим образом: среди всех (s, г>)-путей в сети G иайти нуть максимального веса. Иногда эту задачу называют задачей об узких местах. Для иллюст- иллюстрации разберем следующий нример. Рассмотрим дорожную сеть, включающую мосты. Будем считать, что превышение грузоподъемности некоторого моста при перевозке гру- груза нриводит к разрушению данного моста. Допустим, что мы хотим онре- делить максимальный вес груза, который может быть транспортирован в рассматриваемой дорожной сети из пупкта s в пункт v без превышепия грузоподъемности находящихся на нути движения транспорта мостов. Для решения этой задачи ностроим сеть G = (V, Е, с), множеством вершин которой объявим пункты s и v, а также все перекрестки дорож- дорожной сети. Будем говорить, что дорога х, соединяющая перекрестки ы; и и, непосредственно их соединяет, если х не проходит через другие перекрестки. Для дороги х положим с{х) равным минимальной из гру- зоподъемностей мостов, находящихся на дороге ж; если дорога х мостов
208 10. Пути в сетях не содержит, то считаем, что с(ж) = оо. Будем считать, что две вершины w и и сети G соединены дугами (то, и) и (и, w), если есть хоть одна дорога х, непосредственно соединяющая перекрестки w и и. Положим с(и, w) = c(w, и) = шах{с(ж) | х непосредственпо соединяет то и и}. Аналогично определяются дуги, ипцидентные пунктам s и v. Будем считать, что из s дуги только исходят (т.е. исключим дуги вида (w, s), где w G V), а в v дуги только входят. На рис. 83 а) дан пример дорожной сети, соединяющей пупкты s и v: цифрами обозначены перекрестки, буквами — мосты, а числа в скоб- скобках означают грузоподъемность соответствующего моста. Соответству- Соответствующая сетевая модель приведена на рис. 83 Ь), где каждое неориентиро- неориентированное ребро вида г, j соответствует двум дугам (г, j) и (j, г). Обращаем внимапие читателя на вес дуги C, v), который равеп 80, ибо пупкты 3 и v соединяют две дороги хну, для которых с(ж) = 80, и с(у) = 60. Поэтому сC, v) = 80. 1 6E0) 3 аA00) d(80) b) +oo 80 Рис. 83 Для решения задачи о maxmin-пути в произвольной сети G = (V, Е, с) с необязательно неотрицательными весами мы лишь немного модифи- модифицируем изложенный ранее алгоритм Дейкстры. Принцип «жадности» в вычислепии maxmin-расстояний выглядит здесь следующим образом: вычисляем последовательно каждый раз maxmin-расстояние до наибо- наиболее далекой вершины от s среди всех тех вершин, до которых maxmin- расстояние еще не вычислено. Более точно наши рассуждения здесь таковы. Обозначим через dm(v) максимальный вес среди всех (s, г;)-нутей, т.е. maxmin-расстояние от s до v.
10.6. Задача о maxmin-пути 209 Положим S = {s} и dm(s) = +00. Будем теперь добавлять к множеству S по одной вершине так, что множество S состоит на каждом шаге из тех вершин v, для которых dm(v) вычислено, и для всех v ? S и w ? F, где F — V \ S, справедливы неравенства dm(v) > dm(w). Для каждого w ? F положим D(w) = max{min{dm(i!), c(v, w)} \ v ? S}. Попятно, что в этой формуле появляется максимум вместо мипимума в аналогичной формуле A) из разд. 10.2, ибо нас интересует путь макси- максимального веса. Очередная вершина w*, которую следует добавить к S, выбирается в соответствии с условием D(w*) = max{D(u;) | w G F}. Обосповапие корректности такой модификации алгоритма Дейкстры проводится аналогично доказательству корректности самого алгоритма Дейкстры. Формально можно сказать, что вся модификация заключается в том, что все зпаки суммы заменяются на минимумы, а все минимумы в алгоритме Дейкстры — на максимумы. Поэтому мы не будем приво- приводить здесь исправленный указанным способом алгоритм 10.2. 2 E0) 4 180) A00) S 1 1,2 1,2,3 1,2,3,4 1,2,3,4,5 D[l] +00 D[2] +00 D[3] 100 +00 D[4] —00 50 90 D[5] —00 —00 70 80 Рис. 84 На рисунке 84 каждое неориентированное ребро vw представляет со- собой две ориентированные дуги (v, w) и (w, v). Читателя не должеп сму- смущать тот факт, что веса дуг A, 2) и B, 3) равны +оо. Это обстоятельство
210 10. Пути в сетях означает, что, во-первых, дуги A, 2) и B, 3) имеются в сети и, во-вторых, они имеют бесконечно большой вес. Бесконечно большой вес некоторых дуг моделирует ситуацию, встречающуюся в задаче о самом надежном пути перевозки груза по дорожной сети. Естествеппо считать, что доро- дорога, по которой может быть транспортирован груз любого веса, соответ- соответствует дуге бесконечно большого веса. При рассмотрении maxmm-задачи веса несуществующих дуг естественно считать равными — оо. Сами пу- пути легко строятся с помощью меток Previous. Отметим только, что такая модификация алгоритма Дейкстры не гарантирует построения ми- нимальпого по числу дуг наилучшего в смысле maxmin-расстояния пути. Например, в сети из рис 84 до вершины 5 будет найден путь 1-2-3-4-5, в то время как путь 1-3-4-5 имеет тот же вес. Отметим, что задача о minmax-пути может быть сформулирована и решена аналогично задаче о maxmin-пути. 10.7. Задача о кратчайших путях между всеми парами вершин В предыдущих разделах этой главы рассматривались задачи нахож- нахождения оптимальных в том или ином смысле путей от некоторой фиксиро- фиксированной вершины до всех остальных вершин сети. Здесь мы рассмотрим задачу построения кратчайших путей между всеми парами вершин. Под длиной пути, как и в разделах 10.1-10.4, мы нонимаем сумму весов дуг, образующих этот путь. Ясно, что эту задачу можно решать, используя п раз (поочередно для каждой вершины) один из описанных ранее ал- алгоритмов нахождения расстояний от фиксированной вершипы. Таким образом, мы нолучаем алгоритмы сложности О(п4) (при использовании алгоритма Форда-Беллмана) и О(п3) для сетей с неотрицательными ве- весами (алгоритм Дейкстры) или для бесконтурных сетей (алгоритм 10.4). Однако, для общего случая сетей с произвольными весами имеются бо- более эффективные алгоритмы, чем метод, основанный на многократном применении алгоритма Форда-Беллмана. Один из таких алгоритмов, предложенный в 1962 году Флойдом, мы здесь и разберем. Пусть сеть G = (V, Е, с) задана матрицей весов А, где A[i, j] = — c(vi, Vj), и A[i, j] — оо, если дуги [vt, Vj) в сети пет. Обозначим че- через dkii, j) длину кратчайшего пути из v, в Vj, все промежуточные вер- вершины которого содержатся в множестве vi, ..., «*, т.е. содержатся в первых к вершинах. Положим Пусть d).(i, j) вычислено при всех г, j = 1, ..., п и некотором к > 0.
10.7. Задача о кратчайших путях между всеми парами вершин 211 Докажем равенство 4+1 (г, i) = min (dk(i, j), dk{i, k + l) + dk{k + 1, j)). C) Действительно, рассмотрим кратчайший {vi, Vj)-nyTb P с промежу- промежуточными вершинами из множества vi, ..., vk, vk+i. Возможны две ситу- ситуации: либо вершина vk+i входит в этот путь, либо нет. Если вершина vk+\ не входит в нуть Р, то, как легко видеть, справед- справедливо равенство dk+i{i, j) = dk(i, j). Если же вершина vk+i входит в путь Р, то, разбивая этот путь на пути от V{ до Vk+i и от Vk+i до v,\, получаем два новых пути, все про- промежуточные вершины которых входят во множество v1, ..., V/.. По- Поскольку всякий подпуть кратчайшего пути сам является кратчайшим путем между соответствующими вершинами, то снраведливо равенство dk+i(i, j) = dk(i, k + l) + dk(k + 1, j)), что завершает обоснование равен- равенства C). Равенство C) позволяет легко находить расстояния между всеми па- парами вершин: нужно последовательно вычислить для всех пар вершин значения da{i, j), d\{i, j), ..., dn(i, j) и учесть, что расстояние от v, до Vj равно dn(i, j). Для нахождения кратчайших нутей будем использовать аналог не- неоднократно применявшегося ранее массива Previous, а именно, за- заведем двумерный массив Pred размера [1.. .п, 1... п], считая, что Pred[i, j] равен номеру вершины, являющейся предпоследней в кратчай- кратчайшем (vi, иу)-пути (понятно, что носледней вершиной в таком нути явля- является вершина Vj). Если k = Pred[i, j], то, посмотрев значение Pred[i, к], нолучим следующую вершину в (vj, Иг)-пути. Таким образом, двигаясь по элементам массива Pred, легко построить путь для любой пары вер- вершин. Детали изложены в приводимом ниже алгоритме, где преднолагает- ся, что A[i, i] = 0 и A[i, j] = оо, если дуга (и,;, Vj) в сети отсутствует. Еще раз повторим, что неотрицательность весов дуг не предполагается. Однако, считается, что в сети нет контуров отрицательной длины. Алгоритм 10.7 (Флойд). (* Вычисление расстояний между всеми парами вершин *) Вход: сеть G — (V, Е, с), заданная матрицей весов А порядка п. Выход: расстояния D[i, j] для всех нар и,;, Vj ? V, матрица Pred, в которой Pred[i, j] равно номеру предпоследней вершины в кратчайшем 1. begin 2. for i := 1 to n do
212 10. Пути в сетях 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. for j := 1 to n do begin D[i, j] := A[i, j]; Pred[i, j] := i; end; for к := 1 to n do for i := 1 to n do for j :— 1 to n do if D[i, j] > D[i, k] + D[k, j] then begin D[i, j] := D[i, k] + D[k, j]; Pred[i, j] :— Pred[k, j] end end. Понятно, что сложность алгоритма Флойда определяется сложностью цикла в строках 7-14, который состоит из трех вложенных циклов, вы- выполняемых п раз каждый. Отсюда следует Теорема 10.5. Алгоритм Флойда имеет сложность O(nz). Здесь интересно отметить, что точно такую же сложность имеет ал- алгоритм Форда-Беллмана вычисления расстояний от фиксированной вер- вершины до всех остальных вершин сети. В настоящее время не известен ни один алгоритм вычисления расстояния между фиксированной нарой вершин, который был бы существенно эффективнее (т. е. имел бы мень- меньшую вычислительную сложность), чем алгоритм вычисления расстояний между всеми парами вершин. Формальное описание процедуры построения самих кратчайших пу- путей, использующее матрицу Pred, не составляет никаких трудностей, и мы предоставляем его читателям в качестве несложного унражнения для самостоятельной работы.
11. Задача о максимальном потоке 11.1. Основные понятия и результаты В этой главе мы будем рассматривать сети G = (V, Е, с), имеющие единственную вершину s с нулевой степенью захода и единственную вершину t с нулевой стененью исхода. Вершину s будем называть ис- источником, а вершину t — стоком сети G. Будем предполагать также, что веса с(е) всех дуг неотрицательны. Число с(е) будем называть про- пропускной способностью дуги е. Для удобства введем следующие обозначения. Для произвольной вер- шипы v через v+ (соответственно v—) будем обозначать множество вер- шип, к которым (из которых) идут дуги из вершины (в вершину) v. Потоком / в сети G пазывается фупкция /: Е —у R, удовлетворяю- удовлетворяющая условиям: 1) 0 < /(е) < с(е) для всех е е Е; 2) f(v—) = f[v+) для всех v 6 V, v ф s, v ф t, где f(v—) = = Е_/(«>, «)>/(«+)= Е f{v,w). Число f(v, w) можно интерпретировать, нанример, как количество жидкости, поступающей из v в w по дуге (v, w). С этой точки зрепия значение f(v—) может быть интерпретировано как поток, втекающий в вершину v, a f(v+) — вытекающий из v. Условие 1) называется условием ограничения по нропускной снособ- ности, а условие 2) — условием сохранения потока в вершинах; иными словами, поток, втекающий в вершину v, отличную от s и t, равен выте- вытекающему из нее потоку. Положим ||/|| — /(s+). Число II/H называется величиной потока /. Поток / называется максимальным, если для любого потока /* справед- справедливо неравенство ||/*|| < ||/||- Задача о максимальном потоке: в заданной сети найти поток макси- максимальной величины. Такая задача возникает, например, когда требуется найти максималь- максимально возможный объем пекоторой жидкости или газа, который может быть перекачан по сети трубопроводов от источника до пункта потребления. При этом условие 1) в определении потока моделирует тот факт, что по каждой трубе может протекать ограниченное количество жидкости, обу- обусловленное, например, диаметром трубы, а условие 2) — то, что потерь в промежуточных вершинах не происходит. Понятие нотока в сети мо- может моделировать также потоки транспорта в сети автострад, перевозку товаров но железным дорогам и т. н.
214 11. Задача о максимальном потоке 2 0,5A) 5 1A) 0A) 0,5A) Рис. 85 На рис. 85 дан пример сети G и потока / в ней. Значение /(е) на ду- дуге е указано возле соответствующей дуги, в скобках указана пропускная способность этой же дуги. Очевидно, величина этого потока равна 1. Задача о максимальном потоке имеет одну особенность, отличающую ее от всех рассмотренных ранее задач дискретной оптимизации. А имен- именно, во всех предшествующих задачах искомый объект существовал оче- очевидным образом и в принципе мог быть найден полным перебором. На- Например, можно было бы перебрать все пути между заданными вершина- вершинами и выбрать среди них кратчайший или перебрать все остовы и выбрать минимальный. В задаче о максимальном потоке полный перебор прин- принципиально невозможен и существование максимального потока, вообще говоря, не очевидно. Тем не менее, справедлива следующая Теорема 11.1. В каждой сети существует максимальный поток. Доказательство. Пусть G — (V, Е, с) — сеть, sat — соответствен- соответственно источник и сток сети G. Занумеруем произвольным образом мно- множество дуг Е сети G. Тогда каждый поток / в сети G — это нросто упорядоченный набор из т чисел, т. е. точка m-мерного евклидова про- пространства ]Rm, где т — число дуг в сети. Иначе говоря, если X — множество всех потоков в сети G, то имеется естественное иньективное отображение ф множества X в М,т. Пусть Y — ф(Х). В силу условия 1) определения потока множество Y т ограничено, так как содержится в m-мерном параллелепипеде П [0, с(е,;)]. »=i Докажем замкнутость множества Y. Рассмотрим предельную точ- точку у — (ух, ..., ут) множества Y и покажем, что существует по- поток / в сети G такой, что /(е^) = щ для любого i = 1, ..., т. Достаточно проверить, что для отображения, заданного равенствами /(е;) = yi выполняются оба условия 1) и 2) из определения потока. Пусть ff. — последовательность потоков в сети G такая, что для каждого г = 1, ..., т последовательность fk(ei) сходится к у,;. Поскольку нера- неравенства 0 < Д(е,;) < с(е,) выполняются при любом к, то, переходя к пре- пределу, получаем неравенства 0 < j/j < с(е»). Итак, условие 1) выполняется.
11.1. Основные понятия и результаты 215 Пусть теперь v произвольная вершина сети. Обозначим через I— и 1+ множества индексов дуг, входящих (соответственно выходящих) в вер- вершину v (из вершины v). Тогда для любого к справедливо равенство Е /*(е«) = Е /*(е«)- iei- iei+ Переходя в этом равенстве к пределу, получим Е /(*) = Е /(*)• iei- iei+ Тем самым замкнутость множества Y, а вместе с ней и компактность этого множества доказаны. Вешествепная функция \\y\\ = Y, Vi (у ? Y), где S — множество ин- ies дексов дуг, выходящих из источпика s, является, как нетрудно заметить, линейной функцией. Отсюда вытекает ее непрерывность. Следовательно, по теореме Вейерштрасса данная функция имеет максимум. Поскольку эта функция дает величину потока, точка, в которой она имеет макси- максимум, является максимальным потоком в сети G. ? Разрезом между заданными вершипами v и w в ориептировапном гра- графе обычно называют минимальное множество дуг, удаление которых из орграфа приводит к разрушению всех (v, то)-путей. Этому понятию мож- можно придать двойственную формулировку в терминах множеств вершин. В этой главе, нам удобнее оперировать именно с такой трактовкой поня- понятия разреза. Более точно, (s, 1)-разрезом (в дальнейшем просто разрезом) (Vs, Vt) в сети G называется пара множеств V,, Vt, удовлетворяющих условиям: (a) s?Va,t? Vt; (b) V8 U Vt = V; (c) V.nVt = 0. Для разреза (Ve, Vt) через E(Ve —? Vt) обозпачим множество всех дуг е, начала которых лежат в Vs, а копцы — в Vt. Аналогично, E(Vt -^Va) = {e = vw?E\v?Vt, w? Vs}. Например, для сети из рис. 85 и разреза (V,, Vt), в котором Vs = {s, 4}, а Vt = {2, 3, 5, t} имеем E{VS -> Vt) = {{s, 2), (e, 3), D, t)}, E{Vt -> V,) = = {B, 4), C, 4)}. Пусть /(v. -> vt) = e /(e)>
216 11. Задача о максимальном потоке Лемма 1. Для любого потока f u любого разреза (Vs, Vj) справедливо равенство 11/11 = № -> vt) - f(vt -> v.). Доказательство. Для произвольной вершины v ? Va, где v ф s, спра- справедливо равенство f(v+) — f{v—) =0и /(*+) — \\f\\- Просуммировав эти равенства но всем вершинам и ? Vs, нолучим 11/11 =ЕД«+)-Е/(«-)• D) vev, vev, Пусть е — vw ? Е, и обе вершины и и w принадлежат V,. Тогда зна- значение /(и, го) фигурирует в сумме f(v+) как часть потока, выходящего из г>, и в /(го—) как часть входящего в го потока. Следовательно, в правой части равенства D) все слагаемые вида f(v, го), где v, w ? Vs, взаимно уничтожаются. Оставшиеся слагаемые дают требуемое равенство. ? Пусть Vt = {t}nVs = V\ {*}. Тогда /(V.-»- Vt) = f{t-) и f(Vt-+ V.) = 0. Следовательно, равенство из леммы 1 запишется следующим образом 11/11 =/(И- Последнее равенство выражает интуитивно понятный факт: поток, вхо- входящий в сток, в точности равен выходящему из источника потоку, так как потерь в промежуточных вершинах не происходит. Для разреза (Ve, Vt) положим Число с{у„ Vt) называется пропускной способностью разреза. Из условия ограничения по пропускной способности следует, что 0 < f{V. -> Vt) < c{V., Vt). Отсюда и из леммы 1 получаем Следствие. Для любого потока f и любого разреза (Va, Vt) справедли- справедливо неравенство \\f\\ < c(Va, Vt). Разрез (Vg, Vt) называется минимальным, если для любого разре- разреза (V;, V*) справедливо c(Va, Vt) < c(Vs% V*). Лемма 2. Если для некоторого потока /* и некоторого разре- разреза (V*,V*) выполняется равенство ||/*|| — c(V*, V*), то поток /* мак- максимален, а разрез (V*, Vt*) минимален. Доказательство. Пусть / — максимальный поток, a (Vs, Vt) — ми- нимальпый разрез. Тогда справедлива следующая цепочка неравенств 11/11 < 11/11 < c(vs, v^ < c(v;, v;).
11.1. Основные понятия и результаты 217 Поскольку крайние члены в этой цепочке неравенств совнадают, она превращается в цепочку равенств, что и завершает доказательство лем- леммы. ? Цепью из v в w в сети G называется чередующаяся последователь- последовательность попарно различных вершин и дуг vq = v, eg, v\, ..., e^-i, v^ = w, в которой дуга ег либо выходит из vr и входит в vr+i, либо, наоборот, выходит из vr+i и входит в vr. В первом случае, когда дуга е,. имеет вид vrvr+i, она пазывается прямой дугой цепи, а во втором — обратной. Отметим, что до этого момента понятие цепи рассматривалось только для неориентированных графов. Здесь мы вводим это попятие для ори- ориентированных графов. Можно сказать, что цепь в орграфе — это то же самое, что простая цепь в неориентированпом графе, если игнорировать ориентацию дуг. Пусть Р — цепь из г; в iu. Для каждой дуги е цепи Р положим hi \ I с(е) ~~ /(е)' если е — прямая дуга, 1 /(е)> если е — обратная дуга. Пусть h(P) - min{h(e) \ee P}. Цепь Р из s в t называется f-дополняющей, если h(P) > 0. Например, (s, ?)-цепь, включающая вершины s, 3, 4, 2, 5, t, является /-дополняющей, для потока / в сети G, изображенного на рис. 85. Причем h(P) — 0, 5, дуга B, 4) является обратной дугой этой цепи, а остальные дуги — нря- мыми дугами. Следующее утверждение является ключевым для построения алго- алгоритма решения задачи о максимальном потоке в сети. Лемма 3. Пусть f — поток в сети G и Р — /-дополняющая (s, г)-цепъ. Тогда в сети G существует поток /* такой, что ||/*|| = = 11/11 + Доказательство. Определим в сети G функцию /*: Е —»• R по фор- формуле !/(е) + h(P), если е е Р, е — прямая дуга, /(е) — h(P), если е S Р, е — обратная дуга, /(е), если е ? Р. Докажем, что функция /* неотрицательна и удовлетворяет услови- условиям 1) и 2) определения потока. Пусть е — прямая дуга цепи Р. Исполь- Используя определения /* и h(P), получим 0 < /(е) < /*(е) = /(е) + h(P) < f(e) + h{e) = f[e) + (c(e) - /(e)) = c(e).
218 11. Задача о максимальном потоке Итак, для прямых дуг цепи Р имеем 0 < /*(е) < с(е). Пусть е — обратная дуга цепи Р. Неравенство /*(е) < с(е) очевидно. Докажем, что /*(е) > 0. Действительно, Г(е) = /(е) - Л(Р) > /(е) - ft(e) = Де) - /(е) = 0. Итак, функция /* удовлетворяет условию 1). Понятно, что условие 2) определения нотока следует проверить лишь для вершин v, входящих в цепь Р. Пусть е\ — дуга в цепи Р, по кото- которой пришли в вершину v, е2 — по которой ушли из v. Каждая из этих дуг может быть как прямой, так и обратной в цепи Р. Следовательно, возможпы четыре различных случая. Рассмотрим случай, когда обе дуги е\ и е2 прямые. Тогда справедли- справедливы равенства /*(«-) = /(«-) + ЦР), f*(v+) = /(«+) + ЦР), так как на обеих дугах е\ и е2 поток увеличивается на одно и то же чис- число h{P). Поскольку для потока / справедливо равенство f(v—) = f{v+), получаем, что /*(«—) = /*(«+). В случае когда дуга е\ — прямая, а дуга е2 — обратная в цепи Р, получаем, что обе эти дуги входят в вершину v. Следовательно, вы- выполняется равенство /*(«—) = /(«—), ибо на дуге ег поток увеличится на h(P), а на дуге е2 уменьшится на /i(P). Поэтому величина входящего в v потока не изменится, как не мепяется и величина выходящего из v потока. Оставшиеся случаи (ei и е2 — обратпые дуги и е\ — обратпая, а е2 — прямая дуга) рассматриваются аналогично. Итак, /* является потоком в сети G. Далее, поскольку цепь Р пачи- нается в вершине s и дуга е2 для вершины s имеет вид sv и может быть только прямой дугой в цепи Р, имеем /*(ег) — /(ег) + h(P). На осталь- остальных дугах, исходящих из s, поток не менялся, отсюда ||/*|| — f*(s+) — = f(8+)+h(P)=\\f\\+h(P). ? На рис. 86 показан поток /*, полученный для потока / в сети G, изображенной на рис. 85, увеличением вдоль /-дополняющей цепи s — 3 — 4 — 2 — 5 — t. Величина потока /* равна 1,5. Объединяет получепные выше результаты Теорема 11.2 (Форд, Фалкерсон. 1956). Для потока f в сети G следующие условия эквивалентны: a) поток / максимален; b) не существует f-дополняющей цепи из s в t; c) существует разрез (Va, Vt), для которого ||/|| = c(Vs, Vj).
11.2. Алгоритм Форда -Фалкерсона 2 1A) /V 1A) 219 0,5A) 0,5A) Рис. Доказательство. Импликации а) => Ь) и с) => а) уже доказаны (леммы 3 и 2 соответственно). Докажем, что Ь) => с). Определим Vs как множество всех вершин v ? V, для каждой из ко- которых существует (s, 1>)-цепь Р такая, что h{P) > 0. Добавим в Vs вер- вершину s и положим Vj = У \ У8. Докажем, что для полученпого разреза выполняется равенство ||/|| = c(Va, Vt). Пусть е = vw и е ? E(Va —>• У). Тогда /(е) = с(е), так как в противном случае условие /(е) < с(е) озна- означало бы, что некоторая (s, г>)-цепь Р, выбранная с условием h(P) > 0, может быть дополнена дугой е и вершиной w до (s, вд)-цепи Q, для кото- которой h(Q) — min(h(P), c(e) - /(е)) > 0. Здесь h(e) — с(е) - /(е), так как е — нрямая дуга в цепи Q. Поскольку w ? Vt, то получаем противоре- противоречие с построением множества Va. Следовательно, выполняется равенство /(V. ->• Vt) = c{V., Vt). Аналогично, для всех дуг е G E(Vt —> Vs) имеем /(е) = 0. Следо- Следовательно, f(Vt —> Vs) = 0. Поскольку (лемма 1) для любого разреза справедливо равенство ||/|| — f(Vs —> Vt) — f(Vt —> У,), для построенного разреза получаем равепство ||/|| = c(Vs, Vt). ? Из теоремы 11.2 и леммы 2 вытекает Следствие. Величина максимального потока в произвольной сети равна пропускной способности минимального разреза. 11.2. Алгоритм Форда —Фалкерсона Этот алгоритм ностроения максимального потока основан на идее, подсказываемой леммой 3. Неформально он может быть изложен следу- следующим образом: 1) положить /(е) = 0 для всех дуг е S Е\ 2) для текущего потока / искать /-дополняющую (s, ?)-цень; 3) если такая цепь Р построена, то для всех прямых дуг е цепи Р положить /(е) :— /(е) + h(P), а для всех обратных — /(е) :— /(е) — h(P) (в результате поток / увеличится) и вернуться на шаг 2; 4) иначе СТОП. (Поток / — максимален в силу теоремы Форда- Фалкерсона.)
220 11. Задача о максимальном потоке М м Рис. 87 Однако здесь возникает существенный вопрос. Закончится ли работа этого алгоритма за конечное число шагов? Оказывается, ответ отрица- отрицателен. Соответствующий нример такой сети привели Форд и Фалкерсон. В этой сети можно так «злоумышленно» нодбирать /-дополняющие цепи, что нроцесс никогда не кончится; более того, величина каждого потока в течение всего времени будет меньше одной четверти величины макси- максимального потока. Кроме того, нри произвольном вы- выборе /-дополняющей цепи количество итераций увеличения потока может не являться функцией от размернос- размерности задачи, т. е. от п и т. В этом мож- можно убедиться на следующем простом примере (рис. 86). Здесь все ду- дуги, кроме дуги A, 2), имеют про- пропускную способность, равную М, где М — достаточно большое целое чис- число, и сA, 2) = 1. Действительно, пусть /о(е) — 0 для всех дуг е. Выберем цепь Р: s — 1 — 2 — t. Тогда h(P) = 1 и поток /i, нолученный увеличением /о вдоль цепи Р, выглядит следующим образом Д(в, 1) = /i(l, 2) = ДB, t) = 1, /i(s, 2) = /хA, t) = 0. На следующем шаге выберем цепь Р: s — 2 — 1 — t, в ней дуга A, 2) является обратной. Снова h{P) = 1, и для нового потока fi получаем /гA, 2) = 0 и /(е) = 1 для всех прочих дуг е. Далее на каждом не- нечетном шаге выбираем цепь s — 1 — 2 — t, а на каждом четном шаге — цепь s — 2 — 1 — t. В результате текущий поток увеличивается каждый раз ровно на единицу. Максимальный поток в этой сети равен 2М, сле- следовательно, понадобится 2М итераций увеличения потока, т. е. число итераций, а вместе с ним и сложность алгоритма, не является функцией размера задачи. Приведенный пример показывает, что необходимо выбирать /-допол- /-дополняющие цепи специальным образом. Оказывается, что если произво- производить увеличение потока вдоль кратчайших по числу дуг /-дополняющих (s, ?)-цепей, то не только можно гарантировать построение максималь- максимального потока, но и оценить сверху число итераций. Распространим понятие /-дополняющей (s, ?)-цепи и на произволь- произвольные (г;, и;)-цепи. Будем говорить, что некоторая (v, то)-цепь Р является f -ненасыщенной, если h{P) > 0, где h{P) = min{/i(e) | e G Р} и величи- величина h{e) для каждой дуги е G Р вычисляется как прежде, а именно, h{e) =
11.2. Алгоритм Форда-Фалкерсона 221 = с(е) — /(е) для прямых дуг и h(e) = /(e) для обратпых. Дуги, для которых выполняются равенства h{P) = h(e), будем пазывать узкими местами цепи Р. Предположим, что алгоритм Форда-Фалкерсона строит последова- последовательность потоков /о, /i, ...,/*,... Обозначим через dk(v,w) длину (т.е. количество дуг) кратчайшей Д-непасыщенной (v, ю)-цепи. Если такой цепи не существует, то полагаем rf^(w, w) — со. Лемма 1. Для всех вершин v и для всех к ? N U {0} выполняются неравенства dk(s, v) < dk+1(s, v), dk(v, t) < dk+1(v, t). Доказательство. Докажем первое неравенство, второе доказывает- доказывается аналогично. Разумеется, имеет смысл рассматривать только случай, когда существует /^..^-ненасыщенная (s, г))-цепь. Пусть Р: s — Vg, в\, «1, ..., er, vr = v — кратчайшая из таких цепей. Докажем требуемое неравепство индукцией по длине г цепи Р. Пусть г = 1, т.е. dk+i(s, v) = 1. Тогда в кратчайшей (s, ^)-цепи есть только одна дуга е — sv, которая является прямой дугой цепи Р. Очевидно, 0 < Д(е) < /t+i(e) < с(е) и, следовательно, цепь Р является и /^.-ненасыщенной. Отсюда d/.(s, v) — = 1 = dk+i(s, v). Пусть неравенство установлено для всех вершин w, для которых дли- длина кратчайшей Д+1-непасыщенной (s, гу)-цепи не превосходит q, и пусть г — q + 1 — длина кратчайшей Д+1-ненасыщенной (s, «)-цепи Р. Заметим, что если для всех дуг в цепи Р выполняется равепство /fc+i(e) = Д(е), то цепь Р является также и Д-ненасыщенпой и пото- потому dj.{s, v) < d^+i(s, v). Пусть теперь е, — дуга цепи Р с наибольшим номером, для которой /j,+i(e,;) ф Д(е,;), т.е. па этой дуге произошло изменение потока. По предположению индукции справедливо неравенство dk(s, «i-i) < dk+i(s, Vi-x) E) Докажем, что подцепь Q цепи Р от Uj_i до vr = v является и Д-ненасы- щенной. Пусть дуга е» является прямой в цепи Р. Тогда Д+Де») < с(е.;). Если дуга е, использована при переходе от потока /j. к потоку fk+\ как прямая, то /fc(ej) < Д+1(е») < с(е). Отсюда следует, что дуга е, может быть использована как прямая в Q. Поскольку на остальных дугах це- цепи Q поток пе мепялся, то Q является и Д-ненасыщенной. Если дуга е.;
222 11. Задача о максимальном потоке использована при переходе от потока fk к потоку fk+\ как обратная, то fk(ei) > 0 и, следовательно, в Q она также может быть использована как обратная, т. е. ив этом случае Q является также и Д-ненасыщенной. Отсюда с учетом перавенства E) получаем требуемый результат. Случай, когда дуга е,; является обратной в цепи Р, рассматривается аналогично. ? Лемма 2. Если все изменения потока в алгоритме Форда - Фалкерсо- на производятся вдоль кратчайших по числу дуг /-дополняющих (s, г)-це- пей, причем к < I и дуга е используется как прямая (соответственно обратная) в цепи, меняющей поток fk на fk+\, и как обратная (прямая) в цепи, меняющей поток /; на /;+i, то dk(s, t) + 2 < dt(s, t). Доказательство. Пусть дуга е имеет вид е — vw. Тогда dk(s, w) = dk(s, v) + l, поскольку е используется как прямая дуга при увеличении fk. Ясно, что вершина и; следует за v в кратчайшей Д-дополняющей (s, ?)-цепи. Далее di(s, t) = di(s, w) + 1 + dt(v, t), так как е используется как обратная дуга при увеличении /;; понятно, что вершина v следует за w в кратчайшей /рдополпяющей (s, t)-qenn. В силу леммы 1 имеем di(s, w) > dk(s, w), di(v, t) > dk(v, t). Простые вычисления ноказывают, что di(s, t) = dt(s, w) + dt(v, t) + 1 > dk(s, w) + dk(v, t) + 1 > > dk(s, v) + dk(v, t) + 2 = dk(s, t) + 2. П Теорема 11.3 (Эдмондс и Карп, 1972). Если на каждой итера- итерации алгоритма Форда - Фалкерсона выбирать кратчайшую по числу дуг f -дополняющую (s, 1)-цепъ, то построение максимального потока требу- требует не более чем т(п + 2)/2 итераций. Доказательство. Заметим, что каждая /-дополняющая (s, ?)-цепь содержит хотя бы одну дугу, являющуюся ее узким местом. Оценим, сколько раз каждая дуга может оказаться узким местом.
11.2. Алгоритм Форда -Фалкерсона 223 Пусть е = vw — произвольная дуга сети и Д15 Д2,... (fei < ki < ...) — последовательность потоков такая, что дуга е используется как прямая дуга при увеличепии Д и является узким местом в этот момент. Ясно, что тогда существует последовательность индексов /j, I2, ... такая, что k\ < h < ki < li..., и дуга е используется как обратная при увеличении потока Д.. По лемме 2 имеем <М«, <) + 2 < d,,(e, t), dh{s, t)+2< dki+1(s, t). Отсюда d/ll(s, t)+4(i — 1) < D.(s, ?) для всех i. Кроме того, dkt{s, t) < га—1 и dkl (s, i) > 1. Поэтому 1 + 4(i - 1) < n - 1, т. е. i < (n + 2)/4. Таким образом, произвольная дуга е может быть узким местом в прямом направлепии пе более чем (п + 2)/4 раз. Аналогично, опа может быть узким местом в обратном направлении не более чем (п + 2)/4 раз. Поэтому каждая дуга сети может являться узким местом не более чем (п + 2)/2 раз. Следовательно, общее число увеличепии потока, равное числу итераций, не превосходит т(п + 2)/2. ? Перейдем к формальному описапию алгоритма Форда-Фалкерсона, в котором ищутся кратчайшие по числу дуг /-дополняющие (s, ?)-цепи. Метод, необходимый для построения именно кратчайшей /-дополняющей (s, ?)-цепи, нами уже разработан: это поиск в ширину. Разумеется, в стандартную схему поиска в ширину необходимо внести изменепия, обу- обусловленные спецификой данпой задачи. Поскольку ищется некоторая (s, ?)-цепь, то дерево поиска должно иметь в качестве корневой вершины источник s. Естественно считать, что дерево ноиска содержит только те вершины сети G, через кото- которые может проходить та или иная /-дополняющая цепь. Такие вер- шипы будем считать помеченными. Осталось сформулировать прави- правила помечивания. Введем массив h[v]. Будем считать, что h[v] = 00, если вершина v не помечена. Как только вершина v становится поме- помеченной, то h[v] < сю. Более того, это будет означать, что существует /-ненасыщенная (s, и)-цепь Р, для которой 0 < h(P) = h[v]. Вершина, из которой помечена вершина v, будет обозначаться через Previous[v\. При каких условиях из уже помеченной вершины w можно поме- пометить вершину v? Это зависит от типа дуги, соединяющей и и в (в сети могут одновременно присутствовать как дуга wv, так и дуга vw). Пусть дуга wv e E. Пометить v из w можно, если выполняется условие c(w, v) — f(w, v) > 0. В таком случае переход от w к v совершается по прямой дуге и метка вершины v определяется но формуле h[v] = min(h[w\, c(w, v) — f(w, v)).
224 11. Задача о максимальном потоке Если в сети имеется дуга вида vw, т.е. обратная дуга, то помечи- вание возможно, если /(«, w) > 0. В этом случае метка вершины v определяется равенством h[v] = min(/j[w], f(v, го)). Если в сети имеются обе дуги vw, wv и возможно помечивание с использованием как той, так и другой дуги, то используем любую из них. Для того, чтобы различать, с помощью какой именно дуги, пря- прямой или обратной, помечена вершина v, введем массив choice[v], счи- считая choice[v] — 1, если вершина v помечена с помощью прямой дуги, и choice[v] = —1, если v помечепа с помощью обратной дуги. Если в процессе поиска достигнут сток t, то поиск заканчивается и по меткам Previous легко строится /-дополняющая (s, ?)-цепь. Если же поиск закончился, а сток t не достигнут, то /-дополняющей (s, ?)-цепи не существует. При формальном описании алгоритма будем предполагать, что сеть G = (V, Е, с) задана матрицей пропускных способностей, где A[v, w] = = c(v, w) и A[v, w] = 0, если дуга vw в сети G отсутствует, а поток / — матрицей F[v, w], где F[v, w] = f(v, го). Просмотреть все вершипы, смежные с вершиной го можно так: просмотр строки с номером w в матрице А означает просмотр всех дуг, исходящих из w, а просмотр столбца с номером w — всех дуг, входящих в w. Опишем вначале процедуру помечивания вершин в сети G. Эта проце- процедура является модифицированной версией процедуры поиска в ширину. В ней через Q обозначена очередь, в которую заносятся помеченные вер- вершины. 1. procedure Labeling(f); 2. begin 3. for v ?V do do h[v] := oo; 4. Q := nil; Q <S= s; Previous[s] := nil; 5. while (h[i\ = oo) and (Q ф nil) do 6. begin 7. w^Q 8. for v ? V do 9. if (h[v] := oo) and {A[w, v] - F[w, v] > 0) 10. then begin 11. h[v] := min(/i[w], A[w, v] — F[w, v]); 12. Previous[v] :— w; Q <= v; choice[v] :— 1; 13. end; 14. for v ? V \ {s} do 15. if (h[v\ := oo) and (F[w, v] > 0)
11.2. Алгоритм Форда -Фалкерсона 225 v; 16. 17. 18. 19. 20. 21. end end; then begin h[v] := min(/i[w], F[w, v father[v\ := w; choice[v end; ]);Q В этой процедуре в основном цикле 5-20 осуществляется поиск в ширину по описанным выше правилам. В цикле 8-13 осуществляется помечивание по прямым дугам, в цикле 14-19 — по обратным. По- Понятно, что сложность процедуры Labeling(f) определяется сложностью поиска в ширину, т.е. равна О(п2). Пусть по завершению этой проце- процедуры h[t] < оо. В соответствии с правилами помечивания это означает, что существует /-дополняющая (s, ?)-цепь Р, для которой h(P) = h[t], и, следовательно, текущий поток может быть увеличен на величину h[t]. Саму /-дополняющую цепь легко построить с помощью меток Previous. Одновременно с ностроением цепи можно увеличить текущий поток /. Детали приведены в алгоритме 11.1. Обращаем внимание читателя па то, что при каждом новом вызове процедуры Labeling все старые метки, расставленпые при предыдущем вызове этой же нроцедуры, исчезают. Алгоритм 11.1 (Форд, Фалкерсон). Вход: сеть G = (У, Е, с), заданная матрицей пропускных способностей А[\ ...п, 1... п], источник s, сток t. Выход: максимальный поток /, заданный матрицей F порядка п, для которой F[v, w] = f(v, w), 11/11 — величина максимального потока. 1. begin 2. for v e V do 3. for w € V do 4. F[v,w]:-0; 5- 11/11 :=0; 6. repeat 7. Labeling(f); 8. if h[t] < oc then 9. begin 10. H/ll := H/ll + h[t];v:=t; 11. while v ф s do 12. begin 13. w := Previous[v\; 14. if choice[v\ = 1 15. then F[w, v] := F[w, v] + h[t]
226 11. Задача о максимальном потоке 16. 17. 18. 19. 20. 21. else F[v, w] v := w end end until h[t] = oo; end. := F[v, w] - h[t]; Теорема 11.4. Алгоритм 11.1 имеет сложность О(п5). Доказательство. Действительно, основной цикл в строках 6-20 по теореме 11.3 проработает не более т{п + 2)/2 = п2(п + 2)/2 = О(п3) раз. Каждый проход цикла 6-20 содержит вызов процедуры Labeling, сложность которой такая же, как и поиска в ширину в графе, заданном матрицей смежпостей, т.е. 0{п2). Отсюда получаем, что алгоритм 11.1 имеет сложность О(п5). ? Заметим, что если сеть G — (V, Е, с) задана списками смеж- ностей usf[w] и list[v\, то, внося очевидные изменения в процедуру Labeling(f), легко получить алгоритм сложности 0(т2п), что иногда лучше, чем О(п5). Для иллюстрации работы алгоритма 11.1 вновь рассмотрим сеть, из- изображенную ранее на рис. 85. Будем считать, что вершины просматри- просматриваются в порядке возрастания номеров. После первого вызова процедуры Labeling(f) будет найдена /-допол- /-дополняющая цепь s — 2 — 4 — t, ибо вершина 2 была помечена раньше, чем вершина 3, а потому вершина 4 будет номечена из вершины 2. Ясно, что h[t\ = 1. Следовательно, новый поток / будет таким: /(s, 2) = — /B, 4) — /D, t) — 1 и /(е) — 0 для всех прочих дуг е сети G. Второе обращение к процедуре Labeling(f) определит /-дополняющую цепь s — 3 — 4 — 2 — 5 — t, h[t] = 1. Для этой цепи дуга B, 4) является обратной. Новый поток становится таким: /B, 4) = 0 и /(е) = 1 на всех остальных дугах. Понятно, что следующий вызов процедуры Labeling(f) не паходит /-дополпяющей (s, ?)-цепи. Поток, полученный па второй ите- итерации, является максимальным. В заключение отметим очевидное, но важпое свойство алгоритма Фор- Форда - Фалкерсона. Теорема 11.5. Если пропускные способности всех дуг являются це- целыми числами, то как максимальный поток, так и все промежуточные потоки в алгоритме Форда - Фалкерсона, являются целочисленными. Заметим также, что в настоящее время известны алгоритмы постро- построения максимального потока, имеющие мепьшую вычислительную слож- сложность, чем алгоритм Форда-Фалкерсона. Один из них — алгоритм Мал- хотры, Кумара и Махешвари сложности О(п3) подробно разобрап в [34].
12. Паросочетания в двудольных графах 12.1. Основные понятия Паросочетанием в графе называется произвольное множество его ре- ребер такое, что каждая вершина графа инцидентна не более чем одному ребру из этого множества. Рассматривая различные задачи о паросоче- таниях, мы ограничимся случаем двудольных графов. Для решения ана- аналогичных задач в произвольных графах используются те же идеи, что и в случае двудольных, только существенно усложняется их реализация. Напомним, что граф G — (V, Е) называется двудольным, если множес- множество его вершин V можно разбить на ненересекающиеся множества X и Y такие, что каждое ребро е ? Е имеет вид е = ху, где х G X и у G Y. Дву- Двудольный граф будем обозначать либо (X, Е, Y), если граф не является взвешенным, либо (X, Е, с, Y), если ребрам е G Е приписаны веса с(е). Всюду в дальнейшем, говоря о двудольном графе, мы предполагаем, что разбиение множества V на подмножества X и Y зафиксировано. Самые разные практические задачи связаны с ностроением тех или иных паросочетаний в двудольных графах. Разберем несколько нриме- ров. 1. Пусть имеется п рабочих, каждый из которых может выполнить один или несколько из т видов работ. При этом каждый из видов ра- работ должен быть выполнен одним рабочим. Требуется так распределить работы среди рабочих, чтобы наибольшее количество работ было выпол- выполнено. 2. Пусть в предыдущей задаче число рабочих п равно числу работ т. Спрашивается, можно ли так распределить работы между рабочими, что- чтобы были выполнены все виды работ? 3. Пусть сверх условий второй задачи для каждой пары рабочий- работа известна стоимость с(ж, у) вынолнения рабочим х работы у. Тре- Требуется так подобрать каждому рабочему определенный вид работы, что- чтобы суммарная стоимость выполнения всех работ была минимальна. Математическая модель всех приведенных выше задач строится оче- очевидным образом. Онределим двудольный граф G = (X, Е, Y), в котором в качестве X выберем множество рабочих, а в качестве Y — множес- множество работ. Множество ребер Е этого графа определим как множество всех нар (х, у) таких, что рабочий х может выполнить работу у. Пусть М С Е — наросочетание в построенном графе G. Тогда каждое ребро е = ху G М можно интерпретировать как назначение рабочему х рабо- работы у. Действительно, по определению паросочетания никакие два ребра из М не могут иметь общих вершин, следовательно, на каждую работу
228 12. Паросочетания в двудольных графах назначается не более одного рабочего, и каждый рабочий получает не более одной работы. В этой модели первая из рассмотренных задач означает, что в графе требуется пайти паросочетапие с наибольшим количеством ребер. Вто- Вторая — выяснить, существует или нет паросочетание, состоящее из п ре- ребер. И, накопец, в третьей задаче требуется найти паросочетание из п ребер с минимальным суммарным весом его ребер. В этой главе будут рассмотрепы все три типа приведенпых здесь за- задач. Введем необходимую терминологию. Пусть М — паросочетание в графе G — (X, Е, Y). Говорят, что М сочетает х с у и у с х, ес- если ху ? М. Вершины, не принадлежащие ни одному ребру паросочета- паросочетания, называются свободными относительно М или просто свободными, а все прочие — насыщенными в М или просто насыщенными. Таким образом, для каждой насыщенной в М вершины х существует у такое, что М сочетает х с у. Удобно также ребра, входящие в паросочетание М называть М-темными или просто темными ребрами, а все прочие — М-светлыми или светлыми ребрами. Паросочетание, содержащее наибольшее число ребер, называется наи- наибольшим. Паросочетание, не содержащееся ни в каком другом паросоче- паросочетании, называется максимальным. Ипаче говоря, максимальным назы- называется паросочетание, максимальное по включепию. Необходимо разли- различать эти два попятия. Попятно, что каждое наибольшее паросочетание является максимальным, по обратное неверно. Предлагаем читателю са- самому построить соответствующий пример. 12.2. Задача о наибольшем паросочетании. Алгоритм Хопкрофта-Карпа Задача о наибольшем паросочетании состоит в следующем: в задап- ном двудольном графе найти наибольшее паросочетание. Оказывается, что эту задачу можно свести к задаче построения мак- максимального потока в некоторой сети. Пусть G = (X, Е, Y) — произвольный двудольный граф и s, t ^ X U Y. Построим сеть G* — (V*, Е*, с) с источником s и стоком t. В качестве множества вершин сети G* возьмем множество V* = X U Y U {s} U {t}. А мпожество дуг Е* определим следующим образом. Каждое ребро е=ху из Е, где х ? X и у ? Y, превращаем в дугу ху, исходящую из а; и вхо- входящую в у. Добавим к полученному множеству все дуги вида sx, yt, где х ? X и у ? Y. Полученное в результате множество и есть множество дуг Е* сети G*. Пронускную способность каждой дуги положим равной едипице. На рис. 88 показаны граф G и соответствующая ему сеть G*.
12.2. Задача о наибольшем паросочетании 229 Заметим, что если / — целочисленный ноток в сети G*, то /(е) = О или /(е) = 1 для любой дуги е G Е. Кроме того, по теореме 11.5 среди таких 0-1-потоков существует максимальный поток. Оказывается, что каждому наросочетанию в графе G однозначно соответствует некоторый 0-1-поток в сети G*. Пусть V — множество всех паросочетании в гра- графе G, а Т — множество всех 0-1-потоков в сети G*. Теорема 12.1. Существует взаимно-однозначное отображение ф мно- множества V на множество Т, причем \М\ = \\ф(М)\\ для любого паросоче- тания М. (Напомним, что через ||</>(М)|| обозначается величипа потока ф(М).) Доказательство. Для произвольного паросочетания М в графе G определим поток fM = Ф(М) в сети G* по формулам /м(*5 х) = fu{x, у) = — /м(у, t) — 1 для любого ребра ху € М и /м(е) — 0 для остальных дуг е 6 Е* (соответствующий пример нриведен на рис. 88). Докажем, что /м — ноток в сети G*. Поскольку 0 < /м(е) < 1, условие ограничения по пропускной способ- способности дуг выполняется. Остается проверить условие сохранения потока в вершинах. Пусть х — пасыщенная вершина из X в паросочетании М. Тогда fnd(s, х) — 1 и, следовательно, /м(х—) — 1, т.е. ноток втекающий в вершину х равен 1. Поскольку вершина х насыщена в М, то существует ровно одно ребро ху G М, инцидентное х. Для этого ребра /м(ж, у) = 1 на соответствующей дуге ху. Все остальные ребра графа, инцидентные вер- шипе ж, являются светлыми, т. е. не входят в паросочетание М. Поэтому /м(е) — 0 для всех соответствующих дуг. Следовательно, /м(х+) — 1. Тем самым равенство /м{х—) — /м(х+) выполняется для насыщенных вершин. Если же х не насыщена, т.е. х — свободная вершина, то как входящий в ж, так и выходящий из х потоки равны нулю. Следовательно, условие сохранения потока в вершинах, лежащих в X, выполняется. Для вершин у ?У это условие проверяется аналогично. Далее, поскольку количество насыщенных в М вершин х G X в точ- точности равно \М\, то /м(*+) = \М\, т. е. ||</>(М)|| = \М\. Легко видеть, что разным паросочетапиям соответствуют разные нотоки. Следовательно, отображение ф: V —> Т, определенное равенством ф(М) = fM, инъек- тивно. Обратно, пусть / — 0-1-ноток в сети G*. Положим М/ — {ху \ f(x, у) — = 1, х G X, у ? Y}. Поскольку в каждую вершину х € X входит ровно одна дуга (это дуга вида sx), то имеется не более одной дуги вида ху, для которой /(ж, у) = 1. Следовательно, каждая вершина х G X инцидентна
230 12. Паросочетания в двудольных графах не более чем одному ребру из Mf. Аналогично, каждая вершина у G Y инцидентна не более чем одному ребру из Mf. Отсюда следует, что Mf является паросочетанием в графе G. Легко видеть, что для паросочета- паросочетания Mf справедливы равенства \Mf\ — \\f\\ и 0(Mf) — /, что завершает доказательство теоремы. ? На рис. 88 изображены двудольный граф G, сеть G* паросочетание М — {ж12/2, Ж22/3} и соответствующий ему поток /м- Рис. 88 Пусть / — произвольный 0-1-поток в сети G* и Р — /-дополняющая (s, ?)-цепь. Тогда цепь Р содержит нечетное количество дуг. Удалим из этой цепи первую дугу, а она обязательпо имеет вид sx, где х ? X, и последнюю дугу вида yt, где у G Y. Оставшиеся в цепи Р дуги че- чередуются следующим образом: первой идет дуга вида ху, для которой f{x, у) — 0, поскольку эта дуга прямая в цепи, второй — дуга вида Х\у, причем эта дуга является обратной в цепи Р и потому /(жь у) = 1; за- затем снова прямая дуга, потом обратная и т. д. Увеличение потока вдоль этой цепи по правилам, указанным в лемме 3 из разд. 11.1, приводит к тому, что новый поток становится равным единице на всех нечетных (т. е. прямых) дугах цепи Р, и равным пулю на всех четных (т. е. обрат- обратных) дугах цепи Р. Величина потока при этом возрастает на едипицу. Понятие /-дополняющей цепи для потока / в сети G* естественным обра- образом соответствует понятию М-чередующейся цепи для паросочетапия М в графе G. Пусть М — паросочетание в графе G. М-чередующейся цепью назы- называется такая последовательность вершин и ребер вида жо, жо?/1, у\, У\Х2, жг, .. ¦, xjt, ж*2/*+ъ Ук+i, где к > 0, что все вершипы этой цепи различны, жо и yk+i — свободные, а все остальные вершины насыщенные в паро- сочетании М, причем каждое второе ребро принадлежит М (т. е. ребра вида у{Х{+1, i = 1, ..., к — 1 входят в М), а остальные ребра в М не вхо- входят. Иначе говоря, в М-чередующейся цепи цвета ребер чередуются по правилу светлое — темное и наоборот, причем первое и последнее ребра
12.2. Задача о наибольшем паросочетании 231 являются светлыми. Ясно, что чередующаяся цепь однозначно онреде- ляется как последовательностью ее вершин, так и последовательностью ее ребер. Например, для паросочетания М, изображенного на рис. 88 а), М-чередующуюся цепь можно задать носледовательностью вершин Хз, 2/3; Х2, Уч, xi, у\. Эта цень содержит два темных ребра и три светлых. Соответствующая /-дополпяющая цепь в сети G*, где / = fM, задается последовательностью вершин s, Ж3, г/з, Х2, уг-, %i, Ух-, t- В этой цепи дуги х2уз и Х\уг являются обратпыми, а остальные дуги — прямыми. Увеличению потока вдоль /-дополняющей цепи соответствует увели- увеличение количества ребер в наросочетании М вдоль М-чередующейся це- цепи. Для этого в М-чередующейся цепи нечетные ребра, не входившие в М, объявляются элементами М, а все четпые, входившие в М, из М удаляются. Иначе говоря, все темные ребра становятся светлыми, а все светлые — темпыми. Такая операция приводит к увеличению количест- количества ребер в паросочетании на единицу. Например, паросочетание М из рис. 88о) замепится на паросочетапие {жз«/з, a?22/2, x\Vi}- Напомним, что симметрическая разпость двух мпожеств М и Р онре- деляется следующим образом: М 0 Р = (М \ Р) U (Р \ М). Процесс получения нового паросочетания М\ из паросочетания М с по- помощью М-чередующейся цепи Р можно выразить равенством Mi = М © Р (здесь и далее под М-чередующейся цепью попимается последователь- последовательность ребер). Для паросочетания Mi справедливо равенство \М\ = = \М\ + 1, поскольку в цепи Р светлых ребер на одно больше чем тем- темных. Из нриведенных рассуждений и теоремы 11.2 вытекает следующий классический результат. Теорема 12.2 (Берж, 1957). Паросочетание М в двудольном гра- графе G является наибольшим тогда и только тогда, когда в G не сущест- существует М-чередующейся цепи. Ради полпоты изложения приведем здесь прямое доказательство этой теоремы, не опирающееся на теорему Форда-Фалкерсона. Доказательство. Очевидно, если М — наибольшее паросочетание, то в графе G = [X, Е, Y) не существует М-чередующейся цепи. Докажем обратное утверждение. Предположим, что для паросочета- паросочетания М не существует М-чередующейся цепи. Рассмотрим произвольное
232 12. Паросочетания в двудольных графах паросочетание N и убедимся, что \N\ < \M\. Заметим, что в графе f?i = (X, TV UM, Y) степепь каждой вершины не превосходит двух. Сле- Следовательно, каждая компонента связности графа Gi может быть одпого из следующих типов: 1) изолированная вершина; 2) цепь четной длины; 3) цепь нечетной длины; 4) цикл. В случаях 1, 2 и 4 компонента связности содержит одинаковое число ребер из М и N. Если компонента связности — цепь печетной дли- длины (случай 3), то она является либо М-чередующейся, либо iV-чередую- щейся цепью. По предположению, М-чередующихся цепей в графе нет, следовательно, могут быть только ^-чередующиеся цепи. Но в каждой из этих цепей ребер из М на одно больше, чем ребер из N. Отсюда \N\ < \М\, т.е. М — наибольшее паросочетание. ? Теорема Бержа подсказывает следующий алгоритм построепия наи- наибольшего паросочетапия: 1) пустое паросочетание М объявить текущим паросочетанием; 2) искать М-чередующуюся цепь; 3) если такая цепь Р найдена, то положить М = М ф Р и вернуться на шаг 2; 4) иначе СТОП (текущее паросочетание М является наибольшим). Внимательный читатель, копечно, заметил, что предложенный алго- алгоритм, по сути дела, является легкой модификацией алгоритма Форда- Фалкерсона. Отметим также, что поскольку каждый раз текущее паро- паросочетание увеличивается ровно на единицу, то алгоритм завершит работу после не более чем п итераций, где n = min(|X|, \Y\) (здесь использован тот факт, что наибольшее паросочетание содержит не более чем п ребер). Разберем подробнее процесс поиска М-чередующейся цепи. Здесь можно использовать любую схему поиска в ширину или в глубину. Чуть удобнее поиск в ширину. Сформулируем правила поиска в ширину в виде «волнового» алгоритма. В нулевой фронт распространения волны включаем все М-свободные вершины х ? X. Пусть фронт с номером к построен. Если к четно, то во фронт к + 1 включаем все вершипы у G Y, пе содержащиеся пи в каком из предыду- предыдущих фроптов, которые можпо пометить из вершин предыдущего фронта с помощью светлых ребер. Если к нечетно, то во фронт к + 1 включаем вершины х ? X, не содержащиеся ни в каком из предыдущих фронтов, которые можно пометить с помощью темпых ребер из вершин предыду- предыдущего фронта.
12.2. Задача о наибольшем паросочетании 233 Поиск завершается, как только будет помечена свободпая верши- вершина у ? Y или очередной фронт окажется пустым. В первом случае окоп- чания поиска М-чередующаяся цепь существует, она легко может быть ностроепа с помощью стандартных меток Previous. Во втором случае М-чередующейся цепи в графе не существует и, следовательно, текущее паросочетание М является наибольшим. Теорема 12.3. Модифицированный алгоритм Форда - Фалкерсона по- построения наибольшего паросочетания в двудольном графе G = (X, Е, Y) имеет сложность O{jpqn), где р — \Х\, q — \Y\, n — min(p, q) и граф G представлен матрицей А[1.. .р, 1... q]. (Заметим, что матрица А является подматрицей матрицы смежности двудольного графа G.) Доказательство. Выше уже отмечалось, что процесс завершится не более чем носле п итераций. Сложность каждой итерации есть O(pq). Поэтому модифицированный алгоритм Форда-Фалкерсона для построе- построения наибольшего паросочетания имеет сложность O(pqn). ? Отметим, что в частном случае, когда п — \Х\ — \Y\, модифициро- модифицированный алгоритм Форда-Фалкерсопа имеет сложность О(п3). В 1973 году Хопкрофт и Карп предложили более эффективный алго- алгоритм построения наибольшего паросочетания в двудольном графе. Пусть М — паросочетание в графе G = (X, Е, Y). Цепь Р назовем М-цепью, если она начинается в свободпой вершине х ? X, имеет не- нечетную длину и цвета ребер чередуются по правилу светлое-темное и наоборот. Иначе говоря, М-цепь — это почти М-чередующаяся цепь; отличие состоит лишь в том, что М-цепь может заканчиваться в М-на- сыщепной вершине у ? Y. Понятно, что каждая М-чередующаяся цепь является М-ценью, но обратное утверждение неверпо. Пусть г — длина кратчайшей М-чередующейся цепи. Через G{M) обозначим граф кратчайших М-цепей; по определению этот граф состо- состоит из всех вершин и ребер таких, что каждое ребро и каждая вершина входят в некоторую М-цень длины г. Общую схему алгоритма Хопкрофта и Карпа построения наибольшего паросочетания можно описать следующим образом: 1) начать с произвольного паросочетания М в графе G; 2) ностроить граф G(M) кратчайших М-цепей; 3) построить максимальное по включению множество {Pi, ..., Р^} вершинно-непересекающихся М-чередующихся цепей в G(M). Увели- Увеличить паросочетание М вдоль всех цепей из построенного множества по формулам Mi = М © Рь М2 = Mi ф Р2, ¦ ¦ •, Mk = Mj._i ф Рк,
234 12. Паросочетания в двудольных графах Объявить паросочетание М/, текущим, т.е. М := М&. (Заметим, что Мк = М © Pj © ... © Рк и \Мк\ = \М\ + к). 4) повторять шаги 2 и 3 до тех пор, пока в сети G существует хотя бы одна М-чередующаяся цепь. Если такой цепи не существует, то текущее паросочетапие М является паибольшим (теорема 12.2). Перейдем к формальному описанию алгоритма Хопкрофта-Карпа. Двудольный граф G — (X, Е, У) будем задавать матрицей А разме- размера pq, где р = \Х\, q = \Y\, в которой А[х, у] = 1, если ребро ху имеется в графе, и А[х, у] — О, если такого ребра в графе нет. Паросочетапие М в графе G можно онисать с помощью двух массивов Xdouble длины р и Ydouble длины q, считая, что Xdouble[x] — у, если х сочетается с у, и Xdouble[x] = nil, если вершина х свободна. Аналогич- Аналогично определяется массив Ydouble. Таким образом, пустое паросочетание задается равенствами Xdouble[x] = Ydouble[y] = nil для всех ж G X ny?Y. Вспомогательный граф G(M) кратчайших М-цепей несложно постро- построить, используя поиск в ширину. Напомпим, что каждая М-цепь на- начинается в свободной вершине ж G X, поэтому во вспомогательный граф G{M) следует отнести все свободные вершины ж G X и начать поиск с них. Поскольку пас иптересуют чередующиеся цени, пужно раз- различать шаги от X к Y и от Y к X. В первом случае переход осуществляется по светлым ребрам (т. е. по ребрам, пе входящим в М), а во втором случае но темным ребрам (т. е. но ребрам из М). Причем, если в первом случае, находясь в вершине х G X, следует отнести в G(M) все вершины, смежные с ж, и все ребра, ин- цидентпые х, то во втором — выбор вершины и ребра однозначен: из вершины у G Y можпо шагпуть только в вершину х = Ydouble[y], ис- нользуя ребро ху, которое входит в М. При этом вершину х и ребро ху следует добавить к G(M). Процесс поиска завершается либо полным по- построением того фропта, в котором в первый раз встретится свободная вершина у ? У, либо тогда, когда в граф G(M) нельзя отнести ни одной новой вершины и ни одного нового ребра, но свободных вершин у ? Y достичь не удалось. Последний случай означает, что М-чередующихся цепей в графе G не существует. Через DX U DY, где DX С X и BY С У, будем обозначать мно- множество вершин графа G(M). Множество ребер этого графа описывается матрицей DA размера pq, где р = \Х\, q = \Y\. При этом лишние строки и столбцы матрицы DA, соответствующие элементам х ? X и у ? У, не попавшим в DX и DY, будут игнорироваться. Построение вспомогательного графа G(M) представлено процедурой Graph(M). В ней используются две очереди. В очереди Qi хранится но-
12.2. Задача о наибольшем паросочетании 235 следний построенный фронт, а в очереди Q% накапливаются вершины но- нового строящегося фронта. При этом в очередной фронт распространения волны относятся лишь вершипы из множества X, ибо переход от У к X однозначен, т. е. за один шаг строим сразу два фронта. Все достигнутые свободные вершины у ? У заносятся в Уfree. Через Xfree обозначается множество всех свободных вершин х ? X. Через front[v], v ? X U У, обозначается номер фронта, в который попадает вершина v, при этом для всех неномещенных еще в какой-либо фронт вершин (в традицион- традиционной терминологии непомеченных) выполняется равенство front[v] — oo. 1. procedure Graph(M) 2. begin 3. DX := DY := 0; 4. for x ? X do 5. for у ? Y do DA[x, y] := 0; 6. for v ? X U Y do front[v] := oo; 7. Qi := Q2 := Xfree := Yfree := nil; 8. for x ? X do 9. if Xdouble[x] = nil then 10. begin 11. Q2 <= x; Xfree <= x; 12. DX := DX U {x}; front[x] := 0; 13. end; 14. repeat 15. Q\ := Q2; <Эг := nil; 16. while Qi ф nil do 17. begin 18. x <= Qi; 19. for у ? У do 20. if (A[x, y] - 1) and (front[x] < front[y]) 21. then 22. begin 23. DA[x, y] := 1; 24. if /roni[?/] = oo then 25. begin 26. DY:=DYU{2/};z:=Ydoub/e[2/]; 27. front[y] := front[x] + 1; 28. if z ^ ш/ then 29. begin 30. DA[z,y]:=l;DX :=DXUz; 31. /гопф] := front[y\ + 1; Q2 ^= г; 32. end
236 12. Паросочетания в двудольных графах 33. 34. 35. 36. 37. 38. else Yfree •$= у; end end end until {Yfree ф nil) or (Q2 = nil); end. Прокомментируем работу процедуры Graph(M). В строках 3-5 ини- инициализируется пустой граф G(M). Цикл 8-12 означает, что все свобод- свободные вершины х ? X включаются в граф G(M), и поиск в ширину на- начинается с них. В строке 15 инициализируется последний построенный фронт. В строке 16 начинается основной цикл поиска в ширину. При этом последний построенный фронт используется полностью. В цикле 19-35 анализируются все у € У, смежные с очередной вершиной х G X и удов- удовлетворяющие условию front[x] < front[y]. Здесь возможны лишь два случая. В первом случае front[y] = ос. Это означает, что вершина у ранее не посещалась, второй — front[y] = front[x] + 1, т.е. вершина у уже поме- помечена, но из вершины того же последнего построенного фронта. В этом случае в граф G(M) нужно лишь добавить одно ребро ху (строка 23). Выполнение условия в строке 28 означает, что вершина у насыщепа в паросочетании М. В этом случае вершина z = Ydouble[y] и ребро zy включаются в граф G(M), причем z включается и в новый фронт (стро- (строка 31). В противном случае вершина у является свободной и заносит- заносится в Yfree. В строке 37 даны условия прекращения поиска. Случай Yfree ф 0 свидетельствует, что найдена хотя бы одпа свободная верши- вершина у и, следовательно, в исходном графе существует М-чередующаяся цепь. Поиск на этом прекращается и в граф G(M), благодаря свойствам поиска в ширину, попадут все кратчайшие М-цепи. Разберем теперь метод построения максимального по включению множества вершинно-непересекающихся М-чередующихся цепей и уве- увеличения текущего паросочетапия М с помощью ностроенпого множес- множества. Сделать это можно следующим образом. Выберем произвольную вершину х ? Xfree. Проведем поиск в глубину с корнем в х, помечая вершины по тем же правилам, которые использовались при построении графа G(M), и продвигаясь из вершины iGlno светлым ребрам, а из вершин у G У — по темным. Помеченные в ходе поиска вершины поме- помещаются в стек S. Поиск в глубину из вершины х завершается либо по достижению свободной вершины у ? Yfree (в этом случае существует искомая цепь, начинающаяся в ж и заканчивающаяся в у), либо тогда, когда S = nil. Пустота стека S означает, что в G(M) не существует
12.2. Задача о наибольшем паросочетании 237 М-чередующейся цепи, начинающейся в вершине х. Если искомая цепь существует, то после завершения поиска в S первая и последняя верши- вершины свободны относительно М, а все промежуточные вершины насыщены в М. Отметим, что вершины чередуются — сначала вершина из DX, за- затем из DY и т. д. Увеличить паросочетание М с помощью пайденной цепи очепь прос- просто: считываем попарно вершины из стека S (первой считается у ? Y) и корректируем значения массивов Xdouble и Ydouble. При этом у первой и последней из считанных вершин у их значения Ydouble[y] и Xdouble[x], равпые nil, нолучат значения соответствующих соседних вершин из S, а у всех прочих произойдет смена значений массивов Ydouble и Xdouble с одних вершин на другие. Считывая вершины из S, мы одновременно удаляем их из графа G(M). В результате при построении следующей М-чередующейся цепи вновь найденная цепь не пересекается с прежде построенными цепями по вершинам. Процесс построения цепей ведется до полного исчерпания одного из списков Xfree или Yfree, чем обеспе- обеспечивается максимальпость по включению построепного множества М-че- редующихся цепей. Детали описанного процесса представлены в процедуре Increase(M). В ней без формального описапия используется функция Choice(x), кото- которая возвращает непомеченную в ходе поиска вершину у G DY, смежпую с х, если такая существует, и Ghoice(x) = nil, если все вершины из DY, смежные с х, уже помечены. Переменная indication сигнализирует о том, достигнута ли свободная вершипа у ? DY, т. е. indication = 0, если свободная вершина еще не достигнута, и indication — 1, если достигнута. 1. procedure Increase(M); 2. begin 3. while (Xfree ф 0) and (Yfree ф 0) do 4. begin 5. x <= Xfree; Xfree := Xfree \ {x}; 6. S := nil; S <= x; indication := 0; 7. while (S ф nil) and (indication = 0) do 8. begin 9. x <= S; у := Choiee(x); 10. if у ф nil then 11. begin 12. S ^y; z:= Ydouble[y]; 13. if z ф nil then S <= z; 14. else 15. begin 16. indication := 1; Yfree := Yfree \ {«/};
238 12. Паросочетания в двудольных графах 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. end end else begin x^=S;DX := DX \ {x}; if S ф 0 then begin y^S; DY:=DY\{y}; end end end; if indication = 1 then while 5 ф nil do begin y^S; DY:=DY\{y}; x^S;DX:=DX\{x}; Xdouble[x\ := y; Ydouble[y] := x; end end end: Структура этой процедуры следующая. Основной цикл 3-35 ведет- ведется до полного опустошения одпого из списков свободных в X или в Y вершин. Каждый проход этого цикла начинается с выбора произволь- произвольного элемента х из Xfree и последующего поиска в глубину с корнем в х (строки 6-27). Важпо отметить, что если текущая вершина х име- имеет непомечепную насыщенную смежпую с ней вершину у, то в стек S помещаются сразу две вершипы: спачала у, затем z — Ydouble[y] (стро- (строки 9-13). Можно сказать, что промежуточные вершины в ходе поиска помещаются в S парами. Именно этим обстоятельством объясняются действия в строках 20-25. Если вершины помещали в стек S парами, то и удалять их оттуда на- надо парами (кроме самой первой). В строках 20-25 сначала удаляется из S и из графа вершипа ж, все соседи которой уже посещались, а за- затем, если х не первой попала в 5, удаляется та вершина у, для которой выполняется равенство Ydouble[y] = x (впрочем, также справедливо и соотношение у = Xdouble[x]). В строке 28 апализируется, каким именно исходом завершился поиск в глубину. Если поиск удачный, т.е. indication — 1, то в цикле 29-34 увели- увеличивается паросочетание М и удаляются из графа G{M) все вершины найденной М-чередующейся цепи.
12.2. Задача о наибольшем паросочетании 239 Соберем описанные процедуры в один алгоритм построения наиболь- наибольшего паросочетания в двудольном графе. Алгоритм 12.1 (Хопкрофт, Карп). Вход: двудольный граф G—(X, E, Y), заданный матрицей А[1.. .р, 1... q], где р = \Х\, q = \Y\. Выход: наибольшее паросочетание в графе G, задаваемое массивами Xdouble[l ...p] и Ydouble[l ...q]. 1. begin 2. for x ? X do Xdouble[x] := nil; 3. for у Е X do Ydouble[y] := nil; 4. repeat 5. Graph(M); 6. if Yfree ф 0 then Increase(M); 7. until Yfree = 0; 8. end. Дадим небольшой комментарий к этому алгоритму. В строках 2-3 строится пустое паросочетание М. После построения вспомогательно- вспомогательного графа процедурой Graph(M) анализируется (условие в строке 6), со- содержит ли граф G(M) свободные в М вершины у ? Y. Если таковые имеются, то процедура Increase(M) увеличивает текущее паросочета- паросочетание и (условие в строке 7) фаза повторяется. Если же список достигну- достигнутых процедурой Graph(M) свободпых вершин у ? Y пуст, то алгоритм завершает работу и по теореме Бержа текущее паросочетание является наибольшим. Разберем работу алгоритма 12.1 на простом примере. На рис. 89 а) изображен исходпый граф G, а на рис. 89 Ь), с), d) — паросочетания, по- полученные после каждой из трех фаз. Напомним, что фазой мы называем процесс построения вспомогательного графа и последующее увеличение текущего паросочетания; ипаче говоря, фаза — это один проход основ- основного цикла 4-7 в алгоритме 12.1. Ясно, что вспомогательный граф G(M), построенный в первой фа- фазе, совпадает с исходным, ибо все вершины у G Y являются свободны- свободными и неизолированными в G. Следовательно, выполняются равенства Xfree — X и Yfree — Y. Предположим, что поиск в глубину в процеду- процедуре Increase(M) начнется с вершины х-\_. Теперь все зависит от значения функции Choice(xi). Пусть у2 = Choice{xl) (случай у\ = Choice(xi) не так интересен). Тогда цепь х\, Х\У2, yi является М-чередующейся, и в М будет добавлено ребро х\Уъ- Пусть следующей вершиной, взятой из списка Xfree, была вершина хц и Choice{x^ = y$ (читатель заметил, что мы действуем максимально злоумышленно). Тогда в М добавится
240 12. Паросочетания в двудольных графах ребро Ж4?/з- Больше ни одной М-чередующейся цепи в графе G(M) пос- после удаления вершин х\, х4, у2, Уз не существует. Первая фаза на этом закончится. Zi Х2 Х3 Х4 Хг Х2 Х3 Х4 Интереспо отметить, что вспомогательный граф G(M), ностроенный во второй фазе, в точности совпадает с исходным. Действительно, поиск в ширину начнется с вершин х2 и х3. Полный нросмотр первого фронта нриведет к тому, что в G(M) нопадут вершины г/2 и Уз, а через них — вершины Х\ и х4. Затем из вершин х1 и ж4 будут достигнуты вершины У\ и г/4- Конечно, во вспомогательный граф попадут и все ребра исход- исходного графа. Предположим, что ноиск в глубину начнется с вершины х2 и Choice{x2) — Уз- Тогда будет найдена М-чередуюшаяся цепь с по- последовательностью вершин Х2, 2/з, ж4, J/4- Паросочетание М увеличится вдоль найденной цепи следующим образом. Будет удалено ребро х^у3 и добавлены ребра ж2г/з и ж4?У4- После удаления вершин ж2, у3, х4, У\ ни од- одной М-чередующейся цепи в графе G(M) уже не существует. Результат второй фазы изображен на рис. 88 с). Наконец, в третьей фазе ноиск в ширину начнется с единственной свободной вершины х%. Вспомогательный граф представляет собой М-че- редующуюся цепь, включающую вершины Жз, Уз, х%, У2, Х\, гд. Увели- Увеличение М вдоль этой цепи приводит к паросочетанию, изображенному на рис. 88 d), которое является наибольшим паросочетанием в заданпом графе. Получим теперь оценку сложпости алгоритма Хопкрофта-Карпа. Лемма 1. Пусть М u N — два паросочетания в двудольном графе G = (X, Е, Y) и \M\=r <s= \N\.
12.2. Задача о наибольшем паросочетании 241 Тогда симметрическая разность М © N содержит не менее s — r непере- непересекающихся по вершинам М-чередующихся цепей. Доказательство. Рассмотрим граф G = (X, М (BN, Y) и обозначим через Gi, ..., G), компоненты связности этого графа. Поскольку М и N являются паросочетаниями, каждая вершина графа G инцидентна не бо- более чем одному ребру из М \ N и не более чем одному ребру из N \ М. Отсюда следует, что каждая компонента связности имеет один из трех следующих видов: 1) изолированная вершина; 2) цикл четной длины с ребрами попеременно из М \ N и N \ М; 3) цепь с ребрами попеременно из М \ N и N \ М. Обозначим через E,i множество ребер компоненты G,;. Пусть di = \Eir\N\- \EiC\M\. В тех случаях, когда компонента G; имеет тип 1) или 2), получаем d{ = 0. В случае 3) либо di = —1, либо d; = 1, либо d; = 0. Причем случай d{, = 1 возможен только тогда, когда цепь начинается ребром из Л" и заканчивается ребром из N, т. е. является М-чередующейся. Остается показать, что di = 1 для не менее чем s—r индексов. Достаточно убедиться, что сумма всех значений d; не меньше s — г. В приводимых ниже вычислениях все суммы берутся по i — 1, ..., к. Y.di^Y, (\Ei П ЛГ| - \Ei П M\) = \N\M\-\M\N\ = \N\ -\M\ = s-r. Из этого равенства следует, что в графе имеется не менее s — r различных М-чередующихся цепей. ? Лемма 2. Пусть М — паросочетание в двудольном графе G и \М\ — = г < s, где s — мощность наибольшего паросочетания в G. Тогда су- существует М-чередующаяся цепь длины не превосходящей -^ + 1. Доказательство. Пусть N — наибольшее наросочетание в G. Тогда \N\ = s и по лемме 1 множество М (В N содержит пе менее s — r непе- непересекающихся по вершинам (а, следовательно, и но ребрам) М-чередую- М-чередующихся цепей. Пусть кратчайшая из них имеет длину 2к + 1 (напомним, что длина каждой М-чередующейся цепи нечетна). Тогда ровно к ребер этой цепи принадлежат М. Следовательно, (s — г)к < г, так как каж- каждая М-чередующаяся цепь содержит не менее к ребер из М. Из этого соотношения вытекает требуемое неравенство. ? Следующий результат является ключевым.
242 12. Паросочетания в двудольных графах Лемма 3. Пусть Р u P — чередующиеся цепи, построенные в разных фазах алгоритма Хопкрофта - Карпа, причем цепь Р построена раньше, чем цепь Р. Тогда \Р\<\Р\. Доказательство. Достаточно рассмотреть случай, когда эти фазы непосредственно следуют друг за другом. Пусть М и N — паросоче- паросочетания, которые были построены перед началом соответствующих фаз. Пусть Pi, ..., Pj. — максимальное по включению множество вершин- вершинно непересекающихся кратчайших М-чередующихся цепей, построенпое алгоритмом, г — длина каждой из этих цепей. Тогда Р = Pj для некото- некоторого i и ЛГ = М ® Pi ® ... 8 Pk. Положим L — N(BP. Поскольку цепи Pt не пересекаются по вершинам (а потому не имеют общих ребер), имеем М ® L = М 8 М ® Pi 8 Pi... ® Pk ® Р = Р 8 (Pi U P2 U ... U Pk). Отсюда |M®L| = \P\+kr-2\PnQ\, где Q = Pi U P2 U ... U Рк. С другой стороны, так как \L\ = \М\ + к + 1, множество М ф L содержит не менее к + 1 реберно непересекающихся М-чередующихся цепей (лемма 1). Следовательно, \М@Ц > (к + 1)г, т.е. имеет место неравенство \Р\ + кг - 2\Р П Q\ > (k + l)r. Отсюда \Р\ >г + 2|РП<2|. Так как в алгоритме Хопкрофта-Карпа выбиралось максимальное по включению множество вершинно непересекающихся цепей, цепь Р имеет общую вершину v хотя бы с одной из цепей Pi, ..., Рк. Поскольку после каждого увеличения относительно какой-либо чередующейся цепи все вершины цепи стаповятся насыщенными, эта общая вершина v является насыщенной, т. е. не первой и не последней в цепи Р. Тогда темное относительно N ребро, инцидентов вершине и, входит в обе цепи, т.е. Р п Q ф 0. Отсюда \Р\ > г. ? Теорема 12.4. Число фаз алгоритма Хопкрофта - Карпа не превыша- превышает 2[-/s\ + 1, где s — мощность наибольшего паросочетания в данном графе.
12.2. Задача о наибольшем паросочетании 243 Доказательство. Пусть Mq = 0, Mi, ..., Ms — все паросочетания, Ро; ¦ • • > Ps-i — все чередующиеся цепи, последовательно построенные алгоритмом, и Mi = М;_! ф Pi_U i = l, 2, ...,S. Каждая цепь Pt является чередующейся для некоторого паросочета- паросочетания Mj (j < i), которое было построено перед началом очередной фа- фазы. Поскольку внутри каждой фазы цепи не пересекаются по вершинам, цепь Ц является не только М,-чередующейся, но также и М^-чередую- щейся для всех к таких, что j < к < г. Еще раз отметим, что цепи, построенные в одной и той же фазе, имеют одинаковую длину, а в раз- разных — разную. Таким образом, число фаз в алгоритме равно количеству различных чисел в последовательности о\, •¦-, l-P» Пусть г = \_s — \/iJ. Тогда \МГ\ = г < s. Используя лемму 2 и не- несложные арифметические преобразования, получаем цепочку неравенств |*| s — г s — г s — [s — 2S < -р - 1 = 2y/s - 1 < 21 л/s] + 1. Поскольку длина каждой цепи нечетна, носледовательность |P0| Рг\ содержит не более \_-\/s\ + 1 различных чисел. Последовательность Pr+i|, ..., |-P,_i| может содержать не более (s — 1) — г других чисел. Кроме того, (s - 1) - г = (s - 1) - [s - -/sj < (s - 1) - ((s - y/s) - 1) = y/s. Окончательно получаем, что в последовательности чисел |.Ро|; •••> Ps-i\ имеется пе более 2[\/sJ + 1 различных нечетных чисел, что за- завершает доказательство теоремы. ? Теперь мы можем оценить вычислительную сложность алгоритма Хопкрофта-Карпа. Для данного двудольного графа G = (X, Е, Y) поло- положим n — max [\X\, \Y\). Ясно, что мощность наибольшего паросочетания не превосходит п. Теорема 12.5. Алгоритм Хопкрофта - Карпа имеет слож- сложность 0{пъ12). Доказательство. По теореме 12.4 число фаз имеет норядок л/п. Остается оцепить сложность вынолнения каждой фазы. В процедуре
244 12. Паросочетания в двудольных графах Graph(M) просматривается каждое ребро не более одного раза. Про- Просмотр ребра означает просмотр соответствующего элемента матрицы смежности А, т.е. сложпость этой процедуры есть О(п2). Поиск в глу- глубину, выполняемый в процедуре Increase(M), имеет сложность O(p + q), поскольку использовапные ребра и вершины удаляются из графа. Следо- Следовательно, сложность этой процедуры равна О(п2). Отсюда вытекает, что сложность алгоритма Хопкрофта-Карпа равна (л/n) х О(п2), т.е. рав- равна 0{rv>l2). ? 12.3. Задача о полном паросочетании. Алгоритм Куна В этом разделе мы будем рассматривать двудольные графы G — — (X, Е, Y), в которых множества X и Y имеют одинаковое число вер- вершин. Пусть m — \Е\ и п — \Х\ — \Y\. Паросочетание, насыщающее все вершины данного двудольного графа называется полным или совершен- совершенным. Задача, в которой требуется построить полное паросочетание, если опо существует, называется задачей о полном паросочетании. Критерий существования полного паросочетания дает пам следствие 3 из разд. 4.11. Теорема 12.6 (Холл, 1935). В двудольном графе G = (X, Е, Y) полное паросочетание существует тогда и только тогда, когда для лю- любого S С X справедливо неравенство \s\ < |ВД1> где E{S) обозначает множество всех вершин из Y, смежных с некоторы- некоторыми вершинами из S. С точки зрения построения алгоритмов ценность этой теоремы неве- невелика. В самом деле, для проверки выполнения условия существовапия полного паросочетания требуется просмотреть 2" подмножеств множес- множества X. Более того, даже если условия выполпяются, теорема не дает никакого метода построения полного паросочетания. Тем не менее, эта теорема бывает зачастую полезной в различных вопросах теории графов и, кроме того, представляет самостоятельный интерес. Одним из возможных методов решения задачи о полном паросоче- паросочетании было бы примепепие алгоритма Хопкрофта-Карпа и выделепие наибольшего паросочетапия. Если это паросочетание состоит из п ре- ребер, то оно является полным, а если наибольшее паросочетапие имеет
12.3. Задача о полном паросочетании. Алгоритм Куна 245 меньше чем п ребер, то в данном графе полного паросочетания не су- существует. Главным недостатком такого метода является то, что в слу- случае отсутствия полного паросочетания мы узнаем об этом только после завершения работы алгоритма. Рассмотрим теперь алгоритм, который завершает работу либо постро- построением нолного паросочетания, либо в тот момент (а он может настунить достаточно рано), когда станет ясно, что полного паросочетания не су- существует. Этот алгоритм составляет существенную часть метода, разра- разработанного Куном в 1955 году для решения более общей задачи — задачи о назначениях. Кун назвал свой метод венгерским алгоритмом. Алгоритм построения полного паросочетания, который мы здесь разберем, будем называть алгоритмом Куна. Неформально алгоритм Куна можно изложить следующим образом: 1) пустое наросочетание объявить текущим паросочетанием М; 2) если все вершины из X насыщены в М, то СТОП (М — полное наросочетание); 3) иначе выбрать произвольную свободную вершину х G X и искать М-чередующуюся цепь, начинающуюся в ж; 4) если такая цень Р найдена, то положить М = М © Р и вернуться на шаг 2; 5) иначе СТОП (полного наросочетания в заданном графе не сущест- существует). Разберем изложенный алгоритм подробпее. Для поиска М-череду- ющейся цепи можно использовать как поиск в глубину, так и поиск в ширину. В данном случае удобнее использовать поиск в глубину. Пра- Правила поиска те же самые, что и в алгоритмах построения наибольшего паросочетания Форда-Фалкерсона или Хопкрофта-Карна. Онять пере- переход из вершин х ? X к вершинам у ? Y осуществляется по светлым относительно текущего паросочетания ребрам, а от yGYnxGX — по темным. Как всегда, возможны два исхода поиска: либо будет найдена свобод- свободная вершина у ? Y, т. е. найдена М-чередующаяся цепь, либо чередую- чередующейся цепи с началом в корневой вершине поиска не существует. В первом случае действия стандартны. Увеличиваем текущее наросо- наросочетание с помощью найденной цепи и начинаем вновь искать М-череду- М-чередующуюся цень из другой свободной вершины, если таковая существует. Второй возможный исход ноиска интереснее. Собственно, именно этот случай и является изюминкой предлагаемого алгоритма. Пусть по- поиск в глубину начинался с вершины х и М-чередующаяся цепь не была найдена. Тогда дерево поиска выглядит следующим образом. Вершина х находится в корпе дерева поиска. Все вершины, уровень которых в дере-
246 12. Паросочетания в двудольных графах ве поиска есть число нечетное, принадлежат Y, а все вершины с четным уровнем — X, причем все вершины дерева за исключением х насыще- насыщены в М. Кроме того, ребра, исходящие из вершин с нечетным уровнем, соответствуют ребрам паросочетания М, а все прочие — ребрам, не вхо- входящим в М. Такое дерево часто называют венгерским или чередующимся деревом. На рис. 89 дан пример графа и паросочетания в нем, а также дерево поиска в глубину из вершины х±. На этом рисунке ребра паросочетапия и соответствующие дуги изображены утолщенными линиями. Числа в скобках, проставленные рядом с вершинами, соответствуют тому норяд- ку, в котором они просматривались в ходе поиска. Хц а) Рис. 89 Обозначим через S мпожество всех вершин дерева поиска, уровепь к которых является четным числом. Тогда S С X. Пусть E(S) — мно- множество всех у ? Y, смежных с вершинами из S. Покажем, что все вер- вершины E(S) попадают в дерево поиска. Пусть у ? E(S). Если вершина у смежна с корневой вершиной поиска ж, то соединяющее их ребро яв- является светлым, так как х — свободная вершина. Тогда по правилам поиска вершина у непременно будет помечена и, следовательно, у входит в дерево поиска. Если у смежна с насыщенной вершиной х ? 5, то х попадает в дерево поиска только после того, как туда попадет смежная с ней по темному ребру вершина у*. Поскольку М — наросочетание, име- имеем у — у*. Отсюда вытекает, что у была помечена раньше чем х. Тем самым проверено, что E(S) содержится в дереве поиска. Пусть к нечетно. Тогда из каждой вершины у уровня к в дереве поиска исходит ровно одна дуга. Следовательно, если число к нечетно, то количество вершин, имеющих уровень к, равно количеству вершин уровня к + 1. Из приведенных рассуждений следует, что |S| = ^(S1)!+ 1,
12.3. Задача о полном паросочетании. Алгоритм Куна 247 так как корневая вершина поиска является «лишней». Отсюда получаем \S\ > \E(S)\, следовательно, граф G не имеет полного паросочетания в силу теоремы Холла. Проведенный анализ ноказывает, что, осуществляя поиск в глубипу, мы находимся в беспроигрышной ситуации. Либо ноиск завершится па- хождением чередующейся цепи, и тогда текущее паросочетание можно увеличить, либо такая цепь не будет найдена, и тогда можно остановить работу алгоритма, ибо полного паросочетания не существует. При формальной записи этого алгоритма предполагается, что двудоль- двудольный граф G — {X, Е, Y) задан матрицей смежности А[1... п, 1... п]. Те- Текущее паросочетание описывается двумя массивами Xdouble и У double длины п каждый. Напомним, что Xdouble[x] = у, если х сочетается с у, и Xdouble[x] — nil, если х — свободная вершина относительно паросоче- паросочетания М. Массив Ydouble определяется аналогично. Структура алгоритма Куна следующая. Через Т обозначается мно- множество свободных вершин относительно текущего паросочетания. Через Start(T) обозначается функция, которая возвращает для пепустого мпо- жества Т произвольный элемент. В строках 3-4 инициализируется пус- пустое паросочетание. В строках 6-21 осуществляется поиск в глубину из свободной вершины х. Эти строки являются почти точной копией анало- аналогичных строк в нроцедуре Increase(M) из предыдущего раздела. Вновь используется переменная indication, которая равна нулю, если свободная вершина у ? Y еще не встретилась, и становится равной единице, как только достигается какая-нибудь свободная вершина у ? Y. Функция Choice(x) возвращает произвольную смежную с х верши- вершину у ? Y, не посещавшуюся в ходе поиска из вершины х. Если такой вершины нет, то Choice(x) = nil. Отметим, что при нрограммной реа- реализации этой функции не обойтись без переменной, указывающей на то, посещалась или нет данная вершина. Строки 6-21 показывают, что в стек S вершины номещаются пара- парами. Использованные в ходе поиска вершины удаляются из S тоже парами (строки 18-19). Строка 14 ноказывает, что сразу но достижению сво- свободной вершины, т.е. такой вершины у, для которой Ydouble[y] — nil, неременная indication становится равной единице. После этого (условие в строке 7) процесс поиска из вершины х сразу остановится. После завершения поиска в строке 22 анализируется, чем именно за- закончился поиск из данной вершины. В том случае, когда поиск завер- завершился достижением свободной вершины, в строках 23-27 происходит увеличение текущего паросочетания. В строке 28 приведены два воз- возможных исхода работы алгоритма 12.2. Попятно, что условие Т = 0 означает, что все вершины множест-
248 12. Паросочетания в двудольных графах ва X насыщены, т. е. текущее паросочетание является полным. Если же поиск из какой-либо вершины не завершился нахождением свободной вершины у, т. е. по окончапии поиска имеем равенство indication = О, то первое условие в строке 28 обеспечивает остановку алгоритма. Этот вариант окопчания работы алгоритма говорит о том, что полного паро- паросочетания не существует. Алгоритм 12.2 (Кун). Вход: двудольный граф G—(X,E,Y), заданный матрицей А[1.. .п, 1... п], гдеп=|Х| = |У|. Выход: полное паросочетание, задаваемое массивами Xdouble и Ydouble, либо сообщение о том, что такого паросочетания не существует. 1. begin 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. Т:=Х; for х ? X do Xdouble[x] :— nil; for у ? Y do Ydouble[y] := nil; repeat S := nil; x := Start{T); S ¦?= x; indication := 0; while E ф nil) and (indication = 0) do begin x -S= S; у := Choice[x); Пуф nil then begin S <= y; z := Ydouble[y\; if z ф nil then S <= z; else indication = 1; end else begin ^S; if S ф 0 then <= S; end end; if indication = 1 then while S ф nil do begin x <^ S;y <^ S;T :=T\{x}; Xdouble[x] := y; Ydouble[y] := x; end until (indication = 0) or (T = 0); end.
12.4. Задача о назначениях. Венгерский алгоритм 249 Так как поиск в глубину из заданной вершипы имеет сложность О(п2) и основной цикл 5-28 алгоритма 12.2 выполняется не более п раз, снра- ведлива Теорема 12.7. Алгоритм Куна имеет сложность О(п3). Вернемся к графу, изображенному на рис. 89 а). Паросочетание, изоб- изображенное на нем, могло быть получено в нроцессе работы алгоритма 12.2 следующим образом. Пусть первый раз функция Start выбрала верши- вершину Жд. Тогда поиск в глубину с корнем х§ сразу же находит свободную вершину ?/4) и для текущего паросочетания М имеем М = {хьу^\. Пусть на втором шаге поиск велся из вершины xi. Тогда для нового паросоче- паросочетания М имеем М — {х^у^, ?22/2}- Пусть на третьем шаге поиск велся из вершины Хз и была найдена свободная вершина у\. Тогда к текущему паросочетанию добавилось ребро ХзУ\- Предположим, что в четвертой итерации ноиск начнется с вершины Х\. Тогда будет найдена свободная вершина уз, нри этом стек S носле завершения поиска включает вершины xi, »/i, Ж3, j/з- В результате из наросочетания М будет удалено ребро x^yi и будут добавлены два ребра Х\Ух и ХзУз- Дальнейший поиск из вершины хц, который не находит свободной вершины у ? У, нами уже рассматривался. В результате работа алго- алгоритма будет завершена, так как полного паросочетания в данном графе не существует. Отметим, что вершина х§ нри работе алгоритма даже не рассматривалась. Завершая обсуждение алгоритма Куна, отметим, что он может быть реализован и на основе поиска в ширину. Все принципиальные моменты ностроепия алгоритма нри такой замене сохраняются. 12.4. Задача о назначениях. Венгерский алгоритм Пусть G = (X, Е, с, Y) — взвешенный двудольный граф, \Х\ = \Y\ = п. Папомним, что весом паросочетания М называется сумма весов его ре- ребер. Задача о назначениях состоит в следующем: в заданном двудольном взвешенном графе найти полное паросочетание минимального веса. Рассматривая эту задачу, мы будем предполагать, что заданный граф является нолным, т. е. любые две вершины ж G X и у G Y соединены ребром. Это предположение не ограничивает общности, ибо любую па- пару несмежных вершин х и у можно считать соединенной ребром веса, большего суммы весов всех исходных ребер графа. Полное наросочетание минимального веса назовем для краткости оп- оптимальным паросочетанием.
250 12. Паросочетания в двудольных графах Лемма 1. Если веса всех ребер графа, инцидентных какой-либо вер- вершине, увеличить (уменьшить) на одно и то же число, то всякое опти- оптимальное паросочетание в графе с новыми весами является оптимальным и в графе с исходными весами. Справедливость леммы 1 немедленно следует из того, что для каждой вершины полное паросочетапие содержит ровпо одно ребро, инцидентпое этой вершине. В частпости, эта лемма позволяет рассматривать только такие графы, веса ребер которых неотрицательны. Действительно, пусть а — мипи- мум весов ребер данпого графа. Если а < 0, то увеличим вес каждого ребра на —а. Тогда веса всех ребер станут неотрицательными, а мно- множество оптимальных паросочетаний не изменится. Более того, можно рассматривать только те графы, у которых каждой вершине инцидентно хотя бы одно ребро нулевого веса. Действительно, достаточпо для каждой вершипы из весов всех инцидептных ей ребер вычесть минимальный из них. Пусть X' С X, Y' С Y и d — некоторое число. Будем говорить, что к графу G — (X, Е, с, Y) применена операция (X1, d, Y'), если сначала из веса каждого ребра, инцидентного вершине из X', вычтено d, а за- затем к весу каждого ребра, инцидентного вершине из У, прибавлено d. Следующий простой результат играет важную роль. Лемма 2. Пусть G — (X, Е, с, Y) — двудольный взвешенный граф с неотрицательными весами, X' С X, Y' С Y и d — тт{с(ж, у) \ х ? X', у ?Y \ Y'}. Если к графу G применить операцию (X', d, Y'), то 1) веса всех ребер G останутся неотрицательными, 2) веса ребер вида ху, где х е X', у бГ или х G X \ X', у е Y \Y' не изменятся. Доказательство. Будем считать, что граф G задан квадратной мат- матрицей весов А порядка п, в которой А[х, у] = с(х, у). Пе ограничивая общности, можно считать, что X' состоит из первых g элементов мно- множества X, a Y' — из нервых h элементов множества Y. Тогда, очевидно, число d равно минимальному элементу из числа тех элементов матри- матрицы А, которые стоят в первых g строках и в последних п — h столбцах. Уменьшение на число d весов всех ребер, инцидентпых данпой верши- вершине х G X', означает вычитание числа d из всех элементов соответствую- соответствующей строки матрицы А, а увеличение на d весов всех ребер, инцидентных данной вершине у G У означает прибавление числа d ко всем элементам соответствующего столбца матрицы А. Схематичпо операцию (Х\ d, Y') изобразим с помощью рис. 90. Эле- Элементы матрицы А, находящиеся в области I, впачале уменьшаются на d,
12.4. Задача о назначениях. Венгерский алгоритм 251 а затем увеличиваются на то же самое число d. В результате эти эле- элементы не меняются, т. е. не меняются веса ребер вида ху, где х ? X' и у ? У. Все элементы из области II останутся неотрицательными, ибо d не нревосходит каждого из них. Элементы области III вообще никак не меняются, т. е. не меняются веса ребер вида ху, где х ? X \ X' и у ? Y \ У. В области IV элементы увеличатся на число d. В результате они останутся неотрицательными. ? X' Х\Х' Y1 I IV +d Y\Y' II -d III Рис. 90 Следующий вспомогательный результат совершенно очевиден. Лемма 3. Если веса всех ребер графа неотрицательны и некоторое полное паросочетание состоит из ребер нулевого веса, то оно является оптимальным. Три сформулированные леммы позволяют разработать алгоритм по- построения полного паросочетания минимального веса в полпом двудоль- двудольном взвешенном графе. Этот алгоритм был нредложен Куном и был на- назван им венгерским алгоритмом. Сначала приведем неформальное описание венгерского алгоритма: 1) преобразовать веса ребер данного графа таким образом, чтобы веса всех ребер стали неотрицательными и каждой вершине стало инцидентно хотя бы одно ребро нулевого веса; 2) пустое наросочетание объявить текущим паросочетанием М; 3) если в графе все вершины насыщены относительно текущего паро- паросочетания, то СТОП (текущее паросочетание оптимально); 4) иначе выбрать произвольную свободную вершину х ? X и искать М-чередующуюся цепь, которая начинается в вершине ж и состоит толь- только из ребер нулевого веса; 5) если такая цепь Р построена, то положить М = МфР и вернуться на шаг 3; 6) иначе для множества вершин X' С X и У С У, помечен- помеченных в ходе поиска (это вершины венгерского дерева), положить d = = тт{с(х, у) | х ? X', у ? Y \ У} и применить к графу операцию (X', d, У); 7) из тех вершин х ? X', которым стало инцидентно хотя бы одно ребро нулевого веса, возобновить поиск М-чередующейся цепи, исполь- используя только ребра нулевого веса; если такая цень Р будет ностроена, то
252 12. Паросочетания в двудольных графах положить М = МфРи верпуться на шаг 3, ипаче вернуться на шаг 6 (множества X' и У при этом увеличатся). Обоснуем теперь корректность алгоритма. Докажем, что каждый поиск из очередпой свободной вершины х ? X завершится в конце концов построением М-чередующейся цепи, которая начинается в выбранной вершине х и состоит только из ребер нулевого веса. Пусть вынолнение шага 4 не привело к этой цели. Разберем подробнее выполнение шагов 5, 6 и 7. Поскольку поиск ведется по ребрам нулевого веса, каждое ребро вида ху, где х ? X' и у ? Y \ Y', имеет вес больше нуля, так как все эти ребра являются светлыми относительно текущего паросочетания. Поэтому d > 0. Тогда, очевидно, примепение операции (X', d, Y') приводит к тому, что хотя бы у одной вершины х* ? X' по- появится инцидентное ей ребро нулевого веса и, следовательно, нри выпол- выполнении шага 7 множество У увеличится хотя бы на одну вершину. Более того, применение операции (X', d, Y') в силу леммы 2 не меняет весов ребер дерева поиска, так как они имеют вид ху, где х ? X' и у ? Y', и не меняет весов ребер текущего паросочетания, не попавших в дерево поиска, поскольку они имеют вид ху, где 1?1\1'иуеУ\ Y'. Таким образом, выполнение шага 6 пе меняет нулевые значения весов ребер текущего паросочетания и в графе появляются новые ребра нулево- нулевого веса. Поскольку при вынолнении шага 6 множество Y' увеличивается, этот шаг не может выполняться более п раз и, следовательно, на некото- некотором вынолпении шага 7 будет достигнута свободная вершина у ? Y, т. е. не более чем через п итераций будет построена М-чередующаяся цепь. Поскольку поиск всегда ведется по ребрам нулевого веса, каждое те- текущее паросочетание имеет нулевой вес. Поэтому алгоритм завершит работу построепием полного паросочетапия нулевого веса, которое в си- силу леммы 3 будет оптимальным. Отметим, что в алгоритме использу- используются те же правила поиска, что и в алгоритме Куна из предыдущего раздела: переход от вершин множества X к вершинам множества Y осу- осуществляется но светлым ребрам, а от Y к X — по темным ребрам. Перейдем теперь к формализованному изложению венгерского ал- алгоритма. Будем считать, что полный двудольный взвешенный граф G — (X, Е, с, Y), где |Х| — \Y\ — n, задается матрицей весов А, в которой А[х, у] = с(х, у) для любых х ? X и у ? Y. Как и раньше, текущее паросочетание М будем онисывать двумя мас- массивами Xdouble и У double. Поскольку матрица весов ностоянно моди- модифицируется с целью получения большего числа нулей, удобно иметь еще одну матрицу весов В, в которой и будут отражаться все изменения ве- весов ребер. Так как в ходе поиска нас будут интересовать лишь ребра
12.4. Задача о назначениях. Венгерский алгоритм 253 нулевого веса, заведем для каждой вершины х ? X но списку Bzero[x], который включает все такие вершины у е Y, что В[х, у] = 0. Кроме того, для организации самого поиска удобно иметь динамически меня- меняющуюся копию этого списка в виде стека, который будем обозначать через S[x]. Опишем вначале процедуру поиска Search{x). По сути дела она по- повторяет строки 5-15 алгоритма Куна из предыдущего раздела, но здесь нам удобпее записать ее рекурсивно. В ней иснользуются обычным об- образом переменная mark (для того, чтобы различать помеченные и не- непомеченные вершины) и массив Previous. Через X' и У обозначаются соответственно множества вершин из X и Y, помеченных в ходе поис- поиска. Переменная indication служит для прекращепия поиска сразу после того, как достигается свободная вершина у ? Y. Поиск ведется лишь при выполнении условия indication = 0. Перед первым вызовом этой процедуры выполняются равенства S[x] — Bzero[x] для всех х ? X. 1. procedure Search{x); 2. begin 3. while (S[x\ ф nil) and {indication — 0) do 4. begin 5. yt=S[x]; 6. if mark[y] — 0 then 7. begin 8. mark[y] := 1; Previously] := x\ Y' := Y' U {v}\ 9. z := Ydouble[y]; 10. if z ф nil then 11. begin 12. mark[z] := 1; Previous[z] := y; 13. X' := X' U {z}; Search(z); 14. end 15. else indication := 1; 16. end 17. end 18. end; Теперь мы можем дать формализованное изложение венгерского ал- алгоритма. В нем без формальпого описания будем использовать функции Transform(A), Start(T) и процедуру Operation(X', d, У). Первая функция из исходной матрицы А сначала получает матрицу с неотрицательными значениями элементов, добавляя ко всем ее эле- элементам достаточно большое положительное число. Затем, вычитая из каждой строки минимальный в этой строке элемент и действуя анало- аналогично со столбцами, получает матрицу с неотрицательными значепиями
254 12. Паросочетания в двудольных графах элементов, в которой в каждой строке и каждом столбце имеется хотя бы один нулевой элемент. После применения этой функции каждой вершине графа инцидентно хотя бы одно ребро нулевого веса. Ясно, что фупкция Transform(A) имеет сложность О(п2). Преобразованную таким образом матрицу весов будем обозначать через В, и все дальнейшие изменения весов ребер будем отражать имепно в ней. Процедура Operation(X\ d, У) сначала вычисляет значение d — = тт{с(ж, у) | х ? X', у ?Y \ У}, а затем применяет к графу операцию (X1, d, У) таким образом, как это описано выше. Данная операция вы- нолняется в текущей матрице весов — матрице В. Отметим, что новые нулевые значения в матрице В могут появиться только для пар х ? X' и у ? Y \ У. Понятно, что эта процедура имеет сложность О(п2). Через Т будем обозначать множество вершин х ? X', для которых су- существует вершина у ? Y\Y' такая, что В[х, у] = 0. Как уже отмечалось выше, после применения процедуры Operation(X', d, У) в множестве Т появится хотя бы один ненулевой элемент. Функция Start(T) выбирает произвольный элемент х ?Т. Алгоритм 12.3. Вход: полный двудольный взвешенный граф G = (X, Е, с, Y), заданный матрицей весов А[1... п, 1... п]. Выход: полное паросочетание минимального веса в графе G, заданное массивами Xdouble[l... п] и Ydouble[l ...n]. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. begin В := Transform(A); for x ? X do Bzero[x] := nil; for x ? X do for у ? Y do if B[x, y] = 0 then Bzero[x] <= y; for xq ? X do begin for у ?Y do mark[y\ :— 0; for x ? X do begin mark[x] :— 0; S[x] :— Bzero[x\; end; mark[x0] := 1; X' := {x0}; У := 0; indication := 0; Search(x0); if indication = 0 then repeat Operation{X', У, d);T:= 0;
12.4. Задача о назначениях. Венгерский алгоритм 255 19. for х е X' do 20. for у е Y \ Y' do 21. if В [ж, у] = 0 then 22. begin 23. Bzero[x] «= у; S[x] «= «/; 24. T:=TU{a;}; 25. end; 26. while (Г ф 0) and (indication = 0) do 27. begin ж := Start(T); Search(x) end 28. until indication — 1; 29. x :— Previously}; Xdouble[x] :— y; Ydouble[y] :— x; 30. while x ф x0 do 31. begin 32. у := Previous[x\\ x := Ргег)гоив[г/]; 33. Xdouble[x] :— y; Ydouble[y] :— x; 34. end 35. end 36. end. Дадим комментарий к венгерскому алгоритму. В основном цик- цикле 7-35 осуществляется поиск из очередной вершины х0 G X, который ведется до тех пор, пока не будет найдена свободная вершина у G Y и, тем самым, чередующаяся цепь относительно текущего паросочетания. Этот поиск осуществляется в два этапа. Вначале, после инициализации исходных данных (строки 9-15), вызывается процедура поиска в глуби- глубину из корневой вершины х0. Затем (условие в строке 16), если в ходе этого поиска не удалось достичь свободной вершины у ? Y, процеду- процедура Operation(X', d. У), выполняемая в строке 18, позволяет расширить поле поиска, ибо появятся новые ребра нулевого веса. Новый поиск, как это следует из строк 20-27, может выполняться из любой вершины венгерского дерева. Условие в строке 28 показывает, что такой новый поиск ведется до достижения свободной вершины у G Y. Как уже отмечалось выше, свободная вершина будет достигнута не бо- более чем за п итераций цикла 17-28. В строках 29-34 увеличивается текущее паросочетание. В новом паросочетании вершина xq становится насыщенной и остается такой на протяжении дальнейшей работы алго- алгоритма. Теорема 12.8. Алгоритм 12.3 имеет сложность О(п4). Доказательство. Функция Transform(A) имеет сложность О(п2). Такую же сложность имеет цикл, выполняемый в строках 4-6. Основной цикл 7-35 выполняется ровно п раз. Остается определить сложность выполпения всех онераций внутри основпого цикла. Поиск в глубину,
256 12. Паросочетания в двудольных графах вызываемый в строке 15, имеет сложность О(п2). Цикл 17-28 имеет сложность О(п2), поскольку содержит процедуру Operation(X', d, У). Этот цикл работает, вообще говоря, п раз. Следовательно, сложность цикла 17-28 есть О(п3). Понятно, что увеличение текущего наросочета- ния, выполняемое в строках 29-34, требует не более сп операций, где с — константа. Окончательно, получаем оценку сложности алгоритма О(п4). Замечание. В венгерском алгоритме оценка О(пА) возникает по су- сути дела из-за того, что приходится порядка п2 раз выполнять операцию (X', d, У), которая имеет сложность О(п2). Между тем, известен способ реализации этой операции со сложностью 0{п). Для этого достаточно применить прием, использованный нами в алгоритме Ярника-Прима- Дейкстры. А именно, при каждом входе в основой цикл 7-35 необходимо завести два массива D и Near длины п, которые динамически меняют- меняются в ходе поиска таким образом, что для всех у 6 Y \ Y' выполняется равенство D[y] = min{c(a;, у)\х? X'}, и указатель Near[y] дает ту вершину х 6 X', для которой этот минимум достигается, т.е. D[y] = c(Near[y], у). Тогда вычисление величины d требует порядка п операций, ибо d = min{D[y] | у ? Y \ Y'}. Модифицировать можно веса не всех ребер, а только ребер ви- вида Near[y]y, что также требует порядка п операций. Тем самым ре- результат операции (Х\ d, У) можно получить за время О(п2). Такая реализация венгерского алгоритма имеет сложность О(п3). Все детали изложенпого метода можно найти в [42]. Разберем пример, иллюстрирующий работу алгоритма 12.3. На рис. 91 а) изображепа матрица весов исходного графа, а на рис. 91 6) — результат применения к ней функции Transform(A). О 0 2 1 \ 0 2 3 5 0 0 0 1 2 2 0 0/ с) а) Ь) Рис. 91 Матрица 91Ь) получена следующим образом. Сначала из каждой стро- строки вычли ее минимальный элемепт, а имепно, из первой строки вычли 1,
12.4. Задача о назначениях. Венгерский алгоритм 257 из второй — 2, из третьей — 4, из четвертой — 1. Затем из второго столбца (поскольку это единственный из столбцов, который не содержит нулей) вычли 3. В результате в матрице 916) в каждой строке и каждом столбце имеется хотя бы один нуль. В дальнейшем будем предполагать, что вершины просматриваются циклами в порядке возрастапия их номеров. Поэтому основной цикл в строках 7-35 венгерского алгоритма начнется с вершины Х\. Сразу же будет пайдена свободная вершина г/i, и, следовательно, текущее паросо- четание М приобретет вид М — {xij/i}. Следующей вершиной будет вершина х2. Дерево поиска из вершины х2 изображено на рис. 92 а), где цифры в скобках означают порядок, в котором вершины встречаются в ходе поиска. Дуги, соответствующие ребрам наросочетания, изобража- изображаются сплошными линиями, а прочие — пунктиром. Поиск из вершины х2 завершается достижением свободной верши- вершины у2, и, следовательно, текущее паросочетание будет иметь вид М — = {жш, х2у2}. Поиск из вершипы х3 пе приводит к достижению свободной вершипы. Соответствующее дерево поиска изображено на рис. 93 6). Тогда мы имеем X' = {xi, х2, хз} и У = {yi, у2}. Поэтому d равно минимальному элементу среди элементов матрицы 916), находящихся в первых трех строках и последних двух столбцах. Следовательно, d = 1. Применяя к матрице 91Ъ) онерацию (X', d, У), получаем матрицу 92 с). В результате у вершипы х3 появится новое ипцидентное ей ребро нулевого веса — х3у3. Поиск возобновится из вершины х$ и сразу же завершится достижением свободной вершины у%. Таким образом, после этой итерации получим М - {x2yi, ж life, хзУз}- Z4 т 2/i(l) 1/2C) • • 2/з E) 2/2C) х2{2) 2/4G)^ 2/2E) a) Ь) Рис. 92
258 12. Паросочетания в двудольных графах Дерево поиска из вершины х^ изображено па рис. 92 с). К текущему паросочетанию М добавится ребро х^у^. Тем самым, текущее паросо- четапие М = {х^ух, Х1У2, хзуз, х±уь\ станет полным и будет состоять из ребер пулевого веса, где веса заданы нреобразовапной матрицей. Это па- росочетапие является онтимальным, и его вес, вычисленный по исходной матрице, равен 12.
13. Задача коммивояжера 13.1. Основные понятия Все задачи, рассмотренные нами в предыдущих главах, имеют одну общую черту: для них известны (и были нами рассмотрены) алгорит- алгоритмы решения, имеющие полиномиальную сложность. Однако для очень большого числа естественно возникающих задач оптимизации на графах эффективных (т.е. имеющих полиномиальную сложность) алгоритмов до сих пор пе найдено, но одновременно доказано, что эти задачи в неко- некотором вполне определенном смысле трудны. Назовем такие задачи труд- норешаемыми. Имеются веские доводы, позволяющие предположить, что для труднорешаемых задач эффективных алгоритмов решения не су- существует. Рассмотрение возпикающих здесь проблем выходит за рамки данной книги, и мы можем лишь порекомендовать читателям книгу [16], посвященную труднорешаемым задачам. А в этой главе мы рассмотрим методы решения одной из таких задач — задачи коммивояжера. Пусть дан обыкновенный связный граф. Цикл, включающий все вер- шипы графа, называется гамильтоновым. Отметим, что задача о том, существует или нет в данном графе гамильтонов цикл, является трудно- решаемой (см. [16]). Задача коммивояжера формулируется следующим образом. В данном обыкновенном взвешенном графе найти гамильтонов цикл наименьшего веса, где вес цикла определяется как сумма весов входящих в него ребер. Разберем пример, поясняющий такое пазвание задачи. Предположим, что пекоторому коммивояжеру требуется посетить каждый город в пре- пределах конкретной зоны обслуживания, нобывав в пих ровно по одпому разу, и возвратиться домой. Естественно, что ему хотелось бы выбрать такой порядок обхода клиентов, при котором его путь был бы возможно короче. Построим взвешенный граф G = (V, Е, с), в котором каждая вер- вершина соответствует некоторому городу, а веса ребер равпы расстояниям между соответствующими городами. Гамильтонов цикл наименьшего веса в этом графе дает желаемый маршрут для коммивояжера. Задача коммивояжера (далее ЗК) также относится к классу трудно- решаемых. Известно, что ЗК остается труднорешаемой и в том случае, когда граф является полным, а матрица весов А удовлетворяет неравен- неравенству треугольника, т. е. A[v, w] < A[v, и] + А[и, w] для всех и, v, w ? V. Более того, ЗК остается труднорешаемой и в классе евклидовых гра- графов, т. е. графов, вершипы которых являются точками евклидового про-
260 13. Задача коммивояжера странства, а веса ребер равны расстояниям между соответствующими точками. Отметим, что если веса всех ребер графа увеличить на одно и то же число, то гамильтонов цикл наименьшего веса в графе с измененными весами будет решением ЗК и для исходного графа. Следовательно, не ограничивая общности, можно считать, что веса всех ребер данного гра- графа неотрицательны. Напомним, что матрица весов неориентированного графа симметрична. Этот факт будет использоваться нами при доказа- доказательстве некоторых теорем без специального упоминания. Для удобства гамильтопов цикл будем называть маршрутом комми- коммивояжера, а маршрут с наименьшим весом — оптимальным маршрутом. 13.2. Алгоритм отыскания гамильтоновых циклов Пусть G — произвольный n-граф. Опишем алгоритм, позволяющий найти в графе G все гамильтоновы циклы или выдать сообщение, что та- таких циклов нет. Пусть Vq — произвольная вершина графа G. Рассмотрим некоторый гамильтов цикл Vq = Ml, М2, . . . , Un, М„+1 = Vq. Удалив из этого цикла ребро unVQ, мы получим максимальную простую цепь v0 = щ, щ, ..., ип, в которой начальная вершина vq — щ смежна с конечной вершиной ип. Нетрудно понять, что если мы паучимся строить все максимальные простые цепи, имеющие начало в вершине Hqi to задача о нахождении гамильтоновых циклов будет решена. В самом деле, нусть Р : va = мь м2, ..., uk — максимальная простая цепь с началом в вершине vq. Если k = n и вершина щ смежна с вершиной vq, то добаляя к цепи Р ребро и^о; мы получим гамильтонов цикл. Пусть Ad — множество всех простых цепей, имеющих начало в вер- вершине v0. Для произвольных цепей Р, Q ? М. положим Р < Q, если цепь Р является началом цепи Q. Ясно, что отношение < на множес- множестве М является отношением частичного порядка. Максимальные эле- элементы частично упорядоченного множества Л4 мы назвали выше макси- максимальными простыми цепями с началом в вершине vq.
13.2. Алгоритм отыскания гамильтоновых циклов 261 Алгоритм, позволяющий перечислить по одному разу все гамильто- новы циклы графа G, многократно выполняет следующую работу: имея текущую простую цепь Р : v0 = щ, щ, ..., Mfe_i, он по очереди добавляет к пей новые вершины, продолжая ее до всевоз- всевозможных максимальных простых цепей с началом в вершине i>0. Договоримся об обозначениях. Вершины текущей простой цепи бу- будем хранить в массиве х длины п — 1 (поскольку начальная вершина v0 зафиксирована, хранить ее в массиве х не надо). В процессе работы ал- алгоритма каждая вершина в каждый текущий момент может находиться в одном из двух состояпий: быть включенной или быть невключенной. Вершина считается включепной в текущий момент, если и только если она включена в текущую нростую цепь. Массив status длины п позво- позволит отличать включенные вершипы от невключенных: в любой текущий момент status[v] = 1, если вершипа v включепа, и status[v] = 0, если вершина v невключена. Если текущая простая цепь имеет вид v0, х[1], х[2], ..., х[к - 1], то через S). для к > 1 обозначим множество всех вершин, которые мож- можно использовать для продолжения этой цепи. Ясно, что Sk состоит из всех невключенных вершин, смежных с вершиной х[к — 1]. Разумеется, Si в начале работы алгоритма совпадает с множеством вершин смежных с vo- Рассмотрим теперь следующую рекурсивную процедуру. 1. procedure HamiltonianJCycles(k)\ 2. begin 3. for у ? Sk do 4. if к = n — 1 and у смежна с v0 then 5. write(v0, x[l], x[2], ..., x[n - 2], y, v0) 6. else 7. begin 8. status[y] := 1; Sk := Sk \ {«/}; 9. x[k] := y; 10. Sk+i := {v\v G list[y] и status[v] = 0}; 11. HamiltonianJCycles(k + 1); 12. status[x[k]] := 0 13. end 14. end;
262 13. Задача коммивояжера Указанная процедура методично перебирает все простые цепи, явля- являющиеся продолжениями простой цепи Р : va, ж[1], ..., х[к - 1], добавляя по очереди новые вершины. Если найдена максимальная прос- простая цепь, то происходит возврат, т. е. из максимальной цепи отбрасы- отбрасывается одна или несколько последних вершин (конечно, в случае, когда найденная максимальная простая цепь содержится в гамильтоновом цик- цикле, перед возвратом этот цикл выводится на печать). При этом status[v] принимает значение 0 для каждой из отброшенных вершин v. Алгоритм, реализованный в данной процедуре относят к классу алгоритмов с воз- возвратом. Теперь легко описать алгоритм, перечисляющий все гамильтоновы циклы, если они имеются в графе G. Алгоритм 13.1. 1. begin 2. status[v0] = 1; Si := list[v0]; 3. for v ? V \ {v0} do status[v] := 0; 4. HamiltonianJ3ycles{l) 5. end. Указанный алгоритм полным перебором находит и выводит на печать все гамильтоновы циклы графа G, рассматривая вершину v0 в качестве начальной. Корректность этого алгоритма очевидна. Ясно, что алгоритм экспоненциален и может быть реально применен к графам с весьма ма- малым числом вершин. 13.3. Алгоритмы решения задачи коммивояжера с гарантированной оценкой точности Один из возможных подходов к труднорешаемым задачам заключа- заключается в построении алгоритмов полиномиальной сложности для получе- получения «хорошего», но, возможно, не оптимального результата. Сразу же возникает проблема: как сильно отличается найденное решение от опти- оптимального? Обычно легче сконструировать быстрый алгоритм, дающий правдоподобное решение, чем оценить его погрешность. Рассмотрим, например, простейший алгоритм построения маршру- маршрута коммивояжера, реализующий «жадный» алгоритм и называемый Nearest-Vertex или Ближайший сосед. В качестве начальной вершины вы- выбираем произвольную вершину и объявляем ее последпеи включепнои в
13.3. Алгоритмы решения задачи коммивояжера 263 маршрут. Далее, пусть v — последняя включенная в маршрут вершина. Среди всех еще не включенных в маршрут вершин выбираем ближайшую к v вершину то, включаем w в маршрут после вершины v и объявляем w последней включенпой вершиной. Если все вершины включены в марш- маршрут, то возвращаемся в исходную вершину. Изложенный алгоритм легко реализовать так, чтобы он имел слож- сложность О(п2). Понятно, что этот алгоритм иногда может находить опти- оптимальный маршрут, но так будет далеко не всегда. Оценку возможной ошибки дает следующая Теорема 13.1. Пусть G — (V, Е, с) — полный взвешенный граф, матрица весов которого неотрицательна и удовлетворяет неравенст- неравенству треугольника. Пусть Nvt(G) — маршрут коммивояжера, построен- построенный алгоритмом Nearest-vertex, Opt(G) — оптимальный маршрут, а c(Nvt(G)) и c(Opt(G)) — их веса. Тогда c(Nvt(G)) < l([\ogn\ + 1) • c(Opt(G)). Доказательство данной теоремы можно найти в [44]. Эта теорема дает только верхпюю оцепку отношепия веса решения Nvt{G) к весу оптимального решения Opt{G) и пе говорит о том, пасколько плохим па самом деле может быть такое отношение. Имеются примеры графов, для которых оно больше чем |logn. Таким образом, алгоритм Nearest-vertex может иногда давать решения очень далекие от оптимальпых. Однако можно получить лучшие результаты, используя чуть более ис- искусную стратегию. Так алгоритм Nearest-insert или Ближайшая встав- вставка, начиная с «цикла», состоящего из одной вершины, шаг за шагом на- наращивает растущий цикл в полпом графе до тех пор, пока он не включит в себя все вершины графа. Пусть Т С V. Для произвольной вершипы v G V положим d(v, Т) = min{c(n, w)\w e T}. Число d(v, Т) естественно назвать расстоянием от вершины v до мно- множества Т. Неформальное описание этого алгоритма выглядит следующим обра- образом: 1) произвольную вершину v GV объявить текущим маршрутом Т; 2) если все вершины графа содержатся в Т, то СТОП (Т — маршрут коммивояжера); 3) иначе, среди всех вершин, не входящих в текущий маршрут Т, най- найти такую вершину v, для которой величина d(v, T) минимальна (верши- (вершина v ближе всего находится к Т). Пусть w — вершина из Т, для которой d(v, Т) = с(у, w), им — вершина, следующая за w в маршруте Т;
264 13. Задача коммивояжера 4) добавить вершину v в текущий маршрут Т, вставив ее между w и и. Перейти на шаг 2. Приведем формализованное изложение этого алгоритма. Текущий маршрут удобно онисывать массивом next, где пеж?[г;] дает имя верши- вершины, которая следует за » в данном маршруте. Пусть Т — множество вершин, включенных в маршрут. Для каждой вершины v 6 V\T рассто- расстояние от v до Т будем хранить в массиве с именем d. Значение near[w] (г> ? V \ Т) дает имя вершины w 6 V \Т, для которой вынолняется равенство c(w, v) — d[v]. Иначе говоря, вершина near[v] ближе всего рас- ноложена к г; среди всех вершин множества Т. Введение массивов d и near позволяет реализовать алгоритм Nearest-insert так, чтобы он имел сложность О(п2). Такой прием был применен нами ранее в алгоритме Ярника - Прима - Дейкстры. Через Р обозначается множество вершин, не входящих в текущий маршрут. Функция Min(P) дает имя вершины v ? Р, для которой зна- значение d[v] минимальпо. Алгоритм 13.2 (Nearest-insert). Вход: Полный взвешенный граф G — (V, Е, с), заданный матрицей весов А[1... п, 1... п], нричем A[v, v] = 0 для всех v ? V. Выход: Маршрут коммивояжера, заданный массивом next[l...n], S — вес найденного маршрута. 1. begin 2. v\ := произвольная вершина из V; 3. next[vi]:=Vi;S:=O;P:=V\{vi}; 4. for v ? Р do 5. begin 6. d[v] := c(v, vi); near[v] := v\\ 7. end; 8. for k := 2 to n do 9. begin 10. vk:=Min(P);P:=P\{vk}; 11. w := near[vk]', u := nexi[w]; 12. next[w] := u*; next[v).] := щ 13. S := S + c(w, vk) + c(vu, u) - c(w, u); 14. for v e P do 15. if c(v, vie) < d[v] then 16. begin 17. d[v] := c(v, Vk); near[v] :— Vk\ 18. end 19. end 20. end.
13.3. Алгоритмы решения задачи коммивояжера 265 Алгоритм имеет следующую структуру. В строках 2-3 инициализи- инициализируется маршрут, состоящий из одной вершины v\. В строках 4-7 зада- задаются начальные значения массивов d и near. В основном цикле 8-19 наращивается текущий маршрут. В строке 11 определяются те верши- вершины, между которыми будет вставлена очередная вершина v^. В строке 12 осуществляется эта вставка. Отметим, что вершина Vk добавляется сра- сразу после ближайшей к ней вершине w. Это означает, что в маршрут добавляются ребра wvk, v^u и удаляется ребро wu. Поэтому вес S марш- маршрута пересчитывается так, как это указано в строке 13. В цикле 14-18 пересчитываются значения массивов d и near. Иллюстрирует работу алгоритма 13.2 пример, изображенный на рис. 93. Состояние текущего маршрута дано после прохождения основ- основного цикла в строках 8-19. к 2 3 4 текущий маршрут Vl Vl, V2, Vl Vi, V2, l>3, Vi Vl, V2, Vi, «3, Vl Рис. 93 Маршрут коммивояжера, найденный алгоритмом, имеет вес 26, в то время как вес оптимального маршрута v\, vi, v$, v±, vi равен 25. Интерес- Интересно отметить, что в этом примере более грубый алгоритм Nearest-vertex тем не менее находит именно оптимальный маршрут. Поскольку каждая итерация цикла 8-19 требует порядка п — к опе- операций, то справедлива Теорема 13.2. Алгоритм Nearest-insert имеет сложность О(п2). Оказывается, что алгоритм Nearest-insert, несмотря на свою просто- простоту, обладает удивительным свойством. Теорема 13.3. Пусть G = (У, Е, с) — полный неориентированный граф, матрица весов которого неотрицательна и удовлетворяет неравен- неравенству треугольника. Пусть Nins{G) — маршрут коммивояжера, постро- построенный алгоритмом Nearest-insert, Opt(G) — оптимальный маршрут, а c(Nins(G)) и c(Opt(G)) — их веса. Тогда c{Nins(G)) < 2c(Opt(G)).
266 13. Задача коммивояжера Доказательство. Пусть vi, ¦ ¦ ¦, vn — последовательность вершин графа G, занумерованных в том норядке, в котором они добавлялись в текущий маршрут алгоритмом Nearest-insert. Обозначим через R мно- множество ребер, входящих в Opt(G). Мы будем доказывать теорему пу- путем построения взаимно однозначного соответствия между вершинами «1, ..., vn и ребрами из R таким образом, чтобы стоимость включения вершины Vk в маршрут Nins(G) не превосходила удвоенной стоимости ребра из R, соответствующего vk. Поставим в соответствие вершине v\ одно (любое) из двух инцидент- инцидентных Vi ребер, имеющихся в Opt(G). Обозначим это ребро через е\. Пусть Ri = R\ei. Тогда граф Н = (V, Ri) состоит ровно из одной компоненты связности, являющейся цепью, и в этой компоненте содержится верши- вершина r>i. Кроме того, стоимость включения v\ в текущий маршрут равна нулю, что меньше или равно 2c(ei). Пусть для вершин v\, ..., i>jt_i выбраны ребра е\, ..., e^-i из R так, что выполняются условия 1) е; ф ej при l<i<j<k — 1; 2) Ri = Ri-\ \ е^ для любого i = 2, ..., к — 1; 3) граф Hk_i — (V, Rk-i) состоит ровно из к — 1 компонент связности, которые являются цепями и в каждой из которых имеется точно по одной вершине из числа вершин v\, ..., i>jt_i. Подберем ребро е^ для вершины Vk так, чтобы выполнялись все эти условия. Пусть в той компоненте связности H^-i, которая содержит V/,, содержится вершина «,, где г < к. Тогда имеется ровно одно ребро, инцидентное v-t и лежащее на цени, соединяющей к* и «.;. Это ребро поставим в соответствие вершине V). и обозначим его через е*. Заметим, что оно инцидентно точно одной вершине из множества {v\, ..., Vf,}, a именно Vi. Положим R). = Rk-i \ е*, и^= (V, Rk). Легко видеть, что полученный граф имеет ровно к компонент связности (цепей) и в каждой из них имеется ровно по одной вершине из множества {vi, ..., «*}. Оценим теперь стоимость включения Vk в текущий маршрут. Пусть vj. включается после вершины w и перед вершиной и. Стоимость включе- включения Vk в маршрут равна (см. строку 13 алгоритма) c(w, vk) + c(vk, u) - c(w, u). Поскольку алгоритм выбирает для включения вершину, ближайшую к текущему маршруту, а ребро е^ инцидентно точно одной из ранее вы- выбранных вершин, справедливо неравенство c(w, vk) <
13.3. Алгоритмы решения задачи коммивояжера 267 Из этого неравенства и неравенства треугольника получаем c(vk, u) < с(и, w) + c(v), vk) < c(u, w) + c(ek). Отсюда выводим c(w, vk) + c(vk, и) < c(w, и) + 2c(ek), что эквивалентно соотношению c(w, vk) + c(vk, и) - c(w, и) < 2c(ek). Последнее неравенство означает, что стоимость добавления новой вер- вершины в маршрут не превосходит удвоенного веса ребра, соответству- соответствующего этой вершине. Поскольку вес маршрута Nins(G) равен сумме стоимостей включения вершин, справедливо неравенство c(Nins(G)) < < 2c(Opt{G)). ? Замечание. Если в графе существует вершина, которой инцидент- инцидентны только ребра положительного веса, то справедливо неравенство c(Nins(G)) < 2c(Opt(G)). Для доказательства достаточно взять эту вер- вершину в качестве vi, и тогда уже на первом шаге стоимость включепия (она равна нулю) строго меньше удвоенного веса ребра е\. Разберем еще один любопытный алгоритм построения маршрута ком- коммивояжера, также имеющий гарантированную оценку точности. Напомним, что замкнутая цепь в связном графе называется эйлеровой цепью, если она включает каждое ребро графа ровно один раз. Пусть G = (V, Е) — полный граф, Т — остовное дерево графа G. Построим граф Н на том же множестве вершин V, используя две копии каждого ребра из ЕТ. Степени всех вершин графа Н четны, поэтому в Н существует эйлерова цепь Р. Выпишем все вершины v тлз V ровно по одному разу в том порядке, в котором они встречаются в Р. Получим некоторую последовательность «1; ..., vn. Тогда цикл v1,v1v2,v2,...,vn, vnvi, vi образует маршрут коммивояжера в графе G. Будем говорить, что этот маршрут коммивояжера вложен в эйлерову цепь Р. Можно сказать, что минимальный остов графа является в некотором смысле приближением оптимального маршрута коммивояжера. Действи- Действительно, если в минимальном остове все вершины имеют степень не более двух, то этот остов представляет собой цепь, включающую все вершины графа. Остается дополнить эту цепь одним-единственным ребром для то- того, чтобы получить хороший маршрут коммивояжера. Конечно, такие ос- остовы существуют редко, но, тем не менее, можно попытаться переделать произвольный минимальный остов в приемлемый маршрут коммивояже- коммивояжера. Именпо на этой идее базируется алгоритм Minspantreetravelling (от
268 13. Задача коммивояжера англ. minimal spanning tree travailing) или Остовный обход для построе- построения маршрута коммивояжера в полном взвешенном графе G = (V, Е, с). Приведем сначала неформальное изложение этого алгоритма: 1) построить минимальное остовное дерево Т графа G; 2) построить граф Н, используя две копии каждого ребра из ЕТ, и найти в Н эйлерову цепь Р; 3) построить маршрут коммивояжера, вложенный в эйлерову цепь Р. В формализованной заниси алгоритма Minspantreetravelling без под- подробного описания используется процедура Ostov(G), которая строит ми- минимальное остовное дерево Т графа G. Считаем, что граф Н нолучен из Т удвоением каждого ребра. Процедура Eiler(H) строит эйлеров маршрут, представленный вершинами в стеке SRes. Маршрут коммивояжера, вложенный в эйлерову цепь, представлен массивом mk, где mk[i] дает имя г-й вершины в маршруте коммивоя- коммивояжера. Массив mark длины п + 1 необходим для того, чтобы включать соответствующую вершину в маршрут коммивояжера лишь при первом ее появлении в стеке SRes. При этом первая и последняя вершины сов- совпадают. Алгоритм 13.3 (Minspantreetravelling). Вход: нолный взвешенный граф G = (V, Е, с), заданпый матрицей весов А[1... п, 1... га], причем A[v, v] — 0 для любых v ? V. Выход: маршрут коммивояжера, заданный массивом mk[l, ..., (п+ 1)], S — вес этого маршрута. 1—1 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. begin Ostov(G); Eiler(H); i := for v G V do while SRes ф begin v Ф= SRes; if mark[v] ¦¦ begin mfe[«] := end; end; S := 0; mk[n for i := 1 to end. 1; mark[v] 0 do = 0 then = v; i = i :=0; + 1; mark[v] := 1; + 1] :=mk[i\; n do S := S + A[mk[i], mk[i Теорема 13.4. Алгоритм Minspantreetravelling имеет сложность
13.3. Алгоритмы решения задачи коммивояжера 269 Доказательство. Напомним, что минимальный остов можно по- построить за время О(п2), если использовать алгоритм Ярника-Прима- Дейкстры, следовательно, процедура Ostov{G) может быть реализова- реализована со сложностью О(п2). Процедура Eiler(H) имеет сложность О(т), где т — число ребер в графе Н. Так как Н получен из остова, то т = 2(п — 1). Поэтому процедура построения эйлерова маршрута здесь имеет сложность О{п). Количество записей в списке SRes пропорцио- пропорционально т. Следовательно, сложность цикла 5-10 есть О(п). Отсюда и вытекает оценка сложности всего алгоритма. ? Вернемся к графу, приведенному ранее па рис. 92. Возьмем мини- минимальное остовное дерево Т этого графа, которое порождается ребрами viv2, v2v3, v\Vi. (В данном графе есть еще одно минимальное остовное дерево). Дальнейший результат зависит от того, каким будет эйлеров маршрут в графе Н. Пусть, например, взят маршрут vi, v\, vi, v2, v3, v2, V\. Тогда маршрут коммивояжера v%, v±, v2, V3, i>i, вписанный в этот эйлеров маршрут, имеет вес 29. Если в Н взять эйлеров маршрут vi, v2, V3, V2, vi, V4, Vi, то получим оптимальный маршрут коммивояжера vi, v2, V3, V4, vi, имеющий вес 25. Отметим, что алгоритм Minspantreetravelling имеет такую же оцен- оценку точности, как и алгоритм Nearest-insert. Теорема 13.5. Пусть G — (V, Е, с) — полный взвешенный граф, матрица весов которого неотрицательна и удовлетворяет неравенству треугольника. Пусть Mstt(G) — маршрут коммивояжера, построенный алгоритмом Minspantreetravelling, Opt{G) — оптимальный маршрут, a c(Mstt(G)) и c(Opt(G)) — их веса. Тогда c(Mstt(G)) < 2 • c(Opt(G)). Доказательство. Пусть cmst(G) — вес минимального остова гра- графа G. Удаляя из Opt(G) произвольное ребро, получим некоторый остов графа G. Отсюда следует, что cmst(G) < c(Opt(G)). (*) Так как граф Н включает каждое ребро остова ровно два раза, то сум- сумма весов эйлерова маршрута равна 2 ¦ cmst(G). Пусть vi, ..., vn, vi — последовательность вершин маршрута коммивояжера, вписанного в эй- эйлеров маршрут. Тогда c(Mstt(G)) = c(vu v2) + c(v2, v3) + ... + c(vn, vi). Для произвольных последовательных вершип vj, и v^+i в маршруте коммивояжера, через W\, w2, ..., wr обозначим все вершины в эйлеро-
270 13. Задача коммивояжера вом маршруте, стоящие между ними, включая их самих, т.е. W\ = Vf., wr = Vk+i. Из неравенства треугольника следует, что c(vk, vk+l) < c(wi, w2) + ... + c(iur_i, wr). Суммируя эти неравенства по всем к = 1, ..., п и учитывая при этом, что вес эйлерова маршрута равен 2 -cmst(G), получим c(Mstt(G)) < 2 • cmst(G). Отсюда и из неравенства (*) следует требуемый результат. ? В заключение отметим, что известны более точные быстрые алго- алгоритмы построения маршрута коммивояжера, чем рассмотренные нами. Например, алгоритм Кристофидеса, разработапный в 1976 году, получа- получает маршрут коммивояжера, вес которого может быть не более чем в 1,5 раза больше веса оптимального маршрута. Алгоритмы Nearest-insert и Minspantreetravelling известны исследователям давно, однако оцен- оценка их точпости (теорема 13.3 и теорема 13.5) получены сравнительно недавно — в 1977 году в работе Розенкратца, Штерна и Льюиса. 13.4. Решение задачи коммивояжера методом ветвей и границ Для решения многих труднорешаемых задач относительно успешным является применение метода ветвей и границ. Мы продемонстрируем те- теперь применение этого метода к задаче коммивояжера. Будем по-преж- по-прежнему предполагать, что граф G = (V, Е, с) является полным и задан матрицей весов. Однако будем считать, что матрица весов не обязатель- обязательно симметрична. Иначе говоря, будем считать, что граф G является ориентированным и взвешенным, т. е. является сетью. Маршрутом коммивояжера в ориентированном графе называется кон- контур, включающий каждую вершину ровно по одному разу. Для полной сети с п вершипами имеется (тг —1)! вариантов маршрута коммивояжера. Естественно, что полный перебор всех вариантов является невозможным даже для не очень больших значений п. Метод ветвей и границ является хорошим способом сокращения полного перебора для получения опти- оптимального решения. Представим процесс построения маршрута коммивояжера в виде по- построения двоичного корневого дерева решений, в котором каждой верши- вершине х соответствует некоторое подмножество М(х) множества всех марш- маршрутов коммивояжера. Считаем, что корню дерева решений поставлено в соответствие множество всех маршрутов коммивояжера.
13.4. Решение задачи коммивояжера методом ветвей и границ 271 Пусть х — некоторая вершина этого дерева. Выберем дугу vw, ко- которая входит хотя бы в один маршрут из М(х). Тогда множество М{х) разбивается на два непересекающихся нодмножества, в одно из которых можно отнести все маршруты, содержащие дугу vw, а в другое — не содержащие ее. Будем считать, что первое из этих нодмножеств соот- соответствует левому сыну вершины х, а второе — нравому. Тем самым описано (пока еще в общих чертах) правило ветвления. Вершина дере- дерева решений, для которой строятся сыновья, будет называться активной. Главное достоинство метода ветвей и границ в сравнении с полным пере- перебором заключается в том, что активными объявляются лишь те верши- вершины, в которых может содержаться оптимальный маршрут. Следователь- Следовательно, необходимо выработать правило активизации вершин, которое будет сводиться к правилу подсчета границ. Предположим, что для вершин дерева решений вычислепо значе- значение f{x) такое, что вес любого маршрута из множества М(х) не меньше, чем /(ж). Такое число f(x) называется нижней границей маршрутов мно- множества М(х) или, короче, границей вершины х. Правило активизации вершин заключается в том, что из множества вершин, не имеющих сы- сыновей, в качестве активной выбирается вершипа с паименыпей пижпей грапицей. Вершина, для которой построены оба сына, активной стать в дальнейшем не может. Процесс построения дерева решепий продолжается до тех пор, пока активной не будет объявлена вершина х, для которой множество М(х) состоит из одного единственного маршрута, а границы всех других вер- вершин не меньше чем вес этого маршрута. Понятно, что тогда маршрут, содержащийся в М(х), является онтимальным. Остается сформулировать правила вычисления нижних границ. Про- Процедуру вычитапия из каждого элемента строки (соответственно столб- столбца) минимального элемента этой же строки (столбца) назовем редукцией строки (редукцией столбца). Процедуру, которая сначала осуществляет редукцию каждой строки, а затем в измененной матрице — редукцию всех столбцов, пазовем редукцией матрицы, а полученную матрицу — редуцированной. Заметим, что редуцированная матрица неотрицательна, причем в каждой ее строке и каждом ее столбце имеется хотя бы один нулевой элемент. Лемма 1. Пусть Р — маршрут коммивояжера в сети G, с(Р) (соответственно d(P)) — вес этого маршрута, определяемый матрицей весов сети G (редуцированной матрицей), f — сумма всех констант, используемых при редукции. Тогда с(Р) = d(P) + f.
272 13. Задача коммивояжера Доказательство. Для всякого маршрута Р соответствующая после- последовательность весов дуг образует набор из п элементов матрицы весов. Этот набор характеризуется тем, что в каждой строке и каждом столб- столбце матрицы содержится ровно по одному его элементу. Следовательно, каждый элемент набора модифицируется дважды. Сначала при редук- редукции соответствующей строки, а затем — столбца. Кроме того, каждая константа, используемая при редукции, влияет ровно на один элемент набора. Отсюда следует заключение леммы. ? Поскольку редуцированная матрица содержит только неотрицатель- неотрицательные элементы, имеем d{P) > 0. Следовательно, с(Р) > /. Это означает, что величина / является пижпей границей всех маршрутов коммивоя- коммивояжера для исходной нередуцированпой матрицы весов. Тем самым по- получено правило вычисления нижней границы корневой вершины дерева решений. Это правило остается справедливым и для любой другой вершины дерева решений. Действительно, с каждой вершиной х дерева решепий однозначно связывается матрица, описывающая все возможные марш- маршруты из М{х). Сумма всех констант, используемых при ее редукции и нижняя граница отца вершины х дают нужную границу вершины х. А именно, справедлива Лемма 2. Пусть вершина х является сыном вершины у в дереве ре- решений, /(«/) — нижняя граница вершины у и f — сумма всех констант, используемых при редукции матрицы, соответствующей вершине х. То- Тогда равенство Пх) = Ну) + S задает нижнюю границу f{x) вершины х. Изложенную схему метода ветвей и грапиц разберем на конкретном примере. Пусть сеть G = (V, Е, с) задана матрицей весов А, которая изображена на рис. 94 а). Редуцированная матрица А изображена на рис. 94 6). В столбце g матрицы А указапы минимальные элементы для каждой строки. После их вычитания из соответствующих строк нули будут в каждой строке и в первых четырех столбцах. Мипимальные эле- элементы для новых столбцов указаны в строке h матрицы 94 а). После редукции столбцов получается матрица 94 6). Общая сумма вычтенных элементов равна 32. Это число указано в пересечении строки h и столб- столбца g. Следовательно, любой маршрут коммивояжера в сети G имеет вес не меньше чем 32. Перейдем теперь к постепенному построепию корневого дерева поис- поиска решения. Для ветвления в корневой вершине дерева решений нужно
13.4. Решение задачи коммивояжера методом ветвей и границ 273 1 2 3 4 5 h 1 ею 9 6 5 15 0 2 12 ею 0 9 7 0 3 9 8 оо 12 13 0 4 9 19 16 оо 23 0 5 12 15 10 16 сю 3 g 9 8 0 5 7 32 1 2 3 4 5 s 1 сю 1 6 0 8 1 2 3 сю 0 4 0 0 3 0 0 сю 7 6 0 4 0 11 16 сю 16 11 5 0 4 7 8 сю 4 г 0 1 6 4 6 a) b) ' Рис. 94 ; выбрать дугу vw и разбить все множество маршрутов на два непересе- непересекающихся подмножества, в одно из которых включаются все маршруты, содержащие дугу vw, в другое — не содержащие эту дугу. Правило выбора такой дуги vw определяет по существу всю стратегию поиска оптимального маршрута. Выбор дуги vw означает, что маршруты из М{х) для левого сына х не содержат других дуг, выходящих из и, и других дуг, входящих в w. Иначе говоря, из матрицы весов для левого сына можно удалить строку v и столбец w. Кроме того, следует запретить возможность включения в маршрут дуги wv, для чего достаточно положить A[w, v] — сю. Таким образом, размер матрицы весов левого сына уменьшается на единицу, по сравнению с размером матрицы весов отца. Поскольку маршруты из М(х) для правого сына х запрещают лишь использовать дугу vw, то все изменения в матрице весов сводятся к тому, что пужно положить A[v, w] — сю. Поэтому предпочтительно находить решение, двигаясь по левым, а не по правым сыновьям. Следовательно, дуга vw должпа выбираться так, чтобы нижняя граница нравого сыпа была как можно больше границы левого сына. В редуцироваппой матрице из рис. 946) в столбце г (со- (соответственно строке s) указаны вторые минимальные по порядку числа соответствующих строк (столбцов). Правило выбора дуги vw можно сформулировать следующим образом: выбрать тот нуль в редуцировапной матрице, для которого сумма зпа- чений элементов, паходящихся на пересечении строки v со столбцом г, и столбца w со строкой s, наибольшая. Например, для нуля, находящегося в четвертой строке первого столб- столбца, соответствующая сумма равна 5, а для нуля в первой строке и четвер- четвертом столбце — 11. Легко видеть, что это значение является наибольшим. Таким образом, разбиепие мпожества всех маршрутов следует осущест- осуществить по дуге A, 4).
274 13. Задача коммивояжера На рис. 95 а) и 95 6) изображены исходная и редуцированная матрицы весов левого сына корневой вершины, а на рис. 95 с) — редуцированная матрица правого сыпа. Редукция матрицы правого сыпа заключалась лишь в вычитании числа 11 из четвертого столбца. Для удобства через жо обозначим корень дерева решений, через жоо — его левого сына, а через хп — правого. Если х^ — некоторая вершина дерева решений, где к — последовательность из нулей и единиц, то левый сын вершины х^ получает индекс приписыванием справа к к значения О, а правый — 1. Вспоминая, что границу вершины х мы уже обозначали ранее через /(ж), получаем f(x0) — 32, f(x00) — 41, /(xOi) — 43. Сформулированное правило выбора нуля в редуцированной матрице позволяет падеяться (но не гараптирует), что граница правого сына уве- увеличится больше всего. Отметим, что имеются и более сильные правила выбора дуги vw или, что то же самое, нуля в редуцированной матрице. 2 3 4 5 h т—1 т—1 6 ОО 8 2 оо 0 4 0 0 3 0 сю 7 6 0 5 4 7 8 оо 4 ё 0 0 4 0 9 2 3 4 5 s 0 5 оо 7 5 2 оо 0 0 0 0 3 0 оо 3 6 3 5 0 3 0 оо 0 г 0 3 0 6 а) Ъ) 1 2 3 4 5 s - оо 1 6 0 8 1 2 3 оо 0 4 0 0 3 0 0 оо 7 6 0 4 оо 0 5 оо 5 5 5 0 4 7 8 оо 4 г 0 0 5 4 5 Рис. 95 После построения вершип жоо и хщ дерево решений выглядит так, как оно изображено на рис. 96, где в скобках рядом с именем верши- вершины написано значение нижней границы. Ниже вершины дерева решений написан соответствующий вариант разбиения множества маршрутов, со- соответствующих дапной вершипе, а именно, указапа дуга, по которой про- производится разбиение.
13.4. Решение задачи коммивояжера методом ветвей и границ 275 ЖоC2) Рис. 96 2 3 4 h 1 0 5 00 0 3 0 оо 3 0 5 оо 3 0 0 g 0 3 0 3 Поскольку вершина zoo имеет гра- границу меньше чем вершина Жщ, теперь она становится активной. По описанно- описанному ранее правилу выбираем дугу E, 2), ибо нуль, стоящий в строке 5 и столб- столбце 2, имеет наибольшую сумму соот- соответствующих ему зпачений в строке s и столбце г (см. рис. 95 6)). а) 2 3 4 s 1 0 2 оо 2 3 0 оо 3 3 5 00 0 0 0 г 0 2 3 2 3 4 5 s 1 0 5 00 1 1 2 оо 0 0 00 0 3 0 00 3 0 0 5 0 3 0 00 0 г 0 3 0 1 с) Рис. 97 Матрицы вершин Жооо и #ooi изображены на рис. 97, где на рис. 97 а) и 97 Ь) изображены соответственно исходная и редуцированная матрицы вершины жоось а на 97с — редуцированная матрица вершины zOoi- Ре- Редукция матрицы жом состояла лишь в вычитании числа 6 из последней строки. Для нижних границ имеем равенства /(жооо) — 44, /(a^ooi) — 47. Процесс построения дерева решений рекомендуем далее отслеживать по рис. 99. Теперь придется вернуться назад по дереву решений, ибо активной становится вершина жО1. В матрице, изображенной на рис. 96 с), сразу несколько нулей имеют одинаковую сумму соответствующих элементов в столбцах виг. Выберем для разбиения дугу C, 2). Нередуцирован- Нередуцированные матрицы сыновей вершипы zOi изображены на рис. 97. Анализируя строки h и столбцы g обеих матриц, получаем /(жою) = 48 и /(жоп) = 48. Следующей активной вершиной стаповится вершина Жоось редуциро- редуцированная матрица которой изображепа на рис. 96 Ь). В этой матрице два
276 13. Задача коммивояжера 1—1 2 4 5 h 1 oo 1 0 8 0 3 0 oo 7 6 0 4 oo 0 oo 5 0 5 0 4 8 oo 0 g 0 0 0 5 5 1 2 3 4 5 h 1 oo t-H 6 0 8 0 2 3 oo oo 4 0 0 3 0 0 oo 7 6 0 4 oo 0 5 oo 5 0 5 0 4 7 8 oo 0 g 0 0 5 0 0 5 a) Рис. 98 равноценных претендента: дуга B, 3) и дуга D, 5). Выберем для разбие- разбиения дугу D, 5). Получающиеся матрицы вершин Жоооо и #oooi из°бражены на рис. 98 а) и 98 Ь) соответственно. Обращаем внимание читателя на то, что в матрице 98 а) элемент B, 1) равеп оо. Дело в том, что все марш- маршруты в М(жоооо) содержат дуги A, 4), E, 2) и D, 5). Никакой маршрут коммивояжера теперь не может содержать дугу B, 1). По этой причине элемент B, 1) в матрице приравнен к оо. 2 3 1 оо 0 3 0 оо 2 3 4 1 0 2 оо 3 0 оо 3 5 оо 0 оо ъ) Рис. 99 На рис. 98 а) изображена редуцированная матрица вершины Жоооо- Яспо, что /(жоооо) = /(жооо) + 2 — 46. Для матрицы 98 6) редукция сво- сводится к вычитанию числа 3 из строки 4. Отсюда получаем равенство /(zoooi) = 47. Наконец, активной становится вершина Жрооо- Здесь выбор дуги не играет никакой роли. Есть только две возможности. Или сначала вы- выбрать дугу B,3) и, проводя разбиение по ней, на следующем шаге вы- выбрать C,1), или паоборот, сначала — C,1), а затем — B,3). Важным является лишь то, что при переходе к сыновьям границы левых сыновей не меняются, ноэтому левые сыновья сразу становятся активными. Гра- Границы правых сыновей и в том, и в другом случае равны оо, что означает отсутствие соответствующих маршрутов коммивояжера. Дерево решений, построенное нами, изображено на рис. 99. Посколь- Поскольку активной теперь следует объявить вершину, содержащую один един- единственный маршрут, алгоритм на этом заканчивает свою работу.
13.4. Решение задачи коммивояжера методом ветвей и границ 277 жоооооD6) »ooooooD6) Рис. 100 Итак, оптимальным в заданном графе является маршрут 1-4-5-2-3-1, вес которого равен 46. Отметим, что в данном примере мы исследовали всего 13 вершин дерева решений. Имеющиеся экспериментальные дан- данные позволяют утверждать, что метод ветвей и грапиц для ЗК является разумной альтернативой полному перебору, ибо для случайной матрицы весов число исследуемых вершин дерева решений равно О(A,26)"). Отметим особенности ЗК, позволившие реализовать метод ветвей и границ для ее решения. 1. Ветвление. Множество решепий, представляемое вершинами де- дерева решений, можно разбить на попарно ненересекающиеся множества. Каждое подмножество в этом разбиении представляется сыном исходной вершины в дереве решений. 2. Границы. Имеется алгоритм для вычисления нижней границы веса любого решения в данном нодмножестве. Поскольку многие задачи дискретной оптимизации обладают двумя перечисленными свойствами, то метод ветвей и границ может приме- применяться для их решения. При этом разбиение множества решений на ка- каждом шаге может осуществляться и более чем на два ненересекающихся подмножества, если для подмножеств имеется подходящий алгоритм для вычисления нижней границы входящих в них решений.
Литература [1] Абрахаме Д., Каверли Д. Анализ электрических сетей методом гра- графов.- М.: Мир, 1967. [2] Аделъсон-Вельский Г. М., Диниц Е. А., Карзанов А. В. Потоковые ал- алгоритмы.- М.: Наука, 1975. [3] Айгнер М. Комбинаторная теория.- М.: Мир, 1982. [4] Асанов М. О. Дискретная оптимизация.- Екатеринбург: УралНАУ- КА, 1998. [5] Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычисли- вычислительных алгоритмов.- М.: Мир, 1979. [6] Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгорит- алгоритмы.- М.: Издательство «Вильяме», 2000. [7] Басакер Р., Саати Т. Конечные графы и сети.- М.: Наука, 1974. [8] Белов В. В., Воробьев Е. М., Шаталов В. Е. Теория графов.- М.: Высш. шк., 1976. [9] Берж К. Теория графов и ее применения.- М.: ИЛ, 1962. [10] Биркгоф Г. Теория структур.- М:, Наука, 1984. [11] Вирт Н. Алгоритмы + структуры данных — программы.- М.: Мир, 1985. [12] Гантмахер Ф. Р. Теория матриц.- М.: Наука, 1966. [13] Гретцер Г. Общая теория решеток.- М.: Мир, 1982. [14] Грин Д., Кнут Д. Математические методы анализа алгоритмов.- М.: Мир, 1987. [15] Гудман С, Хидетниеми С. Введение в разработку и анализ алгорит- алгоритмов. - М.: Мир, 1981. [16] Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи.- М.: Мир, 1982. [17] Евстигнеев В. А. Применение теории графов в программировании.- М.: Наука, 1985.
Литература 279 [18] Евстигнеев В. А., Касьянов В. Н. Теория графов: алгоритмы обра- обработки деревьев.- Новосибирск: Наука, 1994. [19] Евстигнеев В. А., Касьянов В. Н. Теория графов: алгоритмы обра- обработки бесконтурных графов.- Новосибирск: Наука. Сиб. предприя- предприятие РАН, 1998. [20] Евстигнеев В. А., Мельников Л. С. Задачи и упражнения по теории графов и комбинаторике.- Новосибирск: Издательство НГУ, 1981. [21] Емеличев В. А, Ковалев М. М., Кравцов М.К. Многогранники, графы, оптимизация.- М.: Наука, 1981. [22] Емеличев В. А., Мельников О. И., Сарванов В. И., Тышкевич Р. И. Лекции по теории графов.- М.: Наука, 1990. [23] Замбицкий Д. К., Лозовану Д. Д. Алгоритмы решения оптимизацион- оптимизационных задач на сетях.- Кишинев: Штиинца, 1983. [24] Зыков А. А. Теория конечных графов.- Новосибирск: Наука, 1969. [25] Зыков А. А. Основы теории графов.- М.: Наука, 1987. [26] Камерон П.Дж., ван Линт Дж.Х. Теория графов, теория кодирова- кодирования и блок-схемы.- М.: Наука, 1980. [27] Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и ана- анализ.- М.: МЦНМО, 1999. [28] Кнут Д. Искусство программирования для ЭВМ. Т. 1. Основные ал- алгоритмы.- М.: Мир, 1976; перераб. издание: М.: Изд. дом «Вильяме», 2000. [29] Кнут Д. Искусство нрограммирования для ЭВМ. Т. 2. Получислен- Получисленные алгоритмы.- М.: Мир, 1977; перераб. издание: М.: Изд. дом «Вильяме», 2000. [30] Кнут Д. Искусство программирования для ЭВМ. Т. 3. Сортировка и поиск.- М.: Мир, 1978; нерераб. издание: М.: Изд. дом «Вильяме», 2000. [31] Кристофидес Н. Теория графов. Алгоритмический подход.- М.: Мир, 1978. [32] Кофман А. Введение в нрикладную комбинаторику.- М.: Наука, 1975.
280 Литература [33] Кук В., Бейз Г. Компьютерная математика.- М.: Наука, 1990. [34] Липский В. Комбинаторика для программистов.- М.: Мир, 1988. [35] Ловас Л., Пламмер М. Прикладные задачи теории графов. Теория паросочетапий в математике, физике, химии.- М.: Мир, 1998. [36] Майника Э. Алгоритмы оптимизации на сетях и графах.- М.: Мир, 1981. [37] Миркин Б. Г., Родин С. Н. Графы и гены.- М.: Наука, 1977. [38] Новиков Ф. А. Дискретпая математика для программистов.- СПб.: Питер, 2000. [39] Окулов С. М., Пестов А. А., Пестов О. А. Информатика в задачах.- Киров: Вятский гос. пед. ун-т, 1998. [40] Оре О. Графы и их применение.- М.: Мир, 1965. [41] Оре О. Теория графов.- М.: Наука, 1980. [42] Пападимитриу X., Стайглиц К. Комбипаторпая оптимизация. Алго- Алгоритмы и сложность.- М.: Мир, 1985. [43] Папи Ф., Пали Ж. Дети и графы. - М:, Педагогика, 1974. [44] Рейнгольд Э., Нивергелът Ю., Део Н. Комбинаторные алгоритмы. Те- Теория и практика.- М.: Мир, 1980. [45] Рингель Г. Теорема о раскраске карт.- М.: Мир. 1977. [46] Сачков В. Н. Введение в комбинаторные методы дискретпой матема- математики.- М.: Наука, 1982. [47] Свами М., Тхуласираман К. Графы, сети и алгоритмы.- М.: Мир, 1984. [48] Сушков Ю.А. Графы зубчатых механизмов.- Лепинград: Машино- Машиностроение, 1983. [49] Tamm У. Теория графов.- М.: Мир, 1988. [50] Уилсон Р. Введепие в теорию графов.- М.: Мир, 1977. [51] Филлипс Д., Гарсиа-Диас А. Методы анализа сетей.- М.: Мир, 1984.
Литература 281 [52] Форд Л. Р., Фалкерсон В. Р. Потоки в сетях.- М.: Мир, 1965. [53] Xapapu Ф. Теория графов.- М.: Мир, 1973. [54] Xapapu Ф., Палмер Э. Перечисления графов.- М.: Мир, 1977. [55] Холл М. Комбинаторика.- М.: Мир, 1970. [56] Цветпкович Д., Дуб М., Захс X. Спектры графов. Теория и приложе- приложения.- Киев: Наукова думка, 1984. [57] Handbook of Theoretical Computer Science. Vol. A: Algorithms and Complexity Theories.- North Holland Publ. Сотр., Amsterdam, 1990. [58] Read R. C. An Introduction to Chromatic Polynomials. J. of Comb. Theory, 4, 1968, p. 52-71. [59] Tarjan R. E. Data Structures and Network Algorithms.- Soc. for ldustr. and Applied Math., Philadelphia, Pensylvania, 1983. [60] Truemper K. Matroid Decomposition (Revised Edition).- Leibniz, Piano, Texas, 1998. [61] Welsh D. J. A. Matroid Theory.- New York Acad. Press, 1976.
Предметный указатель Аксиома Штейница о замене 62 Аксиомы независимости 60 Алгоритм Борувки-Краскала 181 — Купа 245 — Флойда 211 — Форда-Беллмана 190 — Форда-Фалкерсона 225 — Хопкрофта-Карпа 233 — Ярника-Прима-Дейкстры 185 — венгерский 251 — линейный 146 — пирамидальной сортировки 154 — полиномиальпый 146 — с возвратом 262 — топологической сортировки 197 — экспоненциальный 146 Атом решетки 46 База матроида 57 — мпожества 57 Блок 25 — висячий 30 Вектор грани циклический 105 — ипциденции 123 Величина потока 213 Вершина висячая 7 — изолированная 7 — концевая 6 — насыщенная относительно па- росочетания 228 — свободная относительно паро- сочетания 228 Вес остова 33 — ребра 33, 180 — элемента 70 Высота корневого дерева 150 Геометрия векторная проектив- проективная 53 — комбинаторная 50 — проективная 53 Грань плоского графа 103 Граф 5 — (п, т)-граф 6 — (п, т, &)-граф 10 — п-граф 6 — t-раскрашиваемый 126 — t-хроматический 126 — Петерсена 107 — взвешенный 180 — вполне несвязный 7 — гамильтопов 38 — дважды помеченный 19 — двойствеппый 120 — двудольный 8 — неразделимый 25 — нулевой 7 — обыкновенный 5 — одноэлементный 7 — ориентированный 14 — ориентируемый 15 — пленарный 103 — плоский 103 — полный 7 двудольный 8 — полуэйлеров 36 — помеченный 16 — произвольно вычерчиваемый из вершины 36 — связный 10 — эйлеров 34 Графы гомеоморфпые 107 Дейкстры 194 Дерево 22 — бинарное 150 — венгерское 246
Предметный указатель 283 — глубинное 160 — корневое 149 — кратчайших путей 196 — остовное 23 — поиска 151 в ширину 175 — растущее 181 — решений 153 — сортирующее 154 Диаграмма 5 Длина маршрута 9 — ормаршрута 15 Дополнение 48 Дуга 14 — обратная в цепи 217 — прямая в цепи 217 Жордапова кривая 102 Задача коммивояжера 144 — о maxmin-пути 207 — о кратчайшем пути 144, 188 — о максимальпом потоке 213 — о минимальном остове 180 — о наибольшем паросочетании 228 — об остове минимального веса 33 — оптимального назначения 144 Изоморфизм графов 6 — матроидов 72 Интервал решетки 44 Инцидентность 6 Источник 213 Кобаза матроида 67 Компонента связности 10 — сильпой связности 169 Контур 15 Коцикл матроида 68 Лес 22 — глубинный 160 — остовный 23 в графе 180 — продолжаемый до минималь- минимального остова 180 — растущий 181 Лист корневого дерева 149 — матроида 50 Маршрут 9 — замкнутый 9 Матрица Кирхгофа 18 — инцидентности графа 19 орграфа 20 — смежности 16 Матроид 50 — бинарный 76 — векторный над телом 62, 63 — графический 73 — двойственный 67 — дискретный 69 — кографический 73 — простой 50, 56 — разрезов 70 — свободный 69 — связный 94 — столбцов 63 — строк 63 — трансверсальный 87 — тривиальпый 69 — циклов 62 Метод критического пути 203 Многочлен характеристический 17 — хроматический 133 Множество зависимое 57 — независимое 57 — ребер разрезающее 10 Мост 10 Неравенство полумодулярпости 47 Объединение матроидов 96
284 Предметный указатель дизъюнктное 93 — подграфов 8 Окружение вершины 7 Оператор замыкания 49 Орграф 14 — гамильтонов 41 — орсвязный 15 — полугамильтонов 41 — связный 14 — сильно связный 15 — топологически отсортирован- отсортированный 197 Ориентация графа 20 Орлемма о рукопожатиях 16 Ормаршрут 14 — замкнутый 14 Орцепь 15 — гамильтонова 41 — простая 15 Орцикл 15 — гамильтонов 41 Основание орграфа 14 Остов 23 — минимальный 180 Отец 149 Отношение покрытия 45 — связности 10 Очередь 148 Паросочетание 87, 227 — максимальное 228 — наибольшее 228 — полное 244 — совершепное 244 Пересечение подграфов 9 Петля 5 Пирамида 154 — частичная 155 Плоскость проективная дезарго- ва 55 Подграф 8 — остовный 8 — порожденный 8 — пустой 8 Подматроид 62 Подмпожество замкнутое 49 Подпространство матроида 50 Поиск в глубину 159 — в графе 159 — в ширину 173 Покрытие мпожества вершинное 89 Полустепень захода 15 — исхода 15 Порождающее множество матро- матроида 58 Последовательность степеней гра- графа 39 Поток в сети 213 Потомок 149 Предгеометрия комбинаторная 50 Предок 149 Произведение подграфов 136 Пропускная способность разреза 216 Пространство коциклов бинарно- бинарного матроида 78 — разрезов 79 — циклов 79 бинарного матроида 78 Путь в сети 188 Раздувание матроида 63 Размер задачи 145 Размерность геометрическая 54 Разрез 10 — в орграфе 215 — минимальный 216 Ранг графа 24 — матроида 58 — множества 59 Раскраска графа 126
Предметный указатель 285 несобственная 141 Расстояние между вершинами 188 Ребро ациклическое 12 — висячее 7 — древесное 159 — кратное 5 — обратное 159 — поперечпое 176 — светлое относительно паросо- четания 228 — темное относительно паросо- четания 228 — циклическое 12 Редукция графа 8 хроматическая 133 Решетка 44 — конечномерная геометрическая 47 — модулярная 44 — полумодулярная 45 — с дополнениями 48 — с относительными дополнени- дополнениями 48 Сеть 188 Система коциклов фундаменталь- фундаментальная 78 — различных представителей 90 — разрезов графа фундаменталь- фундаментальная 80 — циклов графа фундаменталь- фундаментальная 80 фундаментальная 78 Сложность алгоритма времепная 145 Смежность вершин 6 — ребер 6 Стек 148 Степень вершины 6 Стоимость ребра 180 Сток 213 Стягивание ребра 119 Сумма матроидов 94 Сын 149 Точка сочленения 25 Трансверсаль 89 — независимая частичная 91 — частичная 87 Турнир 42 Укладка графа в пространстве 102 Уровень вершины в корневом де- дереве 150 Условие Жордана-Дедекинда 45 Функция весовая 33 — монотонная полумодулярная 83 — размерпости на решетке 46 — хроматическая 131 Цепь 9 — М-цепь 233 — М-чередующаяся 230 — /-дополняющая 217 — /-ненасыщепная 220 — в сети 217 — гамильтопова 38 — полуэйлерова 36 — простая 10 — эйлерова 34 Цикл 10 — гамильтонов 38 — матроида 57 Число Стирлинга второго рода 137 первого рода 137 — древовидности графа 99 — покрытия матроида 98 — упаковки матроида 97 — хроматическое 126 — цикломатическое 24
Оглавление Предисловие 3 1. Основные понятия теории графов 5 1.1. Основные определения 5 1.2. Маршруты, связность, циклы и разрезы 9 1.3. Ориентированные графы 14 1.4. Матрицы, ассоциированные с графом 16 2. Деревья 22 2.1. Леса, деревья, остовы 22 2.2. Блоки и точки сочленения 25 2.3. Число остовов в связном обыкновенном графе 30 3. Обходы графов 34 3.1. Эйлеровы графы 34 3.2. Гамильтоновы графы 38 4. Матроиды 44 4.1. Полумодулярные решетки, условие Жордана-Дедекинда . 44 4.2. Конечномерные геометрические решетки и матроиды ... 47 4.3. Основные понятия теории матроидов 56 4.4. Различные аксиоматизации матроидов 59 4.5. Двойственный матроид 67 4.6. Жадный алгоритм 70 4.7. Изоморфизмы матроидов 72 4.8. Пространство циклов бинарного матроида 76 4.9. Пространство циклов и пространство разрезов графа ... 79 4.10. Монотонные нолумодулярные функции. Индуцированный матроид 83 4.11. Трансверсальные матроиды 86 4.12. Дизъюнктное объединение и сумма матроидов 93 5. Планарность 102 5.1. Укладки графов, нланарные графы 102 5.2. Формула Эйлера для плоских графов 104 5.3. Критерий планарности графа 107 5.4. Двойственные графы 120 6. Раскраски 126 6.1. Хроматические числа 126 6.2. Хроматические многочлены 131 6.3. Коэффициенты хроматических многочленов 138
Оглавление 287 7. Введение в алгоритмы 144 7.1. Алгоритмы и их сложность 145 7.2. Занись алгоритмов 147 7.3. Корневые и бинарные деревья 149 7.4. Сортировка массивов 152 8. Поиск в графе 159 8.1. Поиск в глубину 159 8.2. Алгоритм отыскания блоков и точек сочленения 163 8.3. Алгоритм отыскания комнонент сильной связности в ор- орграфе 168 8.4. Поиск в ширину 173 8.5. Алгоритм отыскания эйлеровой цепи в эйлеровом графе . 177 9. Задача о минимальном остове 180 10. Пути в сетях 188 10.1. Постановка задачи 188 10.2. Общий случай. Алгоритм Форда-Беллмана 188 10.3. Случай неотрицательных весов. Алгоритм Дейкстры . . . 193 10.4. Случай бесконтурной сети 196 10.5. Задача о максимальном пути и сетевые графики 201 10.6. Задача о maxmin-пути 207 10.7. Задача о кратчайших путях между всеми парами вершин 210 11. Задача о максимальном нотоке 213 11.1. Основные нонятия и результаты 213 11.2. Алгоритм Форда-Фалкерсона 219 12. Паросочетания в двудольных графах 227 12.1. Основные нонятия 227 12.2. Задача о наибольшем паросочетании. Алгоритм Хопкроф- та-Карпа 228 12.3. Задача о полном паросочетании. Алгоритм Куна 244 12.4. Задача о назначениях. Венгерский алгоритм 249 13. Задача коммивояжера 259 13.1. Основные попятия 259 13.2. Алгоритм отыскания гамильтоновых циклов 260 13.3. Алгоритмы решения задачи коммивояжера с гарантиро- гарантированной оценкой точности 262 13.4. Решение задачи коммивояжера методом ветвей и границ . 270 Литература 278 Предметный указатель 282
М. О. Асанов, В. А. Баранский, В. В. Расин Дискретная математика: графы, матроиды, алгоритмы Авторская редакция Дизайнер М. В. Ботя Технический редактор А. В. Широбоков Компьютерная верстка С. В. Высоцкий Корректор М. А. Ложкина Подписано в печать 07.09.01. Формат 60 х 841/16. Печать офсетная. Усл. печ. л. 16,74. Уч. изд. л. 17,86. Гарнитура Computer Modern Roman. Бумага офсетная № 1. Тираж 1500 экз. Заказ № Научно-издательский центр «Регулярная и хаотическая динамика» 426057, г. Ижевск, ул. Пастухова, 13. Лицензия на издательскую деятельность ЛУ № 084 от 03.04.00. http://rcd.ru E-mail: borisov@rcd.ru Отпечатано в полном соответствии с качеством предоставленных диапозитивов в ГИПП «Вятка». 610033, г. Киров, ул. Московская, 122.